@consta/uikit 4.21.0 → 4.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/BadgeGroup/index.d.ts +1 -0
  2. package/BadgeGroup/index.js +1 -0
  3. package/__internal__/src/components/Avatar/Avatar.css +1 -1
  4. package/__internal__/src/components/Badge/Badge.css +1 -1
  5. package/__internal__/src/components/BadgeGroup/BadgeGroup.css +1 -0
  6. package/__internal__/src/components/BadgeGroup/BadgeGroup.d.ts +4 -0
  7. package/__internal__/src/components/BadgeGroup/BadgeGroup.js +2 -0
  8. package/__internal__/src/components/BadgeGroup/BadgeGroup.js.map +1 -0
  9. package/__internal__/src/components/BadgeGroup/helper.d.ts +35 -0
  10. package/__internal__/src/components/BadgeGroup/helper.js +2 -0
  11. package/__internal__/src/components/BadgeGroup/helper.js.map +1 -0
  12. package/__internal__/src/components/BadgeGroup/index.d.ts +1 -0
  13. package/__internal__/src/components/BadgeGroup/index.js +2 -0
  14. package/__internal__/src/components/BadgeGroup/index.js.map +1 -0
  15. package/__internal__/src/components/BadgeGroup/types.d.ts +47 -0
  16. package/__internal__/src/components/BadgeGroup/types.js +2 -0
  17. package/__internal__/src/components/BadgeGroup/types.js.map +1 -0
  18. package/__internal__/src/components/Button/Button.css +1 -1
  19. package/__internal__/src/components/Checkbox/Checkbox.css +2 -2
  20. package/__internal__/src/components/ChoiceGroup/ChoiceGroup.css +1 -1
  21. package/__internal__/src/components/Collapse/Collapse.css +1 -1
  22. package/__internal__/src/components/Collapse/Collapse.js +1 -1
  23. package/__internal__/src/components/Collapse/Collapse.js.map +1 -1
  24. package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.css +1 -1
  25. package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.js +1 -1
  26. package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.js.map +1 -1
  27. package/__internal__/src/components/Collapse/types.d.ts +2 -6
  28. package/__internal__/src/components/Collapse/types.js.map +1 -1
  29. package/__internal__/src/components/CollapseGroup/helpers.d.ts +2 -2
  30. package/__internal__/src/components/Combobox/Combobox.js +1 -1
  31. package/__internal__/src/components/Combobox/Combobox.js.map +1 -1
  32. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.js +1 -1
  33. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.js.map +1 -1
  34. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/DatePickerFieldTypeDateTimeRange.js +1 -1
  35. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/DatePickerFieldTypeDateTimeRange.js.map +1 -1
  36. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/DatePickerFieldTypeMonthRange.js +1 -1
  37. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/DatePickerFieldTypeMonthRange.js.map +1 -1
  38. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange.js +1 -1
  39. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange.js.map +1 -1
  40. package/__internal__/src/components/Select/Select.js +1 -1
  41. package/__internal__/src/components/Select/Select.js.map +1 -1
  42. package/__internal__/src/components/SelectComponents/SelectContainer/SelectContainer.js +1 -1
  43. package/__internal__/src/components/SelectComponents/SelectContainer/SelectContainer.js.map +1 -1
  44. package/__internal__/src/components/Slider/Slider.css +1 -1
  45. package/__internal__/src/components/Slider/Slider.js +1 -1
  46. package/__internal__/src/components/Slider/Slider.js.map +1 -1
  47. package/__internal__/src/components/Slider/SliderInput/SliderInput.css +1 -0
  48. package/__internal__/src/components/Slider/SliderInput/SliderInput.d.ts +1 -0
  49. package/__internal__/src/components/Slider/SliderInput/SliderInput.js +1 -1
  50. package/__internal__/src/components/Slider/SliderInput/SliderInput.js.map +1 -1
  51. package/__internal__/src/components/Slider/SliderLine/SliderLine.css +1 -1
  52. package/__internal__/src/components/Slider/SliderPoint/SliderPoint.css +1 -1
  53. package/__internal__/src/components/Slider/SliderPoint/SliderPoint.js +1 -1
  54. package/__internal__/src/components/Slider/SliderPoint/SliderPoint.js.map +1 -1
  55. package/__internal__/src/components/Slider/helper.d.ts +4 -0
  56. package/__internal__/src/components/Slider/helper.js +1 -1
  57. package/__internal__/src/components/Slider/helper.js.map +1 -1
  58. package/__internal__/src/components/Slider/useSlider/helper.d.ts +1 -0
  59. package/__internal__/src/components/Slider/useSlider/helper.js +1 -1
  60. package/__internal__/src/components/Slider/useSlider/helper.js.map +1 -1
  61. package/__internal__/src/components/Slider/useSlider/useSlider.js +1 -1
  62. package/__internal__/src/components/Slider/useSlider/useSlider.js.map +1 -1
  63. package/__internal__/src/components/Slider/useSliderStationing.js +1 -1
  64. package/__internal__/src/components/Slider/useSliderStationing.js.map +1 -1
  65. package/__internal__/src/components/SpoilerCanary/Spoiler.css +1 -0
  66. package/__internal__/src/components/SpoilerCanary/Spoiler.d.ts +5 -0
  67. package/__internal__/src/components/SpoilerCanary/Spoiler.js +2 -0
  68. package/__internal__/src/components/SpoilerCanary/Spoiler.js.map +1 -0
  69. package/__internal__/src/components/SpoilerCanary/SpoilerButton/SpoilerButton.css +1 -0
  70. package/__internal__/src/components/SpoilerCanary/SpoilerButton/SpoilerButton.d.ts +4 -0
  71. package/__internal__/src/components/SpoilerCanary/SpoilerButton/SpoilerButton.js +2 -0
  72. package/__internal__/src/components/SpoilerCanary/SpoilerButton/SpoilerButton.js.map +1 -0
  73. package/__internal__/src/components/SpoilerCanary/SpoilerButton/index.d.ts +1 -0
  74. package/__internal__/src/components/SpoilerCanary/SpoilerButton/index.js +2 -0
  75. package/__internal__/src/components/SpoilerCanary/SpoilerButton/index.js.map +1 -0
  76. package/__internal__/src/components/SpoilerCanary/index.d.ts +2 -0
  77. package/__internal__/src/components/SpoilerCanary/index.js +2 -0
  78. package/__internal__/src/components/SpoilerCanary/index.js.map +1 -0
  79. package/__internal__/src/components/SpoilerCanary/types.d.ts +32 -0
  80. package/__internal__/src/components/SpoilerCanary/types.js +2 -0
  81. package/__internal__/src/components/SpoilerCanary/types.js.map +1 -0
  82. package/__internal__/src/components/Steps/Steps.js +1 -1
  83. package/__internal__/src/components/Steps/Steps.js.map +1 -1
  84. package/__internal__/src/components/Steps/StepsStep/StepsStep.css +1 -1
  85. package/__internal__/src/components/Steps/StepsStep/StepsStep.d.ts +1 -0
  86. package/__internal__/src/components/Steps/StepsStep/StepsStep.js +1 -1
  87. package/__internal__/src/components/Steps/StepsStep/StepsStep.js.map +1 -1
  88. package/__internal__/src/components/Steps/helper.d.ts +1 -1
  89. package/__internal__/src/components/Steps/types.d.ts +1 -1
  90. package/__internal__/src/components/Steps/types.js +1 -1
  91. package/__internal__/src/components/Steps/types.js.map +1 -1
  92. package/__internal__/src/components/TagBase/TagBase.css +1 -1
  93. package/__internal__/src/components/TextField/TextField.js +1 -1
  94. package/__internal__/src/components/TextField/TextField.js.map +1 -1
  95. package/__internal__/src/components/Tooltip/Tooltip.css +1 -1
  96. package/__internal__/src/components/UserSelect/UserSelect.js +1 -1
  97. package/__internal__/src/components/UserSelect/UserSelect.js.map +1 -1
  98. package/__internal__/src/hooks/useResizableContentCanary/helpers.d.ts +11 -0
  99. package/__internal__/src/hooks/useResizableContentCanary/helpers.js +2 -0
  100. package/__internal__/src/hooks/useResizableContentCanary/helpers.js.map +1 -0
  101. package/__internal__/src/hooks/useResizableContentCanary/index.d.ts +1 -0
  102. package/__internal__/src/hooks/useResizableContentCanary/index.js +2 -0
  103. package/__internal__/src/hooks/useResizableContentCanary/index.js.map +1 -0
  104. package/__internal__/src/hooks/useResizableContentCanary/types.d.ts +27 -0
  105. package/__internal__/src/hooks/useResizableContentCanary/types.js +2 -0
  106. package/__internal__/src/hooks/useResizableContentCanary/types.js.map +1 -0
  107. package/__internal__/src/hooks/useResizableContentCanary/useResizableContent.d.ts +2 -0
  108. package/__internal__/src/hooks/useResizableContentCanary/useResizableContent.js +2 -0
  109. package/__internal__/src/hooks/useResizableContentCanary/useResizableContent.js.map +1 -0
  110. package/__internal__/src/hooks/useSelect/useSelect.js +1 -1
  111. package/__internal__/src/hooks/useSelect/useSelect.js.map +1 -1
  112. package/__internal__/src/mixs/MixPopoverArrow/MixPopoverArrow.css +1 -1
  113. package/package.json +1 -1
@@ -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}from"react";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{FieldCaption}from"../FieldCaption";import{FieldLabel}from"../FieldLabel";import{useFlag}from"../../hooks/useFlag";import{useSortSteps}from"../../hooks/useSortSteps";import{cn}from"../../utils/bem";import{defaultPropSize,defaultTooltipFormatter,getIcon,getMaxForStartField,getMinForEndField,getOnChandgeForInput,getValueForInput}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.labelIcon,z=d.status,A=d.caption,B=d.tooltipFormatter,C=void 0===B?defaultTooltipFormatter:B,D=d.className,E=d.style,F=_objectWithoutProperties(d,_excluded),G=useFlag(!1),H=_slicedToArray(G,2),I=H[0],J=H[1],K=J.on,L=J.off,M=useRef(null),N=useRef(null),O=useSortSteps({step:l,min:f,max:h}),P=l?O:Math.abs((h-f)/100),Q=getIcon(t),R=getIcon(s),S=sizeMap[p],T=useSlider({disabled:n,range:w,value:k,min:f,max:h,step:P,onChange:i,onAfterChange:j,sliderRef:c,buttonRefs:[M,N]}),U=T.onKeyPress,V=T.onFocus,W=T.handlePress,X=T.onSliderClick,Y=T.popoverPosition,Z=T.activeButton,$=T.currentValue,_=useSliderStationing(1===$.length?$[0]:$,f,h,r,w,P,[M,N],c),aa=_.lineSizes,ba=_.buttonPositions,ca={role:"button",tabIndex:0,className:cnSlider("Control"),ref:c,onClick:X},da=function(a){a?K():L()};return React.createElement("div",Object.assign({ref:b,className:cnSlider({size:p},[D]),style:E},F),x&&React.createElement(FieldLabel,{icon:y,className:cnSlider("Label"),size:p},x),React.createElement("div",{className:cnSlider("Container")},("input"===s||R)&&React.createElement("div",{className:cnSlider("Side",{position:"left"})},"input"===s&&React.createElement(SliderInput,{value:getValueForInput(a,0),onChange:getOnChandgeForInput(a,0),size:p,min:f,max:getMaxForStartField(a),status:z,step:P,disabled:n}),R&&React.createElement(R,{size:null!==S&&void 0!==S?S:void 0,view:"secondary"})),React.createElement("div",ca,React.createElement(SliderLine,{hovered:I||"number"==typeof Z,onHover:da,lines:aa,disabled:n,view:r}),$.map(function(a,b){return React.createElement(SliderPoint,{hovered:I||"number"==typeof Z,buttonRef:M,popoverPosition:Y[b],onKeyPress:U,onFocus:V,handlePress:W,disabled:n,position:ba[b],focused:Z===b,buttonLabel:b,withTooltip:u,onHover:da,tooltipFormatter:C,value:a,role:"slider","aria-valuemin":f,"aria-valuemax":h,"aria-valuenow":a,tooltipZIndex:"number"==typeof(null===E||void 0===E?void 0:E.zIndex)?E.zIndex+1:void 0,key:cnSlider("Point",{index:b})})})),("input"===t||Q)&&React.createElement("div",{className:cnSlider("Side",{position:"right"})},"input"===t&&React.createElement(SliderInput,{value:getValueForInput(a,1),onChange:getOnChandgeForInput(a,1),size:p,min:getMinForEndField(a),max:h,status:z,step:P,disabled:n}),Q&&React.createElement(Q,{size:S,view:"secondary"}))),A&&React.createElement(FieldCaption,{className:cnSlider("Caption"),status:z},A))};export var Slider=forwardRef(SliderRender);
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.labelIcon,z=d.status,A=d.caption,B=d.tooltipFormatter,C=void 0===B?defaultTooltipFormatter:B,D=d.className,E=d.style,F=_objectWithoutProperties(d,_excluded),G=useState(),H=_slicedToArray(G,2),I=H[0],J=H[1],K=useFlag(!1),L=_slicedToArray(K,2),M=L[0],N=L[1],O=N.on,P=N.off,Q=useRef(null),R=useRef(null),S=useRef(null),T=useSortSteps({step:getValidStep(f,h,l),min:f,max:h}),U=l?T:Math.abs((h-f)/100),V=getIcon(t),W=getIcon(s),X=sizeMap[p],Y=useSlider({disabled:n,range:w,value:k,min:f,max:h,step:U,onChange:i,onAfterChange:j,sliderRef:c,containerRef:Q,buttonRefs:[R,S]}),Z=Y.onKeyPress,$=Y.onFocus,_=Y.handlePress,aa=Y.onSliderClick,ba=Y.popoverPosition,ca=Y.activeButton,da=Y.currentValue,ea=useSliderStationing(1===da.length?da[0]:da,f,h,r,w,U,[R,S],c),fa=ea.lineSizes,ga=ea.buttonPositions,ha={role:"button",tabIndex:0,className:cnSlider("Control"),ref:c,onClick:aa},ia=function(a){a?O():P()};return React.createElement("div",Object.assign({ref:useForkRef([b,Q]),className:cnSlider({size:p},[D]),style:E},F),x&&React.createElement(FieldLabel,{icon:y,className:cnSlider("Label"),size:p},x),React.createElement("div",{className:cnSlider("Container")},("input"===s||W)&&React.createElement("div",{className:cnSlider("Side",{position:"left"})},"input"===s&&React.createElement(SliderInput,{value:getValueForInput(a,0),onFocus:function(){return J(0)},onBlur:function onBlur(){return J(void 0)},onChange:getOnChandgeForInput(a,0),size:p,min:f,inputMode:"numeric",max:getMaxForStartField(a),status:z,step:U,disabled:n}),W&&React.createElement(W,{size:null!==X&&void 0!==X?X:void 0,view:"secondary"})),React.createElement("div",ha,React.createElement(SliderLine,{hovered:M||"number"==typeof ca,onHover:ia,lines:fa,disabled:n,view:r}),da.map(function(a,b){var c=1<da.length&&da[0]===da[1]&&a===h&&0===b;return React.createElement(SliderPoint,{hovered:M||"number"==typeof ca,buttonRef:R,popoverPosition:ba[b],onKeyPress:Z,onFocus:$,handlePress:_,disabled:n,active:c,position:ga[b],focused:ca===b||I===b,buttonLabel:b,withTooltip:u,onHover:ia,tooltipFormatter:C,value:a,role:"slider","aria-valuemin":f,"aria-valuemax":h,"aria-valuenow":a,tooltipZIndex:"number"==typeof(null===E||void 0===E?void 0:E.zIndex)?E.zIndex+1:void 0,key:cnSlider("Point",{index:b})})})),("input"===t||V)&&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 J(void 0)},size:p,min:getMinForEndField(a),max:h,onFocus:function(){return J(isRangeParams(a)?1:0)},inputMode:"numeric",status:z,step:U,disabled:n}),V&&React.createElement(V,{size:X,view:"secondary"}))),A&&React.createElement(FieldCaption,{className:cnSlider("Caption"),status:z},A))};export var Slider=forwardRef(SliderRender);
2
2
  //# sourceMappingURL=Slider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.js","names":["React","forwardRef","useRef","usePropsHandler","FieldCaption","FieldLabel","useFlag","useSortSteps","cn","defaultPropSize","defaultTooltipFormatter","getIcon","getMaxForStartField","getMinForEndField","getOnChandgeForInput","getValueForInput","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","isHovered","on","off","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","zIndex","Slider"],"sources":["../../../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import './Slider.css';\n\nimport { IconPropSize } from '@consta/icons/Icon';\nimport React, { forwardRef, useRef } 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 { useSortSteps } from '##/hooks/useSortSteps';\nimport { cn } from '##/utils/bem';\n\nimport {\n defaultPropSize,\n defaultTooltipFormatter,\n getIcon,\n getMaxForStartField,\n getMinForEndField,\n getOnChandgeForInput,\n getValueForInput,\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 [isHovered, { on, off }] = useFlag(false);\n const leftButtonRef = useRef<HTMLButtonElement>(null);\n const rightButtonRef = useRef<HTMLButtonElement>(null);\n const sortedSteps = useSortSteps({ step: stepProp, min, max });\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 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={ref}\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 onChange={getOnChandgeForInput(props, 0)}\n size={size}\n min={min}\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 <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 position={buttonPositions[index]}\n focused={activeButton === 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' ? style.zIndex + 1 : undefined\n }\n key={cnSlider('Point', { index })}\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 size={size}\n min={getMinForEndField(props)}\n max={max}\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","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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"}
@@ -0,0 +1 @@
1
+ .SliderInput{width:var(--slider-input-width)}.SliderInput .TextField-Input{min-width:auto}.SliderInput_size_l,.SliderInput_size_m{--slider-input-width:118px}.SliderInput_size_s{--slider-input-width:106px}.SliderInput_size_xs{--slider-input-width:88px}
@@ -1,3 +1,4 @@
1
+ import './SliderInput.css';
1
2
  import React from 'react';
2
3
  import { TextFieldProps } from '../../TextField/TextField';
3
4
  declare type Props = Omit<TextFieldProps<'number'>, 'value' | 'onChange' | 'min' | 'max' | 'step'> & {
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["value","onChange","min","max","step"];import React,{useEffect,useState}from"react";import{TextField}from"../../TextField/TextField";import{getValidValue,isValidValue}from"../useSlider/helper";export var SliderInput=function(a){var b=a.value,c=a.onChange,d=a.min,f=void 0===d?0:d,g=a.max,h=void 0===g?100:g,i=a.step,j=void 0===i?1:i,k=_objectWithoutProperties(a,_excluded),l=useState((null===b||void 0===b?void 0:b.toString())||null),m=_slicedToArray(l,2),n=m[0],o=m[1];return useEffect(function(){return o((null===b||void 0===b?void 0:b.toString())||null)},[b]),React.createElement(TextField,Object.assign({onBlur:function commitChange(){var a=getValidValue(+n,f,h,j);null===c||void 0===c?void 0:c({value:a}),o(a.toString())},type:"number",min:f,max:h,step:j,onChange:function handleChange(a){var b=a.e,d=a.value;o(d),isValidValue(+d,f,h,j)&&(null===c||void 0===c?void 0:c({value:+d,e:b}))},value:n},k))};
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["value","onChange","min","max","step","size","className"];import"./SliderInput.css";import React,{useEffect,useState}from"react";import{cn}from"../../../utils/bem";import{TextField}from"../../TextField/TextField";import{getValidValue,isValidValue}from"../useSlider/helper";var cnSliderInput=cn("SliderInput");export var SliderInput=function(a){var b=a.value,c=a.onChange,d=a.min,f=void 0===d?0:d,g=a.max,h=void 0===g?100:g,i=a.step,j=void 0===i?1:i,k=a.size,l=void 0===k?"m":k,m=a.className,n=_objectWithoutProperties(a,_excluded),o=useState((null===b||void 0===b?void 0:b.toString())||null),p=_slicedToArray(o,2),q=p[0],r=p[1];return useEffect(function(){return r((null===b||void 0===b?void 0:b.toString())||null)},[b]),React.createElement(TextField,Object.assign({onBlur:function commitChange(){var a=getValidValue(+q,f,h,j);null===c||void 0===c?void 0:c({value:a}),r(a.toString())},type:"number",min:f,max:h,step:j,size:l,className:cnSliderInput({size:l},[m]),onChange:function handleChange(a){var b=a.e,d=a.value;r(d),isValidValue(+d,f,h,j)&&(null===c||void 0===c?void 0:c({value:+d,e:b}))},value:q},n))};
2
2
  //# sourceMappingURL=SliderInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SliderInput.js","names":["React","useEffect","useState","TextField","getValidValue","isValidValue","SliderInput","props","value","onChange","min","max","step","otherProps","toString","currentValue","setCurrentValue","commitChange","validatedValue","handleChange","e"],"sources":["../../../../../../src/components/Slider/SliderInput/SliderInput.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport {\n TextField,\n TextFieldOnChangeArguments,\n TextFieldProps,\n} from '../../TextField/TextField';\nimport { getValidValue, isValidValue } from '../useSlider/helper';\n\ntype Props = Omit<\n TextFieldProps<'number'>,\n 'value' | 'onChange' | 'min' | 'max' | 'step'\n> & {\n value?: number;\n step?: number | number[];\n min?: number;\n max?: number;\n onChange?: (props: {\n e?: React.ChangeEvent | React.MouseEvent | React.KeyboardEvent;\n value: number;\n }) => void;\n};\n\nexport const SliderInput = (props: Props) => {\n const {\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n ...otherProps\n } = props;\n\n const [currentValue, setCurrentValue] = useState<string | null>(\n value?.toString() || null,\n );\n\n const handleChange = ({ e, value }: TextFieldOnChangeArguments) => {\n setCurrentValue(value);\n if (isValidValue(Number(value), min, max, step)) {\n onChange?.({ value: Number(value), e });\n }\n };\n\n const commitChange = () => {\n const validatedValue = getValidValue(Number(currentValue), min, max, step);\n onChange?.({ value: validatedValue });\n setCurrentValue(validatedValue.toString());\n };\n\n useEffect(() => setCurrentValue(value?.toString() || null), [value]);\n\n return (\n <TextField\n onBlur={commitChange}\n type=\"number\"\n min={min}\n max={max}\n step={step}\n onChange={handleChange}\n value={currentValue}\n {...otherProps}\n />\n );\n};\n"],"mappings":"4MAAA,MAAOA,MAAP,EAAgBC,SAAhB,CAA2BC,QAA3B,KAA2C,OAA3C,CAEA,OACEC,SADF,iCAKA,OAASC,aAAT,CAAwBC,YAAxB,2BAgBA,MAAO,IAAMC,YAAW,CAAG,SAACC,CAAD,CAAkB,IAEzCC,EAFyC,CAQvCD,CARuC,CAEzCC,KAFyC,CAGzCC,CAHyC,CAQvCF,CARuC,CAGzCE,QAHyC,GAQvCF,CARuC,CAIzCG,GAJyC,CAIzCA,CAJyC,YAInC,CAJmC,KAQvCH,CARuC,CAKzCI,GALyC,CAKzCA,CALyC,YAKnC,GALmC,KAQvCJ,CARuC,CAMzCK,IANyC,CAMzCA,CANyC,YAMlC,CANkC,GAOtCC,CAPsC,0BAQvCN,CARuC,cAUHL,QAAQ,CAC9C,QAAAM,CAAK,WAALA,CAAA,QAAAA,CAAK,CAAEM,QAAP,KAAqB,IADyB,CAVL,uBAUpCC,CAVoC,MAUtBC,CAVsB,MA6B3C,MAFAf,UAAS,CAAC,iBAAMe,EAAe,CAAC,QAAAR,CAAK,WAALA,CAAA,QAAAA,CAAK,CAAEM,QAAP,KAAqB,IAAtB,CAArB,CAAD,CAAmD,CAACN,CAAD,CAAnD,CAET,CACE,oBAAC,SAAD,gBACE,MAAM,CAVW,QAAfS,aAAe,EAAM,CACzB,GAAMC,EAAc,CAAGd,aAAa,EAAQW,CAAR,CAAuBL,CAAvB,CAA4BC,CAA5B,CAAiCC,CAAjC,CAApC,CADyB,OAEzBH,CAFyB,WAEzBA,CAFyB,QAEzBA,CAAQ,CAAG,CAAED,KAAK,CAAEU,CAAT,CAAH,CAFiB,CAGzBF,CAAe,CAACE,CAAc,CAACJ,QAAf,EAAD,CAChB,CAKC,CAEE,IAAI,CAAC,QAFP,CAGE,GAAG,CAAEJ,CAHP,CAIE,GAAG,CAAEC,CAJP,CAKE,IAAI,CAAEC,CALR,CAME,QAAQ,CAtBS,QAAfO,aAAe,GAA8C,IAA3CC,EAA2C,GAA3CA,CAA2C,CAAxCZ,CAAwC,GAAxCA,KAAwC,CACjEQ,CAAe,CAACR,CAAD,CADkD,CAE7DH,YAAY,EAAQG,CAAR,CAAgBE,CAAhB,CAAqBC,CAArB,CAA0BC,CAA1B,CAFiD,UAG/DH,CAH+D,WAG/DA,CAH+D,QAG/DA,CAAQ,CAAG,CAAED,KAAK,EAASA,CAAhB,CAAwBY,CAAC,CAADA,CAAxB,CAAH,CAHuD,CAKlE,CAWC,CAOE,KAAK,CAAEL,CAPT,EAQMF,CARN,EAWH,CAzCM"}
1
+ {"version":3,"file":"SliderInput.js","names":["React","useEffect","useState","cn","TextField","getValidValue","isValidValue","cnSliderInput","SliderInput","props","value","onChange","min","max","step","size","className","otherProps","toString","currentValue","setCurrentValue","commitChange","validatedValue","handleChange","e"],"sources":["../../../../../../src/components/Slider/SliderInput/SliderInput.tsx"],"sourcesContent":["import './SliderInput.css';\n\nimport React, { useEffect, useState } from 'react';\n\nimport { cn } from '##/utils/bem';\n\nimport {\n TextField,\n TextFieldOnChangeArguments,\n TextFieldProps,\n} from '../../TextField/TextField';\nimport { getValidValue, isValidValue } from '../useSlider/helper';\n\ntype Props = Omit<\n TextFieldProps<'number'>,\n 'value' | 'onChange' | 'min' | 'max' | 'step'\n> & {\n value?: number;\n step?: number | number[];\n min?: number;\n max?: number;\n onChange?: (props: {\n e?: React.ChangeEvent | React.MouseEvent | React.KeyboardEvent;\n value: number;\n }) => void;\n};\n\nconst cnSliderInput = cn('SliderInput');\n\nexport const SliderInput = (props: Props) => {\n const {\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n size = 'm',\n className,\n ...otherProps\n } = props;\n\n const [currentValue, setCurrentValue] = useState<string | null>(\n value?.toString() || null,\n );\n\n const handleChange = ({ e, value }: TextFieldOnChangeArguments) => {\n setCurrentValue(value);\n if (isValidValue(Number(value), min, max, step)) {\n onChange?.({ value: Number(value), e });\n }\n };\n\n const commitChange = () => {\n const validatedValue = getValidValue(Number(currentValue), min, max, step);\n onChange?.({ value: validatedValue });\n setCurrentValue(validatedValue.toString());\n };\n\n useEffect(() => setCurrentValue(value?.toString() || null), [value]);\n\n return (\n <TextField\n onBlur={commitChange}\n type=\"number\"\n min={min}\n max={max}\n step={step}\n size={size}\n className={cnSliderInput({ size }, [className])}\n onChange={handleChange}\n value={currentValue}\n {...otherProps}\n />\n );\n};\n"],"mappings":"+NAAA,0BAEA,MAAOA,MAAP,EAAgBC,SAAhB,CAA2BC,QAA3B,KAA2C,OAA3C,CAEA,OAASC,EAAT,0BAEA,OACEC,SADF,iCAKA,OAASC,aAAT,CAAwBC,YAAxB,2BAgBA,GAAMC,cAAa,CAAGJ,EAAE,CAAC,aAAD,CAAxB,CAEA,MAAO,IAAMK,YAAW,CAAG,SAACC,CAAD,CAAkB,IAEzCC,EAFyC,CAUvCD,CAVuC,CAEzCC,KAFyC,CAGzCC,CAHyC,CAUvCF,CAVuC,CAGzCE,QAHyC,GAUvCF,CAVuC,CAIzCG,GAJyC,CAIzCA,CAJyC,YAInC,CAJmC,KAUvCH,CAVuC,CAKzCI,GALyC,CAKzCA,CALyC,YAKnC,GALmC,KAUvCJ,CAVuC,CAMzCK,IANyC,CAMzCA,CANyC,YAMlC,CANkC,KAUvCL,CAVuC,CAOzCM,IAPyC,CAOzCA,CAPyC,YAOlC,GAPkC,GAQzCC,CARyC,CAUvCP,CAVuC,CAQzCO,SARyC,CAStCC,CATsC,0BAUvCR,CAVuC,cAYHP,QAAQ,CAC9C,QAAAQ,CAAK,WAALA,CAAA,QAAAA,CAAK,CAAEQ,QAAP,KAAqB,IADyB,CAZL,uBAYpCC,CAZoC,MAYtBC,CAZsB,MA+B3C,MAFAnB,UAAS,CAAC,iBAAMmB,EAAe,CAAC,QAAAV,CAAK,WAALA,CAAA,QAAAA,CAAK,CAAEQ,QAAP,KAAqB,IAAtB,CAArB,CAAD,CAAmD,CAACR,CAAD,CAAnD,CAET,CACE,oBAAC,SAAD,gBACE,MAAM,CAVW,QAAfW,aAAe,EAAM,CACzB,GAAMC,EAAc,CAAGjB,aAAa,EAAQc,CAAR,CAAuBP,CAAvB,CAA4BC,CAA5B,CAAiCC,CAAjC,CAApC,CADyB,OAEzBH,CAFyB,WAEzBA,CAFyB,QAEzBA,CAAQ,CAAG,CAAED,KAAK,CAAEY,CAAT,CAAH,CAFiB,CAGzBF,CAAe,CAACE,CAAc,CAACJ,QAAf,EAAD,CAChB,CAKC,CAEE,IAAI,CAAC,QAFP,CAGE,GAAG,CAAEN,CAHP,CAIE,GAAG,CAAEC,CAJP,CAKE,IAAI,CAAEC,CALR,CAME,IAAI,CAAEC,CANR,CAOE,SAAS,CAAER,aAAa,CAAC,CAAEQ,IAAI,CAAJA,CAAF,CAAD,CAAW,CAACC,CAAD,CAAX,CAP1B,CAQE,QAAQ,CAxBS,QAAfO,aAAe,GAA8C,IAA3CC,EAA2C,GAA3CA,CAA2C,CAAxCd,CAAwC,GAAxCA,KAAwC,CACjEU,CAAe,CAACV,CAAD,CADkD,CAE7DJ,YAAY,EAAQI,CAAR,CAAgBE,CAAhB,CAAqBC,CAArB,CAA0BC,CAA1B,CAFiD,UAG/DH,CAH+D,WAG/DA,CAH+D,QAG/DA,CAAQ,CAAG,CAAED,KAAK,EAASA,CAAhB,CAAwBc,CAAC,CAADA,CAAxB,CAAH,CAHuD,CAKlE,CAWC,CASE,KAAK,CAAEL,CATT,EAUMF,CAVN,EAaH,CA7CM"}
@@ -1 +1 @@
1
- .SliderLine{--slider-line-radius:0;align-items:center;border-radius:var(--control-radius);display:flex;overflow:hidden;width:100%}.SliderLine_view_division{--slider-line-radius:var(--control-radius);gap:var(--space-2xs)}.SliderLine-Line{--slider-line-color:var(--color-control-bg-ghost);background-color:var(--slider-line-color);border-radius:var(--slider-line-radius);height:var(--space-2xs);transition:background-color .3s;width:var(--slider-line-size)}.SliderLine-Line_active{--slider-line-color:var(--color-control-bg-primary)}.SliderLine-Line_hovered.SliderLine-Line_active{--slider-line-color:var(--color-control-bg-primary-hover)}.SliderLine-Line_disabled{--slider-line-color:var(--color-control-bg-disable)}
1
+ .SliderLine{--slider-line-radius:0;align-items:center;border-radius:var(--control-radius);display:flex;overflow:hidden;width:100%}.SliderLine_view_division{--slider-line-radius:var(--control-radius);gap:var(--space-2xs)}.SliderLine-Line{--slider-line-color:var(--color-control-bg-ghost);background-color:var(--slider-line-color);border-radius:var(--slider-line-radius);height:var(--space-2xs);transition:background-color .3s;width:var(--slider-line-size)}.SliderLine-Line_active{--slider-line-color:var(--color-control-bg-primary)}.SliderLine-Line_active.SliderLine-Line_disabled{--slider-line-color:var(--color-bg-border)}.SliderLine-Line_hovered.SliderLine-Line_active{--slider-line-color:var(--color-control-bg-primary-hover)}.SliderLine-Line_disabled{--slider-line-color:var(--color-control-bg-disable)}
@@ -1 +1 @@
1
- .SliderPoint{align-items:center;background-color:var(--color-bg-default);border:var(--space-3xs) solid var(--color-control-bg-primary);border-radius:calc(var(--space-m)*.5);cursor:pointer;display:flex;height:var(--space-m);justify-content:center;left:var(--slider-button-left);padding:0;position:absolute;top:0;transition:border-color .3s;width:var(--space-m);z-index:1}.SliderPoint_hovered{border-color:var(--color-control-bg-primary-hover)}.SliderPoint_disabled{border-color:var(--color-control-bg-ghost);cursor:auto}.SliderPoint-Tooltip{pointer-events:none}
1
+ .SliderPoint{align-items:center;background-color:var(--color-bg-default);border:var(--space-3xs) solid var(--color-control-bg-primary);border-radius:calc(var(--space-m)*.5);cursor:pointer;display:flex;height:var(--space-m);justify-content:center;left:var(--slider-button-left);padding:0;position:absolute;top:0;transition:border-color .3s;width:var(--space-m);z-index:0}.SliderPoint_hovered{border-color:var(--color-control-bg-primary-hover)}.SliderPoint_disabled{border-color:var(--color-control-bg-ghost);cursor:auto}.SliderPoint:focus,.SliderPoint:hover,.SliderPoint_active{z-index:1}.SliderPoint-Tooltip{pointer-events:none}
@@ -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","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+22)}}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.handlePress,l=a.onKeyPress,m=a.tooltipFormatter,n=a.buttonLabel,o=a.onFocus,p=a.tooltipZIndex,q=_objectWithoutProperties(a,_excluded),r=useFlag(!1),s=_slicedToArray(r,2),t=s[0],u=s[1],v=useTheme(),w=v.theme,x=_objectSpread(_objectSpread({},w),{},{color:{primary:w.color.invert,accent:w.color.accent,invert:w.color.primary}}),y=generateThemeClassNames(x),z=function(a){f||(null===o||void 0===o?void 0:o(a,n),u.on())},A=function(a){f||(null===c||void 0===c?void 0:c(a),a&&u.on(),a&&u.on(),!a&&!h&&u.off())},B=useRef(null),C=getTooltipPosition(i,j||B);return useEffect(function(){h?u.on():u.off()},[h]),React.createElement(React.Fragment,null,React.createElement("button",Object.assign({type:"button","aria-label":"".concat(n,"-button"),className:cnSliderPoint({hovered:b,disabled:f},[f?"":cnMixFocus()]),onMouseOver:function onMouseOver(){return A(!0)},onMouseOut:function onMouseOut(){return A(!1)},onMouseDown:function onMouseDown(){return null===k||void 0===k?void 0:k(n)},onTouchStart:function onTouchStart(){return null===k||void 0===k?void 0:k(n)},onKeyDown:function onKeyDown(a){return null===l||void 0===l?void 0:l(a,n)},onFocus:z,onBlur:function handleBlur(a){f||(null===o||void 0===o?void 0:o(a,null),u.off())},onClick:z,ref:useForkRef([j,B]),tabIndex:0,style:_defineProperty({},"--slider-button-left","".concat(e,"%"))},q)),t&&g&&i&&React.createElement(ThemeContext.Provider,{value:{theme:x,themeClassNames:y}},React.createElement(Tooltip,{position:C,className:cnSliderPoint("Tooltip"),direction:"downCenter",possibleDirections:["downCenter","leftDown","rightDown","upCenter"],style:{zIndex:p},offset:8},m?m(d):d)))};
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.tooltipZIndex,r=_objectWithoutProperties(a,_excluded),s=useFlag(!1),t=_slicedToArray(s,2),u=t[0],v=t[1],w=useTheme(),x=w.theme,y=_objectSpread(_objectSpread({},x),{},{color:{primary:x.color.invert,accent:x.color.accent,invert:x.color.primary}}),z=generateThemeClassNames(y),A=function(a){f||(null===p||void 0===p?void 0:p(a,o),v.on())},B=function(a){f||(null===c||void 0===c?void 0:c(a),a&&v.on(),a&&v.on(),!a&&!h&&v.off())},C=useRef(null),D=getTooltipPosition(i,j||C);return useEffect(function(){h?v.on():v.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 B(!0)},onMouseOut:function onMouseOut(){return B(!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:A,onBlur:function handleBlur(a){f||(null===p||void 0===p?void 0:p(a,null),v.off())},onClick:A,ref:useForkRef([j,C]),tabIndex:0,style:_defineProperty({},"--slider-button-left","".concat(e,"%"))},r)),u&&g&&i&&React.createElement(ThemeContext.Provider,{value:{theme:y,themeClassNames:z}},React.createElement(Tooltip,{position:D,className:cnSliderPoint("Tooltip"),direction:"downCenter",possibleDirections:["leftCenter","rightCenter","downCenter","leftDown","rightDown","upCenter"],style:{zIndex:q},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","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 + 22),\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 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 }, [\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=\"downCenter\"\n possibleDirections={[\n 'downCenter',\n 'leftDown',\n 'rightDown',\n 'upCenter',\n ]}\n style={{ zIndex: tooltipZIndex }}\n offset={8}\n >\n {tooltipFormatter ? tooltipFormatter(value) : value}\n </Tooltip>\n </ThemeContext.Provider>\n )}\n </>\n );\n};\n"],"mappings":"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"}
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=\"downCenter\"\n possibleDirections={[\n 'leftCenter',\n 'rightCenter',\n 'downCenter',\n 'leftDown',\n 'rightDown',\n 'upCenter',\n ]}\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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"}
@@ -64,10 +64,13 @@ export declare type SliderPointProps = PropsWithHTMLAttributes<{
64
64
  onKeyPress?: (e: React.KeyboardEvent, typeButton?: ActiveButton) => void;
65
65
  onHover?: (hovered: boolean) => void;
66
66
  position: number;
67
+ active?: boolean;
67
68
  tooltipZIndex?: number;
68
69
  }, HTMLButtonElement>;
69
70
  export declare type SliderProps<RANGE extends boolean> = PropsWithHTMLAttributes<Props<RANGE>, HTMLDivElement>;
70
71
  export declare type SliderComponent = <RANGE extends boolean = false>(props: SliderProps<RANGE>) => React.ReactElement | null;
72
+ export declare const isRangeParams: (params: Props<boolean>) => params is Props<true>;
73
+ export declare const isNotRangeParams: (params: Props<boolean>) => params is Props<false>;
71
74
  export declare const defaultTooltipFormatter: PropToolipFormatter;
72
75
  export declare type TrackPosition = {
73
76
  x: number;
@@ -82,4 +85,5 @@ export declare const getOnChandgeForInput: (props: SliderProps<boolean>, field:
82
85
  export declare const getIcon: (side?: Side) => IconComponent | undefined;
83
86
  export declare const getMaxForStartField: (props: SliderProps<boolean>) => number | undefined;
84
87
  export declare const getMinForEndField: (props: SliderProps<boolean>) => number | undefined;
88
+ export declare const getValidStep: (min: number, max: number, step?: number | number[]) => number | number[];
85
89
  export {};
@@ -1,2 +1,2 @@
1
- export var propStatus=["alert","warning","success"];export var defaultPropStatus=propStatus[0];export var propSize=["s","xs","m","l"];export var defaultPropSize=propSize[0];var isRangeParams=function(a){return!!a.range},isNotRangeParams=function(a){return!a.range};export var defaultTooltipFormatter=function(a){return(null===a||void 0===a?void 0:a.toString())||""};export var getValueForInput=function(a,b){return isRangeParams(a)?a.value[b]:a.value};export var getOnChandgeForInput=function(a,b){return function(c){var d=c.e,e=c.value;a.onChange&&(isNotRangeParams(a)&&a.onChange({e:d,value:e}),isRangeParams(a)&&a.onChange({e:d,value:b?[a.value[0],e]:[e,a.value[1]]}))}};export var getIcon=function(a){if("input"!==a)return a};export var getMaxForStartField=function(a){return isNotRangeParams(a)?a.max:isRangeParams(a)?a.value[1]:void 0};export var getMinForEndField=function(a){return isNotRangeParams(a)?a.min:isRangeParams(a)?a.value[0]:void 0};
1
+ export var propStatus=["alert","warning","success"];export var defaultPropStatus=propStatus[0];export var propSize=["s","xs","m","l"];export var defaultPropSize=propSize[0];export var isRangeParams=function(a){return!!a.range};export var isNotRangeParams=function(a){return!a.range};export var defaultTooltipFormatter=function(a){return(null===a||void 0===a?void 0:a.toString())||""};export var getValueForInput=function(a,b){return isRangeParams(a)?a.value[b]:a.value};export var getOnChandgeForInput=function(a,b){return function(c){var d=c.e,e=c.value;a.onChange&&(isNotRangeParams(a)&&a.onChange({e:d,value:e}),isRangeParams(a)&&a.onChange({e:d,value:b?[a.value[0],e]:[e,a.value[1]]}))}};export var getIcon=function(a){if("input"!==a)return a};export var getMaxForStartField=function(a){return isNotRangeParams(a)?a.max:isRangeParams(a)?a.value[1]:void 0};export var getMinForEndField=function(a){return isNotRangeParams(a)?a.min:isRangeParams(a)?a.value[0]:void 0};export var getValidStep=function(a,b,c){return c?Array.isArray(c)?c:0>=c?1:c:Math.abs((b-a)/100)};
2
2
  //# sourceMappingURL=helper.js.map
@@ -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"],"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 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\nconst isRangeParams = (params: Props<boolean>): params is Props<true> => {\n return !!params.range;\n};\n\nconst isNotRangeParams = (params: Props<boolean>): 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"],"mappings":"AAMA,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,C,GAuFDE,cAAa,CAAG,SAACC,CAAD,CAAmD,CACvE,MAAO,CAAC,CAACA,CAAM,CAACC,KACjB,C,CAEKC,gBAAgB,CAAG,SAACF,CAAD,CAAoD,CAC3E,MAAO,CAACA,CAAM,CAACC,KAChB,C,CAED,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"}
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":"AAMA,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,CAwFP,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"}
@@ -16,6 +16,7 @@ export declare type UseSliderProps<RANGE extends boolean = false> = {
16
16
  step?: number | number[];
17
17
  onChange?: PropOnChange<RANGE>;
18
18
  onAfterChange?: PropOnChange<RANGE>;
19
+ containerRef: React.RefObject<HTMLDivElement>;
19
20
  sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>;
20
21
  buttonRefs: React.RefObject<HTMLButtonElement>[];
21
22
  };
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{getSteps}from"../useSliderStationing";export var isRangeParams=function(a){return!!a.range};export var isNotRangeParams=function(a){return!a.range};export var trackPosition=function(a){return"clientX"in a?{x:a.clientX,y:a.clientY}:{x:a.changedTouches[0].clientX,y:a.changedTouches[0].clientY}};export var getActiveValue=function(a,b){return Array.isArray(a)?a["number"==typeof b?b:0]:a};export var detectActiveButton=function(a,b){var c=null;return b.forEach(function(b,d){var e=b.current;if(e&&a){var f=e.getBoundingClientRect(),g=f.x,h=f.y,i=f.width,j=f.height;g<=a.x&&g+i>=a.x&&h<=a.y&&h+j>=a.y&&(c=d,e.focus())}}),c};export var getValidValue=function(a,b,c,d){if("number"==typeof a){if(a>=c)return c;if(a<=b)return b;if(!Array.isArray(d)){var e=null===d||void 0===d?void 0:d.toString().split(".")[1],f=d||1;if(1>Math.abs(a))return+a.toFixed(e?e.length:0);var g=Math.round(+a.toFixed(e?e.length:0)/f)*f;return g>c?c:g<b?b:+g.toFixed(e?e.length:0)}var h=a;return d.forEach(function(e,f){var g=b,i=c;0===f?i=d[f+1]:f===d.length-1?(g=e,i=c):(i=d[f+1],g=e),a<=i&&a>=g&&((i+g)/2>a?h=g:h=i)}),h}return a};export var isValidValue=function(a,b,c,d){return getValidValue(a,b,c,d)===a};export var getValueByPosition=function(a,b,c,d,e){if(b.current&&a){var f=b.current.getBoundingClientRect(),g=f.x,h=f.width,i=Math.abs(d-c),j=c+(a.x-g)*i/h;return getValidValue(j,c,d,e)}return 0};export var getNewValue=function(a,b,c,d,e,f){var g=e,h=d;if(Array.isArray(b)){var i=_slicedToArray(b,2),j=i[0],k=i[1];1===f?h=j:g=k}var l=getValidValue(analyzeDivisionValue(a,c,d,e),h,g,c);return Array.isArray(b)?1===f?[b[0],l]:[l,b[1]]:l};export var analyzeDivisionValue=function(a,b,c,d){var e=a;if(Array.isArray(b)){var f=getSteps(b,c,d);f.forEach(function(b){a&&b.min<a&&b.max>=a&&((b.max+b.min)/2>a?e=b.min:e=b.max)})}else{if(a>=d)return d;if(a<=c)return c;var g=(a-c)%b;e=g>b/2?b-g+a:a-g}return e};
1
+ import{getSteps}from"../useSliderStationing";export var isRangeParams=function(a){return!!a.range};export var isNotRangeParams=function(a){return!a.range};export var trackPosition=function(a){return"clientX"in a?{x:a.clientX,y:a.clientY}:{x:a.changedTouches[0].clientX,y:a.changedTouches[0].clientY}};export var getActiveValue=function(a,b){return Array.isArray(a)?a["number"==typeof b?b:0]:a};export var detectActiveButton=function(a,b){var c=null;return b.forEach(function(b,d){var e=b.current;if(e&&a){var f=e.getBoundingClientRect(),g=f.x,h=f.y,i=f.width,j=f.height;g<=a.x&&g+i>=a.x&&h<=a.y&&h+j>=a.y&&(c=d,e.focus())}}),c};export var getValidValue=function(a,b,c,d){if("number"==typeof a){if(a>=c)return c;if(a<=b)return b;if(!Array.isArray(d)){var e=null===d||void 0===d?void 0:d.toString().split(".")[1],f=d||1;if(1>Math.abs(a))return+a.toFixed(e?e.length:0);if(a<b)return b;for(var g=b;g<=c;g+=f)if(a>=g&&a<g+f)return+(a<g+f/2?g:g+f).toFixed(e?e.length:0);return c}var h=a;return d.forEach(function(e,f){var g=b,i=c;0===f?i=d[f+1]:f===d.length-1?(g=e,i=c):(i=d[f+1],g=e),a<=i&&a>=g&&((i+g)/2>a?h=g:h=i)}),h}return a};export var isValidValue=function(a,b,c,d){return getValidValue(a,b,c,d)===a};export var getValueByPosition=function(a,b,c,d,e){if(b.current&&a){var f=b.current.getBoundingClientRect(),g=f.x,h=f.width,i=Math.abs(d-c),j=c+(a.x-g)*i/h;return getValidValue(j,c,d,e)}return 0};export var getNewValue=function(a,b,c,d,e,f){var g=getValidValue(analyzeDivisionValue(a,c,d,e),d,e,c);return Array.isArray(b)?1===f?[b[0],g]:[g,b[1]]:g};export var analyzeDivisionValue=function(a,b,c,d){var e=a;if(Array.isArray(b)){var f=getSteps(b,c,d);f.forEach(function(b){a&&b.min<a&&b.max>=a&&((b.max+b.min)/2>a?e=b.min:e=b.max)})}else{if(a>=d)return d;if(a<=c)return c;var g=(a-c)%b;e=g>b/2?b-g+a:a-g}return e};
2
2
  //# sourceMappingURL=helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","names":["getSteps","isRangeParams","params","range","isNotRangeParams","trackPosition","event","x","clientX","y","clientY","changedTouches","getActiveValue","value","active","Array","isArray","detectActiveButton","position","buttons","activeButton","forEach","buttonRef","index","button","current","getBoundingClientRect","width","height","focus","getValidValue","min","max","step","division","toString","split","stepValue","Math","abs","toFixed","length","roundValue","round","resultValue","stepPoint","minValue","maxValue","isValidValue","getValueByPosition","sliderRef","absoluteSize","getNewValue","changedValue","currentValue","maxRangeValue","minRangeValue","left","right","analyzedValue","analyzeDivisionValue","newValue","steps","stepSize","nearStep"],"sources":["../../../../../../src/components/Slider/useSlider/helper.ts"],"sourcesContent":["import React from 'react';\n\nimport { PropOnChange, SliderValue, TrackPosition } from '../helper';\nimport { getSteps } from '../useSliderStationing';\n\nexport type ActiveButton = 0 | 1 | null | undefined;\n\nexport type Stationing = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nexport type UseSliderProps<RANGE extends boolean = false> = {\n disabled: boolean;\n range?: RANGE;\n value: SliderValue<RANGE>;\n min: number;\n max: number;\n step?: number | number[];\n onChange?: PropOnChange<RANGE>;\n onAfterChange?: PropOnChange<RANGE>;\n sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>;\n buttonRefs: React.RefObject<HTMLButtonElement>[];\n};\n\nexport type UseSliderValues = {\n onKeyPress: (e: React.KeyboardEvent, typeButton: ActiveButton) => void;\n onFocus: (\n e: React.FocusEvent<HTMLButtonElement> | React.MouseEvent,\n button: ActiveButton,\n ) => void;\n handlePress: (typeButton: ActiveButton) => void;\n onSliderClick: React.MouseEventHandler;\n activeButton: ActiveButton;\n currentValue: [number] | [number, number];\n popoverPosition: TrackPosition[];\n};\n\nexport const isRangeParams = (\n params: UseSliderProps<boolean>,\n): params is UseSliderProps<true> => {\n return !!params.range;\n};\n\nexport const isNotRangeParams = (\n params: UseSliderProps<boolean>,\n): params is UseSliderProps<false> => {\n return !params.range;\n};\n\nexport const trackPosition = (\n event: TouchEvent | MouseEvent,\n): TrackPosition => {\n if ('clientX' in event) {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n }\n return {\n x: event.changedTouches[0].clientX,\n y: event.changedTouches[0].clientY,\n };\n};\n\nexport const getActiveValue = (\n value: number | [number, number],\n active: ActiveButton,\n) => {\n if (Array.isArray(value)) {\n return value[typeof active === 'number' ? active : 0];\n }\n return value;\n};\n\nexport const detectActiveButton: (\n posittion: TrackPosition,\n buttons: React.RefObject<HTMLButtonElement>[],\n) => ActiveButton = (position, buttons) => {\n let activeButton: ActiveButton = null;\n buttons.forEach((buttonRef, index) => {\n const button = buttonRef.current;\n if (button && position) {\n const { x, y, width, height } = button.getBoundingClientRect();\n if (\n x <= position.x &&\n x + width >= position.x &&\n y <= position.y &&\n y + height >= position.y\n ) {\n activeButton = index as ActiveButton;\n button.focus();\n }\n }\n });\n return activeButton;\n};\n\nexport const getValidValue = (\n value: number,\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (typeof value === 'number') {\n if (value >= max) return max;\n if (value <= min) return min;\n if (!Array.isArray(step)) {\n const division = step?.toString().split('.')[1];\n const stepValue = step || 1;\n if (Math.abs(value) < 1) {\n return Number(value.toFixed(division ? division.length : 0));\n }\n const roundValue =\n Math.round(\n Number(value.toFixed(division ? division.length : 0)) / stepValue,\n ) * stepValue;\n if (roundValue > max) return max;\n if (roundValue < min) return min;\n return Number(roundValue.toFixed(division ? division.length : 0));\n }\n let resultValue = value;\n step.forEach((stepPoint, index) => {\n let minValue = min;\n let maxValue = max;\n if (index === 0) {\n maxValue = step[index + 1];\n } else if (index === step.length - 1) {\n minValue = stepPoint;\n maxValue = max;\n } else {\n maxValue = step[index + 1];\n minValue = stepPoint;\n }\n if (value <= maxValue && value >= minValue) {\n if ((maxValue + minValue) / 2 > value) {\n resultValue = minValue;\n } else {\n resultValue = maxValue;\n }\n }\n });\n return resultValue;\n }\n return value;\n};\n\nexport const isValidValue = (\n value: number,\n min: number,\n max: number,\n step?: number | number[],\n) => getValidValue(value, min, max, step) === value;\n\nexport const getValueByPosition = (\n position: TrackPosition,\n sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>,\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (sliderRef.current && position) {\n const { x, width } = sliderRef.current.getBoundingClientRect();\n const absoluteSize = Math.abs(max - min);\n const value = min + ((position.x - x) * absoluteSize) / width;\n return getValidValue(value, min, max, step);\n }\n return 0;\n};\n\nexport const getNewValue = (\n changedValue: number,\n currentValue: number | [number, number],\n step: number | number[],\n min: number,\n max: number,\n activeButton: ActiveButton,\n): number | [number, number] => {\n let maxRangeValue = max;\n let minRangeValue = min;\n if (Array.isArray(currentValue)) {\n const [left, right] = currentValue;\n if (activeButton === 1) {\n minRangeValue = left;\n } else {\n maxRangeValue = right;\n }\n }\n const analyzedValue = getValidValue(\n analyzeDivisionValue(changedValue, step, min, max),\n minRangeValue,\n maxRangeValue,\n step,\n );\n if (Array.isArray(currentValue)) {\n return activeButton === 1\n ? [currentValue[0], analyzedValue]\n : [analyzedValue, currentValue[1]];\n }\n return analyzedValue;\n};\n\nexport const analyzeDivisionValue = (\n value: number,\n step: number | number[],\n min: number,\n max: number,\n) => {\n let newValue: number = value;\n if (Array.isArray(step)) {\n const steps = getSteps(step, min, max);\n steps.forEach((stepSize) => {\n if (value && stepSize.min < value && stepSize.max >= value) {\n if ((stepSize.max + stepSize.min) / 2 > value) {\n newValue = stepSize.min;\n } else {\n newValue = stepSize.max;\n }\n }\n });\n } else {\n if (value >= max) return max;\n if (value <= min) return min;\n const nearStep = (value - min) % step;\n if (nearStep > step / 2) {\n newValue = step - nearStep + value;\n } else {\n newValue = value - nearStep;\n }\n }\n return newValue;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"helper.js","names":["getSteps","isRangeParams","params","range","isNotRangeParams","trackPosition","event","x","clientX","y","clientY","changedTouches","getActiveValue","value","active","Array","isArray","detectActiveButton","position","buttons","activeButton","forEach","buttonRef","index","button","current","getBoundingClientRect","width","height","focus","getValidValue","min","max","step","division","toString","split","stepValue","Math","abs","toFixed","length","i","resultValue","stepPoint","minValue","maxValue","isValidValue","getValueByPosition","sliderRef","absoluteSize","getNewValue","changedValue","currentValue","analyzedValue","analyzeDivisionValue","newValue","steps","stepSize","nearStep"],"sources":["../../../../../../src/components/Slider/useSlider/helper.ts"],"sourcesContent":["import React from 'react';\n\nimport { PropOnChange, SliderValue, TrackPosition } from '../helper';\nimport { getSteps } from '../useSliderStationing';\n\nexport type ActiveButton = 0 | 1 | null | undefined;\n\nexport type Stationing = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nexport type UseSliderProps<RANGE extends boolean = false> = {\n disabled: boolean;\n range?: RANGE;\n value: SliderValue<RANGE>;\n min: number;\n max: number;\n step?: number | number[];\n onChange?: PropOnChange<RANGE>;\n onAfterChange?: PropOnChange<RANGE>;\n containerRef: React.RefObject<HTMLDivElement>;\n sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>;\n buttonRefs: React.RefObject<HTMLButtonElement>[];\n};\n\nexport type UseSliderValues = {\n onKeyPress: (e: React.KeyboardEvent, typeButton: ActiveButton) => void;\n onFocus: (\n e: React.FocusEvent<HTMLButtonElement> | React.MouseEvent,\n button: ActiveButton,\n ) => void;\n handlePress: (typeButton: ActiveButton) => void;\n onSliderClick: React.MouseEventHandler;\n activeButton: ActiveButton;\n currentValue: [number] | [number, number];\n popoverPosition: TrackPosition[];\n};\n\nexport const isRangeParams = (\n params: UseSliderProps<boolean>,\n): params is UseSliderProps<true> => {\n return !!params.range;\n};\n\nexport const isNotRangeParams = (\n params: UseSliderProps<boolean>,\n): params is UseSliderProps<false> => {\n return !params.range;\n};\n\nexport const trackPosition = (\n event: TouchEvent | MouseEvent,\n): TrackPosition => {\n if ('clientX' in event) {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n }\n return {\n x: event.changedTouches[0].clientX,\n y: event.changedTouches[0].clientY,\n };\n};\n\nexport const getActiveValue = (\n value: number | [number, number],\n active: ActiveButton,\n) => {\n if (Array.isArray(value)) {\n return value[typeof active === 'number' ? active : 0];\n }\n return value;\n};\n\nexport const detectActiveButton: (\n posittion: TrackPosition,\n buttons: React.RefObject<HTMLButtonElement>[],\n) => ActiveButton = (position, buttons) => {\n let activeButton: ActiveButton = null;\n buttons.forEach((buttonRef, index) => {\n const button = buttonRef.current;\n if (button && position) {\n const { x, y, width, height } = button.getBoundingClientRect();\n if (\n x <= position.x &&\n x + width >= position.x &&\n y <= position.y &&\n y + height >= position.y\n ) {\n activeButton = index as ActiveButton;\n button.focus();\n }\n }\n });\n return activeButton;\n};\n\nexport const getValidValue = (\n value: number,\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (typeof value === 'number') {\n if (value >= max) return max;\n if (value <= min) return min;\n if (!Array.isArray(step)) {\n const division = step?.toString().split('.')[1];\n const stepValue = step || 1;\n if (Math.abs(value) < 1) {\n return Number(value.toFixed(division ? division.length : 0));\n }\n if (value < min) return min;\n for (let i = min; i <= max; i += stepValue) {\n if (value >= i && value < i + stepValue) {\n return Number(\n (value < i + stepValue / 2 ? i : i + stepValue).toFixed(\n division ? division.length : 0,\n ),\n );\n }\n }\n return max;\n }\n let resultValue = value;\n step.forEach((stepPoint, index) => {\n let minValue = min;\n let maxValue = max;\n if (index === 0) {\n maxValue = step[index + 1];\n } else if (index === step.length - 1) {\n minValue = stepPoint;\n maxValue = max;\n } else {\n maxValue = step[index + 1];\n minValue = stepPoint;\n }\n if (value <= maxValue && value >= minValue) {\n if ((maxValue + minValue) / 2 > value) {\n resultValue = minValue;\n } else {\n resultValue = maxValue;\n }\n }\n });\n return resultValue;\n }\n return value;\n};\n\nexport const isValidValue = (\n value: number,\n min: number,\n max: number,\n step?: number | number[],\n) => getValidValue(value, min, max, step) === value;\n\nexport const getValueByPosition = (\n position: TrackPosition,\n sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>,\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (sliderRef.current && position) {\n const { x, width } = sliderRef.current.getBoundingClientRect();\n const absoluteSize = Math.abs(max - min);\n const value = min + ((position.x - x) * absoluteSize) / width;\n return getValidValue(value, min, max, step);\n }\n return 0;\n};\n\nexport const getNewValue = (\n changedValue: number,\n currentValue: number | [number, number],\n step: number | number[],\n min: number,\n max: number,\n activeButton: ActiveButton,\n): number | [number, number] => {\n const analyzedValue = getValidValue(\n analyzeDivisionValue(changedValue, step, min, max),\n min,\n max,\n step,\n );\n if (Array.isArray(currentValue)) {\n return activeButton === 1\n ? [currentValue[0], analyzedValue]\n : [analyzedValue, currentValue[1]];\n }\n return analyzedValue;\n};\n\nexport const analyzeDivisionValue = (\n value: number,\n step: number | number[],\n min: number,\n max: number,\n) => {\n let newValue: number = value;\n if (Array.isArray(step)) {\n const steps = getSteps(step, min, max);\n steps.forEach((stepSize) => {\n if (value && stepSize.min < value && stepSize.max >= value) {\n if ((stepSize.max + stepSize.min) / 2 > value) {\n newValue = stepSize.min;\n } else {\n newValue = stepSize.max;\n }\n }\n });\n } else {\n if (value >= max) return max;\n if (value <= min) return min;\n const nearStep = (value - min) % step;\n if (nearStep > step / 2) {\n newValue = step - nearStep + value;\n } else {\n newValue = value - nearStep;\n }\n }\n return newValue;\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useComponentSize}from"../../../hooks/useComponentSize/useComponentSize";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{getActiveValue,getNewValue,getValidValue,getValueByPosition,isNotRangeParams,isRangeParams,trackPosition}from"./helper";export var COUNT_STEPS=250;export function useSlider(a){var b=a.disabled,c=a.range,d=a.value,f=a.min,g=a.max,h=a.step,i=void 0===h?1:h,j=a.onChange,k=a.onAfterChange,l=a.sliderRef,m=a.buttonRefs,n=g>f?f:0,o=g>f?g:100,p=useMemo(function(){if(!Array.isArray(i)&&1<=i){var a=Math.abs((o-n)/COUNT_STEPS);return a>i?a-a%i:Math.max(a,i)}return i},[g,f,i]),q=useState(d),r=_slicedToArray(q,2),s=r[0],t=r[1],u=useState(null),v=_slicedToArray(u,2),w=v[0],y=v[1],z=useState(null),A=_slicedToArray(z,2),B=A[0],C=A[1],D=useRef(null),E=useComponentSize(l),F=useMutableRef(s);useEffect(function(){b&&G("remove")},[b]);var G=function(a){var b="add"===a?"addEventListener":"removeEventListener";document[b]("mouseup",L),document[b]("touchend",L),document[b]("mousemove",K),document[b]("touchmove",K)};useEffect(function(){Array.isArray(s)?(I(s[0],0),I(s[1],1)):I(s,0)},[s]),useEffect(function(){JSON.stringify(d)!==JSON.stringify(s)&&(t(d),I(getActiveValue(d,D.current),0),D.current=null)},[d]),useEffect(function(){null===j||void 0===j?void 0:j({value:Array.isArray(s)?[getNewValue(s[0],s[0],i,f,g,0),getNewValue(s[1],s[1],i,f,g,1)]:getNewValue(s,s,i,f,g,0)})},[i]),useEffect(function(){if("undefined"!=typeof d){var b=isRangeParams(a)?[getValidValue(a.value[0],f,g,i),getValidValue(a.value[1],f,g,i)]:getValidValue(a.value,f,g,i);t(b)}},[c,typeof d]),useEffect(function(){if(isRangeParams(a)&&a.value[0]>a.value[1]){var b,c=[a.value[1],a.value[1]];null===(b=a.onChange)||void 0===b?void 0:b.call(a,{value:c})}},[]);var H=useCallback(function(a,c){if(!b&&"number"==typeof c&&"undefined"!=typeof s){var d=Array.isArray(i)?1:i||1,e=!1,h=getActiveValue(s,c);switch(a.key){case"ArrowUp":case"ArrowRight":case"+":e=!0;break;case"ArrowLeft":case"ArrowDown":case"-":e=!0,d*=-1;break;default:}if(e){Array.isArray(i)&&i.forEach(function(a,b){"number"==typeof c&&h===a&&(0<=d?0===b?d=i[1]-n:d=("undefined"==typeof i[b+1]?o:i[b+1])-a:0===b?d=n-i[1]:d=("undefined"==typeof i[b-1]?n:i[b-1])-a)});var k=getNewValue(h+d,s,i,f,g,c);t(k),I(getActiveValue(k,c),c),null===j||void 0===j?void 0:j({e:a,value:k})}}},[s,i,f,g]),I=function(a,b){if(l.current&&"number"==typeof b){var c=m[b].current||l.current,d=l.current.getBoundingClientRect(),e=d.x,f=d.width,g={y:c.offsetTop+c.offsetHeight+50,x:e+Math.abs((a-n)/(o-n))*f};0===b?y(g):C(g)}},J=function(a){if("number"!=typeof D.current)return d;var b=trackPosition(a),c=getValueByPosition(b,l,n,o,i);return getNewValue(c,s,p,f,g,D.current)},K=function(a,b){var c=b||D.current;if("number"==typeof c){var d=J(a),e=getActiveValue(s,c),f=getActiveValue(d,c);t(d),e!==f&&(null===k||void 0===k?void 0:k({e:a,value:d}))}};useEffect(function(){if(isRangeParams(a)){var b;null===(b=a.value)||void 0===b?void 0:b.forEach(function(a,b){I(getActiveValue(a,D.current),0===b?0:1)})}isNotRangeParams(a)&&I(getActiveValue(d,D.current),0),D.current=null},[E,typeof d]);var L=useCallback(function(b){if(G("remove"),isRangeParams(a)&&Array.isArray(F.current)){var c,d=_toConsumableArray(F.current).sort(function(c,a){return+c-+a});null===(c=a.onChange)||void 0===c?void 0:c.call(a,{e:b,value:d})}if(isNotRangeParams(a)&&"number"==typeof F.current){var e;null===(e=a.onChange)||void 0===e?void 0:e.call(a,{e:b,value:F.current})}D.current=null},[F,d,j,K]),M=useCallback(function(a){b||(D.current=a,G("add"))},[s,d,j,K,b]);return{onKeyPress:H,onFocus:function onFocus(a,b){D.current=b},handlePress:M,onSliderClick:function onSliderClick(b){if(isNotRangeParams(a)){var c=getValueByPosition({x:b.pageX,y:b.pageY},l,n,o,i),e=getNewValue(c,s,p,f,g,D.current);e!==d&&(t(e),I(getActiveValue(e,0),0),null===j||void 0===j?void 0:j({e:b,value:e}))}},activeButton:D.current,popoverPosition:[w,B],currentValue:Array.isArray(s)?s:[s]}}
1
+ import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useClickOutside}from"../../../hooks/useClickOutside";import{useComponentSize}from"../../../hooks/useComponentSize/useComponentSize";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{getActiveValue,getNewValue,getValidValue,getValueByPosition,isNotRangeParams,isRangeParams,trackPosition}from"./helper";export var COUNT_STEPS=250;export function useSlider(a){var b=a.disabled,c=a.range,d=a.value,f=a.min,g=a.max,h=a.step,i=void 0===h?1:h,j=a.onChange,k=a.onAfterChange,l=a.sliderRef,m=a.containerRef,n=a.buttonRefs,o=g>f?f:0,p=g>f?g:100,q=useMemo(function(){if(!Array.isArray(i)&&1<=i){var a=Math.abs((p-o)/COUNT_STEPS);return a>i?a-a%i:Math.max(a,i)}return i},[g,f,i]),r=useState(d),s=_slicedToArray(r,2),t=s[0],u=s[1],v=useState(null),w=_slicedToArray(v,2),x=w[0],y=w[1],z=useState(null),A=_slicedToArray(z,2),B=A[0],C=A[1],D=useState(null),E=_slicedToArray(D,2),F=E[0],G=E[1],H=useRef(null),I=useComponentSize(l),J=useMutableRef(t);useClickOutside({isActive:!0,ignoreClicksInsideRefs:[m],handler:function handler(){G(null),H.current=null}}),useEffect(function(){b&&K("remove")},[b]);var K=function(a){var b="add"===a?"addEventListener":"removeEventListener";document[b]("mouseup",P),document[b]("touchend",P),document[b]("mousemove",O),document[b]("touchmove",O)};useEffect(function(){Array.isArray(t)?(M(t[0],0),M(t[1],1)):M(t,0)},[t]),useEffect(function(){JSON.stringify(d)!==JSON.stringify(t)&&(Array.isArray(d)&&Array.isArray(t)?(-1===t.indexOf(d[0])||-1===t.indexOf(d[1]))&&(u(d),M(getActiveValue(d,H.current),0)):(u(d),M(getActiveValue(d,H.current),0)),G(null),H.current=null)},[d]),useEffect(function(){null===j||void 0===j?void 0:j({value:Array.isArray(t)?[getNewValue(t[0],t[0],i,f,g,0),getNewValue(t[1],t[1],i,f,g,1)]:getNewValue(t,t,i,f,g,0)})},[i]),useEffect(function(){if("undefined"!=typeof d){var b=isRangeParams(a)?[getValidValue(a.value[0],f,g,i),getValidValue(a.value[1],f,g,i)]:getValidValue(a.value,f,g,i);u(b)}},[c,typeof d]),useEffect(function(){if(isRangeParams(a)&&a.value[0]>a.value[1]){var b,c=[a.value[1],a.value[1]];null===(b=a.onChange)||void 0===b?void 0:b.call(a,{value:c})}},[]);var L=useCallback(function(a,c){if(!b&&"number"==typeof c&&"undefined"!=typeof t){a.preventDefault(),a.stopPropagation();var d=Array.isArray(i)?1:i||1,e=!1,h=getActiveValue(t,c);switch(a.key){case"ArrowUp":case"ArrowRight":case"+":e=!0;break;case"ArrowLeft":case"ArrowDown":case"-":e=!0,d*=-1;break;default:}if(e){Array.isArray(i)&&i.forEach(function(a,b){"number"==typeof c&&h===a&&(0<=d?0===b?d=i[1]-o:d=("undefined"==typeof i[b+1]?p:i[b+1])-a:0===b?d=o-i[1]:d=("undefined"==typeof i[b-1]?o:i[b-1])-a)});var k=getNewValue(h+d,t,i,f,g,c);u(k),M(getActiveValue(k,c),c),null===j||void 0===j?void 0:j({e:a,value:k})}}},[t,i,f,g]),M=function(a,b){if(l.current&&"number"==typeof b){var c=n[b].current||l.current,d=l.current.getBoundingClientRect(),e=d.x,f=d.width,g={y:c.offsetTop+c.offsetHeight+50,x:e+Math.abs((a-o)/(p-o))*f};0===b?y(g):C(g)}},N=function(a){if("number"!=typeof H.current)return d;var b=trackPosition(a),c=getValueByPosition(b,l,o,p,i);return getNewValue(c,t,q,f,g,H.current)},O=function(a,b){var c=b||H.current;if("number"==typeof c){var d=N(a),e=getActiveValue(t,c),f=getActiveValue(d,c);u(d),e!==f&&(null===k||void 0===k?void 0:k({e:a,value:d}))}};useEffect(function(){if(isRangeParams(a)){var b;null===(b=a.value)||void 0===b?void 0:b.forEach(function(a,b){M(getActiveValue(a,H.current),0===b?0:1)})}isNotRangeParams(a)&&M(getActiveValue(d,H.current),0),H.current=null},[I,typeof d]);var P=useCallback(function(b){if(K("remove"),isRangeParams(a)&&Array.isArray(J.current)){var c,d=_toConsumableArray(J.current).sort(function(c,a){return+c-+a});null===(c=a.onChange)||void 0===c?void 0:c.call(a,{e:b,value:d})}if(isNotRangeParams(a)&&"number"==typeof J.current){var e;null===(e=a.onChange)||void 0===e?void 0:e.call(a,{e:b,value:J.current})}G(null),H.current=null},[J,d,j,O]),Q=useCallback(function(a){b||(G(a),H.current=a,K("add"))},[t,d,j,O,b]);return{onKeyPress:L,onFocus:function onFocus(a,b){G(b),H.current=b},handlePress:Q,onSliderClick:function onSliderClick(b){if(isNotRangeParams(a)){var c=getValueByPosition({x:b.pageX,y:b.pageY},l,o,p,i),e=getNewValue(c,t,q,f,g,H.current);e!==d&&(u(e),M(getActiveValue(e,0),0),null===j||void 0===j?void 0:j({e:b,value:e}))}},activeButton:F,popoverPosition:[x,B],currentValue:Array.isArray(t)?t:[t]}}
2
2
  //# sourceMappingURL=useSlider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSlider.js","names":["useCallback","useEffect","useMemo","useRef","useState","useComponentSize","useMutableRef","getActiveValue","getNewValue","getValidValue","getValueByPosition","isNotRangeParams","isRangeParams","trackPosition","COUNT_STEPS","useSlider","props","disabled","range","value","min","max","step","onChange","onAfterChange","sliderRef","buttonRefs","minValue","maxValue","dragStepValue","Array","isArray","val","Math","abs","currentValue","setCurrentValue","leftPopover","setLeftPopover","rightPopover","setRightPopover","activeButton","sizeSlider","lastValue","controlListeners","type","method","document","handleRelease","handleTouchMove","setTooltipPosition","JSON","stringify","current","targetValue","newValue","onKeyPress","event","typeButton","stepIncrement","validKeyCode","changedValue","key","forEach","stepPoint","index","e","position","button","getBoundingClientRect","x","width","newPosition","y","offsetTop","offsetHeight","changePosition","positionValue","oldValue","copyValues","sort","a","b","handlePress","onFocus","onSliderClick","pageX","pageY","popoverPosition"],"sources":["../../../../../../src/components/Slider/useSlider/useSlider.ts"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useComponentSize } from '../../../hooks/useComponentSize/useComponentSize';\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { SliderValue, TrackPosition } from '../helper';\nimport {\n ActiveButton,\n getActiveValue,\n getNewValue,\n getValidValue,\n getValueByPosition,\n isNotRangeParams,\n isRangeParams,\n trackPosition,\n UseSliderProps,\n UseSliderValues,\n} from './helper';\n\nexport const COUNT_STEPS = 250;\n\nexport function useSlider<RANGE extends boolean>(\n props: UseSliderProps<RANGE>,\n): UseSliderValues {\n const {\n disabled,\n range,\n value,\n min,\n max,\n step = 1,\n onChange,\n onAfterChange,\n sliderRef,\n buttonRefs,\n } = props;\n\n const minValue = max > min ? min : 0;\n const maxValue = max > min ? max : 100;\n\n const dragStepValue = useMemo(() => {\n if (!Array.isArray(step)) {\n if (step >= 1) {\n const val = Math.abs((maxValue - minValue) / COUNT_STEPS);\n if (val > step) {\n return val - (val % step);\n }\n return Math.max(val, step);\n }\n }\n return step;\n }, [max, min, step]);\n\n const [currentValue, setCurrentValue] = useState<number | [number, number]>(\n value,\n );\n const [leftPopover, setLeftPopover] = useState<TrackPosition>(null);\n const [rightPopover, setRightPopover] = useState<TrackPosition>(null);\n\n const activeButton: MutableRefObject<ActiveButton | null> = useRef(null);\n\n const sizeSlider = useComponentSize(sliderRef);\n\n const lastValue = useMutableRef(currentValue);\n\n useEffect(() => {\n if (disabled) {\n controlListeners('remove');\n }\n }, [disabled]);\n\n const controlListeners = (type: 'add' | 'remove') => {\n const method = type === 'add' ? 'addEventListener' : 'removeEventListener';\n document[method]('mouseup', handleRelease);\n document[method]('touchend', handleRelease);\n document[method]('mousemove', handleTouchMove);\n document[method]('touchmove', handleTouchMove);\n };\n\n useEffect(() => {\n if (Array.isArray(currentValue)) {\n setTooltipPosition(currentValue[0], 0);\n setTooltipPosition(currentValue[1], 1);\n } else {\n setTooltipPosition(currentValue, 0);\n }\n }, [currentValue]);\n\n useEffect(() => {\n if (JSON.stringify(value) !== JSON.stringify(currentValue)) {\n setCurrentValue(value);\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n activeButton.current = null;\n }\n }, [value]);\n\n useEffect(() => {\n onChange?.({\n value: Array.isArray(currentValue)\n ? ([\n getNewValue(currentValue[0], currentValue[0], step, min, max, 0),\n getNewValue(currentValue[1], currentValue[1], step, min, max, 1),\n ] as SliderValue<RANGE>)\n : (getNewValue(\n currentValue,\n currentValue,\n step,\n min,\n max,\n 0,\n ) as SliderValue<RANGE>),\n });\n }, [step]);\n\n useEffect(() => {\n if (typeof value !== 'undefined') {\n const targetValue = isRangeParams(props)\n ? ([\n getValidValue(props.value[0], min, max, step),\n getValidValue(props.value[1], min, max, step),\n ] as [number, number])\n : getValidValue(props.value as number, min, max, step);\n setCurrentValue(targetValue);\n }\n }, [range, typeof value]);\n\n useEffect(() => {\n if (isRangeParams(props)) {\n if (props.value[0] > props.value[1]) {\n const newValue: SliderValue<true> = [props.value[1], props.value[1]];\n props.onChange?.({ value: newValue });\n }\n }\n }, []);\n\n const onSliderClick = (e: React.MouseEvent) => {\n if (isNotRangeParams(props)) {\n const positionValue = getValueByPosition(\n { x: e.pageX, y: e.pageY },\n sliderRef,\n minValue,\n maxValue,\n step,\n );\n const newValue = getNewValue(\n positionValue,\n currentValue,\n dragStepValue,\n min,\n max,\n activeButton.current,\n );\n if (newValue !== value) {\n setCurrentValue(newValue);\n setTooltipPosition(getActiveValue(newValue, 0), 0);\n onChange?.({\n e,\n value: newValue as SliderValue<RANGE>,\n });\n }\n }\n };\n\n const onKeyPress = useCallback(\n (event: React.KeyboardEvent, typeButton: ActiveButton) => {\n if (\n !disabled &&\n typeof typeButton === 'number' &&\n typeof currentValue !== 'undefined'\n ) {\n let stepIncrement = !Array.isArray(step) ? step || 1 : 1;\n let validKeyCode = false;\n const changedValue = getActiveValue(currentValue, typeButton);\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowRight':\n case '+':\n validKeyCode = true;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n case '-':\n validKeyCode = true;\n stepIncrement *= -1;\n break;\n default:\n break;\n }\n if (validKeyCode) {\n if (Array.isArray(step)) {\n step.forEach((stepPoint, index) => {\n if (\n typeof typeButton === 'number' &&\n changedValue === stepPoint\n ) {\n if (stepIncrement >= 0) {\n if (index === 0) {\n stepIncrement = step[1] - minValue;\n } else {\n stepIncrement =\n (typeof step[index + 1] !== 'undefined'\n ? step[index + 1]\n : maxValue) - stepPoint;\n }\n } else if (index === 0) {\n stepIncrement = minValue - step[1];\n } else {\n stepIncrement =\n (typeof step[index - 1] !== 'undefined'\n ? step[index - 1]\n : minValue) - stepPoint;\n }\n }\n });\n }\n const newValue = getNewValue(\n changedValue + stepIncrement,\n currentValue,\n step,\n min,\n max,\n typeButton,\n );\n setCurrentValue(newValue);\n setTooltipPosition(getActiveValue(newValue, typeButton), typeButton);\n onChange?.({\n e: event,\n value: newValue as SliderValue<RANGE>,\n });\n }\n }\n },\n [currentValue, step, min, max],\n );\n\n const setTooltipPosition = (value: number, position: ActiveButton) => {\n if (sliderRef.current && typeof position === 'number') {\n const button = buttonRefs[position].current || sliderRef.current;\n const { x, width } = sliderRef.current.getBoundingClientRect();\n const newPosition = {\n y: button.offsetTop + button.offsetHeight + 50,\n x: x + Math.abs((value - minValue) / (maxValue - minValue)) * width,\n };\n if (position === 0) {\n setLeftPopover(newPosition);\n } else {\n setRightPopover(newPosition);\n }\n }\n };\n\n const changePosition = (event: Event) => {\n const nativeEvent = event as MouseEvent | TouchEvent;\n if (typeof activeButton.current !== 'number') {\n return value;\n }\n const position = trackPosition(nativeEvent);\n const positionValue = getValueByPosition(\n position,\n sliderRef,\n minValue,\n maxValue,\n step,\n );\n return getNewValue(\n positionValue,\n currentValue,\n dragStepValue,\n min,\n max,\n activeButton.current,\n );\n };\n\n const onFocus = (\n e: React.FocusEvent | React.MouseEvent,\n button: ActiveButton,\n ) => {\n activeButton.current = button;\n };\n\n const handleTouchMove = (\n event: MouseEvent | TouchEvent | Event,\n typeButton?: ActiveButton,\n ) => {\n const button = typeButton || activeButton.current;\n if (typeof button === 'number') {\n const position = changePosition(event);\n const oldValue: number = getActiveValue(currentValue, button);\n const newValue: number = getActiveValue(position, button);\n setCurrentValue(position);\n if (oldValue !== newValue) {\n onAfterChange?.({ e: event, value: position as SliderValue<RANGE> });\n }\n }\n };\n\n useEffect(() => {\n if (isRangeParams(props)) {\n props.value?.forEach((val, index) => {\n setTooltipPosition(\n getActiveValue(val, activeButton.current),\n index === 0 ? 0 : 1,\n );\n });\n }\n if (isNotRangeParams(props)) {\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n activeButton.current = null;\n }, [sizeSlider, typeof value]);\n\n const handleRelease = useCallback(\n (e: MouseEvent | TouchEvent | Event) => {\n controlListeners('remove');\n if (isRangeParams(props) && Array.isArray(lastValue.current)) {\n const copyValues = [...lastValue.current].sort(\n (a, b) => Number(a) - Number(b),\n ) as SliderValue<true>;\n props.onChange?.({ e, value: copyValues });\n }\n if (isNotRangeParams(props) && typeof lastValue.current === 'number') {\n props.onChange?.({ e, value: lastValue.current });\n }\n activeButton.current = null;\n },\n [lastValue, value, onChange, handleTouchMove],\n );\n\n const handlePress = useCallback(\n (typeButton: ActiveButton) => {\n if (!disabled) {\n activeButton.current = typeButton;\n controlListeners('add');\n }\n },\n [currentValue, value, onChange, handleTouchMove, disabled],\n );\n\n return {\n onKeyPress,\n onFocus,\n handlePress,\n onSliderClick,\n activeButton: activeButton.current,\n popoverPosition: [leftPopover, rightPopover],\n currentValue: Array.isArray(currentValue) ? currentValue : [currentValue],\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useSlider.js","names":["useCallback","useEffect","useMemo","useRef","useState","useClickOutside","useComponentSize","useMutableRef","getActiveValue","getNewValue","getValidValue","getValueByPosition","isNotRangeParams","isRangeParams","trackPosition","COUNT_STEPS","useSlider","props","disabled","range","value","min","max","step","onChange","onAfterChange","sliderRef","containerRef","buttonRefs","minValue","maxValue","dragStepValue","Array","isArray","val","Math","abs","currentValue","setCurrentValue","leftPopover","setLeftPopover","rightPopover","setRightPopover","currentButton","setCurrentButton","activeButton","sizeSlider","lastValue","isActive","ignoreClicksInsideRefs","handler","current","controlListeners","type","method","document","handleRelease","handleTouchMove","setTooltipPosition","JSON","stringify","indexOf","targetValue","newValue","onKeyPress","event","typeButton","preventDefault","stopPropagation","stepIncrement","validKeyCode","changedValue","key","forEach","stepPoint","index","e","position","button","getBoundingClientRect","x","width","newPosition","y","offsetTop","offsetHeight","changePosition","positionValue","oldValue","copyValues","sort","a","b","handlePress","onFocus","onSliderClick","pageX","pageY","popoverPosition"],"sources":["../../../../../../src/components/Slider/useSlider/useSlider.ts"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\n\nimport { useComponentSize } from '../../../hooks/useComponentSize/useComponentSize';\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { SliderValue, TrackPosition } from '../helper';\nimport {\n ActiveButton,\n getActiveValue,\n getNewValue,\n getValidValue,\n getValueByPosition,\n isNotRangeParams,\n isRangeParams,\n trackPosition,\n UseSliderProps,\n UseSliderValues,\n} from './helper';\n\nexport const COUNT_STEPS = 250;\n\nexport function useSlider<RANGE extends boolean>(\n props: UseSliderProps<RANGE>,\n): UseSliderValues {\n const {\n disabled,\n range,\n value,\n min,\n max,\n step = 1,\n onChange,\n onAfterChange,\n sliderRef,\n containerRef,\n buttonRefs,\n } = props;\n\n const minValue = max > min ? min : 0;\n const maxValue = max > min ? max : 100;\n\n const dragStepValue = useMemo(() => {\n if (!Array.isArray(step)) {\n if (step >= 1) {\n const val = Math.abs((maxValue - minValue) / COUNT_STEPS);\n if (val > step) {\n return val - (val % step);\n }\n return Math.max(val, step);\n }\n }\n return step;\n }, [max, min, step]);\n\n const [currentValue, setCurrentValue] = useState<number | [number, number]>(\n value,\n );\n const [leftPopover, setLeftPopover] = useState<TrackPosition>(null);\n const [rightPopover, setRightPopover] = useState<TrackPosition>(null);\n const [currentButton, setCurrentButton] = useState<ActiveButton | null>(null);\n\n const activeButton: MutableRefObject<ActiveButton | null> = useRef(null);\n\n const sizeSlider = useComponentSize(sliderRef);\n\n const lastValue = useMutableRef(currentValue);\n\n useClickOutside({\n isActive: true,\n ignoreClicksInsideRefs: [containerRef],\n handler: () => {\n setCurrentButton(null);\n activeButton.current = null;\n },\n });\n\n useEffect(() => {\n if (disabled) {\n controlListeners('remove');\n }\n }, [disabled]);\n\n const controlListeners = (type: 'add' | 'remove') => {\n const method = type === 'add' ? 'addEventListener' : 'removeEventListener';\n document[method]('mouseup', handleRelease);\n document[method]('touchend', handleRelease);\n document[method]('mousemove', handleTouchMove);\n document[method]('touchmove', handleTouchMove);\n };\n\n useEffect(() => {\n if (Array.isArray(currentValue)) {\n setTooltipPosition(currentValue[0], 0);\n setTooltipPosition(currentValue[1], 1);\n } else {\n setTooltipPosition(currentValue, 0);\n }\n }, [currentValue]);\n\n useEffect(() => {\n if (JSON.stringify(value) !== JSON.stringify(currentValue)) {\n if (Array.isArray(value) && Array.isArray(currentValue)) {\n if (\n !(\n currentValue.indexOf(value[0]) !== -1 &&\n currentValue.indexOf(value[1]) !== -1\n )\n ) {\n setCurrentValue(value);\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n } else {\n setCurrentValue(value);\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n setCurrentButton(null);\n activeButton.current = null;\n }\n }, [value]);\n\n useEffect(() => {\n onChange?.({\n value: Array.isArray(currentValue)\n ? ([\n getNewValue(currentValue[0], currentValue[0], step, min, max, 0),\n getNewValue(currentValue[1], currentValue[1], step, min, max, 1),\n ] as SliderValue<RANGE>)\n : (getNewValue(\n currentValue,\n currentValue,\n step,\n min,\n max,\n 0,\n ) as SliderValue<RANGE>),\n });\n }, [step]);\n\n useEffect(() => {\n if (typeof value !== 'undefined') {\n const targetValue = isRangeParams(props)\n ? ([\n getValidValue(props.value[0], min, max, step),\n getValidValue(props.value[1], min, max, step),\n ] as [number, number])\n : getValidValue(props.value as number, min, max, step);\n setCurrentValue(targetValue);\n }\n }, [range, typeof value]);\n\n useEffect(() => {\n if (isRangeParams(props)) {\n if (props.value[0] > props.value[1]) {\n const newValue: SliderValue<true> = [props.value[1], props.value[1]];\n props.onChange?.({ value: newValue });\n }\n }\n }, []);\n\n const onSliderClick = (e: React.MouseEvent) => {\n if (isNotRangeParams(props)) {\n const positionValue = getValueByPosition(\n { x: e.pageX, y: e.pageY },\n sliderRef,\n minValue,\n maxValue,\n step,\n );\n const newValue = getNewValue(\n positionValue,\n currentValue,\n dragStepValue,\n min,\n max,\n activeButton.current,\n );\n if (newValue !== value) {\n setCurrentValue(newValue);\n setTooltipPosition(getActiveValue(newValue, 0), 0);\n onChange?.({\n e,\n value: newValue as SliderValue<RANGE>,\n });\n }\n }\n };\n\n const onKeyPress = useCallback(\n (event: React.KeyboardEvent, typeButton: ActiveButton) => {\n if (\n !disabled &&\n typeof typeButton === 'number' &&\n typeof currentValue !== 'undefined'\n ) {\n event.preventDefault();\n event.stopPropagation();\n let stepIncrement = !Array.isArray(step) ? step || 1 : 1;\n let validKeyCode = false;\n const changedValue = getActiveValue(currentValue, typeButton);\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowRight':\n case '+':\n validKeyCode = true;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n case '-':\n validKeyCode = true;\n stepIncrement *= -1;\n break;\n default:\n break;\n }\n if (validKeyCode) {\n if (Array.isArray(step)) {\n step.forEach((stepPoint, index) => {\n if (\n typeof typeButton === 'number' &&\n changedValue === stepPoint\n ) {\n if (stepIncrement >= 0) {\n if (index === 0) {\n stepIncrement = step[1] - minValue;\n } else {\n stepIncrement =\n (typeof step[index + 1] !== 'undefined'\n ? step[index + 1]\n : maxValue) - stepPoint;\n }\n } else if (index === 0) {\n stepIncrement = minValue - step[1];\n } else {\n stepIncrement =\n (typeof step[index - 1] !== 'undefined'\n ? step[index - 1]\n : minValue) - stepPoint;\n }\n }\n });\n }\n const newValue = getNewValue(\n changedValue + stepIncrement,\n currentValue,\n step,\n min,\n max,\n typeButton,\n );\n setCurrentValue(newValue);\n setTooltipPosition(getActiveValue(newValue, typeButton), typeButton);\n onChange?.({\n e: event,\n value: newValue as SliderValue<RANGE>,\n });\n }\n }\n },\n [currentValue, step, min, max],\n );\n\n const setTooltipPosition = (value: number, position: ActiveButton) => {\n if (sliderRef.current && typeof position === 'number') {\n const button = buttonRefs[position].current || sliderRef.current;\n const { x, width } = sliderRef.current.getBoundingClientRect();\n const newPosition = {\n y: button.offsetTop + button.offsetHeight + 50,\n x: x + Math.abs((value - minValue) / (maxValue - minValue)) * width,\n };\n if (position === 0) {\n setLeftPopover(newPosition);\n } else {\n setRightPopover(newPosition);\n }\n }\n };\n\n const changePosition = (event: Event) => {\n const nativeEvent = event as MouseEvent | TouchEvent;\n if (typeof activeButton.current !== 'number') {\n return value;\n }\n const position = trackPosition(nativeEvent);\n const positionValue = getValueByPosition(\n position,\n sliderRef,\n minValue,\n maxValue,\n step,\n );\n return getNewValue(\n positionValue,\n currentValue,\n dragStepValue,\n min,\n max,\n activeButton.current,\n );\n };\n\n const onFocus = (\n e: React.FocusEvent | React.MouseEvent,\n button: ActiveButton,\n ) => {\n setCurrentButton(button);\n activeButton.current = button;\n };\n\n const handleTouchMove = (\n event: MouseEvent | TouchEvent | Event,\n typeButton?: ActiveButton,\n ) => {\n const button = typeButton || activeButton.current;\n if (typeof button === 'number') {\n const position = changePosition(event);\n const oldValue: number = getActiveValue(currentValue, button);\n const newValue: number = getActiveValue(position, button);\n setCurrentValue(position);\n if (oldValue !== newValue) {\n onAfterChange?.({ e: event, value: position as SliderValue<RANGE> });\n }\n }\n };\n\n useEffect(() => {\n if (isRangeParams(props)) {\n props.value?.forEach((val, index) => {\n setTooltipPosition(\n getActiveValue(val, activeButton.current),\n index === 0 ? 0 : 1,\n );\n });\n }\n if (isNotRangeParams(props)) {\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n activeButton.current = null;\n }, [sizeSlider, typeof value]);\n\n const handleRelease = useCallback(\n (e: MouseEvent | TouchEvent | Event) => {\n controlListeners('remove');\n if (isRangeParams(props) && Array.isArray(lastValue.current)) {\n const copyValues = [...lastValue.current].sort(\n (a, b) => Number(a) - Number(b),\n ) as SliderValue<true>;\n props.onChange?.({ e, value: copyValues });\n }\n if (isNotRangeParams(props) && typeof lastValue.current === 'number') {\n props.onChange?.({ e, value: lastValue.current });\n }\n setCurrentButton(null);\n activeButton.current = null;\n },\n [lastValue, value, onChange, handleTouchMove],\n );\n\n const handlePress = useCallback(\n (typeButton: ActiveButton) => {\n if (!disabled) {\n setCurrentButton(typeButton);\n activeButton.current = typeButton;\n controlListeners('add');\n }\n },\n [currentValue, value, onChange, handleTouchMove, disabled],\n );\n\n return {\n onKeyPress,\n onFocus,\n handlePress,\n onSliderClick,\n activeButton: currentButton,\n popoverPosition: [leftPopover, rightPopover],\n currentValue: Array.isArray(currentValue) ? currentValue : [currentValue],\n };\n}\n"],"mappings":"0IAAA,OAEEA,WAFF,CAGEC,SAHF,CAIEC,OAJF,CAKEC,MALF,CAMEC,QANF,KAOO,OAPP,CASA,OAASC,eAAT,sCAEA,OAASC,gBAAT,wDACA,OAASC,aAAT,kDAEA,OAEEC,cAFF,CAGEC,WAHF,CAIEC,aAJF,CAKEC,kBALF,CAMEC,gBANF,CAOEC,aAPF,CAQEC,aARF,gBAaA,MAAO,IAAMC,YAAW,CAAG,GAApB,CAEP,MAAO,SAASC,UAAT,CACLC,CADK,CAEY,IAEfC,EAFe,CAabD,CAba,CAEfC,QAFe,CAGfC,CAHe,CAabF,CAba,CAGfE,KAHe,CAIfC,CAJe,CAabH,CAba,CAIfG,KAJe,CAKfC,CALe,CAabJ,CAba,CAKfI,GALe,CAMfC,CANe,CAabL,CAba,CAMfK,GANe,GAabL,CAba,CAOfM,IAPe,CAOfA,CAPe,YAOR,CAPQ,GAQfC,CARe,CAabP,CAba,CAQfO,QARe,CASfC,CATe,CAabR,CAba,CASfQ,aATe,CAUfC,CAVe,CAabT,CAba,CAUfS,SAVe,CAWfC,CAXe,CAabV,CAba,CAWfU,YAXe,CAYfC,CAZe,CAabX,CAba,CAYfW,UAZe,CAeXC,CAAQ,CAAGP,CAAG,CAAGD,CAAN,CAAYA,CAAZ,CAAkB,CAflB,CAgBXS,CAAQ,CAAGR,CAAG,CAAGD,CAAN,CAAYC,CAAZ,CAAkB,GAhBlB,CAkBXS,CAAa,CAAG7B,OAAO,CAAC,UAAM,CAClC,GAAI,CAAC8B,KAAK,CAACC,OAAN,CAAcV,CAAd,CAAL,EACc,CAAR,EAAAA,CADN,CACiB,CACb,GAAMW,EAAG,CAAGC,IAAI,CAACC,GAAL,CAAS,CAACN,CAAQ,CAAGD,CAAZ,EAAwBd,WAAjC,CAAZ,CADa,MAETmB,EAAG,CAAGX,CAFG,CAGJW,CAAG,CAAIA,CAAG,CAAGX,CAHT,CAKNY,IAAI,CAACb,GAAL,CAASY,CAAT,CAAcX,CAAd,CACR,CAEH,MAAOA,EACR,CAX4B,CAW1B,CAACD,CAAD,CAAMD,CAAN,CAAWE,CAAX,CAX0B,CAlBZ,GA+BuBnB,QAAQ,CAC9CgB,CAD8C,CA/B/B,uBA+BViB,CA/BU,MA+BIC,CA/BJ,QAkCqBlC,QAAQ,CAAgB,IAAhB,CAlC7B,uBAkCVmC,CAlCU,MAkCGC,CAlCH,QAmCuBpC,QAAQ,CAAgB,IAAhB,CAnC/B,uBAmCVqC,CAnCU,MAmCIC,CAnCJ,QAoCyBtC,QAAQ,CAAsB,IAAtB,CApCjC,uBAoCVuC,CApCU,MAoCKC,CApCL,MAsCXC,CAAmD,CAAG1C,MAAM,CAAC,IAAD,CAtCjD,CAwCX2C,CAAU,CAAGxC,gBAAgB,CAACoB,CAAD,CAxClB,CA0CXqB,CAAS,CAAGxC,aAAa,CAAC8B,CAAD,CA1Cd,CA4CjBhC,eAAe,CAAC,CACd2C,QAAQ,GADM,CAEdC,sBAAsB,CAAE,CAACtB,CAAD,CAFV,CAGduB,OAAO,CAAE,kBAAM,CACbN,CAAgB,CAAC,IAAD,CADH,CAEbC,CAAY,CAACM,OAAb,CAAuB,IACxB,CANa,CAAD,CA5CE,CAqDjBlD,SAAS,CAAC,UAAM,CACViB,CADU,EAEZkC,CAAgB,CAAC,QAAD,CAEnB,CAJQ,CAIN,CAAClC,CAAD,CAJM,CArDQ,CA2DjB,GAAMkC,EAAgB,CAAG,SAACC,CAAD,CAA4B,CACnD,GAAMC,EAAM,CAAY,KAAT,GAAAD,CAAI,CAAa,kBAAb,CAAkC,qBAArD,CACAE,QAAQ,CAACD,CAAD,CAAR,CAAiB,SAAjB,CAA4BE,CAA5B,CAFmD,CAGnDD,QAAQ,CAACD,CAAD,CAAR,CAAiB,UAAjB,CAA6BE,CAA7B,CAHmD,CAInDD,QAAQ,CAACD,CAAD,CAAR,CAAiB,WAAjB,CAA8BG,CAA9B,CAJmD,CAKnDF,QAAQ,CAACD,CAAD,CAAR,CAAiB,WAAjB,CAA8BG,CAA9B,CACD,CAND,CAQAxD,SAAS,CAAC,UAAM,CACV+B,KAAK,CAACC,OAAN,CAAcI,CAAd,CADU,EAEZqB,CAAkB,CAACrB,CAAY,CAAC,CAAD,CAAb,CAAkB,CAAlB,CAFN,CAGZqB,CAAkB,CAACrB,CAAY,CAAC,CAAD,CAAb,CAAkB,CAAlB,CAHN,EAKZqB,CAAkB,CAACrB,CAAD,CAAe,CAAf,CAErB,CAPQ,CAON,CAACA,CAAD,CAPM,CAnEQ,CA4EjBpC,SAAS,CAAC,UAAM,CACV0D,IAAI,CAACC,SAAL,CAAexC,CAAf,IAA0BuC,IAAI,CAACC,SAAL,CAAevB,CAAf,CADhB,GAERL,KAAK,CAACC,OAAN,CAAcb,CAAd,GAAwBY,KAAK,CAACC,OAAN,CAAcI,CAAd,CAFhB,EAK6B,CAAC,CAApC,GAAAA,CAAY,CAACwB,OAAb,CAAqBzC,CAAK,CAAC,CAAD,CAA1B,GACmC,CAAC,CAApC,GAAAiB,CAAY,CAACwB,OAAb,CAAqBzC,CAAK,CAAC,CAAD,CAA1B,CANM,IASRkB,CAAe,CAAClB,CAAD,CATP,CAURsC,CAAkB,CAAClD,cAAc,CAACY,CAAD,CAAQyB,CAAY,CAACM,OAArB,CAAf,CAA8C,CAA9C,CAVV,GAaVb,CAAe,CAAClB,CAAD,CAbL,CAcVsC,CAAkB,CAAClD,cAAc,CAACY,CAAD,CAAQyB,CAAY,CAACM,OAArB,CAAf,CAA8C,CAA9C,CAdR,EAgBZP,CAAgB,CAAC,IAAD,CAhBJ,CAiBZC,CAAY,CAACM,OAAb,CAAuB,IAjBX,CAmBf,CAnBQ,CAmBN,CAAC/B,CAAD,CAnBM,CA5EQ,CAiGjBnB,SAAS,CAAC,UAAM,QACduB,CADc,WACdA,CADc,QACdA,CAAQ,CAAG,CACTJ,KAAK,CAAEY,KAAK,CAACC,OAAN,CAAcI,CAAd,EACF,CACC5B,WAAW,CAAC4B,CAAY,CAAC,CAAD,CAAb,CAAkBA,CAAY,CAAC,CAAD,CAA9B,CAAmCd,CAAnC,CAAyCF,CAAzC,CAA8CC,CAA9C,CAAmD,CAAnD,CADZ,CAECb,WAAW,CAAC4B,CAAY,CAAC,CAAD,CAAb,CAAkBA,CAAY,CAAC,CAAD,CAA9B,CAAmCd,CAAnC,CAAyCF,CAAzC,CAA8CC,CAA9C,CAAmD,CAAnD,CAFZ,CADE,CAKFb,WAAW,CACV4B,CADU,CAEVA,CAFU,CAGVd,CAHU,CAIVF,CAJU,CAKVC,CALU,CAMV,CANU,CANP,CAAH,CAeT,CAhBQ,CAgBN,CAACC,CAAD,CAhBM,CAjGQ,CAmHjBtB,SAAS,CAAC,UAAM,CACd,GAAqB,WAAjB,QAAOmB,EAAX,CAAkC,CAChC,GAAM0C,EAAW,CAAGjD,aAAa,CAACI,CAAD,CAAb,CACf,CACCP,aAAa,CAACO,CAAK,CAACG,KAAN,CAAY,CAAZ,CAAD,CAAiBC,CAAjB,CAAsBC,CAAtB,CAA2BC,CAA3B,CADd,CAECb,aAAa,CAACO,CAAK,CAACG,KAAN,CAAY,CAAZ,CAAD,CAAiBC,CAAjB,CAAsBC,CAAtB,CAA2BC,CAA3B,CAFd,CADe,CAKhBb,aAAa,CAACO,CAAK,CAACG,KAAP,CAAwBC,CAAxB,CAA6BC,CAA7B,CAAkCC,CAAlC,CALjB,CAMAe,CAAe,CAACwB,CAAD,CAChB,CACF,CAVQ,CAUN,CAAC3C,CAAD,CAAQ,MAAOC,EAAf,CAVM,CAnHQ,CA+HjBnB,SAAS,CAAC,UAAM,CACd,GAAIY,aAAa,CAACI,CAAD,CAAjB,EACMA,CAAK,CAACG,KAAN,CAAY,CAAZ,EAAiBH,CAAK,CAACG,KAAN,CAAY,CAAZ,CADvB,CACuC,OAC7B2C,CAA2B,CAAG,CAAC9C,CAAK,CAACG,KAAN,CAAY,CAAZ,CAAD,CAAiBH,CAAK,CAACG,KAAN,CAAY,CAAZ,CAAjB,CADD,WAEnCH,CAAK,CAACO,QAF6B,qBAEnC,OAAAP,CAAK,CAAY,CAAEG,KAAK,CAAE2C,CAAT,CAAZ,CACN,CAEJ,CAPQ,CAON,EAPM,CA/HQ,IAoKXC,EAAU,CAAGhE,WAAW,CAC5B,SAACiE,CAAD,CAA6BC,CAA7B,CAA0D,CACxD,GACE,CAAChD,CAAD,EACsB,QAAtB,QAAOgD,EADP,EAEwB,WAAxB,QAAO7B,EAHT,CAIE,CACA4B,CAAK,CAACE,cAAN,EADA,CAEAF,CAAK,CAACG,eAAN,EAFA,IAGIC,EAAa,CAAIrC,KAAK,CAACC,OAAN,CAAcV,CAAd,CAAD,CAAmC,CAAnC,CAAuBA,CAAI,EAAI,CAHnD,CAII+C,CAAY,GAJhB,CAKMC,CAAY,CAAG/D,cAAc,CAAC6B,CAAD,CAAe6B,CAAf,CALnC,CAMA,OAAQD,CAAK,CAACO,GAAd,EACE,IAAK,SAAL,CACA,IAAK,YAAL,CACA,IAAK,GAAL,CACEF,CAAY,GADd,CAEE,MACF,IAAK,WAAL,CACA,IAAK,WAAL,CACA,IAAK,GAAL,CACEA,CAAY,GADd,CAEED,CAAa,EAAI,CAAC,CAFpB,CAGE,MACF,QAZF,CAeA,GAAIC,CAAJ,CAAkB,CACZtC,KAAK,CAACC,OAAN,CAAcV,CAAd,CADY,EAEdA,CAAI,CAACkD,OAAL,CAAa,SAACC,CAAD,CAAYC,CAAZ,CAAsB,CAET,QAAtB,QAAOT,EAAP,EACAK,CAAY,GAAKG,CAHc,GAKV,CAAjB,EAAAL,CAL2B,CAMf,CAAV,GAAAM,CANyB,CAO3BN,CAAa,CAAG9C,CAAI,CAAC,CAAD,CAAJ,CAAUM,CAPC,CAS3BwC,CAAa,CACX,CAA4B,WAA3B,QAAO9C,EAAI,CAACoD,CAAK,CAAG,CAAT,CAAX,CAEG7C,CAFH,CACGP,CAAI,CAACoD,CAAK,CAAG,CAAT,CADR,EAEgBD,CAZS,CAcV,CAAV,GAAAC,CAdoB,CAe7BN,CAAa,CAAGxC,CAAQ,CAAGN,CAAI,CAAC,CAAD,CAfF,CAiB7B8C,CAAa,CACX,CAA4B,WAA3B,QAAO9C,EAAI,CAACoD,CAAK,CAAG,CAAT,CAAX,CAEG9C,CAFH,CACGN,CAAI,CAACoD,CAAK,CAAG,CAAT,CADR,EAEgBD,CApBW,CAuBlC,CAvBD,CAFc,CA2BhB,GAAMX,EAAQ,CAAGtD,WAAW,CAC1B8D,CAAY,CAAGF,CADW,CAE1BhC,CAF0B,CAG1Bd,CAH0B,CAI1BF,CAJ0B,CAK1BC,CAL0B,CAM1B4C,CAN0B,CAA5B,CAQA5B,CAAe,CAACyB,CAAD,CAnCC,CAoChBL,CAAkB,CAAClD,cAAc,CAACuD,CAAD,CAAWG,CAAX,CAAf,CAAuCA,CAAvC,CApCF,QAqChB1C,CArCgB,WAqChBA,CArCgB,QAqChBA,CAAQ,CAAG,CACToD,CAAC,CAAEX,CADM,CAET7C,KAAK,CAAE2C,CAFE,CAAH,CAIT,CACF,CACF,CAtE2B,CAuE5B,CAAC1B,CAAD,CAAed,CAAf,CAAqBF,CAArB,CAA0BC,CAA1B,CAvE4B,CApKb,CA8OXoC,CAAkB,CAAG,SAACtC,CAAD,CAAgByD,CAAhB,CAA2C,CACpE,GAAInD,CAAS,CAACyB,OAAV,EAAyC,QAApB,QAAO0B,EAAhC,CAAuD,IAC/CC,EAAM,CAAGlD,CAAU,CAACiD,CAAD,CAAV,CAAqB1B,OAArB,EAAgCzB,CAAS,CAACyB,OADJ,GAEhCzB,CAAS,CAACyB,OAAV,CAAkB4B,qBAAlB,EAFgC,CAE7CC,CAF6C,GAE7CA,CAF6C,CAE1CC,CAF0C,GAE1CA,KAF0C,CAG/CC,CAAW,CAAG,CAClBC,CAAC,CAAEL,CAAM,CAACM,SAAP,CAAmBN,CAAM,CAACO,YAA1B,CAAyC,EAD1B,CAElBL,CAAC,CAAEA,CAAC,CAAG7C,IAAI,CAACC,GAAL,CAAS,CAAChB,CAAK,CAAGS,CAAT,GAAsBC,CAAQ,CAAGD,CAAjC,CAAT,EAAuDoD,CAF5C,CAHiC,CAOpC,CAAb,GAAAJ,CAPiD,CAQnDrC,CAAc,CAAC0C,CAAD,CARqC,CAUnDxC,CAAe,CAACwC,CAAD,CAElB,CACF,CA5PgB,CA8PXI,CAAc,CAAG,SAACrB,CAAD,CAAkB,CAEvC,GAAoC,QAAhC,QAAOpB,EAAY,CAACM,OAAxB,CACE,MAAO/B,EAAP,CAHqC,GAKjCyD,EAAQ,CAAG/D,aAAa,CAJVmD,CAIU,CALS,CAMjCsB,CAAa,CAAG5E,kBAAkB,CACtCkE,CADsC,CAEtCnD,CAFsC,CAGtCG,CAHsC,CAItCC,CAJsC,CAKtCP,CALsC,CAND,CAavC,MAAOd,YAAW,CAChB8E,CADgB,CAEhBlD,CAFgB,CAGhBN,CAHgB,CAIhBV,CAJgB,CAKhBC,CALgB,CAMhBuB,CAAY,CAACM,OANG,CAQnB,CAnRgB,CA6RXM,CAAe,CAAG,SACtBQ,CADsB,CAEtBC,CAFsB,CAGnB,CACH,GAAMY,EAAM,CAAGZ,CAAU,EAAIrB,CAAY,CAACM,OAA1C,CACA,GAAsB,QAAlB,QAAO2B,EAAX,CAAgC,IACxBD,EAAQ,CAAGS,CAAc,CAACrB,CAAD,CADD,CAExBuB,CAAgB,CAAGhF,cAAc,CAAC6B,CAAD,CAAeyC,CAAf,CAFT,CAGxBf,CAAgB,CAAGvD,cAAc,CAACqE,CAAD,CAAWC,CAAX,CAHT,CAI9BxC,CAAe,CAACuC,CAAD,CAJe,CAK1BW,CAAQ,GAAKzB,CALa,UAM5BtC,CAN4B,WAM5BA,CAN4B,QAM5BA,CAAa,CAAG,CAAEmD,CAAC,CAAEX,CAAL,CAAY7C,KAAK,CAAEyD,CAAnB,CAAH,CANe,CAQ/B,CACF,CA3SgB,CA6SjB5E,SAAS,CAAC,UAAM,CACd,GAAIY,aAAa,CAACI,CAAD,CAAjB,CAA0B,iBACxBA,CAAK,CAACG,KADkB,qBACxB,EAAaqD,OAAb,CAAqB,SAACvC,CAAD,CAAMyC,CAAN,CAAgB,CACnCjB,CAAkB,CAChBlD,cAAc,CAAC0B,CAAD,CAAMW,CAAY,CAACM,OAAnB,CADE,CAEN,CAAV,GAAAwB,CAAK,CAAS,CAAT,CAAa,CAFF,CAInB,CALD,CAMD,CACG/D,gBAAgB,CAACK,CAAD,CATN,EAUZyC,CAAkB,CAAClD,cAAc,CAACY,CAAD,CAAQyB,CAAY,CAACM,OAArB,CAAf,CAA8C,CAA9C,CAVN,CAYdN,CAAY,CAACM,OAAb,CAAuB,IACxB,CAbQ,CAaN,CAACL,CAAD,CAAa,MAAO1B,EAApB,CAbM,CA7SQ,IA4TXoC,EAAa,CAAGxD,WAAW,CAC/B,SAAC4E,CAAD,CAAwC,CAEtC,GADAxB,CAAgB,CAAC,QAAD,CAChB,CAAIvC,aAAa,CAACI,CAAD,CAAb,EAAwBe,KAAK,CAACC,OAAN,CAAcc,CAAS,CAACI,OAAxB,CAA5B,CAA8D,OACtDsC,CAAU,CAAG,mBAAI1C,CAAS,CAACI,OAAd,EAAuBuC,IAAvB,CACjB,SAACC,CAAD,CAAIC,CAAJ,QAAU,CAAOD,CAAP,EAAmBC,CAA7B,CADiB,CADyC,WAI5D3E,CAAK,CAACO,QAJsD,qBAI5D,OAAAP,CAAK,CAAY,CAAE2D,CAAC,CAADA,CAAF,CAAKxD,KAAK,CAAEqE,CAAZ,CAAZ,CACN,CACD,GAAI7E,gBAAgB,CAACK,CAAD,CAAhB,EAAwD,QAA7B,QAAO8B,EAAS,CAACI,OAAhD,CAAsE,iBACpElC,CAAK,CAACO,QAD8D,qBACpE,OAAAP,CAAK,CAAY,CAAE2D,CAAC,CAADA,CAAF,CAAKxD,KAAK,CAAE2B,CAAS,CAACI,OAAtB,CAAZ,CACN,CACDP,CAAgB,CAAC,IAAD,CAXsB,CAYtCC,CAAY,CAACM,OAAb,CAAuB,IACxB,CAd8B,CAe/B,CAACJ,CAAD,CAAY3B,CAAZ,CAAmBI,CAAnB,CAA6BiC,CAA7B,CAf+B,CA5ThB,CA8UXoC,CAAW,CAAG7F,WAAW,CAC7B,SAACkE,CAAD,CAA8B,CACvBhD,CADuB,GAE1B0B,CAAgB,CAACsB,CAAD,CAFU,CAG1BrB,CAAY,CAACM,OAAb,CAAuBe,CAHG,CAI1Bd,CAAgB,CAAC,KAAD,CAJU,CAM7B,CAP4B,CAQ7B,CAACf,CAAD,CAAejB,CAAf,CAAsBI,CAAtB,CAAgCiC,CAAhC,CAAiDvC,CAAjD,CAR6B,CA9Ud,CAyVjB,MAAO,CACL8C,UAAU,CAAVA,CADK,CAEL8B,OAAO,CAtEO,QAAVA,QAAU,CACdlB,CADc,CAEdE,CAFc,CAGX,CACHlC,CAAgB,CAACkC,CAAD,CADb,CAEHjC,CAAY,CAACM,OAAb,CAAuB2B,CACxB,CA8DM,CAGLe,WAAW,CAAXA,CAHK,CAILE,aAAa,CArNO,QAAhBA,cAAgB,CAACnB,CAAD,CAAyB,CAC7C,GAAIhE,gBAAgB,CAACK,CAAD,CAApB,CAA6B,IACrBsE,EAAa,CAAG5E,kBAAkB,CACtC,CAAEqE,CAAC,CAAEJ,CAAC,CAACoB,KAAP,CAAcb,CAAC,CAAEP,CAAC,CAACqB,KAAnB,CADsC,CAEtCvE,CAFsC,CAGtCG,CAHsC,CAItCC,CAJsC,CAKtCP,CALsC,CADb,CAQrBwC,CAAQ,CAAGtD,WAAW,CAC1B8E,CAD0B,CAE1BlD,CAF0B,CAG1BN,CAH0B,CAI1BV,CAJ0B,CAK1BC,CAL0B,CAM1BuB,CAAY,CAACM,OANa,CARD,CAgBvBY,CAAQ,GAAK3C,CAhBU,GAiBzBkB,CAAe,CAACyB,CAAD,CAjBU,CAkBzBL,CAAkB,CAAClD,cAAc,CAACuD,CAAD,CAAW,CAAX,CAAf,CAA8B,CAA9B,CAlBO,QAmBzBvC,CAnByB,WAmBzBA,CAnByB,QAmBzBA,CAAQ,CAAG,CACToD,CAAC,CAADA,CADS,CAETxD,KAAK,CAAE2C,CAFE,CAAH,CAnBiB,CAwB5B,CACF,CAuLM,CAKLlB,YAAY,CAAEF,CALT,CAMLuD,eAAe,CAAE,CAAC3D,CAAD,CAAcE,CAAd,CANZ,CAOLJ,YAAY,CAAEL,KAAK,CAACC,OAAN,CAAcI,CAAd,EAA8BA,CAA9B,CAA6C,CAACA,CAAD,CAPtD,CASR"}
@@ -1,2 +1,2 @@
1
- import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useCallback,useEffect,useMemo,useState}from"react";import{COUNT_STEPS}from"./useSlider/useSlider";export var getSteps=function(a,b,c){var d=[],e=b;if(Array.isArray(a))for(var f=0;f<a.length-1;f++)d.push({min:a[f],max:a[f+1]});else for(var g=b;g<c;g+=a)d.push({min:e,max:e+(c-g<a?c-g:a)}),e+=a;return d};export var useSliderStationing=function(a,b,c,d,e){var f=5<arguments.length&&void 0!==arguments[5]?arguments[5]:1,g=6<arguments.length?arguments[6]:void 0,h=7<arguments.length?arguments[7]:void 0,i=useState([]),j=_slicedToArray(i,2),k=j[0],l=j[1],m=useState([]),n=_slicedToArray(m,2),o=n[0],p=n[1],q=useMemo(function(){if(!Array.isArray(f)){var a=Math.abs((c-b)/COUNT_STEPS);return a>f?a-a%f:Math.max(a,f)}return f},[c,b,f]),r=function(){var f=[],g=Math.abs(c-b);if("undefined"==typeof a)f.push({width:100,active:!1});else if("default"!==d)"undefined"!=typeof q&&getSteps(q,b,c).forEach(function(b){f.push({width:100*Math.abs(b.max-b.min)/g,active:("number"==typeof a||Array.isArray(a))&&(e&&Array.isArray(a)?b.max>a[0]&&b.min<a[a.length-1]:b.max<=a)})});else if(!Array.isArray(a)&&"number"==typeof a)f.push({width:100*(1-(c-a)/g),active:!0}),f.push({width:100*((c-a)/g),active:!1});else if(Array.isArray(a)&&a){var h=_toConsumableArray(a);h.unshift(b),h.push(c);for(var j=0;j<h.length-1;j++)f.push({width:100*((h[j+1]-h[j])/g),active:h[j]>=a[0]&&h[j+1]<=a[1]})}else f.push({width:100,active:!1});return f},s=function(a){return a<b?b:a>c?c:a},t=useCallback(function(){var d=Math.abs(c-b),e=0,f=[];return g.forEach(function(b,g){b.current&&b.current.offsetWidth&&h.current&&h.current.offsetWidth&&(e=d*b.current.offsetWidth/(2*h.current.offsetWidth)||0),("number"==typeof a||Array.isArray(a))&&f.push("number"==typeof a?100*(1-(c-s(a)+e)/d):100*(1-(c-s(a[g])+e)/d))}),f},[g,h]);return useEffect(function(){l(r()),p(t())},[a,b,c,e,q,d]),{lineSizes:k,buttonPositions:o}};
1
+ import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useCallback,useEffect,useMemo,useState}from"react";import{useComponentSize}from"../../hooks/useComponentSize";import{COUNT_STEPS}from"./useSlider/useSlider";export var getSteps=function(a,b,c){var d=[],e=b;if(Array.isArray(a))for(var f=0;f<a.length-1;f++)d.push({min:a[f],max:a[f+1]});else for(var g=b;g<c;g+=a)d.push({min:e,max:e+(c-g<a?c-g:a)}),e+=a;return d};export var useSliderStationing=function(a,b,c,d,e){var f=5<arguments.length&&void 0!==arguments[5]?arguments[5]:1,g=6<arguments.length?arguments[6]:void 0,h=7<arguments.length?arguments[7]:void 0,i=useState([]),j=_slicedToArray(i,2),k=j[0],l=j[1],m=useState([]),n=_slicedToArray(m,2),o=n[0],p=n[1],q=useComponentSize(h),r=q.width,s=q.height,t=useMemo(function(){if(!Array.isArray(f)){var a=Math.abs((c-b)/COUNT_STEPS);return a>f?a-a%f:Math.max(a,f)}return f},[c,b,f]),u=function(){var f=[],g=Math.abs(c-b);if("undefined"==typeof a)f.push({width:100,active:!1});else if("default"!==d)"undefined"!=typeof t&&getSteps(t,b,c).forEach(function(b){f.push({width:100*Math.abs(b.max-b.min)/g,active:("number"==typeof a||Array.isArray(a))&&(e&&Array.isArray(a)?b.max>Math.min.apply(Math,_toConsumableArray(a))&&b.min<Math.max.apply(Math,_toConsumableArray(a)):b.max<=a)})});else if(!Array.isArray(a)&&"number"==typeof a)f.push({width:100*(1-(c-a)/g),active:!0}),f.push({width:100*((c-a)/g),active:!1});else if(Array.isArray(a)&&a){var h=[Math.min.apply(Math,_toConsumableArray(a)),Math.max.apply(Math,_toConsumableArray(a))],j=h[0],k=h[1],l=[j,k];l.unshift(b),l.push(c);for(var m=0;m<l.length-1;m++)f.push({width:100*((l[m+1]-l[m])/g),active:l[m]>=j&&l[m+1]<=k})}else f.push({width:100,active:!1});return f},v=function(a){return a<b?b:a>c?c:a},w=useCallback(function(){var d=Math.abs(c-b),e=0,f=[];return g.forEach(function(b,g){b.current&&b.current.offsetWidth&&h.current&&h.current.offsetWidth&&(e=d*b.current.offsetWidth/(2*h.current.offsetWidth)||0),("number"==typeof a||Array.isArray(a))&&f.push("number"==typeof a?100*(1-(c-v(a)+e)/d):100*(1-(c-v(a[g])+e)/d))}),f},[g,h]);return useEffect(function(){l(u()),p(w())},[a,b,c,e,t,d,r,s]),{lineSizes:k,buttonPositions:o}};
2
2
  //# sourceMappingURL=useSliderStationing.js.map