Files
frontend-svelte/src/entities/Font/model/store/unifiedFontStore.svelte.ts

26 lines
899 B
TypeScript
Raw Normal View History

2026-01-14 15:14:58 +03:00
import { type Filter } from '$shared/lib';
2026-01-13 20:10:44 +03:00
import { SvelteMap } from 'svelte/reactivity';
import type { FontProvider } from '../types';
import type { CheckboxFilter } from '../types/common';
import type { BaseFontStore } from './baseFontStore.svelte';
import { createFontshareStore } from './fontshareStore.svelte';
import type { ProviderParams } from './types';
export class UnitedFontStore {
private sources: Partial<Record<FontProvider, BaseFontStore<ProviderParams>>>;
filters: SvelteMap<CheckboxFilter, Filter>;
queryValue = $state('');
constructor(initialConfig: Partial<Record<FontProvider, ProviderParams>> = {}) {
this.sources = {
fontshare: createFontshareStore(initialConfig?.fontshare),
};
2026-01-13 20:10:44 +03:00
this.filters = new SvelteMap();
}
2026-01-13 20:10:44 +03:00
get fonts() {
return Object.values(this.sources).map(store => store.fonts).flat();
}
}