blob: 3a2189d002ba86a3f06dadbc24ec7cb34030020d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import { ScrapbookItemConfig } from './ScrapbookPreset';
import { ScrapbookPresetType } from './ScrapbookPreset';
type PresetGenerator = () => ScrapbookItemConfig[];
// Internal map of preset name to generator
const presetRegistry = new Map<string, PresetGenerator>();
/**
* Register a new scrapbook preset under the given name.
*/
export function registerPreset(name: string, gen: PresetGenerator) {
presetRegistry.set(name, gen);
}
/**
* List all registered preset names.
*/
export function getPresetNames(): string[] {
return Array.from(presetRegistry.keys());
}
/**
* Create the config array for the named preset.
*/
export function createPreset(name: string): ScrapbookItemConfig[] {
const gen = presetRegistry.get(name);
if (!gen) throw new Error(`Unknown scrapbook preset: ${name}`);
return gen();
}
// ------------------------
// Register built-in presets
import { ScrapbookPreset } from './ScrapbookPreset';
Object.keys(ScrapbookPresetType).forEach(key => registerPreset(key, () => ScrapbookPreset.createPreset(key as ScrapbookPresetType))); // pretter-ignore
|