@vkontakte/vkui 5.7.0 → 5.8.0-beta.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 (169) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js +22 -8
  3. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  4. package/dist/cjs/components/AppRoot/AppRoot.d.ts +8 -1
  5. package/dist/cjs/components/AppRoot/AppRoot.js +13 -3
  6. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  7. package/dist/cjs/components/AppearanceProvider/AppearanceProvider.d.ts +1 -1
  8. package/dist/cjs/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
  9. package/dist/cjs/components/ConfigProvider/ConfigProvider.d.ts +7 -0
  10. package/dist/cjs/components/ConfigProvider/ConfigProvider.js +16 -1
  11. package/dist/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
  12. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.d.ts +47 -3
  13. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js +6 -1
  14. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  15. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +1 -1
  16. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  17. package/dist/cjs/components/ModalRoot/ModalRoot.js +1 -1
  18. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  19. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js +2 -2
  20. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  21. package/dist/cjs/components/PanelHeader/PanelHeader.js +11 -6
  22. package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
  23. package/dist/cjs/components/PullToRefresh/PullToRefresh.d.ts +25 -0
  24. package/dist/cjs/components/PullToRefresh/PullToRefresh.js +5 -2
  25. package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
  26. package/dist/cjs/helpers/appearance.d.ts +4 -0
  27. package/dist/cjs/helpers/appearance.js.map +1 -1
  28. package/dist/cjs/hooks/useAppearance.d.ts +1 -1
  29. package/dist/cjs/hooks/useAutoDetectAppearance.d.ts +4 -0
  30. package/dist/cjs/hooks/useAutoDetectAppearance.js.map +1 -1
  31. package/dist/cjs/hooks/useBridgeAdaptivity.d.ts +5 -1
  32. package/dist/cjs/hooks/useBridgeAdaptivity.js +25 -20
  33. package/dist/cjs/hooks/useBridgeAdaptivity.js.map +1 -1
  34. package/dist/cjs/hooks/useInsets.d.ts +5 -1
  35. package/dist/cjs/hooks/useInsets.js +11 -11
  36. package/dist/cjs/hooks/useInsets.js.map +1 -1
  37. package/dist/cjs/index.d.ts +1 -1
  38. package/dist/cjs/index.js +6 -0
  39. package/dist/cjs/index.js.map +1 -1
  40. package/dist/cjs/lib/adaptivity/functions.d.ts +8 -0
  41. package/dist/cjs/lib/adaptivity/functions.js +30 -0
  42. package/dist/cjs/lib/adaptivity/functions.js.map +1 -1
  43. package/dist/cjs/lib/appearance/index.d.ts +1 -0
  44. package/dist/cjs/lib/appearance/index.js +6 -0
  45. package/dist/cjs/lib/appearance/index.js.map +1 -0
  46. package/dist/cjs/lib/appearance/types.d.ts +1 -0
  47. package/dist/cjs/lib/appearance/types.js +6 -0
  48. package/dist/cjs/lib/appearance/types.js.map +1 -0
  49. package/dist/cjs/lib/platform.js +11 -7
  50. package/dist/cjs/lib/platform.js.map +1 -1
  51. package/dist/cjs/lib/taptic.d.ts +4 -0
  52. package/dist/cjs/lib/taptic.js.map +1 -1
  53. package/dist/components/AdaptivityProvider/AdaptivityProvider.js +22 -8
  54. package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  55. package/dist/components/AppRoot/AppRoot.d.ts +8 -1
  56. package/dist/components/AppRoot/AppRoot.js +13 -3
  57. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  58. package/dist/components/AppearanceProvider/AppearanceProvider.d.ts +1 -1
  59. package/dist/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
  60. package/dist/components/ConfigProvider/ConfigProvider.d.ts +7 -0
  61. package/dist/components/ConfigProvider/ConfigProvider.js +17 -2
  62. package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
  63. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +47 -3
  64. package/dist/components/ConfigProvider/ConfigProviderContext.js +6 -1
  65. package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  66. package/dist/components/CustomSelect/CustomSelect.d.ts +1 -1
  67. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  68. package/dist/components/ModalRoot/ModalRoot.js +2 -2
  69. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  70. package/dist/components/ModalRoot/ModalRootDesktop.js +3 -3
  71. package/dist/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  72. package/dist/components/PanelHeader/PanelHeader.js +12 -7
  73. package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
  74. package/dist/components/PullToRefresh/PullToRefresh.d.ts +25 -0
  75. package/dist/components/PullToRefresh/PullToRefresh.js +5 -2
  76. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  77. package/dist/components.css +16 -16
  78. package/dist/components.css.map +1 -1
  79. package/dist/components.js.tmp +1134 -1020
  80. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +22 -8
  81. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  82. package/dist/cssm/components/AppRoot/AppRoot.d.ts +8 -1
  83. package/dist/cssm/components/AppRoot/AppRoot.js +11 -2
  84. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  85. package/dist/cssm/components/AppearanceProvider/AppearanceProvider.d.ts +1 -1
  86. package/dist/cssm/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
  87. package/dist/cssm/components/ConfigProvider/ConfigProvider.d.ts +7 -0
  88. package/dist/cssm/components/ConfigProvider/ConfigProvider.js +24 -2
  89. package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  90. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.d.ts +47 -3
  91. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js +6 -1
  92. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  93. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +1 -1
  94. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  95. package/dist/cssm/components/ModalRoot/ModalRoot.js +2 -2
  96. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  97. package/dist/cssm/components/ModalRoot/ModalRoot.module.css +1 -1
  98. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +3 -3
  99. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  100. package/dist/cssm/components/PanelHeader/PanelHeader.js +13 -7
  101. package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
  102. package/dist/cssm/components/PanelHeader/PanelHeader.module.css +0 -4
  103. package/dist/cssm/components/PullToRefresh/PullToRefresh.d.ts +25 -0
  104. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +5 -2
  105. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  106. package/dist/cssm/helpers/appearance.d.ts +4 -0
  107. package/dist/cssm/helpers/appearance.js +4 -1
  108. package/dist/cssm/helpers/appearance.js.map +1 -1
  109. package/dist/cssm/hooks/useAppearance.d.ts +1 -1
  110. package/dist/cssm/hooks/useAutoDetectAppearance.d.ts +4 -0
  111. package/dist/cssm/hooks/useAutoDetectAppearance.js +4 -1
  112. package/dist/cssm/hooks/useAutoDetectAppearance.js.map +1 -1
  113. package/dist/cssm/hooks/useBridgeAdaptivity.d.ts +5 -1
  114. package/dist/cssm/hooks/useBridgeAdaptivity.js +29 -22
  115. package/dist/cssm/hooks/useBridgeAdaptivity.js.map +1 -1
  116. package/dist/cssm/hooks/useInsets.d.ts +5 -1
  117. package/dist/cssm/hooks/useInsets.js +15 -13
  118. package/dist/cssm/hooks/useInsets.js.map +1 -1
  119. package/dist/cssm/index.d.ts +1 -1
  120. package/dist/cssm/index.js +1 -1
  121. package/dist/cssm/index.js.map +1 -1
  122. package/dist/cssm/lib/adaptivity/functions.d.ts +8 -0
  123. package/dist/cssm/lib/adaptivity/functions.js +29 -1
  124. package/dist/cssm/lib/adaptivity/functions.js.map +1 -1
  125. package/dist/cssm/lib/appearance/index.d.ts +1 -0
  126. package/dist/cssm/lib/appearance/index.js +3 -0
  127. package/dist/cssm/lib/appearance/index.js.map +1 -0
  128. package/dist/cssm/lib/appearance/types.d.ts +1 -0
  129. package/dist/cssm/lib/appearance/types.js +3 -0
  130. package/dist/cssm/lib/appearance/types.js.map +1 -0
  131. package/dist/cssm/lib/platform.js +9 -7
  132. package/dist/cssm/lib/platform.js.map +1 -1
  133. package/dist/cssm/lib/taptic.d.ts +4 -0
  134. package/dist/cssm/lib/taptic.js +4 -1
  135. package/dist/cssm/lib/taptic.js.map +1 -1
  136. package/dist/helpers/appearance.d.ts +4 -0
  137. package/dist/helpers/appearance.js +4 -1
  138. package/dist/helpers/appearance.js.map +1 -1
  139. package/dist/hooks/useAppearance.d.ts +1 -1
  140. package/dist/hooks/useAutoDetectAppearance.d.ts +4 -0
  141. package/dist/hooks/useAutoDetectAppearance.js +4 -1
  142. package/dist/hooks/useAutoDetectAppearance.js.map +1 -1
  143. package/dist/hooks/useBridgeAdaptivity.d.ts +5 -1
  144. package/dist/hooks/useBridgeAdaptivity.js +29 -21
  145. package/dist/hooks/useBridgeAdaptivity.js.map +1 -1
  146. package/dist/hooks/useInsets.d.ts +5 -1
  147. package/dist/hooks/useInsets.js +15 -12
  148. package/dist/hooks/useInsets.js.map +1 -1
  149. package/dist/index.d.ts +1 -1
  150. package/dist/index.js +1 -1
  151. package/dist/index.js.map +1 -1
  152. package/dist/lib/adaptivity/functions.d.ts +8 -0
  153. package/dist/lib/adaptivity/functions.js +29 -1
  154. package/dist/lib/adaptivity/functions.js.map +1 -1
  155. package/dist/lib/appearance/index.d.ts +1 -0
  156. package/dist/lib/appearance/index.js +3 -0
  157. package/dist/lib/appearance/index.js.map +1 -0
  158. package/dist/lib/appearance/types.d.ts +1 -0
  159. package/dist/lib/appearance/types.js +3 -0
  160. package/dist/lib/appearance/types.js.map +1 -0
  161. package/dist/lib/platform.js +11 -7
  162. package/dist/lib/platform.js.map +1 -1
  163. package/dist/lib/taptic.d.ts +4 -0
  164. package/dist/lib/taptic.js +4 -1
  165. package/dist/lib/taptic.js.map +1 -1
  166. package/dist/vkui.css +16 -16
  167. package/dist/vkui.css.map +1 -1
  168. package/dist/vkui.js.tmp +1134 -1020
  169. package/package.json +3 -3
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  <a href="https://npmjs.com/package/@vkontakte/vkui"><img src="https://img.shields.io/npm/v/@vkontakte/vkui/latest.svg?maxAge=3600" alt="open latest version"></a>
12
12
  </p>
13
13
  <p align="center">
14
- VKUI — это библиотека адаптивных React-компонентов, <br> для создания веб-приложений и <a href="https://dev.vk.com/mini-apps/overview">VK Mini Apps</a> в экосистеме ВКонтакте.<br>
14
+ VKUI — это библиотека адаптивных React-компонентов<br> для создания веб-приложений.<br>
15
15
  Библиотека основана на <a href="https://www.figma.com/@vk">дизайн-системе ВКонтакте</a> и реализует её интерфейсы для различных платформ.<br>
16
16
  Релизы: <a href="https://github.com/VKCOM/VKUI/releases">https://github.com/VKCOM/VKUI/releases</a>.<br>
17
17
  Гайд по миграции <a href="https://vkcom.github.io/VKUI/#/Migration">на версию 5</a>.
@@ -13,10 +13,22 @@ var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
13
13
  var _vkjs = require("@vkontakte/vkjs");
14
14
  var _useBridgeAdaptivity = require("../../hooks/useBridgeAdaptivity");
15
15
  var _adaptivity = require("../../lib/adaptivity");
16
+ var _warnOnce = require("../../lib/warnOnce");
16
17
  var _AdaptivityContext = require("./AdaptivityContext");
18
+ var warn = (0, _warnOnce.warnOnce)("AdaptivityProvider");
17
19
  var AdaptivityProvider = function(param) {
18
20
  var viewWidth = param.viewWidth, viewHeight = param.viewHeight, sizeX = param.sizeX, sizeY = param.sizeY, hasPointer = param.hasPointer, hasHover = param.hasHover, children = param.children;
19
- var bridge = (0, _useBridgeAdaptivity.useBridgeAdaptivity)();
21
+ // TODO [>=6]: удалить использование хука (#5049)
22
+ /* eslint-disable @typescript-eslint/naming-convention */ var LEGACY_isPerhapsPropsByBridgeTypeAdaptive = viewWidth !== undefined && viewHeight !== undefined;
23
+ var LEGACY_isPerhapsPropsByBridgeTypeForceMobile = viewWidth !== undefined && sizeX !== undefined && sizeY !== undefined;
24
+ var LEGACY_disableInternalUseBridgeAdaptivity = LEGACY_isPerhapsPropsByBridgeTypeAdaptive || LEGACY_isPerhapsPropsByBridgeTypeForceMobile;
25
+ var LEGACY_bridge = (0, _useBridgeAdaptivity.useBridgeAdaptivity)(LEGACY_disableInternalUseBridgeAdaptivity);
26
+ /* eslint-enable @typescript-eslint/naming-convention */ if (process.env.NODE_ENVIRONMENT === "development") {
27
+ // TODO [>=6]: удалить warn
28
+ if (!LEGACY_disableInternalUseBridgeAdaptivity) {
29
+ warn("[@vkontakte/vk-bridge] Интеграция VKUI с @vkontakte/vk-bridge устарела и будет удалена в v6. Используйте хук `useAdaptivity()` из @vkontakte/vk-bridge-react и результат передайте в компонент (см. https://github.com/VKCOM/VKUI/issues/5049)"); // prettier-ignore
30
+ }
31
+ }
20
32
  var adaptivity = _react.useMemo(function() {
21
33
  return calculateAdaptivity({
22
34
  viewWidth: viewWidth,
@@ -25,7 +37,7 @@ var AdaptivityProvider = function(param) {
25
37
  sizeY: sizeY,
26
38
  hasPointer: hasPointer,
27
39
  hasHover: hasHover
28
- }, bridge);
40
+ }, LEGACY_bridge);
29
41
  }, [
30
42
  viewWidth,
31
43
  viewHeight,
@@ -33,16 +45,18 @@ var AdaptivityProvider = function(param) {
33
45
  sizeY,
34
46
  hasPointer,
35
47
  hasHover,
36
- bridge
48
+ LEGACY_bridge
37
49
  ]);
38
50
  return /*#__PURE__*/ _react.createElement(_AdaptivityContext.AdaptivityContext.Provider, {
39
51
  value: adaptivity
40
52
  }, children);
41
53
  };
42
- function calculateAdaptivity(param, bridge) {
54
+ function calculateAdaptivity(param, LEGACY_bridge) {
43
55
  var viewWidth = param.viewWidth, viewHeight = param.viewHeight, sizeX = param.sizeX, sizeY = param.sizeY, hasPointer = param.hasPointer, hasHover = param.hasHover;
44
- if (bridge.type === "adaptive") {
45
- var viewportWidth = bridge.viewportWidth, viewportHeight = bridge.viewportHeight;
56
+ // TODO [>=6]: удалить блок кода c использованием LEGACY_bridge (#5049)
57
+ // https://github.com/VKCOM/VKUI/blob/v5.5.5/packages/vkui/src/components/AdaptivityProvider/AdaptivityProvider.tsx#L46-L92
58
+ if (LEGACY_bridge.type === "adaptive") {
59
+ var viewportWidth = LEGACY_bridge.viewportWidth, viewportHeight = LEGACY_bridge.viewportHeight;
46
60
  if (viewportWidth >= _adaptivity.BREAKPOINTS.DESKTOP) {
47
61
  viewWidth = _adaptivity.ViewWidth.DESKTOP;
48
62
  } else if (viewportWidth >= _adaptivity.BREAKPOINTS.TABLET) {
@@ -71,10 +85,10 @@ function calculateAdaptivity(param, bridge) {
71
85
  } else {
72
86
  sizeY = _adaptivity.SizeType.REGULAR;
73
87
  }
74
- } else if (bridge.type === "force_mobile" || bridge.type === "force_mobile_compact") {
88
+ } else if (LEGACY_bridge.type === "force_mobile" || LEGACY_bridge.type === "force_mobile_compact") {
75
89
  viewWidth = _adaptivity.ViewWidth.MOBILE;
76
90
  sizeX = _adaptivity.SizeType.COMPACT;
77
- if (bridge.type === "force_mobile_compact") {
91
+ if (LEGACY_bridge.type === "force_mobile_compact") {
78
92
  sizeY = _adaptivity.SizeType.COMPACT;
79
93
  } else {
80
94
  sizeY = _adaptivity.SizeType.REGULAR;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/AdaptivityProvider/AdaptivityProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { hasMouse as _hasPointer } from '@vkontakte/vkjs';\nimport { BridgeAdaptivity, useBridgeAdaptivity } from '../../hooks/useBridgeAdaptivity';\nimport { BREAKPOINTS, SizeType, ViewHeight, ViewWidth } from '../../lib/adaptivity';\nimport { HasChildren } from '../../types';\nimport { AdaptivityContext, type AdaptivityProps } from './AdaptivityContext';\n\nexport interface AdaptivityProviderProps extends AdaptivityProps, HasChildren {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/AdaptivityProvider\n */\nexport const AdaptivityProvider = ({\n viewWidth,\n viewHeight,\n sizeX,\n sizeY,\n hasPointer,\n hasHover,\n children,\n}: AdaptivityProviderProps) => {\n const bridge = useBridgeAdaptivity();\n const adaptivity = React.useMemo(\n () =>\n calculateAdaptivity(\n {\n viewWidth,\n viewHeight,\n sizeX,\n sizeY,\n hasPointer,\n hasHover,\n },\n bridge,\n ),\n [viewWidth, viewHeight, sizeX, sizeY, hasPointer, hasHover, bridge],\n );\n\n return <AdaptivityContext.Provider value={adaptivity}>{children}</AdaptivityContext.Provider>;\n};\n\nfunction calculateAdaptivity(\n { viewWidth, viewHeight, sizeX, sizeY, hasPointer, hasHover }: AdaptivityProps,\n bridge: BridgeAdaptivity,\n) {\n if (bridge.type === 'adaptive') {\n const { viewportWidth, viewportHeight } = bridge;\n\n if (viewportWidth >= BREAKPOINTS.DESKTOP) {\n viewWidth = ViewWidth.DESKTOP;\n } else if (viewportWidth >= BREAKPOINTS.TABLET) {\n viewWidth = ViewWidth.TABLET;\n } else if (viewportWidth >= BREAKPOINTS.SMALL_TABLET) {\n viewWidth = ViewWidth.SMALL_TABLET;\n } else if (viewportWidth >= BREAKPOINTS.MOBILE) {\n viewWidth = ViewWidth.MOBILE;\n } else {\n viewWidth = ViewWidth.SMALL_MOBILE;\n }\n\n if (viewportHeight >= BREAKPOINTS.MEDIUM_HEIGHT) {\n viewHeight = ViewHeight.MEDIUM;\n } else if (viewportHeight >= BREAKPOINTS.MOBILE_LANDSCAPE_HEIGHT) {\n viewHeight = ViewHeight.SMALL;\n } else {\n viewHeight = ViewHeight.EXTRA_SMALL;\n }\n\n if (viewWidth <= ViewWidth.MOBILE) {\n sizeX = SizeType.COMPACT;\n } else {\n sizeX = SizeType.REGULAR;\n }\n\n if (\n (viewWidth >= ViewWidth.SMALL_TABLET && _hasPointer) ||\n viewHeight <= ViewHeight.EXTRA_SMALL\n ) {\n sizeY = SizeType.COMPACT;\n } else {\n sizeY = SizeType.REGULAR;\n }\n } else if (bridge.type === 'force_mobile' || bridge.type === 'force_mobile_compact') {\n viewWidth = ViewWidth.MOBILE;\n sizeX = SizeType.COMPACT;\n\n if (bridge.type === 'force_mobile_compact') {\n sizeY = SizeType.COMPACT;\n } else {\n sizeY = SizeType.REGULAR;\n }\n } else {\n if (sizeX === undefined && viewWidth !== undefined) {\n if (viewWidth <= ViewWidth.MOBILE) {\n sizeX = SizeType.COMPACT;\n } else {\n sizeX = SizeType.REGULAR;\n }\n }\n if (sizeY === undefined && viewWidth !== undefined && viewHeight !== undefined) {\n if (\n (viewWidth >= ViewWidth.SMALL_TABLET && _hasPointer) ||\n viewHeight <= ViewHeight.EXTRA_SMALL\n ) {\n sizeY = SizeType.COMPACT;\n } else {\n sizeY = SizeType.REGULAR;\n }\n }\n }\n\n return {\n viewWidth,\n viewHeight,\n sizeX,\n sizeY,\n hasPointer,\n hasHover,\n };\n}\n"],"names":["AdaptivityProvider","viewWidth","viewHeight","sizeX","sizeY","hasPointer","hasHover","children","bridge","useBridgeAdaptivity","adaptivity","React","useMemo","calculateAdaptivity","AdaptivityContext","Provider","value","type","viewportWidth","viewportHeight","BREAKPOINTS","DESKTOP","ViewWidth","TABLET","SMALL_TABLET","MOBILE","SMALL_MOBILE","MEDIUM_HEIGHT","ViewHeight","MEDIUM","MOBILE_LANDSCAPE_HEIGHT","SMALL","EXTRA_SMALL","SizeType","COMPACT","REGULAR","_hasPointer","undefined"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/AdaptivityProvider/AdaptivityProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { hasMouse as _hasPointer } from '@vkontakte/vkjs';\nimport { BridgeAdaptivity, useBridgeAdaptivity } from '../../hooks/useBridgeAdaptivity';\nimport { BREAKPOINTS, SizeType, ViewHeight, ViewWidth } from '../../lib/adaptivity';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasChildren } from '../../types';\nimport { AdaptivityContext, type AdaptivityProps } from './AdaptivityContext';\n\nconst warn = warnOnce('AdaptivityProvider');\n\nexport interface AdaptivityProviderProps extends AdaptivityProps, HasChildren {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/AdaptivityProvider\n */\nexport const AdaptivityProvider = ({\n viewWidth,\n viewHeight,\n sizeX,\n sizeY,\n hasPointer,\n hasHover,\n children,\n}: AdaptivityProviderProps) => {\n // TODO [>=6]: удалить использование хука (#5049)\n /* eslint-disable @typescript-eslint/naming-convention */\n const LEGACY_isPerhapsPropsByBridgeTypeAdaptive =\n viewWidth !== undefined && viewHeight !== undefined;\n const LEGACY_isPerhapsPropsByBridgeTypeForceMobile =\n viewWidth !== undefined && sizeX !== undefined && sizeY !== undefined;\n const LEGACY_disableInternalUseBridgeAdaptivity =\n LEGACY_isPerhapsPropsByBridgeTypeAdaptive || LEGACY_isPerhapsPropsByBridgeTypeForceMobile;\n const LEGACY_bridge = useBridgeAdaptivity(LEGACY_disableInternalUseBridgeAdaptivity);\n /* eslint-enable @typescript-eslint/naming-convention */\n\n if (process.env.NODE_ENVIRONMENT === 'development') {\n // TODO [>=6]: удалить warn\n if (!LEGACY_disableInternalUseBridgeAdaptivity) {\n warn(\"[@vkontakte/vk-bridge] Интеграция VKUI с @vkontakte/vk-bridge устарела и будет удалена в v6. Используйте хук `useAdaptivity()` из @vkontakte/vk-bridge-react и результат передайте в компонент (см. https://github.com/VKCOM/VKUI/issues/5049)\"); // prettier-ignore\n }\n }\n\n const adaptivity = React.useMemo(\n () =>\n calculateAdaptivity(\n {\n viewWidth,\n viewHeight,\n sizeX,\n sizeY,\n hasPointer,\n hasHover,\n },\n LEGACY_bridge,\n ),\n [viewWidth, viewHeight, sizeX, sizeY, hasPointer, hasHover, LEGACY_bridge],\n );\n\n return <AdaptivityContext.Provider value={adaptivity}>{children}</AdaptivityContext.Provider>;\n};\n\nfunction calculateAdaptivity(\n { viewWidth, viewHeight, sizeX, sizeY, hasPointer, hasHover }: AdaptivityProps,\n LEGACY_bridge: BridgeAdaptivity, // eslint-disable-line @typescript-eslint/naming-convention\n) {\n // TODO [>=6]: удалить блок кода c использованием LEGACY_bridge (#5049)\n // https://github.com/VKCOM/VKUI/blob/v5.5.5/packages/vkui/src/components/AdaptivityProvider/AdaptivityProvider.tsx#L46-L92\n if (LEGACY_bridge.type === 'adaptive') {\n const { viewportWidth, viewportHeight } = LEGACY_bridge;\n\n if (viewportWidth >= BREAKPOINTS.DESKTOP) {\n viewWidth = ViewWidth.DESKTOP;\n } else if (viewportWidth >= BREAKPOINTS.TABLET) {\n viewWidth = ViewWidth.TABLET;\n } else if (viewportWidth >= BREAKPOINTS.SMALL_TABLET) {\n viewWidth = ViewWidth.SMALL_TABLET;\n } else if (viewportWidth >= BREAKPOINTS.MOBILE) {\n viewWidth = ViewWidth.MOBILE;\n } else {\n viewWidth = ViewWidth.SMALL_MOBILE;\n }\n\n if (viewportHeight >= BREAKPOINTS.MEDIUM_HEIGHT) {\n viewHeight = ViewHeight.MEDIUM;\n } else if (viewportHeight >= BREAKPOINTS.MOBILE_LANDSCAPE_HEIGHT) {\n viewHeight = ViewHeight.SMALL;\n } else {\n viewHeight = ViewHeight.EXTRA_SMALL;\n }\n\n if (viewWidth <= ViewWidth.MOBILE) {\n sizeX = SizeType.COMPACT;\n } else {\n sizeX = SizeType.REGULAR;\n }\n\n if (\n (viewWidth >= ViewWidth.SMALL_TABLET && _hasPointer) ||\n viewHeight <= ViewHeight.EXTRA_SMALL\n ) {\n sizeY = SizeType.COMPACT;\n } else {\n sizeY = SizeType.REGULAR;\n }\n } else if (\n LEGACY_bridge.type === 'force_mobile' ||\n LEGACY_bridge.type === 'force_mobile_compact'\n ) {\n viewWidth = ViewWidth.MOBILE;\n sizeX = SizeType.COMPACT;\n\n if (LEGACY_bridge.type === 'force_mobile_compact') {\n sizeY = SizeType.COMPACT;\n } else {\n sizeY = SizeType.REGULAR;\n }\n } else {\n if (sizeX === undefined && viewWidth !== undefined) {\n if (viewWidth <= ViewWidth.MOBILE) {\n sizeX = SizeType.COMPACT;\n } else {\n sizeX = SizeType.REGULAR;\n }\n }\n if (sizeY === undefined && viewWidth !== undefined && viewHeight !== undefined) {\n if (\n (viewWidth >= ViewWidth.SMALL_TABLET && _hasPointer) ||\n viewHeight <= ViewHeight.EXTRA_SMALL\n ) {\n sizeY = SizeType.COMPACT;\n } else {\n sizeY = SizeType.REGULAR;\n }\n }\n }\n\n return {\n viewWidth,\n viewHeight,\n sizeX,\n sizeY,\n hasPointer,\n hasHover,\n };\n}\n"],"names":["AdaptivityProvider","warn","warnOnce","viewWidth","viewHeight","sizeX","sizeY","hasPointer","hasHover","children","LEGACY_isPerhapsPropsByBridgeTypeAdaptive","undefined","LEGACY_isPerhapsPropsByBridgeTypeForceMobile","LEGACY_disableInternalUseBridgeAdaptivity","LEGACY_bridge","useBridgeAdaptivity","process","env","NODE_ENVIRONMENT","adaptivity","React","useMemo","calculateAdaptivity","AdaptivityContext","Provider","value","type","viewportWidth","viewportHeight","BREAKPOINTS","DESKTOP","ViewWidth","TABLET","SMALL_TABLET","MOBILE","SMALL_MOBILE","MEDIUM_HEIGHT","ViewHeight","MEDIUM","MOBILE_LANDSCAPE_HEIGHT","SMALL","EXTRA_SMALL","SizeType","COMPACT","REGULAR","_hasPointer"],"mappings":"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"}
@@ -1,9 +1,16 @@
1
1
  import * as React from 'react';
2
+ export type SafeAreaInsets = {
3
+ top?: number;
4
+ right?: number;
5
+ bottom?: number;
6
+ left?: number;
7
+ };
2
8
  export interface AppRootProps extends React.HTMLAttributes<HTMLDivElement> {
3
9
  /** Режим встраивания */
4
10
  mode?: 'partial' | 'embedded' | 'full';
5
11
  window?: Window;
6
12
  scroll?: 'global' | 'contain';
13
+ safeAreaInsets?: SafeAreaInsets;
7
14
  /**
8
15
  * Кастомный root-элемент портала
9
16
  */
@@ -14,4 +21,4 @@ export interface AppRootProps extends React.HTMLAttributes<HTMLDivElement> {
14
21
  /**
15
22
  * @see https://vkcom.github.io/VKUI/#/AppRoot
16
23
  */
17
- export declare const AppRoot: ({ children, mode, scroll, portalRoot: portalRootProp, disablePortal, className, ...props }: AppRootProps) => React.JSX.Element;
24
+ export declare const AppRoot: ({ children, mode, scroll, portalRoot: portalRootProp, disablePortal, className, safeAreaInsets, ...props }: AppRootProps) => React.JSX.Element;
@@ -25,28 +25,38 @@ var _adaptivity = require("../../lib/adaptivity");
25
25
  var _dom = require("../../lib/dom");
26
26
  var _isRefObject = require("../../lib/isRefObject");
27
27
  var _useIsomorphicLayoutEffect = require("../../lib/useIsomorphicLayoutEffect");
28
+ var _warnOnce = require("../../lib/warnOnce");
28
29
  var _AppRootContext = require("./AppRootContext");
29
30
  var _ScrollContext = require("./ScrollContext");
31
+ var warn = (0, _warnOnce.warnOnce)("AppRoot");
30
32
  var vkuiSizeXClassNames = _define_property._({
31
33
  none: "vkui--sizeX-none"
32
34
  }, _adaptivity.SizeType.REGULAR, "vkui--sizeX-regular");
33
35
  var INSET_CUSTOM_PROPERTY_PREFIX = "--vkui_internal--safe_area_inset_";
34
36
  var AppRoot = function(_param) {
35
- var children = _param.children, _param_mode = _param.mode, mode = _param_mode === void 0 ? "full" : _param_mode, _param_scroll = _param.scroll, scroll = _param_scroll === void 0 ? "global" : _param_scroll, tmp = _param.portalRoot, portalRootProp = tmp === void 0 ? null : tmp, disablePortal = _param.disablePortal, className = _param.className, props = _object_without_properties._(_param, [
37
+ var children = _param.children, _param_mode = _param.mode, mode = _param_mode === void 0 ? "full" : _param_mode, _param_scroll = _param.scroll, scroll = _param_scroll === void 0 ? "global" : _param_scroll, tmp = _param.portalRoot, portalRootProp = tmp === void 0 ? null : tmp, disablePortal = _param.disablePortal, className = _param.className, safeAreaInsets = _param.safeAreaInsets, props = _object_without_properties._(_param, [
36
38
  "children",
37
39
  "mode",
38
40
  "scroll",
39
41
  "portalRoot",
40
42
  "disablePortal",
41
- "className"
43
+ "className",
44
+ "safeAreaInsets"
42
45
  ]);
43
46
  var isKeyboardInputActive = (0, _useKeyboardInputTracker.useKeyboardInputTracker)();
44
47
  var rootRef = _react.useRef(null);
45
48
  var _React_useState = _sliced_to_array._(_react.useState(null), 2), portalRoot = _React_useState[0], setPortalRoot = _React_useState[1];
46
49
  var document = (0, _dom.useDOM)().document;
47
- var insets = (0, _useInsets.useInsets)();
50
+ var deprecatedInsets = (0, _useInsets.useInsets)(!safeAreaInsets);
51
+ var insets = safeAreaInsets ? safeAreaInsets : deprecatedInsets;
48
52
  var appearance = (0, _useAppearance.useAppearance)();
49
53
  var _useAdaptivity1 = (0, _useAdaptivity.useAdaptivity)(), hasPointer = _useAdaptivity1.hasPointer, _useAdaptivity_sizeX = _useAdaptivity1.sizeX, sizeX = _useAdaptivity_sizeX === void 0 ? "none" : _useAdaptivity_sizeX;
54
+ if (process.env.NODE_ENVIRONMENT === "development") {
55
+ if (!safeAreaInsets) {
56
+ // TODO [>=6]: удалить warn
57
+ warn("[@vkontakte/vk-bridge] Интеграция VKUI с @vkontakte/vk-bridge устарела и будет удалена в v6. Используйте хук `useInsets()` из @vkontakte/vk-bridge-react и результат передайте в параметр `safeAreaInsets` (см. https://github.com/VKCOM/VKUI/issues/5049)"); // prettier-ignore
58
+ }
59
+ }
50
60
  // setup portal
51
61
  (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function() {
52
62
  var portal = null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/AppRoot/AppRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { IconSettingsProvider } from '@vkontakte/icons';\nimport { Insets } from '@vkontakte/vk-bridge';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useAppearance } from '../../hooks/useAppearance';\nimport { useInsets } from '../../hooks/useInsets';\nimport { useKeyboardInputTracker } from '../../hooks/useKeyboardInputTracker';\nimport { SizeType } from '../../lib/adaptivity';\nimport { useDOM } from '../../lib/dom';\nimport { isRefObject } from '../../lib/isRefObject';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { AppRootContext } from './AppRootContext';\nimport { ElementScrollController, GlobalScrollController } from './ScrollContext';\nimport styles from './AppRoot.module.css';\n\nconst vkuiSizeXClassNames = {\n none: 'vkui--sizeX-none',\n [SizeType.REGULAR]: 'vkui--sizeX-regular',\n};\n\nconst INSET_CUSTOM_PROPERTY_PREFIX = `--vkui_internal--safe_area_inset_`;\n\n// Используйте classList, но будьте осторожны\n/* eslint-disable no-restricted-properties */\n\nexport interface AppRootProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Режим встраивания */\n mode?: 'partial' | 'embedded' | 'full';\n window?: Window;\n scroll?: 'global' | 'contain';\n /**\n * Кастомный root-элемент портала\n */\n portalRoot?: HTMLElement | React.RefObject<HTMLElement> | null;\n /** Disable portal for components */\n disablePortal?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/AppRoot\n */\nexport const AppRoot = ({\n children,\n mode = 'full',\n scroll = 'global',\n portalRoot: portalRootProp = null,\n disablePortal,\n className,\n ...props\n}: AppRootProps) => {\n const isKeyboardInputActive = useKeyboardInputTracker();\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const [portalRoot, setPortalRoot] = React.useState<HTMLElement | null>(null);\n const { document } = useDOM();\n const insets = useInsets();\n const appearance = useAppearance();\n\n const { hasPointer, sizeX = 'none' } = useAdaptivity();\n\n // setup portal\n useIsomorphicLayoutEffect(() => {\n let portal: HTMLElement | null = null;\n if (portalRootProp) {\n if (isRefObject(portalRootProp)) {\n portal = portalRootProp.current;\n } else {\n portal = portalRootProp;\n }\n }\n if (!portal) {\n portal = document!.createElement('div');\n document!.body.appendChild(portal);\n }\n setPortalRoot(portal);\n return () => {\n if (!portalRootProp) {\n portal?.parentElement?.removeChild(portal);\n }\n };\n }, [portalRootProp]);\n\n // setup root classes\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial') {\n return noop;\n }\n\n const parent = rootRef.current?.parentElement;\n const classes = ['vkui__root'].concat(mode === 'embedded' ? 'vkui__root--embedded' : []);\n parent?.classList.add(...classes);\n\n return () => {\n parent?.classList.remove(...classes);\n };\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n if (mode === 'full') {\n document!.documentElement.classList.add('vkui');\n\n return () => {\n document!.documentElement.classList.remove('vkui');\n };\n }\n\n return undefined;\n }, [document, mode]);\n\n // setup insets\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial' || !rootRef.current?.parentElement) {\n return noop;\n }\n\n const parent = rootRef.current.parentElement;\n\n let key: keyof Insets;\n for (key in insets) {\n if (insets.hasOwnProperty(key) && typeof insets[key] === 'number') {\n const inset = insets[key];\n parent.style.setProperty(INSET_CUSTOM_PROPERTY_PREFIX + key, `${inset}px`);\n portalRoot &&\n portalRoot.style.setProperty(INSET_CUSTOM_PROPERTY_PREFIX + key, `${inset}px`);\n }\n }\n\n return () => {\n let key: keyof Insets;\n for (key in insets) {\n if (insets.hasOwnProperty(key)) {\n parent.style.removeProperty(INSET_CUSTOM_PROPERTY_PREFIX + key);\n portalRoot && portalRoot.style.removeProperty(INSET_CUSTOM_PROPERTY_PREFIX + key);\n }\n }\n };\n }, [insets, portalRoot]);\n\n // adaptivity handler\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial') {\n return noop;\n }\n const className = sizeX !== SizeType.COMPACT ? vkuiSizeXClassNames[sizeX] : null;\n const container = mode === 'embedded' ? rootRef.current?.parentElement : document!.body;\n\n if (className === null || !container) {\n return noop;\n }\n\n container.classList.add(className);\n return () => {\n container.classList.remove(className);\n };\n }, [sizeX]);\n\n useIsomorphicLayoutEffect(() => {\n if (mode !== 'full' || appearance === undefined) {\n return noop;\n }\n document!.documentElement.style.setProperty('color-scheme', appearance);\n\n return () => document!.documentElement.style.removeProperty('color-scheme');\n }, [appearance]);\n\n const ScrollController = React.useMemo(\n () => (scroll === 'contain' ? ElementScrollController : GlobalScrollController),\n [scroll],\n );\n\n const content = (\n <AppRootContext.Provider\n value={{\n appRoot: rootRef,\n portalRoot,\n embedded: mode === 'embedded',\n keyboardInput: isKeyboardInputActive,\n mode,\n disablePortal,\n }}\n >\n <ScrollController elRef={rootRef}>\n <IconSettingsProvider classPrefix=\"vkui\">{children}</IconSettingsProvider>\n </ScrollController>\n </AppRootContext.Provider>\n );\n\n return mode === 'partial' ? (\n content\n ) : (\n <div\n ref={rootRef}\n className={classNames(\n styles['AppRoot'],\n hasPointer === undefined\n ? styles['AppRoot--pointer-none']\n : !hasPointer && styles['AppRoot--pointer-has-not'],\n className,\n )}\n {...props}\n >\n {content}\n </div>\n );\n};\n"],"names":["AppRoot","vkuiSizeXClassNames","none","SizeType","REGULAR","INSET_CUSTOM_PROPERTY_PREFIX","children","mode","scroll","portalRootProp","portalRoot","disablePortal","className","props","isKeyboardInputActive","useKeyboardInputTracker","rootRef","React","useRef","useState","setPortalRoot","document","useDOM","insets","useInsets","appearance","useAppearance","useAdaptivity","hasPointer","sizeX","useIsomorphicLayoutEffect","portal","isRefObject","current","createElement","body","appendChild","parentElement","removeChild","parent","noop","classes","concat","classList","add","remove","documentElement","undefined","key","hasOwnProperty","inset","style","setProperty","removeProperty","COMPACT","container","ScrollController","useMemo","ElementScrollController","GlobalScrollController","content","AppRootContext","Provider","value","appRoot","embedded","keyboardInput","elRef","IconSettingsProvider","classPrefix","div","ref","classNames"],"mappings":";;;;+BA0CaA;;;eAAAA;;;;;;;;;+DA1CU;qBACc;oBAEJ;6BACH;6BACA;yBACJ;uCACc;0BACf;mBACF;2BACK;yCACc;8BACX;6BACiC;AAGhE,IAAMC,sBAEJ;IADAC,MAAM;GACLC,oBAAQ,CAACC,OAAO,EAAG;AAGtB,IAAMC,+BAAgC;AAqB/B,IAAML,UAAU;QACrBM,kBAAAA,+BACAC,MAAAA,gCAAO,6CACPC,QAAAA,oCAAS,0BACGC,aAAZC,YAAYD,iBAAAA,iBAAiB,OAAjBA,KACZE,uBAAAA,eACAC,mBAAAA,WACGC;QANHP;QACAC;QACAC;QACAE;QACAC;QACAC;;IAGA,IAAME,wBAAwBC,IAAAA,gDAAuB;IACrD,IAAMC,UAAUC,OAAMC,MAAM,CAAwB;IACpD,IAAoCD,qCAAAA,OAAME,QAAQ,CAAqB,WAAhET,aAA6BO,oBAAjBG,gBAAiBH;IACpC,IAAM,AAAEI,WAAaC,IAAAA,WAAM,IAAnBD;IACR,IAAME,SAASC,IAAAA,oBAAS;IACxB,IAAMC,aAAaC,IAAAA,4BAAa;IAEhC,IAAuCC,kBAAAA,IAAAA,4BAAa,KAA5CC,aAA+BD,gBAA/BC,mCAA+BD,gBAAnBE,OAAAA,0CAAQ;IAE5B,eAAe;IACfC,IAAAA,oDAAyB,EAAC;QACxB,IAAIC,SAA6B;QACjC,IAAItB,gBAAgB;YAClB,IAAIuB,IAAAA,wBAAW,EAACvB,iBAAiB;gBAC/BsB,SAAStB,eAAewB,OAAO;YACjC,OAAO;gBACLF,SAAStB;YACX;QACF;QACA,IAAI,CAACsB,QAAQ;YACXA,SAASV,SAAUa,aAAa,CAAC;YACjCb,SAAUc,IAAI,CAACC,WAAW,CAACL;QAC7B;QACAX,cAAcW;QACd,OAAO;YACL,IAAI,CAACtB,gBAAgB;oBACnBsB,uBAAAA;iBAAAA,UAAAA,oBAAAA,+BAAAA,wBAAAA,QAAQM,aAAa,cAArBN,4CAAAA,sBAAuBO,WAAW,CAACP;YACrC;QACF;IACF,GAAG;QAACtB;KAAe;IAEnB,qBAAqB;IACrBqB,IAAAA,oDAAyB,EAAC;YAOxBS;YAFevB,kBAEfuB;QANA,IAAIhC,SAAS,WAAW;YACtB,OAAOiC,UAAI;QACb;QAEA,IAAMD,UAASvB,mBAAAA,QAAQiB,OAAO,cAAfjB,uCAAAA,iBAAiBqB,aAAa;QAC7C,IAAMI,UAAU;YAAC;SAAa,CAACC,MAAM,CAACnC,SAAS,aAAa,yBAAyB,EAAE;SACvFgC,UAAAA,oBAAAA,8BAAAA,CAAAA,oBAAAA,QAAQI,SAAS,EAACC,GAAG,CAArBL,MAAAA,mBAAsB,uBAAGE;QAEzB,OAAO;gBACLF;gBAAAA;aAAAA,UAAAA,oBAAAA,8BAAAA,CAAAA,oBAAAA,QAAQI,SAAS,EAACE,MAAM,CAAxBN,MAAAA,mBAAyB,uBAAGE;QAC9B;IACF,GAAG,EAAE;IAELX,IAAAA,oDAAyB,EAAC;QACxB,IAAIvB,SAAS,QAAQ;YACnBc,SAAUyB,eAAe,CAACH,SAAS,CAACC,GAAG,CAAC;YAExC,OAAO;gBACLvB,SAAUyB,eAAe,CAACH,SAAS,CAACE,MAAM,CAAC;YAC7C;QACF;QAEA,OAAOE;IACT,GAAG;QAAC1B;QAAUd;KAAK;IAEnB,eAAe;IACfuB,IAAAA,oDAAyB,EAAC;YACGd;QAA3B,IAAIT,SAAS,aAAa,GAACS,mBAAAA,QAAQiB,OAAO,cAAfjB,uCAAAA,iBAAiBqB,aAAa,GAAE;YACzD,OAAOG,UAAI;QACb;QAEA,IAAMD,SAASvB,QAAQiB,OAAO,CAACI,aAAa;QAE5C,IAAIW;QACJ,IAAKA,OAAOzB,OAAQ;YAClB,IAAIA,OAAO0B,cAAc,CAACD,QAAQ,OAAOzB,MAAM,CAACyB,IAAI,KAAK,UAAU;gBACjE,IAAME,QAAQ3B,MAAM,CAACyB,IAAI;gBACzBT,OAAOY,KAAK,CAACC,WAAW,CAAC/C,+BAA+B2C,KAAK,AAAC,GAAQ,OAANE,OAAM;gBACtExC,cACEA,WAAWyC,KAAK,CAACC,WAAW,CAAC/C,+BAA+B2C,KAAK,AAAC,GAAQ,OAANE,OAAM;YAC9E;QACF;QAEA,OAAO;YACL,IAAIF;YACJ,IAAKA,OAAOzB,OAAQ;gBAClB,IAAIA,OAAO0B,cAAc,CAACD,MAAM;oBAC9BT,OAAOY,KAAK,CAACE,cAAc,CAAChD,+BAA+B2C;oBAC3DtC,cAAcA,WAAWyC,KAAK,CAACE,cAAc,CAAChD,+BAA+B2C;gBAC/E;YACF;QACF;IACF,GAAG;QAACzB;QAAQb;KAAW;IAEvB,qBAAqB;IACrBoB,IAAAA,oDAAyB,EAAC;YAKgBd;QAJxC,IAAIT,SAAS,WAAW;YACtB,OAAOiC,UAAI;QACb;QACA,IAAM5B,YAAYiB,UAAU1B,oBAAQ,CAACmD,OAAO,GAAGrD,mBAAmB,CAAC4B,MAAM,GAAG;QAC5E,IAAM0B,YAAYhD,SAAS,cAAaS,mBAAAA,QAAQiB,OAAO,cAAfjB,uCAAAA,iBAAiBqB,aAAa,GAAGhB,SAAUc,IAAI;QAEvF,IAAIvB,cAAc,QAAQ,CAAC2C,WAAW;YACpC,OAAOf,UAAI;QACb;QAEAe,UAAUZ,SAAS,CAACC,GAAG,CAAChC;QACxB,OAAO;YACL2C,UAAUZ,SAAS,CAACE,MAAM,CAACjC;QAC7B;IACF,GAAG;QAACiB;KAAM;IAEVC,IAAAA,oDAAyB,EAAC;QACxB,IAAIvB,SAAS,UAAUkB,eAAesB,WAAW;YAC/C,OAAOP,UAAI;QACb;QACAnB,SAAUyB,eAAe,CAACK,KAAK,CAACC,WAAW,CAAC,gBAAgB3B;QAE5D,OAAO;mBAAMJ,SAAUyB,eAAe,CAACK,KAAK,CAACE,cAAc,CAAC;;IAC9D,GAAG;QAAC5B;KAAW;IAEf,IAAM+B,mBAAmBvC,OAAMwC,OAAO,CACpC;eAAOjD,WAAW,YAAYkD,sCAAuB,GAAGC,qCAAsB;OAC9E;QAACnD;KAAO;IAGV,IAAMoD,wBACJ,qBAACC,8BAAc,CAACC,QAAQ;QACtBC,OAAO;YACLC,SAAShD;YACTN,YAAAA;YACAuD,UAAU1D,SAAS;YACnB2D,eAAepD;YACfP,MAAAA;YACAI,eAAAA;QACF;qBAEA,qBAAC6C;QAAiBW,OAAOnD;qBACvB,qBAACoD,2BAAoB;QAACC,aAAY;OAAQ/D;IAKhD,OAAOC,SAAS,YACdqD,wBAEA,qBAACU;QACCC,KAAKvD;QACLJ,WAAW4D,IAAAA,gBAAU,iBAEnB5C,eAAemB,0CAEX,CAACnB,8CACLhB;OAEEC,QAEH+C;AAGP"}
1
+ {"version":3,"sources":["../../../../src/components/AppRoot/AppRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { IconSettingsProvider } from '@vkontakte/icons';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useAppearance } from '../../hooks/useAppearance';\nimport { useInsets } from '../../hooks/useInsets';\nimport { useKeyboardInputTracker } from '../../hooks/useKeyboardInputTracker';\nimport { SizeType } from '../../lib/adaptivity';\nimport { useDOM } from '../../lib/dom';\nimport { isRefObject } from '../../lib/isRefObject';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { AppRootContext } from './AppRootContext';\nimport { ElementScrollController, GlobalScrollController } from './ScrollContext';\nimport styles from './AppRoot.module.css';\n\nconst warn = warnOnce('AppRoot');\n\nexport type SafeAreaInsets = {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n};\n\nconst vkuiSizeXClassNames = {\n none: 'vkui--sizeX-none',\n [SizeType.REGULAR]: 'vkui--sizeX-regular',\n};\n\nconst INSET_CUSTOM_PROPERTY_PREFIX = `--vkui_internal--safe_area_inset_`;\n\n// Используйте classList, но будьте осторожны\n/* eslint-disable no-restricted-properties */\n\nexport interface AppRootProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Режим встраивания */\n mode?: 'partial' | 'embedded' | 'full';\n window?: Window;\n scroll?: 'global' | 'contain';\n safeAreaInsets?: SafeAreaInsets;\n /**\n * Кастомный root-элемент портала\n */\n portalRoot?: HTMLElement | React.RefObject<HTMLElement> | null;\n /** Disable portal for components */\n disablePortal?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/AppRoot\n */\nexport const AppRoot = ({\n children,\n mode = 'full',\n scroll = 'global',\n portalRoot: portalRootProp = null,\n disablePortal,\n className,\n safeAreaInsets,\n ...props\n}: AppRootProps) => {\n const isKeyboardInputActive = useKeyboardInputTracker();\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const [portalRoot, setPortalRoot] = React.useState<HTMLElement | null>(null);\n const { document } = useDOM();\n const deprecatedInsets = useInsets(!safeAreaInsets);\n const insets = safeAreaInsets ? safeAreaInsets : deprecatedInsets;\n const appearance = useAppearance();\n\n const { hasPointer, sizeX = 'none' } = useAdaptivity();\n\n if (process.env.NODE_ENVIRONMENT === 'development') {\n if (!safeAreaInsets) {\n // TODO [>=6]: удалить warn\n warn(\"[@vkontakte/vk-bridge] Интеграция VKUI с @vkontakte/vk-bridge устарела и будет удалена в v6. Используйте хук `useInsets()` из @vkontakte/vk-bridge-react и результат передайте в параметр `safeAreaInsets` (см. https://github.com/VKCOM/VKUI/issues/5049)\"); // prettier-ignore\n }\n }\n\n // setup portal\n useIsomorphicLayoutEffect(() => {\n let portal: HTMLElement | null = null;\n if (portalRootProp) {\n if (isRefObject(portalRootProp)) {\n portal = portalRootProp.current;\n } else {\n portal = portalRootProp;\n }\n }\n if (!portal) {\n portal = document!.createElement('div');\n document!.body.appendChild(portal);\n }\n setPortalRoot(portal);\n return () => {\n if (!portalRootProp) {\n portal?.parentElement?.removeChild(portal);\n }\n };\n }, [portalRootProp]);\n\n // setup root classes\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial') {\n return noop;\n }\n\n const parent = rootRef.current?.parentElement;\n const classes = ['vkui__root'].concat(mode === 'embedded' ? 'vkui__root--embedded' : []);\n parent?.classList.add(...classes);\n\n return () => {\n parent?.classList.remove(...classes);\n };\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n if (mode === 'full') {\n document!.documentElement.classList.add('vkui');\n\n return () => {\n document!.documentElement.classList.remove('vkui');\n };\n }\n\n return undefined;\n }, [document, mode]);\n\n // setup insets\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial' || !rootRef.current?.parentElement) {\n return noop;\n }\n\n const parent = rootRef.current.parentElement;\n\n let key: keyof SafeAreaInsets;\n for (key in insets) {\n if (insets.hasOwnProperty(key) && typeof insets[key] === 'number') {\n const inset = insets[key];\n parent.style.setProperty(INSET_CUSTOM_PROPERTY_PREFIX + key, `${inset}px`);\n portalRoot &&\n portalRoot.style.setProperty(INSET_CUSTOM_PROPERTY_PREFIX + key, `${inset}px`);\n }\n }\n\n return () => {\n let key: keyof SafeAreaInsets;\n for (key in insets) {\n if (insets.hasOwnProperty(key)) {\n parent.style.removeProperty(INSET_CUSTOM_PROPERTY_PREFIX + key);\n portalRoot && portalRoot.style.removeProperty(INSET_CUSTOM_PROPERTY_PREFIX + key);\n }\n }\n };\n }, [insets, portalRoot]);\n\n // adaptivity handler\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial') {\n return noop;\n }\n const className = sizeX !== SizeType.COMPACT ? vkuiSizeXClassNames[sizeX] : null;\n const container = mode === 'embedded' ? rootRef.current?.parentElement : document!.body;\n\n if (className === null || !container) {\n return noop;\n }\n\n container.classList.add(className);\n return () => {\n container.classList.remove(className);\n };\n }, [sizeX]);\n\n useIsomorphicLayoutEffect(() => {\n if (mode !== 'full' || appearance === undefined) {\n return noop;\n }\n document!.documentElement.style.setProperty('color-scheme', appearance);\n\n return () => document!.documentElement.style.removeProperty('color-scheme');\n }, [appearance]);\n\n const ScrollController = React.useMemo(\n () => (scroll === 'contain' ? ElementScrollController : GlobalScrollController),\n [scroll],\n );\n\n const content = (\n <AppRootContext.Provider\n value={{\n appRoot: rootRef,\n portalRoot,\n embedded: mode === 'embedded',\n keyboardInput: isKeyboardInputActive,\n mode,\n disablePortal,\n }}\n >\n <ScrollController elRef={rootRef}>\n <IconSettingsProvider classPrefix=\"vkui\">{children}</IconSettingsProvider>\n </ScrollController>\n </AppRootContext.Provider>\n );\n\n return mode === 'partial' ? (\n content\n ) : (\n <div\n ref={rootRef}\n className={classNames(\n styles['AppRoot'],\n hasPointer === undefined\n ? styles['AppRoot--pointer-none']\n : !hasPointer && styles['AppRoot--pointer-has-not'],\n className,\n )}\n {...props}\n >\n {content}\n </div>\n );\n};\n"],"names":["AppRoot","warn","warnOnce","vkuiSizeXClassNames","none","SizeType","REGULAR","INSET_CUSTOM_PROPERTY_PREFIX","children","mode","scroll","portalRootProp","portalRoot","disablePortal","className","safeAreaInsets","props","isKeyboardInputActive","useKeyboardInputTracker","rootRef","React","useRef","useState","setPortalRoot","document","useDOM","deprecatedInsets","useInsets","insets","appearance","useAppearance","useAdaptivity","hasPointer","sizeX","process","env","NODE_ENVIRONMENT","useIsomorphicLayoutEffect","portal","isRefObject","current","createElement","body","appendChild","parentElement","removeChild","parent","noop","classes","concat","classList","add","remove","documentElement","undefined","key","hasOwnProperty","inset","style","setProperty","removeProperty","COMPACT","container","ScrollController","useMemo","ElementScrollController","GlobalScrollController","content","AppRootContext","Provider","value","appRoot","embedded","keyboardInput","elRef","IconSettingsProvider","classPrefix","div","ref","classNames"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { AppearanceType } from '@vkontakte/vk-bridge';
2
+ import type { AppearanceType } from '../../lib/appearance';
3
3
  export interface AppearanceProviderProps {
4
4
  appearance: AppearanceType;
5
5
  children: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/AppearanceProvider/AppearanceProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { AppearanceType } from '@vkontakte/vk-bridge';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { TokensClassProvider } from '../../lib/tokensClassProvider';\nimport { ConfigProviderOverride } from '../ConfigProvider/ConfigProviderOverride';\n\nexport interface AppearanceProviderProps {\n appearance: AppearanceType;\n children: React.ReactNode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/AppearanceProvider\n */\nexport const AppearanceProvider = ({ appearance, children }: AppearanceProviderProps) => {\n const platform = usePlatform();\n\n return (\n <ConfigProviderOverride appearance={appearance}>\n <TokensClassProvider platform={platform} appearance={appearance}>\n {children}\n </TokensClassProvider>\n </ConfigProviderOverride>\n );\n};\n"],"names":["AppearanceProvider","appearance","children","platform","usePlatform","ConfigProviderOverride","TokensClassProvider"],"mappings":";;;;+BAcaA;;;eAAAA;;;;+DAdU;2BAEK;mCACQ;sCACG;AAUhC,IAAMA,qBAAqB;QAAGC,mBAAAA,YAAYC,iBAAAA;IAC/C,IAAMC,WAAWC,IAAAA,wBAAW;IAE5B,qBACE,qBAACC,8CAAsB;QAACJ,YAAYA;qBAClC,qBAACK,wCAAmB;QAACH,UAAUA;QAAUF,YAAYA;OAClDC;AAIT"}
1
+ {"version":3,"sources":["../../../../src/components/AppearanceProvider/AppearanceProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport type { AppearanceType } from '../../lib/appearance';\nimport { TokensClassProvider } from '../../lib/tokensClassProvider';\nimport { ConfigProviderOverride } from '../ConfigProvider/ConfigProviderOverride';\n\nexport interface AppearanceProviderProps {\n appearance: AppearanceType;\n children: React.ReactNode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/AppearanceProvider\n */\nexport const AppearanceProvider = ({ appearance, children }: AppearanceProviderProps) => {\n const platform = usePlatform();\n\n return (\n <ConfigProviderOverride appearance={appearance}>\n <TokensClassProvider platform={platform} appearance={appearance}>\n {children}\n </TokensClassProvider>\n </ConfigProviderOverride>\n );\n};\n"],"names":["AppearanceProvider","appearance","children","platform","usePlatform","ConfigProviderOverride","TokensClassProvider"],"mappings":";;;;+BAcaA;;;eAAAA;;;;+DAdU;2BACK;mCAEQ;sCACG;AAUhC,IAAMA,qBAAqB;QAAGC,mBAAAA,YAAYC,iBAAAA;IAC/C,IAAMC,WAAWC,IAAAA,wBAAW;IAE5B,qBACE,qBAACC,8CAAsB;QAACJ,YAAYA;qBAClC,qBAACK,wCAAmB;QAACH,UAAUA;QAAUF,YAAYA;OAClDC;AAIT"}
@@ -1,6 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import { ConfigProviderContextInterface } from './ConfigProviderContext';
3
3
  export interface ConfigProviderProps extends Partial<ConfigProviderContextInterface> {
4
+ /**
5
+ * > ⚠️ В **v6** метод будет удалён (см. https://github.com/VKCOM/VKUI/issues/5049).
6
+ * > Используйте хук `useAppearance()` из библиотеки `@vkontakte/vk-bridge-react`, если вам нужно
7
+ * > определять, что `appearance` был передан через VK Bridge.
8
+ *
9
+ * @deprecated v5.8.0
10
+ */
4
11
  onDetectAppearanceByBridge?: () => void;
5
12
  children: React.ReactNode;
6
13
  }
@@ -18,10 +18,23 @@ var _useObjectMemo = require("../../hooks/useObjectMemo");
18
18
  var _dom = require("../../lib/dom");
19
19
  var _tokensClassProvider = require("../../lib/tokensClassProvider");
20
20
  var _useIsomorphicLayoutEffect = require("../../lib/useIsomorphicLayoutEffect");
21
+ var _warnOnce = require("../../lib/warnOnce");
21
22
  var _ConfigProviderContext = require("./ConfigProviderContext");
23
+ var warn = (0, _warnOnce.warnOnce)("ConfigProvider");
22
24
  var ConfigProvider = function(props) {
23
25
  var parentConfig = (0, _ConfigProviderContext.useConfigProvider)();
24
- var _$_object_spread = _object_spread._({}, parentConfig, props), children = _$_object_spread.children, webviewType = _$_object_spread.webviewType, isWebView = _$_object_spread.isWebView, transitionMotionEnabled = _$_object_spread.transitionMotionEnabled, platform = _$_object_spread.platform, locale = _$_object_spread.locale, appearanceProp = _$_object_spread.appearance, _object_spread_onDetectAppearanceByBridge = _$_object_spread.onDetectAppearanceByBridge, onDetectAppearanceByBridge = _object_spread_onDetectAppearanceByBridge === void 0 ? _vkjs.noop : _object_spread_onDetectAppearanceByBridge;
26
+ var _$_object_spread = _object_spread._({}, parentConfig, props), children = _$_object_spread.children, webviewType = _$_object_spread.webviewType, hasCustomPanelHeaderAfterMerged = _$_object_spread.hasCustomPanelHeaderAfter, customPanelHeaderAfterMinWidth = _$_object_spread.customPanelHeaderAfterMinWidth, isWebView = _$_object_spread.isWebView, transitionMotionEnabled = _$_object_spread.transitionMotionEnabled, platform = _$_object_spread.platform, locale = _$_object_spread.locale, appearanceProp = _$_object_spread.appearance, _object_spread_onDetectAppearanceByBridge = _$_object_spread.onDetectAppearanceByBridge, onDetectAppearanceByBridge = _object_spread_onDetectAppearanceByBridge === void 0 ? _vkjs.noop : _object_spread_onDetectAppearanceByBridge;
27
+ // TODO [>=6]: Удалить данный бэкпорт
28
+ var hasCustomPanelHeaderAfter = props.webviewType && props.hasCustomPanelHeaderAfter === undefined ? props.webviewType === _ConfigProviderContext.WebviewType.VKAPPS : hasCustomPanelHeaderAfterMerged;
29
+ if (process.env.NODE_ENVIRONMENT === "development") {
30
+ // TODO [>=6]: удалить warn
31
+ var webviewTypeRule = "";
32
+ if (props.webviewType) {
33
+ webviewTypeRule = props.webviewType === _ConfigProviderContext.WebviewType.INTERNAL ? "3. замените webviewType={WebviewType.INTERNAL} на hasCustomPanelHeaderAfterProp={false}" : "3. замените webviewType={WebviewType.VKAPPS} на hasCustomPanelHeaderAfterProp={true}";
34
+ }
35
+ warn("[@vkontakte/vk-bridge's deprecated] Если вы используете VK Bridge, то:\n\n1. используйте хук useAppearance() из @vkontakte/vk-bridge-react и результат передайте в параметр appearance;\n2. передайте bridge.isWebView() в параметр isWebView;\n".concat(webviewTypeRule, "\n\nПодробности см. https://github.com/VKCOM/VKUI/issues/5049\n"));
36
+ }
37
+ // TODO [>=6]: удалить использование хука
25
38
  var appearance = (0, _useAutoDetectAppearance.useAutoDetectAppearance)(appearanceProp, onDetectAppearanceByBridge);
26
39
  var document = (0, _dom.useDOM)().document;
27
40
  (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function() {
@@ -38,6 +51,8 @@ var ConfigProvider = function(props) {
38
51
  ]);
39
52
  var configContext = (0, _useObjectMemo.useObjectMemo)({
40
53
  webviewType: webviewType,
54
+ hasCustomPanelHeaderAfter: hasCustomPanelHeaderAfter,
55
+ customPanelHeaderAfterMinWidth: customPanelHeaderAfterMinWidth,
41
56
  isWebView: isWebView,
42
57
  transitionMotionEnabled: transitionMotionEnabled,
43
58
  platform: platform,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ConfigProvider/ConfigProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { noop } from '@vkontakte/vkjs';\nimport { generateVKUITokensClassName } from '../../helpers/generateVKUITokensClassName';\nimport { useAutoDetectAppearance } from '../../hooks/useAutoDetectAppearance';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { useDOM } from '../../lib/dom';\nimport { TokensClassProvider } from '../../lib/tokensClassProvider';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n useConfigProvider,\n} from './ConfigProviderContext';\n\nexport interface ConfigProviderProps extends Partial<ConfigProviderContextInterface> {\n onDetectAppearanceByBridge?: () => void;\n children: React.ReactNode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ConfigProvider\n */\nexport const ConfigProvider = (props: ConfigProviderProps) => {\n const parentConfig = useConfigProvider();\n\n const {\n children,\n webviewType,\n isWebView,\n transitionMotionEnabled,\n platform,\n locale,\n appearance: appearanceProp,\n onDetectAppearanceByBridge = noop,\n } = {\n ...parentConfig,\n ...props,\n };\n\n const appearance = useAutoDetectAppearance(appearanceProp, onDetectAppearanceByBridge);\n\n const { document } = useDOM();\n\n useIsomorphicLayoutEffect(() => {\n const VKUITokensClassName = generateVKUITokensClassName(platform, appearance);\n\n // eslint-disable-next-line no-restricted-properties\n document!.body.classList.add(VKUITokensClassName);\n\n return () => {\n // eslint-disable-next-line no-restricted-properties\n document!.body.classList.remove(VKUITokensClassName);\n };\n }, [platform, appearance]);\n\n const configContext = useObjectMemo({\n webviewType,\n isWebView,\n transitionMotionEnabled,\n platform,\n locale,\n appearance,\n });\n\n return (\n <ConfigProviderContext.Provider value={configContext}>\n <TokensClassProvider platform={platform} appearance={appearance}>\n {children}\n </TokensClassProvider>\n </ConfigProviderContext.Provider>\n );\n};\n"],"names":["ConfigProvider","props","parentConfig","useConfigProvider","children","webviewType","isWebView","transitionMotionEnabled","platform","locale","appearance","appearanceProp","onDetectAppearanceByBridge","noop","useAutoDetectAppearance","document","useDOM","useIsomorphicLayoutEffect","VKUITokensClassName","generateVKUITokensClassName","body","classList","add","remove","configContext","useObjectMemo","ConfigProviderContext","Provider","value","TokensClassProvider"],"mappings":";;;;+BAsBaA;;;eAAAA;;;;;+DAtBU;oBACF;2CACuB;uCACJ;6BACV;mBACP;mCACa;yCACM;qCAKnC;AAUA,IAAMA,iBAAiB,SAACC;IAC7B,IAAMC,eAAeC,IAAAA,wCAAiB;IAEtC,IASI,mBAAA,qBACCD,cACAD,QAVHG,WAQE,iBARFA,UACAC,cAOE,iBAPFA,aACAC,YAME,iBANFA,WACAC,0BAKE,iBALFA,yBACAC,WAIE,iBAJFA,UACAC,SAGE,iBAHFA,QACAC,AAAYC,iBAEV,iBAFFD,wDAEE,iBADFE,4BAAAA,oFAA6BC,UAAI;IAMnC,IAAMH,aAAaI,IAAAA,gDAAuB,EAACH,gBAAgBC;IAE3D,IAAM,AAAEG,WAAaC,IAAAA,WAAM,IAAnBD;IAERE,IAAAA,oDAAyB,EAAC;QACxB,IAAMC,sBAAsBC,IAAAA,wDAA2B,EAACX,UAAUE;QAElE,oDAAoD;QACpDK,SAAUK,IAAI,CAACC,SAAS,CAACC,GAAG,CAACJ;QAE7B,OAAO;YACL,oDAAoD;YACpDH,SAAUK,IAAI,CAACC,SAAS,CAACE,MAAM,CAACL;QAClC;IACF,GAAG;QAACV;QAAUE;KAAW;IAEzB,IAAMc,gBAAgBC,IAAAA,4BAAa,EAAC;QAClCpB,aAAAA;QACAC,WAAAA;QACAC,yBAAAA;QACAC,UAAAA;QACAC,QAAAA;QACAC,YAAAA;IACF;IAEA,qBACE,qBAACgB,4CAAqB,CAACC,QAAQ;QAACC,OAAOJ;qBACrC,qBAACK,wCAAmB;QAACrB,UAAUA;QAAUE,YAAYA;OAClDN;AAIT"}
1
+ {"version":3,"sources":["../../../../src/components/ConfigProvider/ConfigProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { noop } from '@vkontakte/vkjs';\nimport { generateVKUITokensClassName } from '../../helpers/generateVKUITokensClassName';\nimport { useAutoDetectAppearance } from '../../hooks/useAutoDetectAppearance';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { useDOM } from '../../lib/dom';\nimport { TokensClassProvider } from '../../lib/tokensClassProvider';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n useConfigProvider,\n WebviewType,\n} from './ConfigProviderContext';\n\nconst warn = warnOnce('ConfigProvider');\n\nexport interface ConfigProviderProps extends Partial<ConfigProviderContextInterface> {\n /**\n * > ⚠️ В **v6** метод будет удалён (см. https://github.com/VKCOM/VKUI/issues/5049).\n * > Используйте хук `useAppearance()` из библиотеки `@vkontakte/vk-bridge-react`, если вам нужно\n * > определять, что `appearance` был передан через VK Bridge.\n *\n * @deprecated v5.8.0\n */\n onDetectAppearanceByBridge?: () => void; // TODO [>=6]: удалить\n children: React.ReactNode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ConfigProvider\n */\nexport const ConfigProvider = (props: ConfigProviderProps) => {\n const parentConfig = useConfigProvider();\n\n const {\n children,\n webviewType,\n hasCustomPanelHeaderAfter: hasCustomPanelHeaderAfterMerged,\n customPanelHeaderAfterMinWidth,\n isWebView,\n transitionMotionEnabled,\n platform,\n locale,\n appearance: appearanceProp,\n onDetectAppearanceByBridge = noop,\n } = {\n ...parentConfig,\n ...props,\n };\n\n // TODO [>=6]: Удалить данный бэкпорт\n const hasCustomPanelHeaderAfter =\n props.webviewType && props.hasCustomPanelHeaderAfter === undefined\n ? props.webviewType === WebviewType.VKAPPS\n : hasCustomPanelHeaderAfterMerged;\n\n if (process.env.NODE_ENVIRONMENT === 'development') {\n // TODO [>=6]: удалить warn\n let webviewTypeRule = '';\n if (props.webviewType) {\n webviewTypeRule =\n props.webviewType === WebviewType.INTERNAL\n ? '3. замените webviewType={WebviewType.INTERNAL} на hasCustomPanelHeaderAfterProp={false}'\n : '3. замените webviewType={WebviewType.VKAPPS} на hasCustomPanelHeaderAfterProp={true}';\n }\n warn(`[@vkontakte/vk-bridge's deprecated] Если вы используете VK Bridge, то:\n\n1. используйте хук useAppearance() из @vkontakte/vk-bridge-react и результат передайте в параметр appearance;\n2. передайте bridge.isWebView() в параметр isWebView;\n${webviewTypeRule}\n\nПодробности см. https://github.com/VKCOM/VKUI/issues/5049\n`);\n }\n\n // TODO [>=6]: удалить использование хука\n const appearance = useAutoDetectAppearance(appearanceProp, onDetectAppearanceByBridge);\n\n const { document } = useDOM();\n\n useIsomorphicLayoutEffect(() => {\n const VKUITokensClassName = generateVKUITokensClassName(platform, appearance);\n\n // eslint-disable-next-line no-restricted-properties\n document!.body.classList.add(VKUITokensClassName);\n\n return () => {\n // eslint-disable-next-line no-restricted-properties\n document!.body.classList.remove(VKUITokensClassName);\n };\n }, [platform, appearance]);\n\n const configContext = useObjectMemo({\n webviewType,\n hasCustomPanelHeaderAfter,\n customPanelHeaderAfterMinWidth,\n isWebView,\n transitionMotionEnabled,\n platform,\n locale,\n appearance,\n });\n\n return (\n <ConfigProviderContext.Provider value={configContext}>\n <TokensClassProvider platform={platform} appearance={appearance}>\n {children}\n </TokensClassProvider>\n </ConfigProviderContext.Provider>\n );\n};\n"],"names":["ConfigProvider","warn","warnOnce","props","parentConfig","useConfigProvider","children","webviewType","hasCustomPanelHeaderAfter","hasCustomPanelHeaderAfterMerged","customPanelHeaderAfterMinWidth","isWebView","transitionMotionEnabled","platform","locale","appearance","appearanceProp","onDetectAppearanceByBridge","noop","undefined","WebviewType","VKAPPS","process","env","NODE_ENVIRONMENT","webviewTypeRule","INTERNAL","useAutoDetectAppearance","document","useDOM","useIsomorphicLayoutEffect","VKUITokensClassName","generateVKUITokensClassName","body","classList","add","remove","configContext","useObjectMemo","ConfigProviderContext","Provider","value","TokensClassProvider"],"mappings":";;;;+BAiCaA;;;eAAAA;;;;;+DAjCU;oBACF;2CACuB;uCACJ;6BACV;mBACP;mCACa;yCACM;wBACjB;qCAMlB;AAEP,IAAMC,OAAOC,IAAAA,kBAAQ,EAAC;AAiBf,IAAMF,iBAAiB,SAACG;IAC7B,IAAMC,eAAeC,IAAAA,wCAAiB;IAEtC,IAWI,mBAAA,qBACCD,cACAD,QAZHG,WAUE,iBAVFA,UACAC,cASE,iBATFA,aACAC,AAA2BC,kCAQzB,iBARFD,2BACAE,iCAOE,iBAPFA,gCACAC,YAME,iBANFA,WACAC,0BAKE,iBALFA,yBACAC,WAIE,iBAJFA,UACAC,SAGE,iBAHFA,QACAC,AAAYC,iBAEV,iBAFFD,wDAEE,iBADFE,4BAAAA,oFAA6BC,UAAI;IAMnC,qCAAqC;IACrC,IAAMV,4BACJL,MAAMI,WAAW,IAAIJ,MAAMK,yBAAyB,KAAKW,YACrDhB,MAAMI,WAAW,KAAKa,kCAAW,CAACC,MAAM,GACxCZ;IAEN,IAAIa,QAAQC,GAAG,CAACC,gBAAgB,KAAK,eAAe;QAClD,2BAA2B;QAC3B,IAAIC,kBAAkB;QACtB,IAAItB,MAAMI,WAAW,EAAE;YACrBkB,kBACEtB,MAAMI,WAAW,KAAKa,kCAAW,CAACM,QAAQ,GACtC,4FACA;QACR;QACAzB,KAAK,AAAC,mPAIQ,OAAhBwB,iBAAgB;IAIhB;IAEA,yCAAyC;IACzC,IAAMV,aAAaY,IAAAA,gDAAuB,EAACX,gBAAgBC;IAE3D,IAAM,AAAEW,WAAaC,IAAAA,WAAM,IAAnBD;IAERE,IAAAA,oDAAyB,EAAC;QACxB,IAAMC,sBAAsBC,IAAAA,wDAA2B,EAACnB,UAAUE;QAElE,oDAAoD;QACpDa,SAAUK,IAAI,CAACC,SAAS,CAACC,GAAG,CAACJ;QAE7B,OAAO;YACL,oDAAoD;YACpDH,SAAUK,IAAI,CAACC,SAAS,CAACE,MAAM,CAACL;QAClC;IACF,GAAG;QAAClB;QAAUE;KAAW;IAEzB,IAAMsB,gBAAgBC,IAAAA,4BAAa,EAAC;QAClC/B,aAAAA;QACAC,2BAAAA;QACAE,gCAAAA;QACAC,WAAAA;QACAC,yBAAAA;QACAC,UAAAA;QACAC,QAAAA;QACAC,YAAAA;IACF;IAEA,qBACE,qBAACwB,4CAAqB,CAACC,QAAQ;QAACC,OAAOJ;qBACrC,qBAACK,wCAAmB;QAAC7B,UAAUA;QAAUE,YAAYA;OAClDT;AAIT"}
@@ -1,20 +1,64 @@
1
1
  import * as React from 'react';
2
- import { AppearanceType } from '@vkontakte/vk-bridge';
2
+ import type { AppearanceType } from '../../lib/appearance';
3
3
  import { PlatformType } from '../../lib/platform';
4
+ /**
5
+ * TODO [>=6]: удалить enum (#5049).
6
+ *
7
+ * @deprecated v5.8.0
8
+ */
4
9
  export declare enum WebviewType {
5
10
  VKAPPS = "vkapps",
6
11
  INTERNAL = "internal"
7
12
  }
8
13
  export interface ConfigProviderContextInterface {
9
14
  /**
10
- * Подсказывает приложению, обёрнутому в `ConfigProvider`, где открыто приложение: внутри webview или в мобильном браузере
15
+ * Подсказывает приложению, обёрнутому в `ConfigProvider`, где открыто приложение: внутри webview или в мобильном браузере.
16
+ *
17
+ * В условиях когда:
18
+ * - `isWebView={true}`
19
+ * - platform="ios"
20
+ *
21
+ * для компонента `View` включается возможность навигации через смахивание.
22
+ *
23
+ * По умолчанию определяется через `bridge.isWebView()`.
24
+ *
25
+ * > ⚠️ В **v6** будет удалена завязка на `@vkontakte/vk-bridge` (см. https://github.com/VKCOM/VKUI/issues/5049).
26
+ * > Если вы используете `@vkontakte/vk-bridge`, то передавать `bridge.isWebView()` необходимо самостоятельно.
11
27
  */
12
28
  isWebView: boolean;
13
29
  /**
14
30
  * Тип вебвью.<br>
15
31
  * В случае `WebviewType.VKAPPS` интерфейс будет адаптирован для отображения в вебвью Mini Apps (системные контролы в правой части шапки)
32
+ *
33
+ * > ⚠️ В **v6** свойство будет удалено (см. https://github.com/VKCOM/VKUI/issues/5049).
34
+ * >
35
+ * > Используйте вместо него новые свойства:
36
+ * >
37
+ * > - `webviewType={WebviewType.INTERNAL}` -> `hasCustomPanelHeaderAfter={false}`.
38
+ * > - `webviewType={WebviewType.VKAPPS}` -> `hasCustomPanelHeaderAfter={true}`. При необходимости передайте `customPanelHeaderAfterMinWidth={<value>}` (по умолчанию равен `90`).
39
+ *
40
+ * @deprecated v5.8.0
16
41
  */
17
- webviewType: WebviewType.INTERNAL | WebviewType.VKAPPS;
42
+ webviewType?: WebviewType.INTERNAL | WebviewType.VKAPPS;
43
+ /**
44
+ * При `true` слот `after` у `PanelHeader` игнорируется под размещение пользовательского
45
+ * "плавающего" элемента (например, панель управления webview).
46
+ *
47
+ * > Note: Правило не распространяется на `PanelHeader` внутри модальных окон, предоставляемых
48
+ * > библиотекой.
49
+ *
50
+ * > ⚠️ В **v6** свойство будет по умолчанию `false` (см. https://github.com/VKCOM/VKUI/issues/5049).
51
+ */
52
+ hasCustomPanelHeaderAfter: boolean;
53
+ /**
54
+ * Задаёт необходимый минимальную ширину слота `after` в `PanelHeader` под пользовательский
55
+ * "плавающий" элемент (например, ширина панели управления webview).
56
+ *
57
+ * Учитывается только при `hasCustomPanelHeaderAfter={true}` (см. документацию `hasCustomPanelHeaderAfter`).
58
+ *
59
+ * @default 90
60
+ */
61
+ customPanelHeaderAfterMinWidth: number | string;
18
62
  /**
19
63
  * Тип цветовой схемы – `light` или `dark`
20
64
  */
@@ -30,7 +30,12 @@ var WebviewType;
30
30
  WebviewType["INTERNAL"] = "internal";
31
31
  })(WebviewType || (WebviewType = {}));
32
32
  var ConfigProviderContext = /*#__PURE__*/ _react.createContext({
33
- webviewType: WebviewType.VKAPPS,
33
+ // TODO [>=6]: удалить свойство (#5049).
34
+ webviewType: undefined,
35
+ // TODO [>=6]: сделать по умолчанию `false` (#5049).
36
+ hasCustomPanelHeaderAfter: true,
37
+ customPanelHeaderAfterMinWidth: 90,
38
+ // TODO [>=6]: удалить использование vkBridge. Использовать `false` вместо него (#5049).
34
39
  isWebView: _vkbridge.default.isWebView(),
35
40
  transitionMotionEnabled: true,
36
41
  platform: (0, _platform.platform)(),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ConfigProvider/ConfigProviderContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport vkBridge, { AppearanceType } from '@vkontakte/vk-bridge';\nimport { platform, PlatformType } from '../../lib/platform';\n\nexport enum WebviewType {\n VKAPPS = 'vkapps',\n INTERNAL = 'internal',\n}\n\nexport interface ConfigProviderContextInterface {\n /**\n * Подсказывает приложению, обёрнутому в `ConfigProvider`, где открыто приложение: внутри webview или в мобильном браузере\n */\n isWebView: boolean;\n /**\n * Тип вебвью.<br>\n * В случае `WebviewType.VKAPPS` интерфейс будет адаптирован для отображения в вебвью Mini Apps (системные контролы в правой части шапки)\n */\n webviewType: WebviewType.INTERNAL | WebviewType.VKAPPS;\n /**\n * Тип цветовой схемы – `light` или `dark`\n */\n appearance: AppearanceType | undefined;\n /**\n * Включена ли анимация переходов между экранами в `Root` и `View`\n */\n transitionMotionEnabled: boolean;\n /**\n * Платформа\n */\n platform: PlatformType;\n /**\n * Строка с языковой меткой BCP 47\n */\n locale: string;\n}\n\nexport const ConfigProviderContext = React.createContext<ConfigProviderContextInterface>({\n webviewType: WebviewType.VKAPPS,\n isWebView: vkBridge.isWebView(),\n transitionMotionEnabled: true,\n platform: platform(),\n appearance: undefined, // undefined обозначает что тема должна определиться автоматически\n locale: 'ru',\n});\n\nexport const useConfigProvider = () => React.useContext(ConfigProviderContext);\n"],"names":["ConfigProviderContext","useConfigProvider","WebviewType","VKAPPS","INTERNAL","React","createContext","webviewType","isWebView","vkBridge","transitionMotionEnabled","platform","appearance","undefined","locale","useContext"],"mappings":";;;;;;;;;;;;;;IAqCaA,qBAAqB;eAArBA;;IASAC,iBAAiB;eAAjBA;;;;;+DA9CU;iEACkB;wBACF;IAEhC;UAAKC,WAAW;IAAXA,YACVC,YAAS;IADCD,YAEVE,cAAW;GAFDF,gBAAAA;AAiCL,IAAMF,sCAAwBK,OAAMC,aAAa,CAAiC;IACvFC,aAAaL,YAAYC,MAAM;IAC/BK,WAAWC,iBAAQ,CAACD,SAAS;IAC7BE,yBAAyB;IACzBC,UAAUA,IAAAA,kBAAQ;IAClBC,YAAYC;IACZC,QAAQ;AACV;AAEO,IAAMb,oBAAoB;WAAMI,OAAMU,UAAU,CAACf"}
1
+ {"version":3,"sources":["../../../../src/components/ConfigProvider/ConfigProviderContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport vkBridge from '@vkontakte/vk-bridge';\nimport type { AppearanceType } from '../../lib/appearance';\nimport { platform, PlatformType } from '../../lib/platform';\n\n/**\n * TODO [>=6]: удалить enum (#5049).\n *\n * @deprecated v5.8.0\n */\nexport enum WebviewType {\n VKAPPS = 'vkapps',\n INTERNAL = 'internal',\n}\n\nexport interface ConfigProviderContextInterface {\n /**\n * Подсказывает приложению, обёрнутому в `ConfigProvider`, где открыто приложение: внутри webview или в мобильном браузере.\n *\n * В условиях когда:\n * - `isWebView={true}`\n * - platform=\"ios\"\n *\n * для компонента `View` включается возможность навигации через смахивание.\n *\n * По умолчанию определяется через `bridge.isWebView()`.\n *\n * > ⚠️ В **v6** будет удалена завязка на `@vkontakte/vk-bridge` (см. https://github.com/VKCOM/VKUI/issues/5049).\n * > Если вы используете `@vkontakte/vk-bridge`, то передавать `bridge.isWebView()` необходимо самостоятельно.\n */\n isWebView: boolean; // TODO [>=6]: удалить коммент про v6 @vkontakte/vk-bridge выше\n /**\n * Тип вебвью.<br>\n * В случае `WebviewType.VKAPPS` интерфейс будет адаптирован для отображения в вебвью Mini Apps (системные контролы в правой части шапки)\n *\n * > ⚠️ В **v6** свойство будет удалено (см. https://github.com/VKCOM/VKUI/issues/5049).\n * >\n * > Используйте вместо него новые свойства:\n * >\n * > - `webviewType={WebviewType.INTERNAL}` -> `hasCustomPanelHeaderAfter={false}`.\n * > - `webviewType={WebviewType.VKAPPS}` -> `hasCustomPanelHeaderAfter={true}`. При необходимости передайте `customPanelHeaderAfterMinWidth={<value>}` (по умолчанию равен `90`).\n *\n * @deprecated v5.8.0\n */\n webviewType?: WebviewType.INTERNAL | WebviewType.VKAPPS;\n /**\n * При `true` слот `after` у `PanelHeader` игнорируется под размещение пользовательского\n * \"плавающего\" элемента (например, панель управления webview).\n *\n * > Note: Правило не распространяется на `PanelHeader` внутри модальных окон, предоставляемых\n * > библиотекой.\n *\n * > ⚠️ В **v6** свойство будет по умолчанию `false` (см. https://github.com/VKCOM/VKUI/issues/5049).\n */\n hasCustomPanelHeaderAfter: boolean;\n /**\n * Задаёт необходимый минимальную ширину слота `after` в `PanelHeader` под пользовательский\n * \"плавающий\" элемент (например, ширина панели управления webview).\n *\n * Учитывается только при `hasCustomPanelHeaderAfter={true}` (см. документацию `hasCustomPanelHeaderAfter`).\n *\n * @default 90\n */\n customPanelHeaderAfterMinWidth: number | string;\n /**\n * Тип цветовой схемы – `light` или `dark`\n */\n appearance: AppearanceType | undefined;\n /**\n * Включена ли анимация переходов между экранами в `Root` и `View`\n */\n transitionMotionEnabled: boolean;\n /**\n * Платформа\n */\n platform: PlatformType;\n /**\n * Строка с языковой меткой BCP 47\n */\n locale: string;\n}\n\nexport const ConfigProviderContext = React.createContext<ConfigProviderContextInterface>({\n // TODO [>=6]: удалить свойство (#5049).\n webviewType: undefined,\n // TODO [>=6]: сделать по умолчанию `false` (#5049).\n hasCustomPanelHeaderAfter: true,\n customPanelHeaderAfterMinWidth: 90,\n // TODO [>=6]: удалить использование vkBridge. Использовать `false` вместо него (#5049).\n isWebView: vkBridge.isWebView(),\n transitionMotionEnabled: true,\n platform: platform(),\n appearance: undefined, // undefined обозначает что тема должна определиться автоматически\n locale: 'ru',\n});\n\nexport const useConfigProvider = () => React.useContext(ConfigProviderContext);\n"],"names":["ConfigProviderContext","useConfigProvider","WebviewType","VKAPPS","INTERNAL","React","createContext","webviewType","undefined","hasCustomPanelHeaderAfter","customPanelHeaderAfterMinWidth","isWebView","vkBridge","transitionMotionEnabled","platform","appearance","locale","useContext"],"mappings":";;;;;;;;;;;;;;IAkFaA,qBAAqB;eAArBA;;IAcAC,iBAAiB;eAAjBA;;;;;+DAhGU;iEACF;wBAEkB;IAOhC;UAAKC,WAAW;IAAXA,YACVC,YAAS;IADCD,YAEVE,cAAW;GAFDF,gBAAAA;AAwEL,IAAMF,sCAAwBK,OAAMC,aAAa,CAAiC;IACvF,wCAAwC;IACxCC,aAAaC;IACb,oDAAoD;IACpDC,2BAA2B;IAC3BC,gCAAgC;IAChC,wFAAwF;IACxFC,WAAWC,iBAAQ,CAACD,SAAS;IAC7BE,yBAAyB;IACzBC,UAAUA,IAAAA,kBAAQ;IAClBC,YAAYP;IACZQ,QAAQ;AACV;AAEO,IAAMf,oBAAoB;WAAMI,OAAMY,UAAU,CAACjB"}
@@ -23,7 +23,7 @@ export interface SelectProps extends NativeSelectProps, FormFieldProps, TrackerO
23
23
  */
24
24
  emptyText?: string;
25
25
  /**
26
- * > ⚠️ В v6 из возвращаемых типов будет удалён `CustomSelectOptionInterface[]`. Для кастомной фильтрации используйте
26
+ * > ⚠️ В **v6** из возвращаемых типов будет удалён `CustomSelectOptionInterface[]`. Для кастомной фильтрации используйте
27
27
  * > `filterFn`.
28
28
  */
29
29
  onInputChange?: (e: React.ChangeEvent, options: CustomSelectOptionInterface[]) => void | CustomSelectOptionInterface[];