wrong-notebook 2026.10.22-2 → 2026.10.22-4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +8 -8
- package/.next/prerender-manifest.json +4 -4
- package/.next/server/app/_global-error/page/build-manifest.json +5 -5
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +8 -8
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +7 -7
- package/.next/server/app/_global-error.segments/_full.segment.rsc +8 -8
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page/build-manifest.json +5 -5
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin/page/build-manifest.json +5 -5
- package/.next/server/app/admin/page.js +2 -2
- package/.next/server/app/admin/page.js.nft.json +1 -1
- package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin/user/[id]/page/build-manifest.json +5 -5
- package/.next/server/app/admin/user/[id]/page.js +2 -2
- package/.next/server/app/admin/user/[id]/page.js.nft.json +1 -1
- package/.next/server/app/admin/user/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/admin/dashboard/route.js +2 -2
- package/.next/server/app/api/admin/dashboard/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/migrate-tags/route.js +2 -2
- package/.next/server/app/api/admin/migrate-tags/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/system-reset/route.js +2 -2
- package/.next/server/app/api/admin/system-reset/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/users/[id]/detail/route.js +2 -2
- package/.next/server/app/api/admin/users/[id]/detail/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/users/[id]/route.js +2 -2
- package/.next/server/app/api/admin/users/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/users/route.js +2 -2
- package/.next/server/app/api/admin/users/route.js.nft.json +1 -1
- package/.next/server/app/api/ai/models/route.js +2 -2
- package/.next/server/app/api/ai/models/route.js.nft.json +1 -1
- package/.next/server/app/api/ai/test/route.js +2 -2
- package/.next/server/app/api/ai/test/route.js.nft.json +1 -1
- package/.next/server/app/api/analytics/route.js +2 -2
- package/.next/server/app/api/analytics/route.js.nft.json +1 -1
- package/.next/server/app/api/analyze/route.js +2 -2
- package/.next/server/app/api/analyze/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/[...nextauth]/route.js +2 -2
- package/.next/server/app/api/auth/[...nextauth]/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/delete/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/figure/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/figure/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/fix-latex/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/fix-latex/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/geogebra/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/image/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/image/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/mastery/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/mastery/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/notes/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/notes/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/practice-records/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/practice-records/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/reanswer/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/reanswer/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/retag/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/retag/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/svg-animation/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/svg-animation/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/batch-delete/route.js +2 -2
- package/.next/server/app/api/error-items/batch-delete/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/clear/route.js +2 -2
- package/.next/server/app/api/error-items/clear/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/list/route.js +2 -2
- package/.next/server/app/api/error-items/list/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/route.js +2 -2
- package/.next/server/app/api/error-items/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/short/[shortId]/route.js +2 -2
- package/.next/server/app/api/error-items/short/[shortId]/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/similarity/route.js +2 -2
- package/.next/server/app/api/error-items/similarity/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js +2 -2
- package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/[id]/results/route.js +4 -4
- package/.next/server/app/api/exams/[id]/results/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/[id]/retry/route.js +2 -2
- package/.next/server/app/api/exams/[id]/retry/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/route.js +2 -2
- package/.next/server/app/api/exams/route.js.nft.json +1 -1
- package/.next/server/app/api/export/route.js +2 -2
- package/.next/server/app/api/export/route.js.nft.json +1 -1
- package/.next/server/app/api/geogebra-analyze/route.js +2 -2
- package/.next/server/app/api/geogebra-analyze/route.js.nft.json +1 -1
- package/.next/server/app/api/health/route.js +2 -2
- package/.next/server/app/api/health/route.js.nft.json +1 -1
- package/.next/server/app/api/import/route.js +2 -2
- package/.next/server/app/api/import/route.js.nft.json +1 -1
- package/.next/server/app/api/logs/frontend/route.js +2 -2
- package/.next/server/app/api/logs/frontend/route.js.nft.json +1 -1
- package/.next/server/app/api/notebooks/[id]/retag/route.js +2 -2
- package/.next/server/app/api/notebooks/[id]/retag/route.js.nft.json +1 -1
- package/.next/server/app/api/notebooks/[id]/route.js +2 -2
- package/.next/server/app/api/notebooks/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/notebooks/route.js +2 -2
- package/.next/server/app/api/notebooks/route.js.nft.json +1 -1
- package/.next/server/app/api/openclaw/batch-upload/route.js +2 -2
- package/.next/server/app/api/openclaw/batch-upload/route.js.nft.json +1 -1
- package/.next/server/app/api/practice/generate/route.js +2 -2
- package/.next/server/app/api/practice/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/practice/record/[id]/route.js +2 -2
- package/.next/server/app/api/practice/record/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/practice/record/route.js +2 -2
- package/.next/server/app/api/practice/record/route.js.nft.json +1 -1
- package/.next/server/app/api/reanswer/route.js +2 -2
- package/.next/server/app/api/reanswer/route.js.nft.json +1 -1
- package/.next/server/app/api/register/route.js.nft.json +1 -1
- package/.next/server/app/api/register/status/route.js +2 -2
- package/.next/server/app/api/register/status/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/route.js +2 -2
- package/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/stats/practice/clear/route.js +2 -2
- package/.next/server/app/api/stats/practice/clear/route.js.nft.json +1 -1
- package/.next/server/app/api/stats/practice/route.js +2 -2
- package/.next/server/app/api/stats/practice/route.js.nft.json +1 -1
- package/.next/server/app/api/tags/route.js +2 -2
- package/.next/server/app/api/tags/route.js.nft.json +1 -1
- package/.next/server/app/api/tags/stats/route.js +2 -2
- package/.next/server/app/api/tags/stats/route.js.nft.json +1 -1
- package/.next/server/app/api/tags/suggestions/route.js +2 -2
- package/.next/server/app/api/tags/suggestions/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/route.js +2 -2
- package/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/.next/server/app/api/user/route.js +2 -2
- package/.next/server/app/api/user/route.js.nft.json +1 -1
- package/.next/server/app/api/version/route.js +2 -2
- package/.next/server/app/api/version/route.js.nft.json +1 -1
- package/.next/server/app/error-items/[id]/page/build-manifest.json +5 -5
- package/.next/server/app/error-items/[id]/page.js +2 -2
- package/.next/server/app/error-items/[id]/page.js.nft.json +1 -1
- package/.next/server/app/error-items/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/exams/[id]/page/build-manifest.json +5 -5
- package/.next/server/app/exams/[id]/page.js +2 -2
- package/.next/server/app/exams/[id]/page.js.nft.json +1 -1
- package/.next/server/app/exams/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/exams/[id]/print/page/build-manifest.json +5 -5
- package/.next/server/app/exams/[id]/print/page.js +2 -2
- package/.next/server/app/exams/[id]/print/page.js.nft.json +1 -1
- package/.next/server/app/exams/[id]/print/page_client-reference-manifest.js +1 -1
- package/.next/server/app/exams/page/build-manifest.json +5 -5
- package/.next/server/app/exams/page.js +2 -2
- package/.next/server/app/exams/page.js.nft.json +1 -1
- package/.next/server/app/exams/page_client-reference-manifest.js +1 -1
- package/.next/server/app/favicon.ico/route.js +2 -2
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next/server/app/latex-test/page/build-manifest.json +5 -5
- package/.next/server/app/latex-test/page.js +2 -2
- package/.next/server/app/latex-test/page.js.nft.json +1 -1
- package/.next/server/app/latex-test/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page/build-manifest.json +5 -5
- package/.next/server/app/login/page.js +2 -2
- package/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/.next/server/app/manifest.webmanifest.body +1 -1
- package/.next/server/app/notebooks/[id]/add/page/build-manifest.json +5 -5
- package/.next/server/app/notebooks/[id]/add/page.js +2 -2
- package/.next/server/app/notebooks/[id]/add/page.js.nft.json +1 -1
- package/.next/server/app/notebooks/[id]/add/page_client-reference-manifest.js +1 -1
- package/.next/server/app/notebooks/[id]/page/build-manifest.json +5 -5
- package/.next/server/app/notebooks/[id]/page.js +2 -2
- package/.next/server/app/notebooks/[id]/page.js.nft.json +1 -1
- package/.next/server/app/notebooks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/notebooks/page/build-manifest.json +5 -5
- package/.next/server/app/notebooks/page.js +2 -2
- package/.next/server/app/notebooks/page.js.nft.json +1 -1
- package/.next/server/app/notebooks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page/build-manifest.json +5 -5
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/practice/page/build-manifest.json +5 -5
- package/.next/server/app/practice/page.js +2 -2
- package/.next/server/app/practice/page.js.nft.json +1 -1
- package/.next/server/app/practice/page_client-reference-manifest.js +1 -1
- package/.next/server/app/print-preview/page/build-manifest.json +5 -5
- package/.next/server/app/print-preview/page.js +2 -2
- package/.next/server/app/print-preview/page.js.nft.json +1 -1
- package/.next/server/app/print-preview/page_client-reference-manifest.js +1 -1
- package/.next/server/app/register/page/build-manifest.json +5 -5
- package/.next/server/app/register/page.js.nft.json +1 -1
- package/.next/server/app/register/page_client-reference-manifest.js +1 -1
- package/.next/server/app/stats/page/build-manifest.json +5 -5
- package/.next/server/app/stats/page.js +2 -2
- package/.next/server/app/stats/page.js.nft.json +1 -1
- package/.next/server/app/stats/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tags/page/build-manifest.json +5 -5
- package/.next/server/app/tags/page.js +2 -2
- package/.next/server/app/tags/page.js.nft.json +1 -1
- package/.next/server/app/tags/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/1jng_app_api_exams_[id]_questions_[questionId]_regenerate_route_actions_1ggead3.js +1 -1
- package/.next/server/chunks/1oeh_server_app_api_error-items_[id]_practice-records_route_actions_0z2zuf1.js +1 -1
- package/.next/server/chunks/1oeh_server_app_api_error-items_[id]_svg-animation_route_actions_17gckf3.js +1 -1
- package/.next/server/chunks/[externals]__04n7qbr._.js +1 -1
- package/.next/server/chunks/[externals]__0pot68n._.js +1 -1
- package/.next/server/chunks/[externals]__1735khz._.js +1 -1
- package/.next/server/chunks/[externals]_assert_1pwe1ri._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__00_hq9v._.js +6 -6
- package/.next/server/chunks/[root-of-the-server]__01bzczj._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__02j1w81._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__03nfvnm._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__04tyyvs._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__05s4wut._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__06_nln5._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__06h5afw._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__07jl92a._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0_t7bbz._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0akadps._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0be5c5r._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0bqawi0._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0bsw5c9._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0c59gc3._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0cmxmwt._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0d5dpu4._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0d9ijed._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0e22a4y._.js +10 -10
- package/.next/server/chunks/[root-of-the-server]__0fnyu4s._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0gp88gz._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0inxsnu._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0j5231l._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0jaawra._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0k-nf6a._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0k-p1pj._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0lrdm1u._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0lro5a7._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0m8p-6f._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0mfjf2y._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0mqorxb._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0no6umu._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0nqbham._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0o9gtvd._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0obb4y-._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0p3u6_q._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0rk_yxy._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__0rmrkd_._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0tdibjz._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0u58zap._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0vhjihq._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0vz88er._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0wf9znr._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0yc8r2x._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0zv7jom._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__11_-ncy._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__11_1z7m._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__11n87go._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__11p4ahb._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__122xu-0._.js +9 -9
- package/.next/server/chunks/[root-of-the-server]__131taws._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__13ebiit._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1413v0e._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__14dnbrn._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__14jqm9_._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__152lbaw._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__15tkoe6._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__16begv4._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__17duis5._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__17q3k-v._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__184u6de._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__18atlj8._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__18c7l6u._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__18zrkky._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__19vj8qy._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1_gkx5x._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1aaux7e._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1cceu4b._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1cn6rlb._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1csfdxc._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1ezwxao._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1g1wi9i._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1gmc_uw._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1h09r50._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1hpwwxw._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1j6mx-v._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1jdi-1f._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1jtd2ar._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__1ju8z29._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1kpo44g._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1kqv61m._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1lct0vi._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1loecue._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1m4-ab6._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1mkpya8._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1nmtv65._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1nwf3ua._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1oup682._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1p8hw44._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1pplzr1._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1rsn804._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1sdtn83._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1u-1vx4._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1v6nwhq._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1vw740y._.js +9 -9
- package/.next/server/chunks/[root-of-the-server]__20465pr._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__207mxv8._.js +1 -1
- package/.next/server/chunks/_0-eguqv._.js +1 -1
- package/.next/server/chunks/_008zx49._.js +1 -1
- package/.next/server/chunks/_011-ll5._.js +1 -1
- package/.next/server/chunks/_0389uce._.js +1 -1
- package/.next/server/chunks/_0431fxn._.js +1 -1
- package/.next/server/chunks/_0_o8yhv._.js +1 -1
- package/.next/server/chunks/_0c5hvv3._.js +4 -4
- package/.next/server/chunks/_0ekrwj-._.js +6 -6
- package/.next/server/chunks/_0frix22._.js +4 -4
- package/.next/server/chunks/_0gwg6ba._.js +1 -1
- package/.next/server/chunks/_0gxi3zr._.js +1 -1
- package/.next/server/chunks/_0lz3t4l._.js +12 -12
- package/.next/server/chunks/_0rdo0a4._.js +1 -1
- package/.next/server/chunks/_0uxp3uh._.js +1 -1
- package/.next/server/chunks/_0x3ltk0._.js +6 -6
- package/.next/server/chunks/_12w5k19._.js +1 -1
- package/.next/server/chunks/_13ffmxv._.js +1 -1
- package/.next/server/chunks/_14tz_k9._.js +1 -1
- package/.next/server/chunks/_167vv93._.js +1 -1
- package/.next/server/chunks/_16jdov0._.js +1 -1
- package/.next/server/chunks/_18amra5._.js +1 -1
- package/.next/server/chunks/_1_ns7o3._.js +1 -1
- package/.next/server/chunks/_1a1aqmi._.js +1 -1
- package/.next/server/chunks/_1a1udq0._.js +1 -1
- package/.next/server/chunks/_1b0269x._.js +1 -1
- package/.next/server/chunks/_1b7qjlv._.js +1 -1
- package/.next/server/chunks/_1be-y66._.js +1 -1
- package/.next/server/chunks/_1e1h1f1._.js +1 -1
- package/.next/server/chunks/_1ex6ovo._.js +1 -1
- package/.next/server/chunks/_1fgb9ve._.js +1 -1
- package/.next/server/chunks/_1flar98._.js +1 -1
- package/.next/server/chunks/_1m-yyz-._.js +1 -1
- package/.next/server/chunks/_1oj6gy_._.js +1 -1
- package/.next/server/chunks/_1pvqo-q._.js +1 -1
- package/.next/server/chunks/_1z_ujac._.js +1 -1
- package/.next/server/chunks/_211va-d._.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_admin_dashboard_route_actions_1ispso-.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_admin_users_[id]_detail_route_actions_0oe_wkt.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_admin_users_route_actions_0q-rtz1.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_ai_models_route_actions_0w7iwv-.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_ai_test_route_actions_1p0n1q8.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_analytics_route_actions_1e0ou17.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_analyze_route_actions_0lx-23h.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_auth_[___nextauth]_route_actions_08nexdk.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_figure_route_actions_0adlts0.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_fix-latex_route_actions_0hc7dhx.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_geogebra_route_actions_1-ks4uv.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_image_route_actions_1k9n5yl.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_mastery_route_actions_1l5uan6.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_reanswer_route_actions_1-sw0j2.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_retag_route_actions_0ckki4n.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_route_actions_1kbs4ux.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_batch-delete_route_actions_0hiq_1k.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_clear_route_actions_14t_6i-.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_list_route_actions_032x4ue.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_route_actions_1zdvz0p.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_error-items_similarity_route_actions_1i26if9.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_retry_route_actions_1fdi39f.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_route_actions_1wuidrq.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_exams_route_actions_1c_zhtj.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_export_route_actions_0lpcnjc.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_geogebra-analyze_route_actions_1xng0_c.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_health_route_actions_1ryftkb.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_import_route_actions_20ko04x.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_logs_frontend_route_actions_0nxepty.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_notebooks_[id]_retag_route_actions_00su_t8.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_notebooks_[id]_route_actions_11j3vxg.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_notebooks_route_actions_02cy45r.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_openclaw_batch-upload_route_actions_1zz3oen.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_practice_generate_route_actions_1krr9n_.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_practice_record_[id]_route_actions_0zreiom.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_practice_record_route_actions_0py9z__.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_reanswer_route_actions_04xweh_.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_register_route_actions_0vlzh_c.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_register_status_route_actions_0b52_sj.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_1bpm9ac.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_stats_practice_clear_route_actions_1iz6iz0.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_stats_practice_route_actions_1tfoxx-.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_tags_route_actions_1nb9ma2.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_tags_stats_route_actions_0fmeadc.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_tags_suggestions_route_actions_1xpolyv.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_tasks_route_actions_123tq1_.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js +1 -1
- package/.next/server/chunks/_next-internal_server_app_manifest_webmanifest_route_actions_08hcpz0.js +1 -1
- package/.next/server/chunks/node_modules_next_1zdbrne._.js +1 -1
- package/.next/server/chunks/node_modules_zod_v4_classic_external_1-pw2v2.js +3 -3
- package/.next/server/chunks/src_0tzpy5j._.js +1 -1
- package/.next/server/chunks/src_lib_ai_prompts_ts_0z36zms._.js +1 -1
- package/.next/server/chunks/src_lib_date-time_ts_14chb27._.js +1 -1
- package/.next/server/chunks/src_lib_question-deduplication_ts_1p1bik-._.js +1 -1
- package/.next/server/chunks/ssr/[externals]_fs_0pplqgc._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__00gewu3._.js +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__05f8wbh._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0a0nty7._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0ax9dog._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0b8kewv._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0bvtza7._.js +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0g_-bym._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0gwwr7e._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0hzktoi._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0icjezr._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0koj8h0._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0s87xha._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0snpjfe._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0y_e9do._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0ybs_4c._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__14l7peq._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1507q8a._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__15ppb9j._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__191jn5n._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1f2jx51._.js +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__1gth76-._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1ko_dw5._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1l84pks._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1m7qw-2._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1ma2oml._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1o8jotz._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1o__w27._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1p7f0va._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1sg9eoj._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1u74hyi._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1xsovpr._.js +1 -1
- package/.next/server/chunks/ssr/_054yhx9._.js +1 -1
- package/.next/server/chunks/ssr/_062gk85._.js +3 -0
- package/.next/server/chunks/ssr/_07ls0n_._.js +1 -1
- package/.next/server/chunks/ssr/_0i9hwpv._.js +1 -1
- package/.next/server/chunks/ssr/_0idg05p._.js +3 -0
- package/.next/server/chunks/ssr/_0iqp5hs._.js +1 -1
- package/.next/server/chunks/ssr/_0m1-rq-._.js +1 -1
- package/.next/server/chunks/ssr/_0mgbe2b._.js +1 -1
- package/.next/server/chunks/ssr/_0nv22wt._.js +1 -1
- package/.next/server/chunks/ssr/_0rz2_qb._.js +5 -5
- package/.next/server/chunks/ssr/_0sbbx9z._.js +2 -2
- package/.next/server/chunks/ssr/_0sf1gd9._.js +1 -1
- package/.next/server/chunks/ssr/_0uemk57._.js +1 -1
- package/.next/server/chunks/ssr/_0zj7dlu._.js +1 -1
- package/.next/server/chunks/ssr/_17igtpd._.js +1 -1
- package/.next/server/chunks/ssr/_1gu1rou._.js +1 -1
- package/.next/server/chunks/ssr/_1jniqsj._.js +1 -1
- package/.next/server/chunks/ssr/_1kgnhmo._.js +2 -2
- package/.next/server/chunks/ssr/_1lt1lhz._.js +2 -2
- package/.next/server/chunks/ssr/_1yeu09q._.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_admin_page_actions_1mcickz.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_admin_user_[id]_page_actions_0baj8gs.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_error-items_[id]_page_actions_0qla9ak.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_exams_[id]_print_page_actions_0pxdgxq.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_exams_page_actions_0av69f-.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_latex-test_page_actions_19v7ka0.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_login_page_actions_04fnjo0.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_[id]_add_page_actions_0275ft2.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_[id]_page_actions_1qj0i-7.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_page_actions_06x1kdz.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_practice_page_actions_0cy-h5n.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_print-preview_page_actions_1jhaaln.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_register_page_actions_1op-s-x.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_stats_page_actions_1olf1_a.js +1 -1
- package/.next/server/chunks/ssr/node_modules_0o2aki7._.js +1 -1
- package/.next/server/chunks/ssr/node_modules_1y5ym6h._.js +1 -1
- package/.next/server/chunks/ssr/node_modules_next_1lnqo1a._.js +3 -3
- package/.next/server/chunks/ssr/node_modules_next_dist_077yo5w._.js +1 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_0nkkbfv._.js +2 -2
- package/.next/server/chunks/ssr/node_modules_next_dist_1_c-t1n._.js +4 -4
- package/.next/server/chunks/ssr/node_modules_next_dist_1v8aef8._.js +1 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0bew68i._.js +2 -2
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +1 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +1 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js +1 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +1 -1
- package/.next/server/chunks/ssr/src_1biegcg._.js +1 -1
- package/.next/server/chunks/ssr/src_1gayunq._.js +1 -1
- package/.next/server/chunks/ssr/src_1o363ao._.js +1 -1
- package/.next/server/chunks/ssr/src_app_admin_page_tsx_0ublbd0._.js +1 -1
- package/.next/server/chunks/ssr/src_app_error-items_[id]_page_tsx_04xwwdm._.js +1 -1
- package/.next/server/chunks/ssr/src_app_notebooks_[id]_page_tsx_08njm-5._.js +1 -1
- package/.next/server/chunks/ssr/src_app_notebooks_page_tsx_1p9src5._.js +1 -1
- package/.next/server/chunks/ssr/src_app_page_tsx_1chiuah._.js +1 -1
- package/.next/server/chunks/ssr/src_app_practice_page_tsx_10gnx53._.js +1 -1
- package/.next/server/chunks/ssr/src_app_tags_page_tsx_1h2vkk4._.js +1 -1
- package/.next/server/chunks/ssr/src_components_providers_tsx_09kw-mv._.js +2 -2
- package/.next/server/chunks/ssr/src_lib_date-time_ts_0oyqctn._.js +1 -1
- package/.next/server/edge/chunks/[root-of-the-server]__1osrt2u._.js +1 -1
- package/.next/server/edge/chunks/_1s0wgnu._.js +1 -1
- package/.next/server/edge/chunks/node_modules_0g4gi6f._.js +3 -3
- package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_1iafar9.js +1 -1
- package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_1x1n1fx.js +1 -1
- package/.next/server/instrumentation.js +2 -2
- package/.next/server/middleware-build-manifest.js +8 -8
- package/.next/server/middleware-manifest.json +7 -7
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/{xZpf28Jr6w9NoYOlVaWKI → 678uJSzOSzePaLyv5hUv0}/_clientMiddlewareManifest.js +2 -2
- package/.next/static/chunks/02d-8f2qj7j3j.js +1 -0
- package/.next/static/chunks/02t7qqptint2p.js +1 -0
- package/.next/static/chunks/090a6irxe0c6j.js +1 -0
- package/.next/static/chunks/0bhxyq7e2eqjc.js +5 -0
- package/.next/static/chunks/0if-vqkhyn-zc.js +1 -0
- package/.next/static/chunks/0jf31atbtr1mv.js +1 -0
- package/.next/static/chunks/0te6mr86gdyyi.js +191 -0
- package/.next/static/chunks/0vgthy7v615hq.js +1 -0
- package/.next/static/chunks/1e5n4cprhwujv.js +1 -0
- package/.next/static/chunks/1edfvwc5_eck-.js +31 -0
- package/.next/static/chunks/1f0u19gh5_49z.js +1 -0
- package/.next/static/chunks/1fdj59ys-pend.js +1 -0
- package/.next/static/chunks/1kerqdluzq2l0.js +1 -0
- package/.next/static/chunks/1r4lwlvm7m53v.js +1 -0
- package/.next/static/chunks/1rz1bokv9edzr.js +1 -0
- package/.next/static/chunks/1s-d67d-yroyw.js +1 -0
- package/.next/static/chunks/1tw5_upsy-qj_.js +22 -0
- package/.next/static/chunks/1w1xvldfmcs67.js +6 -0
- package/.next/static/chunks/1zdof8ylzqm8w.js +1 -0
- package/.next/static/chunks/2-k1hjh6ff6y4.js +1 -0
- package/.next/static/chunks/21qpve5q3mjly.js +1 -0
- package/.next/static/chunks/21v32ctwcoxqt.js +1 -0
- package/.next/static/chunks/27-t289uq6_ju.js +3 -0
- package/.next/static/chunks/293-te2b34thz.js +1 -0
- package/.next/static/chunks/2dgleoh5fbs83.js +1 -0
- package/.next/static/chunks/2di_nd6djcxwu.js +1 -0
- package/.next/static/chunks/2mk03owifu2m1.js +33 -0
- package/.next/static/chunks/2qza4p5d9fz_2.js +1 -0
- package/.next/static/chunks/2s4c8fcrdnew4.js +1 -0
- package/.next/static/chunks/2zdqnkem9n6a9.js +1 -0
- package/.next/static/chunks/3-wm04s--suy5.js +1 -0
- package/.next/static/chunks/33t46atd3n2zd.js +1 -0
- package/.next/static/chunks/37yx4gh09tzwc.js +1 -0
- package/.next/static/chunks/3gwb465dhjxo9.js +1 -0
- package/.next/static/chunks/3hkgw-uib19xl.js +1 -0
- package/.next/static/chunks/{130ch9mnvb6mp.css → 3n-yabfsiog4i.css} +1 -1
- package/.next/static/chunks/3umldi5zknsyi.js +1 -0
- package/.next/static/chunks/turbopack-1yjxh4vceobdr.js +1 -0
- package/LICENSE +22 -0
- package/package.json +3 -2
- package/prisma/seed.db +0 -0
- package/public/icons/apple-touch-icon.png +0 -0
- package/public/icons/icon-192.png +0 -0
- package/public/icons/icon-512.png +0 -0
- package/public/icons/icon-maskable-512.png +0 -0
- package/public/offline.html +61 -0
- package/public/sw.js +84 -0
- package/.next/server/chunks/ssr/_12c20v5._.js +0 -3
- package/.next/server/chunks/ssr/_1filpif._.js +0 -3
- package/.next/static/chunks/00pn0o7lymln6.js +0 -1
- package/.next/static/chunks/02521degnqmf0.js +0 -1
- package/.next/static/chunks/0_w084ms_lq25.js +0 -22
- package/.next/static/chunks/0dzfsm6h13fyr.js +0 -1
- package/.next/static/chunks/0ehjiuuxbbhq9.js +0 -1
- package/.next/static/chunks/0iq53qkw5hvrs.js +0 -1
- package/.next/static/chunks/0m81l71kojx8j.js +0 -1
- package/.next/static/chunks/0nckb2-62ooyq.js +0 -1
- package/.next/static/chunks/0snej-v5yglxr.js +0 -1
- package/.next/static/chunks/1-7k9gbbjkcml.js +0 -1
- package/.next/static/chunks/17wdtw8hml2n6.js +0 -191
- package/.next/static/chunks/1cd32rtomdngh.js +0 -1
- package/.next/static/chunks/1io3-cth_2-cd.js +0 -1
- package/.next/static/chunks/1oiuiyv1cv06v.js +0 -31
- package/.next/static/chunks/1t4-pobw0y5cf.js +0 -1
- package/.next/static/chunks/1xg811762s1p1.js +0 -1
- package/.next/static/chunks/1z_5sj1wqi06v.js +0 -1
- package/.next/static/chunks/2a0kgntckcbvf.js +0 -1
- package/.next/static/chunks/2dlme2fdlkms6.js +0 -1
- package/.next/static/chunks/2f37cahijtel1.js +0 -1
- package/.next/static/chunks/2h-exsnhkfnb8.js +0 -1
- package/.next/static/chunks/2pmzqbg-qabof.js +0 -1
- package/.next/static/chunks/2rmhba08h4qqo.js +0 -33
- package/.next/static/chunks/2s07soqug65hc.js +0 -1
- package/.next/static/chunks/2vm3br71ud51j.js +0 -1
- package/.next/static/chunks/2w2uo9jjxt-re.js +0 -1
- package/.next/static/chunks/2yl8a-gxngbuq.js +0 -1
- package/.next/static/chunks/32bl-oqw9oso0.js +0 -1
- package/.next/static/chunks/35cov9g4cgt-v.js +0 -1
- package/.next/static/chunks/3b-g5_r9nto3s.js +0 -6
- package/.next/static/chunks/3g1rm2suowncy.js +0 -3
- package/.next/static/chunks/3helovsg02qr4.js +0 -1
- package/.next/static/chunks/3jta6jrk-jubq.js +0 -1
- package/.next/static/chunks/3yhf6xyypekz6.js +0 -1
- package/.next/static/chunks/3z9gc_02gl8n9.js +0 -1
- package/.next/static/chunks/427wg73nuzpiz.js +0 -5
- package/.next/static/chunks/turbopack-1-0r7_puvz3eq.js +0 -1
- /package/.next/static/{xZpf28Jr6w9NoYOlVaWKI → 678uJSzOSzePaLyv5hUv0}/_buildManifest.js +0 -0
- /package/.next/static/{xZpf28Jr6w9NoYOlVaWKI → 678uJSzOSzePaLyv5hUv0}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[10179,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(75003),e=a.i(50944),f=a.i(50194),g=a.i(74484),h=a.i(29759),i=a.i(86705),j=a.i(91938),k=a.i(96221);let l=(0,a.i(70106).default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);var m=a.i(53722),n=a.i(84362),o=a.i(17545),p=a.i(24669),q=a.i(16201),r=a.i(41710),s=a.i(92e3),t=a.i(5784),u=a.i(67552),v=a.i(77156),w=a.i(39761),x=a.i(99570),y=a.i(51538),z=a.i(91119),A=a.i(86304);function B({data:a,t:c}){let d=[{title:c.admin?.dashboard?.totalUsers||"总用户数",value:a.overview.totalUsers,icon:l,color:"text-blue-500",bgColor:"bg-blue-50 dark:bg-blue-950/30"},{title:c.admin?.dashboard?.totalErrors||"总错题数",value:a.overview.totalErrorItems,icon:m.BookOpen,color:"text-red-500",bgColor:"bg-red-50 dark:bg-red-950/30"},{title:c.admin?.dashboard?.totalPractice||"总练习数",value:a.overview.totalPracticeRecords,icon:n.PenTool,color:"text-green-500",bgColor:"bg-green-50 dark:bg-green-950/30"},{title:c.admin?.dashboard?.totalNotebooks||"总错题本数",value:a.overview.totalSubjects,icon:o.Layers,color:"text-purple-500",bgColor:"bg-purple-50 dark:bg-purple-950/30"}];return(0,b.jsx)("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:d.map(a=>(0,b.jsx)(z.Card,{className:"border-0 shadow-sm",children:(0,b.jsxs)(z.CardContent,{className:"p-4 flex items-center gap-4",children:[(0,b.jsx)("div",{className:`p-3 rounded-xl ${a.bgColor}`,children:(0,b.jsx)(a.icon,{className:`h-6 w-6 ${a.color}`})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:a.title}),(0,b.jsx)("p",{className:"text-2xl font-bold",children:a.value})]})]})},a.title))})}function C({data:a,t:c}){let d=Math.max(...a.dailyTrend.map(a=>a.count),1);return(0,b.jsxs)(z.Card,{className:"border-0 shadow-sm",children:[(0,b.jsx)(z.CardHeader,{className:"pb-2",children:(0,b.jsxs)(z.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,b.jsx)(p.TrendingUp,{className:"h-4 w-4 text-orange-500"}),c.admin?.dashboard?.recentTrend||"最近 7 天录入趋势"]})}),(0,b.jsx)(z.CardContent,{children:(0,b.jsx)("div",{className:"flex items-end gap-2 h-40",children:a.dailyTrend.map(a=>{let c=d>0?a.count/d*100:0,e=a.date.slice(5).replace("-","/");return(0,b.jsxs)("div",{className:"flex-1 flex flex-col items-center gap-1",children:[(0,b.jsx)("span",{className:"text-xs font-medium",children:a.count>0?a.count:""}),(0,b.jsx)("div",{className:"w-full relative",style:{height:"100px"},children:(0,b.jsx)("div",{className:"absolute bottom-0 w-full bg-gradient-to-t from-orange-500 to-orange-400 rounded-t-md transition-all duration-500 min-h-[4px]",style:{height:`${Math.max(c,4)}%`}})}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:e})]},a.date)})})})]})}function D({data:a,t:c}){let d=a.subjectDistribution.reduce((a,b)=>a+b.count,0),e=["bg-blue-500","bg-green-500","bg-orange-500","bg-purple-500","bg-red-500","bg-cyan-500","bg-yellow-500","bg-pink-500","bg-indigo-500"];return(0,b.jsxs)(z.Card,{className:"border-0 shadow-sm",children:[(0,b.jsx)(z.CardHeader,{className:"pb-2",children:(0,b.jsxs)(z.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,b.jsx)(w.BarChart3,{className:"h-4 w-4 text-blue-500"}),c.admin?.dashboard?.subjectDistribution||"学科错题分布"]})}),(0,b.jsx)(z.CardContent,{children:0===d?(0,b.jsx)("p",{className:"text-sm text-muted-foreground py-8 text-center",children:c.admin?.dashboard?.noData||"暂无数据"}):(0,b.jsx)("div",{className:"space-y-3",children:a.subjectDistribution.map((a,c)=>{let f=d>0?Math.round(a.count/d*100):0;return(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,b.jsx)("span",{className:"font-medium",children:a.name}),(0,b.jsxs)("span",{className:"text-muted-foreground",children:[a.count," (",f,"%)"]})]}),(0,b.jsx)("div",{className:"w-full bg-muted rounded-full h-2.5",children:(0,b.jsx)("div",{className:`h-2.5 rounded-full ${e[c%e.length]} transition-all duration-500`,style:{width:`${f}%`}})})]},a.name)})})})]})}function E({data:a,t:c}){let d=a.masteryDistribution.new+a.masteryDistribution.reviewing+a.masteryDistribution.mastered,e=[{key:"new",label:c.admin?.dashboard?.masteryNew||"未掌握",count:a.masteryDistribution.new,icon:s.AlertCircle,color:"text-red-500",bg:"bg-red-500"},{key:"reviewing",label:c.admin?.dashboard?.masteryReviewing||"复习中",count:a.masteryDistribution.reviewing,icon:r.Clock,color:"text-yellow-500",bg:"bg-yellow-500"},{key:"mastered",label:c.admin?.dashboard?.masteryMastered||"已掌握",count:a.masteryDistribution.mastered,icon:q.CheckCircle,color:"text-green-500",bg:"bg-green-500"}];return(0,b.jsxs)(z.Card,{className:"border-0 shadow-sm",children:[(0,b.jsx)(z.CardHeader,{className:"pb-2",children:(0,b.jsxs)(z.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,b.jsx)(q.CheckCircle,{className:"h-4 w-4 text-green-500"}),c.admin?.dashboard?.masteryDistribution||"掌握度分布"]})}),(0,b.jsx)(z.CardContent,{children:0===d?(0,b.jsx)("p",{className:"text-sm text-muted-foreground py-8 text-center",children:c.admin?.dashboard?.noData||"暂无数据"}):(0,b.jsx)("div",{className:"space-y-3",children:e.map(a=>{let c=d>0?Math.round(a.count/d*100):0;return(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("div",{className:"flex justify-between text-sm items-center",children:[(0,b.jsxs)("span",{className:"flex items-center gap-1.5 font-medium",children:[(0,b.jsx)(a.icon,{className:`h-4 w-4 ${a.color}`}),a.label]}),(0,b.jsxs)("span",{className:"text-muted-foreground",children:[a.count," (",c,"%)"]})]}),(0,b.jsx)("div",{className:"w-full bg-muted rounded-full h-2.5",children:(0,b.jsx)("div",{className:`h-2.5 rounded-full ${a.bg} transition-all duration-500`,style:{width:`${c}%`}})})]},a.key)})})})]})}function F({users:a,onViewDetail:d}){let{timeZone:e}=(0,h.useTimeZone)(),{t:g}=(0,f.useLanguage)(),[j,k]=(0,c.useState)(null);return(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)("div",{className:"hidden md:block border rounded-lg overflow-hidden",children:(0,b.jsxs)("table",{className:"w-full text-sm",children:[(0,b.jsx)("thead",{className:"bg-muted/50",children:(0,b.jsxs)("tr",{children:[(0,b.jsx)("th",{className:"text-left p-3 font-medium",children:g.admin?.dashboard?.userName||"用户名"}),(0,b.jsx)("th",{className:"text-left p-3 font-medium",children:g.admin?.dashboard?.email||"邮箱"}),(0,b.jsx)("th",{className:"text-center p-3 font-medium",children:g.admin?.dashboard?.notebooks||"错题本"}),(0,b.jsx)("th",{className:"text-center p-3 font-medium",children:g.admin?.dashboard?.errors||"错题"}),(0,b.jsx)("th",{className:"text-center p-3 font-medium",children:g.admin?.dashboard?.practice||"练习"}),(0,b.jsx)("th",{className:"text-center p-3 font-medium",children:g.admin?.dashboard?.status||"状态"}),(0,b.jsx)("th",{className:"text-center p-3 font-medium",children:g.admin?.dashboard?.registeredAt||"注册时间"}),(0,b.jsx)("th",{className:"text-center p-3 font-medium",children:g.admin?.dashboard?.actions||"操作"})]})}),(0,b.jsx)("tbody",{children:a.map(a=>(0,b.jsxs)("tr",{className:"border-t hover:bg-muted/30 transition-colors",children:[(0,b.jsx)("td",{className:"p-3",children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"font-medium",children:a.name||"N/A"}),"admin"===a.role&&(0,b.jsx)(A.Badge,{variant:"default",className:"text-xs",children:g.admin?.admin||"管理员"})]})}),(0,b.jsx)("td",{className:"p-3 text-muted-foreground",children:a.email}),(0,b.jsx)("td",{className:"p-3 text-center",children:a.notebookCount}),(0,b.jsx)("td",{className:"p-3 text-center font-medium",children:a.errorCount}),(0,b.jsx)("td",{className:"p-3 text-center",children:a.practiceCount}),(0,b.jsx)("td",{className:"p-3 text-center",children:(0,b.jsx)(A.Badge,{variant:a.isActive?"default":"destructive",className:"text-xs",children:a.isActive?g.admin?.active||"启用":g.admin?.disabled||"禁用"})}),(0,b.jsx)("td",{className:"p-3 text-center text-muted-foreground text-xs",children:(0,i.formatDateTime)(a.createdAt,"yyyy-MM-dd",e)}),(0,b.jsx)("td",{className:"p-3 text-center",children:(0,b.jsx)(x.Button,{variant:"ghost",size:"sm",onClick:()=>d(a.id),title:g.admin?.dashboard?.viewDetail||"查看详情",children:(0,b.jsx)(v.Eye,{className:"h-4 w-4"})})})]},a.id))})]})}),(0,b.jsx)("div",{className:"md:hidden space-y-3",children:a.map(a=>(0,b.jsx)(z.Card,{className:"border-0 shadow-sm",children:(0,b.jsxs)(z.CardContent,{className:"p-4",children:[(0,b.jsxs)("div",{className:"flex justify-between items-start cursor-pointer",onClick:()=>k(j===a.id?null:a.id),children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"font-medium",children:a.name||"N/A"}),"admin"===a.role&&(0,b.jsx)(A.Badge,{variant:"default",className:"text-xs",children:g.admin?.admin||"管理员"})]}),(0,b.jsx)("div",{className:"text-sm text-muted-foreground",children:a.email})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(A.Badge,{variant:a.isActive?"default":"destructive",className:"text-xs",children:a.isActive?g.admin?.active||"启用":g.admin?.disabled||"禁用"}),j===a.id?(0,b.jsx)(u.ChevronUp,{className:"h-4 w-4 text-muted-foreground"}):(0,b.jsx)(t.ChevronDown,{className:"h-4 w-4 text-muted-foreground"})]})]}),j===a.id&&(0,b.jsxs)("div",{className:"mt-3 pt-3 border-t grid grid-cols-3 gap-3 text-center",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-lg font-bold",children:a.notebookCount}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:g.admin?.dashboard?.notebooks||"错题本"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-lg font-bold text-red-500",children:a.errorCount}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:g.admin?.dashboard?.errors||"错题"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-lg font-bold text-green-500",children:a.practiceCount}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:g.admin?.dashboard?.practice||"练习"})]})]}),j===a.id&&(0,b.jsxs)("div",{className:"mt-3 pt-3 border-t flex justify-between items-center",children:[(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:(0,i.formatDateTime)(a.createdAt,"yyyy-MM-dd",e)}),(0,b.jsxs)(x.Button,{variant:"ghost",size:"sm",onClick:()=>d(a.id),children:[(0,b.jsx)(v.Eye,{className:"h-4 w-4 mr-1"}),g.admin?.dashboard?.viewDetail||"查看详情"]})]})]})},a.id))})]})}a.s(["default",0,function(){let{data:a,status:h}=(0,d.useSession)(),i=(0,e.useRouter)(),{t:m}=(0,f.useLanguage)(),[n,o]=(0,c.useState)(null);(0,g.usePageTitle)(m.admin.dashboard.title);let[p,q]=(0,c.useState)(!0),r=(0,c.useCallback)(async()=>{q(!0);try{let a=await j.apiClient.get("/api/admin/dashboard");o(a)}catch(a){console.error("Failed to fetch dashboard data",a)}finally{q(!1)}},[]);return((0,c.useEffect)(()=>{if("loading"!==h){if(!a?.user||"admin"!==a.user.role)return void i.push("/");r()}},[a,h,i,r]),"loading"===h||p)?(0,b.jsx)("div",{className:"flex items-center justify-center min-h-[60vh]",children:(0,b.jsx)(k.Loader2,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):n?(0,b.jsxs)("div",{className:"max-w-6xl mx-auto space-y-6 px-4 py-6 md:px-8 md:py-8",children:[(0,b.jsx)(y.PageHeader,{title:m.admin?.dashboard?.title||"管理员仪表盘",description:m.admin?.dashboard?.subtitle||"查看全站用户和错题统计"}),(0,b.jsx)(B,{data:n,t:m}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,b.jsx)(C,{data:n,t:m}),(0,b.jsx)(E,{data:n,t:m})]}),(0,b.jsx)(D,{data:n,t:m}),(0,b.jsxs)(z.Card,{className:"border-0 shadow-sm",children:[(0,b.jsxs)(z.CardHeader,{className:"pb-2",children:[(0,b.jsxs)(z.CardTitle,{className:"text-lg flex items-center gap-2",children:[(0,b.jsx)(l,{className:"h-5 w-5 text-blue-500"}),m.admin?.dashboard?.userList||"用户列表"]}),(0,b.jsx)(z.CardDescription,{children:m.admin?.dashboard?.userListDesc||"所有注册用户的错题录入情况"})]}),(0,b.jsx)(z.CardContent,{children:(0,b.jsx)(F,{users:n.userStats,onViewDetail:a=>i.push(`/admin/user/${a}`)})})]})]}):(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-[60vh] gap-4",children:[(0,b.jsx)("p",{className:"text-muted-foreground",children:m.common?.error||"加载失败"}),(0,b.jsx)(x.Button,{onClick:r,children:m.admin?.dashboard?.retry||"重试"})]})}],10179)}];
|
|
1
|
+
module.exports=[510179,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(875003),e=a.i(50944),f=a.i(550194),g=a.i(557999),h=a.i(529759),i=a.i(986705),j=a.i(291938),k=a.i(596221);let l=(0,a.i(170106).default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);var m=a.i(953722),n=a.i(584362),o=a.i(717545),p=a.i(724669),q=a.i(816201),r=a.i(641710),s=a.i(292e3),t=a.i(405784),u=a.i(767552),v=a.i(177156),w=a.i(839761),x=a.i(699570),y=a.i(251538),z=a.i(591119),A=a.i(786304);function B({data:a,t:c}){let d=[{title:c.admin?.dashboard?.totalUsers||"总用户数",value:a.overview.totalUsers,icon:l,color:"text-blue-500",bgColor:"bg-blue-50 dark:bg-blue-950/30"},{title:c.admin?.dashboard?.totalErrors||"总错题数",value:a.overview.totalErrorItems,icon:m.BookOpen,color:"text-red-500",bgColor:"bg-red-50 dark:bg-red-950/30"},{title:c.admin?.dashboard?.totalPractice||"总练习数",value:a.overview.totalPracticeRecords,icon:n.PenTool,color:"text-green-500",bgColor:"bg-green-50 dark:bg-green-950/30"},{title:c.admin?.dashboard?.totalNotebooks||"总错题本数",value:a.overview.totalSubjects,icon:o.Layers,color:"text-purple-500",bgColor:"bg-purple-50 dark:bg-purple-950/30"}];return(0,b.jsx)("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:d.map(a=>(0,b.jsx)(z.Card,{className:"border-0 shadow-sm",children:(0,b.jsxs)(z.CardContent,{className:"p-4 flex items-center gap-4",children:[(0,b.jsx)("div",{className:`p-3 rounded-xl ${a.bgColor}`,children:(0,b.jsx)(a.icon,{className:`h-6 w-6 ${a.color}`})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:a.title}),(0,b.jsx)("p",{className:"text-2xl font-bold",children:a.value})]})]})},a.title))})}function C({data:a,t:c}){let d=Math.max(...a.dailyTrend.map(a=>a.count),1);return(0,b.jsxs)(z.Card,{className:"border-0 shadow-sm",children:[(0,b.jsx)(z.CardHeader,{className:"pb-2",children:(0,b.jsxs)(z.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,b.jsx)(p.TrendingUp,{className:"h-4 w-4 text-orange-500"}),c.admin?.dashboard?.recentTrend||"最近 7 天录入趋势"]})}),(0,b.jsx)(z.CardContent,{children:(0,b.jsx)("div",{className:"flex items-end gap-2 h-40",children:a.dailyTrend.map(a=>{let c=d>0?a.count/d*100:0,e=a.date.slice(5).replace("-","/");return(0,b.jsxs)("div",{className:"flex-1 flex flex-col items-center gap-1",children:[(0,b.jsx)("span",{className:"text-xs font-medium",children:a.count>0?a.count:""}),(0,b.jsx)("div",{className:"w-full relative",style:{height:"100px"},children:(0,b.jsx)("div",{className:"absolute bottom-0 w-full bg-gradient-to-t from-orange-500 to-orange-400 rounded-t-md transition-all duration-500 min-h-[4px]",style:{height:`${Math.max(c,4)}%`}})}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:e})]},a.date)})})})]})}function D({data:a,t:c}){let d=a.subjectDistribution.reduce((a,b)=>a+b.count,0),e=["bg-blue-500","bg-green-500","bg-orange-500","bg-purple-500","bg-red-500","bg-cyan-500","bg-yellow-500","bg-pink-500","bg-indigo-500"];return(0,b.jsxs)(z.Card,{className:"border-0 shadow-sm",children:[(0,b.jsx)(z.CardHeader,{className:"pb-2",children:(0,b.jsxs)(z.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,b.jsx)(w.BarChart3,{className:"h-4 w-4 text-blue-500"}),c.admin?.dashboard?.subjectDistribution||"学科错题分布"]})}),(0,b.jsx)(z.CardContent,{children:0===d?(0,b.jsx)("p",{className:"text-sm text-muted-foreground py-8 text-center",children:c.admin?.dashboard?.noData||"暂无数据"}):(0,b.jsx)("div",{className:"space-y-3",children:a.subjectDistribution.map((a,c)=>{let f=d>0?Math.round(a.count/d*100):0;return(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,b.jsx)("span",{className:"font-medium",children:a.name}),(0,b.jsxs)("span",{className:"text-muted-foreground",children:[a.count," (",f,"%)"]})]}),(0,b.jsx)("div",{className:"w-full bg-muted rounded-full h-2.5",children:(0,b.jsx)("div",{className:`h-2.5 rounded-full ${e[c%e.length]} transition-all duration-500`,style:{width:`${f}%`}})})]},a.name)})})})]})}function E({data:a,t:c}){let d=a.masteryDistribution.new+a.masteryDistribution.reviewing+a.masteryDistribution.mastered,e=[{key:"new",label:c.admin?.dashboard?.masteryNew||"未掌握",count:a.masteryDistribution.new,icon:s.AlertCircle,color:"text-red-500",bg:"bg-red-500"},{key:"reviewing",label:c.admin?.dashboard?.masteryReviewing||"复习中",count:a.masteryDistribution.reviewing,icon:r.Clock,color:"text-yellow-500",bg:"bg-yellow-500"},{key:"mastered",label:c.admin?.dashboard?.masteryMastered||"已掌握",count:a.masteryDistribution.mastered,icon:q.CheckCircle,color:"text-green-500",bg:"bg-green-500"}];return(0,b.jsxs)(z.Card,{className:"border-0 shadow-sm",children:[(0,b.jsx)(z.CardHeader,{className:"pb-2",children:(0,b.jsxs)(z.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,b.jsx)(q.CheckCircle,{className:"h-4 w-4 text-green-500"}),c.admin?.dashboard?.masteryDistribution||"掌握度分布"]})}),(0,b.jsx)(z.CardContent,{children:0===d?(0,b.jsx)("p",{className:"text-sm text-muted-foreground py-8 text-center",children:c.admin?.dashboard?.noData||"暂无数据"}):(0,b.jsx)("div",{className:"space-y-3",children:e.map(a=>{let c=d>0?Math.round(a.count/d*100):0;return(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("div",{className:"flex justify-between text-sm items-center",children:[(0,b.jsxs)("span",{className:"flex items-center gap-1.5 font-medium",children:[(0,b.jsx)(a.icon,{className:`h-4 w-4 ${a.color}`}),a.label]}),(0,b.jsxs)("span",{className:"text-muted-foreground",children:[a.count," (",c,"%)"]})]}),(0,b.jsx)("div",{className:"w-full bg-muted rounded-full h-2.5",children:(0,b.jsx)("div",{className:`h-2.5 rounded-full ${a.bg} transition-all duration-500`,style:{width:`${c}%`}})})]},a.key)})})})]})}function F({users:a,onViewDetail:d}){let{timeZone:e}=(0,h.useTimeZone)(),{t:g}=(0,f.useLanguage)(),[j,k]=(0,c.useState)(null);return(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)("div",{className:"hidden md:block border rounded-lg overflow-hidden",children:(0,b.jsxs)("table",{className:"w-full text-sm",children:[(0,b.jsx)("thead",{className:"bg-muted/50",children:(0,b.jsxs)("tr",{children:[(0,b.jsx)("th",{className:"text-left p-3 font-medium",children:g.admin?.dashboard?.userName||"用户名"}),(0,b.jsx)("th",{className:"text-left p-3 font-medium",children:g.admin?.dashboard?.email||"邮箱"}),(0,b.jsx)("th",{className:"text-center p-3 font-medium",children:g.admin?.dashboard?.notebooks||"错题本"}),(0,b.jsx)("th",{className:"text-center p-3 font-medium",children:g.admin?.dashboard?.errors||"错题"}),(0,b.jsx)("th",{className:"text-center p-3 font-medium",children:g.admin?.dashboard?.practice||"练习"}),(0,b.jsx)("th",{className:"text-center p-3 font-medium",children:g.admin?.dashboard?.status||"状态"}),(0,b.jsx)("th",{className:"text-center p-3 font-medium",children:g.admin?.dashboard?.registeredAt||"注册时间"}),(0,b.jsx)("th",{className:"text-center p-3 font-medium",children:g.admin?.dashboard?.actions||"操作"})]})}),(0,b.jsx)("tbody",{children:a.map(a=>(0,b.jsxs)("tr",{className:"border-t hover:bg-muted/30 transition-colors",children:[(0,b.jsx)("td",{className:"p-3",children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"font-medium",children:a.name||"N/A"}),"admin"===a.role&&(0,b.jsx)(A.Badge,{variant:"default",className:"text-xs",children:g.admin?.admin||"管理员"})]})}),(0,b.jsx)("td",{className:"p-3 text-muted-foreground",children:a.email}),(0,b.jsx)("td",{className:"p-3 text-center",children:a.notebookCount}),(0,b.jsx)("td",{className:"p-3 text-center font-medium",children:a.errorCount}),(0,b.jsx)("td",{className:"p-3 text-center",children:a.practiceCount}),(0,b.jsx)("td",{className:"p-3 text-center",children:(0,b.jsx)(A.Badge,{variant:a.isActive?"default":"destructive",className:"text-xs",children:a.isActive?g.admin?.active||"启用":g.admin?.disabled||"禁用"})}),(0,b.jsx)("td",{className:"p-3 text-center text-muted-foreground text-xs",children:(0,i.formatDateTime)(a.createdAt,"yyyy-MM-dd",e)}),(0,b.jsx)("td",{className:"p-3 text-center",children:(0,b.jsx)(x.Button,{variant:"ghost",size:"sm",onClick:()=>d(a.id),title:g.admin?.dashboard?.viewDetail||"查看详情",children:(0,b.jsx)(v.Eye,{className:"h-4 w-4"})})})]},a.id))})]})}),(0,b.jsx)("div",{className:"md:hidden space-y-3",children:a.map(a=>(0,b.jsx)(z.Card,{className:"border-0 shadow-sm",children:(0,b.jsxs)(z.CardContent,{className:"p-4",children:[(0,b.jsxs)("div",{className:"flex justify-between items-start cursor-pointer",onClick:()=>k(j===a.id?null:a.id),children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"font-medium",children:a.name||"N/A"}),"admin"===a.role&&(0,b.jsx)(A.Badge,{variant:"default",className:"text-xs",children:g.admin?.admin||"管理员"})]}),(0,b.jsx)("div",{className:"text-sm text-muted-foreground",children:a.email})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(A.Badge,{variant:a.isActive?"default":"destructive",className:"text-xs",children:a.isActive?g.admin?.active||"启用":g.admin?.disabled||"禁用"}),j===a.id?(0,b.jsx)(u.ChevronUp,{className:"h-4 w-4 text-muted-foreground"}):(0,b.jsx)(t.ChevronDown,{className:"h-4 w-4 text-muted-foreground"})]})]}),j===a.id&&(0,b.jsxs)("div",{className:"mt-3 pt-3 border-t grid grid-cols-3 gap-3 text-center",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-lg font-bold",children:a.notebookCount}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:g.admin?.dashboard?.notebooks||"错题本"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-lg font-bold text-red-500",children:a.errorCount}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:g.admin?.dashboard?.errors||"错题"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-lg font-bold text-green-500",children:a.practiceCount}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:g.admin?.dashboard?.practice||"练习"})]})]}),j===a.id&&(0,b.jsxs)("div",{className:"mt-3 pt-3 border-t flex justify-between items-center",children:[(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:(0,i.formatDateTime)(a.createdAt,"yyyy-MM-dd",e)}),(0,b.jsxs)(x.Button,{variant:"ghost",size:"sm",onClick:()=>d(a.id),children:[(0,b.jsx)(v.Eye,{className:"h-4 w-4 mr-1"}),g.admin?.dashboard?.viewDetail||"查看详情"]})]})]})},a.id))})]})}a.s(["default",0,function(){let{data:a,status:h}=(0,d.useSession)(),i=(0,e.useRouter)(),{t:m}=(0,f.useLanguage)(),[n,o]=(0,c.useState)(null);(0,g.usePageTitle)(m.admin.dashboard.title);let[p,q]=(0,c.useState)(!0),r=(0,c.useCallback)(async()=>{q(!0);try{let a=await j.apiClient.get("/api/admin/dashboard");o(a)}catch(a){console.error("Failed to fetch dashboard data",a)}finally{q(!1)}},[]);return((0,c.useEffect)(()=>{if("loading"!==h){if(!a?.user||"admin"!==a.user.role)return void i.push("/");r()}},[a,h,i,r]),"loading"===h||p)?(0,b.jsx)("div",{className:"flex items-center justify-center min-h-[60vh]",children:(0,b.jsx)(k.Loader2,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):n?(0,b.jsxs)("div",{className:"max-w-6xl mx-auto space-y-6 px-4 py-6 md:px-8 md:py-8",children:[(0,b.jsx)(y.PageHeader,{title:m.admin?.dashboard?.title||"管理员仪表盘",description:m.admin?.dashboard?.subtitle||"查看全站用户和错题统计"}),(0,b.jsx)(B,{data:n,t:m}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,b.jsx)(C,{data:n,t:m}),(0,b.jsx)(E,{data:n,t:m})]}),(0,b.jsx)(D,{data:n,t:m}),(0,b.jsxs)(z.Card,{className:"border-0 shadow-sm",children:[(0,b.jsxs)(z.CardHeader,{className:"pb-2",children:[(0,b.jsxs)(z.CardTitle,{className:"text-lg flex items-center gap-2",children:[(0,b.jsx)(l,{className:"h-5 w-5 text-blue-500"}),m.admin?.dashboard?.userList||"用户列表"]}),(0,b.jsx)(z.CardDescription,{children:m.admin?.dashboard?.userListDesc||"所有注册用户的错题录入情况"})]}),(0,b.jsx)(z.CardContent,{children:(0,b.jsx)(F,{users:n.userStats,onViewDetail:a=>i.push(`/admin/user/${a}`)})})]})]}):(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-[60vh] gap-4",children:[(0,b.jsx)("p",{className:"text-muted-foreground",children:m.common?.error||"加载失败"}),(0,b.jsx)(x.Button,{onClick:r,children:m.admin?.dashboard?.retry||"重试"})]})}],510179)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_app_admin_page_tsx_0ublbd0._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[73773,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(99570),f=a.i(79834),g=a.i(6376),h=a.i(91119),i=a.i(86304),j=a.i(210),k=a.i(16201),l=a.i(62722),m=a.i(69520),n=a.i(81560),o=a.i(70106);let p=(0,o.default)("square-pen",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]]);var q=a.i(14548),r=a.i(33508),s=a.i(72807),t=a.i(96221),u=a.i(41379);let v=(0,o.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]),w=(0,o.default)("file-question-mark",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}]]);var x=a.i(29246),y=a.i(38246),z=a.i(50194),A=a.i(74484),B=a.i(93907),C=a.i(60081),D=a.i(99814),E=a.i(66718),F=a.i(80701),G=a.i(91938),H=a.i(57292),I=a.i(92883),J=a.i(50659),K=a.i(10395);let L=(0,o.default)("clapperboard",[["path",{d:"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3Z",key:"1tn4o7"}],["path",{d:"m6.2 5.3 3.1 3.9",key:"iuk76l"}],["path",{d:"m12.4 3.4 3.1 4",key:"6hsd6n"}],["path",{d:"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z",key:"ltgou9"}]]),M=(0,o.default)("maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]),N=(0,o.default)("minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]),O=(0,o.default)("pause",[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]]),P=(0,o.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);var Q=a.i(87654);let R=/<(?:animate|animateTransform|animateMotion|set)\b[^>]*>/gi;function S(a,b){let c=a.match(RegExp(`\\s${b}\\s*=\\s*("([^"]*)"|'([^']*)')`,"i"));return c?(c[2]??c[3]??"").trim():null}function T(a){if(!a)return null;let b=a.trim(),c=b.match(/^(?:(\d+):)?(\d+):(\d+(?:\.\d+)?)$/);if(c)return 3600*Number(c[1]??0)+60*Number(c[2])+Number(c[3]);let d=b.match(/^(\d+(?:\.\d+)?)(h|min|s|ms)?$/);if(!d)return null;let e={h:3600,min:60,s:1,ms:.001}[d[2]??"s"]??1;return Number(d[1])*e}var U=a.i(68114);function V(a){let b=Math.max(0,Math.floor(a));return`${Math.floor(b/60)}:${String(b%60).padStart(2,"0")}`}function W({svg:a}){let{t:d}=(0,z.useLanguage)(),f=(0,c.useRef)(null),g=(0,c.useRef)(null),h=(0,c.useRef)(null),[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(0),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(!1),q=m||o,r=(0,c.useMemo)(()=>(function(a){let b=0;for(let c of a.match(R)||[]){let a=S(c,"begin"),d=null===a?0:T(a.split(";")[0]);if(null===d)continue;let e=S(c,"repeatCount");if("indefinite"!==e&&"indefinite"!==S(c,"repeatDur"))b=Math.max(b,d+(T(S(c,"dur"))??0)*(e&&Number.isFinite(Number(e))?Number(e):1))}return b})(a),[a]),s=(0,c.useMemo)(()=>(function(a){let b=a.match(/<svg\b[^>]*>/i)?.[0]??"",c=S(b,"viewBox")?.split(/[\s,]+/).map(Number);if(c?.length===4&&c[2]>0&&c[3]>0)return c[2]/c[3];let d=parseFloat(S(b,"width")??""),e=parseFloat(S(b,"height")??"");return d>0&&e>0?d/e:1.6})(a),[a]),t=(0,c.useMemo)(()=>`<!doctype html><html><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'unsafe-inline'; img-src data:"><style>html,body{margin:0;height:100%;background:#fff;overflow:hidden}svg{display:block;width:100%;height:100%}</style></head><body>${a}</body></html>`,[a]),u=(0,c.useCallback)(()=>{let a=g.current?.contentDocument;return"function"==typeof a?.getAnimations?a.getAnimations():[]},[]),v=(0,c.useCallback)(()=>{h.current?.pauseAnimations(),u().forEach(a=>a.pause()),j(!1)},[u]),w=(0,c.useCallback)(a=>{h.current?.setCurrentTime(a),u().forEach(b=>{b.currentTime=1e3*a}),l(a)},[u]),x=(0,c.useCallback)(()=>{let a=h.current;a&&(r>0&&a.getCurrentTime()>=r&&w(0),a.unpauseAnimations(),u().forEach(a=>a.play()),j(!0))},[u,r,w]),y=async()=>{if(o)return void p(!1);if(document.fullscreenElement)return void await document.exitFullscreen().catch(()=>void 0);let a=f.current;if(a&&"function"==typeof a.requestFullscreen)try{await a.requestFullscreen();return}catch{}p(!0)};return(0,c.useEffect)(()=>{let a=()=>n(document.fullscreenElement===f.current);return document.addEventListener("fullscreenchange",a),()=>document.removeEventListener("fullscreenchange",a)},[]),(0,c.useEffect)(()=>{if(!o)return;let a=a=>{"Escape"===a.key&&p(!1)},b=document.body.style.overflow;return document.body.style.overflow="hidden",document.addEventListener("keydown",a),()=>{document.body.style.overflow=b,document.removeEventListener("keydown",a)}},[o]),(0,c.useEffect)(()=>{if(!i)return;let a=0,b=()=>{let c=h.current?.getCurrentTime()??0;if(r>0&&c>=r){h.current?.setCurrentTime(r),v(),l(r);return}l(c),a=requestAnimationFrame(b)};return a=requestAnimationFrame(b),()=>cancelAnimationFrame(a)},[i,r,v]),(0,b.jsxs)("div",{ref:f,className:(0,U.cn)("space-y-2",q&&"flex flex-col items-center justify-center bg-black p-4",o&&"fixed inset-0 z-50"),children:[(0,b.jsx)("iframe",{ref:g,srcDoc:t,sandbox:"allow-same-origin",title:d.svgAnimation.alt,onLoad:()=>{h.current=g.current?.contentDocument?.querySelector("svg")??null,l(0),j(!!h.current)},className:(0,U.cn)("mx-auto block rounded border bg-white",!q&&"w-full max-w-3xl"),style:q?{aspectRatio:s,width:`min(100%, calc((100dvh - 96px) * ${s}))`}:{aspectRatio:s}}),(0,b.jsxs)("div",{className:(0,U.cn)("mx-auto flex w-full items-center gap-2",q?"max-w-5xl text-white":"max-w-3xl"),children:[(0,b.jsx)(e.Button,{variant:"outline",size:"sm",className:"h-8 w-8 shrink-0 p-0 text-foreground",onClick:i?v:x,"aria-label":i?d.svgAnimation.pause:d.svgAnimation.play,title:i?d.svgAnimation.pause:d.svgAnimation.play,children:i?(0,b.jsx)(O,{className:"h-4 w-4"}):(0,b.jsx)(P,{className:"h-4 w-4"})}),(0,b.jsx)(e.Button,{variant:"ghost",size:"sm",className:(0,U.cn)("h-8 w-8 shrink-0 p-0",q&&"text-white hover:bg-white/20 hover:text-white"),onClick:()=>{w(0),x()},"aria-label":d.svgAnimation.replay,title:d.svgAnimation.replay,children:(0,b.jsx)(Q.RotateCcw,{className:"h-4 w-4"})}),r>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("input",{type:"range",min:0,max:r,step:.1,value:Math.min(k,r),onChange:a=>w(Number(a.target.value)),"aria-label":d.svgAnimation.progress,className:"h-2 min-w-0 flex-1 cursor-pointer accent-primary"}),(0,b.jsxs)("span",{className:(0,U.cn)("shrink-0 text-xs tabular-nums",q?"text-white/80":"text-muted-foreground"),children:[V(k)," / ",V(r)]})]}),(0,b.jsx)(e.Button,{variant:"ghost",size:"sm",className:(0,U.cn)("ml-auto h-8 w-8 shrink-0 p-0",q&&"text-white hover:bg-white/20 hover:text-white"),onClick:y,"aria-label":q?d.svgAnimation.exitFullscreen:d.svgAnimation.fullscreen,title:q?d.svgAnimation.exitFullscreen:d.svgAnimation.fullscreen,children:q?(0,b.jsx)(N,{className:"h-4 w-4"}):(0,b.jsx)(M,{className:"h-4 w-4"})})]})]})}var X=a.i(30534),Y=a.i(10302);function Z({errorItemId:a,svgAnimation:d,hasOtherLanguage:f,onChange:g}){let{t:h,language:i}=(0,z.useLanguage)(),[j,k]=(0,c.useState)(!1),[l,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(null),r=async()=>{k(!0),q(null);try{let b=await G.apiClient.post(`/api/error-items/${a}/svg-animation`,{language:i},{timeout:6e5});g(i,b.svgAnimation)}catch(c){let a=c?.data?.message||"",b=h.errors[a];X.frontendLogger.error("[SvgAnimation]","Failed to generate SVG animation",{code:a}),q("NO_QUESTION_TEXT"===a?h.svgAnimation.noQuestionText:"NO_VALID_ANIMATION"===a?h.svgAnimation.invalid:"string"==typeof b?b:h.svgAnimation.failed)}finally{k(!1)}},s=async()=>{if(await (0,Y.confirmDialog)(h.svgAnimation.confirmDelete,{destructive:!0})){o(!0);try{await G.apiClient.delete(`/api/error-items/${a}/svg-animation?language=${i}`),g(i,null),q(null)}catch(a){X.frontendLogger.error("[SvgAnimation]","Failed to delete SVG animation",{error:a instanceof Error?a.message:String(a)}),Y.toast.error(h.svgAnimation.deleteFailed)}finally{o(!1)}}};if(!d)return(0,b.jsxs)("div",{className:"rounded-lg border border-dashed p-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(L,{className:"h-4 w-4"}),(0,b.jsx)("span",{children:h.svgAnimation.title})]}),(0,b.jsxs)(e.Button,{variant:"outline",size:"sm",onClick:r,disabled:j,children:[j?(0,b.jsx)(t.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,b.jsx)(L,{className:"mr-2 h-4 w-4"}),j?h.svgAnimation.generating:h.svgAnimation.generate]})]}),p&&(0,b.jsx)("p",{className:"text-xs text-destructive mt-2",children:p}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-2",children:f?h.svgAnimation.otherLanguageAvailable:h.svgAnimation.hint})]});let u=j||l;return(0,b.jsxs)("div",{className:"rounded-lg border bg-card",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2 px-3 py-2 border-b bg-muted/30",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:h.svgAnimation.title}),u&&(0,b.jsx)(t.Loader2,{className:"h-3 w-3 animate-spin text-muted-foreground"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 text-xs gap-1",onClick:r,disabled:u,children:[j?(0,b.jsx)(t.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,b.jsx)(m.RefreshCw,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:j?h.svgAnimation.generating:h.svgAnimation.regenerate})]}),(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 text-xs gap-1 text-destructive hover:text-destructive",onClick:s,disabled:u,children:[(0,b.jsx)(n.Trash2,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:h.svgAnimation.delete})]})]})]}),p&&(0,b.jsx)("p",{className:"px-3 pt-2 text-xs text-destructive",children:p}),(0,b.jsx)("div",{className:"p-2 sm:p-3",children:(0,b.jsx)(W,{svg:d})})]})}var $=a.i(33441);let _=(0,o.default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);function aa({shortId:a,className:d=""}){let{t:e}=(0,z.useLanguage)(),[f,g]=(0,c.useState)(!1);if(!a)return null;let h=async b=>{b.preventDefault(),b.stopPropagation();try{await navigator.clipboard.writeText(a),g(!0),setTimeout(()=>g(!1),1500)}catch{window.prompt(e.shortId.copy,a)}};return(0,b.jsxs)("button",{type:"button",onClick:h,title:f?e.shortId.copied:e.shortId.copy,className:`inline-flex items-center gap-1 rounded-md border bg-muted/50 px-2 py-0.5 font-mono text-xs text-muted-foreground hover:text-foreground transition-colors ${d}`,children:[(0,b.jsx)("span",{children:e.shortId.label}),(0,b.jsx)("span",{className:"font-semibold text-foreground",children:a}),f?(0,b.jsx)($.Check,{className:"h-3 w-3 text-green-600"}):(0,b.jsx)(_,{className:"h-3 w-3"})]})}var ab=a.i(31368),ac=a.i(18943);let ad=(0,o.default)("shapes",[["path",{d:"M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z",key:"1bo67w"}],["rect",{x:"3",y:"14",width:"7",height:"7",rx:"1",key:"1bkyp8"}],["circle",{cx:"17.5",cy:"17.5",r:"3.5",key:"w3z12y"}]]);function ae({errorItemId:a,onDone:d}){let{t:f}=(0,z.useLanguage)(),[g,h]=(0,c.useState)(!1),i=async()=>{h(!0);try{let b=await G.apiClient.post(`/api/error-items/${a}/figure`,{});d(b),b.figureSvg||Y.toast.warning(f.figure.noFigure)}catch(c){let a=c?.data?.message||"",b=f.errors[a];X.frontendLogger.error("[RegenerateFigure]","Failed to regenerate figure",{code:a}),Y.toast.error("NO_ORIGINAL_IMAGE"===a?f.figure.noImage:"string"==typeof b?b:f.figure.failed)}finally{h(!1)}};return(0,b.jsxs)(e.Button,{variant:"outline",size:"sm",onClick:i,disabled:g,className:"flex items-center gap-2",children:[g?(0,b.jsx)(t.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(ad,{className:"h-4 w-4"}),g?f.figure.regenerating:f.figure.regenerate]})}let af=(0,o.default)("image-plus",[["path",{d:"M16 5h6",key:"1vod17"}],["path",{d:"M19 2v6",key:"4bpg5p"}],["path",{d:"M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5",key:"1ue2ih"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}]]);var ag=a.i(97521),ah=a.i(43542);function ai({errorItemId:a,hasImage:d,onDone:f}){let{t:g}=(0,z.useLanguage)(),h=(0,c.useRef)(null),[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(null);(0,c.useEffect)(()=>()=>{k&&URL.revokeObjectURL(k)},[k]);let m=async()=>{(!d||await (0,Y.confirmDialog)(g.replaceImage.confirm))&&h.current?.click()},n=async b=>{l(null),j(!0);try{let c=new File([b],"question-image.jpg",{type:b.type||"image/jpeg"}),d=await (0,ah.processImageFile)(c),e=await G.apiClient.put(`/api/error-items/${a}/image`,{imageDataUrl:d});f(e.originalImageUrl),Y.toast.success(g.replaceImage.done)}catch(b){let a=b?.data?.message||"";X.frontendLogger.error("[ReplaceImage]","Failed to replace original image",{code:a}),Y.toast.error("INVALID_IMAGE"===a?g.replaceImage.invalid:g.replaceImage.failed)}finally{j(!1)}};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("input",{ref:h,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif",className:"hidden",onChange:a=>{(a=>{if(a){if(!a.type.startsWith("image/"))return Y.toast.error(g.replaceImage.invalid);l(URL.createObjectURL(a))}})(a.target.files?.[0]),a.target.value=""}}),k&&(0,b.jsx)(ag.ImageCropper,{imageSrc:k,open:!0,onClose:()=>l(null),onCropComplete:n}),(0,b.jsxs)(e.Button,{variant:"outline",size:"sm",onClick:m,disabled:i,className:"flex items-center gap-2",children:[i?(0,b.jsx)(t.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(af,{className:"h-4 w-4"}),i?g.replaceImage.uploading:d?g.replaceImage.replace:g.replaceImage.add]})]})}var aj=a.i(46862),ak=a.i(8406);function al({errorItemId:a,onDone:d,onSuggested:f}){let{t:g}=(0,z.useLanguage)(),[h,i]=(0,c.useState)(!1),j=async()=>{i(!0);try{if(f){let b=await G.apiClient.post(`/api/error-items/${a}/retag`,{preview:!0});f(b.tags)}else await G.apiClient.post(`/api/error-items/${a}/retag`,{}),d?.()}catch(c){let a=c?.data?.message||"",b=g.errors[a];X.frontendLogger.error("[RetagItem]","Failed to regenerate tags",{code:a}),Y.toast.error("NO_TAGS_SELECTED"===a?g.retag.noTags:"string"==typeof b?b:g.retag.itemFailed)}finally{i(!1)}};return(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:j,disabled:h,children:[h?(0,b.jsx)(t.Loader2,{className:"h-4 w-4 mr-1 animate-spin"}):(0,b.jsx)(ak.Sparkles,{className:"h-4 w-4 mr-1"}),f?h?g.retag.suggestRunning:g.retag.suggestButton:h?g.retag.itemRunning:g.retag.itemButton]})}var am=a.i(14491);function an({errorItemId:a,onDone:d}){let{t:f,language:g}=(0,z.useLanguage)(),[h,i]=(0,c.useState)(!1),j=async()=>{if(await (0,Y.confirmDialog)(f.reanswerItem.confirm)){i(!0);try{let b=await G.apiClient.post(`/api/error-items/${a}/reanswer`,{language:g},{timeout:6e5});d(b)}catch(c){let a=c?.data?.message||"",b=f.errors[a];X.frontendLogger.error("[RegenerateAnswer]","Failed to regenerate answer",{code:a}),Y.toast.error("NO_QUESTION_TEXT"===a?f.reanswerItem.noQuestionText:"string"==typeof b?b:f.reanswerItem.failed)}finally{i(!1)}}};return(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:j,disabled:h,children:[h?(0,b.jsx)(t.Loader2,{className:"h-4 w-4 mr-1 animate-spin"}):(0,b.jsx)(am.WandSparkles,{className:"h-4 w-4 mr-1"}),h?f.reanswerItem.running:f.reanswerItem.button]})}let ao=(0,o.default)("square-function",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["path",{d:"M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3",key:"m1af9g"}],["path",{d:"M9 11.2h5.7",key:"3zgcl2"}]]);var ap=a.i(48986),aq=a.i(78362);let ar=new Set(["ne","neq","nabla","nu","not","notin","ni","nexists","ngeq","nleq","nmid","nparallel","nsubseteq"]);function as(a){return a.length>80?`${a.slice(0,80)}…`:a}let at=["questionText","answerText","analysis","wrongAnswerText","mistakeAnalysis"];function au({errorItemId:a,fields:d,onDone:f}){let{t:g}=(0,z.useLanguage)(),[h,i]=(0,c.useState)(!1),j=(0,c.useMemo)(()=>Object.values(function(a){let b={};for(let c of at){let d=function(a){if(!a?.trim())return[];let{masked:b,segments:c}=(0,aq.extractMathSegments)(a),d=[];for(let a of c)try{ap.default.renderToString(a.tex,{displayMode:a.displayMode,throwOnError:!0,strict:"ignore"})}catch(c){let b=c instanceof Error?c.message.replace(/^KaTeX parse error:\s*/,""):String(c);d.push({snippet:as(a.source),message:b})}let e=b.replace(/@@MATH\d+@@/g," "),f=e.replace(/\\\$/g,"").match(/\$/g);f&&d.push({snippet:"$",message:`有 ${f.length} 个未配对的 $ 定界符`});let g=e.match(/\\[()[\]]/g);g&&d.push({snippet:g.join(" "),message:"有未配对的 \\( \\) 或 \\[ \\] 定界符"});let h=[...new Set(e.match(/\\[a-zA-Z]{2,}/g)||[])].filter(a=>!a.startsWith("\\n")||ar.has(a.slice(1)));return h.length>0&&d.push({snippet:as(h.join(" ")),message:"LaTeX 命令没有放在 $…$ 中,会原样显示"}),d}(a[c]);d.length>0&&(b[c]=d)}return b}(d)).reduce((a,b)=>a+(b?.length??0),0),[d]),k=async()=>{i(!0);try{let b=await G.apiClient.post(`/api/error-items/${a}/fix-latex`,{},{timeout:3e5});f(b.updated);let c=b.fixedFields.map(a=>g.fixLatex.fields[a]).join("、");Y.toast.info(0===b.issuesBefore?g.fixLatex.noIssues:0===b.fixedFields.length?g.fixLatex.notFixed:0===b.issuesAfter?g.fixLatex.fixedAll.replace("{fields}",c):g.fixLatex.fixedPartly.replace("{fields}",c).replace("{count}",String(b.issuesAfter)))}catch(c){let a=c?.data?.message||"",b=g.errors[a];X.frontendLogger.error("[FixLatex]","Failed to fix LaTeX",{code:a}),Y.toast.error("string"==typeof b?b:g.fixLatex.failed)}finally{i(!1)}};return 0!==j||h?(0,b.jsxs)(e.Button,{variant:"outline",size:"sm",onClick:k,disabled:h,className:"border-amber-500 text-amber-700 dark:text-amber-400",title:g.fixLatex.issuesFound.replace("{count}",String(j)),children:[h?(0,b.jsx)(t.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,b.jsx)(ao,{className:"mr-2 h-4 w-4"}),h?g.fixLatex.running:g.fixLatex.button,!h&&j>0&&(0,b.jsxs)("span",{className:"ml-1",children:["(",j,")"]})]}):null}var av=a.i(51795);a.s(["default",0,function(){let a=(0,d.useParams)(),o=(0,d.useRouter)(),{t:L,language:M}=(0,z.useLanguage)(),[N,O]=(0,c.useState)(null);(0,A.usePageTitle)(L.detail.title,N?.subject?.name,N?.shortId);let[P,Q]=(0,c.useState)(!0),[R,S]=(0,c.useState)(!1),[T,U]=(0,c.useState)(""),[V,W]=(0,c.useState)(!1),[$,_]=(0,c.useState)(!1),[ad,af]=(0,c.useState)([]),[ag,ah]=(0,c.useState)(!1),[ak,am]=(0,c.useState)(""),[ao,ap]=(0,c.useState)("a"),[aq,ar]=(0,c.useState)(null),[as,at]=(0,c.useState)(void 0),[aw,ax]=(0,c.useState)(!1),[ay,az]=(0,c.useState)(null),[aA,aB]=(0,c.useState)(!1),[aC,aD]=(0,c.useState)(!0),[aE,aF]=(0,c.useState)(!1),[aG,aH]=(0,c.useState)(!1),[aI,aJ]=(0,c.useState)(!1),[aK,aL]=(0,c.useState)(!1),aM=(0,c.useRef)(null);(0,c.useEffect)(()=>{G.apiClient.get("/api/user").then(a=>{a&&a.educationStage&&at(a.educationStage),aB(!!a?.enableGeogebra),aD(a?.enableSvgAnimation!==!1)}).catch(a=>console.error("Failed to fetch user info:",a)),a.id&&aO(a.id)},[a.id]);let aN=(0,c.useCallback)(a=>{O(b=>b&&b.masteryLevel!==a?{...b,masteryLevel:a}:b)},[]),aO=async a=>{try{let b=await G.apiClient.get(`/api/error-items/${a}`);O(b)}catch(a){console.error(a),Y.toast.error(L.common?.messages?.loadFailed||"Failed to load item"),o.push("/notebooks")}finally{Q(!1)}},aP=async()=>{if(N){ax(!0),az(null);try{let a=await G.apiClient.post(`/api/error-items/${N.id}/geogebra`,{});a.suitable&&a.commands.length>0?O({...N,geogebraCommands:JSON.stringify(a.commands)}):az(a.description||"该题目不适合用 GeoGebra 演示")}catch(b){console.error("GeoGebra analysis failed:",b);let a=b?.data?.message||b?.message||"";a.includes("AI_AUTH_ERROR")?az("AI 认证失败,请检查设置"):a.includes("AI_CONNECTION")?az("AI 连接失败,请检查网络"):az("分析失败,请稍后重试")}finally{ax(!1)}}},[aQ,aR]=(0,c.useState)(!1),aS=async a=>{if(!N)return;let b=N.difficultyStars??null;O({...N,difficultyStars:a}),aR(!0);try{let b=await G.apiClient.put(`/api/error-items/${N.id}`,{difficultyStars:a});O(a=>a&&{...a,paperLevel:b.paperLevel})}catch(a){O(a=>a&&{...a,difficultyStars:b}),X.frontendLogger.error("[ErrorDetail]","Failed to save difficulty",{error:a instanceof Error?a.message:String(a)}),Y.toast.error(L.difficulty.saveFailed)}finally{aR(!1)}},aT=async a=>{N&&(await G.apiClient.put(`/api/error-items/${N.id}`,{geogebraCommands:a}),O({...N,geogebraCommands:a}))},aU=async()=>{N&&(await G.apiClient.delete(`/api/error-items/${N.id}/geogebra`),O(a=>a&&{...a,geogebraCommands:null}))},aV=(0,c.useCallback)(a=>{O(b=>b&&{...b,answerText:a.answerText??"",analysis:a.analysis??""})},[]),aW=(0,c.useCallback)(a=>{O(b=>b&&{...b,...a})},[]),aX=(0,c.useCallback)((a,b)=>{O(c=>c&&{...c,["en"===a?"svgAnimationEn":"svgAnimation"]:b})},[]),aY=async()=>{if(!N)return;let a=N.masteryLevel>0?0:1;try{await G.apiClient.patch(`/api/error-items/${N.id}/mastery`,{masteryLevel:a}),O({...N,masteryLevel:a}),Y.toast.success(a>0?L.common?.messages?.markMastered||"Marked as mastered":L.common?.messages?.unmarkMastered||"Unmarked")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.updateFailed||"Update failed")}},aZ=async()=>{if(!N)return;let a=L.common?.messages?.confirmDelete||"Are you sure you want to delete this error item?";if(await (0,Y.confirmDialog)(a,{destructive:!0}))try{await G.apiClient.delete(`/api/error-items/${N.id}/delete`),Y.toast.success(L.common?.messages?.deleteSuccess||"Deleted successfully"),N.subjectId?o.push(`/notebooks/${N.subjectId}`):o.push("/notebooks")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.deleteFailed||"Delete failed")}},a$=async()=>{try{await G.apiClient.put(`/api/error-items/${N?.id}`,{knowledgePoints:ad}),_(!1),await aO(a.id),Y.toast.success(L.common?.messages?.tagUpdateSuccess||"Tags updated successfully!")}catch(a){console.error("[Frontend] Error updating:",a),Y.toast.error(L.common?.messages?.updateFailed||"Update failed")}},a_=async()=>{try{await G.apiClient.put(`/api/error-items/${N?.id}`,{subjectId:aq||null,gradeSemester:ak,paperLevel:ao}),ah(!1),aO(a.id),Y.toast.success(L.common?.messages?.metaUpdateSuccess||"Metadata updated successfully!")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.updateFailed||"Update failed")}},[a0,a1]=(0,c.useState)(!1),[a2,a3]=(0,c.useState)(""),[a4,a5]=(0,c.useState)(!1),[a6,a7]=(0,c.useState)(""),[a8,a9]=(0,c.useState)(!1),[ba,bb]=(0,c.useState)(""),[bc,bd]=(0,c.useState)(!1),[be,bf]=(0,c.useState)(!1),[bg,bh]=(0,c.useState)(""),[bi,bj]=(0,c.useState)(""),[bk,bl]=(0,c.useState)("unknown"),bm=async()=>{try{await G.apiClient.put(`/api/error-items/${N?.id}`,{questionText:a2}),a1(!1),N&&O({...N,questionText:a2}),Y.toast.success(L.common?.messages?.saveSuccess||"Saved successfully")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.saveFailed||"Save failed")}},bn=async()=>{try{await G.apiClient.put(`/api/error-items/${N?.id}`,{answerText:a6}),a5(!1),N&&O({...N,answerText:a6}),Y.toast.success(L.common?.messages?.saveSuccess||"Saved successfully")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.saveFailed||"Save failed")}},bo=async()=>{try{await G.apiClient.put(`/api/error-items/${N?.id}`,{analysis:ba}),a9(!1),N&&O({...N,analysis:ba}),Y.toast.success(L.common?.messages?.saveSuccess||"Saved successfully")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.saveFailed||"Save failed")}},bp=async()=>{if(N)try{let a=(0,I.normalizeMistakeStatusForSave)(bk,bg);await G.apiClient.put(`/api/error-items/${N.id}`,{wrongAnswerText:bg,mistakeStatus:a}),bd(!1),O(b=>b&&{...b,wrongAnswerText:bg,mistakeStatus:a}),Y.toast.success(L.common?.messages?.saveSuccess||"Saved successfully")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.saveFailed||"Save failed")}},bq=async()=>{if(N)try{await G.apiClient.put(`/api/error-items/${N.id}`,{mistakeAnalysis:bi}),bf(!1),O(a=>a&&{...a,mistakeAnalysis:bi}),Y.toast.success(L.common?.messages?.saveSuccess||"Saved successfully")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.saveFailed||"Save failed")}},br=async()=>{if(N)try{await G.apiClient.patch(`/api/error-items/${N.id}/notes`,{userNotes:T}),O({...N,userNotes:T}),S(!1),Y.toast.success(L.common?.messages?.noteSaveSuccess||"Notes saved successfully")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.saveFailed||"Save failed")}};if((0,c.useEffect)(()=>{let a=()=>{aM.current&&(aM.current.getBoundingClientRect().bottom<-50?aL(!0):aL(!1))};return window.addEventListener("scroll",a,{passive:!0}),a(),()=>window.removeEventListener("scroll",a)},[]),P)return(0,b.jsx)(g.PageLoading,{label:L.common.loading});if(!N)return(0,b.jsx)(f.EmptyState,{icon:w,title:L.detail.notFound||"Item not found",className:"m-4 md:m-8"});let bs=[];if(N.tags&&N.tags.length>0)bs=N.tags.map(a=>a.name);else if(N.knowledgePoints)try{let a=JSON.parse(N.knowledgePoints);bs=Array.isArray(a)?a:[]}catch(a){bs=[]}return(0,b.jsxs)("main",{className:"min-h-screen",children:[(0,b.jsxs)("div",{className:"mx-auto max-w-6xl space-y-6 px-4 py-6 md:px-8 md:py-8",children:[(0,b.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-start md:items-center gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-2",children:[(0,b.jsx)(y.default,{href:N.subjectId?`/notebooks/${N.subjectId}`:"/notebooks",children:(0,b.jsx)(e.Button,{variant:"ghost",size:"icon",className:"-ml-2",children:(0,b.jsx)(j.ArrowLeft,{className:"h-5 w-5"})})}),(0,b.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:L.detail.title}),(0,b.jsx)(aa,{shortId:N.shortId}),(0,b.jsx)(ab.DifficultyStars,{size:"md",value:N.difficultyStars,onChange:aS,disabled:aQ})]}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(au,{errorItemId:N.id,fields:N,onDone:aW}),(0,b.jsx)(y.default,{href:`/practice?id=${N.id}`,children:(0,b.jsxs)(e.Button,{variant:"outline",size:"sm",children:[(0,b.jsx)(m.RefreshCw,{className:"mr-2 h-4 w-4"}),L.detail.practice]})}),(0,b.jsx)(e.Button,{size:"sm",variant:(N.masteryLevel,"default"),className:N.masteryLevel>0?"bg-success text-white hover:bg-success/90":"",onClick:aY,children:N.masteryLevel>0?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(k.CheckCircle,{className:"mr-2 h-4 w-4"}),L.detail.mastered]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(l.XCircle,{className:"mr-2 h-4 w-4"}),L.detail.markMastered]})}),(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:aZ,className:"text-red-600 hover:text-red-700 hover:bg-red-50",children:[(0,b.jsx)(n.Trash2,{className:"mr-2 h-4 w-4"}),L.detail.delete||"Delete"]})]})]}),(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)(h.CardTitle,{children:L.detail.question}),!a0&&(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{N&&(a3(N.questionText),a1(!0))},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]})}),(0,b.jsxs)(h.CardContent,{className:"space-y-4",children:[a0?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(C.MarkdownEditor,{value:a2,onChange:a3,placeholder:"Enter question text...",rows:8,className:"w-full font-mono text-sm"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:bm,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{a1(!1),a3("")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]})]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(B.MarkdownRenderer,{content:N.questionText}),(0,b.jsx)(ac.QuestionFigure,{svg:N.figureSvg})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)("h4",{className:"text-sm font-semibold",children:L.editor?.tags||"Knowledge Tags"}),!$&&(0,b.jsxs)("div",{className:"flex",children:[(0,b.jsx)(al,{errorItemId:N.id,onDone:()=>aO(N.id)}),(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{if(N){if(N.tags&&N.tags.length>0)af(N.tags.map(a=>a.name));else if(N.knowledgePoints)try{let a=JSON.parse(N.knowledgePoints);af(a)}catch(a){af([])}else af([]);_(!0)}},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]})]}),$?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(D.TagInput,{value:ad,onChange:af,placeholder:L.editor?.tagsPlaceholder||"Enter or select knowledge tags...",subject:(0,H.inferSubjectFromName)(N.subject?.name||null)||void 0,gradeStage:as}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:L.editor?.tagsHint||"Select from standard or custom tags"}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:a$,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{_(!1),af([])},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]}),(0,b.jsx)(al,{errorItemId:N.id,onSuggested:af})]})]}):(0,b.jsx)("div",{className:"flex flex-wrap gap-2",children:bs.map(a=>(0,b.jsx)(i.Badge,{variant:"secondary",children:a},a))})]}),(0,b.jsxs)("div",{className:"space-y-2 pt-4 border-t",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)("h4",{className:"text-sm font-semibold",children:L.detail?.questionInfo||"Question Info"}),!ag&&(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{N&&(ar(N.subjectId||null),am(N.gradeSemester||""),ap(N.paperLevel||(0,av.getDefaultPaperLevel)(N.difficultyStars)||"a"),ah(!0))},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]}),ag?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground",children:L.notebooks?.title||"Notebook"}),(0,b.jsx)(J.NotebookSelector,{value:aq||void 0,onChange:ar})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground",children:L.filter.grade}),(0,b.jsx)(E.Input,{value:ak,onChange:a=>am(a.target.value),placeholder:L.notebook?.gradeSemesterPlaceholder||"e.g. Grade 7, Semester 1"})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground",children:L.filter.paperLevel}),(0,b.jsxs)(F.Select,{value:ao,onValueChange:ap,children:[(0,b.jsx)(F.SelectTrigger,{children:(0,b.jsx)(F.SelectValue,{})}),(0,b.jsxs)(F.SelectContent,{children:[(0,b.jsx)(F.SelectItem,{value:"a",children:L.editor.paperLevels?.a||"Paper A"}),(0,b.jsx)(F.SelectItem,{value:"b",children:L.editor.paperLevels?.b||"Paper B"}),(0,b.jsx)(F.SelectItem,{value:"other",children:L.editor.paperLevels?.other||"Other"})]})]})]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:a_,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{ah(!1),ar(null),am(""),ap("a")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]})]})]}):(0,b.jsxs)("div",{className:"space-y-2 text-sm",children:[(0,b.jsxs)("div",{className:"flex justify-between",children:[(0,b.jsxs)("span",{className:"text-muted-foreground",children:[L.notebooks?.title||"Notebook",":"]}),(0,b.jsx)("span",{className:"font-medium",children:N.subject?.name||L.common?.notSet||"Not set"})]}),(0,b.jsxs)("div",{className:"flex justify-between",children:[(0,b.jsxs)("span",{className:"text-muted-foreground",children:[L.filter.grade,":"]}),(0,b.jsx)("span",{className:"font-medium",children:N.gradeSemester||L.common?.notSet||"Not set"})]}),(0,b.jsxs)("div",{className:"flex justify-between",children:[(0,b.jsxs)("span",{className:"text-muted-foreground",children:[L.filter.paperLevel,":"]}),(0,b.jsx)("span",{className:"font-medium",children:N.paperLevel?L.editor.paperLevels?.[N.paperLevel]||N.paperLevel:L.common?.notSet||"Not set"})]})]})]}),(0,b.jsxs)("div",{className:"pt-3",children:[(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[N.originalImageUrl&&(0,b.jsx)(e.Button,{variant:"outline",size:"sm",onClick:()=>aF(!aE),className:"flex items-center gap-2",children:aE?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(u.EyeOff,{className:"h-4 w-4"}),L.replaceImage?.hide||"Hide original image"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(v,{className:"h-4 w-4"}),L.replaceImage?.view||"View original image"]})}),(0,b.jsx)(ai,{errorItemId:N.id,hasImage:!!N.originalImageUrl,onDone:a=>{O(b=>b&&{...b,originalImageUrl:a}),aF(!0)}}),N.originalImageUrl&&(0,b.jsx)(ae,{errorItemId:N.id,onDone:a=>O(b=>b&&{...b,...a})})]}),N.originalImageUrl&&aE&&(0,b.jsxs)("div",{className:"mt-4",children:[(0,b.jsx)("img",{src:N.originalImageUrl,alt:L.detail.originalProblem||"Original Problem",className:"w-full rounded-lg border cursor-pointer hover:opacity-90 transition-opacity",onClick:()=>W(!0)}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-1 text-center",children:L.detail?.clickToEnlarge||"Click to enlarge"})]})]})]})]}),(0,b.jsx)(aj.MasteryPanel,{errorItemId:N.id,onMasteryLevelChange:aN}),(0,b.jsxs)("div",{className:"grid gap-6 lg:grid-cols-2",children:[(0,b.jsxs)(h.Card,{className:"border-primary/20",children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)(h.CardTitle,{className:"text-primary",children:L.detail.correctAnswer}),!a4&&(0,b.jsxs)("div",{className:"flex flex-wrap justify-end",children:[(0,b.jsx)(an,{errorItemId:N.id,onDone:aV}),(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{N&&(a7(N.answerText),a5(!0))},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]})]})}),(0,b.jsxs)(h.CardContent,{className:"space-y-4",children:[a4?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(C.MarkdownEditor,{value:a6,onChange:a7,placeholder:"Enter answer...",rows:5,className:"w-full font-mono text-sm"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:bn,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{a5(!1),a7("")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]})]})]}):(0,b.jsx)(B.MarkdownRenderer,{content:N.answerText,className:"font-semibold"}),N.referenceImageUrl&&(0,b.jsxs)("div",{className:"pt-3",children:[(0,b.jsx)(e.Button,{variant:"ghost",size:"sm",onClick:()=>aH(!aG),className:"flex items-center gap-2 text-muted-foreground",children:aG?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(u.EyeOff,{className:"h-4 w-4"}),"隐藏图片"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(v,{className:"h-4 w-4"}),"查看图片"]})}),aG&&(0,b.jsxs)("div",{className:"mt-4",children:[(0,b.jsx)("img",{src:N.referenceImageUrl,alt:"参考图片",className:"w-full rounded-lg border cursor-pointer hover:opacity-90 transition-opacity",onClick:()=>W(!0)}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-1 text-center",children:L.detail?.clickToEnlarge||"Click to enlarge"})]})]})]})]}),(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)(h.CardTitle,{children:L.editor?.wrongAnswerText||"我的答案"}),!bc&&(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{N&&(bh(N.wrongAnswerText||""),bl(N.mistakeStatus||"unknown"),bd(!0))},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]})}),(0,b.jsx)(h.CardContent,{className:"space-y-4",children:bc?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground",children:L.editor?.mistakeStatus||"作答状态"}),(0,b.jsxs)(F.Select,{value:bk,onValueChange:bl,children:[(0,b.jsx)(F.SelectTrigger,{children:(0,b.jsx)(F.SelectValue,{})}),(0,b.jsxs)(F.SelectContent,{children:[(0,b.jsx)(F.SelectItem,{value:"not_attempted",children:L.editor?.mistakeStatuses?.notAttempted||"不会做"}),(0,b.jsx)(F.SelectItem,{value:"wrong_attempt",children:L.editor?.mistakeStatuses?.wrongAttempt||"做错了"}),(0,b.jsx)(F.SelectItem,{value:"unknown",children:L.editor?.mistakeStatuses?.unknown||"未判断"})]})]})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground",children:L.editor?.wrongAnswerText||"错误解答原文"}),(0,b.jsx)(C.MarkdownEditor,{value:bg,onChange:a=>{bh(a),a.trim()&&bl("wrong_attempt")},rows:5,className:"w-full font-mono text-sm"})]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:bp,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{bd(!1),bh(""),bl("unknown")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]})]})]}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(i.Badge,{variant:"secondary",children:(0,I.getMistakeStatusLabel)(N.mistakeStatus,M)}),N.wrongAnswerText?(0,b.jsx)(B.MarkdownRenderer,{content:N.wrongAnswerText}):(0,b.jsx)("p",{className:"text-sm text-muted-foreground italic",children:L.detail?.noMistakeAnalysis||"暂无错误解答"}),N.wrongAnswerImageUrl&&(0,b.jsxs)("div",{className:"pt-3",children:[(0,b.jsx)(e.Button,{variant:"ghost",size:"sm",onClick:()=>aJ(!aI),className:"flex items-center gap-2 text-muted-foreground",children:aI?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(u.EyeOff,{className:"h-4 w-4"}),"隐藏图片"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(v,{className:"h-4 w-4"}),"查看图片"]})}),aI&&(0,b.jsxs)("div",{className:"mt-4",children:[(0,b.jsx)("img",{src:N.wrongAnswerImageUrl,alt:"我的答案图片",className:"w-full rounded-lg border cursor-pointer hover:opacity-90 transition-opacity",onClick:()=>W(!0)}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-1 text-center",children:L.detail?.clickToEnlarge||"Click to enlarge"})]})]})]})})]})]}),(0,b.jsxs)("div",{className:"grid gap-6 lg:grid-cols-2",children:[(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)(h.CardTitle,{children:L.detail.analysis}),!a8&&(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{N&&(bb(N.analysis),a9(!0))},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]})}),(0,b.jsx)(h.CardContent,{children:a8?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(C.MarkdownEditor,{value:ba,onChange:bb,placeholder:"Enter analysis...",rows:12,className:"w-full font-mono text-sm"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:bo,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{a9(!1),bb("")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]})]})]}):(0,b.jsx)(B.MarkdownRenderer,{content:N.analysis})})]}),(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)(h.CardTitle,{children:L.detail?.mistakeAnalysis||"错因分析"}),!be&&(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{N&&(bj(N.mistakeAnalysis||""),bf(!0))},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]})}),(0,b.jsx)(h.CardContent,{children:be?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground",children:L.editor?.mistakeAnalysis||"错因分析"}),(0,b.jsx)(C.MarkdownEditor,{value:bi,onChange:bj,rows:8,className:"w-full font-mono text-sm"})]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:bq,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{bf(!1),bj("")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]})]})]}):N.mistakeAnalysis?(0,b.jsx)(B.MarkdownRenderer,{content:N.mistakeAnalysis}):(0,b.jsx)("p",{className:"text-sm text-muted-foreground italic",children:L.detail?.noMistakeAnalysis||"暂无错因分析"})})]})]}),(0,b.jsxs)("div",{className:"space-y-6",children:[aC&&(0,b.jsx)(Z,{errorItemId:N.id,svgAnimation:"en"===M?N.svgAnimationEn:N.svgAnimation,hasOtherLanguage:!!("en"===M?N.svgAnimation:N.svgAnimationEn),onChange:aX},M),aA&&(N.geogebraCommands?(0,b.jsx)(K.GeogebraDemo,{commands:N.geogebraCommands,height:700,showToolBar:!0,showAlgebraInput:!1,showMenuBar:!1,onRegenerate:aP,onSaveCommands:aT,onDelete:aU}):(0,b.jsxs)("div",{className:"rounded-lg border border-dashed p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(s.Box,{className:"h-4 w-4"}),(0,b.jsx)("span",{children:"GeoGebra 动态演示"})]}),(0,b.jsx)(e.Button,{variant:"outline",size:"sm",onClick:()=>aP(),disabled:aw,children:aw?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(t.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),"AI 分析中..."]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s.Box,{className:"mr-2 h-4 w-4"}),"生成演示"]})})]}),ay&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-2",children:ay}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-2",children:"AI 将判断本题是否可以用 GeoGebra 进行动态演示,如适合则自动生成交互式图形"})]})),(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)(h.CardTitle,{children:L.detail.yourNotes}),!R&&(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{U(N?.userNotes||""),S(!0)},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.detail.editNotes||"Edit"]})]})}),(0,b.jsx)(h.CardContent,{children:R?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(x.Textarea,{value:T,onChange:a=>U(a.target.value),placeholder:L.detail.notesPlaceholder||"Enter your notes...",rows:5,className:"w-full"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:br,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{S(!1),U("")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common.cancel||"Cancel"]})]})]}):(0,b.jsx)("div",{className:"whitespace-pre-wrap",children:N.userNotes?(0,b.jsx)("p",{className:"text-foreground",children:N.userNotes}):(0,b.jsx)("p",{className:"text-muted-foreground italic",children:L.detail.noNotes})})})]})]})]}),V&&N?.originalImageUrl&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 bg-black/90 flex items-center justify-center p-4",onClick:()=>W(!1),children:(0,b.jsxs)("div",{className:"relative max-w-7xl max-h-full",children:[(0,b.jsx)("button",{className:"absolute -top-12 right-0 text-white hover:text-gray-300 text-lg font-semibold bg-black/50 px-4 py-2 rounded",onClick:()=>W(!1),children:L.detail?.close||"✕ Close"}),(0,b.jsx)("img",{src:N.originalImageUrl,alt:"Full size",className:"max-w-full max-h-[90vh] object-contain rounded-lg",onClick:a=>a.stopPropagation()}),(0,b.jsx)("p",{className:"text-center text-white/70 text-sm mt-4",children:L.detail?.clickOutside||"Click outside to close"})]})})]})}],73773)}];
|
|
1
|
+
module.exports=[273773,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(50944),e=a.i(699570),f=a.i(579834),g=a.i(506376),h=a.i(591119),i=a.i(786304),j=a.i(400210),k=a.i(816201),l=a.i(862722),m=a.i(669520),n=a.i(781560),o=a.i(170106);let p=(0,o.default)("square-pen",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]]);var q=a.i(114548),r=a.i(633508),s=a.i(180032),t=a.i(596221),u=a.i(141379);let v=(0,o.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]),w=(0,o.default)("file-question-mark",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}]]);var x=a.i(429246),y=a.i(238246),z=a.i(550194),A=a.i(557999),B=a.i(93907),C=a.i(460081),D=a.i(699814),E=a.i(866718),F=a.i(580701),G=a.i(291938),H=a.i(957292),I=a.i(992883),J=a.i(350659),K=a.i(310395);let L=(0,o.default)("clapperboard",[["path",{d:"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3Z",key:"1tn4o7"}],["path",{d:"m6.2 5.3 3.1 3.9",key:"iuk76l"}],["path",{d:"m12.4 3.4 3.1 4",key:"6hsd6n"}],["path",{d:"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z",key:"ltgou9"}]]),M=(0,o.default)("maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]),N=(0,o.default)("minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]),O=(0,o.default)("pause",[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]]),P=(0,o.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);var Q=a.i(787654);let R=/<(?:animate|animateTransform|animateMotion|set)\b[^>]*>/gi;function S(a,b){let c=a.match(RegExp(`\\s${b}\\s*=\\s*("([^"]*)"|'([^']*)')`,"i"));return c?(c[2]??c[3]??"").trim():null}function T(a){if(!a)return null;let b=a.trim(),c=b.match(/^(?:(\d+):)?(\d+):(\d+(?:\.\d+)?)$/);if(c)return 3600*Number(c[1]??0)+60*Number(c[2])+Number(c[3]);let d=b.match(/^(\d+(?:\.\d+)?)(h|min|s|ms)?$/);if(!d)return null;let e={h:3600,min:60,s:1,ms:.001}[d[2]??"s"]??1;return Number(d[1])*e}var U=a.i(368114);function V(a){let b=Math.max(0,Math.floor(a));return`${Math.floor(b/60)}:${String(b%60).padStart(2,"0")}`}function W({svg:a}){let{t:d}=(0,z.useLanguage)(),f=(0,c.useRef)(null),g=(0,c.useRef)(null),h=(0,c.useRef)(null),[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(0),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(!1),q=m||o,r=(0,c.useMemo)(()=>(function(a){let b=0;for(let c of a.match(R)||[]){let a=S(c,"begin"),d=null===a?0:T(a.split(";")[0]);if(null===d)continue;let e=S(c,"repeatCount");if("indefinite"!==e&&"indefinite"!==S(c,"repeatDur"))b=Math.max(b,d+(T(S(c,"dur"))??0)*(e&&Number.isFinite(Number(e))?Number(e):1))}return b})(a),[a]),s=(0,c.useMemo)(()=>(function(a){let b=a.match(/<svg\b[^>]*>/i)?.[0]??"",c=S(b,"viewBox")?.split(/[\s,]+/).map(Number);if(c?.length===4&&c[2]>0&&c[3]>0)return c[2]/c[3];let d=parseFloat(S(b,"width")??""),e=parseFloat(S(b,"height")??"");return d>0&&e>0?d/e:1.6})(a),[a]),t=(0,c.useMemo)(()=>`<!doctype html><html><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'unsafe-inline'; img-src data:"><style>html,body{margin:0;height:100%;background:#fff;overflow:hidden}svg{display:block;width:100%;height:100%}</style></head><body>${a}</body></html>`,[a]),u=(0,c.useCallback)(()=>{let a=g.current?.contentDocument;return"function"==typeof a?.getAnimations?a.getAnimations():[]},[]),v=(0,c.useCallback)(()=>{h.current?.pauseAnimations(),u().forEach(a=>a.pause()),j(!1)},[u]),w=(0,c.useCallback)(a=>{h.current?.setCurrentTime(a),u().forEach(b=>{b.currentTime=1e3*a}),l(a)},[u]),x=(0,c.useCallback)(()=>{let a=h.current;a&&(r>0&&a.getCurrentTime()>=r&&w(0),a.unpauseAnimations(),u().forEach(a=>a.play()),j(!0))},[u,r,w]),y=async()=>{if(o)return void p(!1);if(document.fullscreenElement)return void await document.exitFullscreen().catch(()=>void 0);let a=f.current;if(a&&"function"==typeof a.requestFullscreen)try{await a.requestFullscreen();return}catch{}p(!0)};return(0,c.useEffect)(()=>{let a=()=>n(document.fullscreenElement===f.current);return document.addEventListener("fullscreenchange",a),()=>document.removeEventListener("fullscreenchange",a)},[]),(0,c.useEffect)(()=>{if(!o)return;let a=a=>{"Escape"===a.key&&p(!1)},b=document.body.style.overflow;return document.body.style.overflow="hidden",document.addEventListener("keydown",a),()=>{document.body.style.overflow=b,document.removeEventListener("keydown",a)}},[o]),(0,c.useEffect)(()=>{if(!i)return;let a=0,b=()=>{let c=h.current?.getCurrentTime()??0;if(r>0&&c>=r){h.current?.setCurrentTime(r),v(),l(r);return}l(c),a=requestAnimationFrame(b)};return a=requestAnimationFrame(b),()=>cancelAnimationFrame(a)},[i,r,v]),(0,b.jsxs)("div",{ref:f,className:(0,U.cn)("space-y-2",q&&"flex flex-col items-center justify-center bg-black p-4",o&&"fixed inset-0 z-50"),children:[(0,b.jsx)("iframe",{ref:g,srcDoc:t,sandbox:"allow-same-origin",title:d.svgAnimation.alt,onLoad:()=>{h.current=g.current?.contentDocument?.querySelector("svg")??null,l(0),j(!!h.current)},className:(0,U.cn)("mx-auto block rounded border bg-white",!q&&"w-full max-w-3xl"),style:q?{aspectRatio:s,width:`min(100%, calc((100dvh - 96px) * ${s}))`}:{aspectRatio:s}}),(0,b.jsxs)("div",{className:(0,U.cn)("mx-auto flex w-full items-center gap-2",q?"max-w-5xl text-white":"max-w-3xl"),children:[(0,b.jsx)(e.Button,{variant:"outline",size:"sm",className:"h-8 w-8 shrink-0 p-0 text-foreground",onClick:i?v:x,"aria-label":i?d.svgAnimation.pause:d.svgAnimation.play,title:i?d.svgAnimation.pause:d.svgAnimation.play,children:i?(0,b.jsx)(O,{className:"h-4 w-4"}):(0,b.jsx)(P,{className:"h-4 w-4"})}),(0,b.jsx)(e.Button,{variant:"ghost",size:"sm",className:(0,U.cn)("h-8 w-8 shrink-0 p-0",q&&"text-white hover:bg-white/20 hover:text-white"),onClick:()=>{w(0),x()},"aria-label":d.svgAnimation.replay,title:d.svgAnimation.replay,children:(0,b.jsx)(Q.RotateCcw,{className:"h-4 w-4"})}),r>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("input",{type:"range",min:0,max:r,step:.1,value:Math.min(k,r),onChange:a=>w(Number(a.target.value)),"aria-label":d.svgAnimation.progress,className:"h-2 min-w-0 flex-1 cursor-pointer accent-primary"}),(0,b.jsxs)("span",{className:(0,U.cn)("shrink-0 text-xs tabular-nums",q?"text-white/80":"text-muted-foreground"),children:[V(k)," / ",V(r)]})]}),(0,b.jsx)(e.Button,{variant:"ghost",size:"sm",className:(0,U.cn)("ml-auto h-8 w-8 shrink-0 p-0",q&&"text-white hover:bg-white/20 hover:text-white"),onClick:y,"aria-label":q?d.svgAnimation.exitFullscreen:d.svgAnimation.fullscreen,title:q?d.svgAnimation.exitFullscreen:d.svgAnimation.fullscreen,children:q?(0,b.jsx)(N,{className:"h-4 w-4"}):(0,b.jsx)(M,{className:"h-4 w-4"})})]})]})}var X=a.i(630534),Y=a.i(710302);function Z({errorItemId:a,svgAnimation:d,hasOtherLanguage:f,onChange:g}){let{t:h,language:i}=(0,z.useLanguage)(),[j,k]=(0,c.useState)(!1),[l,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(null),r=async()=>{k(!0),q(null);try{let b=await G.apiClient.post(`/api/error-items/${a}/svg-animation`,{language:i},{timeout:6e5});g(i,b.svgAnimation)}catch(c){let a=c?.data?.message||"",b=h.errors[a];X.frontendLogger.error("[SvgAnimation]","Failed to generate SVG animation",{code:a}),q("NO_QUESTION_TEXT"===a?h.svgAnimation.noQuestionText:"NO_VALID_ANIMATION"===a?h.svgAnimation.invalid:"string"==typeof b?b:h.svgAnimation.failed)}finally{k(!1)}},s=async()=>{if(await (0,Y.confirmDialog)(h.svgAnimation.confirmDelete,{destructive:!0})){o(!0);try{await G.apiClient.delete(`/api/error-items/${a}/svg-animation?language=${i}`),g(i,null),q(null)}catch(a){X.frontendLogger.error("[SvgAnimation]","Failed to delete SVG animation",{error:a instanceof Error?a.message:String(a)}),Y.toast.error(h.svgAnimation.deleteFailed)}finally{o(!1)}}};if(!d)return(0,b.jsxs)("div",{className:"rounded-lg border border-dashed p-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(L,{className:"h-4 w-4"}),(0,b.jsx)("span",{children:h.svgAnimation.title})]}),(0,b.jsxs)(e.Button,{variant:"outline",size:"sm",onClick:r,disabled:j,children:[j?(0,b.jsx)(t.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,b.jsx)(L,{className:"mr-2 h-4 w-4"}),j?h.svgAnimation.generating:h.svgAnimation.generate]})]}),p&&(0,b.jsx)("p",{className:"text-xs text-destructive mt-2",children:p}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-2",children:f?h.svgAnimation.otherLanguageAvailable:h.svgAnimation.hint})]});let u=j||l;return(0,b.jsxs)("div",{className:"rounded-lg border bg-card",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2 px-3 py-2 border-b bg-muted/30",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:h.svgAnimation.title}),u&&(0,b.jsx)(t.Loader2,{className:"h-3 w-3 animate-spin text-muted-foreground"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 text-xs gap-1",onClick:r,disabled:u,children:[j?(0,b.jsx)(t.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,b.jsx)(m.RefreshCw,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:j?h.svgAnimation.generating:h.svgAnimation.regenerate})]}),(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 text-xs gap-1 text-destructive hover:text-destructive",onClick:s,disabled:u,children:[(0,b.jsx)(n.Trash2,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:h.svgAnimation.delete})]})]})]}),p&&(0,b.jsx)("p",{className:"px-3 pt-2 text-xs text-destructive",children:p}),(0,b.jsx)("div",{className:"p-2 sm:p-3",children:(0,b.jsx)(W,{svg:d})})]})}var $=a.i(533441);let _=(0,o.default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);function aa({shortId:a,className:d=""}){let{t:e}=(0,z.useLanguage)(),[f,g]=(0,c.useState)(!1);if(!a)return null;let h=async b=>{b.preventDefault(),b.stopPropagation();try{await navigator.clipboard.writeText(a),g(!0),setTimeout(()=>g(!1),1500)}catch{window.prompt(e.shortId.copy,a)}};return(0,b.jsxs)("button",{type:"button",onClick:h,title:f?e.shortId.copied:e.shortId.copy,className:`inline-flex items-center gap-1 rounded-md border bg-muted/50 px-2 py-0.5 font-mono text-xs text-muted-foreground hover:text-foreground transition-colors ${d}`,children:[(0,b.jsx)("span",{children:e.shortId.label}),(0,b.jsx)("span",{className:"font-semibold text-foreground",children:a}),f?(0,b.jsx)($.Check,{className:"h-3 w-3 text-green-600"}):(0,b.jsx)(_,{className:"h-3 w-3"})]})}var ab=a.i(131368),ac=a.i(418943);let ad=(0,o.default)("shapes",[["path",{d:"M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z",key:"1bo67w"}],["rect",{x:"3",y:"14",width:"7",height:"7",rx:"1",key:"1bkyp8"}],["circle",{cx:"17.5",cy:"17.5",r:"3.5",key:"w3z12y"}]]);function ae({errorItemId:a,onDone:d}){let{t:f}=(0,z.useLanguage)(),[g,h]=(0,c.useState)(!1),i=async()=>{h(!0);try{let b=await G.apiClient.post(`/api/error-items/${a}/figure`,{});d(b),b.figureSvg||Y.toast.warning(f.figure.noFigure)}catch(c){let a=c?.data?.message||"",b=f.errors[a];X.frontendLogger.error("[RegenerateFigure]","Failed to regenerate figure",{code:a}),Y.toast.error("NO_ORIGINAL_IMAGE"===a?f.figure.noImage:"string"==typeof b?b:f.figure.failed)}finally{h(!1)}};return(0,b.jsxs)(e.Button,{variant:"outline",size:"sm",onClick:i,disabled:g,className:"flex items-center gap-2",children:[g?(0,b.jsx)(t.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(ad,{className:"h-4 w-4"}),g?f.figure.regenerating:f.figure.regenerate]})}let af=(0,o.default)("image-plus",[["path",{d:"M16 5h6",key:"1vod17"}],["path",{d:"M19 2v6",key:"4bpg5p"}],["path",{d:"M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5",key:"1ue2ih"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}]]);var ag=a.i(797521),ah=a.i(43542);function ai({errorItemId:a,hasImage:d,onDone:f}){let{t:g}=(0,z.useLanguage)(),h=(0,c.useRef)(null),[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(null);(0,c.useEffect)(()=>()=>{k&&URL.revokeObjectURL(k)},[k]);let m=async()=>{(!d||await (0,Y.confirmDialog)(g.replaceImage.confirm))&&h.current?.click()},n=async b=>{l(null),j(!0);try{let c=new File([b],"question-image.jpg",{type:b.type||"image/jpeg"}),d=await (0,ah.processImageFile)(c),e=await G.apiClient.put(`/api/error-items/${a}/image`,{imageDataUrl:d});f(e.originalImageUrl),Y.toast.success(g.replaceImage.done)}catch(b){let a=b?.data?.message||"";X.frontendLogger.error("[ReplaceImage]","Failed to replace original image",{code:a}),Y.toast.error("INVALID_IMAGE"===a?g.replaceImage.invalid:g.replaceImage.failed)}finally{j(!1)}};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("input",{ref:h,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif",className:"hidden",onChange:a=>{(a=>{if(a){if(!a.type.startsWith("image/"))return Y.toast.error(g.replaceImage.invalid);l(URL.createObjectURL(a))}})(a.target.files?.[0]),a.target.value=""}}),k&&(0,b.jsx)(ag.ImageCropper,{imageSrc:k,open:!0,onClose:()=>l(null),onCropComplete:n}),(0,b.jsxs)(e.Button,{variant:"outline",size:"sm",onClick:m,disabled:i,className:"flex items-center gap-2",children:[i?(0,b.jsx)(t.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(af,{className:"h-4 w-4"}),i?g.replaceImage.uploading:d?g.replaceImage.replace:g.replaceImage.add]})]})}var aj=a.i(946862),ak=a.i(808406);function al({errorItemId:a,onDone:d,onSuggested:f}){let{t:g}=(0,z.useLanguage)(),[h,i]=(0,c.useState)(!1),j=async()=>{i(!0);try{if(f){let b=await G.apiClient.post(`/api/error-items/${a}/retag`,{preview:!0});f(b.tags)}else await G.apiClient.post(`/api/error-items/${a}/retag`,{}),d?.()}catch(c){let a=c?.data?.message||"",b=g.errors[a];X.frontendLogger.error("[RetagItem]","Failed to regenerate tags",{code:a}),Y.toast.error("NO_TAGS_SELECTED"===a?g.retag.noTags:"string"==typeof b?b:g.retag.itemFailed)}finally{i(!1)}};return(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:j,disabled:h,children:[h?(0,b.jsx)(t.Loader2,{className:"h-4 w-4 mr-1 animate-spin"}):(0,b.jsx)(ak.Sparkles,{className:"h-4 w-4 mr-1"}),f?h?g.retag.suggestRunning:g.retag.suggestButton:h?g.retag.itemRunning:g.retag.itemButton]})}var am=a.i(214491);function an({errorItemId:a,onDone:d}){let{t:f,language:g}=(0,z.useLanguage)(),[h,i]=(0,c.useState)(!1),j=async()=>{if(await (0,Y.confirmDialog)(f.reanswerItem.confirm)){i(!0);try{let b=await G.apiClient.post(`/api/error-items/${a}/reanswer`,{language:g},{timeout:6e5});d(b)}catch(c){let a=c?.data?.message||"",b=f.errors[a];X.frontendLogger.error("[RegenerateAnswer]","Failed to regenerate answer",{code:a}),Y.toast.error("NO_QUESTION_TEXT"===a?f.reanswerItem.noQuestionText:"string"==typeof b?b:f.reanswerItem.failed)}finally{i(!1)}}};return(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:j,disabled:h,children:[h?(0,b.jsx)(t.Loader2,{className:"h-4 w-4 mr-1 animate-spin"}):(0,b.jsx)(am.WandSparkles,{className:"h-4 w-4 mr-1"}),h?f.reanswerItem.running:f.reanswerItem.button]})}let ao=(0,o.default)("square-function",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["path",{d:"M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3",key:"m1af9g"}],["path",{d:"M9 11.2h5.7",key:"3zgcl2"}]]);var ap=a.i(948986),aq=a.i(78362);let ar=new Set(["ne","neq","nabla","nu","not","notin","ni","nexists","ngeq","nleq","nmid","nparallel","nsubseteq"]);function as(a){return a.length>80?`${a.slice(0,80)}…`:a}let at=["questionText","answerText","analysis","wrongAnswerText","mistakeAnalysis"];function au({errorItemId:a,fields:d,onDone:f}){let{t:g}=(0,z.useLanguage)(),[h,i]=(0,c.useState)(!1),j=(0,c.useMemo)(()=>Object.values(function(a){let b={};for(let c of at){let d=function(a){if(!a?.trim())return[];let{masked:b,segments:c}=(0,aq.extractMathSegments)(a),d=[];for(let a of c)try{ap.default.renderToString(a.tex,{displayMode:a.displayMode,throwOnError:!0,strict:"ignore"})}catch(c){let b=c instanceof Error?c.message.replace(/^KaTeX parse error:\s*/,""):String(c);d.push({snippet:as(a.source),message:b})}let e=b.replace(/@@MATH\d+@@/g," "),f=e.replace(/\\\$/g,"").match(/\$/g);f&&d.push({snippet:"$",message:`有 ${f.length} 个未配对的 $ 定界符`});let g=e.match(/\\[()[\]]/g);g&&d.push({snippet:g.join(" "),message:"有未配对的 \\( \\) 或 \\[ \\] 定界符"});let h=[...new Set(e.match(/\\[a-zA-Z]{2,}/g)||[])].filter(a=>!a.startsWith("\\n")||ar.has(a.slice(1)));return h.length>0&&d.push({snippet:as(h.join(" ")),message:"LaTeX 命令没有放在 $…$ 中,会原样显示"}),d}(a[c]);d.length>0&&(b[c]=d)}return b}(d)).reduce((a,b)=>a+(b?.length??0),0),[d]),k=async()=>{i(!0);try{let b=await G.apiClient.post(`/api/error-items/${a}/fix-latex`,{},{timeout:3e5});f(b.updated);let c=b.fixedFields.map(a=>g.fixLatex.fields[a]).join("、");Y.toast.info(0===b.issuesBefore?g.fixLatex.noIssues:0===b.fixedFields.length?g.fixLatex.notFixed:0===b.issuesAfter?g.fixLatex.fixedAll.replace("{fields}",c):g.fixLatex.fixedPartly.replace("{fields}",c).replace("{count}",String(b.issuesAfter)))}catch(c){let a=c?.data?.message||"",b=g.errors[a];X.frontendLogger.error("[FixLatex]","Failed to fix LaTeX",{code:a}),Y.toast.error("string"==typeof b?b:g.fixLatex.failed)}finally{i(!1)}};return 0!==j||h?(0,b.jsxs)(e.Button,{variant:"outline",size:"sm",onClick:k,disabled:h,className:"border-amber-500 text-amber-700 dark:text-amber-400",title:g.fixLatex.issuesFound.replace("{count}",String(j)),children:[h?(0,b.jsx)(t.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,b.jsx)(ao,{className:"mr-2 h-4 w-4"}),h?g.fixLatex.running:g.fixLatex.button,!h&&j>0&&(0,b.jsxs)("span",{className:"ml-1",children:["(",j,")"]})]}):null}var av=a.i(851795);a.s(["default",0,function(){let a=(0,d.useParams)(),o=(0,d.useRouter)(),{t:L,language:M}=(0,z.useLanguage)(),[N,O]=(0,c.useState)(null);(0,A.usePageTitle)(L.detail.title,N?.subject?.name,N?.shortId);let[P,Q]=(0,c.useState)(!0),[R,S]=(0,c.useState)(!1),[T,U]=(0,c.useState)(""),[V,W]=(0,c.useState)(!1),[$,_]=(0,c.useState)(!1),[ad,af]=(0,c.useState)([]),[ag,ah]=(0,c.useState)(!1),[ak,am]=(0,c.useState)(""),[ao,ap]=(0,c.useState)("a"),[aq,ar]=(0,c.useState)(null),[as,at]=(0,c.useState)(void 0),[aw,ax]=(0,c.useState)(!1),[ay,az]=(0,c.useState)(null),[aA,aB]=(0,c.useState)(!1),[aC,aD]=(0,c.useState)(!0),[aE,aF]=(0,c.useState)(!1),[aG,aH]=(0,c.useState)(!1),[aI,aJ]=(0,c.useState)(!1),[aK,aL]=(0,c.useState)(!1),aM=(0,c.useRef)(null);(0,c.useEffect)(()=>{G.apiClient.get("/api/user").then(a=>{a&&a.educationStage&&at(a.educationStage),aB(!!a?.enableGeogebra),aD(a?.enableSvgAnimation!==!1)}).catch(a=>console.error("Failed to fetch user info:",a)),a.id&&aO(a.id)},[a.id]);let aN=(0,c.useCallback)(a=>{O(b=>b&&b.masteryLevel!==a?{...b,masteryLevel:a}:b)},[]),aO=async a=>{try{let b=await G.apiClient.get(`/api/error-items/${a}`);O(b)}catch(a){console.error(a),Y.toast.error(L.common?.messages?.loadFailed||"Failed to load item"),o.push("/notebooks")}finally{Q(!1)}},aP=async()=>{if(N){ax(!0),az(null);try{let a=await G.apiClient.post(`/api/error-items/${N.id}/geogebra`,{});a.suitable&&a.commands.length>0?O({...N,geogebraCommands:JSON.stringify(a.commands)}):az(a.description||"该题目不适合用 GeoGebra 演示")}catch(b){console.error("GeoGebra analysis failed:",b);let a=b?.data?.message||b?.message||"";a.includes("AI_AUTH_ERROR")?az("AI 认证失败,请检查设置"):a.includes("AI_CONNECTION")?az("AI 连接失败,请检查网络"):az("分析失败,请稍后重试")}finally{ax(!1)}}},[aQ,aR]=(0,c.useState)(!1),aS=async a=>{if(!N)return;let b=N.difficultyStars??null;O({...N,difficultyStars:a}),aR(!0);try{let b=await G.apiClient.put(`/api/error-items/${N.id}`,{difficultyStars:a});O(a=>a&&{...a,paperLevel:b.paperLevel})}catch(a){O(a=>a&&{...a,difficultyStars:b}),X.frontendLogger.error("[ErrorDetail]","Failed to save difficulty",{error:a instanceof Error?a.message:String(a)}),Y.toast.error(L.difficulty.saveFailed)}finally{aR(!1)}},aT=async a=>{N&&(await G.apiClient.put(`/api/error-items/${N.id}`,{geogebraCommands:a}),O({...N,geogebraCommands:a}))},aU=async()=>{N&&(await G.apiClient.delete(`/api/error-items/${N.id}/geogebra`),O(a=>a&&{...a,geogebraCommands:null}))},aV=(0,c.useCallback)(a=>{O(b=>b&&{...b,answerText:a.answerText??"",analysis:a.analysis??""})},[]),aW=(0,c.useCallback)(a=>{O(b=>b&&{...b,...a})},[]),aX=(0,c.useCallback)((a,b)=>{O(c=>c&&{...c,["en"===a?"svgAnimationEn":"svgAnimation"]:b})},[]),aY=async()=>{if(!N)return;let a=N.masteryLevel>0?0:1;try{await G.apiClient.patch(`/api/error-items/${N.id}/mastery`,{masteryLevel:a}),O({...N,masteryLevel:a}),Y.toast.success(a>0?L.common?.messages?.markMastered||"Marked as mastered":L.common?.messages?.unmarkMastered||"Unmarked")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.updateFailed||"Update failed")}},aZ=async()=>{if(!N)return;let a=L.common?.messages?.confirmDelete||"Are you sure you want to delete this error item?";if(await (0,Y.confirmDialog)(a,{destructive:!0}))try{await G.apiClient.delete(`/api/error-items/${N.id}/delete`),Y.toast.success(L.common?.messages?.deleteSuccess||"Deleted successfully"),N.subjectId?o.push(`/notebooks/${N.subjectId}`):o.push("/notebooks")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.deleteFailed||"Delete failed")}},a$=async()=>{try{await G.apiClient.put(`/api/error-items/${N?.id}`,{knowledgePoints:ad}),_(!1),await aO(a.id),Y.toast.success(L.common?.messages?.tagUpdateSuccess||"Tags updated successfully!")}catch(a){console.error("[Frontend] Error updating:",a),Y.toast.error(L.common?.messages?.updateFailed||"Update failed")}},a_=async()=>{try{await G.apiClient.put(`/api/error-items/${N?.id}`,{subjectId:aq||null,gradeSemester:ak,paperLevel:ao}),ah(!1),aO(a.id),Y.toast.success(L.common?.messages?.metaUpdateSuccess||"Metadata updated successfully!")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.updateFailed||"Update failed")}},[a0,a1]=(0,c.useState)(!1),[a2,a3]=(0,c.useState)(""),[a4,a5]=(0,c.useState)(!1),[a6,a7]=(0,c.useState)(""),[a8,a9]=(0,c.useState)(!1),[ba,bb]=(0,c.useState)(""),[bc,bd]=(0,c.useState)(!1),[be,bf]=(0,c.useState)(!1),[bg,bh]=(0,c.useState)(""),[bi,bj]=(0,c.useState)(""),[bk,bl]=(0,c.useState)("unknown"),bm=async()=>{try{await G.apiClient.put(`/api/error-items/${N?.id}`,{questionText:a2}),a1(!1),N&&O({...N,questionText:a2}),Y.toast.success(L.common?.messages?.saveSuccess||"Saved successfully")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.saveFailed||"Save failed")}},bn=async()=>{try{await G.apiClient.put(`/api/error-items/${N?.id}`,{answerText:a6}),a5(!1),N&&O({...N,answerText:a6}),Y.toast.success(L.common?.messages?.saveSuccess||"Saved successfully")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.saveFailed||"Save failed")}},bo=async()=>{try{await G.apiClient.put(`/api/error-items/${N?.id}`,{analysis:ba}),a9(!1),N&&O({...N,analysis:ba}),Y.toast.success(L.common?.messages?.saveSuccess||"Saved successfully")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.saveFailed||"Save failed")}},bp=async()=>{if(N)try{let a=(0,I.normalizeMistakeStatusForSave)(bk,bg);await G.apiClient.put(`/api/error-items/${N.id}`,{wrongAnswerText:bg,mistakeStatus:a}),bd(!1),O(b=>b&&{...b,wrongAnswerText:bg,mistakeStatus:a}),Y.toast.success(L.common?.messages?.saveSuccess||"Saved successfully")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.saveFailed||"Save failed")}},bq=async()=>{if(N)try{await G.apiClient.put(`/api/error-items/${N.id}`,{mistakeAnalysis:bi}),bf(!1),O(a=>a&&{...a,mistakeAnalysis:bi}),Y.toast.success(L.common?.messages?.saveSuccess||"Saved successfully")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.saveFailed||"Save failed")}},br=async()=>{if(N)try{await G.apiClient.patch(`/api/error-items/${N.id}/notes`,{userNotes:T}),O({...N,userNotes:T}),S(!1),Y.toast.success(L.common?.messages?.noteSaveSuccess||"Notes saved successfully")}catch(a){console.error(a),Y.toast.error(L.common?.messages?.saveFailed||"Save failed")}};if((0,c.useEffect)(()=>{let a=()=>{aM.current&&(aM.current.getBoundingClientRect().bottom<-50?aL(!0):aL(!1))};return window.addEventListener("scroll",a,{passive:!0}),a(),()=>window.removeEventListener("scroll",a)},[]),P)return(0,b.jsx)(g.PageLoading,{label:L.common.loading});if(!N)return(0,b.jsx)(f.EmptyState,{icon:w,title:L.detail.notFound||"Item not found",className:"m-4 md:m-8"});let bs=[];if(N.tags&&N.tags.length>0)bs=N.tags.map(a=>a.name);else if(N.knowledgePoints)try{let a=JSON.parse(N.knowledgePoints);bs=Array.isArray(a)?a:[]}catch(a){bs=[]}return(0,b.jsxs)("main",{className:"min-h-screen",children:[(0,b.jsxs)("div",{className:"mx-auto max-w-6xl space-y-6 px-4 py-6 md:px-8 md:py-8",children:[(0,b.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-start md:items-center gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-2",children:[(0,b.jsx)(y.default,{href:N.subjectId?`/notebooks/${N.subjectId}`:"/notebooks",children:(0,b.jsx)(e.Button,{variant:"ghost",size:"icon",className:"-ml-2",children:(0,b.jsx)(j.ArrowLeft,{className:"h-5 w-5"})})}),(0,b.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:L.detail.title}),(0,b.jsx)(aa,{shortId:N.shortId}),(0,b.jsx)(ab.DifficultyStars,{size:"md",value:N.difficultyStars,onChange:aS,disabled:aQ})]}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(au,{errorItemId:N.id,fields:N,onDone:aW}),(0,b.jsx)(y.default,{href:`/practice?id=${N.id}`,children:(0,b.jsxs)(e.Button,{variant:"outline",size:"sm",children:[(0,b.jsx)(m.RefreshCw,{className:"mr-2 h-4 w-4"}),L.detail.practice]})}),(0,b.jsx)(e.Button,{size:"sm",variant:(N.masteryLevel,"default"),className:N.masteryLevel>0?"bg-success text-white hover:bg-success/90":"",onClick:aY,children:N.masteryLevel>0?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(k.CheckCircle,{className:"mr-2 h-4 w-4"}),L.detail.mastered]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(l.XCircle,{className:"mr-2 h-4 w-4"}),L.detail.markMastered]})}),(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:aZ,className:"text-red-600 hover:text-red-700 hover:bg-red-50",children:[(0,b.jsx)(n.Trash2,{className:"mr-2 h-4 w-4"}),L.detail.delete||"Delete"]})]})]}),(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)(h.CardTitle,{children:L.detail.question}),!a0&&(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{N&&(a3(N.questionText),a1(!0))},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]})}),(0,b.jsxs)(h.CardContent,{className:"space-y-4",children:[a0?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(C.MarkdownEditor,{value:a2,onChange:a3,placeholder:"Enter question text...",rows:8,className:"w-full font-mono text-sm"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:bm,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{a1(!1),a3("")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]})]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(B.MarkdownRenderer,{content:N.questionText}),(0,b.jsx)(ac.QuestionFigure,{svg:N.figureSvg})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)("h4",{className:"text-sm font-semibold",children:L.editor?.tags||"Knowledge Tags"}),!$&&(0,b.jsxs)("div",{className:"flex",children:[(0,b.jsx)(al,{errorItemId:N.id,onDone:()=>aO(N.id)}),(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{if(N){if(N.tags&&N.tags.length>0)af(N.tags.map(a=>a.name));else if(N.knowledgePoints)try{let a=JSON.parse(N.knowledgePoints);af(a)}catch(a){af([])}else af([]);_(!0)}},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]})]}),$?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(D.TagInput,{value:ad,onChange:af,placeholder:L.editor?.tagsPlaceholder||"Enter or select knowledge tags...",subject:(0,H.inferSubjectFromName)(N.subject?.name||null)||void 0,gradeStage:as}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:L.editor?.tagsHint||"Select from standard or custom tags"}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:a$,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{_(!1),af([])},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]}),(0,b.jsx)(al,{errorItemId:N.id,onSuggested:af})]})]}):(0,b.jsx)("div",{className:"flex flex-wrap gap-2",children:bs.map(a=>(0,b.jsx)(i.Badge,{variant:"secondary",children:a},a))})]}),(0,b.jsxs)("div",{className:"space-y-2 pt-4 border-t",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)("h4",{className:"text-sm font-semibold",children:L.detail?.questionInfo||"Question Info"}),!ag&&(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{N&&(ar(N.subjectId||null),am(N.gradeSemester||""),ap(N.paperLevel||(0,av.getDefaultPaperLevel)(N.difficultyStars)||"a"),ah(!0))},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]}),ag?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground",children:L.notebooks?.title||"Notebook"}),(0,b.jsx)(J.NotebookSelector,{value:aq||void 0,onChange:ar})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground",children:L.filter.grade}),(0,b.jsx)(E.Input,{value:ak,onChange:a=>am(a.target.value),placeholder:L.notebook?.gradeSemesterPlaceholder||"e.g. Grade 7, Semester 1"})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground",children:L.filter.paperLevel}),(0,b.jsxs)(F.Select,{value:ao,onValueChange:ap,children:[(0,b.jsx)(F.SelectTrigger,{children:(0,b.jsx)(F.SelectValue,{})}),(0,b.jsxs)(F.SelectContent,{children:[(0,b.jsx)(F.SelectItem,{value:"a",children:L.editor.paperLevels?.a||"Paper A"}),(0,b.jsx)(F.SelectItem,{value:"b",children:L.editor.paperLevels?.b||"Paper B"}),(0,b.jsx)(F.SelectItem,{value:"other",children:L.editor.paperLevels?.other||"Other"})]})]})]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:a_,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{ah(!1),ar(null),am(""),ap("a")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]})]})]}):(0,b.jsxs)("div",{className:"space-y-2 text-sm",children:[(0,b.jsxs)("div",{className:"flex justify-between",children:[(0,b.jsxs)("span",{className:"text-muted-foreground",children:[L.notebooks?.title||"Notebook",":"]}),(0,b.jsx)("span",{className:"font-medium",children:N.subject?.name||L.common?.notSet||"Not set"})]}),(0,b.jsxs)("div",{className:"flex justify-between",children:[(0,b.jsxs)("span",{className:"text-muted-foreground",children:[L.filter.grade,":"]}),(0,b.jsx)("span",{className:"font-medium",children:N.gradeSemester||L.common?.notSet||"Not set"})]}),(0,b.jsxs)("div",{className:"flex justify-between",children:[(0,b.jsxs)("span",{className:"text-muted-foreground",children:[L.filter.paperLevel,":"]}),(0,b.jsx)("span",{className:"font-medium",children:N.paperLevel?L.editor.paperLevels?.[N.paperLevel]||N.paperLevel:L.common?.notSet||"Not set"})]})]})]}),(0,b.jsxs)("div",{className:"pt-3",children:[(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[N.originalImageUrl&&(0,b.jsx)(e.Button,{variant:"outline",size:"sm",onClick:()=>aF(!aE),className:"flex items-center gap-2",children:aE?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(u.EyeOff,{className:"h-4 w-4"}),L.replaceImage?.hide||"Hide original image"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(v,{className:"h-4 w-4"}),L.replaceImage?.view||"View original image"]})}),(0,b.jsx)(ai,{errorItemId:N.id,hasImage:!!N.originalImageUrl,onDone:a=>{O(b=>b&&{...b,originalImageUrl:a}),aF(!0)}}),N.originalImageUrl&&(0,b.jsx)(ae,{errorItemId:N.id,onDone:a=>O(b=>b&&{...b,...a})})]}),N.originalImageUrl&&aE&&(0,b.jsxs)("div",{className:"mt-4",children:[(0,b.jsx)("img",{src:N.originalImageUrl,alt:L.detail.originalProblem||"Original Problem",className:"w-full rounded-lg border cursor-pointer hover:opacity-90 transition-opacity",onClick:()=>W(!0)}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-1 text-center",children:L.detail?.clickToEnlarge||"Click to enlarge"})]})]})]})]}),(0,b.jsx)(aj.MasteryPanel,{errorItemId:N.id,onMasteryLevelChange:aN}),(0,b.jsxs)("div",{className:"grid gap-6 lg:grid-cols-2",children:[(0,b.jsxs)(h.Card,{className:"border-primary/20",children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)(h.CardTitle,{className:"text-primary",children:L.detail.correctAnswer}),!a4&&(0,b.jsxs)("div",{className:"flex flex-wrap justify-end",children:[(0,b.jsx)(an,{errorItemId:N.id,onDone:aV}),(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{N&&(a7(N.answerText),a5(!0))},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]})]})}),(0,b.jsxs)(h.CardContent,{className:"space-y-4",children:[a4?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(C.MarkdownEditor,{value:a6,onChange:a7,placeholder:"Enter answer...",rows:5,className:"w-full font-mono text-sm"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:bn,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{a5(!1),a7("")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]})]})]}):(0,b.jsx)(B.MarkdownRenderer,{content:N.answerText,className:"font-semibold"}),N.referenceImageUrl&&(0,b.jsxs)("div",{className:"pt-3",children:[(0,b.jsx)(e.Button,{variant:"ghost",size:"sm",onClick:()=>aH(!aG),className:"flex items-center gap-2 text-muted-foreground",children:aG?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(u.EyeOff,{className:"h-4 w-4"}),"隐藏图片"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(v,{className:"h-4 w-4"}),"查看图片"]})}),aG&&(0,b.jsxs)("div",{className:"mt-4",children:[(0,b.jsx)("img",{src:N.referenceImageUrl,alt:"参考图片",className:"w-full rounded-lg border cursor-pointer hover:opacity-90 transition-opacity",onClick:()=>W(!0)}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-1 text-center",children:L.detail?.clickToEnlarge||"Click to enlarge"})]})]})]})]}),(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)(h.CardTitle,{children:L.editor?.wrongAnswerText||"我的答案"}),!bc&&(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{N&&(bh(N.wrongAnswerText||""),bl(N.mistakeStatus||"unknown"),bd(!0))},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]})}),(0,b.jsx)(h.CardContent,{className:"space-y-4",children:bc?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground",children:L.editor?.mistakeStatus||"作答状态"}),(0,b.jsxs)(F.Select,{value:bk,onValueChange:bl,children:[(0,b.jsx)(F.SelectTrigger,{children:(0,b.jsx)(F.SelectValue,{})}),(0,b.jsxs)(F.SelectContent,{children:[(0,b.jsx)(F.SelectItem,{value:"not_attempted",children:L.editor?.mistakeStatuses?.notAttempted||"不会做"}),(0,b.jsx)(F.SelectItem,{value:"wrong_attempt",children:L.editor?.mistakeStatuses?.wrongAttempt||"做错了"}),(0,b.jsx)(F.SelectItem,{value:"unknown",children:L.editor?.mistakeStatuses?.unknown||"未判断"})]})]})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground",children:L.editor?.wrongAnswerText||"错误解答原文"}),(0,b.jsx)(C.MarkdownEditor,{value:bg,onChange:a=>{bh(a),a.trim()&&bl("wrong_attempt")},rows:5,className:"w-full font-mono text-sm"})]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:bp,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{bd(!1),bh(""),bl("unknown")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]})]})]}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(i.Badge,{variant:"secondary",children:(0,I.getMistakeStatusLabel)(N.mistakeStatus,M)}),N.wrongAnswerText?(0,b.jsx)(B.MarkdownRenderer,{content:N.wrongAnswerText}):(0,b.jsx)("p",{className:"text-sm text-muted-foreground italic",children:L.detail?.noMistakeAnalysis||"暂无错误解答"}),N.wrongAnswerImageUrl&&(0,b.jsxs)("div",{className:"pt-3",children:[(0,b.jsx)(e.Button,{variant:"ghost",size:"sm",onClick:()=>aJ(!aI),className:"flex items-center gap-2 text-muted-foreground",children:aI?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(u.EyeOff,{className:"h-4 w-4"}),"隐藏图片"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(v,{className:"h-4 w-4"}),"查看图片"]})}),aI&&(0,b.jsxs)("div",{className:"mt-4",children:[(0,b.jsx)("img",{src:N.wrongAnswerImageUrl,alt:"我的答案图片",className:"w-full rounded-lg border cursor-pointer hover:opacity-90 transition-opacity",onClick:()=>W(!0)}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-1 text-center",children:L.detail?.clickToEnlarge||"Click to enlarge"})]})]})]})})]})]}),(0,b.jsxs)("div",{className:"grid gap-6 lg:grid-cols-2",children:[(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)(h.CardTitle,{children:L.detail.analysis}),!a8&&(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{N&&(bb(N.analysis),a9(!0))},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]})}),(0,b.jsx)(h.CardContent,{children:a8?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(C.MarkdownEditor,{value:ba,onChange:bb,placeholder:"Enter analysis...",rows:12,className:"w-full font-mono text-sm"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:bo,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{a9(!1),bb("")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]})]})]}):(0,b.jsx)(B.MarkdownRenderer,{content:N.analysis})})]}),(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)(h.CardTitle,{children:L.detail?.mistakeAnalysis||"错因分析"}),!be&&(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{N&&(bj(N.mistakeAnalysis||""),bf(!0))},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.common?.edit||"Edit"]})]})}),(0,b.jsx)(h.CardContent,{children:be?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground",children:L.editor?.mistakeAnalysis||"错因分析"}),(0,b.jsx)(C.MarkdownEditor,{value:bi,onChange:bj,rows:8,className:"w-full font-mono text-sm"})]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:bq,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common?.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{bf(!1),bj("")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common?.cancel||"Cancel"]})]})]}):N.mistakeAnalysis?(0,b.jsx)(B.MarkdownRenderer,{content:N.mistakeAnalysis}):(0,b.jsx)("p",{className:"text-sm text-muted-foreground italic",children:L.detail?.noMistakeAnalysis||"暂无错因分析"})})]})]}),(0,b.jsxs)("div",{className:"space-y-6",children:[aC&&(0,b.jsx)(Z,{errorItemId:N.id,svgAnimation:"en"===M?N.svgAnimationEn:N.svgAnimation,hasOtherLanguage:!!("en"===M?N.svgAnimation:N.svgAnimationEn),onChange:aX},M),aA&&(N.geogebraCommands?(0,b.jsx)(K.GeogebraDemo,{commands:N.geogebraCommands,height:700,showToolBar:!0,showAlgebraInput:!1,showMenuBar:!1,onRegenerate:aP,onSaveCommands:aT,onDelete:aU}):(0,b.jsxs)("div",{className:"rounded-lg border border-dashed p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(s.Box,{className:"h-4 w-4"}),(0,b.jsx)("span",{children:"GeoGebra 动态演示"})]}),(0,b.jsx)(e.Button,{variant:"outline",size:"sm",onClick:()=>aP(),disabled:aw,children:aw?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(t.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),"AI 分析中..."]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s.Box,{className:"mr-2 h-4 w-4"}),"生成演示"]})})]}),ay&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-2",children:ay}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-2",children:"AI 将判断本题是否可以用 GeoGebra 进行动态演示,如适合则自动生成交互式图形"})]})),(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex justify-between items-center",children:[(0,b.jsx)(h.CardTitle,{children:L.detail.yourNotes}),!R&&(0,b.jsxs)(e.Button,{variant:"ghost",size:"sm",onClick:()=>{U(N?.userNotes||""),S(!0)},children:[(0,b.jsx)(p,{className:"h-4 w-4 mr-1"}),L.detail.editNotes||"Edit"]})]})}),(0,b.jsx)(h.CardContent,{children:R?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(x.Textarea,{value:T,onChange:a=>U(a.target.value),placeholder:L.detail.notesPlaceholder||"Enter your notes...",rows:5,className:"w-full"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(e.Button,{size:"sm",onClick:br,children:[(0,b.jsx)(q.Save,{className:"h-4 w-4 mr-1"}),L.common.save||"Save"]}),(0,b.jsxs)(e.Button,{size:"sm",variant:"outline",onClick:()=>{S(!1),U("")},children:[(0,b.jsx)(r.X,{className:"h-4 w-4 mr-1"}),L.common.cancel||"Cancel"]})]})]}):(0,b.jsx)("div",{className:"whitespace-pre-wrap",children:N.userNotes?(0,b.jsx)("p",{className:"text-foreground",children:N.userNotes}):(0,b.jsx)("p",{className:"text-muted-foreground italic",children:L.detail.noNotes})})})]})]})]}),V&&N?.originalImageUrl&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 bg-black/90 flex items-center justify-center p-4",onClick:()=>W(!1),children:(0,b.jsxs)("div",{className:"relative max-w-7xl max-h-full",children:[(0,b.jsx)("button",{className:"absolute -top-12 right-0 text-white hover:text-gray-300 text-lg font-semibold bg-black/50 px-4 py-2 rounded",onClick:()=>W(!1),children:L.detail?.close||"✕ Close"}),(0,b.jsx)("img",{src:N.originalImageUrl,alt:"Full size",className:"max-w-full max-h-[90vh] object-contain rounded-lg",onClick:a=>a.stopPropagation()}),(0,b.jsx)("p",{className:"text-center text-white/70 text-sm mt-4",children:L.detail?.clickOutside||"Click outside to close"})]})})]})}],273773)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_app_error-items_%5Bid%5D_page_tsx_04xwwdm._.js.map
|