feat: 完成三类字母描红开发
This commit is contained in:
@@ -1,15 +1,19 @@
|
||||
import { ALPHABET_BY_LETTER, LETTERS_UPPER } from '../data/alphabet';
|
||||
|
||||
/** 字母描红的布局模式(与产品文档四类练习一致) */
|
||||
/** 字母描红的布局模式(与产品文档六类练习一致) */
|
||||
export type LetterTracingMode =
|
||||
/** 4 看图描红:教学区 + 6 行描红(前三行大写、后三行小写) */
|
||||
/** 1 看图识字:教学区 + 描红行(前三行大写、后三行小写) */
|
||||
| 'picture-tracing'
|
||||
/** 1 大小写配对:左栏 A–M、右栏 N–Z,每行最多 4 组 Aa */
|
||||
/** 2 字母总览:Uppercase / Lowercase 分区,每区四行 7+7+6+6 */
|
||||
| 'overview'
|
||||
/** 3 大小写配对:左栏 A–M、右栏 N–Z,每行最多 4 组 Aa */
|
||||
| 'case-pairing'
|
||||
/** 2 分栏对照:半组字母,左栏大写、右栏小写,每行 4 个 */
|
||||
/** 4 分栏对照:半组字母,左栏大写、右栏小写,每行 4 个 */
|
||||
| 'column-compare'
|
||||
/** 3 字母总览:Uppercase / Lowercase 分区,每区 9+9+8 */
|
||||
| 'overview';
|
||||
/** 5 三字母精练:每页聚焦 3 个字母,各含大写行 + 小写行 */
|
||||
| 'triple-focus'
|
||||
/** 6 单字母逐行:每行一个字母,13 字母半表(A–M 或 N–Z) */
|
||||
| 'single-line';
|
||||
|
||||
/** 字母大小写模式(部分模式不使用) */
|
||||
export type LetterCaseMode = 'upper' | 'lower' | 'both';
|
||||
@@ -24,8 +28,10 @@ export interface LetterTracingGeneratorConfig {
|
||||
selectedLetter?: string;
|
||||
repetitions: number;
|
||||
fadePattern: 'gradient' | 'first-only';
|
||||
/** 分栏对照:练习 A–M 或 N–Z */
|
||||
/** 分栏对照 / 单字母逐行:练习 A–M 或 N–Z */
|
||||
alphabetHalf?: AlphabetHalf;
|
||||
/** 三字母精练:当前页聚焦的 3 个字母(如 ['A','B','C']) */
|
||||
tripleLetters?: [string, string, string];
|
||||
}
|
||||
|
||||
/** 单个描红格子的数据 */
|
||||
@@ -184,9 +190,14 @@ function chunk<T>(arr: T[], size: number): T[][] {
|
||||
return out;
|
||||
}
|
||||
|
||||
/** 总览区 26 字母拆成 9 + 9 + 8 三行 */
|
||||
/** 总览区 26 字母拆成 7 + 7 + 6 + 6 四行(前两行 7 个、后两行 6 个,与四线三格排版一致) */
|
||||
function overviewRowsFrom(letters: string[]): string[][] {
|
||||
return [letters.slice(0, 9), letters.slice(9, 18), letters.slice(18, 26)];
|
||||
return [
|
||||
letters.slice(0, 7),
|
||||
letters.slice(7, 14),
|
||||
letters.slice(14, 20),
|
||||
letters.slice(20, 26),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -194,7 +205,7 @@ function overviewRowsFrom(letters: string[]): string[][] {
|
||||
* - picture-tracing:教学区 + 6 行描红
|
||||
* - case-pairing:左 A–M / 右 N–Z,每行最多 4 组大小写配对
|
||||
* - column-compare:半表,左大写右小写,每行 4 个
|
||||
* - overview:Uppercase / Lowercase Letters,9+9+8
|
||||
* - overview:Uppercase / Lowercase Letters,每区四行 7+7+6+6
|
||||
*/
|
||||
export function generateLetterTracing(
|
||||
config: LetterTracingGeneratorConfig,
|
||||
@@ -295,5 +306,7 @@ export function mergeLetterTracingConfig(
|
||||
alphabetHalf: (overrides.alphabetHalf ??
|
||||
base.alphabetHalf ??
|
||||
'A-M') as AlphabetHalf,
|
||||
tripleLetters: overrides.tripleLetters ??
|
||||
base.tripleLetters ?? ['A', 'B', 'C'],
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user