2026-01-11 14:49:21 +03:00
|
|
|
import {
|
2026-01-13 20:10:44 +03:00
|
|
|
type Filter,
|
|
|
|
|
type FilterModel,
|
|
|
|
|
createFilter,
|
|
|
|
|
} from '$shared/lib';
|
|
|
|
|
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-11 14:49:21 +03:00
|
|
|
};
|
2026-01-13 20:10:44 +03:00
|
|
|
this.filters = new SvelteMap();
|
2026-01-11 14:49:21 +03:00
|
|
|
}
|
|
|
|
|
|
2026-01-13 20:10:44 +03:00
|
|
|
get fonts() {
|
|
|
|
|
return Object.values(this.sources).map(store => store.fonts).flat();
|
2026-01-11 14:49:21 +03:00
|
|
|
}
|
|
|
|
|
}
|