@consta/uikit 4.22.0 → 4.23.1

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 (71) hide show
  1. package/BadgeGroup/index.d.ts +1 -0
  2. package/BadgeGroup/index.js +1 -0
  3. package/SpoilerCanary/index.d.ts +1 -0
  4. package/SpoilerCanary/index.js +1 -0
  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/Collapse/CollapseIcon/CollapseIcon.css +1 -1
  19. package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.js +1 -1
  20. package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.js.map +1 -1
  21. package/__internal__/src/components/Slider/Slider.css +1 -1
  22. package/__internal__/src/components/Slider/Slider.js +1 -1
  23. package/__internal__/src/components/Slider/Slider.js.map +1 -1
  24. package/__internal__/src/components/Slider/SliderInput/SliderInput.css +1 -0
  25. package/__internal__/src/components/Slider/SliderInput/SliderInput.d.ts +1 -0
  26. package/__internal__/src/components/Slider/SliderInput/SliderInput.js +1 -1
  27. package/__internal__/src/components/Slider/SliderInput/SliderInput.js.map +1 -1
  28. package/__internal__/src/components/Slider/SliderLine/SliderLine.css +1 -1
  29. package/__internal__/src/components/Slider/SliderPoint/SliderPoint.css +1 -1
  30. package/__internal__/src/components/Slider/SliderPoint/SliderPoint.js +1 -1
  31. package/__internal__/src/components/Slider/SliderPoint/SliderPoint.js.map +1 -1
  32. package/__internal__/src/components/Slider/helper.d.ts +4 -0
  33. package/__internal__/src/components/Slider/helper.js +1 -1
  34. package/__internal__/src/components/Slider/helper.js.map +1 -1
  35. package/__internal__/src/components/Slider/useSlider/helper.d.ts +1 -0
  36. package/__internal__/src/components/Slider/useSlider/helper.js +1 -1
  37. package/__internal__/src/components/Slider/useSlider/helper.js.map +1 -1
  38. package/__internal__/src/components/Slider/useSlider/useSlider.js +1 -1
  39. package/__internal__/src/components/Slider/useSlider/useSlider.js.map +1 -1
  40. package/__internal__/src/components/Slider/useSliderStationing.js +1 -1
  41. package/__internal__/src/components/Slider/useSliderStationing.js.map +1 -1
  42. package/__internal__/src/components/SpoilerCanary/Spoiler.css +1 -0
  43. package/__internal__/src/components/SpoilerCanary/SpoilerButton/SpoilerButton.css +1 -0
  44. package/__internal__/src/components/SpoilerCanary/SpoilerButton/SpoilerButton.d.ts +4 -0
  45. package/__internal__/src/components/SpoilerCanary/SpoilerButton/SpoilerButton.js +2 -0
  46. package/__internal__/src/components/SpoilerCanary/SpoilerButton/SpoilerButton.js.map +1 -0
  47. package/__internal__/src/components/SpoilerCanary/SpoilerButton/index.d.ts +1 -0
  48. package/__internal__/src/components/SpoilerCanary/SpoilerButton/index.js +2 -0
  49. package/__internal__/src/components/SpoilerCanary/SpoilerButton/index.js.map +1 -0
  50. package/__internal__/src/components/SpoilerCanary/SpoilerCanary.d.ts +5 -0
  51. package/__internal__/src/components/SpoilerCanary/SpoilerCanary.js +2 -0
  52. package/__internal__/src/components/SpoilerCanary/SpoilerCanary.js.map +1 -0
  53. package/__internal__/src/components/SpoilerCanary/index.d.ts +2 -0
  54. package/__internal__/src/components/SpoilerCanary/index.js +2 -0
  55. package/__internal__/src/components/SpoilerCanary/index.js.map +1 -0
  56. package/__internal__/src/components/SpoilerCanary/types.d.ts +32 -0
  57. package/__internal__/src/components/SpoilerCanary/types.js +2 -0
  58. package/__internal__/src/components/SpoilerCanary/types.js.map +1 -0
  59. package/__internal__/src/hooks/useResizableContentCanary/helpers.d.ts +11 -0
  60. package/__internal__/src/hooks/useResizableContentCanary/helpers.js +2 -0
  61. package/__internal__/src/hooks/useResizableContentCanary/helpers.js.map +1 -0
  62. package/__internal__/src/hooks/useResizableContentCanary/index.d.ts +1 -0
  63. package/__internal__/src/hooks/useResizableContentCanary/index.js +2 -0
  64. package/__internal__/src/hooks/useResizableContentCanary/index.js.map +1 -0
  65. package/__internal__/src/hooks/useResizableContentCanary/types.d.ts +27 -0
  66. package/__internal__/src/hooks/useResizableContentCanary/types.js +2 -0
  67. package/__internal__/src/hooks/useResizableContentCanary/types.js.map +1 -0
  68. package/__internal__/src/hooks/useResizableContentCanary/useResizableContent.d.ts +2 -0
  69. package/__internal__/src/hooks/useResizableContentCanary/useResizableContent.js +2 -0
  70. package/__internal__/src/hooks/useResizableContentCanary/useResizableContent.js.map +1 -0
  71. package/package.json +1 -1
@@ -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":"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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,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
@@ -1 +1 @@
1
- {"version":3,"file":"useSliderStationing.js","names":["useCallback","useEffect","useMemo","useState","COUNT_STEPS","getSteps","step","min","max","stepsArray","size","Array","isArray","i","length","push","useSliderStationing","value","view","range","buttonRefs","sliderLineRef","lineSizes","setLineSizes","buttonPositions","setButtonPositions","calcualtedStep","val","Math","abs","calculateLines","sizesArray","absoluteSize","width","active","forEach","stepSize","endPointArray","unshift","getValidValue","calculateButtonPositions","defaultPaddingValue","positions","buttonRef","index","current","offsetWidth"],"sources":["../../../../../src/components/Slider/useSliderStationing.ts"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { Line, PropView } from './helper';\nimport { COUNT_STEPS } from './useSlider/useSlider';\n\ntype UseSliderStationing = (\n value: number | [number, number] | undefined,\n min: number,\n max: number,\n view: PropView,\n range: boolean | undefined,\n step: number | number[] | undefined,\n buttonRefs: [\n React.RefObject<HTMLButtonElement>,\n React.RefObject<HTMLButtonElement>,\n ],\n sliderLineRef: React.RefObject<HTMLButtonElement | HTMLDivElement>,\n) => {\n lineSizes: Line[];\n buttonPositions: number[];\n};\n\nexport const getSteps = (step: number | number[], min: number, max: number) => {\n const stepsArray: { min: number; max: number }[] = [];\n let size = min;\n if (Array.isArray(step)) {\n for (let i = 0; i < step.length - 1; i++) {\n stepsArray.push({\n min: step[i],\n max: step[i + 1],\n });\n }\n } else {\n for (let i = min; i < max; i += step) {\n stepsArray.push({\n min: size,\n max: size + (max - i < step ? max - i : step),\n });\n size += step;\n }\n }\n return stepsArray;\n};\n\nexport const useSliderStationing: UseSliderStationing = (\n value,\n min,\n max,\n view,\n range,\n step = 1,\n buttonRefs,\n sliderLineRef,\n) => {\n const [lineSizes, setLineSizes] = useState<Line[]>([]);\n const [buttonPositions, setButtonPositions] = useState<number[]>([]);\n\n const calcualtedStep = useMemo(() => {\n if (!Array.isArray(step)) {\n const val = Math.abs((max - min) / COUNT_STEPS);\n if (val > step) {\n return val - (val % step);\n }\n return Math.max(val, step);\n }\n return step;\n }, [max, min, step]);\n\n const calculateLines = () => {\n const sizesArray: Line[] = [];\n const absoluteSize = Math.abs(max - min);\n if (typeof value !== 'undefined') {\n if (view === 'default') {\n if (!Array.isArray(value) && typeof value === 'number') {\n sizesArray.push({\n width: (1 - (max - value) / absoluteSize) * 100,\n active: true,\n });\n sizesArray.push({\n width: ((max - value) / absoluteSize) * 100,\n active: false,\n });\n } else if (Array.isArray(value) && value) {\n const endPointArray = [...value];\n endPointArray.unshift(min);\n endPointArray.push(max);\n for (let i = 0; i < endPointArray.length - 1; i++) {\n sizesArray.push({\n width:\n ((endPointArray[i + 1] - endPointArray[i]) / absoluteSize) *\n 100,\n active:\n endPointArray[i] >= value[0] &&\n endPointArray[i + 1] <= value[1],\n });\n }\n } else {\n sizesArray.push({\n width: 100,\n active: false,\n });\n }\n } else if (typeof calcualtedStep !== 'undefined') {\n getSteps(calcualtedStep, min, max).forEach((stepSize) => {\n sizesArray.push({\n width: (Math.abs(stepSize.max - stepSize.min) * 100) / absoluteSize,\n active:\n (typeof value === 'number' || Array.isArray(value)) &&\n (range && Array.isArray(value)\n ? stepSize.max > value[0] &&\n stepSize.min < value[value.length - 1]\n : stepSize.max <= value),\n });\n });\n }\n } else {\n sizesArray.push({\n width: 100,\n active: false,\n });\n }\n return sizesArray;\n };\n\n const getValidValue = (value: number) => {\n if (value < min) return min;\n if (value > max) return max;\n return value;\n };\n\n const calculateButtonPositions = useCallback(() => {\n const absoluteSize = Math.abs(max - min);\n let defaultPaddingValue = 0;\n const positions: number[] = [];\n buttonRefs.forEach((buttonRef, index) => {\n if (\n buttonRef.current &&\n buttonRef.current.offsetWidth &&\n sliderLineRef.current &&\n sliderLineRef.current.offsetWidth\n ) {\n defaultPaddingValue =\n (absoluteSize * buttonRef.current.offsetWidth) /\n (2 * sliderLineRef.current.offsetWidth) || 0;\n }\n if (typeof value === 'number' || Array.isArray(value)) {\n positions.push(\n typeof value === 'number'\n ? (1 -\n (max - getValidValue(value) + defaultPaddingValue) /\n absoluteSize) *\n 100\n : (1 -\n (max - getValidValue(value[index]) + defaultPaddingValue) /\n absoluteSize) *\n 100,\n );\n }\n });\n return positions;\n }, [buttonRefs, sliderLineRef]);\n\n useEffect(() => {\n setLineSizes(calculateLines());\n setButtonPositions(calculateButtonPositions());\n }, [value, min, max, range, calcualtedStep, view]);\n\n return {\n lineSizes,\n buttonPositions,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useSliderStationing.js","names":["useCallback","useEffect","useMemo","useState","useComponentSize","COUNT_STEPS","getSteps","step","min","max","stepsArray","size","Array","isArray","i","length","push","useSliderStationing","value","view","range","buttonRefs","sliderLineRef","lineSizes","setLineSizes","buttonPositions","setButtonPositions","width","height","calcualtedStep","val","Math","abs","calculateLines","sizesArray","absoluteSize","active","forEach","stepSize","minValue","maxValue","endPointArray","unshift","getValidValue","calculateButtonPositions","defaultPaddingValue","positions","buttonRef","index","current","offsetWidth"],"sources":["../../../../../src/components/Slider/useSliderStationing.ts"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useComponentSize } from '##/hooks/useComponentSize';\n\nimport { Line, PropView } from './helper';\nimport { COUNT_STEPS } from './useSlider/useSlider';\n\ntype UseSliderStationing = (\n value: number | [number, number] | undefined,\n min: number,\n max: number,\n view: PropView,\n range: boolean | undefined,\n step: number | number[] | undefined,\n buttonRefs: [\n React.RefObject<HTMLButtonElement>,\n React.RefObject<HTMLButtonElement>,\n ],\n sliderLineRef: React.RefObject<HTMLButtonElement | HTMLDivElement>,\n) => {\n lineSizes: Line[];\n buttonPositions: number[];\n};\n\nexport const getSteps = (step: number | number[], min: number, max: number) => {\n const stepsArray: { min: number; max: number }[] = [];\n let size = min;\n if (Array.isArray(step)) {\n for (let i = 0; i < step.length - 1; i++) {\n stepsArray.push({\n min: step[i],\n max: step[i + 1],\n });\n }\n } else {\n for (let i = min; i < max; i += step) {\n stepsArray.push({\n min: size,\n max: size + (max - i < step ? max - i : step),\n });\n size += step;\n }\n }\n return stepsArray;\n};\n\nexport const useSliderStationing: UseSliderStationing = (\n value,\n min,\n max,\n view,\n range,\n step = 1,\n buttonRefs,\n sliderLineRef,\n) => {\n const [lineSizes, setLineSizes] = useState<Line[]>([]);\n const [buttonPositions, setButtonPositions] = useState<number[]>([]);\n\n const { width, height } = useComponentSize(sliderLineRef);\n\n const calcualtedStep = useMemo(() => {\n if (!Array.isArray(step)) {\n const val = Math.abs((max - min) / COUNT_STEPS);\n if (val > step) {\n return val - (val % step);\n }\n return Math.max(val, step);\n }\n return step;\n }, [max, min, step]);\n\n const calculateLines = () => {\n const sizesArray: Line[] = [];\n const absoluteSize = Math.abs(max - min);\n if (typeof value !== 'undefined') {\n if (view === 'default') {\n if (!Array.isArray(value) && typeof value === 'number') {\n sizesArray.push({\n width: (1 - (max - value) / absoluteSize) * 100,\n active: true,\n });\n sizesArray.push({\n width: ((max - value) / absoluteSize) * 100,\n active: false,\n });\n } else if (Array.isArray(value) && value) {\n const [minValue, maxValue] = [Math.min(...value), Math.max(...value)];\n const endPointArray = [minValue, maxValue];\n endPointArray.unshift(min);\n endPointArray.push(max);\n for (let i = 0; i < endPointArray.length - 1; i++) {\n sizesArray.push({\n width:\n ((endPointArray[i + 1] - endPointArray[i]) / absoluteSize) *\n 100,\n active:\n endPointArray[i] >= minValue &&\n endPointArray[i + 1] <= maxValue,\n });\n }\n } else {\n sizesArray.push({\n width: 100,\n active: false,\n });\n }\n } else if (typeof calcualtedStep !== 'undefined') {\n getSteps(calcualtedStep, min, max).forEach((stepSize) => {\n sizesArray.push({\n width: (Math.abs(stepSize.max - stepSize.min) * 100) / absoluteSize,\n active:\n (typeof value === 'number' || Array.isArray(value)) &&\n (range && Array.isArray(value)\n ? stepSize.max > Math.min(...value) &&\n stepSize.min < Math.max(...value)\n : stepSize.max <= value),\n });\n });\n }\n } else {\n sizesArray.push({\n width: 100,\n active: false,\n });\n }\n return sizesArray;\n };\n\n const getValidValue = (value: number) => {\n if (value < min) return min;\n if (value > max) return max;\n return value;\n };\n\n const calculateButtonPositions = useCallback(() => {\n const absoluteSize = Math.abs(max - min);\n let defaultPaddingValue = 0;\n const positions: number[] = [];\n buttonRefs.forEach((buttonRef, index) => {\n if (\n buttonRef.current &&\n buttonRef.current.offsetWidth &&\n sliderLineRef.current &&\n sliderLineRef.current.offsetWidth\n ) {\n defaultPaddingValue =\n (absoluteSize * buttonRef.current.offsetWidth) /\n (2 * sliderLineRef.current.offsetWidth) || 0;\n }\n if (typeof value === 'number' || Array.isArray(value)) {\n positions.push(\n typeof value === 'number'\n ? (1 -\n (max - getValidValue(value) + defaultPaddingValue) /\n absoluteSize) *\n 100\n : (1 -\n (max - getValidValue(value[index]) + defaultPaddingValue) /\n absoluteSize) *\n 100,\n );\n }\n });\n return positions;\n }, [buttonRefs, sliderLineRef]);\n\n useEffect(() => {\n setLineSizes(calculateLines());\n setButtonPositions(calculateButtonPositions());\n }, [value, min, max, range, calcualtedStep, view, width, height]);\n\n return {\n lineSizes,\n buttonPositions,\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ .canary--Spoiler{width:100%}.canary--Spoiler-Wrapper{--spoiler-content-max-heigt:max-content;max-height:var(--spoiler-content-max-heigt);overflow:hidden;position:relative;width:100%}.canary--Spoiler-Wrapper_mode_blur:not(.canary--Spoiler-Wrapper_open){--spoiler-content-max-heigt:var(--spoiler-content-height)}.canary--Spoiler-Wrapper_mode_blur:not(.canary--Spoiler-Wrapper_open):after{background:linear-gradient(to bottom,transparent 0,var(--color-bg-default) 100%);bottom:0;content:"";height:min(100%,var(--space-6xl));left:0;pointer-events:none;position:absolute;right:0}
@@ -0,0 +1 @@
1
+ .canary--SpoilerButton{align-items:center;color:var(--color-control-typo-secondary);cursor:pointer;display:inline-flex;gap:var(--space-xs);justify-content:center;transition:color .3s}.canary--SpoilerButton:hover{color:var(--color-control-typo-secondary-hover)}.canary--SpoilerButton-Label.Text{color:currentColor}
@@ -0,0 +1,4 @@
1
+ import './SpoilerButton.css';
2
+ import { SpoilerButtonProps } from '../types';
3
+ export declare const cnSpoilerButton: import("@bem-react/classname").ClassNameFormatter;
4
+ export declare const SpoilerButton: import("../../../utils/types/PropsWithAsAttributes").ComponentWithAs<SpoilerButtonProps, "div">;
@@ -0,0 +1,2 @@
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["size","lessIcon","lessLabel","moreIcon","moreLabel","className","open","as"];import"./SpoilerButton.css";import{AnimateIconSwitcher}from"@consta/icons/AnimateIconSwitcher";import React from"react";import{IconArrowDown}from"../../../icons/IconArrowDown";import{cnCanary}from"../../../utils/bem";import{forwardRefWithAs}from"../../../utils/types/PropsWithAsAttributes";import{Text}from"../../Text";import{defaultSpoilerPropSize}from"../types";export var cnSpoilerButton=cnCanary("SpoilerButton");var spoilerIconSizeMap={l:"m",m:"s",s:"s",xs:"xs"};export var SpoilerButton=forwardRefWithAs(function(a,b){var c=a.size,d=void 0===c?defaultSpoilerPropSize:c,e=a.lessIcon,f=a.lessLabel,g=void 0===f?"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043C\u0435\u043D\u044C\u0448\u0435":f,h=a.moreIcon,i=void 0===h?IconArrowDown:h,j=a.moreLabel,k=void 0===j?"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435":j,l=a.className,m=a.open,n=a.as,o=void 0===n?"div":n,p=_objectWithoutProperties(a,_excluded);return React.createElement(o,Object.assign({ref:b,className:cnSpoilerButton({size:d},[l])},p),React.createElement(Text,{className:cnSpoilerButton("Label"),size:d,as:"span"},m?g:k),React.createElement(AnimateIconSwitcher,{startIcon:i,endIcon:e,active:m,endDirection:e?void 0:180,size:spoilerIconSizeMap[d],className:cnSpoilerButton("Icon")}))});
2
+ //# sourceMappingURL=SpoilerButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpoilerButton.js","names":["AnimateIconSwitcher","React","IconArrowDown","cnCanary","forwardRefWithAs","Text","defaultSpoilerPropSize","cnSpoilerButton","spoilerIconSizeMap","l","m","s","xs","SpoilerButton","props","ref","size","lessIcon","lessLabel","moreIcon","moreLabel","className","open","as","otherProps"],"sources":["../../../../../../src/components/SpoilerCanary/SpoilerButton/SpoilerButton.tsx"],"sourcesContent":["import './SpoilerButton.css';\n\nimport { AnimateIconSwitcher } from '@consta/icons/AnimateIconSwitcher';\nimport React from 'react';\n\nimport { IconPropSize } from '##/icons/Icon';\nimport { IconArrowDown } from '##/icons/IconArrowDown';\nimport { cnCanary } from '##/utils/bem';\nimport { forwardRefWithAs } from '##/utils/types/PropsWithAsAttributes';\n\nimport { Text } from '../../Text';\nimport {\n defaultSpoilerPropSize,\n SpoilerButtonProps,\n SpoilerPropSize,\n} from '../types';\n\nexport const cnSpoilerButton = cnCanary('SpoilerButton');\n\nconst spoilerIconSizeMap: Record<SpoilerPropSize, IconPropSize> = {\n l: 'm',\n m: 's',\n s: 's',\n xs: 'xs',\n};\n\nexport const SpoilerButton = forwardRefWithAs<SpoilerButtonProps>(\n (props, ref) => {\n const {\n size = defaultSpoilerPropSize,\n lessIcon,\n lessLabel = 'Показать меньше',\n moreIcon = IconArrowDown,\n moreLabel = 'Показать больше',\n className,\n open,\n as = 'div',\n ...otherProps\n } = props;\n\n const Tag = as as string;\n\n return (\n <Tag\n ref={ref}\n className={cnSpoilerButton({ size }, [className])}\n {...otherProps}\n >\n <Text className={cnSpoilerButton('Label')} size={size} as=\"span\">\n {open ? lessLabel : moreLabel}\n </Text>\n <AnimateIconSwitcher\n startIcon={moreIcon}\n endIcon={lessIcon}\n active={open}\n endDirection={lessIcon ? undefined : 180}\n size={spoilerIconSizeMap[size]}\n className={cnSpoilerButton('Icon')}\n />\n </Tag>\n );\n },\n);\n"],"mappings":"kLAAA,4BAEA,OAASA,mBAAT,KAAoC,mCAApC,CACA,MAAOC,MAAP,KAAkB,OAAlB,CAGA,OAASC,aAAT,oCACA,OAASC,QAAT,0BACA,OAASC,gBAAT,kDAEA,OAASC,IAAT,kBACA,OACEC,sBADF,gBAMA,MAAO,IAAMC,gBAAe,CAAGJ,QAAQ,CAAC,eAAD,CAAhC,CAEP,GAAMK,mBAAyD,CAAG,CAChEC,CAAC,CAAE,GAD6D,CAEhEC,CAAC,CAAE,GAF6D,CAGhEC,CAAC,CAAE,GAH6D,CAIhEC,EAAE,CAAE,IAJ4D,CAAlE,CAOA,MAAO,IAAMC,cAAa,CAAGT,gBAAgB,CAC3C,SAACU,CAAD,CAAQC,CAAR,CAAgB,OAWVD,CAXU,CAEZE,IAFY,CAEZA,CAFY,YAELV,sBAFK,GAGZW,CAHY,CAWVH,CAXU,CAGZG,QAHY,GAWVH,CAXU,CAIZI,SAJY,CAIZA,CAJY,YAIA,uFAJA,KAWVJ,CAXU,CAKZK,QALY,CAKZA,CALY,YAKDjB,aALC,KAWVY,CAXU,CAMZM,SANY,CAMZA,CANY,YAMA,uFANA,GAOZC,CAPY,CAWVP,CAXU,CAOZO,SAPY,CAQZC,CARY,CAWVR,CAXU,CAQZQ,IARY,GAWVR,CAXU,CASZS,EATY,CASZA,CATY,YASP,KATO,GAUTC,CAVS,0BAWVV,CAXU,YAed,MACE,qBAHUS,CAGV,gBACE,GAAG,CAAER,CADP,CAEE,SAAS,CAAER,eAAe,CAAC,CAAES,IAAI,CAAJA,CAAF,CAAD,CAAW,CAACK,CAAD,CAAX,CAF5B,EAGMG,CAHN,EAKE,oBAAC,IAAD,EAAM,SAAS,CAAEjB,eAAe,CAAC,OAAD,CAAhC,CAA2C,IAAI,CAAES,CAAjD,CAAuD,EAAE,CAAC,MAA1D,EACGM,CAAI,CAAGJ,CAAH,CAAeE,CADtB,CALF,CAQE,oBAAC,mBAAD,EACE,SAAS,CAAED,CADb,CAEE,OAAO,CAAEF,CAFX,CAGE,MAAM,CAAEK,CAHV,CAIE,YAAY,CAAEL,CAAQ,QAAe,GAJvC,CAKE,IAAI,CAAET,kBAAkB,CAACQ,CAAD,CAL1B,CAME,SAAS,CAAET,eAAe,CAAC,MAAD,CAN5B,EARF,CAkBH,CAnC0C,CAAtC"}
@@ -0,0 +1 @@
1
+ export * from './SpoilerButton';
@@ -0,0 +1,2 @@
1
+ export*from"./SpoilerButton";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/components/SpoilerCanary/SpoilerButton/index.ts"],"sourcesContent":["export * from './SpoilerButton';\n"],"mappings":"AAAA"}
@@ -0,0 +1,5 @@
1
+ import './Spoiler.css';
2
+ import React from 'react';
3
+ import { SpoilerProps } from './types';
4
+ export declare const cnSpoiler: import("@bem-react/classname").ClassNameFormatter;
5
+ export declare const Spoiler: React.ForwardRefExoticComponent<SpoilerProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +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=["preview","maxHeight","fullText","size","lessIcon","lessLabel","children","moreIcon","moreLabel","className"];import"./Spoiler.css";import React,{forwardRef}from"react";import{Text}from"../Text";import{useFlag}from"../../hooks/useFlag";import{cnMixSpace}from"../../mixs/MixSpace";import{cnCanary}from"../../utils/bem";import{SpoilerButton}from"./SpoilerButton";import{defaultSpoilerPropSize}from"./types";export var cnSpoiler=cnCanary("Spoiler");var spoilerOffsetMap={xs:"xs",s:"s",m:"m",l:"m"},getContent=function(a,b){return a.children?{mode:"blur",content:a.children}:{mode:"dots",content:b?a.fullText:a.preview}};export var Spoiler=forwardRef(function(a,b){var c=a.preview,d=a.maxHeight,e=void 0===d?96:d,f=a.fullText,g=a.size,h=void 0===g?defaultSpoilerPropSize:g,i=a.lessIcon,j=a.lessLabel,k=a.children,l=a.moreIcon,m=a.moreLabel,n=a.className,o=_objectWithoutProperties(a,_excluded),p=useFlag(),q=_slicedToArray(p,2),r=q[0],s=q[1],t=getContent(a,r),u=t.mode,v=t.content;return React.createElement("div",Object.assign({ref:b,className:cnSpoiler({size:h},[n])},o),React.createElement(Text,{className:cnSpoiler("Wrapper",{mode:u,open:r}),size:h,style:_defineProperty({},"--spoiler-content-height","".concat(e,"px"))},v),React.createElement(SpoilerButton,{className:cnSpoiler("Button",[cnMixSpace({mT:spoilerOffsetMap[h]})]),lessIcon:i,lessLabel:j,moreIcon:l,moreLabel:m,onClick:s.toggle,open:r,size:h}))});
2
+ //# sourceMappingURL=SpoilerCanary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpoilerCanary.js","names":["React","forwardRef","Text","useFlag","cnMixSpace","cnCanary","SpoilerButton","defaultSpoilerPropSize","cnSpoiler","spoilerOffsetMap","xs","s","m","l","getContent","props","isOpen","children","mode","content","fullText","preview","Spoiler","ref","maxHeight","size","lessIcon","lessLabel","moreIcon","moreLabel","className","otherProps","setIsOpen","open","mT","toggle"],"sources":["../../../../../src/components/SpoilerCanary/SpoilerCanary.tsx"],"sourcesContent":["import './Spoiler.css';\n\nimport React, { forwardRef } from 'react';\n\nimport { Text } from '##/components/Text';\nimport { useFlag } from '##/hooks/useFlag';\nimport { cnMixSpace, Space } from '##/mixs/MixSpace';\nimport { cnCanary } from '##/utils/bem';\n\nimport { SpoilerButton } from './SpoilerButton';\nimport { defaultSpoilerPropSize, SpoilerProps, SpoilerPropSize } from './types';\n\nexport const cnSpoiler = cnCanary('Spoiler');\n\nconst spoilerOffsetMap: Record<SpoilerPropSize, Space> = {\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'm',\n};\n\nconst getContent = (props: SpoilerProps, isOpen: boolean) => {\n if (props.children) {\n return {\n mode: 'blur',\n content: props.children,\n };\n }\n return {\n mode: 'dots',\n content: isOpen ? props.fullText : props.preview,\n };\n};\n\nexport const Spoiler = forwardRef<HTMLDivElement, SpoilerProps>(\n (props, ref) => {\n const {\n preview,\n maxHeight = 96,\n fullText,\n size = defaultSpoilerPropSize,\n lessIcon,\n lessLabel,\n children,\n moreIcon,\n moreLabel,\n className,\n ...otherProps\n } = props;\n\n const [isOpen, setIsOpen] = useFlag();\n\n const { mode, content } = getContent(props, isOpen);\n\n return (\n <div\n ref={ref}\n className={cnSpoiler({ size }, [className])}\n {...otherProps}\n >\n <Text\n className={cnSpoiler('Wrapper', { mode, open: isOpen })}\n size={size}\n style={{\n ['--spoiler-content-height' as string]: `${maxHeight}px`,\n }}\n >\n {content}\n </Text>\n <SpoilerButton\n className={cnSpoiler('Button', [\n cnMixSpace({ mT: spoilerOffsetMap[size] }),\n ])}\n lessIcon={lessIcon}\n lessLabel={lessLabel}\n moreIcon={moreIcon}\n moreLabel={moreLabel}\n onClick={setIsOpen.toggle}\n open={isOpen}\n size={size}\n />\n </div>\n );\n },\n);\n"],"mappings":"sVAAA,sBAEA,MAAOA,MAAP,EAAgBC,UAAhB,KAAkC,OAAlC,CAEA,OAASC,IAAT,eACA,OAASC,OAAT,2BACA,OAASC,UAAT,2BACA,OAASC,QAAT,uBAEA,OAASC,aAAT,uBACA,OAASC,sBAAT,eAEA,MAAO,IAAMC,UAAS,CAAGH,QAAQ,CAAC,SAAD,CAA1B,C,GAEDI,iBAAgD,CAAG,CACvDC,EAAE,CAAE,IADmD,CAEvDC,CAAC,CAAE,GAFoD,CAGvDC,CAAC,CAAE,GAHoD,CAIvDC,CAAC,CAAE,GAJoD,C,CAOnDC,UAAU,CAAG,SAACC,CAAD,CAAsBC,CAAtB,CAA0C,OACvDD,EAAK,CAACE,QADiD,CAElD,CACLC,IAAI,CAAE,MADD,CAELC,OAAO,CAAEJ,CAAK,CAACE,QAFV,CAFkD,CAOpD,CACLC,IAAI,CAAE,MADD,CAELC,OAAO,CAAEH,CAAM,CAAGD,CAAK,CAACK,QAAT,CAAoBL,CAAK,CAACM,OAFpC,CAIR,C,CAED,MAAO,IAAMC,QAAO,CAAGrB,UAAU,CAC/B,SAACc,CAAD,CAAQQ,CAAR,CAAgB,IAEZF,EAFY,CAaVN,CAbU,CAEZM,OAFY,GAaVN,CAbU,CAGZS,SAHY,CAGZA,CAHY,YAGA,EAHA,GAIZJ,CAJY,CAaVL,CAbU,CAIZK,QAJY,GAaVL,CAbU,CAKZU,IALY,CAKZA,CALY,YAKLlB,sBALK,GAMZmB,CANY,CAaVX,CAbU,CAMZW,QANY,CAOZC,CAPY,CAaVZ,CAbU,CAOZY,SAPY,CAQZV,CARY,CAaVF,CAbU,CAQZE,QARY,CASZW,CATY,CAaVb,CAbU,CASZa,QATY,CAUZC,CAVY,CAaVd,CAbU,CAUZc,SAVY,CAWZC,CAXY,CAaVf,CAbU,CAWZe,SAXY,CAYTC,CAZS,0BAaVhB,CAbU,cAecZ,OAAO,EAfrB,uBAePa,CAfO,MAeCgB,CAfD,QAiBYlB,UAAU,CAACC,CAAD,CAAQC,CAAR,CAjBtB,CAiBNE,CAjBM,GAiBNA,IAjBM,CAiBAC,CAjBA,GAiBAA,OAjBA,CAmBd,MACE,0CACE,GAAG,CAAEI,CADP,CAEE,SAAS,CAAEf,SAAS,CAAC,CAAEiB,IAAI,CAAJA,CAAF,CAAD,CAAW,CAACK,CAAD,CAAX,CAFtB,EAGMC,CAHN,EAKE,oBAAC,IAAD,EACE,SAAS,CAAEvB,SAAS,CAAC,SAAD,CAAY,CAAEU,IAAI,CAAJA,CAAF,CAAQe,IAAI,CAAEjB,CAAd,CAAZ,CADtB,CAEE,IAAI,CAAES,CAFR,CAGE,KAAK,oBACF,0BADE,WACwCD,CADxC,OAHP,EAOGL,CAPH,CALF,CAcE,oBAAC,aAAD,EACE,SAAS,CAAEX,SAAS,CAAC,QAAD,CAAW,CAC7BJ,UAAU,CAAC,CAAE8B,EAAE,CAAEzB,gBAAgB,CAACgB,CAAD,CAAtB,CAAD,CADmB,CAAX,CADtB,CAIE,QAAQ,CAAEC,CAJZ,CAKE,SAAS,CAAEC,CALb,CAME,QAAQ,CAAEC,CANZ,CAOE,SAAS,CAAEC,CAPb,CAQE,OAAO,CAAEG,CAAS,CAACG,MARrB,CASE,IAAI,CAAEnB,CATR,CAUE,IAAI,CAAES,CAVR,EAdF,CA4BH,CAjD8B,CAA1B"}
@@ -0,0 +1,2 @@
1
+ export * from './SpoilerCanary';
2
+ export * from './SpoilerButton';
@@ -0,0 +1,2 @@
1
+ export*from"./SpoilerCanary";export*from"./SpoilerButton";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/SpoilerCanary/index.ts"],"sourcesContent":["export * from './SpoilerCanary';\nexport * from './SpoilerButton';\n"],"mappings":"AAAA,6BACA"}
@@ -0,0 +1,32 @@
1
+ import { IconComponent } from '@consta/icons/Icon';
2
+ import React from 'react';
3
+ import { PropsWithHTMLAttributes } from "../../utils/types/PropsWithHTMLAttributes";
4
+ export declare const spolierPropSize: readonly ["m", "xs", "s", "l"];
5
+ export declare type SpoilerPropSize = typeof spolierPropSize[number];
6
+ export declare const defaultSpoilerPropSize: "m";
7
+ export declare type SpoilerModeProp = 'dots' | 'blur';
8
+ export declare type SpoilerButtonProps = {
9
+ size?: SpoilerPropSize;
10
+ lessLabel?: string;
11
+ lessIcon?: IconComponent;
12
+ moreLabel?: string;
13
+ moreIcon?: IconComponent;
14
+ open?: boolean;
15
+ };
16
+ export declare type SpoilerProps = Omit<PropsWithHTMLAttributes<{
17
+ size?: SpoilerPropSize;
18
+ lessLabel?: string;
19
+ lessIcon?: IconComponent;
20
+ moreLabel?: string;
21
+ moreIcon?: IconComponent;
22
+ }, HTMLDivElement>, 'children'> & ({
23
+ preview: React.ReactNode;
24
+ fullText: React.ReactNode;
25
+ maxHeight?: never;
26
+ children?: never;
27
+ } | {
28
+ preview?: never;
29
+ fullText?: never;
30
+ children: React.ReactNode;
31
+ maxHeight?: number;
32
+ });
@@ -0,0 +1,2 @@
1
+ export var spolierPropSize=["m","xs","s","l"];export var defaultSpoilerPropSize=spolierPropSize[0];
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":["spolierPropSize","defaultSpoilerPropSize"],"sources":["../../../../../src/components/SpoilerCanary/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport const spolierPropSize = ['m', 'xs', 's', 'l'] as const;\nexport type SpoilerPropSize = typeof spolierPropSize[number];\nexport const defaultSpoilerPropSize = spolierPropSize[0];\n\nexport type SpoilerModeProp = 'dots' | 'blur';\n\nexport type SpoilerButtonProps = {\n size?: SpoilerPropSize;\n lessLabel?: string;\n lessIcon?: IconComponent;\n moreLabel?: string;\n moreIcon?: IconComponent;\n open?: boolean;\n};\n\nexport type SpoilerProps = Omit<\n PropsWithHTMLAttributes<\n {\n size?: SpoilerPropSize;\n lessLabel?: string;\n lessIcon?: IconComponent;\n moreLabel?: string;\n moreIcon?: IconComponent;\n },\n HTMLDivElement\n >,\n 'children'\n> &\n (\n | {\n preview: React.ReactNode;\n fullText: React.ReactNode;\n maxHeight?: never;\n children?: never;\n }\n | {\n preview?: never;\n fullText?: never;\n children: React.ReactNode;\n maxHeight?: number;\n }\n );\n"],"mappings":"AAKA,MAAO,IAAMA,gBAAe,CAAG,CAAC,GAAD,CAAM,IAAN,CAAY,GAAZ,CAAiB,GAAjB,CAAxB,CAEP,MAAO,IAAMC,uBAAsB,CAAGD,eAAe,CAAC,CAAD,CAA9C"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { UseResizableContentPropDirection, UseResizableContentRef, UseResizableContentSize } from './types';
3
+ export declare const getRefsSizes: (refs: Array<UseResizableContentRef | React.RefObject<HTMLElement>>, direction: UseResizableContentPropDirection) => UseResizableContentSize[];
4
+ export declare const getCalcaulatedSizes: (params: {
5
+ event: MouseEvent | TouchEvent | Event;
6
+ index: number;
7
+ direction: UseResizableContentPropDirection;
8
+ blocks: Array<UseResizableContentRef | React.RefObject<HTMLElement>>;
9
+ container: React.RefObject<HTMLElement>;
10
+ sizes: UseResizableContentSize[];
11
+ }) => UseResizableContentSize[];
@@ -0,0 +1,2 @@
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{trackPosition}from"../../components/Slider/useSlider/helper";export var getRefsSizes=function(a,b){return a.map(function(a){var c=Object.prototype.hasOwnProperty.call(a,"current")?a:a.ref;if(c.current){var d=c.current.getBoundingClientRect(),e=d.width,f=d.height;return{width:"horizontal"===b?e:void 0,height:"horizontal"===b?void 0:f}}return{width:void 0,height:void 0}})};var getTargetBlockPosition=function(a,b,c){return a.slice(0,c).map(function(a){var c;return null!==(c="horizontal"===b?a.width:a.height)&&void 0!==c?c:0}).reduce(function(b,c){return(null!==b&&void 0!==b?b:0)+(null!==c&&void 0!==c?c:0)},0)},getNonCalcualtedSize=function(a,b,c){return a.filter(function(a,b){return c!==b&&c+1!==b}).map(function(a){var c;return null!==(c="horizontal"===b?a.width:a.height)&&void 0!==c?c:0}).reduce(function(b,c){return(null!==b&&void 0!==b?b:0)+(null!==c&&void 0!==c?c:0)},0)},getBlockMaxSizes=function(a,b,c){if(!Object.prototype.hasOwnProperty.call(a[c],"current")){var d=a[c];return["horizontal"===b?d.minWidth:d.minHeight,"horizontal"===b?d.maxWidth:d.maxHeight]}return[void 0,void 0]},getValidValues=function(a){var b=a.value,c=a.index,d=a.direction,e=a.blocks,f=a.sizes,g=a.containerHeight,h=a.containerWidth,i=("horizontal"===d?h:g)-getNonCalcualtedSize(f,d,c),j=getBlockMaxSizes(e,d,c),k=getBlockMaxSizes(e,d,c+1),l=[b,i-b],m=i-b;if(0>b||j[0]&&b<j[0]){var n,o=null!==(n=j[0])&&void 0!==n?n:0;l=[o,i-o]}if(b>i||j[1]&&b>j[1]){var p,q=null!==(p=j[1])&&void 0!==p?p:i;l=[q,i-q]}if(k[0]&&m<k[0]){var r,s=null!==(r=k[0])&&void 0!==r?r:0;l=[i-s,s]}if(k[1]&&m>k[1]){var t,u=null!==(t=k[1])&&void 0!==t?t:i;l=[i-u,u]}return l};export var getCalcaulatedSizes=function(a){var b=a.event,c=a.index,d=a.sizes,e=a.container,f=a.direction,g=a.blocks,h=trackPosition(b);if(h){var i,j,k=null!==(i=null===(j=e.current)||void 0===j?void 0:j.getBoundingClientRect())&&void 0!==i?i:{left:0,top:0},l=k.left,m=k.top,n=k.width,o=k.height,p=getTargetBlockPosition(d,f,c),q="horizontal"===f?h.x-l-p:h.y-m-p,r=getValidValues({value:q,index:c,containerHeight:null!==o&&void 0!==o?o:0,containerWidth:null!==n&&void 0!==n?n:0,sizes:d,blocks:g,direction:f}),s=_slicedToArray(r,2),t=s[0],u=s[1];return[{width:"horizontal"===f?t:d[c].width,height:"horizontal"===f?d[c].height:t},{width:"horizontal"===f?u:d[c+1].width,height:"horizontal"===f?d[c+1].height:u}]}return[d[c],d[c+1]]};
2
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","names":["trackPosition","getRefsSizes","refs","direction","map","el","ref","Object","prototype","hasOwnProperty","call","current","getBoundingClientRect","width","height","getTargetBlockPosition","sizes","index","slice","reduce","val","a","getNonCalcualtedSize","filter","_el","i","getBlockMaxSizes","blocks","minWidth","minHeight","maxWidth","maxHeight","getValidValues","params","value","containerHeight","containerWidth","blocksSizes","next","results","right","min","max","getCalcaulatedSizes","event","container","position","left","top","size","x","y","first","second"],"sources":["../../../../../src/hooks/useResizableContentCanary/helpers.ts"],"sourcesContent":["import React from 'react';\n\nimport { trackPosition } from '##/components/Slider/useSlider/helper';\n\nimport {\n UseResizableContentPropDirection,\n UseResizableContentRef,\n UseResizableContentSize,\n} from './types';\n\nexport const getRefsSizes = (\n refs: Array<UseResizableContentRef | React.RefObject<HTMLElement>>,\n direction: UseResizableContentPropDirection,\n): UseResizableContentSize[] =>\n refs.map((el) => {\n const ref = Object.prototype.hasOwnProperty.call(el, 'current')\n ? (el as React.RefObject<HTMLElement>)\n : (el as UseResizableContentRef).ref;\n if (ref.current) {\n const { width, height } = ref.current.getBoundingClientRect();\n return {\n width: direction === 'horizontal' ? width : undefined,\n height: direction === 'horizontal' ? undefined : height,\n };\n }\n return {\n width: undefined,\n height: undefined,\n };\n });\n\nconst getTargetBlockPosition = (\n sizes: UseResizableContentSize[],\n direction: UseResizableContentPropDirection,\n index: number,\n) =>\n sizes\n .slice(0, index)\n .map((el) => (direction === 'horizontal' ? el.width : el.height) ?? 0)\n .reduce((val, a) => (val ?? 0) + (a ?? 0), 0);\n\nconst getNonCalcualtedSize = (\n sizes: UseResizableContentSize[],\n direction: UseResizableContentPropDirection,\n index: number,\n) =>\n sizes\n .filter((_el, i) => !(index === i || index + 1 === i))\n .map((el) => (direction === 'horizontal' ? el.width : el.height) ?? 0)\n .reduce((val, a) => (val ?? 0) + (a ?? 0), 0);\n\nconst getBlockMaxSizes = (\n blocks: Array<UseResizableContentRef | React.RefObject<HTMLElement>>,\n direction: UseResizableContentPropDirection,\n index: number,\n) => {\n if (!Object.prototype.hasOwnProperty.call(blocks[index], 'current')) {\n const el = blocks[index] as UseResizableContentRef;\n return [\n direction === 'horizontal' ? el.minWidth : el.minHeight,\n direction === 'horizontal' ? el.maxWidth : el.maxHeight,\n ];\n }\n return [undefined, undefined];\n};\n\nconst getValidValues = (params: {\n value: number;\n index: number;\n direction: UseResizableContentPropDirection;\n blocks: Array<UseResizableContentRef | React.RefObject<HTMLElement>>;\n containerWidth: number;\n containerHeight: number;\n sizes: UseResizableContentSize[];\n}) => {\n const {\n value,\n index,\n direction,\n blocks,\n sizes,\n containerHeight,\n containerWidth,\n } = params;\n const blocksSizes =\n (direction === 'horizontal' ? containerWidth : containerHeight) -\n getNonCalcualtedSize(sizes, direction, index);\n const current = getBlockMaxSizes(blocks, direction, index);\n const next = getBlockMaxSizes(blocks, direction, index + 1);\n let results = [value, blocksSizes - value];\n const right = blocksSizes - value;\n if (value < 0 || (current[0] && value < current[0])) {\n const min = current[0] ?? 0;\n results = [min, blocksSizes - min];\n }\n if (value > blocksSizes || (current[1] && value > current[1])) {\n const max = current[1] ?? blocksSizes;\n results = [max, blocksSizes - max];\n }\n if (next[0] && right < next[0]) {\n const min = next[0] ?? 0;\n results = [blocksSizes - min, min];\n }\n if (next[1] && right > next[1]) {\n const max = next[1] ?? blocksSizes;\n results = [blocksSizes - max, max];\n }\n return results;\n};\n\nexport const getCalcaulatedSizes = (params: {\n event: MouseEvent | TouchEvent | Event;\n index: number;\n direction: UseResizableContentPropDirection;\n blocks: Array<UseResizableContentRef | React.RefObject<HTMLElement>>;\n container: React.RefObject<HTMLElement>;\n sizes: UseResizableContentSize[];\n}) => {\n const { event, index, sizes, container, direction, blocks } = params;\n const nativeEvent = event as MouseEvent | TouchEvent;\n const position = trackPosition(nativeEvent);\n if (position) {\n const { left, top, width, height } =\n container.current?.getBoundingClientRect() ?? {\n left: 0,\n top: 0,\n };\n const trackPosition = getTargetBlockPosition(sizes, direction, index);\n const size =\n direction === 'horizontal'\n ? position.x - left - trackPosition\n : position.y - top - trackPosition;\n const [first, second] = getValidValues({\n value: size,\n index,\n containerHeight: height ?? 0,\n containerWidth: width ?? 0,\n sizes,\n blocks,\n direction,\n });\n return [\n {\n width: direction === 'horizontal' ? first : sizes[index].width,\n height: direction === 'horizontal' ? sizes[index].height : first,\n },\n {\n width: direction === 'horizontal' ? second : sizes[index + 1].width,\n height: direction === 'horizontal' ? sizes[index + 1].height : second,\n },\n ];\n }\n return [sizes[index], sizes[index + 1]];\n};\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './useResizableContent';
@@ -0,0 +1,2 @@
1
+ export*from"./useResizableContent";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/hooks/useResizableContentCanary/index.ts"],"sourcesContent":["export * from './useResizableContent';\n"],"mappings":"AAAA"}
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ export declare type UseResizableContentPropDirection = 'vertical' | 'horizontal';
3
+ export declare type UseResizableContentRef = {
4
+ ref: React.RefObject<HTMLElement>;
5
+ maxHeight?: number;
6
+ minHeight?: number;
7
+ maxWidth?: number;
8
+ minWidth?: number;
9
+ };
10
+ export declare type UseResizableContentSize = {
11
+ width?: number;
12
+ height?: number;
13
+ };
14
+ declare type UseResizableContentProps = {
15
+ blocks: Array<UseResizableContentRef | React.RefObject<HTMLElement>>;
16
+ direction?: UseResizableContentPropDirection;
17
+ container: React.RefObject<HTMLElement>;
18
+ isActive?: boolean;
19
+ };
20
+ export declare type UseResizableContent = (props: UseResizableContentProps) => {
21
+ handlers: Array<{
22
+ onMouseDown: React.MouseEventHandler;
23
+ onTouchStart: React.TouchEventHandler;
24
+ }>;
25
+ sizes: UseResizableContentSize[];
26
+ };
27
+ export {};
@@ -0,0 +1,2 @@
1
+ export{};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/hooks/useResizableContentCanary/types.ts"],"sourcesContent":["import React from 'react';\n\nexport type UseResizableContentPropDirection = 'vertical' | 'horizontal';\n\nexport type UseResizableContentRef = {\n ref: React.RefObject<HTMLElement>;\n maxHeight?: number;\n minHeight?: number;\n maxWidth?: number;\n minWidth?: number;\n};\n\nexport type UseResizableContentSize = { width?: number; height?: number };\n\ntype UseResizableContentProps = {\n blocks: Array<UseResizableContentRef | React.RefObject<HTMLElement>>;\n direction?: UseResizableContentPropDirection;\n container: React.RefObject<HTMLElement>;\n isActive?: boolean;\n};\n\nexport type UseResizableContent = (props: UseResizableContentProps) => {\n handlers: Array<{\n onMouseDown: React.MouseEventHandler;\n onTouchStart: React.TouchEventHandler;\n }>;\n sizes: UseResizableContentSize[];\n};\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import { UseResizableContent } from './types';
2
+ export declare const useResizableContent: UseResizableContent;
@@ -0,0 +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{getCalcaulatedSizes,getRefsSizes}from"./helpers";export var useResizableContent=function(a){var b=a.blocks,c=a.direction,d=void 0===c?"horizontal":c,e=a.container,f=a.isActive,g=useRef(null),h=useState(getRefsSizes(b,d)),i=_slicedToArray(h,2),j=i[0],k=i[1],l=useCallback(function(a){var b="add"===a?"addEventListener":"removeEventListener";document[b]("mouseup",n),document[b]("touchend",n),document[b]("mousemove",m),document[b]("touchmove",m)},[]),m=useCallback(function(a){var c=g.current;"number"==typeof c&&k(function(f){var g=_toConsumableArray(f),h=getCalcaulatedSizes({event:a,index:c,direction:d,blocks:b,container:e,sizes:g}),i=_slicedToArray(h,2),j=i[0],k=i[1];return g[c]=j,g[c+1]=k,g})},[e,d,b]),n=useCallback(function(){l("remove"),g.current=null},[]),o=useCallback(function(a){g.current=a,l("add")},[]),p=useMemo(function(){return Array.from({length:b.length-1}).map(function(a,b){return{onMouseDown:function onMouseDown(){return f?o(b):void 0},onTouchStart:function onTouchStart(){return f?o(b):void 0}}})},[b,d,e,f]);return useEffect(function(){f&&k(getRefsSizes(b,d))},[b,d,f]),useEffect(function(){f||n()},[f]),{handlers:p,sizes:j}};
2
+ //# sourceMappingURL=useResizableContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResizableContent.js","names":["useCallback","useEffect","useMemo","useRef","useState","getCalcaulatedSizes","getRefsSizes","useResizableContent","props","blocks","direction","container","isActive","activeIndex","sizes","setSizes","controlListeners","type","method","document","handleRelease","handleTouchMove","event","index","current","copy","copySizes","left","right","handlePress","handlers","Array","from","length","map","_el","onMouseDown","onTouchStart"],"sources":["../../../../../src/hooks/useResizableContentCanary/useResizableContent.ts"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { getCalcaulatedSizes, getRefsSizes } from './helpers';\nimport { UseResizableContent, UseResizableContentSize } from './types';\n\nexport const useResizableContent: UseResizableContent = (props) => {\n const { blocks, direction = 'horizontal', container, isActive } = props;\n\n const activeIndex: React.MutableRefObject<number | null> = useRef(null);\n\n const [sizes, setSizes] = useState<UseResizableContentSize[]>(\n getRefsSizes(blocks, direction),\n );\n\n const controlListeners = useCallback((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 const handleTouchMove = useCallback(\n (event: MouseEvent | TouchEvent | Event) => {\n const index = activeIndex.current;\n if (typeof index === 'number') {\n setSizes((copy) => {\n const copySizes = [...copy];\n const [left, right] = getCalcaulatedSizes({\n event,\n index,\n direction,\n blocks,\n container,\n sizes: copySizes,\n });\n copySizes[index] = left;\n copySizes[index + 1] = right;\n return copySizes;\n });\n }\n },\n [container, direction, blocks],\n );\n\n const handleRelease = useCallback(() => {\n controlListeners('remove');\n activeIndex.current = null;\n }, []);\n\n const handlePress = useCallback((index: number) => {\n activeIndex.current = index;\n controlListeners('add');\n }, []);\n\n const handlers = useMemo(\n () =>\n Array.from({ length: blocks.length - 1 }).map((_el, index) => ({\n onMouseDown: () => (isActive ? handlePress(index) : undefined),\n onTouchStart: () => (isActive ? handlePress(index) : undefined),\n })),\n [blocks, direction, container, isActive],\n );\n\n useEffect(() => {\n if (isActive) {\n setSizes(getRefsSizes(blocks, direction));\n }\n }, [blocks, direction, isActive]);\n\n useEffect(() => {\n !isActive && handleRelease();\n }, [isActive]);\n\n return {\n handlers,\n sizes,\n };\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@consta/uikit",
3
- "version": "4.22.0",
3
+ "version": "4.23.1",
4
4
  "keywords": [
5
5
  "ui-kit",
6
6
  "design-system",