@vkontakte/vkui 5.9.3 → 5.9.5

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 (91) hide show
  1. package/dist/cjs/components/ConfigProvider/ConfigProvider.d.ts +1 -1
  2. package/dist/cjs/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
  3. package/dist/cjs/components/ConfigProvider/ConfigProvider.js +2 -1
  4. package/dist/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
  5. package/dist/cjs/components/ModalRoot/ModalRoot.d.ts.map +1 -1
  6. package/dist/cjs/components/ModalRoot/ModalRoot.js +7 -1
  7. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  8. package/dist/cjs/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
  9. package/dist/cjs/components/PullToRefresh/PullToRefresh.js +14 -1
  10. package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
  11. package/dist/cjs/components/Tappable/Tappable.d.ts.map +1 -1
  12. package/dist/cjs/components/Tappable/Tappable.js +1 -3
  13. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  14. package/dist/cjs/index.d.ts +2 -2
  15. package/dist/cjs/index.d.ts.map +1 -1
  16. package/dist/cjs/index.js +1 -1
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/lib/utils.d.ts +5 -0
  19. package/dist/cjs/lib/utils.d.ts.map +1 -1
  20. package/dist/cjs/lib/utils.js +12 -0
  21. package/dist/cjs/lib/utils.js.map +1 -1
  22. package/dist/components/ConfigProvider/ConfigProvider.d.ts +1 -1
  23. package/dist/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
  24. package/dist/components/ConfigProvider/ConfigProvider.js +3 -2
  25. package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
  26. package/dist/components/ModalRoot/ModalRoot.d.ts.map +1 -1
  27. package/dist/components/ModalRoot/ModalRoot.js +7 -1
  28. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  29. package/dist/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
  30. package/dist/components/PullToRefresh/PullToRefresh.js +14 -1
  31. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  32. package/dist/components/Tappable/Tappable.d.ts.map +1 -1
  33. package/dist/components/Tappable/Tappable.js +1 -3
  34. package/dist/components/Tappable/Tappable.js.map +1 -1
  35. package/dist/components.css +2 -2
  36. package/dist/components.css.map +1 -1
  37. package/dist/components.js.tmp +1693 -1696
  38. package/dist/cssm/components/ConfigProvider/ConfigProvider.d.ts +1 -1
  39. package/dist/cssm/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
  40. package/dist/cssm/components/ConfigProvider/ConfigProvider.js +3 -2
  41. package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  42. package/dist/cssm/components/ModalRoot/ModalRoot.d.ts.map +1 -1
  43. package/dist/cssm/components/ModalRoot/ModalRoot.js +7 -1
  44. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  45. package/dist/cssm/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
  46. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +14 -1
  47. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  48. package/dist/cssm/components/Tappable/Tappable.d.ts.map +1 -1
  49. package/dist/cssm/components/Tappable/Tappable.js +1 -3
  50. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  51. package/dist/cssm/index.d.ts +2 -2
  52. package/dist/cssm/index.d.ts.map +1 -1
  53. package/dist/cssm/index.js +1 -1
  54. package/dist/cssm/index.js.map +1 -1
  55. package/dist/cssm/lib/utils.d.ts +5 -0
  56. package/dist/cssm/lib/utils.d.ts.map +1 -1
  57. package/dist/cssm/lib/utils.js +9 -0
  58. package/dist/cssm/lib/utils.js.map +1 -1
  59. package/dist/cssm/styles/common.css +5 -0
  60. package/dist/index.d.ts +2 -2
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +1 -1
  63. package/dist/index.js.map +1 -1
  64. package/dist/lib/utils.d.ts +5 -0
  65. package/dist/lib/utils.d.ts.map +1 -1
  66. package/dist/lib/utils.js +9 -0
  67. package/dist/lib/utils.js.map +1 -1
  68. package/dist/vkui.css +2 -2
  69. package/dist/vkui.css.map +1 -1
  70. package/dist/vkui.js.tmp +1693 -1696
  71. package/package.json +1 -1
  72. package/src/components/ConfigProvider/ConfigProvider.tsx +7 -2
  73. package/src/components/ModalRoot/ModalRoot.tsx +9 -1
  74. package/src/components/PullToRefresh/PullToRefresh.tsx +16 -1
  75. package/src/components/Tappable/Tappable.tsx +1 -3
  76. package/src/index.ts +2 -2
  77. package/src/lib/utils.ts +16 -0
  78. package/src/styles/common.css +6 -0
  79. package/dist/cjs/hooks/useAdaptivityHasHover.d.ts +0 -9
  80. package/dist/cjs/hooks/useAdaptivityHasHover.d.ts.map +0 -1
  81. package/dist/cjs/hooks/useAdaptivityHasHover.js +0 -28
  82. package/dist/cjs/hooks/useAdaptivityHasHover.js.map +0 -1
  83. package/dist/cssm/hooks/useAdaptivityHasHover.d.ts +0 -9
  84. package/dist/cssm/hooks/useAdaptivityHasHover.d.ts.map +0 -1
  85. package/dist/cssm/hooks/useAdaptivityHasHover.js +0 -16
  86. package/dist/cssm/hooks/useAdaptivityHasHover.js.map +0 -1
  87. package/dist/hooks/useAdaptivityHasHover.d.ts +0 -9
  88. package/dist/hooks/useAdaptivityHasHover.d.ts.map +0 -1
  89. package/dist/hooks/useAdaptivityHasHover.js +0 -17
  90. package/dist/hooks/useAdaptivityHasHover.js.map +0 -1
  91. package/src/hooks/useAdaptivityHasHover.ts +0 -26
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "5.9.3",
2
+ "version": "5.9.5",
3
3
  "name": "@vkontakte/vkui",
4
4
  "description": "VKUI library",
5
5
  "main": "dist/cjs/index.js",
@@ -6,7 +6,11 @@ import { useObjectMemo } from '../../hooks/useObjectMemo';
6
6
  import { useDOM } from '../../lib/dom';
7
7
  import { TokensClassProvider } from '../../lib/tokensClassProvider';
8
8
  import { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';
9
- import { addClassNameToElement, removeClassNameFromElement } from '../../lib/utils';
9
+ import {
10
+ addClassNameToElement,
11
+ excludeKeysWithUndefined,
12
+ removeClassNameFromElement,
13
+ } from '../../lib/utils';
10
14
  import { warnOnce } from '../../lib/warnOnce';
11
15
  import {
12
16
  ConfigProviderContext,
@@ -32,7 +36,8 @@ export interface ConfigProviderProps extends Partial<ConfigProviderContextInterf
32
36
  /**
33
37
  * @see https://vkcom.github.io/VKUI/#/ConfigProvider
34
38
  */
35
- export const ConfigProvider = (props: ConfigProviderProps) => {
39
+ export const ConfigProvider = (propsRaw: ConfigProviderProps) => {
40
+ const props = excludeKeysWithUndefined(propsRaw);
36
41
  const parentConfig = useConfigProvider();
37
42
 
38
43
  const {
@@ -146,7 +146,10 @@ class ModalRootTouchComponent extends React.Component<
146
146
  this.documentScrolling = enabled;
147
147
 
148
148
  if (enabled) {
149
- // Здесь нужен последний аргумент с такими же параметрами, потому что
149
+ // восстанавливаем значение overscroll behavior
150
+ // eslint-disable-next-line no-restricted-properties
151
+ this.document.documentElement.classList.remove('vkui--disable-overscroll-behavior');
152
+
150
153
  // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.
151
154
  // https://github.com/VKCOM/VKUI/issues/444
152
155
  this.window.removeEventListener('touchmove', this.preventTouch, {
@@ -154,6 +157,11 @@ class ModalRootTouchComponent extends React.Component<
154
157
  passive: false,
155
158
  });
156
159
  } else {
160
+ // отключаем нативный pull-to-refresh при открытом модальном окне
161
+ // чтобы он не срабатывал при закрытии модалки смахиванием вниз
162
+ // eslint-disable-next-line no-restricted-properties
163
+ this.document.documentElement.classList.add('vkui--disable-overscroll-behavior');
164
+
157
165
  this.window.addEventListener('touchmove', this.preventTouch, {
158
166
  passive: false,
159
167
  });
@@ -199,6 +199,11 @@ export const PullToRefresh = ({
199
199
  }
200
200
  setTouchDown(true);
201
201
  startYRef.current = e.startY;
202
+
203
+ if (document) {
204
+ // eslint-disable-next-line no-restricted-properties
205
+ document.documentElement.classList.add('vkui--disable-overscroll-behavior');
206
+ }
202
207
  };
203
208
 
204
209
  const shouldPreventTouchMove = (event: VKUITouchEvent) => {
@@ -209,7 +214,11 @@ export const PullToRefresh = ({
209
214
  /* Нам нужно запретить touchmove у документа как только стало понятно, что
210
215
  * начинается pull.
211
216
  * состояния watching и refreshing устанавливаются слишком поздно и браузер
212
- * может успеть начать нативный pull to refresh. */
217
+ * может успеть начать нативный pull to refresh.
218
+ *
219
+ * Этот код является запасным вариантом, на случай, если css свойство
220
+ * overscroll-behavior не поддерживается
221
+ * */
213
222
  const shiftY = coordY(event) - startYRef.current;
214
223
  const pageYOffset = scroll?.getScroll().y;
215
224
  const isRefreshGestureStarted = pageYOffset === 0 && shiftY > 0 && touchDown;
@@ -261,6 +270,12 @@ export const PullToRefresh = ({
261
270
  const onTouchEnd = () => {
262
271
  setWatching(false);
263
272
  setTouchDown(false);
273
+
274
+ // восстанавливаем overscroll behavior
275
+ if (document) {
276
+ // eslint-disable-next-line no-restricted-properties
277
+ document.documentElement.classList.remove('vkui--disable-overscroll-behavior');
278
+ }
264
279
  };
265
280
 
266
281
  const spinnerTransform = `translate3d(0, ${spinnerY}px, 0)`;
@@ -2,7 +2,6 @@ import * as React from 'react';
2
2
  import { classNames, noop } from '@vkontakte/vkjs';
3
3
  import mitt from 'mitt';
4
4
  import { useAdaptivity } from '../../hooks/useAdaptivity';
5
- import { useAdaptivityHasHover } from '../../hooks/useAdaptivityHasHover';
6
5
  import { useAdaptivityHasPointer } from '../../hooks/useAdaptivityHasPointer';
7
6
  import { useBooleanState } from '../../hooks/useBooleanState';
8
7
  import { useExternRef } from '../../hooks/useExternRef';
@@ -224,9 +223,8 @@ export const Tappable = ({
224
223
  const insideTouchRoot = React.useContext(TouchRootContext);
225
224
  const platform = usePlatform();
226
225
  const { focusVisible, onBlur, onFocus } = useFocusVisible();
227
- const { sizeX = 'none' } = useAdaptivity();
226
+ const { sizeX = 'none', hasHover: hasHoverContext = true } = useAdaptivity();
228
227
  const hasPointerContext = useAdaptivityHasPointer();
229
- const hasHoverContext = useAdaptivityHasHover();
230
228
 
231
229
  const [clicks, setClicks] = React.useState<Wave[]>([]);
232
230
  const [childHover, setChildHover] = React.useState(false);
package/src/index.ts CHANGED
@@ -51,6 +51,8 @@ export type {
51
51
  */
52
52
  export { Button } from './components/Button/Button';
53
53
  export type { ButtonProps } from './components/Button/Button';
54
+ export { IconButton } from './components/IconButton/IconButton';
55
+ export type { IconButtonProps } from './components/IconButton/IconButton';
54
56
 
55
57
  /**
56
58
  * Layout
@@ -129,8 +131,6 @@ export { Badge } from './components/Badge/Badge';
129
131
  export type { BadgeProps } from './components/Badge/Badge';
130
132
  export { ButtonGroup } from './components/ButtonGroup/ButtonGroup';
131
133
  export type { ButtonGroupProps } from './components/ButtonGroup/ButtonGroup';
132
- export { IconButton } from './components/IconButton/IconButton';
133
- export type { IconButtonProps } from './components/IconButton/IconButton';
134
134
  export { Card } from './components/Card/Card';
135
135
  export type { CardProps } from './components/Card/Card';
136
136
  export { CardGrid } from './components/CardGrid/CardGrid';
package/src/lib/utils.ts CHANGED
@@ -73,3 +73,19 @@ export function removeClassNameFromElement(element: HTMLElement, classNameToRemo
73
73
 
74
74
  element.setAttribute('class', classNamesArray.join(' '));
75
75
  }
76
+
77
+ type ExcludeKeysWithUndefined<T> = {
78
+ [P in keyof T]?: Exclude<T[P], undefined>;
79
+ };
80
+
81
+ export const excludeKeysWithUndefined = <T extends Record<string | number | symbol, any>>(
82
+ obj: T,
83
+ ): ExcludeKeysWithUndefined<T> => {
84
+ const filteredObj: ExcludeKeysWithUndefined<T> = {};
85
+ for (const key in obj) {
86
+ if (obj.hasOwnProperty(key) && obj[key] !== undefined) {
87
+ filteredObj[key] = obj[key];
88
+ }
89
+ }
90
+ return filteredObj;
91
+ };
@@ -38,3 +38,9 @@
38
38
  .vkui--layout-plain {
39
39
  background: var(--vkui--color_background_content);
40
40
  }
41
+
42
+ /* отключаем нативный pull-to-refresh при взаимодействии с компонентом
43
+ * PullToRefresh или при открывании модалки */
44
+ .vkui--disable-overscroll-behavior {
45
+ overscroll-behavior-y: none;
46
+ }
@@ -1,9 +0,0 @@
1
- /**
2
- * Определение происходит с помощью `window.matchMedia`. Для того, чтобы не было ошибок при гидратации, по умолчанию
3
- * откладываем определение на второй рендер.
4
- *
5
- * [No SSR] Если передать `false`, то определение будет сразу.
6
- */
7
- export declare function useAdaptivityHasHover(deferDetect?: true): undefined | boolean;
8
- export declare function useAdaptivityHasHover(deferDetect?: false): boolean;
9
- //# sourceMappingURL=useAdaptivityHasHover.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAdaptivityHasHover.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAdaptivityHasHover.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;AAC/E,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "useAdaptivityHasHover", {
6
- enumerable: true,
7
- get: function() {
8
- return useAdaptivityHasHover;
9
- }
10
- });
11
- var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
- var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
13
- var _vkjs = require("@vkontakte/vkjs");
14
- var _AdaptivityContext = require("../components/AdaptivityProvider/AdaptivityContext");
15
- var _useIsClient = require("./useIsClient");
16
- function useAdaptivityHasHover() {
17
- var deferDetect = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
18
- var _React_useContext = _react.useContext(_AdaptivityContext.AdaptivityContext), hasHoverContext = _React_useContext.hasHover;
19
- var hasHover = hasHoverContext === undefined ? _vkjs.hasHover : hasHoverContext;
20
- var needTwoPassRendering = deferDetect || hasHoverContext === undefined;
21
- var isClient = (0, _useIsClient.useIsClient)(!needTwoPassRendering);
22
- if (!isClient || hasHoverContext !== undefined) {
23
- return hasHoverContext;
24
- }
25
- return hasHover;
26
- }
27
-
28
- //# sourceMappingURL=useAdaptivityHasHover.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/hooks/useAdaptivityHasHover.ts"],"sourcesContent":["import * as React from 'react';\nimport { hasHover as hasHoverLib } from '@vkontakte/vkjs';\nimport { AdaptivityContext } from '../components/AdaptivityProvider/AdaptivityContext';\nimport { useIsClient } from './useIsClient';\n\n/**\n * Определение происходит с помощью `window.matchMedia`. Для того, чтобы не было ошибок при гидратации, по умолчанию\n * откладываем определение на второй рендер.\n *\n * [No SSR] Если передать `false`, то определение будет сразу.\n */\nexport function useAdaptivityHasHover(deferDetect?: true): undefined | boolean;\nexport function useAdaptivityHasHover(deferDetect?: false): boolean;\nexport function useAdaptivityHasHover(deferDetect = true): undefined | boolean {\n const { hasHover: hasHoverContext } = React.useContext(AdaptivityContext);\n const hasHover = hasHoverContext === undefined ? hasHoverLib : hasHoverContext;\n\n const needTwoPassRendering = deferDetect || hasHoverContext === undefined;\n\n const isClient = useIsClient(!needTwoPassRendering);\n if (!isClient || hasHoverContext !== undefined) {\n return hasHoverContext;\n }\n\n return hasHover;\n}\n"],"names":["useAdaptivityHasHover","deferDetect","React","useContext","AdaptivityContext","hasHover","hasHoverContext","undefined","hasHoverLib","needTwoPassRendering","isClient","useIsClient"],"mappings":";;;;+BAagBA;;;eAAAA;;;;+DAbO;oBACiB;iCACN;2BACN;AAUrB,SAASA;QAAsBC,cAAAA,iEAAc;IAClD,IAAsCC,oBAAAA,OAAMC,UAAU,CAACC,oCAAiB,GAAhEC,AAAUC,kBAAoBJ,kBAA9BG;IACR,IAAMA,WAAWC,oBAAoBC,YAAYC,cAAW,GAAGF;IAE/D,IAAMG,uBAAuBR,eAAeK,oBAAoBC;IAEhE,IAAMG,WAAWC,IAAAA,wBAAW,EAAC,CAACF;IAC9B,IAAI,CAACC,YAAYJ,oBAAoBC,WAAW;QAC9C,OAAOD;IACT;IAEA,OAAOD;AACT"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Определение происходит с помощью `window.matchMedia`. Для того, чтобы не было ошибок при гидратации, по умолчанию
3
- * откладываем определение на второй рендер.
4
- *
5
- * [No SSR] Если передать `false`, то определение будет сразу.
6
- */
7
- export declare function useAdaptivityHasHover(deferDetect?: true): undefined | boolean;
8
- export declare function useAdaptivityHasHover(deferDetect?: false): boolean;
9
- //# sourceMappingURL=useAdaptivityHasHover.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAdaptivityHasHover.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAdaptivityHasHover.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;AAC/E,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC"}
@@ -1,16 +0,0 @@
1
- import * as React from 'react';
2
- import { hasHover as hasHoverLib } from '@vkontakte/vkjs';
3
- import { AdaptivityContext } from '../components/AdaptivityProvider/AdaptivityContext';
4
- import { useIsClient } from './useIsClient';
5
- export function useAdaptivityHasHover(deferDetect = true) {
6
- const { hasHover: hasHoverContext } = React.useContext(AdaptivityContext);
7
- const hasHover = hasHoverContext === undefined ? hasHoverLib : hasHoverContext;
8
- const needTwoPassRendering = deferDetect || hasHoverContext === undefined;
9
- const isClient = useIsClient(!needTwoPassRendering);
10
- if (!isClient || hasHoverContext !== undefined) {
11
- return hasHoverContext;
12
- }
13
- return hasHover;
14
- }
15
-
16
- //# sourceMappingURL=useAdaptivityHasHover.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/hooks/useAdaptivityHasHover.ts"],"sourcesContent":["import * as React from 'react';\nimport { hasHover as hasHoverLib } from '@vkontakte/vkjs';\nimport { AdaptivityContext } from '../components/AdaptivityProvider/AdaptivityContext';\nimport { useIsClient } from './useIsClient';\n\n/**\n * Определение происходит с помощью `window.matchMedia`. Для того, чтобы не было ошибок при гидратации, по умолчанию\n * откладываем определение на второй рендер.\n *\n * [No SSR] Если передать `false`, то определение будет сразу.\n */\nexport function useAdaptivityHasHover(deferDetect?: true): undefined | boolean;\nexport function useAdaptivityHasHover(deferDetect?: false): boolean;\nexport function useAdaptivityHasHover(deferDetect = true): undefined | boolean {\n const { hasHover: hasHoverContext } = React.useContext(AdaptivityContext);\n const hasHover = hasHoverContext === undefined ? hasHoverLib : hasHoverContext;\n\n const needTwoPassRendering = deferDetect || hasHoverContext === undefined;\n\n const isClient = useIsClient(!needTwoPassRendering);\n if (!isClient || hasHoverContext !== undefined) {\n return hasHoverContext;\n }\n\n return hasHover;\n}\n"],"names":["React","hasHover","hasHoverLib","AdaptivityContext","useIsClient","useAdaptivityHasHover","deferDetect","hasHoverContext","useContext","undefined","needTwoPassRendering","isClient"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,YAAYC,WAAW,QAAQ,kBAAkB;AAC1D,SAASC,iBAAiB,QAAQ,qDAAqD;AACvF,SAASC,WAAW,QAAQ,gBAAgB;AAU5C,OAAO,SAASC,sBAAsBC,cAAc,IAAI;IACtD,MAAM,EAAEL,UAAUM,eAAe,EAAE,GAAGP,MAAMQ,UAAU,CAACL;IACvD,MAAMF,WAAWM,oBAAoBE,YAAYP,cAAcK;IAE/D,MAAMG,uBAAuBJ,eAAeC,oBAAoBE;IAEhE,MAAME,WAAWP,YAAY,CAACM;IAC9B,IAAI,CAACC,YAAYJ,oBAAoBE,WAAW;QAC9C,OAAOF;IACT;IAEA,OAAON;AACT"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Определение происходит с помощью `window.matchMedia`. Для того, чтобы не было ошибок при гидратации, по умолчанию
3
- * откладываем определение на второй рендер.
4
- *
5
- * [No SSR] Если передать `false`, то определение будет сразу.
6
- */
7
- export declare function useAdaptivityHasHover(deferDetect?: true): undefined | boolean;
8
- export declare function useAdaptivityHasHover(deferDetect?: false): boolean;
9
- //# sourceMappingURL=useAdaptivityHasHover.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAdaptivityHasHover.d.ts","sourceRoot":"","sources":["../../src/hooks/useAdaptivityHasHover.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;AAC/E,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC"}
@@ -1,17 +0,0 @@
1
- import * as React from "react";
2
- import { hasHover as hasHoverLib } from "@vkontakte/vkjs";
3
- import { AdaptivityContext } from "../components/AdaptivityProvider/AdaptivityContext";
4
- import { useIsClient } from "./useIsClient";
5
- export function useAdaptivityHasHover() {
6
- var deferDetect = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
7
- var _React_useContext = React.useContext(AdaptivityContext), hasHoverContext = _React_useContext.hasHover;
8
- var hasHover = hasHoverContext === undefined ? hasHoverLib : hasHoverContext;
9
- var needTwoPassRendering = deferDetect || hasHoverContext === undefined;
10
- var isClient = useIsClient(!needTwoPassRendering);
11
- if (!isClient || hasHoverContext !== undefined) {
12
- return hasHoverContext;
13
- }
14
- return hasHover;
15
- }
16
-
17
- //# sourceMappingURL=useAdaptivityHasHover.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/hooks/useAdaptivityHasHover.ts"],"sourcesContent":["import * as React from 'react';\nimport { hasHover as hasHoverLib } from '@vkontakte/vkjs';\nimport { AdaptivityContext } from '../components/AdaptivityProvider/AdaptivityContext';\nimport { useIsClient } from './useIsClient';\n\n/**\n * Определение происходит с помощью `window.matchMedia`. Для того, чтобы не было ошибок при гидратации, по умолчанию\n * откладываем определение на второй рендер.\n *\n * [No SSR] Если передать `false`, то определение будет сразу.\n */\nexport function useAdaptivityHasHover(deferDetect?: true): undefined | boolean;\nexport function useAdaptivityHasHover(deferDetect?: false): boolean;\nexport function useAdaptivityHasHover(deferDetect = true): undefined | boolean {\n const { hasHover: hasHoverContext } = React.useContext(AdaptivityContext);\n const hasHover = hasHoverContext === undefined ? hasHoverLib : hasHoverContext;\n\n const needTwoPassRendering = deferDetect || hasHoverContext === undefined;\n\n const isClient = useIsClient(!needTwoPassRendering);\n if (!isClient || hasHoverContext !== undefined) {\n return hasHoverContext;\n }\n\n return hasHover;\n}\n"],"names":["React","hasHover","hasHoverLib","AdaptivityContext","useIsClient","useAdaptivityHasHover","deferDetect","useContext","hasHoverContext","undefined","needTwoPassRendering","isClient"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,YAAYC,WAAW,QAAQ,kBAAkB;AAC1D,SAASC,iBAAiB,QAAQ,qDAAqD;AACvF,SAASC,WAAW,QAAQ,gBAAgB;AAU5C,OAAO,SAASC;QAAsBC,cAAAA,iEAAc;IAClD,IAAsCN,oBAAAA,MAAMO,UAAU,CAACJ,oBAA/CF,AAAUO,kBAAoBR,kBAA9BC;IACR,IAAMA,WAAWO,oBAAoBC,YAAYP,cAAcM;IAE/D,IAAME,uBAAuBJ,eAAeE,oBAAoBC;IAEhE,IAAME,WAAWP,YAAY,CAACM;IAC9B,IAAI,CAACC,YAAYH,oBAAoBC,WAAW;QAC9C,OAAOD;IACT;IAEA,OAAOP;AACT"}
@@ -1,26 +0,0 @@
1
- import * as React from 'react';
2
- import { hasHover as hasHoverLib } from '@vkontakte/vkjs';
3
- import { AdaptivityContext } from '../components/AdaptivityProvider/AdaptivityContext';
4
- import { useIsClient } from './useIsClient';
5
-
6
- /**
7
- * Определение происходит с помощью `window.matchMedia`. Для того, чтобы не было ошибок при гидратации, по умолчанию
8
- * откладываем определение на второй рендер.
9
- *
10
- * [No SSR] Если передать `false`, то определение будет сразу.
11
- */
12
- export function useAdaptivityHasHover(deferDetect?: true): undefined | boolean;
13
- export function useAdaptivityHasHover(deferDetect?: false): boolean;
14
- export function useAdaptivityHasHover(deferDetect = true): undefined | boolean {
15
- const { hasHover: hasHoverContext } = React.useContext(AdaptivityContext);
16
- const hasHover = hasHoverContext === undefined ? hasHoverLib : hasHoverContext;
17
-
18
- const needTwoPassRendering = deferDetect || hasHoverContext === undefined;
19
-
20
- const isClient = useIsClient(!needTwoPassRendering);
21
- if (!isClient || hasHoverContext !== undefined) {
22
- return hasHoverContext;
23
- }
24
-
25
- return hasHover;
26
- }