import * as Slider from "@radix-ui/react-slider"; import { Input } from "components/Input"; import { Radio } from "components/Checkbox"; import { useEntity, useReplicache } from "src/replicache"; import { pickers } from "../ThemeSetter"; import { useState, useEffect } from "react"; export const PageWidthSetter = (props: { entityID: string; openPicker: pickers; thisPicker: pickers; setOpenPicker: (thisPicker: pickers) => void; closePicker: () => void; }) => { let { rep } = useReplicache(); let defaultPreset = 624; let widePreset = 768; let pageWidth = useEntity(props.entityID, "theme/page-width")?.data.value; let currentValue = pageWidth || defaultPreset; let [interimValue, setInterimValue] = useState(currentValue); let [selectedPreset, setSelectedPreset] = useState< "default" | "wide" | "custom" >( currentValue === defaultPreset ? "default" : currentValue === widePreset ? "wide" : "custom", ); let min = 320; let max = 1200; let open = props.openPicker == props.thisPicker; // Update interim value when current value changes useEffect(() => { setInterimValue(currentValue); }, [currentValue]); const setPageWidth = (value: number) => { rep?.mutate.assertFact({ entity: props.entityID, attribute: "theme/page-width", data: { type: "number", value: value, }, }); }; return (
{open && (
)}
); };