From 597ff7ec90e53a424beaeb629117f7c3270eae5a Mon Sep 17 00:00:00 2001 From: Ilia Mashkov Date: Sat, 7 Feb 2026 11:26:18 +0300 Subject: [PATCH] feat(createTypographyControl): add generic for identficator --- src/features/SetupFont/model/state/manager.svelte.ts | 4 +++- .../createTypographyControl.svelte.ts | 12 ++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/features/SetupFont/model/state/manager.svelte.ts b/src/features/SetupFont/model/state/manager.svelte.ts index 7b05a49..c18c61e 100644 --- a/src/features/SetupFont/model/state/manager.svelte.ts +++ b/src/features/SetupFont/model/state/manager.svelte.ts @@ -19,7 +19,9 @@ import { MIN_LINE_HEIGHT, } from '../const/const'; -const controlData: ControlModel[] = [ +export type ControlId = 'font_size' | 'font_weight' | 'line_height' | 'letter_spacing'; + +const controlData: ControlModel[] = [ { id: 'font_size', value: DEFAULT_FONT_SIZE, diff --git a/src/shared/lib/helpers/createTypographyControl/createTypographyControl.svelte.ts b/src/shared/lib/helpers/createTypographyControl/createTypographyControl.svelte.ts index bec0f1d..7b1a390 100644 --- a/src/shared/lib/helpers/createTypographyControl/createTypographyControl.svelte.ts +++ b/src/shared/lib/helpers/createTypographyControl/createTypographyControl.svelte.ts @@ -22,11 +22,11 @@ export interface ControlDataModel { step: number; } -export interface ControlModel extends ControlDataModel { +export interface ControlModel extends ControlDataModel { /** * Control identifier */ - id: string; + id: T; /** * Area label for increase button */ @@ -59,10 +59,10 @@ export function createTypographyControl( return value; }, set value(newValue) { - value = roundToStepPrecision( - clampNumber(newValue, min, max), - step, - ); + const rounded = roundToStepPrecision(clampNumber(newValue, min, max), step); + if (value !== rounded) { + value = rounded; + } }, get max() { return max;