Files
doodle-mini/miniprogram/englishPages/letterTracing/letterTracing.config.ts
T
2026-05-29 10:21:39 +08:00

51 lines
1.7 KiB
TypeScript

import type { DebugPublishMeta } from '../../utils/debugPublish';
import { inferGradeFromAge } from '../../utils/debugPublish';
import { LETTER_TRACING_WORKSHEET_DEFINITIONS } from '../../config/worksheets/letterTracing';
export { LETTER_TRACING_WORKSHEET_DEFINITIONS };
type LetterTracingWorksheetRow =
(typeof LETTER_TRACING_WORKSHEET_DEFINITIONS)[number];
const LETTER_TRACING_WORKSHEET_BY_ID = Object.fromEntries(
LETTER_TRACING_WORKSHEET_DEFINITIONS.map((m) => [m.id, m]),
) as Record<string, LetterTracingWorksheetRow>;
/** 页面渲染用:模式选择器列表(与 `LETTER_TRACING_WORKSHEET_DEFINITIONS` 同义) */
export const LETTER_TRACING_MODE_OPTIONS = LETTER_TRACING_WORKSHEET_DEFINITIONS;
/** 页面 pageInfoLookup 用 */
export function getModeInfo(id: string) {
const m = LETTER_TRACING_WORKSHEET_BY_ID[id];
return m ? { title: m.title, desc: m.subtitle } : undefined;
}
/** 判断 id 是否有效 */
export function isValidMode(id: string): boolean {
return id in LETTER_TRACING_WORKSHEET_BY_ID;
}
/** 发布用:从当前 mode 生成 DebugPublishMeta */
export function getPublishMetaByMode(id: string): DebugPublishMeta | null {
const m = LETTER_TRACING_WORKSHEET_BY_ID[id];
if (!m) return null;
return {
id: m.id,
title: m.title,
subtitle: m.subtitle,
category: 'english',
subcategory: 'letter-tracing',
path: `/englishPages/letterTracing/letterTracing?id=${m.id}`,
ageMin: m.ageMin,
ageMax: m.ageMax,
grade: inferGradeFromAge(m.ageMin, m.ageMax),
difficulty: m.difficulty,
previewImg: '',
tags: [...m.tags],
isNew: false,
isHot: false,
sortOrder: m.sortOrder,
status: 'draft',
};
}