import type { DebugPublishMeta } from '../../utils/debugPublish'; import { inferGradeFromAge } from '../../utils/debugPublish'; interface HandwritingSheetWorksheetDefinition { id: string; title: string; subtitle: string; ageMin: number; ageMax: number; difficulty: 1 | 2 | 3 | 4; tags: string[]; sortOrder: number; } export const HANDWRITING_SHEET_WORKSHEET_DEFINITIONS = [ { id: 'handwriting-sheet', title: '自定义练字帖', subtitle: '自定义田字格练字帖', ageMin: 4, ageMax: 8, difficulty: 2, tags: ['练字', '字帖', '田字格', '汉字'], sortOrder: 35, }, ] as const satisfies ReadonlyArray; type HandwritingSheetWorksheetRow = (typeof HANDWRITING_SHEET_WORKSHEET_DEFINITIONS)[number]; const HANDWRITING_SHEET_WORKSHEET_BY_ID = Object.fromEntries( HANDWRITING_SHEET_WORKSHEET_DEFINITIONS.map((item) => [item.id, item]), ) as Record; export const HANDWRITING_SHEET_WORKSHEET_ID = HANDWRITING_SHEET_WORKSHEET_DEFINITIONS[0].id; export function getModeInfo(id: string) { const item = HANDWRITING_SHEET_WORKSHEET_BY_ID[id]; return item ? { title: item.title, desc: item.subtitle } : undefined; } export function isValidMode(id: string): boolean { return id in HANDWRITING_SHEET_WORKSHEET_BY_ID; } export function getPublishMetaByMode(id: string): DebugPublishMeta | null { const item = HANDWRITING_SHEET_WORKSHEET_BY_ID[id]; if (!item) return null; return { id: item.id, title: item.title, subtitle: item.subtitle, category: 'chinese', subcategory: 'handwriting-sheet', path: `/chinesePages/handwritingSheet/handwritingSheet?id=${item.id}`, ageMin: item.ageMin, ageMax: item.ageMax, grade: inferGradeFromAge(item.ageMin, item.ageMax), difficulty: item.difficulty, previewImg: '', tags: [...item.tags], isNew: false, isHot: false, sortOrder: item.sortOrder, status: 'draft', }; }