feat: add device store

- Selected device state
- Custom device management
- Device selection by ID

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-05-13 18:11:56 -04:00
parent a1d1f070cf
commit 7bd0c4c793

View File

@@ -0,0 +1,57 @@
import { PRESET_DEVICES, DEFAULT_DEVICE } from '$lib/data/devices';
import type { Device, CustomDeviceFormData } from '$lib/types';
function createDeviceStore() {
let selected = $state<Device>(DEFAULT_DEVICE);
let customDevices = $state<Device[]>([]);
const allDevices = $derived<Device[]>([...PRESET_DEVICES, ...customDevices]);
function selectDevice(id: string): void {
const device = allDevices.find((d) => d.id === id);
if (device) {
selected = device;
}
}
function addCustomDevice(formData: CustomDeviceFormData): Device {
const device: Device = {
id: `custom_${formData.width}x${formData.height}`,
name: formData.name,
brand: 'Custom',
width: formData.width,
height: formData.height,
greyLevels: formData.greyLevels,
outputFormat: formData.outputFormat
};
customDevices = [...customDevices, device];
selected = device;
return device;
}
function removeCustomDevice(id: string): void {
customDevices = customDevices.filter((d) => d.id !== id);
if (selected.id === id) {
selected = DEFAULT_DEVICE;
}
}
return {
get selected() {
return selected;
},
get customDevices() {
return customDevices;
},
get allDevices() {
return allDevices;
},
selectDevice,
addCustomDevice,
removeCustomDevice
};
}
export const deviceStore = createDeviceStore();