@vkontakte/vkui 5.7.0 → 5.7.2

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 (155) hide show
  1. package/dist/cjs/components/Banner/Banner.js +1 -1
  2. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  3. package/dist/cjs/components/Checkbox/Checkbox.js +3 -1
  4. package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
  5. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +4 -2
  6. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  7. package/dist/cjs/components/Group/Group.js +2 -3
  8. package/dist/cjs/components/Group/Group.js.map +1 -1
  9. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +13 -11
  10. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  11. package/dist/cjs/components/Image/Image.js +52 -37
  12. package/dist/cjs/components/Image/Image.js.map +1 -1
  13. package/dist/cjs/components/ImageBase/ImageBase.js +20 -1
  14. package/dist/cjs/components/ImageBase/ImageBase.js.map +1 -1
  15. package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js +1 -1
  16. package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  17. package/dist/cjs/components/PopoutRoot/PopoutRoot.js +1 -3
  18. package/dist/cjs/components/PopoutRoot/PopoutRoot.js.map +1 -1
  19. package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js +1 -1
  20. package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
  21. package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  22. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +8 -3
  23. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  24. package/dist/cjs/components/SimpleCell/SimpleCell.js +0 -1
  25. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  26. package/dist/cjs/components/View/View.js +4 -4
  27. package/dist/cjs/components/View/View.js.map +1 -1
  28. package/dist/cjs/components/View/ViewInfinite.js +4 -4
  29. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  30. package/dist/cjs/hooks/useAdaptivityHasHover.js +4 -3
  31. package/dist/cjs/hooks/useAdaptivityHasHover.js.map +1 -1
  32. package/dist/cjs/hooks/useAdaptivityHasPointer.js +5 -5
  33. package/dist/cjs/hooks/useAdaptivityHasPointer.js.map +1 -1
  34. package/dist/cjs/hooks/useAutoFocus.d.ts +2 -0
  35. package/dist/cjs/hooks/useAutoFocus.js +23 -0
  36. package/dist/cjs/hooks/useAutoFocus.js.map +1 -0
  37. package/dist/cjs/hooks/useChipsSelect.js +5 -4
  38. package/dist/cjs/hooks/useChipsSelect.js.map +1 -1
  39. package/dist/cjs/hooks/useFocusWithin.js +3 -0
  40. package/dist/cjs/hooks/useFocusWithin.js.map +1 -1
  41. package/dist/cjs/hooks/useIsClient.js +2 -1
  42. package/dist/cjs/hooks/useIsClient.js.map +1 -1
  43. package/dist/components/Banner/Banner.js +2 -2
  44. package/dist/components/Banner/Banner.js.map +1 -1
  45. package/dist/components/Checkbox/Checkbox.js +3 -1
  46. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  47. package/dist/components/ChipsSelect/ChipsSelect.js +4 -2
  48. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  49. package/dist/components/Group/Group.js +2 -3
  50. package/dist/components/Group/Group.js.map +1 -1
  51. package/dist/components/HorizontalScroll/HorizontalScroll.js +13 -11
  52. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  53. package/dist/components/Image/Image.js +54 -39
  54. package/dist/components/Image/Image.js.map +1 -1
  55. package/dist/components/ImageBase/ImageBase.js +20 -1
  56. package/dist/components/ImageBase/ImageBase.js.map +1 -1
  57. package/dist/components/MiniInfoCell/MiniInfoCell.js +1 -1
  58. package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  59. package/dist/components/PopoutRoot/PopoutRoot.js +1 -3
  60. package/dist/components/PopoutRoot/PopoutRoot.js.map +1 -1
  61. package/dist/components/PopoutWrapper/PopoutWrapper.js +1 -1
  62. package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
  63. package/dist/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  64. package/dist/components/SelectMimicry/SelectMimicry.js +8 -3
  65. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  66. package/dist/components/SimpleCell/SimpleCell.js +0 -1
  67. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  68. package/dist/components/View/View.js +4 -4
  69. package/dist/components/View/View.js.map +1 -1
  70. package/dist/components/View/ViewInfinite.js +4 -4
  71. package/dist/components/View/ViewInfinite.js.map +1 -1
  72. package/dist/components.css +22 -22
  73. package/dist/components.css.map +1 -1
  74. package/dist/components.js.tmp +757 -698
  75. package/dist/cssm/components/ActionSheet/ActionSheet.module.css +3 -3
  76. package/dist/cssm/components/Alert/Alert.module.css +4 -4
  77. package/dist/cssm/components/Banner/Banner.js +2 -2
  78. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  79. package/dist/cssm/components/Banner/Banner.module.css +2 -2
  80. package/dist/cssm/components/Checkbox/Checkbox.js +3 -1
  81. package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
  82. package/dist/cssm/components/Checkbox/Checkbox.module.css +6 -0
  83. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +3 -1
  84. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  85. package/dist/cssm/components/FocusVisible/FocusVisible.module.css +4 -4
  86. package/dist/cssm/components/Group/Group.js +2 -3
  87. package/dist/cssm/components/Group/Group.js.map +1 -1
  88. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +13 -11
  89. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  90. package/dist/cssm/components/Image/Image.js +46 -33
  91. package/dist/cssm/components/Image/Image.js.map +1 -1
  92. package/dist/cssm/components/ImageBase/ImageBase.js +20 -1
  93. package/dist/cssm/components/ImageBase/ImageBase.js.map +1 -1
  94. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js +1 -1
  95. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  96. package/dist/cssm/components/ModalPage/ModalPage.module.css +0 -4
  97. package/dist/cssm/components/ModalRoot/ModalRoot.module.css +2 -2
  98. package/dist/cssm/components/PanelHeader/PanelHeader.module.css +4 -2
  99. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.module.css +8 -8
  100. package/dist/cssm/components/Placeholder/Placeholder.module.css +1 -0
  101. package/dist/cssm/components/PopoutRoot/PopoutRoot.js +1 -3
  102. package/dist/cssm/components/PopoutRoot/PopoutRoot.js.map +1 -1
  103. package/dist/cssm/components/PopoutRoot/PopoutRoot.module.css +0 -4
  104. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js +1 -1
  105. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
  106. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.module.css +2 -2
  107. package/dist/cssm/components/Popover/Popover.module.css +2 -2
  108. package/dist/cssm/components/PullToRefresh/PullToRefresh.module.css +4 -4
  109. package/dist/cssm/components/RichTooltip/RichTooltip.module.css +2 -2
  110. package/dist/cssm/components/Root/Root.module.css +12 -13
  111. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.module.css +5 -5
  112. package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  113. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +6 -2
  114. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  115. package/dist/cssm/components/SimpleCell/SimpleCell.js +0 -1
  116. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  117. package/dist/cssm/components/Snackbar/Snackbar.module.css +4 -4
  118. package/dist/cssm/components/Tappable/Tappable.module.css +2 -2
  119. package/dist/cssm/components/TextTooltip/TextTooltip.module.css +2 -2
  120. package/dist/cssm/components/View/View.js +4 -4
  121. package/dist/cssm/components/View/View.js.map +1 -1
  122. package/dist/cssm/components/View/View.module.css +16 -16
  123. package/dist/cssm/components/View/ViewInfinite.js +4 -4
  124. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  125. package/dist/cssm/hooks/useAdaptivityHasHover.js +4 -3
  126. package/dist/cssm/hooks/useAdaptivityHasHover.js.map +1 -1
  127. package/dist/cssm/hooks/useAdaptivityHasPointer.js +5 -5
  128. package/dist/cssm/hooks/useAdaptivityHasPointer.js.map +1 -1
  129. package/dist/cssm/hooks/useAutoFocus.d.ts +2 -0
  130. package/dist/cssm/hooks/useAutoFocus.js +12 -0
  131. package/dist/cssm/hooks/useAutoFocus.js.map +1 -0
  132. package/dist/cssm/hooks/useChipsSelect.js +5 -4
  133. package/dist/cssm/hooks/useChipsSelect.js.map +1 -1
  134. package/dist/cssm/hooks/useFocusWithin.js +3 -0
  135. package/dist/cssm/hooks/useFocusWithin.js.map +1 -1
  136. package/dist/cssm/hooks/useIsClient.js +2 -1
  137. package/dist/cssm/hooks/useIsClient.js.map +1 -1
  138. package/dist/cssm/styles/constants.css +1 -1
  139. package/dist/hooks/useAdaptivityHasHover.js +4 -3
  140. package/dist/hooks/useAdaptivityHasHover.js.map +1 -1
  141. package/dist/hooks/useAdaptivityHasPointer.js +5 -5
  142. package/dist/hooks/useAdaptivityHasPointer.js.map +1 -1
  143. package/dist/hooks/useAutoFocus.d.ts +2 -0
  144. package/dist/hooks/useAutoFocus.js +12 -0
  145. package/dist/hooks/useAutoFocus.js.map +1 -0
  146. package/dist/hooks/useChipsSelect.js +5 -4
  147. package/dist/hooks/useChipsSelect.js.map +1 -1
  148. package/dist/hooks/useFocusWithin.js +3 -0
  149. package/dist/hooks/useFocusWithin.js.map +1 -1
  150. package/dist/hooks/useIsClient.js +2 -1
  151. package/dist/hooks/useIsClient.js.map +1 -1
  152. package/dist/vkui.css +22 -22
  153. package/dist/vkui.css.map +1 -1
  154. package/dist/vkui.js.tmp +757 -698
  155. package/package.json +3 -3
@@ -3,14 +3,12 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
3
3
  import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
4
4
  import * as React from "react";
5
5
  import { classNames } from "@vkontakte/vkjs";
6
- import { useAdaptivityWithJSMediaQueries } from "../../hooks/useAdaptivityWithJSMediaQueries";
7
6
  import { blurActiveElement, useDOM } from "../../lib/dom";
8
7
  import { AppRootPortal } from "../AppRoot/AppRootPortal";
9
8
  var PopoutRootPopout = function(param) {
10
9
  var children = param.children;
11
- var isDesktop = useAdaptivityWithJSMediaQueries().isDesktop;
12
10
  return /*#__PURE__*/ React.createElement("div", {
13
- className: classNames("vkuiPopoutRoot__popout", isDesktop && "vkuiPopoutRoot__popout--absolute")
11
+ className: classNames("vkuiPopoutRoot__popout")
14
12
  }, children);
15
13
  };
16
14
  var PopoutRootModal = function(param) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PopoutRoot/PopoutRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { blurActiveElement, useDOM } from '../../lib/dom';\nimport { HasRootRef } from '../../types';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport styles from './PopoutRoot.module.css';\n\ninterface PopoutRootPopoutProps {\n children: React.ReactNode;\n}\n\nconst PopoutRootPopout = ({ children }: PopoutRootPopoutProps) => {\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n\n return (\n <div\n className={classNames(\n styles['PopoutRoot__popout'],\n isDesktop && styles['PopoutRoot__popout--absolute'],\n )}\n >\n {children}\n </div>\n );\n};\n\ninterface PopoutRootModalProps {\n children: React.ReactNode;\n}\n\nconst PopoutRootModal = ({ children }: PopoutRootModalProps) => {\n return <div className={styles['PopoutRoot__modal']}>{children}</div>;\n};\n\nexport interface PopoutRootProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n popout?: React.ReactNode;\n modal?: React.ReactNode;\n}\n\nexport const PopoutRoot = ({\n popout,\n modal,\n children,\n getRootRef,\n className,\n ...restProps\n}: PopoutRootProps) => {\n const { document } = useDOM();\n\n React.useEffect(() => {\n popout && blurActiveElement(document);\n }, [document, popout]);\n\n return (\n <div {...restProps} className={classNames(styles['PopoutRoot'], className)} ref={getRootRef}>\n {children}\n <AppRootPortal>\n {!!popout && <PopoutRootPopout>{popout}</PopoutRootPopout>}\n {!!modal && <PopoutRootModal>{modal}</PopoutRootModal>}\n </AppRootPortal>\n </div>\n );\n};\n"],"names":["React","classNames","useAdaptivityWithJSMediaQueries","blurActiveElement","useDOM","AppRootPortal","PopoutRootPopout","children","isDesktop","div","className","PopoutRootModal","PopoutRoot","popout","modal","getRootRef","restProps","document","useEffect","ref"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,+BAA+B,QAAQ,8CAA8C;AAC9F,SAASC,iBAAiB,EAAEC,MAAM,QAAQ,gBAAgB;AAE1D,SAASC,aAAa,QAAQ,2BAA2B;AAOzD,IAAMC,mBAAmB;QAAGC,iBAAAA;IAC1B,IAAM,AAAEC,YAAcN,kCAAdM;IAER,qBACE,oBAACC;QACCC,WAAWT,qCAETO;OAGDD;AAGP;AAMA,IAAMI,kBAAkB;QAAGJ,iBAAAA;IACzB,qBAAO,oBAACE;QAAIC,SAAS;OAAgCH;AACvD;AASA,OAAO,IAAMK,aAAa;QACxBC,gBAAAA,QACAC,eAAAA,OACAP,kBAAAA,UACAQ,oBAAAA,YACAL,mBAAAA,WACGM;QALHH;QACAC;QACAP;QACAQ;QACAL;;IAGA,IAAM,AAAEO,WAAab,SAAba;IAERjB,MAAMkB,SAAS,CAAC;QACdL,UAAUV,kBAAkBc;IAC9B,GAAG;QAACA;QAAUJ;KAAO;IAErB,qBACE,oBAACJ,+CAAQO;QAAWN,WAAWT,6BAAiCS;QAAYS,KAAKJ;QAC9ER,wBACD,oBAACF,qBACE,CAAC,CAACQ,wBAAU,oBAACP,wBAAkBO,SAC/B,CAAC,CAACC,uBAAS,oBAACH,uBAAiBG;AAItC,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/PopoutRoot/PopoutRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { blurActiveElement, useDOM } from '../../lib/dom';\nimport { HasRootRef } from '../../types';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport styles from './PopoutRoot.module.css';\n\ninterface PopoutRootPopoutProps {\n children: React.ReactNode;\n}\n\nconst PopoutRootPopout = ({ children }: PopoutRootPopoutProps) => {\n return <div className={classNames(styles['PopoutRoot__popout'])}>{children}</div>;\n};\n\ninterface PopoutRootModalProps {\n children: React.ReactNode;\n}\n\nconst PopoutRootModal = ({ children }: PopoutRootModalProps) => {\n return <div className={styles['PopoutRoot__modal']}>{children}</div>;\n};\n\nexport interface PopoutRootProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n popout?: React.ReactNode;\n modal?: React.ReactNode;\n}\n\nexport const PopoutRoot = ({\n popout,\n modal,\n children,\n getRootRef,\n className,\n ...restProps\n}: PopoutRootProps) => {\n const { document } = useDOM();\n\n React.useEffect(() => {\n popout && blurActiveElement(document);\n }, [document, popout]);\n\n return (\n <div {...restProps} className={classNames(styles['PopoutRoot'], className)} ref={getRootRef}>\n {children}\n <AppRootPortal>\n {!!popout && <PopoutRootPopout>{popout}</PopoutRootPopout>}\n {!!modal && <PopoutRootModal>{modal}</PopoutRootModal>}\n </AppRootPortal>\n </div>\n );\n};\n"],"names":["React","classNames","blurActiveElement","useDOM","AppRootPortal","PopoutRootPopout","children","div","className","PopoutRootModal","PopoutRoot","popout","modal","getRootRef","restProps","document","useEffect","ref"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,iBAAiB,EAAEC,MAAM,QAAQ,gBAAgB;AAE1D,SAASC,aAAa,QAAQ,2BAA2B;AAOzD,IAAMC,mBAAmB;QAAGC,iBAAAA;IAC1B,qBAAO,oBAACC;QAAIC,WAAWP;OAA2CK;AACpE;AAMA,IAAMG,kBAAkB;QAAGH,iBAAAA;IACzB,qBAAO,oBAACC;QAAIC,SAAS;OAAgCF;AACvD;AASA,OAAO,IAAMI,aAAa;QACxBC,gBAAAA,QACAC,eAAAA,OACAN,kBAAAA,UACAO,oBAAAA,YACAL,mBAAAA,WACGM;QALHH;QACAC;QACAN;QACAO;QACAL;;IAGA,IAAM,AAAEO,WAAaZ,SAAbY;IAERf,MAAMgB,SAAS,CAAC;QACdL,UAAUT,kBAAkBa;IAC9B,GAAG;QAACA;QAAUJ;KAAO;IAErB,qBACE,oBAACJ,+CAAQO;QAAWN,WAAWP,6BAAiCO;QAAYS,KAAKJ;QAC9EP,wBACD,oBAACF,qBACE,CAAC,CAACO,wBAAU,oBAACN,wBAAkBM,SAC/B,CAAC,CAACC,uBAAS,oBAACH,uBAAiBG;AAItC,EAAE"}
@@ -26,7 +26,7 @@ import { Platform } from "../../lib/platform";
26
26
  var _React_useState = _sliced_to_array(React.useState(!hasMask), 2), opened = _React_useState[0], setOpened = _React_useState[1];
27
27
  var elRef = React.useRef(null);
28
28
  var onFadeInEnd = function(e) {
29
- if (!e || e.animationName === "vkuivkui-animation-full-fade-in") {
29
+ if (!e || e.animationName === "vkuianimation-full-fade-in") {
30
30
  setOpened(true);
31
31
  }
32
32
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PopoutWrapper/PopoutWrapper.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useDOM } from '../../lib/dom';\nimport { Platform } from '../../lib/platform';\nimport styles from './PopoutWrapper.module.css';\n\nexport interface PopoutWrapperProps extends React.HTMLAttributes<HTMLDivElement> {\n hasMask?: boolean;\n fixed?: boolean;\n alignY?: 'top' | 'center' | 'bottom';\n alignX?: 'left' | 'center' | 'right';\n closing?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PopoutWrapper\n */\nexport const PopoutWrapper = ({\n alignY = 'center',\n alignX = 'center',\n closing = false,\n hasMask = true,\n fixed = true,\n children,\n onClick,\n className,\n ...restProps\n}: PopoutWrapperProps) => {\n const platform = usePlatform();\n const [opened, setOpened] = React.useState(!hasMask);\n const elRef = React.useRef<HTMLDivElement>(null);\n\n const onFadeInEnd = (e?: React.AnimationEvent) => {\n if (!e || e.animationName === styles['vkui-animation-full-fade-in']) {\n setOpened(true);\n }\n };\n const animationFinishFallback = useTimeout(onFadeInEnd, platform === Platform.IOS ? 300 : 200);\n React.useEffect(() => {\n !opened && animationFinishFallback.set();\n }, [animationFinishFallback, opened]);\n\n const { window } = useDOM();\n useGlobalEventListener(window, 'touchmove', (e) => e.preventDefault(), {\n passive: false,\n });\n\n return (\n <div\n {...restProps}\n className={classNames(\n styles['PopoutWrapper'],\n {\n center: styles['PopoutWrapper--alignY-center'],\n top: styles['PopoutWrapper--alignY-top'],\n bottom: styles['PopoutWrapper--alignY-bottom'],\n }[alignY],\n {\n center: styles['PopoutWrapper--alignX-center'],\n left: styles['PopoutWrapper--alignX-left'],\n right: styles['PopoutWrapper--alignX-right'],\n }[alignX],\n closing && styles['PopoutWrapper--closing'],\n opened && styles['PopoutWrapper--opened'],\n fixed && styles['PopoutWrapper--fixed'],\n hasMask && styles['PopoutWrapper--masked'],\n className,\n )}\n onAnimationEnd={opened ? undefined : onFadeInEnd}\n ref={elRef}\n >\n <div className={styles['PopoutWrapper__container']}>\n <div className={styles['PopoutWrapper__overlay']} onClick={onClick} />\n <div className={styles['PopoutWrapper__content']}>{children}</div>\n </div>\n </div>\n );\n};\n"],"names":["React","classNames","useGlobalEventListener","usePlatform","useTimeout","useDOM","Platform","PopoutWrapper","alignY","alignX","closing","hasMask","fixed","children","onClick","className","restProps","platform","useState","opened","setOpened","elRef","useRef","onFadeInEnd","e","animationName","animationFinishFallback","IOS","useEffect","set","window","preventDefault","passive","div","center","top","bottom","left","right","onAnimationEnd","undefined","ref"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,sBAAsB,QAAQ,qCAAqC;AAC5E,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,QAAQ,QAAQ,qBAAqB;AAW9C;;CAEC,GACD,OAAO,IAAMC,gBAAgB;+BAC3BC,QAAAA,oCAAS,iDACTC,QAAAA,oCAAS,kDACTC,SAAAA,sCAAU,gDACVC,SAAAA,sCAAU,6CACVC,OAAAA,kCAAQ,qBACRC,kBAAAA,UACAC,iBAAAA,SACAC,mBAAAA,WACGC;QARHR;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAME,WAAWd;IACjB,IAA4BH,mCAAAA,MAAMkB,QAAQ,CAAC,CAACP,cAArCQ,SAAqBnB,oBAAboB,YAAapB;IAC5B,IAAMqB,QAAQrB,MAAMsB,MAAM,CAAiB;IAE3C,IAAMC,cAAc,SAACC;QACnB,IAAI,CAACA,KAAKA,EAAEC,aAAa,wCAA4C;YACnEL,UAAU;QACZ;IACF;IACA,IAAMM,0BAA0BtB,WAAWmB,aAAaN,aAAaX,SAASqB,GAAG,GAAG,MAAM;IAC1F3B,MAAM4B,SAAS,CAAC;QACd,CAACT,UAAUO,wBAAwBG,GAAG;IACxC,GAAG;QAACH;QAAyBP;KAAO;IAEpC,IAAM,AAAEW,SAAWzB,SAAXyB;IACR5B,uBAAuB4B,QAAQ,aAAa,SAACN;eAAMA,EAAEO,cAAc;OAAI;QACrEC,SAAS;IACX;IAEA,qBACE,oBAACC,+CACKjB;QACJD,WAAWd,gCAET;YACEiC,MAAM;YACNC,GAAG;YACHC,MAAM;QACR,CAAC,CAAC5B,OAAO,EACT;YACE0B,MAAM;YACNG,IAAI;YACJC,KAAK;QACP,CAAC,CAAC7B,OAAO,EACTC,yCACAS,uCACAP,qCACAD,wCACAI;QAEFwB,gBAAgBpB,SAASqB,YAAYjB;QACrCkB,KAAKpB;sBAEL,oBAACY;QAAIlB,SAAS;qBACZ,oBAACkB;QAAIlB,SAAS;QAAoCD,SAASA;sBAC3D,oBAACmB;QAAIlB,SAAS;OAAqCF;AAI3D,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/PopoutWrapper/PopoutWrapper.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useDOM } from '../../lib/dom';\nimport { Platform } from '../../lib/platform';\nimport styles from './PopoutWrapper.module.css';\n\nexport interface PopoutWrapperProps extends React.HTMLAttributes<HTMLDivElement> {\n hasMask?: boolean;\n fixed?: boolean;\n alignY?: 'top' | 'center' | 'bottom';\n alignX?: 'left' | 'center' | 'right';\n closing?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PopoutWrapper\n */\nexport const PopoutWrapper = ({\n alignY = 'center',\n alignX = 'center',\n closing = false,\n hasMask = true,\n fixed = true,\n children,\n onClick,\n className,\n ...restProps\n}: PopoutWrapperProps) => {\n const platform = usePlatform();\n const [opened, setOpened] = React.useState(!hasMask);\n const elRef = React.useRef<HTMLDivElement>(null);\n\n const onFadeInEnd = (e?: React.AnimationEvent) => {\n if (!e || e.animationName === styles['animation-full-fade-in']) {\n setOpened(true);\n }\n };\n const animationFinishFallback = useTimeout(onFadeInEnd, platform === Platform.IOS ? 300 : 200);\n React.useEffect(() => {\n !opened && animationFinishFallback.set();\n }, [animationFinishFallback, opened]);\n\n const { window } = useDOM();\n useGlobalEventListener(window, 'touchmove', (e) => e.preventDefault(), {\n passive: false,\n });\n\n return (\n <div\n {...restProps}\n className={classNames(\n styles['PopoutWrapper'],\n {\n center: styles['PopoutWrapper--alignY-center'],\n top: styles['PopoutWrapper--alignY-top'],\n bottom: styles['PopoutWrapper--alignY-bottom'],\n }[alignY],\n {\n center: styles['PopoutWrapper--alignX-center'],\n left: styles['PopoutWrapper--alignX-left'],\n right: styles['PopoutWrapper--alignX-right'],\n }[alignX],\n closing && styles['PopoutWrapper--closing'],\n opened && styles['PopoutWrapper--opened'],\n fixed && styles['PopoutWrapper--fixed'],\n hasMask && styles['PopoutWrapper--masked'],\n className,\n )}\n onAnimationEnd={opened ? undefined : onFadeInEnd}\n ref={elRef}\n >\n <div className={styles['PopoutWrapper__container']}>\n <div className={styles['PopoutWrapper__overlay']} onClick={onClick} />\n <div className={styles['PopoutWrapper__content']}>{children}</div>\n </div>\n </div>\n );\n};\n"],"names":["React","classNames","useGlobalEventListener","usePlatform","useTimeout","useDOM","Platform","PopoutWrapper","alignY","alignX","closing","hasMask","fixed","children","onClick","className","restProps","platform","useState","opened","setOpened","elRef","useRef","onFadeInEnd","e","animationName","animationFinishFallback","IOS","useEffect","set","window","preventDefault","passive","div","center","top","bottom","left","right","onAnimationEnd","undefined","ref"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,sBAAsB,QAAQ,qCAAqC;AAC5E,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,QAAQ,QAAQ,qBAAqB;AAW9C;;CAEC,GACD,OAAO,IAAMC,gBAAgB;+BAC3BC,QAAAA,oCAAS,iDACTC,QAAAA,oCAAS,kDACTC,SAAAA,sCAAU,gDACVC,SAAAA,sCAAU,6CACVC,OAAAA,kCAAQ,qBACRC,kBAAAA,UACAC,iBAAAA,SACAC,mBAAAA,WACGC;QARHR;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAME,WAAWd;IACjB,IAA4BH,mCAAAA,MAAMkB,QAAQ,CAAC,CAACP,cAArCQ,SAAqBnB,oBAAboB,YAAapB;IAC5B,IAAMqB,QAAQrB,MAAMsB,MAAM,CAAiB;IAE3C,IAAMC,cAAc,SAACC;QACnB,IAAI,CAACA,KAAKA,EAAEC,aAAa,mCAAuC;YAC9DL,UAAU;QACZ;IACF;IACA,IAAMM,0BAA0BtB,WAAWmB,aAAaN,aAAaX,SAASqB,GAAG,GAAG,MAAM;IAC1F3B,MAAM4B,SAAS,CAAC;QACd,CAACT,UAAUO,wBAAwBG,GAAG;IACxC,GAAG;QAACH;QAAyBP;KAAO;IAEpC,IAAM,AAAEW,SAAWzB,SAAXyB;IACR5B,uBAAuB4B,QAAQ,aAAa,SAACN;eAAMA,EAAEO,cAAc;OAAI;QACrEC,SAAS;IACX;IAEA,qBACE,oBAACC,+CACKjB;QACJD,WAAWd,gCAET;YACEiC,MAAM;YACNC,GAAG;YACHC,MAAM;QACR,CAAC,CAAC5B,OAAO,EACT;YACE0B,MAAM;YACNG,IAAI;YACJC,KAAK;QACP,CAAC,CAAC7B,OAAO,EACTC,yCACAS,uCACAP,qCACAD,wCACAI;QAEFwB,gBAAgBpB,SAASqB,YAAYjB;QACrCkB,KAAKpB;sBAEL,oBAACY;QAAIlB,SAAS;qBACZ,oBAACkB;QAAIlB,SAAS;QAAoCD,SAASA;sBAC3D,oBAACmB;QAAIlB,SAAS;OAAqCF;AAI3D,EAAE"}
@@ -10,4 +10,4 @@ export interface SelectMimicryProps extends React.HTMLAttributes<HTMLElement>, H
10
10
  /**
11
11
  * @see https://vkcom.github.io/VKUI/#/SelectMimicry
12
12
  */
13
- export declare const SelectMimicry: ({ tabIndex, placeholder, children, align, getRootRef, multiline, disabled, onClick, before, after, selectType, status, className, ...restProps }: SelectMimicryProps) => React.JSX.Element;
13
+ export declare const SelectMimicry: ({ tabIndex, placeholder, children, align, getRootRef, multiline, disabled, onClick, before, after, selectType, status, className, autoFocus, ...restProps }: SelectMimicryProps) => React.JSX.Element;
@@ -5,6 +5,8 @@ import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_
5
5
  import * as React from "react";
6
6
  import { classNames } from "@vkontakte/vkjs";
7
7
  import { useAdaptivity } from "../../hooks/useAdaptivity";
8
+ import { useAutoFocus } from "../../hooks/useAutoFocus";
9
+ import { useExternRef } from "../../hooks/useExternRef";
8
10
  import { SizeType } from "../../lib/adaptivity";
9
11
  import { getFormFieldModeFromSelectType } from "../../lib/select";
10
12
  import { DropdownIcon } from "../DropdownIcon/DropdownIcon";
@@ -16,7 +18,7 @@ var sizeYClassNames = _define_property({
16
18
  /**
17
19
  * @see https://vkcom.github.io/VKUI/#/SelectMimicry
18
20
  */ export var SelectMimicry = function(_param) {
19
- var _param_tabIndex = _param.tabIndex, tabIndex = _param_tabIndex === void 0 ? 0 : _param_tabIndex, placeholder = _param.placeholder, children = _param.children, align = _param.align, getRootRef = _param.getRootRef, multiline = _param.multiline, disabled = _param.disabled, onClick = _param.onClick, before = _param.before, _param_after = _param.after, after = _param_after === void 0 ? /*#__PURE__*/ React.createElement(DropdownIcon, null) : _param_after, _param_selectType = _param.selectType, selectType = _param_selectType === void 0 ? "default" : _param_selectType, status = _param.status, className = _param.className, restProps = _object_without_properties(_param, [
21
+ var _param_tabIndex = _param.tabIndex, tabIndex = _param_tabIndex === void 0 ? 0 : _param_tabIndex, placeholder = _param.placeholder, children = _param.children, align = _param.align, getRootRef = _param.getRootRef, multiline = _param.multiline, disabled = _param.disabled, onClick = _param.onClick, before = _param.before, _param_after = _param.after, after = _param_after === void 0 ? /*#__PURE__*/ React.createElement(DropdownIcon, null) : _param_after, _param_selectType = _param.selectType, selectType = _param_selectType === void 0 ? "default" : _param_selectType, status = _param.status, className = _param.className, autoFocus = _param.autoFocus, restProps = _object_without_properties(_param, [
20
22
  "tabIndex",
21
23
  "placeholder",
22
24
  "children",
@@ -29,14 +31,17 @@ var sizeYClassNames = _define_property({
29
31
  "after",
30
32
  "selectType",
31
33
  "status",
32
- "className"
34
+ "className",
35
+ "autoFocus"
33
36
  ]);
37
+ var rootRef = useExternRef(getRootRef);
34
38
  var _useAdaptivity = useAdaptivity(), _useAdaptivity_sizeY = _useAdaptivity.sizeY, sizeY = _useAdaptivity_sizeY === void 0 ? "none" : _useAdaptivity_sizeY;
35
39
  var title = children || placeholder;
40
+ useAutoFocus(rootRef, autoFocus);
36
41
  return /*#__PURE__*/ React.createElement(FormField, _object_spread_props(_object_spread({}, restProps), {
37
42
  tabIndex: disabled ? undefined : tabIndex,
38
43
  className: classNames("vkuiSelect", sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY], !children && "vkuiSelect--empty", multiline && "vkuiSelect--multiline", align === "center" && "vkuiSelect--align-center", align === "right" && "vkuiSelect--align-right", before && "vkuiSelect--hasBefore", className),
39
- getRootRef: getRootRef,
44
+ getRootRef: rootRef,
40
45
  onClick: disabled ? undefined : onClick,
41
46
  disabled: disabled,
42
47
  before: before,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/SelectMimicry/SelectMimicry.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { SizeType } from '../../lib/adaptivity';\nimport { getFormFieldModeFromSelectType } from '../../lib/select';\nimport { HasAlign, HasRootRef } from '../../types';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport type { SelectType } from '../Select/Select';\nimport { SelectTypography } from '../SelectTypography/SelectTypography';\nimport styles from '../Select/Select.module.css';\n\nconst sizeYClassNames = {\n none: styles['Select--sizeY-none'],\n [SizeType.COMPACT]: styles['Select--sizeY-compact'],\n};\n\nexport interface SelectMimicryProps\n extends React.HTMLAttributes<HTMLElement>,\n HasAlign,\n HasRootRef<HTMLElement>,\n Pick<FormFieldProps, 'before' | 'after' | 'status'> {\n multiline?: boolean;\n disabled?: boolean;\n selectType?: SelectType;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SelectMimicry\n */\nexport const SelectMimicry = ({\n tabIndex = 0,\n placeholder,\n children,\n align,\n getRootRef,\n multiline,\n disabled,\n onClick,\n before,\n after = <DropdownIcon />,\n selectType = 'default',\n status,\n className,\n ...restProps\n}: SelectMimicryProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n const title = children || placeholder;\n\n return (\n <FormField\n {...restProps}\n tabIndex={disabled ? undefined : tabIndex}\n className={classNames(\n styles['Select'],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n !children && styles['Select--empty'],\n multiline && styles['Select--multiline'],\n align === 'center' && styles['Select--align-center'],\n align === 'right' && styles['Select--align-right'],\n before && styles['Select--hasBefore'],\n className,\n )}\n getRootRef={getRootRef}\n onClick={disabled ? undefined : onClick}\n disabled={disabled}\n before={before}\n after={after}\n mode={getFormFieldModeFromSelectType(selectType)}\n status={status}\n >\n <div className={styles['Select__container']}>\n <SelectTypography selectType={selectType} className={styles['Select__title']}>\n {title}\n </SelectTypography>\n </div>\n </FormField>\n );\n};\n"],"names":["React","classNames","useAdaptivity","SizeType","getFormFieldModeFromSelectType","DropdownIcon","FormField","SelectTypography","sizeYClassNames","none","COMPACT","SelectMimicry","tabIndex","placeholder","children","align","getRootRef","multiline","disabled","onClick","before","after","selectType","status","className","restProps","sizeY","title","undefined","REGULAR","mode","div"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,8BAA8B,QAAQ,mBAAmB;AAElE,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,SAAS,QAAwB,yBAAyB;AAEnE,SAASC,gBAAgB,QAAQ,uCAAuC;AAGxE,IAAMC;IACJC,IAAI;GACHN,SAASO,OAAO;AAanB;;CAEC,GACD,OAAO,IAAMC,gBAAgB;iCAC3BC,UAAAA,wCAAW,qBACXC,qBAAAA,aACAC,kBAAAA,UACAC,eAAAA,OACAC,oBAAAA,YACAC,mBAAAA,WACAC,kBAAAA,UACAC,iBAAAA,SACAC,gBAAAA,8BACAC,OAAAA,gDAAQ,oBAAChB,+DACTiB,YAAAA,4CAAa,+BACbC,gBAAAA,QACAC,mBAAAA,WACGC;QAbHb;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAA2BtB,iBAAAA,wCAAAA,eAAnBwB,OAAAA,0CAAQ;IAChB,IAAMC,QAAQb,YAAYD;IAE1B,qBACE,oBAACP,mDACKmB;QACJb,UAAUM,WAAWU,YAAYhB;QACjCY,WAAWvB,yBAETyB,UAAUvB,SAAS0B,OAAO,IAAIrB,eAAe,CAACkB,MAAM,EACpD,CAACZ,iCACDG,sCACAF,UAAU,wCACVA,UAAU,sCACVK,mCACAI;QAEFR,YAAYA;QACZG,SAASD,WAAWU,YAAYT;QAChCD,UAAUA;QACVE,QAAQA;QACRC,OAAOA;QACPS,MAAM1B,+BAA+BkB;QACrCC,QAAQA;sBAER,oBAACQ;QAAIP,SAAS;qBACZ,oBAACjB;QAAiBe,YAAYA;QAAYE,SAAS;OAChDG;AAKX,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/SelectMimicry/SelectMimicry.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useAutoFocus } from '../../hooks/useAutoFocus';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { SizeType } from '../../lib/adaptivity';\nimport { getFormFieldModeFromSelectType } from '../../lib/select';\nimport { HasAlign, HasRootRef } from '../../types';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport type { SelectType } from '../Select/Select';\nimport { SelectTypography } from '../SelectTypography/SelectTypography';\nimport styles from '../Select/Select.module.css';\n\nconst sizeYClassNames = {\n none: styles['Select--sizeY-none'],\n [SizeType.COMPACT]: styles['Select--sizeY-compact'],\n};\n\nexport interface SelectMimicryProps\n extends React.HTMLAttributes<HTMLElement>,\n HasAlign,\n HasRootRef<HTMLElement>,\n Pick<FormFieldProps, 'before' | 'after' | 'status'> {\n multiline?: boolean;\n disabled?: boolean;\n selectType?: SelectType;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SelectMimicry\n */\nexport const SelectMimicry = ({\n tabIndex = 0,\n placeholder,\n children,\n align,\n getRootRef,\n multiline,\n disabled,\n onClick,\n before,\n after = <DropdownIcon />,\n selectType = 'default',\n status,\n className,\n autoFocus,\n ...restProps\n}: SelectMimicryProps) => {\n const rootRef = useExternRef(getRootRef);\n\n const { sizeY = 'none' } = useAdaptivity();\n const title = children || placeholder;\n\n useAutoFocus(rootRef, autoFocus);\n\n return (\n <FormField\n {...restProps}\n tabIndex={disabled ? undefined : tabIndex}\n className={classNames(\n styles['Select'],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n !children && styles['Select--empty'],\n multiline && styles['Select--multiline'],\n align === 'center' && styles['Select--align-center'],\n align === 'right' && styles['Select--align-right'],\n before && styles['Select--hasBefore'],\n className,\n )}\n getRootRef={rootRef}\n onClick={disabled ? undefined : onClick}\n disabled={disabled}\n before={before}\n after={after}\n mode={getFormFieldModeFromSelectType(selectType)}\n status={status}\n >\n <div className={styles['Select__container']}>\n <SelectTypography selectType={selectType} className={styles['Select__title']}>\n {title}\n </SelectTypography>\n </div>\n </FormField>\n );\n};\n"],"names":["React","classNames","useAdaptivity","useAutoFocus","useExternRef","SizeType","getFormFieldModeFromSelectType","DropdownIcon","FormField","SelectTypography","sizeYClassNames","none","COMPACT","SelectMimicry","tabIndex","placeholder","children","align","getRootRef","multiline","disabled","onClick","before","after","selectType","status","className","autoFocus","restProps","rootRef","sizeY","title","undefined","REGULAR","mode","div"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,8BAA8B,QAAQ,mBAAmB;AAElE,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,SAAS,QAAwB,yBAAyB;AAEnE,SAASC,gBAAgB,QAAQ,uCAAuC;AAGxE,IAAMC;IACJC,IAAI;GACHN,SAASO,OAAO;AAanB;;CAEC,GACD,OAAO,IAAMC,gBAAgB;iCAC3BC,UAAAA,wCAAW,qBACXC,qBAAAA,aACAC,kBAAAA,UACAC,eAAAA,OACAC,oBAAAA,YACAC,mBAAAA,WACAC,kBAAAA,UACAC,iBAAAA,SACAC,gBAAAA,8BACAC,OAAAA,gDAAQ,oBAAChB,+DACTiB,YAAAA,4CAAa,+BACbC,gBAAAA,QACAC,mBAAAA,WACAC,mBAAAA,WACGC;QAdHd;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAME,UAAUzB,aAAac;IAE7B,IAA2BhB,iBAAAA,wCAAAA,eAAnB4B,OAAAA,0CAAQ;IAChB,IAAMC,QAAQf,YAAYD;IAE1BZ,aAAa0B,SAASF;IAEtB,qBACE,oBAACnB,mDACKoB;QACJd,UAAUM,WAAWY,YAAYlB;QACjCY,WAAWzB,yBAET6B,UAAUzB,SAAS4B,OAAO,IAAIvB,eAAe,CAACoB,MAAM,EACpD,CAACd,iCACDG,sCACAF,UAAU,wCACVA,UAAU,sCACVK,mCACAI;QAEFR,YAAYW;QACZR,SAASD,WAAWY,YAAYX;QAChCD,UAAUA;QACVE,QAAQA;QACRC,OAAOA;QACPW,MAAM5B,+BAA+BkB;QACrCC,QAAQA;sBAER,oBAACU;QAAIT,SAAS;qBACZ,oBAACjB;QAAiBe,YAAYA;QAAYE,SAAS;OAChDK;AAKX,EAAE"}
@@ -79,7 +79,6 @@ var sizeYClassNames = (_obj = {
79
79
  }, subtitle), badgeAfterSubtitle && /*#__PURE__*/ React.createElement("span", {
80
80
  className: "vkuiSimpleCell__badge"
81
81
  }, badgeAfterSubtitle)), extraSubtitle && /*#__PURE__*/ React.createElement(Footnote, {
82
- normalize: false,
83
82
  className: classNames("vkuiSimpleCell__text", "vkuiSimpleCell__extraSubtitle")
84
83
  }, extraSubtitle)), hasReactNode(indicator) && /*#__PURE__*/ React.createElement(Headline, {
85
84
  Component: "span",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/SimpleCell/SimpleCell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasComponent } from '../../types';\nimport { Tappable, TappableProps } from '../Tappable/Tappable';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Headline } from '../Typography/Headline/Headline';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { Chevron } from './Chevron/Chevron';\nimport styles from './SimpleCell.module.css';\n\nconst warn = warnOnce('SimpleCell');\n\nconst platformClassNames = {\n ios: classNames(styles['SimpleCell--ios'], 'vkuiInternalSimpleCell--ios'),\n android: styles['SimpleCell--android'],\n vkcom: styles['SimpleCell--vkcom'],\n};\n\nconst sizeYClassNames = {\n none: classNames(styles['SimpleCell--sizeY-none'], 'vkuiInternalSimpleCell--sizeY-none'),\n [SizeType.COMPACT]: classNames(\n styles['SimpleCell--sizeY-compact'],\n 'vkuiInternalSimpleCell--sizeY-compact',\n ),\n [SizeType.REGULAR]: styles['SimpleCell--sizeY-regular'],\n};\n\nexport interface SimpleCellOwnProps extends HasComponent {\n /**\n * Иконка 28 или `<Avatar size={28|32|40|48|72} />`\n */\n before?: React.ReactNode;\n /**\n * Иконка 12 или `<Badge />`. Добавится слева от текста `children`.\n */\n badgeBeforeTitle?: React.ReactNode;\n /**\n * Иконка 12 или `<Badge />`. Добавится справа от текста `children`.\n */\n badgeAfterTitle?: React.ReactNode;\n /**\n * Иконка 12. Добавится слева от текста `subtitle`.\n */\n badgeBeforeSubtitle?: React.ReactNode;\n /**\n * Иконка 12. Добавится справа от текста `subtitle`.\n */\n badgeAfterSubtitle?: React.ReactNode;\n /**\n * Контейнер для текста справа от `children`.\n */\n indicator?: React.ReactNode;\n /**\n * Дополнительная строка текста над `children`.\n */\n subhead?: React.ReactNode;\n /**\n * Дополнительная строка текста под `children`.\n */\n subtitle?: React.ReactNode;\n /**\n * Дополнительная строка текста под `children` и `subtitle`.\n */\n extraSubtitle?: React.ReactNode;\n /**\n * Иконка 24|28 или `<Switch />`. Располагается справа от `indicator`.\n */\n after?: React.ReactNode;\n /**\n * Убирает анимацию нажатия\n */\n disabled?: boolean;\n /**\n * В iOS добавляет chevron справа. Передавать `true`, если предполагается переход при клике по ячейке.\n */\n expandable?: boolean | 'auto' | 'always';\n /**\n * Размер chevron\n */\n chevronSize?: 's' | 'm';\n /**\n * Включает многострочный режим для отображения текста\n */\n multiline?: boolean;\n}\n\nexport interface SimpleCellProps extends SimpleCellOwnProps, TappableProps {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SimpleCell\n */\nexport const SimpleCell = ({\n badgeBeforeTitle,\n badgeAfterTitle,\n badgeBeforeSubtitle,\n badgeAfterSubtitle,\n before,\n indicator,\n children,\n after,\n expandable,\n multiline,\n subhead,\n subtitle,\n extraSubtitle,\n className,\n chevronSize = 'm',\n ...restProps\n}: SimpleCellProps) => {\n const platform = usePlatform();\n\n if (process.env.NODE_ENV === 'development' && expandable === true) {\n // TODO [>=6]: Обновить типизацию для expandable свойства\n warn(\n 'Значение true свойства expandable устарело и будет удалено в v6. Используйте expandable=\"auto\"',\n );\n }\n\n const hasChevron =\n expandable === 'always' ||\n ((expandable === true || expandable === 'auto') && platform === Platform.IOS);\n\n const hasAfter = hasReactNode(after) || hasChevron;\n const { sizeY = 'none' } = useAdaptivity();\n\n return (\n <Tappable\n {...restProps}\n className={classNames(\n styles['SimpleCell'],\n 'vkuiInternalSimpleCell',\n platformClassNames.hasOwnProperty(platform)\n ? platformClassNames[platform]\n : platformClassNames.android,\n sizeYClassNames[sizeY],\n multiline && styles['SimpleCell--mult'],\n className,\n )}\n >\n {before}\n <div className={classNames(styles['SimpleCell__main'], 'vkuiInternalSimpleCell__main')}>\n {subhead && (\n <Subhead\n Component=\"span\"\n className={classNames(styles['SimpleCell__text'], styles['SimpleCell__subhead'])}\n >\n {subhead}\n </Subhead>\n )}\n <div className={styles['SimpleCell__content']}>\n {badgeBeforeTitle && (\n <span className={styles['SimpleCell__badge']}>{badgeBeforeTitle}</span>\n )}\n <Headline Component=\"span\" className={styles['SimpleCell__children']} weight=\"3\">\n {children}\n </Headline>\n {hasReactNode(badgeAfterTitle) && (\n <span className={styles['SimpleCell__badge']}>{badgeAfterTitle}</span>\n )}\n </div>\n {subtitle && (\n <div className={styles['SimpleCell__content']}>\n {badgeBeforeSubtitle && (\n <span className={styles['SimpleCell__badge']}>{badgeBeforeSubtitle}</span>\n )}\n <Footnote\n normalize={false}\n className={classNames(styles['SimpleCell__text'], styles['SimpleCell__subtitle'])}\n >\n {subtitle}\n </Footnote>\n {badgeAfterSubtitle && (\n <span className={styles['SimpleCell__badge']}>{badgeAfterSubtitle}</span>\n )}\n </div>\n )}\n {extraSubtitle && (\n <Footnote\n normalize={false}\n className={classNames(styles['SimpleCell__text'], styles['SimpleCell__extraSubtitle'])}\n >\n {extraSubtitle}\n </Footnote>\n )}\n </div>\n {hasReactNode(indicator) && (\n <Headline Component=\"span\" weight=\"3\" className={styles['SimpleCell__indicator']}>\n {indicator}\n </Headline>\n )}\n {hasAfter && (\n <div className={classNames(styles['SimpleCell__after'], 'vkuiInternalSimpleCell__after')}>\n {after}\n {hasChevron && (\n <Chevron size={chevronSize} className={styles['SimpleCell__chevronIcon']} />\n )}\n </div>\n )}\n </Tappable>\n );\n};\n"],"names":["React","classNames","hasReactNode","useAdaptivity","usePlatform","SizeType","Platform","warnOnce","Tappable","Footnote","Headline","Subhead","Chevron","warn","platformClassNames","ios","android","vkcom","sizeYClassNames","none","COMPACT","REGULAR","SimpleCell","badgeBeforeTitle","badgeAfterTitle","badgeBeforeSubtitle","badgeAfterSubtitle","before","indicator","children","after","expandable","multiline","subhead","subtitle","extraSubtitle","className","chevronSize","restProps","platform","process","env","NODE_ENV","hasChevron","IOS","hasAfter","sizeY","hasOwnProperty","div","Component","span","weight","normalize","size"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAC3D,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,QAAQ,QAAQ,qBAAqB;AAE9C,SAASC,QAAQ,QAAuB,uBAAuB;AAC/D,SAASC,QAAQ,QAAQ,kCAAkC;AAC3D,SAASC,QAAQ,QAAQ,kCAAkC;AAC3D,SAASC,OAAO,QAAQ,gCAAgC;AACxD,SAASC,OAAO,QAAQ,oBAAoB;AAG5C,IAAMC,OAAON,SAAS;AAEtB,IAAMO,qBAAqB;IACzBC,KAAKd,kCAAsC;IAC3Ce,OAAO;IACPC,KAAK;AACP;IAEwB;AAAxB,IAAMC,mBAAkB;IACtBC,MAAMlB,yCAA6C;GACnD,iBAFsB,MAErBI,SAASe,OAAO,EAAGnB,4CAElB,4DAJoB,MAMrBI,SAASgB,OAAO,oCANK;AAsExB;;CAEC,GACD,OAAO,IAAMC,aAAa;QACxBC,0BAAAA,kBACAC,yBAAAA,iBACAC,6BAAAA,qBACAC,4BAAAA,oBACAC,gBAAAA,QACAC,mBAAAA,WACAC,kBAAAA,UACAC,eAAAA,OACAC,oBAAAA,YACAC,mBAAAA,WACAC,iBAAAA,SACAC,kBAAAA,UACAC,uBAAAA,eACAC,mBAAAA,uCACAC,aAAAA,8CAAc,0BACXC;QAfHf;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAME,WAAWnC;IAEjB,IAAIoC,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiBX,eAAe,MAAM;QACjE,yDAAyD;QACzDlB,KACE;IAEJ;IAEA,IAAM8B,aACJZ,eAAe,YACd,AAACA,CAAAA,eAAe,QAAQA,eAAe,MAAK,KAAMQ,aAAajC,SAASsC,GAAG;IAE9E,IAAMC,WAAW3C,aAAa4B,UAAUa;IACxC,IAA2BxC,iBAAAA,wCAAAA,eAAnB2C,OAAAA,0CAAQ;IAEhB,qBACE,oBAACtC,kDACK8B;QACJF,WAAWnC,6BAET,0BACAa,mBAAmBiC,cAAc,CAACR,YAC9BzB,kBAAkB,CAACyB,SAAS,GAC5BzB,mBAAmBE,OAAO,EAC9BE,eAAe,CAAC4B,MAAM,EACtBd,qCACAI;QAGDT,sBACD,oBAACqB;QAAIZ,WAAWnC,mCAAuC;OACpDgC,yBACC,oBAACtB;QACCsC,WAAU;QACVb,WAAWnC;OAEVgC,wBAGL,oBAACe;QAAIZ,SAAS;OACXb,kCACC,oBAAC2B;QAAKd,SAAS;OAAgCb,iCAEjD,oBAACb;QAASuC,WAAU;QAAOb,SAAS;QAAkCe,QAAO;OAC1EtB,WAEF3B,aAAasB,kCACZ,oBAAC0B;QAAKd,SAAS;OAAgCZ,mBAGlDU,0BACC,oBAACc;QAAIZ,SAAS;OACXX,qCACC,oBAACyB;QAAKd,SAAS;OAAgCX,oCAEjD,oBAAChB;QACC2C,WAAW;QACXhB,WAAWnC;OAEViC,WAEFR,oCACC,oBAACwB;QAAKd,SAAS;OAAgCV,sBAIpDS,+BACC,oBAAC1B;QACC2C,WAAW;QACXhB,WAAWnC;OAEVkC,iBAINjC,aAAa0B,4BACZ,oBAAClB;QAASuC,WAAU;QAAOE,QAAO;QAAIf,SAAS;OAC5CR,YAGJiB,0BACC,oBAACG;QAAIZ,WAAWnC,oCAAwC;OACrD6B,OACAa,4BACC,oBAAC/B;QAAQyC,MAAMhB;QAAaD,SAAS;;AAMjD,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/SimpleCell/SimpleCell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasComponent } from '../../types';\nimport { Tappable, TappableProps } from '../Tappable/Tappable';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Headline } from '../Typography/Headline/Headline';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { Chevron } from './Chevron/Chevron';\nimport styles from './SimpleCell.module.css';\n\nconst warn = warnOnce('SimpleCell');\n\nconst platformClassNames = {\n ios: classNames(styles['SimpleCell--ios'], 'vkuiInternalSimpleCell--ios'),\n android: styles['SimpleCell--android'],\n vkcom: styles['SimpleCell--vkcom'],\n};\n\nconst sizeYClassNames = {\n none: classNames(styles['SimpleCell--sizeY-none'], 'vkuiInternalSimpleCell--sizeY-none'),\n [SizeType.COMPACT]: classNames(\n styles['SimpleCell--sizeY-compact'],\n 'vkuiInternalSimpleCell--sizeY-compact',\n ),\n [SizeType.REGULAR]: styles['SimpleCell--sizeY-regular'],\n};\n\nexport interface SimpleCellOwnProps extends HasComponent {\n /**\n * Иконка 28 или `<Avatar size={28|32|40|48|72} />`\n */\n before?: React.ReactNode;\n /**\n * Иконка 12 или `<Badge />`. Добавится слева от текста `children`.\n */\n badgeBeforeTitle?: React.ReactNode;\n /**\n * Иконка 12 или `<Badge />`. Добавится справа от текста `children`.\n */\n badgeAfterTitle?: React.ReactNode;\n /**\n * Иконка 12. Добавится слева от текста `subtitle`.\n */\n badgeBeforeSubtitle?: React.ReactNode;\n /**\n * Иконка 12. Добавится справа от текста `subtitle`.\n */\n badgeAfterSubtitle?: React.ReactNode;\n /**\n * Контейнер для текста справа от `children`.\n */\n indicator?: React.ReactNode;\n /**\n * Дополнительная строка текста над `children`.\n */\n subhead?: React.ReactNode;\n /**\n * Дополнительная строка текста под `children`.\n */\n subtitle?: React.ReactNode;\n /**\n * Дополнительная строка текста под `children` и `subtitle`.\n */\n extraSubtitle?: React.ReactNode;\n /**\n * Иконка 24|28 или `<Switch />`. Располагается справа от `indicator`.\n */\n after?: React.ReactNode;\n /**\n * Убирает анимацию нажатия\n */\n disabled?: boolean;\n /**\n * В iOS добавляет chevron справа. Передавать `true`, если предполагается переход при клике по ячейке.\n */\n expandable?: boolean | 'auto' | 'always';\n /**\n * Размер chevron\n */\n chevronSize?: 's' | 'm';\n /**\n * Включает многострочный режим для отображения текста\n */\n multiline?: boolean;\n}\n\nexport interface SimpleCellProps extends SimpleCellOwnProps, TappableProps {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SimpleCell\n */\nexport const SimpleCell = ({\n badgeBeforeTitle,\n badgeAfterTitle,\n badgeBeforeSubtitle,\n badgeAfterSubtitle,\n before,\n indicator,\n children,\n after,\n expandable,\n multiline,\n subhead,\n subtitle,\n extraSubtitle,\n className,\n chevronSize = 'm',\n ...restProps\n}: SimpleCellProps) => {\n const platform = usePlatform();\n\n if (process.env.NODE_ENV === 'development' && expandable === true) {\n // TODO [>=6]: Обновить типизацию для expandable свойства\n warn(\n 'Значение true свойства expandable устарело и будет удалено в v6. Используйте expandable=\"auto\"',\n );\n }\n\n const hasChevron =\n expandable === 'always' ||\n ((expandable === true || expandable === 'auto') && platform === Platform.IOS);\n\n const hasAfter = hasReactNode(after) || hasChevron;\n const { sizeY = 'none' } = useAdaptivity();\n\n return (\n <Tappable\n {...restProps}\n className={classNames(\n styles['SimpleCell'],\n 'vkuiInternalSimpleCell',\n platformClassNames.hasOwnProperty(platform)\n ? platformClassNames[platform]\n : platformClassNames.android,\n sizeYClassNames[sizeY],\n multiline && styles['SimpleCell--mult'],\n className,\n )}\n >\n {before}\n <div className={classNames(styles['SimpleCell__main'], 'vkuiInternalSimpleCell__main')}>\n {subhead && (\n <Subhead\n Component=\"span\"\n className={classNames(styles['SimpleCell__text'], styles['SimpleCell__subhead'])}\n >\n {subhead}\n </Subhead>\n )}\n <div className={styles['SimpleCell__content']}>\n {badgeBeforeTitle && (\n <span className={styles['SimpleCell__badge']}>{badgeBeforeTitle}</span>\n )}\n <Headline Component=\"span\" className={styles['SimpleCell__children']} weight=\"3\">\n {children}\n </Headline>\n {hasReactNode(badgeAfterTitle) && (\n <span className={styles['SimpleCell__badge']}>{badgeAfterTitle}</span>\n )}\n </div>\n {subtitle && (\n <div className={styles['SimpleCell__content']}>\n {badgeBeforeSubtitle && (\n <span className={styles['SimpleCell__badge']}>{badgeBeforeSubtitle}</span>\n )}\n <Footnote\n normalize={false}\n className={classNames(styles['SimpleCell__text'], styles['SimpleCell__subtitle'])}\n >\n {subtitle}\n </Footnote>\n {badgeAfterSubtitle && (\n <span className={styles['SimpleCell__badge']}>{badgeAfterSubtitle}</span>\n )}\n </div>\n )}\n {extraSubtitle && (\n <Footnote\n className={classNames(styles['SimpleCell__text'], styles['SimpleCell__extraSubtitle'])}\n >\n {extraSubtitle}\n </Footnote>\n )}\n </div>\n {hasReactNode(indicator) && (\n <Headline Component=\"span\" weight=\"3\" className={styles['SimpleCell__indicator']}>\n {indicator}\n </Headline>\n )}\n {hasAfter && (\n <div className={classNames(styles['SimpleCell__after'], 'vkuiInternalSimpleCell__after')}>\n {after}\n {hasChevron && (\n <Chevron size={chevronSize} className={styles['SimpleCell__chevronIcon']} />\n )}\n </div>\n )}\n </Tappable>\n );\n};\n"],"names":["React","classNames","hasReactNode","useAdaptivity","usePlatform","SizeType","Platform","warnOnce","Tappable","Footnote","Headline","Subhead","Chevron","warn","platformClassNames","ios","android","vkcom","sizeYClassNames","none","COMPACT","REGULAR","SimpleCell","badgeBeforeTitle","badgeAfterTitle","badgeBeforeSubtitle","badgeAfterSubtitle","before","indicator","children","after","expandable","multiline","subhead","subtitle","extraSubtitle","className","chevronSize","restProps","platform","process","env","NODE_ENV","hasChevron","IOS","hasAfter","sizeY","hasOwnProperty","div","Component","span","weight","normalize","size"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAC3D,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,QAAQ,QAAQ,qBAAqB;AAE9C,SAASC,QAAQ,QAAuB,uBAAuB;AAC/D,SAASC,QAAQ,QAAQ,kCAAkC;AAC3D,SAASC,QAAQ,QAAQ,kCAAkC;AAC3D,SAASC,OAAO,QAAQ,gCAAgC;AACxD,SAASC,OAAO,QAAQ,oBAAoB;AAG5C,IAAMC,OAAON,SAAS;AAEtB,IAAMO,qBAAqB;IACzBC,KAAKd,kCAAsC;IAC3Ce,OAAO;IACPC,KAAK;AACP;IAEwB;AAAxB,IAAMC,mBAAkB;IACtBC,MAAMlB,yCAA6C;GACnD,iBAFsB,MAErBI,SAASe,OAAO,EAAGnB,4CAElB,4DAJoB,MAMrBI,SAASgB,OAAO,oCANK;AAsExB;;CAEC,GACD,OAAO,IAAMC,aAAa;QACxBC,0BAAAA,kBACAC,yBAAAA,iBACAC,6BAAAA,qBACAC,4BAAAA,oBACAC,gBAAAA,QACAC,mBAAAA,WACAC,kBAAAA,UACAC,eAAAA,OACAC,oBAAAA,YACAC,mBAAAA,WACAC,iBAAAA,SACAC,kBAAAA,UACAC,uBAAAA,eACAC,mBAAAA,uCACAC,aAAAA,8CAAc,0BACXC;QAfHf;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAME,WAAWnC;IAEjB,IAAIoC,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiBX,eAAe,MAAM;QACjE,yDAAyD;QACzDlB,KACE;IAEJ;IAEA,IAAM8B,aACJZ,eAAe,YACd,AAACA,CAAAA,eAAe,QAAQA,eAAe,MAAK,KAAMQ,aAAajC,SAASsC,GAAG;IAE9E,IAAMC,WAAW3C,aAAa4B,UAAUa;IACxC,IAA2BxC,iBAAAA,wCAAAA,eAAnB2C,OAAAA,0CAAQ;IAEhB,qBACE,oBAACtC,kDACK8B;QACJF,WAAWnC,6BAET,0BACAa,mBAAmBiC,cAAc,CAACR,YAC9BzB,kBAAkB,CAACyB,SAAS,GAC5BzB,mBAAmBE,OAAO,EAC9BE,eAAe,CAAC4B,MAAM,EACtBd,qCACAI;QAGDT,sBACD,oBAACqB;QAAIZ,WAAWnC,mCAAuC;OACpDgC,yBACC,oBAACtB;QACCsC,WAAU;QACVb,WAAWnC;OAEVgC,wBAGL,oBAACe;QAAIZ,SAAS;OACXb,kCACC,oBAAC2B;QAAKd,SAAS;OAAgCb,iCAEjD,oBAACb;QAASuC,WAAU;QAAOb,SAAS;QAAkCe,QAAO;OAC1EtB,WAEF3B,aAAasB,kCACZ,oBAAC0B;QAAKd,SAAS;OAAgCZ,mBAGlDU,0BACC,oBAACc;QAAIZ,SAAS;OACXX,qCACC,oBAACyB;QAAKd,SAAS;OAAgCX,oCAEjD,oBAAChB;QACC2C,WAAW;QACXhB,WAAWnC;OAEViC,WAEFR,oCACC,oBAACwB;QAAKd,SAAS;OAAgCV,sBAIpDS,+BACC,oBAAC1B;QACC2B,WAAWnC;OAEVkC,iBAINjC,aAAa0B,4BACZ,oBAAClB;QAASuC,WAAU;QAAOE,QAAO;QAAIf,SAAS;OAC5CR,YAGJiB,0BACC,oBAACG;QAAIZ,WAAWnC,oCAAwC;OACrD6B,OACAa,4BACC,oBAAC/B;QAAQyC,MAAMhB;QAAaD,SAAS;;AAMjD,EAAE"}
@@ -132,10 +132,10 @@ var warn = warnOnce("View");
132
132
  ]);
133
133
  var transitionEndHandler = React.useCallback(function(e) {
134
134
  if ((!e || [
135
- "vkuivkui-animation-ios-next-forward",
136
- "vkuivkui-animation-ios-prev-back",
137
- "vkuivkui-animation-view-next-forward",
138
- "vkuivkui-animation-view-prev-back"
135
+ "vkuianimation-ios-next-forward",
136
+ "vkuianimation-ios-prev-back",
137
+ "vkuianimation-view-next-forward",
138
+ "vkuianimation-view-prev-back"
139
139
  ].includes(e.animationName)) && prevPanel !== null) {
140
140
  flushTransition(prevPanel, Boolean(isBack));
141
141
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/View/View.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { blurActiveElement, canUseDOM, useDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { animationEvent } from '../../lib/supportEvents';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useScroll } from '../AppRoot/ScrollContext';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { useSplitCol } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { swipeBackExcluded } from './utils';\nimport styles from './View.module.css';\n\nconst SWIPE_BACK_AREA = 70;\n\nenum SwipeBackResults {\n fail = 1,\n success,\n}\n\ninterface Scrolls {\n [index: string]: number | undefined;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends React.HTMLAttributes<HTMLElement>, NavIdProps {\n activePanel: string;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n *\n * Чтобы остановить свайп назад, возвращайте `\"prevent\"`.\n */\n onSwipeBackStart?(activePanel: string | null): void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n\n children: React.ReactElement | Iterable<React.ReactElement>;\n}\n\nexport interface ViewState {\n animated: boolean;\n\n visiblePanels: string[];\n activePanel: string | null;\n isBack: boolean | undefined;\n prevPanel: string | null;\n nextPanel: string | null;\n\n swipingBack: boolean;\n swipeBackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string | null;\n swipeBackPrevPanel: string | null;\n swipeBackResult: SwipeBackResults | null;\n\n browserSwipe: boolean;\n}\n\nconst warn = warnOnce('View');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/View\n */\nexport const View = ({\n activePanel: activePanelProp,\n history,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel: onSwipeBackCancelProp,\n children,\n className,\n ...restProps\n}: ViewProps) => {\n const scrolls = React.useRef(scrollsCache[getNavId({ nav, id: restProps.id }) as string] || {});\n const afterTransition = React.useRef(noop);\n\n React.useEffect(() => () => {\n const id = getNavId({ nav, id: restProps.id });\n if (id) {\n scrollsCache[id] = scrolls.current;\n }\n });\n\n const panelNodes = React.useRef<{ [id: string]: HTMLDivElement | null }>({});\n\n const { window, document } = useDOM();\n const scroll = useScroll();\n const configProvider = useConfigProvider();\n const splitCol = useSplitCol();\n const platform = usePlatform();\n\n const [animated, setAnimated] = React.useState(false);\n\n const [visiblePanels, setVisiblePanels] = React.useState([activePanelProp]);\n const [activePanel, setActivePanel] = React.useState<string | null>(activePanelProp);\n const [isBack, setIsBack] = React.useState<boolean | undefined>(undefined);\n const [prevPanel, setPrevPanel] = React.useState<string | null>(null);\n const [nextPanel, setNextPanel] = React.useState<string | null>(null);\n\n const [swipingBack, setSwipingBack] = React.useState<boolean>(false);\n const [swipeBackPrevented, setSwipeBackPrevented] = React.useState<boolean>(false);\n const [swipeBackStartX, setSwipeBackStartX] = React.useState<number>(0);\n const [swipeBackShift, setSwipeBackShift] = React.useState<number>(0);\n const [swipeBackNextPanel, setSwipeBackNextPanel] = React.useState<string | null>(null);\n const [swipeBackPrevPanel, setSwipeBackPrevPanel] = React.useState<string | null>(null);\n const [swipeBackResult, setSwipeBackResult] = React.useState<SwipeBackResults | null>(null);\n\n const [browserSwipe, setBrowserSwipe] = React.useState(false);\n\n const prevActivePanel = usePrevious(activePanelProp);\n const prevSwipingBack = usePrevious(swipingBack);\n const prevBrowserSwipe = usePrevious(browserSwipe);\n const prevSwipeBackResult = usePrevious(swipeBackResult);\n const prevSwipeBackPrevPanel = usePrevious(swipeBackPrevPanel);\n const prevOnTransition = usePrevious(onTransition);\n\n const panels = (React.Children.toArray(children) as React.ReactElement[]).filter(\n (panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n },\n );\n\n const disableAnimation =\n configProvider?.transitionMotionEnabled === false ||\n !splitCol?.animate ||\n platform === Platform.VKCOM;\n\n const pickPanel = (id: string | null) => {\n if (id === null) {\n return null;\n }\n return panelNodes.current[id];\n };\n\n const flushTransition = React.useCallback(\n (prevPanel: string, isBackTransition: boolean) => {\n if (isBackTransition) {\n scrolls.current[prevPanel] = 0;\n }\n setPrevPanel(null);\n setNextPanel(null);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n setAnimated(false);\n setIsBack(undefined);\n\n afterTransition.current = () => {\n scroll?.scrollTo(0, isBackTransition ? scrolls.current[activePanelProp] : 0);\n onTransition &&\n onTransition({\n isBack: isBackTransition,\n from: prevPanel,\n to: activePanelProp,\n });\n };\n },\n [activePanelProp, onTransition, scroll],\n );\n\n useIsomorphicLayoutEffect(() => {\n afterTransition.current();\n afterTransition.current = noop;\n }, [afterTransition.current]);\n\n const transitionEndHandler = React.useCallback(\n (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n styles['vkui-animation-ios-next-forward'],\n styles['vkui-animation-ios-prev-back'],\n styles['vkui-animation-view-next-forward'],\n styles['vkui-animation-view-prev-back'],\n ].includes(e.animationName)) &&\n prevPanel !== null\n ) {\n flushTransition(prevPanel, Boolean(isBack));\n }\n },\n [flushTransition, isBack, prevPanel],\n );\n\n const { waitTransitionFinish } = useWaitTransitionFinish();\n const animationFinishTimeout = useTimeout(\n transitionEndHandler,\n platform === Platform.IOS ? 600 : 300,\n );\n\n const onSwipeBackSuccess = React.useCallback(() => {\n onSwipeBack && onSwipeBack();\n }, [onSwipeBack]);\n\n const onSwipeBackCancel = React.useCallback(() => {\n onSwipeBackCancelProp && onSwipeBackCancelProp();\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n }, [onSwipeBackCancelProp]);\n\n const swipingBackTransitionEndHandler = React.useCallback(\n (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e?.propertyName.includes('transform') && e?.target === pickPanel(swipeBackNextPanel))\n ) {\n switch (swipeBackResult) {\n case SwipeBackResults.fail:\n onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n onSwipeBackSuccess();\n }\n }\n },\n [onSwipeBackCancel, onSwipeBackSuccess, swipeBackNextPanel, swipeBackResult],\n );\n\n const onMoveX = (event: TouchEvent): void => {\n if (\n platform !== Platform.IOS ||\n swipeBackPrevented ||\n swipeBackExcluded(event) ||\n disableAnimation\n ) {\n return;\n }\n\n if (!configProvider?.isWebView) {\n if (\n (event.startX <= SWIPE_BACK_AREA || event.startX >= window!.innerWidth - SWIPE_BACK_AREA) &&\n !browserSwipe\n ) {\n setBrowserSwipe(true);\n }\n\n return;\n }\n\n if (!onSwipeBack || (animated && event.startX <= SWIPE_BACK_AREA)) {\n return;\n }\n\n if (!swipingBack && event.startX <= SWIPE_BACK_AREA && history && history.length > 1) {\n // Начался свайп назад\n if (onSwipeBackStart) {\n const payload = onSwipeBackStart(activePanel);\n if (payload === 'prevent') {\n setSwipeBackPrevented(true);\n return;\n }\n }\n\n if (activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n blurActiveElement(document);\n scrolls.current[activePanel] = scroll?.getScroll().y;\n }\n\n setSwipingBack(true);\n setSwipeBackStartX(event.startX);\n setSwipeBackPrevPanel(activePanel);\n setSwipeBackNextPanel(history.slice(-2)[0]);\n }\n\n if (swipingBack) {\n let swipeBackShift = 0;\n if (event.shiftX < 0) {\n swipeBackShift = 0;\n } else if (event.shiftX > window!.innerWidth - swipeBackStartX) {\n swipeBackShift = window!.innerWidth;\n } else {\n swipeBackShift = event.shiftX;\n }\n setSwipeBackShift(swipeBackShift);\n }\n };\n\n const onEnd = React.useCallback(\n (event: TouchEvent): void => {\n if (swipingBack) {\n const speed = (swipeBackShift / event.duration) * 1000;\n if (swipeBackShift === 0) {\n onSwipeBackCancel();\n } else if (swipeBackShift >= (window!.innerWidth ?? 0)) {\n onSwipeBackSuccess();\n } else if (speed > 250 || swipeBackStartX + swipeBackShift > window!.innerWidth / 2) {\n setSwipeBackResult(SwipeBackResults.success);\n } else {\n setSwipeBackResult(SwipeBackResults.fail);\n }\n }\n if (swipeBackPrevented) {\n setSwipeBackPrevented(false);\n }\n },\n [\n onSwipeBackCancel,\n onSwipeBackSuccess,\n swipeBackShift,\n swipeBackStartX,\n swipingBack,\n swipeBackPrevented,\n window,\n ],\n );\n\n const calcPanelSwipeStyles = (panelId: string | undefined): React.CSSProperties => {\n if (!canUseDOM || !window) {\n return {};\n }\n\n const isPrev = panelId === swipeBackPrevPanel;\n const isNext = panelId === swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + (swipeBackShift * 100) / window.innerWidth / 2}%`;\n let prevPanelShadow = (0.3 * (window.innerWidth - swipeBackShift)) / window.innerWidth;\n\n if (swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n };\n\n React.useEffect(() => {\n // Нужен переход\n if (\n prevActivePanel &&\n prevActivePanel !== activePanelProp &&\n !prevSwipingBack &&\n !prevBrowserSwipe\n ) {\n const firstLayerId = (React.Children.toArray(children) as React.ReactElement[])\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevActivePanel || id === activePanelProp);\n\n const isBackTransition = firstLayerId === activePanelProp;\n scrolls.current[prevActivePanel] = scroll?.getScroll().y;\n\n if (disableAnimation) {\n flushTransition(prevActivePanel, isBackTransition);\n } else {\n blurActiveElement(document);\n\n setVisiblePanels([prevActivePanel, activePanelProp]);\n setPrevPanel(prevActivePanel);\n setNextPanel(activePanelProp);\n setActivePanel(null);\n setAnimated(true);\n setIsBack(isBackTransition);\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n animationFinishTimeout.set();\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevActivePanel && prevActivePanel !== activePanelProp && prevSwipingBack) {\n const nextPanel = activePanelProp;\n const prevPanel = prevActivePanel;\n if (prevSwipeBackPrevPanel) {\n scrolls.current[prevSwipeBackPrevPanel] = 0;\n }\n\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n setActivePanel(nextPanel);\n setVisiblePanels([nextPanel]);\n\n afterTransition.current = () => {\n if (nextPanel !== null) {\n scroll?.scrollTo(0, scrolls.current[nextPanel]);\n }\n prevOnTransition &&\n prevOnTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n };\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevSwipeBackResult && swipeBackResult) {\n waitTransitionFinish(\n pickPanel(swipeBackNextPanel),\n swipingBackTransitionEndHandler,\n platform === Platform.IOS ? 600 : 300,\n );\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevSwipeBackResult === SwipeBackResults.fail && !swipeBackResult && activePanel !== null) {\n scroll?.scrollTo(0, scrolls.current[activePanel]);\n }\n\n // Закончился Safari свайп\n if (prevActivePanel !== activePanelProp && browserSwipe) {\n setBrowserSwipe(false);\n setNextPanel(null);\n setPrevPanel(null);\n setAnimated(false);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n }\n }, [\n activePanelProp,\n activePanel,\n animationFinishTimeout,\n browserSwipe,\n children,\n disableAnimation,\n document,\n flushTransition,\n onSwipeBackStart,\n panels,\n platform,\n prevActivePanel,\n prevBrowserSwipe,\n prevOnTransition,\n prevSwipeBackPrevPanel,\n prevSwipeBackResult,\n prevSwipingBack,\n scroll,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBack,\n swipingBackTransitionEndHandler,\n waitTransitionFinish,\n ]);\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === Platform.IOS && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && animated && styles['View--animated'],\n !disableAnimation && swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={onMoveX}\n onEnd={onEnd}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && styles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && styles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && styles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n styles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n styles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (panelNodes.current[panelId] = el)}\n style={calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div\n className={styles['View__panel-in']}\n style={{\n marginTop: compensateScroll ? -(scrolls.current[panelId] ?? 0) : undefined,\n }}\n >\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n );\n};\n"],"names":["React","classNames","noop","usePlatform","usePrevious","useTimeout","useWaitTransitionFinish","blurActiveElement","canUseDOM","useDOM","getNavId","Platform","animationEvent","useIsomorphicLayoutEffect","warnOnce","useScroll","useConfigProvider","NavTransitionProvider","useSplitCol","Touch","swipeBackExcluded","SWIPE_BACK_AREA","SwipeBackResults","fail","success","scrollsCache","warn","View","activePanel","activePanelProp","history","nav","onTransition","onSwipeBack","onSwipeBackStart","onSwipeBackCancel","onSwipeBackCancelProp","children","className","restProps","configProvider","splitCol","scrolls","useRef","id","afterTransition","useEffect","current","panelNodes","window","document","scroll","platform","useState","animated","setAnimated","visiblePanels","setVisiblePanels","setActivePanel","undefined","isBack","setIsBack","prevPanel","setPrevPanel","nextPanel","setNextPanel","swipingBack","setSwipingBack","swipeBackPrevented","setSwipeBackPrevented","swipeBackStartX","setSwipeBackStartX","swipeBackShift","setSwipeBackShift","swipeBackNextPanel","setSwipeBackNextPanel","swipeBackPrevPanel","setSwipeBackPrevPanel","swipeBackResult","setSwipeBackResult","browserSwipe","setBrowserSwipe","prevActivePanel","prevSwipingBack","prevBrowserSwipe","prevSwipeBackResult","prevSwipeBackPrevPanel","prevOnTransition","panels","Children","toArray","filter","panel","panelId","props","includes","disableAnimation","transitionMotionEnabled","animate","VKCOM","pickPanel","flushTransition","useCallback","isBackTransition","scrollTo","from","to","transitionEndHandler","e","animationName","Boolean","waitTransitionFinish","animationFinishTimeout","IOS","onSwipeBackSuccess","swipingBackTransitionEndHandler","propertyName","target","onMoveX","event","isWebView","startX","innerWidth","length","payload","getScroll","y","slice","shiftX","onEnd","speed","duration","calcPanelSwipeStyles","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","firstLayerId","map","find","supported","set","Component","div","isTransitionTarget","compensateScroll","onAnimationEnd","ref","el","style","key","marginTop","entering"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/View/View.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { blurActiveElement, canUseDOM, useDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { animationEvent } from '../../lib/supportEvents';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useScroll } from '../AppRoot/ScrollContext';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { useSplitCol } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { swipeBackExcluded } from './utils';\nimport styles from './View.module.css';\n\nconst SWIPE_BACK_AREA = 70;\n\nenum SwipeBackResults {\n fail = 1,\n success,\n}\n\ninterface Scrolls {\n [index: string]: number | undefined;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends React.HTMLAttributes<HTMLElement>, NavIdProps {\n activePanel: string;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n *\n * Чтобы остановить свайп назад, возвращайте `\"prevent\"`.\n */\n onSwipeBackStart?(activePanel: string | null): void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n\n children: React.ReactElement | Iterable<React.ReactElement>;\n}\n\nexport interface ViewState {\n animated: boolean;\n\n visiblePanels: string[];\n activePanel: string | null;\n isBack: boolean | undefined;\n prevPanel: string | null;\n nextPanel: string | null;\n\n swipingBack: boolean;\n swipeBackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string | null;\n swipeBackPrevPanel: string | null;\n swipeBackResult: SwipeBackResults | null;\n\n browserSwipe: boolean;\n}\n\nconst warn = warnOnce('View');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/View\n */\nexport const View = ({\n activePanel: activePanelProp,\n history,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel: onSwipeBackCancelProp,\n children,\n className,\n ...restProps\n}: ViewProps) => {\n const scrolls = React.useRef(scrollsCache[getNavId({ nav, id: restProps.id }) as string] || {});\n const afterTransition = React.useRef(noop);\n\n React.useEffect(() => () => {\n const id = getNavId({ nav, id: restProps.id });\n if (id) {\n scrollsCache[id] = scrolls.current;\n }\n });\n\n const panelNodes = React.useRef<{ [id: string]: HTMLDivElement | null }>({});\n\n const { window, document } = useDOM();\n const scroll = useScroll();\n const configProvider = useConfigProvider();\n const splitCol = useSplitCol();\n const platform = usePlatform();\n\n const [animated, setAnimated] = React.useState(false);\n\n const [visiblePanels, setVisiblePanels] = React.useState([activePanelProp]);\n const [activePanel, setActivePanel] = React.useState<string | null>(activePanelProp);\n const [isBack, setIsBack] = React.useState<boolean | undefined>(undefined);\n const [prevPanel, setPrevPanel] = React.useState<string | null>(null);\n const [nextPanel, setNextPanel] = React.useState<string | null>(null);\n\n const [swipingBack, setSwipingBack] = React.useState<boolean>(false);\n const [swipeBackPrevented, setSwipeBackPrevented] = React.useState<boolean>(false);\n const [swipeBackStartX, setSwipeBackStartX] = React.useState<number>(0);\n const [swipeBackShift, setSwipeBackShift] = React.useState<number>(0);\n const [swipeBackNextPanel, setSwipeBackNextPanel] = React.useState<string | null>(null);\n const [swipeBackPrevPanel, setSwipeBackPrevPanel] = React.useState<string | null>(null);\n const [swipeBackResult, setSwipeBackResult] = React.useState<SwipeBackResults | null>(null);\n\n const [browserSwipe, setBrowserSwipe] = React.useState(false);\n\n const prevActivePanel = usePrevious(activePanelProp);\n const prevSwipingBack = usePrevious(swipingBack);\n const prevBrowserSwipe = usePrevious(browserSwipe);\n const prevSwipeBackResult = usePrevious(swipeBackResult);\n const prevSwipeBackPrevPanel = usePrevious(swipeBackPrevPanel);\n const prevOnTransition = usePrevious(onTransition);\n\n const panels = (React.Children.toArray(children) as React.ReactElement[]).filter(\n (panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n },\n );\n\n const disableAnimation =\n configProvider?.transitionMotionEnabled === false ||\n !splitCol?.animate ||\n platform === Platform.VKCOM;\n\n const pickPanel = (id: string | null) => {\n if (id === null) {\n return null;\n }\n return panelNodes.current[id];\n };\n\n const flushTransition = React.useCallback(\n (prevPanel: string, isBackTransition: boolean) => {\n if (isBackTransition) {\n scrolls.current[prevPanel] = 0;\n }\n setPrevPanel(null);\n setNextPanel(null);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n setAnimated(false);\n setIsBack(undefined);\n\n afterTransition.current = () => {\n scroll?.scrollTo(0, isBackTransition ? scrolls.current[activePanelProp] : 0);\n onTransition &&\n onTransition({\n isBack: isBackTransition,\n from: prevPanel,\n to: activePanelProp,\n });\n };\n },\n [activePanelProp, onTransition, scroll],\n );\n\n useIsomorphicLayoutEffect(() => {\n afterTransition.current();\n afterTransition.current = noop;\n }, [afterTransition.current]);\n\n const transitionEndHandler = React.useCallback(\n (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n styles['animation-ios-next-forward'],\n styles['animation-ios-prev-back'],\n styles['animation-view-next-forward'],\n styles['animation-view-prev-back'],\n ].includes(e.animationName)) &&\n prevPanel !== null\n ) {\n flushTransition(prevPanel, Boolean(isBack));\n }\n },\n [flushTransition, isBack, prevPanel],\n );\n\n const { waitTransitionFinish } = useWaitTransitionFinish();\n const animationFinishTimeout = useTimeout(\n transitionEndHandler,\n platform === Platform.IOS ? 600 : 300,\n );\n\n const onSwipeBackSuccess = React.useCallback(() => {\n onSwipeBack && onSwipeBack();\n }, [onSwipeBack]);\n\n const onSwipeBackCancel = React.useCallback(() => {\n onSwipeBackCancelProp && onSwipeBackCancelProp();\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n }, [onSwipeBackCancelProp]);\n\n const swipingBackTransitionEndHandler = React.useCallback(\n (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e?.propertyName.includes('transform') && e?.target === pickPanel(swipeBackNextPanel))\n ) {\n switch (swipeBackResult) {\n case SwipeBackResults.fail:\n onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n onSwipeBackSuccess();\n }\n }\n },\n [onSwipeBackCancel, onSwipeBackSuccess, swipeBackNextPanel, swipeBackResult],\n );\n\n const onMoveX = (event: TouchEvent): void => {\n if (\n platform !== Platform.IOS ||\n swipeBackPrevented ||\n swipeBackExcluded(event) ||\n disableAnimation\n ) {\n return;\n }\n\n if (!configProvider?.isWebView) {\n if (\n (event.startX <= SWIPE_BACK_AREA || event.startX >= window!.innerWidth - SWIPE_BACK_AREA) &&\n !browserSwipe\n ) {\n setBrowserSwipe(true);\n }\n\n return;\n }\n\n if (!onSwipeBack || (animated && event.startX <= SWIPE_BACK_AREA)) {\n return;\n }\n\n if (!swipingBack && event.startX <= SWIPE_BACK_AREA && history && history.length > 1) {\n // Начался свайп назад\n if (onSwipeBackStart) {\n const payload = onSwipeBackStart(activePanel);\n if (payload === 'prevent') {\n setSwipeBackPrevented(true);\n return;\n }\n }\n\n if (activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n blurActiveElement(document);\n scrolls.current[activePanel] = scroll?.getScroll().y;\n }\n\n setSwipingBack(true);\n setSwipeBackStartX(event.startX);\n setSwipeBackPrevPanel(activePanel);\n setSwipeBackNextPanel(history.slice(-2)[0]);\n }\n\n if (swipingBack) {\n let swipeBackShift = 0;\n if (event.shiftX < 0) {\n swipeBackShift = 0;\n } else if (event.shiftX > window!.innerWidth - swipeBackStartX) {\n swipeBackShift = window!.innerWidth;\n } else {\n swipeBackShift = event.shiftX;\n }\n setSwipeBackShift(swipeBackShift);\n }\n };\n\n const onEnd = React.useCallback(\n (event: TouchEvent): void => {\n if (swipingBack) {\n const speed = (swipeBackShift / event.duration) * 1000;\n if (swipeBackShift === 0) {\n onSwipeBackCancel();\n } else if (swipeBackShift >= (window!.innerWidth ?? 0)) {\n onSwipeBackSuccess();\n } else if (speed > 250 || swipeBackStartX + swipeBackShift > window!.innerWidth / 2) {\n setSwipeBackResult(SwipeBackResults.success);\n } else {\n setSwipeBackResult(SwipeBackResults.fail);\n }\n }\n if (swipeBackPrevented) {\n setSwipeBackPrevented(false);\n }\n },\n [\n onSwipeBackCancel,\n onSwipeBackSuccess,\n swipeBackShift,\n swipeBackStartX,\n swipingBack,\n swipeBackPrevented,\n window,\n ],\n );\n\n const calcPanelSwipeStyles = (panelId: string | undefined): React.CSSProperties => {\n if (!canUseDOM || !window) {\n return {};\n }\n\n const isPrev = panelId === swipeBackPrevPanel;\n const isNext = panelId === swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + (swipeBackShift * 100) / window.innerWidth / 2}%`;\n let prevPanelShadow = (0.3 * (window.innerWidth - swipeBackShift)) / window.innerWidth;\n\n if (swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n };\n\n React.useEffect(() => {\n // Нужен переход\n if (\n prevActivePanel &&\n prevActivePanel !== activePanelProp &&\n !prevSwipingBack &&\n !prevBrowserSwipe\n ) {\n const firstLayerId = (React.Children.toArray(children) as React.ReactElement[])\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevActivePanel || id === activePanelProp);\n\n const isBackTransition = firstLayerId === activePanelProp;\n scrolls.current[prevActivePanel] = scroll?.getScroll().y;\n\n if (disableAnimation) {\n flushTransition(prevActivePanel, isBackTransition);\n } else {\n blurActiveElement(document);\n\n setVisiblePanels([prevActivePanel, activePanelProp]);\n setPrevPanel(prevActivePanel);\n setNextPanel(activePanelProp);\n setActivePanel(null);\n setAnimated(true);\n setIsBack(isBackTransition);\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n animationFinishTimeout.set();\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevActivePanel && prevActivePanel !== activePanelProp && prevSwipingBack) {\n const nextPanel = activePanelProp;\n const prevPanel = prevActivePanel;\n if (prevSwipeBackPrevPanel) {\n scrolls.current[prevSwipeBackPrevPanel] = 0;\n }\n\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n setActivePanel(nextPanel);\n setVisiblePanels([nextPanel]);\n\n afterTransition.current = () => {\n if (nextPanel !== null) {\n scroll?.scrollTo(0, scrolls.current[nextPanel]);\n }\n prevOnTransition &&\n prevOnTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n };\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevSwipeBackResult && swipeBackResult) {\n waitTransitionFinish(\n pickPanel(swipeBackNextPanel),\n swipingBackTransitionEndHandler,\n platform === Platform.IOS ? 600 : 300,\n );\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevSwipeBackResult === SwipeBackResults.fail && !swipeBackResult && activePanel !== null) {\n scroll?.scrollTo(0, scrolls.current[activePanel]);\n }\n\n // Закончился Safari свайп\n if (prevActivePanel !== activePanelProp && browserSwipe) {\n setBrowserSwipe(false);\n setNextPanel(null);\n setPrevPanel(null);\n setAnimated(false);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n }\n }, [\n activePanelProp,\n activePanel,\n animationFinishTimeout,\n browserSwipe,\n children,\n disableAnimation,\n document,\n flushTransition,\n onSwipeBackStart,\n panels,\n platform,\n prevActivePanel,\n prevBrowserSwipe,\n prevOnTransition,\n prevSwipeBackPrevPanel,\n prevSwipeBackResult,\n prevSwipingBack,\n scroll,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBack,\n swipingBackTransitionEndHandler,\n waitTransitionFinish,\n ]);\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === Platform.IOS && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && animated && styles['View--animated'],\n !disableAnimation && swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={onMoveX}\n onEnd={onEnd}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && styles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && styles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && styles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n styles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n styles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (panelNodes.current[panelId] = el)}\n style={calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div\n className={styles['View__panel-in']}\n style={{\n marginTop: compensateScroll ? -(scrolls.current[panelId] ?? 0) : undefined,\n }}\n >\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n );\n};\n"],"names":["React","classNames","noop","usePlatform","usePrevious","useTimeout","useWaitTransitionFinish","blurActiveElement","canUseDOM","useDOM","getNavId","Platform","animationEvent","useIsomorphicLayoutEffect","warnOnce","useScroll","useConfigProvider","NavTransitionProvider","useSplitCol","Touch","swipeBackExcluded","SWIPE_BACK_AREA","SwipeBackResults","fail","success","scrollsCache","warn","View","activePanel","activePanelProp","history","nav","onTransition","onSwipeBack","onSwipeBackStart","onSwipeBackCancel","onSwipeBackCancelProp","children","className","restProps","configProvider","splitCol","scrolls","useRef","id","afterTransition","useEffect","current","panelNodes","window","document","scroll","platform","useState","animated","setAnimated","visiblePanels","setVisiblePanels","setActivePanel","undefined","isBack","setIsBack","prevPanel","setPrevPanel","nextPanel","setNextPanel","swipingBack","setSwipingBack","swipeBackPrevented","setSwipeBackPrevented","swipeBackStartX","setSwipeBackStartX","swipeBackShift","setSwipeBackShift","swipeBackNextPanel","setSwipeBackNextPanel","swipeBackPrevPanel","setSwipeBackPrevPanel","swipeBackResult","setSwipeBackResult","browserSwipe","setBrowserSwipe","prevActivePanel","prevSwipingBack","prevBrowserSwipe","prevSwipeBackResult","prevSwipeBackPrevPanel","prevOnTransition","panels","Children","toArray","filter","panel","panelId","props","includes","disableAnimation","transitionMotionEnabled","animate","VKCOM","pickPanel","flushTransition","useCallback","isBackTransition","scrollTo","from","to","transitionEndHandler","e","animationName","Boolean","waitTransitionFinish","animationFinishTimeout","IOS","onSwipeBackSuccess","swipingBackTransitionEndHandler","propertyName","target","onMoveX","event","isWebView","startX","innerWidth","length","payload","getScroll","y","slice","shiftX","onEnd","speed","duration","calcPanelSwipeStyles","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","firstLayerId","map","find","supported","set","Component","div","isTransitionTarget","compensateScroll","onAnimationEnd","ref","el","style","key","marginTop","entering"],"mappings":"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"}
@@ -45,10 +45,10 @@ var ViewInfiniteComponent = /*#__PURE__*/ function(_superClass) {
45
45
  _define_property(_assert_this_initialized(_this), "panelNodes", {});
46
46
  _define_property(_assert_this_initialized(_this), "transitionEndHandler", function(e) {
47
47
  if ((!e || [
48
- "vkuivkui-animation-ios-next-forward",
49
- "vkuivkui-animation-ios-prev-back",
50
- "vkuivkui-animation-view-next-forward",
51
- "vkuivkui-animation-view-prev-back"
48
+ "vkuianimation-ios-next-forward",
49
+ "vkuianimation-ios-prev-back",
50
+ "vkuianimation-view-next-forward",
51
+ "vkuianimation-view-prev-back"
52
52
  ].includes(e.animationName)) && _this.state.prevPanel !== null) {
53
53
  _this.flushTransition(_this.state.prevPanel, Boolean(_this.state.isBack));
54
54
  }