2026-06-02 23:02:30 +03:00
|
|
|
export {
|
|
|
|
|
computeLineRenderModel,
|
|
|
|
|
DualFontLayout,
|
|
|
|
|
findSplitIndex,
|
|
|
|
|
} from './domain';
|
|
|
|
|
export type {
|
|
|
|
|
ComparisonLine,
|
|
|
|
|
ComparisonResult,
|
|
|
|
|
LineRenderModel,
|
|
|
|
|
} from './domain';
|
2026-05-31 14:08:25 +03:00
|
|
|
|
2026-06-02 23:02:30 +03:00
|
|
|
export {
|
|
|
|
|
createFontRowSizeResolver,
|
|
|
|
|
FontNetworkError,
|
|
|
|
|
FontResponseError,
|
|
|
|
|
getFontUrl,
|
|
|
|
|
} from './lib';
|
|
|
|
|
export type { FontRowSizeResolverOptions } from './lib';
|
|
|
|
|
|
|
|
|
|
export {
|
|
|
|
|
FontApplicator,
|
2026-06-03 08:34:49 +03:00
|
|
|
FontSampler,
|
2026-06-02 23:02:30 +03:00
|
|
|
FontVirtualList,
|
|
|
|
|
} from './ui';
|
|
|
|
|
|
|
|
|
|
// Pure model surface (types + constants).
|
|
|
|
|
export {
|
|
|
|
|
DEFAULT_FONT_SIZE,
|
|
|
|
|
DEFAULT_FONT_WEIGHT,
|
|
|
|
|
DEFAULT_LETTER_SPACING,
|
|
|
|
|
DEFAULT_LINE_HEIGHT,
|
|
|
|
|
FONT_SIZE_STEP,
|
|
|
|
|
FONT_WEIGHT_STEP,
|
|
|
|
|
LETTER_SPACING_STEP,
|
|
|
|
|
LINE_HEIGHT_STEP,
|
|
|
|
|
MAX_FONT_SIZE,
|
|
|
|
|
MAX_FONT_WEIGHT,
|
|
|
|
|
MAX_LETTER_SPACING,
|
|
|
|
|
MAX_LINE_HEIGHT,
|
|
|
|
|
MIN_FONT_SIZE,
|
|
|
|
|
MIN_FONT_WEIGHT,
|
|
|
|
|
MIN_LETTER_SPACING,
|
|
|
|
|
MIN_LINE_HEIGHT,
|
|
|
|
|
VIRTUAL_INDEX_NOT_LOADED,
|
|
|
|
|
} from './model/const/const';
|
|
|
|
|
export type {
|
|
|
|
|
FilterGroup,
|
|
|
|
|
FilterType,
|
|
|
|
|
FontCategory,
|
|
|
|
|
FontCollectionFilters,
|
|
|
|
|
FontCollectionSort,
|
|
|
|
|
FontCollectionState,
|
|
|
|
|
FontFeatures,
|
|
|
|
|
FontFilters,
|
|
|
|
|
FontLoadRequestConfig,
|
|
|
|
|
FontLoadStatus,
|
|
|
|
|
FontMetadata,
|
|
|
|
|
FontProvider,
|
|
|
|
|
FontStyleUrls,
|
|
|
|
|
FontSubset,
|
|
|
|
|
FontVariant,
|
|
|
|
|
FontWeight,
|
|
|
|
|
FontWeightItalic,
|
|
|
|
|
UnifiedFont,
|
|
|
|
|
UnifiedFontVariant,
|
|
|
|
|
} from './model/types';
|
2026-05-31 20:06:33 +03:00
|
|
|
|
2026-06-01 11:49:53 +03:00
|
|
|
/*
|
2026-06-02 23:02:30 +03:00
|
|
|
* Stores are exposed as lazy accessors / classes (not eager singletons): the
|
|
|
|
|
* entity's public API is complete, so consumers go through this barrel instead
|
|
|
|
|
* of deep-importing `./model` (FSD public-API boundary). Construction happens on
|
|
|
|
|
* first call, so this is inert at import. The slice root already transitively
|
|
|
|
|
* loads `@tanstack/query-core` via `./ui` (FontVirtualList), so surfacing the
|
|
|
|
|
* stores here adds no new eager cost.
|
2026-06-01 11:49:53 +03:00
|
|
|
*/
|
2026-06-02 23:02:30 +03:00
|
|
|
export {
|
|
|
|
|
FontLifecycleManager,
|
|
|
|
|
FontsByIdsStore,
|
|
|
|
|
getFontCatalog,
|
|
|
|
|
getFontLifecycleManager,
|
|
|
|
|
} from './model';
|
|
|
|
|
export type { FontCatalogStore } from './model';
|
2026-06-01 11:49:53 +03:00
|
|
|
|
2026-05-31 20:06:33 +03:00
|
|
|
/*
|
2026-06-02 23:02:30 +03:00
|
|
|
* `./api` (proxy clients: `fetchProxyFonts`, `seedFontCache`, …) is intentionally
|
|
|
|
|
* NOT re-exported here — those are not part of the entity's consumed surface and
|
|
|
|
|
* importing them eagerly constructs the TanStack `queryClient`. Import via the
|
|
|
|
|
* segment: `import { fetchProxyFonts } from '$entities/Font/api'`.
|
2026-05-31 20:06:33 +03:00
|
|
|
*/
|
|
|
|
|
|
2026-05-31 14:08:25 +03:00
|
|
|
// `./testing` is intentionally not re-exported: fixtures must not leak into the
|
|
|
|
|
// production public API. Import them via `$entities/Font/testing`.
|