diff --git a/.claude/settings.local.json b/.claude/settings.local.json index d5fe81b..af1cb48 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -11,7 +11,13 @@ "Bash(npm search *)", "Bash(node -e \"const ts = require\\('typescript'\\); const res = ts.createProgram\\(['src/app.tsx','src/pages/index/index.tsx','src/pages/wordcloud/index.tsx','src/pages/diy/index.tsx','src/pages/orders/index.tsx','src/pages/profile/index.tsx','src/pages/service/index.tsx'], {jsx:1,target:2,skipLibCheck:true,noEmit:true}\\).emit\\(\\); console.log\\('Diagnostics:', res.diagnostics.length\\);\")", "Bash(npm run *)", - "Bash(npx taro *)" + "Bash(npx taro *)", + "Bash(convert --version)", + "Bash(npx sharp *)", + "Bash(npx terser *)", + "Bash(npm ls *)", + "Bash(npm install *)", + "Bash(node compress-images.js)" ] } } diff --git a/README.md b/README.md index 1354565..8e6864d 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,42 @@ npm run build:weapp npm run dev:h5 ``` +## 图片资源与包体积说明 + +当前项目的产品实物照片(`src/img/`)已内置在小程序中。由于微信小程序**预览/上传代码包体积上限为 2MB**,大量高分辨率照片会导致超限。 + +### 已采取的措施(两步压缩脚本) + +- `compress-images.js`(基于 [sharp](https://sharp.pixelplumbing.com/))已配置到项目中,支持批量: + 1. **resize**:最大边长限制到 800px + 2. **format**:PNG → JPG + 3. **quality**:JPG 质量 60% +- 执行一次即可:`node compress-images.js` +- 当前编译后 `dist/` 总大小约 **1.02 MB**,满足微信限制。 + +### ⚠️ 注意:压缩 ≠ 长期方案 + +压缩后的图片在手机上画质会有可见损失(尤其缩放到全屏轮播时)。**建议上线前迁移到 CDN**: + +1. 注册 **腾讯云 COS**(微信小程序配套,国内访问最快)或 **阿里云 OSS**。 +2. 将 `src/img/` 中的实物照片上传到对象存储。 +3. 拿到每个图片的 **HTTPS 外链 URL**。 +4. 修改 `src/utils/productConfig.ts` 中各产品的 `images` 字段,从本地路径 `/img/xxx.jpg` 替换为网络 URL: + ```ts + // 改之前 + images: ['/img/penbox/The1.jpg'] + // 改之后 + images: ['https://your-bucket.cos.ap-guangzhou.myqcloud.com/penbox/The1.jpg'] + ``` +5. 修改 `config/index.js`,缩小 `copy.patterns` 范围(只 copy icon/占位图等小文件),或直接移除 `src/img` 的 copy 规则,减少构建体积。 + +**迁移优点**: +- 图片清晰度恢复到原图级别; +- 小程序包体积长期保持 < 500KB; +- 后续更换产品图只需在图床后台操作,无需重新发版。 + +--- + ## 下一步开发计划 ### 高优先级 diff --git a/answer.md b/answer.md index 5d2df15..69dd26f 100644 --- a/answer.md +++ b/answer.md @@ -43,7 +43,7 @@ 后面三者意思不变 --> -20260727 16:15 优化问题 + +20260727 22:20 优化问题 + +1.图片压缩的做的很好 + +2.主题黑白装换现在全部出了问题,无法转变,你先回到之前的版本再做修改尝试看看 + +3.怎么实现用户数据库?我们先构建出用户的数据库之后再继续优化其他功能 + +4.个人主页中的常用功能,在未登录时可以点开看到效果,但是登录后却点击没有反应了,这个也需要修正 \ No newline at end of file diff --git a/compress-images.js b/compress-images.js new file mode 100644 index 0000000..902068c --- /dev/null +++ b/compress-images.js @@ -0,0 +1,98 @@ +const sharp = require('sharp') +const fs = require('fs') +const path = require('path') + +const IMG_DIR = path.join(__dirname, 'src', 'img') +const QUALITY = 60 // JPG 质量 +const MAX_WIDTH = 800 // 最长边限制 +const MAX_FILE_KB = 80 // 单张上限 KB —— 强制压到 80KB 以下 + +/** + * 压缩单个文件(强制覆盖) + */ +async function compressFile(inputPath) { + const ext = path.extname(inputPath).toLowerCase() + const dir = path.dirname(inputPath) + const base = path.basename(inputPath, ext) + const finalPath = path.join(dir, base + '.jpg') + const isAlreadyJpg = ext === '.jpg' || ext === '.jpeg' + + const stat = fs.statSync(inputPath) + const currentKb = stat.size / 1024 + + // 如果已经 .jpg、体积已小于上限、且最长边不超,跳过 + if (isAlreadyJpg && currentKb <= MAX_FILE_KB) { + const meta = await sharp(inputPath).metadata() + const longEdge = Math.max(meta.width || 0, meta.height || 0) + if (longEdge <= MAX_WIDTH) { + console.log(`skip ${inputPath} (${currentKb.toFixed(1)}KB, ${longEdge}px)`) + return { from: inputPath, to: inputPath, size: stat.size } + } + } + + // 重建 pipeline + const meta = await sharp(inputPath).metadata() + const longEdge = Math.max(meta.width || 0, meta.height || 0) + const resizeOpts = longEdge > MAX_WIDTH ? { width: MAX_WIDTH, height: MAX_WIDTH, fit: 'inside' } : undefined + + let pipeline = sharp(inputPath).jpeg({ quality: QUALITY, progressive: true, force: true }) + if (resizeOpts) pipeline = pipeline.resize(resizeOpts) + + const tmpPath = path.join(dir, base + '_tmp.jpg') + await pipeline.toFile(tmpPath) + + fs.unlinkSync(inputPath) + fs.renameSync(tmpPath, finalPath) + + const newSize = fs.statSync(finalPath).size + console.log( + `${isAlreadyJpg ? 'compress' : 'convert'} ${base}${ext} (${currentKb.toFixed(1)}KB, ${longEdge}px → ${(newSize / 1024).toFixed(1)}KB)` + ) + + return { from: inputPath, to: finalPath, size: newSize } +} + +/** + * 递归收集所有图片 + */ +function collectImages(dir) { + let results = [] + const entries = fs.readdirSync(dir, { withFileTypes: true }) + for (const entry of entries) { + const full = path.join(dir, entry.name) + if (entry.isDirectory()) { + results = results.concat(collectImages(full)) + } else if (/\.(png|jpe?g)$/i.test(entry.name)) { + results.push(full) + } + } + return results +} + +/** + * 主函数 + */ +async function main() { + console.log(`scanning ${IMG_DIR}...\n`) + const images = collectImages(IMG_DIR) + console.log(`found ${images.length} images\n`) + + let totalBefore = 0 + let totalAfter = 0 + + for (const img of images) { + totalBefore += fs.statSync(img).size + const result = await compressFile(img) + totalAfter += result.size + } + + console.log(`\n✅ done`) + console.log(` before: ${(totalBefore / 1024 / 1024).toFixed(2)} MB`) + console.log(` after: ${(totalAfter / 1024 / 1024).toFixed(2)} MB`) + console.log(` saved: ${((totalBefore - totalAfter) / 1024 / 1024).toFixed(2)} MB`) +} + +main().catch(err => { + console.error(err) + process.exit(1) +}) diff --git a/dist/app.js b/dist/app.js index be69c8a..f2117db 100644 --- a/dist/app.js +++ b/dist/app.js @@ -82,7 +82,7 @@ var react__WEBPACK_IMPORTED_MODULE_3___namespace_cache; -var config = {"pages":["pages/index/index","pages/product/index","pages/diy/index","pages/checkout/index","pages/designList/index","pages/orders/index","pages/profile/index","pages/service/index","pages/wordcloud/index","pages/orderDetail/index","pages/address/index","pages/settings/index","pages/agreement/index"],"window":{"backgroundTextStyle":"light","navigationStyle":"custom","backgroundColor":"#ffffff"},"tabBar":{"custom":true,"list":[{"pagePath":"pages/index/index","text":"首页"},{"pagePath":"pages/designList/index","text":"设计清单"},{"pagePath":"pages/orders/index","text":"订单"},{"pagePath":"pages/profile/index","text":"我的"}]},"permission":{"scope.writePhotosAlbum":{"desc":"保存词云图片到相册"}}}; +var config = {"pages":["pages/index/index","pages/product/index","pages/diy/index","pages/checkout/index","pages/designList/index","pages/orders/index","pages/profile/index","pages/service/index","pages/wordcloud/index","pages/orderDetail/index","pages/address/index","pages/settings/index","pages/agreement/index","pages/userDatabase/index"],"window":{"backgroundTextStyle":"light","navigationStyle":"custom","backgroundColor":"#ffffff"},"tabBar":{"custom":true,"list":[{"pagePath":"pages/index/index","text":"首页"},{"pagePath":"pages/designList/index","text":"设计清单"},{"pagePath":"pages/orders/index","text":"订单"},{"pagePath":"pages/profile/index","text":"我的"}]},"permission":{"scope.writePhotosAlbum":{"desc":"保存词云图片到相册"}}}; _tarojs_runtime__WEBPACK_IMPORTED_MODULE_5__.window.__taroAppConfig = config var inst = App((0,_tarojs_plugin_framework_react_dist_runtime__WEBPACK_IMPORTED_MODULE_6__.createReactApp)(_node_modules_tarojs_taro_loader_lib_entry_cache_js_name_app_app_tsx__WEBPACK_IMPORTED_MODULE_2__["default"], /*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_3___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_3___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_3__, 2))), react_dom__WEBPACK_IMPORTED_MODULE_4__["default"], config)) diff --git a/dist/app.js.map b/dist/app.js.map index 3b71c95..dd23970 100644 --- a/dist/app.js.map +++ b/dist/app.js.map @@ -1 +1 @@ -{"version":3,"file":"app.js","mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrOA;AACA;AACA;AAGA;AACA;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACznBA;AACA;AACA;AAGA;AACA","sources":["webpack://smart-engraving-miniapp/._src_app.tsx","webpack://smart-engraving-miniapp/./src/app.tsx?c9a4","webpack://smart-engraving-miniapp/._node_modules_react-reconciler_cjs_react-reconciler-constants.development.js","webpack://smart-engraving-miniapp/._node_modules_react-reconciler_cjs_react-reconciler.production.min.js","webpack://smart-engraving-miniapp/._node_modules_react-reconciler_constants.js","webpack://smart-engraving-miniapp/._node_modules_react-reconciler_node_modules_scheduler_cjs_scheduler.development.js","webpack://smart-engraving-miniapp/._node_modules_react-reconciler_node_modules_scheduler_index.js"],"sourcesContent":["import _classCallCheck from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _callSuper from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/callSuper.js\";\nimport _inherits from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport { Component } from 'react';\nimport { ThemeProvider } from './context/ThemeContext';\nimport './app.scss';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar App = /*#__PURE__*/function (_Component) {\n function App() {\n _classCallCheck(this, App);\n return _callSuper(this, App, arguments);\n }\n _inherits(App, _Component);\n return _createClass(App, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {}\n }, {\n key: \"componentDidShow\",\n value: function componentDidShow() {}\n }, {\n key: \"componentDidHide\",\n value: function componentDidHide() {}\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/_jsx(ThemeProvider, {\n children: this.props.children\n });\n }\n }]);\n}(Component);\nexport default App;","import '@tarojs/plugin-platform-weapp/dist/runtime'\n\nimport { window } from '@tarojs/runtime'\nimport { createReactApp } from '@tarojs/plugin-framework-react/dist/runtime'\nimport { initPxTransform } from '@tarojs/taro'\n\nimport component from \"!!../node_modules/@tarojs/taro-loader/lib/entry-cache.js?name=app!./app.tsx\"\n\nimport * as React from 'react'\nimport ReactDOM from 'react-dom'\n\nvar config = {\"pages\":[\"pages/index/index\",\"pages/product/index\",\"pages/diy/index\",\"pages/checkout/index\",\"pages/designList/index\",\"pages/orders/index\",\"pages/profile/index\",\"pages/service/index\",\"pages/wordcloud/index\",\"pages/orderDetail/index\",\"pages/address/index\",\"pages/settings/index\",\"pages/agreement/index\"],\"window\":{\"backgroundTextStyle\":\"light\",\"navigationStyle\":\"custom\",\"backgroundColor\":\"#ffffff\"},\"tabBar\":{\"custom\":true,\"list\":[{\"pagePath\":\"pages/index/index\",\"text\":\"首页\"},{\"pagePath\":\"pages/designList/index\",\"text\":\"设计清单\"},{\"pagePath\":\"pages/orders/index\",\"text\":\"订单\"},{\"pagePath\":\"pages/profile/index\",\"text\":\"我的\"}]},\"permission\":{\"scope.writePhotosAlbum\":{\"desc\":\"保存词云图片到相册\"}}};\nwindow.__taroAppConfig = config\nvar inst = App(createReactApp(component, React, ReactDOM, config))\n\ninitPxTransform({\n designWidth: 750,\n deviceRatio: {\"640\":1.17,\"750\":1,\"828\":0.905},\n baseFontSize: 20,\n unitPrecision: undefined,\n targetUnit: undefined\n})\n","/**\n * @license React\n * react-reconciler-constants.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar SyncLane =\n/* */\n1;\nvar InputContinuousLane =\n/* */\n4;\nvar DefaultLane =\n/* */\n16;\nvar IdleLane =\n/* */\n536870912;\n\nvar DiscreteEventPriority = SyncLane;\nvar ContinuousEventPriority = InputContinuousLane;\nvar DefaultEventPriority = DefaultLane;\nvar IdleEventPriority = IdleLane;\n\nvar LegacyRoot = 0;\nvar ConcurrentRoot = 1;\n\nexports.ConcurrentRoot = ConcurrentRoot;\nexports.ContinuousEventPriority = ContinuousEventPriority;\nexports.DefaultEventPriority = DefaultEventPriority;\nexports.DiscreteEventPriority = DiscreteEventPriority;\nexports.IdleEventPriority = IdleEventPriority;\nexports.LegacyRoot = LegacyRoot;\n })();\n}\n","/**\n * @license React\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nmodule.exports = function $$$reconciler($$$hostConfig) {\n var exports = {};\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\"),ca=Object.assign;function n(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;ch||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{bc=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?ac(a):\"\"}var dc=Object.prototype.hasOwnProperty,ec=[],fc=-1;function gc(a){return{current:a}}\nfunction x(a){0>fc||(a.current=ec[fc],ec[fc]=null,fc--)}function y(a,b){fc++;ec[fc]=a.current;a.current=b}var hc={},A=gc(hc),B=gc(!1),ic=hc;function jc(a,b){var c=a.type.contextTypes;if(!c)return hc;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction C(a){a=a.childContextTypes;return null!==a&&void 0!==a}function kc(){x(B);x(A)}function lc(a,b,c){if(A.current!==hc)throw Error(n(168));y(A,b);y(B,c)}function mc(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(n(108,xa(a)||\"Unknown\",e));return ca({},c,d)}\nfunction nc(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||hc;ic=A.current;y(A,a);y(B,B.current);return!0}function oc(a,b,c){var d=a.stateNode;if(!d)throw Error(n(169));c?(a=mc(a,b,ic),d.__reactInternalMemoizedMergedChildContext=a,x(B),x(A),y(A,a)):x(B);y(B,c)}var qc=Math.clz32?Math.clz32:pc,rc=Math.log,sc=Math.LN2;function pc(a){a>>>=0;return 0===a?32:31-(rc(a)/sc|0)|0}var tc=64,uc=4194304;\nfunction vc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function wc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=vc(h):(f&=g,0!==f&&(d=vc(f)))}else g=c&~e,0!==g?d=vc(g):0!==f&&(d=vc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}function Bc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-qc(b);a[b]=c}\nfunction Cc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0>=g;e-=g;Nd=1<<32-qc(b)+e|c<u?(t=w,w=null):t=w.sibling;var q=r(e,w,h[u],k);if(null===q){null===w&&(w=t);break}a&&w&&null===q.alternate&&b(e,w);g=f(q,g,u);null===m?l=q:m.sibling=q;m=q;w=t}if(u===h.length)return c(e,w),I&&Pd(e,u),l;if(null===w){for(;uu?(q=m,m=null):q=m.sibling;var V=r(e,m,t.value,k);if(null===V){null===m&&(m=q);break}a&&m&&null===V.alternate&&b(e,m);g=f(V,g,u);null===w?l=V:w.sibling=V;w=V;m=q}if(t.done)return c(e,\nm),I&&Pd(e,u),l;if(null===m){for(;!t.done;u++,t=h.next())t=v(e,t.value,k),null!==t&&(g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);I&&Pd(e,u);return l}for(m=d(e,m);!t.done;u++,t=h.next())t=z(m,e,u,t.value,k),null!==t&&(a&&null!==t.alternate&&m.delete(null===t.key?u:t.key),g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);a&&m.forEach(function(a){return b(e,a)});I&&Pd(e,u);return l}function da(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ia&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==\nf){switch(f.$$typeof){case fa:a:{for(var k=f.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ia){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===ra&&he(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=fe(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ia?(d=ne(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=le(f.type,f.key,f.props,null,a.mode,h),h.ref=fe(a,d,f),h.return=\na,a=h)}return g(a);case ha:a:{for(l=f.key;null!==d;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=me(f,a.mode,h);d.return=a;a=d}return g(a);case ra:return l=f._init,da(a,d,l(f._payload),h)}if(Ea(f))return q(a,d,f,h);if(ua(f))return N(a,d,f,h);ge(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&\n6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=ke(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return da}var oe=ie(!0),pe=ie(!1),qe={},re=gc(qe),se=gc(qe),te=gc(qe);function ue(a){if(a===qe)throw Error(n(174));return a}function ve(a,b){y(te,b);y(se,a);y(re,qe);a=Ga(b);x(re);y(re,a)}function we(){x(re);x(se);x(te)}function xe(a){var b=ue(te.current),c=ue(re.current);b=Ha(c,a.type,b);c!==b&&(y(se,a),y(re,b))}function ye(a){se.current===a&&(x(re),x(se))}var J=gc(0);\nfunction ze(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||Ib(c)||Jb(c)))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Ae=[];\nfunction Be(){for(var a=0;ac?c:4;a(!0);var d=De.transition;De.transition={};try{a(!1),b()}finally{D=c,De.transition=d}}function rf(){return Re().memoizedState}function sf(a,b,c){var d=zd(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};tf(a)?uf(b,c):(vf(a,b,c),c=H(),a=Ad(a,d,c),null!==a&&wf(a,b,d))}\nfunction df(a,b,c){var d=zd(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(tf(a))uf(b,e);else{vf(a,b,e);var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Rc(h,g))return}catch(k){}finally{}c=H();a=Ad(a,d,c);null!==a&&wf(a,b,d)}}function tf(a){var b=a.alternate;return a===K||null!==b&&b===K}\nfunction uf(a,b){Ge=Fe=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function vf(a,b,c){null!==F&&0!==(a.mode&1)&&0===(G&2)?(a=b.interleaved,null===a?(c.next=c,null===md?md=[b]:md.push(b)):(c.next=a.next,a.next=c),b.interleaved=c):(a=b.pending,null===a?c.next=c:(c.next=a.next,a.next=c),b.pending=c)}function wf(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Dc(a,c)}}\nvar Oe={readContext:ld,useCallback:O,useContext:O,useEffect:O,useImperativeHandle:O,useInsertionEffect:O,useLayoutEffect:O,useMemo:O,useReducer:O,useRef:O,useState:O,useDebugValue:O,useDeferredValue:O,useTransition:O,useMutableSource:O,useSyncExternalStore:O,useId:O,unstable_isNewReconciler:!1},Le={readContext:ld,useCallback:function(a,b){Qe().memoizedState=[a,void 0===b?null:b];return a},useContext:ld,useEffect:hf,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ff(4194308,\n4,lf.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ff(4194308,4,a,b)},useInsertionEffect:function(a,b){return ff(4,2,a,b)},useMemo:function(a,b){var c=Qe();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Qe();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=sf.bind(null,K,a);return[d.memoizedState,a]},useRef:function(a){var b=\nQe();a={current:a};return b.memoizedState=a},useState:cf,useDebugValue:nf,useDeferredValue:function(a){var b=cf(a),c=b[0],d=b[1];hf(function(){var b=De.transition;De.transition={};try{d(a)}finally{De.transition=b}},[a]);return c},useTransition:function(){var a=cf(!1),b=a[0];a=qf.bind(null,a[1]);Qe().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=K,e=Qe();if(I){if(void 0===c)throw Error(n(407));c=c()}else{c=b();if(null===F)throw Error(n(349));\n0!==(Ee&30)||af(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;hf(Ye.bind(null,d,f,a),[a]);d.flags|=2048;Ze(9,$e.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Qe(),b=F.identifierPrefix;if(I){var c=Od;var d=Nd;c=(d&~(1<<32-qc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=He++;0Uf&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304)}else{if(!d)if(a=ze(f),null!==a){if(b.flags|=128,d=!0,a=a.updateQueue,null!==a&&(b.updateQueue=a,b.flags|=4),Qf(e,!0),null===e.tail&&\"hidden\"===e.tailMode&&!f.alternate&&!I)return P(b),null}else 2*E()-e.renderingStartTime>Uf&&1073741824!==c&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304);e.isBackwards?(f.sibling=b.child,b.child=f):(a=e.last,null!==a?a.sibling=f:b.child=f,e.last=f)}if(null!==\ne.tail)return b=e.tail,e.rendering=b,e.tail=b.sibling,e.renderingStartTime=E(),b.sibling=null,a=J.current,y(J,d?a&1|2:a&1),b;P(b);return null;case 22:case 23:return Vf(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(Wf&1073741824)&&(P(b),Ua&&b.subtreeFlags&6&&(b.flags|=8192)):P(b),null;case 24:return null;case 25:return null}throw Error(n(156,b.tag));}var Xf=ea.ReactCurrentOwner,kd=!1;\nfunction R(a,b,c,d){b.child=null===a?pe(b,null,c,d):oe(b,a.child,c,d)}function Yf(a,b,c,d,e){c=c.render;var f=b.ref;jd(b,e);d=Ke(a,b,c,d,f,e);c=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&c&&Rd(b);b.flags|=1;R(a,b,d,e);return b.child}\nfunction $f(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!ag(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bg(a,b,f,d,e);a=le(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Zc;if(c(g,d)&&a.ref===b.ref)return Zf(a,b,e)}b.flags|=1;a=je(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bg(a,b,c,d,e){if(null!==a&&Zc(a.memoizedProps,d)&&a.ref===b.ref)if(kd=!1,0!==(a.lanes&e))0!==(a.flags&131072)&&(kd=!0);else return b.lanes=a.lanes,Zf(a,b,e);return cg(a,b,c,d,e)}\nfunction dg(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null},y(eg,Wf),Wf|=c;else if(0!==(c&1073741824))b.memoizedState={baseLanes:0,cachePool:null},d=null!==f?f.baseLanes:c,y(eg,Wf),Wf|=d;else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null},b.updateQueue=null,y(eg,Wf),Wf|=a,null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):\nd=c,y(eg,Wf),Wf|=d;R(a,b,e,c);return b.child}function fg(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cg(a,b,c,d,e){var f=C(c)?ic:A.current;f=jc(b,f);jd(b,e);c=Ke(a,b,c,d,f,e);d=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&d&&Rd(b);b.flags|=1;R(a,b,c,e);return b.child}\nfunction gg(a,b,c,d,e){if(C(c)){var f=!0;nc(b)}else f=!1;jd(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Dd(b,c,d),Fd(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=ld(l):(l=C(c)?ic:A.current,l=jc(b,l));var m=c.getDerivedStateFromProps,v=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;v||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==\ntypeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ed(b,g,d,l);nd=!1;var r=b.memoizedState;g.state=r;ud(b,d,g,e);k=b.memoizedState;h!==d||r!==k||B.current||nd?(\"function\"===typeof m&&(yd(b,c,m,d),k=b.memoizedState),(h=nd||Cd(b,c,h,d,r,k,l))?(v||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&\n(b.flags|=4194308)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;pd(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:ad(b.type,h);g.props=l;v=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=ld(k):(k=C(c)?ic:A.current,k=jc(b,k));var z=c.getDerivedStateFromProps;(m=\"function\"===typeof z||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==v||r!==k)&&Ed(b,g,d,k);nd=!1;r=b.memoizedState;g.state=r;ud(b,d,g,e);var q=b.memoizedState;h!==v||r!==q||B.current||nd?(\"function\"===typeof z&&(yd(b,c,z,d),q=b.memoizedState),(l=nd||Cd(b,c,l,d,r,q,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nq,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,q,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=q),g.props=d,g.state=q,g.context=k,d=l):(\"function\"!==\ntypeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return hg(a,b,c,d,f,e)}\nfunction hg(a,b,c,d,e,f){fg(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&oc(b,c,!1),Zf(a,b,f);d=b.stateNode;Xf.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=oe(b,a.child,null,f),b.child=oe(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&oc(b,c,!0);return b.child}function ig(a){var b=a.stateNode;b.pendingContext?lc(a,b.pendingContext,b.pendingContext!==b.context):b.context&&lc(a,b.context,!1);ve(a,b.containerInfo)}\nfunction jg(a,b,c,d,e){de();ee(e);b.flags|=256;R(a,b,c,d);return b.child}var kg={dehydrated:null,treeContext:null,retryLane:0};function lg(a){return{baseLanes:a,cachePool:null}}\nfunction mg(a,b,c){var d=b.pendingProps,e=J.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;y(J,e&1);if(null===a){ae(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:Jb(a)?b.lanes=8:b.lanes=1073741824,null;e=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,e={mode:\"hidden\",children:e},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=e):\nf=ng(e,d,0,null),a=ne(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=lg(c),b.memoizedState=kg,a):og(b,e)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(b.flags&256)return b.flags&=-257,pg(a,b,c,Error(n(422)));if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=ng({mode:\"visible\",children:d.children},e,0,null);f=ne(f,e,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&oe(b,a.child,\nnull,c);b.child.memoizedState=lg(c);b.memoizedState=kg;return f}if(0===(b.mode&1))b=pg(a,b,c,null);else if(Jb(h))b=pg(a,b,c,Error(n(419)));else if(d=0!==(c&a.childLanes),kd||d){d=F;if(null!==d){switch(c&-c){case 4:f=2;break;case 16:f=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=\n268435456;break;default:f=0}d=0!==(f&(d.suspendedLanes|c))?0:f;0!==d&&d!==e.retryLane&&(e.retryLane=d,Ad(a,d,-1))}Tf();b=pg(a,b,c,Error(n(421)))}else Ib(h)?(b.flags|=128,b.child=a.child,b=qg.bind(null,a),Kb(h,b),b=null):(c=e.treeContext,p&&(Ud=Ob(h),Td=b,I=!0,Wd=null,Vd=!1,null!==c&&(Kd[Ld++]=Nd,Kd[Ld++]=Od,Kd[Ld++]=Md,Nd=c.id,Od=c.overflow,Md=b)),b=og(b,b.pendingProps.children),b.flags|=4096);return b}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=\nnull===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}\nfunction og(a,b){b=ng({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sg(a,b,c,d){var e=a.child;a=e.sibling;c=je(e,{mode:\"visible\",children:c});0===(b.mode&1)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(d=b.deletions,null===d?(b.deletions=[a],b.flags|=16):d.push(a));return b.child=c}\nfunction rg(a,b,c,d,e){var f=b.mode;a=a.child;var g=a.sibling,h={mode:\"hidden\",children:c};0===(f&1)&&b.child!==a?(c=b.child,c.childLanes=0,c.pendingProps=h,b.deletions=null):(c=je(a,h),c.subtreeFlags=a.subtreeFlags&14680064);null!==g?d=je(g,d):(d=ne(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function pg(a,b,c,d){null!==d&&ee(d);oe(b,a.child,null,c);a=og(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction tg(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);id(a.return,b,c)}function ug(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction vg(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=J.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&tg(a,c,b);else if(19===a.tag)tg(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}y(J,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ze(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);ug(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ze(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}ug(b,!0,c,null,f);break;case \"together\":ug(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction Zf(a,b,c){null!==a&&(b.dependencies=a.dependencies);vd|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(n(153));if(null!==b.child){a=b.child;c=je(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=je(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction wg(a,b,c){switch(b.tag){case 3:ig(b);de();break;case 5:xe(b);break;case 1:C(b.type)&&nc(b);break;case 4:ve(b,b.stateNode.containerInfo);break;case 10:gd(b,b.type._context,b.memoizedProps.value);break;case 13:var d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return y(J,J.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return mg(a,b,c);y(J,J.current&1);a=Zf(a,b,c);return null!==a?a.sibling:null}y(J,J.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&128)){if(d)return vg(a,\nb,c);b.flags|=128}var e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);y(J,J.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dg(a,b,c)}return Zf(a,b,c)}\nfunction xg(a,b){Sd(b);switch(b.tag){case 1:return C(b.type)&&kc(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return we(),x(B),x(A),Be(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return ye(b),null;case 13:x(J);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(n(340));de()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return x(J),null;case 4:return we(),null;case 10:return hd(b.type._context),null;case 22:case 23:return Vf(),\nnull;case 24:return null;default:return null}}var yg=!1,zg=!1,Ag=\"function\"===typeof WeakSet?WeakSet:Set,S=null;function Bg(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){T(a,b,d)}else c.current=null}function Cg(a,b,c){try{c()}catch(d){T(a,b,d)}}var Dg=!1;\nfunction Eg(a,b){Ia(a.containerInfo);for(S=b;null!==S;)if(a=S,b=a.child,0!==(a.subtreeFlags&1028)&&null!==b)b.return=a,S=b;else for(;null!==S;){a=S;try{var c=a.alternate;if(0!==(a.flags&1024))switch(a.tag){case 0:case 11:case 15:break;case 1:if(null!==c){var d=c.memoizedProps,e=c.memoizedState,f=a.stateNode,g=f.getSnapshotBeforeUpdate(a.elementType===a.type?d:ad(a.type,d),e);f.__reactInternalSnapshotBeforeUpdate=g}break;case 3:Ua&&xb(a.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;\ndefault:throw Error(n(163));}}catch(h){T(a,a.return,h)}b=a.sibling;if(null!==b){b.return=a.return;S=b;break}S=a.return}c=Dg;Dg=!1;return c}function Fg(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Cg(b,c,f)}e=e.next}while(e!==d)}}function Gg(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Hg(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=Fa(c);break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Ig(a,b,c){if(Oc&&\"function\"===typeof Oc.onCommitFiberUnmount)try{Oc.onCommitFiberUnmount(Nc,b)}catch(g){}switch(b.tag){case 0:case 11:case 14:case 15:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a=a.next;do{var e=d,f=e.destroy;e=e.tag;void 0!==f&&(0!==(e&2)?Cg(b,c,f):0!==(e&4)&&Cg(b,c,f));d=d.next}while(d!==a)}break;case 1:Bg(b,c);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(g){T(b,\nc,g)}break;case 5:Bg(b,c);break;case 4:Ua?Jg(a,b,c):Va&&Va&&(b=b.stateNode.containerInfo,c=zb(b),Cb(b,c))}}function Kg(a,b,c){for(var d=b;;)if(Ig(a,d,c),null===d.child||Ua&&4===d.tag){if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return}d.sibling.return=d.return;d=d.sibling}else d.child.return=d,d=d.child}\nfunction Lg(a){var b=a.alternate;null!==b&&(a.alternate=null,Lg(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&Za(b));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Mg(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Ng(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Mg(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Og(a){if(Ua){a:{for(var b=a.return;null!==b;){if(Mg(b))break a;b=b.return}throw Error(n(160));}var c=b;switch(c.tag){case 5:b=c.stateNode;c.flags&32&&(sb(b),c.flags&=-33);c=Ng(a);Pg(a,c,b);break;case 3:case 4:b=c.stateNode.containerInfo;c=Ng(a);Qg(a,c,b);break;default:throw Error(n(161));}}}function Qg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?pb(c,a,b):kb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Qg(a,b,c),a=a.sibling;null!==a;)Qg(a,b,c),a=a.sibling}\nfunction Pg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?ob(c,a,b):jb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Pg(a,b,c),a=a.sibling;null!==a;)Pg(a,b,c),a=a.sibling}\nfunction Jg(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(n(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag)Kg(a,d,c),g?rb(f,d.stateNode):qb(f,d.stateNode);else if(18===d.tag)g?Wb(f,d.stateNode):Vb(f,d.stateNode);else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ig(a,d,c),null!==\nd.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Rg(a,b){if(Ua){switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&nb(c,f,e,a,d,b)}return;case 6:if(null===b.stateNode)throw Error(n(162));c=b.memoizedProps;lb(b.stateNode,null!==a?a.memoizedProps:c,c);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);return;\ncase 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 17:return}throw Error(n(163));}switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);break;case 22:case 23:return}a:if(Va){switch(b.tag){case 1:case 5:case 6:break a;case 3:case 4:b=b.stateNode;Cb(b.containerInfo,b.pendingChildren);break a}throw Error(n(163));}}\nfunction Sg(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ag);b.forEach(function(b){var d=Tg.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction Ug(a,b){for(S=b;null!==S;){b=S;var c=b.deletions;if(null!==c)for(var d=0;d\";case bh:return\":has(\"+(ih(a)||\"\")+\")\";case ch:return'[role=\"'+a.value+'\"]';case eh:return'\"'+a.value+'\"';case dh:return'[data-testname=\"'+a.value+'\"]';default:throw Error(n(365));}}\nfunction jh(a,b){var c=[];a=[a,0];for(var d=0;de&&(e=g);d&=~f}d=e;d=E()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lh(d/1960))-d;if(10a?16:a;if(null===uh)var d=!1;else{a=uh;uh=null;vh=0;if(0!==(G&6))throw Error(n(331));var e=G;G|=4;for(S=a.current;null!==S;){var f=S,g=f.child;if(0!==(S.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kE()-Vg?Ih(a,0):qh|=c);Z(a,b)}function Vh(a,b){0===b&&(0===(a.mode&1)?b=1:(b=uc,uc<<=1,0===(uc&130023424)&&(uc=4194304)));var c=H();a=Ah(a,b);null!==a&&(Bc(a,b,c),Z(a,c))}function qg(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Vh(a,c)}\nfunction Tg(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(n(314));}null!==d&&d.delete(b);Vh(a,c)}var Sh;\nSh=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||B.current)kd=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return kd=!1,wg(a,b,c);kd=0!==(a.flags&131072)?!0:!1}else kd=!1,I&&0!==(b.flags&1048576)&&Qd(b,Jd,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;var e=jc(b,A.current);jd(b,c);e=Ke(null,b,d,a,e,c);var f=Pe();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?\n(b.tag=1,b.memoizedState=null,b.updateQueue=null,C(d)?(f=!0,nc(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,od(b),e.updater=Bd,b.stateNode=e,e._reactInternals=b,Fd(b,d,a,c),b=hg(null,b,d,!0,f,c)):(b.tag=0,I&&f&&Rd(b),R(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Wh(d);a=ad(d,a);switch(e){case 0:b=cg(null,b,d,a,c);break a;case 1:b=gg(null,b,d,\na,c);break a;case 11:b=Yf(null,b,d,a,c);break a;case 14:b=$f(null,b,d,ad(d.type,a),c);break a}throw Error(n(306,d,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),cg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),gg(a,b,d,e,c);case 3:a:{ig(b);if(null===a)throw Error(n(387));d=b.pendingProps;f=b.memoizedState;e=f.element;pd(a,b);ud(b,d,null,c);var g=b.memoizedState;d=g.element;if(p&&f.isDehydrated)if(f={element:d,isDehydrated:!1,\ncache:g.cache,transitions:g.transitions},b.updateQueue.baseState=f,b.memoizedState=f,b.flags&256){e=Error(n(423));b=jg(a,b,d,c,e);break a}else if(d!==e){e=Error(n(424));b=jg(a,b,d,c,e);break a}else for(p&&(Ud=Nb(b.stateNode.containerInfo),Td=b,I=!0,Wd=null,Vd=!1),c=pe(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{de();if(d===e){b=Zf(a,b,c);break a}R(a,b,d,c)}b=b.child}return b;case 5:return xe(b),null===a&&ae(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,\nOa(d,e)?g=null:null!==f&&Oa(d,f)&&(b.flags|=32),fg(a,b),R(a,b,g,c),b.child;case 6:return null===a&&ae(b),null;case 13:return mg(a,b,c);case 4:return ve(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=oe(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),Yf(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,b,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=\nb.type._context;e=b.pendingProps;f=b.memoizedProps;g=e.value;gd(b,d,g);if(null!==f)if(Rc(f.value,g)){if(f.children===e.children&&!B.current){b=Zf(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=qd(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=\nc);id(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(n(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);id(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,jd(b,c),e=ld(e),d=d(e),b.flags|=\n1,R(a,b,d,c),b.child;case 14:return d=b.type,e=ad(d,b.pendingProps),e=ad(d.type,e),$f(a,b,d,e,c);case 15:return bg(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,C(d)?(a=!0,nc(b)):a=!1,jd(b,c),Dd(b,d,e),Fd(b,d,e,c),hg(null,b,d,!0,a,c);case 19:return vg(a,b,c);case 22:return dg(a,b,c)}throw Error(n(156,b.tag));};function Dh(a,b){return Fc(a,b)}\nfunction Xh(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Yd(a,b,c,d){return new Xh(a,b,c,d)}function ag(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Wh(a){if(\"function\"===typeof a)return ag(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===na)return 11;if(a===qa)return 14}return 2}\nfunction je(a,b){var c=a.alternate;null===c?(c=Yd(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction le(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ag(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ia:return ne(c.children,e,f,b);case ja:g=8;e|=8;break;case ka:return a=Yd(12,c,b,e|2),a.elementType=ka,a.lanes=f,a;case oa:return a=Yd(13,c,b,e),a.elementType=oa,a.lanes=f,a;case pa:return a=Yd(19,c,b,e),a.elementType=pa,a.lanes=f,a;case sa:return ng(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case la:g=10;break a;case ma:g=9;break a;case na:g=11;\nbreak a;case qa:g=14;break a;case ra:g=16;d=null;break a}throw Error(n(130,null==a?a:typeof a,\"\"));}b=Yd(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function ne(a,b,c,d){a=Yd(7,a,d,b);a.lanes=c;return a}function ng(a,b,c,d){a=Yd(22,a,d,b);a.elementType=sa;a.lanes=c;a.stateNode={};return a}function ke(a,b,c){a=Yd(6,a,null,b);a.lanes=c;return a}\nfunction me(a,b,c){b=Yd(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction Yh(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=Sa;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=Ac(0);this.expirationTimes=Ac(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Ac(0);this.identifierPrefix=d;this.onRecoverableError=e;p&&(this.mutableSourceEagerHydrationData=\nnull)}function Zh(a,b,c,d,e,f,g,h,k){a=new Yh(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Yd(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null};od(f);return a}\nfunction $h(a){if(!a)return hc;a=a._reactInternals;a:{if(ya(a)!==a||1!==a.tag)throw Error(n(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(C(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(n(171));}if(1===a.tag){var c=a.type;if(C(c))return mc(a,c,b)}return b}\nfunction ai(a){var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(n(188));a=Object.keys(a).join(\",\");throw Error(n(268,a));}a=Ba(b);return null===a?null:a.stateNode}function bi(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c=l&&f>=v&&e<=m&&g<=r){a.splice(b,1);break}else if(!(d!==l||c.width!==k.width||rg)){v>f&&(k.height+=v-f,k.y=f);re)){l>d&&(k.width+=\nl-d,k.x=d);mc&&(c=g)),g \")+\"\\n\\nNo matching component was found for:\\n \")+a.join(\" > \")}return null};\nexports.getPublicRootInstance=function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return Fa(a.child.stateNode);default:return a.child.stateNode}};\nexports.injectIntoDevTools=function(a){a={bundleType:a.bundleType,version:a.version,rendererPackageName:a.rendererPackageName,rendererConfig:a.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ea.ReactCurrentDispatcher,findHostInstanceByFiber:di,findFiberByHostInstance:a.findFiberByHostInstance||\nei,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.0.0-fc46dba67-20220329\"};if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)a=!1;else{var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)a=!0;else{try{Nc=b.inject(a),Oc=b}catch(c){}a=b.checkDCE?!0:!1}}return a};exports.isAlreadyRendering=function(){return!1};\nexports.observeVisibleRects=function(a,b,c,d){if(!bb)throw Error(n(363));a=kh(a,b);var e=ib(a,c,d).disconnect;return{disconnect:function(){e()}}};exports.registerMutableSourceForHydration=function(a,b){var c=b._getVersion;c=c(b._source);null==a.mutableSourceEagerHydrationData?a.mutableSourceEagerHydrationData=[b,c]:a.mutableSourceEagerHydrationData.push(b,c)};exports.runWithPriority=function(a,b){var c=D;try{return D=a,b()}finally{D=c}};exports.shouldError=function(){return null};\nexports.shouldSuspend=function(){return!1};exports.updateContainer=function(a,b,c,d){var e=b.current,f=H(),g=zd(e);c=$h(c);null===b.context?b.context=c:b.pendingContext=c;b=qd(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);rd(e,b);a=Ad(e,g,f);null!==a&&sd(a,e,g);return g};\n\n return exports;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler-constants.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler-constants.development.js');\n}\n","/**\n * @license React\n * scheduler.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var enableSchedulerDebugging = false;\nvar enableProfiling = false;\nvar frameYieldMs = 5;\n\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n siftUp(heap, node, index);\n}\nfunction peek(heap) {\n return heap.length === 0 ? null : heap[0];\n}\nfunction pop(heap) {\n if (heap.length === 0) {\n return null;\n }\n\n var first = heap[0];\n var last = heap.pop();\n\n if (last !== first) {\n heap[0] = last;\n siftDown(heap, last, 0);\n }\n\n return first;\n}\n\nfunction siftUp(heap, node, i) {\n var index = i;\n\n while (index > 0) {\n var parentIndex = index - 1 >>> 1;\n var parent = heap[parentIndex];\n\n if (compare(parent, node) > 0) {\n // The parent is larger. Swap positions.\n heap[parentIndex] = node;\n heap[index] = parent;\n index = parentIndex;\n } else {\n // The parent is smaller. Exit.\n return;\n }\n }\n}\n\nfunction siftDown(heap, node, i) {\n var index = i;\n var length = heap.length;\n var halfLength = length >>> 1;\n\n while (index < halfLength) {\n var leftIndex = (index + 1) * 2 - 1;\n var left = heap[leftIndex];\n var rightIndex = leftIndex + 1;\n var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those.\n\n if (compare(left, node) < 0) {\n if (rightIndex < length && compare(right, left) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n heap[index] = left;\n heap[leftIndex] = node;\n index = leftIndex;\n }\n } else if (rightIndex < length && compare(right, node) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n // Neither child is smaller. Exit.\n return;\n }\n }\n}\n\nfunction compare(a, b) {\n // Compare sort index first, then task id.\n var diff = a.sortIndex - b.sortIndex;\n return diff !== 0 ? diff : a.id - b.id;\n}\n\n// TODO: Use symbols?\nvar ImmediatePriority = 1;\nvar UserBlockingPriority = 2;\nvar NormalPriority = 3;\nvar LowPriority = 4;\nvar IdlePriority = 5;\n\nfunction markTaskErrored(task, ms) {\n}\n\n/* eslint-disable no-var */\n\nvar hasPerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\n\nif (hasPerformanceNow) {\n var localPerformance = performance;\n\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date;\n var initialTime = localDate.now();\n\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n} // Max 31 bit integer. The max integer size in V8 for 32-bit systems.\n// Math.pow(2, 30) - 1\n// 0b111111111111111111111111111111\n\n\nvar maxSigned31BitInt = 1073741823; // Times out immediately\n\nvar IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out\n\nvar USER_BLOCKING_PRIORITY_TIMEOUT = 250;\nvar NORMAL_PRIORITY_TIMEOUT = 5000;\nvar LOW_PRIORITY_TIMEOUT = 10000; // Never times out\n\nvar IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap\n\nvar taskQueue = [];\nvar timerQueue = []; // Incrementing id counter. Used to maintain insertion order.\n\nvar taskIdCounter = 1; // Pausing the scheduler is useful for debugging.\nvar currentTask = null;\nvar currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrance.\n\nvar isPerformingWork = false;\nvar isHostCallbackScheduled = false;\nvar isHostTimeoutScheduled = false; // Capture local references to native APIs, in case a polyfill overrides them.\n\nvar localSetTimeout = typeof setTimeout === 'function' ? setTimeout : null;\nvar localClearTimeout = typeof clearTimeout === 'function' ? clearTimeout : null;\nvar localSetImmediate = typeof setImmediate !== 'undefined' ? setImmediate : null; // IE and Node.js + jsdom\n\nvar isInputPending = typeof navigator !== 'undefined' && navigator.scheduling !== undefined && navigator.scheduling.isInputPending !== undefined ? navigator.scheduling.isInputPending.bind(navigator.scheduling) : null;\n\nfunction advanceTimers(currentTime) {\n // Check for tasks that are no longer delayed and add them to the queue.\n var timer = peek(timerQueue);\n\n while (timer !== null) {\n if (timer.callback === null) {\n // Timer was cancelled.\n pop(timerQueue);\n } else if (timer.startTime <= currentTime) {\n // Timer fired. Transfer to the task queue.\n pop(timerQueue);\n timer.sortIndex = timer.expirationTime;\n push(taskQueue, timer);\n } else {\n // Remaining timers are pending.\n return;\n }\n\n timer = peek(timerQueue);\n }\n}\n\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = false;\n advanceTimers(currentTime);\n\n if (!isHostCallbackScheduled) {\n if (peek(taskQueue) !== null) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n } else {\n var firstTimer = peek(timerQueue);\n\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n }\n }\n}\n\nfunction flushWork(hasTimeRemaining, initialTime) {\n\n\n isHostCallbackScheduled = false;\n\n if (isHostTimeoutScheduled) {\n // We scheduled a timeout but it's no longer needed. Cancel it.\n isHostTimeoutScheduled = false;\n cancelHostTimeout();\n }\n\n isPerformingWork = true;\n var previousPriorityLevel = currentPriorityLevel;\n\n try {\n if (enableProfiling) {\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } catch (error) {\n if (currentTask !== null) {\n var currentTime = exports.unstable_now();\n markTaskErrored(currentTask, currentTime);\n currentTask.isQueued = false;\n }\n\n throw error;\n }\n } else {\n // No catch in prod code path.\n return workLoop(hasTimeRemaining, initialTime);\n }\n } finally {\n currentTask = null;\n currentPriorityLevel = previousPriorityLevel;\n isPerformingWork = false;\n }\n}\n\nfunction workLoop(hasTimeRemaining, initialTime) {\n var currentTime = initialTime;\n advanceTimers(currentTime);\n currentTask = peek(taskQueue);\n\n while (currentTask !== null && !(enableSchedulerDebugging )) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n // This currentTask hasn't expired, and we've reached the deadline.\n break;\n }\n\n var callback = currentTask.callback;\n\n if (typeof callback === 'function') {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n\n var continuationCallback = callback(didUserCallbackTimeout);\n currentTime = exports.unstable_now();\n\n if (typeof continuationCallback === 'function') {\n currentTask.callback = continuationCallback;\n } else {\n\n if (currentTask === peek(taskQueue)) {\n pop(taskQueue);\n }\n }\n\n advanceTimers(currentTime);\n } else {\n pop(taskQueue);\n }\n\n currentTask = peek(taskQueue);\n } // Return whether there's additional work\n\n\n if (currentTask !== null) {\n return true;\n } else {\n var firstTimer = peek(timerQueue);\n\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n\n return false;\n }\n}\n\nfunction unstable_runWithPriority(priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n case LowPriority:\n case IdlePriority:\n break;\n\n default:\n priorityLevel = NormalPriority;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n}\n\nfunction unstable_next(eventHandler) {\n var priorityLevel;\n\n switch (currentPriorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n // Shift down to normal priority\n priorityLevel = NormalPriority;\n break;\n\n default:\n // Anything lower than normal priority should remain at the current level.\n priorityLevel = currentPriorityLevel;\n break;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n}\n\nfunction unstable_wrapCallback(callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n // This is a fork of runWithPriority, inlined for performance.\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n}\n\nfunction unstable_scheduleCallback(priorityLevel, callback, options) {\n var currentTime = exports.unstable_now();\n var startTime;\n\n if (typeof options === 'object' && options !== null) {\n var delay = options.delay;\n\n if (typeof delay === 'number' && delay > 0) {\n startTime = currentTime + delay;\n } else {\n startTime = currentTime;\n }\n } else {\n startTime = currentTime;\n }\n\n var timeout;\n\n switch (priorityLevel) {\n case ImmediatePriority:\n timeout = IMMEDIATE_PRIORITY_TIMEOUT;\n break;\n\n case UserBlockingPriority:\n timeout = USER_BLOCKING_PRIORITY_TIMEOUT;\n break;\n\n case IdlePriority:\n timeout = IDLE_PRIORITY_TIMEOUT;\n break;\n\n case LowPriority:\n timeout = LOW_PRIORITY_TIMEOUT;\n break;\n\n case NormalPriority:\n default:\n timeout = NORMAL_PRIORITY_TIMEOUT;\n break;\n }\n\n var expirationTime = startTime + timeout;\n var newTask = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: startTime,\n expirationTime: expirationTime,\n sortIndex: -1\n };\n\n if (startTime > currentTime) {\n // This is a delayed task.\n newTask.sortIndex = startTime;\n push(timerQueue, newTask);\n\n if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n // All tasks are delayed, and this is the task with the earliest delay.\n if (isHostTimeoutScheduled) {\n // Cancel an existing timeout.\n cancelHostTimeout();\n } else {\n isHostTimeoutScheduled = true;\n } // Schedule a timeout.\n\n\n requestHostTimeout(handleTimeout, startTime - currentTime);\n }\n } else {\n newTask.sortIndex = expirationTime;\n push(taskQueue, newTask);\n // wait until the next time we yield.\n\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n }\n\n return newTask;\n}\n\nfunction unstable_pauseExecution() {\n}\n\nfunction unstable_continueExecution() {\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n}\n\nfunction unstable_getFirstCallbackNode() {\n return peek(taskQueue);\n}\n\nfunction unstable_cancelCallback(task) {\n // remove from the queue because you can't remove arbitrary nodes from an\n // array based heap, only the first one.)\n\n\n task.callback = null;\n}\n\nfunction unstable_getCurrentPriorityLevel() {\n return currentPriorityLevel;\n}\n\nvar isMessageLoopRunning = false;\nvar scheduledHostCallback = null;\nvar taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main\n// thread, like user events. By default, it yields multiple times per frame.\n// It does not attempt to align with frame boundaries, since most tasks don't\n// need to be frame aligned; for those that do, use requestAnimationFrame.\n\nvar frameInterval = frameYieldMs;\nvar startTime = -1;\n\nfunction shouldYieldToHost() {\n var timeElapsed = exports.unstable_now() - startTime;\n\n if (timeElapsed < frameInterval) {\n // The main thread has only been blocked for a really short amount of time;\n // smaller than a single frame. Don't yield yet.\n return false;\n } // The main thread has been blocked for a non-negligible amount of time. We\n\n\n return true;\n}\n\nfunction requestPaint() {\n\n}\n\nfunction forceFrameRate(fps) {\n if (fps < 0 || fps > 125) {\n // Using console['error'] to evade Babel and ESLint\n console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported');\n return;\n }\n\n if (fps > 0) {\n frameInterval = Math.floor(1000 / fps);\n } else {\n // reset the framerate\n frameInterval = frameYieldMs;\n }\n}\n\nvar performWorkUntilDeadline = function () {\n if (scheduledHostCallback !== null) {\n var currentTime = exports.unstable_now(); // Keep track of the start time so we can measure how long the main thread\n // has been blocked.\n\n startTime = currentTime;\n var hasTimeRemaining = true; // If a scheduler task throws, exit the current browser task so the\n // error can be observed.\n //\n // Intentionally not using a try-catch, since that makes some debugging\n // techniques harder. Instead, if `scheduledHostCallback` errors, then\n // `hasMoreWork` will remain true, and we'll continue the work loop.\n\n var hasMoreWork = true;\n\n try {\n hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n } finally {\n if (hasMoreWork) {\n // If there's more work, schedule the next message event at the end\n // of the preceding one.\n schedulePerformWorkUntilDeadline();\n } else {\n isMessageLoopRunning = false;\n scheduledHostCallback = null;\n }\n }\n } else {\n isMessageLoopRunning = false;\n } // Yielding to the browser will give it a chance to paint, so we can\n};\n\nvar schedulePerformWorkUntilDeadline;\n\nif (typeof localSetImmediate === 'function') {\n // Node.js and old IE.\n // There's a few reasons for why we prefer setImmediate.\n //\n // Unlike MessageChannel, it doesn't prevent a Node.js process from exiting.\n // (Even though this is a DOM fork of the Scheduler, you could get here\n // with a mix of Node.js 15+, which has a MessageChannel, and jsdom.)\n // https://github.com/facebook/react/issues/20756\n //\n // But also, it runs earlier which is the semantic we want.\n // If other browsers ever implement it, it's better to use it.\n // Although both of these would be inferior to native scheduling.\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\n} else if (typeof MessageChannel !== 'undefined') {\n // DOM and Worker environments.\n // We prefer MessageChannel because of the 4ms setTimeout clamping.\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else {\n // We should only fallback here in non-browser environments.\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\n}\n\nfunction requestHostCallback(callback) {\n scheduledHostCallback = callback;\n\n if (!isMessageLoopRunning) {\n isMessageLoopRunning = true;\n schedulePerformWorkUntilDeadline();\n }\n}\n\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\n\nfunction cancelHostTimeout() {\n localClearTimeout(taskTimeoutID);\n taskTimeoutID = -1;\n}\n\nvar unstable_requestPaint = requestPaint;\nvar unstable_Profiling = null;\n\nexports.unstable_IdlePriority = IdlePriority;\nexports.unstable_ImmediatePriority = ImmediatePriority;\nexports.unstable_LowPriority = LowPriority;\nexports.unstable_NormalPriority = NormalPriority;\nexports.unstable_Profiling = unstable_Profiling;\nexports.unstable_UserBlockingPriority = UserBlockingPriority;\nexports.unstable_cancelCallback = unstable_cancelCallback;\nexports.unstable_continueExecution = unstable_continueExecution;\nexports.unstable_forceFrameRate = forceFrameRate;\nexports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\nexports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\nexports.unstable_next = unstable_next;\nexports.unstable_pauseExecution = unstable_pauseExecution;\nexports.unstable_requestPaint = unstable_requestPaint;\nexports.unstable_runWithPriority = unstable_runWithPriority;\nexports.unstable_scheduleCallback = unstable_scheduleCallback;\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = unstable_wrapCallback;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"app.js","mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrOA;AACA;AACA;AAGA;AACA;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACznBA;AACA;AACA;AAGA;AACA","sources":["webpack://smart-engraving-miniapp/._src_app.tsx","webpack://smart-engraving-miniapp/./src/app.tsx?c9a4","webpack://smart-engraving-miniapp/._node_modules_react-reconciler_cjs_react-reconciler-constants.development.js","webpack://smart-engraving-miniapp/._node_modules_react-reconciler_cjs_react-reconciler.production.min.js","webpack://smart-engraving-miniapp/._node_modules_react-reconciler_constants.js","webpack://smart-engraving-miniapp/._node_modules_react-reconciler_node_modules_scheduler_cjs_scheduler.development.js","webpack://smart-engraving-miniapp/._node_modules_react-reconciler_node_modules_scheduler_index.js"],"sourcesContent":["import _classCallCheck from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _callSuper from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/callSuper.js\";\nimport _inherits from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport { Component } from 'react';\nimport { ThemeProvider } from './context/ThemeContext';\nimport './app.scss';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar App = /*#__PURE__*/function (_Component) {\n function App() {\n _classCallCheck(this, App);\n return _callSuper(this, App, arguments);\n }\n _inherits(App, _Component);\n return _createClass(App, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {}\n }, {\n key: \"componentDidShow\",\n value: function componentDidShow() {}\n }, {\n key: \"componentDidHide\",\n value: function componentDidHide() {}\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/_jsx(ThemeProvider, {\n children: this.props.children\n });\n }\n }]);\n}(Component);\nexport default App;","import '@tarojs/plugin-platform-weapp/dist/runtime'\n\nimport { window } from '@tarojs/runtime'\nimport { createReactApp } from '@tarojs/plugin-framework-react/dist/runtime'\nimport { initPxTransform } from '@tarojs/taro'\n\nimport component from \"!!../node_modules/@tarojs/taro-loader/lib/entry-cache.js?name=app!./app.tsx\"\n\nimport * as React from 'react'\nimport ReactDOM from 'react-dom'\n\nvar config = {\"pages\":[\"pages/index/index\",\"pages/product/index\",\"pages/diy/index\",\"pages/checkout/index\",\"pages/designList/index\",\"pages/orders/index\",\"pages/profile/index\",\"pages/service/index\",\"pages/wordcloud/index\",\"pages/orderDetail/index\",\"pages/address/index\",\"pages/settings/index\",\"pages/agreement/index\",\"pages/userDatabase/index\"],\"window\":{\"backgroundTextStyle\":\"light\",\"navigationStyle\":\"custom\",\"backgroundColor\":\"#ffffff\"},\"tabBar\":{\"custom\":true,\"list\":[{\"pagePath\":\"pages/index/index\",\"text\":\"首页\"},{\"pagePath\":\"pages/designList/index\",\"text\":\"设计清单\"},{\"pagePath\":\"pages/orders/index\",\"text\":\"订单\"},{\"pagePath\":\"pages/profile/index\",\"text\":\"我的\"}]},\"permission\":{\"scope.writePhotosAlbum\":{\"desc\":\"保存词云图片到相册\"}}};\nwindow.__taroAppConfig = config\nvar inst = App(createReactApp(component, React, ReactDOM, config))\n\ninitPxTransform({\n designWidth: 750,\n deviceRatio: {\"640\":1.17,\"750\":1,\"828\":0.905},\n baseFontSize: 20,\n unitPrecision: undefined,\n targetUnit: undefined\n})\n","/**\n * @license React\n * react-reconciler-constants.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar SyncLane =\n/* */\n1;\nvar InputContinuousLane =\n/* */\n4;\nvar DefaultLane =\n/* */\n16;\nvar IdleLane =\n/* */\n536870912;\n\nvar DiscreteEventPriority = SyncLane;\nvar ContinuousEventPriority = InputContinuousLane;\nvar DefaultEventPriority = DefaultLane;\nvar IdleEventPriority = IdleLane;\n\nvar LegacyRoot = 0;\nvar ConcurrentRoot = 1;\n\nexports.ConcurrentRoot = ConcurrentRoot;\nexports.ContinuousEventPriority = ContinuousEventPriority;\nexports.DefaultEventPriority = DefaultEventPriority;\nexports.DiscreteEventPriority = DiscreteEventPriority;\nexports.IdleEventPriority = IdleEventPriority;\nexports.LegacyRoot = LegacyRoot;\n })();\n}\n","/**\n * @license React\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nmodule.exports = function $$$reconciler($$$hostConfig) {\n var exports = {};\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\"),ca=Object.assign;function n(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;ch||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{bc=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?ac(a):\"\"}var dc=Object.prototype.hasOwnProperty,ec=[],fc=-1;function gc(a){return{current:a}}\nfunction x(a){0>fc||(a.current=ec[fc],ec[fc]=null,fc--)}function y(a,b){fc++;ec[fc]=a.current;a.current=b}var hc={},A=gc(hc),B=gc(!1),ic=hc;function jc(a,b){var c=a.type.contextTypes;if(!c)return hc;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction C(a){a=a.childContextTypes;return null!==a&&void 0!==a}function kc(){x(B);x(A)}function lc(a,b,c){if(A.current!==hc)throw Error(n(168));y(A,b);y(B,c)}function mc(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(n(108,xa(a)||\"Unknown\",e));return ca({},c,d)}\nfunction nc(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||hc;ic=A.current;y(A,a);y(B,B.current);return!0}function oc(a,b,c){var d=a.stateNode;if(!d)throw Error(n(169));c?(a=mc(a,b,ic),d.__reactInternalMemoizedMergedChildContext=a,x(B),x(A),y(A,a)):x(B);y(B,c)}var qc=Math.clz32?Math.clz32:pc,rc=Math.log,sc=Math.LN2;function pc(a){a>>>=0;return 0===a?32:31-(rc(a)/sc|0)|0}var tc=64,uc=4194304;\nfunction vc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function wc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=vc(h):(f&=g,0!==f&&(d=vc(f)))}else g=c&~e,0!==g?d=vc(g):0!==f&&(d=vc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}function Bc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-qc(b);a[b]=c}\nfunction Cc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0>=g;e-=g;Nd=1<<32-qc(b)+e|c<u?(t=w,w=null):t=w.sibling;var q=r(e,w,h[u],k);if(null===q){null===w&&(w=t);break}a&&w&&null===q.alternate&&b(e,w);g=f(q,g,u);null===m?l=q:m.sibling=q;m=q;w=t}if(u===h.length)return c(e,w),I&&Pd(e,u),l;if(null===w){for(;uu?(q=m,m=null):q=m.sibling;var V=r(e,m,t.value,k);if(null===V){null===m&&(m=q);break}a&&m&&null===V.alternate&&b(e,m);g=f(V,g,u);null===w?l=V:w.sibling=V;w=V;m=q}if(t.done)return c(e,\nm),I&&Pd(e,u),l;if(null===m){for(;!t.done;u++,t=h.next())t=v(e,t.value,k),null!==t&&(g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);I&&Pd(e,u);return l}for(m=d(e,m);!t.done;u++,t=h.next())t=z(m,e,u,t.value,k),null!==t&&(a&&null!==t.alternate&&m.delete(null===t.key?u:t.key),g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);a&&m.forEach(function(a){return b(e,a)});I&&Pd(e,u);return l}function da(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ia&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==\nf){switch(f.$$typeof){case fa:a:{for(var k=f.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ia){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===ra&&he(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=fe(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ia?(d=ne(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=le(f.type,f.key,f.props,null,a.mode,h),h.ref=fe(a,d,f),h.return=\na,a=h)}return g(a);case ha:a:{for(l=f.key;null!==d;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=me(f,a.mode,h);d.return=a;a=d}return g(a);case ra:return l=f._init,da(a,d,l(f._payload),h)}if(Ea(f))return q(a,d,f,h);if(ua(f))return N(a,d,f,h);ge(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&\n6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=ke(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return da}var oe=ie(!0),pe=ie(!1),qe={},re=gc(qe),se=gc(qe),te=gc(qe);function ue(a){if(a===qe)throw Error(n(174));return a}function ve(a,b){y(te,b);y(se,a);y(re,qe);a=Ga(b);x(re);y(re,a)}function we(){x(re);x(se);x(te)}function xe(a){var b=ue(te.current),c=ue(re.current);b=Ha(c,a.type,b);c!==b&&(y(se,a),y(re,b))}function ye(a){se.current===a&&(x(re),x(se))}var J=gc(0);\nfunction ze(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||Ib(c)||Jb(c)))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Ae=[];\nfunction Be(){for(var a=0;ac?c:4;a(!0);var d=De.transition;De.transition={};try{a(!1),b()}finally{D=c,De.transition=d}}function rf(){return Re().memoizedState}function sf(a,b,c){var d=zd(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};tf(a)?uf(b,c):(vf(a,b,c),c=H(),a=Ad(a,d,c),null!==a&&wf(a,b,d))}\nfunction df(a,b,c){var d=zd(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(tf(a))uf(b,e);else{vf(a,b,e);var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Rc(h,g))return}catch(k){}finally{}c=H();a=Ad(a,d,c);null!==a&&wf(a,b,d)}}function tf(a){var b=a.alternate;return a===K||null!==b&&b===K}\nfunction uf(a,b){Ge=Fe=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function vf(a,b,c){null!==F&&0!==(a.mode&1)&&0===(G&2)?(a=b.interleaved,null===a?(c.next=c,null===md?md=[b]:md.push(b)):(c.next=a.next,a.next=c),b.interleaved=c):(a=b.pending,null===a?c.next=c:(c.next=a.next,a.next=c),b.pending=c)}function wf(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Dc(a,c)}}\nvar Oe={readContext:ld,useCallback:O,useContext:O,useEffect:O,useImperativeHandle:O,useInsertionEffect:O,useLayoutEffect:O,useMemo:O,useReducer:O,useRef:O,useState:O,useDebugValue:O,useDeferredValue:O,useTransition:O,useMutableSource:O,useSyncExternalStore:O,useId:O,unstable_isNewReconciler:!1},Le={readContext:ld,useCallback:function(a,b){Qe().memoizedState=[a,void 0===b?null:b];return a},useContext:ld,useEffect:hf,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ff(4194308,\n4,lf.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ff(4194308,4,a,b)},useInsertionEffect:function(a,b){return ff(4,2,a,b)},useMemo:function(a,b){var c=Qe();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Qe();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=sf.bind(null,K,a);return[d.memoizedState,a]},useRef:function(a){var b=\nQe();a={current:a};return b.memoizedState=a},useState:cf,useDebugValue:nf,useDeferredValue:function(a){var b=cf(a),c=b[0],d=b[1];hf(function(){var b=De.transition;De.transition={};try{d(a)}finally{De.transition=b}},[a]);return c},useTransition:function(){var a=cf(!1),b=a[0];a=qf.bind(null,a[1]);Qe().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=K,e=Qe();if(I){if(void 0===c)throw Error(n(407));c=c()}else{c=b();if(null===F)throw Error(n(349));\n0!==(Ee&30)||af(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;hf(Ye.bind(null,d,f,a),[a]);d.flags|=2048;Ze(9,$e.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Qe(),b=F.identifierPrefix;if(I){var c=Od;var d=Nd;c=(d&~(1<<32-qc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=He++;0Uf&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304)}else{if(!d)if(a=ze(f),null!==a){if(b.flags|=128,d=!0,a=a.updateQueue,null!==a&&(b.updateQueue=a,b.flags|=4),Qf(e,!0),null===e.tail&&\"hidden\"===e.tailMode&&!f.alternate&&!I)return P(b),null}else 2*E()-e.renderingStartTime>Uf&&1073741824!==c&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304);e.isBackwards?(f.sibling=b.child,b.child=f):(a=e.last,null!==a?a.sibling=f:b.child=f,e.last=f)}if(null!==\ne.tail)return b=e.tail,e.rendering=b,e.tail=b.sibling,e.renderingStartTime=E(),b.sibling=null,a=J.current,y(J,d?a&1|2:a&1),b;P(b);return null;case 22:case 23:return Vf(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(Wf&1073741824)&&(P(b),Ua&&b.subtreeFlags&6&&(b.flags|=8192)):P(b),null;case 24:return null;case 25:return null}throw Error(n(156,b.tag));}var Xf=ea.ReactCurrentOwner,kd=!1;\nfunction R(a,b,c,d){b.child=null===a?pe(b,null,c,d):oe(b,a.child,c,d)}function Yf(a,b,c,d,e){c=c.render;var f=b.ref;jd(b,e);d=Ke(a,b,c,d,f,e);c=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&c&&Rd(b);b.flags|=1;R(a,b,d,e);return b.child}\nfunction $f(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!ag(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bg(a,b,f,d,e);a=le(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Zc;if(c(g,d)&&a.ref===b.ref)return Zf(a,b,e)}b.flags|=1;a=je(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bg(a,b,c,d,e){if(null!==a&&Zc(a.memoizedProps,d)&&a.ref===b.ref)if(kd=!1,0!==(a.lanes&e))0!==(a.flags&131072)&&(kd=!0);else return b.lanes=a.lanes,Zf(a,b,e);return cg(a,b,c,d,e)}\nfunction dg(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null},y(eg,Wf),Wf|=c;else if(0!==(c&1073741824))b.memoizedState={baseLanes:0,cachePool:null},d=null!==f?f.baseLanes:c,y(eg,Wf),Wf|=d;else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null},b.updateQueue=null,y(eg,Wf),Wf|=a,null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):\nd=c,y(eg,Wf),Wf|=d;R(a,b,e,c);return b.child}function fg(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cg(a,b,c,d,e){var f=C(c)?ic:A.current;f=jc(b,f);jd(b,e);c=Ke(a,b,c,d,f,e);d=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&d&&Rd(b);b.flags|=1;R(a,b,c,e);return b.child}\nfunction gg(a,b,c,d,e){if(C(c)){var f=!0;nc(b)}else f=!1;jd(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Dd(b,c,d),Fd(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=ld(l):(l=C(c)?ic:A.current,l=jc(b,l));var m=c.getDerivedStateFromProps,v=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;v||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==\ntypeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ed(b,g,d,l);nd=!1;var r=b.memoizedState;g.state=r;ud(b,d,g,e);k=b.memoizedState;h!==d||r!==k||B.current||nd?(\"function\"===typeof m&&(yd(b,c,m,d),k=b.memoizedState),(h=nd||Cd(b,c,h,d,r,k,l))?(v||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&\n(b.flags|=4194308)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;pd(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:ad(b.type,h);g.props=l;v=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=ld(k):(k=C(c)?ic:A.current,k=jc(b,k));var z=c.getDerivedStateFromProps;(m=\"function\"===typeof z||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==v||r!==k)&&Ed(b,g,d,k);nd=!1;r=b.memoizedState;g.state=r;ud(b,d,g,e);var q=b.memoizedState;h!==v||r!==q||B.current||nd?(\"function\"===typeof z&&(yd(b,c,z,d),q=b.memoizedState),(l=nd||Cd(b,c,l,d,r,q,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nq,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,q,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=q),g.props=d,g.state=q,g.context=k,d=l):(\"function\"!==\ntypeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return hg(a,b,c,d,f,e)}\nfunction hg(a,b,c,d,e,f){fg(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&oc(b,c,!1),Zf(a,b,f);d=b.stateNode;Xf.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=oe(b,a.child,null,f),b.child=oe(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&oc(b,c,!0);return b.child}function ig(a){var b=a.stateNode;b.pendingContext?lc(a,b.pendingContext,b.pendingContext!==b.context):b.context&&lc(a,b.context,!1);ve(a,b.containerInfo)}\nfunction jg(a,b,c,d,e){de();ee(e);b.flags|=256;R(a,b,c,d);return b.child}var kg={dehydrated:null,treeContext:null,retryLane:0};function lg(a){return{baseLanes:a,cachePool:null}}\nfunction mg(a,b,c){var d=b.pendingProps,e=J.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;y(J,e&1);if(null===a){ae(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:Jb(a)?b.lanes=8:b.lanes=1073741824,null;e=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,e={mode:\"hidden\",children:e},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=e):\nf=ng(e,d,0,null),a=ne(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=lg(c),b.memoizedState=kg,a):og(b,e)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(b.flags&256)return b.flags&=-257,pg(a,b,c,Error(n(422)));if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=ng({mode:\"visible\",children:d.children},e,0,null);f=ne(f,e,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&oe(b,a.child,\nnull,c);b.child.memoizedState=lg(c);b.memoizedState=kg;return f}if(0===(b.mode&1))b=pg(a,b,c,null);else if(Jb(h))b=pg(a,b,c,Error(n(419)));else if(d=0!==(c&a.childLanes),kd||d){d=F;if(null!==d){switch(c&-c){case 4:f=2;break;case 16:f=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=\n268435456;break;default:f=0}d=0!==(f&(d.suspendedLanes|c))?0:f;0!==d&&d!==e.retryLane&&(e.retryLane=d,Ad(a,d,-1))}Tf();b=pg(a,b,c,Error(n(421)))}else Ib(h)?(b.flags|=128,b.child=a.child,b=qg.bind(null,a),Kb(h,b),b=null):(c=e.treeContext,p&&(Ud=Ob(h),Td=b,I=!0,Wd=null,Vd=!1,null!==c&&(Kd[Ld++]=Nd,Kd[Ld++]=Od,Kd[Ld++]=Md,Nd=c.id,Od=c.overflow,Md=b)),b=og(b,b.pendingProps.children),b.flags|=4096);return b}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=\nnull===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}\nfunction og(a,b){b=ng({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sg(a,b,c,d){var e=a.child;a=e.sibling;c=je(e,{mode:\"visible\",children:c});0===(b.mode&1)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(d=b.deletions,null===d?(b.deletions=[a],b.flags|=16):d.push(a));return b.child=c}\nfunction rg(a,b,c,d,e){var f=b.mode;a=a.child;var g=a.sibling,h={mode:\"hidden\",children:c};0===(f&1)&&b.child!==a?(c=b.child,c.childLanes=0,c.pendingProps=h,b.deletions=null):(c=je(a,h),c.subtreeFlags=a.subtreeFlags&14680064);null!==g?d=je(g,d):(d=ne(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function pg(a,b,c,d){null!==d&&ee(d);oe(b,a.child,null,c);a=og(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction tg(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);id(a.return,b,c)}function ug(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction vg(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=J.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&tg(a,c,b);else if(19===a.tag)tg(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}y(J,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ze(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);ug(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ze(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}ug(b,!0,c,null,f);break;case \"together\":ug(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction Zf(a,b,c){null!==a&&(b.dependencies=a.dependencies);vd|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(n(153));if(null!==b.child){a=b.child;c=je(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=je(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction wg(a,b,c){switch(b.tag){case 3:ig(b);de();break;case 5:xe(b);break;case 1:C(b.type)&&nc(b);break;case 4:ve(b,b.stateNode.containerInfo);break;case 10:gd(b,b.type._context,b.memoizedProps.value);break;case 13:var d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return y(J,J.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return mg(a,b,c);y(J,J.current&1);a=Zf(a,b,c);return null!==a?a.sibling:null}y(J,J.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&128)){if(d)return vg(a,\nb,c);b.flags|=128}var e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);y(J,J.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dg(a,b,c)}return Zf(a,b,c)}\nfunction xg(a,b){Sd(b);switch(b.tag){case 1:return C(b.type)&&kc(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return we(),x(B),x(A),Be(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return ye(b),null;case 13:x(J);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(n(340));de()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return x(J),null;case 4:return we(),null;case 10:return hd(b.type._context),null;case 22:case 23:return Vf(),\nnull;case 24:return null;default:return null}}var yg=!1,zg=!1,Ag=\"function\"===typeof WeakSet?WeakSet:Set,S=null;function Bg(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){T(a,b,d)}else c.current=null}function Cg(a,b,c){try{c()}catch(d){T(a,b,d)}}var Dg=!1;\nfunction Eg(a,b){Ia(a.containerInfo);for(S=b;null!==S;)if(a=S,b=a.child,0!==(a.subtreeFlags&1028)&&null!==b)b.return=a,S=b;else for(;null!==S;){a=S;try{var c=a.alternate;if(0!==(a.flags&1024))switch(a.tag){case 0:case 11:case 15:break;case 1:if(null!==c){var d=c.memoizedProps,e=c.memoizedState,f=a.stateNode,g=f.getSnapshotBeforeUpdate(a.elementType===a.type?d:ad(a.type,d),e);f.__reactInternalSnapshotBeforeUpdate=g}break;case 3:Ua&&xb(a.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;\ndefault:throw Error(n(163));}}catch(h){T(a,a.return,h)}b=a.sibling;if(null!==b){b.return=a.return;S=b;break}S=a.return}c=Dg;Dg=!1;return c}function Fg(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Cg(b,c,f)}e=e.next}while(e!==d)}}function Gg(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Hg(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=Fa(c);break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Ig(a,b,c){if(Oc&&\"function\"===typeof Oc.onCommitFiberUnmount)try{Oc.onCommitFiberUnmount(Nc,b)}catch(g){}switch(b.tag){case 0:case 11:case 14:case 15:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a=a.next;do{var e=d,f=e.destroy;e=e.tag;void 0!==f&&(0!==(e&2)?Cg(b,c,f):0!==(e&4)&&Cg(b,c,f));d=d.next}while(d!==a)}break;case 1:Bg(b,c);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(g){T(b,\nc,g)}break;case 5:Bg(b,c);break;case 4:Ua?Jg(a,b,c):Va&&Va&&(b=b.stateNode.containerInfo,c=zb(b),Cb(b,c))}}function Kg(a,b,c){for(var d=b;;)if(Ig(a,d,c),null===d.child||Ua&&4===d.tag){if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return}d.sibling.return=d.return;d=d.sibling}else d.child.return=d,d=d.child}\nfunction Lg(a){var b=a.alternate;null!==b&&(a.alternate=null,Lg(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&Za(b));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Mg(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Ng(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Mg(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Og(a){if(Ua){a:{for(var b=a.return;null!==b;){if(Mg(b))break a;b=b.return}throw Error(n(160));}var c=b;switch(c.tag){case 5:b=c.stateNode;c.flags&32&&(sb(b),c.flags&=-33);c=Ng(a);Pg(a,c,b);break;case 3:case 4:b=c.stateNode.containerInfo;c=Ng(a);Qg(a,c,b);break;default:throw Error(n(161));}}}function Qg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?pb(c,a,b):kb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Qg(a,b,c),a=a.sibling;null!==a;)Qg(a,b,c),a=a.sibling}\nfunction Pg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?ob(c,a,b):jb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Pg(a,b,c),a=a.sibling;null!==a;)Pg(a,b,c),a=a.sibling}\nfunction Jg(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(n(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag)Kg(a,d,c),g?rb(f,d.stateNode):qb(f,d.stateNode);else if(18===d.tag)g?Wb(f,d.stateNode):Vb(f,d.stateNode);else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ig(a,d,c),null!==\nd.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Rg(a,b){if(Ua){switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&nb(c,f,e,a,d,b)}return;case 6:if(null===b.stateNode)throw Error(n(162));c=b.memoizedProps;lb(b.stateNode,null!==a?a.memoizedProps:c,c);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);return;\ncase 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 17:return}throw Error(n(163));}switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);break;case 22:case 23:return}a:if(Va){switch(b.tag){case 1:case 5:case 6:break a;case 3:case 4:b=b.stateNode;Cb(b.containerInfo,b.pendingChildren);break a}throw Error(n(163));}}\nfunction Sg(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ag);b.forEach(function(b){var d=Tg.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction Ug(a,b){for(S=b;null!==S;){b=S;var c=b.deletions;if(null!==c)for(var d=0;d\";case bh:return\":has(\"+(ih(a)||\"\")+\")\";case ch:return'[role=\"'+a.value+'\"]';case eh:return'\"'+a.value+'\"';case dh:return'[data-testname=\"'+a.value+'\"]';default:throw Error(n(365));}}\nfunction jh(a,b){var c=[];a=[a,0];for(var d=0;de&&(e=g);d&=~f}d=e;d=E()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lh(d/1960))-d;if(10a?16:a;if(null===uh)var d=!1;else{a=uh;uh=null;vh=0;if(0!==(G&6))throw Error(n(331));var e=G;G|=4;for(S=a.current;null!==S;){var f=S,g=f.child;if(0!==(S.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kE()-Vg?Ih(a,0):qh|=c);Z(a,b)}function Vh(a,b){0===b&&(0===(a.mode&1)?b=1:(b=uc,uc<<=1,0===(uc&130023424)&&(uc=4194304)));var c=H();a=Ah(a,b);null!==a&&(Bc(a,b,c),Z(a,c))}function qg(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Vh(a,c)}\nfunction Tg(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(n(314));}null!==d&&d.delete(b);Vh(a,c)}var Sh;\nSh=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||B.current)kd=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return kd=!1,wg(a,b,c);kd=0!==(a.flags&131072)?!0:!1}else kd=!1,I&&0!==(b.flags&1048576)&&Qd(b,Jd,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;var e=jc(b,A.current);jd(b,c);e=Ke(null,b,d,a,e,c);var f=Pe();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?\n(b.tag=1,b.memoizedState=null,b.updateQueue=null,C(d)?(f=!0,nc(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,od(b),e.updater=Bd,b.stateNode=e,e._reactInternals=b,Fd(b,d,a,c),b=hg(null,b,d,!0,f,c)):(b.tag=0,I&&f&&Rd(b),R(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Wh(d);a=ad(d,a);switch(e){case 0:b=cg(null,b,d,a,c);break a;case 1:b=gg(null,b,d,\na,c);break a;case 11:b=Yf(null,b,d,a,c);break a;case 14:b=$f(null,b,d,ad(d.type,a),c);break a}throw Error(n(306,d,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),cg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),gg(a,b,d,e,c);case 3:a:{ig(b);if(null===a)throw Error(n(387));d=b.pendingProps;f=b.memoizedState;e=f.element;pd(a,b);ud(b,d,null,c);var g=b.memoizedState;d=g.element;if(p&&f.isDehydrated)if(f={element:d,isDehydrated:!1,\ncache:g.cache,transitions:g.transitions},b.updateQueue.baseState=f,b.memoizedState=f,b.flags&256){e=Error(n(423));b=jg(a,b,d,c,e);break a}else if(d!==e){e=Error(n(424));b=jg(a,b,d,c,e);break a}else for(p&&(Ud=Nb(b.stateNode.containerInfo),Td=b,I=!0,Wd=null,Vd=!1),c=pe(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{de();if(d===e){b=Zf(a,b,c);break a}R(a,b,d,c)}b=b.child}return b;case 5:return xe(b),null===a&&ae(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,\nOa(d,e)?g=null:null!==f&&Oa(d,f)&&(b.flags|=32),fg(a,b),R(a,b,g,c),b.child;case 6:return null===a&&ae(b),null;case 13:return mg(a,b,c);case 4:return ve(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=oe(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),Yf(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,b,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=\nb.type._context;e=b.pendingProps;f=b.memoizedProps;g=e.value;gd(b,d,g);if(null!==f)if(Rc(f.value,g)){if(f.children===e.children&&!B.current){b=Zf(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=qd(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=\nc);id(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(n(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);id(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,jd(b,c),e=ld(e),d=d(e),b.flags|=\n1,R(a,b,d,c),b.child;case 14:return d=b.type,e=ad(d,b.pendingProps),e=ad(d.type,e),$f(a,b,d,e,c);case 15:return bg(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,C(d)?(a=!0,nc(b)):a=!1,jd(b,c),Dd(b,d,e),Fd(b,d,e,c),hg(null,b,d,!0,a,c);case 19:return vg(a,b,c);case 22:return dg(a,b,c)}throw Error(n(156,b.tag));};function Dh(a,b){return Fc(a,b)}\nfunction Xh(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Yd(a,b,c,d){return new Xh(a,b,c,d)}function ag(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Wh(a){if(\"function\"===typeof a)return ag(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===na)return 11;if(a===qa)return 14}return 2}\nfunction je(a,b){var c=a.alternate;null===c?(c=Yd(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction le(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ag(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ia:return ne(c.children,e,f,b);case ja:g=8;e|=8;break;case ka:return a=Yd(12,c,b,e|2),a.elementType=ka,a.lanes=f,a;case oa:return a=Yd(13,c,b,e),a.elementType=oa,a.lanes=f,a;case pa:return a=Yd(19,c,b,e),a.elementType=pa,a.lanes=f,a;case sa:return ng(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case la:g=10;break a;case ma:g=9;break a;case na:g=11;\nbreak a;case qa:g=14;break a;case ra:g=16;d=null;break a}throw Error(n(130,null==a?a:typeof a,\"\"));}b=Yd(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function ne(a,b,c,d){a=Yd(7,a,d,b);a.lanes=c;return a}function ng(a,b,c,d){a=Yd(22,a,d,b);a.elementType=sa;a.lanes=c;a.stateNode={};return a}function ke(a,b,c){a=Yd(6,a,null,b);a.lanes=c;return a}\nfunction me(a,b,c){b=Yd(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction Yh(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=Sa;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=Ac(0);this.expirationTimes=Ac(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Ac(0);this.identifierPrefix=d;this.onRecoverableError=e;p&&(this.mutableSourceEagerHydrationData=\nnull)}function Zh(a,b,c,d,e,f,g,h,k){a=new Yh(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Yd(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null};od(f);return a}\nfunction $h(a){if(!a)return hc;a=a._reactInternals;a:{if(ya(a)!==a||1!==a.tag)throw Error(n(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(C(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(n(171));}if(1===a.tag){var c=a.type;if(C(c))return mc(a,c,b)}return b}\nfunction ai(a){var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(n(188));a=Object.keys(a).join(\",\");throw Error(n(268,a));}a=Ba(b);return null===a?null:a.stateNode}function bi(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c=l&&f>=v&&e<=m&&g<=r){a.splice(b,1);break}else if(!(d!==l||c.width!==k.width||rg)){v>f&&(k.height+=v-f,k.y=f);re)){l>d&&(k.width+=\nl-d,k.x=d);mc&&(c=g)),g \")+\"\\n\\nNo matching component was found for:\\n \")+a.join(\" > \")}return null};\nexports.getPublicRootInstance=function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return Fa(a.child.stateNode);default:return a.child.stateNode}};\nexports.injectIntoDevTools=function(a){a={bundleType:a.bundleType,version:a.version,rendererPackageName:a.rendererPackageName,rendererConfig:a.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ea.ReactCurrentDispatcher,findHostInstanceByFiber:di,findFiberByHostInstance:a.findFiberByHostInstance||\nei,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.0.0-fc46dba67-20220329\"};if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)a=!1;else{var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)a=!0;else{try{Nc=b.inject(a),Oc=b}catch(c){}a=b.checkDCE?!0:!1}}return a};exports.isAlreadyRendering=function(){return!1};\nexports.observeVisibleRects=function(a,b,c,d){if(!bb)throw Error(n(363));a=kh(a,b);var e=ib(a,c,d).disconnect;return{disconnect:function(){e()}}};exports.registerMutableSourceForHydration=function(a,b){var c=b._getVersion;c=c(b._source);null==a.mutableSourceEagerHydrationData?a.mutableSourceEagerHydrationData=[b,c]:a.mutableSourceEagerHydrationData.push(b,c)};exports.runWithPriority=function(a,b){var c=D;try{return D=a,b()}finally{D=c}};exports.shouldError=function(){return null};\nexports.shouldSuspend=function(){return!1};exports.updateContainer=function(a,b,c,d){var e=b.current,f=H(),g=zd(e);c=$h(c);null===b.context?b.context=c:b.pendingContext=c;b=qd(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);rd(e,b);a=Ad(e,g,f);null!==a&&sd(a,e,g);return g};\n\n return exports;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler-constants.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler-constants.development.js');\n}\n","/**\n * @license React\n * scheduler.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var enableSchedulerDebugging = false;\nvar enableProfiling = false;\nvar frameYieldMs = 5;\n\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n siftUp(heap, node, index);\n}\nfunction peek(heap) {\n return heap.length === 0 ? null : heap[0];\n}\nfunction pop(heap) {\n if (heap.length === 0) {\n return null;\n }\n\n var first = heap[0];\n var last = heap.pop();\n\n if (last !== first) {\n heap[0] = last;\n siftDown(heap, last, 0);\n }\n\n return first;\n}\n\nfunction siftUp(heap, node, i) {\n var index = i;\n\n while (index > 0) {\n var parentIndex = index - 1 >>> 1;\n var parent = heap[parentIndex];\n\n if (compare(parent, node) > 0) {\n // The parent is larger. Swap positions.\n heap[parentIndex] = node;\n heap[index] = parent;\n index = parentIndex;\n } else {\n // The parent is smaller. Exit.\n return;\n }\n }\n}\n\nfunction siftDown(heap, node, i) {\n var index = i;\n var length = heap.length;\n var halfLength = length >>> 1;\n\n while (index < halfLength) {\n var leftIndex = (index + 1) * 2 - 1;\n var left = heap[leftIndex];\n var rightIndex = leftIndex + 1;\n var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those.\n\n if (compare(left, node) < 0) {\n if (rightIndex < length && compare(right, left) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n heap[index] = left;\n heap[leftIndex] = node;\n index = leftIndex;\n }\n } else if (rightIndex < length && compare(right, node) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n // Neither child is smaller. Exit.\n return;\n }\n }\n}\n\nfunction compare(a, b) {\n // Compare sort index first, then task id.\n var diff = a.sortIndex - b.sortIndex;\n return diff !== 0 ? diff : a.id - b.id;\n}\n\n// TODO: Use symbols?\nvar ImmediatePriority = 1;\nvar UserBlockingPriority = 2;\nvar NormalPriority = 3;\nvar LowPriority = 4;\nvar IdlePriority = 5;\n\nfunction markTaskErrored(task, ms) {\n}\n\n/* eslint-disable no-var */\n\nvar hasPerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\n\nif (hasPerformanceNow) {\n var localPerformance = performance;\n\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date;\n var initialTime = localDate.now();\n\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n} // Max 31 bit integer. The max integer size in V8 for 32-bit systems.\n// Math.pow(2, 30) - 1\n// 0b111111111111111111111111111111\n\n\nvar maxSigned31BitInt = 1073741823; // Times out immediately\n\nvar IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out\n\nvar USER_BLOCKING_PRIORITY_TIMEOUT = 250;\nvar NORMAL_PRIORITY_TIMEOUT = 5000;\nvar LOW_PRIORITY_TIMEOUT = 10000; // Never times out\n\nvar IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap\n\nvar taskQueue = [];\nvar timerQueue = []; // Incrementing id counter. Used to maintain insertion order.\n\nvar taskIdCounter = 1; // Pausing the scheduler is useful for debugging.\nvar currentTask = null;\nvar currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrance.\n\nvar isPerformingWork = false;\nvar isHostCallbackScheduled = false;\nvar isHostTimeoutScheduled = false; // Capture local references to native APIs, in case a polyfill overrides them.\n\nvar localSetTimeout = typeof setTimeout === 'function' ? setTimeout : null;\nvar localClearTimeout = typeof clearTimeout === 'function' ? clearTimeout : null;\nvar localSetImmediate = typeof setImmediate !== 'undefined' ? setImmediate : null; // IE and Node.js + jsdom\n\nvar isInputPending = typeof navigator !== 'undefined' && navigator.scheduling !== undefined && navigator.scheduling.isInputPending !== undefined ? navigator.scheduling.isInputPending.bind(navigator.scheduling) : null;\n\nfunction advanceTimers(currentTime) {\n // Check for tasks that are no longer delayed and add them to the queue.\n var timer = peek(timerQueue);\n\n while (timer !== null) {\n if (timer.callback === null) {\n // Timer was cancelled.\n pop(timerQueue);\n } else if (timer.startTime <= currentTime) {\n // Timer fired. Transfer to the task queue.\n pop(timerQueue);\n timer.sortIndex = timer.expirationTime;\n push(taskQueue, timer);\n } else {\n // Remaining timers are pending.\n return;\n }\n\n timer = peek(timerQueue);\n }\n}\n\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = false;\n advanceTimers(currentTime);\n\n if (!isHostCallbackScheduled) {\n if (peek(taskQueue) !== null) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n } else {\n var firstTimer = peek(timerQueue);\n\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n }\n }\n}\n\nfunction flushWork(hasTimeRemaining, initialTime) {\n\n\n isHostCallbackScheduled = false;\n\n if (isHostTimeoutScheduled) {\n // We scheduled a timeout but it's no longer needed. Cancel it.\n isHostTimeoutScheduled = false;\n cancelHostTimeout();\n }\n\n isPerformingWork = true;\n var previousPriorityLevel = currentPriorityLevel;\n\n try {\n if (enableProfiling) {\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } catch (error) {\n if (currentTask !== null) {\n var currentTime = exports.unstable_now();\n markTaskErrored(currentTask, currentTime);\n currentTask.isQueued = false;\n }\n\n throw error;\n }\n } else {\n // No catch in prod code path.\n return workLoop(hasTimeRemaining, initialTime);\n }\n } finally {\n currentTask = null;\n currentPriorityLevel = previousPriorityLevel;\n isPerformingWork = false;\n }\n}\n\nfunction workLoop(hasTimeRemaining, initialTime) {\n var currentTime = initialTime;\n advanceTimers(currentTime);\n currentTask = peek(taskQueue);\n\n while (currentTask !== null && !(enableSchedulerDebugging )) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n // This currentTask hasn't expired, and we've reached the deadline.\n break;\n }\n\n var callback = currentTask.callback;\n\n if (typeof callback === 'function') {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n\n var continuationCallback = callback(didUserCallbackTimeout);\n currentTime = exports.unstable_now();\n\n if (typeof continuationCallback === 'function') {\n currentTask.callback = continuationCallback;\n } else {\n\n if (currentTask === peek(taskQueue)) {\n pop(taskQueue);\n }\n }\n\n advanceTimers(currentTime);\n } else {\n pop(taskQueue);\n }\n\n currentTask = peek(taskQueue);\n } // Return whether there's additional work\n\n\n if (currentTask !== null) {\n return true;\n } else {\n var firstTimer = peek(timerQueue);\n\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n\n return false;\n }\n}\n\nfunction unstable_runWithPriority(priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n case LowPriority:\n case IdlePriority:\n break;\n\n default:\n priorityLevel = NormalPriority;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n}\n\nfunction unstable_next(eventHandler) {\n var priorityLevel;\n\n switch (currentPriorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n // Shift down to normal priority\n priorityLevel = NormalPriority;\n break;\n\n default:\n // Anything lower than normal priority should remain at the current level.\n priorityLevel = currentPriorityLevel;\n break;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n}\n\nfunction unstable_wrapCallback(callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n // This is a fork of runWithPriority, inlined for performance.\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n}\n\nfunction unstable_scheduleCallback(priorityLevel, callback, options) {\n var currentTime = exports.unstable_now();\n var startTime;\n\n if (typeof options === 'object' && options !== null) {\n var delay = options.delay;\n\n if (typeof delay === 'number' && delay > 0) {\n startTime = currentTime + delay;\n } else {\n startTime = currentTime;\n }\n } else {\n startTime = currentTime;\n }\n\n var timeout;\n\n switch (priorityLevel) {\n case ImmediatePriority:\n timeout = IMMEDIATE_PRIORITY_TIMEOUT;\n break;\n\n case UserBlockingPriority:\n timeout = USER_BLOCKING_PRIORITY_TIMEOUT;\n break;\n\n case IdlePriority:\n timeout = IDLE_PRIORITY_TIMEOUT;\n break;\n\n case LowPriority:\n timeout = LOW_PRIORITY_TIMEOUT;\n break;\n\n case NormalPriority:\n default:\n timeout = NORMAL_PRIORITY_TIMEOUT;\n break;\n }\n\n var expirationTime = startTime + timeout;\n var newTask = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: startTime,\n expirationTime: expirationTime,\n sortIndex: -1\n };\n\n if (startTime > currentTime) {\n // This is a delayed task.\n newTask.sortIndex = startTime;\n push(timerQueue, newTask);\n\n if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n // All tasks are delayed, and this is the task with the earliest delay.\n if (isHostTimeoutScheduled) {\n // Cancel an existing timeout.\n cancelHostTimeout();\n } else {\n isHostTimeoutScheduled = true;\n } // Schedule a timeout.\n\n\n requestHostTimeout(handleTimeout, startTime - currentTime);\n }\n } else {\n newTask.sortIndex = expirationTime;\n push(taskQueue, newTask);\n // wait until the next time we yield.\n\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n }\n\n return newTask;\n}\n\nfunction unstable_pauseExecution() {\n}\n\nfunction unstable_continueExecution() {\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n}\n\nfunction unstable_getFirstCallbackNode() {\n return peek(taskQueue);\n}\n\nfunction unstable_cancelCallback(task) {\n // remove from the queue because you can't remove arbitrary nodes from an\n // array based heap, only the first one.)\n\n\n task.callback = null;\n}\n\nfunction unstable_getCurrentPriorityLevel() {\n return currentPriorityLevel;\n}\n\nvar isMessageLoopRunning = false;\nvar scheduledHostCallback = null;\nvar taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main\n// thread, like user events. By default, it yields multiple times per frame.\n// It does not attempt to align with frame boundaries, since most tasks don't\n// need to be frame aligned; for those that do, use requestAnimationFrame.\n\nvar frameInterval = frameYieldMs;\nvar startTime = -1;\n\nfunction shouldYieldToHost() {\n var timeElapsed = exports.unstable_now() - startTime;\n\n if (timeElapsed < frameInterval) {\n // The main thread has only been blocked for a really short amount of time;\n // smaller than a single frame. Don't yield yet.\n return false;\n } // The main thread has been blocked for a non-negligible amount of time. We\n\n\n return true;\n}\n\nfunction requestPaint() {\n\n}\n\nfunction forceFrameRate(fps) {\n if (fps < 0 || fps > 125) {\n // Using console['error'] to evade Babel and ESLint\n console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported');\n return;\n }\n\n if (fps > 0) {\n frameInterval = Math.floor(1000 / fps);\n } else {\n // reset the framerate\n frameInterval = frameYieldMs;\n }\n}\n\nvar performWorkUntilDeadline = function () {\n if (scheduledHostCallback !== null) {\n var currentTime = exports.unstable_now(); // Keep track of the start time so we can measure how long the main thread\n // has been blocked.\n\n startTime = currentTime;\n var hasTimeRemaining = true; // If a scheduler task throws, exit the current browser task so the\n // error can be observed.\n //\n // Intentionally not using a try-catch, since that makes some debugging\n // techniques harder. Instead, if `scheduledHostCallback` errors, then\n // `hasMoreWork` will remain true, and we'll continue the work loop.\n\n var hasMoreWork = true;\n\n try {\n hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n } finally {\n if (hasMoreWork) {\n // If there's more work, schedule the next message event at the end\n // of the preceding one.\n schedulePerformWorkUntilDeadline();\n } else {\n isMessageLoopRunning = false;\n scheduledHostCallback = null;\n }\n }\n } else {\n isMessageLoopRunning = false;\n } // Yielding to the browser will give it a chance to paint, so we can\n};\n\nvar schedulePerformWorkUntilDeadline;\n\nif (typeof localSetImmediate === 'function') {\n // Node.js and old IE.\n // There's a few reasons for why we prefer setImmediate.\n //\n // Unlike MessageChannel, it doesn't prevent a Node.js process from exiting.\n // (Even though this is a DOM fork of the Scheduler, you could get here\n // with a mix of Node.js 15+, which has a MessageChannel, and jsdom.)\n // https://github.com/facebook/react/issues/20756\n //\n // But also, it runs earlier which is the semantic we want.\n // If other browsers ever implement it, it's better to use it.\n // Although both of these would be inferior to native scheduling.\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\n} else if (typeof MessageChannel !== 'undefined') {\n // DOM and Worker environments.\n // We prefer MessageChannel because of the 4ms setTimeout clamping.\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else {\n // We should only fallback here in non-browser environments.\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\n}\n\nfunction requestHostCallback(callback) {\n scheduledHostCallback = callback;\n\n if (!isMessageLoopRunning) {\n isMessageLoopRunning = true;\n schedulePerformWorkUntilDeadline();\n }\n}\n\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\n\nfunction cancelHostTimeout() {\n localClearTimeout(taskTimeoutID);\n taskTimeoutID = -1;\n}\n\nvar unstable_requestPaint = requestPaint;\nvar unstable_Profiling = null;\n\nexports.unstable_IdlePriority = IdlePriority;\nexports.unstable_ImmediatePriority = ImmediatePriority;\nexports.unstable_LowPriority = LowPriority;\nexports.unstable_NormalPriority = NormalPriority;\nexports.unstable_Profiling = unstable_Profiling;\nexports.unstable_UserBlockingPriority = UserBlockingPriority;\nexports.unstable_cancelCallback = unstable_cancelCallback;\nexports.unstable_continueExecution = unstable_continueExecution;\nexports.unstable_forceFrameRate = forceFrameRate;\nexports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\nexports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\nexports.unstable_next = unstable_next;\nexports.unstable_pauseExecution = unstable_pauseExecution;\nexports.unstable_requestPaint = unstable_requestPaint;\nexports.unstable_runWithPriority = unstable_runWithPriority;\nexports.unstable_scheduleCallback = unstable_scheduleCallback;\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = unstable_wrapCallback;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/dist/app.json b/dist/app.json index 4836689..370ae66 100644 --- a/dist/app.json +++ b/dist/app.json @@ -1 +1 @@ -{"pages":["pages/index/index","pages/product/index","pages/diy/index","pages/checkout/index","pages/designList/index","pages/orders/index","pages/profile/index","pages/service/index","pages/wordcloud/index","pages/orderDetail/index","pages/address/index","pages/settings/index","pages/agreement/index"],"window":{"backgroundTextStyle":"light","navigationStyle":"custom","backgroundColor":"#ffffff"},"tabBar":{"custom":true,"list":[{"pagePath":"pages/index/index","text":"首页"},{"pagePath":"pages/designList/index","text":"设计清单"},{"pagePath":"pages/orders/index","text":"订单"},{"pagePath":"pages/profile/index","text":"我的"}]},"permission":{"scope.writePhotosAlbum":{"desc":"保存词云图片到相册"}}} \ No newline at end of file +{"pages":["pages/index/index","pages/product/index","pages/diy/index","pages/checkout/index","pages/designList/index","pages/orders/index","pages/profile/index","pages/service/index","pages/wordcloud/index","pages/orderDetail/index","pages/address/index","pages/settings/index","pages/agreement/index","pages/userDatabase/index"],"window":{"backgroundTextStyle":"light","navigationStyle":"custom","backgroundColor":"#ffffff"},"tabBar":{"custom":true,"list":[{"pagePath":"pages/index/index","text":"首页"},{"pagePath":"pages/designList/index","text":"设计清单"},{"pagePath":"pages/orders/index","text":"订单"},{"pagePath":"pages/profile/index","text":"我的"}]},"permission":{"scope.writePhotosAlbum":{"desc":"保存词云图片到相册"}}} \ No newline at end of file diff --git a/dist/common.js b/dist/common.js index 7f06041..71cf0ce 100644 --- a/dist/common.js +++ b/dist/common.js @@ -58,31 +58,28 @@ function LoginGuard(props) { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": function() { return /* binding */ ThemeToggle; } /* harmony export */ }); -/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js"); -/* harmony import */ var _tarojs_taro__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tarojs/taro */ "./node_modules/@tarojs/taro/index.js"); -/* harmony import */ var _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tarojs_taro__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "./node_modules/react/cjs/react.production.min.js"); -/* harmony import */ var _context_ThemeContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/ThemeContext */ "./src/context/ThemeContext.tsx"); -/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ "./node_modules/react/cjs/react-jsx-runtime.production.min.js"); - +/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/cjs/react.production.min.js"); +/* harmony import */ var _context_ThemeContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/ThemeContext */ "./src/context/ThemeContext.tsx"); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ "./node_modules/react/cjs/react-jsx-runtime.production.min.js"); function ThemeToggle() { - var _useThemeContext = (0,_context_ThemeContext__WEBPACK_IMPORTED_MODULE_2__.useThemeContext)(), + var _useThemeContext = (0,_context_ThemeContext__WEBPACK_IMPORTED_MODULE_1__.useThemeContext)(), theme = _useThemeContext.theme, toggleTheme = _useThemeContext.toggleTheme; - var handleToggle = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(function () { + var handleToggle = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () { + // ThemeProvider 在 App.tsx 全局挂载,toggleTheme() 直接修改全局 state, + // 不需要 eventCenter,所有页面会自动响应。 toggleTheme(); - // 触发全局事件,让其他页面也能感知(切换tab后回来的页面会重新读取storage) - _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().eventCenter.trigger('theme:change'); }, [toggleTheme]); - return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_4__.View, { + return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_3__.View, { className: "theme-toggle", onClick: handleToggle, - children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_4__.Text, { + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_3__.Text, { className: "theme-icon", children: theme === 'light' ? '🌙' : '☀️' }) @@ -102,13 +99,10 @@ function ThemeToggle() { /* harmony export */ useThemeContext: function() { return /* binding */ useThemeContext; } /* harmony export */ }); /* unused harmony export ThemeContext */ -/* harmony import */ var F_weixin_wordc_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js */ "./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"); +/* harmony import */ var F_weixin_wordc_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js */ "./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/cjs/react.production.min.js"); -/* harmony import */ var _tarojs_taro__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tarojs/taro */ "./node_modules/@tarojs/taro/index.js"); -/* harmony import */ var _tarojs_taro__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_tarojs_taro__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _utils_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/store */ "./src/utils/store.ts"); -/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ "./node_modules/react/cjs/react-jsx-runtime.production.min.js"); - +/* harmony import */ var _utils_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/store */ "./src/utils/store.ts"); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ "./node_modules/react/cjs/react-jsx-runtime.production.min.js"); @@ -121,12 +115,12 @@ var ThemeContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createCont function ThemeProvider(_ref) { var children = _ref.children; - var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)((0,_utils_store__WEBPACK_IMPORTED_MODULE_2__.getTheme)()), - _useState2 = (0,F_weixin_wordc_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_useState, 2), + var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)((0,_utils_store__WEBPACK_IMPORTED_MODULE_1__.getTheme)()), + _useState2 = (0,F_weixin_wordc_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_useState, 2), theme = _useState2[0], set = _useState2[1]; var setTheme = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (t) { - (0,_utils_store__WEBPACK_IMPORTED_MODULE_2__.setTheme)(t); + (0,_utils_store__WEBPACK_IMPORTED_MODULE_1__.setTheme)(t); set(t); }, []); var toggleTheme = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () { @@ -134,17 +128,11 @@ function ThemeProvider(_ref) { setTheme(next); }, [theme, setTheme]); - // 监听全局主题变化事件(用于已挂载但未重新渲染的页面) - (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () { - var listener = function listener(next) { - return set(next); - }; - _tarojs_taro__WEBPACK_IMPORTED_MODULE_1___default().eventCenter.on('theme:change', listener); - return function () { - _tarojs_taro__WEBPACK_IMPORTED_MODULE_1___default().eventCenter.off('theme:change', listener); - }; - }, []); - return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ThemeContext.Provider, { + // eventCenter 监听已移除:ThemeContext 本身就在 App.tsx 全局挂载, + // 所有页面共用一个 state,无需再靠事件广播。 + // 旧代码曾在此处监听 'theme:change' 并直接 set(参数),但 trigger 未传参数导致 theme 变成 undefined。 + + return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(ThemeContext.Provider, { value: { theme: theme, toggleTheme: toggleTheme, @@ -185,7 +173,7 @@ var PRODUCTS = [{ price: 12, leadTime: '3-5个工作日', description: '精选优质纸张,封面采用高档PU材质,手感细腻。内页可定制横线、方格或空白三种版式。激光微雕工艺将名字或图案精准刻印在封面,永不褪色。小巧轻便,适合随身携带,无论是课堂笔记还是日常备忘,都是你的专属伴侣。', - images: ['/img/book_small/The1.png'], + images: ['/img/book_small/The1.jpg'], mask: { shape: 'rect', width: 300, @@ -200,7 +188,7 @@ var PRODUCTS = [{ price: 45, leadTime: '3-5个工作日', description: 'A4尺寸大开本,180°平摊设计,书写更自由。封面可选真皮、仿布纹或磨砂材质,激光微雕区域更大,适合呈现全班名字、团队口号或公司Logo等大篇幅内容。是毕业纪念、企业年会礼品的首选。', - images: ['/img/book_big/The1.png', '/img/book_big/The2.png'], + images: ['/img/book_big/The1.jpg', '/img/book_big/The2.jpg'], mask: { shape: 'rect', width: 340, @@ -229,7 +217,7 @@ var PRODUCTS = [{ price: 75, leadTime: '7-10个工作日', description: '精选天然楠竹,经多道工序打磨抛光,保留天然竹纹肌理。盒盖采用磁吸开合,内部设有分层隔板。激光微雕在竹面上呈现深浅不一的雕刻效果,融入墨香气质。适合书房案头、书法爱好者的文房伴侣。', - images: ['/img/penbox/The1.png', '/img/penbox/The2.png', '/img/penbox/The3.jpg'], + images: ['/img/penbox/The1.jpg', '/img/penbox/The2.jpg', '/img/penbox/The3.jpg'], mask: { shape: 'rect', width: 320, @@ -277,20 +265,25 @@ var getProductById = function getProductById(id) { /* harmony export */ addAddress: function() { return /* binding */ addAddress; }, /* harmony export */ addDesign: function() { return /* binding */ addDesign; }, /* harmony export */ clearUserInfo: function() { return /* binding */ clearUserInfo; }, +/* harmony export */ createUser: function() { return /* binding */ createUser; }, /* harmony export */ deleteAddress: function() { return /* binding */ deleteAddress; }, +/* harmony export */ deleteUser: function() { return /* binding */ deleteUser; }, /* harmony export */ designToOrder: function() { return /* binding */ designToOrder; }, /* harmony export */ getAddressList: function() { return /* binding */ getAddressList; }, /* harmony export */ getDesignList: function() { return /* binding */ getDesignList; }, /* harmony export */ getOrderList: function() { return /* binding */ getOrderList; }, /* harmony export */ getTheme: function() { return /* binding */ getTheme; }, /* harmony export */ getUserInfo: function() { return /* binding */ getUserInfo; }, +/* harmony export */ listAllUsers: function() { return /* binding */ listAllUsers; }, /* harmony export */ setDesignList: function() { return /* binding */ setDesignList; }, /* harmony export */ setTheme: function() { return /* binding */ setTheme; }, /* harmony export */ setUserInfo: function() { return /* binding */ setUserInfo; }, +/* harmony export */ switchUser: function() { return /* binding */ switchUser; }, /* harmony export */ updateAddress: function() { return /* binding */ updateAddress; }, -/* harmony export */ updateDesign: function() { return /* binding */ updateDesign; } +/* harmony export */ updateDesign: function() { return /* binding */ updateDesign; }, +/* harmony export */ verifyAdminPassword: function() { return /* binding */ verifyAdminPassword; } /* harmony export */ }); -/* unused harmony exports getUserInfoRaw, setUserInfoRaw, setOrderList, setAddressList, getDefaultAddress */ +/* unused harmony exports getUserInfoRaw, setUserInfoRaw, getUserInfoByOpenid, setOrderList, setAddressList, getDefaultAddress */ /* harmony import */ var F_weixin_wordc_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js */ "./node_modules/@babel/runtime/helpers/esm/objectSpread2.js"); /* harmony import */ var F_weixin_wordc_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js */ "./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"); /* harmony import */ var _tarojs_taro__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tarojs/taro */ "./node_modules/@tarojs/taro/index.js"); @@ -317,10 +310,38 @@ function key(scope) { // ---------- 用户数据 ---------- +var USER_REGISTRY_KEY = 'smart_user_registry'; +var ADMIN_PASSWORD = 'zhihui2024'; + +// ---------- 用户注册表 ---------- + +function getUserRegistry() { + try { + return _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().getStorageSync(USER_REGISTRY_KEY) || []; + } catch (_unused) { + return []; + } +} +function saveToRegistry(openid) { + var list = getUserRegistry(); + if (!list.includes(openid)) { + list.push(openid); + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().setStorageSync(USER_REGISTRY_KEY, list); + } +} +function removeFromRegistry(openid) { + var list = getUserRegistry().filter(function (id) { + return id !== openid; + }); + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().setStorageSync(USER_REGISTRY_KEY, list); +} + +// ---------- 用户数据 ---------- + function getUserInfoRaw() { try { return _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().getStorageSync(USER_KEY); - } catch (_unused) { + } catch (_unused2) { return null; } } @@ -328,9 +349,22 @@ function setUserInfoRaw(info) { _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().setStorageSync(USER_KEY, info); if (info !== null && info !== void 0 && info.openid) { _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().setStorageSync(ACTIVE_USER_KEY, info.openid); + // 为每个用户备份独立副本,方便切换账号时读取 + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().setStorageSync("user_info_".concat(info.openid), info); + saveToRegistry(info.openid); } } +function getUserInfoByOpenid(openid) { + try { + var backup = _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().getStorageSync("user_info_".concat(openid)); + if (backup) return backup; + } catch (_unused3) {} + var current = getUserInfoRaw(); + if ((current === null || current === void 0 ? void 0 : current.openid) === openid) return current; + return null; +} function clearUserInfo() { + // 仅退出登录,不删除用户数据 _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().removeStorageSync(USER_KEY); _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().removeStorageSync(ACTIVE_USER_KEY); } @@ -341,12 +375,85 @@ function getUserInfo() { return getUserInfoRaw(); } +// ---------- 用户数据库管理 ---------- + +function listAllUsers() { + var registry = getUserRegistry(); + return registry.map(function (openid) { + var info = getUserInfoByOpenid(openid); + var dList = getDesignListFor(openid); + var oList = getOrderListFor(openid); + return { + openid: openid, + nickName: (info === null || info === void 0 ? void 0 : info.nickName) || '未知用户', + avatarUrl: (info === null || info === void 0 ? void 0 : info.avatarUrl) || '', + loginAt: (info === null || info === void 0 ? void 0 : info.loginAt) || 0, + designCount: dList.length, + orderCount: oList.length + }; + }); +} +function createUser(nickName, avatarUrl) { + var openid = 'mock_' + Date.now().toString(36) + '_' + Math.random().toString(36).slice(2, 6); + var info = { + openid: openid, + nickName: nickName || '微信用户', + avatarUrl: avatarUrl || '', + loginAt: Date.now() + }; + setUserInfoRaw(info); + return info; +} +function switchUser(openid) { + var info = getUserInfoByOpenid(openid); + if (!info) return false; + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().setStorageSync(USER_KEY, info); + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().setStorageSync(ACTIVE_USER_KEY, openid); + return true; +} +function deleteUser(openid) { + // 删除该用户的所有数据 + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().removeStorageSync("user_info_".concat(openid)); + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().removeStorageSync("design_list_".concat(openid)); + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().removeStorageSync("order_list_".concat(openid)); + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().removeStorageSync("address_list_".concat(openid)); + removeFromRegistry(openid); + // 如果删的是当前登录用户,清掉登录态 + var current = getUserInfoRaw(); + if ((current === null || current === void 0 ? void 0 : current.openid) === openid) { + clearUserInfo(); + } +} +function verifyAdminPassword(password) { + return password === ADMIN_PASSWORD; +} + +// ---------- 跨用户读取辅助函数 ---------- + +function keyFor(scope, openid) { + return "".concat(scope, "_").concat(openid); +} +function getDesignListFor(openid) { + try { + return _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().getStorageSync(keyFor('design_list', openid)) || []; + } catch (_unused4) { + return []; + } +} +function getOrderListFor(openid) { + try { + return _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().getStorageSync(keyFor('order_list', openid)) || []; + } catch (_unused5) { + return []; + } +} + // ---------- 设计清单 ---------- function getDesignList() { try { return _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().getStorageSync(key('design_list')) || []; - } catch (_unused2) { + } catch (_unused6) { return []; } } @@ -383,7 +490,7 @@ function updateDesign(id, patch) { function getOrderList() { try { return _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().getStorageSync(key('order_list')) || []; - } catch (_unused3) { + } catch (_unused7) { return []; } } @@ -429,7 +536,7 @@ function designToOrder(designId) { function getTheme() { try { return _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().getStorageSync(THEME_KEY) || 'light'; - } catch (_unused4) { + } catch (_unused8) { return 'light'; } } @@ -442,7 +549,7 @@ function setTheme(theme) { function getAddressList() { try { return _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().getStorageSync(key('address_list')) || []; - } catch (_unused5) { + } catch (_unused9) { return []; } } diff --git a/dist/common.js.map b/dist/common.js.map index ced1c9e..ae0c239 100644 --- a/dist/common.js.map +++ b/dist/common.js.map @@ -1 +1 @@ -{"version":3,"file":"common.js","mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AAAA;AAEA;AAKA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AAAA;AAQA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;AACA;AACA;;;;;;;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxGA;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA","sources":["webpack://smart-engraving-miniapp/._src_components_LoginGuard_index.tsx","webpack://smart-engraving-miniapp/._src_components_ThemeToggle_index.tsx","webpack://smart-engraving-miniapp/._src_context_ThemeContext.tsx","webpack://smart-engraving-miniapp/._src_utils_productConfig.ts","webpack://smart-engraving-miniapp/._src_utils_store.ts"],"sourcesContent":["import Taro from '@tarojs/taro'\nimport { View, Text } from '@tarojs/components'\n\nexport default function LoginGuard(\n props: {\n children: React.ReactNode\n }\n) {\n const user = Taro.getStorageSync('smart_user_info')\n if (!user?.openid) {\n return (\n \n 🔒\n 请先登录\n 登录后查看您的专属内容\n Taro.switchTab({ url: '/pages/profile/index' })}>\n 去登录\n \n \n )\n }\n return props.children as any\n}\n","import { View, Text } from '@tarojs/components'\nimport Taro from '@tarojs/taro'\nimport { useCallback } from 'react'\nimport { useThemeContext } from '../../context/ThemeContext'\nimport './index.scss'\n\nexport default function ThemeToggle() {\n const { theme, toggleTheme } = useThemeContext()\n\n const handleToggle = useCallback(() => {\n toggleTheme()\n // 触发全局事件,让其他页面也能感知(切换tab后回来的页面会重新读取storage)\n Taro.eventCenter.trigger('theme:change')\n }, [toggleTheme])\n\n return (\n \n {theme === 'light' ? '🌙' : '☀️'}\n \n )\n}\n","import { createContext, useContext, useState, useCallback, useEffect } from 'react'\nimport Taro from '@tarojs/taro'\nimport { getTheme, setTheme as saveTheme, type ThemeMode } from '../utils/store'\n\ninterface ThemeContextValue {\n theme: ThemeMode\n toggleTheme: () => void\n setTheme: (t: ThemeMode) => void\n}\n\nconst ThemeContext = createContext({\n theme: 'light',\n toggleTheme: () => {},\n setTheme: () => {}\n})\n\nexport { ThemeContext }\n\nexport function ThemeProvider({ children }: { children: React.ReactNode }) {\n const [theme, set] = useState(getTheme())\n\n const setTheme = useCallback((t: ThemeMode) => {\n saveTheme(t)\n set(t)\n }, [])\n\n const toggleTheme = useCallback(() => {\n const next = theme === 'light' ? 'dark' : 'light'\n setTheme(next)\n }, [theme, setTheme])\n\n // 监听全局主题变化事件(用于已挂载但未重新渲染的页面)\n useEffect(() => {\n const listener = (next: ThemeMode) => set(next)\n Taro.eventCenter.on('theme:change', listener)\n return () => { Taro.eventCenter.off('theme:change', listener) }\n }, [])\n\n return (\n \n {children}\n \n )\n}\n\nexport function useThemeContext(): ThemeContextValue {\n return useContext(ThemeContext)\n}\n","/**\n * 产品品类配置文件\n *\n * ⚠️ 重要:当实际产品尺寸确定后,请修改本文件中的 mask 参数\n * 修改后页面会自动生效,无需改动其他代码\n */\n\nimport { ProductCategory } from '../types'\n\nexport const PRODUCTS: ProductCategory[] = [\n {\n id: 'notebook-small',\n name: '微雕笔记本(小)',\n desc: '便携随行,记录点滴',\n icon: '📓',\n price: 12,\n leadTime: '3-5个工作日',\n description:\n '精选优质纸张,封面采用高档PU材质,手感细腻。内页可定制横线、方格或空白三种版式。激光微雕工艺将名字或图案精准刻印在封面,永不褪色。小巧轻便,适合随身携带,无论是课堂笔记还是日常备忘,都是你的专属伴侣。',\n images: ['/img/book_small/The1.png'],\n mask: {\n shape: 'rect',\n width: 300,\n height: 420,\n borderRadius: 8\n }\n },\n {\n id: 'notebook-large',\n name: '微雕笔记本(大)',\n desc: '大开本,更多创作空间',\n icon: '📔',\n price: 45,\n leadTime: '3-5个工作日',\n description:\n 'A4尺寸大开本,180°平摊设计,书写更自由。封面可选真皮、仿布纹或磨砂材质,激光微雕区域更大,适合呈现全班名字、团队口号或公司Logo等大篇幅内容。是毕业纪念、企业年会礼品的首选。',\n images: ['/img/book_big/The1.png', '/img/book_big/The2.png'],\n mask: {\n shape: 'rect',\n width: 340,\n height: 480,\n borderRadius: 8\n }\n },\n {\n id: 'coaster',\n name: '铜质杯垫',\n desc: '金属质感,桌面艺术',\n icon: '☕',\n price: 25,\n leadTime: '5-7个工作日',\n description:\n '采用优质黄铜材质,表面经拉丝工艺处理,呈现哑光金属质感。背面配有防滑软木垫,保护桌面同时防止滑动。激光微雕可在表面刻印名字、日期或祝福语,是乔迁新居、新婚贺礼的精致之选。',\n images: ['/img/cup/The1.jpg'],\n mask: {\n shape: 'circle',\n width: 280,\n height: 280\n }\n },\n {\n id: 'penbox',\n name: '竹制笔盒',\n desc: '自然竹纹,文房雅器',\n icon: '✏️',\n price: 75,\n leadTime: '7-10个工作日',\n description:\n '精选天然楠竹,经多道工序打磨抛光,保留天然竹纹肌理。盒盖采用磁吸开合,内部设有分层隔板。激光微雕在竹面上呈现深浅不一的雕刻效果,融入墨香气质。适合书房案头、书法爱好者的文房伴侣。',\n images: ['/img/penbox/The1.png', '/img/penbox/The2.png', '/img/penbox/The3.jpg'],\n mask: {\n shape: 'rect',\n width: 320,\n height: 160,\n borderRadius: 12\n }\n },\n {\n id: 'booklamp',\n name: '书本型灯',\n desc: '温暖光影,点亮心意',\n icon: '💡',\n price: 45,\n leadTime: '5-7个工作日',\n description:\n '开合式设计,打开即亮,合拢即灭,如魔法书般充满惊喜。采用LED暖光灯源,光线柔和不刺眼,可持续点亮6-8小时。封面激光微雕可定制文字、图案或照片,让温暖的灯光承载专属记忆。是情侣礼物、毕业礼物的创意之选。',\n images: ['/img/booklight/The1.jpg', '/img/booklight/The2.jpg'],\n mask: {\n shape: 'rect',\n width: 320,\n height: 240,\n borderRadius: 4\n }\n }\n]\n\n/** CATEGORIES 为 PRODUCTS 的别名,供页面引用 */\nexport const CATEGORIES = PRODUCTS\n\n/**\n * 根据产品ID查找品类配置\n */\nexport const getProductById = (id: string): ProductCategory | undefined => {\n return PRODUCTS.find(p => p.id === id)\n}\n","import Taro from '@tarojs/taro'\nimport type { DesignItem, OrderItem, AddressItem } from '../types'\n\nconst THEME_KEY = 'smart_theme'\nconst USER_KEY = 'smart_user_info'\nconst ACTIVE_USER_KEY = 'smart_active_openid'\n\n// ---------- 当前用户 openid 管理 ----------\n\nfunction getActiveOpenid(): string {\n const user = getUserInfoRaw()\n const openid = user?.openid || Taro.getStorageSync(ACTIVE_USER_KEY) || '_guest_'\n Taro.setStorageSync(ACTIVE_USER_KEY, openid)\n return openid\n}\n\nfunction key(scope: string): string {\n const prefix = getActiveOpenid()\n return `${scope}_${prefix}`\n}\n\n// ---------- 用户数据 ----------\n\nexport function getUserInfoRaw(): any {\n try { return Taro.getStorageSync(USER_KEY) } catch { return null }\n}\n\nexport function setUserInfoRaw(info: any) {\n Taro.setStorageSync(USER_KEY, info)\n if (info?.openid) {\n Taro.setStorageSync(ACTIVE_USER_KEY, info.openid)\n }\n}\n\nexport function clearUserInfo() {\n Taro.removeStorageSync(USER_KEY)\n Taro.removeStorageSync(ACTIVE_USER_KEY)\n}\n\nexport function setUserInfo(info: any) {\n setUserInfoRaw(info)\n}\n\nexport function getUserInfo() {\n return getUserInfoRaw()\n}\n\n// ---------- 设计清单 ----------\n\nexport function getDesignList(): DesignItem[] {\n try { return Taro.getStorageSync(key('design_list')) || [] } catch { return [] }\n}\n\nexport function setDesignList(list: DesignItem[]) {\n Taro.setStorageSync(key('design_list'), list)\n}\n\nexport function addDesign(product: any, count: number): DesignItem {\n const list = getDesignList()\n const item: DesignItem = {\n id: 'DSG' + Date.now(),\n productId: product.id,\n productName: product.name,\n productIcon: product.icon,\n unitPrice: product.price,\n count,\n status: 'undesigned',\n createdAt: new Date().toISOString().slice(0, 10)\n }\n setDesignList([...list, item])\n return item\n}\n\nexport function updateDesign(id: string, patch: Partial) {\n const list = getDesignList()\n const idx = list.findIndex(d => d.id === id)\n if (idx === -1) return\n list[idx] = { ...list[idx], ...patch }\n setDesignList(list)\n}\n\n// ---------- 订单 ----------\n\nexport function getOrderList(): OrderItem[] {\n try { return Taro.getStorageSync(key('order_list')) || [] } catch { return [] }\n}\n\nexport function setOrderList(list: OrderItem[]) {\n Taro.setStorageSync(key('order_list'), list)\n}\n\nexport function designToOrder(designId: string): OrderItem | null {\n const dList = getDesignList()\n const oList = getOrderList()\n const design = dList.find(d => d.id === designId)\n if (!design) return null\n\n const order: OrderItem = {\n id: 'ORD' + Date.now().toString().slice(-9),\n productName: design.productName,\n productIcon: design.productIcon,\n statusCode: 'pending',\n date: new Date().toLocaleString('zh-CN', { month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' }).replace(/\\//g, '-'),\n price: '¥' + (design.unitPrice * design.count).toFixed(2),\n count: design.count,\n sku: `${design.productName} × ${design.count}`\n }\n\n const dIdx = dList.findIndex(d => d.id === designId)\n if (dIdx !== -1) {\n dList[dIdx].status = 'ordered'\n dList[dIdx].orderId = order.id\n }\n\n setDesignList(dList)\n setOrderList([order, ...oList])\n return order\n}\n\n// ---------- 主题 ----------\n\nexport type ThemeMode = 'light' | 'dark'\n\nexport function getTheme(): ThemeMode {\n try { return Taro.getStorageSync(THEME_KEY) || 'light' } catch { return 'light' }\n}\n\nexport function setTheme(theme: ThemeMode) {\n Taro.setStorageSync(THEME_KEY, theme)\n}\n\n// ---------- 收货地址 ----------\n\nexport function getAddressList(): AddressItem[] {\n try { return Taro.getStorageSync(key('address_list')) || [] } catch { return [] }\n}\n\nexport function setAddressList(list: AddressItem[]) {\n Taro.setStorageSync(key('address_list'), list)\n}\n\nexport function addAddress(addr: Omit): AddressItem {\n const list = getAddressList()\n const item: AddressItem = { ...addr, id: 'ADR' + Date.now() }\n // 若设为默认,取消其他默认\n if (item.isDefault) {\n list.forEach(a => { a.isDefault = false })\n }\n setAddressList([item, ...list])\n return item\n}\n\nexport function updateAddress(id: string, patch: Partial) {\n const list = getAddressList()\n const idx = list.findIndex(a => a.id === id)\n if (idx === -1) return\n if (patch.isDefault) list.forEach(a => { a.isDefault = false })\n list[idx] = { ...list[idx], ...patch }\n setAddressList(list)\n}\n\nexport function deleteAddress(id: string) {\n const list = getAddressList().filter(a => a.id !== id)\n setAddressList(list)\n}\n\nexport function getDefaultAddress(): AddressItem | undefined {\n return getAddressList().find(a => a.isDefault)\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"common.js","mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AAAA;AAEA;AAKA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AACA;;;;;;;;;;;;;;;;;ACtBA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;;;;;;ACpBA;AAEA;AAAA;AAQA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;AACA;AACA;;;;;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxGA;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA","sources":["webpack://smart-engraving-miniapp/._src_components_LoginGuard_index.tsx","webpack://smart-engraving-miniapp/._src_components_ThemeToggle_index.tsx","webpack://smart-engraving-miniapp/._src_context_ThemeContext.tsx","webpack://smart-engraving-miniapp/._src_utils_productConfig.ts","webpack://smart-engraving-miniapp/._src_utils_store.ts"],"sourcesContent":["import Taro from '@tarojs/taro'\nimport { View, Text } from '@tarojs/components'\n\nexport default function LoginGuard(\n props: {\n children: React.ReactNode\n }\n) {\n const user = Taro.getStorageSync('smart_user_info')\n if (!user?.openid) {\n return (\n \n 🔒\n 请先登录\n 登录后查看您的专属内容\n Taro.switchTab({ url: '/pages/profile/index' })}>\n 去登录\n \n \n )\n }\n return props.children as any\n}\n","import { View, Text } from '@tarojs/components'\nimport Taro from '@tarojs/taro'\nimport { useCallback } from 'react'\nimport { useThemeContext } from '../../context/ThemeContext'\nimport './index.scss'\n\nexport default function ThemeToggle() {\n const { theme, toggleTheme } = useThemeContext()\n\n const handleToggle = useCallback(() => {\n // ThemeProvider 在 App.tsx 全局挂载,toggleTheme() 直接修改全局 state,\n // 不需要 eventCenter,所有页面会自动响应。\n toggleTheme()\n }, [toggleTheme])\n\n return (\n \n {theme === 'light' ? '🌙' : '☀️'}\n \n )\n}\n","import { createContext, useContext, useState, useCallback, useEffect } from 'react'\nimport Taro from '@tarojs/taro'\nimport { getTheme, setTheme as saveTheme, type ThemeMode } from '../utils/store'\n\ninterface ThemeContextValue {\n theme: ThemeMode\n toggleTheme: () => void\n setTheme: (t: ThemeMode) => void\n}\n\nconst ThemeContext = createContext({\n theme: 'light',\n toggleTheme: () => {},\n setTheme: () => {}\n})\n\nexport { ThemeContext }\n\nexport function ThemeProvider({ children }: { children: React.ReactNode }) {\n const [theme, set] = useState(getTheme())\n\n const setTheme = useCallback((t: ThemeMode) => {\n saveTheme(t)\n set(t)\n }, [])\n\n const toggleTheme = useCallback(() => {\n const next = theme === 'light' ? 'dark' : 'light'\n setTheme(next)\n }, [theme, setTheme])\n\n // eventCenter 监听已移除:ThemeContext 本身就在 App.tsx 全局挂载,\n // 所有页面共用一个 state,无需再靠事件广播。\n // 旧代码曾在此处监听 'theme:change' 并直接 set(参数),但 trigger 未传参数导致 theme 变成 undefined。\n\n\n return (\n \n {children}\n \n )\n}\n\nexport function useThemeContext(): ThemeContextValue {\n return useContext(ThemeContext)\n}\n","/**\n * 产品品类配置文件\n *\n * ⚠️ 重要:当实际产品尺寸确定后,请修改本文件中的 mask 参数\n * 修改后页面会自动生效,无需改动其他代码\n */\n\nimport { ProductCategory } from '../types'\n\nexport const PRODUCTS: ProductCategory[] = [\n {\n id: 'notebook-small',\n name: '微雕笔记本(小)',\n desc: '便携随行,记录点滴',\n icon: '📓',\n price: 12,\n leadTime: '3-5个工作日',\n description:\n '精选优质纸张,封面采用高档PU材质,手感细腻。内页可定制横线、方格或空白三种版式。激光微雕工艺将名字或图案精准刻印在封面,永不褪色。小巧轻便,适合随身携带,无论是课堂笔记还是日常备忘,都是你的专属伴侣。',\n images: ['/img/book_small/The1.jpg'],\n mask: {\n shape: 'rect',\n width: 300,\n height: 420,\n borderRadius: 8\n }\n },\n {\n id: 'notebook-large',\n name: '微雕笔记本(大)',\n desc: '大开本,更多创作空间',\n icon: '📔',\n price: 45,\n leadTime: '3-5个工作日',\n description:\n 'A4尺寸大开本,180°平摊设计,书写更自由。封面可选真皮、仿布纹或磨砂材质,激光微雕区域更大,适合呈现全班名字、团队口号或公司Logo等大篇幅内容。是毕业纪念、企业年会礼品的首选。',\n images: ['/img/book_big/The1.jpg', '/img/book_big/The2.jpg'],\n mask: {\n shape: 'rect',\n width: 340,\n height: 480,\n borderRadius: 8\n }\n },\n {\n id: 'coaster',\n name: '铜质杯垫',\n desc: '金属质感,桌面艺术',\n icon: '☕',\n price: 25,\n leadTime: '5-7个工作日',\n description:\n '采用优质黄铜材质,表面经拉丝工艺处理,呈现哑光金属质感。背面配有防滑软木垫,保护桌面同时防止滑动。激光微雕可在表面刻印名字、日期或祝福语,是乔迁新居、新婚贺礼的精致之选。',\n images: ['/img/cup/The1.jpg'],\n mask: {\n shape: 'circle',\n width: 280,\n height: 280\n }\n },\n {\n id: 'penbox',\n name: '竹制笔盒',\n desc: '自然竹纹,文房雅器',\n icon: '✏️',\n price: 75,\n leadTime: '7-10个工作日',\n description:\n '精选天然楠竹,经多道工序打磨抛光,保留天然竹纹肌理。盒盖采用磁吸开合,内部设有分层隔板。激光微雕在竹面上呈现深浅不一的雕刻效果,融入墨香气质。适合书房案头、书法爱好者的文房伴侣。',\n images: ['/img/penbox/The1.jpg', '/img/penbox/The2.jpg', '/img/penbox/The3.jpg'],\n mask: {\n shape: 'rect',\n width: 320,\n height: 160,\n borderRadius: 12\n }\n },\n {\n id: 'booklamp',\n name: '书本型灯',\n desc: '温暖光影,点亮心意',\n icon: '💡',\n price: 45,\n leadTime: '5-7个工作日',\n description:\n '开合式设计,打开即亮,合拢即灭,如魔法书般充满惊喜。采用LED暖光灯源,光线柔和不刺眼,可持续点亮6-8小时。封面激光微雕可定制文字、图案或照片,让温暖的灯光承载专属记忆。是情侣礼物、毕业礼物的创意之选。',\n images: ['/img/booklight/The1.jpg', '/img/booklight/The2.jpg'],\n mask: {\n shape: 'rect',\n width: 320,\n height: 240,\n borderRadius: 4\n }\n }\n]\n\n/** CATEGORIES 为 PRODUCTS 的别名,供页面引用 */\nexport const CATEGORIES = PRODUCTS\n\n/**\n * 根据产品ID查找品类配置\n */\nexport const getProductById = (id: string): ProductCategory | undefined => {\n return PRODUCTS.find(p => p.id === id)\n}\n","import Taro from '@tarojs/taro'\nimport type { DesignItem, OrderItem, AddressItem } from '../types'\n\nconst THEME_KEY = 'smart_theme'\nconst USER_KEY = 'smart_user_info'\nconst ACTIVE_USER_KEY = 'smart_active_openid'\n\n// ---------- 当前用户 openid 管理 ----------\n\nfunction getActiveOpenid(): string {\n const user = getUserInfoRaw()\n const openid = user?.openid || Taro.getStorageSync(ACTIVE_USER_KEY) || '_guest_'\n Taro.setStorageSync(ACTIVE_USER_KEY, openid)\n return openid\n}\n\nfunction key(scope: string): string {\n const prefix = getActiveOpenid()\n return `${scope}_${prefix}`\n}\n\n// ---------- 用户数据 ----------\n\nconst USER_REGISTRY_KEY = 'smart_user_registry'\nconst ADMIN_PASSWORD = 'zhihui2024'\n\n// ---------- 用户注册表 ----------\n\nfunction getUserRegistry(): string[] {\n try { return Taro.getStorageSync(USER_REGISTRY_KEY) || [] } catch { return [] }\n}\n\nfunction saveToRegistry(openid: string) {\n const list = getUserRegistry()\n if (!list.includes(openid)) {\n list.push(openid)\n Taro.setStorageSync(USER_REGISTRY_KEY, list)\n }\n}\n\nfunction removeFromRegistry(openid: string) {\n const list = getUserRegistry().filter(id => id !== openid)\n Taro.setStorageSync(USER_REGISTRY_KEY, list)\n}\n\n// ---------- 用户数据 ----------\n\nexport function getUserInfoRaw(): any {\n try { return Taro.getStorageSync(USER_KEY) } catch { return null }\n}\n\nexport function setUserInfoRaw(info: any) {\n Taro.setStorageSync(USER_KEY, info)\n if (info?.openid) {\n Taro.setStorageSync(ACTIVE_USER_KEY, info.openid)\n // 为每个用户备份独立副本,方便切换账号时读取\n Taro.setStorageSync(`user_info_${info.openid}`, info)\n saveToRegistry(info.openid)\n }\n}\n\nexport function getUserInfoByOpenid(openid: string): any | null {\n try {\n const backup = Taro.getStorageSync(`user_info_${openid}`)\n if (backup) return backup\n } catch {}\n const current = getUserInfoRaw()\n if (current?.openid === openid) return current\n return null\n}\n\nexport function clearUserInfo() {\n // 仅退出登录,不删除用户数据\n Taro.removeStorageSync(USER_KEY)\n Taro.removeStorageSync(ACTIVE_USER_KEY)\n}\n\nexport function setUserInfo(info: any) {\n setUserInfoRaw(info)\n}\n\nexport function getUserInfo() {\n return getUserInfoRaw()\n}\n\n// ---------- 用户数据库管理 ----------\n\nexport function listAllUsers() {\n const registry = getUserRegistry()\n return registry.map(openid => {\n const info = getUserInfoByOpenid(openid)\n const dList = getDesignListFor(openid)\n const oList = getOrderListFor(openid)\n return {\n openid,\n nickName: info?.nickName || '未知用户',\n avatarUrl: info?.avatarUrl || '',\n loginAt: info?.loginAt || 0,\n designCount: dList.length,\n orderCount: oList.length\n }\n })\n}\n\nexport function createUser(nickName: string, avatarUrl?: string) {\n const openid = 'mock_' + Date.now().toString(36) + '_' + Math.random().toString(36).slice(2, 6)\n const info = { openid, nickName: nickName || '微信用户', avatarUrl: avatarUrl || '', loginAt: Date.now() }\n setUserInfoRaw(info)\n return info\n}\n\nexport function switchUser(openid: string) {\n const info = getUserInfoByOpenid(openid)\n if (!info) return false\n Taro.setStorageSync(USER_KEY, info)\n Taro.setStorageSync(ACTIVE_USER_KEY, openid)\n return true\n}\n\nexport function deleteUser(openid: string) {\n // 删除该用户的所有数据\n Taro.removeStorageSync(`user_info_${openid}`)\n Taro.removeStorageSync(`design_list_${openid}`)\n Taro.removeStorageSync(`order_list_${openid}`)\n Taro.removeStorageSync(`address_list_${openid}`)\n removeFromRegistry(openid)\n // 如果删的是当前登录用户,清掉登录态\n const current = getUserInfoRaw()\n if (current?.openid === openid) {\n clearUserInfo()\n }\n}\n\nexport function verifyAdminPassword(password: string): boolean {\n return password === ADMIN_PASSWORD\n}\n\n// ---------- 跨用户读取辅助函数 ----------\n\nfunction keyFor(scope: string, openid: string) {\n return `${scope}_${openid}`\n}\n\nfunction getDesignListFor(openid: string): DesignItem[] {\n try { return Taro.getStorageSync(keyFor('design_list', openid)) || [] } catch { return [] }\n}\n\nfunction getOrderListFor(openid: string): OrderItem[] {\n try { return Taro.getStorageSync(keyFor('order_list', openid)) || [] } catch { return [] }\n}\n\n// ---------- 设计清单 ----------\n\nexport function getDesignList(): DesignItem[] {\n try { return Taro.getStorageSync(key('design_list')) || [] } catch { return [] }\n}\n\nexport function setDesignList(list: DesignItem[]) {\n Taro.setStorageSync(key('design_list'), list)\n}\n\nexport function addDesign(product: any, count: number): DesignItem {\n const list = getDesignList()\n const item: DesignItem = {\n id: 'DSG' + Date.now(),\n productId: product.id,\n productName: product.name,\n productIcon: product.icon,\n unitPrice: product.price,\n count,\n status: 'undesigned',\n createdAt: new Date().toISOString().slice(0, 10)\n }\n setDesignList([...list, item])\n return item\n}\n\nexport function updateDesign(id: string, patch: Partial) {\n const list = getDesignList()\n const idx = list.findIndex(d => d.id === id)\n if (idx === -1) return\n list[idx] = { ...list[idx], ...patch }\n setDesignList(list)\n}\n\n// ---------- 订单 ----------\n\nexport function getOrderList(): OrderItem[] {\n try { return Taro.getStorageSync(key('order_list')) || [] } catch { return [] }\n}\n\nexport function setOrderList(list: OrderItem[]) {\n Taro.setStorageSync(key('order_list'), list)\n}\n\nexport function designToOrder(designId: string): OrderItem | null {\n const dList = getDesignList()\n const oList = getOrderList()\n const design = dList.find(d => d.id === designId)\n if (!design) return null\n\n const order: OrderItem = {\n id: 'ORD' + Date.now().toString().slice(-9),\n productName: design.productName,\n productIcon: design.productIcon,\n statusCode: 'pending',\n date: new Date().toLocaleString('zh-CN', { month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' }).replace(/\\//g, '-'),\n price: '¥' + (design.unitPrice * design.count).toFixed(2),\n count: design.count,\n sku: `${design.productName} × ${design.count}`\n }\n\n const dIdx = dList.findIndex(d => d.id === designId)\n if (dIdx !== -1) {\n dList[dIdx].status = 'ordered'\n dList[dIdx].orderId = order.id\n }\n\n setDesignList(dList)\n setOrderList([order, ...oList])\n return order\n}\n\n// ---------- 主题 ----------\n\nexport type ThemeMode = 'light' | 'dark'\n\nexport function getTheme(): ThemeMode {\n try { return Taro.getStorageSync(THEME_KEY) || 'light' } catch { return 'light' }\n}\n\nexport function setTheme(theme: ThemeMode) {\n Taro.setStorageSync(THEME_KEY, theme)\n}\n\n// ---------- 收货地址 ----------\n\nexport function getAddressList(): AddressItem[] {\n try { return Taro.getStorageSync(key('address_list')) || [] } catch { return [] }\n}\n\nexport function setAddressList(list: AddressItem[]) {\n Taro.setStorageSync(key('address_list'), list)\n}\n\nexport function addAddress(addr: Omit): AddressItem {\n const list = getAddressList()\n const item: AddressItem = { ...addr, id: 'ADR' + Date.now() }\n // 若设为默认,取消其他默认\n if (item.isDefault) {\n list.forEach(a => { a.isDefault = false })\n }\n setAddressList([item, ...list])\n return item\n}\n\nexport function updateAddress(id: string, patch: Partial) {\n const list = getAddressList()\n const idx = list.findIndex(a => a.id === id)\n if (idx === -1) return\n if (patch.isDefault) list.forEach(a => { a.isDefault = false })\n list[idx] = { ...list[idx], ...patch }\n setAddressList(list)\n}\n\nexport function deleteAddress(id: string) {\n const list = getAddressList().filter(a => a.id !== id)\n setAddressList(list)\n}\n\nexport function getDefaultAddress(): AddressItem | undefined {\n return getAddressList().find(a => a.isDefault)\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/dist/img/book_big/The1.jpg b/dist/img/book_big/The1.jpg new file mode 100644 index 0000000..2f9873b Binary files /dev/null and b/dist/img/book_big/The1.jpg differ diff --git a/dist/img/book_big/The1.png b/dist/img/book_big/The1.png deleted file mode 100644 index 8630920..0000000 Binary files a/dist/img/book_big/The1.png and /dev/null differ diff --git a/dist/img/book_big/The2.jpg b/dist/img/book_big/The2.jpg new file mode 100644 index 0000000..5184387 Binary files /dev/null and b/dist/img/book_big/The2.jpg differ diff --git a/dist/img/book_big/The2.png b/dist/img/book_big/The2.png deleted file mode 100644 index e241e73..0000000 Binary files a/dist/img/book_big/The2.png and /dev/null differ diff --git a/dist/img/book_small/The1.jpg b/dist/img/book_small/The1.jpg new file mode 100644 index 0000000..a2e4de7 Binary files /dev/null and b/dist/img/book_small/The1.jpg differ diff --git a/dist/img/book_small/The1.png b/dist/img/book_small/The1.png deleted file mode 100644 index 9ff22ca..0000000 Binary files a/dist/img/book_small/The1.png and /dev/null differ diff --git a/dist/img/booklight/The1.jpg b/dist/img/booklight/The1.jpg index ad38215..136cf81 100644 Binary files a/dist/img/booklight/The1.jpg and b/dist/img/booklight/The1.jpg differ diff --git a/dist/img/booklight/The2.jpg b/dist/img/booklight/The2.jpg deleted file mode 100644 index 1f01fb4..0000000 Binary files a/dist/img/booklight/The2.jpg and /dev/null differ diff --git a/dist/img/cup/The1.jpg b/dist/img/cup/The1.jpg index 0cc289b..8993474 100644 Binary files a/dist/img/cup/The1.jpg and b/dist/img/cup/The1.jpg differ diff --git a/dist/img/penbox/The1.jpg b/dist/img/penbox/The1.jpg new file mode 100644 index 0000000..a64b1fe Binary files /dev/null and b/dist/img/penbox/The1.jpg differ diff --git a/dist/img/penbox/The1.png b/dist/img/penbox/The1.png deleted file mode 100644 index ad05ce9..0000000 Binary files a/dist/img/penbox/The1.png and /dev/null differ diff --git a/dist/img/penbox/The2.jpg b/dist/img/penbox/The2.jpg new file mode 100644 index 0000000..fc1aca5 Binary files /dev/null and b/dist/img/penbox/The2.jpg differ diff --git a/dist/img/penbox/The2.png b/dist/img/penbox/The2.png deleted file mode 100644 index acb4262..0000000 Binary files a/dist/img/penbox/The2.png and /dev/null differ diff --git a/dist/img/penbox/The3.jpg b/dist/img/penbox/The3.jpg index dc452e6..89d9639 100644 Binary files a/dist/img/penbox/The3.jpg and b/dist/img/penbox/The3.jpg differ diff --git a/dist/pages/profile/index.js b/dist/pages/profile/index.js index 5d146a9..f1618dd 100644 --- a/dist/pages/profile/index.js +++ b/dist/pages/profile/index.js @@ -222,11 +222,25 @@ function ProfilePage() { return; } _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().switchTab({ - url: path + url: path, + fail: function fail(err) { + console.error('switchTab fail', err); + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().showToast({ + title: '跳转失败', + icon: 'none' + }); + } }); } else { _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().navigateTo({ - url: path + url: path, + fail: function fail(err) { + console.error('navigateTo fail', err); + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().showToast({ + title: '跳转失败', + icon: 'none' + }); + } }); } } diff --git a/dist/pages/profile/index.js.map b/dist/pages/profile/index.js.map index 5ddce87..c67361e 100644 --- a/dist/pages/profile/index.js.map +++ b/dist/pages/profile/index.js.map @@ -1 +1 @@ -{"version":3,"file":"pages/profile/index.js","mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://smart-engraving-miniapp/./src/pages/profile/index.tsx?1006","webpack://smart-engraving-miniapp/._src_pages_profile_index.tsx"],"sourcesContent":["import _slicedToArray from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { View, Text, Image, Input, Button } from '@tarojs/components';\nimport Taro from '@tarojs/taro';\nimport { useState, useEffect } from 'react';\nimport './index.scss';\nimport { getOrderList, getUserInfo, setUserInfo, getDesignList } from '../../utils/store';\nimport ThemeToggle from '../../components/ThemeToggle';\nimport { useThemeContext } from '../../context/ThemeContext';\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar MENU_ITEMS = [{\n icon: '🎨',\n label: '我的设计',\n path: '/pages/designList/index'\n}, {\n icon: '✨',\n label: '词云生成',\n path: '/pages/wordcloud/index'\n}, {\n icon: '📍',\n label: '收货地址',\n path: '/pages/address/index'\n}, {\n icon: '📞',\n label: '联系客服',\n path: '/pages/service/index'\n}, {\n icon: '📋',\n label: '使用帮助',\n path: '/pages/agreement/index'\n}, {\n icon: '⚙️',\n label: '设置',\n path: '/pages/settings/index'\n}];\nexport default function ProfilePage() {\n var _useThemeContext = useThemeContext(),\n theme = _useThemeContext.theme;\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isLoggedIn = _useState2[0],\n setIsLoggedIn = _useState2[1];\n var _useState3 = useState({\n nickName: '',\n avatarUrl: ''\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n userInfo = _useState4[0],\n setUserInfoState = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n showLogin = _useState6[0],\n setShowLogin = _useState6[1];\n var _useState7 = useState(''),\n _useState8 = _slicedToArray(_useState7, 2),\n loginNickName = _useState8[0],\n setLoginNickName = _useState8[1];\n var _useState9 = useState(''),\n _useState0 = _slicedToArray(_useState9, 2),\n loginAvatarUrl = _useState0[0],\n setLoginAvatarUrl = _useState0[1];\n var _useState1 = useState({\n toDesign: 0,\n pending: 0,\n paid: 0,\n shipping: 0,\n done: 0\n }),\n _useState10 = _slicedToArray(_useState1, 2),\n orderStats = _useState10[0],\n setOrderStats = _useState10[1];\n var loadStats = function loadStats() {\n var orders = getOrderList();\n var designs = getDesignList();\n setOrderStats({\n toDesign: designs.filter(function (d) {\n return d.status === 'undesigned' || d.status === 'designing';\n }).length,\n pending: orders.filter(function (o) {\n return o.statusCode === 'pending';\n }).length,\n paid: orders.filter(function (o) {\n return o.statusCode === 'paid';\n }).length,\n shipping: orders.filter(function (o) {\n return o.statusCode === 'shipping';\n }).length,\n done: orders.filter(function (o) {\n return o.statusCode === 'done';\n }).length\n });\n };\n useEffect(function () {\n var info = getUserInfo();\n if (info) {\n setIsLoggedIn(true);\n setUserInfoState({\n nickName: info.nickName || '',\n avatarUrl: info.avatarUrl || ''\n });\n }\n loadStats();\n }, []);\n var handleOpenLogin = function handleOpenLogin() {\n return setShowLogin(true);\n };\n var handleCloseLogin = function handleCloseLogin() {\n return setShowLogin(false);\n };\n var handleLoginSubmit = function handleLoginSubmit() {\n Taro.login({\n success: function success() {\n var mockOpenid = 'mock_' + Date.now().toString(36) + '_' + Math.random().toString(36).slice(2, 6);\n var info = {\n openid: mockOpenid,\n nickName: loginNickName || '微信用户',\n avatarUrl: loginAvatarUrl || '',\n loginAt: Date.now()\n };\n setUserInfo(info);\n setUserInfoState({\n nickName: info.nickName,\n avatarUrl: info.avatarUrl\n });\n setIsLoggedIn(true);\n setShowLogin(false);\n Taro.showToast({\n title: '登录成功',\n icon: 'success'\n });\n },\n fail: function fail() {\n Taro.showToast({\n title: '登录失败,请重试',\n icon: 'none'\n });\n }\n });\n };\n var onChooseAvatar = function onChooseAvatar(e) {\n setLoginAvatarUrl(e.detail.avatarUrl || '');\n };\n var handleQuickClick = function handleQuickClick(type) {\n if (!isLoggedIn) {\n Taro.showToast({\n title: '请先登录',\n icon: 'none'\n });\n setShowLogin(true);\n return;\n }\n switch (type) {\n case 'toDesign':\n Taro.setStorageSync('designList:filter', 'toDesign');\n Taro.switchTab({\n url: '/pages/designList/index'\n });\n break;\n case 'pending':\n // 跳转订单页并带状态参数 - 这里用 event 或 storage 传递\n Taro.setStorageSync('orders:filter', 'pending');\n Taro.switchTab({\n url: '/pages/orders/index'\n });\n break;\n case 'paid':\n Taro.setStorageSync('orders:filter', 'paid');\n Taro.switchTab({\n url: '/pages/orders/index'\n });\n break;\n case 'shipping':\n Taro.setStorageSync('orders:filter', 'shipping');\n Taro.switchTab({\n url: '/pages/orders/index'\n });\n break;\n case 'done':\n Taro.setStorageSync('orders:filter', 'done');\n Taro.switchTab({\n url: '/pages/orders/index'\n });\n break;\n }\n };\n var handleMenuClick = function handleMenuClick(path) {\n if (!path) {\n Taro.showToast({\n title: '功能开发中',\n icon: 'none'\n });\n return;\n }\n if (path.startsWith('/pages/')) {\n if (path.includes('designList') || path.includes('orders')) {\n if (!isLoggedIn) {\n Taro.showToast({\n title: '请先登录',\n icon: 'none'\n });\n setShowLogin(true);\n return;\n }\n Taro.switchTab({\n url: path\n });\n } else {\n Taro.navigateTo({\n url: path\n });\n }\n }\n };\n return /*#__PURE__*/_jsx(View, {\n className: \"theme-\".concat(theme),\n children: /*#__PURE__*/_jsxs(View, {\n className: \"profile-page\",\n children: [/*#__PURE__*/_jsx(ThemeToggle, {}), /*#__PURE__*/_jsxs(View, {\n className: \"profile-header dashed-card mt-20\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"user-info\",\n children: [isLoggedIn && userInfo.avatarUrl ? /*#__PURE__*/_jsx(Image, {\n className: \"avatar\",\n src: userInfo.avatarUrl,\n mode: \"aspectFill\"\n }) : /*#__PURE__*/_jsx(View, {\n className: \"avatar-placeholder\",\n onClick: handleOpenLogin,\n children: /*#__PURE__*/_jsx(Text, {\n className: \"avatar-icon\",\n children: \"\\uD83D\\uDC64\"\n })\n }), /*#__PURE__*/_jsx(View, {\n className: \"user-meta\",\n children: isLoggedIn ? /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"user-name\",\n children: userInfo.nickName\n }), /*#__PURE__*/_jsx(Text, {\n className: \"user-level\",\n children: \"\\u667A\\u7ED8\\u5FAE\\u523B\\u4F1A\\u5458\"\n })]\n }) : /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"user-name\",\n onClick: handleOpenLogin,\n children: \"\\u70B9\\u51FB\\u767B\\u5F55\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"user-level\",\n children: \"\\u6388\\u6743\\u5FAE\\u4FE1\\uFF0C\\u5F00\\u542F\\u4E13\\u5C5E\\u5B9A\\u5236\"\n })]\n })\n })]\n }), /*#__PURE__*/_jsxs(View, {\n className: \"status-grid\",\n children: [/*#__PURE__*/_jsxs(View, {\n className: \"status-row row2\",\n children: [/*#__PURE__*/_jsxs(View, {\n className: \"status-item\",\n onClick: function onClick() {\n return handleQuickClick('toDesign');\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"status-num\",\n children: orderStats.toDesign\n }), /*#__PURE__*/_jsx(Text, {\n className: \"status-label\",\n children: \"\\u5F85\\u8BBE\\u8BA1\"\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"status-divider\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"status-item\",\n onClick: function onClick() {\n return handleQuickClick('pending');\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"status-num\",\n children: orderStats.pending\n }), /*#__PURE__*/_jsx(Text, {\n className: \"status-label\",\n children: \"\\u5F85\\u4ED8\\u6B3E\"\n })]\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"status-divider-h\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"status-row row3\",\n children: [/*#__PURE__*/_jsxs(View, {\n className: \"status-item\",\n onClick: function onClick() {\n return handleQuickClick('paid');\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"status-num\",\n children: orderStats.paid\n }), /*#__PURE__*/_jsx(Text, {\n className: \"status-label\",\n children: \"\\u5F85\\u53D1\\u8D27\"\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"status-divider\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"status-item\",\n onClick: function onClick() {\n return handleQuickClick('shipping');\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"status-num\",\n children: orderStats.shipping\n }), /*#__PURE__*/_jsx(Text, {\n className: \"status-label\",\n children: \"\\u5F85\\u6536\\u8D27\"\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"status-divider\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"status-item\",\n onClick: function onClick() {\n return handleQuickClick('done');\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"status-num\",\n children: orderStats.done\n }), /*#__PURE__*/_jsx(Text, {\n className: \"status-label\",\n children: \"\\u5DF2\\u5B8C\\u6210\"\n })]\n })]\n })]\n })]\n }), /*#__PURE__*/_jsxs(View, {\n className: \"mt-20\",\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"section-title\",\n children: \"\\u5E38\\u7528\\u529F\\u80FD\"\n }), /*#__PURE__*/_jsx(View, {\n className: \"menu-grid\",\n children: MENU_ITEMS.map(function (item, idx) {\n return /*#__PURE__*/_jsxs(View, {\n className: \"menu-card dashed-card\",\n onClick: function onClick() {\n return handleMenuClick(item.path);\n },\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"menu-icon\",\n children: item.icon\n }), /*#__PURE__*/_jsx(Text, {\n className: \"menu-label\",\n children: item.label\n })]\n }, idx);\n })\n })]\n }), /*#__PURE__*/_jsxs(View, {\n className: \"enterprise-section dashed-card mt-20\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"flex-between\",\n children: [/*#__PURE__*/_jsxs(View, {\n className: \"flex-column\",\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"enterprise-title\",\n children: \"\\uD83C\\uDFE2 \\u4F01\\u4E1A\\u6279\\u91CF\\u5B9A\\u5236\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"enterprise-desc\",\n children: \"\\u5E74\\u4F1A\\u793C\\u54C1\\u3001\\u5165\\u804C\\u7EAA\\u5FF5\\u3001\\u56E2\\u5EFA\\u4F34\\u624B\\u793C\"\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"btn-gradient enterprise-btn\",\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u7ACB\\u5373\\u54A8\\u8BE2\"\n })\n })]\n })]\n }), /*#__PURE__*/_jsx(View, {\n style: {\n height: '40px'\n }\n }), showLogin && /*#__PURE__*/_jsx(View, {\n className: \"modal-overlay\",\n children: /*#__PURE__*/_jsxs(View, {\n className: \"login-card dashed-card\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"login-title\",\n children: \"\\u767B\\u5F55\\u667A\\u7ED8\\u5FAE\\u523B\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"login-desc\",\n children: \"\\u767B\\u5F55\\u540E\\u540C\\u6B65\\u60A8\\u7684\\u8BBE\\u8BA1\\u6E05\\u5355\\u548C\\u8BA2\\u5355\"\n }), /*#__PURE__*/_jsx(Button, {\n className: \"avatar-btn\",\n openType: \"chooseAvatar\",\n onChooseAvatar: onChooseAvatar,\n children: loginAvatarUrl ? /*#__PURE__*/_jsx(Image, {\n className: \"avatar-img\",\n src: loginAvatarUrl,\n mode: \"aspectFill\"\n }) : /*#__PURE__*/_jsx(Text, {\n className: \"avatar-placeholder\",\n children: \"\\u70B9\\u51FB\\u9009\\u62E9\\u5934\\u50CF\"\n })\n }), /*#__PURE__*/_jsx(Input, {\n type: \"nickname\",\n className: \"nickname-input\",\n placeholder: \"\\u8BF7\\u8F93\\u5165\\u6635\\u79F0\",\n value: loginNickName,\n onInput: function onInput(e) {\n return setLoginNickName(e.detail.value);\n }\n }), /*#__PURE__*/_jsxs(View, {\n className: \"login-actions\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"btn-outline\",\n onClick: handleCloseLogin,\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u53D6\\u6D88\"\n })\n }), /*#__PURE__*/_jsx(View, {\n className: \"btn-gradient\",\n onClick: handleLoginSubmit,\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u767B\\u5F55\"\n })\n })]\n })]\n })\n })]\n })\n });\n}","import { createPageConfig } from '@tarojs/runtime'\nimport component from \"!!../../../node_modules/@tarojs/taro-loader/lib/entry-cache.js?name=pages/profile/index!./index.tsx\"\nvar config = {};\n\n\nvar inst = Page(createPageConfig(component, 'pages/profile/index', {root:{cn:[]}}, config || {}))\n\n\nexport default component\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"pages/profile/index.js","mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://smart-engraving-miniapp/./src/pages/profile/index.tsx?1006","webpack://smart-engraving-miniapp/._src_pages_profile_index.tsx"],"sourcesContent":["import _slicedToArray from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { View, Text, Image, Input, Button } from '@tarojs/components';\nimport Taro from '@tarojs/taro';\nimport { useState, useEffect } from 'react';\nimport './index.scss';\nimport { getOrderList, getUserInfo, setUserInfo, getDesignList } from '../../utils/store';\nimport ThemeToggle from '../../components/ThemeToggle';\nimport { useThemeContext } from '../../context/ThemeContext';\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar MENU_ITEMS = [{\n icon: '🎨',\n label: '我的设计',\n path: '/pages/designList/index'\n}, {\n icon: '✨',\n label: '词云生成',\n path: '/pages/wordcloud/index'\n}, {\n icon: '📍',\n label: '收货地址',\n path: '/pages/address/index'\n}, {\n icon: '📞',\n label: '联系客服',\n path: '/pages/service/index'\n}, {\n icon: '📋',\n label: '使用帮助',\n path: '/pages/agreement/index'\n}, {\n icon: '⚙️',\n label: '设置',\n path: '/pages/settings/index'\n}];\nexport default function ProfilePage() {\n var _useThemeContext = useThemeContext(),\n theme = _useThemeContext.theme;\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isLoggedIn = _useState2[0],\n setIsLoggedIn = _useState2[1];\n var _useState3 = useState({\n nickName: '',\n avatarUrl: ''\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n userInfo = _useState4[0],\n setUserInfoState = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n showLogin = _useState6[0],\n setShowLogin = _useState6[1];\n var _useState7 = useState(''),\n _useState8 = _slicedToArray(_useState7, 2),\n loginNickName = _useState8[0],\n setLoginNickName = _useState8[1];\n var _useState9 = useState(''),\n _useState0 = _slicedToArray(_useState9, 2),\n loginAvatarUrl = _useState0[0],\n setLoginAvatarUrl = _useState0[1];\n var _useState1 = useState({\n toDesign: 0,\n pending: 0,\n paid: 0,\n shipping: 0,\n done: 0\n }),\n _useState10 = _slicedToArray(_useState1, 2),\n orderStats = _useState10[0],\n setOrderStats = _useState10[1];\n var loadStats = function loadStats() {\n var orders = getOrderList();\n var designs = getDesignList();\n setOrderStats({\n toDesign: designs.filter(function (d) {\n return d.status === 'undesigned' || d.status === 'designing';\n }).length,\n pending: orders.filter(function (o) {\n return o.statusCode === 'pending';\n }).length,\n paid: orders.filter(function (o) {\n return o.statusCode === 'paid';\n }).length,\n shipping: orders.filter(function (o) {\n return o.statusCode === 'shipping';\n }).length,\n done: orders.filter(function (o) {\n return o.statusCode === 'done';\n }).length\n });\n };\n useEffect(function () {\n var info = getUserInfo();\n if (info) {\n setIsLoggedIn(true);\n setUserInfoState({\n nickName: info.nickName || '',\n avatarUrl: info.avatarUrl || ''\n });\n }\n loadStats();\n }, []);\n var handleOpenLogin = function handleOpenLogin() {\n return setShowLogin(true);\n };\n var handleCloseLogin = function handleCloseLogin() {\n return setShowLogin(false);\n };\n var handleLoginSubmit = function handleLoginSubmit() {\n Taro.login({\n success: function success() {\n var mockOpenid = 'mock_' + Date.now().toString(36) + '_' + Math.random().toString(36).slice(2, 6);\n var info = {\n openid: mockOpenid,\n nickName: loginNickName || '微信用户',\n avatarUrl: loginAvatarUrl || '',\n loginAt: Date.now()\n };\n setUserInfo(info);\n setUserInfoState({\n nickName: info.nickName,\n avatarUrl: info.avatarUrl\n });\n setIsLoggedIn(true);\n setShowLogin(false);\n Taro.showToast({\n title: '登录成功',\n icon: 'success'\n });\n },\n fail: function fail() {\n Taro.showToast({\n title: '登录失败,请重试',\n icon: 'none'\n });\n }\n });\n };\n var onChooseAvatar = function onChooseAvatar(e) {\n setLoginAvatarUrl(e.detail.avatarUrl || '');\n };\n var handleQuickClick = function handleQuickClick(type) {\n if (!isLoggedIn) {\n Taro.showToast({\n title: '请先登录',\n icon: 'none'\n });\n setShowLogin(true);\n return;\n }\n switch (type) {\n case 'toDesign':\n Taro.setStorageSync('designList:filter', 'toDesign');\n Taro.switchTab({\n url: '/pages/designList/index'\n });\n break;\n case 'pending':\n // 跳转订单页并带状态参数 - 这里用 event 或 storage 传递\n Taro.setStorageSync('orders:filter', 'pending');\n Taro.switchTab({\n url: '/pages/orders/index'\n });\n break;\n case 'paid':\n Taro.setStorageSync('orders:filter', 'paid');\n Taro.switchTab({\n url: '/pages/orders/index'\n });\n break;\n case 'shipping':\n Taro.setStorageSync('orders:filter', 'shipping');\n Taro.switchTab({\n url: '/pages/orders/index'\n });\n break;\n case 'done':\n Taro.setStorageSync('orders:filter', 'done');\n Taro.switchTab({\n url: '/pages/orders/index'\n });\n break;\n }\n };\n var handleMenuClick = function handleMenuClick(path) {\n if (!path) {\n Taro.showToast({\n title: '功能开发中',\n icon: 'none'\n });\n return;\n }\n if (path.startsWith('/pages/')) {\n if (path.includes('designList') || path.includes('orders')) {\n if (!isLoggedIn) {\n Taro.showToast({\n title: '请先登录',\n icon: 'none'\n });\n setShowLogin(true);\n return;\n }\n Taro.switchTab({\n url: path,\n fail: function fail(err) {\n console.error('switchTab fail', err);\n Taro.showToast({\n title: '跳转失败',\n icon: 'none'\n });\n }\n });\n } else {\n Taro.navigateTo({\n url: path,\n fail: function fail(err) {\n console.error('navigateTo fail', err);\n Taro.showToast({\n title: '跳转失败',\n icon: 'none'\n });\n }\n });\n }\n }\n };\n return /*#__PURE__*/_jsx(View, {\n className: \"theme-\".concat(theme),\n children: /*#__PURE__*/_jsxs(View, {\n className: \"profile-page\",\n children: [/*#__PURE__*/_jsx(ThemeToggle, {}), /*#__PURE__*/_jsxs(View, {\n className: \"profile-header dashed-card mt-20\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"user-info\",\n children: [isLoggedIn && userInfo.avatarUrl ? /*#__PURE__*/_jsx(Image, {\n className: \"avatar\",\n src: userInfo.avatarUrl,\n mode: \"aspectFill\"\n }) : /*#__PURE__*/_jsx(View, {\n className: \"avatar-placeholder\",\n onClick: handleOpenLogin,\n children: /*#__PURE__*/_jsx(Text, {\n className: \"avatar-icon\",\n children: \"\\uD83D\\uDC64\"\n })\n }), /*#__PURE__*/_jsx(View, {\n className: \"user-meta\",\n children: isLoggedIn ? /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"user-name\",\n children: userInfo.nickName\n }), /*#__PURE__*/_jsx(Text, {\n className: \"user-level\",\n children: \"\\u667A\\u7ED8\\u5FAE\\u523B\\u4F1A\\u5458\"\n })]\n }) : /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"user-name\",\n onClick: handleOpenLogin,\n children: \"\\u70B9\\u51FB\\u767B\\u5F55\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"user-level\",\n children: \"\\u6388\\u6743\\u5FAE\\u4FE1\\uFF0C\\u5F00\\u542F\\u4E13\\u5C5E\\u5B9A\\u5236\"\n })]\n })\n })]\n }), /*#__PURE__*/_jsxs(View, {\n className: \"status-grid\",\n children: [/*#__PURE__*/_jsxs(View, {\n className: \"status-row row2\",\n children: [/*#__PURE__*/_jsxs(View, {\n className: \"status-item\",\n onClick: function onClick() {\n return handleQuickClick('toDesign');\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"status-num\",\n children: orderStats.toDesign\n }), /*#__PURE__*/_jsx(Text, {\n className: \"status-label\",\n children: \"\\u5F85\\u8BBE\\u8BA1\"\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"status-divider\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"status-item\",\n onClick: function onClick() {\n return handleQuickClick('pending');\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"status-num\",\n children: orderStats.pending\n }), /*#__PURE__*/_jsx(Text, {\n className: \"status-label\",\n children: \"\\u5F85\\u4ED8\\u6B3E\"\n })]\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"status-divider-h\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"status-row row3\",\n children: [/*#__PURE__*/_jsxs(View, {\n className: \"status-item\",\n onClick: function onClick() {\n return handleQuickClick('paid');\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"status-num\",\n children: orderStats.paid\n }), /*#__PURE__*/_jsx(Text, {\n className: \"status-label\",\n children: \"\\u5F85\\u53D1\\u8D27\"\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"status-divider\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"status-item\",\n onClick: function onClick() {\n return handleQuickClick('shipping');\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"status-num\",\n children: orderStats.shipping\n }), /*#__PURE__*/_jsx(Text, {\n className: \"status-label\",\n children: \"\\u5F85\\u6536\\u8D27\"\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"status-divider\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"status-item\",\n onClick: function onClick() {\n return handleQuickClick('done');\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"status-num\",\n children: orderStats.done\n }), /*#__PURE__*/_jsx(Text, {\n className: \"status-label\",\n children: \"\\u5DF2\\u5B8C\\u6210\"\n })]\n })]\n })]\n })]\n }), /*#__PURE__*/_jsxs(View, {\n className: \"mt-20\",\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"section-title\",\n children: \"\\u5E38\\u7528\\u529F\\u80FD\"\n }), /*#__PURE__*/_jsx(View, {\n className: \"menu-grid\",\n children: MENU_ITEMS.map(function (item, idx) {\n return /*#__PURE__*/_jsxs(View, {\n className: \"menu-card dashed-card\",\n onClick: function onClick() {\n return handleMenuClick(item.path);\n },\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"menu-icon\",\n children: item.icon\n }), /*#__PURE__*/_jsx(Text, {\n className: \"menu-label\",\n children: item.label\n })]\n }, idx);\n })\n })]\n }), /*#__PURE__*/_jsxs(View, {\n className: \"enterprise-section dashed-card mt-20\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"flex-between\",\n children: [/*#__PURE__*/_jsxs(View, {\n className: \"flex-column\",\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"enterprise-title\",\n children: \"\\uD83C\\uDFE2 \\u4F01\\u4E1A\\u6279\\u91CF\\u5B9A\\u5236\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"enterprise-desc\",\n children: \"\\u5E74\\u4F1A\\u793C\\u54C1\\u3001\\u5165\\u804C\\u7EAA\\u5FF5\\u3001\\u56E2\\u5EFA\\u4F34\\u624B\\u793C\"\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"btn-gradient enterprise-btn\",\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u7ACB\\u5373\\u54A8\\u8BE2\"\n })\n })]\n })]\n }), /*#__PURE__*/_jsx(View, {\n style: {\n height: '40px'\n }\n }), showLogin && /*#__PURE__*/_jsx(View, {\n className: \"modal-overlay\",\n children: /*#__PURE__*/_jsxs(View, {\n className: \"login-card dashed-card\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"login-title\",\n children: \"\\u767B\\u5F55\\u667A\\u7ED8\\u5FAE\\u523B\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"login-desc\",\n children: \"\\u767B\\u5F55\\u540E\\u540C\\u6B65\\u60A8\\u7684\\u8BBE\\u8BA1\\u6E05\\u5355\\u548C\\u8BA2\\u5355\"\n }), /*#__PURE__*/_jsx(Button, {\n className: \"avatar-btn\",\n openType: \"chooseAvatar\",\n onChooseAvatar: onChooseAvatar,\n children: loginAvatarUrl ? /*#__PURE__*/_jsx(Image, {\n className: \"avatar-img\",\n src: loginAvatarUrl,\n mode: \"aspectFill\"\n }) : /*#__PURE__*/_jsx(Text, {\n className: \"avatar-placeholder\",\n children: \"\\u70B9\\u51FB\\u9009\\u62E9\\u5934\\u50CF\"\n })\n }), /*#__PURE__*/_jsx(Input, {\n type: \"nickname\",\n className: \"nickname-input\",\n placeholder: \"\\u8BF7\\u8F93\\u5165\\u6635\\u79F0\",\n value: loginNickName,\n onInput: function onInput(e) {\n return setLoginNickName(e.detail.value);\n }\n }), /*#__PURE__*/_jsxs(View, {\n className: \"login-actions\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"btn-outline\",\n onClick: handleCloseLogin,\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u53D6\\u6D88\"\n })\n }), /*#__PURE__*/_jsx(View, {\n className: \"btn-gradient\",\n onClick: handleLoginSubmit,\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u767B\\u5F55\"\n })\n })]\n })]\n })\n })]\n })\n });\n}","import { createPageConfig } from '@tarojs/runtime'\nimport component from \"!!../../../node_modules/@tarojs/taro-loader/lib/entry-cache.js?name=pages/profile/index!./index.tsx\"\nvar config = {};\n\n\nvar inst = Page(createPageConfig(component, 'pages/profile/index', {root:{cn:[]}}, config || {}))\n\n\nexport default component\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/dist/pages/settings/index.js b/dist/pages/settings/index.js index b36f10d..dd7ff7d 100644 --- a/dist/pages/settings/index.js +++ b/dist/pages/settings/index.js @@ -93,6 +93,14 @@ function SettingsPage() { action: function action() { return setShowEdit(true); } + }, { + label: '账号管理', + icon: '🆔', + action: function action() { + return _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().navigateTo({ + url: '/pages/userDatabase/index' + }); + } }, { label: '定制协议', icon: '📋', diff --git a/dist/pages/settings/index.js.map b/dist/pages/settings/index.js.map index 7c05e4d..74fa3a2 100644 --- a/dist/pages/settings/index.js.map +++ b/dist/pages/settings/index.js.map @@ -1 +1 @@ -{"version":3,"file":"pages/settings/index.js","mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://smart-engraving-miniapp/./src/pages/settings/index.tsx?652f","webpack://smart-engraving-miniapp/._src_pages_settings_index.tsx"],"sourcesContent":["import _objectSpread from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/objectSpread2.js\";\nimport _slicedToArray from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { View, Text, Image, Input, Button } from '@tarojs/components';\nimport Taro from '@tarojs/taro';\nimport { useState, useEffect } from 'react';\nimport './index.scss';\nimport ThemeToggle from '../../components/ThemeToggle';\nimport { useThemeContext } from '../../context/ThemeContext';\nimport { getUserInfo, setUserInfo, clearUserInfo } from '../../utils/store';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default function SettingsPage() {\n var _useThemeContext = useThemeContext(),\n theme = _useThemeContext.theme;\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n user = _useState2[0],\n setUser = _useState2[1];\n var _useState3 = useState(''),\n _useState4 = _slicedToArray(_useState3, 2),\n editName = _useState4[0],\n setEditName = _useState4[1];\n var _useState5 = useState(''),\n _useState6 = _slicedToArray(_useState5, 2),\n editAvatar = _useState6[0],\n setEditAvatar = _useState6[1];\n var _useState7 = useState(false),\n _useState8 = _slicedToArray(_useState7, 2),\n showEdit = _useState8[0],\n setShowEdit = _useState8[1];\n var loadUser = function loadUser() {\n var u = getUserInfo() || {};\n setUser(u);\n setEditName(u.nickName || '');\n setEditAvatar(u.avatarUrl || '');\n };\n useEffect(function () {\n loadUser();\n }, []);\n var handleSaveInfo = function handleSaveInfo() {\n setUserInfo(_objectSpread(_objectSpread({}, user), {}, {\n nickName: editName,\n avatarUrl: editAvatar\n }));\n Taro.showToast({\n title: '修改成功',\n icon: 'success'\n });\n setShowEdit(false);\n loadUser();\n };\n var handleLogout = function handleLogout() {\n Taro.showModal({\n title: '确认退出',\n content: '退出后将清空当前登录状态,确定吗?',\n success: function success(res) {\n if (res.confirm) {\n clearUserInfo();\n Taro.switchTab({\n url: '/pages/index/index'\n });\n }\n }\n });\n };\n var onChooseAvatar = function onChooseAvatar(e) {\n setEditAvatar(e.detail.avatarUrl || '');\n };\n var MENU = [{\n label: '个人信息',\n icon: '👤',\n action: function action() {\n return setShowEdit(true);\n }\n }, {\n label: '定制协议',\n icon: '📋',\n action: function action() {\n return Taro.navigateTo({\n url: '/pages/agreement/index'\n });\n }\n }, {\n label: '关于我们',\n icon: 'ℹ️',\n action: function action() {\n return Taro.showToast({\n title: '智绘微刻 v1.0',\n icon: 'none'\n });\n }\n }];\n return /*#__PURE__*/_jsx(View, {\n className: \"theme-\".concat(theme),\n children: /*#__PURE__*/_jsxs(View, {\n className: \"settings-page\",\n children: [/*#__PURE__*/_jsx(ThemeToggle, {}), /*#__PURE__*/_jsxs(View, {\n className: \"page-header dashed-card mt-20\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"flex-between\",\n style: {\n width: '100%'\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"back-btn\",\n onClick: function onClick() {\n return Taro.navigateBack();\n },\n children: \"\\u2190\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"page-title\",\n children: \"\\u8BBE\\u7F6E\"\n }), /*#__PURE__*/_jsx(View, {\n style: {\n width: '60px'\n }\n })]\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"settings-user dashed-card mt-20\",\n children: /*#__PURE__*/_jsxs(View, {\n className: \"flex-between\",\n onClick: function onClick() {\n return setShowEdit(true);\n },\n children: [/*#__PURE__*/_jsxs(View, {\n className: \"flex-center\",\n children: [user.avatarUrl ? /*#__PURE__*/_jsx(Image, {\n className: \"settings-avatar\",\n src: user.avatarUrl,\n mode: \"aspectFill\"\n }) : /*#__PURE__*/_jsx(View, {\n className: \"settings-avatar-placeholder\",\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\uD83D\\uDC64\"\n })\n }), /*#__PURE__*/_jsxs(View, {\n style: {\n marginLeft: '20px'\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"settings-name\",\n children: user.nickName || '未登录'\n }), /*#__PURE__*/_jsxs(Text, {\n className: \"settings-id\",\n children: [\"ID: \", user.openid ? user.openid.slice(-8) : '---']\n })]\n })]\n }), /*#__PURE__*/_jsx(Text, {\n className: \"arrow\",\n children: \"\\u203A\"\n })]\n })\n }), /*#__PURE__*/_jsx(View, {\n className: \"settings-list dashed-card mt-20\",\n children: MENU.map(function (item, idx) {\n return /*#__PURE__*/_jsxs(View, {\n className: \"settings-item \".concat(idx < MENU.length - 1 ? 'bordered' : ''),\n onClick: item.action,\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"settings-item-icon\",\n children: item.icon\n }), /*#__PURE__*/_jsx(Text, {\n className: \"settings-item-label\",\n children: item.label\n }), /*#__PURE__*/_jsx(Text, {\n className: \"arrow\",\n children: \"\\u203A\"\n })]\n }, idx);\n })\n }), (user === null || user === void 0 ? void 0 : user.openid) && /*#__PURE__*/_jsx(View, {\n className: \"mt-20\",\n children: /*#__PURE__*/_jsx(View, {\n className: \"btn-outline logout-btn\",\n onClick: handleLogout,\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u9000\\u51FA\\u767B\\u5F55\"\n })\n })\n }), /*#__PURE__*/_jsx(View, {\n style: {\n height: '40px'\n }\n }), showEdit && /*#__PURE__*/_jsx(View, {\n className: \"modal-overlay\",\n children: /*#__PURE__*/_jsxs(View, {\n className: \"modal-card dashed-card\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"modal-title\",\n children: \"\\u4FEE\\u6539\\u4FE1\\u606F\"\n }), /*#__PURE__*/_jsx(Button, {\n className: \"avatar-btn\",\n openType: \"chooseAvatar\",\n onChooseAvatar: onChooseAvatar,\n children: editAvatar ? /*#__PURE__*/_jsx(Image, {\n className: \"avatar-img\",\n src: editAvatar,\n mode: \"aspectFill\"\n }) : /*#__PURE__*/_jsx(Text, {\n className: \"avatar-placeholder\",\n children: \"\\u70B9\\u51FB\\u9009\\u62E9\\u5934\\u50CF\"\n })\n }), /*#__PURE__*/_jsx(Input, {\n className: \"nickname-input\",\n placeholder: \"\\u8BF7\\u8F93\\u5165\\u6635\\u79F0\",\n value: editName,\n onInput: function onInput(e) {\n return setEditName(e.detail.value);\n }\n }), /*#__PURE__*/_jsxs(View, {\n className: \"form-actions\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"btn-outline\",\n onClick: function onClick() {\n return setShowEdit(false);\n },\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u53D6\\u6D88\"\n })\n }), /*#__PURE__*/_jsx(View, {\n className: \"btn-gradient\",\n onClick: handleSaveInfo,\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u4FDD\\u5B58\"\n })\n })]\n })]\n })\n })]\n })\n });\n}","import { createPageConfig } from '@tarojs/runtime'\nimport component from \"!!../../../node_modules/@tarojs/taro-loader/lib/entry-cache.js?name=pages/settings/index!./index.tsx\"\nvar config = {\"navigationBarTitleText\":\"设置\"};\n\n\nvar inst = Page(createPageConfig(component, 'pages/settings/index', {root:{cn:[]}}, config || {}))\n\n\nexport default component\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"pages/settings/index.js","mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://smart-engraving-miniapp/./src/pages/settings/index.tsx?652f","webpack://smart-engraving-miniapp/._src_pages_settings_index.tsx"],"sourcesContent":["import _objectSpread from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/objectSpread2.js\";\nimport _slicedToArray from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { View, Text, Image, Input, Button } from '@tarojs/components';\nimport Taro from '@tarojs/taro';\nimport { useState, useEffect } from 'react';\nimport './index.scss';\nimport ThemeToggle from '../../components/ThemeToggle';\nimport { useThemeContext } from '../../context/ThemeContext';\nimport { getUserInfo, setUserInfo, clearUserInfo } from '../../utils/store';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default function SettingsPage() {\n var _useThemeContext = useThemeContext(),\n theme = _useThemeContext.theme;\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n user = _useState2[0],\n setUser = _useState2[1];\n var _useState3 = useState(''),\n _useState4 = _slicedToArray(_useState3, 2),\n editName = _useState4[0],\n setEditName = _useState4[1];\n var _useState5 = useState(''),\n _useState6 = _slicedToArray(_useState5, 2),\n editAvatar = _useState6[0],\n setEditAvatar = _useState6[1];\n var _useState7 = useState(false),\n _useState8 = _slicedToArray(_useState7, 2),\n showEdit = _useState8[0],\n setShowEdit = _useState8[1];\n var loadUser = function loadUser() {\n var u = getUserInfo() || {};\n setUser(u);\n setEditName(u.nickName || '');\n setEditAvatar(u.avatarUrl || '');\n };\n useEffect(function () {\n loadUser();\n }, []);\n var handleSaveInfo = function handleSaveInfo() {\n setUserInfo(_objectSpread(_objectSpread({}, user), {}, {\n nickName: editName,\n avatarUrl: editAvatar\n }));\n Taro.showToast({\n title: '修改成功',\n icon: 'success'\n });\n setShowEdit(false);\n loadUser();\n };\n var handleLogout = function handleLogout() {\n Taro.showModal({\n title: '确认退出',\n content: '退出后将清空当前登录状态,确定吗?',\n success: function success(res) {\n if (res.confirm) {\n clearUserInfo();\n Taro.switchTab({\n url: '/pages/index/index'\n });\n }\n }\n });\n };\n var onChooseAvatar = function onChooseAvatar(e) {\n setEditAvatar(e.detail.avatarUrl || '');\n };\n var MENU = [{\n label: '个人信息',\n icon: '👤',\n action: function action() {\n return setShowEdit(true);\n }\n }, {\n label: '账号管理',\n icon: '🆔',\n action: function action() {\n return Taro.navigateTo({\n url: '/pages/userDatabase/index'\n });\n }\n }, {\n label: '定制协议',\n icon: '📋',\n action: function action() {\n return Taro.navigateTo({\n url: '/pages/agreement/index'\n });\n }\n }, {\n label: '关于我们',\n icon: 'ℹ️',\n action: function action() {\n return Taro.showToast({\n title: '智绘微刻 v1.0',\n icon: 'none'\n });\n }\n }];\n return /*#__PURE__*/_jsx(View, {\n className: \"theme-\".concat(theme),\n children: /*#__PURE__*/_jsxs(View, {\n className: \"settings-page\",\n children: [/*#__PURE__*/_jsx(ThemeToggle, {}), /*#__PURE__*/_jsxs(View, {\n className: \"page-header dashed-card mt-20\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsxs(View, {\n className: \"flex-between\",\n style: {\n width: '100%'\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"back-btn\",\n onClick: function onClick() {\n return Taro.navigateBack();\n },\n children: \"\\u2190\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"page-title\",\n children: \"\\u8BBE\\u7F6E\"\n }), /*#__PURE__*/_jsx(View, {\n style: {\n width: '60px'\n }\n })]\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"settings-user dashed-card mt-20\",\n children: /*#__PURE__*/_jsxs(View, {\n className: \"flex-between\",\n onClick: function onClick() {\n return setShowEdit(true);\n },\n children: [/*#__PURE__*/_jsxs(View, {\n className: \"flex-center\",\n children: [user.avatarUrl ? /*#__PURE__*/_jsx(Image, {\n className: \"settings-avatar\",\n src: user.avatarUrl,\n mode: \"aspectFill\"\n }) : /*#__PURE__*/_jsx(View, {\n className: \"settings-avatar-placeholder\",\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\uD83D\\uDC64\"\n })\n }), /*#__PURE__*/_jsxs(View, {\n style: {\n marginLeft: '20px'\n },\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"settings-name\",\n children: user.nickName || '未登录'\n }), /*#__PURE__*/_jsxs(Text, {\n className: \"settings-id\",\n children: [\"ID: \", user.openid ? user.openid.slice(-8) : '---']\n })]\n })]\n }), /*#__PURE__*/_jsx(Text, {\n className: \"arrow\",\n children: \"\\u203A\"\n })]\n })\n }), /*#__PURE__*/_jsx(View, {\n className: \"settings-list dashed-card mt-20\",\n children: MENU.map(function (item, idx) {\n return /*#__PURE__*/_jsxs(View, {\n className: \"settings-item \".concat(idx < MENU.length - 1 ? 'bordered' : ''),\n onClick: item.action,\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"settings-item-icon\",\n children: item.icon\n }), /*#__PURE__*/_jsx(Text, {\n className: \"settings-item-label\",\n children: item.label\n }), /*#__PURE__*/_jsx(Text, {\n className: \"arrow\",\n children: \"\\u203A\"\n })]\n }, idx);\n })\n }), (user === null || user === void 0 ? void 0 : user.openid) && /*#__PURE__*/_jsx(View, {\n className: \"mt-20\",\n children: /*#__PURE__*/_jsx(View, {\n className: \"btn-outline logout-btn\",\n onClick: handleLogout,\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u9000\\u51FA\\u767B\\u5F55\"\n })\n })\n }), /*#__PURE__*/_jsx(View, {\n style: {\n height: '40px'\n }\n }), showEdit && /*#__PURE__*/_jsx(View, {\n className: \"modal-overlay\",\n children: /*#__PURE__*/_jsxs(View, {\n className: \"modal-card dashed-card\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"modal-title\",\n children: \"\\u4FEE\\u6539\\u4FE1\\u606F\"\n }), /*#__PURE__*/_jsx(Button, {\n className: \"avatar-btn\",\n openType: \"chooseAvatar\",\n onChooseAvatar: onChooseAvatar,\n children: editAvatar ? /*#__PURE__*/_jsx(Image, {\n className: \"avatar-img\",\n src: editAvatar,\n mode: \"aspectFill\"\n }) : /*#__PURE__*/_jsx(Text, {\n className: \"avatar-placeholder\",\n children: \"\\u70B9\\u51FB\\u9009\\u62E9\\u5934\\u50CF\"\n })\n }), /*#__PURE__*/_jsx(Input, {\n className: \"nickname-input\",\n placeholder: \"\\u8BF7\\u8F93\\u5165\\u6635\\u79F0\",\n value: editName,\n onInput: function onInput(e) {\n return setEditName(e.detail.value);\n }\n }), /*#__PURE__*/_jsxs(View, {\n className: \"form-actions\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"btn-outline\",\n onClick: function onClick() {\n return setShowEdit(false);\n },\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u53D6\\u6D88\"\n })\n }), /*#__PURE__*/_jsx(View, {\n className: \"btn-gradient\",\n onClick: handleSaveInfo,\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u4FDD\\u5B58\"\n })\n })]\n })]\n })\n })]\n })\n });\n}","import { createPageConfig } from '@tarojs/runtime'\nimport component from \"!!../../../node_modules/@tarojs/taro-loader/lib/entry-cache.js?name=pages/settings/index!./index.tsx\"\nvar config = {\"navigationBarTitleText\":\"设置\"};\n\n\nvar inst = Page(createPageConfig(component, 'pages/settings/index', {root:{cn:[]}}, config || {}))\n\n\nexport default component\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/dist/pages/userDatabase/index.js b/dist/pages/userDatabase/index.js new file mode 100644 index 0000000..c1e1f46 --- /dev/null +++ b/dist/pages/userDatabase/index.js @@ -0,0 +1,317 @@ +"use strict"; +(wx["webpackJsonp"] = wx["webpackJsonp"] || []).push([["pages/userDatabase/index"],{ + +/***/ "./node_modules/@tarojs/taro-loader/lib/entry-cache.js?name=pages/userDatabase/index!./src/pages/userDatabase/index.tsx": +/*!******************************************************************************************************************************!*\ + !*** ./node_modules/@tarojs/taro-loader/lib/entry-cache.js?name=pages/userDatabase/index!./src/pages/userDatabase/index.tsx ***! + \******************************************************************************************************************************/ +/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": function() { return /* binding */ UserDatabasePage; } +/* harmony export */ }); +/* harmony import */ var F_weixin_wordc_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js */ "./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"); +/* harmony import */ var _tarojs_components__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @tarojs/components */ "./node_modules/@tarojs/plugin-platform-weapp/dist/components-react.js"); +/* harmony import */ var _tarojs_taro__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tarojs/taro */ "./node_modules/@tarojs/taro/index.js"); +/* harmony import */ var _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tarojs_taro__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "./node_modules/react/cjs/react.production.min.js"); +/* harmony import */ var _utils_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/store */ "./src/utils/store.ts"); +/* harmony import */ var _components_ThemeToggle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/ThemeToggle */ "./src/components/ThemeToggle/index.tsx"); +/* harmony import */ var _context_ThemeContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/ThemeContext */ "./src/context/ThemeContext.tsx"); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "./node_modules/react/cjs/react-jsx-runtime.production.min.js"); + + + + + + + + + +function UserDatabasePage() { + var _getUserInfo; + var _useThemeContext = (0,_context_ThemeContext__WEBPACK_IMPORTED_MODULE_4__.useThemeContext)(), + theme = _useThemeContext.theme; + var _useState = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false), + _useState2 = (0,F_weixin_wordc_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_6__["default"])(_useState, 2), + isUnlocked = _useState2[0], + setIsUnlocked = _useState2[1]; + var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(''), + _useState4 = (0,F_weixin_wordc_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_6__["default"])(_useState3, 2), + password = _useState4[0], + setPassword = _useState4[1]; + var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false), + _useState6 = (0,F_weixin_wordc_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_6__["default"])(_useState5, 2), + pwdError = _useState6[0], + setPwdError = _useState6[1]; + var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]), + _useState8 = (0,F_weixin_wordc_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_6__["default"])(_useState7, 2), + users = _useState8[0], + setUsers = _useState8[1]; + var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false), + _useState0 = (0,F_weixin_wordc_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_6__["default"])(_useState9, 2), + showAdd = _useState0[0], + setShowAdd = _useState0[1]; + var _useState1 = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(''), + _useState10 = (0,F_weixin_wordc_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_6__["default"])(_useState1, 2), + newNick = _useState10[0], + setNewNick = _useState10[1]; + var refresh = function refresh() { + return setUsers((0,_utils_store__WEBPACK_IMPORTED_MODULE_2__.listAllUsers)()); + }; + (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () { + refresh(); + }, []); + var handleUnlock = function handleUnlock() { + if ((0,_utils_store__WEBPACK_IMPORTED_MODULE_2__.verifyAdminPassword)(password)) { + setIsUnlocked(true); + setPwdError(false); + refresh(); + } else { + setPwdError(true); + } + }; + var handleSwitch = function handleSwitch(openid) { + if ((0,_utils_store__WEBPACK_IMPORTED_MODULE_2__.switchUser)(openid)) { + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().showToast({ + title: '切换成功', + icon: 'success' + }); + refresh(); + } else { + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().showToast({ + title: '切换失败', + icon: 'none' + }); + } + }; + var handleDelete = function handleDelete(openid) { + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().showModal({ + title: '确认删除', + content: '删除后将清空该用户所有数据,无法恢复', + confirmColor: '#e64340', + success: function success(res) { + if (res.confirm) { + (0,_utils_store__WEBPACK_IMPORTED_MODULE_2__.deleteUser)(openid); + refresh(); + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().showToast({ + title: '已删除', + icon: 'success' + }); + } + } + }); + }; + var handleCreate = function handleCreate() { + if (!newNick.trim()) { + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().showToast({ + title: '请输入昵称', + icon: 'none' + }); + return; + } + (0,_utils_store__WEBPACK_IMPORTED_MODULE_2__.createUser)(newNick.trim()); + setShowAdd(false); + setNewNick(''); + refresh(); + _tarojs_taro__WEBPACK_IMPORTED_MODULE_0___default().showToast({ + title: '创建成功', + icon: 'success' + }); + }; + var activeOpenid = ((_getUserInfo = (0,_utils_store__WEBPACK_IMPORTED_MODULE_2__.getUserInfo)()) === null || _getUserInfo === void 0 ? void 0 : _getUserInfo.openid) || ''; + if (!isUnlocked) { + return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "theme-".concat(theme), + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-page", + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_components_ThemeToggle__WEBPACK_IMPORTED_MODULE_3__["default"], {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-lock-card dashed-card mt-20", + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "star-badge" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-lock-icon", + children: "\uD83D\uDD10" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-lock-title", + children: "\u7BA1\u7406\u5458\u9A8C\u8BC1" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-lock-desc", + children: "\u8BF7\u8F93\u5165\u5BC6\u7801\u4EE5\u8BBF\u95EE\u7528\u6237\u6570\u636E\u5E93" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Input, { + className: "udb-password-input", + type: "text", + password: true, + placeholder: "\u8F93\u5165\u5BC6\u7801", + value: password, + onInput: function onInput(e) { + return setPassword(e.detail.value); + } + }), pwdError && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-error", + children: "\u5BC6\u7801\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "btn-gradient udb-btn", + onClick: handleUnlock, + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + children: "\u8FDB\u5165\u6570\u636E\u5E93" + }) + })] + })] + }) + }); + } + return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "theme-".concat(theme), + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-page", + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_components_ThemeToggle__WEBPACK_IMPORTED_MODULE_3__["default"], {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "page-header dashed-card mt-20", + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "star-badge" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "page-title", + children: "\u672C\u5730\u7528\u6237\u6570\u636E\u5E93" + })] + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-toolbar", + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "btn-gradient udb-add-btn", + onClick: function onClick() { + return setShowAdd(true); + }, + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + children: "+ \u65B0\u5EFA\u8D26\u53F7" + }) + }) + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-table", + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-row udb-header", + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-col col-nick", + children: "\u6635\u79F0" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-col col-id", + children: "ID" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-col col-stats", + children: "\u8BBE\u8BA1/\u8BA2\u5355" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-col col-action", + children: "\u64CD\u4F5C" + })] + }), users.map(function (u) { + return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-row ".concat(u.openid === activeOpenid ? 'active' : ''), + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-col col-nick", + children: u.nickName + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-col col-id", + children: u.openid + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-col col-stats", + children: [u.designCount, " / ", u.orderCount] + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-col col-action", + children: [u.openid !== activeOpenid && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-link", + onClick: function onClick() { + return handleSwitch(u.openid); + }, + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + children: "\u5207\u6362" + }) + }), u.openid === activeOpenid && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-current", + children: "\u5F53\u524D" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-link udb-danger", + onClick: function onClick() { + return handleDelete(u.openid); + }, + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + children: "\u5220\u9664" + }) + })] + })] + }, u.openid); + }), users.length === 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-empty", + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + children: "\u6682\u65E0\u7528\u6237\u6570\u636E" + }) + })] + }), showAdd && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "modal-overlay", + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-add-card dashed-card", + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "star-badge" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + className: "udb-add-title", + children: "\u65B0\u5EFA\u672C\u5730\u8D26\u53F7" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Input, { + className: "udb-add-input", + type: "text", + placeholder: "\u8BF7\u8F93\u5165\u6635\u79F0", + value: newNick, + onInput: function onInput(e) { + return setNewNick(e.detail.value); + } + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "udb-add-actions", + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "btn-outline", + onClick: function onClick() { + return setShowAdd(false); + }, + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + children: "\u53D6\u6D88" + }) + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.View, { + className: "btn-gradient", + onClick: handleCreate, + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_tarojs_components__WEBPACK_IMPORTED_MODULE_7__.Text, { + children: "\u521B\u5EFA" + }) + })] + })] + }) + })] + }) + }); +} + +/***/ }), + +/***/ "./src/pages/userDatabase/index.tsx": +/*!******************************************!*\ + !*** ./src/pages/userDatabase/index.tsx ***! + \******************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { + +/* harmony import */ var _tarojs_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tarojs/runtime */ "./node_modules/@tarojs/runtime/dist/runtime.esm.js"); +/* harmony import */ var _node_modules_tarojs_taro_loader_lib_entry_cache_js_name_pages_userDatabase_index_index_tsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !!../../../node_modules/@tarojs/taro-loader/lib/entry-cache.js?name=pages/userDatabase/index!./index.tsx */ "./node_modules/@tarojs/taro-loader/lib/entry-cache.js?name=pages/userDatabase/index!./src/pages/userDatabase/index.tsx"); + + +var config = {"navigationBarTitleText":"用户数据库","backgroundColor":"#ffffff"}; + + +var inst = Page((0,_tarojs_runtime__WEBPACK_IMPORTED_MODULE_1__.createPageConfig)(_node_modules_tarojs_taro_loader_lib_entry_cache_js_name_pages_userDatabase_index_index_tsx__WEBPACK_IMPORTED_MODULE_0__["default"], 'pages/userDatabase/index', {root:{cn:[]}}, config || {})) + + +/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_tarojs_taro_loader_lib_entry_cache_js_name_pages_userDatabase_index_index_tsx__WEBPACK_IMPORTED_MODULE_0__["default"]); + + +/***/ }) + +}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } +/******/ __webpack_require__.O(0, ["taro","vendors","common"], function() { return __webpack_exec__("./src/pages/userDatabase/index.tsx"); }); +/******/ var __webpack_exports__ = __webpack_require__.O(); +/******/ } +]); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/pages/userDatabase/index.js.map b/dist/pages/userDatabase/index.js.map new file mode 100644 index 0000000..fc1ecfa --- /dev/null +++ b/dist/pages/userDatabase/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pages/userDatabase/index.js","mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://smart-engraving-miniapp/./src/pages/userDatabase/index.tsx?9115","webpack://smart-engraving-miniapp/._src_pages_userDatabase_index.tsx"],"sourcesContent":["import _slicedToArray from \"F:/weixin_wordc/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport { View, Text, Input } from '@tarojs/components';\nimport Taro from '@tarojs/taro';\nimport { useState, useEffect } from 'react';\nimport './index.scss';\nimport { listAllUsers, switchUser, deleteUser, createUser, getUserInfo, verifyAdminPassword } from '../../utils/store';\nimport ThemeToggle from '../../components/ThemeToggle';\nimport { useThemeContext } from '../../context/ThemeContext';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default function UserDatabasePage() {\n var _getUserInfo;\n var _useThemeContext = useThemeContext(),\n theme = _useThemeContext.theme;\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isUnlocked = _useState2[0],\n setIsUnlocked = _useState2[1];\n var _useState3 = useState(''),\n _useState4 = _slicedToArray(_useState3, 2),\n password = _useState4[0],\n setPassword = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n pwdError = _useState6[0],\n setPwdError = _useState6[1];\n var _useState7 = useState([]),\n _useState8 = _slicedToArray(_useState7, 2),\n users = _useState8[0],\n setUsers = _useState8[1];\n var _useState9 = useState(false),\n _useState0 = _slicedToArray(_useState9, 2),\n showAdd = _useState0[0],\n setShowAdd = _useState0[1];\n var _useState1 = useState(''),\n _useState10 = _slicedToArray(_useState1, 2),\n newNick = _useState10[0],\n setNewNick = _useState10[1];\n var refresh = function refresh() {\n return setUsers(listAllUsers());\n };\n useEffect(function () {\n refresh();\n }, []);\n var handleUnlock = function handleUnlock() {\n if (verifyAdminPassword(password)) {\n setIsUnlocked(true);\n setPwdError(false);\n refresh();\n } else {\n setPwdError(true);\n }\n };\n var handleSwitch = function handleSwitch(openid) {\n if (switchUser(openid)) {\n Taro.showToast({\n title: '切换成功',\n icon: 'success'\n });\n refresh();\n } else {\n Taro.showToast({\n title: '切换失败',\n icon: 'none'\n });\n }\n };\n var handleDelete = function handleDelete(openid) {\n Taro.showModal({\n title: '确认删除',\n content: '删除后将清空该用户所有数据,无法恢复',\n confirmColor: '#e64340',\n success: function success(res) {\n if (res.confirm) {\n deleteUser(openid);\n refresh();\n Taro.showToast({\n title: '已删除',\n icon: 'success'\n });\n }\n }\n });\n };\n var handleCreate = function handleCreate() {\n if (!newNick.trim()) {\n Taro.showToast({\n title: '请输入昵称',\n icon: 'none'\n });\n return;\n }\n createUser(newNick.trim());\n setShowAdd(false);\n setNewNick('');\n refresh();\n Taro.showToast({\n title: '创建成功',\n icon: 'success'\n });\n };\n var activeOpenid = ((_getUserInfo = getUserInfo()) === null || _getUserInfo === void 0 ? void 0 : _getUserInfo.openid) || '';\n if (!isUnlocked) {\n return /*#__PURE__*/_jsx(View, {\n className: \"theme-\".concat(theme),\n children: /*#__PURE__*/_jsxs(View, {\n className: \"udb-page\",\n children: [/*#__PURE__*/_jsx(ThemeToggle, {}), /*#__PURE__*/_jsxs(View, {\n className: \"udb-lock-card dashed-card mt-20\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"udb-lock-icon\",\n children: \"\\uD83D\\uDD10\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"udb-lock-title\",\n children: \"\\u7BA1\\u7406\\u5458\\u9A8C\\u8BC1\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"udb-lock-desc\",\n children: \"\\u8BF7\\u8F93\\u5165\\u5BC6\\u7801\\u4EE5\\u8BBF\\u95EE\\u7528\\u6237\\u6570\\u636E\\u5E93\"\n }), /*#__PURE__*/_jsx(Input, {\n className: \"udb-password-input\",\n type: \"text\",\n password: true,\n placeholder: \"\\u8F93\\u5165\\u5BC6\\u7801\",\n value: password,\n onInput: function onInput(e) {\n return setPassword(e.detail.value);\n }\n }), pwdError && /*#__PURE__*/_jsx(Text, {\n className: \"udb-error\",\n children: \"\\u5BC6\\u7801\\u9519\\u8BEF\\uFF0C\\u8BF7\\u91CD\\u8BD5\"\n }), /*#__PURE__*/_jsx(View, {\n className: \"btn-gradient udb-btn\",\n onClick: handleUnlock,\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u8FDB\\u5165\\u6570\\u636E\\u5E93\"\n })\n })]\n })]\n })\n });\n }\n return /*#__PURE__*/_jsx(View, {\n className: \"theme-\".concat(theme),\n children: /*#__PURE__*/_jsxs(View, {\n className: \"udb-page\",\n children: [/*#__PURE__*/_jsx(ThemeToggle, {}), /*#__PURE__*/_jsxs(View, {\n className: \"page-header dashed-card mt-20\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"page-title\",\n children: \"\\u672C\\u5730\\u7528\\u6237\\u6570\\u636E\\u5E93\"\n })]\n }), /*#__PURE__*/_jsx(View, {\n className: \"udb-toolbar\",\n children: /*#__PURE__*/_jsx(View, {\n className: \"btn-gradient udb-add-btn\",\n onClick: function onClick() {\n return setShowAdd(true);\n },\n children: /*#__PURE__*/_jsx(Text, {\n children: \"+ \\u65B0\\u5EFA\\u8D26\\u53F7\"\n })\n })\n }), /*#__PURE__*/_jsxs(View, {\n className: \"udb-table\",\n children: [/*#__PURE__*/_jsxs(View, {\n className: \"udb-row udb-header\",\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"udb-col col-nick\",\n children: \"\\u6635\\u79F0\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"udb-col col-id\",\n children: \"ID\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"udb-col col-stats\",\n children: \"\\u8BBE\\u8BA1/\\u8BA2\\u5355\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"udb-col col-action\",\n children: \"\\u64CD\\u4F5C\"\n })]\n }), users.map(function (u) {\n return /*#__PURE__*/_jsxs(View, {\n className: \"udb-row \".concat(u.openid === activeOpenid ? 'active' : ''),\n children: [/*#__PURE__*/_jsx(Text, {\n className: \"udb-col col-nick\",\n children: u.nickName\n }), /*#__PURE__*/_jsx(Text, {\n className: \"udb-col col-id\",\n children: u.openid\n }), /*#__PURE__*/_jsxs(Text, {\n className: \"udb-col col-stats\",\n children: [u.designCount, \" / \", u.orderCount]\n }), /*#__PURE__*/_jsxs(View, {\n className: \"udb-col col-action\",\n children: [u.openid !== activeOpenid && /*#__PURE__*/_jsx(View, {\n className: \"udb-link\",\n onClick: function onClick() {\n return handleSwitch(u.openid);\n },\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u5207\\u6362\"\n })\n }), u.openid === activeOpenid && /*#__PURE__*/_jsx(Text, {\n className: \"udb-current\",\n children: \"\\u5F53\\u524D\"\n }), /*#__PURE__*/_jsx(View, {\n className: \"udb-link udb-danger\",\n onClick: function onClick() {\n return handleDelete(u.openid);\n },\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u5220\\u9664\"\n })\n })]\n })]\n }, u.openid);\n }), users.length === 0 && /*#__PURE__*/_jsx(View, {\n className: \"udb-empty\",\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u6682\\u65E0\\u7528\\u6237\\u6570\\u636E\"\n })\n })]\n }), showAdd && /*#__PURE__*/_jsx(View, {\n className: \"modal-overlay\",\n children: /*#__PURE__*/_jsxs(View, {\n className: \"udb-add-card dashed-card\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"star-badge\"\n }), /*#__PURE__*/_jsx(Text, {\n className: \"udb-add-title\",\n children: \"\\u65B0\\u5EFA\\u672C\\u5730\\u8D26\\u53F7\"\n }), /*#__PURE__*/_jsx(Input, {\n className: \"udb-add-input\",\n type: \"text\",\n placeholder: \"\\u8BF7\\u8F93\\u5165\\u6635\\u79F0\",\n value: newNick,\n onInput: function onInput(e) {\n return setNewNick(e.detail.value);\n }\n }), /*#__PURE__*/_jsxs(View, {\n className: \"udb-add-actions\",\n children: [/*#__PURE__*/_jsx(View, {\n className: \"btn-outline\",\n onClick: function onClick() {\n return setShowAdd(false);\n },\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u53D6\\u6D88\"\n })\n }), /*#__PURE__*/_jsx(View, {\n className: \"btn-gradient\",\n onClick: handleCreate,\n children: /*#__PURE__*/_jsx(Text, {\n children: \"\\u521B\\u5EFA\"\n })\n })]\n })]\n })\n })]\n })\n });\n}","import { createPageConfig } from '@tarojs/runtime'\nimport component from \"!!../../../node_modules/@tarojs/taro-loader/lib/entry-cache.js?name=pages/userDatabase/index!./index.tsx\"\nvar config = {\"navigationBarTitleText\":\"用户数据库\",\"backgroundColor\":\"#ffffff\"};\n\n\nvar inst = Page(createPageConfig(component, 'pages/userDatabase/index', {root:{cn:[]}}, config || {}))\n\n\nexport default component\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/dist/pages/userDatabase/index.json b/dist/pages/userDatabase/index.json new file mode 100644 index 0000000..2cf979d --- /dev/null +++ b/dist/pages/userDatabase/index.json @@ -0,0 +1 @@ +{"navigationBarTitleText":"用户数据库","backgroundColor":"#ffffff","usingComponents":{"comp":"../../comp"}} \ No newline at end of file diff --git a/dist/pages/userDatabase/index.wxml b/dist/pages/userDatabase/index.wxml new file mode 100644 index 0000000..181a491 --- /dev/null +++ b/dist/pages/userDatabase/index.wxml @@ -0,0 +1,2 @@ + +