react-plot
Version:
Library of React components to render SVG 2D plots.
46 lines • 1.59 kB
JavaScript
import { useMemo, useState } from 'react';
export const initialPlotOverridesState = {
axes: {},
};
export function usePlotOverridesState() {
const [overrides, setOverrides] = useState(initialPlotOverridesState);
const controls = useMemo(() => {
return {
setAxis(axisId, override) {
setOverrides((state) => ({
...state,
axes: { ...state.axes, [axisId]: override },
}));
},
resetAxis(axisId) {
setOverrides((state) => ({
...state,
axes: Object.fromEntries(Object.entries(state.axes).filter(([existingAxisId]) => existingAxisId !== axisId)),
}));
},
setAxes(overrides) {
setOverrides((state) => {
const newAxes = { ...state.axes };
for (const [axisId, override] of Object.entries(overrides)) {
newAxes[axisId] = override;
}
return {
...state,
axes: newAxes,
};
});
},
resetAxes(axisIds) {
setOverrides((state) => ({
...state,
axes: Object.fromEntries(Object.entries(state.axes).filter(([axisId]) => !axisIds.includes(axisId))),
}));
},
};
}, []);
return {
overrides,
controls,
};
}
//# sourceMappingURL=usePlotOverrides.js.map