JutarryWu 6 mesi fa
parent
commit
29e07c4378
100 ha cambiato i file con 2000 aggiunte e 1224 eliminazioni
  1. 68 0
      .commitlintrc.js
  2. 8 37
      .editorconfig
  3. 0 3
      .env
  4. 12 4
      .env.development
  5. 17 2
      .env.production
  6. 17 0
      .env.test
  7. 4 22
      .gitignore
  8. 0 1
      .husky/commit-msg
  9. 0 1
      .husky/pre-commit
  10. 898 0
      .idea/workspace.xml
  11. 4 0
      .lintstagedrc
  12. 1 0
      .node-version
  13. 1 1
      .npmrc
  14. 0 9
      .vscode/extensions.json
  15. 0 72
      .vscode/settings.json
  16. 1 1
      LICENSE
  17. 9 229
      README.md
  18. 0 229
      README.zh-CN.md
  19. 0 128
      build/vite/index.ts
  20. 0 24
      build/vite/optimize.ts
  21. 0 44
      build/vite/vconsole.ts
  22. 28 13
      eslint.config.js
  23. 3 17
      index.html
  24. 0 20
      mock/data.ts
  25. 0 5
      mock/index.ts
  26. 0 13
      mock/modules/prose.mock.ts
  27. 0 19
      mock/util.ts
  28. 0 12
      netlify.toml
  29. 95 74
      package.json
  30. 17 0
      plop-templates/component/index.hbs
  31. 66 0
      plop-templates/component/prompt.js
  32. 21 0
      plop-templates/page/index.hbs
  33. 54 0
      plop-templates/page/prompt.js
  34. 13 0
      plop-templates/store/index.hbs
  35. 28 0
      plop-templates/store/prompt.js
  36. 13 0
      plopfile.js
  37. 608 235
      pnpm-lock.yaml
  38. 14 0
      postcss.config.js
  39. 0 0
      public/.nojekyll
  40. 0 4
      public/favicon-dark.svg
  41. BIN
      public/favicon.ico
  42. 0 4
      public/favicon.svg
  43. BIN
      public/pwa-192x192.png
  44. BIN
      public/pwa-512x512.png
  45. 0 1
      public/safari-pinned-tab.svg
  46. BIN
      public/static/image/game/bg-breadthTraining.png
  47. BIN
      public/static/image/game/bg-center.png
  48. BIN
      public/static/image/game/bg-continue-addition.png
  49. BIN
      public/static/image/game/bg-pic-naming.png
  50. BIN
      public/static/image/game/bg-puzzle.png
  51. BIN
      public/static/image/game/bg-text.png
  52. BIN
      public/static/image/game/icon-board.png
  53. BIN
      public/static/image/game/icon-submit.png
  54. BIN
      public/static/image/game/logo/1.png
  55. BIN
      public/static/image/game/logo/2.png
  56. BIN
      public/static/image/game/logo/3.png
  57. BIN
      public/static/image/game/logo/4.png
  58. BIN
      public/static/image/game/logo/5.png
  59. BIN
      public/static/image/game/logo/6.png
  60. BIN
      public/static/image/game/name/0.png
  61. BIN
      public/static/image/game/name/1.png
  62. BIN
      public/static/image/game/name/10.png
  63. BIN
      public/static/image/game/name/11.png
  64. BIN
      public/static/image/game/name/12.png
  65. BIN
      public/static/image/game/name/13.png
  66. BIN
      public/static/image/game/name/14.png
  67. BIN
      public/static/image/game/name/15.png
  68. BIN
      public/static/image/game/name/16.png
  69. BIN
      public/static/image/game/name/17.png
  70. BIN
      public/static/image/game/name/18.png
  71. BIN
      public/static/image/game/name/19.png
  72. BIN
      public/static/image/game/name/2.png
  73. BIN
      public/static/image/game/name/20.png
  74. BIN
      public/static/image/game/name/21.png
  75. BIN
      public/static/image/game/name/22.png
  76. BIN
      public/static/image/game/name/23.png
  77. BIN
      public/static/image/game/name/24.png
  78. BIN
      public/static/image/game/name/25.png
  79. BIN
      public/static/image/game/name/26.png
  80. BIN
      public/static/image/game/name/27.png
  81. BIN
      public/static/image/game/name/28.png
  82. BIN
      public/static/image/game/name/29.png
  83. BIN
      public/static/image/game/name/3.png
  84. BIN
      public/static/image/game/name/30.png
  85. BIN
      public/static/image/game/name/31.png
  86. BIN
      public/static/image/game/name/32.png
  87. BIN
      public/static/image/game/name/33.png
  88. BIN
      public/static/image/game/name/34.png
  89. BIN
      public/static/image/game/name/35.png
  90. BIN
      public/static/image/game/name/36.png
  91. BIN
      public/static/image/game/name/37.png
  92. BIN
      public/static/image/game/name/38.png
  93. BIN
      public/static/image/game/name/39.png
  94. BIN
      public/static/image/game/name/4.png
  95. BIN
      public/static/image/game/name/40.png
  96. BIN
      public/static/image/game/name/41.png
  97. BIN
      public/static/image/game/name/42.png
  98. BIN
      public/static/image/game/name/43.png
  99. BIN
      public/static/image/game/name/44.png
  100. BIN
      public/static/image/game/name/5.png

+ 68 - 0
.commitlintrc.js

@@ -0,0 +1,68 @@
+/** @type {import('cz-git').UserConfig} */
+export default {
+  rules: {
+    // @see: https://commitlint.js.org/#/reference-rules
+  },
+  prompt: {
+    alias: { fd: 'docs: fix typos' },
+    messages: {
+      type: '选择你要提交的类型 :',
+      scope: '选择一个提交范围(可选):',
+      customScope: '请输入自定义的提交范围 :',
+      subject: '填写简短精炼的变更描述 :\n',
+      body: '填写更加详细的变更描述(可选)。使用 "|" 换行 :\n',
+      breaking: '列举非兼容性重大的变更(可选)。使用 "|" 换行 :\n',
+      footerPrefixsSelect: '选择关联issue前缀(可选):',
+      customFooterPrefixs: '输入自定义issue前缀 :',
+      footer: '列举关联issue (可选) 例如: #31, #I3244 :\n',
+      confirmCommit: '是否提交或修改commit ?',
+    },
+    types: [
+      { value: 'feat', name: 'feat:     ✨  新增功能 | A new feature', emoji: ':sparkles:' },
+      { value: 'fix', name: 'fix:      🐛  修复缺陷 | A bug fix', emoji: ':bug:' },
+      { value: 'docs', name: 'docs:     📝  文档更新 | Documentation only changes', emoji: ':memo:' },
+      { value: 'style', name: 'style:    💄  代码格式 | Changes that do not affect the meaning of the code', emoji: ':lipstick:' },
+      { value: 'refactor', name: 'refactor: ♻️   代码重构 | A code change that neither fixes a bug nor adds a feature', emoji: ':recycle:' },
+      { value: 'perf', name: 'perf:     ⚡️  性能提升 | A code change that improves performance', emoji: ':zap:' },
+      { value: 'test', name: 'test:     ✅  测试相关 | Adding missing tests or correcting existing tests', emoji: ':white_check_mark:' },
+      { value: 'build', name: 'build:    📦️  构建相关 | Changes that affect the build system or external dependencies', emoji: ':package:' },
+      { value: 'ci', name: 'ci:       🎡  持续集成 | Changes to our CI configuration files and scripts', emoji: ':ferris_wheel:' },
+      { value: 'revert', name: 'revert:   ⏪️  回退代码 | Revert to a commit', emoji: ':rewind:' },
+      { value: 'chore', name: 'chore:    🔨  其他修改 | Other changes that do not modify src or test files', emoji: ':hammer:' },
+    ],
+    useEmoji: false,
+    emojiAlign: 'center',
+    themeColorCode: '',
+    scopes: [],
+    allowCustomScopes: true,
+    allowEmptyScopes: true,
+    customScopesAlign: 'bottom',
+    customScopesAlias: 'custom',
+    emptyScopesAlias: 'empty',
+    upperCaseSubject: false,
+    markBreakingChangeMode: true,
+    allowBreakingChanges: ['feat', 'fix'],
+    breaklineNumber: 100,
+    breaklineChar: '|',
+    skipQuestions: [],
+    issuePrefixs: [
+      // 如果使用 gitee 作为开发管理
+      { value: 'link', name: 'link:     链接 ISSUES 进行中' },
+      { value: 'closed', name: 'closed:   标记 ISSUES 已完成' },
+    ],
+    customIssuePrefixsAlign: 'top',
+    emptyIssuePrefixsAlias: 'skip',
+    customIssuePrefixsAlias: 'custom',
+    allowCustomIssuePrefixs: true,
+    allowEmptyIssuePrefixs: true,
+    confirmColorize: true,
+    maxHeaderLength: Number.POSITIVE_INFINITY,
+    maxSubjectLength: Number.POSITIVE_INFINITY,
+    minSubjectLength: 0,
+    scopeOverrides: undefined,
+    defaultBody: '',
+    defaultIssues: '',
+    defaultScope: '',
+    defaultSubject: '',
+  },
+}

+ 8 - 37
.editorconfig

@@ -1,38 +1,9 @@
-[*]
-charset=utf-8
-end_of_line=lf
-insert_final_newline=false
-indent_style=space
-indent_size=2
-
-[{*.ng,*.sht,*.html,*.shtm,*.shtml,*.htm}]
-indent_style=space
-indent_size=2
-
-[{*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}]
-indent_style=space
-indent_size=2
-
-[{.babelrc,.stylelintrc,jest.config,.eslintrc,.prettierrc,*.json,*.jsb3,*.jsb2,*.bowerrc}]
-indent_style=space
-indent_size=2
-
-[*.svg]
-indent_style=space
-indent_size=2
+root = true
 
-[*.js.map]
-indent_style=space
-indent_size=2
-
-[*.less]
-indent_style=space
-indent_size=2
-
-[{*.vue,*.ts,*.tsx}]
-indent_style=space
-indent_size=2
-
-[{.analysis_options,*.yml,*.yaml}]
-indent_style=space
-indent_size=2
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true

+ 0 - 3
.env

@@ -1,3 +0,0 @@
-VITE_APP_PUBLIC_PATH=/
-VITE_APP_PREVIEW=true
-VITE_APP_API_BASE_URL=/api

+ 12 - 4
.env.development

@@ -1,5 +1,13 @@
-NODE_ENV=development
-VITE_APP_PREVIEW=true
-VITE_APP_API_BASE_URL='/api'
+# 应用配置面板
+VITE_APP_SETTING = true
+# 页面标题
+VITE_APP_TITLE = Fantastic-mobile 基础版
+# 接口请求地址,会设置到 axios 的 baseURL 参数上
+VITE_APP_API_BASEURL = /
+# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
+VITE_APP_DEBUG_TOOL =
 
-VITE_APP_API_HTTP_URL='http://49.232.26.44:8112/'
+# 是否开启代理
+VITE_OPEN_PROXY = true
+# 是否开启开发者工具
+VITE_OPEN_DEVTOOLS = true

+ 17 - 2
.env.production

@@ -1,2 +1,17 @@
-VITE_APP_PREVIEW=false
-VITE_APP_API_BASE_URL='http://49.232.26.44:8112/'
+# 应用配置面板
+VITE_APP_SETTING = false
+# 页面标题
+VITE_APP_TITLE = Fantastic-mobile 基础版
+# 接口请求地址,会设置到 axios 的 baseURL 参数上
+VITE_APP_API_BASEURL = /
+# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
+VITE_APP_DEBUG_TOOL =
+
+# 是否在打包时启用 Mock
+VITE_BUILD_MOCK = false
+# 是否在打包时生成 sourcemap
+VITE_BUILD_SOURCEMAP = false
+# 是否在打包时开启压缩,支持 gzip 和 brotli
+VITE_BUILD_COMPRESS = gzip,brotli
+# 是否在打包后生成存档,支持 zip 和 tar
+VITE_BUILD_ARCHIVE =

+ 17 - 0
.env.test

@@ -0,0 +1,17 @@
+# 应用配置面板
+VITE_APP_SETTING = false
+# 页面标题
+VITE_APP_TITLE = Fantastic-mobile 基础版
+# 接口请求地址,会设置到 axios 的 baseURL 参数上
+VITE_APP_API_BASEURL = /
+# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
+VITE_APP_DEBUG_TOOL =
+
+# 是否在打包时启用 Mock
+VITE_BUILD_MOCK = true
+# 是否在打包时生成 sourcemap
+VITE_BUILD_SOURCEMAP = true
+# 是否在打包时开启压缩,支持 gzip 和 brotli
+VITE_BUILD_COMPRESS =
+# 是否在打包后生成存档,支持 zip 和 tar
+VITE_BUILD_ARCHIVE =

+ 4 - 22
.gitignore

@@ -1,25 +1,7 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
 node_modules
-dist
+.DS_Store
+dist*
 dist-ssr
 *.local
-stats.html
-
-# Editor directories and files
-.idea
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
-
-# Misc
-.DS_Store
+.eslintcache
+.stylelintcache

+ 0 - 1
.husky/commit-msg

@@ -1 +0,0 @@
-node scripts/verifyCommit.js

+ 0 - 1
.husky/pre-commit

@@ -1 +0,0 @@
-pnpm lint

+ 898 - 0
.idea/workspace.xml

@@ -0,0 +1,898 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AutoImportSettings">
+    <option name="autoReloadType" value="SELECTIVE" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="b9dc0b93-aea2-4509-84d8-c1e57bc059b1" name="更改" comment="">
+      <change beforePath="$PROJECT_DIR$/.editorconfig" beforeDir="false" afterPath="$PROJECT_DIR$/.editorconfig" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.env" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/.env.development" beforeDir="false" afterPath="$PROJECT_DIR$/.env.development" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.env.production" beforeDir="false" afterPath="$PROJECT_DIR$/.env.production" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.husky/commit-msg" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/.husky/pre-commit" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/.npmrc" beforeDir="false" afterPath="$PROJECT_DIR$/.npmrc" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.vscode/extensions.json" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/.vscode/settings.json" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/LICENSE" beforeDir="false" afterPath="$PROJECT_DIR$/LICENSE" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/README.zh-CN.md" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/build/vite/index.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/build/vite/optimize.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/build/vite/vconsole.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/eslint.config.js" beforeDir="false" afterPath="$PROJECT_DIR$/eslint.config.js" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/index.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/mock/data.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/mock/index.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/mock/modules/prose.mock.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/mock/util.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/netlify.toml" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/pnpm-lock.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/pnpm-lock.yaml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/favicon-dark.svg" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/favicon.svg" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/pwa-192x192.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/pwa-512x512.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/safari-pinned-tab.svg" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/bg-breadthTraining.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/bg-center.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/bg-continue-addition.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/bg-pic-naming.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/bg-puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/bg-text.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/icon-board.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/icon-submit.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/logo/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/logo/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/logo/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/logo/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/logo/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/logo/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/0.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/10.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/11.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/12.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/13.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/14.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/15.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/16.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/17.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/18.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/19.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/20.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/21.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/22.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/23.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/24.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/25.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/26.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/27.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/28.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/29.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/30.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/31.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/32.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/33.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/34.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/35.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/36.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/37.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/38.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/39.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/40.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/41.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/42.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/43.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/44.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/name/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/1/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/1/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/1/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/1/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/1/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/1/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/1/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/1/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/1/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/1/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/2/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/2/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/2/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/2/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/2/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/2/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/2/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/2/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/2/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/2/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/3/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/3/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/3/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/3/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/3/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/3/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/3/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/3/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/3/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/3/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/4/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/4/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/4/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/4/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/4/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/4/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/4/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/4/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/4/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/4/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/5/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/5/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/5/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/5/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/5/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/5/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/5/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/5/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/5/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/3/5/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/10.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/11.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/12.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/13.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/14.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/15.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/16.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/1/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/10.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/11.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/12.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/13.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/14.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/15.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/16.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/2/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/10.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/11.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/12.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/13.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/14.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/15.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/16.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/3/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/10.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/11.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/12.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/13.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/14.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/15.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/16.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/4/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/10.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/11.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/12.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/13.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/14.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/15.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/16.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/4/5/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/10.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/11.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/12.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/13.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/14.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/15.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/16.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/17.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/18.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/19.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/20.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/21.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/22.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/23.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/24.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/25.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/1/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/10.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/11.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/12.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/13.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/14.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/15.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/16.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/17.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/18.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/19.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/20.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/21.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/22.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/23.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/24.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/25.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/2/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/10.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/11.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/12.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/13.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/14.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/15.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/16.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/17.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/18.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/19.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/20.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/21.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/22.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/23.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/24.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/25.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/3/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/10.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/11.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/12.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/13.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/14.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/15.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/16.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/17.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/18.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/19.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/20.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/21.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/22.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/23.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/24.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/25.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/4/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/1.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/10.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/11.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/12.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/13.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/14.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/15.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/16.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/17.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/18.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/19.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/2.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/20.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/21.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/22.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/23.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/24.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/25.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/3.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/4.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/5.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/6.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/7.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/8.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/9.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/puzzle/5/5/puzzle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/video/play.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/image/game/video/stop.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/voice/bg-music.mp3" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/voice/click.mp3" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/voice/error.mp3" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/static/voice/right.mp3" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/scripts/verifyCommit.js" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/App.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/App.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/api/game.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/api/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/api/index.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/api/typing.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/icons/about/box.svg" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/icons/about/car.svg" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/icons/about/logout.svg" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/icons/correct.svg" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/icons/pentagram.svg" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/icons/wrong.svg" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/bg-main.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/bg-soa.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/breadthTraining/correct.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/breadthTraining/star.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/breadthTraining/wrong.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/bg_circle.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/bg_shape.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/car.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/cat.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/factory.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/flower.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/forest.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/hospital.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/house.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/icon_center.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/icon_pointer.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/icon_pointer_red.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/lakes.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/massif.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/stop.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/images/task/spatialOrientationAbility/trafficLight.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/logo.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/tabbar/about.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/tabbar/about_n.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/tabbar/comp.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/tabbar/comp_n.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/tabbar/home.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/assets/tabbar/home_n.png" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/auto-imports.d.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components.d.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components/Chart/dark.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components/Chart/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components/Container.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components/CountDown/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components/NavBar.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components/README.md" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components/RoundSlider/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components/SvgIcon.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components/TabBar.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components/VoiceImp/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components/WuIsCorrect/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/composables/dark.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/env.d.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/hooks/useAutoThemeSwitcher.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/locales/en-US.json" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/locales/zh-CN.json" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/main.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/README.md" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/[...all].vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/charts/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/cognitiveTasks/BreadthTraining/BTRandomPentagram.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/cognitiveTasks/BreadthTraining/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/cognitiveTasks/ContinueAddition/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/cognitiveTasks/PictureNaming/Topics.json" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/cognitiveTasks/PictureNaming/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/cognitiveTasks/PicturePuzzle/Topics.json" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/cognitiveTasks/PicturePuzzle/components/PPCountDown/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/cognitiveTasks/PicturePuzzle/components/PicturePuzzleChild/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/cognitiveTasks/PicturePuzzle/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/cognitiveTasks/cocos/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/cognitiveTasks/main/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/cognitiveTasks/spatialOrientationAbility/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/counter/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/keepalive/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/mock/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/profile/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/pages/unocss/index.vue" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/router/README.md" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/router/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/router/index.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/router/types.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/stores/index.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/stores/modules/app.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/stores/modules/counter.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/stores/modules/routeCache.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/stores/modules/routeTransitionName.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/stores/mutation-type.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/styles/app.less" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/typed-router.d.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/typing.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/utils/i18n.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/utils/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/utils/index.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/utils/inline-px-to-vw.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/utils/local-storage.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/utils/request.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/vue-router.d.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/tests/index.spec.ts" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/tsconfig.json" beforeDir="false" afterPath="$PROJECT_DIR$/tsconfig.json" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/uno.config.ts" beforeDir="false" afterPath="$PROJECT_DIR$/uno.config.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/vite.config.ts" beforeDir="false" afterPath="$PROJECT_DIR$/vite.config.ts" afterDir="false" />
+    </list>
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="Less File" />
+        <option value="Vue Composition API Component" />
+        <option value="TypeScript File" />
+        <option value="tsconfig.json" />
+        <option value="Vue3模板" />
+      </list>
+    </option>
+  </component>
+  <component name="Git.Settings">
+    <option name="RECENT_BRANCH_BY_REPOSITORY">
+      <map>
+        <entry key="$PROJECT_DIR$" value="dev-20240819" />
+      </map>
+    </option>
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
+  <component name="GitToolBoxStore">
+    <option name="recentBranches">
+      <RecentBranches>
+        <option name="branchesForRepo">
+          <list>
+            <RecentBranchesForRepo>
+              <option name="branches">
+                <list>
+                  <RecentBranch>
+                    <option name="branchName" value="dev" />
+                    <option name="lastUsedInstant" value="1726731162" />
+                  </RecentBranch>
+                  <RecentBranch>
+                    <option name="branchName" value="dev-20240819" />
+                    <option name="lastUsedInstant" value="1724153421" />
+                  </RecentBranch>
+                  <RecentBranch>
+                    <option name="branchName" value="master" />
+                    <option name="lastUsedInstant" value="1723795208" />
+                  </RecentBranch>
+                </list>
+              </option>
+              <option name="repositoryRootUrl" value="file://$PROJECT_DIR$" />
+            </RecentBranchesForRepo>
+          </list>
+        </option>
+      </RecentBranches>
+    </option>
+  </component>
+  <component name="ProjectColorInfo">{
+  &quot;associatedIndex&quot;: 8
+}</component>
+  <component name="ProjectId" id="2kjRG9Fsx6MvF8u7E8ChN03TFjf" />
+  <component name="ProjectViewState">
+    <option name="hideEmptyMiddlePackages" value="true" />
+    <option name="showLibraryContents" value="true" />
+  </component>
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "git-widget-placeholder": "dev",
+    "javascript.nodejs.core.library.configured.version": "20.13.1",
+    "javascript.nodejs.core.library.typings.version": "20.13.0",
+    "last_opened_file_path": "E:/WorkSpace/Web/insomnia-cognition-h5/src/components",
+    "list.type.of.created.stylesheet": "Less",
+    "node.js.detected.package.eslint": "true",
+    "node.js.detected.package.standard": "true",
+    "node.js.detected.package.tslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)",
+    "node.js.selected.package.standard": "",
+    "node.js.selected.package.tslint": "(autodetect)",
+    "nodejs_package_manager_path": "pnpm",
+    "settings.editor.selected.configurable": "preferences.pluginManager",
+    "ts.external.directory.path": "E:\\WorkSpace\\Web\\insomnia-cognition-h5\\node_modules\\typescript\\lib",
+    "vue.rearranger.settings.migration": "true"
+  },
+  "keyToStringList": {
+    "vue.recent.templates": [
+      "Vue Composition API Component"
+    ]
+  }
+}]]></component>
+  <component name="RecentsManager">
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="E:\WorkSpace\Web\insomnia-cognition-h5\src\components" />
+      <recent name="E:\WorkSpace\Web\insomnia-cognition-h5\public" />
+      <recent name="E:\WorkSpace\Web\insomnia-cognition-h5\src\pages\cognitiveTasks" />
+      <recent name="E:\WorkSpace\Web\insomnia-cognition-h5\src\api" />
+      <recent name="E:\WorkSpace\Web\insomnia-cognition-h5\src\assets\images" />
+    </key>
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="E:\WorkSpace\Web\insomnia-cognition-h5\src\styles" />
+    </key>
+  </component>
+  <component name="SharedIndexes">
+    <attachedChunks>
+      <set>
+        <option value="bundled-js-predefined-1d06a55b98c1-0b3e54e931b4-JavaScript-WS-241.17011.90" />
+      </set>
+    </attachedChunks>
+  </component>
+  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="默认任务">
+      <changelist id="b9dc0b93-aea2-4509-84d8-c1e57bc059b1" name="更改" comment="" />
+      <created>1723794900486</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1723794900486</updated>
+      <workItem from="1723794901948" duration="2742000" />
+      <workItem from="1723797698495" duration="11478000" />
+      <workItem from="1723859606021" duration="802000" />
+      <workItem from="1723860427125" duration="11114000" />
+      <workItem from="1723871627851" duration="11748000" />
+      <workItem from="1723884252610" duration="13911000" />
+      <workItem from="1723974237119" duration="5573000" />
+      <workItem from="1723992250992" duration="6082000" />
+      <workItem from="1724037062628" duration="406000" />
+      <workItem from="1724037513757" duration="11402000" />
+      <workItem from="1724053015355" duration="75325000" />
+      <workItem from="1724317270501" duration="14000" />
+      <workItem from="1724383409394" duration="11217000" />
+      <workItem from="1724478841989" duration="22000" />
+      <workItem from="1724903305084" duration="4982000" />
+      <workItem from="1725417782248" duration="1465000" />
+      <workItem from="1725506917072" duration="697000" />
+      <workItem from="1725608929876" duration="1001000" />
+      <workItem from="1726126375188" duration="978000" />
+      <workItem from="1726196050458" duration="5789000" />
+      <workItem from="1726726752821" duration="4475000" />
+    </task>
+    <task id="LOCAL-00001" summary="新增图片">
+      <option name="closed" value="true" />
+      <created>1723794930384</created>
+      <option name="number" value="00001" />
+      <option name="presentableId" value="LOCAL-00001" />
+      <option name="project" value="LOCAL" />
+      <updated>1723794930384</updated>
+    </task>
+    <task id="LOCAL-00002" summary="feat(组件类): 新增倒计时组件">
+      <option name="closed" value="true" />
+      <created>1723795981941</created>
+      <option name="number" value="00002" />
+      <option name="presentableId" value="LOCAL-00002" />
+      <option name="project" value="LOCAL" />
+      <updated>1723795981941</updated>
+    </task>
+    <task id="LOCAL-00003" summary="feat(图片): 新增空间定位训练图片">
+      <option name="closed" value="true" />
+      <created>1723797224845</created>
+      <option name="number" value="00003" />
+      <option name="presentableId" value="LOCAL-00003" />
+      <option name="project" value="LOCAL" />
+      <updated>1723797224845</updated>
+    </task>
+    <task id="LOCAL-00004" summary="feat(路由及样式): 新增空间定位训练框架">
+      <option name="closed" value="true" />
+      <created>1723797270785</created>
+      <option name="number" value="00004" />
+      <option name="presentableId" value="LOCAL-00004" />
+      <option name="project" value="LOCAL" />
+      <updated>1723797270785</updated>
+    </task>
+    <task id="LOCAL-00005" summary="feat(认知任务): 新增空间定位训练框架">
+      <option name="closed" value="true" />
+      <created>1723797335061</created>
+      <option name="number" value="00005" />
+      <option name="presentableId" value="LOCAL-00005" />
+      <option name="project" value="LOCAL" />
+      <updated>1723797335061</updated>
+    </task>
+    <task id="LOCAL-00006" summary="feat(认知任务): 新增广度训练框架">
+      <option name="closed" value="true" />
+      <created>1723797612572</created>
+      <option name="number" value="00006" />
+      <option name="presentableId" value="LOCAL-00006" />
+      <option name="project" value="LOCAL" />
+      <updated>1723797612572</updated>
+    </task>
+    <task id="LOCAL-00007" summary="feat(认知任务): 新增广度训练框架">
+      <option name="closed" value="true" />
+      <created>1723798037413</created>
+      <option name="number" value="00007" />
+      <option name="presentableId" value="LOCAL-00007" />
+      <option name="project" value="LOCAL" />
+      <updated>1723798037413</updated>
+    </task>
+    <task id="LOCAL-00008" summary="feat(认知任务): 空间定位算法实现">
+      <option name="closed" value="true" />
+      <created>1723805618287</created>
+      <option name="number" value="00008" />
+      <option name="presentableId" value="LOCAL-00008" />
+      <option name="project" value="LOCAL" />
+      <updated>1723805618287</updated>
+    </task>
+    <task id="LOCAL-00009" summary="feat(认知任务): init">
+      <option name="closed" value="true" />
+      <created>1723858294672</created>
+      <option name="number" value="00009" />
+      <option name="presentableId" value="LOCAL-00009" />
+      <option name="project" value="LOCAL" />
+      <updated>1723858294672</updated>
+    </task>
+    <task id="LOCAL-00010" summary="feat(认知任务): init">
+      <option name="closed" value="true" />
+      <created>1724028305315</created>
+      <option name="number" value="00010" />
+      <option name="presentableId" value="LOCAL-00010" />
+      <option name="project" value="LOCAL" />
+      <updated>1724028305315</updated>
+    </task>
+    <task id="LOCAL-00011" summary="feat(认知任务): init">
+      <option name="closed" value="true" />
+      <created>1724028617479</created>
+      <option name="number" value="00011" />
+      <option name="presentableId" value="LOCAL-00011" />
+      <option name="project" value="LOCAL" />
+      <updated>1724028617479</updated>
+    </task>
+    <task id="LOCAL-00012" summary="feat(认知任务): 完成后端联调API搭建、完成main页面优化">
+      <option name="closed" value="true" />
+      <created>1724048619646</created>
+      <option name="number" value="00012" />
+      <option name="presentableId" value="LOCAL-00012" />
+      <option name="project" value="LOCAL" />
+      <updated>1724048619646</updated>
+    </task>
+    <task id="LOCAL-00013" summary="feat(认知任务): 完成图片拼图的页面构建">
+      <option name="closed" value="true" />
+      <created>1724060810431</created>
+      <option name="number" value="00013" />
+      <option name="presentableId" value="LOCAL-00013" />
+      <option name="project" value="LOCAL" />
+      <updated>1724060810431</updated>
+    </task>
+    <task id="LOCAL-00014" summary="feat(认知任务): 组件TS 更新">
+      <option name="closed" value="true" />
+      <created>1724060939993</created>
+      <option name="number" value="00014" />
+      <option name="presentableId" value="LOCAL-00014" />
+      <option name="project" value="LOCAL" />
+      <updated>1724060939993</updated>
+    </task>
+    <task id="LOCAL-00015" summary="feat(认知任务): 完成后端联调API搭建、完成main页面优化">
+      <option name="closed" value="true" />
+      <created>1724061022044</created>
+      <option name="number" value="00015" />
+      <option name="presentableId" value="LOCAL-00015" />
+      <option name="project" value="LOCAL" />
+      <updated>1724061022044</updated>
+    </task>
+    <task id="LOCAL-00016" summary="feat(认知任务): 组件更新">
+      <option name="closed" value="true" />
+      <created>1724062207151</created>
+      <option name="number" value="00016" />
+      <option name="presentableId" value="LOCAL-00016" />
+      <option name="project" value="LOCAL" />
+      <updated>1724062207151</updated>
+    </task>
+    <task id="LOCAL-00017" summary="feat(认知任务): 1、拼图图片更改 2、广度训练页面优化">
+      <option name="closed" value="true" />
+      <created>1724065221014</created>
+      <option name="number" value="00017" />
+      <option name="presentableId" value="LOCAL-00017" />
+      <option name="project" value="LOCAL" />
+      <updated>1724065221014</updated>
+    </task>
+    <task id="LOCAL-00018" summary="feat(认知任务): 组件文件更新">
+      <option name="closed" value="true" />
+      <created>1724065373975</created>
+      <option name="number" value="00018" />
+      <option name="presentableId" value="LOCAL-00018" />
+      <option name="project" value="LOCAL" />
+      <updated>1724065373975</updated>
+    </task>
+    <task id="LOCAL-00019" summary="feat(认知任务): 图片拼图文件修改">
+      <option name="closed" value="true" />
+      <created>1724065561729</created>
+      <option name="number" value="00019" />
+      <option name="presentableId" value="LOCAL-00019" />
+      <option name="project" value="LOCAL" />
+      <updated>1724065561729</updated>
+    </task>
+    <task id="LOCAL-00020" summary="feat(认知任务): 图片拼图、空间定向接口对接及页面优化完成">
+      <option name="closed" value="true" />
+      <created>1724130157160</created>
+      <option name="number" value="00020" />
+      <option name="presentableId" value="LOCAL-00020" />
+      <option name="project" value="LOCAL" />
+      <updated>1724130157160</updated>
+    </task>
+    <task id="LOCAL-00021" summary="feat(认知任务): 完成图片命名任务">
+      <option name="closed" value="true" />
+      <created>1724153306659</created>
+      <option name="number" value="00021" />
+      <option name="presentableId" value="LOCAL-00021" />
+      <option name="project" value="LOCAL" />
+      <updated>1724153306659</updated>
+    </task>
+    <task id="LOCAL-00022" summary="feat(认知任务): 优化图片命名音效逻辑">
+      <option name="closed" value="true" />
+      <created>1724153879301</created>
+      <option name="number" value="00022" />
+      <option name="presentableId" value="LOCAL-00022" />
+      <option name="project" value="LOCAL" />
+      <updated>1724153879301</updated>
+    </task>
+    <task id="LOCAL-00023" summary="feat(认知任务): 更新页面名称、优化广度训练的TS类型">
+      <option name="closed" value="true" />
+      <created>1724154551752</created>
+      <option name="number" value="00023" />
+      <option name="presentableId" value="LOCAL-00023" />
+      <option name="project" value="LOCAL" />
+      <updated>1724154551752</updated>
+    </task>
+    <task id="LOCAL-00024" summary="feat(认知任务): 部署服务后优化">
+      <option name="closed" value="true" />
+      <created>1724159852777</created>
+      <option name="number" value="00024" />
+      <option name="presentableId" value="LOCAL-00024" />
+      <option name="project" value="LOCAL" />
+      <updated>1724159852777</updated>
+    </task>
+    <task id="LOCAL-00025" summary="feat(认知任务): 优化">
+      <option name="closed" value="true" />
+      <created>1724394126886</created>
+      <option name="number" value="00025" />
+      <option name="presentableId" value="LOCAL-00025" />
+      <option name="project" value="LOCAL" />
+      <updated>1724394126886</updated>
+    </task>
+    <task id="LOCAL-00026" summary="feat(认知任务): 优化">
+      <option name="closed" value="true" />
+      <created>1724396434546</created>
+      <option name="number" value="00026" />
+      <option name="presentableId" value="LOCAL-00026" />
+      <option name="project" value="LOCAL" />
+      <updated>1724396434546</updated>
+    </task>
+    <task id="LOCAL-00027" summary="feat(认知任务): 优化">
+      <option name="closed" value="true" />
+      <created>1726126542723</created>
+      <option name="number" value="00027" />
+      <option name="presentableId" value="LOCAL-00027" />
+      <option name="project" value="LOCAL" />
+      <updated>1726126542723</updated>
+    </task>
+    <option name="localTasksCounter" value="28" />
+    <servers />
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="3" />
+  </component>
+  <component name="Vcs.Log.Tabs.Properties">
+    <option name="RECENT_FILTERS">
+      <map>
+        <entry key="Branch">
+          <value>
+            <list>
+              <RecentGroup>
+                <option name="FILTER_VALUES">
+                  <option value="20240820-Jutarry" />
+                </option>
+              </RecentGroup>
+              <RecentGroup>
+                <option name="FILTER_VALUES">
+                  <option value="origin/20240817-Jutarry" />
+                </option>
+              </RecentGroup>
+            </list>
+          </value>
+        </entry>
+      </map>
+    </option>
+    <option name="TAB_STATES">
+      <map>
+        <entry key="MAIN">
+          <value>
+            <State>
+              <option name="FILTERS">
+                <map>
+                  <entry key="branch">
+                    <value>
+                      <list>
+                        <option value="20240820-Jutarry" />
+                      </list>
+                    </value>
+                  </entry>
+                </map>
+              </option>
+            </State>
+          </value>
+        </entry>
+      </map>
+    </option>
+  </component>
+  <component name="VcsManagerConfiguration">
+    <MESSAGE value="新增文件" />
+    <MESSAGE value="feat" />
+    <MESSAGE value="倒计时组件" />
+    <MESSAGE value="feat:倒计时组件&#10;创建倒计时组件" />
+    <MESSAGE value="feat(组件类): 新增倒计时组件" />
+    <MESSAGE value="feat(图片): 新增空间定位训练图片" />
+    <MESSAGE value="feat(路由及样式): 新增空间定位训练框架" />
+    <MESSAGE value="feat(认知任务): 新增空间定位训练框架" />
+    <MESSAGE value="feat(认知任务): 新增广度训练框架" />
+    <MESSAGE value="feat(认知任务): 空间定位算法实现" />
+    <MESSAGE value="feat(认知任务): init" />
+    <MESSAGE value="feat(认知任务): 完成图片拼图的页面构建" />
+    <MESSAGE value="feat(认知任务): 组件TS 更新" />
+    <MESSAGE value="feat(认知任务): 完成后端联调API搭建、完成main页面优化" />
+    <MESSAGE value="feat(认知任务): 组件更新" />
+    <MESSAGE value="feat(认知任务): 1、拼图图片更改 2、广度训练页面优化" />
+    <MESSAGE value="feat(认知任务): 组件文件更新" />
+    <MESSAGE value="feat(认知任务): 图片拼图文件修改" />
+    <MESSAGE value="feat(认知任务): 完成图片命名任务" />
+    <MESSAGE value="feat(认知任务): 图片拼图、空间定向接口对接及页面优化完成" />
+    <MESSAGE value="feat(认知任务): 1" />
+    <MESSAGE value="feat(认知任务): 优化图片命名音效逻辑" />
+    <MESSAGE value="feat(认知任务): 更新页面名称、优化广度训练的TS类型" />
+    <MESSAGE value="feat(认知任务): 部署服务后优化" />
+    <MESSAGE value="feat(认知任务): 优化" />
+    <option name="LAST_COMMIT_MESSAGE" value="feat(认知任务): 优化" />
+  </component>
+</project>

+ 4 - 0
.lintstagedrc

@@ -0,0 +1,4 @@
+{
+  "*.{ts,tsx,vue}": "eslint --cache --fix",
+  "*.{css,scss,vue}": "stylelint --cache --fix"
+}

+ 1 - 0
.node-version

@@ -0,0 +1 @@
+20

+ 1 - 1
.npmrc

@@ -1,3 +1,3 @@
 shamefully-hoist=true
 strict-peer-dependencies=false
-package-manager-strict=false
+engine-strict=true

+ 0 - 9
.vscode/extensions.json

@@ -1,9 +0,0 @@
-{
-  "recommendations": [
-    "Vue.volar",
-    "antfu.unocss",
-    "simonhe.common-intellisense",
-    "lokalise.i18n-ally",
-    "antfu.iconify"
-  ]
-}

+ 0 - 72
.vscode/settings.json

@@ -1,72 +0,0 @@
-{
-  // Enable the ESlint flat config support
-  "eslint.useFlatConfig": true,
-
-  // Disable the default formatter, use eslint instead
-  "prettier.enable": false,
-  "editor.formatOnSave": false,
-
-  // Auto fix
-  "editor.codeActionsOnSave": {
-    "source.fixAll": "explicit",
-    "source.organizeImports": "never"
-  },
-
-  // Silent the stylistic rules in you IDE, but still auto fix them
-  "eslint.rules.customizations": [
-    { "rule": "style/*", "severity": "off" },
-    { "rule": "*-indent", "severity": "off" },
-    { "rule": "*-spacing", "severity": "off" },
-    { "rule": "*-spaces", "severity": "off" },
-    { "rule": "*-order", "severity": "off" },
-    { "rule": "*-dangle", "severity": "off" },
-    { "rule": "*-newline", "severity": "off" },
-    { "rule": "*quotes", "severity": "off" },
-    { "rule": "*semi", "severity": "off" }
-  ],
-
-  // Enable eslint for all supported languages
-  "eslint.validate": [
-    "javascript",
-    "javascriptreact",
-    "typescript",
-    "typescriptreact",
-    "vue",
-    "html",
-    "markdown",
-    "json",
-    "jsonc",
-    "yaml",
-    "toml",
-    "xml",
-    "gql",
-    "graphql",
-    "astro",
-    "css",
-    "less",
-    "scss",
-    "pcss",
-    "postcss"
-  ],
-
-  // Specify the UI library you need to prompt
-  "common-intellisense.showSlots": false,
-  "common-intellisense.ui": [
-    "vant4"
-  ],
-
-  // Configuration of i18n i18n-ally
-  "i18n-ally.enabledParsers": ["json"],
-  "i18n-ally.displayLanguage": "zh-CN",
-  "i18n-ally.localesPaths": [
-    "src/locales"
-  ],
-  "i18n-ally.keystyle": "nested",
-
-  // Markdownlint rules
-  "markdownlint.config": {
-    "default": true,
-    "MD033": false,
-    "MD041": false
-  }
-}

+ 1 - 1
LICENSE

@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2022 Charlie Wang
+Copyright (c) 2024 fantastic-mobile
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal

+ 9 - 229
README.md

@@ -1,229 +1,9 @@
-<div align="center">
-
-<img src="https://cdn.jsdelivr.net/gh/easy-temps/easy-static/cover.png" alt="cover" />
-
-<h1 align="center">insomnia-cognition-h5</h1>
-
-English / [简体中文](./README.zh-CN.md)
-
-An mobile web apps template based on the Vue 3 ecosystem.
-
-一个基于 Vue 3 生态系统的移动 web 应用模板,帮助你快速完成业务开发。
-
-<p>
-<img src="https://img.shields.io/github/license/easy-temps/vue3-vant-mobile" alt="license" />
-<img src="https://img.shields.io/github/package-json/v/easy-temps/vue3-vant-mobile" alt="version" />
-<img src="https://img.shields.io/github/repo-size/easy-temps/vue3-vant-mobile" alt="repo-size" />
-<img src="https://img.shields.io/github/languages/top/easy-temps/vue3-vant-mobile" alt="languages" />
-<img src="https://img.shields.io/github/issues-closed/easy-temps/vue3-vant-mobile" alt="issues" />
-</p>
-
-[文档](https://easy-temps.github.io/easy-docs/vue3-vant-mobile/) / [交流](https://github.com/easy-temps/vue3-vant-mobile/issues/56) / [反馈](https://github.com/easy-temps/vue3-vant-mobile/issues)
-
-<a href="https://vue3-vant-mobile.netlify.app">Live Demo</a>
-
-[![Netlify Status](https://api.netlify.com/api/v1/badges/e6828bd2-2904-4c3e-a67c-b97d32aa1275/deploy-status)](https://app.netlify.com/sites/vue3-vant-mobile/deploys)
-
-</div>
-
-<br>
-
-## Features
-
-- ⚡️ [Vue 3](https://github.com/vuejs/core), [Vite 5](https://github.com/vitejs/vite), [pnpm](https://pnpm.io/), [esbuild](https://github.com/evanw/esbuild) - born with fastness
-
-- 🗂 [File based routing](./src/router)
-
-- 📦 [Components auto importing](./src/components)
-
-- 🍍 [State Management via Pinia](https://pinia.vuejs.org)
-
-- 📲 [PWA](https://github.com/antfu/vite-plugin-pwa)
-
-- 🎨 [UnoCSS](https://github.com/antfu/unocss) - the instant on-demand atomic CSS engine
-
-- 🌍 [I18n ready](./src/locales)
-
-- 🔥 Use the [new `<script setup>` syntax](https://github.com/vuejs/rfcs/pull/227)
-
-- 📥 [APIs auto importing](https://github.com/antfu/unplugin-auto-import) - use Composition API and others directly
-
-- 💪 TypeScript, of course
-
-- ⚙️ Unit Testing with [Vitest](https://github.com/vitest-dev/vitest)
-
-- 💾 [Mock](https://github.com/pengzhanbo/vite-plugin-mock-dev-server) server Support
-
-- 🌈 Git [hooks](./.husky) - lint and commit
-
-- 🪶 [Vant](https://github.com/youzan/vant) - Vue UI library for mobile web apps
-
-- 🔭 [vConsole](https://github.com/vadxq/vite-plugin-vconsole) - the developer tool for mobile web page
-
-- 📱 Browser adaptation - use viewport vw/vh units
-
-- 💻 [Desktop optimization](https://github.com/wswmsword/postcss-mobile-forever) - the mobile area
-
-- 🌓 Dark Mode Support
-
-- 🛡️ Configure [ESM](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules) as default
-
-- ☁️ Deploy on [Netlify](https://www.netlify.com), zero-config
-
-<br>
-
-## Pre-packed
-
-### UI Frameworks
-
-- [UnoCSS](https://github.com/antfu/unocss) - The instant on-demand atomic CSS engine
-  - [`@unocss/preset-rem-to-px`](https://github.com/unocss/unocss/tree/main/packages/preset-rem-to-px) - Converts rem to px for all utilities
-  - [`eslint-plugin-unocss`](https://github.com/devunt/eslint-plugin-unocss) - ESLint plugin for UnoCSS
-- [Vant](https://github.com/youzan/vant) - Vue UI library for mobile web apps
-  - [`vant-touch-emulator`](https://github.com/youzan/vant/tree/main/packages/vant-touch-emulator) - Simulate mobile touch events on the desktop
-  - [`vant-use`](https://github.com/youzan/vant/tree/main/packages/vant-use) - Built-in composition APIs of Vant
-
-### Plugins
-
-- [Vue Router](https://github.com/vuejs/router)
-  - [`unplugin-vue-router`](https://github.com/posva/unplugin-vue-router) - file system based routing
-- [Pinia](https://pinia.vuejs.org) - Intuitive, type safe, light and flexible Store for Vue using the composition api
-  - [`pinia-plugin-persistedstate`](https://github.com/prazdevs/pinia-plugin-persistedstate) -  Configurable persistence and rehydration of Pinia stores
-- [Vue I18n](https://github.com/intlify/vue-i18n-next) - Internationalization
-  - [`unplugin-vue-i18n`](https://github.com/intlify/bundle-tools/tree/main/packages/unplugin-vue-i18n) - unplugin for Vue I18n
-- [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) - components auto import
-- [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import) - Directly use Vue Composition API and others without importing
-- [vite-plugin-vconsole](https://github.com/vadxq/vite-plugin-vconsole) - A lightweight, extendable front-end developer tool for mobile web page
-- [vite-plugin-mock-dev-server](https://github.com/pengzhanbo/vite-plugin-mock-dev-server) - Vite Plugin for API mock dev server
-- [postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) - To adapt different displays by one mobile viewport
-- [vite-plugin-vue-devtools](https://github.com/vuejs/devtools-next) - Designed to enhance the Vue developer experience
-- [vueuse](https://github.com/antfu/vueuse) - collection of useful composition APIs
-- [@unhead/vue](https://github.com/unjs/unhead) - manipulate document head reactively
-- [vite-plugin-pwa](https://github.com/antfu/vite-plugin-pwa) - PWA
-- [vite-plugin-sitemap](https://github.com/jbaubree/vite-plugin-sitemap) - sitemap and robots generator
-
-### Coding Style
-
-- Use Composition API with [`<script setup>` SFC syntax](https://github.com/vuejs/rfcs/pull/227)
-- [ESLint](https://eslint.org/) with [@antfu/eslint-config](https://github.com/antfu/eslint-config), single quotes, no semi
-
-### Dev tools
-
-- [TypeScript](https://www.typescriptlang.org/)
-- [Vitest](https://github.com/vitest-dev/vitest) - Unit testing powered by Vite
-- [pnpm](https://pnpm.js.org/) - fast, disk space efficient package manager
-- [Netlify](https://www.netlify.com/) - zero-config deployment
-- [VS Code Extensions](./.vscode/extensions.json)
-  - [Vite](https://marketplace.visualstudio.com/items?itemName=antfu.vite) - Fire up Vite server automatically
-  - [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) - Vue 3 `<script setup>` IDE support
-  - [Iconify IntelliSense](https://marketplace.visualstudio.com/items?itemName=antfu.iconify) - Icon inline display and autocomplete
-  - [i18n Ally](https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally) - All in one i18n support
-  - [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
-
-## Try it now
-
-> vue3-vant-mobile requires Node 18+
-
-### GitHub Template
-
-[Create a repo from this template on GitHub](https://github.com/easy-temps/vue3-vant-mobile/generate)
-
-### Clone to local
-
-If you prefer to do it manually with the cleaner git history
-
-```bash
-npx tiged easy-temps/vue3-vant-mobile my-mobile-app
-cd my-mobile-app
-pnpm i # If you don't have pnpm installed, run: npm install -g pnpm
-```
-
-## Checklist
-
-When you use this template, try follow the checklist to update your info properly
-
-- [ ] Change the author name in `LICENSE`
-- [ ] Change the title in `index.html`
-- [ ] Change the hostname in `vite.config.ts`
-- [ ] Change the favicon in `public`
-- [ ] Clean up the READMEs and remove routes
-
-And, enjoy :)
-
-## Usage
-
-### Development
-
-Just run and visit <http://localhost:3000>
-
-```bash
-pnpm dev
-```
-
-### Build
-
-To build the App, run
-
-```bash
-pnpm build
-```
-
-And you will see the generated file in `dist` that ready to be served.
-
-### Deploy on Netlify
-
-Go to [Netlify](https://app.netlify.com/start) and select your clone, `OK` along the way, and your App will be live in a minute.
-
-## Community
-
-We recommend that [issue](https://github.com/easy-temps/vue3-vant-mobile/issues) be used for problem feedback, or Wechat group.
-
-<img style="width: 25%" src="https://cdn.jsdelivr.net/gh/easy-temps/easy-static/community.png" alt="community" />
-
-## Donation ☕
-
-[Buy Me a Coffee](https://github.com/CharleeWa/sponsor)
-
-<h2 align="center">💝 Our Sponsors 💝</h2>
-
-<p align="center">
-Your sponsorship will help us continue to iterate on this exciting project! 🚀
-</p>
-
-<p align="center">
-<a href="https://github.com/keyFeng"><img src="https://avatars.githubusercontent.com/u/52267976?v=4" width="60px" alt="keyFeng" /></a>
-<a href="https://github.com/ljt990218"><img src="https://avatars.githubusercontent.com/u/50509815?v=4" width="60px" alt="ljt990218" /></a>
-<a href="https://github.com/heked"><img src="https://avatars.githubusercontent.com/u/14127731?v=4" width="60px" alt="heked" /></a>
-</p>
-
-<h2 align="center">
-💪 Contributors 💪
-</h2>
-
-<p align="center">
-Our contributors have made this project better. Thank you! 🙏
-</p>
-
-<p align="center">
-<a href="https://github.com/CharleeWa"><img src="https://avatars.githubusercontent.com/u/22477554?v=4" width="60px" alt="CharleeWa" /></a>
-<a href="https://github.com/ljt990218"><img src="https://avatars.githubusercontent.com/u/50509815?v=4" width="60px" alt="ljt990218" /></a>
-<a href="https://github.com/wswmsword"><img src="https://avatars.githubusercontent.com/u/26893092?v=4" width="60px" alt="wswmsword" /></a>
-<a href="https://github.com/weiq"><img src="https://avatars.githubusercontent.com/u/1697158?v=4" width="60px" alt="weiq" /></a>
-<a href="https://github.com/SublimeCT"><img src="https://avatars.githubusercontent.com/u/20380890?v=4" width="60px" alt="SublimeCT" /></a>
-<a href="https://github.com/ReginYuan"><img src="https://avatars.githubusercontent.com/u/49477488?v=4" width="60px" alt="ReginYuan" /></a>
-<a href="https://github.com/smartsf"><img src="https://avatars.githubusercontent.com/u/19995400?v=4" width="60px" alt="smartsf" /></a>
-<a href="https://github.com/Kysen777"><img src="https://avatars.githubusercontent.com/u/63892082?v=4" width="60px" alt="Kysen777" /></a>
-<a href="https://github.com/Leezon"><img src="https://avatars.githubusercontent.com/u/38120280?v=4" width="60px" alt="Leezon" /></a>
-<a href="https://github.com/AlphaYoung111"><img src="https://avatars.githubusercontent.com/u/54132313?v=4" width="60px" alt="AlphaYoung111" /></a>
-<a href="https://github.com/leo4developer"><img src="https://avatars.githubusercontent.com/u/15160478?v=4" width="60px" alt="leo4developer" /></a>
-<a href="https://github.com/InsHomePgup"><img src="https://avatars.githubusercontent.com/u/47906083?v=4" width="60px" alt="InsHomePgup" /></a>
-<a href="https://github.com/wowping"><img src="https://avatars.githubusercontent.com/u/137802961?v=4" width="60px" alt="wowping" /></a>
-<a href="https://github.com/ChunyuPCY"><img src="https://avatars.githubusercontent.com/u/21986942?v=4" width="60px" alt="ChunyuPCY" /></a>
-<a href="https://github.com/qiyue2015"><img src="https://avatars.githubusercontent.com/u/11554433?v=4" width="60px" alt="qiyue2015" /></a>
-<a href="https://github.com/pyQianYi"><img src="https://avatars.githubusercontent.com/u/57526688?v=4" width="60px" alt="pyQianYi" /></a>
-<a href="https://github.com/xyy94813"><img src="https://avatars.githubusercontent.com/u/17971352?v=4" width="60px" alt="xyy94813" /></a>
-</p>
-
-## License
-
-[MIT](./LICENSE) License
+## 特点
+
+- 可自由替换 UI 组件库,默认使用 Vant
+- 提供页面整体布局组件,顶部导航栏、顶部标签栏、返回顶部、记录滚动位置等特性
+- 提供系统配置文件,轻松实现个性化定制
+- 基于文件系统的路由
+- 支持全方位权限验证
+- 内置最佳页面缓存方案
+- 轻松实现国际化多语言适配

+ 0 - 229
README.zh-CN.md

@@ -1,229 +0,0 @@
-<div align="center">
-
-<img src="https://cdn.jsdelivr.net/gh/easy-temps/easy-static/cover.png" alt="cover" />
-
-<h1 align="center">vue3-vant-mobile</h1>
-
-[English](./README.md) / 简体中文
-
-An mobile web apps template based on the Vue 3 ecosystem.
-
-一个基于 Vue 3 生态系统的移动 web 应用模板,帮助你快速完成业务开发。
-
-<p>
-<img src="https://img.shields.io/github/license/easy-temps/vue3-vant-mobile" alt="license" />
-<img src="https://img.shields.io/github/package-json/v/easy-temps/vue3-vant-mobile" alt="version" />
-<img src="https://img.shields.io/github/repo-size/easy-temps/vue3-vant-mobile" alt="repo-size" />
-<img src="https://img.shields.io/github/languages/top/easy-temps/vue3-vant-mobile" alt="languages" />
-<img src="https://img.shields.io/github/issues-closed/easy-temps/vue3-vant-mobile" alt="issues" />
-</p>
-
-[文档](https://easy-temps.github.io/easy-docs/vue3-vant-mobile/) / [交流](https://github.com/easy-temps/vue3-vant-mobile/issues/56) / [反馈](https://github.com/easy-temps/vue3-vant-mobile/issues)
-
-<a href="https://vue3-vant-mobile.netlify.app">在线 Demo</a>
-
-[![Netlify Status](https://api.netlify.com/api/v1/badges/e6828bd2-2904-4c3e-a67c-b97d32aa1275/deploy-status)](https://app.netlify.com/sites/vue3-vant-mobile/deploys)
-
-</div>
-
-<br>
-
-## Features
-
-- ⚡️ [Vue 3](https://github.com/vuejs/core), [Vite 5](https://github.com/vitejs/vite), [pnpm](https://pnpm.io/), [esbuild](https://github.com/evanw/esbuild) - 就是快!
-
-- 🗂 [基于文件的路由](./src/router)
-
-- 📦 [组件自动化加载](./src/components)
-
-- 🍍 [使用 Pinia 的状态管理](https://pinia.vuejs.org)
-
-- 📲 [PWA](https://github.com/antfu/vite-plugin-pwa)
-
-- 🎨 [UnoCSS](https://github.com/antfu/unocss) - 高性能且极具灵活性的即时原子化 CSS 引擎
-
-- 🌍 [I18n 国际化开箱即用](./src/locales)
-
-- 🔥 使用 [新的 `<script setup>` 语法](https://github.com/vuejs/rfcs/pull/227)
-
-- 📥 [API 自动加载](https://github.com/antfu/unplugin-auto-import) - 直接使用 Composition API 无需引入
-
-- 💪 TypeScript, 当然
-
-- ⚙️ 使用 [Vitest](https://github.com/vitest-dev/vitest) 进行单元测试
-
-- 💾 [本地数据模拟](https://github.com/pengzhanbo/vite-plugin-mock-dev-server)的支持
-
-- 🌈 Git [hooks](./.husky) - 提交代码 eslint 检测 和 提交规范检测
-
-- 🪶 [Vant](https://github.com/youzan/vant) - 移动端 Vue 组件库
-
-- 🔭 [vConsole](https://github.com/vadxq/vite-plugin-vconsole) - 移动端网页开发工具
-
-- 📱 浏览器适配 - 使用 viewport vw/vh 单位布局
-
-- 💻 [桌面端优化](https://github.com/wswmsword/postcss-mobile-forever) - 处理为移动端视图
-
-- 🌓 支持深色模式
-
-- 🛡️ 将 [ESM](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules) 设为默认
-
-- ☁️ 零配置部署 [Netlify](https://www.netlify.com)
-
-<br>
-
-## 预配置
-
-### UI 框架
-
-- [UnoCSS](https://github.com/antfu/unocss) - 高性能且极具灵活性的即时原子化 CSS 引擎
-  - [`@unocss/preset-rem-to-px`](https://github.com/unocss/unocss/tree/main/packages/preset-rem-to-px) - 将所有实用程序的 rem 转换为 px
-  - [`eslint-plugin-unocss`](https://github.com/devunt/eslint-plugin-unocss) - Unocss 的 ESLint 插件
-- [Vant](https://github.com/youzan/vant) - 移动端 Vue 组件库
-  - [`vant-touch-emulator`](https://github.com/youzan/vant/tree/main/packages/vant-touch-emulator) - 在桌面端上模拟移动端 touch 事件
-  - [`vant-use`](https://github.com/youzan/vant/tree/main/packages/vant-use) - Vant 内置的组合式 API
-
-### 插件
-
-- [Vue Router](https://github.com/vuejs/router)
-  - [`unplugin-vue-router`](https://github.com/posva/unplugin-vue-router) - 以文件系统为基础的路由
-- [Pinia](https://pinia.vuejs.org) - 直接的, 类型安全的, 使用 Composition API 的轻便灵活的 Vue 状态管理库
-  - [`pinia-plugin-persistedstate`](https://github.com/prazdevs/pinia-plugin-persistedstate) -  适用于 Pinia 的持久化存储插件
-- [Vue I18n](https://github.com/intlify/vue-i18n-next) - 国际化
-  - [`unplugin-vue-i18n`](https://github.com/intlify/bundle-tools/tree/main/packages/unplugin-vue-i18n) - Vue I18n 的 Vite 插件
-- [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) - 自动加载组件
-- [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import) - 直接使用 Composition API 等,无需导入
-- [vite-plugin-vconsole](https://github.com/vadxq/vite-plugin-vconsole) - vConsole 的 vite 插件
-- [vite-plugin-mock-dev-server](https://github.com/pengzhanbo/vite-plugin-mock-dev-server) - vite mock 开发服务(mock-dev-server)插件
-- [postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) - 一款 PostCSS 插件,将固定尺寸的移动端视图转为具有最大宽度的可伸缩的移动端视图
-- [vite-plugin-vue-devtools](https://github.com/vuejs/devtools-next) - 旨在增强Vue开发者体验的Vite插件
-- [vueuse](https://github.com/antfu/vueuse) - 实用的 Composition API 工具合集
-- [@unhead/vue](https://github.com/unjs/unhead) - 响应式地操作文档头信息
-- [vite-plugin-pwa](https://github.com/antfu/vite-plugin-pwa) - PWA
-- [vite-plugin-sitemap](https://github.com/jbaubree/vite-plugin-sitemap) - sitemap 和 robots 生成器
-
-### 编码风格
-
-- 使用 Composition API 地 [`<script setup>` SFC 语法](https://github.com/vuejs/rfcs/pull/227)
-- [ESLint](https://eslint.org/) 配置为 [@antfu/eslint-config](https://github.com/antfu/eslint-config), 单引号, 无分号
-
-### 开发工具
-
-- [TypeScript](https://www.typescriptlang.org/)
-- [Vitest](https://github.com/vitest-dev/vitest) - 基于 Vite 的单元测试框架
-- [pnpm](https://pnpm.js.org/) - 快, 节省磁盘空间的包管理器
-- [Netlify](https://www.netlify.com/) - 零配置的部署
-- [VS Code Extensions](./.vscode/extensions.json)
-  - [Vite](https://marketplace.visualstudio.com/items?itemName=antfu.vite) - 自动启动 Vite 服务器
-  - [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) - Vue 3 `<script setup>` IDE 支持
-  - [Iconify IntelliSense](https://marketplace.visualstudio.com/items?itemName=antfu.iconify) - 图标内联显示和自动补全
-  - [i18n Ally](https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally) - 多合一的 I18n 支持
-  - [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
-
-## 现在可以试试
-
-> vue3-vant-mobile 需要 Node 版本 18+
-
-### GitHub 模板
-
-[使用这个模板创建仓库](https://github.com/easy-temps/vue3-vant-mobile/generate)
-
-### 克隆到本地
-
-如果您更喜欢使用更干净的 git 历史记录手动执行此操作
-
-```bash
-npx tiged easy-temps/vue3-vant-mobile my-mobile-app
-cd my-mobile-app
-pnpm i # 如果你没装过 pnpm, 可以先运行: npm install -g pnpm
-```
-
-## 清单
-
-使用此模板时,请尝试按照清单正确更新您自己的信息
-
-- [ ] 在 `LICENSE` 中改变作者名
-- [ ] 在 `index.html` 中改变标题
-- [ ] 在 `vite.config.ts` 更改主机名
-- [ ] 在 `public` 目录下改变favicon
-- [ ] 整理 README 并删除路由
-
-紧接着, 享受吧 :)
-
-## 使用
-
-### 开发
-
-只需要执行以下命令就可以在 <http://localhost:3000> 中看到
-
-```bash
-pnpm dev
-```
-
-### 构建
-
-构建该应用只需要执行以下命令
-
-```bash
-pnpm build
-```
-
-然后你会看到用于发布的 `dist` 文件夹被生成。
-
-### 部署到 Netlify
-
-前往 [Netlify](https://app.netlify.com/start) 并选择你的仓库, 一路 `OK` 下去,稍等一下后,你的应用将被创建。
-
-## 社区
-
-我们推荐使用 [议题](https://github.com/easy-temps/vue3-vant-mobile/issues) 来反馈问题, 或者您也可以通过微信群联系我们。
-
-<img style="width: 25%" src="https://cdn.jsdelivr.net/gh/easy-temps/easy-static/community.png" alt="community" />
-
-## 捐赠 ☕
-
-[请我喝一杯咖啡](https://github.com/CharleeWa/sponsor)
-
-<h2 align="center">💝 我们的赞助者 💝</h2>
-
-<p align="center">
-您的赞助将帮助我们继续迭代这个令人兴奋的项目! 🚀
-</p>
-
-<p align="center">
-<a href="https://github.com/keyFeng"><img src="https://avatars.githubusercontent.com/u/52267976?v=4" width="60px" alt="keyFeng" /></a>
-<a href="https://github.com/ljt990218"><img src="https://avatars.githubusercontent.com/u/50509815?v=4" width="60px" alt="ljt990218" /></a>
-<a href="https://github.com/heked"><img src="https://avatars.githubusercontent.com/u/14127731?v=4" width="60px" alt="heked" /></a>
-</p>
-
-<h2 align="center">
-💪 贡献者 💪
-</h2>
-
-<p align="center">
-我们的贡献者使这个项目变得更好。谢谢你! 🙏
-</p>
-
-<p align="center">
-<a href="https://github.com/CharleeWa"><img src="https://avatars.githubusercontent.com/u/22477554?v=4" width="60px" alt="CharleeWa" /></a>
-<a href="https://github.com/ljt990218"><img src="https://avatars.githubusercontent.com/u/50509815?v=4" width="60px" alt="ljt990218" /></a>
-<a href="https://github.com/wswmsword"><img src="https://avatars.githubusercontent.com/u/26893092?v=4" width="60px" alt="wswmsword" /></a>
-<a href="https://github.com/weiq"><img src="https://avatars.githubusercontent.com/u/1697158?v=4" width="60px" alt="weiq" /></a>
-<a href="https://github.com/SublimeCT"><img src="https://avatars.githubusercontent.com/u/20380890?v=4" width="60px" alt="SublimeCT" /></a>
-<a href="https://github.com/ReginYuan"><img src="https://avatars.githubusercontent.com/u/49477488?v=4" width="60px" alt="ReginYuan" /></a>
-<a href="https://github.com/smartsf"><img src="https://avatars.githubusercontent.com/u/19995400?v=4" width="60px" alt="smartsf" /></a>
-<a href="https://github.com/Kysen777"><img src="https://avatars.githubusercontent.com/u/63892082?v=4" width="60px" alt="Kysen777" /></a>
-<a href="https://github.com/Leezon"><img src="https://avatars.githubusercontent.com/u/38120280?v=4" width="60px" alt="Leezon" /></a>
-<a href="https://github.com/AlphaYoung111"><img src="https://avatars.githubusercontent.com/u/54132313?v=4" width="60px" alt="AlphaYoung111" /></a>
-<a href="https://github.com/leo4developer"><img src="https://avatars.githubusercontent.com/u/15160478?v=4" width="60px" alt="leo4developer" /></a>
-<a href="https://github.com/InsHomePgup"><img src="https://avatars.githubusercontent.com/u/47906083?v=4" width="60px" alt="InsHomePgup" /></a>
-<a href="https://github.com/wowping"><img src="https://avatars.githubusercontent.com/u/137802961?v=4" width="60px" alt="wowping" /></a>
-<a href="https://github.com/ChunyuPCY"><img src="https://avatars.githubusercontent.com/u/21986942?v=4" width="60px" alt="ChunyuPCY" /></a>
-<a href="https://github.com/qiyue2015"><img src="https://avatars.githubusercontent.com/u/11554433?v=4" width="60px" alt="qiyue2015" /></a>
-<a href="https://github.com/pyQianYi"><img src="https://avatars.githubusercontent.com/u/57526688?v=4" width="60px" alt="pyQianYi" /></a>
-<a href="https://github.com/xyy94813"><img src="https://avatars.githubusercontent.com/u/17971352?v=4" width="60px" alt="xyy94813" /></a>
-</p>
-
-## License
-
-[MIT](./LICENSE) License

+ 0 - 128
build/vite/index.ts

@@ -1,128 +0,0 @@
-import { dirname, resolve } from 'node:path'
-import { fileURLToPath } from 'node:url'
-import process from 'node:process'
-import { unheadVueComposablesImports } from '@unhead/vue'
-import legacy from '@vitejs/plugin-legacy'
-import vue from '@vitejs/plugin-vue'
-import UnoCSS from 'unocss/vite'
-import AutoImport from 'unplugin-auto-import/vite'
-import { VantResolver } from 'unplugin-vue-components/resolvers'
-import Components from 'unplugin-vue-components/vite'
-import { VueRouterAutoImports } from 'unplugin-vue-router'
-import VueRouter from 'unplugin-vue-router/vite'
-import mockDevServerPlugin from 'vite-plugin-mock-dev-server'
-import { VitePWA } from 'vite-plugin-pwa'
-import Sitemap from 'vite-plugin-sitemap'
-import VueDevTools from 'vite-plugin-vue-devtools'
-import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
-import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
-import { createViteVConsole } from './vconsole'
-
-export function createVitePlugins() {
-  return [
-    // https://github.com/posva/unplugin-vue-router
-    VueRouter({
-      extensions: ['.vue'],
-      routesFolder: 'src/pages',
-      dts: 'src/typed-router.d.ts',
-    }),
-
-    vue(),
-
-    // https://github.com/jbaubree/vite-plugin-sitemap
-    Sitemap(),
-
-    // https://github.com/pengzhanbo/vite-plugin-mock-dev-server
-    mockDevServerPlugin(),
-
-    // https://github.com/antfu/unplugin-vue-components
-    Components({
-      extensions: ['vue'],
-      resolvers: [VantResolver()],
-      include: [/\.vue$/, /\.vue\?vue/],
-      dts: 'src/components.d.ts',
-    }),
-
-    // https://github.com/antfu/unplugin-auto-import
-    AutoImport({
-      include: [
-        /\.[tj]sx?$/,
-        /\.vue$/,
-        /\.vue\?vue/,
-      ],
-      imports: [
-        'vue',
-        'vitest',
-        '@vueuse/core',
-        VueRouterAutoImports,
-        {
-          'vue-router/auto': ['useLink'],
-          '@/utils/i18n': ['i18n', 'locale'],
-          'vue-i18n': ['useI18n'],
-        },
-        unheadVueComposablesImports,
-      ],
-      dts: 'src/auto-imports.d.ts',
-      dirs: [
-        'src/composables',
-      ],
-      viteOptimizeDeps: false,
-    }),
-
-    // https://github.com/intlify/bundle-tools/tree/main/packages/unplugin-vue-i18n
-    VueI18nPlugin({
-      // locale messages resource pre-compile option
-      include: resolve(dirname(fileURLToPath(import.meta.url)), '../../src/locales/**'),
-    }),
-
-    legacy({
-      targets: ['defaults', 'not IE 11'],
-    }),
-
-    // https://github.com/antfu/unocss
-    // see uno.config.ts for config
-    UnoCSS(),
-
-    // https://github.com/vadxq/vite-plugin-vconsole
-    createViteVConsole(),
-
-    // https://github.com/vuejs/devtools-next
-    VueDevTools(),
-
-    // https://github.com/antfu/vite-plugin-pwa
-    VitePWA({
-      registerType: 'autoUpdate',
-      includeAssets: ['favicon.svg', 'safari-pinned-tab.svg'],
-      manifest: {
-        name: 'insomnia-cognition-h5',
-        short_name: 'insomnia-cognition-h5',
-        theme_color: '#ffffff',
-        icons: [
-          {
-            src: '/pwa-192x192.png',
-            sizes: '192x192',
-            type: 'image/png',
-          },
-          {
-            src: '/pwa-512x512.png',
-            sizes: '512x512',
-            type: 'image/png',
-          },
-          {
-            src: '/pwa-512x512.png',
-            sizes: '512x512',
-            type: 'image/png',
-            purpose: 'any maskable',
-          },
-        ],
-      },
-    }),
-
-    createSvgIconsPlugin({
-      // Specify the icon folder to be cached
-      iconDirs: [resolve(process.cwd(), 'src/assets/icons')],
-      // Specify symbolId format
-      symbolId: 'icon-[dir]-[name]',
-    }),
-  ]
-}

+ 0 - 24
build/vite/optimize.ts

@@ -1,24 +0,0 @@
-const include = [
-  'axios',
-  'store',
-  'echarts',
-  'lodash-es',
-  'resize-detector',
-  'store/plugins/expire',
-  'vant/es/cell-group/style/index',
-  'vant/es/popup/style/index',
-  'vant/es/picker/style/index',
-  'vant/es/cell/style/index',
-  'vant/es/switch/style/index',
-  'vant/es/space/style/index',
-  'vant/es/button/style/index',
-  'vant/es/empty/style/index',
-  'vant/es/icon/style/index',
-  'vant/es/stepper/style/index',
-]
-
-const exclude = [
-  '@iconify-json/carbon',
-]
-
-export { include, exclude }

+ 0 - 44
build/vite/vconsole.ts

@@ -1,44 +0,0 @@
-import path from 'node:path'
-import { viteVConsole } from 'vite-plugin-vconsole'
-
-export function createViteVConsole() {
-  return viteVConsole({
-    entry: [path.resolve('src/main.ts')],
-    enabled: false,
-    config: {
-      maxLogNumber: 1000,
-      theme: 'light',
-    },
-    // https://github.com/vadxq/vite-plugin-vconsole/issues/21
-    dynamicConfig: {
-      theme: `document.documentElement.classList.contains('dark') ? 'dark' : 'light'`,
-    },
-    eventListener: `
-      const targetElement = document.querySelector('html'); // 择要监听的元素
-      const observerOptions = {
-        attributes: true, // 监听属性变化
-        attributeFilter: ['class'] // 只监听class属性变化
-      };
-
-      // 定义回调函数来处理观察到的变化
-      function handleAttributeChange(mutationsList) {
-        for(let mutation of mutationsList) {
-          if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
-            if (window && window.vConsole) {
-              window.vConsole.dynamicChange.value = new Date().getTime();
-            }
-          }
-        }
-      }
-
-      // 创建观察者实例并传入回调函数
-      const observer = new MutationObserver(handleAttributeChange);
-
-      // 开始观察目标元素
-      observer.observe(targetElement, observerOptions);
-
-      // 当不再需要观察时,停止观察
-      // observer.disconnect();
-    `,
-  })
-}

+ 28 - 13
eslint.config.js

@@ -1,16 +1,31 @@
 import antfu from '@antfu/eslint-config'
 
-export default antfu({
-  // enable UnoCSS support
-  // https://unocss.dev/integrations/vscode
-  unocss: true,
-
-  formatters: {
-    css: true,
+export default antfu(
+  {
+    unocss: true,
+    ignores: [
+      'public',
+      'dist*',
+    ],
   },
-
-  ignores: [
-    '.github/**',
-    'scripts/**',
-  ],
-})
+  {
+    rules: {
+      'eslint-comments/no-unlimited-disable': 'off',
+      'curly': ['error', 'all'],
+      'ts/no-unused-expressions': ['error', {
+        allowShortCircuit: true,
+        allowTernary: true,
+      }],
+    },
+  },
+  {
+    files: [
+      'src/**/*.vue',
+    ],
+    rules: {
+      'vue/block-order': ['error', {
+        order: ['script', 'template', 'style'],
+      }],
+    },
+  },
+)

+ 3 - 17
index.html

@@ -1,26 +1,12 @@
 <!DOCTYPE html>
-<html lang="en">
+<html>
   <head>
     <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"/>
-    <link rel="apple-touch-icon" href="/pwa-192x192.png" />
-    <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#f6d2d2">
-    <meta name="msapplication-TileColor" content="#f6d2d2">
-    <script>
-      ;(function () {
-        const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
-        const setting = localStorage.getItem('vueuse-color-scheme') || 'auto'
-        if (setting === 'dark' || (prefersDark && setting !== 'light'))
-          document.documentElement.classList.toggle('dark', true)
-      })()
-    </script>
+    <link rel="icon" href="/favicon.ico" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, viewport-fit=cover"/>
   </head>
   <body>
     <div id="app"></div>
     <script type="module" src="/src/main.ts"></script>
-    <noscript>
-      This website requires JavaScript to function properly.
-      Please enable JavaScript to continue.
-    </noscript>
   </body>
 </html>

+ 0 - 20
mock/data.ts

@@ -1,20 +0,0 @@
-import { defineMockData } from 'vite-plugin-mock-dev-server'
-
-// defineMockData,用于在 mock 文件中使用 data.ts 作为共享数据源。
-export default defineMockData('proses', [
-  '🔖 躲在某一时间,想念一段时光的掌纹;躲在某一地点,想念一个站在来路也站在去路的,让我牵挂的人。',
-  '🔖 天空一碧如洗,灿烂的阳光正从密密的松针的缝隙间射下来,形成一束束粗粗细细的光柱,把飘荡着轻纱般薄雾的林荫照得通亮。',
-  '🔖 这一次相遇,美得彻骨,美得震颤,美得孤绝,美得惊艳。',
-  '🔖 沉默的状态,能让我感觉到呼吸的自由和自己原来就处于的本色位置。',
-  '🔖 青春,是一包象征着阳光的向日葵种子,在现在洒下,就会在未来得到收获,那一株株饱含青春的花朵。',
-  '🔖 燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时候。但是,聪明的,你告诉我,我们的日子为什么一去不复返呢?',
-  '🔖 毕业了,青春在无形之中离去,我们即将翻开人生的另一页。',
-  '🔖 成长,是每个孩子的权力,也是他们必经的征程,或平坦、或崎岖,有悲欢,有离合。',
-  '🔖 旧时光里的人和事,琐碎而零乱。我的记忆很模糊,好像大部分都成了一种温馨的符号,静静的沉在我心底。',
-  '🔖 生活是一部大百科全书,包罗万象;生活是一把六弦琴,弹奏出多重美妙的旋律:生活是一座飞马牌大钟,上紧发条,便会使人获得浓缩的生命。',
-  '🔖 毕业了,身边的朋友一个个各奔东西,开始学会自己撑起生命的暖色。',
-  '🔖 已经走到尽头的东西,重生也不过是再一次的消亡。就像所有的开始,其实都只是一个写好了的结局。',
-  '🔖 下午茶的芬香熏陶着房内的任何一个角落,午后的阳光透过窗帘的间隙洒在木制的桌面上,一份思念随着红茶顺滑至心中。',
-  '🔖 这里再不是我们的校园,当我们就此离开我们的青葱岁月。',
-  '🔖 很久找你,一直没有找到,微风吹过的时候,我深深的呼吸,才感觉到你也在陪伴着我呼吸。',
-])

+ 0 - 5
mock/index.ts

@@ -1,5 +0,0 @@
-import prose from './modules/prose.mock'
-
-export default {
-  ...prose,
-}

+ 0 - 13
mock/modules/prose.mock.ts

@@ -1,13 +0,0 @@
-import { defineMock } from 'vite-plugin-mock-dev-server'
-import { builder } from '../util'
-import proses from '../data'
-
-export default defineMock({
-  url: '/api/prose',
-  delay: 100,
-  body: () => {
-    const rand = Math.floor(Math.random() * proses.value.length)
-    const prose = proses.value[rand]
-    return builder(prose)
-  },
-})

+ 0 - 19
mock/util.ts

@@ -1,19 +0,0 @@
-const responseBody = {
-  message: '',
-  timestamp: 0,
-  result: null as unknown,
-  code: 0,
-}
-
-export function builder(data: unknown, message = 'success', code = 0) {
-  responseBody.result = data
-
-  if (message !== undefined && message !== null)
-    responseBody.message = message
-
-  if (code !== undefined && code !== 0)
-    responseBody.code = code
-
-  responseBody.timestamp = new Date().getTime()
-  return responseBody
-}

+ 0 - 12
netlify.toml

@@ -1,12 +0,0 @@
-[build]
-base = "/"
-publish = "dist"
-command = "pnpm run build"
-
-[build.environment]
-NODE_VERSION = "18"
-
-[[redirects]]
-from = "/*"
-to = "/index.html"
-status = 200

+ 95 - 74
package.json

@@ -1,94 +1,115 @@
 {
-  "name": "insomnia-cognition-h5",
   "type": "module",
-  "version": "2.3.9",
-  "packageManager": "pnpm@9.6.0",
-  "description": "Vue + Vite H5 Starter Template",
-  "license": "MIT",
+  "version": "0.3.0",
+  "engines": {
+    "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+  },
   "scripts": {
-    "dev": "cross-env MOCK_SERVER_PORT=8086 vite",
-    "build": "vue-tsc --noEmit && vite build",
-    "build:dev": "vue-tsc --noEmit && vite build --mode=development",
-    "preview": "vite preview",
-    "lint": "eslint .",
-    "lint:fix": "eslint . --fix",
-    "test": "vitest",
-    "release": "bumpp --commit --push --tag",
-    "prepare": "husky"
+    "dev": "vite",
+    "build": "vue-tsc && vite build",
+    "build:test": "vue-tsc && vite build --mode test",
+    "serve": "http-server ./dist -o",
+    "serve:test": "http-server ./dist-test -o",
+    "svgo": "svgo -f src/assets/icons",
+    "new": "plop",
+    "lint": "npm-run-all -s lint:tsc lint:eslint lint:stylelint",
+    "lint:tsc": "vue-tsc --noEmit",
+    "lint:eslint": "eslint . --cache --fix",
+    "lint:stylelint": "stylelint \"src/**/*.{css,scss,vue}\" --cache --fix",
+    "postinstall": "simple-git-hooks",
+    "preinstall": "npx only-allow pnpm",
+    "commit": "git cz",
+    "release": "bumpp"
   },
   "dependencies": {
-    "@unhead/vue": "^1.9.16",
+    "@headlessui/vue": "^1.7.22",
     "@vant/touch-emulator": "^1.4.0",
-    "@vant/use": "^1.6.0",
-    "@vueuse/core": "^10.11.0",
-    "axios": "^1.7.2",
-    "dayjs": "^1.11.12",
-    "decimal.js": "^10.4.3",
+    "@vueuse/components": "^11.0.3",
+    "@vueuse/core": "^11.0.3",
+    "@vueuse/integrations": "^11.0.3",
+    "animate.css": "^4.1.1",
+    "axios": "^1.7.7",
+    "dayjs": "^1.11.13",
     "echarts": "^5.5.1",
+    "eruda": "^3.2.3",
     "lodash-es": "^4.17.21",
+    "mitt": "^3.0.1",
+    "mockjs": "^1.1.0",
     "nprogress": "^0.2.0",
-    "pinia": "^2.1.7",
-    "pinia-plugin-persistedstate": "^3.2.1",
-    "resize-detector": "^0.3.0",
-    "store": "^2.0.12",
-    "vant": "^4.9.2",
+    "overlayscrollbars-vue": "^0.5.9",
+    "path-browserify": "^1.0.1",
+    "pinia": "^2.2.2",
+    "qrcode": "^1.5.4",
+    "qs": "^6.13.0",
+    "swiper": "^11.1.11",
+    "vant": "^4.9.4",
     "vconsole": "^3.15.1",
-    "vue": "^3.4.33",
-    "vue-countup-v3": "^1.4.2",
-    "vue-i18n": "^9.13.1",
-    "vue-router": "^4.4.0"
+    "vue": "^3.4.38",
+    "vue-esign": "^1.1.4",
+    "vue-m-message": "^4.0.2",
+    "vue-router": "^4.4.3"
   },
   "devDependencies": {
-    "@antfu/eslint-config": "2.23.0",
-    "@iconify-json/carbon": "^1.1.36",
-    "@intlify/unplugin-vue-i18n": "^4.0.0",
+    "@antfu/eslint-config": "^2.25.1",
+    "@iconify/json": "^2.2.243",
+    "@iconify/vue": "^4.1.2",
+    "@stylistic/stylelint-config": "^2.0.0",
     "@types/lodash-es": "^4.17.12",
-    "@types/node": "^20.14.11",
+    "@types/mockjs": "^1.0.10",
     "@types/nprogress": "^0.2.3",
-    "@types/store": "^2.0.5",
-    "@unocss/eslint-plugin": "0.61.5",
-    "@unocss/preset-rem-to-px": "0.61.5",
-    "@vitejs/plugin-legacy": "^5.4.1",
-    "@vitejs/plugin-vue": "^5.0.5",
-    "autoprefixer": "^10.4.19",
-    "bumpp": "^9.4.1",
-    "consola": "^3.2.3",
-    "cross-env": "^7.0.3",
-    "eslint": "^9.8.0",
-    "eslint-plugin-format": "^0.1.2",
-    "husky": "^9.1.1",
-    "less": "^4.2.0",
-    "mockjs": "^1.1.0",
+    "@types/path-browserify": "^1.0.3",
+    "@types/qrcode": "^1.5.5",
+    "@types/qs": "^6.9.15",
+    "@unocss/eslint-plugin": "^0.62.3",
+    "@unocss/preset-rem-to-px": "^0.62.3",
+    "@vitejs/plugin-legacy": "^5.4.2",
+    "@vitejs/plugin-vue": "^5.1.3",
+    "@vitejs/plugin-vue-jsx": "^4.0.1",
+    "@yeungkc/unocss-preset-safe-area": "^0.0.10",
+    "autoprefixer": "^10.4.20",
+    "boxen": "^8.0.1",
+    "bumpp": "^9.5.2",
+    "cz-git": "^1.9.4",
+    "eslint": "^9.9.1",
+    "http-server": "^14.1.1",
+    "lint-staged": "^15.2.9",
+    "npm-run-all2": "^6.2.2",
+    "picocolors": "^1.0.1",
+    "plop": "^4.0.1",
+    "postcss": "^8.4.42",
     "postcss-mobile-forever": "^4.1.5",
-    "rollup": "^4.18.1",
-    "terser": "^5.31.3",
-    "typescript": "^5.5.3",
-    "unocss": "0.61.5",
-    "unplugin-auto-import": "^0.18.0",
-    "unplugin-vue-components": "^0.27.3",
-    "unplugin-vue-router": "^0.10.0",
-    "vite": "^5.3.4",
-    "vite-plugin-mock-dev-server": "^1.5.1",
-    "vite-plugin-pwa": "^0.20.0",
-    "vite-plugin-sitemap": "^0.6.2",
+    "postcss-nested": "^6.2.0",
+    "sass": "^1.77.8",
+    "simple-git-hooks": "^2.11.1",
+    "stylelint": "^16.9.0",
+    "stylelint-config-recess-order": "^5.1.0",
+    "stylelint-config-standard-scss": "^13.1.0",
+    "stylelint-config-standard-vue": "^1.0.0",
+    "stylelint-scss": "^6.5.1",
+    "svgo": "^3.3.2",
+    "typescript": "^5.5.4",
+    "unocss": "^0.62.3",
+    "unplugin-auto-import": "^0.18.2",
+    "unplugin-turbo-console": "^1.10.1",
+    "unplugin-vue-components": "^0.27.4",
+    "unplugin-vue-router": "^0.10.7",
+    "vite": "^5.4.2",
+    "vite-plugin-archiver": "^0.1.1",
+    "vite-plugin-banner": "^0.7.1",
+    "vite-plugin-compression2": "^1.2.0",
+    "vite-plugin-fake-server": "^2.1.1",
+    "vite-plugin-pages": "^0.32.3",
     "vite-plugin-svg-icons": "^2.0.1",
-    "vite-plugin-vconsole": "^2.1.1",
-    "vite-plugin-vue-devtools": "^7.3.6",
-    "vitest": "^2.0.3",
-    "vue-tsc": "^2.0.26"
+    "vite-plugin-vue-devtools": "^7.3.9",
+    "vue-tsc": "^2.1.4"
+  },
+  "simple-git-hooks": {
+    "pre-commit": "pnpm lint-staged",
+    "preserveUnused": true
   },
-  "pnpm": {
-    "peerDependencyRules": {
-      "ignoreMissing": [
-        "postcss",
-        "esbuild"
-      ],
-      "allowedVersions": {
-        "rollup": "^4.x"
-      },
-      "allowAny": [
-        "eslint"
-      ]
+  "config": {
+    "commitizen": {
+      "path": "node_modules/cz-git"
     }
   }
 }

+ 17 - 0
plop-templates/component/index.hbs

@@ -0,0 +1,17 @@
+<script setup lang="ts">
+{{#if isGlobal}}
+defineOptions({
+  name: '{{ properCase name }}',
+})
+{{/if}}
+</script>
+
+<template>
+  <div>
+    <!-- 布局 -->
+  </div>
+</template>
+
+<style scoped>
+/* 样式 */
+</style>

+ 66 - 0
plop-templates/component/prompt.js

@@ -0,0 +1,66 @@
+import fs from 'node:fs'
+
+function getFolder(path) {
+  const components = []
+  const files = fs.readdirSync(path)
+  files.forEach((item) => {
+    const stat = fs.lstatSync(`${path}/${item}`)
+    if (stat.isDirectory() === true && item !== 'components') {
+      components.push(`${path}/${item}`)
+      components.push(...getFolder(`${path}/${item}`))
+    }
+  })
+  return components
+}
+
+export default {
+  description: '创建组件',
+  prompts: [
+    {
+      type: 'confirm',
+      name: 'isGlobal',
+      message: '是否为全局组件',
+      default: false,
+    },
+    {
+      type: 'list',
+      name: 'path',
+      message: '请选择组件创建目录',
+      choices: getFolder('src/views'),
+      when: (answers) => {
+        return !answers.isGlobal
+      },
+    },
+    {
+      type: 'input',
+      name: 'name',
+      message: '请输入组件名称',
+      validate: (v) => {
+        if (!v || v.trim === '') {
+          return '组件名称不能为空'
+        }
+        else {
+          return true
+        }
+      },
+    },
+  ],
+  actions: (data) => {
+    let path = ''
+    if (data.isGlobal) {
+      path = 'src/components/{{properCase name}}/index.vue'
+    }
+    else {
+      path = `${data.path}/components/{{properCase name}}/index.vue`
+    }
+
+    const actions = [
+      {
+        type: 'add',
+        path,
+        templateFile: 'plop-templates/component/index.hbs',
+      },
+    ]
+    return actions
+  },
+}

+ 21 - 0
plop-templates/page/index.hbs

@@ -0,0 +1,21 @@
+<script setup lang="ts">
+defineOptions({
+  name: '{{ properCase componentName }}',
+})
+
+definePage({
+  meta: {
+    title: '新建页面',
+  },
+})
+</script>
+
+<template>
+  <PageLayout navbar>
+    <!-- 布局 -->
+  </PageLayout>
+</template>
+
+<style scoped>
+/* 样式 */
+</style>

+ 54 - 0
plop-templates/page/prompt.js

@@ -0,0 +1,54 @@
+import path from 'node:path'
+import fs from 'node:fs'
+
+function getFolder(path) {
+  const components = []
+  const files = fs.readdirSync(path)
+  files.forEach((item) => {
+    const stat = fs.lstatSync(`${path}/${item}`)
+    if (stat.isDirectory() === true && item !== 'components') {
+      components.push(`${path}/${item}`)
+      components.push(...getFolder(`${path}/${item}`))
+    }
+  })
+  return components
+}
+
+export default {
+  description: '创建页面',
+  prompts: [
+    {
+      type: 'list',
+      name: 'path',
+      message: '请选择页面创建目录',
+      choices: getFolder('src/views'),
+    },
+    {
+      type: 'input',
+      name: 'name',
+      message: '请输入文件名',
+      validate: (v) => {
+        if (!v || v.trim === '') {
+          return '文件名不能为空'
+        }
+        else {
+          return true
+        }
+      },
+    },
+  ],
+  actions: (data) => {
+    const relativePath = path.relative('src/views', data.path)
+    const actions = [
+      {
+        type: 'add',
+        path: `${data.path}/{{dotCase name}}.vue`,
+        templateFile: 'plop-templates/page/index.hbs',
+        data: {
+          componentName: `${relativePath} ${data.name}`,
+        },
+      },
+    ]
+    return actions
+  },
+}

+ 13 - 0
plop-templates/store/index.hbs

@@ -0,0 +1,13 @@
+const use{{ properCase name }}Store = defineStore(
+  // 唯一ID
+  '{{ camelCase name }}',
+  () => {
+    const someThing = ref(0)
+
+    return {
+      someThing,
+    }
+  },
+)
+
+export default use{{ properCase name }}Store

+ 28 - 0
plop-templates/store/prompt.js

@@ -0,0 +1,28 @@
+export default {
+  description: '创建全局状态',
+  prompts: [
+    {
+      type: 'input',
+      name: 'name',
+      message: '请输入模块名称',
+      validate: (v) => {
+        if (!v || v.trim === '') {
+          return '模块名称不能为空'
+        }
+        else {
+          return true
+        }
+      },
+    },
+  ],
+  actions: () => {
+    const actions = [
+      {
+        type: 'add',
+        path: 'src/store/modules/{{camelCase name}}.ts',
+        templateFile: 'plop-templates/store/index.hbs',
+      },
+    ]
+    return actions
+  },
+}

+ 13 - 0
plopfile.js

@@ -0,0 +1,13 @@
+import { promises as fs } from 'node:fs'
+
+export default async function (plop) {
+  plop.setWelcomeMessage('请选择需要创建的模式:')
+  const items = await fs.readdir('./plop-templates')
+  for (const item of items) {
+    const stat = await fs.lstat(`./plop-templates/${item}`)
+    if (stat.isDirectory()) {
+      const prompt = await import(`./plop-templates/${item}/prompt.js`)
+      plop.setGenerator(item, prompt.default)
+    }
+  }
+}

File diff suppressed because it is too large
+ 608 - 235
pnpm-lock.yaml


+ 14 - 0
postcss.config.js

@@ -0,0 +1,14 @@
+export default {
+  plugins: {
+    'autoprefixer': {},
+    'postcss-nested': {},
+    'postcss-mobile-forever': {
+      viewportWidth: 375,
+      maxDisplayWidth: 600,
+      border: true,
+      rootContainingBlockSelectorList: [
+        'van-popup',
+      ],
+    },
+  },
+}

+ 0 - 0
public/.nojekyll


+ 0 - 4
public/favicon-dark.svg

@@ -1,4 +0,0 @@
-<svg t="1709866807903" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4913" width="32" height="32">
-  <path d="M512 598.528a111.232 111.232 0 0 0-111.232 111.2064V870.4h222.464v-160.6656c0-61.44-49.792-111.232-111.232-111.232z m0 58.0608c-30.72 0-55.6032 24.9088-55.6032 55.6288v105.0368h111.2064v-105.0368c0-30.72-24.8832-55.6288-55.6032-55.6288z" fill="#FB4D31" p-id="4914"></path>
-  <path d="M542.08 270.208l45.2608-78.5408a24.5248 24.5248 0 0 0 0-25.6A26.4448 26.4448 0 0 0 564.1472 153.6a26.3424 26.3424 0 0 0-22.5792 13.44L512 217.6256l-29.5424-50.5344c-4.5824-8.192-13.184-13.312-22.5536-13.4912a26.4448 26.4448 0 0 0-23.2448 12.4928 24.5248 24.5248 0 0 0 0 25.6l45.2352 78.5152L156.928 832.768a24.4736 24.4736 0 0 0 0.3328 25.088c4.8384 7.8336 13.3888 12.544 22.5792 12.5184h664.3456c9.3184 0 17.92-4.7616 22.6304-12.4672a24.4736 24.4736 0 0 0 0.3072-25.088l-325.0176-562.688v0.0512zM619.52 816.64h-33.3568c-12.3648 0-9.6768 0.1024-65.0496 0H512c-55.3728 0.1024-24.704 0-61.7984 0H225.28L512 322.1248 798.72 816.64h-179.2z" fill="#ffffff" p-id="4915"></path>
-</svg>

BIN
public/favicon.ico


+ 0 - 4
public/favicon.svg

@@ -1,4 +0,0 @@
-<svg t="1709866807903" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4913" width="32" height="32">
-  <path d="M512 598.528a111.232 111.232 0 0 0-111.232 111.2064V870.4h222.464v-160.6656c0-61.44-49.792-111.232-111.232-111.232z m0 58.0608c-30.72 0-55.6032 24.9088-55.6032 55.6288v105.0368h111.2064v-105.0368c0-30.72-24.8832-55.6288-55.6032-55.6288z" fill="#FB4D31" p-id="4914"></path>
-  <path d="M542.08 270.208l45.2608-78.5408a24.5248 24.5248 0 0 0 0-25.6A26.4448 26.4448 0 0 0 564.1472 153.6a26.3424 26.3424 0 0 0-22.5792 13.44L512 217.6256l-29.5424-50.5344c-4.5824-8.192-13.184-13.312-22.5536-13.4912a26.4448 26.4448 0 0 0-23.2448 12.4928 24.5248 24.5248 0 0 0 0 25.6l45.2352 78.5152L156.928 832.768a24.4736 24.4736 0 0 0 0.3328 25.088c4.8384 7.8336 13.3888 12.544 22.5792 12.5184h664.3456c9.3184 0 17.92-4.7616 22.6304-12.4672a24.4736 24.4736 0 0 0 0.3072-25.088l-325.0176-562.688v0.0512zM619.52 816.64h-33.3568c-12.3648 0-9.6768 0.1024-65.0496 0H512c-55.3728 0.1024-24.704 0-61.7984 0H225.28L512 322.1248 798.72 816.64h-179.2z" fill="#000000" p-id="4915"></path>
-</svg>

BIN
public/pwa-192x192.png


BIN
public/pwa-512x512.png


File diff suppressed because it is too large
+ 0 - 1
public/safari-pinned-tab.svg


BIN
public/static/image/game/bg-breadthTraining.png


BIN
public/static/image/game/bg-center.png


BIN
public/static/image/game/bg-continue-addition.png


BIN
public/static/image/game/bg-pic-naming.png


BIN
public/static/image/game/bg-puzzle.png


BIN
public/static/image/game/bg-text.png


BIN
public/static/image/game/icon-board.png


BIN
public/static/image/game/icon-submit.png


BIN
public/static/image/game/logo/1.png


BIN
public/static/image/game/logo/2.png


BIN
public/static/image/game/logo/3.png


BIN
public/static/image/game/logo/4.png


BIN
public/static/image/game/logo/5.png


BIN
public/static/image/game/logo/6.png


BIN
public/static/image/game/name/0.png


BIN
public/static/image/game/name/1.png


BIN
public/static/image/game/name/10.png


BIN
public/static/image/game/name/11.png


BIN
public/static/image/game/name/12.png


BIN
public/static/image/game/name/13.png


BIN
public/static/image/game/name/14.png


BIN
public/static/image/game/name/15.png


BIN
public/static/image/game/name/16.png


BIN
public/static/image/game/name/17.png


BIN
public/static/image/game/name/18.png


BIN
public/static/image/game/name/19.png


BIN
public/static/image/game/name/2.png


BIN
public/static/image/game/name/20.png


BIN
public/static/image/game/name/21.png


BIN
public/static/image/game/name/22.png


BIN
public/static/image/game/name/23.png


BIN
public/static/image/game/name/24.png


BIN
public/static/image/game/name/25.png


BIN
public/static/image/game/name/26.png


BIN
public/static/image/game/name/27.png


BIN
public/static/image/game/name/28.png


BIN
public/static/image/game/name/29.png


BIN
public/static/image/game/name/3.png


BIN
public/static/image/game/name/30.png


BIN
public/static/image/game/name/31.png


BIN
public/static/image/game/name/32.png


BIN
public/static/image/game/name/33.png


BIN
public/static/image/game/name/34.png


BIN
public/static/image/game/name/35.png


BIN
public/static/image/game/name/36.png


BIN
public/static/image/game/name/37.png


BIN
public/static/image/game/name/38.png


BIN
public/static/image/game/name/39.png


BIN
public/static/image/game/name/4.png


BIN
public/static/image/game/name/40.png


BIN
public/static/image/game/name/41.png


BIN
public/static/image/game/name/42.png


BIN
public/static/image/game/name/43.png


BIN
public/static/image/game/name/44.png


BIN
public/static/image/game/name/5.png


Some files were not shown because too many files changed in this diff