Files
tolaria/src/utils/noteWidth.ts
2026-04-29 19:26:24 +02:00

27 lines
1009 B
TypeScript

import type { NoteWidthMode } from '../types'
import { detectFrontmatterState } from './frontmatter'
export const DEFAULT_NOTE_WIDTH_MODE: NoteWidthMode = 'normal'
export function normalizeNoteWidthMode(value: unknown): NoteWidthMode | null {
if (typeof value !== 'string') return null
const normalized = value.trim().toLowerCase()
return normalized === 'normal' || normalized === 'wide' ? normalized : null
}
export function resolveNoteWidthMode(noteWidth: unknown, defaultWidth: unknown): NoteWidthMode {
return normalizeNoteWidthMode(noteWidth)
?? normalizeNoteWidthMode(defaultWidth)
?? DEFAULT_NOTE_WIDTH_MODE
}
export function toggleNoteWidthMode(width: unknown): NoteWidthMode {
return resolveNoteWidthMode(width, DEFAULT_NOTE_WIDTH_MODE) === 'wide' ? 'normal' : 'wide'
}
export function canPersistNoteWidthMode(content: string | null): boolean {
const frontmatterState = detectFrontmatterState(content)
return frontmatterState === 'valid' || frontmatterState === 'empty'
}