feat: 更新 ESLint 和 Prettier 配置,增强代码质量管理

- 在 .gitignore 中添加 public/audio/* 以忽略音频文件。
- 更新 bun.lock,添加 eslint-config-prettier 和 eslint-plugin-prettier 依赖,确保 ESLint 与 Prettier 的兼容性。
- 修改 eslint.config.ts,整合 Prettier 规则,优化代码风格一致性。
- 在 package.json 中添加 lint:fix 和 format 脚本,简化代码格式化和修复流程。
- 更新 tailwind.config.ts 和其他组件文件,统一代码风格,提升可读性。
This commit is contained in:
zhongyidian committed 2026-03-05 13:50:47 +08:00
1 parent 5d00adc1a5
commit 76c67b492e
216 files changed
+12454 -13976

No files matched your search

+203 -209
View File
@@ -5,384 +5,381 @@
export interface PuzzlePieceData {
/** 碎片标题 */
title: string;
title: string
/** 对应的场景图片路径(相对于 puzzle/ 目录) */
detailImage: string;
detailImage: string
// 对应的场景路由
route: string;
route: string
}
/**
* 每个故居的拼图碎片数据配置(每个故居碎片都是16块)
* 格式:{ residence: { pieceId: PuzzlePieceData } }
*/
export const puzzleDataConfig: Record<
string,
Record<number, PuzzlePieceData>
> = {
export const puzzleDataConfig: Record<string, Record<number, PuzzlePieceData>> = {
chenyun: {
// 碎片1 - 示例数据,请根据实际情况修改
1: {
title: "水乡少年·艰率成长",
detailImage: "chenyun/details/1",
route: "place1",
title: '水乡少年·艰率成长',
detailImage: 'chenyun/details/1',
route: 'place1',
},
// 碎片2
2: {
title: "陈云就读 青浦县立乙种商业学校",
detailImage: "chenyun/details/2",
route: "place2",
title: '陈云就读 青浦县立乙种商业学校',
detailImage: 'chenyun/details/2',
route: 'place2',
},
// 碎片3
3: {
title: "陈云就读颜安小学",
detailImage: "chenyun/details/3",
route: "place2",
title: '陈云就读颜安小学',
detailImage: 'chenyun/details/3',
route: 'place2',
},
// 碎片4
4: {
title: "陈云在 上海商务印书馆当学徒",
detailImage: "chenyun/details/4",
route: "place3",
title: '陈云在 上海商务印书馆当学徒',
detailImage: 'chenyun/details/4',
route: 'place3',
},
// 碎片5
5: {
title: "陈云加入中国共产党",
detailImage: "chenyun/details/5",
route: "place3",
title: '陈云加入中国共产党',
detailImage: 'chenyun/details/5',
route: 'place3',
},
// 碎片6
6: {
title: "陈云被选为 中央政治局委员、常委",
detailImage: "chenyun/details/6",
route: "place4",
title: '陈云被选为 中央政治局委员、常委',
detailImage: 'chenyun/details/6',
route: 'place4',
},
// 碎片7
7: {
title: "陈云任 西北财经办事处副主任",
detailImage: "chenyun/details/7",
route: "place5",
title: '陈云任 西北财经办事处副主任',
detailImage: 'chenyun/details/7',
route: 'place5',
},
// 碎片8
8: {
title: "陈云主持 陕甘宁边区财政工作",
detailImage: "chenyun/details/8",
route: "place5",
title: '陈云主持 陕甘宁边区财政工作',
detailImage: 'chenyun/details/8',
route: 'place5',
},
// 碎片9
9: {
title: "恢复时期·经济奠基",
detailImage: "chenyun/details/9",
route: "place6",
title: '恢复时期·经济奠基',
detailImage: 'chenyun/details/9',
route: 'place6',
},
// 碎片10
10: {
title: "银元之战",
detailImage: "chenyun/details/10",
route: "place7",
title: '银元之战',
detailImage: 'chenyun/details/10',
route: 'place7',
},
// 碎片11
11: {
title: '陈云起草的关于发展国民 经济"一五"计划报告的手稿',
detailImage: "chenyun/details/11",
route: "place8",
detailImage: 'chenyun/details/11',
route: 'place8',
},
// 碎片12
12: {
title: "陈云赴宝钢考察",
detailImage: "chenyun/details/12",
route: "place9",
title: '陈云赴宝钢考察',
detailImage: 'chenyun/details/12',
route: 'place9',
},
// 碎片13
13: {
title: "体悟·银元之战",
detailImage: "chenyun/details/13",
route: "reflection",
title: '体悟·银元之战',
detailImage: 'chenyun/details/13',
route: 'reflection',
},
// 碎片14
14: {
title: "体悟·米棉之战",
detailImage: "chenyun/details/14",
route: "reflection",
title: '体悟·米棉之战',
detailImage: 'chenyun/details/14',
route: 'reflection',
},
// 碎片15
15: {
title: "陈云经济思想的核心内容",
detailImage: "chenyun/details/15",
route: "internalization",
title: '陈云经济思想的核心内容',
detailImage: 'chenyun/details/15',
route: 'internalization',
},
// 碎片16
16: {
title: "陈云精神",
detailImage: "chenyun/details/16",
route: "internalization",
title: '陈云精神',
detailImage: 'chenyun/details/16',
route: 'internalization',
},
},
huangyanpei: {
// 碎片1
1: {
title: "杰出的爱国民主人士黄炎培",
detailImage: "huangyanpei/details/1",
route: "place1",
title: '杰出的爱国民主人士黄炎培',
detailImage: 'huangyanpei/details/1',
route: 'place1',
},
// 碎片2
2: {
title: "南洋公学",
detailImage: "huangyanpei/details/2",
route: "place2",
title: '南洋公学',
detailImage: 'huangyanpei/details/2',
route: 'place2',
},
// 碎片3
3: {
title: "川沙小学堂",
detailImage: "huangyanpei/details/3",
route: "place3",
title: '川沙小学堂',
detailImage: 'huangyanpei/details/3',
route: 'place3',
},
// 碎片4
4: {
title: "开群女学课堂",
detailImage: "huangyanpei/details/4",
route: "place3",
title: '开群女学课堂',
detailImage: 'huangyanpei/details/4',
route: 'place3',
},
// 碎片5
5: {
title: "杨斯盛创建浦东中学",
detailImage: "huangyanpei/details/5",
route: "place3",
title: '杨斯盛创建浦东中学',
detailImage: 'huangyanpei/details/5',
route: 'place3',
},
// 碎片6
6: {
title: "中华职业教育 和中华职业学校",
detailImage: "huangyanpei/details/6",
route: "place4",
title: '中华职业教育 和中华职业学校',
detailImage: 'huangyanpei/details/6',
route: 'place4',
},
// 碎片7
7: {
title: "中华职业教育社会址",
detailImage: "huangyanpei/details/7",
route: "place4",
title: '中华职业教育社会址',
detailImage: 'huangyanpei/details/7',
route: 'place4',
},
// 碎片8
8: {
title: "抗敌后援会成立大会",
detailImage: "huangyanpei/details/8",
route: "place4",
title: '抗敌后援会成立大会',
detailImage: 'huangyanpei/details/8',
route: 'place4',
},
// 碎片9
9: {
title: "中华职校组织义勇军",
detailImage: "huangyanpei/details/9",
route: "place4",
title: '中华职校组织义勇军',
detailImage: 'huangyanpei/details/9',
route: 'place4',
},
// 碎片10
10: {
title: "黄炎培与荣氏兄弟 合作工人教育",
detailImage: "huangyanpei/details/10",
route: "place4",
title: '黄炎培与荣氏兄弟 合作工人教育',
detailImage: 'huangyanpei/details/10',
route: 'place4',
},
// 碎片11
11: {
title: "黄炎培创建民盟",
detailImage: "huangyanpei/details/11",
route: "place5",
title: '黄炎培创建民盟',
detailImage: 'huangyanpei/details/11',
route: 'place5',
},
// 碎片12
12: {
title: "窑洞对话",
detailImage: "huangyanpei/details/12",
route: "place5",
title: '窑洞对话',
detailImage: 'huangyanpei/details/12',
route: 'place5',
},
// 碎片13
13: {
title: "黄炎培参加第一届全国人大",
detailImage: "huangyanpei/details/13",
route: "place6",
title: '黄炎培参加第一届全国人大',
detailImage: 'huangyanpei/details/13',
route: 'place6',
},
// 碎片14
14: {
title: "黄炎培对浦东中学新生的教导",
detailImage: "huangyanpei/details/14",
route: "reflection2",
title: '黄炎培对浦东中学新生的教导',
detailImage: 'huangyanpei/details/14',
route: 'reflection2',
},
// 碎片15
15: {
title: "中华职业学校的立业之本",
detailImage: "huangyanpei/details/15",
route: "reflection4",
title: '中华职业学校的立业之本',
detailImage: 'huangyanpei/details/15',
route: 'reflection4',
},
// 碎片16
16: {
title: "黄炎培的”实业救国“情怀”",
detailImage: "huangyanpei/details/16",
route: "internalization",
title: '黄炎培的”实业救国“情怀”',
detailImage: 'huangyanpei/details/16',
route: 'internalization',
},
},
sunzhongshan: {
1: {
title: "革命四杰",
detailImage: "sunzhongshan/details/1",
route: "place1",
title: '革命四杰',
detailImage: 'sunzhongshan/details/1',
route: 'place1',
},
2: {
title: "郑观应的推荐信郑观应的推荐信",
detailImage: "sunzhongshan/details/2",
route: "place1",
title: '郑观应的推荐信郑观应的推荐信',
detailImage: 'sunzhongshan/details/2',
route: 'place1',
},
3: {
title: "《申报》刊登孙中山就职 临时大总统消息",
detailImage: "sunzhongshan/details/3",
route: "place1",
title: '《申报》刊登孙中山就职 临时大总统消息',
detailImage: 'sunzhongshan/details/3',
route: 'place1',
},
4: {
title: "《民立报》报道孙中山解职",
detailImage: "sunzhongshan/details/4",
route: "place1",
title: '《民立报》报道孙中山解职',
detailImage: 'sunzhongshan/details/4',
route: 'place1',
},
5: {
title: "中国铁路计划图",
detailImage: "sunzhongshan/details/5",
route: "place2",
title: '中国铁路计划图',
detailImage: 'sunzhongshan/details/5',
route: 'place2',
},
6: {
title: "实业计划",
detailImage: "sunzhongshan/details/6",
route: "place2",
title: '实业计划',
detailImage: 'sunzhongshan/details/6',
route: 'place2',
},
7: {
title: "护法运动",
detailImage: "sunzhongshan/details/7",
route: "place2",
title: '护法运动',
detailImage: 'sunzhongshan/details/7',
route: 'place2',
},
8: {
title: "社会主义的精义",
detailImage: "sunzhongshan/details/8",
route: "place3",
title: '社会主义的精义',
detailImage: 'sunzhongshan/details/8',
route: 'place3',
},
9: {
title: "李大钊给胡适的信",
detailImage: "sunzhongshan/details/9",
route: "place3",
title: '李大钊给胡适的信',
detailImage: 'sunzhongshan/details/9',
route: 'place3',
},
10: {
title: "《中国国民党第一次全国代表大会宣言》",
detailImage: "sunzhongshan/details/10",
route: "place3",
title: '《中国国民党第一次全国代表大会宣言》',
detailImage: 'sunzhongshan/details/10',
route: 'place3',
},
11: {
title: "国事遗嘱",
detailImage: "sunzhongshan/details/11",
route: "place4",
title: '国事遗嘱',
detailImage: 'sunzhongshan/details/11',
route: 'place4',
},
12: {
title: "第二次护法运动推理小游戏",
detailImage: "sunzhongshan/details/12",
route: "reflection1",
title: '第二次护法运动推理小游戏',
detailImage: 'sunzhongshan/details/12',
route: 'reflection1',
},
13: {
title: "国共合作推理小游戏",
detailImage: "sunzhongshan/details/13",
route: "reflection2",
title: '国共合作推理小游戏',
detailImage: 'sunzhongshan/details/13',
route: 'reflection2',
},
14: {
title: "抱病北上推理小游戏",
detailImage: "sunzhongshan/details/14",
route: "reflection3",
title: '抱病北上推理小游戏',
detailImage: 'sunzhongshan/details/14',
route: 'reflection3',
},
15: {
title: "振兴中华对新时代青年的意义",
detailImage: "sunzhongshan/details/15",
route: "internalization",
title: '振兴中华对新时代青年的意义',
detailImage: 'sunzhongshan/details/15',
route: 'internalization',
},
16: {
title: "学习孙中山的精神",
detailImage: "sunzhongshan/details/16",
route: "internalization",
}
title: '学习孙中山的精神',
detailImage: 'sunzhongshan/details/16',
route: 'internalization',
},
},
luxun: {
1: {
title: "鲁迅1927年南下广州时的照片",
detailImage: "luxun/details/1",
route: "place1",
title: '鲁迅1927年南下广州时的照片',
detailImage: 'luxun/details/1',
route: 'place1',
},
2: {
title: "景云里旧居场景图",
detailImage: "luxun/details/2",
route: "place1",
title: '景云里旧居场景图',
detailImage: 'luxun/details/2',
route: 'place1',
},
3: {
title: "《且介亭杂文》",
detailImage: "luxun/details/3",
route: "place2",
title: '《且介亭杂文》',
detailImage: 'luxun/details/3',
route: 'place2',
},
4: {
title: "《中国人失掉自信力了吗》",
detailImage: "luxun/details/4",
route: "place2",
title: '《中国人失掉自信力了吗》',
detailImage: 'luxun/details/4',
route: 'place2',
},
5: {
title: "《南腔北调集》",
detailImage: "luxun/details/5",
route: "place2",
title: '《南腔北调集》',
detailImage: 'luxun/details/5',
route: 'place2',
},
6: {
title: "《故事新编》",
detailImage: "luxun/details/6",
route: "place3",
title: '《故事新编》',
detailImage: 'luxun/details/6',
route: 'place3',
},
7: {
title: "《理水》手迹",
detailImage: "luxun/details/7",
route: "place3",
title: '《理水》手迹',
detailImage: 'luxun/details/7',
route: 'place3',
},
8: {
title: "书架上的翻译著作",
detailImage: "luxun/details/8",
route: "place3",
title: '书架上的翻译著作',
detailImage: 'luxun/details/8',
route: 'place3',
},
9: {
title: "《海上述林》书册",
detailImage: "luxun/details/9",
route: "place3",
title: '《海上述林》书册',
detailImage: 'luxun/details/9',
route: 'place3',
},
10: {
title: "书册上的校订批注",
detailImage: "luxun/details/10",
route: "place3",
title: '书册上的校订批注',
detailImage: 'luxun/details/10',
route: 'place3',
},
11: {
title: "瞿秋白对鲁迅的评价",
detailImage: "luxun/details/11",
route: "place4",
title: '瞿秋白对鲁迅的评价',
detailImage: 'luxun/details/11',
route: 'place4',
},
12: {
title: "鲁迅赠瞿秋白的对联",
detailImage: "luxun/details/12",
route: "place4",
title: '鲁迅赠瞿秋白的对联',
detailImage: 'luxun/details/12',
route: 'place4',
},
13: {
title: "冯雪峰与鲁迅谈话的资料图",
detailImage: "luxun/details/13",
route: "place4",
title: '冯雪峰与鲁迅谈话的资料图',
detailImage: 'luxun/details/13',
route: 'place4',
},
14: {
title: "鲁迅创作历程",
detailImage: "luxun/details/14",
route: "reflection1",
title: '鲁迅创作历程',
detailImage: 'luxun/details/14',
route: 'reflection1',
},
15: {
title: "鲁迅精神的总结",
detailImage: "luxun/details/15",
route: "reflection3",
title: '鲁迅精神的总结',
detailImage: 'luxun/details/15',
route: 'reflection3',
},
16: {
title: "鲁迅在木刻上对青年的培养",
detailImage: "luxun/details/16",
route: "internalization",
}
title: '鲁迅在木刻上对青年的培养',
detailImage: 'luxun/details/16',
route: 'internalization',
},
},
// 后续可以添加其他故居的数据
// sunzhongshan: { ... },
};
}
/**
* 获取碎片的数据配置
@@ -390,11 +387,8 @@ export const puzzleDataConfig: Record<
* @param pieceId 碎片ID
* @returns 碎片数据,如果不存在则返回默认值
*/
export const getPuzzlePieceData = (
residence: string,
pieceId: number
): PuzzlePieceData | null => {
const residenceConfig = puzzleDataConfig[residence];
const pieceData = residenceConfig?.[pieceId];
return pieceData || null;
};
export const getPuzzlePieceData = (residence: string, pieceId: number): PuzzlePieceData | null => {
const residenceConfig = puzzleDataConfig[residence]
const pieceData = residenceConfig?.[pieceId]
return pieceData || null
}
+25 -28
View File
@@ -5,9 +5,9 @@
export interface PuzzlePathConfig {
/** viewBox */
viewBox: string;
viewBox: string
/** 每个碎片的路径数据 */
pieces: Record<number, string>;
pieces: Record<number, string>
}
/**
@@ -17,9 +17,9 @@ export interface PuzzlePathConfig {
* 因此这里使用单例配置,而不是按 residence 区分。
*/
export const puzzlePathConfig: PuzzlePathConfig = {
viewBox: "0 0 748.92 747.84",
viewBox: '0 0 748.92 747.84',
pieces: {
1: `M183.45,10.9c1.43,18.24,0.5,50.8,0.77,51.72c-0.08,0.84,0.36,4.83,1.93,7.2c1.57,2.37,4.26,3.11,6.05,3.09
1: `M183.45,10.9c1.43,18.24,0.5,50.8,0.77,51.72c-0.08,0.84,0.36,4.83,1.93,7.2c1.57,2.37,4.26,3.11,6.05,3.09
c4.55,0.77,11.08-0.12,15.31-2.06c4.24-1.94,8.62-4.28,13.33-4.36c9.76-0.15,16.29,3.39,19.44,9.75
c2.45,4.95,3.29,11.07,3.43,15.04c0.14,3.97-1.91,10.2-5.1,15.06c-7.34,8.59-13.38,10.01-25.33,7.75
c-3.65-1.19-6.82-3.14-10.27-4.77c-4.72-2.23-10.96-1.46-14.54,0.51s-4.59,7.35-4.63,12.61c-0.13,16.61,0.51,52.67,0.46,54.33
@@ -29,7 +29,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c-15.78,0.05-31.55,0.02-47.33,0c-1.97,0-4,0.24-5.86-0.78c-0.8-0.62-1.06-1.45-1-2.43c0-56.64,0-113.27,0-169.9
c0-2.6-0.65-5.47,2.57-6.88L5.42,3.69c1.5-1.09,3.23-0.57,4.84-0.57c56.4-0.03,112.8-0.03,169.2,0.02c0.76,0,3.2-0.03,3.99,1.71
C184.24,6.59,183.39,10.12,183.45,10.9z`,
2: `M188.09,4.59c0.34-0.32,0.67-0.64,1.01-0.97c1.71-1,3.58-0.5,5.36-0.5c57.1-0.03,114.19-0.03,171.29-0.02
2: `M188.09,4.59c0.34-0.32,0.67-0.64,1.01-0.97c1.71-1,3.58-0.5,5.36-0.5c57.1-0.03,114.19-0.03,171.29-0.02
c2.46,0,5.04-0.47,7.01,1.64l-0.1-0.13c0.86,0.78,0.64,1.83,0.64,2.8c0,8.4-0.1,16.81-0.16,25.22c-0.06,8.83,0.27,17.45,0.16,26.47
c-0.01,0.81,0.27,4.82-1.54,7.37c-0.37,0.52-2.22,2.48-4.72,2.88c-3.92,0.62-7.81-1.87-10.2-3.3c-9.85-5.19-22.79-7.85-31.85,0.15
c-7.66,6.78-12.92,19.18-10.98,29.22c2.05,10.56,10.29,20.17,21.18,22.88c5.74,1.43,13.37,0.25,18.86-2.32
@@ -41,7 +41,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c1.53,0.52,7.65,4.16,12.64,5.39c6.31,1.55,11.68,0.63,13.36,0.19c22.13-5.1,23.79-31.22,15.62-45.19
c-2.42-3.51-5.79-6.97-9.12-8.76c-4.83-2.59-9.77-2.78-15.6-1.85c-4.13,0.66-8.56,3.2-12.31,5.02c-3.17,1.54-8.76,3.65-12.39,2.43
c-3.94-1.51-5.05-4.02-5.04-8.48c0.03-18.3,0.01-36.6,0.01-54.9C187.63,5.81,187.72,5.17,188.09,4.59z`,
3: `M562.57,67.53c2.08,2.53,5.24,4.32,7.69,4.7c2.86,0.45,7.3-0.98,10.44-2.18c4.49-1.68,8.08-4.5,13.08-4.93
3: `M562.57,67.53c2.08,2.53,5.24,4.32,7.69,4.7c2.86,0.45,7.3-0.98,10.44-2.18c4.49-1.68,8.08-4.5,13.08-4.93
c15.4-1.33,25.8,9.73,25.36,25.36c-0.45,15.95-9.07,27.01-24.1,26.05c-3.22-0.21-6.88-2.19-9.75-3.56
c-2.55-1.22-5.45-2.78-8.15-3.67c-8.04-2.65-16.65,1.83-16.75,10.33c-0.21,16.95,0.72,33.3,0.69,50.26c0,1.83-0.01,5.52-0.11,7.34
c-0.2,3.59-0.22,5.17-3.79,5.38c-1,0.06-1.99,0.1-2.99,0.1c-17.29,0.01-34.58,0.02-51.87,0c-1.66,0-3.32-0.06-4.96-0.39
@@ -53,7 +53,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c3.96,1.03,9.79-0.67,10.89-2.06c2.7-3.42,2.73-8.79,2.72-12.29c-0.07-15.58-0.04-31.15-0.01-46.73c0-1.63-0.41-3.32,0.45-4.88
c0.33-0.31,0.66-0.63,0.99-0.94c1.53-1.01,3.24-0.52,4.86-0.53C439.39,3.09,497.12,3.1,554.86,3.1c6.39,0,7.14,0.76,7.14,7.16
c0.01,12.15,0.02,24.29-0.02,36.44C561.97,48.31,560.76,65.58,562.57,67.53z`,
4: `M684.07,182.22c-8.23,1.12-11.9,6.11-10.48,14.23c1.05,5.97,4.32,11.13,6.04,16.87
4: `M684.07,182.22c-8.23,1.12-11.9,6.11-10.48,14.23c1.05,5.97,4.32,11.13,6.04,16.87
c4.95,16.46-8.81,33.55-25.83,31.99c-9.08-0.84-18.04-6.51-20.55-16.1c-0.21-0.79-0.93-6.95,0.09-13.43
c1.04-6.64,6.43-13.59,6.87-15.13c1.17-4.09,0.81-10.62-0.93-13.19c-2.09-3.09-7.34-4.96-12.48-5c-16.4-0.75-54.38,0.2-56.05,0.14
c-6.08-0.25-6.48-0.21-6.57-6.84c-0.08-5.46-0.1-10.92-0.08-16.38c0.06-13.57-0.11-21.8-0.34-34.47c0.01-12.18,6.53-15.92,15.2-11
@@ -62,7 +62,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c-0.06-15.07,0.04-29.1,0.07-44.16c0-1.52-0.39-3.11,0.33-4.58c0.1-0.15,0.27-0.4,0.37-0.55c1.68-1.86,3.7-1.18,5.58-1.19
C627.4,3.09,684.46,3.1,741.52,3.1c6.07,0,6.19,0.11,6.19,6.07c0.01,55.9-0.04,111.79,0.09,167.69c0.01,3.85-0.89,5.08-4.91,5.03
c-17.8-0.22-35.6-0.11-53.4-0.08C687.68,181.81,685.82,181.4,684.07,182.22z`,
5: `M69.29,372.08c-1.77-2.35-4.33-2.08-6.82-2.08c-15.96,0-31.92,0-47.88,0c-7.25,0-11.6-2.75-11.6-9.82
5: `M69.29,372.08c-1.77-2.35-4.33-2.08-6.82-2.08c-15.96,0-31.92,0-47.88,0c-7.25,0-11.6-2.75-11.6-9.82
c0-55.03,0.34-110.13,0.34-165.16c0-6.78,2.49-9.65,9.43-9.65c14.63-0.01,29.47,0,44.1-0.06c0.95,0,10.35-0.97,15-5.9
c3.23-3.42,2.88-9.68,2.44-11.28s-3.2-9.48-4.62-13.01c-4.54-11.34-2.28-21.08,6.87-28.52c8.12-6.61,19.64-7.38,27.85-1.86
c9.37,6.31,15.08,18.4,10.12,28.93c-1.69,3.58-7.53,18.17-3.55,24.79c2.12,4.55,8.04,6.74,12.41,6.8
@@ -73,7 +73,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c-16.01,0.01-20.6,6.43-15.65,21.81c1.83,5.68,3.94,11.28,4.31,17.35c0.65,10.57-5,17.19-13.63,21.85
c-8.29,4.48-16.22,3.79-23.73-2.08c-10.33-8.07-13.04-17.15-8.65-29.45c1.84-5.15,4.31-10.11,4.98-15.63
C75.09,379.41,74.19,374.92,69.29,372.08z`,
6: `M305.86,215.26c0.07-2.85-1.9-8.06-1.9-8.06s-2.16-6.41-3.35-9.49c-3.07-7.94,0.43-12.87,9.72-12.18
6: `M305.86,215.26c0.07-2.85-1.9-8.06-1.9-8.06s-2.16-6.41-3.35-9.49c-3.07-7.94,0.43-12.87,9.72-12.18
c19.94-0.3,39.89-0.13,59.83-0.22c3.74-0.02,3.73,2.34,3.73,5.01c0,18.12,0.05,36.23,0.08,54.35c0,0.83,0,1.66,0.02,2.49
c0.12,5.82,0.35,10.62,3.04,13.08c1.52,1.4,3.75,2.07,6.35,2.06c2.6-0.01,5.56-0.71,8.55-2.06c1.21-0.55,4.88-3.01,6.08-3.58
c14.65-6.96,24.68,0.83,31.23,15.5c3.07,13.14-0.85,24.6-14.13,30.22c-0.76,0.32-1.57,0.54-2.36,0.81
@@ -89,7 +89,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c10.06,3.98,16.45-2.03,16.66-12.83c0.22-11.11-0.56-19.98-0.55-31.1c0-8.3-0.09-17.51-0.23-25.8c-0.05-3.26,1.61-6.18,5.27-6.15
c19.58,0.13,39.17,0.1,58.75,0.05c4.18-0.01,8.08,1,8.99,5.94s-3.48,12.44-5.93,18.89c-3.29,8.68-2.57,19.34,2.35,27.5
c5.32,8.83,17.88,14.21,27.17,12.41c10.32-2,19.22-6.53,22.25-17.55C307.5,227.29,307.28,220.48,305.86,215.26z`,
7: `M405.35,306.99c13.2,0.78,24.03-6.49,28.08-19.2c4.18-13.14-4.54-33.18-20.07-36.18
7: `M405.35,306.99c13.2,0.78,24.03-6.49,28.08-19.2c4.18-13.14-4.54-33.18-20.07-36.18
c-5.66-1.1-11.76-0.44-16.9,1.52c-2.48,0.95-6.15,3.96-8.63,4.91c-7.6,2.93-10.83-1.78-10.95-9.88
c-0.13-9.14-0.04-18.29-0.05-27.44c0-9.81,0.25-19.63-0.11-29.43c-0.18-4.98,1.63-6.16,6.31-6.08c15.96,0.25,31.93,0.13,47.89,0.07
c2.81-0.01,8,0.37,10.75-0.14c10.43-1.93,11.55-8.68,8.13-19.07c-1.61-4.52-3.45-8.98-4.78-13.58
@@ -103,7 +103,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c-0.95-7.61,1.9-14.36,4.74-21.12c1.09-2.6,2.15-5.2,2.42-8.07c0.88-9.5-3.4-14.61-13-14.7c-18.11-0.17-36.23-0.07-54.35-0.08
c-6.64,0-6.65-0.01-6.65-6.57c0.01-17.45-0.01-34.9,0.05-52.35c-0.47-10.08,2.9-13.59,14.67-8.96
C393.57,302.85,401.04,306.93,405.35,306.99z`,
8: `M629.94,230.44c2.79,11.07,11.69,17,21.52,18.56c11.58,1.84,20.63-4.03,27.25-12.14
8: `M629.94,230.44c2.79,11.07,11.69,17,21.52,18.56c11.58,1.84,20.63-4.03,27.25-12.14
c6.03-7.39,6.34-14.84,3.67-23.85c-1.55-5.25-3.72-10.32-5.24-15.58c-2.16-7.49,1.02-12.56,8.65-12.7
c19.45-0.35,38.92-0.16,58.38-0.21c2.35-0.01,3.34,1.06,3.2,3.35c-0.05,0.83,0,1.66,0,2.49c0,58.05-0.05,116.1,0.1,174.15
c0.01,4.34-1,5.6-5.46,5.52c-17.13-0.28-34.26-0.09-51.39-0.14c-2.14-0.01-4.33-0.17-6.41-0.65c-6.06-1.39-8.94-5.92-7.36-11.92
@@ -115,7 +115,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c5.28-1.58,19.8,4.62,22.43,5.63c6.06,2.34,13.76-0.58,16.42-5.16c1.6-2.75,1.67-8.7,1.71-12.62c0.18-16.62-0.42-27.93-0.4-44.55
c0.01-12.12-0.51-12.38,11.44-12.38c16.29,0,31.89-0.3,48.18-0.27c12.63,0.02,15.62,5.72,11.53,17.83
c-0.43,1.26-4.5,7.61-5.07,9.76C628.81,218.73,628.59,224.07,629.94,230.44z`,
9: `M84.53,496.23c-15.47,3.69-25.25,18.2-19.18,34.57c1.32,3.57,3.21,8.61,4.34,12.23
9: `M84.53,496.23c-15.47,3.69-25.25,18.2-19.18,34.57c1.32,3.57,3.21,8.61,4.34,12.23
c2.6,8.32,0.13,14.79-8.37,16.34c-0.51,0.09-2.99,0.59-6.16,0.79c-7.03,0.45-17.55-0.33-20.05-0.32
c-12.31,0.09-11.59-0.64-23.9-0.66c-5.69-0.01-6.59-0.92-6.59-6.71c-0.01-57.89-0.01-115.78,0-173.67c0-5.73,1.55-4.91,7.33-4.96
c15.8-0.14,48.31-0.41,48.81-0.39c12.8,0.41,10.63,12.15,7.98,18.03c-2.65,5.88-3.64,13.67-4.71,20
@@ -127,7 +127,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c-0.14,2.99-0.39,8.57-0.39,11.56c0,14.97-0.21,29.06-0.27,44.03c-0.03,7.55-2.64,8.64-9.99,8.66c-17.63,0.05-31.79,0.11-49.43,0
c-5.91-0.04-11.34-1.3-13.63-7.83c-0.7-5.73,0.3-11.21,2.35-16.57c1.9-4.98,3.19-10.04,3.15-15.49
c-0.1-13.19-7.41-22.07-20.48-23.96C94.1,495.68,88.65,495.09,84.53,496.23z`,
10: `M279.15,622.5c-10.41,0.05-25.44-10.63-23.06-25.85c0.58-4.52,4.45-12.5,6.79-18.7
10: `M279.15,622.5c-10.41,0.05-25.44-10.63-23.06-25.85c0.58-4.52,4.45-12.5,6.79-18.7
c4.57-12.09-0.28-19.29-13.16-19.36c-18.79-0.1-37.57-0.13-56.36,0.06c-4.18,0.04-5.46-1.31-5.41-5.44
c0.19-17.62,0.09-35.24,0.1-52.87c0-1.33-0.03-2.67,0.15-3.98c1.12-8.23,5.66-10.84,13.25-7.51c3.49,1.53,6.79,3.47,10.49,4.56
c11.1,3.29,23.31-0.74,29.65-9.87c7.39-10.63,6.91-25.35-1.16-35.38c-6.76-8.41-15.31-11.09-26.41-6.87
@@ -141,7 +141,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c0.05,17.62-0.05,35.25,0.1,52.87c0.03,3.86-1.12,5.28-5.11,5.23c-18.45-0.2-36.91-0.06-55.36-0.22
c-13.01-0.11-18.55,7.33-14.2,19.69c1.93,5.49,4.04,10.9,4.59,16.76c1.14,12.15-6.95,21.77-13.23,25.4
C288.04,621.84,285.07,622.48,279.15,622.5z`,
11: `M500.83,558.56c-0.93-0.24-2.9-0.39-3.85-0.52c-8.34-0.97-10.63-5.7-9.18-12.35c0.67-5.07,3.86-7.4,5.45-11.59
11: `M500.83,558.56c-0.93-0.24-2.9-0.39-3.85-0.52c-8.34-0.97-10.63-5.7-9.18-12.35c0.67-5.07,3.86-7.4,5.45-11.59
c6.43-16.99-2.21-35.06-18.65-38.69c-5.09-1.12-10.21-1.04-15.06,1.33c-14.07,3.64-21.77,18.71-17.25,34.16
c1.21,4.13,3.09,8.06,4.58,12.12c3.42,9.28-0.88,15.47-10.82,15.51c-17.97,0.06-35.93-0.07-53.9,0.14
c-4.22,0.05-5.44-1.39-5.38-5.48c0.23-16.8,0.18-33.6,0.23-50.4c0-1.83,0.03-3.67-0.12-5.48c-0.9-10.26-8.89-15.19-18.45-11.38
@@ -155,7 +155,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c14.8-5.11,26.57,1.47,30.1,16.78c3.02,13.1-2.26,23.32-15.96,30.86c-7.16,1.34-13.89,0.02-20.22-3.43
c-13.4-7.3-21.26-1.61-20.68,13.08c0.67,17.09,0.05,34.24,0.19,51.36c0.04,4.41-1.27,6.14-6,6.08
C537.4,558.41,519.11,558.56,500.83,558.56z`,
12: `M672.86,356.02c-2.51,6.41,0.79,18.02,13.81,17.95c20.1,0.13,35.75-0.18,55.04-0.12
12: `M672.86,356.02c-2.51,6.41,0.79,18.02,13.81,17.95c20.1,0.13,35.75-0.18,55.04-0.12
c2.71,0.01,5.6,0.85,5.59,3.82c-0.1,60.36,0.04,119.05,0.02,179.41c0,0.5-0.1,0.99-0.15,1.49c-2.03,2.03-6.17,0.87-8.61,0.87
c-17.12,0.05-26.27-0.3-43.38-0.28c-2.15,0-11.08-0.45-13.17,0.28c-8.84-0.48-10.79,8.3-8.45,16.77c1.81,6.57,5.42,11.45,6.51,18.3
c2.11,13.13-5.76,25.93-18.87,28.22c-12.96,1.83-24.63-5.18-27.84-18.37c-1.17-5.93-0.47-11.13,1.66-16.63
@@ -166,7 +166,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c-0.48-5.35,0.15-50.06,0.08-57.77c0.12-6.36,1.52-7.71,7.82-7.74c15.45-0.08,55.13,1.59,59.91,0.1c8.64-1.2,8.83-10.58,6.17-18.91
c-2.18-6.81-4.82-11.61-5.42-18.83c-1.06-12.89,6.43-21.57,18.36-24.77c12.02-3.23,23.2,1.76,28.07,13.54
c2.84,3.48,2.84,14.33-0.1,18.72C676.25,349.18,675.38,349.61,672.86,356.02z`,
13: `M158.93,683.51c7.6-1.54,8.41-3.24,12.33-4.54c8.68-2.89,12.81,0.42,12.66,9.57
13: `M158.93,683.51c7.6-1.54,8.41-3.24,12.33-4.54c8.68-2.89,12.81,0.42,12.66,9.57
c-0.33,19.46-0.3,34.43,0.16,52.58c0.03,4.07-1,5.48-3.9,5.47c-19.8-0.07-39.6-0.1-59.4-0.09c-36.94,0.01-73.88-0.05-110.81,0.19
c-5.19,0.03-6.37-1.64-6.36-6.56c0.16-57.4,0.22-112.35,0.06-169.76c-0.01-4.91,0.91-7.27,6.13-7.15
c14.89,0.4,21.99,0.35,37.35,0.26c7.15-0.04,14.42,0.15,21.69-3.87c2.87-1.59,5.56-5.31,4.74-13.79
@@ -175,7 +175,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c0.76,2.79,2.86,4.51,3.28,5.26c3.46,4.47,10.74,4.2,15.7,4.24c17.26,0.14,30.99,0.14,48.25,0.17c7.71,0.01,8.18,2.39,8.19,10.06
c0.02,17.26-0.44,31.02-0.06,48.28c0.19,8.42-2.29,17.32-15.1,11.43c-2.43-1.79-8.68-4.5-15.04-6
c-18.33-1.94-30.25,13.79-28.97,26.61c0.98,9.84,2.51,19.41,11.03,25.64C142.42,683.83,151.33,685.05,158.93,683.51z`,
14: `M385.72,672.62c-5.94-0.44-10.23,1.91-11.61,7.64c-0.65,2.72-0.08,42.36-0.13,59.34
14: `M385.72,672.62c-5.94-0.44-10.23,1.91-11.61,7.64c-0.65,2.72-0.08,42.36-0.13,59.34
c-0.02,6.16-0.66,6.76-6.97,6.76c-57.57,0.08-115.14,0.08-172.71,0.33c-5.2,0.02-6.43-1.62-6.34-6.55
c0.32-17.63,0-33.67,0.07-51.31c0.05-11.57-6.48-17.41-17.48-13.67c-0.98,0.33-4.28,2.83-7.6,3.9c-4.42,1.42-9.07,1.44-10.17,1.44
c-3.21-0.01-4.19-0.08-7.28-0.98c-1.74-0.51-4.01-1.36-5.1-2.05c-12.5-7.87-16.11-26.46-6.48-38.65c3.59-4.55,6.97-6.42,13.06-7.76
@@ -187,7 +187,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c0,1.33-0.05,9.66,0,10.99c0.41,10.02,6.99,12.08,16.18,8.29c3.53-1.46,7.61-4.38,11.29-5.49c13.88-4.19,27.74,6.89,29.47,21.38
c1.71,14.38-7.59,22.68-13.59,26.47c-1.87,0.29-5.38,2.24-10.2,1.61c-4.14-0.54-10.64-5.06-11.97-5.66
C390.15,673.37,387.41,672.75,385.72,672.62z`,
15: `M532.16,626.84c-13.24-1.71-28.15,9.06-29.54,23.72c-1.05,11.14,2.42,20.46,11.85,26.84
15: `M532.16,626.84c-13.24-1.71-28.15,9.06-29.54,23.72c-1.05,11.14,2.42,20.46,11.85,26.84
c9.32,6.31,19.4,6.22,28.74,0.56c12.05-7.3,18.75-1.95,18.33,11.04c-0.55,17.28-0.17,34.59-0.04,51.89
c0.02,3.53-0.9,4.95-4.81,4.94c-32.42-0.01-64.84,0.31-97.26,0.31c-25.77,0-51.54-0.37-77.31-0.37c-4.22,0-5.41-1.44-5.37-5.51
c0.19-17.3,0.08-34.59,0.11-51.89c-0.68-5.66,1.37-12.28,7.2-12.22c4.4,0.05,11.68,4.63,18.71,7.14
@@ -199,7 +199,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c-1.06,2.33-4.08,7.38-4.84,11.2c-0.39,1.99-0.93,8.02,0.93,11.13c2.7,4.53,8.52,6.04,11.09,6.11c0.83,0.04,23.75,0.56,41.65,0.54
c7.02-0.01,15.74,0,17.73,0.09c1.99,0.09,5.41-1.42,5.12,1.33c-0.28,2.75,0.12,17.35,0,30.44c-0.13,13.77,1.53,28.83-0.11,36.06
c-1.51,6.64-11.54,4.01-13.52,3.5C542.63,632.62,538.99,627.12,532.16,626.84z`,
16: `M747.08,562.77c0.08,1.99,0.35,7.73,0.35,9.72c0.01,57.38-0.05,110.21-0.06,167.59c0,6.6,0,6.61-6.35,6.61
16: `M747.08,562.77c0.08,1.99,0.35,7.73,0.35,9.72c0.01,57.38-0.05,110.21-0.06,167.59c0,6.6,0,6.61-6.35,6.61
c-56.72,0.01-113.43-0.03-170.15,0.14c-5.02,0.02-6.59-1.36-6.5-6.45c0.3-16.13,0.08-32.27,0.13-48.4
c0.01-3.85-0.24-7.67-1.2-11.37c-1.71-6.57-6.14-9.24-12.77-7.8c-3.1,0.67-5.93,2.1-8.76,3.52c-13.94,7.02-27.51,2.59-33.94-11.02
c-5.96-12.61-0.55-25.37,10.34-31.73c4.64-2.88,13.55-4.56,19.08-0.59c1.9,1.36,7.36,3.92,9.54,4.72
@@ -209,7 +209,7 @@ export const puzzlePathConfig: PuzzlePathConfig = {
c-0.34-4.32-1.87-9.39-3.65-13.36c-1.09-2.43-2.12-3.98-2.87-6.53c-2.54-8.62,0.07-11.89,8.9-13.78
c18.77-0.05,35.67-0.2,54.43-0.17C742.23,561.91,745.52,560.97,747.08,562.77z`,
},
};
}
/**
* 获取碎片的路径数据
@@ -217,13 +217,10 @@ export const puzzlePathConfig: PuzzlePathConfig = {
* @param pieceId 碎片ID
* @returns 路径数据字符串
*/
export const getPuzzlePiecePath = (
_residence: string,
pieceId: number
): string | null => {
export const getPuzzlePiecePath = (_residence: string, pieceId: number): string | null => {
// 所有故居共用同一套路径数据;residence 参数保留用于兼容调用方
return puzzlePathConfig.pieces[pieceId] ?? null;
};
return puzzlePathConfig.pieces[pieceId] ?? null
}
/**
* 获取拼图的viewBox
@@ -232,5 +229,5 @@ export const getPuzzlePiecePath = (
*/
export const getPuzzleViewBox = (_residence: string): string => {
// 所有故居共用同一套 viewBox;residence 参数保留用于兼容调用方
return puzzlePathConfig.viewBox ?? "0 0 748.92 747.84";
};
return puzzlePathConfig.viewBox ?? '0 0 748.92 747.84'
}