@salutejs/plasma-new-hope 0.326.0-canary.2013.15537674452.0 → 0.326.0-canary.2013.15555525626.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.
Files changed (99) hide show
  1. package/cjs/components/Carousel/CarouselNew/Carousel.css +5 -7
  2. package/cjs/components/Carousel/CarouselNew/Carousel.js +6 -11
  3. package/cjs/components/Carousel/CarouselNew/Carousel.js.map +1 -1
  4. package/cjs/components/Carousel/CarouselNew/Carousel.styles.js +4 -13
  5. package/cjs/components/Carousel/CarouselNew/Carousel.styles.js.map +1 -1
  6. package/cjs/components/Carousel/CarouselNew/{Carousel.styles_19w43w1.css → Carousel.styles_a2t6qm.css} +2 -2
  7. package/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +17 -61
  8. package/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js.map +1 -1
  9. package/cjs/components/Carousel/CarouselOld/CarouselItem.js +1 -1
  10. package/cjs/components/Carousel/CarouselOld/CarouselItem.js.map +1 -1
  11. package/{es/components/Carousel/CarouselOld/CarouselItem_uvoxfy.css → cjs/components/Carousel/CarouselOld/CarouselItem_1meatnt.css} +1 -1
  12. package/cjs/index.css +6 -8
  13. package/cjs/index.js +1 -1
  14. package/emotion/cjs/components/Carousel/CarouselNew/Carousel.js +6 -11
  15. package/emotion/cjs/components/Carousel/CarouselNew/Carousel.styles.js +17 -12
  16. package/emotion/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +17 -60
  17. package/emotion/cjs/components/Carousel/CarouselNew/ui/index.js +0 -11
  18. package/emotion/cjs/components/Carousel/CarouselOld/CarouselItem.js +1 -1
  19. package/emotion/cjs/components/Carousel/index.js +4 -4
  20. package/emotion/cjs/examples/plasma_b2c/components/Carousel/Carousel.config.js +3 -3
  21. package/emotion/cjs/examples/plasma_b2c/components/Carousel/Carousel.stories.tsx +22 -15
  22. package/emotion/cjs/examples/plasma_web/components/Carousel/Carousel.config.js +14 -2
  23. package/emotion/cjs/examples/plasma_web/components/Carousel/Carousel.js +1 -1
  24. package/emotion/cjs/examples/plasma_web/components/Carousel/Carousel.stories.tsx +92 -32
  25. package/emotion/es/components/Carousel/CarouselNew/Carousel.js +6 -11
  26. package/emotion/es/components/Carousel/CarouselNew/Carousel.styles.js +17 -12
  27. package/emotion/es/components/Carousel/CarouselNew/hooks/useCarousel.js +17 -60
  28. package/emotion/es/components/Carousel/CarouselNew/ui/index.js +0 -1
  29. package/emotion/es/components/Carousel/CarouselOld/CarouselItem.js +1 -1
  30. package/emotion/es/components/Carousel/index.js +1 -1
  31. package/emotion/es/examples/plasma_b2c/components/Carousel/Carousel.config.js +4 -4
  32. package/emotion/es/examples/plasma_b2c/components/Carousel/Carousel.stories.tsx +22 -15
  33. package/emotion/es/examples/plasma_web/components/Carousel/Carousel.config.js +14 -2
  34. package/emotion/es/examples/plasma_web/components/Carousel/Carousel.js +2 -2
  35. package/emotion/es/examples/plasma_web/components/Carousel/Carousel.stories.tsx +92 -32
  36. package/es/components/Carousel/CarouselNew/Carousel.css +5 -7
  37. package/es/components/Carousel/CarouselNew/Carousel.js +6 -11
  38. package/es/components/Carousel/CarouselNew/Carousel.js.map +1 -1
  39. package/es/components/Carousel/CarouselNew/Carousel.styles.js +4 -13
  40. package/es/components/Carousel/CarouselNew/Carousel.styles.js.map +1 -1
  41. package/es/components/Carousel/CarouselNew/{Carousel.styles_19w43w1.css → Carousel.styles_a2t6qm.css} +2 -2
  42. package/es/components/Carousel/CarouselNew/hooks/useCarousel.js +17 -61
  43. package/es/components/Carousel/CarouselNew/hooks/useCarousel.js.map +1 -1
  44. package/es/components/Carousel/CarouselOld/CarouselItem.js +1 -1
  45. package/es/components/Carousel/CarouselOld/CarouselItem.js.map +1 -1
  46. package/{cjs/components/Carousel/CarouselOld/CarouselItem_uvoxfy.css → es/components/Carousel/CarouselOld/CarouselItem_1meatnt.css} +1 -1
  47. package/es/index.css +6 -8
  48. package/es/index.js +1 -1
  49. package/package.json +5 -5
  50. package/styled-components/cjs/components/Carousel/CarouselNew/Carousel.js +6 -11
  51. package/styled-components/cjs/components/Carousel/CarouselNew/Carousel.styles.js +2 -5
  52. package/styled-components/cjs/components/Carousel/CarouselNew/hooks/useCarousel.js +17 -60
  53. package/styled-components/cjs/components/Carousel/CarouselNew/ui/index.js +0 -11
  54. package/styled-components/cjs/components/Carousel/CarouselOld/CarouselItem.js +1 -1
  55. package/styled-components/cjs/components/Carousel/index.js +4 -4
  56. package/styled-components/cjs/examples/plasma_b2c/components/Carousel/Carousel.config.js +2 -2
  57. package/styled-components/cjs/examples/plasma_b2c/components/Carousel/Carousel.stories.tsx +22 -15
  58. package/styled-components/cjs/examples/plasma_web/components/Carousel/Carousel.config.js +14 -2
  59. package/styled-components/cjs/examples/plasma_web/components/Carousel/Carousel.js +1 -1
  60. package/styled-components/cjs/examples/plasma_web/components/Carousel/Carousel.stories.tsx +92 -32
  61. package/styled-components/es/components/Carousel/CarouselNew/Carousel.js +6 -11
  62. package/styled-components/es/components/Carousel/CarouselNew/Carousel.styles.js +2 -5
  63. package/styled-components/es/components/Carousel/CarouselNew/hooks/useCarousel.js +17 -60
  64. package/styled-components/es/components/Carousel/CarouselNew/ui/index.js +0 -1
  65. package/styled-components/es/components/Carousel/CarouselOld/CarouselItem.js +1 -1
  66. package/styled-components/es/components/Carousel/index.js +1 -1
  67. package/styled-components/es/examples/plasma_b2c/components/Carousel/Carousel.config.js +2 -2
  68. package/styled-components/es/examples/plasma_b2c/components/Carousel/Carousel.stories.tsx +22 -15
  69. package/styled-components/es/examples/plasma_web/components/Carousel/Carousel.config.js +14 -2
  70. package/styled-components/es/examples/plasma_web/components/Carousel/Carousel.js +2 -2
  71. package/styled-components/es/examples/plasma_web/components/Carousel/Carousel.stories.tsx +92 -32
  72. package/types/components/Carousel/CarouselNew/Carousel.d.ts.map +1 -1
  73. package/types/components/Carousel/CarouselNew/Carousel.styles.d.ts +1 -4
  74. package/types/components/Carousel/CarouselNew/Carousel.styles.d.ts.map +1 -1
  75. package/types/components/Carousel/CarouselNew/Carousel.types.d.ts +6 -67
  76. package/types/components/Carousel/CarouselNew/Carousel.types.d.ts.map +1 -1
  77. package/types/components/Carousel/CarouselNew/hooks/useCarousel.d.ts +4 -6
  78. package/types/components/Carousel/CarouselNew/hooks/useCarousel.d.ts.map +1 -1
  79. package/types/components/Carousel/CarouselNew/ui/index.d.ts +0 -1
  80. package/types/components/Carousel/CarouselNew/ui/index.d.ts.map +1 -1
  81. package/types/components/Carousel/CarouselOld/CarouselItem.d.ts.map +1 -1
  82. package/types/components/Carousel/index.d.ts +1 -1
  83. package/types/components/Carousel/index.d.ts.map +1 -1
  84. package/cjs/components/Carousel/CarouselNew/hooks/useDragScroll.js +0 -62
  85. package/cjs/components/Carousel/CarouselNew/hooks/useDragScroll.js.map +0 -1
  86. package/emotion/cjs/components/Carousel/CarouselNew/hooks/useDragScroll.js +0 -65
  87. package/emotion/cjs/components/Carousel/CarouselNew/ui/Item/Item.js +0 -38
  88. package/emotion/es/components/Carousel/CarouselNew/hooks/useDragScroll.js +0 -59
  89. package/emotion/es/components/Carousel/CarouselNew/ui/Item/Item.js +0 -31
  90. package/es/components/Carousel/CarouselNew/hooks/useDragScroll.js +0 -58
  91. package/es/components/Carousel/CarouselNew/hooks/useDragScroll.js.map +0 -1
  92. package/styled-components/cjs/components/Carousel/CarouselNew/hooks/useDragScroll.js +0 -65
  93. package/styled-components/cjs/components/Carousel/CarouselNew/ui/Item/Item.js +0 -37
  94. package/styled-components/es/components/Carousel/CarouselNew/hooks/useDragScroll.js +0 -59
  95. package/styled-components/es/components/Carousel/CarouselNew/ui/Item/Item.js +0 -30
  96. package/types/components/Carousel/CarouselNew/hooks/useDragScroll.d.ts +0 -2
  97. package/types/components/Carousel/CarouselNew/hooks/useDragScroll.d.ts.map +0 -1
  98. package/types/components/Carousel/CarouselNew/ui/Item/Item.d.ts +0 -4
  99. package/types/components/Carousel/CarouselNew/ui/Item/Item.d.ts.map +0 -1
@@ -4,8 +4,8 @@ import throttle from 'lodash.throttle';
4
4
  /**
5
5
  * Подсчет смещения из-за паддингов.
6
6
  */
7
- var getCalculatedOffset = function getCalculatedOffset(scrollEl, trackEl, axis) {
8
- var paddingProp = axis === 'x' ? 'paddingLeft' : 'paddingTop';
7
+ var getCalculatedOffset = function getCalculatedOffset(scrollEl, trackEl) {
8
+ var paddingProp = 'paddingLeft';
9
9
  return parseInt(getComputedStyle(scrollEl)[paddingProp], 10) + parseInt(getComputedStyle(trackEl)[paddingProp], 10);
10
10
  };
11
11
  var positionModByScrollAlign = function positionModByScrollAlign(_ref) {
@@ -14,11 +14,9 @@ var positionModByScrollAlign = function positionModByScrollAlign(_ref) {
14
14
  carouselSize = _ref.carouselSize,
15
15
  itemSize = _ref.itemSize,
16
16
  offset = _ref.offset,
17
- scrollStart = _ref.scrollStart,
18
- axis = _ref.axis;
17
+ scrollStart = _ref.scrollStart;
19
18
  if (scrollAlign === 'start') {
20
- var inaccuracy = 1;
21
- var paddingOffset = axis === 'y' ? offset - itemSize / 2 + inaccuracy : 0;
19
+ var paddingOffset = 0;
22
20
  return position + paddingOffset;
23
21
  }
24
22
  if (scrollAlign === 'center') {
@@ -42,47 +40,30 @@ var positionModByScrollAlign = function positionModByScrollAlign(_ref) {
42
40
  * Подсчет скролла до переданного индекса.
43
41
  */
44
42
  var getCalculatedPos = function getCalculatedPos(_ref2) {
43
+ var _items$item$offsetWid2, _items$item2;
45
44
  var scrollEl = _ref2.scrollEl,
46
45
  items = _ref2.items,
47
- axis = _ref2.axis,
48
46
  index = _ref2.index,
49
47
  offset = _ref2.offset,
50
48
  scrollAlign = _ref2.scrollAlign;
51
49
  var position = scrollAlign === 'center' ? offset : 0;
52
- var carouselSize;
53
- var itemSize;
54
- var scrollStart;
55
50
  if (items.item(index) === null) {
56
51
  return position;
57
52
  }
58
53
  for (var i = 0; i < index; i++) {
59
- if (axis === 'x') {
60
- var _items$item$offsetWid, _items$item;
61
- 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;
62
- } else {
63
- var _items$item$offsetHei, _items$item2;
64
- position += (_items$item$offsetHei = (_items$item2 = items.item(i)) === null || _items$item2 === void 0 ? void 0 : _items$item2.offsetHeight) !== null && _items$item$offsetHei !== void 0 ? _items$item$offsetHei : 0;
65
- }
66
- }
67
- if (axis === 'x') {
68
- var _items$item$offsetWid2, _items$item3;
69
- carouselSize = scrollEl.offsetWidth;
70
- itemSize = (_items$item$offsetWid2 = (_items$item3 = items.item(index)) === null || _items$item3 === void 0 ? void 0 : _items$item3.offsetWidth) !== null && _items$item$offsetWid2 !== void 0 ? _items$item$offsetWid2 : 0;
71
- scrollStart = scrollEl.scrollLeft;
72
- } else {
73
- var _items$item$offsetHei2, _items$item4;
74
- carouselSize = scrollEl.offsetHeight;
75
- itemSize = (_items$item$offsetHei2 = (_items$item4 = items.item(index)) === null || _items$item4 === void 0 ? void 0 : _items$item4.offsetHeight) !== null && _items$item$offsetHei2 !== void 0 ? _items$item$offsetHei2 : 0;
76
- scrollStart = scrollEl.scrollTop;
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;
77
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;
78
60
  return positionModByScrollAlign({
79
61
  scrollAlign: scrollAlign,
80
62
  position: position,
81
63
  carouselSize: carouselSize,
82
64
  itemSize: itemSize,
83
65
  offset: offset,
84
- scrollStart: scrollStart,
85
- axis: axis
66
+ scrollStart: scrollStart
86
67
  });
87
68
  };
88
69
  var DEFAULT_DURATION = 300;
@@ -136,11 +117,10 @@ var animatedScrollToX = function animatedScrollToX(elem, pos) {
136
117
  var scrollToPos = function scrollToPos(_ref3) {
137
118
  var scrollEl = _ref3.scrollEl,
138
119
  pos = _ref3.pos,
139
- axis = _ref3.axis,
140
120
  animated = _ref3.animated,
141
121
  duration = _ref3.duration,
142
122
  timingFunction = _ref3.timingFunction;
143
- if (axis === 'x' && Math.abs(pos - scrollEl.scrollLeft) > 1) {
123
+ if (Math.abs(pos - scrollEl.scrollLeft) > 1) {
144
124
  if (animated) {
145
125
  animatedScrollToX(scrollEl, pos, duration, timingFunction);
146
126
  } else {
@@ -242,7 +222,6 @@ var useCarousel = function useCarousel(_ref4) {
242
222
  var offset = useRef(0);
243
223
  var scrollRef = useRef(null);
244
224
  var trackRef = useRef(null);
245
- var axis = 'x';
246
225
 
247
226
  /**
248
227
  * Для того, чтобы не спамить изменениями индекса.
@@ -328,7 +307,7 @@ var useCarousel = function useCarousel(_ref4) {
328
307
  }
329
308
  }
330
309
  }, throttleMs);
331
- }, [axis, debouncedOnIndexChange, detectActive, detectThreshold, scrollAlign, throttleMs]);
310
+ }, [debouncedOnIndexChange, detectActive, detectThreshold, scrollAlign, throttleMs]);
332
311
 
333
312
  /**
334
313
  * Прокрутка до нужной позиции индекса.
@@ -342,21 +321,19 @@ var useCarousel = function useCarousel(_ref4) {
342
321
  pos: getCalculatedPos({
343
322
  scrollEl: scrollEl,
344
323
  items: items,
345
- axis: axis,
346
324
  index: i,
347
325
  offset: offset.current,
348
326
  scrollAlign: scrollAlign
349
- }),
350
- axis: axis
327
+ })
351
328
  });
352
329
  prevIndex.current = i;
353
330
  }
354
- }, [axis, scrollAlign]);
331
+ }, [scrollAlign]);
355
332
  useEffect(function () {
356
333
  if (scrollRef.current && trackRef.current) {
357
- offset.current = getCalculatedOffset(scrollRef.current, trackRef.current, axis);
334
+ offset.current = getCalculatedOffset(scrollRef.current, trackRef.current);
358
335
  }
359
- }, [axis]);
336
+ }, []);
360
337
 
361
338
  /**
362
339
  * Операции на маунте/анмаунте компонента.
@@ -374,27 +351,6 @@ var useCarousel = function useCarousel(_ref4) {
374
351
  };
375
352
  }, [throttledDetectActiveItem]);
376
353
 
377
- /**
378
- * Нужно вызвать только при первом рендере
379
- */
380
- // useEffect(() => {
381
- // requestAnimationFrame(() => {
382
- // /**
383
- // * Прокрутка до начального индекса.
384
- // */
385
- // toIndex(index);
386
- //
387
- // /**
388
- // * Если на момент запуска карусель уже находится на нужной позиции,
389
- // * событие скролла не произойдет, не сработает и определение центра,
390
- // * необходимо вызвать его вручную.
391
- // */
392
- // throttledDetectActiveItem();
393
- // });
394
- //
395
- // // eslint-disable-next-line react-hooks/exhaustive-deps
396
- // }, []);
397
-
398
354
  /**
399
355
  * Прокрутка до нужной позиции индекса, если индекс изменился.
400
356
  */
@@ -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<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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"}
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":";;;AAKA;AACA;AACA;AACO,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIC,QAAiB,EAAEC,OAAgB,EAAK;EACxE,IAAMC,WAAW,GAAG,aAAa,CAAA;EACjC,OAAOC,QAAQ,CAACC,gBAAgB,CAACJ,QAAQ,CAAC,CAACE,WAAW,CAAC,EAAE,EAAE,CAAC,GAAGC,QAAQ,CAACC,gBAAgB,CAACH,OAAO,CAAC,CAACC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAA;AACvH,EAAC;AAED,IAAMG,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAAC,IAAA,EAcxB;AAAA,EAAA,IAbFC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IACXC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,YAAY,GAAAH,IAAA,CAAZG,YAAY;IACZC,QAAQ,GAAAJ,IAAA,CAARI,QAAQ;IACRC,MAAM,GAAAL,IAAA,CAANK,MAAM;IACNC,WAAW,GAAAN,IAAA,CAAXM,WAAW,CAAA;EASX,IAAIL,WAAW,KAAK,OAAO,EAAE;IACzB,IAAMM,aAAa,GAAG,CAAC,CAAA;IACvB,OAAOL,QAAQ,GAAGK,aAAa,CAAA;AACnC,GAAA;EACA,IAAIN,WAAW,KAAK,QAAQ,EAAE;IAC1B,OAAOC,QAAQ,GAAGC,YAAY,GAAG,CAAC,GAAGC,QAAQ,GAAG,CAAC,CAAA;AACrD,GAAA;EACA,IAAIH,WAAW,KAAK,KAAK,EAAE;AACvB,IAAA,OAAOC,QAAQ,GAAGC,YAAY,GAAGC,QAAQ,GAAGC,MAAM,CAAA;AACtD,GAAA;EACA,IAAIJ,WAAW,KAAK,iBAAiB,EAAE;AACnC,IAAA,IAAIC,QAAQ,IAAII,WAAW,GAAGH,YAAY,GAAGC,QAAQ,EAAE;AACnD,MAAA,OAAOF,QAAQ,GAAGC,YAAY,GAAGC,QAAQ,GAAGC,MAAM,CAAA;AACtD,KAAA;IACA,IAAIH,QAAQ,GAAGI,WAAW,EAAE;AACxB,MAAA,OAAOA,WAAW,CAAA;AACtB,KAAA;AACJ,GAAA;AACA,EAAA,OAAOJ,QAAQ,CAAA;AACnB,CAAC,CAAA;;AAED;AACA;AACA;IACaM,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAAC,KAAA,EAYvB;EAAA,IAAAC,sBAAA,EAAAC,YAAA,CAAA;AAAA,EAAA,IAXFjB,QAAQ,GAAAe,KAAA,CAARf,QAAQ;IACRkB,KAAK,GAAAH,KAAA,CAALG,KAAK;IACLC,KAAK,GAAAJ,KAAA,CAALI,KAAK;IACLR,MAAM,GAAAI,KAAA,CAANJ,MAAM;IACNJ,WAAW,GAAAQ,KAAA,CAAXR,WAAW,CAAA;EAQX,IAAIC,QAAQ,GAAGD,WAAW,KAAK,QAAQ,GAAGI,MAAM,GAAG,CAAC,CAAA;EAEpD,IAAIO,KAAK,CAACE,IAAI,CAACD,KAAK,CAAC,KAAK,IAAI,EAAE;AAC5B,IAAA,OAAOX,QAAQ,CAAA;AACnB,GAAA;EAEA,KAAK,IAAIa,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,EAAEE,CAAC,EAAE,EAAE;IAAA,IAAAC,qBAAA,EAAAC,WAAA,CAAA;IAC5Bf,QAAQ,IAAA,CAAAc,qBAAA,GAAAC,CAAAA,WAAA,GAAIL,KAAK,CAACE,IAAI,CAACC,CAAC,CAAC,cAAAE,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAbA,WAAA,CAAeC,WAAW,cAAAF,qBAAA,KAAA,KAAA,CAAA,GAAAA,qBAAA,GAAI,CAAC,CAAA;AAC/C,GAAA;AAEA,EAAA,IAAMb,YAAY,GAAGT,QAAQ,CAACwB,WAAW,CAAA;EACzC,IAAMd,QAAQ,IAAAM,sBAAA,GAAA,CAAAC,YAAA,GAAGC,KAAK,CAACE,IAAI,CAACD,KAAK,CAAC,MAAAF,IAAAA,IAAAA,YAAA,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAA,CAAmBO,WAAW,cAAAR,sBAAA,KAAA,KAAA,CAAA,GAAAA,sBAAA,GAAI,CAAC,CAAA;AACpD,EAAA,IAAMJ,WAAW,GAAGZ,QAAQ,CAACyB,UAAU,CAAA;AAEvC,EAAA,OAAOpB,wBAAwB,CAAC;AAC5BE,IAAAA,WAAW,EAAXA,WAAW;AACXC,IAAAA,QAAQ,EAARA,QAAQ;AACRC,IAAAA,YAAY,EAAZA,YAAY;AACZC,IAAAA,QAAQ,EAARA,QAAQ;AACRC,IAAAA,MAAM,EAANA,MAAM;AACNC,IAAAA,WAAW,EAAXA,WAAAA;AACJ,GAAC,CAAC,CAAA;AACN,EAAC;AAED,IAAMc,gBAAgB,GAAG,GAAG,CAAA;;AAE5B;AACA,IAAMC,GAAG,GAAG;EACRC,MAAM,EAAE,SAAAA,MAAAA,CAACC,CAAS,EAAA;AAAA,IAAA,OAAKA,CAAC,CAAA;AAAA,GAAA;AACxB;EACAC,MAAM,EAAE,SAAAA,MAAAA,CAACD,CAAS,EAAA;AAAA,IAAA,OAAKE,IAAI,CAACC,GAAG,CAACH,CAAC,EAAE,KAAK,CAAC,CAAA;AAAA,GAAA;AACzC;EACAI,OAAO,EAAE,SAAAA,OAAAA,CAACJ,CAAS,EAAA;IAAA,OAAK,CAAC,GAAGE,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGH,CAAC,EAAE,KAAK,CAAC,CAAA;AAAA,GAAA;EAClDK,SAAS,EAAE,SAAAA,SAAAA,CAACL,CAAS,EAAA;AAAA,IAAA,OAAK,GAAG,IAAIE,IAAI,CAACI,GAAG,CAAC,CAACN,CAAC,GAAG,GAAG,IAAIE,IAAI,CAACK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;AAAA,GAAA;AACvE,CAAC,CAAA;AAID;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAC1BC,IAAa,EACbC,GAAW,EAGJ;AAAA,EAAA,IAFPC,QAAgB,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAGf,gBAAgB,CAAA;AAAA,EAAA,IACnCkB,cAA8B,GAAAH,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,WAAW,CAAA;AAE5C,EAAA,IAAII,SAAiB,CAAA;AACrB,EAAA,IAAMC,MAAM,GAAGR,IAAI,CAACb,UAAU,CAAA;EAC9B,IAAMsB,IAAI,GAAGhB,IAAI,CAACiB,GAAG,CAAC,CAAC,EAAEjB,IAAI,CAACkB,GAAG,CAACX,IAAI,CAACY,WAAW,GAAGZ,IAAI,CAACa,WAAW,EAAEZ,GAAG,CAAC,CAAC,CAAA;AAE5E,EAAA,IAAMa,uBAAuB,GAAG,SAA1BA,uBAAuBA,GAAe;AACxCP,IAAAA,SAAS,GAAGA,SAAS,IAAIQ,IAAI,CAACC,GAAG,EAAE,CAAA;IACnC,IAAMC,OAAO,GAAGxB,IAAI,CAACkB,GAAG,CAAC,CAAC,EAAElB,IAAI,CAACiB,GAAG,CAAC,CAAC,EAAEK,IAAI,CAACC,GAAG,EAAE,GAAGT,SAAS,CAAC,GAAGL,QAAQ,CAAC,CAAA;IAC3E,IAAMgB,SAAS,GAAG7B,GAAG,CAACiB,cAAc,CAAC,CAACW,OAAO,CAAC,CAAA;IAC9C,IAAME,IAAI,GAAGX,MAAM,GAAG,CAACC,IAAI,GAAGD,MAAM,IAAIU,SAAS,CAAA;IACjDlB,IAAI,CAACoB,QAAQ,CAAC;AAAED,MAAAA,IAAI,EAAJA,IAAAA;AAAK,KAAC,CAAC,CAAA;IACvB,IAAIF,OAAO,KAAK,CAAC,EAAEI,MAAM,CAACC,qBAAqB,CAACR,uBAAuB,CAAC,CAAA;GAC3E,CAAA;AAEDO,EAAAA,MAAM,CAACC,qBAAqB,CAACR,uBAAuB,CAAC,CAAA;AACzD,EAAC;;AAED;AACA;AACA;IACaS,WAAW,GAAG,SAAdA,WAAWA,CAAAC,KAAA,EAYlB;AAAA,EAAA,IAXF9D,QAAQ,GAAA8D,KAAA,CAAR9D,QAAQ;IACRuC,GAAG,GAAAuB,KAAA,CAAHvB,GAAG;IACHwB,QAAQ,GAAAD,KAAA,CAARC,QAAQ;IACRvB,QAAQ,GAAAsB,KAAA,CAARtB,QAAQ;IACRI,cAAc,GAAAkB,KAAA,CAAdlB,cAAc,CAAA;AAQd,EAAA,IAAIb,IAAI,CAACiC,GAAG,CAACzB,GAAG,GAAGvC,QAAQ,CAACyB,UAAU,CAAC,GAAG,CAAC,EAAE;AACzC,IAAA,IAAIsC,QAAQ,EAAE;MACV1B,iBAAiB,CAACrC,QAAQ,EAAEuC,GAAG,EAAEC,QAAQ,EAAEI,cAAc,CAAC,CAAA;AAC9D,KAAC,MAAM;MACH5C,QAAQ,CAAC0D,QAAQ,CAAC;AAAED,QAAAA,IAAI,EAAElB,GAAAA;AAAI,OAAC,CAAC,CAAA;AACpC,KAAA;AACJ,GAAA;AACJ,EAAC;AAED,IAAM0B,KAAK,GAAG,SAARA,KAAKA,CAAIC,CAAS,EAAA;EAAA,OAAKnC,IAAI,CAACkC,KAAK,CAACC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;AAAA,CAAA,CAAA;;AAEtD;AACA;AACA;AACA;IACaC,WAAW,GAAG,SAAdA,WAAWA,CACpBC,SAAiB,EACjBC,OAAe,EACf3D,QAAgB,EAChBE,WAAmB,EACnB0D,UAAkB,EAClB/D,WAAwB,EAGvB;AAAA,EAAA,IAFDgE,SAAS,GAAA9B,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC,CAAA;AAAA,EAAA,IACb9B,MAAM,GAAA8B,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC,CAAA;AAEV;AACJ;AACA;AACA;AACI,EAAA,IAAM+B,SAAS,GAAG5D,WAAW,GAAG0D,UAAU,CAAA;AAC1C,EAAA,IAAMG,YAAY,GAAG7D,WAAW,GAAG0D,UAAU,GAAG,CAAC,CAAA;AACjD,EAAA,IAAMI,UAAU,GAAGL,OAAO,GAAG3D,QAAQ,GAAG,CAAC,CAAA;EAEzC,IAAIH,WAAW,KAAK,QAAQ,EAAE;IAC1B,OAAO0D,KAAK,CAAC,CAACS,UAAU,GAAGD,YAAY,IAAI/D,QAAQ,CAAC,CAAA;AACxD,GAAA;EACA,IAAIH,WAAW,KAAK,OAAO,EAAE;IACzB,OAAO0D,KAAK,CAAC,CAACI,OAAO,GAAG3D,QAAQ,GAAGE,WAAW,IAAIF,QAAQ,CAAC,CAAA;AAC/D,GAAA;EACA,IAAIH,WAAW,KAAK,KAAK,EAAE;IACvB,OAAO0D,KAAK,CAAC,CAACI,OAAO,IAAIC,UAAU,GAAG1D,WAAW,CAAC,IAAIF,QAAQ,CAAC,CAAA;AACnE,GAAA;EACA,IAAIH,WAAW,KAAK,iBAAiB,EAAE;AACnC,IAAA,IAAMoE,SAAS,GAAGhE,MAAM,GAAGD,QAAQ,GAAG6D,SAAS,CAAA;AAC/C,IAAA,IAAMK,OAAO,GAAGD,SAAS,GAAGjE,QAAQ,CAAA;IACpC,IAAMmE,WAAW,GAAGD,OAAO,GAAGhE,WAAW,IAAI+D,SAAS,GAAGH,SAAS,CAAA;IAElE,IAAI,CAACK,WAAW,EAAE;MACd,IAAIN,SAAS,GAAGH,SAAS,EAAE;QACvB,OAAOH,KAAK,CAAC,CAACI,OAAO,IAAIC,UAAU,GAAG1D,WAAW,CAAC,IAAIF,QAAQ,CAAC,CAAA;AACnE,OAAA;MACA,OAAOuD,KAAK,CAAC,CAACI,OAAO,GAAG3D,QAAQ,GAAGE,WAAW,IAAIF,QAAQ,CAAC,CAAA;AAC/D,KAAA;AACJ,GAAA;AACA,EAAA,OAAO,IAAI,CAAA;AACf,EAAC;AAEM,SAASoE,gBAAgBA,CAACC,KAAkB,EAAiC;EAChF,OAAOA,KAAK,CAACC,QAAQ,CAAA;AACzB,CAAA;AAEO,SAASC,oBAAoBA,CAACC,IAA2B,EAAEC,KAAa,EAAEC,OAAiB,EAAE;AAChG,EAAA,IAAMC,UAAU,GAAGC,MAAM,EAAU,CAAA;;AAEnC;AACJ;AACA;EACI,SAASC,UAAUA,GAAG;IAClB,IAAIF,UAAU,CAACG,OAAO,EAAE;AACpBC,MAAAA,YAAY,CAACJ,UAAU,CAACG,OAAO,CAAC,CAAA;MAChCH,UAAU,CAACG,OAAO,GAAG7C,SAAS,CAAA;AAClC,KAAA;AACJ,GAAA;;AAEA;AACJ;AACA;AACA;AACI+C,EAAAA,SAAS,CAAC,YAAA;AAAA,IAAA,OAAON,OAAO,GAAGG,UAAU,GAAG5C,SAAS,CAAA;AAAA,GAAC,EAAE,CAACyC,OAAO,CAAC,CAAC,CAAA;AAE9D,EAAA,OAAO,YAAoB;AAAA,IAAA,KAAA,IAAAO,IAAA,GAAAlD,SAAA,CAAAC,MAAA,EAAhBkD,IAAI,GAAAC,IAAAA,KAAA,CAAAF,IAAA,GAAAG,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA,EAAA,EAAA;AAAJF,MAAAA,IAAI,CAAAE,IAAA,CAAArD,GAAAA,SAAA,CAAAqD,IAAA,CAAA,CAAA;AAAA,KAAA;AACXP,IAAAA,UAAU,EAAE,CAAA;AACZF,IAAAA,UAAU,CAACG,OAAO,GAAGO,UAAU,CAAC,YAAA;AAAA,MAAA,OAAMb,IAAI,CAAAc,KAAA,CAAA,KAAA,CAAA,EAAIJ,IAAI,CAAC,CAAA;AAAA,KAAA,EAAET,KAAK,CAAC,CAAA;GAC9D,CAAA;AACL,CAAA;AAgBA,IAAMc,mBAAmB,GAAG,GAAG,CAAA;AAC/B,IAAMC,mBAAmB,GAAG,GAAG,CAAA;IAElBC,WAAW,GAAG,SAAdA,WAAWA,CAAAC,KAAA,EAQyB;AAAA,EAAA,IAP7CjF,KAAK,GAAAiF,KAAA,CAALjF,KAAK;IACLkF,aAAa,GAAAD,KAAA,CAAbC,aAAa;IAAAC,kBAAA,GAAAF,KAAA,CACbG,YAAY;AAAZA,IAAAA,YAAY,GAAAD,kBAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,kBAAA;IAAAE,qBAAA,GAAAJ,KAAA,CACpBK,eAAe;AAAfA,IAAAA,eAAe,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,GAAG,GAAAA,qBAAA;IAAAE,iBAAA,GAAAN,KAAA,CACrB7F,WAAW;AAAXA,IAAAA,WAAW,GAAAmG,iBAAA,KAAG,KAAA,CAAA,GAAA,QAAQ,GAAAA,iBAAA;IAAAC,gBAAA,GAAAP,KAAA,CACtBQ,UAAU;AAAVA,IAAAA,UAAU,GAAAD,gBAAA,KAAGV,KAAAA,CAAAA,GAAAA,mBAAmB,GAAAU,gBAAA;IAAAE,gBAAA,GAAAT,KAAA,CAChCU,UAAU;AAAVA,IAAAA,UAAU,GAAAD,gBAAA,KAAGX,KAAAA,CAAAA,GAAAA,mBAAmB,GAAAW,gBAAA,CAAA;AAEhC,EAAA,IAAMtC,SAAS,GAAGe,MAAM,CAAgB,IAAI,CAAC,CAAA;AAC7C,EAAA,IAAM3E,MAAM,GAAG2E,MAAM,CAAC,CAAC,CAAC,CAAA;AACxB,EAAA,IAAMyB,SAAS,GAAGzB,MAAM,CAAiB,IAAI,CAAC,CAAA;AAC9C,EAAA,IAAM0B,QAAQ,GAAG1B,MAAM,CAAiB,IAAI,CAAC,CAAA;;AAG7C;AACJ;AACA;AACA;AACA;AACI,EAAA,IAAM2B,sBAAsB,GAAGhC,oBAAoB,CAAC,UAAC5D,CAAS,EAAA;AAAA,IAAA,OAAKgF,aAAa,KAAbA,IAAAA,IAAAA,aAAa,uBAAbA,aAAa,CAAGhF,CAAC,CAAC,CAAA;AAAA,GAAA,EAAEyF,UAAU,CAAC,CAAA;;AAElG;AACJ;AACA;AACA;AACA;AACI,EAAA,IAAMI,yBAAyB,GAAGC,OAAO,CAAC,YAAM;IAC5C,OAAOC,QAAQ,CAAC,YAAM;AAClB,MAAA,IAAI,CAACb,YAAY,IAAIQ,SAAS,CAACvB,OAAO,KAAK,IAAI,IAAIwB,QAAQ,CAACxB,OAAO,KAAK,IAAI,EAAE;AAC1E,QAAA,OAAA;AACJ,OAAA;;AAEA;AACZ;AACA;AACY,MAAA,IAAI6B,QAAQ,GAAG1G,MAAM,CAAC6E,OAAO,CAAA;;AAE7B;AACZ;AACA;AACA;AACY,MAAA,IAAMhC,SAAS,GAAGuD,SAAS,CAACvB,OAAO,CAAgB,YAAY,CAAc,CAAC,CAAA;AAC9E,MAAA,IAAMlB,UAAU,GAAGyC,SAAS,CAACvB,OAAO,CAAgB,aAAa,CAAiB,CAAC,CAAA;;AAEnF;AACZ;AACA;AACA;AACY,MAAA,IAAM8B,UAAU,GAAG9D,SAAS,GAAGc,UAAU,CAAA;AAEzC,MAAA,IAAMpD,KAAK,GAAG4D,gBAAgB,CAACkC,QAAQ,CAACxB,OAAO,CAAC,CAAA;;AAEhD;AACZ;AACA;AACA;AACY,MAAA,KAAK,IAAIpB,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAGlD,KAAK,CAACwB,MAAM,EAAE0B,SAAS,EAAE,EAAE;AAAA,QAAA,IAAAmD,kBAAA,CAAA;AAC3D,QAAA,IAAMnG,IAAI,GAAGF,KAAK,CAACE,IAAI,CAACgD,SAAS,CAAC,CAAA;QAElC,IAAIhD,IAAI,KAAK,IAAI,EAAE;AACf;AACA,UAAA,SAAA;AACJ,SAAA;;AAEA;AAChB;AACA;QACgB,IAAMV,QAAQ,GAAGU,IAAI,CAAgB,aAAa,CAAiB,CAAC,CAAA;;AAEpE;AAChB;AACA;AACA;AACA;QACgB,IAAIiG,QAAQ,GAAGC,UAAU,EAAE;AACvB;AACA,UAAA,SAAA;AACJ,SAAA;AAEAD,QAAAA,QAAQ,IAAI3G,QAAQ,CAAA;;AAEpB;AAChB;AACA;AACA;AACA;QACgB,IAAI8C,SAAS,GAAG6D,QAAQ,EAAE;AACtB;AACA,UAAA,SAAA;AACJ,SAAA;AAEA,QAAA,IAAMG,QAAQ,GAAGrD,WAAW,CACxBC,SAAS,EACTiD,QAAQ,EACR3G,QAAQ,EACR8C,SAAS,EACTc,UAAU,EACV/D,WAAW,EAAAgH,CAAAA,kBAAA,GACXhD,SAAS,CAACiB,OAAO,cAAA+B,kBAAA,KAAA,KAAA,CAAA,GAAAA,kBAAA,GAAI,CAAC,EACtB5G,MAAM,CAAC6E,OACX,CAAC,CAAA;QAED,IAAIgC,QAAQ,KAAK,IAAI,EAAE;UACnB,IAAIf,eAAe,IAAI1E,IAAI,CAACiC,GAAG,CAACwD,QAAQ,CAAC,IAAIf,eAAe,EAAE;AAC1DQ,YAAAA,sBAAsB,aAAtBA,sBAAsB,KAAA,KAAA,CAAA,IAAtBA,sBAAsB,CAAG7C,SAAS,CAAC,CAAA;AACvC,WAAA;AACJ,SAAA;AACJ,OAAA;KACH,EAAEwC,UAAU,CAAC,CAAA;AAClB,GAAC,EAAE,CAACK,sBAAsB,EAAEV,YAAY,EAAEE,eAAe,EAAElG,WAAW,EAAEqG,UAAU,CAAC,CAAC,CAAA;;AAEpF;AACJ;AACA;AACI,EAAA,IAAMa,OAAO,GAAGC,WAAW,CACvB,UAACrG,CAAS,EAAK;AACX,IAAA,IAAMrB,QAAQ,GAAG+G,SAAS,CAACvB,OAAO,CAAA;AAClC,IAAA,IAAMtE,KAAK,GAAG8F,QAAQ,CAACxB,OAAO,GAAGV,gBAAgB,CAACkC,QAAQ,CAACxB,OAAO,CAAC,GAAG,IAAI,CAAA;AAE1E,IAAA,IAAIxF,QAAQ,IAAIkB,KAAK,IAAIA,KAAK,CAACwB,MAAM,GAAG,CAAC,IAAIrB,CAAC,IAAI,CAAC,EAAE;AACjDwC,MAAAA,WAAW,CAAC;AACR7D,QAAAA,QAAQ,EAARA,QAAQ;QACRuC,GAAG,EAAEzB,gBAAgB,CAAC;AAClBd,UAAAA,QAAQ,EAARA,QAAQ;AACRkB,UAAAA,KAAK,EAALA,KAAK;AACLC,UAAAA,KAAK,EAAEE,CAAC;UACRV,MAAM,EAAEA,MAAM,CAAC6E,OAAO;AACtBjF,UAAAA,WAAW,EAAXA,WAAAA;SACH,CAAA;AACL,OAAC,CAAC,CAAA;MACFgE,SAAS,CAACiB,OAAO,GAAGnE,CAAC,CAAA;AACzB,KAAA;AACJ,GAAC,EACD,CAACd,WAAW,CAChB,CAAC,CAAA;AAEDmF,EAAAA,SAAS,CAAC,YAAM;AACZ,IAAA,IAAIqB,SAAS,CAACvB,OAAO,IAAIwB,QAAQ,CAACxB,OAAO,EAAE;AACvC7E,MAAAA,MAAM,CAAC6E,OAAO,GAAGzF,mBAAmB,CAACgH,SAAS,CAACvB,OAAO,EAAEwB,QAAQ,CAACxB,OAAO,CAAC,CAAA;AAC7E,KAAA;GACH,EAAE,EAAE,CAAC,CAAA;;AAEN;AACJ;AACA;AACA;AACIE,EAAAA,SAAS,CAAC,YAAM;AACZ,IAAA,IAAMiC,eAAe,GAAGZ,SAAS,CAACvB,OAAO,CAAA;AAEzC,IAAA,IAAImC,eAAe,EAAE;AACjBA,MAAAA,eAAe,CAACC,gBAAgB,CAAC,QAAQ,EAAEV,yBAAyB,CAAC,CAAA;AACzE,KAAA;AAEA,IAAA,OAAO,YAAM;AACT,MAAA,IAAIS,eAAe,EAAE;AACjBA,QAAAA,eAAe,CAACE,mBAAmB,CAAC,QAAQ,EAAEX,yBAAyB,CAAC,CAAA;AAC5E,OAAA;KACH,CAAA;AACL,GAAC,EAAE,CAACA,yBAAyB,CAAC,CAAC,CAAA;;AAE/B;AACJ;AACA;AACIxB,EAAAA,SAAS,CAAC,YAAM;AACZ,IAAA,IAAIvE,KAAK,KAAKoD,SAAS,CAACiB,OAAO,EAAE;MAC7BiC,OAAO,CAACtG,KAAK,CAAC,CAAA;AAClB,KAAA;AACJ,GAAC,EAAE,CAACA,KAAK,EAAEsG,OAAO,CAAC,CAAC,CAAA;EAEpB,OAAO;AACHV,IAAAA,SAAS,EAATA,SAAS;AACTC,IAAAA,QAAQ,EAARA,QAAAA;GACH,CAAA;AACL;;;;"}
@@ -1,4 +1,4 @@
1
- import './CarouselItem_uvoxfy.css';
1
+ import './CarouselItem_1meatnt.css';
2
2
  import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../../_virtual/_rollupPluginBabelHelpers.js';
3
3
  import React from 'react';
4
4
  import { styled } from '@linaria/react';
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselItem.js","sources":["../../../../src/components/Carousel/CarouselOld/CarouselItem.tsx"],"sourcesContent":["import React from 'react';\nimport { styled } from '@linaria/react';\n\nimport { SnapAlign, SnapStop, CarouselItemProps } from './Carousel.types';\n\nconst StyledItem = styled.div<{ scrollSnapAlign: SnapAlign; scrollSnapStop: SnapStop }>`\n scroll-snap-align: ${({ scrollSnapAlign }) => scrollSnapAlign || 'none'};\n scroll-snap-stop: ${({ scrollSnapAlign, scrollSnapStop }) => (scrollSnapAlign ? scrollSnapStop : 'normal')};\n`;\n\nexport const CarouselItem: React.FC<CarouselItemProps> = ({\n scrollSnapAlign = 'center',\n scrollSnapStop = 'always',\n children,\n ...rest\n}) => {\n return (\n <StyledItem\n scrollSnapAlign={scrollSnapAlign}\n scrollSnapStop={scrollSnapStop}\n role=\"group\"\n aria-roledescription=\"slide\"\n {...rest}\n >\n {children}\n </StyledItem>\n );\n};\n"],"names":["_exp","_ref","scrollSnapAlign","_exp2","_ref2","scrollSnapStop","StyledItem","styled","name","class","propsAsIs","vars","CarouselItem","_ref3","_ref3$scrollSnapAlign","_ref3$scrollSnapStop","children","rest","React","createElement","_extends","role"],"mappings":";;;;;AAG0E,IAAAA,IAAA,GAFxDA,SAEwDA,IAAAA,GAAA;AAAA,EAAA,OAGjD,UAAAC,IAAA,EAAA;AAAA,IAAA,IAAGC,eAAAA,GAAAA,IAAAA,CAAAA,eAAAA,CAAAA;IAAAA,OAAsBA,eAAe,IAAI,MAAM,CAAA;AAAA,GAAA,CAAA;AAAA,CAAA,CAAA;AAAA,IAAAC,KAAA,GALzDA,SAKyDA,KAAAA,GAAA;AAAA,EAAA,OACnD,UAAAC,KAAA,EAAA;AAAA,IAAA,IAAGF,eAAe,GAAAE,KAAA,CAAfF,eAAe;MAAEG,cAAAA,GAAAA,KAAAA,CAAAA,cAAAA,CAAAA;AAAAA,IAAAA,OAAsBH,eAAe,GAAGG,cAAc,GAAG,QAAS,CAAA;AAAA,GAAA,CAAA;AAAA,CAAA,CAAA;AAF9G,IAAMC,UAAU,gBAAGC,MAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,YAAA;AAAAC,EAAAA,OAAAA,EAAA,SAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAAC,EAAAA,IAAA,EAAA;AAAA,IAAA,WAAA,EAAA,cACAX,IAAkD,EAAA,CAAA;AAAA,IAAA,WAAA,EAAA,cACnDG,KAAsF,EAAA,CAAA;AAAA,GAAA;AAAA,CAC7G,CAAA,CAAA;IAEYS,YAAyC,GAAGA,SAA5CA,YAAyCA,CAAAC,KAAA,EAKhD;AAAA,EAAA,IAAAC,qBAAA,GAAAD,KAAA,CAJFX,eAAe;AAAfA,IAAAA,eAAe,GAAAY,qBAAA,KAAG,KAAA,CAAA,GAAA,QAAQ,GAAAA,qBAAA;IAAAC,oBAAA,GAAAF,KAAA,CAC1BR,cAAc;AAAdA,IAAAA,cAAc,GAAAU,oBAAA,KAAG,KAAA,CAAA,GAAA,QAAQ,GAAAA,oBAAA;IACzBC,QAAQ,GAAAH,KAAA,CAARG,QAAQ;AACLC,IAAAA,IAAAA,GAAAA,wBAAAA,CAAAA,KAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAEH,EAAA,oBACIC,KAAA,CAAAC,aAAA,CAACb,UAAU,EAAAc,QAAA,CAAA;AACPlB,IAAAA,eAAe,EAAEA,eAAgB;AACjCG,IAAAA,cAAc,EAAEA,cAAe;AAC/BgB,IAAAA,IAAI,EAAC,OAAO;IACZ,sBAAqB,EAAA,OAAA;GACjBJ,EAAAA,IAAI,CAEPD,EAAAA,QACO,CAAC,CAAA;AAErB;;;;"}
1
+ {"version":3,"file":"CarouselItem.js","sources":["../../../../src/components/Carousel/CarouselOld/CarouselItem.tsx"],"sourcesContent":["import React from 'react';\nimport { styled } from '@linaria/react';\n\nimport { SnapAlign, SnapStop, CarouselItemProps } from './Carousel.types';\n\nconst StyledItem = styled.div<{ scrollSnapAlign: SnapAlign; scrollSnapStop: SnapStop }>`\n scroll-snap-align: ${({ scrollSnapAlign }) => scrollSnapAlign || 'none'};\n scroll-snap-stop: ${({ scrollSnapAlign, scrollSnapStop }) => (scrollSnapAlign ? scrollSnapStop : 'normal')};\n padding: 0 var(--temporary-carousel-padding);\n`;\n\nexport const CarouselItem: React.FC<CarouselItemProps> = ({\n scrollSnapAlign = 'center',\n scrollSnapStop = 'always',\n children,\n ...rest\n}) => {\n return (\n <StyledItem\n scrollSnapAlign={scrollSnapAlign}\n scrollSnapStop={scrollSnapStop}\n role=\"group\"\n aria-roledescription=\"slide\"\n {...rest}\n >\n {children}\n </StyledItem>\n );\n};\n"],"names":["_exp","_ref","scrollSnapAlign","_exp2","_ref2","scrollSnapStop","StyledItem","styled","name","class","propsAsIs","vars","CarouselItem","_ref3","_ref3$scrollSnapAlign","_ref3$scrollSnapStop","children","rest","React","createElement","_extends","role"],"mappings":";;;;;AAG0E,IAAAA,IAAA,GAFxDA,SAEwDA,IAAAA,GAAA;AAAA,EAAA,OAGjD,UAAAC,IAAA,EAAA;AAAA,IAAA,IAAGC,eAAAA,GAAAA,IAAAA,CAAAA,eAAAA,CAAAA;IAAAA,OAAsBA,eAAe,IAAI,MAAM,CAAA;AAAA,GAAA,CAAA;AAAA,CAAA,CAAA;AAAA,IAAAC,KAAA,GALzDA,SAKyDA,KAAAA,GAAA;AAAA,EAAA,OACnD,UAAAC,KAAA,EAAA;AAAA,IAAA,IAAGF,eAAe,GAAAE,KAAA,CAAfF,eAAe;MAAEG,cAAAA,GAAAA,KAAAA,CAAAA,cAAAA,CAAAA;AAAAA,IAAAA,OAAsBH,eAAe,GAAGG,cAAc,GAAG,QAAS,CAAA;AAAA,GAAA,CAAA;AAAA,CAAA,CAAA;AAF9G,IAAMC,UAAU,gBAAGC,MAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,YAAA;AAAAC,EAAAA,OAAAA,EAAA,SAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAAC,EAAAA,IAAA,EAAA;AAAA,IAAA,WAAA,EAAA,cACAX,IAAkD,EAAA,CAAA;AAAA,IAAA,WAAA,EAAA,cACnDG,KAAsF,EAAA,CAAA;AAAA,GAAA;AAAA,CAE7G,CAAA,CAAA;IAEYS,YAAyC,GAAGA,SAA5CA,YAAyCA,CAAAC,KAAA,EAKhD;AAAA,EAAA,IAAAC,qBAAA,GAAAD,KAAA,CAJFX,eAAe;AAAfA,IAAAA,eAAe,GAAAY,qBAAA,KAAG,KAAA,CAAA,GAAA,QAAQ,GAAAA,qBAAA;IAAAC,oBAAA,GAAAF,KAAA,CAC1BR,cAAc;AAAdA,IAAAA,cAAc,GAAAU,oBAAA,KAAG,KAAA,CAAA,GAAA,QAAQ,GAAAA,oBAAA;IACzBC,QAAQ,GAAAH,KAAA,CAARG,QAAQ;AACLC,IAAAA,IAAAA,GAAAA,wBAAAA,CAAAA,KAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAEH,EAAA,oBACIC,KAAA,CAAAC,aAAA,CAACb,UAAU,EAAAc,QAAA,CAAA;AACPlB,IAAAA,eAAe,EAAEA,eAAgB;AACjCG,IAAAA,cAAc,EAAEA,cAAe;AAC/BgB,IAAAA,IAAI,EAAC,OAAO;IACZ,sBAAqB,EAAA,OAAA;GACjBJ,EAAAA,IAAI,CAEPD,EAAAA,QACO,CAAC,CAAA;AAErB;;;;"}
@@ -1 +1 @@
1
- .sossdp0{-webkit-scroll-snap-align:var(--sossdp0-0);-moz-scroll-snap-align:var(--sossdp0-0);-ms-scroll-snap-align:var(--sossdp0-0);scroll-snap-align:var(--sossdp0-0);-webkit-scroll-snap-stop:var(--sossdp0-1);-moz-scroll-snap-stop:var(--sossdp0-1);-ms-scroll-snap-stop:var(--sossdp0-1);scroll-snap-stop:var(--sossdp0-1);}
1
+ .sossdp0{-webkit-scroll-snap-align:var(--sossdp0-0);-moz-scroll-snap-align:var(--sossdp0-0);-ms-scroll-snap-align:var(--sossdp0-0);scroll-snap-align:var(--sossdp0-0);-webkit-scroll-snap-stop:var(--sossdp0-1);-moz-scroll-snap-stop:var(--sossdp0-1);-ms-scroll-snap-stop:var(--sossdp0-1);scroll-snap-stop:var(--sossdp0-1);padding:0 var(--temporary-carousel-padding);}
package/es/index.css CHANGED
@@ -988,15 +988,13 @@
988
988
  .Carousel_styles_12r304j_csrgq3h__0c59c01e{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:var(--csrgq3h-0);-moz-scroll-snap-type:var(--csrgq3h-0);-ms-scroll-snap-type:var(--csrgq3h-0);scroll-snap-type:var(--csrgq3h-0);-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_12r304j_csrgq3h__0c59c01e::-webkit-scrollbar{display:none;}.Carousel_styles_12r304j_cupvf9e__0c59c01e .Carousel_styles_12r304j_csrgq3h__0c59c01e{-webkit-scroll-padding:0 var(--plasma-grid-margin);-moz-scroll-padding:0 var(--plasma-grid-margin);-ms-scroll-padding:0 var(--plasma-grid-margin);scroll-padding:0 var(--plasma-grid-margin);padding-left:var(--plasma-grid-margin);}
989
989
  .Carousel_styles_12r304j_ciqx3je__0c59c01e{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;padding-left:var(--ciqx3je-0);padding-right:var(--ciqx3je-1);}.Carousel_styles_12r304j_cupvf9e__0c59c01e .Carousel_styles_12r304j_ciqx3je__0c59c01e{padding-right:var(--ciqx3je-2);}
990
990
 
991
- .CarouselItem_uvoxfy_sossdp0__d41488d0{-webkit-scroll-snap-align:var(--sossdp0-0);-moz-scroll-snap-align:var(--sossdp0-0);-ms-scroll-snap-align:var(--sossdp0-0);scroll-snap-align:var(--sossdp0-0);-webkit-scroll-snap-stop:var(--sossdp0-1);-moz-scroll-snap-stop:var(--sossdp0-1);-ms-scroll-snap-stop:var(--sossdp0-1);scroll-snap-stop:var(--sossdp0-1);}
991
+ .CarouselItem_1meatnt_sossdp0__3394b79e{-webkit-scroll-snap-align:var(--sossdp0-0);-moz-scroll-snap-align:var(--sossdp0-0);-ms-scroll-snap-align:var(--sossdp0-0);scroll-snap-align:var(--sossdp0-0);-webkit-scroll-snap-stop:var(--sossdp0-1);-moz-scroll-snap-stop:var(--sossdp0-1);-ms-scroll-snap-stop:var(--sossdp0-1);scroll-snap-stop:var(--sossdp0-1);padding:0 var(--temporary-carousel-padding);}
992
992
 
993
- .Carousel_styles_19w43w1_b13uu57o__33445694{position:relative;}
994
- .Carousel_styles_19w43w1_c1gygdut__33445694{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-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_19w43w1_c1gygdut__33445694::-webkit-scrollbar{display:none;}
995
- .Carousel_styles_19w43w1_c76zbfp__33445694{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);}
996
- .Carousel_styles_19w43w1_i1cnnvc1__33445694{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_19w43w1_i1cnnvc1__33445694.Carousel_styles_19w43w1_carouselRightControlButton__33445694{left:auto;right:0.75rem;}
997
- .Carousel_styles_19w43w1_c1ff2k98__33445694{position:relative;}
998
-
999
- .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);}
993
+ .Carousel_styles_a2t6qm_b13uu57o__25de5594{position:relative;}
994
+ .Carousel_styles_a2t6qm_c1gygdut__25de5594{position:relative;margin-left:calc(var(--temporary-carousel-padding) * -1);margin-right:calc(var(--temporary-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);--temporary-carousel-padding:0.625rem;}.Carousel_styles_a2t6qm_c1gygdut__25de5594::-webkit-scrollbar{display:none;}
995
+ .Carousel_styles_a2t6qm_c76zbfp__25de5594{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;}
996
+ .Carousel_styles_a2t6qm_i1cnnvc1__25de5594{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_a2t6qm_i1cnnvc1__25de5594.Carousel_styles_a2t6qm_carouselRightControlButton__25de5594{left:auto;right:0.75rem;}
997
+ .Carousel_styles_a2t6qm_c1ff2k98__25de5594{position:relative;}
1000
998
 
1001
999
  .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;}
1002
1000
  .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;}
package/es/index.js CHANGED
@@ -238,7 +238,7 @@ export { carouselConfig, carouselRoot } from './components/Carousel/CarouselOld/
238
238
  export { CarouselGridWrapper } from './components/Carousel/CarouselOld/Carousel.styles.js';
239
239
  export { CarouselItem } from './components/Carousel/CarouselOld/CarouselItem.js';
240
240
  export { carouselNewConfig, carouselNewRoot } from './components/Carousel/CarouselNew/Carousel.js';
241
- export { tokens as carouselTokens } from './components/Carousel/CarouselNew/Carousel.tokens.js';
241
+ export { tokens as carouselNewTokens } from './components/Carousel/CarouselNew/Carousel.tokens.js';
242
242
  export { SmartPaginationDots } from './components/PaginationDots/SmartPaginationDots.js';
243
243
  export { PaginationDots } from './components/PaginationDots/PaginationDots.js';
244
244
  export { PaginationDot } from './components/PaginationDots/PaginationDot.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salutejs/plasma-new-hope",
3
- "version": "0.326.0-canary.2013.15537674452.0",
3
+ "version": "0.326.0-canary.2013.15555525626.0",
4
4
  "description": "Salute Design System blueprint",
5
5
  "main": "cjs/index.js",
6
6
  "module": "es/index.js",
@@ -79,8 +79,8 @@
79
79
  "@rollup/plugin-babel": "^6.0.4",
80
80
  "@rollup/plugin-commonjs": "^25.0.4",
81
81
  "@rollup/plugin-node-resolve": "^15.1.0",
82
- "@salutejs/plasma-sb-utils": "0.199.0-canary.2013.15537674452.0",
83
- "@salutejs/plasma-themes": "0.34.0-canary.2013.15537674452.0",
82
+ "@salutejs/plasma-sb-utils": "0.199.0-canary.2013.15555525626.0",
83
+ "@salutejs/plasma-themes": "0.34.0-canary.2013.15555525626.0",
84
84
  "@storybook/addon-docs": "8.6.12",
85
85
  "@storybook/addon-essentials": "8.6.12",
86
86
  "@storybook/manager-api": "8.6.12",
@@ -117,7 +117,7 @@
117
117
  "@linaria/react": "5.0.3",
118
118
  "@popperjs/core": "2.11.8",
119
119
  "@salutejs/input-core": "2.1.2",
120
- "@salutejs/plasma-core": "1.198.0-canary.2013.15537674452.0",
120
+ "@salutejs/plasma-core": "1.198.0-canary.2013.15555525626.0",
121
121
  "@salutejs/react-maskinput": "3.2.6",
122
122
  "@tanstack/react-table": "8.21.2",
123
123
  "@tanstack/react-virtual": "3.13.2",
@@ -137,5 +137,5 @@
137
137
  "sideEffects": [
138
138
  "*.css"
139
139
  ],
140
- "gitHead": "64c657591858d14c2839876344a908c9bdc9465f"
140
+ "gitHead": "a3f21bbac6fdbdb299e5ec551b63c22eaf0f2d85"
141
141
  }
@@ -12,7 +12,6 @@ var _base = /*#__PURE__*/require("./variations/_size/base");
12
12
  var _base2 = /*#__PURE__*/require("./variations/_view/base");
13
13
  var _Carousel2 = /*#__PURE__*/require("./Carousel.styles");
14
14
  var _useCarousel2 = /*#__PURE__*/require("./hooks/useCarousel");
15
- var _useDragScroll = /*#__PURE__*/require("./hooks/useDragScroll");
16
15
  var _ui = /*#__PURE__*/require("./ui");
17
16
  var _IconDisclosureLeft, _IconDisclosureRight;
18
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
@@ -30,11 +29,11 @@ var carouselNewRoot = exports.carouselNewRoot = function carouselNewRoot(Root) {
30
29
  return /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
31
30
  var view = _ref.view,
32
31
  size = _ref.size,
33
- scrollAlign = _ref.scrollAlign,
32
+ _ref$scrollAlign = _ref.scrollAlign,
33
+ scrollAlign = _ref$scrollAlign === void 0 ? 'center' : _ref$scrollAlign,
34
34
  children = _ref.children,
35
- _ref$isDragScrollDisa = _ref.isDragScrollDisabled,
36
- isDragScrollDisabled = _ref$isDragScrollDisa === void 0 ? false : _ref$isDragScrollDisa,
37
- gap = _ref.gap,
35
+ _ref$controlArrowsDis = _ref.controlArrowsDisabled,
36
+ controlArrowsDisabled = _ref$controlArrowsDis === void 0 ? 'false' : _ref$controlArrowsDis,
38
37
  paginationOptions = _ref.paginationOptions,
39
38
  className = _ref.className,
40
39
  style = _ref.style;
@@ -56,14 +55,13 @@ var carouselNewRoot = exports.carouselNewRoot = function carouselNewRoot(Root) {
56
55
  }),
57
56
  scrollRef = _useCarousel.scrollRef,
58
57
  trackRef = _useCarousel.trackRef;
59
- (0, _useDragScroll.useDragScroll)(scrollRef, isDragScrollDisabled);
60
58
  return /*#__PURE__*/_react["default"].createElement(Root, {
61
59
  className: className,
62
60
  style: style,
63
61
  size: size,
64
62
  view: view,
65
63
  ref: ref
66
- }, /*#__PURE__*/_react["default"].createElement(_Carousel2.ControlsWrapper, null, index !== 0 && /*#__PURE__*/_react["default"].createElement(_Carousel2.IconButton, {
64
+ }, /*#__PURE__*/_react["default"].createElement(_Carousel2.ControlsWrapper, null, index !== 0 && !controlArrowsDisabled && /*#__PURE__*/_react["default"].createElement(_Carousel2.IconButton, {
67
65
  pin: "circle-circle",
68
66
  onClick: handleClickLeft
69
67
  }, _IconDisclosureLeft || (_IconDisclosureLeft = /*#__PURE__*/_react["default"].createElement(_Icon.IconDisclosureLeft, {
@@ -73,10 +71,7 @@ var carouselNewRoot = exports.carouselNewRoot = function carouselNewRoot(Root) {
73
71
  ref: scrollRef
74
72
  }, /*#__PURE__*/_react["default"].createElement(_Carousel2.CarouselTrack, {
75
73
  ref: trackRef
76
- // aria-live={ariaLive}
77
- ,
78
- gap: gap
79
- }, children)), index !== slidesAmount - 1 && /*#__PURE__*/_react["default"].createElement(_Carousel2.IconButton, {
74
+ }, children)), index !== slidesAmount - 1 && !controlArrowsDisabled && /*#__PURE__*/_react["default"].createElement(_Carousel2.IconButton, {
80
75
  className: _Carousel.classes.rightControlButton,
81
76
  pin: "circle-circle",
82
77
  onClick: handleClickRight
@@ -16,13 +16,10 @@ var IconButtonComponent = exports.IconButtonComponent = /*#__PURE__*/(0, _engine
16
16
  var base = exports.base = /*#__PURE__*/(0, _styledComponents.css)(["position:relative;"]);
17
17
  var CarouselWrapper = exports.CarouselWrapper = /*#__PURE__*/_styledComponents["default"].div.withConfig({
18
18
  componentId: "plasma-new-hope__sc-vln28v-0"
19
- })(["position:relative;margin:0;padding:0;list-style:none;-ms-overflow-style:none;scrollbar-width:none;::-webkit-scrollbar{display:none;}overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);"]);
19
+ })(["position:relative;margin-left:calc(var(--temporary-carousel-padding) * -1);margin-right:calc(var(--temporary-carousel-padding) * -1);padding:0;list-style:none;-ms-overflow-style:none;scrollbar-width:none;::-webkit-scrollbar{display:none;}overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scroll-snap-type:x mandatory;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);--temporary-carousel-padding:0.625rem;"]);
20
20
  var CarouselTrack = exports.CarouselTrack = /*#__PURE__*/_styledComponents["default"].div.withConfig({
21
21
  componentId: "plasma-new-hope__sc-vln28v-1"
22
- })(["display:inline-flex;flex-direction:row;gap:", ";"], function (_ref) {
23
- var gap = _ref.gap;
24
- return gap || 0;
25
- });
22
+ })(["display:inline-flex;flex-direction:row;"]);
26
23
  var IconButton = exports.IconButton = /*#__PURE__*/(0, _styledComponents["default"])(IconButtonComponent).withConfig({
27
24
  componentId: "plasma-new-hope__sc-vln28v-2"
28
25
  })(["position:absolute;top:50%;transform:translateY(-50%);left:0.75rem;z-index:10;", ":var(--text-primary);", ":var(--surface-transparent-secondary);", ":var(", ");", ":var(--surface-transparent-secondary-hover);", ":var(--surface-transparent-secondary-active);", ":2.5rem;", ":2.5rem;", ":1rem;", ":0.625rem;&.", "{left:auto;right:0.75rem;}"], _IconButton.iconButtonTokens.iconButtonColor, _IconButton.iconButtonTokens.iconButtonBackgroundColor, _IconButton.iconButtonTokens.iconButtonLoadingBackgroundColor, _IconButton.iconButtonTokens.iconButtonBackgroundColor, _IconButton.iconButtonTokens.iconButtonBackgroundColorHover, _IconButton.iconButtonTokens.iconButtonBackgroundColorActive, _IconButton.iconButtonTokens.iconButtonHeight, _IconButton.iconButtonTokens.iconButtonWidth, _IconButton.iconButtonTokens.iconButtonPadding, _IconButton.iconButtonTokens.iconButtonRadius, _Carousel.classes.rightControlButton);