@salutejs/plasma-new-hope 0.325.1-canary.2005.15521690413.0 → 0.325.1-canary.2013.15560496949.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/cjs/components/Carousel/CarouselNew/Carousel.css +41 -0
- package/cjs/components/Carousel/CarouselNew/Carousel.js +110 -0
- package/cjs/components/Carousel/CarouselNew/Carousel.js.map +1 -0
- package/cjs/components/Carousel/CarouselNew/Carousel.styles.js +43 -0
- package/cjs/components/Carousel/CarouselNew/Carousel.styles.js.map +1 -0
- package/cjs/components/Carousel/CarouselNew/Carousel.styles_151pk3s.css +5 -0
- package/cjs/components/Carousel/CarouselNew/Carousel.tokens.js +24 -0
- package/cjs/components/Carousel/CarouselNew/Carousel.tokens.js.map +1 -0
- package/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +384 -0
- package/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js.map +1 -0
- package/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.css +5 -0
- package/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.js +227 -0
- package/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.js.map +1 -0
- package/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js +39 -0
- package/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js.map +1 -0
- package/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.styles_ea836d.css +5 -0
- package/cjs/components/Carousel/CarouselNew/ui/Dots/utils/index.js +47 -0
- package/cjs/components/Carousel/CarouselNew/ui/Dots/utils/index.js.map +1 -0
- package/cjs/components/Carousel/CarouselNew/variations/_size/base.js +9 -0
- package/cjs/components/Carousel/CarouselNew/variations/_size/base.js.map +1 -0
- package/cjs/components/Carousel/CarouselNew/variations/_size/base_x642ct.css +1 -0
- package/cjs/components/Carousel/CarouselNew/variations/_view/base.js +9 -0
- package/cjs/components/Carousel/CarouselNew/variations/_view/base.js.map +1 -0
- package/cjs/components/Carousel/CarouselNew/variations/_view/base_x642ct.css +1 -0
- package/cjs/components/Carousel/CarouselOld/Carousel.css +4 -0
- package/cjs/components/Carousel/{Carousel.js → CarouselOld/Carousel.js} +1 -1
- package/cjs/components/Carousel/CarouselOld/Carousel.js.map +1 -0
- package/cjs/components/Carousel/{Carousel.styles.js → CarouselOld/Carousel.styles.js} +9 -9
- package/cjs/components/Carousel/CarouselOld/Carousel.styles.js.map +1 -0
- package/cjs/components/Carousel/CarouselOld/Carousel.styles_12r304j.css +4 -0
- package/cjs/components/Carousel/{CarouselItem.js → CarouselOld/CarouselItem.js} +5 -5
- package/cjs/components/Carousel/CarouselOld/CarouselItem.js.map +1 -0
- package/cjs/components/Carousel/CarouselOld/CarouselItem_cghzk7.css +1 -0
- package/cjs/components/Carousel/CarouselOld/useCarousel.js.map +1 -0
- package/cjs/components/Carousel/{useDragScroll.js → CarouselOld/useDragScroll.js} +1 -1
- package/cjs/components/Carousel/CarouselOld/useDragScroll.js.map +1 -0
- package/cjs/components/DatePicker/SingleDate/SingleDate.js +12 -3
- package/cjs/components/DatePicker/SingleDate/SingleDate.js.map +1 -1
- package/cjs/components/Sheet/hooks/useOverflow.js +2 -1
- package/cjs/components/Sheet/hooks/useOverflow.js.map +1 -1
- package/cjs/hooks/useDidMountLayoutEffect.js +19 -0
- package/cjs/hooks/useDidMountLayoutEffect.js.map +1 -0
- package/cjs/index.css +17 -5
- package/cjs/index.js +10 -3
- package/cjs/index.js.map +1 -1
- package/emotion/cjs/components/Carousel/CarouselNew/Carousel.js +110 -0
- package/emotion/cjs/components/Carousel/CarouselNew/Carousel.styles.js +64 -0
- package/emotion/cjs/components/Carousel/CarouselNew/Carousel.tokens.js +22 -0
- package/emotion/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +376 -0
- package/emotion/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.js +229 -0
- package/emotion/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js +38 -0
- package/emotion/cjs/components/Carousel/CarouselNew/ui/Dots/utils/index.js +44 -0
- package/emotion/cjs/components/Carousel/CarouselNew/ui/index.js +16 -0
- package/emotion/cjs/components/Carousel/CarouselNew/variations/_size/base.js +8 -0
- package/emotion/cjs/components/Carousel/CarouselNew/variations/_size/tokens.json +1 -0
- package/emotion/cjs/components/Carousel/CarouselNew/variations/_view/base.js +8 -0
- package/emotion/cjs/components/Carousel/CarouselNew/variations/_view/tokens.json +1 -0
- package/emotion/cjs/components/Carousel/CarouselOld/Carousel.styles.js +49 -0
- package/emotion/cjs/components/Carousel/CarouselOld/Carousel.types.js +5 -0
- package/emotion/cjs/components/Carousel/{CarouselItem.js → CarouselOld/CarouselItem.js} +2 -2
- package/emotion/cjs/components/Carousel/CarouselOld/index.js +32 -0
- package/emotion/cjs/components/Carousel/index.js +23 -3
- package/emotion/cjs/components/DatePicker/SingleDate/SingleDate.js +12 -3
- package/emotion/cjs/components/Sheet/hooks/useOverflow.js +2 -1
- package/emotion/cjs/examples/plasma_b2c/components/Carousel/Carousel.config.js +14 -2
- package/emotion/cjs/examples/plasma_b2c/components/Carousel/Carousel.js +1 -1
- package/emotion/cjs/examples/plasma_b2c/components/Carousel/Carousel.stories.tsx +90 -32
- package/emotion/cjs/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +12 -3
- package/emotion/cjs/examples/plasma_web/components/Carousel/Carousel.config.js +14 -2
- package/emotion/cjs/examples/plasma_web/components/Carousel/Carousel.js +1 -1
- package/emotion/cjs/examples/plasma_web/components/Carousel/Carousel.stories.tsx +91 -32
- package/emotion/cjs/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +11 -3
- package/emotion/cjs/hooks/index.js +7 -0
- package/emotion/cjs/hooks/useDidMountLayoutEffect.js +17 -0
- package/emotion/es/components/Carousel/CarouselNew/Carousel.js +101 -0
- package/emotion/es/components/Carousel/CarouselNew/Carousel.styles.js +57 -0
- package/emotion/es/components/Carousel/CarouselNew/Carousel.tokens.js +16 -0
- package/emotion/es/components/Carousel/CarouselNew/hooks/useCarousel.js +366 -0
- package/emotion/es/components/Carousel/CarouselNew/ui/Dots/Dots.js +219 -0
- package/emotion/es/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js +31 -0
- package/emotion/es/components/Carousel/CarouselNew/ui/Dots/utils/index.js +38 -0
- package/emotion/es/components/Carousel/CarouselNew/ui/index.js +1 -0
- package/emotion/es/components/Carousel/CarouselNew/variations/_size/base.js +2 -0
- package/emotion/es/components/Carousel/CarouselNew/variations/_size/tokens.json +1 -0
- package/emotion/es/components/Carousel/CarouselNew/variations/_view/base.js +2 -0
- package/emotion/es/components/Carousel/CarouselNew/variations/_view/tokens.json +1 -0
- package/emotion/es/components/Carousel/CarouselOld/Carousel.styles.js +42 -0
- package/emotion/es/components/Carousel/CarouselOld/Carousel.types.js +1 -0
- package/emotion/es/components/Carousel/{CarouselItem.js → CarouselOld/CarouselItem.js} +2 -2
- package/emotion/es/components/Carousel/CarouselOld/index.js +3 -0
- package/emotion/es/components/Carousel/index.js +7 -3
- package/emotion/es/components/DatePicker/SingleDate/SingleDate.js +12 -3
- package/emotion/es/components/Sheet/hooks/useOverflow.js +2 -1
- package/emotion/es/examples/plasma_b2c/components/Carousel/Carousel.config.js +14 -2
- package/emotion/es/examples/plasma_b2c/components/Carousel/Carousel.js +2 -2
- package/emotion/es/examples/plasma_b2c/components/Carousel/Carousel.stories.tsx +90 -32
- package/emotion/es/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +12 -3
- package/emotion/es/examples/plasma_web/components/Carousel/Carousel.config.js +14 -2
- package/emotion/es/examples/plasma_web/components/Carousel/Carousel.js +2 -2
- package/emotion/es/examples/plasma_web/components/Carousel/Carousel.stories.tsx +91 -32
- package/emotion/es/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +11 -3
- package/emotion/es/hooks/index.js +1 -0
- package/emotion/es/hooks/useDidMountLayoutEffect.js +11 -0
- package/es/components/Carousel/CarouselNew/Carousel.css +41 -0
- package/es/components/Carousel/CarouselNew/Carousel.js +101 -0
- package/es/components/Carousel/CarouselNew/Carousel.js.map +1 -0
- package/es/components/Carousel/CarouselNew/Carousel.styles.js +34 -0
- package/es/components/Carousel/CarouselNew/Carousel.styles.js.map +1 -0
- package/es/components/Carousel/CarouselNew/Carousel.styles_151pk3s.css +5 -0
- package/es/components/Carousel/CarouselNew/Carousel.tokens.js +19 -0
- package/es/components/Carousel/CarouselNew/Carousel.tokens.js.map +1 -0
- package/es/components/Carousel/CarouselNew/hooks/useCarousel.js +369 -0
- package/es/components/Carousel/CarouselNew/hooks/useCarousel.js.map +1 -0
- package/es/components/Carousel/CarouselNew/ui/Dots/Dots.css +5 -0
- package/es/components/Carousel/CarouselNew/ui/Dots/Dots.js +218 -0
- package/es/components/Carousel/CarouselNew/ui/Dots/Dots.js.map +1 -0
- package/es/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js +31 -0
- package/es/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js.map +1 -0
- package/es/components/Carousel/CarouselNew/ui/Dots/Dots.styles_ea836d.css +5 -0
- package/es/components/Carousel/CarouselNew/ui/Dots/utils/index.js +41 -0
- package/es/components/Carousel/CarouselNew/ui/Dots/utils/index.js.map +1 -0
- package/es/components/Carousel/CarouselNew/variations/_size/base.js +5 -0
- package/es/components/Carousel/CarouselNew/variations/_size/base.js.map +1 -0
- package/es/components/Carousel/CarouselNew/variations/_size/base_x642ct.css +1 -0
- package/es/components/Carousel/CarouselNew/variations/_view/base.js +5 -0
- package/es/components/Carousel/CarouselNew/variations/_view/base.js.map +1 -0
- package/es/components/Carousel/CarouselNew/variations/_view/base_x642ct.css +1 -0
- package/es/components/Carousel/CarouselOld/Carousel.css +4 -0
- package/es/components/Carousel/{Carousel.js → CarouselOld/Carousel.js} +1 -1
- package/es/components/Carousel/CarouselOld/Carousel.js.map +1 -0
- package/es/components/Carousel/{Carousel.styles.js → CarouselOld/Carousel.styles.js} +9 -9
- package/es/components/Carousel/CarouselOld/Carousel.styles.js.map +1 -0
- package/es/components/Carousel/CarouselOld/Carousel.styles_12r304j.css +4 -0
- package/es/components/Carousel/{CarouselItem.js → CarouselOld/CarouselItem.js} +5 -5
- package/es/components/Carousel/CarouselOld/CarouselItem.js.map +1 -0
- package/es/components/Carousel/CarouselOld/CarouselItem_cghzk7.css +1 -0
- package/es/components/Carousel/CarouselOld/useCarousel.js.map +1 -0
- package/es/components/Carousel/{useDragScroll.js → CarouselOld/useDragScroll.js} +1 -1
- package/es/components/Carousel/CarouselOld/useDragScroll.js.map +1 -0
- package/es/components/DatePicker/SingleDate/SingleDate.js +12 -3
- package/es/components/DatePicker/SingleDate/SingleDate.js.map +1 -1
- package/es/components/Sheet/hooks/useOverflow.js +2 -1
- package/es/components/Sheet/hooks/useOverflow.js.map +1 -1
- package/es/hooks/useDidMountLayoutEffect.js +15 -0
- package/es/hooks/useDidMountLayoutEffect.js.map +1 -0
- package/es/index.css +17 -5
- package/es/index.js +6 -3
- package/es/index.js.map +1 -1
- package/package.json +5 -5
- package/styled-components/cjs/components/Carousel/CarouselNew/Carousel.js +110 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/Carousel.styles.js +28 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/Carousel.tokens.js +22 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/Carousel.types.js +5 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +376 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.js +229 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js +24 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.types.js +5 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/ui/Dots/utils/index.js +44 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/ui/index.js +16 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/variations/_size/base.js +8 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/variations/_size/tokens.json +1 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/variations/_view/base.js +8 -0
- package/styled-components/cjs/components/Carousel/CarouselNew/variations/_view/tokens.json +1 -0
- package/styled-components/cjs/components/Carousel/{Carousel.styles.js → CarouselOld/Carousel.styles.js} +3 -3
- package/styled-components/cjs/components/Carousel/CarouselOld/Carousel.types.js +5 -0
- package/styled-components/cjs/components/Carousel/{CarouselItem.js → CarouselOld/CarouselItem.js} +2 -2
- package/styled-components/cjs/components/Carousel/CarouselOld/index.js +32 -0
- package/styled-components/cjs/components/Carousel/index.js +23 -3
- package/styled-components/cjs/components/DatePicker/SingleDate/SingleDate.js +12 -3
- package/styled-components/cjs/components/Sheet/hooks/useOverflow.js +2 -1
- package/styled-components/cjs/examples/plasma_b2c/components/Carousel/Carousel.config.js +14 -2
- package/styled-components/cjs/examples/plasma_b2c/components/Carousel/Carousel.js +1 -1
- package/styled-components/cjs/examples/plasma_b2c/components/Carousel/Carousel.stories.tsx +90 -32
- package/styled-components/cjs/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +12 -3
- package/styled-components/cjs/examples/plasma_web/components/Carousel/Carousel.config.js +14 -2
- package/styled-components/cjs/examples/plasma_web/components/Carousel/Carousel.js +1 -1
- package/styled-components/cjs/examples/plasma_web/components/Carousel/Carousel.stories.tsx +91 -32
- package/styled-components/cjs/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +11 -3
- package/styled-components/cjs/hooks/index.js +7 -0
- package/styled-components/cjs/hooks/useDidMountLayoutEffect.js +17 -0
- package/styled-components/es/components/Carousel/CarouselNew/Carousel.js +101 -0
- package/styled-components/es/components/Carousel/CarouselNew/Carousel.styles.js +20 -0
- package/styled-components/es/components/Carousel/CarouselNew/Carousel.tokens.js +16 -0
- package/styled-components/es/components/Carousel/CarouselNew/Carousel.types.js +1 -0
- package/styled-components/es/components/Carousel/CarouselNew/hooks/useCarousel.js +366 -0
- package/styled-components/es/components/Carousel/CarouselNew/ui/Dots/Dots.js +219 -0
- package/styled-components/es/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js +17 -0
- package/styled-components/es/components/Carousel/CarouselNew/ui/Dots/Dots.types.js +1 -0
- package/styled-components/es/components/Carousel/CarouselNew/ui/Dots/utils/index.js +38 -0
- package/styled-components/es/components/Carousel/CarouselNew/ui/index.js +1 -0
- package/styled-components/es/components/Carousel/CarouselNew/variations/_size/base.js +2 -0
- package/styled-components/es/components/Carousel/CarouselNew/variations/_size/tokens.json +1 -0
- package/styled-components/es/components/Carousel/CarouselNew/variations/_view/base.js +2 -0
- package/styled-components/es/components/Carousel/CarouselNew/variations/_view/tokens.json +1 -0
- package/styled-components/es/components/Carousel/{Carousel.styles.js → CarouselOld/Carousel.styles.js} +3 -3
- package/styled-components/es/components/Carousel/CarouselOld/Carousel.types.js +1 -0
- package/styled-components/es/components/Carousel/{CarouselItem.js → CarouselOld/CarouselItem.js} +2 -2
- package/styled-components/es/components/Carousel/CarouselOld/index.js +3 -0
- package/styled-components/es/components/Carousel/index.js +7 -3
- package/styled-components/es/components/DatePicker/SingleDate/SingleDate.js +12 -3
- package/styled-components/es/components/Sheet/hooks/useOverflow.js +2 -1
- package/styled-components/es/examples/plasma_b2c/components/Carousel/Carousel.config.js +14 -2
- package/styled-components/es/examples/plasma_b2c/components/Carousel/Carousel.js +2 -2
- package/styled-components/es/examples/plasma_b2c/components/Carousel/Carousel.stories.tsx +90 -32
- package/styled-components/es/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +12 -3
- package/styled-components/es/examples/plasma_web/components/Carousel/Carousel.config.js +14 -2
- package/styled-components/es/examples/plasma_web/components/Carousel/Carousel.js +2 -2
- package/styled-components/es/examples/plasma_web/components/Carousel/Carousel.stories.tsx +91 -32
- package/styled-components/es/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +11 -3
- package/styled-components/es/hooks/index.js +1 -0
- package/styled-components/es/hooks/useDidMountLayoutEffect.js +11 -0
- package/types/components/Carousel/CarouselNew/Carousel.d.ts +26 -0
- package/types/components/Carousel/CarouselNew/Carousel.d.ts.map +1 -0
- package/types/components/Carousel/CarouselNew/Carousel.styles.d.ts +91 -0
- package/types/components/Carousel/CarouselNew/Carousel.styles.d.ts.map +1 -0
- package/types/components/Carousel/CarouselNew/Carousel.tokens.d.ts +17 -0
- package/types/components/Carousel/CarouselNew/Carousel.tokens.d.ts.map +1 -0
- package/types/components/Carousel/CarouselNew/Carousel.types.d.ts +45 -0
- package/types/components/Carousel/CarouselNew/Carousel.types.d.ts.map +1 -0
- package/types/components/Carousel/CarouselNew/hooks/useCarousel.d.ts +63 -0
- package/types/components/Carousel/CarouselNew/hooks/useCarousel.d.ts.map +1 -0
- package/types/components/Carousel/CarouselNew/ui/Dots/Dots.d.ts +4 -0
- package/types/components/Carousel/CarouselNew/ui/Dots/Dots.d.ts.map +1 -0
- package/types/components/Carousel/CarouselNew/ui/Dots/Dots.styles.d.ts +6 -0
- package/types/components/Carousel/CarouselNew/ui/Dots/Dots.styles.d.ts.map +1 -0
- package/types/components/Carousel/CarouselNew/ui/Dots/Dots.types.d.ts +29 -0
- package/types/components/Carousel/CarouselNew/ui/Dots/Dots.types.d.ts.map +1 -0
- package/types/components/Carousel/CarouselNew/ui/Dots/utils/index.d.ts +4 -0
- package/types/components/Carousel/CarouselNew/ui/Dots/utils/index.d.ts.map +1 -0
- package/types/components/Carousel/CarouselNew/ui/index.d.ts +2 -0
- package/types/components/Carousel/CarouselNew/ui/index.d.ts.map +1 -0
- package/types/components/Carousel/CarouselNew/variations/_size/base.d.ts +2 -0
- package/types/components/Carousel/CarouselNew/variations/_size/base.d.ts.map +1 -0
- package/types/components/Carousel/CarouselNew/variations/_view/base.d.ts +2 -0
- package/types/components/Carousel/CarouselNew/variations/_view/base.d.ts.map +1 -0
- package/types/components/Carousel/{Carousel.d.ts → CarouselOld/Carousel.d.ts} +1 -1
- package/types/components/Carousel/CarouselOld/Carousel.d.ts.map +1 -0
- package/types/components/Carousel/CarouselOld/Carousel.styles.d.ts.map +1 -0
- package/types/components/Carousel/{Carousel.types.d.ts → CarouselOld/Carousel.types.d.ts} +1 -1
- package/types/components/Carousel/CarouselOld/Carousel.types.d.ts.map +1 -0
- package/types/components/Carousel/CarouselOld/CarouselItem.d.ts.map +1 -0
- package/types/components/Carousel/CarouselOld/index.d.ts +5 -0
- package/types/components/Carousel/CarouselOld/index.d.ts.map +1 -0
- package/types/components/Carousel/CarouselOld/useCarousel.d.ts.map +1 -0
- package/types/components/Carousel/CarouselOld/useDragScroll.d.ts.map +1 -0
- package/types/components/Carousel/index.d.ts +7 -4
- package/types/components/Carousel/index.d.ts.map +1 -1
- package/types/components/DatePicker/RangeDate/RangeDate.d.ts +0 -2
- package/types/components/DatePicker/RangeDate/RangeDate.d.ts.map +1 -1
- package/types/components/DatePicker/RangeDate/RangeDate.types.d.ts +0 -4
- package/types/components/DatePicker/RangeDate/RangeDate.types.d.ts.map +1 -1
- package/types/components/DatePicker/SingleDate/SingleDate.d.ts +3 -3
- package/types/components/DatePicker/SingleDate/SingleDate.d.ts.map +1 -1
- package/types/components/DatePicker/SingleDate/SingleDate.types.d.ts +4 -0
- package/types/components/DatePicker/SingleDate/SingleDate.types.d.ts.map +1 -1
- package/types/components/Sheet/hooks/useOverflow.d.ts.map +1 -1
- package/types/hooks/index.d.ts +1 -0
- package/types/hooks/index.d.ts.map +1 -1
- package/types/hooks/useDidMountLayoutEffect.d.ts +2 -0
- package/types/hooks/useDidMountLayoutEffect.d.ts.map +1 -0
- package/cjs/components/Carousel/Carousel.css +0 -4
- package/cjs/components/Carousel/Carousel.js.map +0 -1
- package/cjs/components/Carousel/Carousel.styles.js.map +0 -1
- package/cjs/components/Carousel/Carousel.styles_zmchjj.css +0 -4
- package/cjs/components/Carousel/CarouselItem.js.map +0 -1
- package/cjs/components/Carousel/CarouselItem_cqjszm.css +0 -1
- package/cjs/components/Carousel/useCarousel.js.map +0 -1
- package/cjs/components/Carousel/useDragScroll.js.map +0 -1
- package/emotion/cjs/components/Carousel/Carousel.styles.js +0 -49
- package/emotion/es/components/Carousel/Carousel.styles.js +0 -42
- package/es/components/Carousel/Carousel.css +0 -4
- package/es/components/Carousel/Carousel.js.map +0 -1
- package/es/components/Carousel/Carousel.styles.js.map +0 -1
- package/es/components/Carousel/Carousel.styles_zmchjj.css +0 -4
- package/es/components/Carousel/CarouselItem.js.map +0 -1
- package/es/components/Carousel/CarouselItem_cqjszm.css +0 -1
- package/es/components/Carousel/useCarousel.js.map +0 -1
- package/es/components/Carousel/useDragScroll.js.map +0 -1
- package/types/components/Carousel/Carousel.d.ts.map +0 -1
- package/types/components/Carousel/Carousel.styles.d.ts.map +0 -1
- package/types/components/Carousel/Carousel.types.d.ts.map +0 -1
- package/types/components/Carousel/CarouselItem.d.ts.map +0 -1
- package/types/components/Carousel/useCarousel.d.ts.map +0 -1
- package/types/components/Carousel/useDragScroll.d.ts.map +0 -1
- /package/cjs/components/Carousel/{useCarousel.js → CarouselOld/useCarousel.js} +0 -0
- /package/emotion/cjs/components/Carousel/{Carousel.types.js → CarouselNew/Carousel.types.js} +0 -0
- /package/{styled-components/cjs/components/Carousel/Carousel.types.js → emotion/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.types.js} +0 -0
- /package/emotion/cjs/components/Carousel/{Carousel.js → CarouselOld/Carousel.js} +0 -0
- /package/emotion/cjs/components/Carousel/{useCarousel.js → CarouselOld/useCarousel.js} +0 -0
- /package/emotion/cjs/components/Carousel/{useDragScroll.js → CarouselOld/useDragScroll.js} +0 -0
- /package/emotion/es/components/Carousel/{Carousel.types.js → CarouselNew/Carousel.types.js} +0 -0
- /package/{styled-components/es/components/Carousel/Carousel.types.js → emotion/es/components/Carousel/CarouselNew/ui/Dots/Dots.types.js} +0 -0
- /package/emotion/es/components/Carousel/{Carousel.js → CarouselOld/Carousel.js} +0 -0
- /package/emotion/es/components/Carousel/{useCarousel.js → CarouselOld/useCarousel.js} +0 -0
- /package/emotion/es/components/Carousel/{useDragScroll.js → CarouselOld/useDragScroll.js} +0 -0
- /package/es/components/Carousel/{useCarousel.js → CarouselOld/useCarousel.js} +0 -0
- /package/styled-components/cjs/components/Carousel/{Carousel.js → CarouselOld/Carousel.js} +0 -0
- /package/styled-components/cjs/components/Carousel/{useCarousel.js → CarouselOld/useCarousel.js} +0 -0
- /package/styled-components/cjs/components/Carousel/{useDragScroll.js → CarouselOld/useDragScroll.js} +0 -0
- /package/styled-components/es/components/Carousel/{Carousel.js → CarouselOld/Carousel.js} +0 -0
- /package/styled-components/es/components/Carousel/{useCarousel.js → CarouselOld/useCarousel.js} +0 -0
- /package/styled-components/es/components/Carousel/{useDragScroll.js → CarouselOld/useDragScroll.js} +0 -0
- /package/types/components/Carousel/{Carousel.styles.d.ts → CarouselOld/Carousel.styles.d.ts} +0 -0
- /package/types/components/Carousel/{CarouselItem.d.ts → CarouselOld/CarouselItem.d.ts} +0 -0
- /package/types/components/Carousel/{useCarousel.d.ts → CarouselOld/useCarousel.d.ts} +0 -0
- /package/types/components/Carousel/{useDragScroll.d.ts → CarouselOld/useDragScroll.d.ts} +0 -0
@@ -0,0 +1,101 @@
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
2
|
+
import React, { forwardRef, useState, Children } from 'react';
|
3
|
+
import { classes } from './Carousel.tokens.js';
|
4
|
+
import { base as base$2 } from './variations/_size/base.js';
|
5
|
+
import { base as base$1 } from './variations/_view/base.js';
|
6
|
+
import { ControlsWrapper, IconButton, CarouselWrapper, CarouselTrack, base } from './Carousel.styles.js';
|
7
|
+
import { useCarousel } from './hooks/useCarousel.js';
|
8
|
+
import { IconDisclosureLeft } from '../../_Icon/Icons/IconDisclosureLeft.js';
|
9
|
+
import { IconDisclosureRight } from '../../_Icon/Icons/IconDisclosureRight.js';
|
10
|
+
import { Dots } from './ui/Dots/Dots.js';
|
11
|
+
|
12
|
+
var _IconDisclosureLeft, _IconDisclosureRight;
|
13
|
+
var VISIBLE_DOTS_DEFAULT = 10;
|
14
|
+
var DOTS_CENTERED_DEFAULT = false;
|
15
|
+
|
16
|
+
/**
|
17
|
+
* Компонент для создания списков с прокруткой.
|
18
|
+
*/
|
19
|
+
var carouselNewRoot = function carouselNewRoot(Root) {
|
20
|
+
return /*#__PURE__*/forwardRef(function (_ref, ref) {
|
21
|
+
var view = _ref.view,
|
22
|
+
size = _ref.size,
|
23
|
+
_ref$scrollAlign = _ref.scrollAlign,
|
24
|
+
scrollAlign = _ref$scrollAlign === void 0 ? 'center' : _ref$scrollAlign,
|
25
|
+
children = _ref.children,
|
26
|
+
_ref$controlArrowsDis = _ref.controlArrowsDisabled,
|
27
|
+
controlArrowsDisabled = _ref$controlArrowsDis === void 0 ? false : _ref$controlArrowsDis,
|
28
|
+
paginationOptions = _ref.paginationOptions,
|
29
|
+
className = _ref.className,
|
30
|
+
style = _ref.style;
|
31
|
+
var _useState = useState(0),
|
32
|
+
_useState2 = _slicedToArray(_useState, 2),
|
33
|
+
index = _useState2[0],
|
34
|
+
setIndex = _useState2[1];
|
35
|
+
var slidesAmount = Children.count(children);
|
36
|
+
var handleClickLeft = function handleClickLeft() {
|
37
|
+
setIndex(Math.max(0, index - 1));
|
38
|
+
};
|
39
|
+
var handleClickRight = function handleClickRight() {
|
40
|
+
setIndex(Math.min(slidesAmount - 1, index + 1));
|
41
|
+
};
|
42
|
+
var _useCarousel = useCarousel({
|
43
|
+
index: index,
|
44
|
+
scrollAlign: scrollAlign,
|
45
|
+
onIndexChange: setIndex
|
46
|
+
}),
|
47
|
+
scrollRef = _useCarousel.scrollRef,
|
48
|
+
trackRef = _useCarousel.trackRef;
|
49
|
+
return /*#__PURE__*/React.createElement(Root, {
|
50
|
+
className: className,
|
51
|
+
style: style,
|
52
|
+
size: size,
|
53
|
+
view: view,
|
54
|
+
ref: ref
|
55
|
+
}, /*#__PURE__*/React.createElement(ControlsWrapper, null, index !== 0 && !controlArrowsDisabled && /*#__PURE__*/React.createElement(IconButton, {
|
56
|
+
pin: "circle-circle",
|
57
|
+
onClick: handleClickLeft
|
58
|
+
}, _IconDisclosureLeft || (_IconDisclosureLeft = /*#__PURE__*/React.createElement(IconDisclosureLeft, {
|
59
|
+
size: "m",
|
60
|
+
color: "inherit"
|
61
|
+
}))), /*#__PURE__*/React.createElement(CarouselWrapper, {
|
62
|
+
ref: scrollRef
|
63
|
+
}, /*#__PURE__*/React.createElement(CarouselTrack, {
|
64
|
+
ref: trackRef
|
65
|
+
}, children)), index !== slidesAmount - 1 && !controlArrowsDisabled && /*#__PURE__*/React.createElement(IconButton, {
|
66
|
+
className: classes.rightControlButton,
|
67
|
+
pin: "circle-circle",
|
68
|
+
onClick: handleClickRight
|
69
|
+
}, _IconDisclosureRight || (_IconDisclosureRight = /*#__PURE__*/React.createElement(IconDisclosureRight, {
|
70
|
+
size: "m",
|
71
|
+
color: "inherit"
|
72
|
+
})))), !(paginationOptions !== null && paginationOptions !== void 0 && paginationOptions.disabled) && /*#__PURE__*/React.createElement(Dots, {
|
73
|
+
index: index,
|
74
|
+
onChange: setIndex,
|
75
|
+
visibleCount: (paginationOptions === null || paginationOptions === void 0 ? void 0 : paginationOptions.visibleDots) || VISIBLE_DOTS_DEFAULT,
|
76
|
+
count: slidesAmount,
|
77
|
+
centered: (paginationOptions === null || paginationOptions === void 0 ? void 0 : paginationOptions.centered) || DOTS_CENTERED_DEFAULT
|
78
|
+
}));
|
79
|
+
});
|
80
|
+
};
|
81
|
+
var carouselNewConfig = {
|
82
|
+
name: 'Carousel',
|
83
|
+
tag: 'div',
|
84
|
+
layout: carouselNewRoot,
|
85
|
+
base: base,
|
86
|
+
variations: {
|
87
|
+
view: {
|
88
|
+
css: base$1
|
89
|
+
},
|
90
|
+
size: {
|
91
|
+
css: base$2
|
92
|
+
}
|
93
|
+
},
|
94
|
+
defaults: {
|
95
|
+
view: 'default',
|
96
|
+
size: 's'
|
97
|
+
}
|
98
|
+
};
|
99
|
+
|
100
|
+
export { carouselNewConfig, carouselNewRoot };
|
101
|
+
//# sourceMappingURL=Carousel.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Carousel.js","sources":["../../../../src/components/Carousel/CarouselNew/Carousel.tsx"],"sourcesContent":["import { RootProps } from 'src/engines';\nimport React, { forwardRef, useState, Children } from 'react';\nimport { IconDisclosureLeft, IconDisclosureRight } from 'src/components/_Icon';\n\nimport { classes } from './Carousel.tokens';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base, CarouselWrapper, CarouselTrack, ControlsWrapper, IconButton } from './Carousel.styles';\nimport { CarouselNewProps } from './Carousel.types';\nimport { useCarousel } from './hooks/useCarousel';\nimport { Dots } from './ui';\n\nconst VISIBLE_DOTS_DEFAULT = 10;\nconst DOTS_CENTERED_DEFAULT = false;\n\n/**\n * Компонент для создания списков с прокруткой.\n */\nexport const carouselNewRoot = (Root: RootProps<HTMLDivElement, CarouselNewProps>) =>\n forwardRef<HTMLDivElement, CarouselNewProps>(\n (\n {\n view,\n size,\n scrollAlign = 'center',\n children,\n controlArrowsDisabled = false,\n paginationOptions,\n className,\n style,\n },\n ref,\n ) => {\n const [index, setIndex] = useState(0);\n\n const slidesAmount = Children.count(children);\n\n const handleClickLeft = () => {\n setIndex(Math.max(0, index - 1));\n };\n\n const handleClickRight = () => {\n setIndex(Math.min(slidesAmount - 1, index + 1));\n };\n\n const { scrollRef, trackRef } = useCarousel({\n index,\n scrollAlign,\n onIndexChange: setIndex,\n });\n\n return (\n <Root className={className} style={style} size={size} view={view} ref={ref}>\n <ControlsWrapper>\n {index !== 0 && !controlArrowsDisabled && (\n <IconButton pin=\"circle-circle\" onClick={handleClickLeft}>\n <IconDisclosureLeft size=\"m\" color=\"inherit\" />\n </IconButton>\n )}\n\n <CarouselWrapper ref={scrollRef}>\n <CarouselTrack ref={trackRef}>{children}</CarouselTrack>\n </CarouselWrapper>\n\n {index !== slidesAmount - 1 && !controlArrowsDisabled && (\n <IconButton\n className={classes.rightControlButton}\n pin=\"circle-circle\"\n onClick={handleClickRight}\n >\n <IconDisclosureRight size=\"m\" color=\"inherit\" />\n </IconButton>\n )}\n </ControlsWrapper>\n\n {!paginationOptions?.disabled && (\n <Dots\n index={index}\n onChange={setIndex}\n visibleCount={paginationOptions?.visibleDots || VISIBLE_DOTS_DEFAULT}\n count={slidesAmount}\n centered={paginationOptions?.centered || DOTS_CENTERED_DEFAULT}\n />\n )}\n </Root>\n );\n },\n );\n\nexport const carouselNewConfig = {\n name: 'Carousel',\n tag: 'div',\n layout: carouselNewRoot,\n base,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n },\n defaults: {\n view: 'default',\n size: 's',\n },\n};\n"],"names":["VISIBLE_DOTS_DEFAULT","DOTS_CENTERED_DEFAULT","carouselNewRoot","Root","forwardRef","_ref","ref","view","size","_ref$scrollAlign","scrollAlign","children","_ref$controlArrowsDis","controlArrowsDisabled","paginationOptions","className","style","_useState","useState","_useState2","_slicedToArray","index","setIndex","slidesAmount","Children","count","handleClickLeft","Math","max","handleClickRight","min","_useCarousel","useCarousel","onIndexChange","scrollRef","trackRef","React","createElement","ControlsWrapper","IconButton","pin","onClick","_IconDisclosureLeft","IconDisclosureLeft","color","CarouselWrapper","CarouselTrack","classes","rightControlButton","_IconDisclosureRight","IconDisclosureRight","disabled","Dots","onChange","visibleCount","visibleDots","centered","carouselNewConfig","name","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import './Carousel.styles_151pk3s.css';
|
2
|
+
import { styled } from '@linaria/react';
|
3
|
+
import { component, mergeConfig } from '../../../engines/common.js';
|
4
|
+
import { iconButtonConfig } from '../../IconButton/IconButton.js';
|
5
|
+
|
6
|
+
var mergedConfig = /*#__PURE__*/mergeConfig(iconButtonConfig);
|
7
|
+
var IconButtonComponent = /*#__PURE__*/component(mergedConfig);
|
8
|
+
var base = "b13uu57o";
|
9
|
+
var CarouselWrapper = /*#__PURE__*/styled('div')({
|
10
|
+
name: "CarouselWrapper",
|
11
|
+
"class": "c1gygdut",
|
12
|
+
propsAsIs: false
|
13
|
+
});
|
14
|
+
var CarouselTrack = /*#__PURE__*/styled('div')({
|
15
|
+
name: "CarouselTrack",
|
16
|
+
"class": "c76zbfp",
|
17
|
+
propsAsIs: false
|
18
|
+
});
|
19
|
+
var _exp = function _exp() {
|
20
|
+
return IconButtonComponent;
|
21
|
+
};
|
22
|
+
var IconButton = /*#__PURE__*/styled(_exp())({
|
23
|
+
name: "IconButton",
|
24
|
+
"class": "i1cnnvc1",
|
25
|
+
propsAsIs: true
|
26
|
+
});
|
27
|
+
var ControlsWrapper = /*#__PURE__*/styled('div')({
|
28
|
+
name: "ControlsWrapper",
|
29
|
+
"class": "c1ff2k98",
|
30
|
+
propsAsIs: false
|
31
|
+
});
|
32
|
+
|
33
|
+
export { CarouselTrack, CarouselWrapper, ControlsWrapper, IconButton, IconButtonComponent, base };
|
34
|
+
//# sourceMappingURL=Carousel.styles.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Carousel.styles.js","sources":["../../../../src/components/Carousel/CarouselNew/Carousel.styles.ts"],"sourcesContent":["import { styled } from '@linaria/react';\nimport { css } from '@linaria/core';\nimport { component, mergeConfig } from 'src/engines';\nimport { iconButtonConfig, iconButtonTokens } from 'src/components/IconButton';\n\nimport { classes } from './Carousel.tokens';\n\nconst mergedConfig = mergeConfig(iconButtonConfig);\nexport const IconButtonComponent = component(mergedConfig);\n\nexport const base = css`\n position: relative;\n`;\n\nexport const CarouselWrapper = styled.div`\n position: relative;\n margin-left: calc(var(--plasma_private-carousel-padding) * -1);\n margin-right: calc(var(--plasma_private-carousel-padding) * -1);\n padding: 0;\n list-style: none;\n\n -ms-overflow-style: none;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n\n overflow-x: auto;\n overflow-y: hidden;\n\n scroll-behavior: smooth;\n scroll-snap-type: x mandatory;\n\n user-select: none;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n\n --plasma_private-carousel-padding: 0.625rem;\n`;\n\nexport const CarouselTrack = styled.div`\n display: inline-flex;\n flex-direction: row;\n`;\n\nexport const IconButton = styled(IconButtonComponent)`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 0.75rem;\n z-index: 10;\n\n ${iconButtonTokens.iconButtonColor}: var(--text-primary);\n ${iconButtonTokens.iconButtonBackgroundColor}: var(--surface-transparent-secondary);\n ${iconButtonTokens.iconButtonLoadingBackgroundColor}: var(${iconButtonTokens.iconButtonBackgroundColor});\n ${iconButtonTokens.iconButtonBackgroundColorHover}: var(--surface-transparent-secondary-hover);\n ${iconButtonTokens.iconButtonBackgroundColorActive}: var(--surface-transparent-secondary-active);\n\n ${iconButtonTokens.iconButtonHeight}: 2.5rem;\n ${iconButtonTokens.iconButtonWidth}: 2.5rem;\n ${iconButtonTokens.iconButtonPadding}: 1rem;\n ${iconButtonTokens.iconButtonRadius}: 0.625rem;\n\n &.${classes.rightControlButton} {\n left: auto;\n right: 0.75rem;\n }\n`;\n\nexport const ControlsWrapper = styled.div`\n position: relative;\n`;\n"],"names":["mergedConfig","mergeConfig","iconButtonConfig","IconButtonComponent","component","base","CarouselWrapper","styled","name","class","propsAsIs","CarouselTrack","_exp","IconButton","ControlsWrapper"],"mappings":";;;;AAOA,IAAMA,YAAY,gBAAGC,WAAW,CAACC,gBAAgB,CAAC,CAAA;IACrCC,mBAAmB,gBAAGC,SAAS,CAACJ,YAAY,EAAC;AAEnD,IAAMK,IAAI,GAEhB,WAAA;AAEM,IAAMC,eAAe,gBAAGC,MAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,iBAAA;AAAAC,EAAAA,OAAAA,EAAA,UAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CAuBpC,EAAA;AAEM,IAAMC,aAAa,gBAAGJ,MAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,eAAA;AAAAC,EAAAA,OAAAA,EAAA,SAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CAGlC,EAAA;AAAC,IAAAE,IAAA,GAzCgBA,SAyChBA,IAAAA,GAAA;AAAA,EAAA,OAE+BT,mBAAmB,CAAA;AAAA,CAAA,CAAA;AAA7C,IAAMU,UAAU,gBAAGN,MAAM,CAAAK,IAAA,EAAA,CAAA,CAAA;AAAAJ,EAAAA,IAAA,EAAA,YAAA;AAAAC,EAAAA,OAAAA,EAAA,UAAA;AAAAC,EAAAA,SAAA,EAAA,IAAA;AAAA,CAsB/B,EAAA;AAEM,IAAMI,eAAe,gBAAGP,MAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,iBAAA;AAAAC,EAAAA,OAAAA,EAAA,UAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CAEpC;;;;"}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
.b13uu57o{position:relative;}
|
2
|
+
.c1gygdut{position:relative;margin-left:calc(var(--plasma_private-carousel-padding) * -1);margin-right:calc(var(--plasma_private-carousel-padding) * -1);padding:0;list-style:none;-ms-overflow-style:none;-webkit-scrollbar-width:none;-moz-scrollbar-width:none;-ms-scrollbar-width:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;-webkit-scroll-behavior:smooth;-moz-scroll-behavior:smooth;-ms-scroll-behavior:smooth;scroll-behavior:smooth;-webkit-scroll-snap-type:x mandatory;-moz-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);--plasma_private-carousel-padding:0.625rem;}.c1gygdut::-webkit-scrollbar{display:none;}
|
3
|
+
.c76zbfp{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}
|
4
|
+
.i1cnnvc1{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);left:0.75rem;z-index:10;--plasma-icon-button-color:var(--text-primary);--plasma-icon-button-background-color:var(--surface-transparent-secondary);--plasma-icon-button-loading-background-color:var(--plasma-icon-button-background-color);--plasma-icon-button-background-color-hover:var(--surface-transparent-secondary-hover);--plasma-icon-button-background-color-active:var(--surface-transparent-secondary-active);--plasma-icon-button-height:2.5rem;--plasma-icon-button-width:2.5rem;--plasma-icon-button-padding:1rem;--plasma-icon-button-radius:0.625rem;}.i1cnnvc1.carousel-right-control-button{left:auto;right:0.75rem;}
|
5
|
+
.c1ff2k98{position:relative;}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
var classes = {
|
2
|
+
dot: 'dot',
|
3
|
+
active: 'dot-active',
|
4
|
+
animating: 'dot-animating',
|
5
|
+
animateIn: 'dot-animate-in',
|
6
|
+
animateOut: 'dot-animate-out',
|
7
|
+
temporaryNatural: 'dot-temporary-natural',
|
8
|
+
shrinking: 'dot-shrinking',
|
9
|
+
availableDotsLeft: 'dot-available-dots-left',
|
10
|
+
availableDotsRight: 'dot-available-dots-right',
|
11
|
+
rightControlButton: 'carousel-right-control-button'
|
12
|
+
};
|
13
|
+
var tokens = {
|
14
|
+
paginationDotBackground: '--plasma-carousel-pagination-dot-background',
|
15
|
+
paginationDotActiveBackground: '--plasma-carousel-pagination-dot-active-background'
|
16
|
+
};
|
17
|
+
|
18
|
+
export { classes, tokens };
|
19
|
+
//# sourceMappingURL=Carousel.tokens.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Carousel.tokens.js","sources":["../../../../src/components/Carousel/CarouselNew/Carousel.tokens.ts"],"sourcesContent":["export const classes = {\n dot: 'dot',\n active: 'dot-active',\n animating: 'dot-animating',\n animateIn: 'dot-animate-in',\n animateOut: 'dot-animate-out',\n temporaryNatural: 'dot-temporary-natural',\n shrinking: 'dot-shrinking',\n availableDotsLeft: 'dot-available-dots-left',\n availableDotsRight: 'dot-available-dots-right',\n rightControlButton: 'carousel-right-control-button',\n};\n\nexport const tokens = {\n paginationDotBackground: '--plasma-carousel-pagination-dot-background',\n paginationDotActiveBackground: '--plasma-carousel-pagination-dot-active-background',\n};\n"],"names":["classes","dot","active","animating","animateIn","animateOut","temporaryNatural","shrinking","availableDotsLeft","availableDotsRight","rightControlButton","tokens","paginationDotBackground","paginationDotActiveBackground"],"mappings":"AAAO,IAAMA,OAAO,GAAG;AACnBC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,MAAM,EAAE,YAAY;AACpBC,EAAAA,SAAS,EAAE,eAAe;AAC1BC,EAAAA,SAAS,EAAE,gBAAgB;AAC3BC,EAAAA,UAAU,EAAE,iBAAiB;AAC7BC,EAAAA,gBAAgB,EAAE,uBAAuB;AACzCC,EAAAA,SAAS,EAAE,eAAe;AAC1BC,EAAAA,iBAAiB,EAAE,yBAAyB;AAC5CC,EAAAA,kBAAkB,EAAE,0BAA0B;AAC9CC,EAAAA,kBAAkB,EAAE,+BAAA;AACxB,EAAC;AAEM,IAAMC,MAAM,GAAG;AAClBC,EAAAA,uBAAuB,EAAE,6CAA6C;AACtEC,EAAAA,6BAA6B,EAAE,oDAAA;AACnC;;;;"}
|
@@ -0,0 +1,369 @@
|
|
1
|
+
import { useRef, useMemo, useCallback, useEffect } from 'react';
|
2
|
+
import throttle from 'lodash.throttle';
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Подсчет смещения из-за паддингов.
|
6
|
+
*/
|
7
|
+
var getCalculatedOffset = function getCalculatedOffset(scrollEl, trackEl) {
|
8
|
+
var paddingProp = 'paddingLeft';
|
9
|
+
return parseInt(getComputedStyle(scrollEl)[paddingProp], 10) + parseInt(getComputedStyle(trackEl)[paddingProp], 10);
|
10
|
+
};
|
11
|
+
var positionModByScrollAlign = function positionModByScrollAlign(_ref) {
|
12
|
+
var scrollAlign = _ref.scrollAlign,
|
13
|
+
position = _ref.position,
|
14
|
+
carouselSize = _ref.carouselSize,
|
15
|
+
itemSize = _ref.itemSize,
|
16
|
+
offset = _ref.offset,
|
17
|
+
scrollStart = _ref.scrollStart;
|
18
|
+
if (scrollAlign === 'start') {
|
19
|
+
var paddingOffset = 0;
|
20
|
+
return position + paddingOffset;
|
21
|
+
}
|
22
|
+
if (scrollAlign === 'center') {
|
23
|
+
return position - carouselSize / 2 + itemSize / 2;
|
24
|
+
}
|
25
|
+
if (scrollAlign === 'end') {
|
26
|
+
return position - carouselSize + itemSize + offset;
|
27
|
+
}
|
28
|
+
if (scrollAlign === 'activeDirection') {
|
29
|
+
if (position >= scrollStart + carouselSize - itemSize) {
|
30
|
+
return position - carouselSize + itemSize + offset;
|
31
|
+
}
|
32
|
+
if (position > scrollStart) {
|
33
|
+
return scrollStart;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
return position;
|
37
|
+
};
|
38
|
+
|
39
|
+
/**
|
40
|
+
* Подсчет скролла до переданного индекса.
|
41
|
+
*/
|
42
|
+
var getCalculatedPos = function getCalculatedPos(_ref2) {
|
43
|
+
var _items$item$offsetWid2, _items$item2;
|
44
|
+
var scrollEl = _ref2.scrollEl,
|
45
|
+
items = _ref2.items,
|
46
|
+
index = _ref2.index,
|
47
|
+
offset = _ref2.offset,
|
48
|
+
scrollAlign = _ref2.scrollAlign;
|
49
|
+
var position = scrollAlign === 'center' ? offset : 0;
|
50
|
+
if (items.item(index) === null) {
|
51
|
+
return position;
|
52
|
+
}
|
53
|
+
for (var i = 0; i < index; i++) {
|
54
|
+
var _items$item$offsetWid, _items$item;
|
55
|
+
position += (_items$item$offsetWid = (_items$item = items.item(i)) === null || _items$item === void 0 ? void 0 : _items$item.offsetWidth) !== null && _items$item$offsetWid !== void 0 ? _items$item$offsetWid : 0;
|
56
|
+
}
|
57
|
+
var carouselSize = scrollEl.offsetWidth;
|
58
|
+
var itemSize = (_items$item$offsetWid2 = (_items$item2 = items.item(index)) === null || _items$item2 === void 0 ? void 0 : _items$item2.offsetWidth) !== null && _items$item$offsetWid2 !== void 0 ? _items$item$offsetWid2 : 0;
|
59
|
+
var scrollStart = scrollEl.scrollLeft;
|
60
|
+
return positionModByScrollAlign({
|
61
|
+
scrollAlign: scrollAlign,
|
62
|
+
position: position,
|
63
|
+
carouselSize: carouselSize,
|
64
|
+
itemSize: itemSize,
|
65
|
+
offset: offset,
|
66
|
+
scrollStart: scrollStart
|
67
|
+
});
|
68
|
+
};
|
69
|
+
var DEFAULT_DURATION = 300;
|
70
|
+
|
71
|
+
// https://css-tricks.com/emulating-css-timing-functions-javascript/
|
72
|
+
var tfs = {
|
73
|
+
linear: function linear(t) {
|
74
|
+
return t;
|
75
|
+
},
|
76
|
+
// eslint-disable-next-line
|
77
|
+
easeIn: function easeIn(t) {
|
78
|
+
return Math.pow(t, 1.675);
|
79
|
+
},
|
80
|
+
// eslint-disable-next-line
|
81
|
+
easeOut: function easeOut(t) {
|
82
|
+
return 1 - Math.pow(1 - t, 1.675);
|
83
|
+
},
|
84
|
+
easeInOut: function easeInOut(t) {
|
85
|
+
return 0.5 * (Math.sin((t - 0.5) * Math.PI) + 1);
|
86
|
+
}
|
87
|
+
};
|
88
|
+
/**
|
89
|
+
* Плавная прокрутка по горизонтали
|
90
|
+
* @param {Element} elem
|
91
|
+
* @param {number} pos
|
92
|
+
* @param {number} duration
|
93
|
+
* @param {string} timingFunction
|
94
|
+
*/
|
95
|
+
var animatedScrollToX = function animatedScrollToX(elem, pos) {
|
96
|
+
var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_DURATION;
|
97
|
+
var timingFunction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'easeInOut';
|
98
|
+
var startTime;
|
99
|
+
var startX = elem.scrollLeft;
|
100
|
+
var endX = Math.max(0, Math.min(elem.scrollWidth - elem.clientWidth, pos));
|
101
|
+
var handleNewAnimationFrame = function handleNewAnimationFrame() {
|
102
|
+
startTime = startTime || Date.now();
|
103
|
+
var timePos = Math.min(1, Math.max(1, Date.now() - startTime) / duration);
|
104
|
+
var scrollPos = tfs[timingFunction](timePos);
|
105
|
+
var left = startX + (endX - startX) * scrollPos;
|
106
|
+
elem.scrollTo({
|
107
|
+
left: left
|
108
|
+
});
|
109
|
+
if (timePos !== 1) window.requestAnimationFrame(handleNewAnimationFrame);
|
110
|
+
};
|
111
|
+
window.requestAnimationFrame(handleNewAnimationFrame);
|
112
|
+
};
|
113
|
+
|
114
|
+
/**
|
115
|
+
* Прокрутка к указанной позиции с анимацией или без.
|
116
|
+
*/
|
117
|
+
var scrollToPos = function scrollToPos(_ref3) {
|
118
|
+
var scrollEl = _ref3.scrollEl,
|
119
|
+
pos = _ref3.pos,
|
120
|
+
animated = _ref3.animated,
|
121
|
+
duration = _ref3.duration,
|
122
|
+
timingFunction = _ref3.timingFunction;
|
123
|
+
if (Math.abs(pos - scrollEl.scrollLeft) > 1) {
|
124
|
+
if (animated) {
|
125
|
+
animatedScrollToX(scrollEl, pos, duration, timingFunction);
|
126
|
+
} else {
|
127
|
+
scrollEl.scrollTo({
|
128
|
+
left: pos
|
129
|
+
});
|
130
|
+
}
|
131
|
+
}
|
132
|
+
};
|
133
|
+
var round = function round(n) {
|
134
|
+
return Math.round(n * 100) / 100;
|
135
|
+
};
|
136
|
+
|
137
|
+
/**
|
138
|
+
* Получить позицию (слот) айтема в каруселе.
|
139
|
+
* Каждый айтем имеет свой слот относительно вьюпорта карусели.
|
140
|
+
*/
|
141
|
+
var getItemSlot = function getItemSlot(itemIndex, itemEnd, itemSize, scrollStart, scrollSize, scrollAlign) {
|
142
|
+
var prevIndex = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;
|
143
|
+
var offset = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
|
144
|
+
/**
|
145
|
+
* Граница и центр скролла (видимой части).
|
146
|
+
* Смещение + размер.
|
147
|
+
*/
|
148
|
+
var scrollEnd = scrollStart + scrollSize;
|
149
|
+
var scrollCenter = scrollStart + scrollSize / 2;
|
150
|
+
var itemCenter = itemEnd - itemSize / 2;
|
151
|
+
if (scrollAlign === 'center') {
|
152
|
+
return round((itemCenter - scrollCenter) / itemSize);
|
153
|
+
}
|
154
|
+
if (scrollAlign === 'start') {
|
155
|
+
return round((itemEnd - itemSize - scrollStart) / itemSize);
|
156
|
+
}
|
157
|
+
if (scrollAlign === 'end') {
|
158
|
+
return round((itemEnd - (scrollSize + scrollStart)) / itemSize);
|
159
|
+
}
|
160
|
+
if (scrollAlign === 'activeDirection') {
|
161
|
+
var prevStart = offset + itemSize * prevIndex;
|
162
|
+
var prevEnd = prevStart + itemSize;
|
163
|
+
var prevVisible = prevEnd > scrollStart && prevStart < scrollEnd;
|
164
|
+
if (!prevVisible) {
|
165
|
+
if (prevIndex < itemIndex) {
|
166
|
+
return round((itemEnd - (scrollSize + scrollStart)) / itemSize);
|
167
|
+
}
|
168
|
+
return round((itemEnd - itemSize - scrollStart) / itemSize);
|
169
|
+
}
|
170
|
+
}
|
171
|
+
return null;
|
172
|
+
};
|
173
|
+
function getCarouselItems(track) {
|
174
|
+
return track.children;
|
175
|
+
}
|
176
|
+
function useDebouncedFunction(func, delay, cleanUp) {
|
177
|
+
var timeoutRef = useRef();
|
178
|
+
|
179
|
+
/**
|
180
|
+
* Очистка таймера
|
181
|
+
*/
|
182
|
+
function clearTimer() {
|
183
|
+
if (timeoutRef.current) {
|
184
|
+
clearTimeout(timeoutRef.current);
|
185
|
+
timeoutRef.current = undefined;
|
186
|
+
}
|
187
|
+
}
|
188
|
+
|
189
|
+
/**
|
190
|
+
* Очищаем таймер при анмаунте компонента, если cleanUp выставлен в true
|
191
|
+
* и тем самым отменяем последний запланированный вызов
|
192
|
+
*/
|
193
|
+
useEffect(function () {
|
194
|
+
return cleanUp ? clearTimer : undefined;
|
195
|
+
}, [cleanUp]);
|
196
|
+
return function () {
|
197
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
198
|
+
args[_key] = arguments[_key];
|
199
|
+
}
|
200
|
+
clearTimer();
|
201
|
+
timeoutRef.current = setTimeout(function () {
|
202
|
+
return func.apply(void 0, args);
|
203
|
+
}, delay);
|
204
|
+
};
|
205
|
+
}
|
206
|
+
var THROTTLE_DEFAULT_MS = 100;
|
207
|
+
var DEBOUNCE_DEFAULT_MS = 150;
|
208
|
+
var useCarousel = function useCarousel(_ref4) {
|
209
|
+
var index = _ref4.index,
|
210
|
+
onIndexChange = _ref4.onIndexChange,
|
211
|
+
_ref4$detectActive = _ref4.detectActive,
|
212
|
+
detectActive = _ref4$detectActive === void 0 ? false : _ref4$detectActive,
|
213
|
+
_ref4$detectThreshold = _ref4.detectThreshold,
|
214
|
+
detectThreshold = _ref4$detectThreshold === void 0 ? 0.5 : _ref4$detectThreshold,
|
215
|
+
_ref4$scrollAlign = _ref4.scrollAlign,
|
216
|
+
scrollAlign = _ref4$scrollAlign === void 0 ? 'center' : _ref4$scrollAlign,
|
217
|
+
_ref4$throttleMs = _ref4.throttleMs,
|
218
|
+
throttleMs = _ref4$throttleMs === void 0 ? THROTTLE_DEFAULT_MS : _ref4$throttleMs,
|
219
|
+
_ref4$debounceMs = _ref4.debounceMs,
|
220
|
+
debounceMs = _ref4$debounceMs === void 0 ? DEBOUNCE_DEFAULT_MS : _ref4$debounceMs;
|
221
|
+
var prevIndex = useRef(null);
|
222
|
+
var offset = useRef(0);
|
223
|
+
var scrollRef = useRef(null);
|
224
|
+
var trackRef = useRef(null);
|
225
|
+
|
226
|
+
/**
|
227
|
+
* Для того, чтобы не спамить изменениями индекса.
|
228
|
+
* Задержка дебаунса слегка больше, чем у тротлинга.
|
229
|
+
* Таким образом, событие срабатывает при завершении скролла.
|
230
|
+
*/
|
231
|
+
var debouncedOnIndexChange = useDebouncedFunction(function (i) {
|
232
|
+
return onIndexChange === null || onIndexChange === void 0 ? void 0 : onIndexChange(i);
|
233
|
+
}, debounceMs);
|
234
|
+
|
235
|
+
/**
|
236
|
+
* Вычисление центрального элемента.
|
237
|
+
* Подсчет: от 0 до 1, какое количество ширины/высоты
|
238
|
+
* каждого элемента находится по центру скролла.
|
239
|
+
*/
|
240
|
+
var throttledDetectActiveItem = useMemo(function () {
|
241
|
+
return throttle(function () {
|
242
|
+
if (!detectActive || scrollRef.current === null || trackRef.current === null) {
|
243
|
+
return;
|
244
|
+
}
|
245
|
+
|
246
|
+
/**
|
247
|
+
* Правая (или нижняя для Оу) граница элемента.
|
248
|
+
*/
|
249
|
+
var itemEdge = offset.current;
|
250
|
+
|
251
|
+
/**
|
252
|
+
* Смещение (отрицательный или положительный отступ)
|
253
|
+
* и размер карусели (для Ox - ширина, для Oy - высота).
|
254
|
+
*/
|
255
|
+
var scrollPos = scrollRef.current['scrollLeft' ];
|
256
|
+
var scrollSize = scrollRef.current['offsetWidth' ];
|
257
|
+
|
258
|
+
/**
|
259
|
+
* Граница скролла (видимой части).
|
260
|
+
* Смещение + размер.
|
261
|
+
*/
|
262
|
+
var scrollEdge = scrollPos + scrollSize;
|
263
|
+
var items = getCarouselItems(trackRef.current);
|
264
|
+
|
265
|
+
/**
|
266
|
+
* Проходим по всему списку, суммируя ширины элементов,
|
267
|
+
* пока не найдем один элемент, чей центр будет в центре карусели.
|
268
|
+
*/
|
269
|
+
for (var itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
270
|
+
var _prevIndex$current;
|
271
|
+
var item = items.item(itemIndex);
|
272
|
+
if (item === null) {
|
273
|
+
// eslint-disable-next-line no-continue
|
274
|
+
continue;
|
275
|
+
}
|
276
|
+
|
277
|
+
/**
|
278
|
+
* Для Ox - ширина, для Oy - высота.
|
279
|
+
*/
|
280
|
+
var itemSize = item['offsetWidth' ];
|
281
|
+
|
282
|
+
/**
|
283
|
+
* Все элементы правее вьюпорта выпадают из процедуры.
|
284
|
+
* Сравниваем по предыдущему элементу.
|
285
|
+
* [ ... ] ...|n| <- Левый край элемента за пределами начала видимой части
|
286
|
+
*/
|
287
|
+
if (itemEdge > scrollEdge) {
|
288
|
+
// eslint-disable-next-line no-continue
|
289
|
+
continue;
|
290
|
+
}
|
291
|
+
itemEdge += itemSize;
|
292
|
+
|
293
|
+
/**
|
294
|
+
* Все элементы левее вьюпорта выпадают из процедуры.
|
295
|
+
* Сравниваем по текущему элементу.
|
296
|
+
* Правый край элемента за пределами начала видимой части -> |p|... [ ... ]
|
297
|
+
*/
|
298
|
+
if (scrollPos > itemEdge) {
|
299
|
+
// eslint-disable-next-line no-continue
|
300
|
+
continue;
|
301
|
+
}
|
302
|
+
var itemSlot = getItemSlot(itemIndex, itemEdge, itemSize, scrollPos, scrollSize, scrollAlign, (_prevIndex$current = prevIndex.current) !== null && _prevIndex$current !== void 0 ? _prevIndex$current : 0, offset.current);
|
303
|
+
if (itemSlot !== null) {
|
304
|
+
if (detectThreshold && Math.abs(itemSlot) <= detectThreshold) {
|
305
|
+
debouncedOnIndexChange === null || debouncedOnIndexChange === void 0 || debouncedOnIndexChange(itemIndex);
|
306
|
+
}
|
307
|
+
}
|
308
|
+
}
|
309
|
+
}, throttleMs);
|
310
|
+
}, [debouncedOnIndexChange, detectActive, detectThreshold, scrollAlign, throttleMs]);
|
311
|
+
|
312
|
+
/**
|
313
|
+
* Прокрутка до нужной позиции индекса.
|
314
|
+
*/
|
315
|
+
var toIndex = useCallback(function (i) {
|
316
|
+
var scrollEl = scrollRef.current;
|
317
|
+
var items = trackRef.current ? getCarouselItems(trackRef.current) : null;
|
318
|
+
if (scrollEl && items && items.length > 0 && i >= 0) {
|
319
|
+
scrollToPos({
|
320
|
+
scrollEl: scrollEl,
|
321
|
+
pos: getCalculatedPos({
|
322
|
+
scrollEl: scrollEl,
|
323
|
+
items: items,
|
324
|
+
index: i,
|
325
|
+
offset: offset.current,
|
326
|
+
scrollAlign: scrollAlign
|
327
|
+
})
|
328
|
+
});
|
329
|
+
prevIndex.current = i;
|
330
|
+
}
|
331
|
+
}, [scrollAlign]);
|
332
|
+
useEffect(function () {
|
333
|
+
if (scrollRef.current && trackRef.current) {
|
334
|
+
offset.current = getCalculatedOffset(scrollRef.current, trackRef.current);
|
335
|
+
}
|
336
|
+
}, []);
|
337
|
+
|
338
|
+
/**
|
339
|
+
* Операции на маунте/анмаунте компонента.
|
340
|
+
* Создать слушатели событи и т.п.
|
341
|
+
*/
|
342
|
+
useEffect(function () {
|
343
|
+
var carouselElement = scrollRef.current;
|
344
|
+
if (carouselElement) {
|
345
|
+
carouselElement.addEventListener('scroll', throttledDetectActiveItem);
|
346
|
+
}
|
347
|
+
return function () {
|
348
|
+
if (carouselElement) {
|
349
|
+
carouselElement.removeEventListener('scroll', throttledDetectActiveItem);
|
350
|
+
}
|
351
|
+
};
|
352
|
+
}, [throttledDetectActiveItem]);
|
353
|
+
|
354
|
+
/**
|
355
|
+
* Прокрутка до нужной позиции индекса, если индекс изменился.
|
356
|
+
*/
|
357
|
+
useEffect(function () {
|
358
|
+
if (index !== prevIndex.current) {
|
359
|
+
toIndex(index);
|
360
|
+
}
|
361
|
+
}, [index, toIndex]);
|
362
|
+
return {
|
363
|
+
scrollRef: scrollRef,
|
364
|
+
trackRef: trackRef
|
365
|
+
};
|
366
|
+
};
|
367
|
+
|
368
|
+
export { animatedScrollToX, getCalculatedOffset, getCalculatedPos, getCarouselItems, getItemSlot, scrollToPos, useCarousel, useDebouncedFunction };
|
369
|
+
//# sourceMappingURL=useCarousel.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useCarousel.js","sources":["../../../../../src/components/Carousel/CarouselNew/hooks/useCarousel.tsx"],"sourcesContent":["import React, { useEffect, useCallback, useRef, useMemo } from 'react';\nimport throttle from 'lodash.throttle';\n\nimport { CarouselNewProps as CarouselProps, ScrollAlign } from '../Carousel.types';\n\n/**\n * Подсчет смещения из-за паддингов.\n */\nexport const getCalculatedOffset = (scrollEl: Element, trackEl: Element) => {\n const paddingProp = 'paddingLeft';\n return parseInt(getComputedStyle(scrollEl)[paddingProp], 10) + parseInt(getComputedStyle(trackEl)[paddingProp], 10);\n};\n\nconst positionModByScrollAlign = ({\n scrollAlign,\n position,\n carouselSize,\n itemSize,\n offset,\n scrollStart,\n}: {\n scrollAlign: ScrollAlign;\n position: number;\n carouselSize: number;\n itemSize: number;\n offset: number;\n scrollStart: number;\n}) => {\n if (scrollAlign === 'start') {\n const paddingOffset = 0;\n return position + paddingOffset;\n }\n if (scrollAlign === 'center') {\n return position - carouselSize / 2 + itemSize / 2;\n }\n if (scrollAlign === 'end') {\n return position - carouselSize + itemSize + offset;\n }\n if (scrollAlign === 'activeDirection') {\n if (position >= scrollStart + carouselSize - itemSize) {\n return position - carouselSize + itemSize + offset;\n }\n if (position > scrollStart) {\n return scrollStart;\n }\n }\n return position;\n};\n\n/**\n * Подсчет скролла до переданного индекса.\n */\nexport const getCalculatedPos = ({\n scrollEl,\n items,\n index,\n offset,\n scrollAlign,\n}: {\n scrollEl: HTMLElement;\n items: HTMLCollectionOf<HTMLElement>;\n index: number;\n offset: number;\n scrollAlign: ScrollAlign;\n}) => {\n let position = scrollAlign === 'center' ? offset : 0;\n\n if (items.item(index) === null) {\n return position;\n }\n\n for (let i = 0; i < index; i++) {\n position += items.item(i)?.offsetWidth ?? 0;\n }\n\n const carouselSize = scrollEl.offsetWidth;\n const itemSize = items.item(index)?.offsetWidth ?? 0;\n const scrollStart = scrollEl.scrollLeft;\n\n return positionModByScrollAlign({\n scrollAlign,\n position,\n carouselSize,\n itemSize,\n offset,\n scrollStart,\n });\n};\n\nconst DEFAULT_DURATION = 300;\n\n// https://css-tricks.com/emulating-css-timing-functions-javascript/\nconst tfs = {\n linear: (t: number) => t,\n // eslint-disable-next-line\n easeIn: (t: number) => Math.pow(t, 1.675),\n // eslint-disable-next-line\n easeOut: (t: number) => 1 - Math.pow(1 - t, 1.675),\n easeInOut: (t: number) => 0.5 * (Math.sin((t - 0.5) * Math.PI) + 1),\n};\n\nexport type TimingFunction = keyof typeof tfs;\n\n/**\n * Плавная прокрутка по горизонтали\n * @param {Element} elem\n * @param {number} pos\n * @param {number} duration\n * @param {string} timingFunction\n */\nexport const animatedScrollToX = (\n elem: Element,\n pos: number,\n duration: number = DEFAULT_DURATION,\n timingFunction: TimingFunction = 'easeInOut',\n): void => {\n let startTime: number;\n const startX = elem.scrollLeft;\n const endX = Math.max(0, Math.min(elem.scrollWidth - elem.clientWidth, pos));\n\n const handleNewAnimationFrame = (): void => {\n startTime = startTime || Date.now();\n const timePos = Math.min(1, Math.max(1, Date.now() - startTime) / duration);\n const scrollPos = tfs[timingFunction](timePos);\n const left = startX + (endX - startX) * scrollPos;\n elem.scrollTo({ left });\n if (timePos !== 1) window.requestAnimationFrame(handleNewAnimationFrame);\n };\n\n window.requestAnimationFrame(handleNewAnimationFrame);\n};\n\n/**\n * Прокрутка к указанной позиции с анимацией или без.\n */\nexport const scrollToPos = ({\n scrollEl,\n pos,\n animated,\n duration,\n timingFunction,\n}: {\n scrollEl: HTMLElement;\n pos: number;\n animated?: boolean;\n duration?: number;\n timingFunction?: TimingFunction;\n}) => {\n if (Math.abs(pos - scrollEl.scrollLeft) > 1) {\n if (animated) {\n animatedScrollToX(scrollEl, pos, duration, timingFunction);\n } else {\n scrollEl.scrollTo({ left: pos });\n }\n }\n};\n\nconst round = (n: number) => Math.round(n * 100) / 100;\n\n/**\n * Получить позицию (слот) айтема в каруселе.\n * Каждый айтем имеет свой слот относительно вьюпорта карусели.\n */\nexport const getItemSlot = (\n itemIndex: number,\n itemEnd: number,\n itemSize: number,\n scrollStart: number,\n scrollSize: number,\n scrollAlign: ScrollAlign,\n prevIndex = 0,\n offset = 0,\n) => {\n /**\n * Граница и центр скролла (видимой части).\n * Смещение + размер.\n */\n const scrollEnd = scrollStart + scrollSize;\n const scrollCenter = scrollStart + scrollSize / 2;\n const itemCenter = itemEnd - itemSize / 2;\n\n if (scrollAlign === 'center') {\n return round((itemCenter - scrollCenter) / itemSize);\n }\n if (scrollAlign === 'start') {\n return round((itemEnd - itemSize - scrollStart) / itemSize);\n }\n if (scrollAlign === 'end') {\n return round((itemEnd - (scrollSize + scrollStart)) / itemSize);\n }\n if (scrollAlign === 'activeDirection') {\n const prevStart = offset + itemSize * prevIndex;\n const prevEnd = prevStart + itemSize;\n const prevVisible = prevEnd > scrollStart && prevStart < scrollEnd;\n\n if (!prevVisible) {\n if (prevIndex < itemIndex) {\n return round((itemEnd - (scrollSize + scrollStart)) / itemSize);\n }\n return round((itemEnd - itemSize - scrollStart) / itemSize);\n }\n }\n return null;\n};\n\nexport function getCarouselItems(track: HTMLElement): HTMLCollectionOf<HTMLElement> {\n return track.children as HTMLCollectionOf<HTMLElement>;\n}\n\nexport function useDebouncedFunction(func: (...args: any) => any, delay: number, cleanUp?: boolean) {\n const timeoutRef = useRef<number>();\n\n /**\n * Очистка таймера\n */\n function clearTimer() {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n }\n\n /**\n * Очищаем таймер при анмаунте компонента, если cleanUp выставлен в true\n * и тем самым отменяем последний запланированный вызов\n */\n useEffect(() => (cleanUp ? clearTimer : undefined), [cleanUp]);\n\n return (...args: any[]) => {\n clearTimer();\n timeoutRef.current = setTimeout(() => func(...args), delay);\n };\n}\n\ntype UseCarouselOptions = Pick<CarouselProps, 'scrollAlign'> & {\n index: number;\n throttleMs?: number;\n debounceMs?: number;\n detectActive?: boolean;\n detectThreshold?: number;\n onIndexChange?: (e: any) => void;\n};\n\ntype UseCarouselHookResult = {\n scrollRef: React.RefObject<HTMLDivElement>;\n trackRef: React.RefObject<HTMLDivElement>;\n};\n\nconst THROTTLE_DEFAULT_MS = 100;\nconst DEBOUNCE_DEFAULT_MS = 150;\n\nexport const useCarousel = ({\n index,\n onIndexChange,\n detectActive = false,\n detectThreshold = 0.5,\n scrollAlign = 'center',\n throttleMs = THROTTLE_DEFAULT_MS,\n debounceMs = DEBOUNCE_DEFAULT_MS,\n}: UseCarouselOptions): UseCarouselHookResult => {\n const prevIndex = useRef<number | null>(null);\n const offset = useRef(0);\n const scrollRef = useRef<HTMLDivElement>(null);\n const trackRef = useRef<HTMLDivElement>(null);\n const axis = 'x';\n\n /**\n * Для того, чтобы не спамить изменениями индекса.\n * Задержка дебаунса слегка больше, чем у тротлинга.\n * Таким образом, событие срабатывает при завершении скролла.\n */\n const debouncedOnIndexChange = useDebouncedFunction((i: number) => onIndexChange?.(i), debounceMs);\n\n /**\n * Вычисление центрального элемента.\n * Подсчет: от 0 до 1, какое количество ширины/высоты\n * каждого элемента находится по центру скролла.\n */\n const throttledDetectActiveItem = useMemo(() => {\n return throttle(() => {\n if (!detectActive || scrollRef.current === null || trackRef.current === null) {\n return;\n }\n\n /**\n * Правая (или нижняя для Оу) граница элемента.\n */\n let itemEdge = offset.current;\n\n /**\n * Смещение (отрицательный или положительный отступ)\n * и размер карусели (для Ox - ширина, для Oy - высота).\n */\n const scrollPos = scrollRef.current[axis === 'x' ? 'scrollLeft' : 'scrollTop'];\n const scrollSize = scrollRef.current[axis === 'x' ? 'offsetWidth' : 'offsetHeight'];\n\n /**\n * Граница скролла (видимой части).\n * Смещение + размер.\n */\n const scrollEdge = scrollPos + scrollSize;\n\n const items = getCarouselItems(trackRef.current);\n\n /**\n * Проходим по всему списку, суммируя ширины элементов,\n * пока не найдем один элемент, чей центр будет в центре карусели.\n */\n for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {\n const item = items.item(itemIndex);\n\n if (item === null) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n /**\n * Для Ox - ширина, для Oy - высота.\n */\n const itemSize = item[axis === 'x' ? 'offsetWidth' : 'offsetHeight'];\n\n /**\n * Все элементы правее вьюпорта выпадают из процедуры.\n * Сравниваем по предыдущему элементу.\n * [ ... ] ...|n| <- Левый край элемента за пределами начала видимой части\n */\n if (itemEdge > scrollEdge) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n itemEdge += itemSize;\n\n /**\n * Все элементы левее вьюпорта выпадают из процедуры.\n * Сравниваем по текущему элементу.\n * Правый край элемента за пределами начала видимой части -> |p|... [ ... ]\n */\n if (scrollPos > itemEdge) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const itemSlot = getItemSlot(\n itemIndex,\n itemEdge,\n itemSize,\n scrollPos,\n scrollSize,\n scrollAlign,\n prevIndex.current ?? 0,\n offset.current,\n );\n\n if (itemSlot !== null) {\n if (detectThreshold && Math.abs(itemSlot) <= detectThreshold) {\n debouncedOnIndexChange?.(itemIndex);\n }\n }\n }\n }, throttleMs);\n }, [debouncedOnIndexChange, detectActive, detectThreshold, scrollAlign, throttleMs]);\n\n /**\n * Прокрутка до нужной позиции индекса.\n */\n const toIndex = useCallback(\n (i: number) => {\n const scrollEl = scrollRef.current;\n const items = trackRef.current ? getCarouselItems(trackRef.current) : null;\n\n if (scrollEl && items && items.length > 0 && i >= 0) {\n scrollToPos({\n scrollEl,\n pos: getCalculatedPos({\n scrollEl,\n items,\n index: i,\n offset: offset.current,\n scrollAlign,\n }),\n });\n prevIndex.current = i;\n }\n },\n [scrollAlign],\n );\n\n useEffect(() => {\n if (scrollRef.current && trackRef.current) {\n offset.current = getCalculatedOffset(scrollRef.current, trackRef.current);\n }\n }, []);\n\n /**\n * Операции на маунте/анмаунте компонента.\n * Создать слушатели событи и т.п.\n */\n useEffect(() => {\n const carouselElement = scrollRef.current;\n\n if (carouselElement) {\n carouselElement.addEventListener('scroll', throttledDetectActiveItem);\n }\n\n return () => {\n if (carouselElement) {\n carouselElement.removeEventListener('scroll', throttledDetectActiveItem);\n }\n };\n }, [throttledDetectActiveItem]);\n\n /**\n * Прокрутка до нужной позиции индекса, если индекс изменился.\n */\n useEffect(() => {\n if (index !== prevIndex.current) {\n toIndex(index);\n }\n }, [index, toIndex]);\n\n return {\n scrollRef,\n trackRef,\n };\n};\n"],"names":["getCalculatedOffset","scrollEl","trackEl","paddingProp","parseInt","getComputedStyle","positionModByScrollAlign","_ref","scrollAlign","position","carouselSize","itemSize","offset","scrollStart","paddingOffset","getCalculatedPos","_ref2","_items$item$offsetWid2","_items$item2","items","index","item","i","_items$item$offsetWid","_items$item","offsetWidth","scrollLeft","DEFAULT_DURATION","tfs","linear","t","easeIn","Math","pow","easeOut","easeInOut","sin","PI","animatedScrollToX","elem","pos","duration","arguments","length","undefined","timingFunction","startTime","startX","endX","max","min","scrollWidth","clientWidth","handleNewAnimationFrame","Date","now","timePos","scrollPos","left","scrollTo","window","requestAnimationFrame","scrollToPos","_ref3","animated","abs","round","n","getItemSlot","itemIndex","itemEnd","scrollSize","prevIndex","scrollEnd","scrollCenter","itemCenter","prevStart","prevEnd","prevVisible","getCarouselItems","track","children","useDebouncedFunction","func","delay","cleanUp","timeoutRef","useRef","clearTimer","current","clearTimeout","useEffect","_len","args","Array","_key","setTimeout","apply","THROTTLE_DEFAULT_MS","DEBOUNCE_DEFAULT_MS","useCarousel","_ref4","onIndexChange","_ref4$detectActive","detectActive","_ref4$detectThreshold","detectThreshold","_ref4$scrollAlign","_ref4$throttleMs","throttleMs","_ref4$debounceMs","debounceMs","scrollRef","trackRef","debouncedOnIndexChange","throttledDetectActiveItem","useMemo","throttle","itemEdge","scrollEdge","_prevIndex$current","itemSlot","toIndex","useCallback","carouselElement","addEventListener","removeEventListener"],"mappings":"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"}
|