@consta/uikit 4.26.1 → 4.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LoaderCanary/index.d.ts +1 -0
- package/LoaderCanary/index.js +1 -0
- package/__internal__/src/components/Badge/Badge.css +1 -1
- package/__internal__/src/components/Badge/Badge.d.ts +1 -1
- package/__internal__/src/components/Badge/Badge.js +1 -1
- package/__internal__/src/components/Badge/Badge.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.d.ts +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/helpers.d.ts +3 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/DatePickerFieldTypeDateTimeRange.d.ts +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/DatePickerFieldTypeDateTimeRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/DatePickerFieldTypeDateTimeRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/helpers.d.ts +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/DatePickerFieldTypeMonthRange.d.ts +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/DatePickerFieldTypeMonthRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/DatePickerFieldTypeMonthRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/helpers.d.ts +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange.d.ts +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/helpers.d.ts +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/types.d.ts +3 -0
- package/__internal__/src/components/DatePicker/types.js.map +1 -1
- package/__internal__/src/components/DatePicker/useCalendarVisible.d.ts +13 -0
- package/__internal__/src/components/DatePicker/useCalendarVisible.js +2 -0
- package/__internal__/src/components/DatePicker/useCalendarVisible.js.map +1 -0
- package/__internal__/src/components/LoaderCanary/Loader.css +3 -0
- package/__internal__/src/components/LoaderCanary/LoaderCanary.d.ts +10 -0
- package/__internal__/src/components/LoaderCanary/LoaderCanary.js +2 -0
- package/__internal__/src/components/LoaderCanary/LoaderCanary.js.map +1 -0
- package/__internal__/src/components/LoaderCanary/index.d.ts +1 -0
- package/__internal__/src/components/LoaderCanary/index.js +2 -0
- package/__internal__/src/components/LoaderCanary/index.js.map +1 -0
- package/__internal__/src/components/LoaderCanary/types.d.ts +10 -0
- package/__internal__/src/components/LoaderCanary/types.js +2 -0
- package/__internal__/src/components/LoaderCanary/types.js.map +1 -0
- package/__internal__/src/components/ProgressStepBar/ProgressStepBar.js +1 -1
- package/__internal__/src/components/ProgressStepBar/ProgressStepBar.js.map +1 -1
- package/__internal__/src/components/ProgressStepBar/helpers.js +1 -1
- package/__internal__/src/components/ProgressStepBar/helpers.js.map +1 -1
- package/__internal__/src/components/Slider/Slider.js +1 -1
- package/__internal__/src/components/Slider/Slider.js.map +1 -1
- package/__internal__/src/components/Slider/SliderPoint/SliderPoint.js +1 -1
- package/__internal__/src/components/Slider/SliderPoint/SliderPoint.js.map +1 -1
- package/__internal__/src/components/Slider/helper.d.ts +5 -0
- package/__internal__/src/components/Slider/helper.js.map +1 -1
- package/__internal__/src/hooks/useKeysRef/index.d.ts +1 -0
- package/__internal__/src/hooks/useKeysRef/index.js +2 -0
- package/__internal__/src/hooks/useKeysRef/index.js.map +1 -0
- package/__internal__/src/hooks/useKeysRef/useKeysRef.d.ts +13 -0
- package/__internal__/src/hooks/useKeysRef/useKeysRef.js +2 -0
- package/__internal__/src/hooks/useKeysRef/useKeysRef.js.map +1 -0
- package/package.json +1 -1
- package/useKeysRef/index.d.ts +1 -0
- package/useKeysRef/index.js +1 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import{cn}from"../../utils/bem";export var propSize=["s","xs","m"];export var propSizeDefault=propSize[0];export var propDirection=["horizontal","vertical"];export var propDirectionDefault=propDirection[0];export var propStatus=["normal","success","warning","alert"];export var propStatusDefault=propStatus[0];export var pointNumbersMap=[0,1,2,3,4,5,6,7,8,9];export var propPosition=["center","start","end"];export var propPositionDefault=propPosition[0];export var cnProgressStepBar=cn("ProgressStepBar");export var defaultGetItemLabel=function(a){return a.label};export var defaultGetItemTooltipContent=function(a){return a.tooltipContent};export var defaultGetItemPoint=function(a){return a.point};export var defaultGetItemLineStatus=function(a){return a.lineStatus};export var defaultGetItemProgress=function(a){return a.progress};export var defaultGetItemContent=function(a){return a.content};export var defaultGetItemStatus=function(a){return a.status};export var defaultGetItemOnClick=function(a){return a.onClick};export function withDefaultGetters(a){return _objectSpread(_objectSpread({},a),{},{getItemLabel:a.getItemLabel||defaultGetItemLabel,getItemTooltipContent:a.getItemTooltipContent||defaultGetItemTooltipContent,getItemPoint:a.getItemPoint||defaultGetItemPoint,getItemProgress:a.getItemProgress||defaultGetItemProgress,getItemContent:a.getItemContent||defaultGetItemContent,getItemStatus:a.getItemStatus||defaultGetItemStatus,getItemLineStatus:a.getItemLineStatus||defaultGetItemLineStatus,getItemOnClick:a.getItemOnClick||defaultGetItemOnClick})}export var getItemPosition=function(a,b){var c="center";return a===b-1&&(c="end"),0===a&&(c="start"),c};export var getLineSize=function(a,b,c){var d=0;if(a&&a.current&&b&&b.current){var e=a.current.getBoundingClientRect(),f=b.current.getBoundingClientRect();d="vertical"===c?f.y-e.y+f.height:f.x-e.x}return d};var getRefSize=function(a){if(a.current){var b=a.current.getBoundingClientRect(),c=b.width,d=b.height;return[c,d]}return[0,0]};export var calculateLines=function(a,b){var c=[];
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import{cn}from"../../utils/bem";export var propSize=["s","xs","m"];export var propSizeDefault=propSize[0];export var propDirection=["horizontal","vertical"];export var propDirectionDefault=propDirection[0];export var propStatus=["normal","success","warning","alert"];export var propStatusDefault=propStatus[0];export var pointNumbersMap=[0,1,2,3,4,5,6,7,8,9];export var propPosition=["center","start","end"];export var propPositionDefault=propPosition[0];export var cnProgressStepBar=cn("ProgressStepBar");export var defaultGetItemLabel=function(a){return a.label};export var defaultGetItemTooltipContent=function(a){return a.tooltipContent};export var defaultGetItemPoint=function(a){return a.point};export var defaultGetItemLineStatus=function(a){return a.lineStatus};export var defaultGetItemProgress=function(a){return a.progress};export var defaultGetItemContent=function(a){return a.content};export var defaultGetItemStatus=function(a){return a.status};export var defaultGetItemOnClick=function(a){return a.onClick};export function withDefaultGetters(a){return _objectSpread(_objectSpread({},a),{},{getItemLabel:a.getItemLabel||defaultGetItemLabel,getItemTooltipContent:a.getItemTooltipContent||defaultGetItemTooltipContent,getItemPoint:a.getItemPoint||defaultGetItemPoint,getItemProgress:a.getItemProgress||defaultGetItemProgress,getItemContent:a.getItemContent||defaultGetItemContent,getItemStatus:a.getItemStatus||defaultGetItemStatus,getItemLineStatus:a.getItemLineStatus||defaultGetItemLineStatus,getItemOnClick:a.getItemOnClick||defaultGetItemOnClick})}export var getItemPosition=function(a,b){var c="center";return a===b-1&&(c="end"),0===a&&(c="start"),c};export var getLineSize=function(a,b,c){var d=0;if(a&&a.current&&b&&b.current){var e=a.current.getBoundingClientRect(),f=b.current.getBoundingClientRect();d="vertical"===c?f.y-e.y+f.height:f.x-e.x}return d};var getRefSize=function(a){if(a.current){var b=a.current.getBoundingClientRect(),c=b.width,d=b.height;return[c,d]}return[0,0]};export var calculateLines=function(a,b){for(var c=[],d=0;d<a.length-1;d++){var e=a[d],f=getRefSize(e),g=getRefSize(a[d+1]),h=0;h=0==d?"horizontal"===b?f[0]+g[0]/2:f[1]:d===a.length-2?"horizontal"===b?f[0]/2+g[0]:f[1]+2:"horizontal"===b?f[0]/2+g[0]/2:f[1],c.push(h)}return c};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["cn","propSize","propSizeDefault","propDirection","propDirectionDefault","propStatus","propStatusDefault","pointNumbersMap","propPosition","propPositionDefault","cnProgressStepBar","defaultGetItemLabel","item","label","defaultGetItemTooltipContent","tooltipContent","defaultGetItemPoint","point","defaultGetItemLineStatus","lineStatus","defaultGetItemProgress","progress","defaultGetItemContent","content","defaultGetItemStatus","status","defaultGetItemOnClick","onClick","withDefaultGetters","props","getItemLabel","getItemTooltipContent","getItemPoint","getItemProgress","getItemContent","getItemStatus","getItemLineStatus","getItemOnClick","getItemPosition","index","lendth","position","getLineSize","container","activeElement","direction","size","current","containerPosition","getBoundingClientRect","activeElementPosition","y","height","x","getRefSize","ref","width","calculateLines","refs","sizes","forEach","length","firstSize","secondSize","push"],"sources":["../../../../../src/components/ProgressStepBar/helpers.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { cn } from '../../utils/bem';\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\n\nexport const propSize = ['s', 'xs', 'm'] as const;\nexport type PropSize = typeof propSize[number];\nexport const propSizeDefault = propSize[0];\n\nexport const propDirection = ['horizontal', 'vertical'] as const;\nexport type PropDirection = typeof propDirection[number];\nexport const propDirectionDefault = propDirection[0];\n\nexport const propStatus = ['normal', 'success', 'warning', 'alert'] as const;\nexport type PropStatus = typeof propStatus[number];\nexport const propStatusDefault = propStatus[0];\n\nexport const pointNumbersMap = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] as const;\nexport type PointNumbersMap = typeof pointNumbersMap[number];\n\nexport const propPosition = ['center', 'start', 'end'] as const;\nexport type PropPosition = typeof propPosition[number];\nexport const propPositionDefault: PropPosition = propPosition[0];\n\nexport type PropGetItemLabel<ITEM> = (item: ITEM) => string | undefined;\nexport type PropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type PropGetItemTooltipContent<ITEM> = (\n item: ITEM,\n) => string | undefined;\nexport type PropGetItemLineStatus<ITEM> = (\n item: ITEM,\n) => PropStatus | undefined;\nexport type PropGetItemPoint<ITEM> = (\n item: ITEM,\n) => PointNumbersMap | IconComponent | undefined;\nexport type PropGetItemProgress<ITEM> = (item: ITEM) => boolean | undefined;\nexport type PropGetItemContent<ITEM> = (\n item: ITEM,\n) => React.ReactNode | undefined;\nexport type PropGetItemStatus<ITEM> = (item: ITEM) => PropStatus | undefined;\nexport type PropGetItemOnClick<ITEM> = (\n item: ITEM,\n) => React.EventHandler<React.MouseEvent> | undefined;\n\nexport type DefaultItem = {\n label?: string;\n tooltipContent?: string;\n lineStatus?: PropStatus;\n point?: PointNumbersMap | IconComponent;\n status?: PropStatus;\n progress?: boolean;\n content?: React.ReactNode;\n onClick?: React.EventHandler<React.MouseEvent>;\n};\n\nexport type Line = {\n status: PropStatus;\n size: number;\n};\n\nexport type ProgressStepBarProps<ITEM = DefaultItem> =\n PropsWithHTMLAttributesAndRef<\n {\n steps: ITEM[];\n direction?: PropDirection;\n size?: PropSize;\n activeStepIndex?: number;\n onItemClick?: (props: {\n e: React.MouseEvent;\n item: ITEM;\n index: number;\n }) => void;\n getItemLabel?: PropGetItemLabel<ITEM>;\n getItemLineStatus?: PropGetItemLineStatus<ITEM>;\n getItemTooltipContent?: PropGetItemTooltipContent<ITEM>;\n getItemPoint?: PropGetItemPoint<ITEM>;\n getItemProgress?: PropGetItemProgress<ITEM>;\n getItemContent?: PropGetItemContent<ITEM>;\n getItemStatus?: PropGetItemStatus<ITEM>;\n getItemOnClick?: PropGetItemOnClick<ITEM>;\n },\n HTMLDivElement\n > &\n (ITEM extends { label: DefaultItem['label'] }\n ? {}\n : { getItemLabel: PropGetItemLabel<ITEM> });\n\nexport type ProgressStepBarItemProps = {\n content?: React.ReactNode;\n label?: string;\n point?: PointNumbersMap | IconComponent;\n progress?: boolean;\n status?: PropStatus | 'system';\n tooltipContent?: string;\n tooltipZIndex?: number;\n position?: PropPosition;\n direction: PropDirection;\n size: PropSize;\n onClick?: (e: React.MouseEvent) => void;\n pointRef?: React.RefObject<HTMLButtonElement>;\n className?: string;\n};\n\nexport const cnProgressStepBar = cn('ProgressStepBar');\n\nexport const defaultGetItemLabel: PropGetItemLabel<DefaultItem> = (item) =>\n item.label;\nexport const defaultGetItemTooltipContent: PropGetItemTooltipContent<\n DefaultItem\n> = (item) => item.tooltipContent;\nexport const defaultGetItemPoint: PropGetItemPoint<DefaultItem> = (item) =>\n item.point;\nexport const defaultGetItemLineStatus: PropGetItemLineStatus<DefaultItem> = (\n item,\n) => item.lineStatus;\nexport const defaultGetItemProgress: PropGetItemProgress<DefaultItem> = (\n item,\n) => item.progress;\nexport const defaultGetItemContent: PropGetItemContent<DefaultItem> = (item) =>\n item.content;\nexport const defaultGetItemStatus: PropGetItemStatus<DefaultItem> = (item) =>\n item.status;\nexport const defaultGetItemOnClick: PropGetItemOnClick<DefaultItem> = (item) =>\n item.onClick;\n\nexport type ProgressStepBarComponent = <ITEM = DefaultItem>(\n props: ProgressStepBarProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type ProgressStepBarItemComponent = (\n props: PropsWithHTMLAttributesAndRef<\n ProgressStepBarItemProps,\n HTMLDivElement\n >,\n) => React.ReactElement | null;\n\nexport function withDefaultGetters<ITEM>(props: ProgressStepBarProps<ITEM>) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemTooltipContent:\n props.getItemTooltipContent || defaultGetItemTooltipContent,\n getItemPoint: props.getItemPoint || defaultGetItemPoint,\n getItemProgress: props.getItemProgress || defaultGetItemProgress,\n getItemContent: props.getItemContent || defaultGetItemContent,\n getItemStatus: props.getItemStatus || defaultGetItemStatus,\n getItemLineStatus: props.getItemLineStatus || defaultGetItemLineStatus,\n getItemOnClick: props.getItemOnClick || defaultGetItemOnClick,\n };\n}\n\nexport const getItemPosition = (index: number, lendth: number) => {\n let position: PropPosition = 'center';\n if (index === lendth - 1) position = 'end';\n if (index === 0) position = 'start';\n\n return position;\n};\n\nexport const getLineSize: (\n container: React.RefObject<HTMLElement>,\n activeElement: React.RefObject<HTMLElement>,\n direction: PropDirection,\n) => number = (container, activeElement, direction) => {\n let size = 0;\n if (\n container &&\n container.current &&\n activeElement &&\n activeElement.current\n ) {\n const containerPosition = container.current.getBoundingClientRect();\n const activeElementPosition = activeElement.current.getBoundingClientRect();\n if (direction === 'vertical')\n size =\n activeElementPosition.y -\n containerPosition.y +\n activeElementPosition.height;\n else size = activeElementPosition.x - containerPosition.x;\n }\n return size;\n};\n\nconst getRefSize = (ref: React.RefObject<HTMLElement>) => {\n if (ref.current) {\n const { width, height } = ref.current.getBoundingClientRect();\n return [width, height];\n }\n return [0, 0];\n};\n\nexport const calculateLines = (\n refs: React.RefObject<HTMLElement>[],\n direction: PropDirection,\n) => {\n const sizes: number[] = [];\n refs.forEach((ref, index) => {\n if (index !== refs.length - 1) {\n const firstSize = getRefSize(ref);\n const secondSize = getRefSize(refs[index + 1]);\n let size = 0;\n if (index === 0) {\n size =\n direction === 'horizontal'\n ? firstSize[0] + secondSize[0] / 2\n : firstSize[1];\n } else if (index === refs.length - 2) {\n size =\n direction === 'horizontal'\n ? firstSize[0] / 2 + secondSize[0]\n : firstSize[1];\n } else {\n size =\n direction === 'horizontal'\n ? firstSize[0] / 2 + secondSize[0] / 2\n : firstSize[1];\n }\n sizes.push(size);\n }\n });\n return sizes;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["cn","propSize","propSizeDefault","propDirection","propDirectionDefault","propStatus","propStatusDefault","pointNumbersMap","propPosition","propPositionDefault","cnProgressStepBar","defaultGetItemLabel","item","label","defaultGetItemTooltipContent","tooltipContent","defaultGetItemPoint","point","defaultGetItemLineStatus","lineStatus","defaultGetItemProgress","progress","defaultGetItemContent","content","defaultGetItemStatus","status","defaultGetItemOnClick","onClick","withDefaultGetters","props","getItemLabel","getItemTooltipContent","getItemPoint","getItemProgress","getItemContent","getItemStatus","getItemLineStatus","getItemOnClick","getItemPosition","index","lendth","position","getLineSize","container","activeElement","direction","size","current","containerPosition","getBoundingClientRect","activeElementPosition","y","height","x","getRefSize","ref","width","calculateLines","refs","sizes","i","length","firstSize","secondSize","push"],"sources":["../../../../../src/components/ProgressStepBar/helpers.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { cn } from '../../utils/bem';\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\n\nexport const propSize = ['s', 'xs', 'm'] as const;\nexport type PropSize = typeof propSize[number];\nexport const propSizeDefault = propSize[0];\n\nexport const propDirection = ['horizontal', 'vertical'] as const;\nexport type PropDirection = typeof propDirection[number];\nexport const propDirectionDefault = propDirection[0];\n\nexport const propStatus = ['normal', 'success', 'warning', 'alert'] as const;\nexport type PropStatus = typeof propStatus[number];\nexport const propStatusDefault = propStatus[0];\n\nexport const pointNumbersMap = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] as const;\nexport type PointNumbersMap = typeof pointNumbersMap[number];\n\nexport const propPosition = ['center', 'start', 'end'] as const;\nexport type PropPosition = typeof propPosition[number];\nexport const propPositionDefault: PropPosition = propPosition[0];\n\nexport type PropGetItemLabel<ITEM> = (item: ITEM) => string | undefined;\nexport type PropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type PropGetItemTooltipContent<ITEM> = (\n item: ITEM,\n) => string | undefined;\nexport type PropGetItemLineStatus<ITEM> = (\n item: ITEM,\n) => PropStatus | undefined;\nexport type PropGetItemPoint<ITEM> = (\n item: ITEM,\n) => PointNumbersMap | IconComponent | undefined;\nexport type PropGetItemProgress<ITEM> = (item: ITEM) => boolean | undefined;\nexport type PropGetItemContent<ITEM> = (\n item: ITEM,\n) => React.ReactNode | undefined;\nexport type PropGetItemStatus<ITEM> = (item: ITEM) => PropStatus | undefined;\nexport type PropGetItemOnClick<ITEM> = (\n item: ITEM,\n) => React.EventHandler<React.MouseEvent> | undefined;\n\nexport type DefaultItem = {\n label?: string;\n tooltipContent?: string;\n lineStatus?: PropStatus;\n point?: PointNumbersMap | IconComponent;\n status?: PropStatus;\n progress?: boolean;\n content?: React.ReactNode;\n onClick?: React.EventHandler<React.MouseEvent>;\n};\n\nexport type Line = {\n status: PropStatus;\n size: number;\n};\n\nexport type ProgressStepBarProps<ITEM = DefaultItem> =\n PropsWithHTMLAttributesAndRef<\n {\n steps: ITEM[];\n direction?: PropDirection;\n size?: PropSize;\n activeStepIndex?: number;\n onItemClick?: (props: {\n e: React.MouseEvent;\n item: ITEM;\n index: number;\n }) => void;\n getItemLabel?: PropGetItemLabel<ITEM>;\n getItemLineStatus?: PropGetItemLineStatus<ITEM>;\n getItemTooltipContent?: PropGetItemTooltipContent<ITEM>;\n getItemPoint?: PropGetItemPoint<ITEM>;\n getItemProgress?: PropGetItemProgress<ITEM>;\n getItemContent?: PropGetItemContent<ITEM>;\n getItemStatus?: PropGetItemStatus<ITEM>;\n getItemOnClick?: PropGetItemOnClick<ITEM>;\n },\n HTMLDivElement\n > &\n (ITEM extends { label: DefaultItem['label'] }\n ? {}\n : { getItemLabel: PropGetItemLabel<ITEM> });\n\nexport type ProgressStepBarItemProps = {\n content?: React.ReactNode;\n label?: string;\n point?: PointNumbersMap | IconComponent;\n progress?: boolean;\n status?: PropStatus | 'system';\n tooltipContent?: string;\n tooltipZIndex?: number;\n position?: PropPosition;\n direction: PropDirection;\n size: PropSize;\n onClick?: (e: React.MouseEvent) => void;\n pointRef?: React.RefObject<HTMLButtonElement>;\n className?: string;\n};\n\nexport const cnProgressStepBar = cn('ProgressStepBar');\n\nexport const defaultGetItemLabel: PropGetItemLabel<DefaultItem> = (item) =>\n item.label;\nexport const defaultGetItemTooltipContent: PropGetItemTooltipContent<\n DefaultItem\n> = (item) => item.tooltipContent;\nexport const defaultGetItemPoint: PropGetItemPoint<DefaultItem> = (item) =>\n item.point;\nexport const defaultGetItemLineStatus: PropGetItemLineStatus<DefaultItem> = (\n item,\n) => item.lineStatus;\nexport const defaultGetItemProgress: PropGetItemProgress<DefaultItem> = (\n item,\n) => item.progress;\nexport const defaultGetItemContent: PropGetItemContent<DefaultItem> = (item) =>\n item.content;\nexport const defaultGetItemStatus: PropGetItemStatus<DefaultItem> = (item) =>\n item.status;\nexport const defaultGetItemOnClick: PropGetItemOnClick<DefaultItem> = (item) =>\n item.onClick;\n\nexport type ProgressStepBarComponent = <ITEM = DefaultItem>(\n props: ProgressStepBarProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type ProgressStepBarItemComponent = (\n props: PropsWithHTMLAttributesAndRef<\n ProgressStepBarItemProps,\n HTMLDivElement\n >,\n) => React.ReactElement | null;\n\nexport function withDefaultGetters<ITEM>(props: ProgressStepBarProps<ITEM>) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemTooltipContent:\n props.getItemTooltipContent || defaultGetItemTooltipContent,\n getItemPoint: props.getItemPoint || defaultGetItemPoint,\n getItemProgress: props.getItemProgress || defaultGetItemProgress,\n getItemContent: props.getItemContent || defaultGetItemContent,\n getItemStatus: props.getItemStatus || defaultGetItemStatus,\n getItemLineStatus: props.getItemLineStatus || defaultGetItemLineStatus,\n getItemOnClick: props.getItemOnClick || defaultGetItemOnClick,\n };\n}\n\nexport const getItemPosition = (index: number, lendth: number) => {\n let position: PropPosition = 'center';\n if (index === lendth - 1) position = 'end';\n if (index === 0) position = 'start';\n\n return position;\n};\n\nexport const getLineSize: (\n container: React.RefObject<HTMLElement>,\n activeElement: React.RefObject<HTMLElement>,\n direction: PropDirection,\n) => number = (container, activeElement, direction) => {\n let size = 0;\n if (\n container &&\n container.current &&\n activeElement &&\n activeElement.current\n ) {\n const containerPosition = container.current.getBoundingClientRect();\n const activeElementPosition = activeElement.current.getBoundingClientRect();\n if (direction === 'vertical')\n size =\n activeElementPosition.y -\n containerPosition.y +\n activeElementPosition.height;\n else size = activeElementPosition.x - containerPosition.x;\n }\n return size;\n};\n\nconst getRefSize = (ref: React.RefObject<HTMLElement>) => {\n if (ref.current) {\n const { width, height } = ref.current.getBoundingClientRect();\n return [width, height];\n }\n return [0, 0];\n};\n\nexport const calculateLines = (\n refs: React.RefObject<HTMLElement>[],\n direction: PropDirection,\n) => {\n const sizes: number[] = [];\n for (let i = 0; i < refs.length - 1; i++) {\n const ref = refs[i];\n const firstSize = getRefSize(ref);\n const secondSize = getRefSize(refs[i + 1]);\n let size = 0;\n if (i === 0) {\n size =\n direction === 'horizontal'\n ? firstSize[0] + secondSize[0] / 2\n : firstSize[1];\n } else if (i === refs.length - 2) {\n size =\n direction === 'horizontal'\n ? firstSize[0] / 2 + secondSize[0]\n : firstSize[1] + 2;\n } else {\n size =\n direction === 'horizontal'\n ? firstSize[0] / 2 + secondSize[0] / 2\n : firstSize[1];\n }\n sizes.push(size);\n }\n\n return sizes;\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["min","max","onChange","onAfterChange","value","step","disabled","size","view","leftSide","rightSide","withTooltip","range","label","labelIcon","status","caption","tooltipFormatter","className","style"];import"./Slider.css";import React,{forwardRef,useRef,useState}from"react";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{FieldCaption}from"../FieldCaption";import{FieldLabel}from"../FieldLabel";import{useFlag}from"../../hooks/useFlag";import{useForkRef}from"../../hooks/useForkRef";import{useSortSteps}from"../../hooks/useSortSteps";import{cn}from"../../utils/bem";import{defaultPropSize,defaultTooltipFormatter,getIcon,getMaxForStartField,getMinForEndField,getOnChandgeForInput,getValidStep,getValueForInput,isRangeParams}from"./helper";import{SliderInput}from"./SliderInput/SliderInput";import{SliderLine}from"./SliderLine/SliderLine";import{SliderPoint}from"./SliderPoint/SliderPoint";import{useSlider}from"./useSlider/useSlider";import{useSliderStationing}from"./useSliderStationing";var cnSlider=cn("Slider"),sizeMap={xs:"xs",s:"s",m:"m",l:"m"};export var COMPONENT_NAME="Slider";var SliderRender=function(a,b){var c=useRef(null),d=usePropsHandler(COMPONENT_NAME,a,c),e=d.min,f=void 0===e?0:e,g=d.max,h=void 0===g?100:g,i=d.onChange,j=d.onAfterChange,k=d.value,l=d.step,m=d.disabled,n=void 0!==m&&m,o=d.size,p=void 0===o?defaultPropSize:o,q=d.view,r=void 0===q?"default":q,s=d.leftSide,t=d.rightSide,u=d.withTooltip,v=d.range,w=void 0!==v&&v,x=d.label,y=d.
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["min","max","onChange","onAfterChange","value","step","disabled","size","view","leftSide","rightSide","withTooltip","range","label","tooltipDirection","tooltipPossibleDirections","labelIcon","status","caption","tooltipFormatter","className","style"];import"./Slider.css";import React,{forwardRef,useRef,useState}from"react";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{FieldCaption}from"../FieldCaption";import{FieldLabel}from"../FieldLabel";import{useFlag}from"../../hooks/useFlag";import{useForkRef}from"../../hooks/useForkRef";import{useSortSteps}from"../../hooks/useSortSteps";import{cn}from"../../utils/bem";import{defaultPropSize,defaultTooltipFormatter,getIcon,getMaxForStartField,getMinForEndField,getOnChandgeForInput,getValidStep,getValueForInput,isRangeParams}from"./helper";import{SliderInput}from"./SliderInput/SliderInput";import{SliderLine}from"./SliderLine/SliderLine";import{SliderPoint}from"./SliderPoint/SliderPoint";import{useSlider}from"./useSlider/useSlider";import{useSliderStationing}from"./useSliderStationing";var cnSlider=cn("Slider"),sizeMap={xs:"xs",s:"s",m:"m",l:"m"};export var COMPONENT_NAME="Slider";var SliderRender=function(a,b){var c=useRef(null),d=usePropsHandler(COMPONENT_NAME,a,c),e=d.min,f=void 0===e?0:e,g=d.max,h=void 0===g?100:g,i=d.onChange,j=d.onAfterChange,k=d.value,l=d.step,m=d.disabled,n=void 0!==m&&m,o=d.size,p=void 0===o?defaultPropSize:o,q=d.view,r=void 0===q?"default":q,s=d.leftSide,t=d.rightSide,u=d.withTooltip,v=d.range,w=void 0!==v&&v,x=d.label,y=d.tooltipDirection,z=d.tooltipPossibleDirections,A=d.labelIcon,B=d.status,C=d.caption,D=d.tooltipFormatter,E=void 0===D?defaultTooltipFormatter:D,F=d.className,G=d.style,H=_objectWithoutProperties(d,_excluded),I=useState(),J=_slicedToArray(I,2),K=J[0],L=J[1],M=useFlag(!1),N=_slicedToArray(M,2),O=N[0],P=N[1],Q=P.on,R=P.off,S=useRef(null),T=useRef(null),U=useRef(null),V=useSortSteps({step:getValidStep(f,h,l),min:f,max:h}),W=l?V:Math.abs((h-f)/100),X=getIcon(t),Y=getIcon(s),Z=sizeMap[p],$=useSlider({disabled:n,range:w,value:k,min:f,max:h,step:W,onChange:i,onAfterChange:j,sliderRef:c,containerRef:S,buttonRefs:[T,U]}),_=$.onKeyPress,aa=$.onFocus,ba=$.handlePress,ca=$.onSliderClick,da=$.popoverPosition,ea=$.activeButton,fa=$.currentValue,ga=useSliderStationing(1===fa.length?fa[0]:fa,f,h,r,w,W,[T,U],c),ha=ga.lineSizes,ia=ga.buttonPositions,ja={role:"button",tabIndex:0,className:cnSlider("Control"),ref:c,onClick:ca},ka=function(a){a?Q():R()};return React.createElement("div",Object.assign({ref:useForkRef([b,S]),className:cnSlider({size:p},[F]),style:G},H),x&&React.createElement(FieldLabel,{icon:A,className:cnSlider("Label"),size:p},x),React.createElement("div",{className:cnSlider("Container")},("input"===s||Y)&&React.createElement("div",{className:cnSlider("Side",{position:"left"})},"input"===s&&React.createElement(SliderInput,{value:getValueForInput(a,0),onFocus:function(){return L(0)},onBlur:function onBlur(){return L(void 0)},onChange:getOnChandgeForInput(a,0),size:p,min:f,inputMode:"numeric",max:getMaxForStartField(a),status:B,step:W,disabled:n}),Y&&React.createElement(Y,{size:null!==Z&&void 0!==Z?Z:void 0,view:"secondary"})),React.createElement("div",ja,React.createElement(SliderLine,{hovered:O||"number"==typeof ea,onHover:ka,lines:ha,disabled:n,view:r}),fa.map(function(a,b){var c=1<fa.length&&fa[0]===fa[1]&&a===h&&0===b;return React.createElement(SliderPoint,{hovered:O||"number"==typeof ea,buttonRef:T,popoverPosition:da[b],onKeyPress:_,onFocus:aa,tooltipDirection:y,tooltipPossibleDirections:z,handlePress:ba,disabled:n,active:c,position:ia[b],focused:ea===b||K===b,buttonLabel:b,withTooltip:u,onHover:ka,tooltipFormatter:E,value:a,role:"slider","aria-valuemin":f,"aria-valuemax":h,"aria-valuenow":a,tooltipZIndex:"number"==typeof(null===G||void 0===G?void 0:G.zIndex)?G.zIndex+1:void 0,key:cnSlider("Point",{index:b})})})),("input"===t||X)&&React.createElement("div",{className:cnSlider("Side",{position:"right"})},"input"===t&&React.createElement(SliderInput,{value:getValueForInput(a,1),onChange:getOnChandgeForInput(a,1),onBlur:function onBlur(){return L(void 0)},size:p,min:getMinForEndField(a),max:h,onFocus:function(){return L(isRangeParams(a)?1:0)},inputMode:"numeric",status:B,step:W,disabled:n}),X&&React.createElement(X,{size:Z,view:"secondary"}))),C&&React.createElement(FieldCaption,{className:cnSlider("Caption"),status:B},C))};export var Slider=forwardRef(SliderRender);
|
|
2
2
|
//# sourceMappingURL=Slider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.js","names":["React","forwardRef","useRef","useState","usePropsHandler","FieldCaption","FieldLabel","useFlag","useForkRef","useSortSteps","cn","defaultPropSize","defaultTooltipFormatter","getIcon","getMaxForStartField","getMinForEndField","getOnChandgeForInput","getValidStep","getValueForInput","isRangeParams","SliderInput","SliderLine","SliderPoint","useSlider","useSliderStationing","cnSlider","sizeMap","xs","s","m","l","COMPONENT_NAME","SliderRender","props","ref","sliderRef","min","max","onChange","onAfterChange","value","stepProp","step","disabled","size","view","leftSide","rightSide","withTooltip","range","label","labelIcon","status","caption","tooltipFormatter","className","style","otherProps","focusIndex","setFocusIndex","isHovered","on","off","containerRef","leftButtonRef","rightButtonRef","sortedSteps","Math","abs","IconRight","IconLeft","iconSize","buttonRefs","onKeyPress","onFocus","handlePress","onSliderClick","popoverPosition","activeButton","currentValue","length","lineSizes","buttonPositions","containerProps","role","tabIndex","onClick","changeHovered","position","map","val","index","topLayer","zIndex","Slider"],"sources":["../../../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import './Slider.css';\n\nimport { IconPropSize } from '@consta/icons/Icon';\nimport React, { forwardRef, useRef, useState } from 'react';\n\nimport { usePropsHandler } from '##/components/EventInterceptor/usePropsHandler';\nimport { FieldCaption } from '##/components/FieldCaption';\nimport { FieldLabel } from '##/components/FieldLabel';\nimport { useFlag } from '##/hooks/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { useSortSteps } from '##/hooks/useSortSteps';\nimport { cn } from '##/utils/bem';\n\nimport {\n defaultPropSize,\n defaultTooltipFormatter,\n getIcon,\n getMaxForStartField,\n getMinForEndField,\n getOnChandgeForInput,\n getValidStep,\n getValueForInput,\n isRangeParams,\n PropSize,\n SliderComponent,\n SliderProps,\n} from './helper';\nimport { SliderInput } from './SliderInput/SliderInput';\nimport { SliderLine } from './SliderLine/SliderLine';\nimport { SliderPoint } from './SliderPoint/SliderPoint';\nimport { ActiveButton } from './useSlider/helper';\nimport { useSlider } from './useSlider/useSlider';\nimport { useSliderStationing } from './useSliderStationing';\n\nconst cnSlider = cn('Slider');\n\nconst sizeMap: Record<PropSize, IconPropSize> = {\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'm',\n};\n\nexport const COMPONENT_NAME = 'Slider' as const;\n\nconst SliderRender = <RANGE extends boolean = false>(\n props: SliderProps<RANGE>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const sliderRef = useRef<HTMLDivElement>(null);\n\n const {\n min = 0,\n max = 100,\n onChange,\n onAfterChange,\n value,\n step: stepProp,\n disabled = false,\n size = defaultPropSize,\n view = 'default',\n leftSide,\n rightSide,\n withTooltip,\n range = false,\n label,\n labelIcon,\n status,\n caption,\n tooltipFormatter = defaultTooltipFormatter,\n className,\n style,\n ...otherProps\n } = usePropsHandler(COMPONENT_NAME, props, sliderRef);\n\n const [focusIndex, setFocusIndex] = useState<number | undefined>();\n const [isHovered, { on, off }] = useFlag(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const leftButtonRef = useRef<HTMLButtonElement>(null);\n const rightButtonRef = useRef<HTMLButtonElement>(null);\n const sortedSteps = useSortSteps({\n step: getValidStep(min, max, stepProp),\n min,\n max,\n });\n const step = stepProp ? sortedSteps : Math.abs((max - min) / 100);\n const IconRight = getIcon(rightSide);\n const IconLeft = getIcon(leftSide);\n const iconSize = sizeMap[size];\n\n const {\n onKeyPress,\n onFocus,\n handlePress,\n onSliderClick,\n popoverPosition,\n activeButton,\n currentValue,\n } = useSlider({\n disabled,\n range,\n value,\n min,\n max,\n step,\n onChange,\n onAfterChange,\n sliderRef,\n containerRef,\n buttonRefs: [leftButtonRef, rightButtonRef],\n });\n\n const { lineSizes, buttonPositions } = useSliderStationing(\n currentValue.length === 1 ? currentValue[0] : currentValue,\n min,\n max,\n view,\n range,\n step,\n [leftButtonRef, rightButtonRef],\n sliderRef,\n );\n\n const containerProps = {\n role: 'button',\n tabIndex: 0,\n className: cnSlider('Control'),\n ref: sliderRef,\n onClick: onSliderClick,\n };\n\n const changeHovered = (status: boolean) => {\n if (status) on();\n else off();\n };\n\n return (\n <div\n ref={useForkRef([ref, containerRef])}\n className={cnSlider({ size }, [className])}\n style={style}\n {...otherProps}\n >\n {label && (\n <FieldLabel icon={labelIcon} className={cnSlider('Label')} size={size}>\n {label}\n </FieldLabel>\n )}\n <div className={cnSlider('Container')}>\n {(leftSide === 'input' || IconLeft) && (\n <div className={cnSlider('Side', { position: 'left' })}>\n {leftSide === 'input' && (\n <SliderInput\n value={getValueForInput(props, 0)}\n onFocus={() => setFocusIndex(0)}\n onBlur={() => setFocusIndex(undefined)}\n onChange={getOnChandgeForInput(props, 0)}\n size={size}\n min={min}\n inputMode=\"numeric\"\n max={getMaxForStartField(props)}\n status={status}\n step={step}\n disabled={disabled}\n />\n )}\n {IconLeft && (\n <IconLeft size={iconSize ?? undefined} view=\"secondary\" />\n )}\n </div>\n )}\n <div {...containerProps}>\n <SliderLine\n hovered={isHovered || typeof activeButton === 'number'}\n onHover={changeHovered}\n lines={lineSizes}\n disabled={disabled}\n view={view}\n />\n {currentValue.map((val, index) => {\n // let isActive = true;\n // if (\n // currentValue.length > 1 &&\n // currentValue[0] === currentValue[1]\n // ) {\n // if (index === 0 && val === min) {\n // isActive = false;\n // }\n // if (index === 1 && val === max) {\n // isActive = false;\n // }\n // }\n const topLayer =\n currentValue.length > 1 &&\n currentValue[0] === currentValue[1] &&\n val === max &&\n index === 0;\n return (\n <SliderPoint\n hovered={isHovered || typeof activeButton === 'number'}\n buttonRef={leftButtonRef}\n popoverPosition={popoverPosition[index]}\n onKeyPress={onKeyPress}\n onFocus={onFocus}\n handlePress={handlePress}\n disabled={disabled}\n active={topLayer}\n position={buttonPositions[index]}\n focused={activeButton === index || focusIndex === index}\n buttonLabel={index as ActiveButton}\n withTooltip={withTooltip}\n onHover={changeHovered}\n tooltipFormatter={tooltipFormatter}\n value={val}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={val}\n tooltipZIndex={\n typeof style?.zIndex === 'number'\n ? style.zIndex + 1\n : undefined\n }\n key={cnSlider('Point', { index })}\n />\n );\n })}\n </div>\n {(rightSide === 'input' || IconRight) && (\n <div className={cnSlider('Side', { position: 'right' })}>\n {rightSide === 'input' && (\n <SliderInput\n value={getValueForInput(props, 1)}\n onChange={getOnChandgeForInput(props, 1)}\n onBlur={() => setFocusIndex(undefined)}\n size={size}\n min={getMinForEndField(props)}\n max={max}\n onFocus={() => setFocusIndex(isRangeParams(props) ? 1 : 0)}\n inputMode=\"numeric\"\n status={status}\n step={step}\n disabled={disabled}\n />\n )}\n {IconRight && <IconRight size={iconSize} view=\"secondary\" />}\n </div>\n )}\n </div>\n {caption && (\n <FieldCaption className={cnSlider('Caption')} status={status}>\n {caption}\n </FieldCaption>\n )}\n </div>\n );\n};\n\nexport const Slider = forwardRef(SliderRender) as SliderComponent;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Slider.js","names":["React","forwardRef","useRef","useState","usePropsHandler","FieldCaption","FieldLabel","useFlag","useForkRef","useSortSteps","cn","defaultPropSize","defaultTooltipFormatter","getIcon","getMaxForStartField","getMinForEndField","getOnChandgeForInput","getValidStep","getValueForInput","isRangeParams","SliderInput","SliderLine","SliderPoint","useSlider","useSliderStationing","cnSlider","sizeMap","xs","s","m","l","COMPONENT_NAME","SliderRender","props","ref","sliderRef","min","max","onChange","onAfterChange","value","stepProp","step","disabled","size","view","leftSide","rightSide","withTooltip","range","label","tooltipDirection","tooltipPossibleDirections","labelIcon","status","caption","tooltipFormatter","className","style","otherProps","focusIndex","setFocusIndex","isHovered","on","off","containerRef","leftButtonRef","rightButtonRef","sortedSteps","Math","abs","IconRight","IconLeft","iconSize","buttonRefs","onKeyPress","onFocus","handlePress","onSliderClick","popoverPosition","activeButton","currentValue","length","lineSizes","buttonPositions","containerProps","role","tabIndex","onClick","changeHovered","position","map","val","index","topLayer","zIndex","Slider"],"sources":["../../../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import './Slider.css';\n\nimport { IconPropSize } from '@consta/icons/Icon';\nimport React, { forwardRef, useRef, useState } from 'react';\n\nimport { usePropsHandler } from '##/components/EventInterceptor/usePropsHandler';\nimport { FieldCaption } from '##/components/FieldCaption';\nimport { FieldLabel } from '##/components/FieldLabel';\nimport { useFlag } from '##/hooks/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { useSortSteps } from '##/hooks/useSortSteps';\nimport { cn } from '##/utils/bem';\n\nimport {\n defaultPropSize,\n defaultTooltipFormatter,\n getIcon,\n getMaxForStartField,\n getMinForEndField,\n getOnChandgeForInput,\n getValidStep,\n getValueForInput,\n isRangeParams,\n PropSize,\n SliderComponent,\n SliderProps,\n} from './helper';\nimport { SliderInput } from './SliderInput/SliderInput';\nimport { SliderLine } from './SliderLine/SliderLine';\nimport { SliderPoint } from './SliderPoint/SliderPoint';\nimport { ActiveButton } from './useSlider/helper';\nimport { useSlider } from './useSlider/useSlider';\nimport { useSliderStationing } from './useSliderStationing';\n\nconst cnSlider = cn('Slider');\n\nconst sizeMap: Record<PropSize, IconPropSize> = {\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'm',\n};\n\nexport const COMPONENT_NAME = 'Slider' as const;\n\nconst SliderRender = <RANGE extends boolean = false>(\n props: SliderProps<RANGE>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const sliderRef = useRef<HTMLDivElement>(null);\n\n const {\n min = 0,\n max = 100,\n onChange,\n onAfterChange,\n value,\n step: stepProp,\n disabled = false,\n size = defaultPropSize,\n view = 'default',\n leftSide,\n rightSide,\n withTooltip,\n range = false,\n label,\n tooltipDirection,\n tooltipPossibleDirections,\n labelIcon,\n status,\n caption,\n tooltipFormatter = defaultTooltipFormatter,\n className,\n style,\n ...otherProps\n } = usePropsHandler(COMPONENT_NAME, props, sliderRef);\n\n const [focusIndex, setFocusIndex] = useState<number | undefined>();\n const [isHovered, { on, off }] = useFlag(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const leftButtonRef = useRef<HTMLButtonElement>(null);\n const rightButtonRef = useRef<HTMLButtonElement>(null);\n const sortedSteps = useSortSteps({\n step: getValidStep(min, max, stepProp),\n min,\n max,\n });\n const step = stepProp ? sortedSteps : Math.abs((max - min) / 100);\n const IconRight = getIcon(rightSide);\n const IconLeft = getIcon(leftSide);\n const iconSize = sizeMap[size];\n\n const {\n onKeyPress,\n onFocus,\n handlePress,\n onSliderClick,\n popoverPosition,\n activeButton,\n currentValue,\n } = useSlider({\n disabled,\n range,\n value,\n min,\n max,\n step,\n onChange,\n onAfterChange,\n sliderRef,\n containerRef,\n buttonRefs: [leftButtonRef, rightButtonRef],\n });\n\n const { lineSizes, buttonPositions } = useSliderStationing(\n currentValue.length === 1 ? currentValue[0] : currentValue,\n min,\n max,\n view,\n range,\n step,\n [leftButtonRef, rightButtonRef],\n sliderRef,\n );\n\n const containerProps = {\n role: 'button',\n tabIndex: 0,\n className: cnSlider('Control'),\n ref: sliderRef,\n onClick: onSliderClick,\n };\n\n const changeHovered = (status: boolean) => {\n if (status) on();\n else off();\n };\n\n return (\n <div\n ref={useForkRef([ref, containerRef])}\n className={cnSlider({ size }, [className])}\n style={style}\n {...otherProps}\n >\n {label && (\n <FieldLabel icon={labelIcon} className={cnSlider('Label')} size={size}>\n {label}\n </FieldLabel>\n )}\n <div className={cnSlider('Container')}>\n {(leftSide === 'input' || IconLeft) && (\n <div className={cnSlider('Side', { position: 'left' })}>\n {leftSide === 'input' && (\n <SliderInput\n value={getValueForInput(props, 0)}\n onFocus={() => setFocusIndex(0)}\n onBlur={() => setFocusIndex(undefined)}\n onChange={getOnChandgeForInput(props, 0)}\n size={size}\n min={min}\n inputMode=\"numeric\"\n max={getMaxForStartField(props)}\n status={status}\n step={step}\n disabled={disabled}\n />\n )}\n {IconLeft && (\n <IconLeft size={iconSize ?? undefined} view=\"secondary\" />\n )}\n </div>\n )}\n <div {...containerProps}>\n <SliderLine\n hovered={isHovered || typeof activeButton === 'number'}\n onHover={changeHovered}\n lines={lineSizes}\n disabled={disabled}\n view={view}\n />\n {currentValue.map((val, index) => {\n const topLayer =\n currentValue.length > 1 &&\n currentValue[0] === currentValue[1] &&\n val === max &&\n index === 0;\n return (\n <SliderPoint\n hovered={isHovered || typeof activeButton === 'number'}\n buttonRef={leftButtonRef}\n popoverPosition={popoverPosition[index]}\n onKeyPress={onKeyPress}\n onFocus={onFocus}\n tooltipDirection={tooltipDirection}\n tooltipPossibleDirections={tooltipPossibleDirections}\n handlePress={handlePress}\n disabled={disabled}\n active={topLayer}\n position={buttonPositions[index]}\n focused={activeButton === index || focusIndex === index}\n buttonLabel={index as ActiveButton}\n withTooltip={withTooltip}\n onHover={changeHovered}\n tooltipFormatter={tooltipFormatter}\n value={val}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={val}\n tooltipZIndex={\n typeof style?.zIndex === 'number'\n ? style.zIndex + 1\n : undefined\n }\n key={cnSlider('Point', { index })}\n />\n );\n })}\n </div>\n {(rightSide === 'input' || IconRight) && (\n <div className={cnSlider('Side', { position: 'right' })}>\n {rightSide === 'input' && (\n <SliderInput\n value={getValueForInput(props, 1)}\n onChange={getOnChandgeForInput(props, 1)}\n onBlur={() => setFocusIndex(undefined)}\n size={size}\n min={getMinForEndField(props)}\n max={max}\n onFocus={() => setFocusIndex(isRangeParams(props) ? 1 : 0)}\n inputMode=\"numeric\"\n status={status}\n step={step}\n disabled={disabled}\n />\n )}\n {IconRight && <IconRight size={iconSize} view=\"secondary\" />}\n </div>\n )}\n </div>\n {caption && (\n <FieldCaption className={cnSlider('Caption')} status={status}>\n {caption}\n </FieldCaption>\n )}\n </div>\n );\n};\n\nexport const Slider = forwardRef(SliderRender) as SliderComponent;\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["hovered","onHover","value","position","disabled","withTooltip","focused","popoverPosition","buttonRef","active","handlePress","onKeyPress","tooltipFormatter","buttonLabel","onFocus","tooltipZIndex"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./SliderPoint.css";import React,{useEffect,useRef}from"react";import{useFlag}from"../../../hooks/useFlag/useFlag";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{cnMixFocus}from"../../../mixs/MixFocus/MixFocus";import{cn}from"../../../utils/bem";import{generateThemeClassNames,ThemeContext,useTheme}from"../../Theme/Theme";import{Tooltip}from"../../Tooltip/Tooltip";var cnSliderPoint=cn("SliderPoint"),getTooltipPosition=function(a,b){if(a&&b&&b.current){var c=b.current.getBoundingClientRect(),d=c.y,e=c.height;return{x:Math.round(a.x),y:Math.round(d+e/2)}}return{x:0,y:0}};export var SliderPoint=function(a){var b=a.hovered,c=a.onHover,d=a.value,e=a.position,f=a.disabled,g=a.withTooltip,h=a.focused,i=a.popoverPosition,j=a.buttonRef,k=a.active,l=a.handlePress,m=a.onKeyPress,n=a.tooltipFormatter,o=a.buttonLabel,p=a.onFocus,q=a.
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["hovered","onHover","value","position","disabled","withTooltip","focused","popoverPosition","buttonRef","active","handlePress","onKeyPress","tooltipFormatter","buttonLabel","onFocus","tooltipDirection","tooltipPossibleDirections","tooltipZIndex"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./SliderPoint.css";import React,{useEffect,useRef}from"react";import{useFlag}from"../../../hooks/useFlag/useFlag";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{cnMixFocus}from"../../../mixs/MixFocus/MixFocus";import{cn}from"../../../utils/bem";import{generateThemeClassNames,ThemeContext,useTheme}from"../../Theme/Theme";import{Tooltip}from"../../Tooltip/Tooltip";var cnSliderPoint=cn("SliderPoint"),getTooltipPosition=function(a,b){if(a&&b&&b.current){var c=b.current.getBoundingClientRect(),d=c.y,e=c.height;return{x:Math.round(a.x),y:Math.round(d+e/2)}}return{x:0,y:0}},defaultPossibleDirections=["leftCenter","rightCenter","downCenter","leftDown","rightDown","upCenter"];export var SliderPoint=function(a){var b=a.hovered,c=a.onHover,d=a.value,e=a.position,f=a.disabled,g=a.withTooltip,h=a.focused,i=a.popoverPosition,j=a.buttonRef,k=a.active,l=a.handlePress,m=a.onKeyPress,n=a.tooltipFormatter,o=a.buttonLabel,p=a.onFocus,q=a.tooltipDirection,r=void 0===q?"downCenter":q,s=a.tooltipPossibleDirections,t=void 0===s?defaultPossibleDirections:s,u=a.tooltipZIndex,v=_objectWithoutProperties(a,_excluded),w=useFlag(!1),x=_slicedToArray(w,2),y=x[0],z=x[1],A=useTheme(),B=A.theme,C=_objectSpread(_objectSpread({},B),{},{color:{primary:B.color.invert,accent:B.color.accent,invert:B.color.primary}}),D=generateThemeClassNames(C),E=function(a){f||(null===p||void 0===p?void 0:p(a,o),z.on())},F=function(a){f||(null===c||void 0===c?void 0:c(a),a&&z.on(),a&&z.on(),!a&&!h&&z.off())},G=useRef(null),H=getTooltipPosition(i,j||G);return useEffect(function(){h?z.on():z.off()},[h]),React.createElement(React.Fragment,null,React.createElement("button",Object.assign({type:"button","aria-label":"".concat(o,"-button"),className:cnSliderPoint({hovered:b,disabled:f,active:k},[f?"":cnMixFocus()]),onMouseOver:function onMouseOver(){return F(!0)},onMouseOut:function onMouseOut(){return F(!1)},onMouseDown:function onMouseDown(){return null===l||void 0===l?void 0:l(o)},onTouchStart:function onTouchStart(){return null===l||void 0===l?void 0:l(o)},onKeyDown:function onKeyDown(a){return null===m||void 0===m?void 0:m(a,o)},onFocus:E,onBlur:function handleBlur(a){f||(null===p||void 0===p?void 0:p(a,null),z.off())},onClick:E,ref:useForkRef([j,G]),tabIndex:0,style:_defineProperty({},"--slider-button-left","".concat(e,"%"))},v)),y&&g&&i&&React.createElement(ThemeContext.Provider,{value:{theme:C,themeClassNames:D}},React.createElement(Tooltip,{position:H,className:cnSliderPoint("Tooltip"),direction:r,possibleDirections:t,style:{zIndex:u},offset:10},n?n(d):d)))};
|
|
2
2
|
//# sourceMappingURL=SliderPoint.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderPoint.js","names":["React","useEffect","useRef","useFlag","useForkRef","cnMixFocus","cn","generateThemeClassNames","ThemeContext","useTheme","Tooltip","cnSliderPoint","getTooltipPosition","popoverPosition","buttonRef","current","getBoundingClientRect","y","height","x","Math","round","SliderPoint","props","hovered","onHover","value","position","disabled","withTooltip","focused","active","handlePress","onKeyPress","tooltipFormatter","buttonLabel","onFocus","tooltipZIndex","otherProps","tooltipVisible","setTooltipVisible","theme","tooltipTheme","color","primary","invert","accent","tooltipThemeClassNames","handleFocus","e","on","handleMouseAction","enter","off","pointRef","tooltipPosition","handleBlur","themeClassNames","zIndex"],"sources":["../../../../../../src/components/Slider/SliderPoint/SliderPoint.tsx"],"sourcesContent":["import './SliderPoint.css';\n\nimport React, { useEffect, useRef } from 'react';\n\nimport { useFlag } from '../../../hooks/useFlag/useFlag';\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { cnMixFocus } from '../../../mixs/MixFocus/MixFocus';\nimport { cn } from '../../../utils/bem';\nimport {\n generateThemeClassNames,\n ThemeContext,\n useTheme,\n} from '../../Theme/Theme';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { SliderPointProps, TrackPosition } from '../helper';\n\nconst cnSliderPoint = cn('SliderPoint');\n\nconst getTooltipPosition = (\n popoverPosition?: TrackPosition,\n buttonRef?: React.RefObject<HTMLButtonElement>,\n) => {\n if (popoverPosition && buttonRef && buttonRef.current) {\n const { y, height } = buttonRef.current.getBoundingClientRect();\n return {\n x: Math.round(popoverPosition.x),\n y: Math.round(y + height / 2),\n };\n }\n\n return { x: 0, y: 0 };\n};\nexport const SliderPoint = (props: SliderPointProps) => {\n const {\n hovered,\n onHover,\n value,\n position,\n disabled,\n withTooltip,\n focused,\n popoverPosition,\n buttonRef,\n active,\n handlePress,\n onKeyPress,\n tooltipFormatter,\n buttonLabel,\n onFocus,\n tooltipZIndex,\n ...otherProps\n } = props;\n\n const [tooltipVisible, setTooltipVisible] = useFlag(false);\n\n const { theme } = useTheme();\n\n const tooltipTheme = {\n ...theme,\n color: {\n primary: theme.color.invert,\n accent: theme.color.accent,\n invert: theme.color.primary,\n },\n };\n\n const tooltipThemeClassNames = generateThemeClassNames(tooltipTheme);\n\n const handleFocus = (\n e: React.FocusEvent<HTMLButtonElement> | React.MouseEvent,\n ) => {\n if (!disabled) {\n onFocus?.(e, buttonLabel);\n setTooltipVisible.on();\n }\n };\n\n const handleMouseAction = (enter: boolean) => {\n if (!disabled) {\n onHover?.(enter);\n enter && setTooltipVisible.on();\n if (enter) setTooltipVisible.on();\n if (!enter && !focused) setTooltipVisible.off();\n }\n };\n\n const handleBlur = (\n e:\n | React.FocusEvent<HTMLButtonElement>\n | React.MouseEvent<HTMLButtonElement>,\n ) => {\n if (!disabled) {\n onFocus?.(e, null);\n setTooltipVisible.off();\n }\n };\n\n const pointRef = useRef<HTMLButtonElement>(null);\n\n const tooltipPosition = getTooltipPosition(\n popoverPosition,\n buttonRef || pointRef,\n );\n\n useEffect(() => {\n focused ? setTooltipVisible.on() : setTooltipVisible.off();\n }, [focused]);\n\n return (\n <>\n <button\n type=\"button\"\n aria-label={`${buttonLabel}-button`}\n className={cnSliderPoint({ hovered, disabled, active }, [\n !disabled ? cnMixFocus() : '',\n ])}\n onMouseOver={() => handleMouseAction(true)}\n onMouseOut={() => handleMouseAction(false)}\n onMouseDown={() => handlePress?.(buttonLabel)}\n onTouchStart={() => handlePress?.(buttonLabel)}\n onKeyDown={(e) => onKeyPress?.(e, buttonLabel)}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onClick={handleFocus}\n ref={useForkRef([buttonRef, pointRef])}\n tabIndex={0}\n style={{\n ['--slider-button-left' as string]: `${position}%`,\n }}\n {...otherProps}\n />\n {tooltipVisible && withTooltip && popoverPosition && (\n <ThemeContext.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n theme: tooltipTheme,\n themeClassNames: tooltipThemeClassNames,\n }}\n >\n <Tooltip\n position={tooltipPosition}\n className={cnSliderPoint('Tooltip')}\n direction
|
|
1
|
+
{"version":3,"file":"SliderPoint.js","names":["React","useEffect","useRef","useFlag","useForkRef","cnMixFocus","cn","generateThemeClassNames","ThemeContext","useTheme","Tooltip","cnSliderPoint","getTooltipPosition","popoverPosition","buttonRef","current","getBoundingClientRect","y","height","x","Math","round","defaultPossibleDirections","SliderPoint","props","hovered","onHover","value","position","disabled","withTooltip","focused","active","handlePress","onKeyPress","tooltipFormatter","buttonLabel","onFocus","tooltipDirection","tooltipPossibleDirections","tooltipZIndex","otherProps","tooltipVisible","setTooltipVisible","theme","tooltipTheme","color","primary","invert","accent","tooltipThemeClassNames","handleFocus","e","on","handleMouseAction","enter","off","pointRef","tooltipPosition","handleBlur","themeClassNames","zIndex"],"sources":["../../../../../../src/components/Slider/SliderPoint/SliderPoint.tsx"],"sourcesContent":["import './SliderPoint.css';\n\nimport React, { useEffect, useRef } from 'react';\n\nimport { Direction } from '##/components/Popover';\n\nimport { useFlag } from '../../../hooks/useFlag/useFlag';\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { cnMixFocus } from '../../../mixs/MixFocus/MixFocus';\nimport { cn } from '../../../utils/bem';\nimport {\n generateThemeClassNames,\n ThemeContext,\n useTheme,\n} from '../../Theme/Theme';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { SliderPointProps, TrackPosition } from '../helper';\n\nconst cnSliderPoint = cn('SliderPoint');\n\nconst getTooltipPosition = (\n popoverPosition?: TrackPosition,\n buttonRef?: React.RefObject<HTMLButtonElement>,\n) => {\n if (popoverPosition && buttonRef && buttonRef.current) {\n const { y, height } = buttonRef.current.getBoundingClientRect();\n return {\n x: Math.round(popoverPosition.x),\n y: Math.round(y + height / 2),\n };\n }\n\n return { x: 0, y: 0 };\n};\n\nconst defaultPossibleDirections: Direction[] = [\n 'leftCenter',\n 'rightCenter',\n 'downCenter',\n 'leftDown',\n 'rightDown',\n 'upCenter',\n];\n\nexport const SliderPoint = (props: SliderPointProps) => {\n const {\n hovered,\n onHover,\n value,\n position,\n disabled,\n withTooltip,\n focused,\n popoverPosition,\n buttonRef,\n active,\n handlePress,\n onKeyPress,\n tooltipFormatter,\n buttonLabel,\n onFocus,\n tooltipDirection = 'downCenter',\n tooltipPossibleDirections = defaultPossibleDirections,\n tooltipZIndex,\n ...otherProps\n } = props;\n\n const [tooltipVisible, setTooltipVisible] = useFlag(false);\n\n const { theme } = useTheme();\n\n const tooltipTheme = {\n ...theme,\n color: {\n primary: theme.color.invert,\n accent: theme.color.accent,\n invert: theme.color.primary,\n },\n };\n\n const tooltipThemeClassNames = generateThemeClassNames(tooltipTheme);\n\n const handleFocus = (\n e: React.FocusEvent<HTMLButtonElement> | React.MouseEvent,\n ) => {\n if (!disabled) {\n onFocus?.(e, buttonLabel);\n setTooltipVisible.on();\n }\n };\n\n const handleMouseAction = (enter: boolean) => {\n if (!disabled) {\n onHover?.(enter);\n enter && setTooltipVisible.on();\n if (enter) setTooltipVisible.on();\n if (!enter && !focused) setTooltipVisible.off();\n }\n };\n\n const handleBlur = (\n e:\n | React.FocusEvent<HTMLButtonElement>\n | React.MouseEvent<HTMLButtonElement>,\n ) => {\n if (!disabled) {\n onFocus?.(e, null);\n setTooltipVisible.off();\n }\n };\n\n const pointRef = useRef<HTMLButtonElement>(null);\n\n const tooltipPosition = getTooltipPosition(\n popoverPosition,\n buttonRef || pointRef,\n );\n\n useEffect(() => {\n focused ? setTooltipVisible.on() : setTooltipVisible.off();\n }, [focused]);\n\n return (\n <>\n <button\n type=\"button\"\n aria-label={`${buttonLabel}-button`}\n className={cnSliderPoint({ hovered, disabled, active }, [\n !disabled ? cnMixFocus() : '',\n ])}\n onMouseOver={() => handleMouseAction(true)}\n onMouseOut={() => handleMouseAction(false)}\n onMouseDown={() => handlePress?.(buttonLabel)}\n onTouchStart={() => handlePress?.(buttonLabel)}\n onKeyDown={(e) => onKeyPress?.(e, buttonLabel)}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onClick={handleFocus}\n ref={useForkRef([buttonRef, pointRef])}\n tabIndex={0}\n style={{\n ['--slider-button-left' as string]: `${position}%`,\n }}\n {...otherProps}\n />\n {tooltipVisible && withTooltip && popoverPosition && (\n <ThemeContext.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n theme: tooltipTheme,\n themeClassNames: tooltipThemeClassNames,\n }}\n >\n <Tooltip\n position={tooltipPosition}\n className={cnSliderPoint('Tooltip')}\n direction={tooltipDirection}\n possibleDirections={tooltipPossibleDirections}\n style={{ zIndex: tooltipZIndex }}\n offset={10}\n >\n {tooltipFormatter ? tooltipFormatter(value) : value}\n </Tooltip>\n </ThemeContext.Provider>\n )}\n </>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { IconComponent } from '@consta/icons/Icon';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { PropsWithHTMLAttributes } from '../../utils/types/PropsWithHTMLAttributes';
|
|
4
|
+
import { Direction } from '../Popover';
|
|
4
5
|
import { ActiveButton } from './useSlider/helper';
|
|
5
6
|
export declare const propStatus: readonly ["alert", "warning", "success"];
|
|
6
7
|
export declare type PropStatus = typeof propStatus[number];
|
|
@@ -36,6 +37,8 @@ declare type Props<RANGE extends boolean = false> = {
|
|
|
36
37
|
leftSide?: Side;
|
|
37
38
|
tooltipFormatter?: PropToolipFormatter;
|
|
38
39
|
rightSide?: Side;
|
|
40
|
+
tooltipDirection?: Direction;
|
|
41
|
+
tooltipPossibleDirections?: Direction[];
|
|
39
42
|
};
|
|
40
43
|
export declare type Line = {
|
|
41
44
|
width: number;
|
|
@@ -66,6 +69,8 @@ export declare type SliderPointProps = PropsWithHTMLAttributes<{
|
|
|
66
69
|
position: number;
|
|
67
70
|
active?: boolean;
|
|
68
71
|
tooltipZIndex?: number;
|
|
72
|
+
tooltipDirection?: Direction;
|
|
73
|
+
tooltipPossibleDirections?: Direction[];
|
|
69
74
|
}, HTMLButtonElement>;
|
|
70
75
|
export declare type SliderProps<RANGE extends boolean> = PropsWithHTMLAttributes<Props<RANGE>, HTMLDivElement>;
|
|
71
76
|
export declare type SliderComponent = <RANGE extends boolean = false>(props: SliderProps<RANGE>) => React.ReactElement | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","names":["propStatus","defaultPropStatus","propSize","defaultPropSize","isRangeParams","params","range","isNotRangeParams","defaultTooltipFormatter","value","toString","getValueForInput","props","field","getOnChandgeForInput","e","onChange","getIcon","side","getMaxForStartField","max","getMinForEndField","min","getValidStep","step","Array","isArray","Math","abs"],"sources":["../../../../../src/components/Slider/helper.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { PropsWithHTMLAttributes } from '../../utils/types/PropsWithHTMLAttributes';\nimport { ActiveButton } from './useSlider/helper';\n\nexport const propStatus = ['alert', 'warning', 'success'] as const;\nexport type PropStatus = typeof propStatus[number];\nexport const defaultPropStatus = propStatus[0];\n\nexport type PropView = 'default' | 'division';\n\nexport const propSize = ['s', 'xs', 'm', 'l'] as const;\nexport type PropSize = typeof propSize[number];\nexport const defaultPropSize: PropSize = propSize[0];\n\nexport type SliderValue<RANGE> = RANGE extends true ? [number, number] : number;\n\nexport type PropOnChange<RANGE> = (prop: {\n e?:\n | Event\n | React.TouchEvent\n | React.MouseEvent\n | React.KeyboardEvent\n | React.ChangeEvent;\n value: SliderValue<RANGE>;\n}) => void;\n\ntype PropToolipFormatter = (value: number | undefined) => string;\n\ntype Side = IconComponent | 'input';\n\ntype Props<RANGE extends boolean = false> = {\n className?: string;\n step?: number | number[];\n view?: PropView;\n disabled?: boolean;\n range?: RANGE;\n withTooltip?: boolean;\n value: SliderValue<RANGE>;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n status?: PropStatus;\n min?: number;\n size?: PropSize;\n max?: number;\n onChange?: PropOnChange<RANGE>;\n onAfterChange?: PropOnChange<RANGE>;\n leftSide?: Side;\n tooltipFormatter?: PropToolipFormatter;\n rightSide?: Side;\n};\n\nexport type Line = {\n width: number;\n active: boolean;\n size?: number[];\n};\n\nexport type SliderLineProps = {\n view?: PropView;\n lines: Line[];\n disabled?: boolean;\n hovered?: boolean;\n onHover?: (hovered: boolean) => void;\n};\n\nexport type SliderPointProps = PropsWithHTMLAttributes<\n {\n value?: number;\n disabled?: boolean;\n focused?: boolean;\n hovered?: boolean;\n withTooltip?: boolean;\n handlePress?: (typeButton: ActiveButton) => void;\n buttonLabel?: ActiveButton;\n buttonRef?: React.RefObject<HTMLButtonElement>;\n popoverPosition?: TrackPosition;\n tooltipFormatter?: PropToolipFormatter;\n onFocus?: (\n e: React.FocusEvent<HTMLButtonElement> | React.MouseEvent,\n button: ActiveButton,\n ) => void;\n onKeyPress?: (e: React.KeyboardEvent, typeButton?: ActiveButton) => void;\n onHover?: (hovered: boolean) => void;\n position: number;\n active?: boolean;\n tooltipZIndex?: number;\n },\n HTMLButtonElement\n>;\n\nexport type SliderProps<RANGE extends boolean> = PropsWithHTMLAttributes<\n Props<RANGE>,\n HTMLDivElement\n>;\n\nexport type SliderComponent = <RANGE extends boolean = false>(\n props: SliderProps<RANGE>,\n) => React.ReactElement | null;\n\nexport const isRangeParams = (\n params: Props<boolean>,\n): params is Props<true> => {\n return !!params.range;\n};\n\nexport const isNotRangeParams = (\n params: Props<boolean>,\n): params is Props<false> => {\n return !params.range;\n};\n\nexport const defaultTooltipFormatter: PropToolipFormatter = (value) =>\n value?.toString() || '';\n\nexport type TrackPosition = {\n x: number;\n y: number;\n} | null;\n\nexport const getValueForInput = (\n props: SliderProps<boolean>,\n field: 0 | 1,\n): number => {\n if (isRangeParams(props)) {\n return props.value[field];\n }\n return props.value as number;\n};\n\ntype GetOnChandgeForInputReturned = (props: {\n e?: React.ChangeEvent | React.MouseEvent | React.KeyboardEvent;\n value: number;\n}) => void;\n\nexport const getOnChandgeForInput =\n (props: SliderProps<boolean>, field: 0 | 1): GetOnChandgeForInputReturned =>\n ({ e, value }) => {\n if (!props.onChange) {\n return;\n }\n if (isNotRangeParams(props)) {\n props.onChange({ e, value });\n }\n if (isRangeParams(props)) {\n props.onChange({\n e,\n value: field ? [props.value[0], value] : [value, props.value[1]],\n });\n }\n };\n\nexport const getIcon = (side?: Side) => {\n if (side !== 'input') {\n return side;\n }\n};\n\nexport const getMaxForStartField = (props: SliderProps<boolean>) => {\n if (isNotRangeParams(props)) {\n return props.max;\n }\n if (isRangeParams(props)) {\n return props.value[1];\n }\n};\n\nexport const getMinForEndField = (props: SliderProps<boolean>) => {\n if (isNotRangeParams(props)) {\n return props.min;\n }\n if (isRangeParams(props)) {\n return props.value[0];\n }\n};\n\nexport const getValidStep = (\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (step) {\n if (Array.isArray(step)) {\n return step;\n }\n if (step <= 0) {\n return 1;\n }\n return step;\n }\n return Math.abs((max - min) / 100);\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"helper.js","names":["propStatus","defaultPropStatus","propSize","defaultPropSize","isRangeParams","params","range","isNotRangeParams","defaultTooltipFormatter","value","toString","getValueForInput","props","field","getOnChandgeForInput","e","onChange","getIcon","side","getMaxForStartField","max","getMinForEndField","min","getValidStep","step","Array","isArray","Math","abs"],"sources":["../../../../../src/components/Slider/helper.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { PropsWithHTMLAttributes } from '../../utils/types/PropsWithHTMLAttributes';\nimport { Direction } from '../Popover';\nimport { ActiveButton } from './useSlider/helper';\n\nexport const propStatus = ['alert', 'warning', 'success'] as const;\nexport type PropStatus = typeof propStatus[number];\nexport const defaultPropStatus = propStatus[0];\n\nexport type PropView = 'default' | 'division';\n\nexport const propSize = ['s', 'xs', 'm', 'l'] as const;\nexport type PropSize = typeof propSize[number];\nexport const defaultPropSize: PropSize = propSize[0];\n\nexport type SliderValue<RANGE> = RANGE extends true ? [number, number] : number;\n\nexport type PropOnChange<RANGE> = (prop: {\n e?:\n | Event\n | React.TouchEvent\n | React.MouseEvent\n | React.KeyboardEvent\n | React.ChangeEvent;\n value: SliderValue<RANGE>;\n}) => void;\n\ntype PropToolipFormatter = (value: number | undefined) => string;\n\ntype Side = IconComponent | 'input';\n\ntype Props<RANGE extends boolean = false> = {\n className?: string;\n step?: number | number[];\n view?: PropView;\n disabled?: boolean;\n range?: RANGE;\n withTooltip?: boolean;\n value: SliderValue<RANGE>;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n status?: PropStatus;\n min?: number;\n size?: PropSize;\n max?: number;\n onChange?: PropOnChange<RANGE>;\n onAfterChange?: PropOnChange<RANGE>;\n leftSide?: Side;\n tooltipFormatter?: PropToolipFormatter;\n rightSide?: Side;\n tooltipDirection?: Direction;\n tooltipPossibleDirections?: Direction[];\n};\n\nexport type Line = {\n width: number;\n active: boolean;\n size?: number[];\n};\n\nexport type SliderLineProps = {\n view?: PropView;\n lines: Line[];\n disabled?: boolean;\n hovered?: boolean;\n onHover?: (hovered: boolean) => void;\n};\n\nexport type SliderPointProps = PropsWithHTMLAttributes<\n {\n value?: number;\n disabled?: boolean;\n focused?: boolean;\n hovered?: boolean;\n withTooltip?: boolean;\n handlePress?: (typeButton: ActiveButton) => void;\n buttonLabel?: ActiveButton;\n buttonRef?: React.RefObject<HTMLButtonElement>;\n popoverPosition?: TrackPosition;\n tooltipFormatter?: PropToolipFormatter;\n onFocus?: (\n e: React.FocusEvent<HTMLButtonElement> | React.MouseEvent,\n button: ActiveButton,\n ) => void;\n onKeyPress?: (e: React.KeyboardEvent, typeButton?: ActiveButton) => void;\n onHover?: (hovered: boolean) => void;\n position: number;\n active?: boolean;\n tooltipZIndex?: number;\n tooltipDirection?: Direction;\n tooltipPossibleDirections?: Direction[];\n },\n HTMLButtonElement\n>;\n\nexport type SliderProps<RANGE extends boolean> = PropsWithHTMLAttributes<\n Props<RANGE>,\n HTMLDivElement\n>;\n\nexport type SliderComponent = <RANGE extends boolean = false>(\n props: SliderProps<RANGE>,\n) => React.ReactElement | null;\n\nexport const isRangeParams = (\n params: Props<boolean>,\n): params is Props<true> => {\n return !!params.range;\n};\n\nexport const isNotRangeParams = (\n params: Props<boolean>,\n): params is Props<false> => {\n return !params.range;\n};\n\nexport const defaultTooltipFormatter: PropToolipFormatter = (value) =>\n value?.toString() || '';\n\nexport type TrackPosition = {\n x: number;\n y: number;\n} | null;\n\nexport const getValueForInput = (\n props: SliderProps<boolean>,\n field: 0 | 1,\n): number => {\n if (isRangeParams(props)) {\n return props.value[field];\n }\n return props.value as number;\n};\n\ntype GetOnChandgeForInputReturned = (props: {\n e?: React.ChangeEvent | React.MouseEvent | React.KeyboardEvent;\n value: number;\n}) => void;\n\nexport const getOnChandgeForInput =\n (props: SliderProps<boolean>, field: 0 | 1): GetOnChandgeForInputReturned =>\n ({ e, value }) => {\n if (!props.onChange) {\n return;\n }\n if (isNotRangeParams(props)) {\n props.onChange({ e, value });\n }\n if (isRangeParams(props)) {\n props.onChange({\n e,\n value: field ? [props.value[0], value] : [value, props.value[1]],\n });\n }\n };\n\nexport const getIcon = (side?: Side) => {\n if (side !== 'input') {\n return side;\n }\n};\n\nexport const getMaxForStartField = (props: SliderProps<boolean>) => {\n if (isNotRangeParams(props)) {\n return props.max;\n }\n if (isRangeParams(props)) {\n return props.value[1];\n }\n};\n\nexport const getMinForEndField = (props: SliderProps<boolean>) => {\n if (isNotRangeParams(props)) {\n return props.min;\n }\n if (isRangeParams(props)) {\n return props.value[0];\n }\n};\n\nexport const getValidStep = (\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (step) {\n if (Array.isArray(step)) {\n return step;\n }\n if (step <= 0) {\n return 1;\n }\n return step;\n }\n return Math.abs((max - min) / 100);\n};\n"],"mappings":"AAOA,MAAO,IAAMA,WAAU,CAAG,CAAC,OAAD,CAAU,SAAV,CAAqB,SAArB,CAAnB,CAEP,MAAO,IAAMC,kBAAiB,CAAGD,UAAU,CAAC,CAAD,CAApC,CAIP,MAAO,IAAME,SAAQ,CAAG,CAAC,GAAD,CAAM,IAAN,CAAY,GAAZ,CAAiB,GAAjB,CAAjB,CAEP,MAAO,IAAMC,gBAAyB,CAAGD,QAAQ,CAAC,CAAD,CAA1C,CA4FP,MAAO,IAAME,cAAa,CAAG,SAC3BC,CAD2B,CAED,CAC1B,MAAO,CAAC,CAACA,CAAM,CAACC,KACjB,CAJM,CAMP,MAAO,IAAMC,iBAAgB,CAAG,SAC9BF,CAD8B,CAEH,CAC3B,MAAO,CAACA,CAAM,CAACC,KAChB,CAJM,CAMP,MAAO,IAAME,wBAA4C,CAAG,SAACC,CAAD,QAC1D,QAAAA,CAAK,WAALA,CAAA,QAAAA,CAAK,CAAEC,QAAP,KAAqB,EADqC,CAArD,CAQP,MAAO,IAAMC,iBAAgB,CAAG,SAC9BC,CAD8B,CAE9BC,CAF8B,CAGnB,OACPT,cAAa,CAACQ,CAAD,CADN,CAEFA,CAAK,CAACH,KAAN,CAAYI,CAAZ,CAFE,CAIJD,CAAK,CAACH,KACd,CARM,CAeP,MAAO,IAAMK,qBAAoB,CAC/B,SAACF,CAAD,CAA8BC,CAA9B,QACA,YAAkB,IAAfE,EAAe,GAAfA,CAAe,CAAZN,CAAY,GAAZA,KAAY,CACXG,CAAK,CAACI,QADK,GAIZT,gBAAgB,CAACK,CAAD,CAJJ,EAKdA,CAAK,CAACI,QAAN,CAAe,CAAED,CAAC,CAADA,CAAF,CAAKN,KAAK,CAALA,CAAL,CAAf,CALc,CAOZL,aAAa,CAACQ,CAAD,CAPD,EAQdA,CAAK,CAACI,QAAN,CAAe,CACbD,CAAC,CAADA,CADa,CAEbN,KAAK,CAAEI,CAAK,CAAG,CAACD,CAAK,CAACH,KAAN,CAAY,CAAZ,CAAD,CAAiBA,CAAjB,CAAH,CAA6B,CAACA,CAAD,CAAQG,CAAK,CAACH,KAAN,CAAY,CAAZ,CAAR,CAF5B,CAAf,CARc,CAajB,CAdD,CADK,CAiBP,MAAO,IAAMQ,QAAO,CAAG,SAACC,CAAD,CAAiB,CACtC,GAAa,OAAT,GAAAA,CAAJ,CACE,MAAOA,EAEV,CAJM,CAMP,MAAO,IAAMC,oBAAmB,CAAG,SAACP,CAAD,CAAiC,OAC9DL,iBAAgB,CAACK,CAAD,CAD8C,CAEzDA,CAAK,CAACQ,GAFmD,CAI9DhB,aAAa,CAACQ,CAAD,CAJiD,CAKzDA,CAAK,CAACH,KAAN,CAAY,CAAZ,CALyD,OAOnE,CAPM,CASP,MAAO,IAAMY,kBAAiB,CAAG,SAACT,CAAD,CAAiC,OAC5DL,iBAAgB,CAACK,CAAD,CAD4C,CAEvDA,CAAK,CAACU,GAFiD,CAI5DlB,aAAa,CAACQ,CAAD,CAJ+C,CAKvDA,CAAK,CAACH,KAAN,CAAY,CAAZ,CALuD,OAOjE,CAPM,CASP,MAAO,IAAMc,aAAY,CAAG,SAC1BD,CAD0B,CAE1BF,CAF0B,CAG1BI,CAH0B,CAIvB,OACCA,EADD,CAEGC,KAAK,CAACC,OAAN,CAAcF,CAAd,CAFH,CAGQA,CAHR,CAKW,CAAR,EAAAA,CALH,CAMQ,CANR,CAQMA,CARN,CAUIG,IAAI,CAACC,GAAL,CAAS,CAACR,CAAG,CAAGE,CAAP,EAAc,GAAvB,CACR,CAfM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useKeysRef';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/hooks/useKeysRef/index.ts"],"sourcesContent":["export * from './useKeysRef';\n"],"mappings":"AAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { KeyCode } from "../../utils/types/KeyCode";
|
|
3
|
+
export declare type KeyHandlers = Partial<Record<KeyCode, (e: KeyboardEvent) => void>> & {
|
|
4
|
+
[key: string]: (e: KeyboardEvent) => void;
|
|
5
|
+
};
|
|
6
|
+
declare type UseKeysProps = {
|
|
7
|
+
ref?: React.RefObject<HTMLElement>;
|
|
8
|
+
keys?: KeyHandlers;
|
|
9
|
+
isActive?: boolean;
|
|
10
|
+
eventType?: 'keypress' | 'keydown' | 'keyup';
|
|
11
|
+
};
|
|
12
|
+
export declare const useKeysRef: (params: UseKeysProps) => void;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useCallback,useEffect}from"react";var getKeyHandler=function(a){return function(b){var c;null===(c=a[b.code]||a[b.key])||void 0===c?void 0:c(b)}};export var useKeysRef=function(a){var b=a.ref,c=a.keys,d=a.isActive,f=!(void 0!==d)||d,g=a.eventType,h=void 0===g?"keydown":g,i=useCallback(function(a){if(c&&f){getKeyHandler(c)(a)}},[c,f]);useEffect(function(){var a;return null===b||void 0===b||null===(a=b.current)||void 0===a?void 0:a.addEventListener(h,i),function(){var a;null===b||void 0===b||null===(a=b.current)||void 0===a?void 0:a.removeEventListener(h,i)}},[b,c,f,h])};
|
|
2
|
+
//# sourceMappingURL=useKeysRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKeysRef.js","names":["useCallback","useEffect","getKeyHandler","keys","e","code","key","useKeysRef","params","ref","isActive","eventType","onKeyDown","current","addEventListener","removeEventListener"],"sources":["../../../../../src/hooks/useKeysRef/useKeysRef.ts"],"sourcesContent":["import React, { useCallback, useEffect } from 'react';\n\nimport { KeyCode } from '##/utils/types/KeyCode';\n\nexport type KeyHandlers = Partial<\n Record<KeyCode, (e: KeyboardEvent) => void>\n> & {\n [key: string]: (e: KeyboardEvent) => void;\n};\n\ntype UseKeysProps = {\n ref?: React.RefObject<HTMLElement>;\n keys?: KeyHandlers;\n isActive?: boolean;\n eventType?: 'keypress' | 'keydown' | 'keyup';\n};\n\nconst getKeyHandler = (keys: KeyHandlers) => {\n return (e: KeyboardEvent) => {\n (keys[e.code as KeyCode] || keys[e.key as KeyCode])?.(e);\n };\n};\n\nexport const useKeysRef = (params: UseKeysProps) => {\n const { ref, keys, isActive = true, eventType = 'keydown' } = params;\n\n const onKeyDown = useCallback(\n (e: Event) => {\n if (keys && isActive) {\n const event = e as unknown as KeyboardEvent;\n getKeyHandler(keys)(event);\n }\n },\n [keys, isActive],\n );\n\n useEffect(() => {\n ref?.current?.addEventListener(eventType, onKeyDown);\n\n return () => {\n ref?.current?.removeEventListener(eventType, onKeyDown);\n };\n }, [ref, keys, isActive, eventType]);\n};\n"],"mappings":"AAAA,OAAgBA,WAAhB,CAA6BC,SAA7B,KAA8C,OAA9C,CAiBA,GAAMC,cAAa,CAAG,SAACC,CAAD,CAAuB,CAC3C,MAAO,UAACC,CAAD,CAAsB,iBAC1BD,CAAI,CAACC,CAAC,CAACC,IAAH,CAAJ,EAA2BF,CAAI,CAACC,CAAC,CAACE,GAAH,CADL,qBAC3B,EAAsDF,CAAtD,CACD,CACF,CAJD,CAMA,MAAO,IAAMG,WAAU,CAAG,SAACC,CAAD,CAA0B,IAC1CC,EAD0C,CACYD,CADZ,CAC1CC,GAD0C,CACrCN,CADqC,CACYK,CADZ,CACrCL,IADqC,GACYK,CADZ,CAC/BE,QAD+B,CAC/BA,CAD+B,oBACYF,CADZ,CACdG,SADc,CACdA,CADc,YACF,SADE,GAG5CC,CAAS,CAAGZ,WAAW,CAC3B,SAACI,CAAD,CAAc,CACZ,GAAID,CAAI,EAAIO,CAAZ,CAAsB,CAEpBR,aAAa,CAACC,CAAD,CAAb,CADcC,CACd,CACD,CACF,CAN0B,CAO3B,CAACD,CAAD,CAAOO,CAAP,CAP2B,CAHqB,CAalDT,SAAS,CAAC,UAAM,OAGd,cAFAQ,CAEA,WAFAA,CAEA,YAFAA,CAAG,CAAEI,OAEL,qBAFA,EAAcC,gBAAd,CAA+BH,CAA/B,CAA0CC,CAA1C,CAEA,CAAO,UAAM,cACXH,CADW,WACXA,CADW,YACXA,CAAG,CAAEI,OADM,qBACX,EAAcE,mBAAd,CAAkCJ,CAAlC,CAA6CC,CAA7C,CACD,CACF,CANQ,CAMN,CAACH,CAAD,CAAMN,CAAN,CAAYO,CAAZ,CAAsBC,CAAtB,CANM,CAOV,CApBM"}
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../__internal__/src/hooks/useKeysRef";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../__internal__/src/hooks/useKeysRef";
|