getVar: (id) => {
return context.cssvars[id];
},
- updateVar: (id, newValue) => {
+ updateVar: (id, newValue, unit) => {
+ const computedValue = `${newValue}${unit}`;
+
+ document.documentElement.style.setProperty(
+ `--bulma-${id}`,
+ computedValue,
+ );
+
setContext((context) => {
return {
...context,
...context.cssvars,
[id]: {
...context.cssvars[id],
- value: newValue,
+ current: newValue,
},
},
};
};
const [context, setContext] = useState(initialContext);
- console.log("ZLOG context", context);
-
useEffect(() => {
const rootStyle = window.getComputedStyle(document.documentElement);
// const [saturation, setSaturation] = useState(s.start);
// const [lightness, setLightness] = useState(l.start);
- const { cssvars } = useContext(CustomizerContext);
+ const { cssvars, updateVar } = useContext(CustomizerContext);
const hName = `${color}-h`;
const sName = `${color}-s`;
const lName = `${color}-l`;
const handleReset = (event) => {
event.preventDefault();
- document.documentElement.style.removeProperty(`--bulma-${hName}`);
- document.documentElement.style.removeProperty(`--bulma-${sName}`);
- document.documentElement.style.removeProperty(`--bulma-${lName}`);
+ updateVar(h.id, h.start, h.unit);
+ updateVar(s.id, s.start, s.unit);
+ updateVar(l.id, l.start, l.unit);
+ // document.documentElement.style.removeProperty(`--bulma-${hName}`);
+ // document.documentElement.style.removeProperty(`--bulma-${sName}`);
+ // document.documentElement.style.removeProperty(`--bulma-${lName}`);
};
if (!h) {
return;
}
+ const isDisabled =
+ h.current === h.start && s.current === s.start && l.current === l.start;
+
return (
<div className={cn.main} style={mainStyle}>
<div className={cn.side}>
<p>{name}</p>
</div>
- <button className="button is-small" onClick={handleReset}>
+ <button
+ className="button is-small"
+ onClick={handleReset}
+ disabled={isDisabled}
+ >
Reset
</button>
</div>
function Slider({ id, color, kind }) {
const { cssvars, updateVar } = useContext(CustomizerContext);
- const { start, current, unit } = cssvars[id];
+ const { start, unit, current } = cssvars[id];
const [min, max] = RANGES[kind];
const sliderRef = useRef(null);
setMoving(false);
};
- useEffect(() => {
- const computedValue = `${current}${unit}`;
-
- if (current === start) {
- document.documentElement.style.removeProperty(`--bulma-${id}`);
- } else {
- document.documentElement.style.setProperty(
- `--bulma-${id}`,
- computedValue,
- );
- }
- }, [current, id, start, unit]);
+ // useEffect(() => {
+ // const computedValue = `${current}${unit}`;
+
+ // if (current === start) {
+ // document.documentElement.style.removeProperty(`--bulma-${id}`);
+ // } else {
+ // document.documentElement.style.setProperty(
+ // `--bulma-${id}`,
+ // computedValue,
+ // );
+ // }
+ // }, [current, id, start, unit]);
useEffect(() => {
const slider = sliderRef.current;
const sliderRect = slider.getBoundingClientRect();
const final = xToValue(x, sliderRect.width, min, max);
- updateVar(id, final);
+ updateVar(id, final, unit);
}, [id, min, max, updateVar, unit, x]);
+ useEffect(() => {
+ const newX = valueToX(current, 240, min, max);
+ setX(newX);
+ }, [min, max, current]);
+
useEffect(() => {
const docMouseMove = (event) => {
if (!isMoving || !sliderRef.current || !handleRef.current) {