feat: add e-reader device presets
- Kindle: Paperwhite 5, Paperwhite 4, Oasis 3, Scribe, Basic - Kobo: Clara 2E, Libra 2, Sage - reMarkable 2, Boox Note Air - Helper to group devices by brand Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
111
src/lib/data/devices.ts
Normal file
111
src/lib/data/devices.ts
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
import type { Device } from '$lib/types';
|
||||||
|
|
||||||
|
export const PRESET_DEVICES: readonly Device[] = [
|
||||||
|
// Kindle
|
||||||
|
{
|
||||||
|
id: 'kindle_pw5',
|
||||||
|
brand: 'Kindle',
|
||||||
|
name: 'Paperwhite 5 (11th gen)',
|
||||||
|
width: 1236,
|
||||||
|
height: 1648,
|
||||||
|
greyLevels: 16,
|
||||||
|
outputFormat: 'png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'kindle_pw4',
|
||||||
|
brand: 'Kindle',
|
||||||
|
name: 'Paperwhite 4 (10th gen)',
|
||||||
|
width: 1072,
|
||||||
|
height: 1448,
|
||||||
|
greyLevels: 16,
|
||||||
|
outputFormat: 'png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'kindle_oasis3',
|
||||||
|
brand: 'Kindle',
|
||||||
|
name: 'Oasis 3',
|
||||||
|
width: 1264,
|
||||||
|
height: 1680,
|
||||||
|
greyLevels: 16,
|
||||||
|
outputFormat: 'png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'kindle_scribe',
|
||||||
|
brand: 'Kindle',
|
||||||
|
name: 'Scribe',
|
||||||
|
width: 1860,
|
||||||
|
height: 2480,
|
||||||
|
greyLevels: 16,
|
||||||
|
outputFormat: 'png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'kindle_basic_2022',
|
||||||
|
brand: 'Kindle',
|
||||||
|
name: 'Basic (2022)',
|
||||||
|
width: 1072,
|
||||||
|
height: 1448,
|
||||||
|
greyLevels: 16,
|
||||||
|
outputFormat: 'png'
|
||||||
|
},
|
||||||
|
// Kobo
|
||||||
|
{
|
||||||
|
id: 'kobo_clara_2e',
|
||||||
|
brand: 'Kobo',
|
||||||
|
name: 'Clara 2E',
|
||||||
|
width: 1072,
|
||||||
|
height: 1448,
|
||||||
|
greyLevels: 16,
|
||||||
|
outputFormat: 'png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'kobo_libra_2',
|
||||||
|
brand: 'Kobo',
|
||||||
|
name: 'Libra 2',
|
||||||
|
width: 1264,
|
||||||
|
height: 1680,
|
||||||
|
greyLevels: 16,
|
||||||
|
outputFormat: 'png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'kobo_sage',
|
||||||
|
brand: 'Kobo',
|
||||||
|
name: 'Sage',
|
||||||
|
width: 1440,
|
||||||
|
height: 1920,
|
||||||
|
greyLevels: 16,
|
||||||
|
outputFormat: 'png'
|
||||||
|
},
|
||||||
|
// Other
|
||||||
|
{
|
||||||
|
id: 'remarkable_2',
|
||||||
|
brand: 'reMarkable',
|
||||||
|
name: 'reMarkable 2',
|
||||||
|
width: 1404,
|
||||||
|
height: 1872,
|
||||||
|
greyLevels: 16,
|
||||||
|
outputFormat: 'png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'boox_note_air',
|
||||||
|
brand: 'Boox',
|
||||||
|
name: 'Note Air',
|
||||||
|
width: 1404,
|
||||||
|
height: 1872,
|
||||||
|
greyLevels: 16,
|
||||||
|
outputFormat: 'png'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
export const DEFAULT_DEVICE = PRESET_DEVICES[0];
|
||||||
|
|
||||||
|
export function groupDevicesByBrand(devices: readonly Device[]): Map<string, Device[]> {
|
||||||
|
const grouped = new Map<string, Device[]>();
|
||||||
|
|
||||||
|
for (const device of devices) {
|
||||||
|
const existing = grouped.get(device.brand) ?? [];
|
||||||
|
existing.push(device);
|
||||||
|
grouped.set(device.brand, existing);
|
||||||
|
}
|
||||||
|
|
||||||
|
return grouped;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user