doc: comments for codebase and updated documentation
This commit is contained in:
@@ -2,6 +2,13 @@ import { SvelteMap } from 'svelte/reactivity';
|
||||
|
||||
export type FontStatus = 'loading' | 'loaded' | 'error';
|
||||
|
||||
/**
|
||||
* Manager that handles loading of the fonts
|
||||
* Adds <link /> tags to <head />
|
||||
* - Uses batch loading to reduce the number of requests
|
||||
* - Uses a queue to prevent too many requests at once
|
||||
* - Purges unused fonts after a certain time
|
||||
*/
|
||||
class AppliedFontsManager {
|
||||
// Stores: slug -> timestamp of last visibility
|
||||
#usageTracker = new Map<string, number>();
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
import { createEntityStore } from '$shared/lib';
|
||||
import type { UnifiedFont } from '../../types';
|
||||
|
||||
/**
|
||||
* Store that handles collection of selected fonts
|
||||
*/
|
||||
export const selectedFontsStore = createEntityStore<UnifiedFont>([]);
|
||||
|
||||
@@ -1,19 +1,31 @@
|
||||
<!--
|
||||
Component: FontApplicator
|
||||
|
||||
Loads fonts from fontshare with link tag
|
||||
- Loads font only if it's not already applied
|
||||
- Uses IntersectionObserver to detect when font is visible
|
||||
- Adds smooth transition when font is loaded
|
||||
-->
|
||||
<script lang="ts">
|
||||
import {
|
||||
appliedFontsManager,
|
||||
} from '$entities/Font/model/store/appliedFontsStore/appliedFontsStore.svelte';
|
||||
import { cn } from '$shared/shadcn/utils/shadcn-utils';
|
||||
import type { Snippet } from 'svelte';
|
||||
import { appliedFontsManager } from '../../model';
|
||||
|
||||
interface Props {
|
||||
/**
|
||||
* Font name to set
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
* Font id to load
|
||||
*/
|
||||
id: string;
|
||||
/**
|
||||
* Additional classes
|
||||
*/
|
||||
className?: string;
|
||||
/**
|
||||
* Children
|
||||
*/
|
||||
children?: Snippet;
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,9 @@ import {
|
||||
import FontApplicator from '../FontApplicator/FontApplicator.svelte';
|
||||
|
||||
interface Props {
|
||||
/**
|
||||
* Object with information about font
|
||||
*/
|
||||
font: UnifiedFont;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
<!--
|
||||
Component: FontVirtualList
|
||||
- Renders a virtualized list of fonts
|
||||
- Handles font registration with the manager
|
||||
-->
|
||||
<script lang="ts" generics="T extends { id: string }">
|
||||
import { VirtualList } from '$shared/ui';
|
||||
import type { ComponentProps } from 'svelte';
|
||||
import { appliedFontsManager } from '../../model/store/appliedFontsStore/appliedFontsStore.svelte';
|
||||
import { appliedFontsManager } from '../../model';
|
||||
|
||||
interface Props extends Omit<ComponentProps<typeof VirtualList<T>>, 'onVisibleItemsChange'> {
|
||||
onVisibleItemsChange?: (items: T[]) => void;
|
||||
|
||||
Reference in New Issue
Block a user