@chayns-components/core 5.0.0-beta.602 → 5.0.0-beta.603
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/slider/Slider.js +4 -0
- package/lib/cjs/components/slider/Slider.js.map +1 -1
- package/lib/cjs/components/slider/Slider.styles.js +1 -0
- package/lib/cjs/components/slider/Slider.styles.js.map +1 -1
- package/lib/cjs/components/slider-button/SliderButton.js +4 -0
- package/lib/cjs/components/slider-button/SliderButton.js.map +1 -1
- package/lib/cjs/components/slider-button/SliderButton.styles.js +1 -0
- package/lib/cjs/components/slider-button/SliderButton.styles.js.map +1 -1
- package/lib/esm/components/slider/Slider.js +4 -0
- package/lib/esm/components/slider/Slider.js.map +1 -1
- package/lib/esm/components/slider/Slider.styles.js +1 -0
- package/lib/esm/components/slider/Slider.styles.js.map +1 -1
- package/lib/esm/components/slider-button/SliderButton.js +4 -0
- package/lib/esm/components/slider-button/SliderButton.js.map +1 -1
- package/lib/esm/components/slider-button/SliderButton.styles.js +1 -0
- package/lib/esm/components/slider-button/SliderButton.styles.js.map +1 -1
- package/package.json +2 -2
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
var _chaynsApi = require("chayns-api");
|
|
7
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
9
|
var _styledComponents = require("styled-components");
|
|
9
10
|
var _useElementSize = require("../../hooks/useElementSize");
|
|
@@ -62,6 +63,7 @@ const Slider = ({
|
|
|
62
63
|
}, [fromValue, toValue]);
|
|
63
64
|
const handleMouseUp = (0, _react.useCallback)(() => {
|
|
64
65
|
var _fromSliderRef$curren, _toSliderRef$current;
|
|
66
|
+
void (0, _chaynsApi.setRefreshScrollEnabled)(true);
|
|
65
67
|
const from = Number((_fromSliderRef$curren = fromSliderRef.current) === null || _fromSliderRef$curren === void 0 ? void 0 : _fromSliderRef$curren.value);
|
|
66
68
|
const to = Number((_toSliderRef$current = toSliderRef.current) === null || _toSliderRef$current === void 0 ? void 0 : _toSliderRef$current.value);
|
|
67
69
|
if (typeof onSelect === 'function') {
|
|
@@ -96,6 +98,7 @@ const Slider = ({
|
|
|
96
98
|
}
|
|
97
99
|
}, [onChange, theme]);
|
|
98
100
|
const handleControlToSlider = (0, _react.useCallback)(event => {
|
|
101
|
+
void (0, _chaynsApi.setRefreshScrollEnabled)(false);
|
|
99
102
|
if (!fromSliderRef.current || !toSliderRef.current) {
|
|
100
103
|
return;
|
|
101
104
|
}
|
|
@@ -140,6 +143,7 @@ const Slider = ({
|
|
|
140
143
|
* This function updates the value
|
|
141
144
|
*/
|
|
142
145
|
const handleInputChange = (0, _react.useCallback)(event => {
|
|
146
|
+
void (0, _chaynsApi.setRefreshScrollEnabled)(false);
|
|
143
147
|
const newValue = Number(event.target.value);
|
|
144
148
|
if (interval) {
|
|
145
149
|
handleControlFromSlider(event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_useElementSize","_slider","_Slider","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Slider","maxValue","minValue","value","onSelect","onChange","interval","thumbLabelFormatter","shouldShowThumbLabel","steps","fromValue","setFromValue","useState","toValue","setToValue","thumbWidth","setThumbWidth","fromSliderRef","useRef","toSliderRef","fromSliderThumbRef","toSliderThumbRef","sliderWrapperRef","sliderWrapperSize","useElementSize","theme","useTheme","useEffect","getThumbMaxWidth","maxNumber","handleMouseUp","useCallback","_fromSliderRef$curren","_toSliderRef$current","from","Number","current","to","undefined","handleControlFromSlider","event","target","fillSlider","toSlider","fromSlider","String","handleControlToSlider","handleInputChange","newValue","fromSliderThumbPosition","useMemo","offsetWidth","toSliderThumbPosition","createElement","StyledSlider","ref","StyledSliderInput","$thumbWidth","$isInterval","type","step","max","min","onMouseUp","$max","$min","$value","StyledSliderThumb","$position","StyledSliderThumbLabel","displayName","_default","exports"],"sources":["../../../../src/components/slider/Slider.tsx"],"sourcesContent":["import React, { ChangeEvent, FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTheme } from 'styled-components';\nimport { useElementSize } from '../../hooks/useElementSize';\nimport { fillSlider, getThumbMaxWidth } from '../../utils/slider';\nimport {\n StyledSlider,\n StyledSliderInput,\n StyledSliderThumb,\n StyledSliderThumbLabel,\n} from './Slider.styles';\n\nexport interface SliderInterval {\n maxValue: number;\n minValue: number;\n}\n\nexport type SliderProps = {\n /**\n * The range that can be selected with two thumbs..\n */\n interval?: SliderInterval;\n /**\n * The maximum value of the slider.\n */\n maxValue: number;\n /**\n * The minimum value of the slider.\n */\n minValue: number;\n /**\n *\n */\n onSelect?: (value?: number, interval?: SliderInterval) => void;\n /**\n * Function that will be executed when the value is changed.\n */\n onChange?: (value?: number, interval?: SliderInterval) => void;\n /**\n * Whether the current value should be displayed inside the slider thumb.\n */\n shouldShowThumbLabel?: boolean;\n /**\n * The steps of the slider.\n */\n steps?: number;\n /**\n * A function to format the thumb label.\n */\n thumbLabelFormatter?: (value: number) => string;\n /**\n * the Value that the slider should have.\n */\n value?: number;\n};\n\nconst Slider: FC<SliderProps> = ({\n maxValue,\n minValue,\n value,\n onSelect,\n onChange,\n interval,\n thumbLabelFormatter,\n shouldShowThumbLabel = false,\n steps = 1,\n}) => {\n const [fromValue, setFromValue] = useState(0);\n const [toValue, setToValue] = useState(maxValue);\n const [thumbWidth, setThumbWidth] = useState(20);\n\n const fromSliderRef = useRef<HTMLInputElement>(null);\n const toSliderRef = useRef<HTMLInputElement>(null);\n const fromSliderThumbRef = useRef<HTMLDivElement>(null);\n const toSliderThumbRef = useRef<HTMLDivElement>(null);\n const sliderWrapperRef = useRef<HTMLDivElement>(null);\n\n const sliderWrapperSize = useElementSize(sliderWrapperRef);\n\n const theme = useTheme();\n\n useEffect(() => {\n if (shouldShowThumbLabel) {\n setThumbWidth(getThumbMaxWidth({ maxNumber: maxValue, thumbLabelFormatter }));\n }\n }, [maxValue, shouldShowThumbLabel, thumbLabelFormatter]);\n\n /**\n * This function sets the value\n */\n useEffect(() => {\n if (typeof value !== 'number') {\n return;\n }\n\n if (value >= minValue && value <= maxValue) {\n setFromValue(value);\n }\n }, [maxValue, minValue, value]);\n\n useEffect(() => {\n if (fromValue > toValue) {\n setFromValue(toValue);\n }\n\n if (toValue < fromValue) {\n setToValue(fromValue);\n }\n }, [fromValue, toValue]);\n\n const handleMouseUp = useCallback(() => {\n const from = Number(fromSliderRef.current?.value);\n const to = Number(toSliderRef.current?.value);\n\n if (typeof onSelect === 'function') {\n onSelect(\n interval ? undefined : from,\n interval ? { maxValue: to, minValue: from } : undefined,\n );\n }\n }, [interval, onSelect]);\n\n const handleControlFromSlider = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (!fromSliderRef.current || !toSliderRef.current) {\n return;\n }\n\n setFromValue(Number(event.target.value));\n\n const from = Number(fromSliderRef.current.value);\n const to = Number(toSliderRef.current.value);\n\n if (typeof onChange === 'function') {\n onChange(undefined, { maxValue: to, minValue: from });\n }\n\n fillSlider({\n toSlider: toSliderRef.current,\n fromSlider: fromSliderRef.current,\n theme,\n });\n\n if (from > to) {\n fromSliderRef.current.value = String(to);\n } else {\n fromSliderRef.current.value = String(from);\n }\n },\n [onChange, theme],\n );\n\n const handleControlToSlider = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (!fromSliderRef.current || !toSliderRef.current) {\n return;\n }\n\n setToValue(Number(event.target.value));\n\n const from = Number(fromSliderRef.current.value);\n const to = Number(toSliderRef.current.value);\n\n if (typeof onChange === 'function') {\n onChange(undefined, { maxValue: to, minValue: from });\n }\n\n fillSlider({\n toSlider: toSliderRef.current,\n fromSlider: fromSliderRef.current,\n theme,\n });\n\n if (from <= to) {\n toSliderRef.current.value = String(to);\n } else {\n toSliderRef.current.value = String(from);\n }\n },\n [onChange, theme],\n );\n\n useEffect(() => {\n if (!fromSliderRef.current || !toSliderRef.current || !interval) {\n return;\n }\n\n setFromValue(interval.minValue);\n setToValue(interval.maxValue);\n\n fromSliderRef.current.value = String(interval.minValue);\n toSliderRef.current.value = String(interval.maxValue);\n\n fillSlider({\n fromSlider: fromSliderRef.current,\n toSlider: toSliderRef.current,\n theme,\n });\n // Note: interval can´t be in the deps because of rerender\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [theme]);\n\n /**\n * This function updates the value\n */\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const newValue = Number(event.target.value);\n\n if (interval) {\n handleControlFromSlider(event);\n\n return;\n }\n\n setFromValue(newValue);\n\n if (onChange) {\n onChange(newValue);\n }\n },\n [handleControlFromSlider, interval, onChange],\n );\n\n const fromSliderThumbPosition = useMemo(() => {\n if (fromSliderRef.current && fromSliderThumbRef.current && sliderWrapperSize) {\n return (\n ((fromValue - minValue) / (maxValue - minValue)) *\n (fromSliderRef.current.offsetWidth -\n fromSliderThumbRef.current.offsetWidth / 2) -\n (shouldShowThumbLabel && fromValue === maxValue ? 4 : 0)\n );\n }\n return 0;\n }, [fromValue, maxValue, minValue, shouldShowThumbLabel, sliderWrapperSize]);\n\n const toSliderThumbPosition = useMemo(() => {\n if (toSliderRef.current && toSliderThumbRef.current && sliderWrapperSize) {\n return (\n ((toValue - minValue) / (maxValue - minValue)) *\n (toSliderRef.current.offsetWidth - toSliderThumbRef.current.offsetWidth / 2) -\n (shouldShowThumbLabel && toValue === maxValue ? 4 : 0)\n );\n }\n return 0;\n }, [toValue, minValue, maxValue, shouldShowThumbLabel, sliderWrapperSize]);\n\n return useMemo(\n () => (\n <StyledSlider ref={sliderWrapperRef}>\n <StyledSliderInput\n $thumbWidth={thumbWidth}\n ref={fromSliderRef}\n $isInterval={!!interval}\n type=\"range\"\n value={fromValue}\n step={steps}\n max={maxValue}\n min={minValue}\n onChange={handleInputChange}\n onMouseUp={handleMouseUp}\n $max={maxValue}\n $min={minValue}\n $value={fromValue}\n />\n <StyledSliderThumb ref={fromSliderThumbRef} $position={fromSliderThumbPosition}>\n {shouldShowThumbLabel && (\n <StyledSliderThumbLabel>\n {typeof thumbLabelFormatter === 'function'\n ? thumbLabelFormatter(fromValue)\n : fromValue}\n </StyledSliderThumbLabel>\n )}\n </StyledSliderThumb>\n {interval && (\n <StyledSliderThumb ref={toSliderThumbRef} $position={toSliderThumbPosition}>\n {shouldShowThumbLabel && (\n <StyledSliderThumbLabel>\n {typeof thumbLabelFormatter === 'function'\n ? thumbLabelFormatter(toValue)\n : toValue}\n </StyledSliderThumbLabel>\n )}\n </StyledSliderThumb>\n )}\n {interval && (\n <StyledSliderInput\n $thumbWidth={thumbWidth}\n $max={maxValue}\n $min={minValue}\n $value={toValue}\n ref={toSliderRef}\n $isInterval={!!interval}\n type=\"range\"\n value={toValue}\n step={steps}\n max={maxValue}\n min={minValue}\n onChange={handleControlToSlider}\n onMouseUp={handleMouseUp}\n />\n )}\n </StyledSlider>\n ),\n [\n thumbWidth,\n interval,\n fromValue,\n steps,\n maxValue,\n minValue,\n handleInputChange,\n handleMouseUp,\n fromSliderThumbPosition,\n shouldShowThumbLabel,\n thumbLabelFormatter,\n toSliderThumbPosition,\n toValue,\n handleControlToSlider,\n ],\n );\n};\n\nSlider.displayName = 'Slider';\n\nexport default Slider;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Slider.js","names":["_chaynsApi","require","_react","_interopRequireWildcard","_styledComponents","_useElementSize","_slider","_Slider","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Slider","maxValue","minValue","value","onSelect","onChange","interval","thumbLabelFormatter","shouldShowThumbLabel","steps","fromValue","setFromValue","useState","toValue","setToValue","thumbWidth","setThumbWidth","fromSliderRef","useRef","toSliderRef","fromSliderThumbRef","toSliderThumbRef","sliderWrapperRef","sliderWrapperSize","useElementSize","theme","useTheme","useEffect","getThumbMaxWidth","maxNumber","handleMouseUp","useCallback","_fromSliderRef$curren","_toSliderRef$current","setRefreshScrollEnabled","from","Number","current","to","undefined","handleControlFromSlider","event","target","fillSlider","toSlider","fromSlider","String","handleControlToSlider","handleInputChange","newValue","fromSliderThumbPosition","useMemo","offsetWidth","toSliderThumbPosition","createElement","StyledSlider","ref","StyledSliderInput","$thumbWidth","$isInterval","type","step","max","min","onMouseUp","$max","$min","$value","StyledSliderThumb","$position","StyledSliderThumbLabel","displayName","_default","exports"],"sources":["../../../../src/components/slider/Slider.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport React, { ChangeEvent, FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTheme } from 'styled-components';\nimport { useElementSize } from '../../hooks/useElementSize';\nimport { fillSlider, getThumbMaxWidth } from '../../utils/slider';\nimport {\n StyledSlider,\n StyledSliderInput,\n StyledSliderThumb,\n StyledSliderThumbLabel,\n} from './Slider.styles';\n\nexport interface SliderInterval {\n maxValue: number;\n minValue: number;\n}\n\nexport type SliderProps = {\n /**\n * The range that can be selected with two thumbs..\n */\n interval?: SliderInterval;\n /**\n * The maximum value of the slider.\n */\n maxValue: number;\n /**\n * The minimum value of the slider.\n */\n minValue: number;\n /**\n *\n */\n onSelect?: (value?: number, interval?: SliderInterval) => void;\n /**\n * Function that will be executed when the value is changed.\n */\n onChange?: (value?: number, interval?: SliderInterval) => void;\n /**\n * Whether the current value should be displayed inside the slider thumb.\n */\n shouldShowThumbLabel?: boolean;\n /**\n * The steps of the slider.\n */\n steps?: number;\n /**\n * A function to format the thumb label.\n */\n thumbLabelFormatter?: (value: number) => string;\n /**\n * the Value that the slider should have.\n */\n value?: number;\n};\n\nconst Slider: FC<SliderProps> = ({\n maxValue,\n minValue,\n value,\n onSelect,\n onChange,\n interval,\n thumbLabelFormatter,\n shouldShowThumbLabel = false,\n steps = 1,\n}) => {\n const [fromValue, setFromValue] = useState(0);\n const [toValue, setToValue] = useState(maxValue);\n const [thumbWidth, setThumbWidth] = useState(20);\n\n const fromSliderRef = useRef<HTMLInputElement>(null);\n const toSliderRef = useRef<HTMLInputElement>(null);\n const fromSliderThumbRef = useRef<HTMLDivElement>(null);\n const toSliderThumbRef = useRef<HTMLDivElement>(null);\n const sliderWrapperRef = useRef<HTMLDivElement>(null);\n\n const sliderWrapperSize = useElementSize(sliderWrapperRef);\n\n const theme = useTheme();\n\n useEffect(() => {\n if (shouldShowThumbLabel) {\n setThumbWidth(getThumbMaxWidth({ maxNumber: maxValue, thumbLabelFormatter }));\n }\n }, [maxValue, shouldShowThumbLabel, thumbLabelFormatter]);\n\n /**\n * This function sets the value\n */\n useEffect(() => {\n if (typeof value !== 'number') {\n return;\n }\n\n if (value >= minValue && value <= maxValue) {\n setFromValue(value);\n }\n }, [maxValue, minValue, value]);\n\n useEffect(() => {\n if (fromValue > toValue) {\n setFromValue(toValue);\n }\n\n if (toValue < fromValue) {\n setToValue(fromValue);\n }\n }, [fromValue, toValue]);\n\n const handleMouseUp = useCallback(() => {\n void setRefreshScrollEnabled(true);\n\n const from = Number(fromSliderRef.current?.value);\n const to = Number(toSliderRef.current?.value);\n\n if (typeof onSelect === 'function') {\n onSelect(\n interval ? undefined : from,\n interval ? { maxValue: to, minValue: from } : undefined,\n );\n }\n }, [interval, onSelect]);\n\n const handleControlFromSlider = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (!fromSliderRef.current || !toSliderRef.current) {\n return;\n }\n\n setFromValue(Number(event.target.value));\n\n const from = Number(fromSliderRef.current.value);\n const to = Number(toSliderRef.current.value);\n\n if (typeof onChange === 'function') {\n onChange(undefined, { maxValue: to, minValue: from });\n }\n\n fillSlider({\n toSlider: toSliderRef.current,\n fromSlider: fromSliderRef.current,\n theme,\n });\n\n if (from > to) {\n fromSliderRef.current.value = String(to);\n } else {\n fromSliderRef.current.value = String(from);\n }\n },\n [onChange, theme],\n );\n\n const handleControlToSlider = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n void setRefreshScrollEnabled(false);\n\n if (!fromSliderRef.current || !toSliderRef.current) {\n return;\n }\n\n setToValue(Number(event.target.value));\n\n const from = Number(fromSliderRef.current.value);\n const to = Number(toSliderRef.current.value);\n\n if (typeof onChange === 'function') {\n onChange(undefined, { maxValue: to, minValue: from });\n }\n\n fillSlider({\n toSlider: toSliderRef.current,\n fromSlider: fromSliderRef.current,\n theme,\n });\n\n if (from <= to) {\n toSliderRef.current.value = String(to);\n } else {\n toSliderRef.current.value = String(from);\n }\n },\n [onChange, theme],\n );\n\n useEffect(() => {\n if (!fromSliderRef.current || !toSliderRef.current || !interval) {\n return;\n }\n\n setFromValue(interval.minValue);\n setToValue(interval.maxValue);\n\n fromSliderRef.current.value = String(interval.minValue);\n toSliderRef.current.value = String(interval.maxValue);\n\n fillSlider({\n fromSlider: fromSliderRef.current,\n toSlider: toSliderRef.current,\n theme,\n });\n // Note: interval can´t be in the deps because of rerender\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [theme]);\n\n /**\n * This function updates the value\n */\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n void setRefreshScrollEnabled(false);\n\n const newValue = Number(event.target.value);\n\n if (interval) {\n handleControlFromSlider(event);\n\n return;\n }\n\n setFromValue(newValue);\n\n if (onChange) {\n onChange(newValue);\n }\n },\n [handleControlFromSlider, interval, onChange],\n );\n\n const fromSliderThumbPosition = useMemo(() => {\n if (fromSliderRef.current && fromSliderThumbRef.current && sliderWrapperSize) {\n return (\n ((fromValue - minValue) / (maxValue - minValue)) *\n (fromSliderRef.current.offsetWidth -\n fromSliderThumbRef.current.offsetWidth / 2) -\n (shouldShowThumbLabel && fromValue === maxValue ? 4 : 0)\n );\n }\n return 0;\n }, [fromValue, maxValue, minValue, shouldShowThumbLabel, sliderWrapperSize]);\n\n const toSliderThumbPosition = useMemo(() => {\n if (toSliderRef.current && toSliderThumbRef.current && sliderWrapperSize) {\n return (\n ((toValue - minValue) / (maxValue - minValue)) *\n (toSliderRef.current.offsetWidth - toSliderThumbRef.current.offsetWidth / 2) -\n (shouldShowThumbLabel && toValue === maxValue ? 4 : 0)\n );\n }\n return 0;\n }, [toValue, minValue, maxValue, shouldShowThumbLabel, sliderWrapperSize]);\n\n return useMemo(\n () => (\n <StyledSlider ref={sliderWrapperRef}>\n <StyledSliderInput\n $thumbWidth={thumbWidth}\n ref={fromSliderRef}\n $isInterval={!!interval}\n type=\"range\"\n value={fromValue}\n step={steps}\n max={maxValue}\n min={minValue}\n onChange={handleInputChange}\n onMouseUp={handleMouseUp}\n $max={maxValue}\n $min={minValue}\n $value={fromValue}\n />\n <StyledSliderThumb ref={fromSliderThumbRef} $position={fromSliderThumbPosition}>\n {shouldShowThumbLabel && (\n <StyledSliderThumbLabel>\n {typeof thumbLabelFormatter === 'function'\n ? thumbLabelFormatter(fromValue)\n : fromValue}\n </StyledSliderThumbLabel>\n )}\n </StyledSliderThumb>\n {interval && (\n <StyledSliderThumb ref={toSliderThumbRef} $position={toSliderThumbPosition}>\n {shouldShowThumbLabel && (\n <StyledSliderThumbLabel>\n {typeof thumbLabelFormatter === 'function'\n ? thumbLabelFormatter(toValue)\n : toValue}\n </StyledSliderThumbLabel>\n )}\n </StyledSliderThumb>\n )}\n {interval && (\n <StyledSliderInput\n $thumbWidth={thumbWidth}\n $max={maxValue}\n $min={minValue}\n $value={toValue}\n ref={toSliderRef}\n $isInterval={!!interval}\n type=\"range\"\n value={toValue}\n step={steps}\n max={maxValue}\n min={minValue}\n onChange={handleControlToSlider}\n onMouseUp={handleMouseUp}\n />\n )}\n </StyledSlider>\n ),\n [\n thumbWidth,\n interval,\n fromValue,\n steps,\n maxValue,\n minValue,\n handleInputChange,\n handleMouseUp,\n fromSliderThumbPosition,\n shouldShowThumbLabel,\n thumbLabelFormatter,\n toSliderThumbPosition,\n toValue,\n handleControlToSlider,\n ],\n );\n};\n\nSlider.displayName = 'Slider';\n\nexport default Slider;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,6 +14,7 @@ const StyledSlider = exports.StyledSlider = _styledComponents.default.div`
|
|
|
14
14
|
display: flex;
|
|
15
15
|
align-items: center;
|
|
16
16
|
justify-content: center;
|
|
17
|
+
touch-action: none;
|
|
17
18
|
`;
|
|
18
19
|
const StyledSliderInput = exports.StyledSliderInput = _styledComponents.default.input.attrs(({
|
|
19
20
|
$isInterval,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.styles.js","names":["_styledComponents","_interopRequireDefault","require","obj","__esModule","default","StyledSlider","exports","styled","div","StyledSliderInput","input","attrs","$isInterval","$value","$thumbWidth","$min","$max","theme","style","pointerEvents","width","background","undefined","StyledSliderThumb","$position","left","StyledSliderThumbLabel","span"],"sources":["../../../../src/components/slider/Slider.styles.ts"],"sourcesContent":["import styled from 'styled-components';\nimport type { Theme, WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport const StyledSlider = styled.div`\n width: 100%;\n height: 30px;\n cursor: pointer;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\ntype StyledSliderInputProps = WithTheme<{\n $min: number;\n $max: number;\n $value: number;\n $isInterval: boolean;\n $thumbWidth: number;\n}>;\n\nexport const StyledSliderInput = styled.input.attrs<StyledSliderInputProps>(\n ({ $isInterval, $value, $thumbWidth, $min, $max, theme }) => ({\n style: {\n pointerEvents: $isInterval ? 'none' : 'all',\n width: `calc(100% - ${$thumbWidth / 2}px)`,\n background: !$isInterval\n ? `linear-gradient(\n to right,\n ${(theme as Theme)['409'] ?? ''} 0%,\n ${(theme as Theme)['409'] ?? ''}\n ${(($value - $min) / ($max - $min)) * 100}%,\n ${(theme as Theme)['403'] ?? ''}\n ${(($value - $min) / ($max - $min)) * 100}%,\n ${(theme as Theme)['403'] ?? ''}\n )`\n : undefined,\n },\n }),\n)`\n position: absolute;\n border-radius: 100px;\n -webkit-appearance: none;\n height: 10px;\n outline: none;\n cursor: pointer !important;\n z-index: 2;\n appearance: none;\n\n // Slider thumb for chrome\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 20px;\n height: 20px;\n cursor: pointer;\n opacity: 0;\n pointer-events: all;\n position: relative;\n }\n\n // slider thumb for firefox\n\n &::-moz-range-thumb {\n width: 20px;\n height: 20px;\n cursor: pointer;\n opacity: 0;\n pointer-events: all;\n position: relative;\n }\n`;\n\ntype StyledSliderThumbProps = WithTheme<{ $position: number }>;\n\nexport const StyledSliderThumb = styled.div.attrs<StyledSliderThumbProps>(({ $position }) => ({\n style: {\n left: `${$position}px`,\n },\n}))`\n min-width: 20px;\n height: 20px;\n cursor: pointer;\n border-radius: 100px;\n background-color: white;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);\n pointer-events: none;\n z-index: 3;\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 8px;\n white-space: nowrap;\n`;\n\ntype StyledSliderThumbLabelProps = WithTheme<unknown>;\n\nexport const StyledSliderThumbLabel = styled.span<StyledSliderThumbLabelProps>`\n pointer-events: none;\n color: #222;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGhC,MAAMG,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAGE,yBAAM,CAACC,GAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAUM,MAAMC,iBAAiB,GAAAH,OAAA,CAAAG,iBAAA,GAAGF,yBAAM,CAACG,KAAK,CAACC,KAAK,CAC/C,CAAC;EAAEC,WAAW;EAAEC,MAAM;EAAEC,WAAW;EAAEC,IAAI;EAAEC,IAAI;EAAEC;AAAM,CAAC,MAAM;EAC1DC,KAAK,EAAE;IACHC,aAAa,EAAEP,WAAW,GAAG,MAAM,GAAG,KAAK;IAC3CQ,KAAK,EAAG,eAAcN,WAAW,GAAG,CAAE,KAAI;IAC1CO,UAAU,EAAE,CAACT,WAAW,GACjB;AACnB;AACA,cAAeK,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,cAAeA,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,cAAe,CAACJ,MAAM,GAAGE,IAAI,KAAKC,IAAI,GAAGD,IAAI,CAAC,GAAI,GAAI;AACtD,cAAeE,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,cAAe,CAACJ,MAAM,GAAGE,IAAI,KAAKC,IAAI,GAAGD,IAAI,CAAC,GAAI,GAAI;AACtD,cAAeE,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,UAAU,GACQK;EACV;AACJ,CAAC,CACL,CAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAIM,MAAMC,iBAAiB,GAAAjB,OAAA,CAAAiB,iBAAA,GAAGhB,yBAAM,CAACC,GAAG,CAACG,KAAK,CAAyB,CAAC;EAAEa;AAAU,CAAC,MAAM;EAC1FN,KAAK,EAAE;IACHO,IAAI,EAAG,GAAED,SAAU;EACvB;AACJ,CAAC,CAAC,CAAE;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAIM,MAAME,sBAAsB,GAAApB,OAAA,CAAAoB,sBAAA,GAAGnB,yBAAM,CAACoB,IAAkC;AAC/E;AACA;AACA,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Slider.styles.js","names":["_styledComponents","_interopRequireDefault","require","obj","__esModule","default","StyledSlider","exports","styled","div","StyledSliderInput","input","attrs","$isInterval","$value","$thumbWidth","$min","$max","theme","style","pointerEvents","width","background","undefined","StyledSliderThumb","$position","left","StyledSliderThumbLabel","span"],"sources":["../../../../src/components/slider/Slider.styles.ts"],"sourcesContent":["import styled from 'styled-components';\nimport type { Theme, WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport const StyledSlider = styled.div`\n width: 100%;\n height: 30px;\n cursor: pointer;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n touch-action: none;\n`;\n\ntype StyledSliderInputProps = WithTheme<{\n $min: number;\n $max: number;\n $value: number;\n $isInterval: boolean;\n $thumbWidth: number;\n}>;\n\nexport const StyledSliderInput = styled.input.attrs<StyledSliderInputProps>(\n ({ $isInterval, $value, $thumbWidth, $min, $max, theme }) => ({\n style: {\n pointerEvents: $isInterval ? 'none' : 'all',\n width: `calc(100% - ${$thumbWidth / 2}px)`,\n background: !$isInterval\n ? `linear-gradient(\n to right,\n ${(theme as Theme)['409'] ?? ''} 0%,\n ${(theme as Theme)['409'] ?? ''}\n ${(($value - $min) / ($max - $min)) * 100}%,\n ${(theme as Theme)['403'] ?? ''}\n ${(($value - $min) / ($max - $min)) * 100}%,\n ${(theme as Theme)['403'] ?? ''}\n )`\n : undefined,\n },\n }),\n)`\n position: absolute;\n border-radius: 100px;\n -webkit-appearance: none;\n height: 10px;\n outline: none;\n cursor: pointer !important;\n z-index: 2;\n appearance: none;\n\n // Slider thumb for chrome\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 20px;\n height: 20px;\n cursor: pointer;\n opacity: 0;\n pointer-events: all;\n position: relative;\n }\n\n // slider thumb for firefox\n\n &::-moz-range-thumb {\n width: 20px;\n height: 20px;\n cursor: pointer;\n opacity: 0;\n pointer-events: all;\n position: relative;\n }\n`;\n\ntype StyledSliderThumbProps = WithTheme<{ $position: number }>;\n\nexport const StyledSliderThumb = styled.div.attrs<StyledSliderThumbProps>(({ $position }) => ({\n style: {\n left: `${$position}px`,\n },\n}))`\n min-width: 20px;\n height: 20px;\n cursor: pointer;\n border-radius: 100px;\n background-color: white;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);\n pointer-events: none;\n z-index: 3;\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 8px;\n white-space: nowrap;\n`;\n\ntype StyledSliderThumbLabelProps = WithTheme<unknown>;\n\nexport const StyledSliderThumbLabel = styled.span<StyledSliderThumbLabelProps>`\n pointer-events: none;\n color: #222;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGhC,MAAMG,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAGE,yBAAM,CAACC,GAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAUM,MAAMC,iBAAiB,GAAAH,OAAA,CAAAG,iBAAA,GAAGF,yBAAM,CAACG,KAAK,CAACC,KAAK,CAC/C,CAAC;EAAEC,WAAW;EAAEC,MAAM;EAAEC,WAAW;EAAEC,IAAI;EAAEC,IAAI;EAAEC;AAAM,CAAC,MAAM;EAC1DC,KAAK,EAAE;IACHC,aAAa,EAAEP,WAAW,GAAG,MAAM,GAAG,KAAK;IAC3CQ,KAAK,EAAG,eAAcN,WAAW,GAAG,CAAE,KAAI;IAC1CO,UAAU,EAAE,CAACT,WAAW,GACjB;AACnB;AACA,cAAeK,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,cAAeA,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,cAAe,CAACJ,MAAM,GAAGE,IAAI,KAAKC,IAAI,GAAGD,IAAI,CAAC,GAAI,GAAI;AACtD,cAAeE,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,cAAe,CAACJ,MAAM,GAAGE,IAAI,KAAKC,IAAI,GAAGD,IAAI,CAAC,GAAI,GAAI;AACtD,cAAeE,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,UAAU,GACQK;EACV;AACJ,CAAC,CACL,CAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAIM,MAAMC,iBAAiB,GAAAjB,OAAA,CAAAiB,iBAAA,GAAGhB,yBAAM,CAACC,GAAG,CAACG,KAAK,CAAyB,CAAC;EAAEa;AAAU,CAAC,MAAM;EAC1FN,KAAK,EAAE;IACHO,IAAI,EAAG,GAAED,SAAU;EACvB;AACJ,CAAC,CAAC,CAAE;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAIM,MAAME,sBAAsB,GAAApB,OAAA,CAAAoB,sBAAA,GAAGnB,yBAAM,CAACoB,IAAkC;AAC/E;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
var _chaynsApi = require("chayns-api");
|
|
7
8
|
var _framerMotion = require("framer-motion");
|
|
8
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
10
|
var _useElementSize = require("../../hooks/useElementSize");
|
|
@@ -112,6 +113,7 @@ const SliderButton = ({
|
|
|
112
113
|
return points;
|
|
113
114
|
}, [itemWidth, items.length]);
|
|
114
115
|
const handleDragEnd = (0, _react.useCallback)(() => {
|
|
116
|
+
void (0, _chaynsApi.setRefreshScrollEnabled)(true);
|
|
115
117
|
const position = (0, _sliderButton.getThumbPosition)({
|
|
116
118
|
scope,
|
|
117
119
|
itemWidth
|
|
@@ -159,6 +161,7 @@ const SliderButton = ({
|
|
|
159
161
|
}, [animation, itemWidth, items, onChange, scope, snapPoints]);
|
|
160
162
|
const handleWhileDrag = (0, _react.useCallback)(() => {
|
|
161
163
|
preventHandleScroll.current = true;
|
|
164
|
+
void (0, _chaynsApi.setRefreshScrollEnabled)(false);
|
|
162
165
|
const position = (0, _sliderButton.getThumbPosition)({
|
|
163
166
|
scope,
|
|
164
167
|
itemWidth
|
|
@@ -204,6 +207,7 @@ const SliderButton = ({
|
|
|
204
207
|
if (preventHandleScroll.current) {
|
|
205
208
|
return;
|
|
206
209
|
}
|
|
210
|
+
void (0, _chaynsApi.setRefreshScrollEnabled)(false);
|
|
207
211
|
const position = (0, _sliderButton.getThumbPosition)({
|
|
208
212
|
scope,
|
|
209
213
|
itemWidth
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderButton.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_useElementSize","_calculate","_sliderButton","_SliderButton","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","SliderButton","selectedButtonId","isDisabled","items","onChange","selectedButton","setSelectedButton","useState","undefined","dragRange","setDragRange","left","right","sliderButtonRef","useRef","sliderButtonWrapperRef","timeout","preventHandleScroll","scope","animate","useAnimate","itemWidth","useMemo","calculateBiggestWidth","sliderSize","useElementSize","isSliderBigger","width","length","useEffect","sliderWidth","count","Math","floor","animation","useCallback","x","current","type","duration","index","findIndex","id","_items$","handleClick","scrollLeft","buttons","map","text","createElement","StyledSliderButtonItem","$width","key","onClick","$isSelected","thumbText","selectedItem","find","snapPoints","points","push","handleDragEnd","position","getThumbPosition","middle","getNearestPoint","nearestPoint","nearestIndex","_items$nearestIndex","handleWhileDrag","scrollSpeed","_items$nearestIndex2","handleScroll","event","target","_items$nearestIndex3","clearTimeout","window","setTimeout","StyledSliderButton","$isDisabled","ref","StyledMotionSliderButtonThumb","drag","dragElastic","dragConstraints","onDrag","onDragEnd","StyledSliderButtonWrapper","onScroll","AnimatePresence","StyledSliderButtonButtonsWrapper","displayName","_default","exports"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { AnimatePresence, useAnimate } from 'framer-motion';\nimport React, { FC, UIEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/useElementSize';\nimport type { SliderButtonItem } from '../../types/slider-button';\nimport { calculateBiggestWidth } from '../../utils/calculate';\nimport { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';\nimport {\n StyledMotionSliderButtonThumb,\n StyledSliderButton,\n StyledSliderButtonButtonsWrapper,\n StyledSliderButtonItem,\n StyledSliderButtonWrapper,\n} from './SliderButton.styles';\n\nexport type SliderButtonProps = {\n /**\n * Whether the button is disabled.\n */\n isDisabled?: boolean;\n /**\n * Function to be executed when a button is selected.\n * @param id\n */\n onChange?: (id: string) => void;\n /**\n * The buttons that are slidable.\n */\n items: SliderButtonItem[];\n /**\n * The id of a button that should be selected.\n */\n selectedButtonId?: string;\n};\n\nconst SliderButton: FC<SliderButtonProps> = ({ selectedButtonId, isDisabled, items, onChange }) => {\n const [selectedButton, setSelectedButton] = useState<string | undefined>(undefined);\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n\n const sliderButtonRef = useRef<HTMLDivElement>(null);\n const sliderButtonWrapperRef = useRef<HTMLDivElement>(null);\n const timeout = useRef<number>();\n const preventHandleScroll = useRef(false);\n\n const [scope, animate] = useAnimate();\n\n const itemWidth = useMemo(() => calculateBiggestWidth(items), [items]);\n\n const sliderSize = useElementSize(sliderButtonRef);\n\n const isSliderBigger = useMemo(\n () => sliderSize && sliderSize.width < itemWidth * (items.length - 1),\n [itemWidth, items.length, sliderSize],\n );\n\n useEffect(() => {\n if (sliderSize) {\n const sliderWidth = itemWidth * (items.length - 1);\n\n const count = Math.floor(sliderSize.width / itemWidth);\n\n setDragRange({ left: 0, right: isSliderBigger ? itemWidth * count : sliderWidth });\n }\n }, [isSliderBigger, itemWidth, items.length, sliderSize]);\n\n const animation = useCallback(\n async (x: number) => {\n await animate(\n scope.current,\n { x },\n {\n type: 'tween',\n duration: 0.2,\n },\n );\n },\n [animate, scope],\n );\n\n useEffect(() => {\n if (selectedButtonId) {\n setSelectedButton(selectedButtonId);\n\n const index = items.findIndex(({ id }) => id === selectedButtonId);\n\n if (index >= 0) {\n void animation(itemWidth * index);\n }\n } else {\n setSelectedButton(items[0]?.id);\n }\n }, [animation, itemWidth, items, selectedButtonId]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n setSelectedButton(id);\n\n if (typeof onChange === 'function') {\n onChange(id);\n }\n\n if (!isSliderBigger) {\n void animation(itemWidth * index);\n\n return;\n }\n\n const count = dragRange.right / itemWidth;\n\n if (items.length - count >= index) {\n void animation(0);\n } else {\n void animation(itemWidth * (count - (items.length - index)));\n }\n\n if (sliderButtonWrapperRef.current) {\n sliderButtonWrapperRef.current.scrollLeft = itemWidth * index;\n }\n },\n [animation, dragRange.right, isDisabled, isSliderBigger, itemWidth, items.length, onChange],\n );\n\n const buttons = useMemo(\n () =>\n items.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $width={itemWidth}\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n $isSelected={id === selectedButton}\n >\n {text}\n </StyledSliderButtonItem>\n )),\n [handleClick, itemWidth, items, selectedButton],\n );\n\n const thumbText = useMemo(() => {\n const selectedItem = items.find(({ id }) => id === selectedButton);\n\n return selectedItem ? selectedItem.text : '';\n }, [items, selectedButton]);\n\n /**\n * Creates an array with the snap points relative to the width of the items\n */\n const snapPoints = useMemo(() => {\n const points = [0];\n\n for (let i = 1; i < items.length; i++) {\n points.push(itemWidth * i);\n }\n\n return points;\n }, [itemWidth, items.length]);\n\n const handleDragEnd = useCallback(() => {\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle, left } = position;\n\n let scrollLeft = 0;\n\n if (sliderButtonWrapperRef.current) {\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n\n sliderButtonWrapperRef.current.scrollLeft = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: scrollLeft - left,\n }).nearestPoint;\n }\n\n const { nearestIndex } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft,\n });\n\n const { nearestPoint } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: 0,\n });\n\n if (nearestPoint >= 0 && nearestIndex >= 0) {\n void animation(nearestPoint);\n\n const id = items[nearestIndex]?.id;\n\n setSelectedButton(id);\n\n if (typeof onChange === 'function' && id) {\n onChange(id);\n }\n }\n\n preventHandleScroll.current = false;\n }, [animation, itemWidth, items, onChange, scope, snapPoints]);\n\n const handleWhileDrag = useCallback(() => {\n preventHandleScroll.current = true;\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { right, left, middle } = position;\n\n let scrollLeft = 0;\n\n const scrollSpeed = 3;\n\n if (sliderButtonWrapperRef.current) {\n if (right >= dragRange.right) {\n sliderButtonWrapperRef.current.scrollLeft += scrollSpeed;\n }\n\n if (left <= dragRange.left) {\n sliderButtonWrapperRef.current.scrollLeft -= scrollSpeed;\n }\n\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n }\n\n const { nearestIndex } = getNearestPoint({ snapPoints, position: middle, scrollLeft });\n\n if (nearestIndex >= 0) {\n setSelectedButton(items[nearestIndex]?.id);\n }\n }, [dragRange, itemWidth, items, scope, snapPoints]);\n\n // With this, the handleScroll works before the thumb is moved the first time.\n useEffect(() => {\n void animation(1);\n void animation(0);\n }, [animation]);\n\n const handleScroll = useCallback(\n (event: UIEvent<HTMLElement>) => {\n if (preventHandleScroll.current) {\n return;\n }\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle } = position;\n\n const { scrollLeft } = event.target as HTMLDivElement;\n\n const { nearestIndex } = getNearestPoint({ snapPoints, position: middle, scrollLeft });\n\n if (nearestIndex >= 0) {\n setSelectedButton(items[nearestIndex]?.id);\n }\n\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n\n timeout.current = window.setTimeout(() => {\n handleDragEnd();\n }, 200);\n },\n [handleDragEnd, itemWidth, items, scope, snapPoints],\n );\n\n return useMemo(\n () => (\n <StyledSliderButton $isDisabled={isDisabled} ref={sliderButtonRef}>\n <StyledMotionSliderButtonThumb\n ref={scope}\n drag={isDisabled ? false : 'x'}\n dragElastic={0}\n dragConstraints={\n isSliderBigger\n ? { ...dragRange, right: dragRange.right - itemWidth }\n : { ...dragRange }\n }\n $width={itemWidth}\n onDrag={handleWhileDrag}\n onDragEnd={handleDragEnd}\n >\n {thumbText}\n </StyledMotionSliderButtonThumb>\n <StyledSliderButtonWrapper\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n onScroll={handleScroll}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n buttons,\n dragRange,\n handleDragEnd,\n handleScroll,\n handleWhileDrag,\n isDisabled,\n isSliderBigger,\n itemWidth,\n scope,\n thumbText,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SliderButton.js","names":["_chaynsApi","require","_framerMotion","_react","_interopRequireWildcard","_useElementSize","_calculate","_sliderButton","_SliderButton","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","SliderButton","selectedButtonId","isDisabled","items","onChange","selectedButton","setSelectedButton","useState","undefined","dragRange","setDragRange","left","right","sliderButtonRef","useRef","sliderButtonWrapperRef","timeout","preventHandleScroll","scope","animate","useAnimate","itemWidth","useMemo","calculateBiggestWidth","sliderSize","useElementSize","isSliderBigger","width","length","useEffect","sliderWidth","count","Math","floor","animation","useCallback","x","current","type","duration","index","findIndex","id","_items$","handleClick","scrollLeft","buttons","map","text","createElement","StyledSliderButtonItem","$width","key","onClick","$isSelected","thumbText","selectedItem","find","snapPoints","points","push","handleDragEnd","setRefreshScrollEnabled","position","getThumbPosition","middle","getNearestPoint","nearestPoint","nearestIndex","_items$nearestIndex","handleWhileDrag","scrollSpeed","_items$nearestIndex2","handleScroll","event","target","_items$nearestIndex3","clearTimeout","window","setTimeout","StyledSliderButton","$isDisabled","ref","StyledMotionSliderButtonThumb","drag","dragElastic","dragConstraints","onDrag","onDragEnd","StyledSliderButtonWrapper","onScroll","AnimatePresence","StyledSliderButtonButtonsWrapper","displayName","_default","exports"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport { AnimatePresence, useAnimate } from 'framer-motion';\nimport React, { FC, UIEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/useElementSize';\nimport type { SliderButtonItem } from '../../types/slider-button';\nimport { calculateBiggestWidth } from '../../utils/calculate';\nimport { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';\nimport {\n StyledMotionSliderButtonThumb,\n StyledSliderButton,\n StyledSliderButtonButtonsWrapper,\n StyledSliderButtonItem,\n StyledSliderButtonWrapper,\n} from './SliderButton.styles';\n\nexport type SliderButtonProps = {\n /**\n * Whether the button is disabled.\n */\n isDisabled?: boolean;\n /**\n * Function to be executed when a button is selected.\n * @param id\n */\n onChange?: (id: string) => void;\n /**\n * The buttons that are slidable.\n */\n items: SliderButtonItem[];\n /**\n * The id of a button that should be selected.\n */\n selectedButtonId?: string;\n};\n\nconst SliderButton: FC<SliderButtonProps> = ({ selectedButtonId, isDisabled, items, onChange }) => {\n const [selectedButton, setSelectedButton] = useState<string | undefined>(undefined);\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n\n const sliderButtonRef = useRef<HTMLDivElement>(null);\n const sliderButtonWrapperRef = useRef<HTMLDivElement>(null);\n const timeout = useRef<number>();\n const preventHandleScroll = useRef(false);\n\n const [scope, animate] = useAnimate();\n\n const itemWidth = useMemo(() => calculateBiggestWidth(items), [items]);\n\n const sliderSize = useElementSize(sliderButtonRef);\n\n const isSliderBigger = useMemo(\n () => sliderSize && sliderSize.width < itemWidth * (items.length - 1),\n [itemWidth, items.length, sliderSize],\n );\n\n useEffect(() => {\n if (sliderSize) {\n const sliderWidth = itemWidth * (items.length - 1);\n\n const count = Math.floor(sliderSize.width / itemWidth);\n\n setDragRange({ left: 0, right: isSliderBigger ? itemWidth * count : sliderWidth });\n }\n }, [isSliderBigger, itemWidth, items.length, sliderSize]);\n\n const animation = useCallback(\n async (x: number) => {\n await animate(\n scope.current,\n { x },\n {\n type: 'tween',\n duration: 0.2,\n },\n );\n },\n [animate, scope],\n );\n\n useEffect(() => {\n if (selectedButtonId) {\n setSelectedButton(selectedButtonId);\n\n const index = items.findIndex(({ id }) => id === selectedButtonId);\n\n if (index >= 0) {\n void animation(itemWidth * index);\n }\n } else {\n setSelectedButton(items[0]?.id);\n }\n }, [animation, itemWidth, items, selectedButtonId]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n setSelectedButton(id);\n\n if (typeof onChange === 'function') {\n onChange(id);\n }\n\n if (!isSliderBigger) {\n void animation(itemWidth * index);\n\n return;\n }\n\n const count = dragRange.right / itemWidth;\n\n if (items.length - count >= index) {\n void animation(0);\n } else {\n void animation(itemWidth * (count - (items.length - index)));\n }\n\n if (sliderButtonWrapperRef.current) {\n sliderButtonWrapperRef.current.scrollLeft = itemWidth * index;\n }\n },\n [animation, dragRange.right, isDisabled, isSliderBigger, itemWidth, items.length, onChange],\n );\n\n const buttons = useMemo(\n () =>\n items.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $width={itemWidth}\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n $isSelected={id === selectedButton}\n >\n {text}\n </StyledSliderButtonItem>\n )),\n [handleClick, itemWidth, items, selectedButton],\n );\n\n const thumbText = useMemo(() => {\n const selectedItem = items.find(({ id }) => id === selectedButton);\n\n return selectedItem ? selectedItem.text : '';\n }, [items, selectedButton]);\n\n /**\n * Creates an array with the snap points relative to the width of the items\n */\n const snapPoints = useMemo(() => {\n const points = [0];\n\n for (let i = 1; i < items.length; i++) {\n points.push(itemWidth * i);\n }\n\n return points;\n }, [itemWidth, items.length]);\n\n const handleDragEnd = useCallback(() => {\n void setRefreshScrollEnabled(true);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle, left } = position;\n\n let scrollLeft = 0;\n\n if (sliderButtonWrapperRef.current) {\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n\n sliderButtonWrapperRef.current.scrollLeft = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: scrollLeft - left,\n }).nearestPoint;\n }\n\n const { nearestIndex } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft,\n });\n\n const { nearestPoint } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: 0,\n });\n\n if (nearestPoint >= 0 && nearestIndex >= 0) {\n void animation(nearestPoint);\n\n const id = items[nearestIndex]?.id;\n\n setSelectedButton(id);\n\n if (typeof onChange === 'function' && id) {\n onChange(id);\n }\n }\n\n preventHandleScroll.current = false;\n }, [animation, itemWidth, items, onChange, scope, snapPoints]);\n\n const handleWhileDrag = useCallback(() => {\n preventHandleScroll.current = true;\n void setRefreshScrollEnabled(false);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { right, left, middle } = position;\n\n let scrollLeft = 0;\n\n const scrollSpeed = 3;\n\n if (sliderButtonWrapperRef.current) {\n if (right >= dragRange.right) {\n sliderButtonWrapperRef.current.scrollLeft += scrollSpeed;\n }\n\n if (left <= dragRange.left) {\n sliderButtonWrapperRef.current.scrollLeft -= scrollSpeed;\n }\n\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n }\n\n const { nearestIndex } = getNearestPoint({ snapPoints, position: middle, scrollLeft });\n\n if (nearestIndex >= 0) {\n setSelectedButton(items[nearestIndex]?.id);\n }\n }, [dragRange, itemWidth, items, scope, snapPoints]);\n\n // With this, the handleScroll works before the thumb is moved the first time.\n useEffect(() => {\n void animation(1);\n void animation(0);\n }, [animation]);\n\n const handleScroll = useCallback(\n (event: UIEvent<HTMLElement>) => {\n if (preventHandleScroll.current) {\n return;\n }\n\n void setRefreshScrollEnabled(false);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle } = position;\n\n const { scrollLeft } = event.target as HTMLDivElement;\n\n const { nearestIndex } = getNearestPoint({ snapPoints, position: middle, scrollLeft });\n\n if (nearestIndex >= 0) {\n setSelectedButton(items[nearestIndex]?.id);\n }\n\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n\n timeout.current = window.setTimeout(() => {\n handleDragEnd();\n }, 200);\n },\n [handleDragEnd, itemWidth, items, scope, snapPoints],\n );\n\n return useMemo(\n () => (\n <StyledSliderButton $isDisabled={isDisabled} ref={sliderButtonRef}>\n <StyledMotionSliderButtonThumb\n ref={scope}\n drag={isDisabled ? false : 'x'}\n dragElastic={0}\n dragConstraints={\n isSliderBigger\n ? { ...dragRange, right: dragRange.right - itemWidth }\n : { ...dragRange }\n }\n $width={itemWidth}\n onDrag={handleWhileDrag}\n onDragEnd={handleDragEnd}\n >\n {thumbText}\n </StyledMotionSliderButtonThumb>\n <StyledSliderButtonWrapper\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n onScroll={handleScroll}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n buttons,\n dragRange,\n handleDragEnd,\n handleScroll,\n handleWhileDrag,\n isDisabled,\n isSliderBigger,\n itemWidth,\n scope,\n thumbText,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ const StyledSliderButton = exports.StyledSliderButton = _styledComponents.defaul
|
|
|
12
12
|
$isDisabled
|
|
13
13
|
}) => $isDisabled ? 0.5 : 1};
|
|
14
14
|
width: 100%;
|
|
15
|
+
touch-action: none;
|
|
15
16
|
`;
|
|
16
17
|
const StyledSliderButtonWrapper = exports.StyledSliderButtonWrapper = _styledComponents.default.div`
|
|
17
18
|
align-items: center;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderButton.styles.js","names":["_framerMotion","require","_styledComponents","_interopRequireDefault","obj","__esModule","default","StyledSliderButton","exports","styled","div","$isDisabled","StyledSliderButtonWrapper","theme","$width","StyledSliderButtonItem","StyledSliderButtonButtonsWrapper","StyledMotionSliderButtonThumb","motion"],"sources":["../../../../src/components/slider-button/SliderButton.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledSliderButtonProps = WithTheme<{ $isDisabled?: boolean }>;\n\nexport const StyledSliderButton = styled.div<StyledSliderButtonProps>`\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n width: 100%;\n`;\n\ntype StyledSliderButtonWrapperProps = WithTheme<{ $width: number }>;\n\nexport const StyledSliderButtonWrapper = styled.div<StyledSliderButtonWrapperProps>`\n align-items: center;\n background-color: ${({ theme }: StyledSliderButtonProps) => theme['404']};\n border-radius: 3px;\n border: none;\n color: white;\n cursor: pointer;\n display: inline-flex;\n line-height: 1.15;\n height: 32px;\n position: relative;\n user-select: none;\n transition: opacity 0.3s ease;\n z-index: 1;\n\n width: ${({ $width }) => $width}px;\n\n max-width: 100%;\n overflow-x: scroll;\n\n // Chrome\n &::-webkit-scrollbar {\n display: none;\n }\n\n // IE and Edge\n -ms-overflow-style: none;\n\n // Firefox\n scrollbar-width: none;\n`;\n\ntype StyledSliderButtonItemProps = WithTheme<{ $isSelected: boolean; $width: number }>;\n\nexport const StyledSliderButtonItem = styled.div<StyledSliderButtonItemProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n padding: 7px 12px;\n min-width: ${({ $width }) => $width}px;\n max-width: ${({ $width }) => $width}px;\n display: flex;\n justify-content: center;\n`;\n\nexport const StyledSliderButtonButtonsWrapper = styled.div`\n position: absolute;\n display: flex;\n align-items: center;\n`;\n\ntype StyledMotionSliderButtonThumbProps = WithTheme<{ $width: number }>;\n\nexport const StyledMotionSliderButtonThumb = styled(motion.div)<StyledMotionSliderButtonThumbProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n background-color: ${({ theme }: StyledMotionSliderButtonThumbProps) => theme['408']};\n width: ${({ $width }) => $width}px;\n position: absolute;\n border-radius: 3px;\n box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.2);\n z-index: 3;\n height: 32px;\n padding: 7px 12px;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAuC,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAKhC,MAAMG,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAGE,yBAAM,CAACC,GAA6B;AACtE,eAAe,CAAC;EAAEC;AAAY,CAAC,KAAMA,WAAW,GAAG,GAAG,GAAG,CAAG;AAC5D;AACA,CAAC;AAIM,MAAMC,yBAAyB,GAAAJ,OAAA,CAAAI,yBAAA,GAAGH,yBAAM,CAACC,GAAoC;AACpF;AACA,wBAAwB,CAAC;EAAEG;AAA+B,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC;EAAEC;AAAO,CAAC,KAAKA,MAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAIM,MAAMC,sBAAsB,GAAAP,OAAA,CAAAO,sBAAA,GAAGN,yBAAM,CAACC,GAAiC;AAC9E;AACA;AACA;AACA,iBAAiB,CAAC;EAAEI;AAAO,CAAC,KAAKA,MAAO;AACxC,iBAAiB,CAAC;EAAEA;AAAO,CAAC,KAAKA,MAAO;AACxC;AACA;AACA,CAAC;AAEM,MAAME,gCAAgC,GAAAR,OAAA,CAAAQ,gCAAA,GAAGP,yBAAM,CAACC,GAAI;AAC3D;AACA;AACA;AACA,CAAC;AAIM,MAAMO,6BAA6B,GAAAT,OAAA,CAAAS,6BAAA,GAAG,IAAAR,yBAAM,EAACS,oBAAM,CAACR,GAAG,CAAsC;AACpG;AACA;AACA,wBAAwB,CAAC;EAAEG;AAA0C,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAE;AACxF,aAAa,CAAC;EAAEC;AAAO,CAAC,KAAKA,MAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SliderButton.styles.js","names":["_framerMotion","require","_styledComponents","_interopRequireDefault","obj","__esModule","default","StyledSliderButton","exports","styled","div","$isDisabled","StyledSliderButtonWrapper","theme","$width","StyledSliderButtonItem","StyledSliderButtonButtonsWrapper","StyledMotionSliderButtonThumb","motion"],"sources":["../../../../src/components/slider-button/SliderButton.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledSliderButtonProps = WithTheme<{ $isDisabled?: boolean }>;\n\nexport const StyledSliderButton = styled.div<StyledSliderButtonProps>`\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n width: 100%;\n touch-action: none;\n`;\n\ntype StyledSliderButtonWrapperProps = WithTheme<{ $width: number }>;\n\nexport const StyledSliderButtonWrapper = styled.div<StyledSliderButtonWrapperProps>`\n align-items: center;\n background-color: ${({ theme }: StyledSliderButtonProps) => theme['404']};\n border-radius: 3px;\n border: none;\n color: white;\n cursor: pointer;\n display: inline-flex;\n line-height: 1.15;\n height: 32px;\n position: relative;\n user-select: none;\n transition: opacity 0.3s ease;\n z-index: 1;\n\n width: ${({ $width }) => $width}px;\n\n max-width: 100%;\n overflow-x: scroll;\n\n // Chrome\n &::-webkit-scrollbar {\n display: none;\n }\n\n // IE and Edge\n -ms-overflow-style: none;\n\n // Firefox\n scrollbar-width: none;\n`;\n\ntype StyledSliderButtonItemProps = WithTheme<{ $isSelected: boolean; $width: number }>;\n\nexport const StyledSliderButtonItem = styled.div<StyledSliderButtonItemProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n padding: 7px 12px;\n min-width: ${({ $width }) => $width}px;\n max-width: ${({ $width }) => $width}px;\n display: flex;\n justify-content: center;\n`;\n\nexport const StyledSliderButtonButtonsWrapper = styled.div`\n position: absolute;\n display: flex;\n align-items: center;\n`;\n\ntype StyledMotionSliderButtonThumbProps = WithTheme<{ $width: number }>;\n\nexport const StyledMotionSliderButtonThumb = styled(motion.div)<StyledMotionSliderButtonThumbProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n background-color: ${({ theme }: StyledMotionSliderButtonThumbProps) => theme['408']};\n width: ${({ $width }) => $width}px;\n position: absolute;\n border-radius: 3px;\n box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.2);\n z-index: 3;\n height: 32px;\n padding: 7px 12px;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAuC,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAKhC,MAAMG,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAGE,yBAAM,CAACC,GAA6B;AACtE,eAAe,CAAC;EAAEC;AAAY,CAAC,KAAMA,WAAW,GAAG,GAAG,GAAG,CAAG;AAC5D;AACA;AACA,CAAC;AAIM,MAAMC,yBAAyB,GAAAJ,OAAA,CAAAI,yBAAA,GAAGH,yBAAM,CAACC,GAAoC;AACpF;AACA,wBAAwB,CAAC;EAAEG;AAA+B,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC;EAAEC;AAAO,CAAC,KAAKA,MAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAIM,MAAMC,sBAAsB,GAAAP,OAAA,CAAAO,sBAAA,GAAGN,yBAAM,CAACC,GAAiC;AAC9E;AACA;AACA;AACA,iBAAiB,CAAC;EAAEI;AAAO,CAAC,KAAKA,MAAO;AACxC,iBAAiB,CAAC;EAAEA;AAAO,CAAC,KAAKA,MAAO;AACxC;AACA;AACA,CAAC;AAEM,MAAME,gCAAgC,GAAAR,OAAA,CAAAQ,gCAAA,GAAGP,yBAAM,CAACC,GAAI;AAC3D;AACA;AACA;AACA,CAAC;AAIM,MAAMO,6BAA6B,GAAAT,OAAA,CAAAS,6BAAA,GAAG,IAAAR,yBAAM,EAACS,oBAAM,CAACR,GAAG,CAAsC;AACpG;AACA;AACA,wBAAwB,CAAC;EAAEG;AAA0C,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAE;AACxF,aAAa,CAAC;EAAEC;AAAO,CAAC,KAAKA,MAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { setRefreshScrollEnabled } from 'chayns-api';
|
|
1
2
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
3
|
import { useTheme } from 'styled-components';
|
|
3
4
|
import { useElementSize } from '../../hooks/useElementSize';
|
|
@@ -54,6 +55,7 @@ const Slider = _ref => {
|
|
|
54
55
|
}
|
|
55
56
|
}, [fromValue, toValue]);
|
|
56
57
|
const handleMouseUp = useCallback(() => {
|
|
58
|
+
void setRefreshScrollEnabled(true);
|
|
57
59
|
const from = Number(fromSliderRef.current?.value);
|
|
58
60
|
const to = Number(toSliderRef.current?.value);
|
|
59
61
|
if (typeof onSelect === 'function') {
|
|
@@ -88,6 +90,7 @@ const Slider = _ref => {
|
|
|
88
90
|
}
|
|
89
91
|
}, [onChange, theme]);
|
|
90
92
|
const handleControlToSlider = useCallback(event => {
|
|
93
|
+
void setRefreshScrollEnabled(false);
|
|
91
94
|
if (!fromSliderRef.current || !toSliderRef.current) {
|
|
92
95
|
return;
|
|
93
96
|
}
|
|
@@ -132,6 +135,7 @@ const Slider = _ref => {
|
|
|
132
135
|
* This function updates the value
|
|
133
136
|
*/
|
|
134
137
|
const handleInputChange = useCallback(event => {
|
|
138
|
+
void setRefreshScrollEnabled(false);
|
|
135
139
|
const newValue = Number(event.target.value);
|
|
136
140
|
if (interval) {
|
|
137
141
|
handleControlFromSlider(event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","useTheme","useElementSize","fillSlider","getThumbMaxWidth","StyledSlider","StyledSliderInput","StyledSliderThumb","StyledSliderThumbLabel","Slider","_ref","maxValue","minValue","value","onSelect","onChange","interval","thumbLabelFormatter","shouldShowThumbLabel","steps","fromValue","setFromValue","toValue","setToValue","thumbWidth","setThumbWidth","fromSliderRef","toSliderRef","fromSliderThumbRef","toSliderThumbRef","sliderWrapperRef","sliderWrapperSize","theme","maxNumber","handleMouseUp","from","Number","current","to","undefined","handleControlFromSlider","event","target","toSlider","fromSlider","String","handleControlToSlider","handleInputChange","newValue","fromSliderThumbPosition","offsetWidth","toSliderThumbPosition","createElement","ref","$thumbWidth","$isInterval","type","step","max","min","onMouseUp","$max","$min","$value","$position","displayName"],"sources":["../../../../src/components/slider/Slider.tsx"],"sourcesContent":["import React, { ChangeEvent, FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTheme } from 'styled-components';\nimport { useElementSize } from '../../hooks/useElementSize';\nimport { fillSlider, getThumbMaxWidth } from '../../utils/slider';\nimport {\n StyledSlider,\n StyledSliderInput,\n StyledSliderThumb,\n StyledSliderThumbLabel,\n} from './Slider.styles';\n\nexport interface SliderInterval {\n maxValue: number;\n minValue: number;\n}\n\nexport type SliderProps = {\n /**\n * The range that can be selected with two thumbs..\n */\n interval?: SliderInterval;\n /**\n * The maximum value of the slider.\n */\n maxValue: number;\n /**\n * The minimum value of the slider.\n */\n minValue: number;\n /**\n *\n */\n onSelect?: (value?: number, interval?: SliderInterval) => void;\n /**\n * Function that will be executed when the value is changed.\n */\n onChange?: (value?: number, interval?: SliderInterval) => void;\n /**\n * Whether the current value should be displayed inside the slider thumb.\n */\n shouldShowThumbLabel?: boolean;\n /**\n * The steps of the slider.\n */\n steps?: number;\n /**\n * A function to format the thumb label.\n */\n thumbLabelFormatter?: (value: number) => string;\n /**\n * the Value that the slider should have.\n */\n value?: number;\n};\n\nconst Slider: FC<SliderProps> = ({\n maxValue,\n minValue,\n value,\n onSelect,\n onChange,\n interval,\n thumbLabelFormatter,\n shouldShowThumbLabel = false,\n steps = 1,\n}) => {\n const [fromValue, setFromValue] = useState(0);\n const [toValue, setToValue] = useState(maxValue);\n const [thumbWidth, setThumbWidth] = useState(20);\n\n const fromSliderRef = useRef<HTMLInputElement>(null);\n const toSliderRef = useRef<HTMLInputElement>(null);\n const fromSliderThumbRef = useRef<HTMLDivElement>(null);\n const toSliderThumbRef = useRef<HTMLDivElement>(null);\n const sliderWrapperRef = useRef<HTMLDivElement>(null);\n\n const sliderWrapperSize = useElementSize(sliderWrapperRef);\n\n const theme = useTheme();\n\n useEffect(() => {\n if (shouldShowThumbLabel) {\n setThumbWidth(getThumbMaxWidth({ maxNumber: maxValue, thumbLabelFormatter }));\n }\n }, [maxValue, shouldShowThumbLabel, thumbLabelFormatter]);\n\n /**\n * This function sets the value\n */\n useEffect(() => {\n if (typeof value !== 'number') {\n return;\n }\n\n if (value >= minValue && value <= maxValue) {\n setFromValue(value);\n }\n }, [maxValue, minValue, value]);\n\n useEffect(() => {\n if (fromValue > toValue) {\n setFromValue(toValue);\n }\n\n if (toValue < fromValue) {\n setToValue(fromValue);\n }\n }, [fromValue, toValue]);\n\n const handleMouseUp = useCallback(() => {\n const from = Number(fromSliderRef.current?.value);\n const to = Number(toSliderRef.current?.value);\n\n if (typeof onSelect === 'function') {\n onSelect(\n interval ? undefined : from,\n interval ? { maxValue: to, minValue: from } : undefined,\n );\n }\n }, [interval, onSelect]);\n\n const handleControlFromSlider = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (!fromSliderRef.current || !toSliderRef.current) {\n return;\n }\n\n setFromValue(Number(event.target.value));\n\n const from = Number(fromSliderRef.current.value);\n const to = Number(toSliderRef.current.value);\n\n if (typeof onChange === 'function') {\n onChange(undefined, { maxValue: to, minValue: from });\n }\n\n fillSlider({\n toSlider: toSliderRef.current,\n fromSlider: fromSliderRef.current,\n theme,\n });\n\n if (from > to) {\n fromSliderRef.current.value = String(to);\n } else {\n fromSliderRef.current.value = String(from);\n }\n },\n [onChange, theme],\n );\n\n const handleControlToSlider = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (!fromSliderRef.current || !toSliderRef.current) {\n return;\n }\n\n setToValue(Number(event.target.value));\n\n const from = Number(fromSliderRef.current.value);\n const to = Number(toSliderRef.current.value);\n\n if (typeof onChange === 'function') {\n onChange(undefined, { maxValue: to, minValue: from });\n }\n\n fillSlider({\n toSlider: toSliderRef.current,\n fromSlider: fromSliderRef.current,\n theme,\n });\n\n if (from <= to) {\n toSliderRef.current.value = String(to);\n } else {\n toSliderRef.current.value = String(from);\n }\n },\n [onChange, theme],\n );\n\n useEffect(() => {\n if (!fromSliderRef.current || !toSliderRef.current || !interval) {\n return;\n }\n\n setFromValue(interval.minValue);\n setToValue(interval.maxValue);\n\n fromSliderRef.current.value = String(interval.minValue);\n toSliderRef.current.value = String(interval.maxValue);\n\n fillSlider({\n fromSlider: fromSliderRef.current,\n toSlider: toSliderRef.current,\n theme,\n });\n // Note: interval can´t be in the deps because of rerender\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [theme]);\n\n /**\n * This function updates the value\n */\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const newValue = Number(event.target.value);\n\n if (interval) {\n handleControlFromSlider(event);\n\n return;\n }\n\n setFromValue(newValue);\n\n if (onChange) {\n onChange(newValue);\n }\n },\n [handleControlFromSlider, interval, onChange],\n );\n\n const fromSliderThumbPosition = useMemo(() => {\n if (fromSliderRef.current && fromSliderThumbRef.current && sliderWrapperSize) {\n return (\n ((fromValue - minValue) / (maxValue - minValue)) *\n (fromSliderRef.current.offsetWidth -\n fromSliderThumbRef.current.offsetWidth / 2) -\n (shouldShowThumbLabel && fromValue === maxValue ? 4 : 0)\n );\n }\n return 0;\n }, [fromValue, maxValue, minValue, shouldShowThumbLabel, sliderWrapperSize]);\n\n const toSliderThumbPosition = useMemo(() => {\n if (toSliderRef.current && toSliderThumbRef.current && sliderWrapperSize) {\n return (\n ((toValue - minValue) / (maxValue - minValue)) *\n (toSliderRef.current.offsetWidth - toSliderThumbRef.current.offsetWidth / 2) -\n (shouldShowThumbLabel && toValue === maxValue ? 4 : 0)\n );\n }\n return 0;\n }, [toValue, minValue, maxValue, shouldShowThumbLabel, sliderWrapperSize]);\n\n return useMemo(\n () => (\n <StyledSlider ref={sliderWrapperRef}>\n <StyledSliderInput\n $thumbWidth={thumbWidth}\n ref={fromSliderRef}\n $isInterval={!!interval}\n type=\"range\"\n value={fromValue}\n step={steps}\n max={maxValue}\n min={minValue}\n onChange={handleInputChange}\n onMouseUp={handleMouseUp}\n $max={maxValue}\n $min={minValue}\n $value={fromValue}\n />\n <StyledSliderThumb ref={fromSliderThumbRef} $position={fromSliderThumbPosition}>\n {shouldShowThumbLabel && (\n <StyledSliderThumbLabel>\n {typeof thumbLabelFormatter === 'function'\n ? thumbLabelFormatter(fromValue)\n : fromValue}\n </StyledSliderThumbLabel>\n )}\n </StyledSliderThumb>\n {interval && (\n <StyledSliderThumb ref={toSliderThumbRef} $position={toSliderThumbPosition}>\n {shouldShowThumbLabel && (\n <StyledSliderThumbLabel>\n {typeof thumbLabelFormatter === 'function'\n ? thumbLabelFormatter(toValue)\n : toValue}\n </StyledSliderThumbLabel>\n )}\n </StyledSliderThumb>\n )}\n {interval && (\n <StyledSliderInput\n $thumbWidth={thumbWidth}\n $max={maxValue}\n $min={minValue}\n $value={toValue}\n ref={toSliderRef}\n $isInterval={!!interval}\n type=\"range\"\n value={toValue}\n step={steps}\n max={maxValue}\n min={minValue}\n onChange={handleControlToSlider}\n onMouseUp={handleMouseUp}\n />\n )}\n </StyledSlider>\n ),\n [\n thumbWidth,\n interval,\n fromValue,\n steps,\n maxValue,\n minValue,\n handleInputChange,\n handleMouseUp,\n fromSliderThumbPosition,\n shouldShowThumbLabel,\n thumbLabelFormatter,\n toSliderThumbPosition,\n toValue,\n handleControlToSlider,\n ],\n );\n};\n\nSlider.displayName = 'Slider';\n\nexport default Slider;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Slider.js","names":["setRefreshScrollEnabled","React","useCallback","useEffect","useMemo","useRef","useState","useTheme","useElementSize","fillSlider","getThumbMaxWidth","StyledSlider","StyledSliderInput","StyledSliderThumb","StyledSliderThumbLabel","Slider","_ref","maxValue","minValue","value","onSelect","onChange","interval","thumbLabelFormatter","shouldShowThumbLabel","steps","fromValue","setFromValue","toValue","setToValue","thumbWidth","setThumbWidth","fromSliderRef","toSliderRef","fromSliderThumbRef","toSliderThumbRef","sliderWrapperRef","sliderWrapperSize","theme","maxNumber","handleMouseUp","from","Number","current","to","undefined","handleControlFromSlider","event","target","toSlider","fromSlider","String","handleControlToSlider","handleInputChange","newValue","fromSliderThumbPosition","offsetWidth","toSliderThumbPosition","createElement","ref","$thumbWidth","$isInterval","type","step","max","min","onMouseUp","$max","$min","$value","$position","displayName"],"sources":["../../../../src/components/slider/Slider.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport React, { ChangeEvent, FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTheme } from 'styled-components';\nimport { useElementSize } from '../../hooks/useElementSize';\nimport { fillSlider, getThumbMaxWidth } from '../../utils/slider';\nimport {\n StyledSlider,\n StyledSliderInput,\n StyledSliderThumb,\n StyledSliderThumbLabel,\n} from './Slider.styles';\n\nexport interface SliderInterval {\n maxValue: number;\n minValue: number;\n}\n\nexport type SliderProps = {\n /**\n * The range that can be selected with two thumbs..\n */\n interval?: SliderInterval;\n /**\n * The maximum value of the slider.\n */\n maxValue: number;\n /**\n * The minimum value of the slider.\n */\n minValue: number;\n /**\n *\n */\n onSelect?: (value?: number, interval?: SliderInterval) => void;\n /**\n * Function that will be executed when the value is changed.\n */\n onChange?: (value?: number, interval?: SliderInterval) => void;\n /**\n * Whether the current value should be displayed inside the slider thumb.\n */\n shouldShowThumbLabel?: boolean;\n /**\n * The steps of the slider.\n */\n steps?: number;\n /**\n * A function to format the thumb label.\n */\n thumbLabelFormatter?: (value: number) => string;\n /**\n * the Value that the slider should have.\n */\n value?: number;\n};\n\nconst Slider: FC<SliderProps> = ({\n maxValue,\n minValue,\n value,\n onSelect,\n onChange,\n interval,\n thumbLabelFormatter,\n shouldShowThumbLabel = false,\n steps = 1,\n}) => {\n const [fromValue, setFromValue] = useState(0);\n const [toValue, setToValue] = useState(maxValue);\n const [thumbWidth, setThumbWidth] = useState(20);\n\n const fromSliderRef = useRef<HTMLInputElement>(null);\n const toSliderRef = useRef<HTMLInputElement>(null);\n const fromSliderThumbRef = useRef<HTMLDivElement>(null);\n const toSliderThumbRef = useRef<HTMLDivElement>(null);\n const sliderWrapperRef = useRef<HTMLDivElement>(null);\n\n const sliderWrapperSize = useElementSize(sliderWrapperRef);\n\n const theme = useTheme();\n\n useEffect(() => {\n if (shouldShowThumbLabel) {\n setThumbWidth(getThumbMaxWidth({ maxNumber: maxValue, thumbLabelFormatter }));\n }\n }, [maxValue, shouldShowThumbLabel, thumbLabelFormatter]);\n\n /**\n * This function sets the value\n */\n useEffect(() => {\n if (typeof value !== 'number') {\n return;\n }\n\n if (value >= minValue && value <= maxValue) {\n setFromValue(value);\n }\n }, [maxValue, minValue, value]);\n\n useEffect(() => {\n if (fromValue > toValue) {\n setFromValue(toValue);\n }\n\n if (toValue < fromValue) {\n setToValue(fromValue);\n }\n }, [fromValue, toValue]);\n\n const handleMouseUp = useCallback(() => {\n void setRefreshScrollEnabled(true);\n\n const from = Number(fromSliderRef.current?.value);\n const to = Number(toSliderRef.current?.value);\n\n if (typeof onSelect === 'function') {\n onSelect(\n interval ? undefined : from,\n interval ? { maxValue: to, minValue: from } : undefined,\n );\n }\n }, [interval, onSelect]);\n\n const handleControlFromSlider = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (!fromSliderRef.current || !toSliderRef.current) {\n return;\n }\n\n setFromValue(Number(event.target.value));\n\n const from = Number(fromSliderRef.current.value);\n const to = Number(toSliderRef.current.value);\n\n if (typeof onChange === 'function') {\n onChange(undefined, { maxValue: to, minValue: from });\n }\n\n fillSlider({\n toSlider: toSliderRef.current,\n fromSlider: fromSliderRef.current,\n theme,\n });\n\n if (from > to) {\n fromSliderRef.current.value = String(to);\n } else {\n fromSliderRef.current.value = String(from);\n }\n },\n [onChange, theme],\n );\n\n const handleControlToSlider = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n void setRefreshScrollEnabled(false);\n\n if (!fromSliderRef.current || !toSliderRef.current) {\n return;\n }\n\n setToValue(Number(event.target.value));\n\n const from = Number(fromSliderRef.current.value);\n const to = Number(toSliderRef.current.value);\n\n if (typeof onChange === 'function') {\n onChange(undefined, { maxValue: to, minValue: from });\n }\n\n fillSlider({\n toSlider: toSliderRef.current,\n fromSlider: fromSliderRef.current,\n theme,\n });\n\n if (from <= to) {\n toSliderRef.current.value = String(to);\n } else {\n toSliderRef.current.value = String(from);\n }\n },\n [onChange, theme],\n );\n\n useEffect(() => {\n if (!fromSliderRef.current || !toSliderRef.current || !interval) {\n return;\n }\n\n setFromValue(interval.minValue);\n setToValue(interval.maxValue);\n\n fromSliderRef.current.value = String(interval.minValue);\n toSliderRef.current.value = String(interval.maxValue);\n\n fillSlider({\n fromSlider: fromSliderRef.current,\n toSlider: toSliderRef.current,\n theme,\n });\n // Note: interval can´t be in the deps because of rerender\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [theme]);\n\n /**\n * This function updates the value\n */\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n void setRefreshScrollEnabled(false);\n\n const newValue = Number(event.target.value);\n\n if (interval) {\n handleControlFromSlider(event);\n\n return;\n }\n\n setFromValue(newValue);\n\n if (onChange) {\n onChange(newValue);\n }\n },\n [handleControlFromSlider, interval, onChange],\n );\n\n const fromSliderThumbPosition = useMemo(() => {\n if (fromSliderRef.current && fromSliderThumbRef.current && sliderWrapperSize) {\n return (\n ((fromValue - minValue) / (maxValue - minValue)) *\n (fromSliderRef.current.offsetWidth -\n fromSliderThumbRef.current.offsetWidth / 2) -\n (shouldShowThumbLabel && fromValue === maxValue ? 4 : 0)\n );\n }\n return 0;\n }, [fromValue, maxValue, minValue, shouldShowThumbLabel, sliderWrapperSize]);\n\n const toSliderThumbPosition = useMemo(() => {\n if (toSliderRef.current && toSliderThumbRef.current && sliderWrapperSize) {\n return (\n ((toValue - minValue) / (maxValue - minValue)) *\n (toSliderRef.current.offsetWidth - toSliderThumbRef.current.offsetWidth / 2) -\n (shouldShowThumbLabel && toValue === maxValue ? 4 : 0)\n );\n }\n return 0;\n }, [toValue, minValue, maxValue, shouldShowThumbLabel, sliderWrapperSize]);\n\n return useMemo(\n () => (\n <StyledSlider ref={sliderWrapperRef}>\n <StyledSliderInput\n $thumbWidth={thumbWidth}\n ref={fromSliderRef}\n $isInterval={!!interval}\n type=\"range\"\n value={fromValue}\n step={steps}\n max={maxValue}\n min={minValue}\n onChange={handleInputChange}\n onMouseUp={handleMouseUp}\n $max={maxValue}\n $min={minValue}\n $value={fromValue}\n />\n <StyledSliderThumb ref={fromSliderThumbRef} $position={fromSliderThumbPosition}>\n {shouldShowThumbLabel && (\n <StyledSliderThumbLabel>\n {typeof thumbLabelFormatter === 'function'\n ? thumbLabelFormatter(fromValue)\n : fromValue}\n </StyledSliderThumbLabel>\n )}\n </StyledSliderThumb>\n {interval && (\n <StyledSliderThumb ref={toSliderThumbRef} $position={toSliderThumbPosition}>\n {shouldShowThumbLabel && (\n <StyledSliderThumbLabel>\n {typeof thumbLabelFormatter === 'function'\n ? thumbLabelFormatter(toValue)\n : toValue}\n </StyledSliderThumbLabel>\n )}\n </StyledSliderThumb>\n )}\n {interval && (\n <StyledSliderInput\n $thumbWidth={thumbWidth}\n $max={maxValue}\n $min={minValue}\n $value={toValue}\n ref={toSliderRef}\n $isInterval={!!interval}\n type=\"range\"\n value={toValue}\n step={steps}\n max={maxValue}\n min={minValue}\n onChange={handleControlToSlider}\n onMouseUp={handleMouseUp}\n />\n )}\n </StyledSlider>\n ),\n [\n thumbWidth,\n interval,\n fromValue,\n steps,\n maxValue,\n minValue,\n handleInputChange,\n handleMouseUp,\n fromSliderThumbPosition,\n shouldShowThumbLabel,\n thumbLabelFormatter,\n toSliderThumbPosition,\n toValue,\n handleControlToSlider,\n ],\n );\n};\n\nSlider.displayName = 'Slider';\n\nexport default Slider;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.styles.js","names":["styled","StyledSlider","div","StyledSliderInput","input","attrs","_ref","$isInterval","$value","$thumbWidth","$min","$max","theme","style","pointerEvents","width","background","undefined","StyledSliderThumb","_ref2","$position","left","StyledSliderThumbLabel","span"],"sources":["../../../../src/components/slider/Slider.styles.ts"],"sourcesContent":["import styled from 'styled-components';\nimport type { Theme, WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport const StyledSlider = styled.div`\n width: 100%;\n height: 30px;\n cursor: pointer;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\ntype StyledSliderInputProps = WithTheme<{\n $min: number;\n $max: number;\n $value: number;\n $isInterval: boolean;\n $thumbWidth: number;\n}>;\n\nexport const StyledSliderInput = styled.input.attrs<StyledSliderInputProps>(\n ({ $isInterval, $value, $thumbWidth, $min, $max, theme }) => ({\n style: {\n pointerEvents: $isInterval ? 'none' : 'all',\n width: `calc(100% - ${$thumbWidth / 2}px)`,\n background: !$isInterval\n ? `linear-gradient(\n to right,\n ${(theme as Theme)['409'] ?? ''} 0%,\n ${(theme as Theme)['409'] ?? ''}\n ${(($value - $min) / ($max - $min)) * 100}%,\n ${(theme as Theme)['403'] ?? ''}\n ${(($value - $min) / ($max - $min)) * 100}%,\n ${(theme as Theme)['403'] ?? ''}\n )`\n : undefined,\n },\n }),\n)`\n position: absolute;\n border-radius: 100px;\n -webkit-appearance: none;\n height: 10px;\n outline: none;\n cursor: pointer !important;\n z-index: 2;\n appearance: none;\n\n // Slider thumb for chrome\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 20px;\n height: 20px;\n cursor: pointer;\n opacity: 0;\n pointer-events: all;\n position: relative;\n }\n\n // slider thumb for firefox\n\n &::-moz-range-thumb {\n width: 20px;\n height: 20px;\n cursor: pointer;\n opacity: 0;\n pointer-events: all;\n position: relative;\n }\n`;\n\ntype StyledSliderThumbProps = WithTheme<{ $position: number }>;\n\nexport const StyledSliderThumb = styled.div.attrs<StyledSliderThumbProps>(({ $position }) => ({\n style: {\n left: `${$position}px`,\n },\n}))`\n min-width: 20px;\n height: 20px;\n cursor: pointer;\n border-radius: 100px;\n background-color: white;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);\n pointer-events: none;\n z-index: 3;\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 8px;\n white-space: nowrap;\n`;\n\ntype StyledSliderThumbLabelProps = WithTheme<unknown>;\n\nexport const StyledSliderThumbLabel = styled.span<StyledSliderThumbLabelProps>`\n pointer-events: none;\n color: #222;\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAGtC,OAAO,MAAMC,YAAY,GAAGD,MAAM,CAACE,GAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAUD,OAAO,MAAMC,iBAAiB,GAAGH,MAAM,CAACI,KAAK,CAACC,KAAK,CAC/CC,IAAA;EAAA,IAAC;IAAEC,WAAW;IAAEC,MAAM;IAAEC,WAAW;IAAEC,IAAI;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAAN,IAAA;EAAA,OAAM;IAC1DO,KAAK,EAAE;MACHC,aAAa,EAAEP,WAAW,GAAG,MAAM,GAAG,KAAK;MAC3CQ,KAAK,EAAG,eAAcN,WAAW,GAAG,CAAE,KAAI;MAC1CO,UAAU,EAAE,CAACT,WAAW,GACjB;AACnB;AACA,cAAeK,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,cAAeA,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,cAAe,CAACJ,MAAM,GAAGE,IAAI,KAAKC,IAAI,GAAGD,IAAI,CAAC,GAAI,GAAI;AACtD,cAAeE,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,cAAe,CAACJ,MAAM,GAAGE,IAAI,KAAKC,IAAI,GAAGD,IAAI,CAAC,GAAI,GAAI;AACtD,cAAeE,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,UAAU,GACQK;IACV;EACJ,CAAC;AAAA,CACL,CAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMC,iBAAiB,GAAGlB,MAAM,CAACE,GAAG,CAACG,KAAK,CAAyBc,KAAA;EAAA,IAAC;IAAEC;EAAU,CAAC,GAAAD,KAAA;EAAA,OAAM;IAC1FN,KAAK,EAAE;MACHQ,IAAI,EAAG,GAAED,SAAU;IACvB;EACJ,CAAC;AAAA,CAAC,CAAE;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAME,sBAAsB,GAAGtB,MAAM,CAACuB,IAAkC;AAC/E;AACA;AACA,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Slider.styles.js","names":["styled","StyledSlider","div","StyledSliderInput","input","attrs","_ref","$isInterval","$value","$thumbWidth","$min","$max","theme","style","pointerEvents","width","background","undefined","StyledSliderThumb","_ref2","$position","left","StyledSliderThumbLabel","span"],"sources":["../../../../src/components/slider/Slider.styles.ts"],"sourcesContent":["import styled from 'styled-components';\nimport type { Theme, WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport const StyledSlider = styled.div`\n width: 100%;\n height: 30px;\n cursor: pointer;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n touch-action: none;\n`;\n\ntype StyledSliderInputProps = WithTheme<{\n $min: number;\n $max: number;\n $value: number;\n $isInterval: boolean;\n $thumbWidth: number;\n}>;\n\nexport const StyledSliderInput = styled.input.attrs<StyledSliderInputProps>(\n ({ $isInterval, $value, $thumbWidth, $min, $max, theme }) => ({\n style: {\n pointerEvents: $isInterval ? 'none' : 'all',\n width: `calc(100% - ${$thumbWidth / 2}px)`,\n background: !$isInterval\n ? `linear-gradient(\n to right,\n ${(theme as Theme)['409'] ?? ''} 0%,\n ${(theme as Theme)['409'] ?? ''}\n ${(($value - $min) / ($max - $min)) * 100}%,\n ${(theme as Theme)['403'] ?? ''}\n ${(($value - $min) / ($max - $min)) * 100}%,\n ${(theme as Theme)['403'] ?? ''}\n )`\n : undefined,\n },\n }),\n)`\n position: absolute;\n border-radius: 100px;\n -webkit-appearance: none;\n height: 10px;\n outline: none;\n cursor: pointer !important;\n z-index: 2;\n appearance: none;\n\n // Slider thumb for chrome\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 20px;\n height: 20px;\n cursor: pointer;\n opacity: 0;\n pointer-events: all;\n position: relative;\n }\n\n // slider thumb for firefox\n\n &::-moz-range-thumb {\n width: 20px;\n height: 20px;\n cursor: pointer;\n opacity: 0;\n pointer-events: all;\n position: relative;\n }\n`;\n\ntype StyledSliderThumbProps = WithTheme<{ $position: number }>;\n\nexport const StyledSliderThumb = styled.div.attrs<StyledSliderThumbProps>(({ $position }) => ({\n style: {\n left: `${$position}px`,\n },\n}))`\n min-width: 20px;\n height: 20px;\n cursor: pointer;\n border-radius: 100px;\n background-color: white;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);\n pointer-events: none;\n z-index: 3;\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 8px;\n white-space: nowrap;\n`;\n\ntype StyledSliderThumbLabelProps = WithTheme<unknown>;\n\nexport const StyledSliderThumbLabel = styled.span<StyledSliderThumbLabelProps>`\n pointer-events: none;\n color: #222;\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAGtC,OAAO,MAAMC,YAAY,GAAGD,MAAM,CAACE,GAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAUD,OAAO,MAAMC,iBAAiB,GAAGH,MAAM,CAACI,KAAK,CAACC,KAAK,CAC/CC,IAAA;EAAA,IAAC;IAAEC,WAAW;IAAEC,MAAM;IAAEC,WAAW;IAAEC,IAAI;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAAN,IAAA;EAAA,OAAM;IAC1DO,KAAK,EAAE;MACHC,aAAa,EAAEP,WAAW,GAAG,MAAM,GAAG,KAAK;MAC3CQ,KAAK,EAAG,eAAcN,WAAW,GAAG,CAAE,KAAI;MAC1CO,UAAU,EAAE,CAACT,WAAW,GACjB;AACnB;AACA,cAAeK,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,cAAeA,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,cAAe,CAACJ,MAAM,GAAGE,IAAI,KAAKC,IAAI,GAAGD,IAAI,CAAC,GAAI,GAAI;AACtD,cAAeE,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,cAAe,CAACJ,MAAM,GAAGE,IAAI,KAAKC,IAAI,GAAGD,IAAI,CAAC,GAAI,GAAI;AACtD,cAAeE,KAAK,CAAW,KAAK,CAAC,IAAI,EAAG;AAC5C,UAAU,GACQK;IACV;EACJ,CAAC;AAAA,CACL,CAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMC,iBAAiB,GAAGlB,MAAM,CAACE,GAAG,CAACG,KAAK,CAAyBc,KAAA;EAAA,IAAC;IAAEC;EAAU,CAAC,GAAAD,KAAA;EAAA,OAAM;IAC1FN,KAAK,EAAE;MACHQ,IAAI,EAAG,GAAED,SAAU;IACvB;EACJ,CAAC;AAAA,CAAC,CAAE;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAME,sBAAsB,GAAGtB,MAAM,CAACuB,IAAkC;AAC/E;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { setRefreshScrollEnabled } from 'chayns-api';
|
|
1
2
|
import { AnimatePresence, useAnimate } from 'framer-motion';
|
|
2
3
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
4
|
import { useElementSize } from '../../hooks/useElementSize';
|
|
@@ -113,6 +114,7 @@ const SliderButton = _ref => {
|
|
|
113
114
|
return points;
|
|
114
115
|
}, [itemWidth, items.length]);
|
|
115
116
|
const handleDragEnd = useCallback(() => {
|
|
117
|
+
void setRefreshScrollEnabled(true);
|
|
116
118
|
const position = getThumbPosition({
|
|
117
119
|
scope,
|
|
118
120
|
itemWidth
|
|
@@ -159,6 +161,7 @@ const SliderButton = _ref => {
|
|
|
159
161
|
}, [animation, itemWidth, items, onChange, scope, snapPoints]);
|
|
160
162
|
const handleWhileDrag = useCallback(() => {
|
|
161
163
|
preventHandleScroll.current = true;
|
|
164
|
+
void setRefreshScrollEnabled(false);
|
|
162
165
|
const position = getThumbPosition({
|
|
163
166
|
scope,
|
|
164
167
|
itemWidth
|
|
@@ -203,6 +206,7 @@ const SliderButton = _ref => {
|
|
|
203
206
|
if (preventHandleScroll.current) {
|
|
204
207
|
return;
|
|
205
208
|
}
|
|
209
|
+
void setRefreshScrollEnabled(false);
|
|
206
210
|
const position = getThumbPosition({
|
|
207
211
|
scope,
|
|
208
212
|
itemWidth
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderButton.js","names":["AnimatePresence","useAnimate","React","useCallback","useEffect","useMemo","useRef","useState","useElementSize","calculateBiggestWidth","getNearestPoint","getThumbPosition","StyledMotionSliderButtonThumb","StyledSliderButton","StyledSliderButtonButtonsWrapper","StyledSliderButtonItem","StyledSliderButtonWrapper","SliderButton","_ref","selectedButtonId","isDisabled","items","onChange","selectedButton","setSelectedButton","undefined","dragRange","setDragRange","left","right","sliderButtonRef","sliderButtonWrapperRef","timeout","preventHandleScroll","scope","animate","itemWidth","sliderSize","isSliderBigger","width","length","sliderWidth","count","Math","floor","animation","x","current","type","duration","index","findIndex","_ref2","id","handleClick","scrollLeft","buttons","map","_ref3","text","createElement","$width","key","onClick","$isSelected","thumbText","selectedItem","find","_ref4","snapPoints","points","i","push","handleDragEnd","position","middle","nearestPoint","nearestIndex","handleWhileDrag","scrollSpeed","handleScroll","event","target","clearTimeout","window","setTimeout","$isDisabled","ref","drag","dragElastic","dragConstraints","onDrag","onDragEnd","onScroll","displayName"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { AnimatePresence, useAnimate } from 'framer-motion';\nimport React, { FC, UIEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/useElementSize';\nimport type { SliderButtonItem } from '../../types/slider-button';\nimport { calculateBiggestWidth } from '../../utils/calculate';\nimport { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';\nimport {\n StyledMotionSliderButtonThumb,\n StyledSliderButton,\n StyledSliderButtonButtonsWrapper,\n StyledSliderButtonItem,\n StyledSliderButtonWrapper,\n} from './SliderButton.styles';\n\nexport type SliderButtonProps = {\n /**\n * Whether the button is disabled.\n */\n isDisabled?: boolean;\n /**\n * Function to be executed when a button is selected.\n * @param id\n */\n onChange?: (id: string) => void;\n /**\n * The buttons that are slidable.\n */\n items: SliderButtonItem[];\n /**\n * The id of a button that should be selected.\n */\n selectedButtonId?: string;\n};\n\nconst SliderButton: FC<SliderButtonProps> = ({ selectedButtonId, isDisabled, items, onChange }) => {\n const [selectedButton, setSelectedButton] = useState<string | undefined>(undefined);\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n\n const sliderButtonRef = useRef<HTMLDivElement>(null);\n const sliderButtonWrapperRef = useRef<HTMLDivElement>(null);\n const timeout = useRef<number>();\n const preventHandleScroll = useRef(false);\n\n const [scope, animate] = useAnimate();\n\n const itemWidth = useMemo(() => calculateBiggestWidth(items), [items]);\n\n const sliderSize = useElementSize(sliderButtonRef);\n\n const isSliderBigger = useMemo(\n () => sliderSize && sliderSize.width < itemWidth * (items.length - 1),\n [itemWidth, items.length, sliderSize],\n );\n\n useEffect(() => {\n if (sliderSize) {\n const sliderWidth = itemWidth * (items.length - 1);\n\n const count = Math.floor(sliderSize.width / itemWidth);\n\n setDragRange({ left: 0, right: isSliderBigger ? itemWidth * count : sliderWidth });\n }\n }, [isSliderBigger, itemWidth, items.length, sliderSize]);\n\n const animation = useCallback(\n async (x: number) => {\n await animate(\n scope.current,\n { x },\n {\n type: 'tween',\n duration: 0.2,\n },\n );\n },\n [animate, scope],\n );\n\n useEffect(() => {\n if (selectedButtonId) {\n setSelectedButton(selectedButtonId);\n\n const index = items.findIndex(({ id }) => id === selectedButtonId);\n\n if (index >= 0) {\n void animation(itemWidth * index);\n }\n } else {\n setSelectedButton(items[0]?.id);\n }\n }, [animation, itemWidth, items, selectedButtonId]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n setSelectedButton(id);\n\n if (typeof onChange === 'function') {\n onChange(id);\n }\n\n if (!isSliderBigger) {\n void animation(itemWidth * index);\n\n return;\n }\n\n const count = dragRange.right / itemWidth;\n\n if (items.length - count >= index) {\n void animation(0);\n } else {\n void animation(itemWidth * (count - (items.length - index)));\n }\n\n if (sliderButtonWrapperRef.current) {\n sliderButtonWrapperRef.current.scrollLeft = itemWidth * index;\n }\n },\n [animation, dragRange.right, isDisabled, isSliderBigger, itemWidth, items.length, onChange],\n );\n\n const buttons = useMemo(\n () =>\n items.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $width={itemWidth}\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n $isSelected={id === selectedButton}\n >\n {text}\n </StyledSliderButtonItem>\n )),\n [handleClick, itemWidth, items, selectedButton],\n );\n\n const thumbText = useMemo(() => {\n const selectedItem = items.find(({ id }) => id === selectedButton);\n\n return selectedItem ? selectedItem.text : '';\n }, [items, selectedButton]);\n\n /**\n * Creates an array with the snap points relative to the width of the items\n */\n const snapPoints = useMemo(() => {\n const points = [0];\n\n for (let i = 1; i < items.length; i++) {\n points.push(itemWidth * i);\n }\n\n return points;\n }, [itemWidth, items.length]);\n\n const handleDragEnd = useCallback(() => {\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle, left } = position;\n\n let scrollLeft = 0;\n\n if (sliderButtonWrapperRef.current) {\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n\n sliderButtonWrapperRef.current.scrollLeft = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: scrollLeft - left,\n }).nearestPoint;\n }\n\n const { nearestIndex } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft,\n });\n\n const { nearestPoint } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: 0,\n });\n\n if (nearestPoint >= 0 && nearestIndex >= 0) {\n void animation(nearestPoint);\n\n const id = items[nearestIndex]?.id;\n\n setSelectedButton(id);\n\n if (typeof onChange === 'function' && id) {\n onChange(id);\n }\n }\n\n preventHandleScroll.current = false;\n }, [animation, itemWidth, items, onChange, scope, snapPoints]);\n\n const handleWhileDrag = useCallback(() => {\n preventHandleScroll.current = true;\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { right, left, middle } = position;\n\n let scrollLeft = 0;\n\n const scrollSpeed = 3;\n\n if (sliderButtonWrapperRef.current) {\n if (right >= dragRange.right) {\n sliderButtonWrapperRef.current.scrollLeft += scrollSpeed;\n }\n\n if (left <= dragRange.left) {\n sliderButtonWrapperRef.current.scrollLeft -= scrollSpeed;\n }\n\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n }\n\n const { nearestIndex } = getNearestPoint({ snapPoints, position: middle, scrollLeft });\n\n if (nearestIndex >= 0) {\n setSelectedButton(items[nearestIndex]?.id);\n }\n }, [dragRange, itemWidth, items, scope, snapPoints]);\n\n // With this, the handleScroll works before the thumb is moved the first time.\n useEffect(() => {\n void animation(1);\n void animation(0);\n }, [animation]);\n\n const handleScroll = useCallback(\n (event: UIEvent<HTMLElement>) => {\n if (preventHandleScroll.current) {\n return;\n }\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle } = position;\n\n const { scrollLeft } = event.target as HTMLDivElement;\n\n const { nearestIndex } = getNearestPoint({ snapPoints, position: middle, scrollLeft });\n\n if (nearestIndex >= 0) {\n setSelectedButton(items[nearestIndex]?.id);\n }\n\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n\n timeout.current = window.setTimeout(() => {\n handleDragEnd();\n }, 200);\n },\n [handleDragEnd, itemWidth, items, scope, snapPoints],\n );\n\n return useMemo(\n () => (\n <StyledSliderButton $isDisabled={isDisabled} ref={sliderButtonRef}>\n <StyledMotionSliderButtonThumb\n ref={scope}\n drag={isDisabled ? false : 'x'}\n dragElastic={0}\n dragConstraints={\n isSliderBigger\n ? { ...dragRange, right: dragRange.right - itemWidth }\n : { ...dragRange }\n }\n $width={itemWidth}\n onDrag={handleWhileDrag}\n onDragEnd={handleDragEnd}\n >\n {thumbText}\n </StyledMotionSliderButtonThumb>\n <StyledSliderButtonWrapper\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n onScroll={handleScroll}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n buttons,\n dragRange,\n handleDragEnd,\n handleScroll,\n handleWhileDrag,\n isDisabled,\n isSliderBigger,\n itemWidth,\n scope,\n thumbText,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SliderButton.js","names":["setRefreshScrollEnabled","AnimatePresence","useAnimate","React","useCallback","useEffect","useMemo","useRef","useState","useElementSize","calculateBiggestWidth","getNearestPoint","getThumbPosition","StyledMotionSliderButtonThumb","StyledSliderButton","StyledSliderButtonButtonsWrapper","StyledSliderButtonItem","StyledSliderButtonWrapper","SliderButton","_ref","selectedButtonId","isDisabled","items","onChange","selectedButton","setSelectedButton","undefined","dragRange","setDragRange","left","right","sliderButtonRef","sliderButtonWrapperRef","timeout","preventHandleScroll","scope","animate","itemWidth","sliderSize","isSliderBigger","width","length","sliderWidth","count","Math","floor","animation","x","current","type","duration","index","findIndex","_ref2","id","handleClick","scrollLeft","buttons","map","_ref3","text","createElement","$width","key","onClick","$isSelected","thumbText","selectedItem","find","_ref4","snapPoints","points","i","push","handleDragEnd","position","middle","nearestPoint","nearestIndex","handleWhileDrag","scrollSpeed","handleScroll","event","target","clearTimeout","window","setTimeout","$isDisabled","ref","drag","dragElastic","dragConstraints","onDrag","onDragEnd","onScroll","displayName"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport { AnimatePresence, useAnimate } from 'framer-motion';\nimport React, { FC, UIEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/useElementSize';\nimport type { SliderButtonItem } from '../../types/slider-button';\nimport { calculateBiggestWidth } from '../../utils/calculate';\nimport { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';\nimport {\n StyledMotionSliderButtonThumb,\n StyledSliderButton,\n StyledSliderButtonButtonsWrapper,\n StyledSliderButtonItem,\n StyledSliderButtonWrapper,\n} from './SliderButton.styles';\n\nexport type SliderButtonProps = {\n /**\n * Whether the button is disabled.\n */\n isDisabled?: boolean;\n /**\n * Function to be executed when a button is selected.\n * @param id\n */\n onChange?: (id: string) => void;\n /**\n * The buttons that are slidable.\n */\n items: SliderButtonItem[];\n /**\n * The id of a button that should be selected.\n */\n selectedButtonId?: string;\n};\n\nconst SliderButton: FC<SliderButtonProps> = ({ selectedButtonId, isDisabled, items, onChange }) => {\n const [selectedButton, setSelectedButton] = useState<string | undefined>(undefined);\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n\n const sliderButtonRef = useRef<HTMLDivElement>(null);\n const sliderButtonWrapperRef = useRef<HTMLDivElement>(null);\n const timeout = useRef<number>();\n const preventHandleScroll = useRef(false);\n\n const [scope, animate] = useAnimate();\n\n const itemWidth = useMemo(() => calculateBiggestWidth(items), [items]);\n\n const sliderSize = useElementSize(sliderButtonRef);\n\n const isSliderBigger = useMemo(\n () => sliderSize && sliderSize.width < itemWidth * (items.length - 1),\n [itemWidth, items.length, sliderSize],\n );\n\n useEffect(() => {\n if (sliderSize) {\n const sliderWidth = itemWidth * (items.length - 1);\n\n const count = Math.floor(sliderSize.width / itemWidth);\n\n setDragRange({ left: 0, right: isSliderBigger ? itemWidth * count : sliderWidth });\n }\n }, [isSliderBigger, itemWidth, items.length, sliderSize]);\n\n const animation = useCallback(\n async (x: number) => {\n await animate(\n scope.current,\n { x },\n {\n type: 'tween',\n duration: 0.2,\n },\n );\n },\n [animate, scope],\n );\n\n useEffect(() => {\n if (selectedButtonId) {\n setSelectedButton(selectedButtonId);\n\n const index = items.findIndex(({ id }) => id === selectedButtonId);\n\n if (index >= 0) {\n void animation(itemWidth * index);\n }\n } else {\n setSelectedButton(items[0]?.id);\n }\n }, [animation, itemWidth, items, selectedButtonId]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n setSelectedButton(id);\n\n if (typeof onChange === 'function') {\n onChange(id);\n }\n\n if (!isSliderBigger) {\n void animation(itemWidth * index);\n\n return;\n }\n\n const count = dragRange.right / itemWidth;\n\n if (items.length - count >= index) {\n void animation(0);\n } else {\n void animation(itemWidth * (count - (items.length - index)));\n }\n\n if (sliderButtonWrapperRef.current) {\n sliderButtonWrapperRef.current.scrollLeft = itemWidth * index;\n }\n },\n [animation, dragRange.right, isDisabled, isSliderBigger, itemWidth, items.length, onChange],\n );\n\n const buttons = useMemo(\n () =>\n items.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $width={itemWidth}\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n $isSelected={id === selectedButton}\n >\n {text}\n </StyledSliderButtonItem>\n )),\n [handleClick, itemWidth, items, selectedButton],\n );\n\n const thumbText = useMemo(() => {\n const selectedItem = items.find(({ id }) => id === selectedButton);\n\n return selectedItem ? selectedItem.text : '';\n }, [items, selectedButton]);\n\n /**\n * Creates an array with the snap points relative to the width of the items\n */\n const snapPoints = useMemo(() => {\n const points = [0];\n\n for (let i = 1; i < items.length; i++) {\n points.push(itemWidth * i);\n }\n\n return points;\n }, [itemWidth, items.length]);\n\n const handleDragEnd = useCallback(() => {\n void setRefreshScrollEnabled(true);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle, left } = position;\n\n let scrollLeft = 0;\n\n if (sliderButtonWrapperRef.current) {\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n\n sliderButtonWrapperRef.current.scrollLeft = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: scrollLeft - left,\n }).nearestPoint;\n }\n\n const { nearestIndex } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft,\n });\n\n const { nearestPoint } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: 0,\n });\n\n if (nearestPoint >= 0 && nearestIndex >= 0) {\n void animation(nearestPoint);\n\n const id = items[nearestIndex]?.id;\n\n setSelectedButton(id);\n\n if (typeof onChange === 'function' && id) {\n onChange(id);\n }\n }\n\n preventHandleScroll.current = false;\n }, [animation, itemWidth, items, onChange, scope, snapPoints]);\n\n const handleWhileDrag = useCallback(() => {\n preventHandleScroll.current = true;\n void setRefreshScrollEnabled(false);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { right, left, middle } = position;\n\n let scrollLeft = 0;\n\n const scrollSpeed = 3;\n\n if (sliderButtonWrapperRef.current) {\n if (right >= dragRange.right) {\n sliderButtonWrapperRef.current.scrollLeft += scrollSpeed;\n }\n\n if (left <= dragRange.left) {\n sliderButtonWrapperRef.current.scrollLeft -= scrollSpeed;\n }\n\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n }\n\n const { nearestIndex } = getNearestPoint({ snapPoints, position: middle, scrollLeft });\n\n if (nearestIndex >= 0) {\n setSelectedButton(items[nearestIndex]?.id);\n }\n }, [dragRange, itemWidth, items, scope, snapPoints]);\n\n // With this, the handleScroll works before the thumb is moved the first time.\n useEffect(() => {\n void animation(1);\n void animation(0);\n }, [animation]);\n\n const handleScroll = useCallback(\n (event: UIEvent<HTMLElement>) => {\n if (preventHandleScroll.current) {\n return;\n }\n\n void setRefreshScrollEnabled(false);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle } = position;\n\n const { scrollLeft } = event.target as HTMLDivElement;\n\n const { nearestIndex } = getNearestPoint({ snapPoints, position: middle, scrollLeft });\n\n if (nearestIndex >= 0) {\n setSelectedButton(items[nearestIndex]?.id);\n }\n\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n\n timeout.current = window.setTimeout(() => {\n handleDragEnd();\n }, 200);\n },\n [handleDragEnd, itemWidth, items, scope, snapPoints],\n );\n\n return useMemo(\n () => (\n <StyledSliderButton $isDisabled={isDisabled} ref={sliderButtonRef}>\n <StyledMotionSliderButtonThumb\n ref={scope}\n drag={isDisabled ? false : 'x'}\n dragElastic={0}\n dragConstraints={\n isSliderBigger\n ? { ...dragRange, right: dragRange.right - itemWidth }\n : { ...dragRange }\n }\n $width={itemWidth}\n onDrag={handleWhileDrag}\n onDragEnd={handleDragEnd}\n >\n {thumbText}\n </StyledMotionSliderButtonThumb>\n <StyledSliderButtonWrapper\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n onScroll={handleScroll}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n buttons,\n dragRange,\n handleDragEnd,\n handleScroll,\n handleWhileDrag,\n isDisabled,\n isSliderBigger,\n itemWidth,\n scope,\n thumbText,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderButton.styles.js","names":["motion","styled","StyledSliderButton","div","_ref","$isDisabled","StyledSliderButtonWrapper","_ref2","theme","_ref3","$width","StyledSliderButtonItem","_ref4","_ref5","StyledSliderButtonButtonsWrapper","StyledMotionSliderButtonThumb","_ref6","_ref7"],"sources":["../../../../src/components/slider-button/SliderButton.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledSliderButtonProps = WithTheme<{ $isDisabled?: boolean }>;\n\nexport const StyledSliderButton = styled.div<StyledSliderButtonProps>`\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n width: 100%;\n`;\n\ntype StyledSliderButtonWrapperProps = WithTheme<{ $width: number }>;\n\nexport const StyledSliderButtonWrapper = styled.div<StyledSliderButtonWrapperProps>`\n align-items: center;\n background-color: ${({ theme }: StyledSliderButtonProps) => theme['404']};\n border-radius: 3px;\n border: none;\n color: white;\n cursor: pointer;\n display: inline-flex;\n line-height: 1.15;\n height: 32px;\n position: relative;\n user-select: none;\n transition: opacity 0.3s ease;\n z-index: 1;\n\n width: ${({ $width }) => $width}px;\n\n max-width: 100%;\n overflow-x: scroll;\n\n // Chrome\n &::-webkit-scrollbar {\n display: none;\n }\n\n // IE and Edge\n -ms-overflow-style: none;\n\n // Firefox\n scrollbar-width: none;\n`;\n\ntype StyledSliderButtonItemProps = WithTheme<{ $isSelected: boolean; $width: number }>;\n\nexport const StyledSliderButtonItem = styled.div<StyledSliderButtonItemProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n padding: 7px 12px;\n min-width: ${({ $width }) => $width}px;\n max-width: ${({ $width }) => $width}px;\n display: flex;\n justify-content: center;\n`;\n\nexport const StyledSliderButtonButtonsWrapper = styled.div`\n position: absolute;\n display: flex;\n align-items: center;\n`;\n\ntype StyledMotionSliderButtonThumbProps = WithTheme<{ $width: number }>;\n\nexport const StyledMotionSliderButtonThumb = styled(motion.div)<StyledMotionSliderButtonThumbProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n background-color: ${({ theme }: StyledMotionSliderButtonThumbProps) => theme['408']};\n width: ${({ $width }) => $width}px;\n position: absolute;\n border-radius: 3px;\n box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.2);\n z-index: 3;\n height: 32px;\n padding: 7px 12px;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AACtC,OAAOC,MAAM,MAAM,mBAAmB;AAKtC,OAAO,MAAMC,kBAAkB,GAAGD,MAAM,CAACE,GAA6B;AACtE,eAAeC,IAAA;EAAA,IAAC;IAAEC;EAAY,CAAC,GAAAD,IAAA;EAAA,OAAMC,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,CAAE;AAC5D;AACA,CAAC;AAID,OAAO,MAAMC,yBAAyB,GAAGL,MAAM,CAACE,GAAoC;AACpF;AACA,wBAAwBI,KAAA;EAAA,IAAC;IAAEC;EAA+B,CAAC,GAAAD,KAAA;EAAA,OAAKC,KAAK,CAAC,KAAK,CAAC;AAAA,CAAC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAaC,KAAA;EAAA,IAAC;IAAEC;EAAO,CAAC,GAAAD,KAAA;EAAA,OAAKC,MAAM;AAAA,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMC,sBAAsB,GAAGV,MAAM,CAACE,GAAiC;AAC9E;AACA;AACA;AACA,iBAAiBS,KAAA;EAAA,IAAC;IAAEF;EAAO,CAAC,GAAAE,KAAA;EAAA,OAAKF,MAAM;AAAA,CAAC;AACxC,iBAAiBG,KAAA;EAAA,IAAC;IAAEH;EAAO,CAAC,GAAAG,KAAA;EAAA,OAAKH,MAAM;AAAA,CAAC;AACxC;AACA;AACA,CAAC;AAED,OAAO,MAAMI,gCAAgC,GAAGb,MAAM,CAACE,GAAI;AAC3D;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMY,6BAA6B,GAAGd,MAAM,CAACD,MAAM,CAACG,GAAG,CAAsC;AACpG;AACA;AACA,wBAAwBa,KAAA;EAAA,IAAC;IAAER;EAA0C,CAAC,GAAAQ,KAAA;EAAA,OAAKR,KAAK,CAAC,KAAK,CAAC;AAAA,CAAC;AACxF,aAAaS,KAAA;EAAA,IAAC;IAAEP;EAAO,CAAC,GAAAO,KAAA;EAAA,OAAKP,MAAM;AAAA,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SliderButton.styles.js","names":["motion","styled","StyledSliderButton","div","_ref","$isDisabled","StyledSliderButtonWrapper","_ref2","theme","_ref3","$width","StyledSliderButtonItem","_ref4","_ref5","StyledSliderButtonButtonsWrapper","StyledMotionSliderButtonThumb","_ref6","_ref7"],"sources":["../../../../src/components/slider-button/SliderButton.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledSliderButtonProps = WithTheme<{ $isDisabled?: boolean }>;\n\nexport const StyledSliderButton = styled.div<StyledSliderButtonProps>`\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n width: 100%;\n touch-action: none;\n`;\n\ntype StyledSliderButtonWrapperProps = WithTheme<{ $width: number }>;\n\nexport const StyledSliderButtonWrapper = styled.div<StyledSliderButtonWrapperProps>`\n align-items: center;\n background-color: ${({ theme }: StyledSliderButtonProps) => theme['404']};\n border-radius: 3px;\n border: none;\n color: white;\n cursor: pointer;\n display: inline-flex;\n line-height: 1.15;\n height: 32px;\n position: relative;\n user-select: none;\n transition: opacity 0.3s ease;\n z-index: 1;\n\n width: ${({ $width }) => $width}px;\n\n max-width: 100%;\n overflow-x: scroll;\n\n // Chrome\n &::-webkit-scrollbar {\n display: none;\n }\n\n // IE and Edge\n -ms-overflow-style: none;\n\n // Firefox\n scrollbar-width: none;\n`;\n\ntype StyledSliderButtonItemProps = WithTheme<{ $isSelected: boolean; $width: number }>;\n\nexport const StyledSliderButtonItem = styled.div<StyledSliderButtonItemProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n padding: 7px 12px;\n min-width: ${({ $width }) => $width}px;\n max-width: ${({ $width }) => $width}px;\n display: flex;\n justify-content: center;\n`;\n\nexport const StyledSliderButtonButtonsWrapper = styled.div`\n position: absolute;\n display: flex;\n align-items: center;\n`;\n\ntype StyledMotionSliderButtonThumbProps = WithTheme<{ $width: number }>;\n\nexport const StyledMotionSliderButtonThumb = styled(motion.div)<StyledMotionSliderButtonThumbProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n background-color: ${({ theme }: StyledMotionSliderButtonThumbProps) => theme['408']};\n width: ${({ $width }) => $width}px;\n position: absolute;\n border-radius: 3px;\n box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.2);\n z-index: 3;\n height: 32px;\n padding: 7px 12px;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AACtC,OAAOC,MAAM,MAAM,mBAAmB;AAKtC,OAAO,MAAMC,kBAAkB,GAAGD,MAAM,CAACE,GAA6B;AACtE,eAAeC,IAAA;EAAA,IAAC;IAAEC;EAAY,CAAC,GAAAD,IAAA;EAAA,OAAMC,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,CAAE;AAC5D;AACA;AACA,CAAC;AAID,OAAO,MAAMC,yBAAyB,GAAGL,MAAM,CAACE,GAAoC;AACpF;AACA,wBAAwBI,KAAA;EAAA,IAAC;IAAEC;EAA+B,CAAC,GAAAD,KAAA;EAAA,OAAKC,KAAK,CAAC,KAAK,CAAC;AAAA,CAAC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAaC,KAAA;EAAA,IAAC;IAAEC;EAAO,CAAC,GAAAD,KAAA;EAAA,OAAKC,MAAM;AAAA,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMC,sBAAsB,GAAGV,MAAM,CAACE,GAAiC;AAC9E;AACA;AACA;AACA,iBAAiBS,KAAA;EAAA,IAAC;IAAEF;EAAO,CAAC,GAAAE,KAAA;EAAA,OAAKF,MAAM;AAAA,CAAC;AACxC,iBAAiBG,KAAA;EAAA,IAAC;IAAEH;EAAO,CAAC,GAAAG,KAAA;EAAA,OAAKH,MAAM;AAAA,CAAC;AACxC;AACA;AACA,CAAC;AAED,OAAO,MAAMI,gCAAgC,GAAGb,MAAM,CAACE,GAAI;AAC3D;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMY,6BAA6B,GAAGd,MAAM,CAACD,MAAM,CAACG,GAAG,CAAsC;AACpG;AACA;AACA,wBAAwBa,KAAA;EAAA,IAAC;IAAER;EAA0C,CAAC,GAAAQ,KAAA;EAAA,OAAKR,KAAK,CAAC,KAAK,CAAC;AAAA,CAAC;AACxF,aAAaS,KAAA;EAAA,IAAC;IAAEP;EAAO,CAAC,GAAAO,KAAA;EAAA,OAAKP,MAAM;AAAA,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/core",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.603",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
"publishConfig": {
|
|
84
84
|
"access": "public"
|
|
85
85
|
},
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "d47f7a6bd3af8eb1373255054e7753066de296c4"
|
|
87
87
|
}
|