feat/font-store-merge #32

Merged
ilia merged 10 commits from feat/font-store-merge into main 2026-04-10 05:13:40 +00:00
5 changed files with 18 additions and 18 deletions
Showing only changes of commit ed7d31bf5c - Show all commits

View File

@@ -18,7 +18,7 @@ import {
type FontLoadRequestConfig,
type UnifiedFont,
appliedFontsManager,
unifiedFontStore,
fontStore,
} from '../../model';
interface Props extends
@@ -50,7 +50,7 @@ let {
}: Props = $props();
const isLoading = $derived(
unifiedFontStore.isFetching || unifiedFontStore.isLoading,
fontStore.isFetching || fontStore.isLoading,
);
function handleInternalVisibleChange(visibleItems: UnifiedFont[]) {
@@ -82,12 +82,12 @@ function handleInternalVisibleChange(visibleItems: UnifiedFont[]) {
*/
function loadMore() {
if (
!unifiedFontStore.pagination.hasMore
|| unifiedFontStore.isFetching
!fontStore.pagination.hasMore
|| fontStore.isFetching
) {
return;
}
unifiedFontStore.nextPage();
fontStore.nextPage();
}
/**
@@ -97,17 +97,17 @@ function loadMore() {
* of the loaded items. Only fetches if there are more pages available.
*/
function handleNearBottom(_lastVisibleIndex: number) {
const { hasMore } = unifiedFontStore.pagination;
const { hasMore } = fontStore.pagination;
// VirtualList already checks if we're near the bottom of loaded items
if (hasMore && !unifiedFontStore.isFetching) {
if (hasMore && !fontStore.isFetching) {
loadMore();
}
}
</script>
<div class="relative w-full h-full">
{#if skeleton && isLoading && unifiedFontStore.fonts.length === 0}
{#if skeleton && isLoading && fontStore.fonts.length === 0}
<!-- Show skeleton only on initial load when no fonts are loaded yet -->
<div transition:fade={{ duration: 300 }}>
{@render skeleton()}
@@ -115,8 +115,8 @@ function handleNearBottom(_lastVisibleIndex: number) {
{:else}
<!-- VirtualList persists during pagination - no destruction/recreation -->
<VirtualList
items={unifiedFontStore.fonts}
total={unifiedFontStore.pagination.total}
items={fontStore.fonts}
total={fontStore.pagination.total}
isLoading={isLoading}
onVisibleItemsChange={handleInternalVisibleChange}
onNearBottom={handleNearBottom}

View File

@@ -4,7 +4,7 @@
Sits below the filter list, separated by a top border.
-->
<script lang="ts">
import { unifiedFontStore } from '$entities/Font';
import { fontStore } from '$entities/Font';
import type { ResponsiveManager } from '$shared/lib';
import { cn } from '$shared/shadcn/utils/shadcn-utils';
import { Button } from '$shared/ui';
@@ -33,7 +33,7 @@ const {
$effect(() => {
const apiSort = sortStore.apiValue;
untrack(() => unifiedFontStore.setSort(apiSort));
untrack(() => fontStore.setSort(apiSort));
});
const responsive = getContext<ResponsiveManager>('responsive');

View File

@@ -16,7 +16,7 @@
import {
type UnifiedFont,
fetchFontsByIds,
unifiedFontStore,
fontStore,
} from '$entities/Font';
import {
DEFAULT_TYPOGRAPHY_CONTROLS_DATA,
@@ -85,7 +85,7 @@ export class ComparisonStore {
}
// Check if fonts are available to set as defaults
const fonts = unifiedFontStore.fonts;
const fonts = fontStore.fonts;
if (fonts.length >= 2) {
// Only set if we really have nothing (fallback)
if (!this.#fontA) this.#fontA = fonts[0];

View File

@@ -3,7 +3,7 @@
Provides a search input and filtration for fonts
-->
<script lang="ts">
import { unifiedFontStore } from '$entities/Font';
import { fontStore } from '$entities/Font';
import {
FilterControls,
Filters,
@@ -36,7 +36,7 @@ let { showFilters = $bindable(true) }: Props = $props();
$effect(() => {
const params = mapManagerToParams(filterManager);
untrack(() => unifiedFontStore.setParams(params));
untrack(() => fontStore.setParams(params));
});
const transform = new Tween(

View File

@@ -4,7 +4,7 @@
-->
<script lang="ts">
import { NavigationWrapper } from '$entities/Breadcrumb';
import { unifiedFontStore } from '$entities/Font';
import { fontStore } from '$entities/Font';
import type { ResponsiveManager } from '$shared/lib';
import { cn } from '$shared/shadcn/utils/shadcn-utils';
import {
@@ -36,7 +36,7 @@ const responsive = getContext<ResponsiveManager>('responsive');
id="sample_set"
title="Sample Set"
headerTitle="visual_output"
headerSubtitle="items_total: {unifiedFontStore.pagination.total ?? 0}"
headerSubtitle="items_total: {fontStore.pagination.total ?? 0}"
headerAction={registerAction}
>
{#snippet headerContent()}