@snack-uikit/utils
Advanced tools
Comparing version 3.5.1-preview-20b0f520.0 to 3.5.1-preview-379c4ff3.0
import { ReactNode } from 'react'; | ||
type UseThemePropsWithDefaultTheme = { | ||
/** | ||
* Объект с указанием соответсвия темы и css-класса | ||
*/ | ||
themeMap: Record<string, string>; | ||
/** | ||
* Значение темы по умолчанию | ||
*/ | ||
defaultTheme: string; | ||
}; | ||
type UseThemeProps = { | ||
/** | ||
* Объект с указанием соответсвия темы и css-класса | ||
*/ | ||
themeMap: Record<string, string>; | ||
}; | ||
export type ThemeProviderProps = { | ||
/** | ||
* Дети, которые будут обёрнуты в провайдер | ||
*/ | ||
children: ReactNode; | ||
} & (UseThemePropsWithDefaultTheme | UseThemeProps); | ||
/** | ||
* Провайдер, предназначенный для работы с темами | ||
*/ | ||
export declare function ThemeProvider({ children, ...props }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element; | ||
export {}; |
@@ -18,2 +18,5 @@ "use strict"; | ||
const contexts_1 = require("./contexts"); | ||
/** | ||
* Провайдер, предназначенный для работы с темами | ||
*/ | ||
function ThemeProvider(_a) { | ||
@@ -20,0 +23,0 @@ var { |
export * from './useDebounce'; | ||
export * from './useEventHandler'; | ||
export * from './useIsomorphicLayoutEffect'; | ||
export * from './useSwipe'; | ||
export * from './useSwipeable'; | ||
export * from './useThemeConfig'; | ||
export * from './useValueControl'; |
@@ -28,4 +28,4 @@ "use strict"; | ||
__exportStar(require("./useIsomorphicLayoutEffect"), exports); | ||
__exportStar(require("./useSwipe"), exports); | ||
__exportStar(require("./useSwipeable"), exports); | ||
__exportStar(require("./useThemeConfig"), exports); | ||
__exportStar(require("./useValueControl"), exports); |
@@ -0,1 +1,6 @@ | ||
/** | ||
* Хук задерживает выполнение функции или обновление значения до тех пор, | ||
* пока не пройдет определенный период времени без новых вызовов. | ||
* @function React hook | ||
*/ | ||
export declare function useDebounce(callback: () => void, timeout?: number): () => void; |
@@ -10,2 +10,7 @@ "use strict"; | ||
const useEventHandler_1 = require("./useEventHandler"); | ||
/** | ||
* Хук задерживает выполнение функции или обновление значения до тех пор, | ||
* пока не пройдет определенный период времени без новых вызовов. | ||
* @function React hook | ||
*/ | ||
function useDebounce(callback) { | ||
@@ -12,0 +17,0 @@ let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; |
@@ -0,1 +1,6 @@ | ||
/** | ||
* Хук для создания обработчика событий с неизменной функцией. | ||
* @function React hook | ||
* @param handler коллбек события, без параметров | ||
*/ | ||
export declare function useEventHandler<T extends (...args: never[]) => unknown>(handler: T): T; |
@@ -9,2 +9,7 @@ "use strict"; | ||
const useIsomorphicLayoutEffect_1 = require("./useIsomorphicLayoutEffect"); | ||
/** | ||
* Хук для создания обработчика событий с неизменной функцией. | ||
* @function React hook | ||
* @param handler коллбек события, без параметров | ||
*/ | ||
function useEventHandler(handler) { | ||
@@ -11,0 +16,0 @@ const handlerRef = (0, react_1.useRef)(null); |
import { useLayoutEffect as useLayoutEffectInternal } from 'react'; | ||
/** | ||
* Хук используется вместо стандартного useLayoutEffect-а, | ||
* нужен для корректной работы SSR | ||
* @function React hook | ||
*/ | ||
export declare const useLayoutEffect: typeof useLayoutEffectInternal; |
@@ -10,2 +10,7 @@ "use strict"; | ||
const utils_1 = require("../utils"); | ||
/** | ||
* Хук используется вместо стандартного useLayoutEffect-а, | ||
* нужен для корректной работы SSR | ||
* @function React hook | ||
*/ | ||
exports.useLayoutEffect = (0, utils_1.isBrowser)() ? react_1.useLayoutEffect : react_1.useEffect; |
@@ -6,4 +6,10 @@ type UseThemePropsWithDefaultTheme<T extends string> = { | ||
type UseThemeProps<T extends string> = { | ||
/** | ||
* Объект с указанием соответсвия темы и css-класса | ||
*/ | ||
themeMap: Record<T, string>; | ||
}; | ||
/** | ||
* Хук для работы с темами | ||
*/ | ||
export declare function useThemeConfig<T extends string>(props: UseThemeProps<T>): { | ||
@@ -10,0 +16,0 @@ theme: T | undefined; |
type UseValueControl<TValue> = { | ||
/** | ||
* Значение состояния | ||
*/ | ||
value?: TValue; | ||
/** | ||
* Значение по умолчанию | ||
*/ | ||
defaultValue?: TValue; | ||
/** | ||
* Колбек, вызываемый на смену состояния | ||
*/ | ||
onChange?(value: TValue): void; | ||
defaultValue?: TValue; | ||
}; | ||
/** | ||
* Хук для работы с состоянием. | ||
* Нужен для поддержки controlled/uncontrolled поведения, в зависимости от того были ли переданы входные аргументы | ||
*/ | ||
export declare function useValueControl<TValue>({ value, onChange, defaultValue }: UseValueControl<TValue>): readonly [TValue | undefined, (value: any, ...args: any[]) => ReturnType<import("uncontrollable").Handler> | void]; | ||
export {}; |
@@ -8,2 +8,6 @@ "use strict"; | ||
const uncontrollable_1 = require("uncontrollable"); | ||
/** | ||
* Хук для работы с состоянием. | ||
* Нужен для поддержки controlled/uncontrolled поведения, в зависимости от того были ли переданы входные аргументы | ||
*/ | ||
function useValueControl(_ref) { | ||
@@ -10,0 +14,0 @@ let { |
export * from './hooks'; | ||
export * from './components'; | ||
export * from './utils'; | ||
export * from './components'; | ||
export * from './types'; |
@@ -26,4 +26,4 @@ "use strict"; | ||
__exportStar(require("./hooks"), exports); | ||
__exportStar(require("./components"), exports); | ||
__exportStar(require("./utils"), exports); | ||
__exportStar(require("./components"), exports); | ||
__exportStar(require("./types"), exports); |
@@ -0,1 +1,5 @@ | ||
/** | ||
* Utility-тип, преобразующий константные значения объекта в union | ||
* @function type | ||
*/ | ||
export type ValueOf<T> = T[keyof T]; |
@@ -5,4 +5,16 @@ import { AriaAttributes } from 'react'; | ||
} & AriaAttributes & T; | ||
/** | ||
* Функция для исключения вспомогательных свойств (data-test-id & aria-*) | ||
* @function helper | ||
*/ | ||
export declare function excludeSupportProps<T extends Record<string, unknown>>(props: T): {}; | ||
/** | ||
* Функция для отбора свойства data-test-id | ||
* @function helper | ||
*/ | ||
export declare function extractDataTestProps<T extends Record<string, unknown>>(props: T): Record<string, unknown>; | ||
/** | ||
* Функция для отбора вспомогательных свойств (data-test-id & aria-*) | ||
* @function helper | ||
*/ | ||
export declare function extractSupportProps<T extends Record<string, unknown>>(props: T): Record<string, unknown>; |
@@ -22,10 +22,22 @@ "use strict"; | ||
} | ||
/** | ||
* Функция для исключения вспомогательных свойств (data-test-id & aria-*) | ||
* @function helper | ||
*/ | ||
function excludeSupportProps(props) { | ||
return excludeProps(props, DATA_AND_ARIA_REGEXP); | ||
} | ||
/** | ||
* Функция для отбора свойства data-test-id | ||
* @function helper | ||
*/ | ||
function extractDataTestProps(props) { | ||
return extractProps(props, DATA_TEST_REGEXP); | ||
} | ||
/** | ||
* Функция для отбора вспомогательных свойств (data-test-id & aria-*) | ||
* @function helper | ||
*/ | ||
function extractSupportProps(props) { | ||
return extractProps(props, DATA_AND_ARIA_REGEXP); | ||
} |
@@ -0,1 +1,6 @@ | ||
/** | ||
* Функция проверки текущей среды выполнения кода, | ||
* нужна для корректной работы SSR | ||
* @function helper | ||
*/ | ||
export declare function isBrowser(): boolean; |
@@ -7,2 +7,7 @@ "use strict"; | ||
exports.isBrowser = isBrowser; | ||
/** | ||
* Функция проверки текущей среды выполнения кода, | ||
* нужна для корректной работы SSR | ||
* @function helper | ||
*/ | ||
function isBrowser() { | ||
@@ -9,0 +14,0 @@ // eslint-disable-next-line @cloud-ru/ssr-safe-react/domApi |
import { ReactNode } from 'react'; | ||
type UseThemePropsWithDefaultTheme = { | ||
/** | ||
* Объект с указанием соответсвия темы и css-класса | ||
*/ | ||
themeMap: Record<string, string>; | ||
/** | ||
* Значение темы по умолчанию | ||
*/ | ||
defaultTheme: string; | ||
}; | ||
type UseThemeProps = { | ||
/** | ||
* Объект с указанием соответсвия темы и css-класса | ||
*/ | ||
themeMap: Record<string, string>; | ||
}; | ||
export type ThemeProviderProps = { | ||
/** | ||
* Дети, которые будут обёрнуты в провайдер | ||
*/ | ||
children: ReactNode; | ||
} & (UseThemePropsWithDefaultTheme | UseThemeProps); | ||
/** | ||
* Провайдер, предназначенный для работы с темами | ||
*/ | ||
export declare function ThemeProvider({ children, ...props }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element; | ||
export {}; |
@@ -15,2 +15,5 @@ var __rest = (this && this.__rest) || function (s, e) { | ||
import { ThemeContext } from './contexts'; | ||
/** | ||
* Провайдер, предназначенный для работы с темами | ||
*/ | ||
export function ThemeProvider(_a) { | ||
@@ -17,0 +20,0 @@ var { children } = _a, props = __rest(_a, ["children"]); |
export * from './useDebounce'; | ||
export * from './useEventHandler'; | ||
export * from './useIsomorphicLayoutEffect'; | ||
export * from './useSwipe'; | ||
export * from './useSwipeable'; | ||
export * from './useThemeConfig'; | ||
export * from './useValueControl'; |
export * from './useDebounce'; | ||
export * from './useEventHandler'; | ||
export * from './useIsomorphicLayoutEffect'; | ||
export * from './useSwipe'; | ||
export * from './useSwipeable'; | ||
export * from './useThemeConfig'; | ||
export * from './useValueControl'; |
@@ -0,1 +1,6 @@ | ||
/** | ||
* Хук задерживает выполнение функции или обновление значения до тех пор, | ||
* пока не пройдет определенный период времени без новых вызовов. | ||
* @function React hook | ||
*/ | ||
export declare function useDebounce(callback: () => void, timeout?: number): () => void; |
import { useRef } from 'react'; | ||
import { isBrowser } from '../utils'; | ||
import { useEventHandler } from './useEventHandler'; | ||
/** | ||
* Хук задерживает выполнение функции или обновление значения до тех пор, | ||
* пока не пройдет определенный период времени без новых вызовов. | ||
* @function React hook | ||
*/ | ||
export function useDebounce(callback, timeout = 0) { | ||
@@ -5,0 +10,0 @@ const timeStampRef = useRef(0); |
@@ -0,1 +1,6 @@ | ||
/** | ||
* Хук для создания обработчика событий с неизменной функцией. | ||
* @function React hook | ||
* @param handler коллбек события, без параметров | ||
*/ | ||
export declare function useEventHandler<T extends (...args: never[]) => unknown>(handler: T): T; |
import { useCallback, useRef } from 'react'; | ||
import { useLayoutEffect } from './useIsomorphicLayoutEffect'; | ||
/** | ||
* Хук для создания обработчика событий с неизменной функцией. | ||
* @function React hook | ||
* @param handler коллбек события, без параметров | ||
*/ | ||
export function useEventHandler(handler) { | ||
@@ -4,0 +9,0 @@ const handlerRef = useRef(null); |
import { useLayoutEffect as useLayoutEffectInternal } from 'react'; | ||
/** | ||
* Хук используется вместо стандартного useLayoutEffect-а, | ||
* нужен для корректной работы SSR | ||
* @function React hook | ||
*/ | ||
export declare const useLayoutEffect: typeof useLayoutEffectInternal; |
// eslint-disable-next-line no-restricted-imports | ||
import { useEffect, useLayoutEffect as useLayoutEffectInternal } from 'react'; | ||
import { isBrowser } from '../utils'; | ||
/** | ||
* Хук используется вместо стандартного useLayoutEffect-а, | ||
* нужен для корректной работы SSR | ||
* @function React hook | ||
*/ | ||
export const useLayoutEffect = isBrowser() ? useLayoutEffectInternal : useEffect; |
@@ -6,4 +6,10 @@ type UseThemePropsWithDefaultTheme<T extends string> = { | ||
type UseThemeProps<T extends string> = { | ||
/** | ||
* Объект с указанием соответсвия темы и css-класса | ||
*/ | ||
themeMap: Record<T, string>; | ||
}; | ||
/** | ||
* Хук для работы с темами | ||
*/ | ||
export declare function useThemeConfig<T extends string>(props: UseThemeProps<T>): { | ||
@@ -10,0 +16,0 @@ theme: T | undefined; |
type UseValueControl<TValue> = { | ||
/** | ||
* Значение состояния | ||
*/ | ||
value?: TValue; | ||
/** | ||
* Значение по умолчанию | ||
*/ | ||
defaultValue?: TValue; | ||
/** | ||
* Колбек, вызываемый на смену состояния | ||
*/ | ||
onChange?(value: TValue): void; | ||
defaultValue?: TValue; | ||
}; | ||
/** | ||
* Хук для работы с состоянием. | ||
* Нужен для поддержки controlled/uncontrolled поведения, в зависимости от того были ли переданы входные аргументы | ||
*/ | ||
export declare function useValueControl<TValue>({ value, onChange, defaultValue }: UseValueControl<TValue>): readonly [TValue | undefined, (value: any, ...args: any[]) => ReturnType<import("uncontrollable").Handler> | void]; | ||
export {}; |
import { useUncontrolledProp } from 'uncontrollable'; | ||
/** | ||
* Хук для работы с состоянием. | ||
* Нужен для поддержки controlled/uncontrolled поведения, в зависимости от того были ли переданы входные аргументы | ||
*/ | ||
export function useValueControl({ value, onChange, defaultValue }) { | ||
@@ -3,0 +7,0 @@ return useUncontrolledProp(value, defaultValue, (newValue) => { |
export * from './hooks'; | ||
export * from './components'; | ||
export * from './utils'; | ||
export * from './components'; | ||
export * from './types'; |
export * from './hooks'; | ||
export * from './components'; | ||
export * from './utils'; | ||
export * from './components'; | ||
export * from './types'; |
@@ -0,1 +1,5 @@ | ||
/** | ||
* Utility-тип, преобразующий константные значения объекта в union | ||
* @function type | ||
*/ | ||
export type ValueOf<T> = T[keyof T]; |
@@ -5,4 +5,16 @@ import { AriaAttributes } from 'react'; | ||
} & AriaAttributes & T; | ||
/** | ||
* Функция для исключения вспомогательных свойств (data-test-id & aria-*) | ||
* @function helper | ||
*/ | ||
export declare function excludeSupportProps<T extends Record<string, unknown>>(props: T): {}; | ||
/** | ||
* Функция для отбора свойства data-test-id | ||
* @function helper | ||
*/ | ||
export declare function extractDataTestProps<T extends Record<string, unknown>>(props: T): Record<string, unknown>; | ||
/** | ||
* Функция для отбора вспомогательных свойств (data-test-id & aria-*) | ||
* @function helper | ||
*/ | ||
export declare function extractSupportProps<T extends Record<string, unknown>>(props: T): Record<string, unknown>; |
@@ -15,10 +15,22 @@ const DATA_TEST_REGEXP = /^data-test-/; | ||
} | ||
/** | ||
* Функция для исключения вспомогательных свойств (data-test-id & aria-*) | ||
* @function helper | ||
*/ | ||
export function excludeSupportProps(props) { | ||
return excludeProps(props, DATA_AND_ARIA_REGEXP); | ||
} | ||
/** | ||
* Функция для отбора свойства data-test-id | ||
* @function helper | ||
*/ | ||
export function extractDataTestProps(props) { | ||
return extractProps(props, DATA_TEST_REGEXP); | ||
} | ||
/** | ||
* Функция для отбора вспомогательных свойств (data-test-id & aria-*) | ||
* @function helper | ||
*/ | ||
export function extractSupportProps(props) { | ||
return extractProps(props, DATA_AND_ARIA_REGEXP); | ||
} |
@@ -0,1 +1,6 @@ | ||
/** | ||
* Функция проверки текущей среды выполнения кода, | ||
* нужна для корректной работы SSR | ||
* @function helper | ||
*/ | ||
export declare function isBrowser(): boolean; |
@@ -0,1 +1,6 @@ | ||
/** | ||
* Функция проверки текущей среды выполнения кода, | ||
* нужна для корректной работы SSR | ||
* @function helper | ||
*/ | ||
export function isBrowser() { | ||
@@ -2,0 +7,0 @@ // eslint-disable-next-line @cloud-ru/ssr-safe-react/domApi |
@@ -7,3 +7,3 @@ { | ||
"title": "Utils", | ||
"version": "3.5.1-preview-20b0f520.0", | ||
"version": "3.5.1-preview-379c4ff3.0", | ||
"sideEffects": [ | ||
@@ -43,3 +43,3 @@ "*.css", | ||
}, | ||
"gitHead": "3d9f58d349ce6413d2242d7a42b8ba624815dcc0" | ||
"gitHead": "e0e768ac8f2e20d41a94b304b67c8541f304786f" | ||
} |
@@ -12,1 +12,86 @@ # Utils | ||
[Changelog](./CHANGELOG.md) | ||
[//]: DOCUMENTATION_SECTION_START | ||
[//]: THIS_SECTION_IS_AUTOGENERATED_PLEASE_DONT_EDIT_IT | ||
## useDebounce | ||
`React hook` | ||
Хук задерживает выполнение функции или обновление значения до тех пор, | ||
пока не пройдет определенный период времени без новых вызовов. | ||
## useEventHandler | ||
`React hook` | ||
Хук для создания обработчика событий с неизменной функцией. | ||
## useLayoutEffect | ||
`React hook` | ||
Хук используется вместо стандартного useLayoutEffect-а, | ||
нужен для корректной работы SSR | ||
## useSwipeable | ||
Хук для работы с событиями свайпа | ||
### Props | ||
| name | type | default value | description | | ||
|------|------|---------------|-------------| | ||
| enabled | `boolean` | true | Включен ли свайп | | ||
| availableDirections | `SwipeDirections[]` | - | Направления, в которых будет работать свайп. Укажите это свойство, чтобы предотвратить конфликты и заблокировать свайп в родительских элементах по этим направлениям. | | ||
| onSwipedDown | `SwipeCallback` | - | Called after a DOWN swipe | | ||
| onSwipedLeft | `SwipeCallback` | - | Called after a LEFT swipe | | ||
| onSwipedRight | `SwipeCallback` | - | Called after a RIGHT swipe | | ||
| onSwipedUp | `SwipeCallback` | - | Called after a UP swipe | | ||
| onSwipeStart | `SwipeCallback` | - | Called at start of a tracked swipe. | | ||
| onSwiped | `SwipeCallback` | - | Called after any swipe. | | ||
| onSwiping | `SwipeCallback` | - | Called for each move event during a tracked swipe. | | ||
| onTap | `TapCallback` | - | Called after a tap. A touch under the min distance, `delta`. | | ||
| onTouchStartOrOnMouseDown | `TapCallback` | - | Called for `touchstart` and `mousedown`. | | ||
| onTouchEndOrOnMouseUp | `TapCallback` | - | Called for `touchend` and `mouseup`. | | ||
| delta | `ConfigurationOptionDelta` | - | Min distance(px) before a swipe starts. **Default**: `10` | | ||
| preventScrollOnSwipe | `boolean` | - | Prevents scroll during swipe in most cases. **Default**: `false` | | ||
| rotationAngle | `number` | - | Set a rotation angle. **Default**: `0` | | ||
| trackMouse | `boolean` | - | Track mouse input. **Default**: `false` | | ||
| trackTouch | `boolean` | - | Track touch input. **Default**: `true` | | ||
| swipeDuration | `number` | - | Allowable duration of a swipe (ms). **Default**: `Infinity` | | ||
| touchEventOptions | `{ passive: boolean; }` | - | Options for touch event listeners | | ||
## useThemeConfig | ||
Хук для работы с темами | ||
### Props | ||
| name | type | default value | description | | ||
|------|------|---------------|-------------| | ||
| themeMap* | `Record<T, string>` | - | Объект с указанием соответсвия темы и css-класса | | ||
## useValueControl | ||
Хук для работы с состоянием. | ||
Нужен для поддержки controlled/uncontrolled поведения, в зависимости от того были ли переданы входные аргументы | ||
### Props | ||
| name | type | default value | description | | ||
|------|------|---------------|-------------| | ||
| value | `TValue` | - | Значение состояния | | ||
| defaultValue | `TValue` | - | Значение по умолчанию | | ||
| onChange | `(value: TValue) => void` | - | Колбек, вызываемый на смену состояния | | ||
## ThemeProvider | ||
Провайдер, предназначенный для работы с темами | ||
### Props | ||
| name | type | default value | description | | ||
|------|------|---------------|-------------| | ||
| defaultTheme* | `string` | - | Значение темы по умолчанию | | ||
| themeMap* | `Record<string, string>` | - | Объект с указанием соответсвия темы и css-класса | | ||
| children* | `ReactNode` | - | Дети, которые будут обёрнуты в провайдер | | ||
## excludeSupportProps | ||
`helper` | ||
Функция для исключения вспомогательных свойств (data-test-id & aria-*) | ||
## extractDataTestProps | ||
`helper` | ||
Функция для отбора свойства data-test-id | ||
## extractSupportProps | ||
`helper` | ||
Функция для отбора вспомогательных свойств (data-test-id & aria-*) | ||
## isBrowser | ||
`helper` | ||
Функция проверки текущей среды выполнения кода, | ||
нужна для корректной работы SSR | ||
[//]: DOCUMENTATION_SECTION_END |
export * from './useDebounce'; | ||
export * from './useEventHandler'; | ||
export * from './useIsomorphicLayoutEffect'; | ||
export * from './useSwipe'; | ||
export * from './useSwipeable'; | ||
export * from './useThemeConfig'; | ||
export * from './useValueControl'; |
@@ -6,2 +6,7 @@ import { useRef } from 'react'; | ||
/** | ||
* Хук задерживает выполнение функции или обновление значения до тех пор, | ||
* пока не пройдет определенный период времени без новых вызовов. | ||
* @function React hook | ||
*/ | ||
export function useDebounce(callback: () => void, timeout = 0) { | ||
@@ -8,0 +13,0 @@ const timeStampRef = useRef<number>(0); |
@@ -5,2 +5,7 @@ import { useCallback, useRef } from 'react'; | ||
/** | ||
* Хук для создания обработчика событий с неизменной функцией. | ||
* @function React hook | ||
* @param handler коллбек события, без параметров | ||
*/ | ||
export function useEventHandler<T extends (...args: never[]) => unknown>(handler: T) { | ||
@@ -7,0 +12,0 @@ const handlerRef = useRef<T | null>(null); |
@@ -6,2 +6,7 @@ // eslint-disable-next-line no-restricted-imports | ||
/** | ||
* Хук используется вместо стандартного useLayoutEffect-а, | ||
* нужен для корректной работы SSR | ||
* @function React hook | ||
*/ | ||
export const useLayoutEffect = isBrowser() ? useLayoutEffectInternal : useEffect; |
import { useUncontrolledProp } from 'uncontrollable'; | ||
type UseValueControl<TValue> = { | ||
/** | ||
* Значение состояния | ||
*/ | ||
value?: TValue; | ||
/** | ||
* Значение по умолчанию | ||
*/ | ||
defaultValue?: TValue; | ||
/** | ||
* Колбек, вызываемый на смену состояния | ||
*/ | ||
onChange?(value: TValue): void; | ||
defaultValue?: TValue; | ||
}; | ||
/** | ||
* Хук для работы с состоянием. | ||
* Нужен для поддержки controlled/uncontrolled поведения, в зависимости от того были ли переданы входные аргументы | ||
*/ | ||
export function useValueControl<TValue>({ value, onChange, defaultValue }: UseValueControl<TValue>) { | ||
@@ -10,0 +23,0 @@ return useUncontrolledProp<TValue>(value, defaultValue, (newValue: TValue) => { |
export * from './hooks'; | ||
export * from './components'; | ||
export * from './utils'; | ||
export * from './components'; | ||
export * from './types'; |
@@ -0,1 +1,5 @@ | ||
/** | ||
* Utility-тип, преобразующий константные значения объекта в union | ||
* @function type | ||
*/ | ||
export type ValueOf<T> = T[keyof T]; |
@@ -19,7 +19,10 @@ import { AriaAttributes } from 'react'; | ||
function extractProps<T extends Record<string, unknown>>(props: T, regex: RegExp) { | ||
return Object.keys(props).reduce((nextProps, prop) => { | ||
if (prop.match(regex)) nextProps[prop] = props[prop]; | ||
return Object.keys(props).reduce( | ||
(nextProps, prop) => { | ||
if (prop.match(regex)) nextProps[prop] = props[prop]; | ||
return nextProps; | ||
}, {} as Record<string, unknown>); | ||
return nextProps; | ||
}, | ||
{} as Record<string, unknown>, | ||
); | ||
} | ||
@@ -32,2 +35,6 @@ | ||
/** | ||
* Функция для исключения вспомогательных свойств (data-test-id & aria-*) | ||
* @function helper | ||
*/ | ||
export function excludeSupportProps<T extends Record<string, unknown>>(props: T) { | ||
@@ -37,2 +44,6 @@ return excludeProps(props, DATA_AND_ARIA_REGEXP); | ||
/** | ||
* Функция для отбора свойства data-test-id | ||
* @function helper | ||
*/ | ||
export function extractDataTestProps<T extends Record<string, unknown>>(props: T) { | ||
@@ -42,4 +53,8 @@ return extractProps(props, DATA_TEST_REGEXP); | ||
/** | ||
* Функция для отбора вспомогательных свойств (data-test-id & aria-*) | ||
* @function helper | ||
*/ | ||
export function extractSupportProps<T extends Record<string, unknown>>(props: T) { | ||
return extractProps(props, DATA_AND_ARIA_REGEXP); | ||
} |
@@ -0,1 +1,6 @@ | ||
/** | ||
* Функция проверки текущей среды выполнения кода, | ||
* нужна для корректной работы SSR | ||
* @function helper | ||
*/ | ||
export function isBrowser() { | ||
@@ -2,0 +7,0 @@ // eslint-disable-next-line @cloud-ru/ssr-safe-react/domApi |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
71774
1254
96