@vkontakte/vkui 4.25.2 → 4.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +89 -55
  4. package/.cache/ts/src/components/ActionSheetItem/ActionSheetItem.d.ts +2 -2
  5. package/.cache/ts/src/components/AdaptivityProvider/AdaptivityProvider.d.ts +1 -1
  6. package/.cache/ts/src/components/Alert/Alert.d.ts +2 -2
  7. package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +0 -1
  8. package/.cache/ts/src/components/CardScroll/CardScroll.d.ts +9 -2
  9. package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +1 -1
  10. package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
  11. package/.cache/ts/src/index.d.ts +3 -3
  12. package/.cache/ts/src/lib/platform.d.ts +1 -1
  13. package/.cache/ts/src/tokenized/{tokenized.d.ts → index.d.ts} +0 -0
  14. package/VKUI_TOKENS_MIGRATION_GUIDE.md +76 -0
  15. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.d.ts +2 -2
  16. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +5 -9
  17. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  18. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.d.ts +1 -1
  19. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js +4 -6
  20. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  21. package/dist/cjs/components/Alert/Alert.d.ts +2 -2
  22. package/dist/cjs/components/Alert/Alert.js +4 -7
  23. package/dist/cjs/components/Alert/Alert.js.map +1 -1
  24. package/dist/cjs/components/AppRoot/AppRoot.d.ts +0 -1
  25. package/dist/cjs/components/AppRoot/AppRoot.js +2 -5
  26. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  27. package/dist/cjs/components/AppearanceProvider/AppearanceProvider.js +1 -1
  28. package/dist/cjs/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
  29. package/dist/cjs/components/Button/Button.js +1 -3
  30. package/dist/cjs/components/Button/Button.js.map +1 -1
  31. package/dist/cjs/components/CardScroll/CardScroll.d.ts +9 -2
  32. package/dist/cjs/components/CardScroll/CardScroll.js +10 -4
  33. package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
  34. package/dist/cjs/components/ConfigProvider/ConfigProvider.js +40 -6
  35. package/dist/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
  36. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.d.ts +1 -1
  37. package/dist/cjs/components/ContentCard/ContentCard.js +8 -0
  38. package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
  39. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +1 -1
  40. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  41. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
  42. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +5 -1
  43. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  44. package/dist/cjs/components/IconButton/IconButton.js +8 -0
  45. package/dist/cjs/components/IconButton/IconButton.js.map +1 -1
  46. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +14 -5
  47. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  48. package/dist/cjs/components/PromoBanner/PromoBanner.js +7 -0
  49. package/dist/cjs/components/PromoBanner/PromoBanner.js.map +1 -1
  50. package/dist/cjs/components/Root/Root.js +5 -0
  51. package/dist/cjs/components/Root/Root.js.map +1 -1
  52. package/dist/cjs/components/TabbarItem/TabbarItem.js +8 -1
  53. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  54. package/dist/cjs/components/View/View.js +29 -18
  55. package/dist/cjs/components/View/View.js.map +1 -1
  56. package/dist/cjs/index.d.ts +3 -3
  57. package/dist/cjs/index.js +6 -6
  58. package/dist/cjs/index.js.map +1 -1
  59. package/dist/cjs/lib/platform.d.ts +1 -1
  60. package/dist/cjs/lib/platform.js.map +1 -1
  61. package/dist/cjs/tokenized/{tokenized.d.ts → index.d.ts} +0 -0
  62. package/dist/cjs/tokenized/{tokenized.js → index.js} +1 -1
  63. package/dist/cjs/tokenized/index.js.map +1 -0
  64. package/dist/components/ActionSheetItem/ActionSheetItem.d.ts +2 -2
  65. package/dist/components/ActionSheetItem/ActionSheetItem.js +4 -6
  66. package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  67. package/dist/components/AdaptivityProvider/AdaptivityProvider.d.ts +1 -1
  68. package/dist/components/AdaptivityProvider/AdaptivityProvider.js +2 -3
  69. package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  70. package/dist/components/Alert/Alert.d.ts +2 -2
  71. package/dist/components/Alert/Alert.js +3 -3
  72. package/dist/components/Alert/Alert.js.map +1 -1
  73. package/dist/components/AppRoot/AppRoot.d.ts +0 -1
  74. package/dist/components/AppRoot/AppRoot.js +1 -3
  75. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  76. package/dist/components/AppearanceProvider/AppearanceProvider.js +2 -2
  77. package/dist/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
  78. package/dist/components/Button/Button.js +1 -2
  79. package/dist/components/Button/Button.js.map +1 -1
  80. package/dist/components/CardScroll/CardScroll.d.ts +9 -2
  81. package/dist/components/CardScroll/CardScroll.js +8 -3
  82. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  83. package/dist/components/ConfigProvider/ConfigProvider.js +39 -6
  84. package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
  85. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +1 -1
  86. package/dist/components/ContentCard/ContentCard.js +7 -0
  87. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  88. package/dist/components/CustomSelectOption/CustomSelectOption.js +1 -1
  89. package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  90. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
  91. package/dist/components/HorizontalScroll/HorizontalScroll.js +3 -1
  92. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  93. package/dist/components/IconButton/IconButton.js +7 -0
  94. package/dist/components/IconButton/IconButton.js.map +1 -1
  95. package/dist/components/PanelHeaderButton/PanelHeaderButton.js +13 -6
  96. package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  97. package/dist/components/PromoBanner/PromoBanner.js +6 -0
  98. package/dist/components/PromoBanner/PromoBanner.js.map +1 -1
  99. package/dist/components/Root/Root.js +5 -0
  100. package/dist/components/Root/Root.js.map +1 -1
  101. package/dist/components/TabbarItem/TabbarItem.js +7 -1
  102. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  103. package/dist/components/View/View.js +29 -18
  104. package/dist/components/View/View.js.map +1 -1
  105. package/dist/components.css +14 -11
  106. package/dist/components.css.map +1 -1
  107. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +4 -6
  108. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  109. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +2 -3
  110. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  111. package/dist/cssm/components/Alert/Alert.js +3 -3
  112. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  113. package/dist/cssm/components/AppRoot/AppRoot.js +1 -3
  114. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  115. package/dist/cssm/components/AppearanceProvider/AppearanceProvider.js +2 -2
  116. package/dist/cssm/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
  117. package/dist/cssm/components/Button/Button.css +9 -11
  118. package/dist/cssm/components/Button/Button.js +1 -2
  119. package/dist/cssm/components/Button/Button.js.map +1 -1
  120. package/dist/cssm/components/Card/Card.css +6 -1
  121. package/dist/cssm/components/CardScroll/CardScroll.css +1 -1
  122. package/dist/cssm/components/CardScroll/CardScroll.js +8 -3
  123. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  124. package/dist/cssm/components/ConfigProvider/ConfigProvider.js +39 -6
  125. package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  126. package/dist/cssm/components/ContentCard/ContentCard.js +7 -0
  127. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  128. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +1 -1
  129. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  130. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +3 -1
  131. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  132. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
  133. package/dist/cssm/components/IconButton/IconButton.js +7 -0
  134. package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
  135. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +13 -6
  136. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  137. package/dist/cssm/components/PromoBanner/PromoBanner.js +6 -0
  138. package/dist/cssm/components/PromoBanner/PromoBanner.js.map +1 -1
  139. package/dist/cssm/components/Root/Root.js +5 -0
  140. package/dist/cssm/components/Root/Root.js.map +1 -1
  141. package/dist/cssm/components/TabbarItem/TabbarItem.js +7 -1
  142. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  143. package/dist/cssm/components/View/View.js +29 -18
  144. package/dist/cssm/components/View/View.js.map +1 -1
  145. package/dist/cssm/index.js +3 -3
  146. package/dist/cssm/index.js.map +1 -1
  147. package/dist/cssm/lib/platform.js.map +1 -1
  148. package/dist/cssm/styles/components.css +14 -11
  149. package/dist/cssm/styles/themes.css +1 -1
  150. package/dist/{tokenized/tokenized.js → cssm/tokenized/index.js} +1 -1
  151. package/dist/cssm/tokenized/index.js.map +1 -0
  152. package/dist/index.d.ts +3 -3
  153. package/dist/index.js +3 -3
  154. package/dist/index.js.map +1 -1
  155. package/dist/lib/platform.d.ts +1 -1
  156. package/dist/lib/platform.js.map +1 -1
  157. package/dist/tokenized/{tokenized.d.ts → index.d.ts} +0 -0
  158. package/dist/{cssm/tokenized/tokenized.js → tokenized/index.js} +1 -1
  159. package/dist/tokenized/index.js.map +1 -0
  160. package/dist/vkui.css +15 -12
  161. package/dist/vkui.css.map +1 -1
  162. package/package.json +3 -3
  163. package/postcss.config.js +10 -1
  164. package/src/components/ActionSheetItem/ActionSheetItem.tsx +5 -6
  165. package/src/components/AdaptivityProvider/AdaptivityProvider.tsx +1 -2
  166. package/src/components/Alert/Alert.tsx +3 -2
  167. package/src/components/AppRoot/AppRoot.tsx +0 -3
  168. package/src/components/AppearanceProvider/AppearanceProvider.tsx +2 -2
  169. package/src/components/Button/Button.css +9 -39
  170. package/src/components/Button/Button.tsx +3 -4
  171. package/src/components/Card/Card.css +14 -22
  172. package/src/components/CardScroll/CardScroll.css +10 -23
  173. package/src/components/CardScroll/CardScroll.tsx +15 -4
  174. package/src/components/ConfigProvider/ConfigProvider.tsx +43 -7
  175. package/src/components/ContentCard/ContentCard.tsx +6 -0
  176. package/src/components/CustomSelectOption/CustomSelectOption.tsx +1 -1
  177. package/src/components/HorizontalScroll/HorizontalScroll.tsx +8 -2
  178. package/src/components/HorizontalScroll/HorizontalScrollArrow.css +3 -1
  179. package/src/components/IconButton/IconButton.tsx +8 -0
  180. package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +19 -7
  181. package/src/components/PromoBanner/PromoBanner.tsx +8 -0
  182. package/src/components/Root/Root.tsx +12 -2
  183. package/src/components/TabbarItem/TabbarItem.tsx +8 -1
  184. package/src/components/View/View.tsx +15 -2
  185. package/src/index.ts +3 -3
  186. package/src/lib/platform.ts +5 -1
  187. package/src/styles/themes.css +6 -0
  188. package/src/testing/utils.tsx +1 -1
  189. package/src/tokenized/{tokenized.ts → index.ts} +0 -0
  190. package/dist/cjs/tokenized/tokenized.js.map +0 -1
  191. package/dist/cssm/tokenized/tokenized.js.map +0 -1
  192. package/dist/tokenized/tokenized.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
- var _excluded = ["children", "schemeTarget"];
4
+ var _excluded = ["children"];
5
5
  import { createScopedElement } from "../../lib/jsxRuntime";
6
6
  import * as React from "react";
7
7
  import { canUseDOM, useDOM } from "../../lib/dom";
@@ -12,6 +12,7 @@ import { noop } from "../../lib/utils";
12
12
  import { warnOnce } from "../../lib/warnOnce";
13
13
  import { normalizeScheme, Scheme } from "../../helpers/scheme";
14
14
  import { AppearanceProvider } from "../AppearanceProvider/AppearanceProvider";
15
+ import { Platform } from "../../lib/platform";
15
16
  var warn = warnOnce("ConfigProvider");
16
17
 
17
18
  function useSchemeDetector(node, _scheme) {
@@ -53,23 +54,47 @@ var deriveAppearance = function deriveAppearance(scheme) {
53
54
  return scheme === Scheme.SPACE_GRAY || scheme === Scheme.VKCOM_DARK ? "dark" : "light";
54
55
  };
55
56
 
57
+ var generateVKUITokensClassName = function generateVKUITokensClassName(platform, appearance) {
58
+ var tokensPlatform;
59
+
60
+ switch (platform) {
61
+ case Platform.ANDROID:
62
+ tokensPlatform = "vkBase";
63
+ break;
64
+
65
+ case Platform.IOS:
66
+ tokensPlatform = "vkIOS";
67
+ break;
68
+
69
+ case Platform.VKCOM:
70
+ tokensPlatform = "vkCom";
71
+ break;
72
+
73
+ default:
74
+ tokensPlatform = platform;
75
+ }
76
+
77
+ return "vkui--".concat(tokensPlatform, "--").concat(appearance);
78
+ };
79
+
56
80
  var ConfigProvider = function ConfigProvider(_ref) {
57
81
  var children = _ref.children,
58
- schemeTarget = _ref.schemeTarget,
59
82
  props = _objectWithoutProperties(_ref, _excluded);
60
83
 
61
84
  var config = _objectSpread(_objectSpread({}, defaultConfigProviderProps), props);
62
85
 
86
+ var platform = config.platform,
87
+ appearance = config.appearance;
63
88
  var scheme = normalizeScheme({
64
89
  scheme: config.scheme,
65
- platform: config.platform,
66
- appearance: config.appearance
90
+ platform: platform,
91
+ appearance: appearance
67
92
  });
68
93
 
69
94
  var _useDOM = useDOM(),
70
95
  document = _useDOM.document;
71
96
 
72
- var target = schemeTarget || (document === null || document === void 0 ? void 0 : document.body);
97
+ var target = document === null || document === void 0 ? void 0 : document.body;
73
98
  useIsomorphicLayoutEffect(function () {
74
99
  if (scheme === "inherit") {
75
100
  return noop;
@@ -85,8 +110,16 @@ var ConfigProvider = function ConfigProvider(_ref) {
85
110
  };
86
111
  }, [scheme]);
87
112
  var realScheme = useSchemeDetector(target, scheme);
113
+ var derivedAppearance = deriveAppearance(realScheme);
114
+ useIsomorphicLayoutEffect(function () {
115
+ var VKUITokensClassName = generateVKUITokensClassName(platform, derivedAppearance);
116
+ target === null || target === void 0 ? void 0 : target.classList.add(VKUITokensClassName);
117
+ return function () {
118
+ target === null || target === void 0 ? void 0 : target.classList.remove(VKUITokensClassName);
119
+ };
120
+ }, [platform, derivedAppearance]);
88
121
  var configContext = useObjectMemo(_objectSpread({
89
- appearance: deriveAppearance(realScheme)
122
+ appearance: derivedAppearance
90
123
  }, config));
91
124
  return createScopedElement(ConfigProviderContext.Provider, {
92
125
  value: configContext
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ConfigProvider/ConfigProvider.tsx"],"names":["React","canUseDOM","useDOM","ConfigProviderContext","defaultConfigProviderProps","useIsomorphicLayoutEffect","useObjectMemo","noop","warnOnce","normalizeScheme","Scheme","AppearanceProvider","warn","useSchemeDetector","node","_scheme","inherit","getScheme","useCallback","undefined","getAttribute","useState","resolvedScheme","setScheme","useEffect","observer","MutationObserver","observe","attributes","attributeFilter","disconnect","deriveAppearance","scheme","SPACE_GRAY","VKCOM_DARK","ConfigProvider","children","schemeTarget","props","config","platform","appearance","document","target","body","process","env","NODE_ENV","hasAttribute","setAttribute","removeAttribute","realScheme","configContext"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { AppearanceType } from \"@vkontakte/vk-bridge\";\nimport { canUseDOM, useDOM } from \"../../lib/dom\";\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n defaultConfigProviderProps,\n} from \"./ConfigProviderContext\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport { useObjectMemo } from \"../../hooks/useObjectMemo\";\nimport { noop } from \"../../lib/utils\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport {\n normalizeScheme,\n AppearanceScheme,\n Scheme,\n} from \"../../helpers/scheme\";\nimport { AppearanceProvider } from \"../AppearanceProvider/AppearanceProvider\";\n\nexport interface ConfigProviderProps extends ConfigProviderContextInterface {\n /**\n * @deprecated будет удалено в 5.0.0, устанавливать тему следует через appearance\n * Цветовая схема приложения\n */\n scheme?: AppearanceScheme;\n}\n\nconst warn = warnOnce(\"ConfigProvider\");\n\nfunction useSchemeDetector(\n node: HTMLElement | undefined | null,\n _scheme: Scheme | \"inherit\"\n) {\n const inherit = _scheme === \"inherit\";\n const getScheme = React.useCallback(() => {\n if (!inherit || !canUseDOM || !node) {\n return undefined;\n }\n return node.getAttribute(\"scheme\") as Scheme;\n }, [inherit, node]);\n const [resolvedScheme, setScheme] = React.useState(getScheme());\n\n React.useEffect(() => {\n if (!inherit || !node) {\n return noop;\n }\n setScheme(getScheme());\n const observer = new MutationObserver(() => setScheme(getScheme()));\n observer.observe(node, { attributes: true, attributeFilter: [\"scheme\"] });\n return () => observer.disconnect();\n }, [getScheme, inherit, node]);\n\n return _scheme === \"inherit\" ? resolvedScheme : _scheme;\n}\n\nconst deriveAppearance = (scheme: Scheme | undefined): AppearanceType =>\n scheme === Scheme.SPACE_GRAY || scheme === Scheme.VKCOM_DARK\n ? \"dark\"\n : \"light\";\n\nconst ConfigProvider: React.FC<ConfigProviderProps> = ({\n children,\n schemeTarget,\n ...props\n}: React.PropsWithChildren<ConfigProviderProps> & {\n schemeTarget?: HTMLElement;\n}) => {\n const config = { ...defaultConfigProviderProps, ...props };\n const scheme = normalizeScheme({\n scheme: config.scheme,\n platform: config.platform,\n appearance: config.appearance,\n });\n const { document } = useDOM();\n const target = schemeTarget || document?.body;\n\n useIsomorphicLayoutEffect(() => {\n if (scheme === \"inherit\") {\n return noop;\n }\n if (\n process.env.NODE_ENV === \"development\" &&\n target?.hasAttribute(\"scheme\")\n ) {\n warn(\n '<body scheme> was set before VKUI mount - did you forget scheme=\"inherit\"?'\n );\n }\n target?.setAttribute(\"scheme\", scheme);\n return () => target?.removeAttribute(\"scheme\");\n }, [scheme]);\n\n const realScheme = useSchemeDetector(target, scheme);\n const configContext = useObjectMemo({\n appearance: deriveAppearance(realScheme),\n ...config,\n });\n\n return (\n <ConfigProviderContext.Provider value={configContext}>\n <AppearanceProvider appearance={configContext.appearance}>\n {children}\n </AppearanceProvider>\n </ConfigProviderContext.Provider>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default ConfigProvider;\n"],"file":"ConfigProvider.js"}
1
+ {"version":3,"sources":["../../../src/components/ConfigProvider/ConfigProvider.tsx"],"names":["React","canUseDOM","useDOM","ConfigProviderContext","defaultConfigProviderProps","useIsomorphicLayoutEffect","useObjectMemo","noop","warnOnce","normalizeScheme","Scheme","AppearanceProvider","Platform","warn","useSchemeDetector","node","_scheme","inherit","getScheme","useCallback","undefined","getAttribute","useState","resolvedScheme","setScheme","useEffect","observer","MutationObserver","observe","attributes","attributeFilter","disconnect","deriveAppearance","scheme","SPACE_GRAY","VKCOM_DARK","generateVKUITokensClassName","platform","appearance","tokensPlatform","ANDROID","IOS","VKCOM","ConfigProvider","children","props","config","document","target","body","process","env","NODE_ENV","hasAttribute","setAttribute","removeAttribute","realScheme","derivedAppearance","VKUITokensClassName","classList","add","remove","configContext"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { AppearanceType } from \"@vkontakte/vk-bridge\";\nimport { canUseDOM, useDOM } from \"../../lib/dom\";\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n defaultConfigProviderProps,\n} from \"./ConfigProviderContext\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport { useObjectMemo } from \"../../hooks/useObjectMemo\";\nimport { noop } from \"../../lib/utils\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport {\n normalizeScheme,\n AppearanceScheme,\n Scheme,\n} from \"../../helpers/scheme\";\nimport { AppearanceProvider } from \"../AppearanceProvider/AppearanceProvider\";\nimport { Platform } from \"../../lib/platform\";\n\nexport interface ConfigProviderProps extends ConfigProviderContextInterface {\n /**\n * @deprecated будет удалено в 5.0.0, устанавливать тему следует через appearance\n * Цветовая схема приложения\n */\n scheme?: AppearanceScheme;\n}\n\nconst warn = warnOnce(\"ConfigProvider\");\n\nfunction useSchemeDetector(\n node: HTMLElement | undefined | null,\n _scheme: Scheme | \"inherit\"\n) {\n const inherit = _scheme === \"inherit\";\n const getScheme = React.useCallback(() => {\n if (!inherit || !canUseDOM || !node) {\n return undefined;\n }\n return node.getAttribute(\"scheme\") as Scheme;\n }, [inherit, node]);\n const [resolvedScheme, setScheme] = React.useState(getScheme());\n\n React.useEffect(() => {\n if (!inherit || !node) {\n return noop;\n }\n setScheme(getScheme());\n const observer = new MutationObserver(() => setScheme(getScheme()));\n observer.observe(node, { attributes: true, attributeFilter: [\"scheme\"] });\n return () => observer.disconnect();\n }, [getScheme, inherit, node]);\n\n return _scheme === \"inherit\" ? resolvedScheme : _scheme;\n}\n\nconst deriveAppearance = (scheme: Scheme | undefined): AppearanceType =>\n scheme === Scheme.SPACE_GRAY || scheme === Scheme.VKCOM_DARK\n ? \"dark\"\n : \"light\";\n\nconst generateVKUITokensClassName = (\n platform: string,\n appearance: string\n): string => {\n let tokensPlatform;\n switch (platform) {\n case Platform.ANDROID:\n tokensPlatform = \"vkBase\";\n break;\n case Platform.IOS:\n tokensPlatform = \"vkIOS\";\n break;\n case Platform.VKCOM:\n tokensPlatform = \"vkCom\";\n break;\n default:\n tokensPlatform = platform;\n }\n\n return `vkui--${tokensPlatform}--${appearance}`;\n};\n\nconst ConfigProvider: React.FC<ConfigProviderProps> = ({\n children,\n ...props\n}) => {\n const config = { ...defaultConfigProviderProps, ...props };\n const { platform, appearance } = config;\n const scheme = normalizeScheme({\n scheme: config.scheme,\n platform: platform,\n appearance: appearance,\n });\n const { document } = useDOM();\n const target = document?.body;\n\n useIsomorphicLayoutEffect(() => {\n if (scheme === \"inherit\") {\n return noop;\n }\n if (\n process.env.NODE_ENV === \"development\" &&\n target?.hasAttribute(\"scheme\")\n ) {\n warn(\n '<body scheme> was set before VKUI mount - did you forget scheme=\"inherit\"?'\n );\n }\n target?.setAttribute(\"scheme\", scheme);\n return () => target?.removeAttribute(\"scheme\");\n }, [scheme]);\n\n const realScheme = useSchemeDetector(target, scheme);\n const derivedAppearance = deriveAppearance(realScheme);\n\n useIsomorphicLayoutEffect(() => {\n const VKUITokensClassName = generateVKUITokensClassName(\n platform,\n derivedAppearance\n );\n\n target?.classList.add(VKUITokensClassName);\n\n return () => {\n target?.classList.remove(VKUITokensClassName);\n };\n }, [platform, derivedAppearance]);\n\n const configContext = useObjectMemo({\n appearance: derivedAppearance,\n ...config,\n });\n\n return (\n <ConfigProviderContext.Provider value={configContext}>\n <AppearanceProvider appearance={configContext.appearance}>\n {children}\n </AppearanceProvider>\n </ConfigProviderContext.Provider>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default ConfigProvider;\n"],"file":"ConfigProvider.js"}
@@ -37,7 +37,7 @@ export declare const defaultConfigProviderProps: {
37
37
  webviewType: WebviewType;
38
38
  isWebView: boolean;
39
39
  transitionMotionEnabled: boolean;
40
- platform: import("../../lib/platform").Platform;
40
+ platform: string;
41
41
  hasNewTokens: boolean;
42
42
  };
43
43
  export declare const ConfigProviderContext: React.Context<ConfigProviderContextInterface>;
@@ -10,7 +10,9 @@ import Tappable from "../Tappable/Tappable";
10
10
  import { getClassName } from "../../helpers/getClassName";
11
11
  import { usePlatform } from "../../hooks/usePlatform";
12
12
  import { hasReactNode } from "../../lib/utils";
13
+ import { warnOnce } from "../../lib/warnOnce";
13
14
  import { classNames } from "../../lib/classNames";
15
+ var warn = warnOnce("ContentCard");
14
16
 
15
17
  var ContentCard = function ContentCard(props) {
16
18
  var subtitle = props.subtitle,
@@ -39,6 +41,11 @@ var ContentCard = function ContentCard(props) {
39
41
 
40
42
  var platform = usePlatform();
41
43
  var source = image || src;
44
+
45
+ if (image && process.env.NODE_ENV === "development") {
46
+ warn("Свойство image устарело и будет удалено в 5.0.0. Используйте src");
47
+ }
48
+
42
49
  return createScopedElement(Card, {
43
50
  mode: mode,
44
51
  getRootRef: getRootRef,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ContentCard/ContentCard.tsx"],"names":["Card","Caption","Title","Text","Tappable","getClassName","usePlatform","hasReactNode","classNames","ContentCard","props","subtitle","header","text","caption","className","mode","style","getRootRef","getRef","maxHeight","image","src","srcSet","alt","width","height","crossOrigin","decoding","loading","referrerPolicy","sizes","useMap","restProps","platform","source","disabled","onClick","href","defaultProps"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport Card, { CardProps } from \"../Card/Card\";\nimport Caption from \"../Typography/Caption/Caption\";\nimport Title from \"../Typography/Title/Title\";\nimport Text from \"../Typography/Text/Text\";\nimport Tappable, { TappableProps } from \"../Tappable/Tappable\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { HasRef, HasRootRef } from \"../../types\";\nimport { classNames } from \"../../lib/classNames\";\nimport \"./ContentCard.css\";\n\nexport interface ContentCardProps\n extends HasRootRef<HTMLDivElement>,\n Omit<TappableProps, \"getRootRef\" | \"crossOrigin\">,\n Omit<\n React.ImgHTMLAttributes<HTMLImageElement>,\n keyof React.HTMLAttributes<HTMLImageElement>\n >,\n HasRef<HTMLImageElement> {\n /**\n Текст над заголовком\n */\n subtitle?: React.ReactNode;\n /**\n Заголовок\n */\n header?: React.ReactNode;\n /**\n Текст\n */\n text?: React.ReactNode;\n /**\n Нижний текст\n */\n caption?: React.ReactNode;\n /**\n @deprecated будет удалено в 5.0.0. Используйте src\n */\n image?: string;\n /**\n Максимальная высота изображения\n */\n maxHeight?: number;\n mode?: CardProps[\"mode\"];\n}\n\nconst ContentCard: React.FC<ContentCardProps> = (props: ContentCardProps) => {\n const {\n subtitle,\n header,\n text,\n caption,\n // card props\n className,\n mode,\n style,\n getRootRef,\n // img props\n getRef,\n maxHeight,\n image,\n src,\n srcSet,\n alt,\n width,\n height,\n crossOrigin,\n decoding,\n loading,\n referrerPolicy,\n sizes,\n useMap,\n ...restProps\n } = props;\n const platform = usePlatform();\n\n const source = image || src;\n\n return (\n <Card\n mode={mode}\n getRootRef={getRootRef}\n vkuiClass={classNames(getClassName(\"ContentCard\", platform), {\n \"ContentCard--disabled\": restProps.disabled,\n })}\n style={style}\n className={className}\n >\n <Tappable\n {...restProps}\n disabled={restProps.disabled || (!restProps.onClick && !restProps.href)}\n hasHover={false}\n hasActive={false}\n vkuiClass=\"ContentCard__tappable\"\n >\n {(source || srcSet) && (\n <img\n ref={getRef}\n vkuiClass=\"ContentCard__img\"\n src={source}\n srcSet={srcSet}\n alt={alt}\n crossOrigin={crossOrigin}\n decoding={decoding}\n loading={loading}\n referrerPolicy={referrerPolicy}\n sizes={sizes}\n useMap={useMap}\n height={height}\n style={{ maxHeight }}\n width=\"100%\"\n />\n )}\n <div vkuiClass=\"ContentCard__body\">\n {hasReactNode(subtitle) && (\n <Caption\n caps\n vkuiClass=\"ContentCard__text\"\n weight=\"semibold\"\n level=\"3\"\n >\n {subtitle}\n </Caption>\n )}\n {hasReactNode(header) && (\n <Title vkuiClass=\"ContentCard__text\" weight=\"semibold\" level=\"3\">\n {header}\n </Title>\n )}\n {hasReactNode(text) && (\n <Text vkuiClass=\"ContentCard__text\" weight=\"regular\">\n {text}\n </Text>\n )}\n {hasReactNode(caption) && (\n <Caption vkuiClass=\"ContentCard__text\" weight=\"regular\" level=\"1\">\n {caption}\n </Caption>\n )}\n </div>\n </Tappable>\n </Card>\n );\n};\n\nContentCard.defaultProps = {\n mode: \"shadow\",\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default ContentCard;\n"],"file":"ContentCard.js"}
1
+ {"version":3,"sources":["../../../src/components/ContentCard/ContentCard.tsx"],"names":["Card","Caption","Title","Text","Tappable","getClassName","usePlatform","hasReactNode","warnOnce","classNames","warn","ContentCard","props","subtitle","header","text","caption","className","mode","style","getRootRef","getRef","maxHeight","image","src","srcSet","alt","width","height","crossOrigin","decoding","loading","referrerPolicy","sizes","useMap","restProps","platform","source","process","env","NODE_ENV","disabled","onClick","href","defaultProps"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport Card, { CardProps } from \"../Card/Card\";\nimport Caption from \"../Typography/Caption/Caption\";\nimport Title from \"../Typography/Title/Title\";\nimport Text from \"../Typography/Text/Text\";\nimport Tappable, { TappableProps } from \"../Tappable/Tappable\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { HasRef, HasRootRef } from \"../../types\";\nimport { classNames } from \"../../lib/classNames\";\nimport \"./ContentCard.css\";\n\nexport interface ContentCardProps\n extends HasRootRef<HTMLDivElement>,\n Omit<TappableProps, \"getRootRef\" | \"crossOrigin\">,\n Omit<\n React.ImgHTMLAttributes<HTMLImageElement>,\n keyof React.HTMLAttributes<HTMLImageElement>\n >,\n HasRef<HTMLImageElement> {\n /**\n Текст над заголовком\n */\n subtitle?: React.ReactNode;\n /**\n Заголовок\n */\n header?: React.ReactNode;\n /**\n Текст\n */\n text?: React.ReactNode;\n /**\n Нижний текст\n */\n caption?: React.ReactNode;\n /**\n @deprecated будет удалено в 5.0.0. Используйте src\n */\n image?: string;\n /**\n Максимальная высота изображения\n */\n maxHeight?: number;\n mode?: CardProps[\"mode\"];\n}\n\nconst warn = warnOnce(\"ContentCard\");\nconst ContentCard: React.FC<ContentCardProps> = (props: ContentCardProps) => {\n const {\n subtitle,\n header,\n text,\n caption,\n // card props\n className,\n mode,\n style,\n getRootRef,\n // img props\n getRef,\n maxHeight,\n image,\n src,\n srcSet,\n alt,\n width,\n height,\n crossOrigin,\n decoding,\n loading,\n referrerPolicy,\n sizes,\n useMap,\n ...restProps\n } = props;\n const platform = usePlatform();\n\n const source = image || src;\n\n if (image && process.env.NODE_ENV === \"development\") {\n warn(\"Свойство image устарело и будет удалено в 5.0.0. Используйте src\");\n }\n\n return (\n <Card\n mode={mode}\n getRootRef={getRootRef}\n vkuiClass={classNames(getClassName(\"ContentCard\", platform), {\n \"ContentCard--disabled\": restProps.disabled,\n })}\n style={style}\n className={className}\n >\n <Tappable\n {...restProps}\n disabled={restProps.disabled || (!restProps.onClick && !restProps.href)}\n hasHover={false}\n hasActive={false}\n vkuiClass=\"ContentCard__tappable\"\n >\n {(source || srcSet) && (\n <img\n ref={getRef}\n vkuiClass=\"ContentCard__img\"\n src={source}\n srcSet={srcSet}\n alt={alt}\n crossOrigin={crossOrigin}\n decoding={decoding}\n loading={loading}\n referrerPolicy={referrerPolicy}\n sizes={sizes}\n useMap={useMap}\n height={height}\n style={{ maxHeight }}\n width=\"100%\"\n />\n )}\n <div vkuiClass=\"ContentCard__body\">\n {hasReactNode(subtitle) && (\n <Caption\n caps\n vkuiClass=\"ContentCard__text\"\n weight=\"semibold\"\n level=\"3\"\n >\n {subtitle}\n </Caption>\n )}\n {hasReactNode(header) && (\n <Title vkuiClass=\"ContentCard__text\" weight=\"semibold\" level=\"3\">\n {header}\n </Title>\n )}\n {hasReactNode(text) && (\n <Text vkuiClass=\"ContentCard__text\" weight=\"regular\">\n {text}\n </Text>\n )}\n {hasReactNode(caption) && (\n <Caption vkuiClass=\"ContentCard__text\" weight=\"regular\" level=\"1\">\n {caption}\n </Caption>\n )}\n </div>\n </Tappable>\n </Card>\n );\n};\n\nContentCard.defaultProps = {\n mode: \"shadow\",\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default ContentCard;\n"],"file":"ContentCard.js"}
@@ -28,7 +28,7 @@ var CustomSelectOption = function CustomSelectOption(_ref) {
28
28
  sizeY = _useAdaptivity.sizeY;
29
29
 
30
30
  if (!!option && process.env.NODE_ENV === "development") {
31
- warn("Свойство option было добавлено по ошибке будет и удалено в 5.0.0");
31
+ warn("Свойство option было добавлено по ошибке и будет удалено в 5.0.0.");
32
32
  }
33
33
 
34
34
  return createScopedElement(Text, _extends({}, restProps, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"names":["Icon16Done","classNames","hasReactNode","Text","Caption","useAdaptivity","warnOnce","warn","CustomSelectOption","children","hovered","selected","before","after","option","description","disabled","restProps","title","undefined","sizeY","process","env","NODE_ENV"],"mappings":";;;;AACA,SAASA,UAAT,QAA2B,kBAA3B;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,OAAOC,IAAP;AACA,OAAOC,OAAP;AAEA,SAASC,aAAT;AACA,SAASC,QAAT;AAgBA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,oBAAD,CAArB;;AAEA,IAAME,kBAAqD,GAAG,SAAxDA,kBAAwD,OAU/B;AAAA,MAT7BC,QAS6B,QAT7BA,QAS6B;AAAA,MAR7BC,OAQ6B,QAR7BA,OAQ6B;AAAA,MAP7BC,QAO6B,QAP7BA,QAO6B;AAAA,MAN7BC,MAM6B,QAN7BA,MAM6B;AAAA,MAL7BC,KAK6B,QAL7BA,KAK6B;AAAA,MAJ7BC,MAI6B,QAJ7BA,MAI6B;AAAA,MAH7BC,WAG6B,QAH7BA,WAG6B;AAAA,MAF7BC,QAE6B,QAF7BA,QAE6B;AAAA,MAD1BC,SAC0B;;AAC7B,MAAMC,KAAK,GAAG,OAAOT,QAAP,KAAoB,QAApB,GAA+BA,QAA/B,GAA0CU,SAAxD;;AACA,uBAAkBd,aAAa,EAA/B;AAAA,MAAQe,KAAR,kBAAQA,KAAR;;AAEA,MAAI,CAAC,CAACN,MAAF,IAAYO,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzC,EAAwD;AACtDhB,IAAAA,IAAI,CAAC,kEAAD,CAAJ;AACD;;AAED,SACE,oBAAC,IAAD,eACMU,SADN;AAEE,IAAA,SAAS,EAAC,KAFZ;AAGE,IAAA,MAAM,EAAC,SAHT;AAIE,IAAA,IAAI,EAAC,QAJP;AAKE,IAAA,KAAK,EAAEC,KALT;AAME,qBAAeF,QANjB;AAOE,qBAAeL,QAPjB;AAQE,IAAA,SAAS,EAAEV,UAAU,CACnB,oBADmB,sCAEUmB,KAFV,GAGnB;AACE,mCAA6BV,OAAO,IAAI,CAACM,QAD3C;AAEE,sCAAgCL,QAFlC;AAGE,sCAAgCK;AAHlC,KAHmB;AARvB,MAkBGd,YAAY,CAACU,MAAD,CAAZ,IACC;AAAK,IAAA,SAAS,EAAC;AAAf,KAA6CA,MAA7C,CAnBJ,EAqBE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KAA+CH,QAA/C,CADF,EAEGP,YAAY,CAACa,WAAD,CAAZ,IACC,oBAAC,OAAD;AACE,IAAA,KAAK,EAAC,GADR;AAEE,IAAA,MAAM,EAAC,SAFT;AAGE,IAAA,SAAS,EAAC;AAHZ,KAKGA,WALH,CAHJ,CArBF,EAiCE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGb,YAAY,CAACW,KAAD,CAAZ,IACC;AAAK,IAAA,SAAS,EAAC;AAAf,KAA8CA,KAA9C,CAFJ,EAIGF,QAAQ,IACP,oBAAC,UAAD;AAAY,IAAA,SAAS,EAAC;AAAtB,IALJ,CAjCF,CADF;AA4CD,CA9DD,C,CAgEA;;;AACA,eAAeH,kBAAf","sourcesContent":["import * as React from \"react\";\nimport { Icon16Done } from \"@vkontakte/icons\";\nimport { classNames } from \"../../lib/classNames\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport Text from \"../Typography/Text/Text\";\nimport Caption from \"../Typography/Caption/Caption\";\nimport { HasRootRef } from \"../../types\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./CustomSelectOption.css\";\n\nexport interface CustomSelectOptionProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n option?: any;\n selected?: boolean;\n focused?: boolean;\n hovered?: boolean;\n before?: React.ReactNode;\n after?: React.ReactNode;\n description?: React.ReactNode;\n disabled?: boolean;\n}\n\nconst warn = warnOnce(\"CustomSelectOption\");\n\nconst CustomSelectOption: React.FC<CustomSelectOptionProps> = ({\n children,\n hovered,\n selected,\n before,\n after,\n option,\n description,\n disabled,\n ...restProps\n}: CustomSelectOptionProps) => {\n const title = typeof children === \"string\" ? children : undefined;\n const { sizeY } = useAdaptivity();\n\n if (!!option && process.env.NODE_ENV === \"development\") {\n warn(\"Свойство option было добавлено по ошибке будет и удалено в 5.0.0\");\n }\n\n return (\n <Text\n {...restProps}\n Component=\"div\"\n weight=\"regular\"\n role=\"option\"\n title={title}\n aria-disabled={disabled}\n aria-selected={selected}\n vkuiClass={classNames(\n \"CustomSelectOption\",\n `CustomSelectOption--sizeY-${sizeY}`,\n {\n \"CustomSelectOption--hover\": hovered && !disabled,\n \"CustomSelectOption--selected\": selected,\n \"CustomSelectOption--disabled\": disabled,\n }\n )}\n >\n {hasReactNode(before) && (\n <div vkuiClass=\"CustomSelectOption__before\">{before}</div>\n )}\n <div vkuiClass=\"CustomSelectOption__main\">\n <div vkuiClass=\"CustomSelectOption__children\">{children}</div>\n {hasReactNode(description) && (\n <Caption\n level=\"1\"\n weight=\"regular\"\n vkuiClass=\"CustomSelectOption__description\"\n >\n {description}\n </Caption>\n )}\n </div>\n <div vkuiClass=\"CustomSelectOption__after\">\n {hasReactNode(after) && (\n <div className=\"CustomSelectOption__afterIn\">{after}</div>\n )}\n {selected && (\n <Icon16Done vkuiClass=\"CustomSelectOption__selectedIcon\" />\n )}\n </div>\n </Text>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default CustomSelectOption;\n"],"file":"CustomSelectOption.js"}
1
+ {"version":3,"sources":["../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"names":["Icon16Done","classNames","hasReactNode","Text","Caption","useAdaptivity","warnOnce","warn","CustomSelectOption","children","hovered","selected","before","after","option","description","disabled","restProps","title","undefined","sizeY","process","env","NODE_ENV"],"mappings":";;;;AACA,SAASA,UAAT,QAA2B,kBAA3B;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,OAAOC,IAAP;AACA,OAAOC,OAAP;AAEA,SAASC,aAAT;AACA,SAASC,QAAT;AAgBA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,oBAAD,CAArB;;AAEA,IAAME,kBAAqD,GAAG,SAAxDA,kBAAwD,OAU/B;AAAA,MAT7BC,QAS6B,QAT7BA,QAS6B;AAAA,MAR7BC,OAQ6B,QAR7BA,OAQ6B;AAAA,MAP7BC,QAO6B,QAP7BA,QAO6B;AAAA,MAN7BC,MAM6B,QAN7BA,MAM6B;AAAA,MAL7BC,KAK6B,QAL7BA,KAK6B;AAAA,MAJ7BC,MAI6B,QAJ7BA,MAI6B;AAAA,MAH7BC,WAG6B,QAH7BA,WAG6B;AAAA,MAF7BC,QAE6B,QAF7BA,QAE6B;AAAA,MAD1BC,SAC0B;;AAC7B,MAAMC,KAAK,GAAG,OAAOT,QAAP,KAAoB,QAApB,GAA+BA,QAA/B,GAA0CU,SAAxD;;AACA,uBAAkBd,aAAa,EAA/B;AAAA,MAAQe,KAAR,kBAAQA,KAAR;;AAEA,MAAI,CAAC,CAACN,MAAF,IAAYO,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzC,EAAwD;AACtDhB,IAAAA,IAAI,CAAC,mEAAD,CAAJ;AACD;;AAED,SACE,oBAAC,IAAD,eACMU,SADN;AAEE,IAAA,SAAS,EAAC,KAFZ;AAGE,IAAA,MAAM,EAAC,SAHT;AAIE,IAAA,IAAI,EAAC,QAJP;AAKE,IAAA,KAAK,EAAEC,KALT;AAME,qBAAeF,QANjB;AAOE,qBAAeL,QAPjB;AAQE,IAAA,SAAS,EAAEV,UAAU,CACnB,oBADmB,sCAEUmB,KAFV,GAGnB;AACE,mCAA6BV,OAAO,IAAI,CAACM,QAD3C;AAEE,sCAAgCL,QAFlC;AAGE,sCAAgCK;AAHlC,KAHmB;AARvB,MAkBGd,YAAY,CAACU,MAAD,CAAZ,IACC;AAAK,IAAA,SAAS,EAAC;AAAf,KAA6CA,MAA7C,CAnBJ,EAqBE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KAA+CH,QAA/C,CADF,EAEGP,YAAY,CAACa,WAAD,CAAZ,IACC,oBAAC,OAAD;AACE,IAAA,KAAK,EAAC,GADR;AAEE,IAAA,MAAM,EAAC,SAFT;AAGE,IAAA,SAAS,EAAC;AAHZ,KAKGA,WALH,CAHJ,CArBF,EAiCE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGb,YAAY,CAACW,KAAD,CAAZ,IACC;AAAK,IAAA,SAAS,EAAC;AAAf,KAA8CA,KAA9C,CAFJ,EAIGF,QAAQ,IACP,oBAAC,UAAD;AAAY,IAAA,SAAS,EAAC;AAAtB,IALJ,CAjCF,CADF;AA4CD,CA9DD,C,CAgEA;;;AACA,eAAeH,kBAAf","sourcesContent":["import * as React from \"react\";\nimport { Icon16Done } from \"@vkontakte/icons\";\nimport { classNames } from \"../../lib/classNames\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport Text from \"../Typography/Text/Text\";\nimport Caption from \"../Typography/Caption/Caption\";\nimport { HasRootRef } from \"../../types\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./CustomSelectOption.css\";\n\nexport interface CustomSelectOptionProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n option?: any;\n selected?: boolean;\n focused?: boolean;\n hovered?: boolean;\n before?: React.ReactNode;\n after?: React.ReactNode;\n description?: React.ReactNode;\n disabled?: boolean;\n}\n\nconst warn = warnOnce(\"CustomSelectOption\");\n\nconst CustomSelectOption: React.FC<CustomSelectOptionProps> = ({\n children,\n hovered,\n selected,\n before,\n after,\n option,\n description,\n disabled,\n ...restProps\n}: CustomSelectOptionProps) => {\n const title = typeof children === \"string\" ? children : undefined;\n const { sizeY } = useAdaptivity();\n\n if (!!option && process.env.NODE_ENV === \"development\") {\n warn(\"Свойство option было добавлено по ошибке и будет удалено в 5.0.0.\");\n }\n\n return (\n <Text\n {...restProps}\n Component=\"div\"\n weight=\"regular\"\n role=\"option\"\n title={title}\n aria-disabled={disabled}\n aria-selected={selected}\n vkuiClass={classNames(\n \"CustomSelectOption\",\n `CustomSelectOption--sizeY-${sizeY}`,\n {\n \"CustomSelectOption--hover\": hovered && !disabled,\n \"CustomSelectOption--selected\": selected,\n \"CustomSelectOption--disabled\": disabled,\n }\n )}\n >\n {hasReactNode(before) && (\n <div vkuiClass=\"CustomSelectOption__before\">{before}</div>\n )}\n <div vkuiClass=\"CustomSelectOption__main\">\n <div vkuiClass=\"CustomSelectOption__children\">{children}</div>\n {hasReactNode(description) && (\n <Caption\n level=\"1\"\n weight=\"regular\"\n vkuiClass=\"CustomSelectOption__description\"\n >\n {description}\n </Caption>\n )}\n </div>\n <div vkuiClass=\"CustomSelectOption__after\">\n {hasReactNode(after) && (\n <div className=\"CustomSelectOption__afterIn\">{after}</div>\n )}\n {selected && (\n <Icon16Done vkuiClass=\"CustomSelectOption__selectedIcon\" />\n )}\n </div>\n </Text>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default CustomSelectOption;\n"],"file":"CustomSelectOption.js"}
@@ -12,7 +12,7 @@ export interface HorizontalScrollProps extends React.HTMLAttributes<HTMLDivEleme
12
12
  * Функция для расчета величины прокрутки при клике на правую стрелку.
13
13
  */
14
14
  getScrollToRight?: ScrollPositionHandler;
15
- showArrows?: boolean;
15
+ showArrows?: boolean | "always";
16
16
  scrollAnimationDuration?: number;
17
17
  }
18
18
  declare const _default: React.FC<Pick<HorizontalScrollProps, "hidden" | "dir" | "slot" | "style" | "title" | "color" | "translate" | "prefix" | "children" | "className" | "id" | "lang" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "getRef" | "scrollAnimationDuration" | "getScrollToLeft" | "getScrollToRight" | "showArrows"> & import("../AdaptivityProvider/AdaptivityContext").SizeProps>;
@@ -1,4 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
4
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
5
  var _excluded = ["children", "getScrollToLeft", "getScrollToRight", "showArrows", "scrollAnimationDuration", "hasMouse", "getRef"];
@@ -11,6 +12,7 @@ import HorizontalScrollArrow from "./HorizontalScrollArrow";
11
12
  import { easeInOutSine } from "../../lib/fx";
12
13
  import { useEventListener } from "../../hooks/useEventListener";
13
14
  import { useExternRef } from "../../hooks/useExternRef";
15
+ import { classNames } from "../../lib/classNames";
14
16
 
15
17
  /**
16
18
  * timing method
@@ -154,7 +156,7 @@ var HorizontalScroll = function HorizontalScroll(_ref2) {
154
156
  }, [scrollEvent, scrollerRef]);
155
157
  React.useEffect(onscroll, [scrollerRef, children, onscroll]);
156
158
  return createScopedElement("div", _extends({}, restProps, {
157
- vkuiClass: getClassName("HorizontalScroll", platform)
159
+ vkuiClass: classNames(getClassName("HorizontalScroll", platform), _defineProperty({}, "HorizontalScroll--withConstArrows", showArrows === "always"))
158
160
  }), showArrows && hasMouse && canScrollLeft && createScopedElement(HorizontalScrollArrow, {
159
161
  direction: "left",
160
162
  onClick: function onClick() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/HorizontalScroll/HorizontalScroll.tsx"],"names":["React","usePlatform","getClassName","withAdaptivity","HorizontalScrollArrow","easeInOutSine","useEventListener","useExternRef","now","performance","Date","SCROLL_ONE_FRAME_TIME","doScroll","scrollElement","getScrollPosition","animationQueue","onScrollToRightBorder","onScrollEnd","onScrollStart","initialScrollWidth","scrollAnimationDuration","maxLeft","offsetWidth","startLeft","scrollLeft","endLeft","startTime","scroll","time","elapsed","Math","min","value","currentLeft","ceil","max","requestAnimationFrame","shift","length","HorizontalScroll","children","getScrollToLeft","getScrollToRight","showArrows","hasMouse","getRef","restProps","useState","canScrollLeft","setCanScrollLeft","canScrollRight","setCanScrollRight","isCustomScrollingRef","useRef","scrollerRef","platform","scrollTo","current","push","firstElementChild","scrollWidth","onscroll","useCallback","scrollEvent","useEffect","add"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport HorizontalScrollArrow from \"./HorizontalScrollArrow\";\nimport { easeInOutSine } from \"../../lib/fx\";\nimport { useEventListener } from \"../../hooks/useEventListener\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { HasRef } from \"../../types\";\nimport \"./HorizontalScroll.css\";\n\ninterface ScrollContext {\n scrollElement: HTMLElement | null;\n scrollAnimationDuration: number;\n animationQueue: VoidFunction[];\n getScrollPosition: (currentPosition: number) => number;\n onScrollToRightBorder: VoidFunction;\n onScrollEnd: VoidFunction;\n onScrollStart: VoidFunction;\n /**\n * Начальная ширина прокрутки.\n * В некоторых случаях может отличаться от текущей ширины прокрутки из-за transforms: translate\n */\n initialScrollWidth: number;\n}\n\nexport type ScrollPositionHandler = (currentPosition: number) => number;\n\nexport interface HorizontalScrollProps\n extends React.HTMLAttributes<HTMLDivElement>,\n AdaptivityProps,\n HasRef<HTMLDivElement> {\n /**\n * Функция для расчета величины прокрутки при клике на левую стрелку.\n */\n getScrollToLeft?: ScrollPositionHandler;\n /**\n * Функция для расчета величины прокрутки при клике на правую стрелку.\n */\n getScrollToRight?: ScrollPositionHandler;\n showArrows?: boolean;\n scrollAnimationDuration?: number;\n}\n\n/**\n * timing method\n */\nfunction now() {\n return performance && performance.now ? performance.now() : Date.now();\n}\n\n/**\n * Код анимации скрола, на основе полифила: https://github.com/iamdustan/smoothscroll\n * Константа взята из полифила (468), на дизайн-ревью уточнили до 250\n * @var {number} SCROLL_ONE_FRAME_TIME время анимации скролла\n */\nconst SCROLL_ONE_FRAME_TIME = 250;\n\nfunction doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue,\n onScrollToRightBorder,\n onScrollEnd,\n onScrollStart,\n initialScrollWidth,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n}: ScrollContext) {\n if (!scrollElement || !getScrollPosition) {\n return;\n }\n\n /**\n * максимальное значение сдвига влево\n */\n const maxLeft = initialScrollWidth - scrollElement.offsetWidth;\n\n let startLeft = scrollElement.scrollLeft;\n let endLeft = getScrollPosition(startLeft);\n\n onScrollStart();\n\n if (endLeft >= maxLeft) {\n onScrollToRightBorder();\n endLeft = maxLeft;\n }\n\n const startTime = now();\n\n (function scroll() {\n if (!scrollElement) {\n onScrollEnd();\n return;\n }\n\n const time = now();\n const elapsed = Math.min((time - startTime) / scrollAnimationDuration, 1);\n\n const value = easeInOutSine(elapsed);\n\n const currentLeft = startLeft + (endLeft - startLeft) * value;\n scrollElement.scrollLeft = Math.ceil(currentLeft);\n\n if (scrollElement.scrollLeft !== Math.max(0, endLeft)) {\n requestAnimationFrame(scroll);\n return;\n }\n\n onScrollEnd();\n animationQueue.shift();\n if (animationQueue.length > 0) {\n animationQueue[0]();\n }\n })();\n}\n\nconst HorizontalScroll: React.FC<HorizontalScrollProps> = ({\n children,\n getScrollToLeft,\n getScrollToRight,\n showArrows = true,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n hasMouse,\n getRef,\n ...restProps\n}: HorizontalScrollProps) => {\n const [canScrollLeft, setCanScrollLeft] = React.useState(false);\n const [canScrollRight, setCanScrollRight] = React.useState(false);\n\n const isCustomScrollingRef = React.useRef(false);\n\n const scrollerRef = useExternRef(getRef);\n\n const animationQueue = React.useRef<VoidFunction[]>([]);\n\n const platform = usePlatform();\n\n function scrollTo(getScrollPosition: (offset: number) => number) {\n const scrollElement = scrollerRef.current;\n\n animationQueue.current.push(() =>\n doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue: animationQueue.current,\n onScrollToRightBorder: () => setCanScrollRight(false),\n onScrollEnd: () => (isCustomScrollingRef.current = false),\n onScrollStart: () => (isCustomScrollingRef.current = true),\n initialScrollWidth: scrollElement?.firstElementChild?.scrollWidth || 0,\n scrollAnimationDuration,\n })\n );\n if (animationQueue.current.length === 1) {\n animationQueue.current[0]();\n }\n }\n\n const onscroll = React.useCallback(() => {\n if (\n showArrows &&\n hasMouse &&\n scrollerRef.current &&\n !isCustomScrollingRef.current\n ) {\n const scrollElement = scrollerRef.current;\n\n setCanScrollLeft(scrollElement.scrollLeft > 0);\n setCanScrollRight(\n scrollElement.scrollLeft + scrollElement.offsetWidth <\n scrollElement.scrollWidth\n );\n }\n }, [hasMouse, scrollerRef, showArrows]);\n\n const scrollEvent = useEventListener(\"scroll\", onscroll);\n React.useEffect(() => {\n if (scrollerRef.current) {\n scrollEvent.add(scrollerRef.current);\n }\n }, [scrollEvent, scrollerRef]);\n React.useEffect(onscroll, [scrollerRef, children, onscroll]);\n\n return (\n <div {...restProps} vkuiClass={getClassName(\"HorizontalScroll\", platform)}>\n {showArrows && hasMouse && canScrollLeft && (\n <HorizontalScrollArrow\n direction=\"left\"\n onClick={() => {\n if (getScrollToLeft) {\n scrollTo(getScrollToLeft);\n }\n }}\n />\n )}\n {showArrows && hasMouse && canScrollRight && (\n <HorizontalScrollArrow\n direction=\"right\"\n onClick={() => {\n if (getScrollToRight) {\n scrollTo(getScrollToRight);\n }\n }}\n />\n )}\n <div vkuiClass=\"HorizontalScroll__in\" ref={scrollerRef}>\n <div vkuiClass=\"HorizontalScroll__in-wrapper\">{children}</div>\n </div>\n </div>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default withAdaptivity(HorizontalScroll, {\n hasMouse: true,\n});\n"],"file":"HorizontalScroll.js"}
1
+ {"version":3,"sources":["../../../src/components/HorizontalScroll/HorizontalScroll.tsx"],"names":["React","usePlatform","getClassName","withAdaptivity","HorizontalScrollArrow","easeInOutSine","useEventListener","useExternRef","classNames","now","performance","Date","SCROLL_ONE_FRAME_TIME","doScroll","scrollElement","getScrollPosition","animationQueue","onScrollToRightBorder","onScrollEnd","onScrollStart","initialScrollWidth","scrollAnimationDuration","maxLeft","offsetWidth","startLeft","scrollLeft","endLeft","startTime","scroll","time","elapsed","Math","min","value","currentLeft","ceil","max","requestAnimationFrame","shift","length","HorizontalScroll","children","getScrollToLeft","getScrollToRight","showArrows","hasMouse","getRef","restProps","useState","canScrollLeft","setCanScrollLeft","canScrollRight","setCanScrollRight","isCustomScrollingRef","useRef","scrollerRef","platform","scrollTo","current","push","firstElementChild","scrollWidth","onscroll","useCallback","scrollEvent","useEffect","add"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport HorizontalScrollArrow from \"./HorizontalScrollArrow\";\nimport { easeInOutSine } from \"../../lib/fx\";\nimport { useEventListener } from \"../../hooks/useEventListener\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { HasRef } from \"../../types\";\nimport { classNames } from \"../../lib/classNames\";\nimport \"./HorizontalScroll.css\";\n\ninterface ScrollContext {\n scrollElement: HTMLElement | null;\n scrollAnimationDuration: number;\n animationQueue: VoidFunction[];\n getScrollPosition: (currentPosition: number) => number;\n onScrollToRightBorder: VoidFunction;\n onScrollEnd: VoidFunction;\n onScrollStart: VoidFunction;\n /**\n * Начальная ширина прокрутки.\n * В некоторых случаях может отличаться от текущей ширины прокрутки из-за transforms: translate\n */\n initialScrollWidth: number;\n}\n\nexport type ScrollPositionHandler = (currentPosition: number) => number;\n\nexport interface HorizontalScrollProps\n extends React.HTMLAttributes<HTMLDivElement>,\n AdaptivityProps,\n HasRef<HTMLDivElement> {\n /**\n * Функция для расчета величины прокрутки при клике на левую стрелку.\n */\n getScrollToLeft?: ScrollPositionHandler;\n /**\n * Функция для расчета величины прокрутки при клике на правую стрелку.\n */\n getScrollToRight?: ScrollPositionHandler;\n showArrows?: boolean | \"always\";\n scrollAnimationDuration?: number;\n}\n\n/**\n * timing method\n */\nfunction now() {\n return performance && performance.now ? performance.now() : Date.now();\n}\n\n/**\n * Код анимации скрола, на основе полифила: https://github.com/iamdustan/smoothscroll\n * Константа взята из полифила (468), на дизайн-ревью уточнили до 250\n * @var {number} SCROLL_ONE_FRAME_TIME время анимации скролла\n */\nconst SCROLL_ONE_FRAME_TIME = 250;\n\nfunction doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue,\n onScrollToRightBorder,\n onScrollEnd,\n onScrollStart,\n initialScrollWidth,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n}: ScrollContext) {\n if (!scrollElement || !getScrollPosition) {\n return;\n }\n\n /**\n * максимальное значение сдвига влево\n */\n const maxLeft = initialScrollWidth - scrollElement.offsetWidth;\n\n let startLeft = scrollElement.scrollLeft;\n let endLeft = getScrollPosition(startLeft);\n\n onScrollStart();\n\n if (endLeft >= maxLeft) {\n onScrollToRightBorder();\n endLeft = maxLeft;\n }\n\n const startTime = now();\n\n (function scroll() {\n if (!scrollElement) {\n onScrollEnd();\n return;\n }\n\n const time = now();\n const elapsed = Math.min((time - startTime) / scrollAnimationDuration, 1);\n\n const value = easeInOutSine(elapsed);\n\n const currentLeft = startLeft + (endLeft - startLeft) * value;\n scrollElement.scrollLeft = Math.ceil(currentLeft);\n\n if (scrollElement.scrollLeft !== Math.max(0, endLeft)) {\n requestAnimationFrame(scroll);\n return;\n }\n\n onScrollEnd();\n animationQueue.shift();\n if (animationQueue.length > 0) {\n animationQueue[0]();\n }\n })();\n}\n\nconst HorizontalScroll: React.FC<HorizontalScrollProps> = ({\n children,\n getScrollToLeft,\n getScrollToRight,\n showArrows = true,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n hasMouse,\n getRef,\n ...restProps\n}: HorizontalScrollProps) => {\n const [canScrollLeft, setCanScrollLeft] = React.useState(false);\n const [canScrollRight, setCanScrollRight] = React.useState(false);\n\n const isCustomScrollingRef = React.useRef(false);\n\n const scrollerRef = useExternRef(getRef);\n\n const animationQueue = React.useRef<VoidFunction[]>([]);\n\n const platform = usePlatform();\n\n function scrollTo(getScrollPosition: (offset: number) => number) {\n const scrollElement = scrollerRef.current;\n\n animationQueue.current.push(() =>\n doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue: animationQueue.current,\n onScrollToRightBorder: () => setCanScrollRight(false),\n onScrollEnd: () => (isCustomScrollingRef.current = false),\n onScrollStart: () => (isCustomScrollingRef.current = true),\n initialScrollWidth: scrollElement?.firstElementChild?.scrollWidth || 0,\n scrollAnimationDuration,\n })\n );\n if (animationQueue.current.length === 1) {\n animationQueue.current[0]();\n }\n }\n\n const onscroll = React.useCallback(() => {\n if (\n showArrows &&\n hasMouse &&\n scrollerRef.current &&\n !isCustomScrollingRef.current\n ) {\n const scrollElement = scrollerRef.current;\n\n setCanScrollLeft(scrollElement.scrollLeft > 0);\n setCanScrollRight(\n scrollElement.scrollLeft + scrollElement.offsetWidth <\n scrollElement.scrollWidth\n );\n }\n }, [hasMouse, scrollerRef, showArrows]);\n\n const scrollEvent = useEventListener(\"scroll\", onscroll);\n React.useEffect(() => {\n if (scrollerRef.current) {\n scrollEvent.add(scrollerRef.current);\n }\n }, [scrollEvent, scrollerRef]);\n React.useEffect(onscroll, [scrollerRef, children, onscroll]);\n\n return (\n <div\n {...restProps}\n vkuiClass={classNames(getClassName(\"HorizontalScroll\", platform), {\n [\"HorizontalScroll--withConstArrows\"]: showArrows === \"always\",\n })}\n >\n {showArrows && hasMouse && canScrollLeft && (\n <HorizontalScrollArrow\n direction=\"left\"\n onClick={() => {\n if (getScrollToLeft) {\n scrollTo(getScrollToLeft);\n }\n }}\n />\n )}\n {showArrows && hasMouse && canScrollRight && (\n <HorizontalScrollArrow\n direction=\"right\"\n onClick={() => {\n if (getScrollToRight) {\n scrollTo(getScrollToRight);\n }\n }}\n />\n )}\n <div vkuiClass=\"HorizontalScroll__in\" ref={scrollerRef}>\n <div vkuiClass=\"HorizontalScroll__in-wrapper\">{children}</div>\n </div>\n </div>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default withAdaptivity(HorizontalScroll, {\n hasMouse: true,\n});\n"],"file":"HorizontalScroll.js"}
@@ -8,6 +8,8 @@ import { classNames } from "../../lib/classNames";
8
8
  import { usePlatform } from "../../hooks/usePlatform";
9
9
  import { withAdaptivity } from "../../hoc/withAdaptivity";
10
10
  import { IOS } from "../../lib/platform";
11
+ import { warnOnce } from "../../lib/warnOnce";
12
+ var warn = warnOnce("IconButton");
11
13
 
12
14
  var IconButton = function IconButton(_ref) {
13
15
  var icon = _ref.icon,
@@ -17,6 +19,11 @@ var IconButton = function IconButton(_ref) {
17
19
  restProps = _objectWithoutProperties(_ref, _excluded);
18
20
 
19
21
  var platform = usePlatform();
22
+
23
+ if (icon && process.env.NODE_ENV === "development") {
24
+ warn("Свойство icon устарело и будет удалено в 5.0.0. Используйте children");
25
+ }
26
+
20
27
  return createScopedElement(Tappable, _extends({}, restProps, {
21
28
  Component: restProps.href ? "a" : Component,
22
29
  activeEffectDelay: 200,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/IconButton/IconButton.tsx"],"names":["Tappable","getClassName","classNames","usePlatform","withAdaptivity","IOS","IconButton","icon","sizeY","children","Component","restProps","platform","href","defaultProps"],"mappings":";;;;AACA,OAAOA,QAAP;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,cAAT;AACA,SAASC,GAAT;;AAUA,IAAMC,UAAqC,GAAG,SAAxCA,UAAwC,OAMvB;AAAA,MALrBC,IAKqB,QALrBA,IAKqB;AAAA,MAJrBC,KAIqB,QAJrBA,KAIqB;AAAA,MAHrBC,QAGqB,QAHrBA,QAGqB;AAAA,MAFrBC,SAEqB,QAFrBA,SAEqB;AAAA,MADlBC,SACkB;;AACrB,MAAMC,QAAQ,GAAGT,WAAW,EAA5B;AAEA,SACE,oBAAC,QAAD,eACMQ,SADN;AAEE,IAAA,SAAS,EAAEA,SAAS,CAACE,IAAV,GAAiB,GAAjB,GAAuBH,SAFpC;AAGE,IAAA,iBAAiB,EAAE,GAHrB;AAIE,IAAA,UAAU,EAAEE,QAAQ,KAAKP,GAAb,GAAmB,SAAnB,GAA+B,oBAJ7C;AAKE,IAAA,SAAS,EAAEH,UAAU,CACnBD,YAAY,CAAC,YAAD,EAAeW,QAAf,CADO,8BAEEJ,KAFF;AALvB,MAUGD,IAAI,IAAIE,QAVX,CADF;AAcD,CAvBD;;AAyBAH,UAAU,CAACQ,YAAX,GAA0B;AACxBJ,EAAAA,SAAS,EAAE;AADa,CAA1B,C,CAIA;;AACA,eAAeN,cAAc,CAACE,UAAD,EAAa;AACxCE,EAAAA,KAAK,EAAE;AADiC,CAAb,CAA7B","sourcesContent":["import * as React from \"react\";\nimport Tappable, { TappableProps } from \"../Tappable/Tappable\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { withAdaptivity } from \"../../hoc/withAdaptivity\";\nimport { IOS } from \"../../lib/platform\";\nimport \"./IconButton.css\";\n\nexport interface IconButtonProps extends TappableProps {\n /**\n * @deprecated будет удалено в 5.0.0. Используйте `children`\n */\n icon?: React.ReactNode;\n}\n\nconst IconButton: React.FC<IconButtonProps> = ({\n icon,\n sizeY,\n children,\n Component,\n ...restProps\n}: IconButtonProps) => {\n const platform = usePlatform();\n\n return (\n <Tappable\n {...restProps}\n Component={restProps.href ? \"a\" : Component}\n activeEffectDelay={200}\n activeMode={platform === IOS ? \"opacity\" : \"IconButton--active\"}\n vkuiClass={classNames(\n getClassName(\"IconButton\", platform),\n `IconButton--sizeY-${sizeY}`\n )}\n >\n {icon || children}\n </Tappable>\n );\n};\n\nIconButton.defaultProps = {\n Component: \"button\",\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default withAdaptivity(IconButton, {\n sizeY: true,\n});\n"],"file":"IconButton.js"}
1
+ {"version":3,"sources":["../../../src/components/IconButton/IconButton.tsx"],"names":["Tappable","getClassName","classNames","usePlatform","withAdaptivity","IOS","warnOnce","warn","IconButton","icon","sizeY","children","Component","restProps","platform","process","env","NODE_ENV","href","defaultProps"],"mappings":";;;;AACA,OAAOA,QAAP;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,cAAT;AACA,SAASC,GAAT;AACA,SAASC,QAAT;AAUA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,YAAD,CAArB;;AACA,IAAME,UAAqC,GAAG,SAAxCA,UAAwC,OAMvB;AAAA,MALrBC,IAKqB,QALrBA,IAKqB;AAAA,MAJrBC,KAIqB,QAJrBA,KAIqB;AAAA,MAHrBC,QAGqB,QAHrBA,QAGqB;AAAA,MAFrBC,SAEqB,QAFrBA,SAEqB;AAAA,MADlBC,SACkB;;AACrB,MAAMC,QAAQ,GAAGX,WAAW,EAA5B;;AAEA,MAAIM,IAAI,IAAIM,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAArC,EAAoD;AAClDV,IAAAA,IAAI,CACF,sEADE,CAAJ;AAGD;;AAED,SACE,oBAAC,QAAD,eACMM,SADN;AAEE,IAAA,SAAS,EAAEA,SAAS,CAACK,IAAV,GAAiB,GAAjB,GAAuBN,SAFpC;AAGE,IAAA,iBAAiB,EAAE,GAHrB;AAIE,IAAA,UAAU,EAAEE,QAAQ,KAAKT,GAAb,GAAmB,SAAnB,GAA+B,oBAJ7C;AAKE,IAAA,SAAS,EAAEH,UAAU,CACnBD,YAAY,CAAC,YAAD,EAAea,QAAf,CADO,8BAEEJ,KAFF;AALvB,MAUGD,IAAI,IAAIE,QAVX,CADF;AAcD,CA7BD;;AA+BAH,UAAU,CAACW,YAAX,GAA0B;AACxBP,EAAAA,SAAS,EAAE;AADa,CAA1B,C,CAIA;;AACA,eAAeR,cAAc,CAACI,UAAD,EAAa;AACxCE,EAAAA,KAAK,EAAE;AADiC,CAAb,CAA7B","sourcesContent":["import * as React from \"react\";\nimport Tappable, { TappableProps } from \"../Tappable/Tappable\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { withAdaptivity } from \"../../hoc/withAdaptivity\";\nimport { IOS } from \"../../lib/platform\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./IconButton.css\";\n\nexport interface IconButtonProps extends TappableProps {\n /**\n * @deprecated будет удалено в 5.0.0. Используйте `children`\n */\n icon?: React.ReactNode;\n}\n\nconst warn = warnOnce(\"IconButton\");\nconst IconButton: React.FC<IconButtonProps> = ({\n icon,\n sizeY,\n children,\n Component,\n ...restProps\n}: IconButtonProps) => {\n const platform = usePlatform();\n\n if (icon && process.env.NODE_ENV === \"development\") {\n warn(\n \"Свойство icon устарело и будет удалено в 5.0.0. Используйте children\"\n );\n }\n\n return (\n <Tappable\n {...restProps}\n Component={restProps.href ? \"a\" : Component}\n activeEffectDelay={200}\n activeMode={platform === IOS ? \"opacity\" : \"IconButton--active\"}\n vkuiClass={classNames(\n getClassName(\"IconButton\", platform),\n `IconButton--sizeY-${sizeY}`\n )}\n >\n {icon || children}\n </Tappable>\n );\n};\n\nIconButton.defaultProps = {\n Component: \"button\",\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default withAdaptivity(IconButton, {\n sizeY: true,\n});\n"],"file":"IconButton.js"}
@@ -5,8 +5,9 @@ import { createScopedElement } from "../../lib/jsxRuntime";
5
5
  import Tappable from "../Tappable/Tappable";
6
6
  import { getClassName } from "../../helpers/getClassName";
7
7
  import { classNames } from "../../lib/classNames";
8
+ import { warnOnce } from "../../lib/warnOnce";
8
9
  import { usePlatform } from "../../hooks/usePlatform";
9
- import { isPrimitiveReactNode } from "../../lib/utils";
10
+ import { getTitleFromChildren, isPrimitiveReactNode } from "../../lib/utils";
10
11
  import { IOS, VKCOM, ANDROID } from "../../lib/platform";
11
12
  import Text from "../Typography/Text/Text";
12
13
  import Title from "../Typography/Title/Title";
@@ -29,9 +30,11 @@ var ButtonTypography = function ButtonTypography(_ref) {
29
30
  }, children);
30
31
  };
31
32
 
33
+ var warn = warnOnce("PanelHeaderButton");
32
34
  export var PanelHeaderButton = function PanelHeaderButton(_ref2) {
33
35
  var children = _ref2.children,
34
- primary = _ref2.primary,
36
+ _ref2$primary = _ref2.primary,
37
+ primary = _ref2$primary === void 0 ? false : _ref2$primary,
35
38
  label = _ref2.label,
36
39
  restProps = _objectWithoutProperties(_ref2, _excluded);
37
40
 
@@ -57,6 +60,14 @@ export var PanelHeaderButton = function PanelHeaderButton(_ref2) {
57
60
  activeMode = "PanelHeaderButton--active";
58
61
  }
59
62
 
63
+ if (process.env.NODE_ENV === "development") {
64
+ var hasAccessibleName = Boolean(getTitleFromChildren(children) || getTitleFromChildren(label) || restProps["aria-label"] || restProps["aria-labelledby"]);
65
+
66
+ if (!hasAccessibleName) {
67
+ warn("a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.");
68
+ }
69
+ }
70
+
60
71
  return createScopedElement(Tappable, _extends({}, restProps, {
61
72
  hoverMode: hoverMode,
62
73
  Component: restProps.href ? "a" : "button",
@@ -73,8 +84,4 @@ export var PanelHeaderButton = function PanelHeaderButton(_ref2) {
73
84
  primary: primary
74
85
  }, label) : label);
75
86
  };
76
- PanelHeaderButton.defaultProps = {
77
- primary: false,
78
- "aria-label": "Закрыть"
79
- };
80
87
  //# sourceMappingURL=PanelHeaderButton.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"names":["Tappable","getClassName","classNames","usePlatform","isPrimitiveReactNode","IOS","VKCOM","ANDROID","Text","Title","ButtonTypography","primary","children","platform","PanelHeaderButton","label","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","href","defaultProps"],"mappings":";;;;AACA,OAAOA,QAAP;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,oBAAT;AACA,SAASC,GAAT,EAAcC,KAAd,EAAqBC,OAArB;AACA,OAAOC,IAAP;AACA,OAAOC,KAAP;;AAYA,IAAMC,gBAAiD,GAAG,SAApDA,gBAAoD,OAG7B;AAAA,MAF3BC,OAE2B,QAF3BA,OAE2B;AAAA,MAD3BC,QAC2B,QAD3BA,QAC2B;AAC3B,MAAMC,QAAQ,GAAGV,WAAW,EAA5B;;AAEA,MAAIU,QAAQ,KAAKR,GAAjB,EAAsB;AACpB,WACE,oBAAC,KAAD;AACE,MAAA,SAAS,EAAC,MADZ;AAEE,MAAA,KAAK,EAAC,GAFR;AAGE,MAAA,MAAM,EAAEM,OAAO,GAAG,UAAH,GAAgB;AAHjC,OAKGC,QALH,CADF;AASD;;AAED,SACE,oBAAC,IAAD;AAAM,IAAA,MAAM,EAAEC,QAAQ,KAAKP,KAAb,GAAqB,SAArB,GAAiC;AAA/C,KAA0DM,QAA1D,CADF;AAGD,CArBD;;AAuBA,OAAO,IAAME,iBAAmD,GAAG,SAAtDA,iBAAsD,QAKrC;AAAA,MAJ5BF,QAI4B,SAJ5BA,QAI4B;AAAA,MAH5BD,OAG4B,SAH5BA,OAG4B;AAAA,MAF5BI,KAE4B,SAF5BA,KAE4B;AAAA,MADzBC,SACyB;;AAC5B,MAAMC,WAAW,GAAGb,oBAAoB,CAACQ,QAAD,CAAxC;AACA,MAAMM,gBAAgB,GAAGd,oBAAoB,CAACW,KAAD,CAA7C;AACA,MAAMF,QAAQ,GAAGV,WAAW,EAA5B;AAEA,MAAIgB,SAAJ;AACA,MAAIC,UAAJ;;AAEA,UAAQP,QAAR;AACE,SAAKN,OAAL;AACEY,MAAAA,SAAS,GAAG,YAAZ;AACAC,MAAAA,UAAU,GAAG,YAAb;AACA;;AACF,SAAKf,GAAL;AACEc,MAAAA,SAAS,GAAG,YAAZ;AACAC,MAAAA,UAAU,GAAG,SAAb;AACA;;AACF,SAAKd,KAAL;AACEa,MAAAA,SAAS,GAAG,0BAAZ;AACAC,MAAAA,UAAU,GAAG,2BAAb;AAXJ;;AAcA,SACE,oBAAC,QAAD,eACMJ,SADN;AAEE,IAAA,SAAS,EAAEG,SAFb;AAGE,IAAA,SAAS,EAAEH,SAAS,CAACK,IAAV,GAAiB,GAAjB,GAAuB,QAHpC;AAIE,IAAA,iBAAiB,EAAE,GAJrB;AAKE,IAAA,UAAU,EAAED,UALd;AAME,IAAA,SAAS,EAAElB,UAAU,CAACD,YAAY,CAAC,mBAAD,EAAsBY,QAAtB,CAAb,EAA8C;AACjE,oCAA8BF,OADmC;AAEjE,sCAAgCM,WAFiC;AAGjE,yCAAmC,CAACA,WAAD,IAAgB,CAACC;AAHa,KAA9C;AANvB,MAYGD,WAAW,GACV,oBAAC,gBAAD;AAAkB,IAAA,OAAO,EAAEN;AAA3B,KAAqCC,QAArC,CADU,GAGVA,QAfJ,EAiBGM,gBAAgB,GACf,oBAAC,gBAAD;AAAkB,IAAA,OAAO,EAAEP;AAA3B,KAAqCI,KAArC,CADe,GAGfA,KApBJ,CADF;AAyBD,CApDM;AAsDPD,iBAAiB,CAACQ,YAAlB,GAAiC;AAC/BX,EAAAA,OAAO,EAAE,KADsB;AAE/B,gBAAc;AAFiB,CAAjC","sourcesContent":["import * as React from \"react\";\nimport Tappable, { TappableProps } from \"../Tappable/Tappable\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { isPrimitiveReactNode } from \"../../lib/utils\";\nimport { IOS, VKCOM, ANDROID } from \"../../lib/platform\";\nimport Text from \"../Typography/Text/Text\";\nimport Title from \"../Typography/Title/Title\";\nimport \"./PanelHeaderButton.css\";\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, \"label\"> {\n primary?: boolean;\n label?: React.ReactNode;\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n primary?: PanelHeaderButtonProps[\"primary\"];\n}\n\nconst ButtonTypography: React.FC<ButtonTypographyProps> = ({\n primary,\n children,\n}: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === IOS) {\n return (\n <Title\n Component=\"span\"\n level=\"3\"\n weight={primary ? \"semibold\" : \"regular\"}\n >\n {children}\n </Title>\n );\n }\n\n return (\n <Text weight={platform === VKCOM ? \"regular\" : \"medium\"}>{children}</Text>\n );\n};\n\nexport const PanelHeaderButton: React.FC<PanelHeaderButtonProps> = ({\n children,\n primary,\n label,\n ...restProps\n}: PanelHeaderButtonProps) => {\n const isPrimitive = isPrimitiveReactNode(children);\n const isPrimitiveLabel = isPrimitiveReactNode(label);\n const platform = usePlatform();\n\n let hoverMode;\n let activeMode;\n\n switch (platform) {\n case ANDROID:\n hoverMode = \"background\";\n activeMode = \"background\";\n break;\n case IOS:\n hoverMode = \"background\";\n activeMode = \"opacity\";\n break;\n case VKCOM:\n hoverMode = \"PanelHeaderButton--hover\";\n activeMode = \"PanelHeaderButton--active\";\n }\n\n return (\n <Tappable\n {...restProps}\n hoverMode={hoverMode}\n Component={restProps.href ? \"a\" : \"button\"}\n activeEffectDelay={200}\n activeMode={activeMode}\n vkuiClass={classNames(getClassName(\"PanelHeaderButton\", platform), {\n \"PanelHeaderButton--primary\": primary,\n \"PanelHeaderButton--primitive\": isPrimitive,\n \"PanelHeaderButton--notPrimitive\": !isPrimitive && !isPrimitiveLabel,\n })}\n >\n {isPrimitive ? (\n <ButtonTypography primary={primary}>{children}</ButtonTypography>\n ) : (\n children\n )}\n {isPrimitiveLabel ? (\n <ButtonTypography primary={primary}>{label}</ButtonTypography>\n ) : (\n label\n )}\n </Tappable>\n );\n};\n\nPanelHeaderButton.defaultProps = {\n primary: false,\n \"aria-label\": \"Закрыть\",\n};\n"],"file":"PanelHeaderButton.js"}
1
+ {"version":3,"sources":["../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"names":["Tappable","getClassName","classNames","warnOnce","usePlatform","getTitleFromChildren","isPrimitiveReactNode","IOS","VKCOM","ANDROID","Text","Title","ButtonTypography","primary","children","platform","warn","PanelHeaderButton","label","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","hasAccessibleName","Boolean","href"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport Tappable, { TappableProps } from \"../Tappable/Tappable\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getTitleFromChildren, isPrimitiveReactNode } from \"../../lib/utils\";\nimport { IOS, VKCOM, ANDROID } from \"../../lib/platform\";\nimport Text from \"../Typography/Text/Text\";\nimport Title from \"../Typography/Title/Title\";\nimport \"./PanelHeaderButton.css\";\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, \"label\"> {\n primary?: boolean;\n label?: React.ReactNode;\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n primary?: PanelHeaderButtonProps[\"primary\"];\n}\n\nconst ButtonTypography: React.FC<ButtonTypographyProps> = ({\n primary,\n children,\n}: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === IOS) {\n return (\n <Title\n Component=\"span\"\n level=\"3\"\n weight={primary ? \"semibold\" : \"regular\"}\n >\n {children}\n </Title>\n );\n }\n\n return (\n <Text weight={platform === VKCOM ? \"regular\" : \"medium\"}>{children}</Text>\n );\n};\n\nconst warn = warnOnce(\"PanelHeaderButton\");\nexport const PanelHeaderButton: React.FC<PanelHeaderButtonProps> = ({\n children,\n primary = false,\n label,\n ...restProps\n}: PanelHeaderButtonProps) => {\n const isPrimitive = isPrimitiveReactNode(children);\n const isPrimitiveLabel = isPrimitiveReactNode(label);\n const platform = usePlatform();\n\n let hoverMode;\n let activeMode;\n\n switch (platform) {\n case ANDROID:\n hoverMode = \"background\";\n activeMode = \"background\";\n break;\n case IOS:\n hoverMode = \"background\";\n activeMode = \"opacity\";\n break;\n case VKCOM:\n hoverMode = \"PanelHeaderButton--hover\";\n activeMode = \"PanelHeaderButton--active\";\n }\n\n if (process.env.NODE_ENV === \"development\") {\n const hasAccessibleName = Boolean(\n getTitleFromChildren(children) ||\n getTitleFromChildren(label) ||\n restProps[\"aria-label\"] ||\n restProps[\"aria-labelledby\"]\n );\n\n if (!hasAccessibleName) {\n warn(\n \"a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.\"\n );\n }\n }\n\n return (\n <Tappable\n {...restProps}\n hoverMode={hoverMode}\n Component={restProps.href ? \"a\" : \"button\"}\n activeEffectDelay={200}\n activeMode={activeMode}\n vkuiClass={classNames(getClassName(\"PanelHeaderButton\", platform), {\n \"PanelHeaderButton--primary\": primary,\n \"PanelHeaderButton--primitive\": isPrimitive,\n \"PanelHeaderButton--notPrimitive\": !isPrimitive && !isPrimitiveLabel,\n })}\n >\n {isPrimitive ? (\n <ButtonTypography primary={primary}>{children}</ButtonTypography>\n ) : (\n children\n )}\n {isPrimitiveLabel ? (\n <ButtonTypography primary={primary}>{label}</ButtonTypography>\n ) : (\n label\n )}\n </Tappable>\n );\n};\n"],"file":"PanelHeaderButton.js"}
@@ -13,6 +13,8 @@ import Avatar from "../Avatar/Avatar";
13
13
  import Caption from "../Typography/Caption/Caption";
14
14
  import { usePlatform } from "../../hooks/usePlatform";
15
15
  import { getClassName } from "../../helpers/getClassName";
16
+ import { warnOnce } from "../../lib/warnOnce";
17
+ var warn = warnOnce("PromoBanner");
16
18
 
17
19
  var PromoBanner = function PromoBanner(props) {
18
20
  var platform = usePlatform();
@@ -24,6 +26,10 @@ var PromoBanner = function PromoBanner(props) {
24
26
 
25
27
  var ageRestrictions = bannerData.ageRestrictions != null ? parseInt(bannerData.ageRestrictions) : bannerData.ageRestriction;
26
28
 
29
+ if (bannerData.ageRestriction && process.env.NODE_ENV === "development") {
30
+ warn("Свойство bannerData.ageRestriction устарело и будет удалено в 5.0.0. Используйте bannerData.ageRestrictions");
31
+ }
32
+
27
33
  var _React$useState = React.useState(""),
28
34
  _React$useState2 = _slicedToArray(_React$useState, 2),
29
35
  currentPixel = _React$useState2[0],
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PromoBanner/PromoBanner.tsx"],"names":["React","Icon24Dismiss","Button","SimpleCell","Avatar","Caption","usePlatform","getClassName","PromoBanner","props","platform","bannerData","onClose","restProps","ageRestrictions","parseInt","ageRestriction","useState","currentPixel","setCurrentPixel","statsPixels","useMemo","statistics","reduce","acc","item","type","url","onClick","useCallback","click","useEffect","playbackStarted","advertisingLabel","isCloseButtonHidden","trackingLink","iconLink","title","ctaText","domain","length"],"mappings":";;;;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,aAAT,QAA8B,kBAA9B;AACA,OAAOC,MAAP;AACA,OAAOC,UAAP;AACA,OAAOC,MAAP;AACA,OAAOC,OAAP;AACA,SAASC,WAAT;AACA,SAASC,YAAT;;AAyCA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAA6B;AAC/C,MAAMC,QAAQ,GAAGJ,WAAW,EAA5B;;AACA,0BAAmDG,KAAnD,CAAQE,UAAR;AAAA,MAAQA,UAAR,kCAAqB,EAArB;AAAA,MAAyBC,OAAzB,GAAmDH,KAAnD,CAAyBG,OAAzB;AAAA,MAAqCC,SAArC,4BAAmDJ,KAAnD;;AAEA,MAAMK,eAAe,GACnBH,UAAU,CAACG,eAAX,IAA8B,IAA9B,GACIC,QAAQ,CAACJ,UAAU,CAACG,eAAZ,CADZ,GAEIH,UAAU,CAACK,cAHjB;;AAKA,wBAAwChB,KAAK,CAACiB,QAAN,CAAe,EAAf,CAAxC;AAAA;AAAA,MAAOC,YAAP;AAAA,MAAqBC,eAArB;;AAEA,MAAMC,WAAW,GAAGpB,KAAK,CAACqB,OAAN,CAClB;AAAA,WACGV,UAAU,CAACW,UAAX,GACGX,UAAU,CAACW,UAAX,CAAsBC,MAAtB,CACE,UAACC,GAAD,EAAMC,IAAN;AAAA,6CAAqBD,GAArB,2BAA2BC,IAAI,CAACC,IAAhC,EAAuCD,IAAI,CAACE,GAA5C;AAAA,KADF,EAEE,EAFF,CADH,GAKG,EANN;AAAA,GADkB,EAQlB,CAAChB,UAAU,CAACW,UAAZ,CARkB,CAApB;AAWA,MAAMM,OAAO,GAAG5B,KAAK,CAAC6B,WAAN,CACd;AAAA,WAAMV,eAAe,CAACC,WAAW,CAACU,KAAZ,IAAqB,EAAtB,CAArB;AAAA,GADc,EAEd,CAACV,WAAW,CAACU,KAAb,CAFc,CAAhB;AAKA9B,EAAAA,KAAK,CAAC+B,SAAN,CAAgB,YAAM;AACpB,QAAIX,WAAW,CAACY,eAAhB,EAAiC;AAC/Bb,MAAAA,eAAe,CAACC,WAAW,CAACY,eAAb,CAAf;AACD;AACF,GAJD,EAIG,CAACZ,WAAW,CAACY,eAAb,CAJH;AAMA,SACE;AAAK,IAAA,SAAS,EAAEzB,YAAY,CAAC,aAAD,EAAgBG,QAAhB;AAA5B,KAA2DG,SAA3D,GACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE,oBAAC,OAAD;AAAS,IAAA,MAAM,EAAC,SAAhB;AAA0B,IAAA,KAAK,EAAC,GAAhC;AAAoC,IAAA,SAAS,EAAC;AAA9C,KACGF,UAAU,CAACsB,gBAAX,IAA+B,eADlC,CADF,EAIGnB,eAAe,IAAI,IAAnB,IACC,oBAAC,OAAD;AAAS,IAAA,MAAM,EAAC,SAAhB;AAA0B,IAAA,KAAK,EAAC,GAAhC;AAAoC,IAAA,SAAS,EAAC;AAA9C,KACGA,eADH,MALJ,EAUG,CAACL,KAAK,CAACyB,mBAAP,IACC;AAAK,IAAA,SAAS,EAAC,oBAAf;AAAoC,IAAA,OAAO,EAAEzB,KAAK,CAACG;AAAnD,KACE,oBAAC,aAAD,OADF,CAXJ,CADF,EAiBE,oBAAC,UAAD;AACE,IAAA,IAAI,EAAED,UAAU,CAACwB,YADnB;AAEE,IAAA,OAAO,EAAEP,OAFX;AAGE,IAAA,GAAG,EAAC,8BAHN;AAIE,IAAA,MAAM,EAAC,QAJT;AAKE,IAAA,MAAM,EACJ,oBAAC,MAAD;AACE,MAAA,IAAI,EAAC,OADP;AAEE,MAAA,IAAI,EAAE,EAFR;AAGE,MAAA,GAAG,EAAEjB,UAAU,CAACyB,QAHlB;AAIE,MAAA,GAAG,EAAEzB,UAAU,CAAC0B;AAJlB,MANJ;AAaE,IAAA,KAAK,EAAE,oBAAC,MAAD;AAAQ,MAAA,IAAI,EAAC;AAAb,OAAwB1B,UAAU,CAAC2B,OAAnC,CAbT;AAcE,IAAA,WAAW,EAAE3B,UAAU,CAAC4B;AAd1B,KAgBG5B,UAAU,CAAC0B,KAhBd,CAjBF,EAoCGnB,YAAY,CAACsB,MAAb,GAAsB,CAAtB,IACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,GAAG,EAAEtB,YAAV;AAAwB,IAAA,GAAG,EAAC;AAA5B,IADF,CArCJ,CADF;AA4CD,CA7ED,C,CA+EA;;;AACA,eAAeV,WAAf","sourcesContent":["import * as React from \"react\";\nimport { Icon24Dismiss } from \"@vkontakte/icons\";\nimport Button from \"../Button/Button\";\nimport SimpleCell from \"../SimpleCell/SimpleCell\";\nimport Avatar from \"../Avatar/Avatar\";\nimport Caption from \"../Typography/Caption/Caption\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport \"./PromoBanner.css\";\n\ntype StatsType =\n | \"playbackStarted\" // Начало показа\n | \"click\"; // Клик по баннеру\n\ntype BannerData = {\n title?: string;\n url_types?: string; // eslint-disable-line camelcase\n bannerID?: string;\n imageWidth?: number;\n imageHeight?: number;\n imageLink?: string;\n trackingLink?: string;\n type?: string;\n iconWidth?: number;\n domain?: string;\n ctaText?: string;\n advertisingLabel?: string;\n iconLink?: string;\n statistics?: Array<{ type: StatsType; url: string }>;\n openInBrowser?: boolean;\n iconHeight?: number;\n directLink?: boolean;\n navigationType?: string;\n description?: string;\n ageRestrictions?: string;\n /** @deprecated */\n ageRestriction?: number;\n};\n\nexport interface PromoBannerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Данные рекламного баннера, полученные из VKWebAppGetAds */\n bannerData: BannerData;\n /** Флаг скрытия кнопки закрытия рекламы */\n isCloseButtonHidden?: boolean;\n /** Хандлер закрытия рекламы */\n onClose: () => void;\n}\n\nconst PromoBanner = (props: PromoBannerProps) => {\n const platform = usePlatform();\n const { bannerData = {}, onClose, ...restProps } = props;\n\n const ageRestrictions =\n bannerData.ageRestrictions != null\n ? parseInt(bannerData.ageRestrictions)\n : bannerData.ageRestriction;\n\n const [currentPixel, setCurrentPixel] = React.useState(\"\");\n\n const statsPixels = React.useMemo(\n () =>\n (bannerData.statistics\n ? bannerData.statistics.reduce(\n (acc, item) => ({ ...acc, [item.type]: item.url }),\n {}\n )\n : {}) as Record<StatsType, string | void>,\n [bannerData.statistics]\n );\n\n const onClick = React.useCallback(\n () => setCurrentPixel(statsPixels.click || \"\"),\n [statsPixels.click]\n );\n\n React.useEffect(() => {\n if (statsPixels.playbackStarted) {\n setCurrentPixel(statsPixels.playbackStarted);\n }\n }, [statsPixels.playbackStarted]);\n\n return (\n <div vkuiClass={getClassName(\"PromoBanner\", platform)} {...restProps}>\n <div vkuiClass=\"PromoBanner__head\">\n <Caption weight=\"regular\" level=\"1\" vkuiClass=\"PromoBanner__label\">\n {bannerData.advertisingLabel || \"Advertisement\"}\n </Caption>\n {ageRestrictions != null && (\n <Caption weight=\"regular\" level=\"1\" vkuiClass=\"PromoBanner__age\">\n {ageRestrictions}+\n </Caption>\n )}\n\n {!props.isCloseButtonHidden && (\n <div vkuiClass=\"PromoBanner__close\" onClick={props.onClose}>\n <Icon24Dismiss />\n </div>\n )}\n </div>\n <SimpleCell\n href={bannerData.trackingLink}\n onClick={onClick}\n rel=\"nofollow noopener noreferrer\"\n target=\"_blank\"\n before={\n <Avatar\n mode=\"image\"\n size={48}\n src={bannerData.iconLink}\n alt={bannerData.title}\n />\n }\n after={<Button mode=\"outline\">{bannerData.ctaText}</Button>}\n description={bannerData.domain}\n >\n {bannerData.title}\n </SimpleCell>\n\n {currentPixel.length > 0 && (\n <div vkuiClass=\"PromoBanner__pixels\">\n <img src={currentPixel} alt=\"\" />\n </div>\n )}\n </div>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default PromoBanner;\n"],"file":"PromoBanner.js"}
1
+ {"version":3,"sources":["../../../src/components/PromoBanner/PromoBanner.tsx"],"names":["React","Icon24Dismiss","Button","SimpleCell","Avatar","Caption","usePlatform","getClassName","warnOnce","warn","PromoBanner","props","platform","bannerData","onClose","restProps","ageRestrictions","parseInt","ageRestriction","process","env","NODE_ENV","useState","currentPixel","setCurrentPixel","statsPixels","useMemo","statistics","reduce","acc","item","type","url","onClick","useCallback","click","useEffect","playbackStarted","advertisingLabel","isCloseButtonHidden","trackingLink","iconLink","title","ctaText","domain","length"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { Icon24Dismiss } from \"@vkontakte/icons\";\nimport Button from \"../Button/Button\";\nimport SimpleCell from \"../SimpleCell/SimpleCell\";\nimport Avatar from \"../Avatar/Avatar\";\nimport Caption from \"../Typography/Caption/Caption\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./PromoBanner.css\";\n\ntype StatsType =\n | \"playbackStarted\" // Начало показа\n | \"click\"; // Клик по баннеру\n\ntype BannerData = {\n title?: string;\n url_types?: string; // eslint-disable-line camelcase\n bannerID?: string;\n imageWidth?: number;\n imageHeight?: number;\n imageLink?: string;\n trackingLink?: string;\n type?: string;\n iconWidth?: number;\n domain?: string;\n ctaText?: string;\n advertisingLabel?: string;\n iconLink?: string;\n statistics?: Array<{ type: StatsType; url: string }>;\n openInBrowser?: boolean;\n iconHeight?: number;\n directLink?: boolean;\n navigationType?: string;\n description?: string;\n ageRestrictions?: string;\n /** @deprecated */\n ageRestriction?: number;\n};\n\nexport interface PromoBannerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Данные рекламного баннера, полученные из VKWebAppGetAds */\n bannerData: BannerData;\n /** Флаг скрытия кнопки закрытия рекламы */\n isCloseButtonHidden?: boolean;\n /** Хандлер закрытия рекламы */\n onClose: () => void;\n}\n\nconst warn = warnOnce(\"PromoBanner\");\nconst PromoBanner = (props: PromoBannerProps) => {\n const platform = usePlatform();\n const { bannerData = {}, onClose, ...restProps } = props;\n\n const ageRestrictions =\n bannerData.ageRestrictions != null\n ? parseInt(bannerData.ageRestrictions)\n : bannerData.ageRestriction;\n\n if (bannerData.ageRestriction && process.env.NODE_ENV === \"development\") {\n warn(\n \"Свойство bannerData.ageRestriction устарело и будет удалено в 5.0.0. Используйте bannerData.ageRestrictions\"\n );\n }\n\n const [currentPixel, setCurrentPixel] = React.useState(\"\");\n\n const statsPixels = React.useMemo(\n () =>\n (bannerData.statistics\n ? bannerData.statistics.reduce(\n (acc, item) => ({ ...acc, [item.type]: item.url }),\n {}\n )\n : {}) as Record<StatsType, string | void>,\n [bannerData.statistics]\n );\n\n const onClick = React.useCallback(\n () => setCurrentPixel(statsPixels.click || \"\"),\n [statsPixels.click]\n );\n\n React.useEffect(() => {\n if (statsPixels.playbackStarted) {\n setCurrentPixel(statsPixels.playbackStarted);\n }\n }, [statsPixels.playbackStarted]);\n\n return (\n <div vkuiClass={getClassName(\"PromoBanner\", platform)} {...restProps}>\n <div vkuiClass=\"PromoBanner__head\">\n <Caption weight=\"regular\" level=\"1\" vkuiClass=\"PromoBanner__label\">\n {bannerData.advertisingLabel || \"Advertisement\"}\n </Caption>\n {ageRestrictions != null && (\n <Caption weight=\"regular\" level=\"1\" vkuiClass=\"PromoBanner__age\">\n {ageRestrictions}+\n </Caption>\n )}\n\n {!props.isCloseButtonHidden && (\n <div vkuiClass=\"PromoBanner__close\" onClick={props.onClose}>\n <Icon24Dismiss />\n </div>\n )}\n </div>\n <SimpleCell\n href={bannerData.trackingLink}\n onClick={onClick}\n rel=\"nofollow noopener noreferrer\"\n target=\"_blank\"\n before={\n <Avatar\n mode=\"image\"\n size={48}\n src={bannerData.iconLink}\n alt={bannerData.title}\n />\n }\n after={<Button mode=\"outline\">{bannerData.ctaText}</Button>}\n description={bannerData.domain}\n >\n {bannerData.title}\n </SimpleCell>\n\n {currentPixel.length > 0 && (\n <div vkuiClass=\"PromoBanner__pixels\">\n <img src={currentPixel} alt=\"\" />\n </div>\n )}\n </div>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default PromoBanner;\n"],"file":"PromoBanner.js"}
@@ -122,6 +122,11 @@ var Root = function Root(_ref) {
122
122
  }
123
123
  };
124
124
 
125
+ if (process.env.NODE_ENV === "development") {
126
+ popout && warn("Свойство popout устарело и будет удалено в 5.0.0. Используйте одноименное свойство у SplitLayout.");
127
+ modal && warn("Свойство modal устарело и будет удалено в 5.0.0. Используйте одноименное свойство у SplitLayout.");
128
+ }
129
+
125
130
  return createScopedElement("div", _extends({}, restProps, {
126
131
  vkuiClass: classNames(getClassName("Root", platform), {
127
132
  "Root--transition": !disableAnimation && transition,