@salutejs/plasma-new-hope 0.163.1-canary.1476.11274907051.0 → 0.164.0-canary.1452.11274846938.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (230) hide show
  1. package/cjs/components/Slider/Slider.css +15 -13
  2. package/cjs/components/Slider/Slider.js +11 -3
  3. package/cjs/components/Slider/Slider.js.map +1 -1
  4. package/cjs/components/Slider/Slider.tokens.js +17 -5
  5. package/cjs/components/Slider/Slider.tokens.js.map +1 -1
  6. package/cjs/components/Slider/components/Double/Double.css +8 -8
  7. package/cjs/components/Slider/components/Double/Double.js +17 -9
  8. package/cjs/components/Slider/components/Double/Double.js.map +1 -1
  9. package/cjs/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.css +77 -0
  10. package/cjs/components/Slider/components/Single/Single.css +14 -14
  11. package/cjs/components/Slider/components/Single/Single.js +57 -31
  12. package/cjs/components/Slider/components/Single/Single.js.map +1 -1
  13. package/cjs/components/Slider/components/Single/Single.styles.js +4 -4
  14. package/cjs/components/Slider/components/Single/Single.styles.js.map +1 -1
  15. package/cjs/components/Slider/components/Single/Single.styles_12d5mbj.css +6 -0
  16. package/cjs/components/Slider/components/SliderBase/SliderBase.css +5 -5
  17. package/cjs/components/Slider/components/SliderBase/SliderBase.js +27 -12
  18. package/cjs/components/Slider/components/SliderBase/SliderBase.js.map +1 -1
  19. package/cjs/components/Slider/components/SliderBase/SliderBase.styles.js +7 -7
  20. package/cjs/components/Slider/components/SliderBase/SliderBase.styles.js.map +1 -1
  21. package/cjs/components/Slider/components/SliderBase/SliderBase.styles_1qt1224.css +5 -0
  22. package/cjs/components/Slider/ui/Handler/Handler.css +3 -3
  23. package/cjs/components/Slider/ui/Handler/Handler.js +49 -88
  24. package/cjs/components/Slider/ui/Handler/Handler.js.map +1 -1
  25. package/cjs/components/Slider/ui/Handler/Handler.styles.js +17 -7
  26. package/cjs/components/Slider/ui/Handler/Handler.styles.js.map +1 -1
  27. package/cjs/components/Slider/ui/Handler/Handler.styles_19zy2jw.css +2 -0
  28. package/cjs/components/Slider/ui/Handler/computeKeyPressData.js +122 -0
  29. package/cjs/components/Slider/ui/Handler/computeKeyPressData.js.map +1 -0
  30. package/cjs/components/Slider/ui/Thumb/Thumb.css +1 -1
  31. package/cjs/components/Slider/ui/Thumb/Thumb.js +3 -2
  32. package/cjs/components/Slider/ui/Thumb/Thumb.js.map +1 -1
  33. package/cjs/components/Slider/ui/Thumb/Thumb.styles.js +1 -1
  34. package/cjs/components/Slider/ui/Thumb/Thumb.styles.js.map +1 -1
  35. package/cjs/components/Slider/ui/Thumb/Thumb.styles_uyn20e.css +1 -0
  36. package/cjs/components/Slider/utils/index.js +28 -10
  37. package/cjs/components/Slider/utils/index.js.map +1 -1
  38. package/cjs/components/Slider/variations/_view/base.js +1 -1
  39. package/cjs/components/Slider/variations/_view/base.js.map +1 -1
  40. package/cjs/components/Slider/variations/_view/base_1s3f6q8.css +1 -0
  41. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +2 -2
  42. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
  43. package/cjs/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +2 -2
  44. package/cjs/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js.map +1 -1
  45. package/cjs/index.css +15 -13
  46. package/cjs/utils/index.js.map +1 -1
  47. package/emotion/cjs/components/Slider/Slider.js +10 -2
  48. package/emotion/cjs/components/Slider/Slider.tokens.js +17 -5
  49. package/emotion/cjs/components/Slider/components/Double/Double.js +13 -5
  50. package/emotion/cjs/components/Slider/components/Single/Single.js +57 -31
  51. package/emotion/cjs/components/Slider/components/Single/Single.styles.js +18 -9
  52. package/emotion/cjs/components/Slider/components/SliderBase/SliderBase.js +27 -12
  53. package/emotion/cjs/components/Slider/components/SliderBase/SliderBase.styles.js +10 -10
  54. package/emotion/cjs/components/Slider/ui/Handler/Handler.js +52 -88
  55. package/emotion/cjs/components/Slider/ui/Handler/Handler.styles.js +9 -15
  56. package/emotion/cjs/components/Slider/ui/Handler/computeKeyPressData.js +121 -0
  57. package/emotion/cjs/components/Slider/ui/Thumb/Thumb.js +3 -2
  58. package/emotion/cjs/components/Slider/ui/Thumb/Thumb.styles.js +3 -3
  59. package/emotion/cjs/components/Slider/utils/index.js +28 -10
  60. package/emotion/cjs/components/Slider/variations/_view/base.js +2 -1
  61. package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +2 -2
  62. package/emotion/cjs/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +2 -2
  63. package/emotion/cjs/examples/plasma_b2c/components/Slider/Slider.config.js +7 -7
  64. package/emotion/cjs/examples/plasma_b2c/components/Slider/Slider.stories.tsx +90 -16
  65. package/emotion/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +16 -29
  66. package/emotion/cjs/examples/plasma_web/components/Slider/Slider.config.js +7 -7
  67. package/emotion/cjs/examples/plasma_web/components/Slider/Slider.stories.tsx +90 -15
  68. package/emotion/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +17 -30
  69. package/emotion/es/components/Slider/Slider.js +11 -2
  70. package/emotion/es/components/Slider/Slider.tokens.js +17 -5
  71. package/emotion/es/components/Slider/components/Double/Double.js +13 -5
  72. package/emotion/es/components/Slider/components/Single/Single.js +58 -32
  73. package/emotion/es/components/Slider/components/Single/Single.styles.js +17 -8
  74. package/emotion/es/components/Slider/components/SliderBase/SliderBase.js +27 -12
  75. package/emotion/es/components/Slider/components/SliderBase/SliderBase.styles.js +11 -11
  76. package/emotion/es/components/Slider/ui/Handler/Handler.js +51 -86
  77. package/emotion/es/components/Slider/ui/Handler/Handler.styles.js +10 -16
  78. package/emotion/es/components/Slider/ui/Handler/computeKeyPressData.js +115 -0
  79. package/emotion/es/components/Slider/ui/Thumb/Thumb.js +3 -2
  80. package/emotion/es/components/Slider/ui/Thumb/Thumb.styles.js +3 -3
  81. package/emotion/es/components/Slider/utils/index.js +28 -10
  82. package/emotion/es/components/Slider/variations/_view/base.js +2 -1
  83. package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +2 -2
  84. package/emotion/es/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +2 -2
  85. package/emotion/es/examples/plasma_b2c/components/Slider/Slider.config.js +7 -7
  86. package/emotion/es/examples/plasma_b2c/components/Slider/Slider.stories.tsx +90 -16
  87. package/emotion/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +16 -29
  88. package/emotion/es/examples/plasma_web/components/Slider/Slider.config.js +7 -7
  89. package/emotion/es/examples/plasma_web/components/Slider/Slider.stories.tsx +90 -15
  90. package/emotion/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +17 -30
  91. package/es/components/Slider/Slider.css +15 -13
  92. package/es/components/Slider/Slider.js +11 -3
  93. package/es/components/Slider/Slider.js.map +1 -1
  94. package/es/components/Slider/Slider.tokens.js +17 -5
  95. package/es/components/Slider/Slider.tokens.js.map +1 -1
  96. package/es/components/Slider/components/Double/Double.css +8 -8
  97. package/es/components/Slider/components/Double/Double.js +13 -5
  98. package/es/components/Slider/components/Double/Double.js.map +1 -1
  99. package/es/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.css +77 -0
  100. package/es/components/Slider/components/Single/Single.css +14 -14
  101. package/es/components/Slider/components/Single/Single.js +58 -32
  102. package/es/components/Slider/components/Single/Single.js.map +1 -1
  103. package/es/components/Slider/components/Single/Single.styles.js +4 -4
  104. package/es/components/Slider/components/Single/Single.styles.js.map +1 -1
  105. package/es/components/Slider/components/Single/Single.styles_12d5mbj.css +6 -0
  106. package/es/components/Slider/components/SliderBase/SliderBase.css +5 -5
  107. package/es/components/Slider/components/SliderBase/SliderBase.js +27 -12
  108. package/es/components/Slider/components/SliderBase/SliderBase.js.map +1 -1
  109. package/es/components/Slider/components/SliderBase/SliderBase.styles.js +7 -7
  110. package/es/components/Slider/components/SliderBase/SliderBase.styles.js.map +1 -1
  111. package/es/components/Slider/components/SliderBase/SliderBase.styles_1qt1224.css +5 -0
  112. package/es/components/Slider/ui/Handler/Handler.css +3 -3
  113. package/es/components/Slider/ui/Handler/Handler.js +48 -87
  114. package/es/components/Slider/ui/Handler/Handler.js.map +1 -1
  115. package/es/components/Slider/ui/Handler/Handler.styles.js +17 -7
  116. package/es/components/Slider/ui/Handler/Handler.styles.js.map +1 -1
  117. package/es/components/Slider/ui/Handler/Handler.styles_19zy2jw.css +2 -0
  118. package/es/components/Slider/ui/Handler/computeKeyPressData.js +118 -0
  119. package/es/components/Slider/ui/Handler/computeKeyPressData.js.map +1 -0
  120. package/es/components/Slider/ui/Thumb/Thumb.css +1 -1
  121. package/es/components/Slider/ui/Thumb/Thumb.js +3 -2
  122. package/es/components/Slider/ui/Thumb/Thumb.js.map +1 -1
  123. package/es/components/Slider/ui/Thumb/Thumb.styles.js +1 -1
  124. package/es/components/Slider/ui/Thumb/Thumb.styles.js.map +1 -1
  125. package/es/components/Slider/ui/Thumb/Thumb.styles_uyn20e.css +1 -0
  126. package/es/components/Slider/utils/index.js +28 -10
  127. package/es/components/Slider/utils/index.js.map +1 -1
  128. package/es/components/Slider/variations/_view/base.js +1 -1
  129. package/es/components/Slider/variations/_view/base.js.map +1 -1
  130. package/es/components/Slider/variations/_view/base_1s3f6q8.css +1 -0
  131. package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +2 -2
  132. package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
  133. package/es/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +2 -2
  134. package/es/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js.map +1 -1
  135. package/es/index.css +15 -13
  136. package/es/utils/index.js.map +1 -1
  137. package/package.json +2 -2
  138. package/styled-components/cjs/components/Slider/Slider.js +10 -2
  139. package/styled-components/cjs/components/Slider/Slider.tokens.js +17 -5
  140. package/styled-components/cjs/components/Slider/components/Double/Double.js +13 -5
  141. package/styled-components/cjs/components/Slider/components/Single/Single.js +57 -31
  142. package/styled-components/cjs/components/Slider/components/Single/Single.styles.js +5 -5
  143. package/styled-components/cjs/components/Slider/components/SliderBase/SliderBase.js +27 -12
  144. package/styled-components/cjs/components/Slider/components/SliderBase/SliderBase.styles.js +6 -6
  145. package/styled-components/cjs/components/Slider/ui/Handler/Handler.js +52 -88
  146. package/styled-components/cjs/components/Slider/ui/Handler/Handler.styles.js +7 -4
  147. package/styled-components/cjs/components/Slider/ui/Handler/computeKeyPressData.js +121 -0
  148. package/styled-components/cjs/components/Slider/ui/Thumb/Thumb.js +3 -2
  149. package/styled-components/cjs/components/Slider/ui/Thumb/Thumb.styles.js +2 -2
  150. package/styled-components/cjs/components/Slider/utils/index.js +28 -10
  151. package/styled-components/cjs/components/Slider/variations/_view/base.js +2 -1
  152. package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +2 -2
  153. package/styled-components/cjs/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +2 -2
  154. package/styled-components/cjs/examples/plasma_b2c/components/Slider/Slider.config.js +3 -3
  155. package/styled-components/cjs/examples/plasma_b2c/components/Slider/Slider.stories.tsx +90 -16
  156. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +16 -29
  157. package/styled-components/cjs/examples/plasma_web/components/Slider/Slider.config.js +3 -3
  158. package/styled-components/cjs/examples/plasma_web/components/Slider/Slider.stories.tsx +90 -15
  159. package/styled-components/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +17 -30
  160. package/styled-components/es/components/Slider/Slider.js +11 -2
  161. package/styled-components/es/components/Slider/Slider.tokens.js +17 -5
  162. package/styled-components/es/components/Slider/components/Double/Double.js +13 -5
  163. package/styled-components/es/components/Slider/components/Single/Single.js +58 -32
  164. package/styled-components/es/components/Slider/components/Single/Single.styles.js +4 -4
  165. package/styled-components/es/components/Slider/components/SliderBase/SliderBase.js +27 -12
  166. package/styled-components/es/components/Slider/components/SliderBase/SliderBase.styles.js +7 -7
  167. package/styled-components/es/components/Slider/ui/Handler/Handler.js +51 -86
  168. package/styled-components/es/components/Slider/ui/Handler/Handler.styles.js +8 -5
  169. package/styled-components/es/components/Slider/ui/Handler/computeKeyPressData.js +115 -0
  170. package/styled-components/es/components/Slider/ui/Thumb/Thumb.js +3 -2
  171. package/styled-components/es/components/Slider/ui/Thumb/Thumb.styles.js +2 -2
  172. package/styled-components/es/components/Slider/utils/index.js +28 -10
  173. package/styled-components/es/components/Slider/variations/_view/base.js +2 -1
  174. package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +2 -2
  175. package/styled-components/es/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.js +2 -2
  176. package/styled-components/es/examples/plasma_b2c/components/Slider/Slider.config.js +3 -3
  177. package/styled-components/es/examples/plasma_b2c/components/Slider/Slider.stories.tsx +90 -16
  178. package/styled-components/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +16 -29
  179. package/styled-components/es/examples/plasma_web/components/Slider/Slider.config.js +3 -3
  180. package/styled-components/es/examples/plasma_web/components/Slider/Slider.stories.tsx +90 -15
  181. package/styled-components/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +17 -30
  182. package/types/components/Slider/Slider.d.ts.map +1 -1
  183. package/types/components/Slider/Slider.tokens.d.ts +16 -4
  184. package/types/components/Slider/Slider.tokens.d.ts.map +1 -1
  185. package/types/components/Slider/components/Double/Double.d.ts.map +1 -1
  186. package/types/components/Slider/components/Double/Double.types.d.ts +1 -0
  187. package/types/components/Slider/components/Double/Double.types.d.ts.map +1 -1
  188. package/types/components/Slider/components/Single/Single.d.ts.map +1 -1
  189. package/types/components/Slider/components/Single/Single.styles.d.ts +1 -1
  190. package/types/components/Slider/components/Single/Single.styles.d.ts.map +1 -1
  191. package/types/components/Slider/components/Single/Single.types.d.ts +75 -7
  192. package/types/components/Slider/components/Single/Single.types.d.ts.map +1 -1
  193. package/types/components/Slider/components/SliderBase/SliderBase.d.ts.map +1 -1
  194. package/types/components/Slider/components/SliderBase/SliderBase.styles.d.ts +1 -1
  195. package/types/components/Slider/components/SliderBase/SliderBase.styles.d.ts.map +1 -1
  196. package/types/components/Slider/components/SliderBase/SliderBase.types.d.ts +1 -0
  197. package/types/components/Slider/components/SliderBase/SliderBase.types.d.ts.map +1 -1
  198. package/types/components/Slider/ui/Handler/Handler.d.ts.map +1 -1
  199. package/types/components/Slider/ui/Handler/Handler.styles.d.ts +6 -2
  200. package/types/components/Slider/ui/Handler/Handler.styles.d.ts.map +1 -1
  201. package/types/components/Slider/ui/Handler/Handler.types.d.ts +4 -1
  202. package/types/components/Slider/ui/Handler/Handler.types.d.ts.map +1 -1
  203. package/types/components/Slider/ui/Handler/computeKeyPressData.d.ts +12 -0
  204. package/types/components/Slider/ui/Handler/computeKeyPressData.d.ts.map +1 -0
  205. package/types/components/Slider/ui/Thumb/Thumb.d.ts +1 -1
  206. package/types/components/Slider/ui/Thumb/Thumb.d.ts.map +1 -1
  207. package/types/components/Slider/ui/Thumb/Thumb.styles.d.ts.map +1 -1
  208. package/types/components/Slider/ui/Thumb/Thumb.types.d.ts +1 -0
  209. package/types/components/Slider/ui/Thumb/Thumb.types.d.ts.map +1 -1
  210. package/types/components/Slider/utils/index.d.ts +26 -8
  211. package/types/components/Slider/utils/index.d.ts.map +1 -1
  212. package/types/components/Slider/variations/_view/base.d.ts.map +1 -1
  213. package/types/examples/plasma_b2c/components/Slider/Slider.config.d.ts.map +1 -1
  214. package/types/examples/plasma_b2c/components/Slider/Slider.d.ts +80 -2
  215. package/types/examples/plasma_b2c/components/Slider/Slider.d.ts.map +1 -1
  216. package/types/examples/plasma_web/components/Slider/Slider.config.d.ts.map +1 -1
  217. package/types/examples/plasma_web/components/Slider/Slider.d.ts +80 -2
  218. package/types/examples/plasma_web/components/Slider/Slider.d.ts.map +1 -1
  219. package/types/utils/index.d.ts +1 -1
  220. package/types/utils/index.d.ts.map +1 -1
  221. package/cjs/components/Slider/components/Single/Single.styles_1r9f1e0.css +0 -6
  222. package/cjs/components/Slider/components/SliderBase/SliderBase.styles_9s4eb3.css +0 -5
  223. package/cjs/components/Slider/ui/Handler/Handler.styles_8crx5z.css +0 -2
  224. package/cjs/components/Slider/ui/Thumb/Thumb.styles_4w4gzn.css +0 -1
  225. package/cjs/components/Slider/variations/_view/base_x642ct.css +0 -1
  226. package/es/components/Slider/components/Single/Single.styles_1r9f1e0.css +0 -6
  227. package/es/components/Slider/components/SliderBase/SliderBase.styles_9s4eb3.css +0 -5
  228. package/es/components/Slider/ui/Handler/Handler.styles_8crx5z.css +0 -2
  229. package/es/components/Slider/ui/Thumb/Thumb.styles_4w4gzn.css +0 -1
  230. package/es/components/Slider/variations/_view/base_x642ct.css +0 -1
@@ -0,0 +1,122 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var KeyboardSupport = {
6
+ PageUp: 33,
7
+ PageDown: 34,
8
+ End: 35,
9
+ Home: 36,
10
+ ArrowLeft: 37,
11
+ ArrowUp: 38,
12
+ ArrowRight: 39,
13
+ ArrowDown: 40
14
+ };
15
+ var ArrowUp = KeyboardSupport.ArrowUp,
16
+ ArrowRight = KeyboardSupport.ArrowRight,
17
+ ArrowDown = KeyboardSupport.ArrowDown,
18
+ ArrowLeft = KeyboardSupport.ArrowLeft,
19
+ Home = KeyboardSupport.Home,
20
+ End = KeyboardSupport.End,
21
+ PageDown = KeyboardSupport.PageDown,
22
+ PageUp = KeyboardSupport.PageUp;
23
+ var computeVerticalMovement = function computeVerticalMovement(event, _ref) {
24
+ var stepSize = _ref.stepSize,
25
+ position = _ref.position,
26
+ max = _ref.max,
27
+ computedMultipleSteps = _ref.computedMultipleSteps;
28
+ var keyCode = event.keyCode,
29
+ target = event.target;
30
+ var data = {
31
+ x: 0,
32
+ deltaX: 0,
33
+ lastX: 0,
34
+ y: 0,
35
+ deltaY: stepSize,
36
+ lastY: position,
37
+ node: target
38
+ };
39
+ switch (keyCode) {
40
+ case ArrowUp:
41
+ case ArrowRight:
42
+ data.y = position - stepSize;
43
+ data.deltaY = -stepSize;
44
+ break;
45
+ case ArrowDown:
46
+ case ArrowLeft:
47
+ data.y = position + stepSize;
48
+ break;
49
+ case PageUp:
50
+ data.y = position - computedMultipleSteps;
51
+ data.deltaY = -computedMultipleSteps;
52
+ break;
53
+ case PageDown:
54
+ data.y = position + computedMultipleSteps;
55
+ data.deltaY = computedMultipleSteps;
56
+ break;
57
+ case End:
58
+ data.y = max * stepSize;
59
+ break;
60
+ case Home:
61
+ data.y = 0;
62
+ break;
63
+ default:
64
+ data.y = 0;
65
+ }
66
+ return data;
67
+ };
68
+ var computeHorizontalMovement = function computeHorizontalMovement(event, _ref2) {
69
+ var stepSize = _ref2.stepSize,
70
+ position = _ref2.position,
71
+ max = _ref2.max,
72
+ computedMultipleSteps = _ref2.computedMultipleSteps;
73
+ var keyCode = event.keyCode,
74
+ target = event.target;
75
+ var data = {
76
+ x: 0,
77
+ deltaX: stepSize,
78
+ lastX: position,
79
+ y: 0,
80
+ deltaY: 0,
81
+ lastY: 0,
82
+ node: target
83
+ };
84
+ switch (keyCode) {
85
+ case ArrowUp:
86
+ case ArrowRight:
87
+ data.x = position + stepSize;
88
+ break;
89
+ case ArrowDown:
90
+ case ArrowLeft:
91
+ data.x = position - stepSize;
92
+ data.deltaX = -stepSize;
93
+ break;
94
+ case PageUp:
95
+ data.x = position + computedMultipleSteps;
96
+ data.deltaX = computedMultipleSteps;
97
+ break;
98
+ case PageDown:
99
+ data.x = position - computedMultipleSteps;
100
+ data.deltaX = -computedMultipleSteps;
101
+ break;
102
+ case End:
103
+ data.x = max * stepSize;
104
+ break;
105
+ case Home:
106
+ data.x = 0;
107
+ break;
108
+ default:
109
+ data.x = 0;
110
+ }
111
+ return data;
112
+ };
113
+ var computeKeyPressData = function computeKeyPressData(event, params) {
114
+ var keyCode = event.keyCode;
115
+ if (!Object.values(KeyboardSupport).includes(keyCode)) {
116
+ return null;
117
+ }
118
+ return params.isVertical ? computeVerticalMovement(event, params) : computeHorizontalMovement(event, params);
119
+ };
120
+
121
+ exports.computeKeyPressData = computeKeyPressData;
122
+ //# sourceMappingURL=computeKeyPressData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeKeyPressData.js","sources":["../../../../../src/components/Slider/ui/Handler/computeKeyPressData.ts"],"sourcesContent":["import { KeyboardEvent } from 'react';\nimport type { DraggableData } from 'react-draggable';\n\nconst KeyboardSupport = {\n PageUp: 33,\n PageDown: 34,\n End: 35,\n Home: 36,\n ArrowLeft: 37,\n ArrowUp: 38,\n ArrowRight: 39,\n ArrowDown: 40,\n};\n\ninterface Params {\n isVertical: boolean;\n stepSize: number;\n position: number;\n max: number;\n computedMultipleSteps: number;\n}\n\nconst { ArrowUp, ArrowRight, ArrowDown, ArrowLeft, Home, End, PageDown, PageUp } = KeyboardSupport;\n\nconst computeVerticalMovement = (\n event: KeyboardEvent<HTMLDivElement>,\n { stepSize, position, max, computedMultipleSteps }: Params,\n) => {\n const { keyCode, target } = event;\n\n const data: DraggableData = {\n x: 0,\n deltaX: 0,\n lastX: 0,\n y: 0,\n deltaY: stepSize,\n lastY: position,\n node: target as HTMLDivElement,\n };\n\n switch (keyCode) {\n case ArrowUp:\n case ArrowRight:\n data.y = position - stepSize;\n data.deltaY = -stepSize;\n break;\n case ArrowDown:\n case ArrowLeft:\n data.y = position + stepSize;\n break;\n case PageUp:\n data.y = position - computedMultipleSteps;\n data.deltaY = -computedMultipleSteps;\n break;\n case PageDown:\n data.y = position + computedMultipleSteps;\n data.deltaY = computedMultipleSteps;\n break;\n case End:\n data.y = max * stepSize;\n break;\n case Home:\n data.y = 0;\n break;\n default:\n data.y = 0;\n }\n\n return data;\n};\n\nconst computeHorizontalMovement = (\n event: KeyboardEvent<HTMLDivElement>,\n { stepSize, position, max, computedMultipleSteps }: Params,\n) => {\n const { keyCode, target } = event;\n\n const data: DraggableData = {\n x: 0,\n deltaX: stepSize,\n lastX: position,\n y: 0,\n deltaY: 0,\n lastY: 0,\n node: target as HTMLDivElement,\n };\n\n switch (keyCode) {\n case ArrowUp:\n case ArrowRight:\n data.x = position + stepSize;\n break;\n case ArrowDown:\n case ArrowLeft:\n data.x = position - stepSize;\n data.deltaX = -stepSize;\n break;\n case PageUp:\n data.x = position + computedMultipleSteps;\n data.deltaX = computedMultipleSteps;\n break;\n case PageDown:\n data.x = position - computedMultipleSteps;\n data.deltaX = -computedMultipleSteps;\n break;\n case End:\n data.x = max * stepSize;\n break;\n case Home:\n data.x = 0;\n break;\n default:\n data.x = 0;\n }\n\n return data;\n};\n\nexport const computeKeyPressData = (event: KeyboardEvent<HTMLDivElement>, params: Params) => {\n const { keyCode } = event;\n\n if (!Object.values(KeyboardSupport).includes(keyCode)) {\n return null;\n }\n\n return params.isVertical ? computeVerticalMovement(event, params) : computeHorizontalMovement(event, params);\n};\n"],"names":["KeyboardSupport","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","computeVerticalMovement","event","_ref","stepSize","position","max","computedMultipleSteps","keyCode","target","data","x","deltaX","lastX","y","deltaY","lastY","node","computeHorizontalMovement","_ref2","computeKeyPressData","params","Object","values","includes","isVertical"],"mappings":"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"}
@@ -1 +1 @@
1
- .Thumb_styles_4w4gzn_tqbdf8b__14129a5b{width:var(--plasma-slider-thumb-size);height:var(--plasma-slider-thumb-size);position:relative;left:-0.125rem;top:-0.125rem;border-radius:50%;box-sizing:border-box;background:var(--plasma-slider-thumb-background-color);margin:0.125rem;-webkit-transition:border-color 0.1s ease-in-out;transition:border-color 0.1s ease-in-out;position:relative;}.Thumb_styles_4w4gzn_tqbdf8b__14129a5b:after{background:var(--plasma-slider-thumb-border-color);margin:-0.125rem;content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;}.Thumb_styles_4w4gzn_tqbdf8b__14129a5b:not([disabled]):hover:after,.Thumb_styles_4w4gzn_tqbdf8b__14129a5b:not([disabled]):active:after{background:var(--plasma-slider-thumb-focus-border-color);}.Thumb_styles_4w4gzn_tqbdf8b__14129a5b[disabled]{cursor:not-allowed;}.Thumb_styles_4w4gzn_tqbdf8b__14129a5b:focus{outline:none;}.Thumb_styles_4w4gzn_tqbdf8b__14129a5b::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:0.125rem solid transparent;border-radius:50%;-webkit-transition:box-shadow 0.2s ease-in-out;transition:box-shadow 0.2s ease-in-out;pointer-events:none;}.Thumb_styles_4w4gzn_tqbdf8b__14129a5b.Thumb_styles_4w4gzn_focusVisible__14129a5b:focus::before,.Thumb_styles_4w4gzn_tqbdf8b__14129a5b[data-focus-visible-added]::before{outline:none;box-shadow:0 0 0 0.125rem var(--plasma-slider-thumb-focus-border-color);}
1
+ .Thumb_styles_uyn20e_tqbdf8b__de0962c7{width:var(--thumb-size);height:var(--thumb-size);min-width:var(--thumb-size);min-height:var(--thumb-size);position:relative;border-radius:50%;box-sizing:border-box;background:var(--plasma-slider-thumb-background-color);margin:0.0625rem;-webkit-transition:border-color 0.1s ease-in-out;transition:border-color 0.1s ease-in-out;position:relative;}.Thumb_styles_uyn20e_tqbdf8b__de0962c7:after{background:var(--plasma-slider-thumb-border-color);margin:-0.0625rem;content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;}.Thumb_styles_uyn20e_tqbdf8b__de0962c7:not([disabled]):hover:after,.Thumb_styles_uyn20e_tqbdf8b__de0962c7:not([disabled]):active:after{background:var(--plasma-slider-thumb-focus-border-color);}.Thumb_styles_uyn20e_tqbdf8b__de0962c7[disabled]{cursor:not-allowed;}.Thumb_styles_uyn20e_tqbdf8b__de0962c7:focus{outline:none;}.Thumb_styles_uyn20e_tqbdf8b__de0962c7::before{content:'';position:absolute;top:0.0625rem;left:0.0625rem;right:0.0625rem;bottom:0.0625rem;z-index:1;display:block;box-sizing:content-box;border:0.125rem solid transparent;border-radius:50%;-webkit-transition:box-shadow 0.2s ease-in-out;transition:box-shadow 0.2s ease-in-out;pointer-events:none;}.Thumb_styles_uyn20e_tqbdf8b__de0962c7.Thumb_styles_uyn20e_focusVisible__de0962c7:focus::before,.Thumb_styles_uyn20e_tqbdf8b__de0962c7[data-focus-visible-added]::before{outline:none;box-shadow:0 0 0 0.125rem var(--plasma-slider-thumb-focus-border-color);}
@@ -6,7 +6,7 @@ var _rollupPluginBabelHelpers = require('../../../../_virtual/_rollupPluginBabel
6
6
  var React = require('react');
7
7
  var Thumb_styles = require('./Thumb.styles.js');
8
8
 
9
- var _excluded = ["min", "max", "value", "ariaValueMin", "ariaLabel", "disabled"];
9
+ var _excluded = ["min", "max", "value", "ariaValueMin", "ariaLabel", "disabled", "orientation"];
10
10
  var Thumb = function Thumb(_ref) {
11
11
  var min = _ref.min,
12
12
  max = _ref.max,
@@ -15,6 +15,7 @@ var Thumb = function Thumb(_ref) {
15
15
  ariaValueMin = _ref$ariaValueMin === void 0 ? min : _ref$ariaValueMin,
16
16
  ariaLabel = _ref.ariaLabel,
17
17
  disabled = _ref.disabled,
18
+ orientation = _ref.orientation,
18
19
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
19
20
  return /*#__PURE__*/React.createElement(Thumb_styles.ThumbBase, _rollupPluginBabelHelpers.extends({
20
21
  role: "slider",
@@ -23,7 +24,7 @@ var Thumb = function Thumb(_ref) {
23
24
  "aria-valuemax": max,
24
25
  "aria-valuenow": value,
25
26
  disabled: disabled,
26
- "aria-orientation": "horizontal"
27
+ "aria-orientation": orientation
27
28
  }, rest));
28
29
  };
29
30
 
@@ -1 +1 @@
1
- {"version":3,"file":"Thumb.js","sources":["../../../../../src/components/Slider/ui/Thumb/Thumb.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { ThumbProps } from './Thumb.types';\nimport { ThumbBase } from './Thumb.styles';\n\nexport const Thumb = ({ min, max, value, ariaValueMin = min, ariaLabel, disabled, ...rest }: ThumbProps) => {\n return (\n <ThumbBase\n role=\"slider\"\n aria-label={ariaLabel}\n aria-valuemin={ariaValueMin}\n aria-valuemax={max}\n aria-valuenow={value}\n disabled={disabled}\n aria-orientation=\"horizontal\"\n {...rest}\n />\n );\n};\n"],"names":["Thumb","_ref","min","max","value","_ref$ariaValueMin","ariaValueMin","ariaLabel","disabled","rest","_objectWithoutProperties","_excluded","React","createElement","ThumbBase","_extends","role"],"mappings":";;;;;;;;;IAKaA,KAAK,GAAG,SAARA,KAAKA,CAAAC,IAAA,EAA0F;AAAA,EAAA,IAApFC,GAAG,GAAAD,IAAA,CAAHC,GAAG;IAAEC,GAAG,GAAAF,IAAA,CAAHE,GAAG;IAAEC,KAAK,GAAAH,IAAA,CAALG,KAAK;IAAAC,iBAAA,GAAAJ,IAAA,CAAEK,YAAY;AAAZA,IAAAA,YAAY,GAAAD,iBAAA,KAAGH,KAAAA,CAAAA,GAAAA,GAAG,GAAAG,iBAAA;IAAEE,SAAS,GAAAN,IAAA,CAATM,SAAS;IAAEC,QAAQ,GAAAP,IAAA,CAARO,QAAQ;AAAKC,IAAAA,IAAI,GAAAC,iDAAA,CAAAT,IAAA,EAAAU,SAAA,CAAA,CAAA;AACrF,EAAA,oBACIC,KAAA,CAAAC,aAAA,CAACC,sBAAS,EAAAC,iCAAA,CAAA;AACNC,IAAAA,IAAI,EAAC,QAAQ;AACb,IAAA,YAAA,EAAYT,SAAU;AACtB,IAAA,eAAA,EAAeD,YAAa;AAC5B,IAAA,eAAA,EAAeH,GAAI;AACnB,IAAA,eAAA,EAAeC,KAAM;AACrBI,IAAAA,QAAQ,EAAEA,QAAS;IACnB,kBAAiB,EAAA,YAAA;GACbC,EAAAA,IAAI,CACX,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"Thumb.js","sources":["../../../../../src/components/Slider/ui/Thumb/Thumb.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { ThumbProps } from './Thumb.types';\nimport { ThumbBase } from './Thumb.styles';\n\nexport const Thumb = ({\n min,\n max,\n value,\n ariaValueMin = min,\n ariaLabel,\n disabled,\n orientation,\n ...rest\n}: ThumbProps) => {\n return (\n <ThumbBase\n role=\"slider\"\n aria-label={ariaLabel}\n aria-valuemin={ariaValueMin}\n aria-valuemax={max}\n aria-valuenow={value}\n disabled={disabled}\n aria-orientation={orientation}\n {...rest}\n />\n );\n};\n"],"names":["Thumb","_ref","min","max","value","_ref$ariaValueMin","ariaValueMin","ariaLabel","disabled","orientation","rest","_objectWithoutProperties","_excluded","React","createElement","ThumbBase","_extends","role"],"mappings":";;;;;;;;;IAKaA,KAAK,GAAG,SAARA,KAAKA,CAAAC,IAAA,EASA;AAAA,EAAA,IARdC,GAAG,GAAAD,IAAA,CAAHC,GAAG;IACHC,GAAG,GAAAF,IAAA,CAAHE,GAAG;IACHC,KAAK,GAAAH,IAAA,CAALG,KAAK;IAAAC,iBAAA,GAAAJ,IAAA,CACLK,YAAY;AAAZA,IAAAA,YAAY,GAAAD,iBAAA,KAAGH,KAAAA,CAAAA,GAAAA,GAAG,GAAAG,iBAAA;IAClBE,SAAS,GAAAN,IAAA,CAATM,SAAS;IACTC,QAAQ,GAAAP,IAAA,CAARO,QAAQ;IACRC,WAAW,GAAAR,IAAA,CAAXQ,WAAW;AACRC,IAAAA,IAAI,GAAAC,iDAAA,CAAAV,IAAA,EAAAW,SAAA,CAAA,CAAA;AAEP,EAAA,oBACIC,KAAA,CAAAC,aAAA,CAACC,sBAAS,EAAAC,iCAAA,CAAA;AACNC,IAAAA,IAAI,EAAC,QAAQ;AACb,IAAA,YAAA,EAAYV,SAAU;AACtB,IAAA,eAAA,EAAeD,YAAa;AAC5B,IAAA,eAAA,EAAeH,GAAI;AACnB,IAAA,eAAA,EAAeC,KAAM;AACrBI,IAAAA,QAAQ,EAAEA,QAAS;IACnB,kBAAkBC,EAAAA,WAAAA;GACdC,EAAAA,IAAI,CACX,CAAC,CAAA;AAEV;;;;"}
@@ -1,4 +1,4 @@
1
- import './Thumb.styles_4w4gzn.css';
1
+ import './Thumb.styles_uyn20e.css';
2
2
  'use strict';
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"Thumb.styles.js","sources":["../../../../../src/components/Slider/ui/Thumb/Thumb.styles.ts"],"sourcesContent":["import { styled } from '@linaria/react';\n\nimport { addFocus } from '../../../../mixins';\nimport { tokens } from '../../Slider.tokens';\n\nexport const ThumbBase = styled.div<{ disabled?: boolean }>`\n width: var(${tokens.thumbSize});\n height: var(${tokens.thumbSize});\n position: relative;\n left: -0.125rem;\n top: -0.125rem;\n border-radius: 50%;\n box-sizing: border-box;\n background: var(${tokens.thumbBackgroundColor});\n margin: 0.125rem;\n transition: border-color 0.1s ease-in-out;\n\n &:after {\n background: var(${tokens.thumbBorderColor});\n margin: -0.125rem;\n content: '';\n position: absolute;\n inset: 0;\n z-index: -1;\n border-radius: inherit;\n }\n\n &:not([disabled]):hover:after,\n &:not([disabled]):active:after {\n background: var(${tokens.thumbFocusBorderColor});\n }\n\n &[disabled] {\n cursor: not-allowed;\n }\n\n &:focus {\n outline: none;\n }\n\n ${addFocus({\n outlineOffset: '0.125rem',\n outlineSize: '0.125rem',\n outlineRadius: '50%',\n outlineColor: `var(${tokens.thumbFocusBorderColor})`,\n })}\n`;\n"],"names":["ThumbBase","styled","name","class","propsAsIs"],"mappings":";;;;;;AAKO,IAAMA,SAAS,gBAAGC,YAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,WAAA;AAAAC,EAAAA,OAAAA,EAAA,SAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CAyC9B;;;;"}
1
+ {"version":3,"file":"Thumb.styles.js","sources":["../../../../../src/components/Slider/ui/Thumb/Thumb.styles.ts"],"sourcesContent":["import { styled } from '@linaria/react';\n\nimport { addFocus } from '../../../../mixins';\nimport { tokens } from '../../Slider.tokens';\n\nexport const ThumbBase = styled.div<{ disabled?: boolean }>`\n width: var(--thumb-size);\n height: var(--thumb-size);\n min-width: var(--thumb-size);\n min-height: var(--thumb-size);\n\n position: relative;\n border-radius: 50%;\n box-sizing: border-box;\n background: var(${tokens.thumbBackgroundColor});\n margin: 0.0625rem;\n transition: border-color 0.1s ease-in-out;\n\n &:after {\n background: var(${tokens.thumbBorderColor});\n margin: -0.0625rem;\n content: '';\n position: absolute;\n inset: 0;\n z-index: -1;\n border-radius: inherit;\n }\n\n &:not([disabled]):hover:after,\n &:not([disabled]):active:after {\n background: var(${tokens.thumbFocusBorderColor});\n }\n\n &[disabled] {\n cursor: not-allowed;\n }\n\n &:focus {\n outline: none;\n }\n\n ${addFocus({\n outlineOffset: '0.0625rem',\n outlineSize: '0.125rem',\n outlineRadius: '50%',\n outlineColor: `var(${tokens.thumbFocusBorderColor})`,\n })}\n`;\n"],"names":["ThumbBase","styled","name","class","propsAsIs"],"mappings":";;;;;;AAKO,IAAMA,SAAS,gBAAGC,YAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,WAAA;AAAAC,EAAAA,OAAAA,EAAA,SAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CA0C9B;;;;"}
@@ -0,0 +1 @@
1
+ .tqbdf8b{width:var(--thumb-size);height:var(--thumb-size);min-width:var(--thumb-size);min-height:var(--thumb-size);position:relative;border-radius:50%;box-sizing:border-box;background:var(--plasma-slider-thumb-background-color);margin:0.0625rem;-webkit-transition:border-color 0.1s ease-in-out;transition:border-color 0.1s ease-in-out;position:relative;}.tqbdf8b:after{background:var(--plasma-slider-thumb-border-color);margin:-0.0625rem;content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;}.tqbdf8b:not([disabled]):hover:after,.tqbdf8b:not([disabled]):active:after{background:var(--plasma-slider-thumb-focus-border-color);}.tqbdf8b[disabled]{cursor:not-allowed;}.tqbdf8b:focus{outline:none;}.tqbdf8b::before{content:'';position:absolute;top:0.0625rem;left:0.0625rem;right:0.0625rem;bottom:0.0625rem;z-index:1;display:block;box-sizing:content-box;border:0.125rem solid transparent;border-radius:50%;-webkit-transition:box-shadow 0.2s ease-in-out;transition:box-shadow 0.2s ease-in-out;pointer-events:none;}.tqbdf8b.focus-visible:focus::before,.tqbdf8b[data-focus-visible-added]::before{outline:none;box-shadow:0 0 0 0.125rem var(--plasma-slider-thumb-focus-border-color);}
@@ -10,8 +10,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
10
10
  * @param {number} max
11
11
  * @return {number}
12
12
  */
13
- function getSliderThumbValue(handleCenterXRelative, stepSize, min, max) {
14
- var newValue = Math.round(handleCenterXRelative / stepSize) + min;
13
+ function getSliderThumbValue(handleCenterPosRelative, stepSize, min, max) {
14
+ var newValue = Math.round(handleCenterPosRelative / stepSize) + min;
15
15
  return Math.min(Math.max(newValue, min), max);
16
16
  }
17
17
 
@@ -22,11 +22,11 @@ function getSliderThumbValue(handleCenterXRelative, stepSize, min, max) {
22
22
  * @param {'left' | 'right'} side
23
23
  * @return Array<number>
24
24
  */
25
- function getOffsets(ref, side) {
25
+ function getOffsets(ref, side, isVertical) {
26
26
  if (!ref || !('current' in ref) || !ref.current || !side) {
27
27
  return [0, 0];
28
28
  }
29
- var size = ref.current.clientWidth;
29
+ var size = isVertical ? ref.current.clientHeight : ref.current.clientWidth;
30
30
  if (side === 'left') {
31
31
  return [0, size];
32
32
  }
@@ -37,16 +37,34 @@ function getOffsets(ref, side) {
37
37
  }
38
38
  var sizeData = {
39
39
  s: {
40
- indent: 0.5,
41
- fontSizeMultiplier: 16
40
+ small: {
41
+ indent: 0.5,
42
+ fontSizeMultiplier: 16
43
+ },
44
+ large: {
45
+ indent: 0.625,
46
+ fontSizeMultiplier: 16
47
+ }
42
48
  },
43
49
  m: {
44
- indent: 0.75,
45
- fontSizeMultiplier: 16
50
+ small: {
51
+ indent: 0.5,
52
+ fontSizeMultiplier: 16
53
+ },
54
+ large: {
55
+ indent: 0.625,
56
+ fontSizeMultiplier: 16
57
+ }
46
58
  },
47
59
  l: {
48
- indent: 0.75,
49
- fontSizeMultiplier: 16
60
+ small: {
61
+ indent: 0.5,
62
+ fontSizeMultiplier: 16
63
+ },
64
+ large: {
65
+ indent: 0.625,
66
+ fontSizeMultiplier: 16
67
+ }
50
68
  }
51
69
  };
52
70
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Slider/utils/index.ts"],"sourcesContent":["import { MutableRefObject } from 'react';\n\n/**\n * Расчитать значение слайдера с учетом его координат и шага изменений.\n * @param {number} handleCenterXRelative\n * @param {number} stepSize\n * @param {number} min\n * @param {number} max\n * @return {number}\n */\nexport function getSliderThumbValue(handleCenterXRelative: number, stepSize: number, min: number, max: number) {\n const newValue = Math.round(handleCenterXRelative / stepSize) + min;\n\n return Math.min(Math.max(newValue, min), max);\n}\n\n/**\n * Расчитывает значение отступа слайдера на основе его положения (справа, слева) на отрезке слайдера.\n * Значение используется для правильного расчета ограничения движения слайдера.\n * @param ref\n * @param {'left' | 'right'} side\n * @return Array<number>\n */\nexport function getOffsets(\n ref: ((instance: HTMLDivElement | null) => void) | MutableRefObject<HTMLDivElement | null> | null,\n side?: 'left' | 'right',\n): number[] {\n if (!ref || !('current' in ref) || !ref.current || !side) {\n return [0, 0];\n }\n\n const size = ref.current.clientWidth;\n\n if (side === 'left') {\n return [0, size];\n }\n\n if (side === 'right') {\n return [size, 0];\n }\n\n return [0, 0];\n}\n\nexport const sizeData = {\n s: {\n indent: 0.5,\n fontSizeMultiplier: 16,\n },\n m: {\n indent: 0.75,\n fontSizeMultiplier: 16,\n },\n l: {\n indent: 0.75,\n fontSizeMultiplier: 16,\n },\n};\n"],"names":["getSliderThumbValue","handleCenterXRelative","stepSize","min","max","newValue","Math","round","getOffsets","ref","side","current","size","clientWidth","sizeData","s","indent","fontSizeMultiplier","m","l"],"mappings":";;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,mBAAmBA,CAACC,qBAA6B,EAAEC,QAAgB,EAAEC,GAAW,EAAEC,GAAW,EAAE;EAC3G,IAAMC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACN,qBAAqB,GAAGC,QAAQ,CAAC,GAAGC,GAAG,CAAA;AAEnE,EAAA,OAAOG,IAAI,CAACH,GAAG,CAACG,IAAI,CAACF,GAAG,CAACC,QAAQ,EAAEF,GAAG,CAAC,EAAEC,GAAG,CAAC,CAAA;AACjD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,UAAUA,CACtBC,GAAiG,EACjGC,IAAuB,EACf;AACR,EAAA,IAAI,CAACD,GAAG,IAAI,EAAE,SAAS,IAAIA,GAAG,CAAC,IAAI,CAACA,GAAG,CAACE,OAAO,IAAI,CAACD,IAAI,EAAE;AACtD,IAAA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACjB,GAAA;AAEA,EAAA,IAAME,IAAI,GAAGH,GAAG,CAACE,OAAO,CAACE,WAAW,CAAA;EAEpC,IAAIH,IAAI,KAAK,MAAM,EAAE;AACjB,IAAA,OAAO,CAAC,CAAC,EAAEE,IAAI,CAAC,CAAA;AACpB,GAAA;EAEA,IAAIF,IAAI,KAAK,OAAO,EAAE;AAClB,IAAA,OAAO,CAACE,IAAI,EAAE,CAAC,CAAC,CAAA;AACpB,GAAA;AAEA,EAAA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACjB,CAAA;AAEO,IAAME,QAAQ,GAAG;AACpBC,EAAAA,CAAC,EAAE;AACCC,IAAAA,MAAM,EAAE,GAAG;AACXC,IAAAA,kBAAkB,EAAE,EAAA;GACvB;AACDC,EAAAA,CAAC,EAAE;AACCF,IAAAA,MAAM,EAAE,IAAI;AACZC,IAAAA,kBAAkB,EAAE,EAAA;GACvB;AACDE,EAAAA,CAAC,EAAE;AACCH,IAAAA,MAAM,EAAE,IAAI;AACZC,IAAAA,kBAAkB,EAAE,EAAA;AACxB,GAAA;AACJ;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/Slider/utils/index.ts"],"sourcesContent":["import { MutableRefObject } from 'react';\n\n/**\n * Расчитать значение слайдера с учетом его координат и шага изменений.\n * @param {number} handleCenterXRelative\n * @param {number} stepSize\n * @param {number} min\n * @param {number} max\n * @return {number}\n */\nexport function getSliderThumbValue(handleCenterPosRelative: number, stepSize: number, min: number, max: number) {\n const newValue = Math.round(handleCenterPosRelative / stepSize) + min;\n\n return Math.min(Math.max(newValue, min), max);\n}\n\n/**\n * Расчитывает значение отступа слайдера на основе его положения (справа, слева) на отрезке слайдера.\n * Значение используется для правильного расчета ограничения движения слайдера.\n * @param ref\n * @param {'left' | 'right'} side\n * @return Array<number>\n */\nexport function getOffsets(\n ref: ((instance: HTMLDivElement | null) => void) | MutableRefObject<HTMLDivElement | null> | null,\n side?: 'left' | 'right',\n isVertical?: boolean,\n): number[] {\n if (!ref || !('current' in ref) || !ref.current || !side) {\n return [0, 0];\n }\n\n const size = isVertical ? ref.current.clientHeight : ref.current.clientWidth;\n\n if (side === 'left') {\n return [0, size];\n }\n\n if (side === 'right') {\n return [size, 0];\n }\n\n return [0, 0];\n}\n\nexport const sizeData = {\n s: {\n small: {\n indent: 0.5,\n fontSizeMultiplier: 16,\n },\n large: {\n indent: 0.625,\n fontSizeMultiplier: 16,\n },\n },\n m: {\n small: {\n indent: 0.5,\n fontSizeMultiplier: 16,\n },\n large: {\n indent: 0.625,\n fontSizeMultiplier: 16,\n },\n },\n l: {\n small: {\n indent: 0.5,\n fontSizeMultiplier: 16,\n },\n large: {\n indent: 0.625,\n fontSizeMultiplier: 16,\n },\n },\n};\n"],"names":["getSliderThumbValue","handleCenterPosRelative","stepSize","min","max","newValue","Math","round","getOffsets","ref","side","isVertical","current","size","clientHeight","clientWidth","sizeData","s","small","indent","fontSizeMultiplier","large","m","l"],"mappings":";;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,mBAAmBA,CAACC,uBAA+B,EAAEC,QAAgB,EAAEC,GAAW,EAAEC,GAAW,EAAE;EAC7G,IAAMC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACN,uBAAuB,GAAGC,QAAQ,CAAC,GAAGC,GAAG,CAAA;AAErE,EAAA,OAAOG,IAAI,CAACH,GAAG,CAACG,IAAI,CAACF,GAAG,CAACC,QAAQ,EAAEF,GAAG,CAAC,EAAEC,GAAG,CAAC,CAAA;AACjD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,UAAUA,CACtBC,GAAiG,EACjGC,IAAuB,EACvBC,UAAoB,EACZ;AACR,EAAA,IAAI,CAACF,GAAG,IAAI,EAAE,SAAS,IAAIA,GAAG,CAAC,IAAI,CAACA,GAAG,CAACG,OAAO,IAAI,CAACF,IAAI,EAAE;AACtD,IAAA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACjB,GAAA;AAEA,EAAA,IAAMG,IAAI,GAAGF,UAAU,GAAGF,GAAG,CAACG,OAAO,CAACE,YAAY,GAAGL,GAAG,CAACG,OAAO,CAACG,WAAW,CAAA;EAE5E,IAAIL,IAAI,KAAK,MAAM,EAAE;AACjB,IAAA,OAAO,CAAC,CAAC,EAAEG,IAAI,CAAC,CAAA;AACpB,GAAA;EAEA,IAAIH,IAAI,KAAK,OAAO,EAAE;AAClB,IAAA,OAAO,CAACG,IAAI,EAAE,CAAC,CAAC,CAAA;AACpB,GAAA;AAEA,EAAA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACjB,CAAA;AAEO,IAAMG,QAAQ,GAAG;AACpBC,EAAAA,CAAC,EAAE;AACCC,IAAAA,KAAK,EAAE;AACHC,MAAAA,MAAM,EAAE,GAAG;AACXC,MAAAA,kBAAkB,EAAE,EAAA;KACvB;AACDC,IAAAA,KAAK,EAAE;AACHF,MAAAA,MAAM,EAAE,KAAK;AACbC,MAAAA,kBAAkB,EAAE,EAAA;AACxB,KAAA;GACH;AACDE,EAAAA,CAAC,EAAE;AACCJ,IAAAA,KAAK,EAAE;AACHC,MAAAA,MAAM,EAAE,GAAG;AACXC,MAAAA,kBAAkB,EAAE,EAAA;KACvB;AACDC,IAAAA,KAAK,EAAE;AACHF,MAAAA,MAAM,EAAE,KAAK;AACbC,MAAAA,kBAAkB,EAAE,EAAA;AACxB,KAAA;GACH;AACDG,EAAAA,CAAC,EAAE;AACCL,IAAAA,KAAK,EAAE;AACHC,MAAAA,MAAM,EAAE,GAAG;AACXC,MAAAA,kBAAkB,EAAE,EAAA;KACvB;AACDC,IAAAA,KAAK,EAAE;AACHF,MAAAA,MAAM,EAAE,KAAK;AACbC,MAAAA,kBAAkB,EAAE,EAAA;AACxB,KAAA;AACJ,GAAA;AACJ;;;;;;"}
@@ -1,4 +1,4 @@
1
- import './base_x642ct.css';
1
+ import './base_1s3f6q8.css';
2
2
  'use strict';
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sources":["../../../../../src/components/Slider/variations/_view/base.tsx"],"sourcesContent":["import { css } from '@linaria/core';\n\nexport const base = css``;\n"],"names":["base"],"mappings":";;;;AAEO,IAAMA,IAAI,GAAQ;;;;"}
1
+ {"version":3,"file":"base.js","sources":["../../../../../src/components/Slider/variations/_view/base.tsx"],"sourcesContent":["import { css } from '@linaria/core';\n\nimport { classes } from '../../Slider.tokens';\n\nexport const base = css`\n &.${classes.verticalOrientation} {\n height: 100%;\n display: inline-flex;\n }\n`;\n"],"names":["base"],"mappings":";;;;AAIO,IAAMA,IAAI,GAKhB;;;;"}
@@ -0,0 +1 @@
1
+ .b1c93yiw.slider-vertical-orientation{height:100%;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}
@@ -82,7 +82,7 @@ var horizontalTabsRoot = function horizontalTabsRoot(Root) {
82
82
  });
83
83
  firstOverflowingTab === null || firstOverflowingTab === void 0 || (_firstOverflowingTab$ = firstOverflowingTab.current) === null || _firstOverflowingTab$ === void 0 || _firstOverflowingTab$.scrollIntoView({
84
84
  block: 'nearest',
85
- inline: 'start'
85
+ inline: 'nearest'
86
86
  });
87
87
  }, [disabled, scrollRef, refs]);
88
88
  var onNext = React.useCallback(function () {
@@ -100,7 +100,7 @@ var horizontalTabsRoot = function horizontalTabsRoot(Root) {
100
100
  });
101
101
  lastOverflowingTab === null || lastOverflowingTab === void 0 || (_lastOverflowingTab$c = lastOverflowingTab.current) === null || _lastOverflowingTab$c === void 0 || _lastOverflowingTab$c.scrollIntoView({
102
102
  block: 'nearest',
103
- inline: 'end'
103
+ inline: 'nearest'
104
104
  });
105
105
  }, [disabled, scrollRef, refs]);
106
106
  var PreviousButton = React.useMemo(function () {
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalTabs.js","sources":["../../../../../../src/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport type { MutableRefObject } from 'react';\nimport { safeUseId } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../../../../engines/types';\nimport { IconDisclosureLeft, IconDisclosureRight } from '../../../../_Icon';\nimport { classes, tokens } from '../../../tokens';\nimport { cx } from '../../../../../utils';\nimport { TabItemRefs, TabsContext } from '../../../TabsContext';\nimport type { HorizontalTabsProps } from '../../../Tabs.types';\n\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\nimport { base as pilledCSS } from './variations/_pilled/base';\nimport { base as stretchCSS } from './variations/_stretch/base';\nimport { StyledArrow, StyledContent, StyledContentWrapper, base } from './HorizontalTabs.styles';\n\nenum Keys {\n end = 35,\n home = 36,\n left = 37,\n right = 39,\n}\n\n// TODO: https://github.com/salute-developers/plasma/issues/1474\nexport const horizontalTabsRoot = (Root: RootProps<HTMLDivElement, HorizontalTabsProps>) =>\n forwardRef<HTMLDivElement, HorizontalTabsProps>((props, outerRef) => {\n const {\n id,\n stretch = false,\n disabled = false,\n clip = 'scroll',\n size,\n view,\n children,\n pilled = false,\n index,\n className,\n ...rest\n } = props;\n const [firstItemVisible, setFirstItemVisible] = useState(true);\n const [lastItemVisible, setLastItemVisible] = useState(true);\n\n const refs = useMemo(() => new TabItemRefs(index), []);\n\n const uniqId = safeUseId();\n const tabsId = id || uniqId;\n\n const isFilled = view === 'filled'; // outer padding is only for filled view\n const pilledAttr = view !== 'clear' && pilled;\n const pilledClass = pilledAttr ? classes.tabsPilled : undefined;\n\n const stretchClass = firstItemVisible && lastItemVisible && stretch ? classes.tabsStretch : undefined;\n const hasLeftArrowClass = !firstItemVisible ? classes.tabsHasLeftArrow : undefined;\n const hasRightArrowClass = !lastItemVisible ? classes.tabsHasRightArrow : undefined;\n const clipScrollClass = clip === 'scroll' ? classes.tabsClipScroll : undefined;\n const clipShowAllClass = clip === 'showAll' ? classes.tabsClipShowAll : undefined;\n\n const scrollRef = useRef<HTMLElement | null>(null);\n const trackRef = useRef<HTMLElement | null>(null);\n const leftArrowRef = useRef<HTMLButtonElement | null>(null);\n\n const onPrev = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollLeft = Math.round(scrollRef.current.scrollLeft);\n const firstOverflowingTab = refs.items\n .slice()\n .reverse()\n .find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetLeft === undefined) {\n return;\n }\n const tabStartX = item.current.offsetLeft;\n\n return tabStartX < scrollLeft;\n });\n\n firstOverflowingTab?.current?.scrollIntoView({ block: 'nearest', inline: 'start' });\n }, [disabled, scrollRef, refs]);\n\n const onNext = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollRight = Math.round(scrollRef.current.scrollLeft + scrollRef.current.clientWidth);\n const lastOverflowingTab = refs.items.find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetLeft === undefined) {\n return;\n }\n const tabEndX = item.current.offsetLeft + item.current.offsetWidth;\n\n return tabEndX > scrollRight;\n });\n\n lastOverflowingTab?.current?.scrollIntoView({ block: 'nearest', inline: 'end' });\n }, [disabled, scrollRef, refs]);\n\n const PreviousButton = useMemo(\n () => (\n <StyledArrow\n type=\"button\"\n aria-label=\"Предыдущий таб\"\n onClick={onPrev}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n isFilled={isFilled}\n ref={leftArrowRef}\n isLeftArrow\n >\n <IconDisclosureLeft color={`var(${tokens.arrowColor})`} />\n </StyledArrow>\n ),\n [onPrev, disabled, isFilled],\n );\n\n const NextButton = useMemo(\n () => (\n <StyledArrow\n type=\"button\"\n aria-label=\"Следующий таб\"\n onClick={onNext}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n isFilled={isFilled}\n >\n <IconDisclosureRight color={`var(${tokens.arrowColor})`} />\n </StyledArrow>\n ),\n [onNext, disabled, isFilled],\n );\n\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLElement>): void => {\n event.stopPropagation();\n const maxScrollLeft = event.currentTarget.scrollWidth - event.currentTarget.clientWidth;\n const scrollLeft = Math.round(event.currentTarget.scrollLeft);\n\n setFirstItemVisible(scrollLeft <= 0);\n setLastItemVisible(scrollLeft >= maxScrollLeft);\n },\n [setFirstItemVisible, setLastItemVisible],\n );\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (index === undefined) {\n return;\n }\n\n const minIndex = 0;\n const maxIndex = refs.items.length - 1;\n let nextIndex: number;\n\n switch (event.keyCode) {\n case Keys.end:\n nextIndex = maxIndex;\n break;\n case Keys.left:\n nextIndex = index > minIndex ? index - 1 : index;\n break;\n case Keys.right:\n nextIndex = index < maxIndex ? index + 1 : index;\n break;\n case Keys.home:\n nextIndex = minIndex;\n break;\n default:\n return;\n }\n\n if (nextIndex !== index) {\n event.preventDefault();\n refs.items[nextIndex].current?.focus();\n refs.items[nextIndex].current?.scrollIntoView({\n block: 'nearest',\n inline: 'center',\n behavior: 'smooth',\n });\n }\n },\n [index],\n );\n\n useEffect(() => {\n setLastItemVisible(scrollRef.current?.scrollWidth === scrollRef.current?.clientWidth);\n }, []);\n\n // Этот хук компенсирует появление левой стрелки при прокрутке\n useEffect(() => {\n if (firstItemVisible || !scrollRef.current || !leftArrowRef.current) {\n return;\n }\n\n scrollRef.current.scrollTo({\n left: Math.round(scrollRef.current.scrollLeft + leftArrowRef.current.clientWidth),\n });\n }, [firstItemVisible, scrollRef, leftArrowRef]);\n\n return (\n <TabsContext.Provider value={refs}>\n <Root\n view={view}\n role=\"tablist\"\n size={size}\n pilled={pilled}\n id={tabsId}\n ref={outerRef}\n disabled={disabled}\n className={cx(pilledClass, stretchClass, hasLeftArrowClass, hasRightArrowClass, className)}\n onKeyDown={onKeyDown}\n {...rest}\n >\n {!firstItemVisible && PreviousButton}\n <StyledContentWrapper\n className={cx(clipScrollClass, clipShowAllClass)}\n ref={scrollRef as MutableRefObject<HTMLDivElement | null>}\n onScroll={handleScroll}\n >\n <StyledContent ref={trackRef as MutableRefObject<HTMLDivElement | null>}>\n {children}\n </StyledContent>\n </StyledContentWrapper>\n {!lastItemVisible && NextButton}\n </Root>\n </TabsContext.Provider>\n );\n });\n\nexport const horizontalTabsConfig = {\n name: 'HorizontalTabs',\n tag: 'div',\n layout: horizontalTabsRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n stretch: {\n css: stretchCSS,\n attrs: true,\n },\n pilled: {\n css: pilledCSS,\n },\n },\n defaults: {\n view: 'clear',\n size: 'xs',\n },\n};\n"],"names":["Keys","horizontalTabsRoot","Root","forwardRef","props","outerRef","id","_props$stretch","stretch","_props$disabled","disabled","_props$clip","clip","size","view","children","_props$pilled","pilled","index","className","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","firstItemVisible","setFirstItemVisible","_useState3","_useState4","lastItemVisible","setLastItemVisible","refs","useMemo","TabItemRefs","uniqId","safeUseId","tabsId","isFilled","pilledAttr","pilledClass","classes","tabsPilled","undefined","stretchClass","tabsStretch","hasLeftArrowClass","tabsHasLeftArrow","hasRightArrowClass","tabsHasRightArrow","clipScrollClass","tabsClipScroll","clipShowAllClass","tabsClipShowAll","scrollRef","useRef","trackRef","leftArrowRef","onPrev","useCallback","_firstOverflowingTab$","current","scrollLeft","Math","round","firstOverflowingTab","items","slice","reverse","find","item","offsetLeft","tabStartX","scrollIntoView","block","inline","onNext","_lastOverflowingTab$c","scrollRight","clientWidth","lastOverflowingTab","tabEndX","offsetWidth","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","isLeftArrow","IconDisclosureLeft","color","concat","tokens","arrowColor","NextButton","IconDisclosureRight","handleScroll","event","stopPropagation","maxScrollLeft","currentTarget","scrollWidth","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","left","right","home","_refs$items$nextIndex","_refs$items$nextIndex2","preventDefault","focus","behavior","useEffect","_scrollRef$current","_scrollRef$current2","scrollTo","TabsContext","Provider","value","_extends","role","cx","StyledContentWrapper","onScroll","StyledContent","horizontalTabsConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","stretchCSS","pilledCSS","defaults"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAgBiG,IAE5FA,IAAI,0BAAJA,IAAI,EAAA;AAAJA,EAAAA,IAAI,CAAJA,IAAI,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA,CAAA;AAAJA,EAAAA,IAAI,CAAJA,IAAI,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;AAAJA,EAAAA,IAAI,CAAJA,IAAI,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;AAAJA,EAAAA,IAAI,CAAJA,IAAI,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAA,CAAA;AAAA,EAAA,OAAJA,IAAI,CAAA;AAAA,CAAA,CAAJA,IAAI,IAOT,EAAA,CAAA,CAAA;IACaC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIC,IAAoD,EAAA;AAAA,EAAA,oBACnFC,gBAAU,CAAsC,UAACC,KAAK,EAAEC,QAAQ,EAAK;AACjE,IAAA,IACIC,EAAE,GAWFF,KAAK,CAXLE,EAAE;MAAAC,cAAA,GAWFH,KAAK,CAVLI,OAAO;AAAPA,MAAAA,OAAO,GAAAD,cAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,cAAA;MAAAE,eAAA,GAUfL,KAAK,CATLM,QAAQ;AAARA,MAAAA,QAAQ,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,eAAA;MAAAE,WAAA,GAShBP,KAAK,CARLQ,IAAI;AAAJA,MAAAA,IAAI,GAAAD,WAAA,KAAG,KAAA,CAAA,GAAA,QAAQ,GAAAA,WAAA;MACfE,IAAI,GAOJT,KAAK,CAPLS,IAAI;MACJC,IAAI,GAMJV,KAAK,CANLU,IAAI;MACJC,QAAQ,GAKRX,KAAK,CALLW,QAAQ;MAAAC,aAAA,GAKRZ,KAAK,CAJLa,MAAM;AAANA,MAAAA,MAAM,GAAAD,aAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,aAAA;MACdE,OAAK,GAGLd,KAAK,CAHLc,KAAK;MACLC,SAAS,GAETf,KAAK,CAFLe,SAAS;AACNC,MAAAA,IAAI,GAAAC,iDAAA,CACPjB,KAAK,EAAAkB,SAAA,CAAA,CAAA;AACT,IAAA,IAAAC,SAAA,GAAgDC,cAAQ,CAAC,IAAI,CAAC;MAAAC,UAAA,GAAAC,uCAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAvDI,MAAAA,gBAAgB,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,MAAAA,mBAAmB,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAC5C,IAAA,IAAAI,UAAA,GAA8CL,cAAQ,CAAC,IAAI,CAAC;MAAAM,UAAA,GAAAJ,uCAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAArDE,MAAAA,eAAe,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,MAAAA,kBAAkB,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;IAE1C,IAAMG,IAAI,GAAGC,aAAO,CAAC,YAAA;AAAA,MAAA,OAAM,IAAIC,uBAAW,CAACjB,OAAK,CAAC,CAAA;AAAA,KAAA,EAAE,EAAE,CAAC,CAAA;AAEtD,IAAA,IAAMkB,MAAM,GAAGC,oBAAS,EAAE,CAAA;AAC1B,IAAA,IAAMC,MAAM,GAAGhC,EAAE,IAAI8B,MAAM,CAAA;AAE3B,IAAA,IAAMG,QAAQ,GAAGzB,IAAI,KAAK,QAAQ,CAAC;AACnC,IAAA,IAAM0B,UAAU,GAAG1B,IAAI,KAAK,OAAO,IAAIG,MAAM,CAAA;IAC7C,IAAMwB,WAAW,GAAGD,UAAU,GAAGE,cAAO,CAACC,UAAU,GAAGC,SAAS,CAAA;AAE/D,IAAA,IAAMC,YAAY,GAAGlB,gBAAgB,IAAII,eAAe,IAAIvB,OAAO,GAAGkC,cAAO,CAACI,WAAW,GAAGF,SAAS,CAAA;IACrG,IAAMG,iBAAiB,GAAG,CAACpB,gBAAgB,GAAGe,cAAO,CAACM,gBAAgB,GAAGJ,SAAS,CAAA;IAClF,IAAMK,kBAAkB,GAAG,CAAClB,eAAe,GAAGW,cAAO,CAACQ,iBAAiB,GAAGN,SAAS,CAAA;IACnF,IAAMO,eAAe,GAAGvC,IAAI,KAAK,QAAQ,GAAG8B,cAAO,CAACU,cAAc,GAAGR,SAAS,CAAA;IAC9E,IAAMS,gBAAgB,GAAGzC,IAAI,KAAK,SAAS,GAAG8B,cAAO,CAACY,eAAe,GAAGV,SAAS,CAAA;AAEjF,IAAA,IAAMW,SAAS,GAAGC,YAAM,CAAqB,IAAI,CAAC,CAAA;AAClD,IAAA,IAAMC,QAAQ,GAAGD,YAAM,CAAqB,IAAI,CAAC,CAAA;AACjD,IAAA,IAAME,YAAY,GAAGF,YAAM,CAA2B,IAAI,CAAC,CAAA;AAE3D,IAAA,IAAMG,MAAM,GAAGC,iBAAW,CAAC,YAAM;AAAA,MAAA,IAAAC,qBAAA,CAAA;AAC7B,MAAA,IAAInD,QAAQ,IAAI,CAAC6C,SAAS,CAACO,OAAO,EAAE;AAChC,QAAA,OAAA;AACJ,OAAA;MAEA,IAAMC,UAAU,GAAGC,IAAI,CAACC,KAAK,CAACV,SAAS,CAACO,OAAO,CAACC,UAAU,CAAC,CAAA;AAC3D,MAAA,IAAMG,mBAAmB,GAAGjC,IAAI,CAACkC,KAAK,CACjCC,KAAK,EAAE,CACPC,OAAO,EAAE,CACTC,IAAI,CAAC,UAACC,IAA0C,EAAK;AAClD,QAAA,IAAI,CAACA,IAAI,CAACT,OAAO,IAAIS,IAAI,CAACT,OAAO,CAACU,UAAU,KAAK5B,SAAS,EAAE;AACxD,UAAA,OAAA;AACJ,SAAA;AACA,QAAA,IAAM6B,SAAS,GAAGF,IAAI,CAACT,OAAO,CAACU,UAAU,CAAA;QAEzC,OAAOC,SAAS,GAAGV,UAAU,CAAA;AACjC,OAAC,CAAC,CAAA;AAENG,MAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAAL,KAAAA,CAAAA,IAAAA,CAAAA,qBAAA,GAAnBK,mBAAmB,CAAEJ,OAAO,MAAA,IAAA,IAAAD,qBAAA,KAAA,KAAA,CAAA,IAA5BA,qBAAA,CAA8Ba,cAAc,CAAC;AAAEC,QAAAA,KAAK,EAAE,SAAS;AAAEC,QAAAA,MAAM,EAAE,OAAA;AAAQ,OAAC,CAAC,CAAA;KACtF,EAAE,CAAClE,QAAQ,EAAE6C,SAAS,EAAEtB,IAAI,CAAC,CAAC,CAAA;AAE/B,IAAA,IAAM4C,MAAM,GAAGjB,iBAAW,CAAC,YAAM;AAAA,MAAA,IAAAkB,qBAAA,CAAA;AAC7B,MAAA,IAAIpE,QAAQ,IAAI,CAAC6C,SAAS,CAACO,OAAO,EAAE;AAChC,QAAA,OAAA;AACJ,OAAA;AAEA,MAAA,IAAMiB,WAAW,GAAGf,IAAI,CAACC,KAAK,CAACV,SAAS,CAACO,OAAO,CAACC,UAAU,GAAGR,SAAS,CAACO,OAAO,CAACkB,WAAW,CAAC,CAAA;MAC5F,IAAMC,kBAAkB,GAAGhD,IAAI,CAACkC,KAAK,CAACG,IAAI,CAAC,UAACC,IAA0C,EAAK;AACvF,QAAA,IAAI,CAACA,IAAI,CAACT,OAAO,IAAIS,IAAI,CAACT,OAAO,CAACU,UAAU,KAAK5B,SAAS,EAAE;AACxD,UAAA,OAAA;AACJ,SAAA;AACA,QAAA,IAAMsC,OAAO,GAAGX,IAAI,CAACT,OAAO,CAACU,UAAU,GAAGD,IAAI,CAACT,OAAO,CAACqB,WAAW,CAAA;QAElE,OAAOD,OAAO,GAAGH,WAAW,CAAA;AAChC,OAAC,CAAC,CAAA;AAEFE,MAAAA,kBAAkB,KAAlBA,IAAAA,IAAAA,kBAAkB,KAAAH,KAAAA,CAAAA,IAAAA,CAAAA,qBAAA,GAAlBG,kBAAkB,CAAEnB,OAAO,MAAA,IAAA,IAAAgB,qBAAA,KAAA,KAAA,CAAA,IAA3BA,qBAAA,CAA6BJ,cAAc,CAAC;AAAEC,QAAAA,KAAK,EAAE,SAAS;AAAEC,QAAAA,MAAM,EAAE,KAAA;AAAM,OAAC,CAAC,CAAA;KACnF,EAAE,CAAClE,QAAQ,EAAE6C,SAAS,EAAEtB,IAAI,CAAC,CAAC,CAAA;IAE/B,IAAMmD,cAAc,GAAGlD,aAAO,CAC1B,YAAA;AAAA,MAAA,oBACImD,KAAA,CAAAC,aAAA,CAACC,iCAAW,EAAA;AACRC,QAAAA,IAAI,EAAC,QAAQ;AACb,QAAA,YAAA,EAAW,iFAAgB;AAC3BC,QAAAA,OAAO,EAAE9B,MAAO;AAChB+B,QAAAA,QAAQ,EAAEhF,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAE;AAC5BA,QAAAA,QAAQ,EAAEA,QAAS;AACnB6B,QAAAA,QAAQ,EAAEA,QAAS;AACnBoD,QAAAA,GAAG,EAAEjC,YAAa;QAClBkC,WAAW,EAAA,IAAA;AAAA,OAAA,eAEXP,KAAA,CAAAC,aAAA,CAACO,qCAAkB,EAAA;AAACC,QAAAA,KAAK,EAAAC,MAAAA,CAAAA,MAAA,CAASC,aAAM,CAACC,UAAU,EAAA,GAAA,CAAA;AAAI,OAAE,CAChD,CAAC,CAAA;KACjB,EACD,CAACtC,MAAM,EAAEjD,QAAQ,EAAE6B,QAAQ,CAC/B,CAAC,CAAA;IAED,IAAM2D,UAAU,GAAGhE,aAAO,CACtB,YAAA;AAAA,MAAA,oBACImD,KAAA,CAAAC,aAAA,CAACC,iCAAW,EAAA;AACRC,QAAAA,IAAI,EAAC,QAAQ;AACb,QAAA,YAAA,EAAW,2EAAe;AAC1BC,QAAAA,OAAO,EAAEZ,MAAO;AAChBa,QAAAA,QAAQ,EAAEhF,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAE;AAC5BA,QAAAA,QAAQ,EAAEA,QAAS;AACnB6B,QAAAA,QAAQ,EAAEA,QAAAA;AAAS,OAAA,eAEnB8C,KAAA,CAAAC,aAAA,CAACa,uCAAmB,EAAA;AAACL,QAAAA,KAAK,EAAAC,MAAAA,CAAAA,MAAA,CAASC,aAAM,CAACC,UAAU,EAAA,GAAA,CAAA;AAAI,OAAE,CACjD,CAAC,CAAA;KACjB,EACD,CAACpB,MAAM,EAAEnE,QAAQ,EAAE6B,QAAQ,CAC/B,CAAC,CAAA;AAED,IAAA,IAAM6D,YAAY,GAAGxC,iBAAW,CAC5B,UAACyC,KAAiC,EAAW;MACzCA,KAAK,CAACC,eAAe,EAAE,CAAA;AACvB,MAAA,IAAMC,aAAa,GAAGF,KAAK,CAACG,aAAa,CAACC,WAAW,GAAGJ,KAAK,CAACG,aAAa,CAACxB,WAAW,CAAA;MACvF,IAAMjB,UAAU,GAAGC,IAAI,CAACC,KAAK,CAACoC,KAAK,CAACG,aAAa,CAACzC,UAAU,CAAC,CAAA;AAE7DnC,MAAAA,mBAAmB,CAACmC,UAAU,IAAI,CAAC,CAAC,CAAA;AACpC/B,MAAAA,kBAAkB,CAAC+B,UAAU,IAAIwC,aAAa,CAAC,CAAA;AACnD,KAAC,EACD,CAAC3E,mBAAmB,EAAEI,kBAAkB,CAC5C,CAAC,CAAA;AAED,IAAA,IAAM0E,SAAS,GAAG9C,iBAAW,CACzB,UAACyC,KAAoC,EAAK;MACtC,IAAInF,OAAK,KAAK0B,SAAS,EAAE;AACrB,QAAA,OAAA;AACJ,OAAA;MAEA,IAAM+D,QAAQ,GAAG,CAAC,CAAA;MAClB,IAAMC,QAAQ,GAAG3E,IAAI,CAACkC,KAAK,CAAC0C,MAAM,GAAG,CAAC,CAAA;AACtC,MAAA,IAAIC,SAAiB,CAAA;MAErB,QAAQT,KAAK,CAACU,OAAO;QACjB,KAAK/G,IAAI,CAACgH,GAAG;AACTF,UAAAA,SAAS,GAAGF,QAAQ,CAAA;AACpB,UAAA,MAAA;QACJ,KAAK5G,IAAI,CAACiH,IAAI;UACVH,SAAS,GAAG5F,OAAK,GAAGyF,QAAQ,GAAGzF,OAAK,GAAG,CAAC,GAAGA,OAAK,CAAA;AAChD,UAAA,MAAA;QACJ,KAAKlB,IAAI,CAACkH,KAAK;UACXJ,SAAS,GAAG5F,OAAK,GAAG0F,QAAQ,GAAG1F,OAAK,GAAG,CAAC,GAAGA,OAAK,CAAA;AAChD,UAAA,MAAA;QACJ,KAAKlB,IAAI,CAACmH,IAAI;AACVL,UAAAA,SAAS,GAAGH,QAAQ,CAAA;AACpB,UAAA,MAAA;AACJ,QAAA;AACI,UAAA,OAAA;AACR,OAAA;MAEA,IAAIG,SAAS,KAAK5F,OAAK,EAAE;QAAA,IAAAkG,qBAAA,EAAAC,sBAAA,CAAA;QACrBhB,KAAK,CAACiB,cAAc,EAAE,CAAA;AACtB,QAAA,CAAAF,qBAAA,GAAAnF,IAAI,CAACkC,KAAK,CAAC2C,SAAS,CAAC,CAAChD,OAAO,cAAAsD,qBAAA,KAAA,KAAA,CAAA,IAA7BA,qBAAA,CAA+BG,KAAK,EAAE,CAAA;AACtC,QAAA,CAAAF,sBAAA,GAAApF,IAAI,CAACkC,KAAK,CAAC2C,SAAS,CAAC,CAAChD,OAAO,cAAAuD,sBAAA,KAAA,KAAA,CAAA,IAA7BA,sBAAA,CAA+B3C,cAAc,CAAC;AAC1CC,UAAAA,KAAK,EAAE,SAAS;AAChBC,UAAAA,MAAM,EAAE,QAAQ;AAChB4C,UAAAA,QAAQ,EAAE,QAAA;AACd,SAAC,CAAC,CAAA;AACN,OAAA;AACJ,KAAC,EACD,CAACtG,OAAK,CACV,CAAC,CAAA;AAEDuG,IAAAA,eAAS,CAAC,YAAM;MAAA,IAAAC,kBAAA,EAAAC,mBAAA,CAAA;MACZ3F,kBAAkB,CAAC,CAAA0F,CAAAA,kBAAA,GAAAnE,SAAS,CAACO,OAAO,MAAA,IAAA,IAAA4D,kBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjBA,kBAAA,CAAmBjB,WAAW,OAAAkB,CAAAA,mBAAA,GAAKpE,SAAS,CAACO,OAAO,MAAA6D,IAAAA,IAAAA,mBAAA,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAA,CAAmB3C,WAAW,CAAC,CAAA,CAAA;KACxF,EAAE,EAAE,CAAC,CAAA;;AAEN;AACAyC,IAAAA,eAAS,CAAC,YAAM;MACZ,IAAI9F,gBAAgB,IAAI,CAAC4B,SAAS,CAACO,OAAO,IAAI,CAACJ,YAAY,CAACI,OAAO,EAAE;AACjE,QAAA,OAAA;AACJ,OAAA;AAEAP,MAAAA,SAAS,CAACO,OAAO,CAAC8D,QAAQ,CAAC;AACvBX,QAAAA,IAAI,EAAEjD,IAAI,CAACC,KAAK,CAACV,SAAS,CAACO,OAAO,CAACC,UAAU,GAAGL,YAAY,CAACI,OAAO,CAACkB,WAAW,CAAA;AACpF,OAAC,CAAC,CAAA;KACL,EAAE,CAACrD,gBAAgB,EAAE4B,SAAS,EAAEG,YAAY,CAAC,CAAC,CAAA;AAE/C,IAAA,oBACI2B,KAAA,CAAAC,aAAA,CAACuC,uBAAW,CAACC,QAAQ,EAAA;AAACC,MAAAA,KAAK,EAAE9F,IAAAA;AAAK,KAAA,eAC9BoD,KAAA,CAAAC,aAAA,CAACpF,IAAI,EAAA8H,iCAAA,CAAA;AACDlH,MAAAA,IAAI,EAAEA,IAAK;AACXmH,MAAAA,IAAI,EAAC,SAAS;AACdpH,MAAAA,IAAI,EAAEA,IAAK;AACXI,MAAAA,MAAM,EAAEA,MAAO;AACfX,MAAAA,EAAE,EAAEgC,MAAO;AACXqD,MAAAA,GAAG,EAAEtF,QAAS;AACdK,MAAAA,QAAQ,EAAEA,QAAS;AACnBS,MAAAA,SAAS,EAAE+G,QAAE,CAACzF,WAAW,EAAEI,YAAY,EAAEE,iBAAiB,EAAEE,kBAAkB,EAAE9B,SAAS,CAAE;AAC3FuF,MAAAA,SAAS,EAAEA,SAAAA;KACPtF,EAAAA,IAAI,CAEP,EAAA,CAACO,gBAAgB,IAAIyD,cAAc,eACpCC,KAAA,CAAAC,aAAA,CAAC6C,0CAAoB,EAAA;AACjBhH,MAAAA,SAAS,EAAE+G,QAAE,CAAC/E,eAAe,EAAEE,gBAAgB,CAAE;AACjDsC,MAAAA,GAAG,EAAEpC,SAAqD;AAC1D6E,MAAAA,QAAQ,EAAEhC,YAAAA;AAAa,KAAA,eAEvBf,KAAA,CAAAC,aAAA,CAAC+C,mCAAa,EAAA;AAAC1C,MAAAA,GAAG,EAAElC,QAAAA;KACf1C,EAAAA,QACU,CACG,CAAC,EACtB,CAACgB,eAAe,IAAImE,UACnB,CACY,CAAC,CAAA;AAE/B,GAAC,CAAC,CAAA;AAAA,EAAA;AAEC,IAAMoC,oBAAoB,GAAG;AAChCC,EAAAA,IAAI,EAAE,gBAAgB;AACtBC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,MAAM,EAAExI,kBAAkB;AAC1ByI,EAAAA,IAAI,EAAJA,0BAAI;AACJC,EAAAA,UAAU,EAAE;AACR9H,IAAAA,IAAI,EAAE;AACF+H,MAAAA,GAAG,EAAEC,SAAAA;KACR;AACD/H,IAAAA,IAAI,EAAE;AACF8H,MAAAA,GAAG,EAAEE,WAAAA;KACR;AACDpI,IAAAA,QAAQ,EAAE;AACNkI,MAAAA,GAAG,EAAEG,WAAW;AAChBC,MAAAA,KAAK,EAAE,IAAA;KACV;AACDxI,IAAAA,OAAO,EAAE;AACLoI,MAAAA,GAAG,EAAEK,WAAU;AACfD,MAAAA,KAAK,EAAE,IAAA;KACV;AACD/H,IAAAA,MAAM,EAAE;AACJ2H,MAAAA,GAAG,EAAEM,WAAAA;AACT,KAAA;GACH;AACDC,EAAAA,QAAQ,EAAE;AACNrI,IAAAA,IAAI,EAAE,OAAO;AACbD,IAAAA,IAAI,EAAE,IAAA;AACV,GAAA;AACJ;;;;;"}
1
+ {"version":3,"file":"HorizontalTabs.js","sources":["../../../../../../src/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport type { MutableRefObject } from 'react';\nimport { safeUseId } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../../../../engines/types';\nimport { IconDisclosureLeft, IconDisclosureRight } from '../../../../_Icon';\nimport { classes, tokens } from '../../../tokens';\nimport { cx } from '../../../../../utils';\nimport { TabItemRefs, TabsContext } from '../../../TabsContext';\nimport type { HorizontalTabsProps } from '../../../Tabs.types';\n\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\nimport { base as pilledCSS } from './variations/_pilled/base';\nimport { base as stretchCSS } from './variations/_stretch/base';\nimport { StyledArrow, StyledContent, StyledContentWrapper, base } from './HorizontalTabs.styles';\n\nenum Keys {\n end = 35,\n home = 36,\n left = 37,\n right = 39,\n}\n\n// TODO: https://github.com/salute-developers/plasma/issues/1474\nexport const horizontalTabsRoot = (Root: RootProps<HTMLDivElement, HorizontalTabsProps>) =>\n forwardRef<HTMLDivElement, HorizontalTabsProps>((props, outerRef) => {\n const {\n id,\n stretch = false,\n disabled = false,\n clip = 'scroll',\n size,\n view,\n children,\n pilled = false,\n index,\n className,\n ...rest\n } = props;\n const [firstItemVisible, setFirstItemVisible] = useState(true);\n const [lastItemVisible, setLastItemVisible] = useState(true);\n\n const refs = useMemo(() => new TabItemRefs(index), []);\n\n const uniqId = safeUseId();\n const tabsId = id || uniqId;\n\n const isFilled = view === 'filled'; // outer padding is only for filled view\n const pilledAttr = view !== 'clear' && pilled;\n const pilledClass = pilledAttr ? classes.tabsPilled : undefined;\n\n const stretchClass = firstItemVisible && lastItemVisible && stretch ? classes.tabsStretch : undefined;\n const hasLeftArrowClass = !firstItemVisible ? classes.tabsHasLeftArrow : undefined;\n const hasRightArrowClass = !lastItemVisible ? classes.tabsHasRightArrow : undefined;\n const clipScrollClass = clip === 'scroll' ? classes.tabsClipScroll : undefined;\n const clipShowAllClass = clip === 'showAll' ? classes.tabsClipShowAll : undefined;\n\n const scrollRef = useRef<HTMLElement | null>(null);\n const trackRef = useRef<HTMLElement | null>(null);\n const leftArrowRef = useRef<HTMLButtonElement | null>(null);\n\n const onPrev = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollLeft = Math.round(scrollRef.current.scrollLeft);\n const firstOverflowingTab = refs.items\n .slice()\n .reverse()\n .find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetLeft === undefined) {\n return;\n }\n const tabStartX = item.current.offsetLeft;\n\n return tabStartX < scrollLeft;\n });\n\n firstOverflowingTab?.current?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }, [disabled, scrollRef, refs]);\n\n const onNext = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollRight = Math.round(scrollRef.current.scrollLeft + scrollRef.current.clientWidth);\n const lastOverflowingTab = refs.items.find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetLeft === undefined) {\n return;\n }\n const tabEndX = item.current.offsetLeft + item.current.offsetWidth;\n\n return tabEndX > scrollRight;\n });\n\n lastOverflowingTab?.current?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }, [disabled, scrollRef, refs]);\n\n const PreviousButton = useMemo(\n () => (\n <StyledArrow\n type=\"button\"\n aria-label=\"Предыдущий таб\"\n onClick={onPrev}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n isFilled={isFilled}\n ref={leftArrowRef}\n isLeftArrow\n >\n <IconDisclosureLeft color={`var(${tokens.arrowColor})`} />\n </StyledArrow>\n ),\n [onPrev, disabled, isFilled],\n );\n\n const NextButton = useMemo(\n () => (\n <StyledArrow\n type=\"button\"\n aria-label=\"Следующий таб\"\n onClick={onNext}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n isFilled={isFilled}\n >\n <IconDisclosureRight color={`var(${tokens.arrowColor})`} />\n </StyledArrow>\n ),\n [onNext, disabled, isFilled],\n );\n\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLElement>): void => {\n event.stopPropagation();\n const maxScrollLeft = event.currentTarget.scrollWidth - event.currentTarget.clientWidth;\n const scrollLeft = Math.round(event.currentTarget.scrollLeft);\n\n setFirstItemVisible(scrollLeft <= 0);\n setLastItemVisible(scrollLeft >= maxScrollLeft);\n },\n [setFirstItemVisible, setLastItemVisible],\n );\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (index === undefined) {\n return;\n }\n\n const minIndex = 0;\n const maxIndex = refs.items.length - 1;\n let nextIndex: number;\n\n switch (event.keyCode) {\n case Keys.end:\n nextIndex = maxIndex;\n break;\n case Keys.left:\n nextIndex = index > minIndex ? index - 1 : index;\n break;\n case Keys.right:\n nextIndex = index < maxIndex ? index + 1 : index;\n break;\n case Keys.home:\n nextIndex = minIndex;\n break;\n default:\n return;\n }\n\n if (nextIndex !== index) {\n event.preventDefault();\n refs.items[nextIndex].current?.focus();\n refs.items[nextIndex].current?.scrollIntoView({\n block: 'nearest',\n inline: 'center',\n behavior: 'smooth',\n });\n }\n },\n [index],\n );\n\n useEffect(() => {\n setLastItemVisible(scrollRef.current?.scrollWidth === scrollRef.current?.clientWidth);\n }, []);\n\n // Этот хук компенсирует появление левой стрелки при прокрутке\n useEffect(() => {\n if (firstItemVisible || !scrollRef.current || !leftArrowRef.current) {\n return;\n }\n\n scrollRef.current.scrollTo({\n left: Math.round(scrollRef.current.scrollLeft + leftArrowRef.current.clientWidth),\n });\n }, [firstItemVisible, scrollRef, leftArrowRef]);\n\n return (\n <TabsContext.Provider value={refs}>\n <Root\n view={view}\n role=\"tablist\"\n size={size}\n pilled={pilled}\n id={tabsId}\n ref={outerRef}\n disabled={disabled}\n className={cx(pilledClass, stretchClass, hasLeftArrowClass, hasRightArrowClass, className)}\n onKeyDown={onKeyDown}\n {...rest}\n >\n {!firstItemVisible && PreviousButton}\n <StyledContentWrapper\n className={cx(clipScrollClass, clipShowAllClass)}\n ref={scrollRef as MutableRefObject<HTMLDivElement | null>}\n onScroll={handleScroll}\n >\n <StyledContent ref={trackRef as MutableRefObject<HTMLDivElement | null>}>\n {children}\n </StyledContent>\n </StyledContentWrapper>\n {!lastItemVisible && NextButton}\n </Root>\n </TabsContext.Provider>\n );\n });\n\nexport const horizontalTabsConfig = {\n name: 'HorizontalTabs',\n tag: 'div',\n layout: horizontalTabsRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n stretch: {\n css: stretchCSS,\n attrs: true,\n },\n pilled: {\n css: pilledCSS,\n },\n },\n defaults: {\n view: 'clear',\n size: 'xs',\n },\n};\n"],"names":["Keys","horizontalTabsRoot","Root","forwardRef","props","outerRef","id","_props$stretch","stretch","_props$disabled","disabled","_props$clip","clip","size","view","children","_props$pilled","pilled","index","className","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","firstItemVisible","setFirstItemVisible","_useState3","_useState4","lastItemVisible","setLastItemVisible","refs","useMemo","TabItemRefs","uniqId","safeUseId","tabsId","isFilled","pilledAttr","pilledClass","classes","tabsPilled","undefined","stretchClass","tabsStretch","hasLeftArrowClass","tabsHasLeftArrow","hasRightArrowClass","tabsHasRightArrow","clipScrollClass","tabsClipScroll","clipShowAllClass","tabsClipShowAll","scrollRef","useRef","trackRef","leftArrowRef","onPrev","useCallback","_firstOverflowingTab$","current","scrollLeft","Math","round","firstOverflowingTab","items","slice","reverse","find","item","offsetLeft","tabStartX","scrollIntoView","block","inline","onNext","_lastOverflowingTab$c","scrollRight","clientWidth","lastOverflowingTab","tabEndX","offsetWidth","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","isLeftArrow","IconDisclosureLeft","color","concat","tokens","arrowColor","NextButton","IconDisclosureRight","handleScroll","event","stopPropagation","maxScrollLeft","currentTarget","scrollWidth","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","left","right","home","_refs$items$nextIndex","_refs$items$nextIndex2","preventDefault","focus","behavior","useEffect","_scrollRef$current","_scrollRef$current2","scrollTo","TabsContext","Provider","value","_extends","role","cx","StyledContentWrapper","onScroll","StyledContent","horizontalTabsConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","stretchCSS","pilledCSS","defaults"],"mappings":"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"}
@@ -75,7 +75,7 @@ var verticalTabsRoot = function verticalTabsRoot(Root) {
75
75
  return tabStartY < scrollTop;
76
76
  });
77
77
  firstOverflowingTab === null || firstOverflowingTab === void 0 || (_firstOverflowingTab$ = firstOverflowingTab.current) === null || _firstOverflowingTab$ === void 0 || _firstOverflowingTab$.scrollIntoView({
78
- block: 'start',
78
+ block: 'nearest',
79
79
  inline: 'nearest'
80
80
  });
81
81
  }, [disabled, scrollRef, refs]);
@@ -93,7 +93,7 @@ var verticalTabsRoot = function verticalTabsRoot(Root) {
93
93
  return tabEndY > scrollBottom;
94
94
  });
95
95
  lastOverflowingTab === null || lastOverflowingTab === void 0 || (_lastOverflowingTab$c = lastOverflowingTab.current) === null || _lastOverflowingTab$c === void 0 || _lastOverflowingTab$c.scrollIntoView({
96
- block: 'end',
96
+ block: 'nearest',
97
97
  inline: 'nearest'
98
98
  });
99
99
  }, [disabled, scrollRef, refs]);
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalTabs.js","sources":["../../../../../../src/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport type { MutableRefObject } from 'react';\nimport { safeUseId } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../../../../engines/types';\nimport { classes, tokens } from '../../../tokens';\nimport { cx } from '../../../../../utils';\nimport { TabItemRefs, TabsContext } from '../../../TabsContext';\nimport type { VerticalTabsProps } from '../../../Tabs.types';\nimport { IconDisclosureLeft, IconDisclosureRight } from '../../../../_Icon';\n\nimport { base, StyledArrow, StyledContent, StyledContentWrapper } from './VerticalTabs.styles';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\n\nenum Keys {\n end = 35,\n home = 36,\n up = 38,\n down = 40,\n}\n\n// TODO: https://github.com/salute-developers/plasma/issues/1474\nexport const verticalTabsRoot = (Root: RootProps<HTMLDivElement, VerticalTabsProps>) =>\n forwardRef<HTMLDivElement, VerticalTabsProps>((props, outerRef) => {\n const {\n id,\n disabled = false,\n clip = 'showAll',\n size,\n view,\n children,\n index,\n className,\n orientation,\n hasDivider = true,\n ...rest\n } = props;\n\n const [firstItemVisible, setFirstItemVisible] = useState(true);\n const [lastItemVisible, setLastItemVisible] = useState(true);\n\n const refs = useMemo(() => new TabItemRefs(index), []);\n\n const uniqId = safeUseId();\n const tabsId = id || uniqId;\n\n const noDividerClass = !hasDivider ? classes.tabsNoDivider : undefined;\n const hasTopArrowClass = !firstItemVisible ? classes.tabsHasTopArrow : undefined;\n const hasBottomArrowClass = !lastItemVisible ? classes.tabsHasBottomArrow : undefined;\n const clipScrollClass = clip === 'scroll' ? classes.tabsClipScroll : undefined;\n const clipShowAllClass = clip === 'showAll' ? classes.tabsClipShowAll : undefined;\n\n const scrollRef = useRef<HTMLElement | null>(null);\n const trackRef = useRef<HTMLElement | null>(null);\n const upArrowRef = useRef<HTMLButtonElement | null>(null);\n\n const onPrev = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollTop = Math.round(scrollRef.current.scrollTop);\n const firstOverflowingTab = refs.items\n .slice()\n .reverse()\n .find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetTop === undefined) {\n return;\n }\n const tabStartY = item.current.offsetTop;\n\n return tabStartY < scrollTop;\n });\n\n firstOverflowingTab?.current?.scrollIntoView({ block: 'start', inline: 'nearest' });\n }, [disabled, scrollRef, refs]);\n\n const onNext = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollBottom = Math.round(scrollRef.current.scrollTop + scrollRef.current.clientHeight);\n const lastOverflowingTab = refs.items.find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetTop === undefined) {\n return;\n }\n const tabEndY = item.current.offsetTop + item.current.offsetHeight;\n\n return tabEndY > scrollBottom;\n });\n\n lastOverflowingTab?.current?.scrollIntoView({ block: 'end', inline: 'nearest' });\n }, [disabled, scrollRef, refs]);\n\n const PreviousButton = (\n <StyledArrow\n type=\"button\"\n aria-label=\"Предыдущий таб\"\n onClick={onPrev}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n ref={upArrowRef}\n >\n <IconDisclosureLeft color={`var(${tokens.arrowColor})`} />\n </StyledArrow>\n );\n\n const NextButton = (\n <StyledArrow\n type=\"button\"\n aria-label=\"Следующий таб\"\n onClick={onNext}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n >\n <IconDisclosureRight color={`var(${tokens.arrowColor})`} />\n </StyledArrow>\n );\n\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLElement>): void => {\n event.stopPropagation();\n const maxScrollTop = event.currentTarget.scrollHeight - event.currentTarget.clientHeight;\n const scrollTop = Math.round(event.currentTarget.scrollTop);\n\n setFirstItemVisible(scrollTop <= 0);\n setLastItemVisible(scrollTop >= maxScrollTop);\n },\n [setFirstItemVisible, setLastItemVisible],\n );\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (index === undefined) {\n return;\n }\n\n const minIndex = 0;\n const maxIndex = refs.items.length - 1;\n let nextIndex: number;\n\n switch (event.keyCode) {\n case Keys.end:\n nextIndex = maxIndex;\n break;\n case Keys.up:\n nextIndex = index > minIndex ? index - 1 : index;\n break;\n case Keys.down:\n nextIndex = index < maxIndex ? index + 1 : index;\n break;\n case Keys.home:\n nextIndex = minIndex;\n break;\n default:\n return;\n }\n\n if (nextIndex !== index) {\n event.preventDefault();\n refs.items[nextIndex].current?.focus();\n refs.items[nextIndex].current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n }\n },\n [index],\n );\n\n useEffect(() => {\n setLastItemVisible(scrollRef.current?.scrollHeight === scrollRef.current?.clientHeight);\n }, []);\n\n // Этот хук компенсирует появление верхней стрелки при прокрутке\n useEffect(() => {\n if (firstItemVisible || !scrollRef.current || !upArrowRef.current) {\n return;\n }\n\n scrollRef.current.scrollTo({\n top: Math.round(scrollRef.current.scrollTop + upArrowRef.current.clientHeight),\n });\n }, [firstItemVisible, scrollRef, upArrowRef]);\n\n return (\n <TabsContext.Provider value={refs}>\n <Root\n view={view}\n role=\"tablist\"\n size={size}\n id={tabsId}\n ref={outerRef}\n disabled={disabled}\n className={cx(hasTopArrowClass, hasBottomArrowClass, noDividerClass, className)}\n onKeyDown={onKeyDown}\n orientation={orientation}\n {...rest}\n >\n {!firstItemVisible && PreviousButton}\n <StyledContentWrapper\n className={cx(clipScrollClass, clipShowAllClass)}\n ref={scrollRef as MutableRefObject<HTMLDivElement | null>}\n onScroll={handleScroll}\n >\n <StyledContent ref={trackRef as MutableRefObject<HTMLDivElement | null>}>\n {children}\n </StyledContent>\n </StyledContentWrapper>\n {!lastItemVisible && NextButton}\n </Root>\n </TabsContext.Provider>\n );\n });\n\nexport const verticalTabsConfig = {\n name: 'VerticalTabs',\n tag: 'div',\n layout: verticalTabsRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n },\n defaults: {\n view: 'divider',\n size: 'xs',\n },\n};\n"],"names":["Keys","verticalTabsRoot","Root","forwardRef","props","outerRef","id","_props$disabled","disabled","_props$clip","clip","size","view","children","index","className","orientation","_props$hasDivider","hasDivider","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","firstItemVisible","setFirstItemVisible","_useState3","_useState4","lastItemVisible","setLastItemVisible","refs","useMemo","TabItemRefs","uniqId","safeUseId","tabsId","noDividerClass","classes","tabsNoDivider","undefined","hasTopArrowClass","tabsHasTopArrow","hasBottomArrowClass","tabsHasBottomArrow","clipScrollClass","tabsClipScroll","clipShowAllClass","tabsClipShowAll","scrollRef","useRef","trackRef","upArrowRef","onPrev","useCallback","_firstOverflowingTab$","current","scrollTop","Math","round","firstOverflowingTab","items","slice","reverse","find","item","offsetTop","tabStartY","scrollIntoView","block","inline","onNext","_lastOverflowingTab$c","scrollBottom","clientHeight","lastOverflowingTab","tabEndY","offsetHeight","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","IconDisclosureLeft","color","concat","tokens","arrowColor","NextButton","IconDisclosureRight","handleScroll","event","stopPropagation","maxScrollTop","currentTarget","scrollHeight","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","up","down","home","_refs$items$nextIndex","_refs$items$nextIndex2","preventDefault","focus","behavior","useEffect","_scrollRef$current","_scrollRef$current2","scrollTo","top","TabsContext","Provider","value","_extends","role","cx","StyledContentWrapper","onScroll","StyledContent","verticalTabsConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","defaults"],"mappings":"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"}
1
+ {"version":3,"file":"VerticalTabs.js","sources":["../../../../../../src/components/Tabs/ui/vertical/VerticalTabs/VerticalTabs.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport type { MutableRefObject } from 'react';\nimport { safeUseId } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../../../../engines/types';\nimport { classes, tokens } from '../../../tokens';\nimport { cx } from '../../../../../utils';\nimport { TabItemRefs, TabsContext } from '../../../TabsContext';\nimport type { VerticalTabsProps } from '../../../Tabs.types';\nimport { IconDisclosureLeft, IconDisclosureRight } from '../../../../_Icon';\n\nimport { base, StyledArrow, StyledContent, StyledContentWrapper } from './VerticalTabs.styles';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\n\nenum Keys {\n end = 35,\n home = 36,\n up = 38,\n down = 40,\n}\n\n// TODO: https://github.com/salute-developers/plasma/issues/1474\nexport const verticalTabsRoot = (Root: RootProps<HTMLDivElement, VerticalTabsProps>) =>\n forwardRef<HTMLDivElement, VerticalTabsProps>((props, outerRef) => {\n const {\n id,\n disabled = false,\n clip = 'showAll',\n size,\n view,\n children,\n index,\n className,\n orientation,\n hasDivider = true,\n ...rest\n } = props;\n\n const [firstItemVisible, setFirstItemVisible] = useState(true);\n const [lastItemVisible, setLastItemVisible] = useState(true);\n\n const refs = useMemo(() => new TabItemRefs(index), []);\n\n const uniqId = safeUseId();\n const tabsId = id || uniqId;\n\n const noDividerClass = !hasDivider ? classes.tabsNoDivider : undefined;\n const hasTopArrowClass = !firstItemVisible ? classes.tabsHasTopArrow : undefined;\n const hasBottomArrowClass = !lastItemVisible ? classes.tabsHasBottomArrow : undefined;\n const clipScrollClass = clip === 'scroll' ? classes.tabsClipScroll : undefined;\n const clipShowAllClass = clip === 'showAll' ? classes.tabsClipShowAll : undefined;\n\n const scrollRef = useRef<HTMLElement | null>(null);\n const trackRef = useRef<HTMLElement | null>(null);\n const upArrowRef = useRef<HTMLButtonElement | null>(null);\n\n const onPrev = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollTop = Math.round(scrollRef.current.scrollTop);\n const firstOverflowingTab = refs.items\n .slice()\n .reverse()\n .find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetTop === undefined) {\n return;\n }\n const tabStartY = item.current.offsetTop;\n\n return tabStartY < scrollTop;\n });\n\n firstOverflowingTab?.current?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }, [disabled, scrollRef, refs]);\n\n const onNext = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollBottom = Math.round(scrollRef.current.scrollTop + scrollRef.current.clientHeight);\n const lastOverflowingTab = refs.items.find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetTop === undefined) {\n return;\n }\n const tabEndY = item.current.offsetTop + item.current.offsetHeight;\n\n return tabEndY > scrollBottom;\n });\n\n lastOverflowingTab?.current?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }, [disabled, scrollRef, refs]);\n\n const PreviousButton = (\n <StyledArrow\n type=\"button\"\n aria-label=\"Предыдущий таб\"\n onClick={onPrev}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n ref={upArrowRef}\n >\n <IconDisclosureLeft color={`var(${tokens.arrowColor})`} />\n </StyledArrow>\n );\n\n const NextButton = (\n <StyledArrow\n type=\"button\"\n aria-label=\"Следующий таб\"\n onClick={onNext}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n >\n <IconDisclosureRight color={`var(${tokens.arrowColor})`} />\n </StyledArrow>\n );\n\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLElement>): void => {\n event.stopPropagation();\n const maxScrollTop = event.currentTarget.scrollHeight - event.currentTarget.clientHeight;\n const scrollTop = Math.round(event.currentTarget.scrollTop);\n\n setFirstItemVisible(scrollTop <= 0);\n setLastItemVisible(scrollTop >= maxScrollTop);\n },\n [setFirstItemVisible, setLastItemVisible],\n );\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (index === undefined) {\n return;\n }\n\n const minIndex = 0;\n const maxIndex = refs.items.length - 1;\n let nextIndex: number;\n\n switch (event.keyCode) {\n case Keys.end:\n nextIndex = maxIndex;\n break;\n case Keys.up:\n nextIndex = index > minIndex ? index - 1 : index;\n break;\n case Keys.down:\n nextIndex = index < maxIndex ? index + 1 : index;\n break;\n case Keys.home:\n nextIndex = minIndex;\n break;\n default:\n return;\n }\n\n if (nextIndex !== index) {\n event.preventDefault();\n refs.items[nextIndex].current?.focus();\n refs.items[nextIndex].current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n }\n },\n [index],\n );\n\n useEffect(() => {\n setLastItemVisible(scrollRef.current?.scrollHeight === scrollRef.current?.clientHeight);\n }, []);\n\n // Этот хук компенсирует появление верхней стрелки при прокрутке\n useEffect(() => {\n if (firstItemVisible || !scrollRef.current || !upArrowRef.current) {\n return;\n }\n\n scrollRef.current.scrollTo({\n top: Math.round(scrollRef.current.scrollTop + upArrowRef.current.clientHeight),\n });\n }, [firstItemVisible, scrollRef, upArrowRef]);\n\n return (\n <TabsContext.Provider value={refs}>\n <Root\n view={view}\n role=\"tablist\"\n size={size}\n id={tabsId}\n ref={outerRef}\n disabled={disabled}\n className={cx(hasTopArrowClass, hasBottomArrowClass, noDividerClass, className)}\n onKeyDown={onKeyDown}\n orientation={orientation}\n {...rest}\n >\n {!firstItemVisible && PreviousButton}\n <StyledContentWrapper\n className={cx(clipScrollClass, clipShowAllClass)}\n ref={scrollRef as MutableRefObject<HTMLDivElement | null>}\n onScroll={handleScroll}\n >\n <StyledContent ref={trackRef as MutableRefObject<HTMLDivElement | null>}>\n {children}\n </StyledContent>\n </StyledContentWrapper>\n {!lastItemVisible && NextButton}\n </Root>\n </TabsContext.Provider>\n );\n });\n\nexport const verticalTabsConfig = {\n name: 'VerticalTabs',\n tag: 'div',\n layout: verticalTabsRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n },\n defaults: {\n view: 'divider',\n size: 'xs',\n },\n};\n"],"names":["Keys","verticalTabsRoot","Root","forwardRef","props","outerRef","id","_props$disabled","disabled","_props$clip","clip","size","view","children","index","className","orientation","_props$hasDivider","hasDivider","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","firstItemVisible","setFirstItemVisible","_useState3","_useState4","lastItemVisible","setLastItemVisible","refs","useMemo","TabItemRefs","uniqId","safeUseId","tabsId","noDividerClass","classes","tabsNoDivider","undefined","hasTopArrowClass","tabsHasTopArrow","hasBottomArrowClass","tabsHasBottomArrow","clipScrollClass","tabsClipScroll","clipShowAllClass","tabsClipShowAll","scrollRef","useRef","trackRef","upArrowRef","onPrev","useCallback","_firstOverflowingTab$","current","scrollTop","Math","round","firstOverflowingTab","items","slice","reverse","find","item","offsetTop","tabStartY","scrollIntoView","block","inline","onNext","_lastOverflowingTab$c","scrollBottom","clientHeight","lastOverflowingTab","tabEndY","offsetHeight","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","IconDisclosureLeft","color","concat","tokens","arrowColor","NextButton","IconDisclosureRight","handleScroll","event","stopPropagation","maxScrollTop","currentTarget","scrollHeight","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","up","down","home","_refs$items$nextIndex","_refs$items$nextIndex2","preventDefault","focus","behavior","useEffect","_scrollRef$current","_scrollRef$current2","scrollTo","top","TabsContext","Provider","value","_extends","role","cx","StyledContentWrapper","onScroll","StyledContent","verticalTabsConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","defaults"],"mappings":"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"}