@salutejs/plasma-new-hope 0.326.0-canary.2013.15518408913.0 → 0.326.0-canary.2013.15538813402.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 +40 -9
- package/cjs/components/Carousel/CarouselNew/Carousel.js +46 -31
- package/cjs/components/Carousel/CarouselNew/Carousel.js.map +1 -1
- package/cjs/components/Carousel/CarouselNew/Carousel.styles.js +43 -2
- package/cjs/components/Carousel/CarouselNew/Carousel.styles.js.map +1 -1
- package/cjs/components/Carousel/CarouselNew/Carousel.styles_1fs4wwn.css +5 -0
- package/cjs/components/Carousel/CarouselNew/Carousel.tokens.js +2 -1
- package/cjs/components/Carousel/CarouselNew/Carousel.tokens.js.map +1 -1
- package/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +1 -1
- package/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js.map +1 -1
- package/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.css +5 -5
- package/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js +1 -1
- package/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js.map +1 -1
- package/cjs/components/Carousel/CarouselNew/ui/Dots/{Dots.styles_1i4srxq.css → Dots.styles_ea836d.css} +1 -1
- 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/index.css +10 -9
- package/emotion/cjs/components/Carousel/CarouselNew/Carousel.js +48 -35
- package/emotion/cjs/components/Carousel/CarouselNew/Carousel.styles.js +39 -31
- package/emotion/cjs/components/Carousel/CarouselNew/Carousel.tokens.js +2 -1
- package/emotion/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +1 -1
- package/emotion/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js +9 -9
- 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.stories.tsx +9 -20
- package/emotion/cjs/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +12 -3
- package/emotion/cjs/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +11 -3
- package/emotion/es/components/Carousel/CarouselNew/Carousel.js +47 -37
- package/emotion/es/components/Carousel/CarouselNew/Carousel.styles.js +38 -30
- package/emotion/es/components/Carousel/CarouselNew/Carousel.tokens.js +2 -1
- package/emotion/es/components/Carousel/CarouselNew/hooks/useCarousel.js +1 -1
- package/emotion/es/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js +9 -9
- 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.stories.tsx +9 -20
- package/emotion/es/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +12 -3
- package/emotion/es/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +11 -3
- package/es/components/Carousel/CarouselNew/Carousel.css +40 -9
- package/es/components/Carousel/CarouselNew/Carousel.js +48 -33
- package/es/components/Carousel/CarouselNew/Carousel.js.map +1 -1
- package/es/components/Carousel/CarouselNew/Carousel.styles.js +39 -3
- package/es/components/Carousel/CarouselNew/Carousel.styles.js.map +1 -1
- package/es/components/Carousel/CarouselNew/Carousel.styles_1fs4wwn.css +5 -0
- package/es/components/Carousel/CarouselNew/Carousel.tokens.js +2 -1
- package/es/components/Carousel/CarouselNew/Carousel.tokens.js.map +1 -1
- package/es/components/Carousel/CarouselNew/hooks/useCarousel.js +1 -1
- package/es/components/Carousel/CarouselNew/hooks/useCarousel.js.map +1 -1
- package/es/components/Carousel/CarouselNew/ui/Dots/Dots.css +5 -5
- package/es/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js +1 -1
- package/es/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js.map +1 -1
- package/es/components/Carousel/CarouselNew/ui/Dots/{Dots.styles_1i4srxq.css → Dots.styles_ea836d.css} +1 -1
- 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/index.css +10 -9
- package/package.json +5 -5
- package/styled-components/cjs/components/Carousel/CarouselNew/Carousel.js +48 -35
- package/styled-components/cjs/components/Carousel/CarouselNew/Carousel.styles.js +19 -20
- package/styled-components/cjs/components/Carousel/CarouselNew/Carousel.tokens.js +2 -1
- package/styled-components/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +1 -1
- package/styled-components/cjs/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js +1 -1
- 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.stories.tsx +9 -20
- package/styled-components/cjs/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +12 -3
- package/styled-components/cjs/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +11 -3
- package/styled-components/es/components/Carousel/CarouselNew/Carousel.js +47 -37
- package/styled-components/es/components/Carousel/CarouselNew/Carousel.styles.js +18 -19
- package/styled-components/es/components/Carousel/CarouselNew/Carousel.tokens.js +2 -1
- package/styled-components/es/components/Carousel/CarouselNew/hooks/useCarousel.js +1 -1
- package/styled-components/es/components/Carousel/CarouselNew/ui/Dots/Dots.styles.js +1 -1
- 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.stories.tsx +9 -20
- package/styled-components/es/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +12 -3
- package/styled-components/es/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +11 -3
- package/types/components/Carousel/CarouselNew/Carousel.d.ts +2 -8
- package/types/components/Carousel/CarouselNew/Carousel.d.ts.map +1 -1
- package/types/components/Carousel/CarouselNew/Carousel.styles.d.ts +88 -9
- package/types/components/Carousel/CarouselNew/Carousel.styles.d.ts.map +1 -1
- package/types/components/Carousel/CarouselNew/Carousel.tokens.d.ts +1 -0
- package/types/components/Carousel/CarouselNew/Carousel.tokens.d.ts.map +1 -1
- package/types/components/Carousel/CarouselNew/Carousel.types.d.ts +7 -52
- package/types/components/Carousel/CarouselNew/Carousel.types.d.ts.map +1 -1
- package/types/components/Carousel/CarouselNew/hooks/useCarousel.d.ts +8 -4
- package/types/components/Carousel/CarouselNew/hooks/useCarousel.d.ts.map +1 -1
- package/types/components/Carousel/CarouselNew/ui/Dots/Dots.styles.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/cjs/components/Carousel/CarouselNew/Carousel.styles_1gx7oht.css +0 -4
- package/es/components/Carousel/CarouselNew/Carousel.styles_1gx7oht.css +0 -4
@@ -1,12 +1,43 @@
|
|
1
|
-
.
|
2
|
-
|
3
|
-
.
|
4
|
-
|
1
|
+
.IconRoot_7pl7ig_svvlqhf__32c458a1{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;width:var(--svvlqhf-0);height:var(--svvlqhf-0);-webkit-flex:0 0 var(--svvlqhf-0);-ms-flex:0 0 var(--svvlqhf-0);flex:0 0 var(--svvlqhf-0);}
|
2
|
+
|
3
|
+
.base_1gusher_b1chvyq8__76b641f5{color:var(--plasma-spinner-color);}
|
4
|
+
|
5
|
+
.base_ova69f_bw56nfh__55225c7f{width:var(--plasma-spinner-size);height:var(--plasma-spinner-size);}
|
6
|
+
|
7
|
+
.Spinner_styles_13q7ndk_b1hp2dsz__af962114{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-sizing:border-box;}
|
8
|
+
.Spinner_styles_13q7ndk_s122r4cn__af962114{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:var(--s122r4cn-0);height:var(--s122r4cn-1);-webkit-animation:Spinner_styles_13q7ndk_rotateS122r4cn__af962114 1s linear infinite;animation:Spinner_styles_13q7ndk_rotateS122r4cn__af962114 1s linear infinite;}@-webkit-keyframes Spinner_styles_13q7ndk_rotateS122r4cn__af962114{from{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);}to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes Spinner_styles_13q7ndk_rotateS122r4cn__af962114{from{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);}to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}
|
9
|
+
|
10
|
+
.Button_styles_8cvmld_bzw1898__4694a0fa{min-width:4ch;-webkit-flex-shrink:2;-ms-flex-negative:2;flex-shrink:2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.Button_styles_8cvmld_bzw1898__4694a0fa.Button_styles_8cvmld_buttonContentRelaxed__4694a0fa{text-align:start;-webkit-box-flex:2;-webkit-flex-grow:2;-ms-flex-positive:2;flex-grow:2;}
|
11
|
+
.Button_styles_8cvmld_bdfuqwe__4694a0fa{color:var(--plasma-button-value-color);margin:var(--plasma-button-value-margin);min-width:4ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
|
12
|
+
.Button_styles_8cvmld_l9ypozh__4694a0fa{opacity:var(--l9ypozh-0);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:inherit;-webkit-box-align:inherit;-ms-flex-align:inherit;align-items:inherit;-webkit-box-pack:var(--l9ypozh-1);-webkit-justify-content:var(--l9ypozh-1);-ms-flex-pack:var(--l9ypozh-1);justify-content:var(--l9ypozh-1);height:100%;width:100%;}
|
13
|
+
.Button_styles_8cvmld_l4dfhbg__4694a0fa{position:absolute;}
|
14
|
+
.Button_styles_8cvmld_srdlazt__4694a0fa{--plasma-spinner-size:var(--plasma-button-spinner-size);--plasma-spinner-color:var(--plasma-button-spinner-color);}
|
15
|
+
.Button_styles_8cvmld_s7rggv0__4694a0fa{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-self:var(--plasma-button-left-content-align-self);-ms-flex-item-align:var(--plasma-button-left-content-align);align-self:var(--plasma-button-left-content-align-self);margin:var(--s7rggv0-0);}
|
16
|
+
.Button_styles_8cvmld_s1rjh7ra__4694a0fa{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-self:var(--plasma-button-right-content-align-self);-ms-flex-item-align:var(--plasma-button-right-content-align);align-self:var(--plasma-button-right-content-align-self);margin:var(--s1rjh7ra-0);}
|
17
|
+
.Button_styles_8cvmld_b9ga1dj__4694a0fa{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;box-sizing:border-box;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);--plasma_private-btn-br:var(--plasma_computed-btn-br);border-radius:var(--plasma_private-btn-br);}a.Button_styles_8cvmld_b9ga1dj__4694a0fa{-webkit-text-decoration:none;text-decoration:none;}.Button_styles_8cvmld_b9ga1dj__4694a0fa.Button_styles_8cvmld_b9ga1dj__4694a0fa.Button_styles_8cvmld_buttonSquare__4694a0fa{width:var(--plasma-button-height);padding:0;}
|
18
|
+
|
19
|
+
.base_jfbpjg_b1ty39ru__57cb1989{color:var(--plasma-button-color);background:var(--plasma-button-background-color);}.base_jfbpjg_b1ty39ru__57cb1989.base_jfbpjg_buttonLoading__57cb1989{background:var(--plasma-button-loading-background-color);}.base_jfbpjg_b1ty39ru__57cb1989:hover{color:var(--plasma-button-color-hover,var(--plasma-button-color));background:var(--plasma-button-background-color-hover,var(--plasma-button-background-color));scale:var(--plasma-button-scale-hover);}.base_jfbpjg_b1ty39ru__57cb1989:active{color:var(--plasma-button-color-active,var(--plasma-button-color));background:var(--plasma-button-background-color-active,var(--plasma-button-background-color));scale:var(---plasma-button-scale-active);}
|
20
|
+
|
21
|
+
.base_1alzrso_be0ha5g__cdc67255{height:var(--plasma-button-height);padding:0 var(--plasma-button-padding,calc(var(--plasma-button-height) * 1.618 / 4));font-family:var(--plasma-button-font-family);font-size:var(--plasma-button-font-size);font-style:var(--plasma-button-font-style);font-weight:var(--plasma-button-font-weight);-webkit-letter-spacing:var(--plasma-button-letter-spacing);-moz-letter-spacing:var(--plasma-button-letter-spacing);-ms-letter-spacing:var(--plasma-button-letter-spacing);letter-spacing:var(--plasma-button-letter-spacing);line-height:var(--plasma-button-line-height);--plasma_private-btn-outline-size:var(--plasma-button-outline-size,0.0625rem);}
|
22
|
+
|
23
|
+
.base_do83p2_b169l30m__044ccc85[disabled]{opacity:var(--plasma-button-disabled-opacity);cursor:not-allowed;}.base_do83p2_b169l30m__044ccc85[disabled]:hover,.base_do83p2_b169l30m__044ccc85[disabled]:active{scale:none;color:var(--plasma-button-color);background:var(--plasma-button-background-color);}
|
24
|
+
|
25
|
+
.base_1kq737e_b187cmzt__d829f64a{position:relative;}.base_1kq737e_b187cmzt__d829f64a:focus{outline:none;}.base_1kq737e_b187cmzt__d829f64a::before{content:'';position:absolute;top:-0.125rem;left:-0.125rem;right:-0.125rem;bottom:-0.125rem;z-index:1;display:block;box-sizing:content-box;border:var(--plasma_private-btn-outline-size) solid transparent;border-radius:calc(0.125rem + var(--plasma_private-btn-br));-webkit-transition:box-shadow 0.2s ease-in-out;transition:box-shadow 0.2s ease-in-out;pointer-events:none;}.base_1kq737e_b187cmzt__d829f64a.base_1kq737e_focusVisible__d829f64a:focus::before,.base_1kq737e_b187cmzt__d829f64a[data-focus-visible-added]::before{outline:none;box-shadow:0 0 0 var(--plasma_private-btn-outline-size) var(--plasma-button-focus-color);}
|
26
|
+
|
27
|
+
.base_hy8dc_bdz31nb__bd4ad37e.base_hy8dc_buttonStretchingFixed__bd4ad37e{width:var(--plasma-button-width);}.base_hy8dc_bdz31nb__bd4ad37e.base_hy8dc_buttonStretchingFilled__bd4ad37e{width:100%;}.base_hy8dc_bdz31nb__bd4ad37e.base_hy8dc_buttonStretchingAuto__bd4ad37e{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;}
|
28
|
+
|
29
|
+
.IconButton_styles_403on7_b1ua728l__d34a8ea7{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;box-sizing:border-box;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);--plasma_private-btn-br:var(--plasma_computed-btn-br);border-radius:var(--plasma_private-btn-br);color:var(--plasma-button-color);background:var(--plasma-button-background-color);height:var(--plasma-button-height);width:var(--plasma-button-width);padding:0 var(--plasma-button-padding,calc(var(--plasma-button-height) * 1.618 / 4));font-family:var(--plasma-button-font-family);font-size:var(--plasma-button-font-size);font-style:var(--plasma-button-font-style);font-weight:var(--plasma-button-font-weight);-webkit-letter-spacing:var(--plasma-button-letter-spacing);-moz-letter-spacing:var(--plasma-button-letter-spacing);-ms-letter-spacing:var(--plasma-button-letter-spacing);letter-spacing:var(--plasma-button-letter-spacing);line-height:var(--plasma-button-line-height);--plasma_private-btn-outline-size:var(--plasma-button-outline-size,0.0625rem);position:relative;--plasma-button-padding:0;--plasma-button-color:var(--plasma-icon-button-color);--plasma-button-background-color:var(--plasma-icon-button-background-color);--plasma-button-color-hover:var(--plasma-icon-button-color-hover);--plasma-button-background-color-hover:var(--plasma-icon-button-background-color-hover);--plasma-button-color-active:var(--plasma-icon-button-color-active);--plasma-button-background-color-active:var(--plasma-icon-button-background-color-active);--plasma-button-loading-background-color:var(--plasma-icon-button-loading-background-color);--plasma-button-font-family:var(--plasma-icon-button-font-family);--plasma-button-font-size:var(--plasma-icon-button-font-size);--plasma-button-font-style:var(--plasma-icon-button-font-style);--plasma-button-font-weight:var(--plasma-icon-button-font-weight);--plasma-button-letter-spacing:var(--plasma-icon-button-letter-spacing);--plasma-button-line-height:var(--plasma-icon-button-line-height);--plasma-button-width:var(--plasma-icon-button-width);--plasma-button-height:var(--plasma-icon-button-height);--plasma-button-radius:var(--plasma-icon-button-radius);--plasma-button-disabled-opacity:var(--plasma-icon-button-disabled-opacity);--plasma-button-focus-color:var(--plasma-icon-button-focus-color);--plasma-button-spinner-size:var(--plasma-icon-button-spinner-size);--plasma-button-spinner-color:var(--plasma-icon-button-spinner-color);}a.IconButton_styles_403on7_b1ua728l__d34a8ea7{-webkit-text-decoration:none;text-decoration:none;}.IconButton_styles_403on7_b1ua728l__d34a8ea7.IconButton_styles_403on7_b1ua728l__d34a8ea7.IconButton_styles_403on7_buttonSquare__d34a8ea7{width:var(--plasma-button-height);padding:0;}.IconButton_styles_403on7_b1ua728l__d34a8ea7:hover{color:var(--plasma-button-color-hover,var(--plasma-button-color));background:var(--plasma-button-background-color-hover,var(--plasma-button-background-color));scale:var(--plasma-button-scale-hover);}.IconButton_styles_403on7_b1ua728l__d34a8ea7:active{color:var(--plasma-button-color-active,var(--plasma-button-color));background:var(--plasma-button-background-color-active,var(--plasma-button-background-color));scale:var(---plasma-button-scale-active);}.IconButton_styles_403on7_b1ua728l__d34a8ea7:focus{outline:none;}.IconButton_styles_403on7_b1ua728l__d34a8ea7::before{content:'';position:absolute;top:-0.125rem;left:-0.125rem;right:-0.125rem;bottom:-0.125rem;z-index:1;display:block;box-sizing:content-box;border:var(--plasma_private-btn-outline-size) solid transparent;border-radius:calc(0.125rem + var(--plasma_private-btn-br));-webkit-transition:box-shadow 0.2s ease-in-out;transition:box-shadow 0.2s ease-in-out;pointer-events:none;}.IconButton_styles_403on7_b1ua728l__d34a8ea7.IconButton_styles_403on7_focusVisible__d34a8ea7:focus::before,.IconButton_styles_403on7_b1ua728l__d34a8ea7[data-focus-visible-added]::before{outline:none;box-shadow:0 0 0 var(--plasma_private-btn-outline-size) var(--plasma-button-focus-color);}.IconButton_styles_403on7_b1ua728l__d34a8ea7[disabled]{opacity:var(--plasma-button-disabled-opacity);cursor:not-allowed;}.IconButton_styles_403on7_b1ua728l__d34a8ea7[disabled]:hover,.IconButton_styles_403on7_b1ua728l__d34a8ea7[disabled]:active{scale:none;color:var(--plasma-button-color);background:var(--plasma-button-background-color);}.IconButton_styles_403on7_b1ua728l__d34a8ea7.IconButton_styles_403on7_buttonStretchingFixed__d34a8ea7{width:var(--plasma-button-width);}.IconButton_styles_403on7_b1ua728l__d34a8ea7.IconButton_styles_403on7_buttonStretchingFilled__d34a8ea7{width:100%;}.IconButton_styles_403on7_b1ua728l__d34a8ea7.IconButton_styles_403on7_buttonStretchingAuto__d34a8ea7{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;}
|
30
|
+
|
31
|
+
.Carousel_styles_1fs4wwn_b13uu57o__74b57fdf{position:relative;}
|
32
|
+
.Carousel_styles_1fs4wwn_c1gygdut__74b57fdf{position:relative;margin:0;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);}.Carousel_styles_1fs4wwn_c1gygdut__74b57fdf::-webkit-scrollbar{display:none;}
|
33
|
+
.Carousel_styles_1fs4wwn_c76zbfp__74b57fdf{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;gap:var(--c76zbfp-0);}
|
34
|
+
.Carousel_styles_1fs4wwn_i1cnnvc1__74b57fdf{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;}.Carousel_styles_1fs4wwn_i1cnnvc1__74b57fdf.Carousel_styles_1fs4wwn_carouselRightControlButton__74b57fdf{left:auto;right:0.75rem;}
|
35
|
+
.Carousel_styles_1fs4wwn_c1ff2k98__74b57fdf{position:relative;}
|
5
36
|
|
6
37
|
.Item_1qz9bfn_sfwcury__aad46e58{-webkit-scroll-snap-align:var(--sfwcury-0);-moz-scroll-snap-align:var(--sfwcury-0);-ms-scroll-snap-align:var(--sfwcury-0);scroll-snap-align:var(--sfwcury-0);-webkit-scroll-snap-stop:var(--sfwcury-1);-moz-scroll-snap-stop:var(--sfwcury-1);-ms-scroll-snap-stop:var(--sfwcury-1);scroll-snap-stop:var(--sfwcury-1);}
|
7
38
|
|
8
|
-
.
|
9
|
-
.
|
10
|
-
.
|
11
|
-
.
|
12
|
-
.
|
39
|
+
.Dots_styles_ea836d_wn5xio__3fa33efc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-top:0.75rem;--duration:0.3s;--half-duration:0.15s;}
|
40
|
+
.Dots_styles_ea836d_tnn1xpa__3fa33efc{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition:-webkit-transform 0s ease;-webkit-transition:transform 0s ease;transition:transform 0s ease;}.Dots_styles_ea836d_tnn1xpa__3fa33efc.Dots_styles_ea836d_dotAnimating__3fa33efc{-webkit-transition:-webkit-transform var(--duration) ease;-webkit-transition:transform var(--duration) ease;transition:transform var(--duration) ease;}.Dots_styles_ea836d_tnn1xpa__3fa33efc .Dots_styles_ea836d_dot__3fa33efc{width:0.5rem;height:0.5rem;margin:0 0.25rem;cursor:pointer;background-color:var(--plasma-carousel-pagination-dot-background);border-radius:100%;}.Dots_styles_ea836d_tnn1xpa__3fa33efc .Dots_styles_ea836d_dot__3fa33efc.Dots_styles_ea836d_dotActive__3fa33efc{background-color:var(--plasma-carousel-pagination-dot-active-background);}@-webkit-keyframes Dots_styles_ea836d_fadeOutTnn1xpa__3fa33efc{from{-webkit-transform:scale(0.75);-ms-transform:scale(0.75);transform:scale(0.75);opacity:1;}to{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;}}@keyframes Dots_styles_ea836d_fadeOutTnn1xpa__3fa33efc{from{-webkit-transform:scale(0.75);-ms-transform:scale(0.75);transform:scale(0.75);opacity:1;}to{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;}}.Dots_styles_ea836d_tnn1xpa__3fa33efc .Dots_styles_ea836d_dot__3fa33efc.Dots_styles_ea836d_dotAnimateOut__3fa33efc{-webkit-animation:Dots_styles_ea836d_fadeOutTnn1xpa__3fa33efc var(--half-duration) ease forwards;animation:Dots_styles_ea836d_fadeOutTnn1xpa__3fa33efc var(--half-duration) ease forwards;}@-webkit-keyframes Dots_styles_ea836d_shrinkingTnn1xpa__3fa33efc{from{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);}to{-webkit-transform:scale(0.75);-ms-transform:scale(0.75);transform:scale(0.75);}}@keyframes Dots_styles_ea836d_shrinkingTnn1xpa__3fa33efc{from{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);}to{-webkit-transform:scale(0.75);-ms-transform:scale(0.75);transform:scale(0.75);}}.Dots_styles_ea836d_tnn1xpa__3fa33efc .Dots_styles_ea836d_dot__3fa33efc.Dots_styles_ea836d_dotShrinking__3fa33efc{-webkit-animation:Dots_styles_ea836d_shrinkingTnn1xpa__3fa33efc var(--half-duration) var(--half-duration) ease forwards;animation:Dots_styles_ea836d_shrinkingTnn1xpa__3fa33efc var(--half-duration) var(--half-duration) ease forwards;}
|
41
|
+
.Dots_styles_ea836d_d1k0jsbc__3fa33efc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.Dots_styles_ea836d_d1k0jsbc__3fa33efc.Dots_styles_ea836d_dotAvailableDotsLeft__3fa33efc .Dots_styles_ea836d_dot__3fa33efc:not(.Dots_styles_ea836d_dotTemporaryNatural__3fa33efc):first-child{-webkit-transform:scale(0.75);-ms-transform:scale(0.75);transform:scale(0.75);}.Dots_styles_ea836d_d1k0jsbc__3fa33efc.Dots_styles_ea836d_dotAvailableDotsRight__3fa33efc .Dots_styles_ea836d_dot__3fa33efc:not(.Dots_styles_ea836d_dotTemporaryNatural__3fa33efc):last-child{-webkit-transform:scale(0.75);-ms-transform:scale(0.75);transform:scale(0.75);}.Dots_styles_ea836d_d1k0jsbc__3fa33efc.Dots_styles_ea836d_dotAnimating__3fa33efc .Dots_styles_ea836d_dot__3fa33efc{-webkit-transition:background-color var(--duration) ease;transition:background-color var(--duration) ease;}
|
42
|
+
.Dots_styles_ea836d_laqzsgq__3fa33efc{position:absolute;top:0;right:100%;bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.Dots_styles_ea836d_laqzsgq__3fa33efc .Dots_styles_ea836d_dot__3fa33efc{-webkit-transition:-webkit-transform var(--duration) ease;-webkit-transition:transform var(--duration) ease;transition:transform var(--duration) ease;}@-webkit-keyframes Dots_styles_ea836d_fadeInLaqzsgq__3fa33efc{from{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;}to{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1;}}@keyframes Dots_styles_ea836d_fadeInLaqzsgq__3fa33efc{from{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;}to{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1;}}.Dots_styles_ea836d_laqzsgq__3fa33efc .Dots_styles_ea836d_dot__3fa33efc.Dots_styles_ea836d_dotAnimateIn__3fa33efc{-webkit-animation:Dots_styles_ea836d_fadeInLaqzsgq__3fa33efc var(--half-duration) ease forwards;animation:Dots_styles_ea836d_fadeInLaqzsgq__3fa33efc var(--half-duration) ease forwards;}@-webkit-keyframes Dots_styles_ea836d_fadeInFirstLaqzsgq__3fa33efc{from{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;}to{-webkit-transform:scale(0.75);-ms-transform:scale(0.75);transform:scale(0.75);opacity:1;}}@keyframes Dots_styles_ea836d_fadeInFirstLaqzsgq__3fa33efc{from{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;}to{-webkit-transform:scale(0.75);-ms-transform:scale(0.75);transform:scale(0.75);opacity:1;}}.Dots_styles_ea836d_laqzsgq__3fa33efc .Dots_styles_ea836d_dot__3fa33efc:first-child.Dots_styles_ea836d_dotAnimateIn__3fa33efc{-webkit-animation:Dots_styles_ea836d_fadeInFirstLaqzsgq__3fa33efc var(--half-duration) ease forwards;animation:Dots_styles_ea836d_fadeInFirstLaqzsgq__3fa33efc var(--half-duration) ease forwards;}
|
43
|
+
.Dots_styles_ea836d_rp088ba__3fa33efc{position:absolute;top:0;left:100%;bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.Dots_styles_ea836d_rp088ba__3fa33efc .Dots_styles_ea836d_dot__3fa33efc{-webkit-transition:-webkit-transform var(--duration) ease;-webkit-transition:transform var(--duration) ease;transition:transform var(--duration) ease;}@-webkit-keyframes Dots_styles_ea836d_fadeInRp088ba__3fa33efc{from{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;}to{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1;}}@keyframes Dots_styles_ea836d_fadeInRp088ba__3fa33efc{from{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;}to{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1;}}.Dots_styles_ea836d_rp088ba__3fa33efc .Dots_styles_ea836d_dot__3fa33efc.Dots_styles_ea836d_dotAnimateIn__3fa33efc{-webkit-animation:Dots_styles_ea836d_fadeInRp088ba__3fa33efc var(--half-duration) ease forwards;animation:Dots_styles_ea836d_fadeInRp088ba__3fa33efc var(--half-duration) ease forwards;}@-webkit-keyframes Dots_styles_ea836d_fadeInLastRp088ba__3fa33efc{from{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;}to{-webkit-transform:scale(0.75);-ms-transform:scale(0.75);transform:scale(0.75);opacity:1;}}@keyframes Dots_styles_ea836d_fadeInLastRp088ba__3fa33efc{from{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;}to{-webkit-transform:scale(0.75);-ms-transform:scale(0.75);transform:scale(0.75);opacity:1;}}.Dots_styles_ea836d_rp088ba__3fa33efc .Dots_styles_ea836d_dot__3fa33efc:last-child.Dots_styles_ea836d_dotAnimateIn__3fa33efc{-webkit-animation:Dots_styles_ea836d_fadeInLastRp088ba__3fa33efc var(--half-duration) ease forwards;animation:Dots_styles_ea836d_fadeInLastRp088ba__3fa33efc var(--half-duration) ease forwards;}
|
@@ -4,70 +4,85 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
5
5
|
var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
|
6
6
|
var React = require('react');
|
7
|
+
var Carousel_tokens = require('./Carousel.tokens.js');
|
7
8
|
var base$1 = require('./variations/_size/base.js');
|
8
9
|
var base = require('./variations/_view/base.js');
|
9
10
|
var Carousel_styles = require('./Carousel.styles.js');
|
10
11
|
var useCarousel = require('./hooks/useCarousel.js');
|
11
12
|
var useDragScroll = require('./hooks/useDragScroll.js');
|
13
|
+
var IconDisclosureLeft = require('../../_Icon/Icons/IconDisclosureLeft.js');
|
14
|
+
var IconDisclosureRight = require('../../_Icon/Icons/IconDisclosureRight.js');
|
12
15
|
var Dots = require('./ui/Dots/Dots.js');
|
13
16
|
|
14
17
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
15
18
|
|
16
19
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
17
20
|
|
18
|
-
var
|
21
|
+
var _IconDisclosureLeft, _IconDisclosureRight;
|
19
22
|
|
20
23
|
/**
|
21
24
|
* Компонент для создания списков с прокруткой.
|
22
25
|
*/
|
23
26
|
var carouselNewRoot = function carouselNewRoot(Root) {
|
24
|
-
return /*#__PURE__*/React.forwardRef(function (_ref,
|
25
|
-
// @ts-ignore
|
26
|
-
ref) {
|
27
|
+
return /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
27
28
|
var view = _ref.view,
|
28
29
|
size = _ref.size,
|
29
|
-
outerIndex = _ref.index,
|
30
30
|
scrollAlign = _ref.scrollAlign,
|
31
|
-
detectActive = _ref.detectActive,
|
32
|
-
detectThreshold = _ref.detectThreshold,
|
33
|
-
onIndexChange = _ref.onIndexChange,
|
34
31
|
children = _ref.children,
|
35
32
|
_ref$isDragScrollDisa = _ref.isDragScrollDisabled,
|
36
33
|
isDragScrollDisabled = _ref$isDragScrollDisa === void 0 ? false : _ref$isDragScrollDisa,
|
37
|
-
|
34
|
+
gap = _ref.gap,
|
35
|
+
paginationOptions = _ref.paginationOptions,
|
36
|
+
className = _ref.className,
|
37
|
+
style = _ref.style;
|
38
38
|
var _useState = React.useState(0),
|
39
39
|
_useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
|
40
|
-
|
41
|
-
|
42
|
-
var
|
43
|
-
var
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
}
|
49
|
-
|
50
|
-
// const { scrollRef, trackRef } = useCarousel({
|
40
|
+
index = _useState2[0],
|
41
|
+
setIndex = _useState2[1];
|
42
|
+
var slidesAmount = React.Children.count(children);
|
43
|
+
var handleClickLeft = function handleClickLeft() {
|
44
|
+
setIndex(Math.max(0, index - 1));
|
45
|
+
};
|
46
|
+
var handleClickRight = function handleClickRight() {
|
47
|
+
setIndex(Math.min(slidesAmount - 1, index + 1));
|
48
|
+
};
|
51
49
|
var _useCarousel = useCarousel.useCarousel({
|
52
50
|
index: index,
|
53
51
|
scrollAlign: scrollAlign,
|
54
|
-
|
55
|
-
detectThreshold: detectThreshold,
|
56
|
-
onIndexChange: onIndexChange
|
52
|
+
onIndexChange: setIndex
|
57
53
|
}),
|
58
|
-
scrollRef = _useCarousel.scrollRef
|
59
|
-
|
60
|
-
// const handleRef = useForkRef(scrollRef, ref);
|
61
|
-
|
54
|
+
scrollRef = _useCarousel.scrollRef,
|
55
|
+
trackRef = _useCarousel.trackRef;
|
62
56
|
useDragScroll.useDragScroll(scrollRef, isDragScrollDisabled);
|
63
|
-
var slidesAmount = React.Children.count(children);
|
64
57
|
return /*#__PURE__*/React__default.default.createElement(Root, {
|
58
|
+
className: className,
|
59
|
+
style: style,
|
65
60
|
size: size,
|
66
61
|
view: view,
|
67
|
-
|
68
|
-
},
|
62
|
+
ref: ref
|
63
|
+
}, /*#__PURE__*/React__default.default.createElement(Carousel_styles.ControlsWrapper, null, index !== 0 && /*#__PURE__*/React__default.default.createElement(Carousel_styles.IconButton, {
|
64
|
+
pin: "circle-circle",
|
65
|
+
onClick: handleClickLeft
|
66
|
+
}, _IconDisclosureLeft || (_IconDisclosureLeft = /*#__PURE__*/React__default.default.createElement(IconDisclosureLeft.IconDisclosureLeft, {
|
67
|
+
size: "m",
|
68
|
+
color: "inherit"
|
69
|
+
}))), /*#__PURE__*/React__default.default.createElement(Carousel_styles.CarouselWrapper, {
|
70
|
+
ref: scrollRef
|
71
|
+
}, /*#__PURE__*/React__default.default.createElement(Carousel_styles.CarouselTrack, {
|
72
|
+
ref: trackRef
|
73
|
+
// aria-live={ariaLive}
|
74
|
+
,
|
75
|
+
gap: gap
|
76
|
+
}, children)), index !== slidesAmount - 1 && /*#__PURE__*/React__default.default.createElement(Carousel_styles.IconButton, {
|
77
|
+
className: Carousel_tokens.classes.rightControlButton,
|
78
|
+
pin: "circle-circle",
|
79
|
+
onClick: handleClickRight
|
80
|
+
}, _IconDisclosureRight || (_IconDisclosureRight = /*#__PURE__*/React__default.default.createElement(IconDisclosureRight.IconDisclosureRight, {
|
81
|
+
size: "m",
|
82
|
+
color: "inherit"
|
83
|
+
})))), !(paginationOptions !== null && paginationOptions !== void 0 && paginationOptions.disabled) && /*#__PURE__*/React__default.default.createElement(Dots.Dots, {
|
69
84
|
index: index,
|
70
|
-
onChange:
|
85
|
+
onChange: setIndex,
|
71
86
|
visibleCount: (paginationOptions === null || paginationOptions === void 0 ? void 0 : paginationOptions.visibleDots) || slidesAmount,
|
72
87
|
count: slidesAmount,
|
73
88
|
centered: (paginationOptions === null || paginationOptions === void 0 ? void 0 : paginationOptions.centered) || false
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Carousel.js","sources":["../../../../src/components/Carousel/CarouselNew/Carousel.tsx"],"sourcesContent":["import { RootProps } from 'src/engines';\nimport React, { forwardRef, useState,
|
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 { useDragScroll } from './hooks/useDragScroll';\nimport { Dots } from './ui';\n\n/**\n * Компонент для создания списков с прокруткой.\n */\nexport const carouselNewRoot = (Root: RootProps<HTMLDivElement, CarouselNewProps>) =>\n forwardRef<HTMLDivElement, CarouselNewProps>(\n (\n {\n view,\n size,\n scrollAlign,\n children,\n isDragScrollDisabled = false,\n gap,\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 useDragScroll(scrollRef, isDragScrollDisabled);\n\n return (\n <Root className={className} style={style} size={size} view={view} ref={ref}>\n <ControlsWrapper>\n {index !== 0 && (\n <IconButton pin=\"circle-circle\" onClick={handleClickLeft}>\n <IconDisclosureLeft size=\"m\" color=\"inherit\" />\n </IconButton>\n )}\n\n <CarouselWrapper ref={scrollRef}>\n <CarouselTrack\n ref={trackRef}\n // aria-live={ariaLive}\n gap={gap}\n >\n {children}\n </CarouselTrack>\n </CarouselWrapper>\n\n {index !== slidesAmount - 1 && (\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 || slidesAmount}\n count={slidesAmount}\n centered={paginationOptions?.centered || false}\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":["carouselNewRoot","Root","forwardRef","_ref","ref","view","size","scrollAlign","children","_ref$isDragScrollDisa","isDragScrollDisabled","gap","paginationOptions","className","style","_useState","useState","_useState2","_slicedToArray","index","setIndex","slidesAmount","Children","count","handleClickLeft","Math","max","handleClickRight","min","_useCarousel","useCarousel","onIndexChange","scrollRef","trackRef","useDragScroll","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":";;;;;;;;;;;;;;;;;;;;;;AAaA;AACA;AACA;IACaA,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,IAAiD,EAAA;AAAA,EAAA,oBAC7EC,gBAAU,CACN,UAAAC,IAAA,EAYIC,GAAG,EACF;AAAA,IAAA,IAXGC,IAAI,GAAAF,IAAA,CAAJE,IAAI;MACJC,IAAI,GAAAH,IAAA,CAAJG,IAAI;MACJC,WAAW,GAAAJ,IAAA,CAAXI,WAAW;MACXC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;MAAAC,qBAAA,GAAAN,IAAA,CACRO,oBAAoB;AAApBA,MAAAA,oBAAoB,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,qBAAA;MAC5BE,GAAG,GAAAR,IAAA,CAAHQ,GAAG;MACHC,iBAAiB,GAAAT,IAAA,CAAjBS,iBAAiB;MACjBC,SAAS,GAAAV,IAAA,CAATU,SAAS;MACTC,KAAK,GAAAX,IAAA,CAALW,KAAK,CAAA;AAIT,IAAA,IAAAC,SAAA,GAA0BC,cAAQ,CAAC,CAAC,CAAC;MAAAC,UAAA,GAAAC,uCAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA9BI,MAAAA,KAAK,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,MAAAA,QAAQ,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAEtB,IAAA,IAAMI,YAAY,GAAGC,cAAQ,CAACC,KAAK,CAACf,QAAQ,CAAC,CAAA;AAE7C,IAAA,IAAMgB,eAAe,GAAG,SAAlBA,eAAeA,GAAS;MAC1BJ,QAAQ,CAACK,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEP,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;KACnC,CAAA;AAED,IAAA,IAAMQ,gBAAgB,GAAG,SAAnBA,gBAAgBA,GAAS;AAC3BP,MAAAA,QAAQ,CAACK,IAAI,CAACG,GAAG,CAACP,YAAY,GAAG,CAAC,EAAEF,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;KAClD,CAAA;IAED,IAAAU,YAAA,GAAgCC,uBAAW,CAAC;AACxCX,QAAAA,KAAK,EAALA,KAAK;AACLZ,QAAAA,WAAW,EAAXA,WAAW;AACXwB,QAAAA,aAAa,EAAEX,QAAAA;AACnB,OAAC,CAAC;MAJMY,SAAS,GAAAH,YAAA,CAATG,SAAS;MAAEC,QAAQ,GAAAJ,YAAA,CAARI,QAAQ,CAAA;AAM3BC,IAAAA,2BAAa,CAACF,SAAS,EAAEtB,oBAAoB,CAAC,CAAA;AAE9C,IAAA,oBACIyB,sBAAA,CAAAC,aAAA,CAACnC,IAAI,EAAA;AAACY,MAAAA,SAAS,EAAEA,SAAU;AAACC,MAAAA,KAAK,EAAEA,KAAM;AAACR,MAAAA,IAAI,EAAEA,IAAK;AAACD,MAAAA,IAAI,EAAEA,IAAK;AAACD,MAAAA,GAAG,EAAEA,GAAAA;AAAI,KAAA,eACvE+B,sBAAA,CAAAC,aAAA,CAACC,+BAAe,EACXlB,IAAAA,EAAAA,KAAK,KAAK,CAAC,iBACRgB,sBAAA,CAAAC,aAAA,CAACE,0BAAU,EAAA;AAACC,MAAAA,GAAG,EAAC,eAAe;AAACC,MAAAA,OAAO,EAAEhB,eAAAA;KAAgBiB,EAAAA,mBAAA,KAAAA,mBAAA,gBACrDN,sBAAA,CAAAC,aAAA,CAACM,qCAAkB,EAAA;AAACpC,MAAAA,IAAI,EAAC,GAAG;AAACqC,MAAAA,KAAK,EAAC,SAAA;KAAW,CAAC,CACvC,CACf,eAEDR,sBAAA,CAAAC,aAAA,CAACQ,+BAAe,EAAA;AAACxC,MAAAA,GAAG,EAAE4B,SAAAA;AAAU,KAAA,eAC5BG,sBAAA,CAAAC,aAAA,CAACS,6BAAa,EAAA;AACVzC,MAAAA,GAAG,EAAE6B,QAAAA;AACL;AAAA;AACAtB,MAAAA,GAAG,EAAEA,GAAAA;AAAI,KAAA,EAERH,QACU,CACF,CAAC,EAEjBW,KAAK,KAAKE,YAAY,GAAG,CAAC,iBACvBc,sBAAA,CAAAC,aAAA,CAACE,0BAAU,EAAA;MACPzB,SAAS,EAAEiC,uBAAO,CAACC,kBAAmB;AACtCR,MAAAA,GAAG,EAAC,eAAe;AACnBC,MAAAA,OAAO,EAAEb,gBAAAA;KAAiBqB,EAAAA,oBAAA,KAAAA,oBAAA,gBAE1Bb,sBAAA,CAAAC,aAAA,CAACa,uCAAmB,EAAA;AAAC3C,MAAAA,IAAI,EAAC,GAAG;AAACqC,MAAAA,KAAK,EAAC,SAAA;AAAS,KAAE,CAAC,CACxC,CAEH,CAAC,EAEjB,EAAC/B,iBAAiB,KAAjBA,IAAAA,IAAAA,iBAAiB,KAAjBA,KAAAA,CAAAA,IAAAA,iBAAiB,CAAEsC,QAAQ,CAAA,iBACzBf,sBAAA,CAAAC,aAAA,CAACe,SAAI,EAAA;AACDhC,MAAAA,KAAK,EAAEA,KAAM;AACbiC,MAAAA,QAAQ,EAAEhC,QAAS;MACnBiC,YAAY,EAAE,CAAAzC,iBAAiB,KAAjBA,IAAAA,IAAAA,iBAAiB,uBAAjBA,iBAAiB,CAAE0C,WAAW,KAAIjC,YAAa;AAC7DE,MAAAA,KAAK,EAAEF,YAAa;MACpBkC,QAAQ,EAAE,CAAA3C,iBAAiB,KAAA,IAAA,IAAjBA,iBAAiB,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAiB,CAAE2C,QAAQ,KAAI,KAAA;AAAM,KAClD,CAEH,CAAC,CAAA;AAEf,GACJ,CAAC,CAAA;AAAA,EAAA;AAEE,IAAMC,iBAAiB,GAAG;AAC7BC,EAAAA,IAAI,EAAE,UAAU;AAChBC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,MAAM,EAAE3D,eAAe;AACvB4D,EAAAA,IAAI,EAAJA,oBAAI;AACJC,EAAAA,UAAU,EAAE;AACRxD,IAAAA,IAAI,EAAE;AACFyD,MAAAA,GAAG,EAAEC,SAAAA;KACR;AACDzD,IAAAA,IAAI,EAAE;AACFwD,MAAAA,GAAG,EAAEE,WAAAA;AACT,KAAA;GACH;AACDC,EAAAA,QAAQ,EAAE;AACN5D,IAAAA,IAAI,EAAE,SAAS;AACfC,IAAAA,IAAI,EAAE,GAAA;AACV,GAAA;AACJ;;;;;"}
|
@@ -1,11 +1,52 @@
|
|
1
|
-
require('./Carousel.
|
1
|
+
require('./Carousel.styles_1fs4wwn.css');
|
2
2
|
'use strict';
|
3
3
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
5
5
|
|
6
|
-
require('@linaria/react');
|
6
|
+
var react = require('@linaria/react');
|
7
|
+
var common = require('../../../engines/common.js');
|
8
|
+
var IconButton$1 = require('../../IconButton/IconButton.js');
|
7
9
|
|
10
|
+
var mergedConfig = /*#__PURE__*/common.mergeConfig(IconButton$1.iconButtonConfig);
|
11
|
+
var IconButtonComponent = /*#__PURE__*/common.component(mergedConfig);
|
8
12
|
var base = "b13uu57o";
|
13
|
+
var CarouselWrapper = /*#__PURE__*/react.styled('div')({
|
14
|
+
name: "CarouselWrapper",
|
15
|
+
"class": "c1gygdut",
|
16
|
+
propsAsIs: false
|
17
|
+
});
|
18
|
+
var _exp = function _exp() {
|
19
|
+
return function (_ref) {
|
20
|
+
var gap = _ref.gap;
|
21
|
+
return gap || 0;
|
22
|
+
};
|
23
|
+
};
|
24
|
+
var CarouselTrack = /*#__PURE__*/react.styled('div')({
|
25
|
+
name: "CarouselTrack",
|
26
|
+
"class": "c76zbfp",
|
27
|
+
propsAsIs: false,
|
28
|
+
vars: {
|
29
|
+
"c76zbfp-0": [/*#__PURE__*/_exp()]
|
30
|
+
}
|
31
|
+
});
|
32
|
+
var _exp2 = function _exp2() {
|
33
|
+
return IconButtonComponent;
|
34
|
+
};
|
35
|
+
var IconButton = /*#__PURE__*/react.styled(_exp2())({
|
36
|
+
name: "IconButton",
|
37
|
+
"class": "i1cnnvc1",
|
38
|
+
propsAsIs: true
|
39
|
+
});
|
40
|
+
var ControlsWrapper = /*#__PURE__*/react.styled('div')({
|
41
|
+
name: "ControlsWrapper",
|
42
|
+
"class": "c1ff2k98",
|
43
|
+
propsAsIs: false
|
44
|
+
});
|
9
45
|
|
46
|
+
exports.CarouselTrack = CarouselTrack;
|
47
|
+
exports.CarouselWrapper = CarouselWrapper;
|
48
|
+
exports.ControlsWrapper = ControlsWrapper;
|
49
|
+
exports.IconButton = IconButton;
|
50
|
+
exports.IconButtonComponent = IconButtonComponent;
|
10
51
|
exports.base = base;
|
11
52
|
//# sourceMappingURL=Carousel.styles.js.map
|
@@ -1 +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 { CSSProperties } from 'react';\
|
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 { CSSProperties } from 'react';\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: 0;\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\nexport const CarouselTrack = styled.div<{ gap?: CSSProperties['gap'] }>`\n display: inline-flex;\n flex-direction: row;\n gap: ${({ gap }) => gap || 0};\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","_exp","_ref","gap","CarouselTrack","vars","_exp2","IconButton","ControlsWrapper"],"mappings":";;;;;;;;AAQA,IAAMA,YAAY,gBAAGC,kBAAW,CAACC,6BAAgB,CAAC,CAAA;IACrCC,mBAAmB,gBAAGC,gBAAS,CAACJ,YAAY,EAAC;AAEnD,IAAMK,IAAI,GAEhB,WAAA;AAEM,IAAMC,eAAe,gBAAGC,YAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,iBAAA;AAAAC,EAAAA,OAAAA,EAAA,UAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CAoBpC,EAAA;AAAC,IAAAC,IAAA,GAlCgBA,SAkChBA,IAAAA,GAAA;AAAA,EAAA,OAKS,UAAAC,IAAA,EAAA;AAAA,IAAA,IAAGC,GAAAA,GAAAA,IAAAA,CAAAA,GAAAA,CAAAA;IAAAA,OAAUA,GAAG,IAAI,CAAC,CAAA;AAAA,GAAA,CAAA;AAAA,CAAA,CAAA;AAHzB,IAAMC,aAAa,gBAAGP,YAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,eAAA;AAAAC,EAAAA,OAAAA,EAAA,SAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAAK,EAAAA,IAAA,EAAA;AAAA,IAAA,WAAA,EAAA,cAGxBJ,IAAqB,EAAA,CAAA;AAAA,GAAA;AAAA,CAC/B,EAAA;AAAC,IAAAK,KAAA,GAxCgBA,SAwChBA,KAAAA,GAAA;AAAA,EAAA,OAE+Bb,mBAAmB,CAAA;AAAA,CAAA,CAAA;AAA7C,IAAMc,UAAU,gBAAGV,YAAM,CAAAS,KAAA,EAAA,CAAA,CAAA;AAAAR,EAAAA,IAAA,EAAA,YAAA;AAAAC,EAAAA,OAAAA,EAAA,UAAA;AAAAC,EAAAA,SAAA,EAAA,IAAA;AAAA,CAsB/B,EAAA;AAEM,IAAMQ,eAAe,gBAAGX,YAAM,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:0;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);}.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;gap:var(--c76zbfp-0);}
|
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;}
|
@@ -11,7 +11,8 @@ var classes = {
|
|
11
11
|
temporaryNatural: 'dot-temporary-natural',
|
12
12
|
shrinking: 'dot-shrinking',
|
13
13
|
availableDotsLeft: 'dot-available-dots-left',
|
14
|
-
availableDotsRight: 'dot-available-dots-right'
|
14
|
+
availableDotsRight: 'dot-available-dots-right',
|
15
|
+
rightControlButton: 'carousel-right-control-button'
|
15
16
|
};
|
16
17
|
var tokens = {
|
17
18
|
paginationDotBackground: '--plasma-carousel-pagination-dot-background',
|
@@ -1 +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};\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","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,
|
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;;;;;"}
|
@@ -235,13 +235,13 @@ var THROTTLE_DEFAULT_MS = 100;
|
|
235
235
|
var DEBOUNCE_DEFAULT_MS = 150;
|
236
236
|
var useCarousel = function useCarousel(_ref4) {
|
237
237
|
var index = _ref4.index,
|
238
|
+
onIndexChange = _ref4.onIndexChange,
|
238
239
|
_ref4$detectActive = _ref4.detectActive,
|
239
240
|
detectActive = _ref4$detectActive === void 0 ? false : _ref4$detectActive,
|
240
241
|
_ref4$detectThreshold = _ref4.detectThreshold,
|
241
242
|
detectThreshold = _ref4$detectThreshold === void 0 ? 0.5 : _ref4$detectThreshold,
|
242
243
|
_ref4$scrollAlign = _ref4.scrollAlign,
|
243
244
|
scrollAlign = _ref4$scrollAlign === void 0 ? 'center' : _ref4$scrollAlign,
|
244
|
-
onIndexChange = _ref4.onIndexChange,
|
245
245
|
_ref4$throttleMs = _ref4.throttleMs,
|
246
246
|
throttleMs = _ref4$throttleMs === void 0 ? THROTTLE_DEFAULT_MS : _ref4$throttleMs,
|
247
247
|
_ref4$debounceMs = _ref4.debounceMs,
|
@@ -1 +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, ScrollAxis } from '../Carousel.types';\n\n/**\n * Подсчет смещения из-за паддингов.\n */\nexport const getCalculatedOffset = (scrollEl: Element, trackEl: Element, axis: ScrollAxis) => {\n const paddingProp = axis === 'x' ? 'paddingLeft' : 'paddingTop';\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 axis,\n}: {\n scrollAlign: ScrollAlign;\n position: number;\n carouselSize: number;\n itemSize: number;\n offset: number;\n scrollStart: number;\n axis: ScrollAxis;\n}) => {\n if (scrollAlign === 'start') {\n const inaccuracy = 1;\n const paddingOffset = axis === 'y' ? offset - itemSize / 2 + inaccuracy : 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 axis,\n index,\n offset,\n scrollAlign,\n}: {\n scrollEl: HTMLElement;\n items: HTMLCollectionOf<HTMLElement>;\n axis: ScrollAxis;\n index: number;\n offset: number;\n scrollAlign: ScrollAlign;\n}) => {\n let position = scrollAlign === 'center' ? offset : 0;\n let carouselSize: number;\n let itemSize: number;\n let scrollStart: number;\n\n if (items.item(index) === null) {\n return position;\n }\n\n for (let i = 0; i < index; i++) {\n if (axis === 'x') {\n position += items.item(i)?.offsetWidth ?? 0;\n } else {\n position += items.item(i)?.offsetHeight ?? 0;\n }\n }\n\n if (axis === 'x') {\n carouselSize = scrollEl.offsetWidth;\n itemSize = items.item(index)?.offsetWidth ?? 0;\n scrollStart = scrollEl.scrollLeft;\n } else {\n carouselSize = scrollEl.offsetHeight;\n itemSize = items.item(index)?.offsetHeight ?? 0;\n scrollStart = scrollEl.scrollTop;\n }\n\n return positionModByScrollAlign({\n scrollAlign,\n position,\n carouselSize,\n itemSize,\n offset,\n scrollStart,\n axis,\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 axis,\n animated,\n duration,\n timingFunction,\n}: {\n scrollEl: HTMLElement;\n pos: number;\n axis: ScrollAxis;\n animated?: boolean;\n duration?: number;\n timingFunction?: TimingFunction;\n}) => {\n if (axis === 'x' && 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<\n CarouselProps,\n 'index' | 'scrollAlign' | 'detectActive' | 'detectThreshold' | 'onIndexChange'\n> & {\n throttleMs?: number;\n debounceMs?: number;\n};\n\ntype UseCarouselHookResult = {\n scrollRef: React.MutableRefObject<HTMLElement | null>;\n trackRef: React.MutableRefObject<HTMLElement | null>;\n};\n\nconst THROTTLE_DEFAULT_MS = 100;\nconst DEBOUNCE_DEFAULT_MS = 150;\n\nexport const useCarousel = ({\n index,\n detectActive = false,\n detectThreshold = 0.5,\n scrollAlign = 'center',\n onIndexChange,\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<HTMLElement | null>(null);\n const trackRef = useRef<HTMLElement | null>(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 }, [axis, 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 axis,\n index: i,\n offset: offset.current,\n scrollAlign,\n }),\n axis,\n });\n prevIndex.current = i;\n }\n },\n [axis, scrollAlign],\n );\n\n useEffect(() => {\n if (scrollRef.current && trackRef.current) {\n offset.current = getCalculatedOffset(scrollRef.current, trackRef.current, axis);\n }\n }, [axis]);\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 // requestAnimationFrame(() => {\n // /**\n // * Прокрутка до начального индекса.\n // */\n // toIndex(index);\n //\n // /**\n // * Если на момент запуска карусель уже находится на нужной позиции,\n // * событие скролла не произойдет, не сработает и определение центра,\n // * необходимо вызвать его вручную.\n // */\n // throttledDetectActiveItem();\n // });\n //\n // // eslint-disable-next-line react-hooks/exhaustive-deps\n // }, []);\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","axis","paddingProp","parseInt","getComputedStyle","positionModByScrollAlign","_ref","scrollAlign","position","carouselSize","itemSize","offset","scrollStart","inaccuracy","paddingOffset","getCalculatedPos","_ref2","items","index","item","i","_items$item$offsetWid","_items$item","offsetWidth","_items$item$offsetHei","_items$item2","offsetHeight","_items$item$offsetWid2","_items$item3","scrollLeft","_items$item$offsetHei2","_items$item4","scrollTop","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","_ref4$detectActive","detectActive","_ref4$detectThreshold","detectThreshold","_ref4$scrollAlign","onIndexChange","_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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"}
|
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, ScrollAxis } from '../Carousel.types';\n\n/**\n * Подсчет смещения из-за паддингов.\n */\nexport const getCalculatedOffset = (scrollEl: Element, trackEl: Element, axis: ScrollAxis) => {\n const paddingProp = axis === 'x' ? 'paddingLeft' : 'paddingTop';\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 axis,\n}: {\n scrollAlign: ScrollAlign;\n position: number;\n carouselSize: number;\n itemSize: number;\n offset: number;\n scrollStart: number;\n axis: ScrollAxis;\n}) => {\n if (scrollAlign === 'start') {\n const inaccuracy = 1;\n const paddingOffset = axis === 'y' ? offset - itemSize / 2 + inaccuracy : 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 axis,\n index,\n offset,\n scrollAlign,\n}: {\n scrollEl: HTMLElement;\n items: HTMLCollectionOf<HTMLElement>;\n axis: ScrollAxis;\n index: number;\n offset: number;\n scrollAlign: ScrollAlign;\n}) => {\n let position = scrollAlign === 'center' ? offset : 0;\n let carouselSize: number;\n let itemSize: number;\n let scrollStart: number;\n\n if (items.item(index) === null) {\n return position;\n }\n\n for (let i = 0; i < index; i++) {\n if (axis === 'x') {\n position += items.item(i)?.offsetWidth ?? 0;\n } else {\n position += items.item(i)?.offsetHeight ?? 0;\n }\n }\n\n if (axis === 'x') {\n carouselSize = scrollEl.offsetWidth;\n itemSize = items.item(index)?.offsetWidth ?? 0;\n scrollStart = scrollEl.scrollLeft;\n } else {\n carouselSize = scrollEl.offsetHeight;\n itemSize = items.item(index)?.offsetHeight ?? 0;\n scrollStart = scrollEl.scrollTop;\n }\n\n return positionModByScrollAlign({\n scrollAlign,\n position,\n carouselSize,\n itemSize,\n offset,\n scrollStart,\n axis,\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 axis,\n animated,\n duration,\n timingFunction,\n}: {\n scrollEl: HTMLElement;\n pos: number;\n axis: ScrollAxis;\n animated?: boolean;\n duration?: number;\n timingFunction?: TimingFunction;\n}) => {\n if (axis === 'x' && 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 }, [axis, 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 axis,\n index: i,\n offset: offset.current,\n scrollAlign,\n }),\n axis,\n });\n prevIndex.current = i;\n }\n },\n [axis, scrollAlign],\n );\n\n useEffect(() => {\n if (scrollRef.current && trackRef.current) {\n offset.current = getCalculatedOffset(scrollRef.current, trackRef.current, axis);\n }\n }, [axis]);\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 // requestAnimationFrame(() => {\n // /**\n // * Прокрутка до начального индекса.\n // */\n // toIndex(index);\n //\n // /**\n // * Если на момент запуска карусель уже находится на нужной позиции,\n // * событие скролла не произойдет, не сработает и определение центра,\n // * необходимо вызвать его вручную.\n // */\n // throttledDetectActiveItem();\n // });\n //\n // // eslint-disable-next-line react-hooks/exhaustive-deps\n // }, []);\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","axis","paddingProp","parseInt","getComputedStyle","positionModByScrollAlign","_ref","scrollAlign","position","carouselSize","itemSize","offset","scrollStart","inaccuracy","paddingOffset","getCalculatedPos","_ref2","items","index","item","i","_items$item$offsetWid","_items$item","offsetWidth","_items$item$offsetHei","_items$item2","offsetHeight","_items$item$offsetWid2","_items$item3","scrollLeft","_items$item$offsetHei2","_items$item4","scrollTop","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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"}
|