wrong-notebook 2026.10.22-4 → 2026.10.23
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/app-path-routes-manifest.json +0 -1
- package/.next/build-manifest.json +8 -8
- package/.next/prerender-manifest.json +4 -4
- package/.next/routes-manifest.json +0 -8
- 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 +10 -4
- package/.next/server/app/api/admin/dashboard/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/migrate-tags/route.js +3 -3
- package/.next/server/app/api/admin/migrate-tags/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/system-reset/route.js +4 -4
- 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 +11 -4
- 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 +3 -3
- package/.next/server/app/api/admin/users/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/users/route.js +3 -3
- package/.next/server/app/api/admin/users/route.js.nft.json +1 -1
- package/.next/server/app/api/ai/models/route.js +7 -7
- package/.next/server/app/api/ai/models/route.js.nft.json +1 -1
- package/.next/server/app/api/ai/test/route.js +8 -8
- package/.next/server/app/api/ai/test/route.js.nft.json +1 -1
- package/.next/server/app/api/analytics/route.js +5 -5
- package/.next/server/app/api/analytics/route.js.nft.json +1 -1
- package/.next/server/app/api/analyze/route.js +9 -9
- package/.next/server/app/api/analyze/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/[...nextauth]/route.js +3 -3
- package/.next/server/app/api/auth/[...nextauth]/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/delete/route.js +4 -4
- 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 +8 -8
- 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 +9 -9
- 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 +7 -7
- 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 +4 -4
- package/.next/server/app/api/error-items/[id]/image/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/notes/route.js +4 -4
- 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 +4 -4
- 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 +10 -10
- 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 +8 -8
- 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 +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 +10 -10
- 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 +4 -4
- 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 +4 -4
- package/.next/server/app/api/error-items/clear/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/list/route.js +6 -6
- package/.next/server/app/api/error-items/list/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/route.js +10 -10
- package/.next/server/app/api/error-items/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/short/[shortId]/route.js +3 -3
- 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 +4 -4
- 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 +9 -9
- 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 +7 -7
- package/.next/server/app/api/exams/[id]/results/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/[id]/retry/route.js +9 -9
- package/.next/server/app/api/exams/[id]/retry/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/[id]/route.js +7 -7
- package/.next/server/app/api/exams/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/route.js +9 -9
- package/.next/server/app/api/exams/route.js.nft.json +1 -1
- package/.next/server/app/api/export/route.js +4 -4
- package/.next/server/app/api/export/route.js.nft.json +1 -1
- package/.next/server/app/api/geogebra-analyze/route.js +7 -7
- 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 +9 -9
- package/.next/server/app/api/import/route.js.nft.json +1 -1
- package/.next/server/app/api/logs/frontend/route.js +4 -4
- package/.next/server/app/api/logs/frontend/route.js.nft.json +1 -1
- package/.next/server/app/api/notebooks/[id]/retag/route.js +5 -5
- package/.next/server/app/api/notebooks/[id]/retag/route.js.nft.json +1 -1
- package/.next/server/app/api/notebooks/[id]/route.js +4 -4
- package/.next/server/app/api/notebooks/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/notebooks/route.js +3 -3
- package/.next/server/app/api/notebooks/route.js.nft.json +1 -1
- package/.next/server/app/api/openclaw/batch-upload/route.js +9 -9
- package/.next/server/app/api/openclaw/batch-upload/route.js.nft.json +1 -1
- package/.next/server/app/api/practice/generate/route.js +7 -7
- package/.next/server/app/api/practice/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/practice/record/[id]/route.js +7 -7
- package/.next/server/app/api/practice/record/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/practice/record/route.js +9 -9
- package/.next/server/app/api/practice/record/route.js.nft.json +1 -1
- package/.next/server/app/api/reanswer/route.js +9 -9
- 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 +5 -5
- package/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/stats/practice/clear/route.js +4 -4
- package/.next/server/app/api/stats/practice/clear/route.js.nft.json +1 -1
- package/.next/server/app/api/stats/practice/route.js +3 -3
- package/.next/server/app/api/stats/practice/route.js.nft.json +1 -1
- package/.next/server/app/api/tags/route.js +4 -4
- package/.next/server/app/api/tags/route.js.nft.json +1 -1
- package/.next/server/app/api/tags/stats/route.js +4 -4
- package/.next/server/app/api/tags/stats/route.js.nft.json +1 -1
- package/.next/server/app/api/tags/suggestions/route.js +3 -3
- package/.next/server/app/api/tags/suggestions/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/route.js +4 -4
- package/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/.next/server/app/api/user/route.js +4 -4
- 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/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/app-paths-manifest.json +0 -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]__0jzwjtl._.js +3 -0
- package/.next/server/chunks/[externals]__0pot68n._.js +1 -1
- package/.next/server/chunks/[externals]_assert_1pwe1ri._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0-2l_pu._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__00_hq9v._.js +6 -6
- package/.next/server/chunks/[root-of-the-server]__00moo9h._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__012xcq-._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__01bzczj._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__02pqrw_._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__033ri9p._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__04pjde6._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__064krqp._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__07iraov._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__07jl92a._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__07q7nsp._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0_t7bbz._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0_unb90._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0a1zwxf._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0aefi10._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0akadps._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0cfjgye._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0d-37yj._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0d2kpnm._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0dqgi36._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0dz5c04._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0e_u82_._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0f3jyg0._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0gwwa9b._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0hars8c._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0iozebm._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0k-5uu2._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0k3mm05._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0l-xu_t._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0lggrcf._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0m0eall._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0m37xyb._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0m8p-6f._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0pa47kn._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0r42_o7._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0rgjh3q._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0rk_yxy._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__0scij0p._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0sixhu9._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0sj18kk._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0sp4_zo._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0t2o8v-._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0w58v6b._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0wp40ty._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0wsj4a_._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0wvvsah._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0xg5h56._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0zpazf3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__10hs-qn._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__119xork._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__11_-ncy._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__11jhplo._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__122xu-0._.js +9 -9
- package/.next/server/chunks/[root-of-the-server]__15tkoe6._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__15y1l96._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__16hnc6-._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__17i9sje._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__19_wn9u._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1_gkx5x._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1_hp3ol._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1_ogacf._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1a4-26x._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1b6i9mu._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1b_y2wk._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1bl7t8i._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1c0vatt._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1c7a0rs._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1chx4lo._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1cngnud._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1d82zkk._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1ezju_2._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1fc23i5._.js +122 -0
- package/.next/server/chunks/[root-of-the-server]__1flnfu4._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1gya7jq._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1hng_h2._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1i40psm._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1ijkds_._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1j4v2e3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1jtd2ar._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__1kpo44g._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1lbcdia._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1m86czr._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1mnpqkx._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1n4b6nb._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1nmrlew._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1nmtv65._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1o34kp3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1q7yl7l._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1qv60vg._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1ry8uat._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1s2rww3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1svvf40._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1tk0-4v._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1v-71me._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1vw740y._.js +9 -9
- package/.next/server/chunks/[root-of-the-server]__1x_ud_-._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1yt_xxr._.js +3 -0
- 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/_0ekrwj-._.js +6 -6
- package/.next/server/chunks/_0gwg6ba._.js +1 -1
- package/.next/server/chunks/_0gxi3zr._.js +1 -1
- package/.next/server/chunks/_0lz3t4l._.js +2 -2
- package/.next/server/chunks/_0n36ev0._.js +3 -0
- package/.next/server/chunks/_0oc8oe4._.js +3 -0
- package/.next/server/chunks/_0rjzgi0._.js +3 -0
- package/.next/server/chunks/_0uxp3uh._.js +1 -1
- package/.next/server/chunks/_0x3ltk0._.js +6 -6
- package/.next/server/chunks/_10y361h._.js +3 -0
- 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/_15neond._.js +11 -0
- 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/_1ex6ovo._.js +1 -1
- package/.next/server/chunks/_1fgb9ve._.js +1 -1
- package/.next/server/chunks/_1m-yyz-._.js +1 -1
- package/.next/server/chunks/_1n1xsqj._.js +3 -0
- 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/_2194yr7._.js +11 -0
- 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]_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 +3 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__03psbtz._.js +3 -0
- 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]__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]__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]__0skyo1a._.js +3 -0
- 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/_07ls0n_._.js +1 -1
- package/.next/server/chunks/ssr/_0i9hwpv._.js +1 -1
- 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/_11ut-6_._.js +3 -0
- package/.next/server/chunks/ssr/_17igtpd._.js +1 -1
- package/.next/server/chunks/ssr/_1aot_70._.js +3 -0
- package/.next/server/chunks/ssr/_1filpif._.js +3 -0
- 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 +5 -5
- 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/chunks/03gmdewlo3s6u.js +1 -0
- package/.next/static/chunks/06q8lm6y95ac4.css +1 -0
- package/.next/static/chunks/0_w084ms_lq25.js +22 -0
- package/.next/static/chunks/0dzfsm6h13fyr.js +1 -0
- package/.next/static/chunks/0ehjiuuxbbhq9.js +1 -0
- package/.next/static/chunks/0ij2dqb0qj5ry.js +1 -0
- package/.next/static/chunks/0iq53qkw5hvrs.js +1 -0
- package/.next/static/chunks/0m81l71kojx8j.js +1 -0
- package/.next/static/chunks/0nckb2-62ooyq.js +1 -0
- package/.next/static/chunks/0pwdmc9gw8ben.js +33 -0
- package/.next/static/chunks/0snej-v5yglxr.js +1 -0
- package/.next/static/chunks/1-7k9gbbjkcml.js +1 -0
- package/.next/static/chunks/1c92up8k2x0z4.js +1 -0
- package/.next/static/chunks/1cd32rtomdngh.js +1 -0
- package/.next/static/chunks/1io3-cth_2-cd.js +1 -0
- package/.next/static/chunks/1oiuiyv1cv06v.js +31 -0
- package/.next/static/chunks/1t4-pobw0y5cf.js +1 -0
- package/.next/static/chunks/1xg811762s1p1.js +1 -0
- package/.next/static/chunks/1z_5sj1wqi06v.js +1 -0
- package/.next/static/chunks/24dymggis4suf.css +3 -0
- package/.next/static/chunks/24jbwfpgmio7x.js +1 -0
- package/.next/static/chunks/27fr34_1v7xyh.js +1 -0
- package/.next/static/chunks/2dlme2fdlkms6.js +1 -0
- package/.next/static/chunks/2eu_bls12m1wj.js +1 -0
- package/.next/static/chunks/2pmzqbg-qabof.js +1 -0
- package/.next/static/chunks/2w2uo9jjxt-re.js +1 -0
- package/.next/static/chunks/2x8e_fbze06sd.js +1 -0
- package/.next/static/chunks/2z1_5umv36es6.js +191 -0
- package/.next/static/chunks/32bl-oqw9oso0.js +1 -0
- package/.next/static/chunks/3b-g5_r9nto3s.js +6 -0
- package/.next/static/chunks/3g1rm2suowncy.js +3 -0
- package/.next/static/chunks/3helovsg02qr4.js +1 -0
- package/.next/static/chunks/3jta6jrk-jubq.js +1 -0
- package/.next/static/chunks/3m4c1r8_2ga_1.js +1 -0
- package/.next/static/chunks/3whzkc6d8oefw.js +1 -0
- package/.next/static/chunks/3yhf6xyypekz6.js +1 -0
- package/.next/static/chunks/3z9gc_02gl8n9.js +1 -0
- package/.next/static/chunks/427wg73nuzpiz.js +5 -0
- package/.next/static/chunks/turbopack-1-0r7_puvz3eq.js +1 -0
- package/launcher.js +22 -6
- package/package.json +1 -1
- package/prisma/seed.db +0 -0
- package/.next/server/app/api/error-items/[id]/mastery/route/app-paths-manifest.json +0 -3
- package/.next/server/app/api/error-items/[id]/mastery/route/build-manifest.json +0 -12
- package/.next/server/app/api/error-items/[id]/mastery/route/server-reference-manifest.json +0 -4
- package/.next/server/app/api/error-items/[id]/mastery/route.js +0 -8
- package/.next/server/app/api/error-items/[id]/mastery/route.js.map +0 -5
- package/.next/server/app/api/error-items/[id]/mastery/route.js.nft.json +0 -1
- package/.next/server/app/api/error-items/[id]/mastery/route_client-reference-manifest.js +0 -3
- package/.next/server/chunks/[externals]__1735khz._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__02j1w81._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__03nfvnm._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__04tyyvs._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__05s4wut._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__06_nln5._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__06h5afw._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0be5c5r._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0bqawi0._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0bsw5c9._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0c59gc3._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0cmxmwt._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0d5dpu4._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0d9ijed._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0e22a4y._.js +0 -122
- package/.next/server/chunks/[root-of-the-server]__0fnyu4s._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0gp88gz._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0inxsnu._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0j5231l._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0jaawra._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0k-nf6a._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0k-p1pj._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0lrdm1u._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0lro5a7._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0mfjf2y._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0mqorxb._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0no6umu._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0nqbham._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0o9gtvd._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0obb4y-._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0p3u6_q._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0rmrkd_._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0tdibjz._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0u58zap._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0vhjihq._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0vz88er._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0wf9znr._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0yc8r2x._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0zv7jom._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__11_1z7m._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__11n87go._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__11p4ahb._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__131taws._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__13ebiit._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1413v0e._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__14dnbrn._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__14jqm9_._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__152lbaw._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__16begv4._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__17duis5._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__17q3k-v._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__184u6de._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__18atlj8._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__18c7l6u._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__18zrkky._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__19vj8qy._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1aaux7e._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1cceu4b._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1cn6rlb._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1csfdxc._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1ezwxao._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1g1wi9i._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1gmc_uw._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1h09r50._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1hpwwxw._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1j6mx-v._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1jdi-1f._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1ju8z29._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1kqv61m._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1lct0vi._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1loecue._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1m4-ab6._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1mkpya8._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1nwf3ua._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1oup682._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1p8hw44._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1pplzr1._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1rsn804._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1sdtn83._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1u-1vx4._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1v6nwhq._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__20465pr._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__207mxv8._.js +0 -3
- package/.next/server/chunks/_0_o8yhv._.js +0 -3
- package/.next/server/chunks/_0c5hvv3._.js +0 -11
- package/.next/server/chunks/_0frix22._.js +0 -11
- package/.next/server/chunks/_0rdo0a4._.js +0 -3
- package/.next/server/chunks/_167vv93._.js +0 -3
- package/.next/server/chunks/_1e1h1f1._.js +0 -3
- package/.next/server/chunks/_1flar98._.js +0 -3
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_mastery_route_actions_1l5uan6.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0b8kewv._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0icjezr._.js +0 -3
- package/.next/server/chunks/ssr/_062gk85._.js +0 -3
- package/.next/server/chunks/ssr/_0idg05p._.js +0 -3
- package/.next/server/chunks/ssr/_1gu1rou._.js +0 -3
- package/.next/static/chunks/02d-8f2qj7j3j.js +0 -1
- package/.next/static/chunks/02t7qqptint2p.js +0 -1
- package/.next/static/chunks/090a6irxe0c6j.js +0 -1
- package/.next/static/chunks/0bhxyq7e2eqjc.js +0 -5
- package/.next/static/chunks/0if-vqkhyn-zc.js +0 -1
- package/.next/static/chunks/0jf31atbtr1mv.js +0 -1
- package/.next/static/chunks/0te6mr86gdyyi.js +0 -191
- package/.next/static/chunks/0vgthy7v615hq.js +0 -1
- package/.next/static/chunks/1e5n4cprhwujv.js +0 -1
- package/.next/static/chunks/1edfvwc5_eck-.js +0 -31
- package/.next/static/chunks/1f0u19gh5_49z.js +0 -1
- package/.next/static/chunks/1fdj59ys-pend.js +0 -1
- package/.next/static/chunks/1kerqdluzq2l0.js +0 -1
- package/.next/static/chunks/1r4lwlvm7m53v.js +0 -1
- package/.next/static/chunks/1rz1bokv9edzr.js +0 -1
- package/.next/static/chunks/1s-d67d-yroyw.js +0 -1
- package/.next/static/chunks/1tw5_upsy-qj_.js +0 -22
- package/.next/static/chunks/1w1xvldfmcs67.js +0 -6
- package/.next/static/chunks/1zdof8ylzqm8w.js +0 -1
- package/.next/static/chunks/2-k1hjh6ff6y4.js +0 -1
- package/.next/static/chunks/21qpve5q3mjly.js +0 -1
- package/.next/static/chunks/21v32ctwcoxqt.js +0 -1
- package/.next/static/chunks/27-t289uq6_ju.js +0 -3
- package/.next/static/chunks/293-te2b34thz.js +0 -1
- package/.next/static/chunks/2dgleoh5fbs83.js +0 -1
- package/.next/static/chunks/2di_nd6djcxwu.js +0 -1
- package/.next/static/chunks/2mk03owifu2m1.js +0 -33
- package/.next/static/chunks/2qza4p5d9fz_2.js +0 -1
- package/.next/static/chunks/2s4c8fcrdnew4.js +0 -1
- package/.next/static/chunks/2zdqnkem9n6a9.js +0 -1
- package/.next/static/chunks/3-wm04s--suy5.js +0 -1
- package/.next/static/chunks/33t46atd3n2zd.js +0 -1
- package/.next/static/chunks/37yx4gh09tzwc.js +0 -1
- package/.next/static/chunks/3c4-ozf1dxam2.css +0 -1
- package/.next/static/chunks/3gwb465dhjxo9.js +0 -1
- package/.next/static/chunks/3hkgw-uib19xl.js +0 -1
- package/.next/static/chunks/3n-yabfsiog4i.css +0 -3
- package/.next/static/chunks/3umldi5zknsyi.js +0 -1
- package/.next/static/chunks/turbopack-1yjxh4vceobdr.js +0 -1
- /package/.next/static/{678uJSzOSzePaLyv5hUv0 → Y0pwgmRdVAifh_zukihNt}/_buildManifest.js +0 -0
- /package/.next/static/{678uJSzOSzePaLyv5hUv0 → Y0pwgmRdVAifh_zukihNt}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{678uJSzOSzePaLyv5hUv0 → Y0pwgmRdVAifh_zukihNt}/_ssgManifest.js +0 -0
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[334828,e=>e.a(async(t,r)=>{try{var a=e.i(89171),i=e.i(469719),n=e.i(698043),s=e.i(63856),o=e.i(181912),u=e.i(50377),l=e.i(874866),d=t([s]);[s]=d.then?(await d)():d;let p=(0,u.createLogger)("api:exams:retry"),m=i.z.object({language:i.z.enum(["zh","en"]).optional()});async function c(e,{params:t}){let{id:r}=await t;try{let t=await (0,s.getCurrentUser)();if(!t)return(0,o.unauthorized)("Authentication required");let i=await n.prisma.examPaper.findUnique({where:{id:r},select:{userId:!0}});if(!i||i.userId!==t.id)return(0,o.notFound)("Exam paper not found");let u=m.safeParse(await e.json().catch(()=>({})));return await n.prisma.examPaper.update({where:{id:r},data:{status:"generating"}}),(0,l.generateExamPaper)(r,u.success&&u.data.language||"zh"),a.NextResponse.json({success:!0})}catch(e){return p.error({error:e},"Error retrying exam paper"),(0,o.internalError)("Failed to retry exam paper")}}e.s(["POST",0,c]),r()}catch(e){r(e)}},!1),815947,e=>{"use strict";var t=e.i(747909),r=e.i(174017),a=e.i(996250),i=e.i(759756),n=e.i(561916),s=e.i(174677),o=e.i(869741),u=e.i(316795),l=e.i(487718),d=e.i(995169),c=e.i(47587),p=e.i(666012),m=e.i(570101),h=e.i(626937),g=e.i(10372),f=e.i(193695),w=e.i(509580);e.i(52474);var x=e.i(600220);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/exams/[id]/retry/route",pathname:"/api/exams/[id]/retry",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/exams/[id]/retry/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(334828),...{}}),{workAsyncStorage:y,workUnitAsyncStorage:R,serverHooks:v}=E;async function S(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/exams/[id]/retry/route";y=y.replace(/\/index$/,"")||"/";let R=await E.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:v,deploymentId:S,params:T,nextConfig:I,parsedUrl:A,isDraftMode:C,prerenderManifest:_,routerServerContext:P,isOnDemandRevalidate:q,revalidateOnlyGenerated:N,resolvedPathname:b,clientReferenceManifest:M,serverActionsManifest:O}=R,U=(0,o.normalizeAppPath)(y),k=!!_.routes[b]&&(E.isDev||(0,w.isRouteCacheOwner)(b,E.cacheOwner,_.routes[b])),D=!!(_.dynamicRoutes[U]||k),j=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,A,!1):t.end("This page could not be found"),null);if(D&&!C){let e=_.dynamicRoutes[U];if(e&&!1===e.fallback&&!k){if(I.adapterPath)return await j();throw new f.NoFallbackError}}let L=null;!D||E.isDev||C||(L="/index"===(L=b)?"/":L);let H=!0===E.isDev||!D,Q=D&&!H;O&&M&&(0,s.setManifestsSingleton)({page:y,clientReferenceManifest:M,serverActionsManifest:O});let F=e.method||"GET",X=(0,n.getTracer)(),K=X.getActiveScopeSpan(),$=!!(null==P?void 0:P.isWrappedByNextServer),B=!!(0,i.getRequestMeta)(e,"minimalMode"),z=(0,i.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,I,_,B);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let G={params:T,previewProps:_.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts,useCacheTimeout:I.experimental.useCacheTimeout},cacheComponents:!!I.cacheComponents,validationLevel:I.experimental.instantInsights.validationLevel,isDraftMode:C,supportsDynamicResponse:H,incrementalCache:z,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:I.cacheLife,staticPageGenerationTimeout:I.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,i)=>E.onRequestError(e,t,a,i,P)},sharedContext:{buildId:v,deploymentId:S}},V=new u.NodeNextRequest(e),W=new u.NodeNextResponse(t),J=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(t)),Y=async({previousCacheEntry:r})=>{try{if(!B&&q&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await E.handle(J,G);e.fetchMetrics=G.renderOpts.fetchMetrics;let n=G.renderOpts.pendingWaitUntil;n&&a.waitUntil&&(a.waitUntil(n),n=void 0);let s=G.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(V,W,i,n),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);s&&(t[g.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,a=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=g.INFINITE_CACHE?!1!==r&&r>0?I.expireTime:void 0:G.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:q})},!1,P),t}},Z=async(i,s)=>{try{var o,u;let i=await E.handleResponse({req:e,nextConfig:I,cacheKey:L,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:_,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:N,responseGenerator:Y,waitUntil:a.waitUntil,isMinimalMode:B});if(!D)return;if((null==i||null==(o=i.value)?void 0:o.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(u=i.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",q?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let n=(0,m.fromNodeOutgoingHttpHeaders)(i.value.headers);B&&D||n.delete(g.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||n.get("Cache-Control")||n.set("Cache-Control",(0,h.getCacheControlHeader)(i.cacheControl)),await (0,p.sendResponse)(V,W,new Response(i.value.body,{headers:n,status:i.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:q})},!1,P),D)throw t;await (0,p.sendResponse)(V,W,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:n.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let r=X.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route")||U,o=`${F} ${a}`;i.setAttributes({"next.route":a,"http.route":a,"next.span_name":o}),i.updateName(o),s&&s!==i&&(s.setAttribute("http.route",a),s.updateName(o))})()}};if($&&K)await Z(K,void 0);else{let t=X.getActiveScopeSpan();await X.withPropagatedContext(e.headers,()=>X.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${y}`,kind:n.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Z(e,t)),void 0,!$)}}e.s(["handler",0,S,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:y,workUnitAsyncStorage:R})},"routeModule",0,E,"serverHooks",0,v,"workAsyncStorage",0,y,"workUnitAsyncStorage",0,R])},63856,e=>e.a(async(t,r)=>{try{var a=e.i(757660),i=e.i(79832),n=e.i(698043),s=t([i]);async function o(){let e=await (0,a.getServerSession)(i.authOptions);return e?.user?.email?n.prisma.user.findUnique({where:{email:e.user.email}}):null}[i]=s.then?(await s)():s,e.s(["getCurrentUser",0,o]),r()}catch(e){r(e)}},!1),874866,e=>{"use strict";var t=e.i(698043),r=e.i(843911),a=e.i(50377),i=e.i(926828),n=e.i(668426);let s=(0,a.createLogger)("exam"),o="least_practiced";function u(e,t,r=Math.random){let a=[...e];for(let e=a.length-1;e>0;e--){let t=Math.floor(r()*(e+1));[a[e],a[t]]=[a[t],a[e]]}return a.slice(0,t)}async function l(e,r){let a,i=(await t.prisma.errorItem.findMany({where:(a={userId:e,subjectId:{in:r.subjectIds},shortId:{not:null}},"unmastered"===r.scope?a.masteryLevel=0:"mastered"===r.scope&&(a.masteryLevel={gt:0}),r.tagNames&&r.tagNames.length>0&&(a.tags={some:{name:{in:r.tagNames}}}),a),select:{id:!0,shortId:!0,_count:{select:{practiceRecords:!0}}}})).map(({_count:e,...t})=>({...t,practiceCount:e.practiceRecords}));return(r.pickRule??o)==="random"?u(i,r.count):function(e,t,r=Math.random){return u(e,e.length,r).sort((e,t)=>e.practiceCount-t.practiceCount).slice(0,t)}(i,r.count)}function d(e){if(e.some(e=>"pending"===e))return"generating";let t=e.filter(e=>"ready"===e).length;return t===e.length?"ready":0===t?"failed":"partial"}function c(e){if(e.tags.length>0)return e.tags.map(e=>e.name);try{let t=JSON.parse(e.knowledgePoints||"[]");return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}async function p(e,a,i){let n=await t.prisma.examQuestion.findUnique({where:{id:e},select:{errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}}}}}});if(!n?.errorItem)return void await t.prisma.examQuestion.update({where:{id:e},data:{status:"failed",error:"SOURCE_DELETED"}});try{let s=await (0,r.getAIService)().generateSimilarQuestion(n.errorItem.questionText||"",c(n.errorItem),i,a,n.errorItem.gradeSemester,n.errorItem.figureSvg);await t.prisma.examQuestion.update({where:{id:e},data:{status:"ready",questionText:s.questionText,answerText:s.answerText,analysis:s.analysis,figureSvg:s.figureSvg??null,error:null}})}catch(a){let r=a instanceof Error?a.message:String(a);s.warn({questionId:e,error:r},"Exam question generation failed"),await t.prisma.examQuestion.update({where:{id:e},data:{status:"failed",error:r.slice(0,200)}})}}let m=new Set;async function h(e,r="zh"){if(m.has(e))return;m.add(e);let a=null;try{let n=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,title:!0,difficulty:!0,questions:{where:{status:{not:"ready"}},select:{id:!0}}}});if(!n)return;let s=n.questions.map(e=>e.id),o=s.length,u=0;o>0&&(a=(0,i.startBackgroundTask)({userId:n.userId,kind:"exam",subject:n.title,link:`/exams/${e}`,total:o})),s.length>0&&(await t.prisma.examQuestion.updateMany({where:{id:{in:s}},data:{status:"pending",error:null}}),await t.prisma.examPaper.update({where:{id:e},data:{status:"generating"}}));let l=async()=>{for(;s.length>0;)await p(s.shift(),n.difficulty,r),a?.setProgress(++u,o)};await Promise.all(Array.from({length:Math.min(3,s.length)},l));let c=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}}),m=d(c.map(e=>e.status));await t.prisma.examPaper.update({where:{id:e},data:{status:m}}),a?.setProgress(u,o,c.filter(e=>"failed"===e.status).length),"failed"===m?a?.fail("ALL_FAILED"):a?.succeed()}catch(t){s.error({paperId:e,error:t},"Exam paper generation failed"),a?.fail(t)}finally{m.delete(e)}}let g={status:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,error:!0};async function f(e,a,o,u,l="zh"){let d=await t.prisma.examQuestion.findUnique({where:{id:a},select:{paperId:!0,status:!0,questionText:!0,paper:{select:{userId:!0,title:!0,difficulty:!0}},errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}},subject:{select:{name:!0,stage:!0,subjectKey:!0}}}},_count:{select:{practiceRecords:!0}}}});if(!d||d.paperId!==e||d.paper.userId!==o)throw Error("EXAM_QUESTION_NOT_FOUND");if("pending"===d.status)throw Error("QUESTION_GENERATING");let p={userId:o,subject:d.paper.title,link:`/exams/${e}`};if("question"===u){if(d._count.practiceRecords>0)throw Error("HAS_RESULTS");let n=d.errorItem;if(!n)throw Error("SOURCE_DELETED");let s=await (0,i.trackBackgroundTask)({...p,kind:"exam"},()=>(0,r.getAIService)().generateSimilarQuestion(n.questionText||"",c(n),l,d.paper.difficulty,n.gradeSemester,n.figureSvg)),{count:o}=await t.prisma.examQuestion.updateMany({where:{id:a,practiceRecords:{none:{}}},data:{status:"ready",questionText:s.questionText,answerText:s.answerText,analysis:s.analysis,figureSvg:s.figureSvg??null,error:null}});if(0===o)throw Error("HAS_RESULTS");await w(e)}else{let e=d.questionText;if("ready"!==d.status||!e?.trim())throw Error("NO_QUESTION_TEXT");let s=d.errorItem?.subject?(0,n.resolveNotebookScope)(d.errorItem.subject):null,o=s?.subject?n.SUBJECT_DISPLAY_NAMES[s.subject]:null,u=await (0,i.trackBackgroundTask)({...p,kind:"reanswer"},()=>(0,r.getAIService)().reanswerQuestion(e,l,o,void 0,d.errorItem?.gradeSemester));if(!u.answerText.trim()&&!u.analysis.trim())throw Error("EMPTY_ANSWER");let c={answerText:u.answerText,analysis:u.analysis};await t.prisma.$transaction([t.prisma.examQuestion.update({where:{id:a},data:c}),t.prisma.practiceRecord.updateMany({where:{examQuestionId:a},data:c})])}let m=await t.prisma.examQuestion.findUnique({where:{id:a},select:g});return s.info({paperId:e,questionId:a,mode:u},"Exam question regenerated"),m}async function w(e){let r=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}});await t.prisma.examPaper.update({where:{id:e},data:{status:d(r.map(e=>e.status))}})}async function x(e,r,a,i){let n=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,difficulty:!0,questions:{select:{id:!0,errorItemId:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,errorItem:{select:{subject:{select:{name:!0}}}}}}}});if(!n||n.userId!==r)throw Error("EXAM_NOT_FOUND");let s=new Map(n.questions.map(e=>[e.id,e])),o=new Set;return await t.prisma.$transaction(async t=>{for(let{questionId:e,result:u}of i){let i=s.get(e);i?.errorItemId&&null!==u&&(await t.practiceRecord.create({data:{userId:r,errorItemId:i.errorItemId,examQuestionId:i.id,source:"exam",result:u,isCorrect:"correct"===u,createdAt:a,difficulty:n.difficulty,subject:i.errorItem?.subject?.name??null,questionText:i.questionText,answerText:i.answerText,analysis:i.analysis,figureSvg:i.figureSvg}}),o.add(i.errorItemId))}o.size>0&&await t.examPaper.update({where:{id:e},data:{resultsRecordedAt:new Date}})}),[...o]}e.s(["DEFAULT_EXAM_PICK_RULE",0,o,"EXAM_DIFFICULTIES",0,["easy","medium","hard","harder"],"EXAM_PICK_RULES",0,["least_practiced","random"],"EXAM_REGENERATE_MODES",0,["question","answer"],"EXAM_SCOPES",0,["unmastered","mastered","all"],"MAX_EXAM_QUESTIONS",0,50,"generateExamPaper",0,h,"isPaperGenerating",0,function(e){return m.has(e)},"recordExamResults",0,x,"regenerateExamQuestion",0,f,"selectSourceItems",0,l])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0rdo0a4._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[843285,e=>e.a(async(t,r)=>{try{var a=e.i(89171),i=e.i(469719),s=e.i(63856),n=e.i(181912),o=e.i(50377),u=e.i(874866),l=e.i(404752),d=t([s]);[s]=d.then?(await d)():d;let m=(0,o.createLogger)("api:exams:results"),p=i.z.object({takenAt:i.z.string().datetime({offset:!0}).optional(),results:i.z.array(i.z.object({questionId:i.z.string().min(1),result:i.z.enum(l.PRACTICE_RESULTS).nullable()})).min(1).max(100)});async function c(e,{params:t}){let{id:r}=await t;try{let t=await (0,s.getCurrentUser)();if(!t)return(0,n.unauthorized)("Authentication required");let i=p.safeParse(await e.json());if(!i.success)return(0,n.validationError)("Invalid exam results",i.error.issues);let o=i.data.takenAt?new Date(i.data.takenAt):new Date,d=await (0,u.recordExamResults)(r,t.id,o,i.data.results);return(0,l.scheduleMasteryEvaluation)(d),a.NextResponse.json({success:!0,affectedCount:d.length})}catch(e){if(e instanceof Error&&"EXAM_NOT_FOUND"===e.message)return(0,n.notFound)("Exam paper not found");return m.error({error:e},"Error recording exam results"),(0,n.internalError)("Failed to record exam results")}}e.s(["POST",0,c]),r()}catch(e){r(e)}},!1),659744,e=>{"use strict";var t=e.i(747909),r=e.i(174017),a=e.i(996250),i=e.i(759756),s=e.i(561916),n=e.i(174677),o=e.i(869741),u=e.i(316795),l=e.i(487718),d=e.i(995169),c=e.i(47587),m=e.i(666012),p=e.i(570101),f=e.i(626937),h=e.i(10372),g=e.i(193695),w=e.i(509580);e.i(52474);var y=e.i(600220);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/exams/[id]/results/route",pathname:"/api/exams/[id]/results",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/exams/[id]/results/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(843285),...{}}),{workAsyncStorage:x,workUnitAsyncStorage:R,serverHooks:v}=E;async function S(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/exams/[id]/results/route";x=x.replace(/\/index$/,"")||"/";let R=await E.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:v,deploymentId:S,params:I,nextConfig:T,parsedUrl:A,isDraftMode:_,prerenderManifest:C,routerServerContext:q,isOnDemandRevalidate:P,revalidateOnlyGenerated:b,resolvedPathname:M,clientReferenceManifest:N,serverActionsManifest:O}=R,U=(0,o.normalizeAppPath)(x),k=!!C.routes[M]&&(E.isDev||(0,w.isRouteCacheOwner)(M,E.cacheOwner,C.routes[M])),D=!!(C.dynamicRoutes[U]||k),L=async()=>((null==q?void 0:q.render404)?await q.render404(e,t,A,!1):t.end("This page could not be found"),null);if(D&&!_){let e=C.dynamicRoutes[U];if(e&&!1===e.fallback&&!k){if(T.adapterPath)return await L();throw new g.NoFallbackError}}let j=null;!D||E.isDev||_||(j="/index"===(j=M)?"/":j);let H=!0===E.isDev||!D,Q=D&&!H;O&&N&&(0,n.setManifestsSingleton)({page:x,clientReferenceManifest:N,serverActionsManifest:O});let F=e.method||"GET",X=(0,s.getTracer)(),$=X.getActiveScopeSpan(),z=!!(null==q?void 0:q.isWrappedByNextServer),B=!!(0,i.getRequestMeta)(e,"minimalMode"),K=(0,i.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,T,C,B);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let G={params:I,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts,useCacheTimeout:T.experimental.useCacheTimeout},cacheComponents:!!T.cacheComponents,validationLevel:T.experimental.instantInsights.validationLevel,isDraftMode:_,supportsDynamicResponse:H,incrementalCache:K,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:T.cacheLife,staticPageGenerationTimeout:T.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,i)=>E.onRequestError(e,t,a,i,q)},sharedContext:{buildId:v,deploymentId:S}},V=new u.NodeNextRequest(e),W=new u.NodeNextResponse(t),J=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(t)),Y=async({previousCacheEntry:r})=>{try{if(!B&&P&&b&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await E.handle(J,G);e.fetchMetrics=G.renderOpts.fetchMetrics;let s=G.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let n=G.renderOpts.collectedTags;if(!D)return await (0,m.sendResponse)(V,W,i,s),null;{let e=await i.blob(),t=(0,p.toNodeOutgoingHttpHeaders)(i.headers);n&&(t[h.NEXT_CACHE_TAGS_HEADER]=n),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,a=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=h.INFINITE_CACHE?!1!==r&&r>0?T.expireTime:void 0:G.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:P})},!1,q),t}},Z=async(i,n)=>{try{var o,u;let i=await E.handleResponse({req:e,nextConfig:T,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:b,responseGenerator:Y,waitUntil:a.waitUntil,isMinimalMode:B});if(!D)return;if((null==i||null==(o=i.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(u=i.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",P?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),_&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let s=(0,p.fromNodeOutgoingHttpHeaders)(i.value.headers);B&&D||s.delete(h.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||s.get("Cache-Control")||s.set("Cache-Control",(0,f.getCacheControlHeader)(i.cacheControl)),await (0,m.sendResponse)(V,W,new Response(i.value.body,{headers:s,status:i.value.status||200}));return}catch(t){if(t instanceof g.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:P})},!1,q),D)throw t;await (0,m.sendResponse)(V,W,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:s.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let r=X.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route")||U,o=`${F} ${a}`;i.setAttributes({"next.route":a,"http.route":a,"next.span_name":o}),i.updateName(o),n&&n!==i&&(n.setAttribute("http.route",a),n.updateName(o))})()}};if(z&&$)await Z($,void 0);else{let t=X.getActiveScopeSpan();await X.withPropagatedContext(e.headers,()=>X.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${x}`,kind:s.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Z(e,t)),void 0,!z)}}e.s(["handler",0,S,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:R})},"routeModule",0,E,"serverHooks",0,v,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,R])},63856,e=>e.a(async(t,r)=>{try{var a=e.i(757660),i=e.i(79832),s=e.i(698043),n=t([i]);async function o(){let e=await (0,a.getServerSession)(i.authOptions);return e?.user?.email?s.prisma.user.findUnique({where:{email:e.user.email}}):null}[i]=n.then?(await n)():n,e.s(["getCurrentUser",0,o]),r()}catch(e){r(e)}},!1),874866,e=>{"use strict";var t=e.i(698043),r=e.i(843911),a=e.i(50377),i=e.i(926828),s=e.i(668426);let n=(0,a.createLogger)("exam"),o="least_practiced";function u(e,t,r=Math.random){let a=[...e];for(let e=a.length-1;e>0;e--){let t=Math.floor(r()*(e+1));[a[e],a[t]]=[a[t],a[e]]}return a.slice(0,t)}async function l(e,r){let a,i=(await t.prisma.errorItem.findMany({where:(a={userId:e,subjectId:{in:r.subjectIds},shortId:{not:null}},"unmastered"===r.scope?a.masteryLevel=0:"mastered"===r.scope&&(a.masteryLevel={gt:0}),r.tagNames&&r.tagNames.length>0&&(a.tags={some:{name:{in:r.tagNames}}}),a),select:{id:!0,shortId:!0,_count:{select:{practiceRecords:!0}}}})).map(({_count:e,...t})=>({...t,practiceCount:e.practiceRecords}));return(r.pickRule??o)==="random"?u(i,r.count):function(e,t,r=Math.random){return u(e,e.length,r).sort((e,t)=>e.practiceCount-t.practiceCount).slice(0,t)}(i,r.count)}function d(e){if(e.some(e=>"pending"===e))return"generating";let t=e.filter(e=>"ready"===e).length;return t===e.length?"ready":0===t?"failed":"partial"}function c(e){if(e.tags.length>0)return e.tags.map(e=>e.name);try{let t=JSON.parse(e.knowledgePoints||"[]");return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}async function m(e,a,i){let s=await t.prisma.examQuestion.findUnique({where:{id:e},select:{errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}}}}}});if(!s?.errorItem)return void await t.prisma.examQuestion.update({where:{id:e},data:{status:"failed",error:"SOURCE_DELETED"}});try{let n=await (0,r.getAIService)().generateSimilarQuestion(s.errorItem.questionText||"",c(s.errorItem),i,a,s.errorItem.gradeSemester,s.errorItem.figureSvg);await t.prisma.examQuestion.update({where:{id:e},data:{status:"ready",questionText:n.questionText,answerText:n.answerText,analysis:n.analysis,figureSvg:n.figureSvg??null,error:null}})}catch(a){let r=a instanceof Error?a.message:String(a);n.warn({questionId:e,error:r},"Exam question generation failed"),await t.prisma.examQuestion.update({where:{id:e},data:{status:"failed",error:r.slice(0,200)}})}}let p=new Set;async function f(e,r="zh"){if(p.has(e))return;p.add(e);let a=null;try{let s=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,title:!0,difficulty:!0,questions:{where:{status:{not:"ready"}},select:{id:!0}}}});if(!s)return;let n=s.questions.map(e=>e.id),o=n.length,u=0;o>0&&(a=(0,i.startBackgroundTask)({userId:s.userId,kind:"exam",subject:s.title,link:`/exams/${e}`,total:o})),n.length>0&&(await t.prisma.examQuestion.updateMany({where:{id:{in:n}},data:{status:"pending",error:null}}),await t.prisma.examPaper.update({where:{id:e},data:{status:"generating"}}));let l=async()=>{for(;n.length>0;)await m(n.shift(),s.difficulty,r),a?.setProgress(++u,o)};await Promise.all(Array.from({length:Math.min(3,n.length)},l));let c=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}}),p=d(c.map(e=>e.status));await t.prisma.examPaper.update({where:{id:e},data:{status:p}}),a?.setProgress(u,o,c.filter(e=>"failed"===e.status).length),"failed"===p?a?.fail("ALL_FAILED"):a?.succeed()}catch(t){n.error({paperId:e,error:t},"Exam paper generation failed"),a?.fail(t)}finally{p.delete(e)}}let h={status:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,error:!0};async function g(e,a,o,u,l="zh"){let d=await t.prisma.examQuestion.findUnique({where:{id:a},select:{paperId:!0,status:!0,questionText:!0,paper:{select:{userId:!0,title:!0,difficulty:!0}},errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}},subject:{select:{name:!0,stage:!0,subjectKey:!0}}}},_count:{select:{practiceRecords:!0}}}});if(!d||d.paperId!==e||d.paper.userId!==o)throw Error("EXAM_QUESTION_NOT_FOUND");if("pending"===d.status)throw Error("QUESTION_GENERATING");let m={userId:o,subject:d.paper.title,link:`/exams/${e}`};if("question"===u){if(d._count.practiceRecords>0)throw Error("HAS_RESULTS");let s=d.errorItem;if(!s)throw Error("SOURCE_DELETED");let n=await (0,i.trackBackgroundTask)({...m,kind:"exam"},()=>(0,r.getAIService)().generateSimilarQuestion(s.questionText||"",c(s),l,d.paper.difficulty,s.gradeSemester,s.figureSvg)),{count:o}=await t.prisma.examQuestion.updateMany({where:{id:a,practiceRecords:{none:{}}},data:{status:"ready",questionText:n.questionText,answerText:n.answerText,analysis:n.analysis,figureSvg:n.figureSvg??null,error:null}});if(0===o)throw Error("HAS_RESULTS");await w(e)}else{let e=d.questionText;if("ready"!==d.status||!e?.trim())throw Error("NO_QUESTION_TEXT");let n=d.errorItem?.subject?(0,s.resolveNotebookScope)(d.errorItem.subject):null,o=n?.subject?s.SUBJECT_DISPLAY_NAMES[n.subject]:null,u=await (0,i.trackBackgroundTask)({...m,kind:"reanswer"},()=>(0,r.getAIService)().reanswerQuestion(e,l,o,void 0,d.errorItem?.gradeSemester));if(!u.answerText.trim()&&!u.analysis.trim())throw Error("EMPTY_ANSWER");let c={answerText:u.answerText,analysis:u.analysis};await t.prisma.$transaction([t.prisma.examQuestion.update({where:{id:a},data:c}),t.prisma.practiceRecord.updateMany({where:{examQuestionId:a},data:c})])}let p=await t.prisma.examQuestion.findUnique({where:{id:a},select:h});return n.info({paperId:e,questionId:a,mode:u},"Exam question regenerated"),p}async function w(e){let r=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}});await t.prisma.examPaper.update({where:{id:e},data:{status:d(r.map(e=>e.status))}})}async function y(e,r,a,i){let s=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,difficulty:!0,questions:{select:{id:!0,errorItemId:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,errorItem:{select:{subject:{select:{name:!0}}}}}}}});if(!s||s.userId!==r)throw Error("EXAM_NOT_FOUND");let n=new Map(s.questions.map(e=>[e.id,e])),o=new Set;return await t.prisma.$transaction(async t=>{for(let{questionId:e,result:u}of i){let i=n.get(e);i?.errorItemId&&null!==u&&(await t.practiceRecord.create({data:{userId:r,errorItemId:i.errorItemId,examQuestionId:i.id,source:"exam",result:u,isCorrect:"correct"===u,createdAt:a,difficulty:s.difficulty,subject:i.errorItem?.subject?.name??null,questionText:i.questionText,answerText:i.answerText,analysis:i.analysis,figureSvg:i.figureSvg}}),o.add(i.errorItemId))}o.size>0&&await t.examPaper.update({where:{id:e},data:{resultsRecordedAt:new Date}})}),[...o]}e.s(["DEFAULT_EXAM_PICK_RULE",0,o,"EXAM_DIFFICULTIES",0,["easy","medium","hard","harder"],"EXAM_PICK_RULES",0,["least_practiced","random"],"EXAM_REGENERATE_MODES",0,["question","answer"],"EXAM_SCOPES",0,["unmastered","mastered","all"],"MAX_EXAM_QUESTIONS",0,50,"generateExamPaper",0,f,"isPaperGenerating",0,function(e){return p.has(e)},"recordExamResults",0,y,"regenerateExamQuestion",0,g,"selectSourceItems",0,l])},404752,e=>{"use strict";var t=e.i(698043),r=e.i(843911);let a=(0,e.i(50377).createLogger)("mastery"),i=["correct","wrong","not_attempted"];function s(e){return"string"==typeof e&&i.includes(e)}let n={easy:.85,medium:.95,hard:1,harder:1},o={wrong:.1,not_attempted:0};async function u(e){let i=await t.prisma.errorItem.findUnique({where:{id:e},select:{id:!0,questionText:!0,mistakeStatus:!0,tags:{select:{name:!0}},practiceRecords:{where:{result:{not:null}},orderBy:[{createdAt:"asc"},{id:"asc"}],select:{result:!0,difficulty:!0,source:!0,createdAt:!0}}}});if(!i)return;let u=i.practiceRecords.filter(e=>s(e.result)).map(e=>({date:e.createdAt.toISOString(),difficulty:e.difficulty,result:e.result,source:e.source})),l=function(e){if(0===e.length)return null;let t=.15,r=.5;return e.forEach((a,i)=>{let s=Math.pow(.7,e.length-1-i),u="correct"===a.result?n[a.difficulty||"medium"]??n.medium:o[a.result];t+=s*u,r+=s}),Math.round(t/r*100)/100}(u);if(null===l)return void await t.prisma.errorItem.update({where:{id:i.id},data:{masteryProbability:null,masteryReason:null,masterySource:null,masteryEvaluatedAt:null}});let d=l,c="",m="rule";try{let e=await (0,r.getAIService)().evaluateMastery({questionText:i.questionText||"",knowledgePoints:i.tags.map(e=>e.name),mistakeStatus:i.mistakeStatus,history:u,ruleProbability:l});d=e.probability,c=e.reason,m="ai"}catch(r){a.warn({errorItemId:e,error:r instanceof Error?r.message:String(r)},"AI mastery evaluation failed, using rule estimate");let t=u.filter(e=>"correct"===e.result).length;c=`共练习 ${u.length} 次,做对 ${t} 次(规则估算)`}await t.prisma.errorItem.update({where:{id:i.id},data:{masteryProbability:d,masteryReason:c,masterySource:m,masteryEvaluatedAt:new Date,masteryLevel:+(d>=.8)}}),a.info({errorItemId:e,probability:d,source:m},"Mastery evaluated")}let l=new Set,d=!1;async function c(){if(!d){d=!0;try{for(;l.size>0;){let[e]=l;l.delete(e);try{await u(e)}catch(t){a.error({errorItemId:e,error:t},"Mastery evaluation failed")}}}finally{d=!1}}}e.s(["PRACTICE_RESULTS",0,i,"isPracticeResult",0,s,"scheduleMasteryEvaluation",0,function(e){e.forEach(e=>l.add(e)),c()}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_167vv93._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[79955,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1_gkx5x._.js"].map(r=>e.l(r))).then(()=>r(835611)))},146735,e=>{e.v(r=>Promise.all(["server/chunks/[externals]__04n7qbr._.js","server/chunks/[root-of-the-server]__0rk_yxy._.js"].map(r=>e.l(r))).then(()=>r(583085)))},258078,e=>{"use strict";e.s(["requireAdmin",0,function(e){var r;return!!e&&(r=e.user,r?.role==="admin")}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_1e1h1f1._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[275185,e=>e.a(async(t,r)=>{try{var a=e.i(89171),i=e.i(698043),n=e.i(63856),s=e.i(181912),o=e.i(50377),u=e.i(874866),l=t([n]);[n]=l.then?(await l)():l;let p=(0,o.createLogger)("api:exams:id");async function d(e,{params:t}){let{id:r}=await t;try{let e=await (0,n.getCurrentUser)();if(!e)return(0,s.unauthorized)("Authentication required");let t=await i.prisma.examPaper.findUnique({where:{id:r},include:{questions:{orderBy:{order:"asc"},include:{errorItem:{select:{id:!0,subject:{select:{name:!0}}}},practiceRecords:{orderBy:[{createdAt:"asc"},{id:"asc"}],select:{id:!0,result:!0,createdAt:!0}}}}}});if(!t||t.userId!==e.id)return(0,s.notFound)("Exam paper not found");"generating"!==t.status||(0,u.isPaperGenerating)(t.id)||(0,u.generateExamPaper)(t.id);let{userId:o,questions:l,...d}=t;return a.NextResponse.json({...d,questions:l.map(({errorItem:e,practiceRecords:t,...r})=>({...r,notebookName:e?.subject?.name??null,attempts:t}))})}catch(e){return p.error({error:e},"Error fetching exam paper"),(0,s.internalError)("Failed to fetch exam paper")}}async function c(e,{params:t}){let{id:r}=await t;try{let e=await (0,n.getCurrentUser)();if(!e)return(0,s.unauthorized)("Authentication required");let t=await i.prisma.examPaper.findUnique({where:{id:r},select:{userId:!0}});if(!t||t.userId!==e.id)return(0,s.notFound)("Exam paper not found");return await i.prisma.examPaper.delete({where:{id:r}}),a.NextResponse.json({success:!0})}catch(e){return p.error({error:e},"Error deleting exam paper"),(0,s.internalError)("Failed to delete exam paper")}}e.s(["DELETE",0,c,"GET",0,d]),r()}catch(e){r(e)}},!1),98057,e=>{"use strict";var t=e.i(747909),r=e.i(174017),a=e.i(996250),i=e.i(759756),n=e.i(561916),s=e.i(174677),o=e.i(869741),u=e.i(316795),l=e.i(487718),d=e.i(995169),c=e.i(47587),p=e.i(666012),m=e.i(570101),h=e.i(626937),g=e.i(10372),f=e.i(193695),w=e.i(509580);e.i(52474);var E=e.i(600220);let x=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/exams/[id]/route",pathname:"/api/exams/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/exams/[id]/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(275185),...{}}),{workAsyncStorage:R,workUnitAsyncStorage:y,serverHooks:v}=x;async function I(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),x.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/exams/[id]/route";R=R.replace(/\/index$/,"")||"/";let y=await x.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:v,deploymentId:I,params:S,nextConfig:T,parsedUrl:A,isDraftMode:C,prerenderManifest:_,routerServerContext:q,isOnDemandRevalidate:P,revalidateOnlyGenerated:N,resolvedPathname:b,clientReferenceManifest:U,serverActionsManifest:M}=y,O=(0,o.normalizeAppPath)(R),k=!!_.routes[b]&&(x.isDev||(0,w.isRouteCacheOwner)(b,x.cacheOwner,_.routes[b])),D=!!(_.dynamicRoutes[O]||k),j=async()=>((null==q?void 0:q.render404)?await q.render404(e,t,A,!1):t.end("This page could not be found"),null);if(D&&!C){let e=_.dynamicRoutes[O];if(e&&!1===e.fallback&&!k){if(T.adapterPath)return await j();throw new f.NoFallbackError}}let L=null;!D||x.isDev||C||(L="/index"===(L=b)?"/":L);let H=!0===x.isDev||!D,Q=D&&!H;M&&U&&(0,s.setManifestsSingleton)({page:R,clientReferenceManifest:U,serverActionsManifest:M});let F=e.method||"GET",X=(0,n.getTracer)(),B=X.getActiveScopeSpan(),G=!!(null==q?void 0:q.isWrappedByNextServer),K=!!(0,i.getRequestMeta)(e,"minimalMode"),$=(0,i.getRequestMeta)(e,"incrementalCache")||await x.getIncrementalCache(e,T,_,K);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let z={params:S,previewProps:_.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts,useCacheTimeout:T.experimental.useCacheTimeout},cacheComponents:!!T.cacheComponents,validationLevel:T.experimental.instantInsights.validationLevel,isDraftMode:C,supportsDynamicResponse:H,incrementalCache:$,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:T.cacheLife,staticPageGenerationTimeout:T.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,i)=>x.onRequestError(e,t,a,i,q)},sharedContext:{buildId:v,deploymentId:I}},V=new u.NodeNextRequest(e),W=new u.NodeNextResponse(t),J=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(t)),Y=async({previousCacheEntry:r})=>{try{if(!K&&P&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await x.handle(J,z);e.fetchMetrics=z.renderOpts.fetchMetrics;let n=z.renderOpts.pendingWaitUntil;n&&a.waitUntil&&(a.waitUntil(n),n=void 0);let s=z.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(V,W,i,n),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);s&&(t[g.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,a=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=g.INFINITE_CACHE?!1!==r&&r>0?T.expireTime:void 0:z.renderOpts.collectedExpire;return{value:{kind:E.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:P})},!1,q),t}},Z=async(i,s)=>{try{var o,u;let i=await x.handleResponse({req:e,nextConfig:T,cacheKey:L,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:_,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:N,responseGenerator:Y,waitUntil:a.waitUntil,isMinimalMode:K});if(!D)return;if((null==i||null==(o=i.value)?void 0:o.kind)!==E.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(u=i.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",P?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let n=(0,m.fromNodeOutgoingHttpHeaders)(i.value.headers);K&&D||n.delete(g.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||n.get("Cache-Control")||n.set("Cache-Control",(0,h.getCacheControlHeader)(i.cacheControl)),await (0,p.sendResponse)(V,W,new Response(i.value.body,{headers:n,status:i.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:P})},!1,q),D)throw t;await (0,p.sendResponse)(V,W,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:n.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let r=X.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route")||O,o=`${F} ${a}`;i.setAttributes({"next.route":a,"http.route":a,"next.span_name":o}),i.updateName(o),s&&s!==i&&(s.setAttribute("http.route",a),s.updateName(o))})()}};if(G&&B)await Z(B,void 0);else{let t=X.getActiveScopeSpan();await X.withPropagatedContext(e.headers,()=>X.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${R}`,kind:n.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Z(e,t)),void 0,!G)}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:y})},"routeModule",0,x,"serverHooks",0,v,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,y])},63856,e=>e.a(async(t,r)=>{try{var a=e.i(757660),i=e.i(79832),n=e.i(698043),s=t([i]);async function o(){let e=await (0,a.getServerSession)(i.authOptions);return e?.user?.email?n.prisma.user.findUnique({where:{email:e.user.email}}):null}[i]=s.then?(await s)():s,e.s(["getCurrentUser",0,o]),r()}catch(e){r(e)}},!1),874866,e=>{"use strict";var t=e.i(698043),r=e.i(843911),a=e.i(50377),i=e.i(926828),n=e.i(668426);let s=(0,a.createLogger)("exam"),o="least_practiced";function u(e,t,r=Math.random){let a=[...e];for(let e=a.length-1;e>0;e--){let t=Math.floor(r()*(e+1));[a[e],a[t]]=[a[t],a[e]]}return a.slice(0,t)}async function l(e,r){let a,i=(await t.prisma.errorItem.findMany({where:(a={userId:e,subjectId:{in:r.subjectIds},shortId:{not:null}},"unmastered"===r.scope?a.masteryLevel=0:"mastered"===r.scope&&(a.masteryLevel={gt:0}),r.tagNames&&r.tagNames.length>0&&(a.tags={some:{name:{in:r.tagNames}}}),a),select:{id:!0,shortId:!0,_count:{select:{practiceRecords:!0}}}})).map(({_count:e,...t})=>({...t,practiceCount:e.practiceRecords}));return(r.pickRule??o)==="random"?u(i,r.count):function(e,t,r=Math.random){return u(e,e.length,r).sort((e,t)=>e.practiceCount-t.practiceCount).slice(0,t)}(i,r.count)}function d(e){if(e.some(e=>"pending"===e))return"generating";let t=e.filter(e=>"ready"===e).length;return t===e.length?"ready":0===t?"failed":"partial"}function c(e){if(e.tags.length>0)return e.tags.map(e=>e.name);try{let t=JSON.parse(e.knowledgePoints||"[]");return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}async function p(e,a,i){let n=await t.prisma.examQuestion.findUnique({where:{id:e},select:{errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}}}}}});if(!n?.errorItem)return void await t.prisma.examQuestion.update({where:{id:e},data:{status:"failed",error:"SOURCE_DELETED"}});try{let s=await (0,r.getAIService)().generateSimilarQuestion(n.errorItem.questionText||"",c(n.errorItem),i,a,n.errorItem.gradeSemester,n.errorItem.figureSvg);await t.prisma.examQuestion.update({where:{id:e},data:{status:"ready",questionText:s.questionText,answerText:s.answerText,analysis:s.analysis,figureSvg:s.figureSvg??null,error:null}})}catch(a){let r=a instanceof Error?a.message:String(a);s.warn({questionId:e,error:r},"Exam question generation failed"),await t.prisma.examQuestion.update({where:{id:e},data:{status:"failed",error:r.slice(0,200)}})}}let m=new Set;async function h(e,r="zh"){if(m.has(e))return;m.add(e);let a=null;try{let n=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,title:!0,difficulty:!0,questions:{where:{status:{not:"ready"}},select:{id:!0}}}});if(!n)return;let s=n.questions.map(e=>e.id),o=s.length,u=0;o>0&&(a=(0,i.startBackgroundTask)({userId:n.userId,kind:"exam",subject:n.title,link:`/exams/${e}`,total:o})),s.length>0&&(await t.prisma.examQuestion.updateMany({where:{id:{in:s}},data:{status:"pending",error:null}}),await t.prisma.examPaper.update({where:{id:e},data:{status:"generating"}}));let l=async()=>{for(;s.length>0;)await p(s.shift(),n.difficulty,r),a?.setProgress(++u,o)};await Promise.all(Array.from({length:Math.min(3,s.length)},l));let c=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}}),m=d(c.map(e=>e.status));await t.prisma.examPaper.update({where:{id:e},data:{status:m}}),a?.setProgress(u,o,c.filter(e=>"failed"===e.status).length),"failed"===m?a?.fail("ALL_FAILED"):a?.succeed()}catch(t){s.error({paperId:e,error:t},"Exam paper generation failed"),a?.fail(t)}finally{m.delete(e)}}let g={status:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,error:!0};async function f(e,a,o,u,l="zh"){let d=await t.prisma.examQuestion.findUnique({where:{id:a},select:{paperId:!0,status:!0,questionText:!0,paper:{select:{userId:!0,title:!0,difficulty:!0}},errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}},subject:{select:{name:!0,stage:!0,subjectKey:!0}}}},_count:{select:{practiceRecords:!0}}}});if(!d||d.paperId!==e||d.paper.userId!==o)throw Error("EXAM_QUESTION_NOT_FOUND");if("pending"===d.status)throw Error("QUESTION_GENERATING");let p={userId:o,subject:d.paper.title,link:`/exams/${e}`};if("question"===u){if(d._count.practiceRecords>0)throw Error("HAS_RESULTS");let n=d.errorItem;if(!n)throw Error("SOURCE_DELETED");let s=await (0,i.trackBackgroundTask)({...p,kind:"exam"},()=>(0,r.getAIService)().generateSimilarQuestion(n.questionText||"",c(n),l,d.paper.difficulty,n.gradeSemester,n.figureSvg)),{count:o}=await t.prisma.examQuestion.updateMany({where:{id:a,practiceRecords:{none:{}}},data:{status:"ready",questionText:s.questionText,answerText:s.answerText,analysis:s.analysis,figureSvg:s.figureSvg??null,error:null}});if(0===o)throw Error("HAS_RESULTS");await w(e)}else{let e=d.questionText;if("ready"!==d.status||!e?.trim())throw Error("NO_QUESTION_TEXT");let s=d.errorItem?.subject?(0,n.resolveNotebookScope)(d.errorItem.subject):null,o=s?.subject?n.SUBJECT_DISPLAY_NAMES[s.subject]:null,u=await (0,i.trackBackgroundTask)({...p,kind:"reanswer"},()=>(0,r.getAIService)().reanswerQuestion(e,l,o,void 0,d.errorItem?.gradeSemester));if(!u.answerText.trim()&&!u.analysis.trim())throw Error("EMPTY_ANSWER");let c={answerText:u.answerText,analysis:u.analysis};await t.prisma.$transaction([t.prisma.examQuestion.update({where:{id:a},data:c}),t.prisma.practiceRecord.updateMany({where:{examQuestionId:a},data:c})])}let m=await t.prisma.examQuestion.findUnique({where:{id:a},select:g});return s.info({paperId:e,questionId:a,mode:u},"Exam question regenerated"),m}async function w(e){let r=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}});await t.prisma.examPaper.update({where:{id:e},data:{status:d(r.map(e=>e.status))}})}async function E(e,r,a,i){let n=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,difficulty:!0,questions:{select:{id:!0,errorItemId:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,errorItem:{select:{subject:{select:{name:!0}}}}}}}});if(!n||n.userId!==r)throw Error("EXAM_NOT_FOUND");let s=new Map(n.questions.map(e=>[e.id,e])),o=new Set;return await t.prisma.$transaction(async t=>{for(let{questionId:e,result:u}of i){let i=s.get(e);i?.errorItemId&&null!==u&&(await t.practiceRecord.create({data:{userId:r,errorItemId:i.errorItemId,examQuestionId:i.id,source:"exam",result:u,isCorrect:"correct"===u,createdAt:a,difficulty:n.difficulty,subject:i.errorItem?.subject?.name??null,questionText:i.questionText,answerText:i.answerText,analysis:i.analysis,figureSvg:i.figureSvg}}),o.add(i.errorItemId))}o.size>0&&await t.examPaper.update({where:{id:e},data:{resultsRecordedAt:new Date}})}),[...o]}e.s(["DEFAULT_EXAM_PICK_RULE",0,o,"EXAM_DIFFICULTIES",0,["easy","medium","hard","harder"],"EXAM_PICK_RULES",0,["least_practiced","random"],"EXAM_REGENERATE_MODES",0,["question","answer"],"EXAM_SCOPES",0,["unmastered","mastered","all"],"MAX_EXAM_QUESTIONS",0,50,"generateExamPaper",0,h,"isPaperGenerating",0,function(e){return m.has(e)},"recordExamResults",0,E,"regenerateExamQuestion",0,f,"selectSourceItems",0,l])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_1flar98._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},59639,(a,b,c)=>{b.exports=a.x("node:process",()=>require("node:process"))},857764,(a,b,c)=>{b.exports=a.x("node:url",()=>require("node:url"))},400210,a=>{"use strict";let b=(0,a.i(170106).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",0,b],400210)},50522,a=>{"use strict";let b=(0,a.i(170106).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",0,b],50522)},641710,a=>{"use strict";let b=(0,a.i(170106).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Clock",0,b],641710)},755023,a=>{"use strict";let b=(0,a.i(170106).default)("list-checks",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]]);a.s(["ListChecks",0,b],755023)},699464,a=>{"use strict";let b=(0,a.i(170106).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",0,b],699464)},771931,a=>{"use strict";let b=(0,a.i(170106).default)("printer",[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",key:"1itne7"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1",key:"1ue0tg"}]]);a.s(["Printer",0,b],771931)},808406,a=>{"use strict";let b=(0,a.i(170106).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",0,b],808406)},131368,a=>{"use strict";var b=a.i(187924);let c=(0,a.i(170106).default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);var d=a.i(550194),e=a.i(368114);let f=[1,2,3,4,5];a.s(["DifficultyStars",0,function({value:a,onChange:g,disabled:h,size:i="sm",showUnrated:j=!0,className:k}){let{t:l}=(0,d.useLanguage)(),m=a??0,n="sm"===i?"h-3.5 w-3.5":"h-5 w-5",o=m?l.difficulty.starsLabel.replace("{n}",String(m)):l.difficulty.unrated;return g?(0,b.jsxs)("span",{className:(0,e.cn)("inline-flex items-center gap-0.5",k),role:"group","aria-label":`${l.difficulty.label}:${o}`,title:l.difficulty.clearHint,children:[f.map(a=>(0,b.jsx)("button",{type:"button",disabled:h,onClick:()=>g(a===m?null:a),"aria-label":l.difficulty.setStars.replace("{n}",String(a)),"aria-pressed":a<=m,className:"rounded p-0.5 hover:bg-muted disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:(0,b.jsx)(c,{className:(0,e.cn)(n,a<=m?"fill-amber-400 text-amber-400":"text-muted-foreground/40")})},a)),!m&&j&&(0,b.jsx)("span",{className:"ml-1 text-xs text-muted-foreground",children:l.difficulty.unrated})]}):m?(0,b.jsx)("span",{className:(0,e.cn)("inline-flex items-center",k),role:"img","aria-label":`${l.difficulty.label}:${o}`,title:o,children:f.map(a=>(0,b.jsx)(c,{className:(0,e.cn)(n,a<=m?"fill-amber-400 text-amber-400":"text-muted-foreground/30"),"aria-hidden":!0},a))}):j?(0,b.jsx)("span",{className:(0,e.cn)("text-xs text-muted-foreground",k),children:l.difficulty.unrated}):null}],131368)},468368,723222,a=>{"use strict";var b=a.i(187924),c=a.i(550194),d=a.i(957292);let e=["primary","junior_high","senior_high"],f="primary",g=["math","english","chinese","physics","chemistry","biology","history","geography","politics"];function h(a){return"string"==typeof a&&g.includes(a)}function i(a){var b;let c=h(a.subjectKey)?a.subjectKey:(0,d.inferSubjectFromName)(a.name);return{stage:"string"==typeof(b=a.stage)&&e.includes(b)?a.stage:f,subject:c&&h(c)?c:null}}function j(){let{t:a}=(0,c.useLanguage)();return{stageLabel:b=>({primary:a.auth.primary,junior_high:a.auth.juniorHigh,senior_high:a.auth.seniorHigh})[b],subjectLabel:b=>a.tags.subjects[b]}}a.s(["DEFAULT_NOTEBOOK_STAGE",0,f,"NOTEBOOK_STAGES",0,e,"STAGE_SUBJECTS",0,{primary:["math","english"],junior_high:g,senior_high:g},"resolveNotebookScope",0,i],723222),a.s(["NotebookScopeLabel",0,function({notebook:a,className:c}){let{stageLabel:d,subjectLabel:e}=j(),f=i(a);return(0,b.jsxs)("span",{className:c,children:[d(f.stage),f.subject?` \xb7 ${e(f.subject)}`:""]})},"useNotebookScopeLabels",0,j],468368)},73556,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(814574),e=a.i(699570),f=a.i(866718),g=a.i(870430),h=a.i(550194),i=a.i(710302);a.s(["RenameNotebookDialog",0,function({open:a,onOpenChange:j,currentName:k,onRename:l}){let[m,n]=(0,c.useState)(k),[o,p]=(0,c.useState)(!1),{t:q}=(0,h.useLanguage)();(0,c.useEffect)(()=>{n(k)},[k]);let r=async()=>{if(!m.trim())return void i.toast.warning(q.notebooks?.renameDialog?.enterName||"Please enter notebook name");p(!0);try{await l(m.trim()),j(!1)}catch(a){console.error(a)}finally{p(!1)}};return(0,b.jsx)(d.Dialog,{open:a,onOpenChange:j,children:(0,b.jsxs)(d.DialogContent,{children:[(0,b.jsx)(d.DialogHeader,{children:(0,b.jsx)(d.DialogTitle,{children:q.notebooks?.renameDialog?.title||"Rename Notebook"})}),(0,b.jsx)("div",{className:"space-y-4 py-4",children:(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(g.Label,{htmlFor:"rename-name",children:q.notebooks?.renameDialog?.nameLabel||"New Name"}),(0,b.jsx)(f.Input,{id:"rename-name",placeholder:q.notebooks?.renameDialog?.placeholder||"Enter new notebook name",value:m,onChange:a=>n(a.target.value),onKeyDown:a=>"Enter"===a.key&&r()})]})}),(0,b.jsxs)(d.DialogFooter,{children:[(0,b.jsx)(e.Button,{variant:"outline",onClick:()=>j(!1),children:q.common.cancel}),(0,b.jsx)(e.Button,{onClick:r,disabled:o||!m.trim(),children:o?q.notebooks?.renameDialog?.renaming||"Renaming...":q.notebooks?.renameDialog?.rename||"Rename"})]})]})})}])},695001,a=>{"use strict";var b=a.i(187924),c=a.i(50944),d=a.i(699570),e=a.i(400210);a.s(["BackButton",0,function({fallbackUrl:a,className:f}){let g=(0,c.useRouter)();return(0,b.jsx)(d.Button,{variant:"ghost",size:"icon",onClick:()=>{g.push(a)},className:f,children:(0,b.jsx)(e.ArrowLeft,{className:"h-5 w-5"})})}])},591119,a=>{"use strict";var b=a.i(187924),c=a.i(368114);a.s(["Card",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card",className:(0,c.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",a),...d})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-6",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-muted-foreground text-sm",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("leading-none font-semibold",a),...d})}])},315055,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(470121),e=a.i(750104),f=a.i(507554),g=a.i(225152),h=a.i(77994),i=a.i(3688),j=a.i(777192);a.i(935112);var k=Symbol("radix.slottable");function l(a){return c.isValidElement(a)&&"function"==typeof a.type&&"__radixId"in a.type&&a.type.__radixId===k}var m=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((a,e)=>{var f,g;let h,i,j,k=(g=f=`Primitive.${e}`,(h=c.forwardRef((a,b)=>{let{children:e,...f}=a;if(c.isValidElement(e)){var g;let a,h,i=(g=e,(h=(a=Object.getOwnPropertyDescriptor(g.props,"ref")?.get)&&"isReactWarning"in a&&a.isReactWarning)?g.ref:(h=(a=Object.getOwnPropertyDescriptor(g,"ref")?.get)&&"isReactWarning"in a&&a.isReactWarning)?g.props.ref:g.props.ref||g.ref),j=function(a,b){let c={...b};for(let d in b){let e=a[d],f=b[d];/^on[A-Z]/.test(d)?e&&f?c[d]=(...a)=>{let b=f(...a);return e(...a),b}:e&&(c[d]=e):"style"===d?c[d]={...e,...f}:"className"===d&&(c[d]=[e,f].filter(Boolean).join(" "))}return{...a,...c}}(f,e.props);return e.type!==c.Fragment&&(j.ref=b?(0,d.composeRefs)(b,i):i),c.cloneElement(e,j)}return c.Children.count(e)>1?c.Children.only(null):null})).displayName=`${g}.SlotClone`,i=h,(j=c.forwardRef((a,d)=>{let{children:e,...f}=a,g=c.Children.toArray(e),h=g.find(l);if(h){let a=h.props.children,e=g.map(b=>b!==h?b:c.Children.count(a)>1?c.Children.only(null):c.isValidElement(a)?a.props.children:null);return(0,b.jsx)(i,{...f,ref:d,children:c.isValidElement(a)?c.cloneElement(a,void 0,e):null})}return(0,b.jsx)(i,{...f,ref:d,children:e})})).displayName=`${f}.Slot`,j),m=c.forwardRef((a,c)=>{let{asChild:d,...f}=a;return(0,b.jsx)(d?k:e,{...f,ref:c})});return m.displayName=`Primitive.${e}`,{...a,[e]:m}},{}),n="Checkbox",[o,p]=(0,e.createContextScope)(n),[q,r]=o(n);function s(a){let{__scopeCheckbox:d,checked:e,children:f,defaultChecked:h,disabled:i,form:j,name:k,onCheckedChange:l,required:m,value:o="on",internal_do_not_use_render:p}=a,[r,s]=(0,g.useControllableState)({prop:e,defaultProp:h??!1,onChange:l,caller:n}),[t,u]=c.useState(null),[v,w]=c.useState(null),x=c.useRef(!1),y=!t||!!j||!!t.closest("form"),z={checked:r,disabled:i,setChecked:s,control:t,setControl:u,name:k,form:j,value:o,hasConsumerStoppedPropagationRef:x,required:m,defaultChecked:!A(h)&&h,isFormControl:y,bubbleInput:v,setBubbleInput:w};return(0,b.jsx)(q,{scope:d,...z,children:"function"==typeof p?p(z):f})}var t="CheckboxTrigger",u=c.forwardRef(({__scopeCheckbox:a,onKeyDown:e,onClick:g,...h},i)=>{let{control:j,value:k,disabled:l,checked:n,required:o,setControl:p,setChecked:q,hasConsumerStoppedPropagationRef:s,isFormControl:u,bubbleInput:v}=r(t,a),w=(0,d.useComposedRefs)(i,p),x=c.useRef(n);return c.useEffect(()=>{let a=j?.form;if(a){let b=()=>q(x.current);return a.addEventListener("reset",b),()=>a.removeEventListener("reset",b)}},[j,q]),(0,b.jsx)(m.button,{type:"button",role:"checkbox","aria-checked":A(n)?"mixed":n,"aria-required":o,"data-state":B(n),"data-disabled":l?"":void 0,disabled:l,value:k,...h,ref:w,onKeyDown:(0,f.composeEventHandlers)(e,a=>{"Enter"===a.key&&a.preventDefault()}),onClick:(0,f.composeEventHandlers)(g,a=>{q(a=>!!A(a)||!a),v&&u&&(s.current=a.isPropagationStopped(),s.current||a.stopPropagation())})})});u.displayName=t;var v=c.forwardRef((a,c)=>{let{__scopeCheckbox:d,name:e,checked:f,defaultChecked:g,required:h,disabled:i,value:j,onCheckedChange:k,form:l,...m}=a;return(0,b.jsx)(s,{__scopeCheckbox:d,checked:f,defaultChecked:g,disabled:i,required:h,onCheckedChange:k,name:e,form:l,value:j,internal_do_not_use_render:({isFormControl:a})=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(u,{...m,ref:c,__scopeCheckbox:d}),a&&(0,b.jsx)(z,{__scopeCheckbox:d})]})})});v.displayName=n;var w="CheckboxIndicator",x=c.forwardRef((a,c)=>{let{__scopeCheckbox:d,forceMount:e,...f}=a,g=r(w,d);return(0,b.jsx)(j.Presence,{present:e||A(g.checked)||!0===g.checked,children:(0,b.jsx)(m.span,{"data-state":B(g.checked),"data-disabled":g.disabled?"":void 0,...f,ref:c,style:{pointerEvents:"none",...a.style}})})});x.displayName=w;var y="CheckboxBubbleInput",z=c.forwardRef(({__scopeCheckbox:a,...e},f)=>{let{control:g,hasConsumerStoppedPropagationRef:j,checked:k,defaultChecked:l,required:n,disabled:o,name:p,value:q,form:s,bubbleInput:t,setBubbleInput:u}=r(y,a),v=(0,d.useComposedRefs)(f,u),w=(0,h.usePrevious)(k),x=(0,i.useSize)(g);c.useEffect(()=>{if(!t)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!j.current;if(w!==k&&a){let c=new Event("click",{bubbles:b});t.indeterminate=A(k),a.call(t,!A(k)&&k),t.dispatchEvent(c)}},[t,w,k,j]);let z=c.useRef(!A(k)&&k);return(0,b.jsx)(m.input,{type:"checkbox","aria-hidden":!0,defaultChecked:l??z.current,required:n,disabled:o,name:p,value:q,form:s,...e,tabIndex:-1,ref:v,style:{...e.style,...x,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function A(a){return"indeterminate"===a}function B(a){return A(a)?"indeterminate":a?"checked":"unchecked"}z.displayName=y;var C=a.i(533441),D=a.i(368114);let E=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(v,{ref:d,className:(0,D.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",a),...c,children:(0,b.jsx)(x,{className:(0,D.cn)("flex items-center justify-center text-current"),children:(0,b.jsx)(C.Check,{className:"h-4 w-4"})})}));E.displayName=v.displayName,a.s(["Checkbox",0,E],315055)},579834,a=>{"use strict";var b=a.i(187924),c=a.i(368114);a.s(["EmptyState",0,function({icon:a,title:d,description:e,action:f,className:g}){return(0,b.jsxs)("div",{className:(0,c.cn)("flex flex-col items-center justify-center rounded-2xl border border-dashed bg-card/50 px-6 py-14 text-center",g),children:[(0,b.jsx)("div",{className:"mb-4 flex h-14 w-14 items-center justify-center rounded-2xl bg-accent text-accent-foreground",children:(0,b.jsx)(a,{className:"h-7 w-7"})}),(0,b.jsx)("p",{className:"font-medium",children:d}),e&&(0,b.jsx)("p",{className:"mt-1 max-w-sm text-sm text-muted-foreground",children:e}),f&&(0,b.jsx)("div",{className:"mt-5",children:f})]})}])},251538,a=>{"use strict";var b=a.i(187924),c=a.i(695001),d=a.i(368114);a.s(["PageHeader",0,function({title:a,description:e,backHref:f,actions:g,titleAddon:h,className:i}){return(0,b.jsxs)("div",{className:(0,d.cn)("flex items-start gap-3",i),children:[f&&(0,b.jsx)(c.BackButton,{fallbackUrl:f,className:"-ml-2 shrink-0"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 space-y-1",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsx)("h1",{className:"truncate text-2xl font-bold tracking-tight sm:text-3xl",children:a}),h]}),e&&(0,b.jsx)("p",{className:"text-sm text-muted-foreground sm:text-base",children:e})]}),g&&(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:g})]})}])},506376,a=>{"use strict";var b=a.i(187924),c=a.i(596221);a.s(["PageLoading",0,function({label:a}){return(0,b.jsxs)("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-3 text-muted-foreground",children:[(0,b.jsx)(c.Loader2,{className:"h-7 w-7 animate-spin text-primary"}),a&&(0,b.jsx)("p",{className:"text-sm",children:a})]})}])},697902,a=>{"use strict";a.s(["DEFAULT_PAGE_SIZE",0,18,"MAX_VISIBLE_PAGES",0,5,"PRINT_PREVIEW_PAGE_SIZE",0,200])},957292,a=>{"use strict";a.i(986705),a.s(["inferSubjectFromName",0,function(a){if(!a)return null;let b=a.toLowerCase();return b.includes("math")||b.includes("数学")?"math":b.includes("physics")||b.includes("物理")?"physics":b.includes("chemistry")||b.includes("化学")?"chemistry":b.includes("biology")||b.includes("生物")?"biology":b.includes("english")||b.includes("英语")?"english":b.includes("chinese")||b.includes("语文")?"chinese":b.includes("history")||b.includes("历史")?"history":b.includes("geography")||b.includes("地理")?"geography":b.includes("politics")||b.includes("政治")?"politics":null}])},992883,a=>{"use strict";function b(a){return"not_attempted"===a||"wrong_attempt"===a||"unknown"===a?a:"unknown"}a.s(["getMistakeStatusLabel",0,function(a,c="zh"){return("en"===c?{not_attempted:"Not attempted",wrong_attempt:"Wrong attempt",unknown:"Unknown"}:{not_attempted:"不会做",wrong_attempt:"做错了",unknown:"未判断"})[b(a)]},"normalizeMistakeStatusForSave",0,function(a,c){return(c||"").trim()?"wrong_attempt":b(a)}])},557999,a=>{"use strict";var b=a.i(572131),c=a.i(550194);a.s(["usePageTitle",0,function(...a){let{t:d}=(0,c.useLanguage)(),e=[d.pageTitle.base,...a.map(a=>"string"==typeof a?a.trim():"").filter(a=>a.length>0)].join("-");(0,b.useEffect)(()=>{document.title=e},[e])}])},879188,a=>{"use strict";var b=a.i(291938);async function c(a){try{return(await b.apiClient.get(`/api/error-items/short/${encodeURIComponent(a)}`)).id}catch{return null}}a.s(["locateByShortId",0,c])},83715,a=>{"use strict";let b=RegExp("^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{6}$");a.s(["isShortId",0,function(a){return"string"==typeof a&&b.test(a)}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0b8kewv._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},59639,(a,b,c)=>{b.exports=a.x("node:process",()=>require("node:process"))},857764,(a,b,c)=>{b.exports=a.x("node:url",()=>require("node:url"))},400210,a=>{"use strict";let b=(0,a.i(170106).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",0,b],400210)},114548,a=>{"use strict";let b=(0,a.i(170106).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);a.s(["Save",0,b],114548)},367295,a=>{"use strict";let b=(0,a.i(170106).default)("wand-sparkles",[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]]);a.s(["default",0,b])},946862,214491,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(238246),e=a.i(529759),f=a.i(986705),g=a.i(405784),h=a.i(767552),i=a.i(596221),j=a.i(915618),k=a.i(808406),l=a.i(781560),m=a.i(786304),n=a.i(699570),o=a.i(591119),p=a.i(93907),q=a.i(114548),r=a.i(866718),s=a.i(226897),t=a.i(550194),u=a.i(291938);function v({errorItemId:a,onSaved:d,onCancel:g}){let{t:h}=(0,t.useLanguage)(),{timeZone:j}=(0,e.useTimeZone)(),k=(0,f.formatDateTime)(new Date,"yyyy-MM-dd",j),[l,m]=(0,c.useState)(null),[o,p]=(0,c.useState)(k),[w,x]=(0,c.useState)(!1),[y,z]=(0,c.useState)(null),A=async()=>{if(l&&o){x(!0),z(null);try{await u.apiClient.post("/api/practice/record",{errorItemId:a,result:l,source:"manual",takenAt:(0,f.answeredDateToISOString)(o,j)}),d()}catch{z(h.mastery.resultSaveFailed)}finally{x(!1)}}};return(0,b.jsxs)("div",{className:"space-y-3 rounded-md border bg-muted/30 p-3",children:[(0,b.jsx)(s.PracticeResultPicker,{value:l,onChange:m,disabled:w}),(0,b.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,b.jsx)("label",{htmlFor:`practice-date-${a}`,className:"text-sm font-medium",children:h.mastery.recordDate}),(0,b.jsx)(r.Input,{id:`practice-date-${a}`,type:"date",value:o,max:k,onChange:a=>p(a.target.value),className:"sm:w-48"}),(0,b.jsxs)("div",{className:"flex gap-2 sm:ml-auto",children:[(0,b.jsx)(n.Button,{variant:"outline",size:"sm",onClick:g,disabled:w,className:"flex-1 sm:flex-none",children:h.exam.cancel}),(0,b.jsxs)(n.Button,{size:"sm",onClick:A,disabled:w||!l||!o,className:"flex-1 sm:flex-none",children:[w?(0,b.jsx)(i.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,b.jsx)(q.Save,{className:"mr-2 h-4 w-4"}),h.mastery.saveResult]})]})]}),y&&(0,b.jsx)("p",{className:"text-sm text-destructive",children:y})]})}var w=a.i(418943),x=a.i(710302);let y={correct:"bg-green-100 text-green-700 border-green-200",wrong:"bg-red-100 text-red-700 border-red-200",not_attempted:"bg-amber-100 text-amber-700 border-amber-200"};a.s(["MasteryPanel",0,function({errorItemId:a,onMasteryLevelChange:q}){let{timeZone:r}=(0,e.useTimeZone)(),{t:s}=(0,t.useLanguage)(),[z,A]=(0,c.useState)(null),[B,C]=(0,c.useState)(null),[D,E]=(0,c.useState)(0),[F,G]=(0,c.useState)(!1),H=(0,c.useCallback)(()=>{u.apiClient.get(`/api/error-items/${a}/practice-records`).then(a=>{A(a),q?.(a.masteryLevel)}).catch(()=>void 0)},[a,q]);(0,c.useEffect)(H,[H]);let I=()=>{E(0),H()},J=async a=>{if(await (0,x.confirmDialog)(s.mastery.deleteRecordConfirm,{destructive:!0}))try{await u.apiClient.delete(`/api/practice/record/${a}`),I()}catch{x.toast.error(s.mastery.deleteRecordFailed)}},K=z?.records[0],L=!!K&&(!z?.masteryEvaluatedAt||new Date(K.createdAt)>new Date(z.masteryEvaluatedAt));if((0,c.useEffect)(()=>{if(!L||D>=20)return;let a=setTimeout(()=>{E(a=>a+1),H()},4e3);return()=>clearTimeout(a)},[L,D,H]),!z)return null;let M=z.masteryProbability,N=null===M?null:Math.round(100*M),O=null===N?"":N>=80?"bg-green-500":N>=50?"bg-amber-500":"bg-red-500",P=s.practice.difficulty;return(0,b.jsxs)(o.Card,{children:[(0,b.jsx)(o.CardHeader,{children:(0,b.jsxs)(o.CardTitle,{className:"flex items-center gap-2 text-base",children:[(0,b.jsx)(k.Sparkles,{className:"h-4 w-4 text-primary"}),s.mastery.probability]})}),(0,b.jsxs)(o.CardContent,{className:"space-y-4",children:[null===N?(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:L?s.mastery.pending:s.mastery.notEvaluated}):(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,b.jsxs)("span",{className:"text-3xl font-bold",children:[N,"%"]}),(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[L&&(0,b.jsx)(i.Loader2,{className:"h-3 w-3 animate-spin"}),(0,b.jsx)(m.Badge,{variant:"outline",children:"ai"===z.masterySource?s.mastery.aiEvaluated:s.mastery.estimated})]})]}),(0,b.jsx)("div",{className:"h-2 w-full rounded-full bg-muted overflow-hidden",children:(0,b.jsx)("div",{className:`h-full ${O} transition-all`,style:{width:`${N}%`}})}),z.masteryReason&&(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:z.masteryReason}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:s.mastery.thresholdHint})]}),(0,b.jsxs)("div",{className:"space-y-2 border-t pt-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsx)("h4",{className:"text-sm font-semibold",children:s.mastery.history}),!F&&(0,b.jsxs)(n.Button,{variant:"outline",size:"sm",onClick:()=>G(!0),children:[(0,b.jsx)(j.Plus,{className:"mr-1 h-4 w-4"}),s.mastery.addRecord]})]}),F&&(0,b.jsx)(v,{errorItemId:a,onCancel:()=>G(!1),onSaved:()=>{G(!1),I()}}),0===z.records.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground italic",children:s.mastery.noHistory}):(0,b.jsx)("ul",{className:"divide-y rounded-md border",children:z.records.map(a=>(0,b.jsxs)("li",{className:"p-3 text-sm space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsxs)("button",{type:"button",className:"flex min-w-0 flex-1 flex-wrap items-center gap-2 text-left",onClick:()=>C(B===a.id?null:a.id),children:[(0,b.jsx)("span",{className:"text-muted-foreground tabular-nums",children:(0,f.formatDateTime)(a.createdAt,"yyyy-MM-dd HH:mm",r)}),(0,b.jsx)(m.Badge,{variant:"outline",className:y[a.result]||"",children:s.mastery.results[a.result]||a.result}),a.difficulty&&(0,b.jsx)(m.Badge,{variant:"secondary",children:P[a.difficulty]||a.difficulty}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:a.exam?`${s.mastery.sources.exam} \xb7 ${a.exam.title}`:s.mastery.sources[a.source]||s.mastery.sources.practice}),a.questionText&&(0,b.jsx)("span",{className:"ml-auto text-muted-foreground",children:B===a.id?(0,b.jsx)(h.ChevronUp,{className:"h-4 w-4"}):(0,b.jsx)(g.ChevronDown,{className:"h-4 w-4"})})]}),(0,b.jsx)("button",{type:"button","aria-label":s.mastery.deleteRecord,title:s.mastery.deleteRecord,className:"shrink-0 rounded p-1 text-muted-foreground hover:bg-red-50 hover:text-red-600",onClick:()=>J(a.id),children:(0,b.jsx)(l.Trash2,{className:"h-4 w-4"})})]}),B===a.id&&a.questionText&&(0,b.jsxs)("div",{className:"space-y-2 rounded-md bg-muted/40 p-3",children:[(0,b.jsx)(p.MarkdownRenderer,{content:a.questionText}),(0,b.jsx)(w.QuestionFigure,{svg:a.figureSvg}),a.wrongAnswerText&&(0,b.jsxs)("div",{className:"border-t pt-2",children:[(0,b.jsx)("p",{className:"mb-1 font-medium",children:s.editor.wrongAnswerText}),(0,b.jsx)(p.MarkdownRenderer,{content:a.wrongAnswerText})]}),a.mistakeAnalysis&&(0,b.jsxs)("div",{className:"border-t pt-2",children:[(0,b.jsx)("p",{className:"mb-1 font-medium",children:s.editor.mistakeAnalysis}),(0,b.jsx)(p.MarkdownRenderer,{content:a.mistakeAnalysis})]}),a.originalImageUrl&&(0,b.jsx)("img",{src:a.originalImageUrl,alt:s.editor.wrongAnswerText,className:"max-h-96 max-w-full rounded object-contain"}),a.answerText&&(0,b.jsx)("div",{className:"border-t pt-2",children:(0,b.jsx)(p.MarkdownRenderer,{content:a.answerText,className:"font-semibold"})}),a.exam&&(0,b.jsx)(d.default,{href:`/exams/${a.exam.paperId}`,className:"text-xs text-primary hover:underline",children:a.exam.title})]})]},a.id))})]})]})]})},"RESULT_BADGE_CLASS",0,y],946862);var z=a.i(367295);a.s(["WandSparkles",()=>z.default],214491)},226897,a=>{"use strict";var b=a.i(187924),c=a.i(816201);let d=(0,a.i(170106).default)("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var e=a.i(862722),f=a.i(550194);let g=[{value:"correct",icon:c.CheckCircle,active:"border-green-600 bg-green-50 text-green-700"},{value:"wrong",icon:e.XCircle,active:"border-red-600 bg-red-50 text-red-700"},{value:"not_attempted",icon:d,active:"border-amber-600 bg-amber-50 text-amber-700"}];a.s(["PracticeResultPicker",0,function({value:a,onChange:c,disabled:d,size:e="md"}){let{t:h}=(0,f.useLanguage)(),i="sm"===e?"px-2 py-1 text-xs":"px-3 py-2 text-sm";return(0,b.jsx)("div",{className:"grid grid-cols-3 gap-2",role:"radiogroup",children:g.map(({value:f,icon:g,active:j})=>(0,b.jsxs)("button",{type:"button",role:"radio","aria-checked":a===f,disabled:d,onClick:()=>c(f),className:`flex items-center justify-center gap-1 rounded-md border font-medium transition-colors disabled:opacity-60 ${i} ${a===f?j:"border-input hover:bg-muted"}`,children:[(0,b.jsx)(g,{className:"sm"===e?"h-3 w-3":"h-4 w-4"}),h.mastery.results[f]]},f))})}],226897)},418943,a=>{"use strict";var b=a.i(187924),c=a.i(550194),d=a.i(368114);a.s(["QuestionFigure",0,function({svg:a,className:e}){let{t:f}=(0,c.useLanguage)();return a?(0,b.jsx)("figure",{className:(0,d.cn)("question-figure my-3",e),children:(0,b.jsx)("img",{src:`data:image/svg+xml;charset=utf-8,${encodeURIComponent(a)}`,alt:f.figure.alt,className:"mx-auto block h-auto max-w-full rounded border bg-white p-2",style:{maxHeight:360}})}):null}],418943)},591119,a=>{"use strict";var b=a.i(187924),c=a.i(368114);a.s(["Card",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card",className:(0,c.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",a),...d})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-6",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-muted-foreground text-sm",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("leading-none font-semibold",a),...d})}])},557999,a=>{"use strict";var b=a.i(572131),c=a.i(550194);a.s(["usePageTitle",0,function(...a){let{t:d}=(0,c.useLanguage)(),e=[d.pageTitle.base,...a.map(a=>"string"==typeof a?a.trim():"").filter(a=>a.length>0)].join("-");(0,b.useEffect)(()=>{document.title=e},[e])}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0icjezr._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[400210,a=>{"use strict";let b=(0,a.i(170106).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",0,b],400210)},50522,a=>{"use strict";let b=(0,a.i(170106).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",0,b],50522)},699464,a=>{"use strict";let b=(0,a.i(170106).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",0,b],699464)},468368,723222,a=>{"use strict";var b=a.i(187924),c=a.i(550194),d=a.i(957292);let e=["primary","junior_high","senior_high"],f="primary",g=["math","english","chinese","physics","chemistry","biology","history","geography","politics"];function h(a){return"string"==typeof a&&g.includes(a)}function i(a){var b;let c=h(a.subjectKey)?a.subjectKey:(0,d.inferSubjectFromName)(a.name);return{stage:"string"==typeof(b=a.stage)&&e.includes(b)?a.stage:f,subject:c&&h(c)?c:null}}function j(){let{t:a}=(0,c.useLanguage)();return{stageLabel:b=>({primary:a.auth.primary,junior_high:a.auth.juniorHigh,senior_high:a.auth.seniorHigh})[b],subjectLabel:b=>a.tags.subjects[b]}}a.s(["DEFAULT_NOTEBOOK_STAGE",0,f,"NOTEBOOK_STAGES",0,e,"STAGE_SUBJECTS",0,{primary:["math","english"],junior_high:g,senior_high:g},"resolveNotebookScope",0,i],723222),a.s(["NotebookScopeLabel",0,function({notebook:a,className:c}){let{stageLabel:d,subjectLabel:e}=j(),f=i(a);return(0,b.jsxs)("span",{className:c,children:[d(f.stage),f.subject?` \xb7 ${e(f.subject)}`:""]})},"useNotebookScopeLabels",0,j],468368)},73556,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(814574),e=a.i(699570),f=a.i(866718),g=a.i(870430),h=a.i(550194),i=a.i(710302);a.s(["RenameNotebookDialog",0,function({open:a,onOpenChange:j,currentName:k,onRename:l}){let[m,n]=(0,c.useState)(k),[o,p]=(0,c.useState)(!1),{t:q}=(0,h.useLanguage)();(0,c.useEffect)(()=>{n(k)},[k]);let r=async()=>{if(!m.trim())return void i.toast.warning(q.notebooks?.renameDialog?.enterName||"Please enter notebook name");p(!0);try{await l(m.trim()),j(!1)}catch(a){console.error(a)}finally{p(!1)}};return(0,b.jsx)(d.Dialog,{open:a,onOpenChange:j,children:(0,b.jsxs)(d.DialogContent,{children:[(0,b.jsx)(d.DialogHeader,{children:(0,b.jsx)(d.DialogTitle,{children:q.notebooks?.renameDialog?.title||"Rename Notebook"})}),(0,b.jsx)("div",{className:"space-y-4 py-4",children:(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(g.Label,{htmlFor:"rename-name",children:q.notebooks?.renameDialog?.nameLabel||"New Name"}),(0,b.jsx)(f.Input,{id:"rename-name",placeholder:q.notebooks?.renameDialog?.placeholder||"Enter new notebook name",value:m,onChange:a=>n(a.target.value),onKeyDown:a=>"Enter"===a.key&&r()})]})}),(0,b.jsxs)(d.DialogFooter,{children:[(0,b.jsx)(e.Button,{variant:"outline",onClick:()=>j(!1),children:q.common.cancel}),(0,b.jsx)(e.Button,{onClick:r,disabled:o||!m.trim(),children:o?q.notebooks?.renameDialog?.renaming||"Renaming...":q.notebooks?.renameDialog?.rename||"Rename"})]})]})})}])},695001,a=>{"use strict";var b=a.i(187924),c=a.i(50944),d=a.i(699570),e=a.i(400210);a.s(["BackButton",0,function({fallbackUrl:a,className:f}){let g=(0,c.useRouter)();return(0,b.jsx)(d.Button,{variant:"ghost",size:"icon",onClick:()=>{g.push(a)},className:f,children:(0,b.jsx)(e.ArrowLeft,{className:"h-5 w-5"})})}])},579834,a=>{"use strict";var b=a.i(187924),c=a.i(368114);a.s(["EmptyState",0,function({icon:a,title:d,description:e,action:f,className:g}){return(0,b.jsxs)("div",{className:(0,c.cn)("flex flex-col items-center justify-center rounded-2xl border border-dashed bg-card/50 px-6 py-14 text-center",g),children:[(0,b.jsx)("div",{className:"mb-4 flex h-14 w-14 items-center justify-center rounded-2xl bg-accent text-accent-foreground",children:(0,b.jsx)(a,{className:"h-7 w-7"})}),(0,b.jsx)("p",{className:"font-medium",children:d}),e&&(0,b.jsx)("p",{className:"mt-1 max-w-sm text-sm text-muted-foreground",children:e}),f&&(0,b.jsx)("div",{className:"mt-5",children:f})]})}])},251538,a=>{"use strict";var b=a.i(187924),c=a.i(695001),d=a.i(368114);a.s(["PageHeader",0,function({title:a,description:e,backHref:f,actions:g,titleAddon:h,className:i}){return(0,b.jsxs)("div",{className:(0,d.cn)("flex items-start gap-3",i),children:[f&&(0,b.jsx)(c.BackButton,{fallbackUrl:f,className:"-ml-2 shrink-0"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 space-y-1",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsx)("h1",{className:"truncate text-2xl font-bold tracking-tight sm:text-3xl",children:a}),h]}),e&&(0,b.jsx)("p",{className:"text-sm text-muted-foreground sm:text-base",children:e})]}),g&&(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:g})]})}])},506376,a=>{"use strict";var b=a.i(187924),c=a.i(596221);a.s(["PageLoading",0,function({label:a}){return(0,b.jsxs)("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-3 text-muted-foreground",children:[(0,b.jsx)(c.Loader2,{className:"h-7 w-7 animate-spin text-primary"}),a&&(0,b.jsx)("p",{className:"text-sm",children:a})]})}])},957292,a=>{"use strict";a.i(986705),a.s(["inferSubjectFromName",0,function(a){if(!a)return null;let b=a.toLowerCase();return b.includes("math")||b.includes("数学")?"math":b.includes("physics")||b.includes("物理")?"physics":b.includes("chemistry")||b.includes("化学")?"chemistry":b.includes("biology")||b.includes("生物")?"biology":b.includes("english")||b.includes("英语")?"english":b.includes("chinese")||b.includes("语文")?"chinese":b.includes("history")||b.includes("历史")?"history":b.includes("geography")||b.includes("地理")?"geography":b.includes("politics")||b.includes("政治")?"politics":null}])},557999,a=>{"use strict";var b=a.i(572131),c=a.i(550194);a.s(["usePageTitle",0,function(...a){let{t:d}=(0,c.useLanguage)(),e=[d.pageTitle.base,...a.map(a=>"string"==typeof a?a.trim():"").filter(a=>a.length>0)].join("-");(0,b.useEffect)(()=>{document.title=e},[e])}])},879188,a=>{"use strict";var b=a.i(291938);async function c(a){try{return(await b.apiClient.get(`/api/error-items/short/${encodeURIComponent(a)}`)).id}catch{return null}}a.s(["locateByShortId",0,c])},83715,a=>{"use strict";let b=RegExp("^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{6}$");a.s(["isShortId",0,function(a){return"string"==typeof a&&b.test(a)}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_062gk85._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[833354,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}},953722,a=>{"use strict";let b=(0,a.i(170106).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",0,b],953722)},839761,a=>{"use strict";let b=(0,a.i(170106).default)("chart-column",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);a.s(["BarChart3",0,b],839761)},816201,a=>{"use strict";let b=(0,a.i(170106).default)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);a.s(["CheckCircle",0,b],816201)},862722,a=>{"use strict";let b=(0,a.i(170106).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);a.s(["XCircle",0,b],862722)},284505,a=>{"use strict";let b=(0,a.i(170106).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);a.s(["Download",0,b],284505)},141379,a=>{"use strict";let b=(0,a.i(170106).default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);a.s(["EyeOff",0,b],141379)},177156,a=>{"use strict";let b=(0,a.i(170106).default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Eye",0,b],177156)},104720,a=>{"use strict";let b=(0,a.i(170106).default)("file-text",[["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:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);a.s(["FileText",0,b],104720)},149625,a=>{"use strict";let b=(0,a.i(170106).default)("languages",[["path",{d:"m5 8 6 6",key:"1wu5hv"}],["path",{d:"m4 14 6-6 2-3",key:"1k1g8d"}],["path",{d:"M2 5h12",key:"or177f"}],["path",{d:"M7 2h1",key:"1t2jsx"}],["path",{d:"m22 22-5-10-5 10",key:"don7ne"}],["path",{d:"M14 18h6",key:"1m8k6r"}]]);a.s(["Languages",0,b],149625)},915618,a=>{"use strict";let b=(0,a.i(170106).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",0,b],915618)},669520,a=>{"use strict";let b=(0,a.i(170106).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);a.s(["RefreshCw",0,b],669520)},787654,a=>{"use strict";let b=(0,a.i(170106).default)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);a.s(["RotateCcw",0,b],787654)},546842,a=>{"use strict";let b=(0,a.i(170106).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",0,b],546842)},225949,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(596221),e=a.i(699570),f=a.i(866718),g=a.i(870430),h=a.i(550194),i=a.i(291938),j=a.i(630534);a.s(["DuplicateThresholdSetting",0,function({onSaved:a}){let{t:k}=(0,h.useLanguage)(),[l,m]=(0,c.useState)(String(90)),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)(!0),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(null),v=Number(l),w=""!==l.trim()&&Number.isFinite(v)&&v>=1&&v<=100&&1e-6>Math.abs(100*v-Math.round(100*v)),x=(0,c.useCallback)(async()=>{q(!0),u(null);try{let a=(await i.apiClient.get("/api/user")).questionDuplicateThreshold??90;m(String(a)),o(a)}catch(a){u(k.importFlow.thresholdLoadFailed),j.frontendLogger.error("[Settings]","加载判重阈值失败",{error:a instanceof Error?a.message:String(a)})}finally{q(!1)}},[k.importFlow.thresholdLoadFailed]);(0,c.useEffect)(()=>{x()},[x]);let y=async()=>{if(w&&null!==n){s(!0),u(null);try{let b=(await i.apiClient.patch("/api/user",{questionDuplicateThreshold:v})).questionDuplicateThreshold??v;o(b),m(String(b)),u(k.importFlow.preferenceSaved),a?.(b)}catch(a){u(k.importFlow.preferenceSaveFailed),j.frontendLogger.error("[Settings]","保存判重阈值失败",{error:a instanceof Error?a.message:String(a)})}finally{s(!1)}}};return(0,b.jsxs)("div",{className:"space-y-2 border-t pt-4",children:[(0,b.jsx)(g.Label,{htmlFor:"question-duplicate-threshold",children:k.importFlow.thresholdLabel}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(f.Input,{id:"question-duplicate-threshold",type:"number",min:1,max:100,step:.01,value:l,onChange:a=>{m(a.target.value),u(null)},disabled:p||r||null===n,className:"w-28","aria-describedby":"question-duplicate-threshold-hint"}),(0,b.jsx)("span",{"aria-hidden":"true",children:"%"}),(0,b.jsxs)(e.Button,{type:"button",size:"sm",variant:"outline",onClick:y,disabled:p||r||null===n||!w||v===n,children:[(p||r)&&(0,b.jsx)(d.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),k.importFlow.saveThreshold]}),!p&&null===n&&(0,b.jsx)(e.Button,{type:"button",size:"sm",variant:"outline",onClick:x,children:k.importFlow.retryLoad})]}),(0,b.jsx)("p",{id:"question-duplicate-threshold-hint",className:"text-xs text-muted-foreground",children:k.importFlow.thresholdDescription}),null!==n&&!w&&(0,b.jsx)("p",{className:"text-xs text-destructive",role:"alert",children:k.importFlow.thresholdInvalid}),t&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",role:"status",children:t})]})}],225949)},786304,a=>{"use strict";var b=a.i(187924),c=a.i(811011),d=a.i(400187),e=a.i(368114);let f=(0,d.cva)("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});a.s(["Badge",0,function({className:a,variant:d,asChild:g=!1,...h}){let i=g?c.Slot:"span";return(0,b.jsx)(i,{"data-slot":"badge",className:(0,e.cn)(f({variant:d}),a),...h})}])},870430,30553,a=>{"use strict";var b=a.i(187924),c=a.i(572131);a.i(935112);var d=a.i(811011),e=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((a,e)=>{let f=(0,d.createSlot)(`Primitive.${e}`),g=c.forwardRef((a,c)=>{let{asChild:d,...g}=a;return(0,b.jsx)(d?f:e,{...g,ref:c})});return g.displayName=`Primitive.${e}`,{...a,[e]:g}},{});a.s(["Primitive",0,e],30553);var f=c.forwardRef((a,c)=>(0,b.jsx)(e.label,{...a,ref:c,onMouseDown:b=>{b.target.closest("button, input, select, textarea")||(a.onMouseDown?.(b),!b.defaultPrevented&&b.detail>1&&b.preventDefault())}}));f.displayName="Label";var g=a.i(368114);a.s(["Label",0,function({className:a,...c}){return(0,b.jsx)(f,{"data-slot":"label",className:(0,g.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",a),...c})}],870430)},429246,a=>{"use strict";var b=a.i(187924),c=a.i(368114);a.s(["Textarea",0,function({className:a,...d}){return(0,b.jsx)("textarea",{"data-slot":"textarea",className:(0,c.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),...d})}])},529759,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(986705);let e=(0,c.createContext)({timeZone:d.DEFAULT_TIME_ZONE,setTimeZone:()=>void 0});a.s(["TimeZoneProvider",0,function({children:a,initialTimeZone:f=d.DEFAULT_TIME_ZONE}){let[g,h]=(0,c.useState)(f);return(0,b.jsx)(e.Provider,{value:{timeZone:g,setTimeZone:h},children:a})},"useTimeZone",0,function(){return(0,c.useContext)(e)}])},630534,a=>{"use strict";let b=new class{buffer=[];flushTimer=null;addToBuffer(a,b,c,d){let e={level:a,prefix:b,message:c,context:d,timestamp:new Date().toISOString(),url:"",userAgent:"u">typeof navigator?navigator.userAgent:""};(this.buffer.push(e),this.buffer.length>=20)?this.flush():this.scheduleFlush()}scheduleFlush(){this.flushTimer||(this.flushTimer=setTimeout(()=>{this.flush()},1e3))}flush(){if(this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=null),0===this.buffer.length)return;let a=[...this.buffer];this.buffer=[],this.sendBatch(a)}async sendBatch(a){try{fetch("/api/logs/frontend",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({logs:a})}).catch(a=>{console.warn("Failed to send logs to backend:",a)})}catch(a){}}info(a,b,c,d={}){console.log(`${a} ${b}`,c||""),!1!==d.sendToBackend&&this.addToBuffer("info",a,b,c)}warn(a,b,c,d={}){console.warn(`${a} ${b}`,c||""),!1!==d.sendToBackend&&this.addToBuffer("warn",a,b,c)}error(a,b,c,d={}){console.error(`${a} ${b}`,c||""),!1!==d.sendToBackend&&this.addToBuffer("error",a,b,c)}forceFlush(){this.flush()}};a.s(["frontendLogger",0,b])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0idg05p._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[808406,a=>{"use strict";let b=(0,a.i(170106).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",0,b],808406)},131368,a=>{"use strict";var b=a.i(187924);let c=(0,a.i(170106).default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);var d=a.i(550194),e=a.i(368114);let f=[1,2,3,4,5];a.s(["DifficultyStars",0,function({value:a,onChange:g,disabled:h,size:i="sm",showUnrated:j=!0,className:k}){let{t:l}=(0,d.useLanguage)(),m=a??0,n="sm"===i?"h-3.5 w-3.5":"h-5 w-5",o=m?l.difficulty.starsLabel.replace("{n}",String(m)):l.difficulty.unrated;return g?(0,b.jsxs)("span",{className:(0,e.cn)("inline-flex items-center gap-0.5",k),role:"group","aria-label":`${l.difficulty.label}:${o}`,title:l.difficulty.clearHint,children:[f.map(a=>(0,b.jsx)("button",{type:"button",disabled:h,onClick:()=>g(a===m?null:a),"aria-label":l.difficulty.setStars.replace("{n}",String(a)),"aria-pressed":a<=m,className:"rounded p-0.5 hover:bg-muted disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:(0,b.jsx)(c,{className:(0,e.cn)(n,a<=m?"fill-amber-400 text-amber-400":"text-muted-foreground/40")})},a)),!m&&j&&(0,b.jsx)("span",{className:"ml-1 text-xs text-muted-foreground",children:l.difficulty.unrated})]}):m?(0,b.jsx)("span",{className:(0,e.cn)("inline-flex items-center",k),role:"img","aria-label":`${l.difficulty.label}:${o}`,title:o,children:f.map(a=>(0,b.jsx)(c,{className:(0,e.cn)(n,a<=m?"fill-amber-400 text-amber-400":"text-muted-foreground/30"),"aria-hidden":!0},a))}):j?(0,b.jsx)("span",{className:(0,e.cn)("text-xs text-muted-foreground",k),children:l.difficulty.unrated}):null}],131368)},699814,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(633508),e=a.i(786304),f=a.i(866718),g=a.i(291938);a.s(["TagInput",0,function({value:a=[],onChange:h,placeholder:i="Enter tags...",className:j="",enterHint:k,subject:l,gradeStage:m}){let[n,o]=(0,c.useState)(""),[p,q]=(0,c.useState)([]),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(0),v=(0,c.useRef)(null),w=(0,c.useRef)(null);(0,c.useEffect)(()=>{n.trim()?x(n):(q([]),s(!1))},[n,l,m]);let x=async b=>{try{let c=new URLSearchParams({q:b});l&&c.append("subject",l),m&&c.append("stage",m);let d=((await g.apiClient.get(`/api/tags/suggestions?${c.toString()}`)).suggestions||[]).filter(b=>!a.includes(b));q(d.slice(0,20)),s(d.length>0),u(0)}catch(a){console.error("Failed to fetch suggestions:",a)}},y=b=>{b.trim()&&!a.includes(b.trim())&&(h([...a,b.trim()]),o(""),q([]),s(!1),u(0))},z=b=>{h(a.filter(a=>a!==b))};return(0,c.useEffect)(()=>{let a=a=>{!w.current||w.current.contains(a.target)||v.current?.contains(a.target)||s(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[]),(0,b.jsxs)("div",{className:`relative ${j}`,children:[(0,b.jsxs)("div",{className:"flex flex-wrap gap-2 p-2 border rounded-lg bg-background min-h-[42px]",children:[a.map(a=>(0,b.jsxs)(e.Badge,{variant:"secondary",className:"flex items-center gap-1 px-2 py-1",children:[a,(0,b.jsx)("button",{type:"button",onClick:()=>z(a),className:"hover:text-destructive ml-1",children:(0,b.jsx)(d.X,{className:"h-3 w-3"})})]},a)),(0,b.jsx)(f.Input,{ref:v,type:"text",value:n,onChange:a=>o(a.target.value),onKeyDown:b=>{"Enter"===b.key?(b.preventDefault(),t>=0&&p[t]?y(p[t]):n.trim()&&y(n)):"ArrowDown"===b.key?(b.preventDefault(),u(a=>Math.min(a+1,p.length-1))):"ArrowUp"===b.key?(b.preventDefault(),u(a=>Math.max(a-1,0))):"Escape"===b.key?(s(!1),u(0)):"Backspace"===b.key&&!n&&a.length>0&&z(a[a.length-1])},onFocus:()=>{p.length>0&&s(!0)},placeholder:0===a.length?i:"",className:"flex-1 min-w-[120px] border-none focus-visible:ring-0 focus-visible:ring-offset-0 h-8 px-0"})]}),r&&p.length>0&&(0,b.jsx)("div",{ref:w,className:"absolute z-50 w-full mt-1 bg-popover border rounded-md shadow-md max-h-48 overflow-y-auto",children:p.map((a,c)=>(0,b.jsx)("div",{className:`px-3 py-2 cursor-pointer hover:bg-accent ${c===t?"bg-accent":""}`,onClick:()=>y(a),onMouseEnter:()=>u(c),children:a},a))}),n&&!r&&(0,b.jsx)("div",{className:"text-xs text-muted-foreground mt-1",children:k?`${k} "${n}"`:`Press Enter to create "${n}"`})]})}])},579834,a=>{"use strict";var b=a.i(187924),c=a.i(368114);a.s(["EmptyState",0,function({icon:a,title:d,description:e,action:f,className:g}){return(0,b.jsxs)("div",{className:(0,c.cn)("flex flex-col items-center justify-center rounded-2xl border border-dashed bg-card/50 px-6 py-14 text-center",g),children:[(0,b.jsx)("div",{className:"mb-4 flex h-14 w-14 items-center justify-center rounded-2xl bg-accent text-accent-foreground",children:(0,b.jsx)(a,{className:"h-7 w-7"})}),(0,b.jsx)("p",{className:"font-medium",children:d}),e&&(0,b.jsx)("p",{className:"mt-1 max-w-sm text-sm text-muted-foreground",children:e}),f&&(0,b.jsx)("div",{className:"mt-5",children:f})]})}])},506376,a=>{"use strict";var b=a.i(187924),c=a.i(596221);a.s(["PageLoading",0,function({label:a}){return(0,b.jsxs)("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-3 text-muted-foreground",children:[(0,b.jsx)(c.Loader2,{className:"h-7 w-7 animate-spin text-primary"}),a&&(0,b.jsx)("p",{className:"text-sm",children:a})]})}])},957292,a=>{"use strict";a.i(986705),a.s(["inferSubjectFromName",0,function(a){if(!a)return null;let b=a.toLowerCase();return b.includes("math")||b.includes("数学")?"math":b.includes("physics")||b.includes("物理")?"physics":b.includes("chemistry")||b.includes("化学")?"chemistry":b.includes("biology")||b.includes("生物")?"biology":b.includes("english")||b.includes("英语")?"english":b.includes("chinese")||b.includes("语文")?"chinese":b.includes("history")||b.includes("历史")?"history":b.includes("geography")||b.includes("地理")?"geography":b.includes("politics")||b.includes("政治")?"politics":null}])},992883,a=>{"use strict";function b(a){return"not_attempted"===a||"wrong_attempt"===a||"unknown"===a?a:"unknown"}a.s(["getMistakeStatusLabel",0,function(a,c="zh"){return("en"===c?{not_attempted:"Not attempted",wrong_attempt:"Wrong attempt",unknown:"Unknown"}:{not_attempted:"不会做",wrong_attempt:"做错了",unknown:"未判断"})[b(a)]},"normalizeMistakeStatusForSave",0,function(a,c){return(c||"").trim()?"wrong_attempt":b(a)}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_1gu1rou._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,63804,e=>{"use strict";let t=(0,e.i(475254).default)("list-checks",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]]);e.s(["ListChecks",0,t],63804)},620278,e=>{"use strict";let t=(0,e.i(475254).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);e.s(["Target",0,t],620278)},952683,e=>{"use strict";var t=e.i(843476),s=e.i(271645),a=e.i(618566),n=e.i(798469),r=e.i(178119),i=e.i(12130),o=e.i(522016),l=e.i(217255),d=e.i(810980),c=e.i(63804),m=e.i(620278),u=e.i(111110);let g=()=>()=>{};function x({notebookCount:e,itemCount:a,targetNotebook:n}){let{t:r,language:i}=(0,u.useLanguage)(),{data:p}=(0,l.useSession)(),h=(0,s.useSyncExternalStore)(g,()=>new Date().getHours(),()=>null),f=null===h?r.common.welcome.replace(/[,,\s]+$/,""):h<12?r.home.greetingMorning:h<18?r.home.greetingAfternoon:r.home.greetingEvening,y=p?.user?.name||p?.user?.email||"";return(0,t.jsxs)("section",{className:"relative overflow-hidden rounded-2xl bg-gradient-to-br from-indigo-600 via-indigo-500 to-violet-500 p-5 text-white shadow-lg shadow-indigo-500/20 md:p-7",children:[(0,t.jsx)("div",{className:"pointer-events-none absolute -right-10 -top-12 h-44 w-44 rounded-full bg-white/10 blur-2xl"}),(0,t.jsx)("div",{className:"pointer-events-none absolute -bottom-16 right-24 h-40 w-40 rounded-full bg-fuchsia-300/20 blur-2xl"}),(0,t.jsxs)("div",{className:"relative flex flex-col gap-5 md:flex-row md:items-end md:justify-between",children:[(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsxs)("h1",{className:"text-xl font-bold tracking-tight md:text-2xl",children:[f,y&&`${"zh"===i?",":", "}${y}`]}),(0,t.jsx)("p",{className:"max-w-md text-sm text-white/80",children:r.home.heroSubtitle}),n&&(0,t.jsxs)("p",{className:"inline-flex items-center gap-1.5 rounded-full bg-white/15 px-3 py-1 text-xs font-medium",children:[(0,t.jsx)(m.Target,{className:"h-3.5 w-3.5"}),r.home.targetNotebook.replace("{name}",n)]})]}),(0,t.jsxs)(o.default,{href:"/notebooks",className:"grid grid-cols-2 gap-3 md:w-72",children:[(0,t.jsxs)("div",{className:"rounded-xl bg-white/15 px-4 py-3 backdrop-blur-sm transition-colors hover:bg-white/20",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-white/75",children:[(0,t.jsx)(d.BookOpen,{className:"h-3.5 w-3.5"}),r.home.notebookCount]}),(0,t.jsx)("div",{className:"mt-1 text-2xl font-bold tabular-nums",children:e})]}),(0,t.jsxs)("div",{className:"rounded-xl bg-white/15 px-4 py-3 backdrop-blur-sm transition-colors hover:bg-white/20",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-white/75",children:[(0,t.jsx)(c.ListChecks,{className:"h-3.5 w-3.5"}),r.home.itemCount]}),(0,t.jsx)("div",{className:"mt-1 text-2xl font-bold tabular-nums",children:a})]})]})]})]})}var p=e.i(41931),h=e.i(35209),f=e.i(28928),y=e.i(968553),v=e.i(674558),j=e.i(283086),w=e.i(86963),b=e.i(956738),S=e.i(185592),k=e.i(201276),N=e.i(717448),L=e.i(430634),A=e.i(747819),I=e.i(364002),C=e.i(515288),T=e.i(519455),H=e.i(624687),z=e.i(110204),P=e.i(356909),D=e.i(531278),$=e.i(286536),F=e.i(185873),F=F,E=e.i(367240),q=e.i(511445),R=e.i(574041),U=e.i(438465),B=e.i(967489),M=e.i(952122),O=e.i(294114);function K({onSubmit:e,defaultNotebookId:a,defaultNotebookName:n,isSaving:r}){let{t:i}=(0,u.useLanguage)(),[o,l]=(0,s.useState)(null),[d,c]=(0,s.useState)(""),[m,g]=(0,s.useState)(""),[x,p]=(0,s.useState)(""),[h,f]=(0,s.useState)(""),[y,j]=(0,s.useState)(""),[w,b]=(0,s.useState)("unknown"),[S,k]=(0,s.useState)([]),[N,L]=(0,s.useState)(a||""),[A,I]=(0,s.useState)(""),[V,_]=(0,s.useState)("a"),Q=async()=>{if(d.trim()){if(!N)return void O.toast.warning(i.editor.messages?.selectNotebook||"请选择错题本");await e({questionText:d.trim(),answerText:m.trim(),analysis:x.trim(),wrongAnswerText:h.trim(),mistakeAnalysis:y.trim(),mistakeStatus:w,knowledgePoints:S,subjectId:N,gradeSemester:A||void 0,paperLevel:V})}},X=e=>{(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&(e.preventDefault(),d.trim()&&N&&!r&&Q())},Z=[{key:"question",label:i.editor?.question||"题目内容",value:d,setter:c,placeholder:"输入题目内容...\n支持 Markdown 和 LaTeX 公式\n\n示例:\n# 题目一\n\n已知 $f(x) = x^2 + 2x + 1$,求 $f(3)$ 的值。\n\n**解题要求:**\n1. 写出解题步骤\n2. 给出最终答案",minHeight:"min-h-[180px]",required:!0},{key:"answer",label:i.editor?.answer||"参考答案",value:m,setter:g,placeholder:"输入参考答案...\n\n示例:\n$f(3) = 3^2 + 2 \\times 3 + 1 = 9 + 6 + 1 = 16$",minHeight:"min-h-[120px]"},{key:"analysis",label:i.editor?.analysis||"解题分析",value:x,setter:p,placeholder:"输入解题分析...\n\n示例:\n这是一个**一元二次函数**求值问题。\n\n将 $x=3$ 代入函数表达式:\n$$f(3) = 3^2 + 2 \\times 3 + 1 = 16$$",minHeight:"min-h-[150px]"},{key:"wrongAnswer",label:i.editor?.wrongAnswerText||"错误解答原文",value:h,setter:f,placeholder:"如果有错误解答可以粘贴在这里,没有可留空",minHeight:"min-h-[100px]"},{key:"mistakeAnalysis",label:i.editor?.mistakeAnalysis||"错因分析",value:y,setter:j,placeholder:"分析错误可能发生在哪一步、为什么错...",minHeight:"min-h-[100px]"}];return(0,t.jsx)(C.Card,{className:"rounded-2xl",children:(0,t.jsxs)(C.CardContent,{className:"p-6 space-y-5",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,t.jsx)(v.PenLine,{className:"h-5 w-5"}),(0,t.jsx)("span",{className:"text-sm font-medium",children:"直接录入错题内容(支持 Markdown + LaTeX)"})]}),(0,t.jsxs)(T.Button,{variant:"ghost",size:"sm",onClick:()=>{c(""),g(""),p(""),f(""),j(""),b("unknown"),k([]),I(""),_("a")},disabled:r,className:"text-muted-foreground hover:text-destructive",children:[(0,t.jsx)(E.RotateCcw,{className:"h-4 w-4 mr-1"}),"重置"]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)(z.Label,{children:[i.editor?.selectNotebook||"选择错题本"," *"]}),(0,t.jsx)(U.NotebookSelector,{value:N,onChange:L})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(z.Label,{children:i.editor?.gradeSemester||"年级/学期"}),(0,t.jsx)("input",{type:"text",value:A,onChange:e=>I(e.target.value),placeholder:"如:初二上学期",className:"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm"})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(z.Label,{children:i.editor?.paperLevel||"试卷难度"}),(0,t.jsxs)(B.Select,{value:V,onValueChange:_,children:[(0,t.jsx)(B.SelectTrigger,{children:(0,t.jsx)(B.SelectValue,{})}),(0,t.jsxs)(B.SelectContent,{children:[(0,t.jsx)(B.SelectItem,{value:"a",children:i.editor?.paperLevels?.a||"A卷/基础"}),(0,t.jsx)(B.SelectItem,{value:"b",children:i.editor?.paperLevels?.b||"B卷/提高"}),(0,t.jsx)(B.SelectItem,{value:"other",children:i.editor?.paperLevels?.other||"其他"})]})]})]})]}),Z.map(e=>(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)(z.Label,{className:e.required?"text-primary font-semibold":"",children:[e.label," ",e.required&&"*"]}),(0,t.jsx)(T.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 text-xs",onClick:()=>l(o===e.key?null:e.key),disabled:!e.value,children:o===e.key?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(F.default,{className:"h-3 w-3 mr-1"}),"编辑"]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)($.Eye,{className:"h-3 w-3 mr-1"}),"预览"]})})]}),o===e.key?(0,t.jsx)("div",{className:`rounded-md border bg-muted/30 p-4 ${e.minHeight} overflow-auto cursor-pointer`,onClick:()=>l(null),children:(0,t.jsx)(q.MarkdownRenderer,{content:e.value})}):(0,t.jsx)(H.Textarea,{value:e.value,onChange:t=>e.setter(t.target.value),onKeyDown:X,placeholder:e.placeholder,className:`${e.minHeight} font-mono text-sm resize-y`,disabled:r})]},e.key)),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(z.Label,{children:i.editor?.mistakeStatus||"作答状态"}),(0,t.jsxs)(B.Select,{value:w,onValueChange:e=>b(e),children:[(0,t.jsx)(B.SelectTrigger,{className:"w-[200px]",children:(0,t.jsx)(B.SelectValue,{})}),(0,t.jsxs)(B.SelectContent,{children:[(0,t.jsx)(B.SelectItem,{value:"not_attempted",children:i.editor?.mistakeStatuses?.notAttempted||"不会做"}),(0,t.jsx)(B.SelectItem,{value:"wrong_attempt",children:i.editor?.mistakeStatuses?.wrongAttempt||"做错了"}),(0,t.jsx)(B.SelectItem,{value:"unknown",children:i.editor?.mistakeStatuses?.unknown||"未判断"})]})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(z.Label,{children:i.editor?.tags||"知识点标签"}),(0,t.jsx)(R.TagInput,{value:S,onChange:k,placeholder:i.editor?.tagsPlaceholder||"输入知识点标签...",enterHint:i.editor?.createTagHint,subject:(0,M.inferSubjectFromName)(n||null)||void 0}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:i.editor?.tagsHint||"💡 输入时会自动匹配已有标签"})]}),(0,t.jsxs)("div",{className:"flex flex-col items-center gap-2 pt-2",children:[(0,t.jsx)(T.Button,{onClick:Q,disabled:!d.trim()||!N||r,className:"w-full bg-gradient-to-r from-indigo-600 to-violet-500 hover:from-indigo-700 hover:to-violet-600 text-white font-medium",size:"lg",children:r?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(D.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),"保存中..."]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(P.Save,{className:"mr-2 h-4 w-4"}),"直接保存"]})}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground text-center",children:"填写题目和答案后直接保存,无需 AI 分析 · Ctrl+Enter 快捷保存"})]})]})})}function V(){let[e,o]=(0,s.useState)("upload"),[l,d]=(0,s.useState)("idle"),[c,m]=(0,s.useState)(null),[g,w]=(0,s.useState)(null),{t:C,language:T}=(0,u.useLanguage)();(0,h.usePageTitle)(C.pageTitle.home);let H=(0,a.useSearchParams)(),z=(0,a.useRouter)(),P=H.get("notebook"),[D,$]=(0,s.useState)([]),[F,E]=(0,s.useState)(null),[q,R]=(0,s.useState)(null),[U,B]=(0,s.useState)("image"),[M,V]=(0,s.useState)(null),[_,Q]=(0,s.useState)(!1),[X,Z]=(0,s.useState)(!1),[J,G]=(0,s.useState)(null),[W,Y]=(0,s.useState)(null),ee=q?.timeouts?.analyze||18e4,et=ee+1e4;(0,s.useEffect)(()=>()=>{M&&URL.revokeObjectURL(M)},[M]),(0,s.useEffect)(()=>{p.apiClient.get("/api/notebooks").then(e=>$(e)).catch(e=>console.error("Failed to fetch notebooks:",e)),(0,I.fetchConfirmBeforeImport)().then(Z),p.apiClient.get("/api/settings").then(e=>{R(e),e.timeouts?.analyze&&k.frontendLogger.info("[Config]","Loaded timeout settings",{analyze:e.timeouts.analyze})}).catch(e=>console.error("Failed to fetch config:",e))},[]),(0,s.useEffect)(()=>{if("idle"===l)return;let e=setTimeout(()=>{k.frontendLogger.warn("[Progress]","处理超时,关闭进度提示",{analysisStep:l,safetyTimeout:et}),d("idle")},et);return()=>clearTimeout(e)},[l,et]);let es=async e=>{Q(!1),ea(new File([e],"cropped-image.jpg",{type:"image/jpeg"}))},ea=async e=>{let t=Date.now();k.frontendLogger.info("[HomeAnalyze]","Starting analysis flow",{timeoutSettings:{apiTimeout:ee,safetyTimeout:et}});try{k.frontendLogger.info("[HomeAnalyze]","Step 1/5: Compressing image"),d("compressing");let s=await (0,f.processImageFile)(e);w(s),k.frontendLogger.info("[HomeAnalyze]","Image compressed successfully",{size:s.length}),k.frontendLogger.info("[HomeAnalyze]","Step 2/5: Calling API endpoint /api/analyze"),d("analyzing");let a=Date.now(),n=await p.apiClient.post("/api/analyze",{imageBase64:s,language:T,subjectId:P||F||void 0},{timeout:ee}),r=Date.now()-a;if(k.frontendLogger.info("[HomeAnalyze]","API response received, validating data",{apiDuration:r}),!n||"object"!=typeof n)throw k.frontendLogger.error("[HomeAnalyze]","Validation failed - invalid response data",{data:n}),Error("Invalid API response: data is null or not an object");if(k.frontendLogger.info("[HomeAnalyze]","Response data validated successfully"),k.frontendLogger.info("[HomeAnalyze]","开始处理 AI 返回结果"),d("processing"),!X){d("saving");let e=await (0,I.saveParsedQuestion)(n,{subjectId:P,imageUrl:s});G(e),w(null),k.frontendLogger.info("[HomeAnalyze]","Imported without review",{id:e.id});return}k.frontendLogger.info("[HomeAnalyze]","Step 4/5: Setting parsed data and auto-selecting notebook");let i=JSON.stringify(n).length;if(n.subject){let e=D.find(e=>e.name.includes(n.subject)||n.subject.includes(e.name));e&&(E(e.id),k.frontendLogger.info("[HomeAnalyze]","Auto-selected notebook",{notebook:e.name,subject:n.subject}))}let l=Date.now();m(n);let c=Date.now()-l;k.frontendLogger.info("[HomeAnalyze]","Parsed data set successfully",{dataSize:i,setDataDuration:c}),k.frontendLogger.info("[HomeAnalyze]","Step 5/5: Switching to review page");let u=Date.now();o("review");let g=Date.now()-u;k.frontendLogger.info("[HomeAnalyze]","Step switched to review",{setStepDuration:g});let x=Date.now()-t;k.frontendLogger.info("[HomeAnalyze]","Analysis completed successfully",{totalDuration:x})}catch(s){let e=Date.now()-t;k.frontendLogger.error("[HomeError]","Analysis failed",{errorDuration:e,error:s.message||String(s)});try{let e=C.common?.messages?.analysisFailed||"Analysis failed, please try again",t=s?.data?.message;if(t&&"string"==typeof t)if(C.errors&&"object"==typeof C.errors&&t in C.errors){let s=C.errors[t];"string"==typeof s&&(e=s,k.frontendLogger.info("[HomeError]",`Matched error type: ${t}`,{errorMessage:e}))}else e=t,k.frontendLogger.info("[HomeError]","Using backend error message",{errorMessage:e});else s?.message&&(s.message.includes("fetch")||s.message.includes("network")?e=C.errors?.AI_CONNECTION_FAILED||"网络连接失败":"string"==typeof s.data&&(k.frontendLogger.info("[HomeError]","Raw error data",{errorDataPreview:s.data.substring(0,100)}),e+=` (${s.status||"Error"})`));O.toast.error(e)}catch(e){k.frontendLogger.error("[HomeError]","Failed to process error message",{innerError:String(e)}),O.toast.error("Analysis failed. Please try again.")}}finally{k.frontendLogger.info("[HomeAnalyze]","Finally: Resetting analysis state to idle"),d("idle"),k.frontendLogger.info("[HomeAnalyze]","Analysis state reset complete")}},en=async e=>{k.frontendLogger.info("[HomeSave]","Starting save process",{hasQuestionText:!!e.questionText,hasAnswerText:!!e.answerText,subjectId:e.subjectId,knowledgePointsCount:e.knowledgePoints?.length||0,hasImage:!!g,imageSize:g?.length||0});try{let t=await p.apiClient.post("/api/error-items",{...e,originalImageUrl:g||""});t.duplicate&&k.frontendLogger.info("[HomeSave]","Duplicate submission detected, using existing record"),k.frontendLogger.info("[HomeSave]","Save successful"),o("upload"),m(null),w(null),O.toast.success(t.duplicate?C.importFlow.duplicate:C.common.messages.saveSuccess),t.duplicate?z.push(`/error-items/${t.id}`):e.subjectId&&z.push(`/notebooks/${e.subjectId}`)}catch(e){k.frontendLogger.error("[HomeSave]","Save failed",{errorStatus:e?.status,errorMessage:e?.data?.message||e?.message||String(e),errorData:e?.data}),O.toast.error(C.common?.messages?.saveFailed||"Failed to save")}},er=async e=>{let t=Date.now();k.frontendLogger.info("[HomeTextSubmit]","Starting text-based analysis",{textLength:e.length});try{d("analyzing");let s=P||F,a=s?D.find(e=>e.id===s):void 0,n=await p.apiClient.post("/api/reanswer",{questionText:e,language:T,subject:a?.name||void 0,subjectId:a?.id},{timeout:ee});d("processing");let r={questionText:e,answerText:n.answerText,analysis:n.analysis,knowledgePoints:n.knowledgePoints||[],wrongAnswerText:n.wrongAnswerText||"",mistakeAnalysis:n.mistakeAnalysis||"",mistakeStatus:n.mistakeStatus||"unknown",subject:n.subject||"其他",requiresImage:!1,difficultyStars:n.difficultyStars??null};if(!X){d("saving");let e=await (0,I.saveParsedQuestion)(r,{subjectId:P,imageUrl:null});G(e);return}w(null),m(r),o("review");let i=Date.now()-t;k.frontendLogger.info("[HomeTextSubmit]","Text analysis completed",{totalDuration:i})}catch(s){let e=Date.now()-t;k.frontendLogger.error("[HomeTextSubmit]","Analysis failed",{errorDuration:e,error:s.message||String(s)});try{let e=C.common?.messages?.analysisFailed||"Analysis failed, please try again",t=s?.data?.message;if(t&&"string"==typeof t)if(C.errors&&"object"==typeof C.errors&&t in C.errors){let s=C.errors[t];"string"==typeof s&&(e=s)}else e=t;O.toast.error(e)}catch{O.toast.error("Analysis failed. Please try again.")}}finally{d("idle")}},ei=async e=>{k.frontendLogger.info("[HomeDirectSave]","Starting direct save",{hasQuestionText:!!e.questionText,hasAnswerText:!!e.answerText,subjectId:e.subjectId});try{d("saving");let t=await p.apiClient.post("/api/error-items",{questionText:e.questionText,answerText:e.answerText,analysis:e.analysis,wrongAnswerText:e.wrongAnswerText||null,mistakeAnalysis:e.mistakeAnalysis||null,mistakeStatus:e.mistakeStatus||"unknown",knowledgePoints:e.knowledgePoints,subjectId:e.subjectId,gradeSemester:e.gradeSemester,paperLevel:e.paperLevel,originalImageUrl:""});t.duplicate&&k.frontendLogger.info("[HomeDirectSave]","Duplicate detected"),k.frontendLogger.info("[HomeDirectSave]","Save successful"),d("idle"),O.toast.success(t.duplicate?C.importFlow.duplicate:C.common.messages.saveSuccess),t.duplicate?z.push(`/error-items/${t.id}`):e.subjectId&&z.push(`/notebooks/${e.subjectId}`)}catch(e){k.frontendLogger.error("[HomeDirectSave]","Save failed",{errorStatus:e?.status,errorMessage:e?.data?.message||e?.message||String(e)}),d("idle"),O.toast.error(C.common?.messages?.saveFailed||"Failed to save")}},eo=P||F,el=eo?D.find(e=>e.id===eo)?.name:void 0,ed=D.reduce((e,t)=>e+(t._count?.errorItems||0),0),ec=[{value:"image",icon:y.Camera,label:C.app?.uploadImage||"拍照上传"},{value:"text",icon:j.Sparkles,label:C.app?.manualInput||"AI解题"},{value:"direct",icon:v.PenLine,label:C.app?.directInput||"直接录入"}];return(0,t.jsxs)("main",{className:"min-h-screen",children:[(0,t.jsx)(b.ProgressFeedback,{status:l}),(0,t.jsxs)("div",{className:`mx-auto space-y-6 px-4 py-6 md:px-8 md:py-8 ${"review"===e?"max-w-6xl":"max-w-4xl"}`,children:["upload"===e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(x,{notebookCount:D.length,itemCount:ed,targetNotebook:P?el:void 0}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(S.SegmentedControl,{options:ec,value:U,onChange:B}),J&&(0,t.jsx)(L.ImportResultBanner,{imported:J,onDismiss:()=>G(null)}),W?(0,t.jsx)(A.BatchImportPanel,{blobs:W,subjectId:P,timeout:ee,onClose:()=>Y(null)}):"image"===U?(0,t.jsx)(n.UploadZone,{onImageSelect:e=>{G(null),V(URL.createObjectURL(e)),Q(!0)},isAnalyzing:"idle"!==l}):"text"===U?(0,t.jsx)(N.TextInputZone,{onSubmit:er,isAnalyzing:"idle"!==l,defaultNotebookName:el}):(0,t.jsx)(K,{onSubmit:ei,defaultNotebookId:eo||void 0,defaultNotebookName:el,isSaving:"saving"===l})]})]}),M&&(0,t.jsx)(i.ImageCropper,{imageSrc:M,open:_,onClose:()=>Q(!1),onCropComplete:es,onMultiCropComplete:e=>{Q(!1),G(null),Y(e)}}),"review"===e&&c&&(0,t.jsx)(r.CorrectionEditor,{initialData:c,onSave:en,onCancel:()=>o("upload"),imagePreview:g,initialSubjectId:P||F||void 0,aiTimeout:ee})]})]})}e.s(["default",0,function(){return(0,t.jsx)(s.Suspense,{fallback:(0,t.jsx)(w.PageLoading,{}),children:(0,t.jsx)(V,{})})}],952683)},86963,e=>{"use strict";var t=e.i(843476),s=e.i(531278);e.s(["PageLoading",0,function({label:e}){return(0,t.jsxs)("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-3 text-muted-foreground",children:[(0,t.jsx)(s.Loader2,{className:"h-7 w-7 animate-spin text-primary"}),e&&(0,t.jsx)("p",{className:"text-sm",children:e})]})}])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,871689,e=>{"use strict";let t=(0,e.i(475254).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],871689)},463059,e=>{"use strict";let t=(0,e.i(475254).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",0,t],463059)},788699,e=>{"use strict";let t=(0,e.i(475254).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,t],788699)},666776,e=>{"use strict";var t=e.i(843476),a=e.i(271645),s=e.i(618566),o=e.i(519455),i=e.i(912505),n=e.i(393842),r=e.i(86963),l=e.i(531278),c=e.i(475254);let d=(0,c.default)("locate-fixed",[["line",{x1:"2",x2:"5",y1:"12",y2:"12",key:"bvdh0s"}],["line",{x1:"19",x2:"22",y1:"12",y2:"12",key:"1tbv5k"}],["line",{x1:"12",x2:"12",y1:"2",y2:"5",key:"11lu5j"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}],["circle",{cx:"12",cy:"12",r:"7",key:"fim9np"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var u=e.i(793479),m=e.i(111110),h=e.i(833547),g=e.i(747279);function x(){let{t:e}=(0,m.useLanguage)(),i=(0,s.useRouter)(),[n,r]=(0,a.useState)(""),[c,x]=(0,a.useState)(null),[p,b]=(0,a.useState)(!1),y=async t=>{t.preventDefault();let a=n.trim();if(!(0,g.isShortId)(a))return void x(e.shortId.invalid);b(!0),x(null);let s=await (0,h.locateByShortId)(a);b(!1),s?i.push(`/error-items/${s}`):x(e.shortId.notFound)};return(0,t.jsxs)("form",{onSubmit:y,className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(u.Input,{value:n,onChange:e=>{r(e.target.value),x(null)},placeholder:e.shortId.locatePlaceholder,maxLength:6,className:"font-mono sm:max-w-xs","aria-label":e.shortId.locateTitle}),(0,t.jsxs)(o.Button,{type:"submit",variant:"outline",disabled:p||!n.trim(),children:[p?(0,t.jsx)(l.Loader2,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(d,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"ml-2",children:e.shortId.locate})]})]}),c&&(0,t.jsx)("p",{className:"text-xs text-destructive",children:c})]})}var p=e.i(810980),b=e.i(107233);let y=(0,c.default)("atom",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["path",{d:"M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z",key:"1l2ple"}],["path",{d:"M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z",key:"1wam0m"}]]),k=(0,c.default)("book-text",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}],["path",{d:"M8 11h8",key:"vwpz6n"}],["path",{d:"M8 7h6",key:"1f0q6e"}]]);var j=e.i(463059);let f=(0,c.default)("flask-conical",[["path",{d:"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2",key:"18mbvz"}],["path",{d:"M6.453 15h11.094",key:"3shlmq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}]]),v=(0,c.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]),N=(0,c.default)("landmark",[["path",{d:"M10 18v-7",key:"wt116b"}],["path",{d:"M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z",key:"1m329m"}],["path",{d:"M14 18v-7",key:"vav6t3"}],["path",{d:"M18 18v-7",key:"aexdmj"}],["path",{d:"M3 22h18",key:"8prr45"}],["path",{d:"M6 18v-7",key:"1ivflk"}]]);var S=e.i(763639);let w=(0,c.default)("leaf",[["path",{d:"M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",key:"nnexq3"}],["path",{d:"M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12",key:"mt58a7"}]]);var C=e.i(788699);let E=(0,c.default)("scale",[["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"m19 8 3 8a5 5 0 0 1-6 0zV7",key:"zcdpyk"}],["path",{d:"M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1",key:"1yorad"}],["path",{d:"m5 8 3 8a5 5 0 0 1-6 0zV7",key:"eua70x"}],["path",{d:"M7 21h10",key:"1b0cd5"}]]),T=(0,c.default)("sigma",[["path",{d:"M18 7V5a1 1 0 0 0-1-1H6.5a.5.5 0 0 0-.4.8l4.5 6a2 2 0 0 1 0 2.4l-4.5 6a.5.5 0 0 0 .4.8H17a1 1 0 0 0 1-1v-2",key:"wuwx1p"}]]);var L=e.i(727612),B=e.i(709830),D=e.i(76824);let M={math:{icon:T,className:"bg-blue-100 text-blue-600 dark:bg-blue-500/15 dark:text-blue-300"},english:{icon:S.Languages,className:"bg-emerald-100 text-emerald-600 dark:bg-emerald-500/15 dark:text-emerald-300"},chinese:{icon:k,className:"bg-rose-100 text-rose-600 dark:bg-rose-500/15 dark:text-rose-300"},physics:{icon:y,className:"bg-amber-100 text-amber-600 dark:bg-amber-500/15 dark:text-amber-300"},chemistry:{icon:f,className:"bg-teal-100 text-teal-600 dark:bg-teal-500/15 dark:text-teal-300"},biology:{icon:w,className:"bg-lime-100 text-lime-700 dark:bg-lime-500/15 dark:text-lime-300"},history:{icon:N,className:"bg-orange-100 text-orange-600 dark:bg-orange-500/15 dark:text-orange-300"},geography:{icon:v,className:"bg-cyan-100 text-cyan-600 dark:bg-cyan-500/15 dark:text-cyan-300"},politics:{icon:E,className:"bg-red-100 text-red-600 dark:bg-red-500/15 dark:text-red-300"}},A={icon:p.BookOpen,className:"bg-accent text-accent-foreground"};function O({id:e,name:a,stage:s,subjectKey:i,errorCount:n,onClick:r,onRename:l,onDelete:c,itemLabel:d="items"}){let u=(0,D.resolveNotebookScope)({name:a,stage:s,subjectKey:i}),{icon:m,className:h}=u.subject?M[u.subject]:A;return(0,t.jsxs)("div",{role:"link",tabIndex:0,className:"group relative flex cursor-pointer items-center gap-4 rounded-2xl border bg-card p-4 shadow-sm transition-all hover:-translate-y-0.5 hover:border-primary/40 hover:shadow-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:r,onKeyDown:e=>{"Enter"===e.key&&r()},children:[(0,t.jsx)("div",{className:`flex h-12 w-12 shrink-0 items-center justify-center rounded-xl ${h}`,children:(0,t.jsx)(m,{className:"h-6 w-6"})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("h3",{className:"truncate font-semibold",children:a}),(0,t.jsxs)("p",{className:"mt-0.5 flex items-center gap-1.5 text-sm text-muted-foreground",children:[(0,t.jsx)("span",{className:"font-medium tabular-nums text-foreground",children:n}),d,(0,t.jsx)("span",{className:"text-border",children:"|"}),(0,t.jsx)(B.NotebookScopeLabel,{notebook:{name:a,stage:s,subjectKey:i},className:"truncate"})]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-within:opacity-100",children:[l&&(0,t.jsx)(o.Button,{variant:"ghost",size:"icon-sm",className:"text-muted-foreground",onClick:e=>{e.stopPropagation(),l()},children:(0,t.jsx)(C.Pencil,{className:"h-4 w-4"})}),c&&(0,t.jsx)(o.Button,{variant:"ghost",size:"icon-sm",onClick:t=>{t.stopPropagation(),c(e)},children:(0,t.jsx)(L.Trash2,{className:`h-4 w-4 ${n>0?"text-muted-foreground":"text-destructive"}`})})]}),(0,t.jsx)(j.ChevronRight,{className:"hidden h-4 w-4 shrink-0 text-muted-foreground sm:block"})]})}var _=e.i(776639),P=e.i(110204),I=e.i(967489),F=e.i(294114);function R({open:e,onOpenChange:s,onCreate:i}){let[n,r]=(0,a.useState)(""),[l,c]=(0,a.useState)(D.DEFAULT_NOTEBOOK_STAGE),[d,h]=(0,a.useState)(D.STAGE_SUBJECTS[D.DEFAULT_NOTEBOOK_STAGE][0]),[g,x]=(0,a.useState)(!1),{t:p}=(0,m.useLanguage)(),{stageLabel:b,subjectLabel:y}=(0,B.useNotebookScopeLabels)(),k=async()=>{if(!n.trim())return void F.toast.warning(p.notebooks?.dialog?.enterName||"Please enter notebook name");x(!0);try{await i({name:n.trim(),stage:l,subjectKey:d}),r(""),s(!1)}catch(e){console.error(e)}finally{x(!1)}};return(0,t.jsx)(_.Dialog,{open:e,onOpenChange:s,children:(0,t.jsxs)(_.DialogContent,{children:[(0,t.jsxs)(_.DialogHeader,{children:[(0,t.jsx)(_.DialogTitle,{children:p.notebooks?.dialog?.title||"Create New Notebook"}),(0,t.jsx)(_.DialogDescription,{children:p.notebooks?.dialog?.desc||"Create separate notebooks for different subjects or chapters"})]}),(0,t.jsxs)("div",{className:"space-y-4 py-4",children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(P.Label,{htmlFor:"notebook-stage",children:p.notebooks.dialog.stageLabel}),(0,t.jsxs)(I.Select,{value:l,onValueChange:e=>{c(e),D.STAGE_SUBJECTS[e].includes(d)||h(D.STAGE_SUBJECTS[e][0])},children:[(0,t.jsx)(I.SelectTrigger,{id:"notebook-stage",children:(0,t.jsx)(I.SelectValue,{})}),(0,t.jsx)(I.SelectContent,{children:D.NOTEBOOK_STAGES.map(e=>(0,t.jsx)(I.SelectItem,{value:e,children:b(e)},e))})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(P.Label,{htmlFor:"notebook-subject",children:p.notebooks.dialog.subjectLabel}),(0,t.jsxs)(I.Select,{value:d,onValueChange:e=>h(e),children:[(0,t.jsx)(I.SelectTrigger,{id:"notebook-subject",children:(0,t.jsx)(I.SelectValue,{})}),(0,t.jsx)(I.SelectContent,{children:D.STAGE_SUBJECTS[l].map(e=>(0,t.jsx)(I.SelectItem,{value:e,children:y(e)},e))})]})]})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:p.notebooks.dialog.scopeHint}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(P.Label,{htmlFor:"name",children:p.notebooks?.dialog?.nameLabel||"Notebook Name"}),(0,t.jsx)(u.Input,{id:"name",placeholder:p.notebooks?.dialog?.placeholder||"e.g. Math, Physics, Chemistry...",value:n,onChange:e=>r(e.target.value),onKeyDown:e=>"Enter"===e.key&&k()})]})]}),(0,t.jsxs)(_.DialogFooter,{children:[(0,t.jsx)(o.Button,{variant:"outline",onClick:()=>s(!1),children:p.common.cancel}),(0,t.jsx)(o.Button,{onClick:k,disabled:g||!n.trim(),children:g?p.notebooks?.dialog?.creating||"Creating...":p.notebooks?.dialog?.create||"Create"})]})]})})}var z=e.i(67153),H=e.i(41931),K=e.i(35209);e.s(["default",0,function(){let e=(0,s.useRouter)(),{t:l}=(0,m.useLanguage)();(0,K.usePageTitle)(l.notebooks.title);let[c,d]=(0,a.useState)([]),[u,h]=(0,a.useState)(!0),[g,y]=(0,a.useState)(!1),[k,j]=(0,a.useState)(null);(0,a.useEffect)(()=>{f()},[]);let f=async()=>{try{let e=await H.apiClient.get("/api/notebooks");d(e)}catch(e){console.error("Failed to fetch notebooks:",e)}finally{h(!1)}},v=async e=>{try{await H.apiClient.post("/api/notebooks",e),await f()}catch(t){console.error(t);let e=t.data?.message||l.notebooks?.createError||"Failed to create";F.toast.error(e)}},N=async e=>{k&&(await H.apiClient.put(`/api/notebooks/${k.id}`,{name:e}),j(null),await f())},S=async(e,t,a)=>{if(t>0)return void F.toast.warning(l.notebooks?.deleteNotEmpty||"Please clear all items in this notebook first.");if(await (0,F.confirmDialog)((l.notebooks?.deleteConfirm||"Are you sure?").replace("{name}",a),{destructive:!0}))try{await H.apiClient.delete(`/api/notebooks/${e}`),await f()}catch(t){console.error(t);let e=t.data?.message||l.notebooks?.deleteError||"Failed to delete";F.toast.error(e)}};return u?(0,t.jsx)(r.PageLoading,{label:l.common.loading}):(0,t.jsx)("main",{className:"mx-auto min-h-screen max-w-6xl px-4 py-6 md:px-8 md:py-8",children:(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)(n.PageHeader,{title:l.notebooks?.title||"My Notebooks",description:l.notebooks?.subtitle||"Manage your mistakes by subject",actions:(0,t.jsxs)(o.Button,{onClick:()=>y(!0),"aria-label":l.notebooks?.create||"New Notebook",children:[(0,t.jsx)(b.Plus,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"hidden sm:inline",children:l.notebooks?.create||"New Notebook"})]})}),(0,t.jsx)(x,{}),0===c.length?(0,t.jsx)(i.EmptyState,{icon:p.BookOpen,title:l.notebooks?.empty||"No notebooks yet.",action:(0,t.jsxs)(o.Button,{onClick:()=>y(!0),children:[(0,t.jsx)(b.Plus,{className:"h-4 w-4"}),l.notebooks?.createFirst||"Create Notebook"]})}):(0,t.jsx)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",children:c.map(a=>(0,t.jsx)(O,{id:a.id,name:a.name,stage:a.stage,subjectKey:a.subjectKey,errorCount:a._count?.errorItems||0,onClick:()=>{var t;return t=a.id,void e.push(`/notebooks/${t}`)},onRename:()=>j(a),onDelete:()=>S(a.id,a._count?.errorItems||0,a.name),itemLabel:l.notebooks?.items||"items"},a.id))}),(0,t.jsx)(R,{open:g,onOpenChange:y,onCreate:v},l.common.loading),(0,t.jsx)(z.RenameNotebookDialog,{open:!!k,onOpenChange:e=>{e||j(null)},currentName:k?.name||"",onRename:N})]})})}],666776)},709830,76824,e=>{"use strict";var t=e.i(843476),a=e.i(111110),s=e.i(952122);let o=["primary","junior_high","senior_high"],i="primary",n=["math","english","chinese","physics","chemistry","biology","history","geography","politics"];function r(e){return"string"==typeof e&&n.includes(e)}function l(e){var t;let a=r(e.subjectKey)?e.subjectKey:(0,s.inferSubjectFromName)(e.name);return{stage:"string"==typeof(t=e.stage)&&o.includes(t)?e.stage:i,subject:a&&r(a)?a:null}}function c(){let{t:e}=(0,a.useLanguage)();return{stageLabel:t=>({primary:e.auth.primary,junior_high:e.auth.juniorHigh,senior_high:e.auth.seniorHigh})[t],subjectLabel:t=>e.tags.subjects[t]}}e.s(["DEFAULT_NOTEBOOK_STAGE",0,i,"NOTEBOOK_STAGES",0,o,"STAGE_SUBJECTS",0,{primary:["math","english"],junior_high:n,senior_high:n},"resolveNotebookScope",0,l],76824),e.s(["NotebookScopeLabel",0,function({notebook:e,className:a}){let{stageLabel:s,subjectLabel:o}=c(),i=l(e);return(0,t.jsxs)("span",{className:a,children:[s(i.stage),i.subject?` \xb7 ${o(i.subject)}`:""]})},"useNotebookScopeLabels",0,c],709830)},67153,e=>{"use strict";var t=e.i(843476),a=e.i(271645),s=e.i(776639),o=e.i(519455),i=e.i(793479),n=e.i(110204),r=e.i(111110),l=e.i(294114);e.s(["RenameNotebookDialog",0,function({open:e,onOpenChange:c,currentName:d,onRename:u}){let[m,h]=(0,a.useState)(d),[g,x]=(0,a.useState)(!1),{t:p}=(0,r.useLanguage)();(0,a.useEffect)(()=>{h(d)},[d]);let b=async()=>{if(!m.trim())return void l.toast.warning(p.notebooks?.renameDialog?.enterName||"Please enter notebook name");x(!0);try{await u(m.trim()),c(!1)}catch(e){console.error(e)}finally{x(!1)}};return(0,t.jsx)(s.Dialog,{open:e,onOpenChange:c,children:(0,t.jsxs)(s.DialogContent,{children:[(0,t.jsx)(s.DialogHeader,{children:(0,t.jsx)(s.DialogTitle,{children:p.notebooks?.renameDialog?.title||"Rename Notebook"})}),(0,t.jsx)("div",{className:"space-y-4 py-4",children:(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(n.Label,{htmlFor:"rename-name",children:p.notebooks?.renameDialog?.nameLabel||"New Name"}),(0,t.jsx)(i.Input,{id:"rename-name",placeholder:p.notebooks?.renameDialog?.placeholder||"Enter new notebook name",value:m,onChange:e=>h(e.target.value),onKeyDown:e=>"Enter"===e.key&&b()})]})}),(0,t.jsxs)(s.DialogFooter,{children:[(0,t.jsx)(o.Button,{variant:"outline",onClick:()=>c(!1),children:p.common.cancel}),(0,t.jsx)(o.Button,{onClick:b,disabled:g||!m.trim(),children:g?p.notebooks?.renameDialog?.renaming||"Renaming...":p.notebooks?.renameDialog?.rename||"Rename"})]})]})})}])},590546,e=>{"use strict";var t=e.i(843476),a=e.i(618566),s=e.i(519455),o=e.i(871689);e.s(["BackButton",0,function({fallbackUrl:e,className:i}){let n=(0,a.useRouter)();return(0,t.jsx)(s.Button,{variant:"ghost",size:"icon",onClick:()=>{n.push(e)},className:i,children:(0,t.jsx)(o.ArrowLeft,{className:"h-5 w-5"})})}])},912505,e=>{"use strict";var t=e.i(843476),a=e.i(975157);e.s(["EmptyState",0,function({icon:e,title:s,description:o,action:i,className:n}){return(0,t.jsxs)("div",{className:(0,a.cn)("flex flex-col items-center justify-center rounded-2xl border border-dashed bg-card/50 px-6 py-14 text-center",n),children:[(0,t.jsx)("div",{className:"mb-4 flex h-14 w-14 items-center justify-center rounded-2xl bg-accent text-accent-foreground",children:(0,t.jsx)(e,{className:"h-7 w-7"})}),(0,t.jsx)("p",{className:"font-medium",children:s}),o&&(0,t.jsx)("p",{className:"mt-1 max-w-sm text-sm text-muted-foreground",children:o}),i&&(0,t.jsx)("div",{className:"mt-5",children:i})]})}])},393842,e=>{"use strict";var t=e.i(843476),a=e.i(590546),s=e.i(975157);e.s(["PageHeader",0,function({title:e,description:o,backHref:i,actions:n,titleAddon:r,className:l}){return(0,t.jsxs)("div",{className:(0,s.cn)("flex items-start gap-3",l),children:[i&&(0,t.jsx)(a.BackButton,{fallbackUrl:i,className:"-ml-2 shrink-0"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1 space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)("h1",{className:"truncate text-2xl font-bold tracking-tight sm:text-3xl",children:e}),r]}),o&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground sm:text-base",children:o})]}),n&&(0,t.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:n})]})}])},86963,e=>{"use strict";var t=e.i(843476),a=e.i(531278);e.s(["PageLoading",0,function({label:e}){return(0,t.jsxs)("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-3 text-muted-foreground",children:[(0,t.jsx)(a.Loader2,{className:"h-7 w-7 animate-spin text-primary"}),e&&(0,t.jsx)("p",{className:"text-sm",children:e})]})}])},952122,e=>{"use strict";e.i(306831),e.s(["inferSubjectFromName",0,function(e){if(!e)return null;let t=e.toLowerCase();return t.includes("math")||t.includes("数学")?"math":t.includes("physics")||t.includes("物理")?"physics":t.includes("chemistry")||t.includes("化学")?"chemistry":t.includes("biology")||t.includes("生物")?"biology":t.includes("english")||t.includes("英语")?"english":t.includes("chinese")||t.includes("语文")?"chinese":t.includes("history")||t.includes("历史")?"history":t.includes("geography")||t.includes("地理")?"geography":t.includes("politics")||t.includes("政治")?"politics":null}])},35209,e=>{"use strict";var t=e.i(271645),a=e.i(111110);e.s(["usePageTitle",0,function(...e){let{t:s}=(0,a.useLanguage)(),o=[s.pageTitle.base,...e.map(e=>"string"==typeof e?e.trim():"").filter(e=>e.length>0)].join("-");(0,t.useEffect)(()=>{document.title=o},[o])}])},833547,e=>{"use strict";var t=e.i(41931);async function a(e){try{return(await t.apiClient.get(`/api/error-items/short/${encodeURIComponent(e)}`)).id}catch{return null}}e.s(["locateByShortId",0,a])},747279,e=>{"use strict";let t=RegExp("^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{6}$");e.s(["isShortId",0,function(e){return"string"==typeof e&&t.test(e)}])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,871689,e=>{"use strict";let s=(0,e.i(475254).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,s],871689)},63209,e=>{"use strict";let s=(0,e.i(475254).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",0,s],63209)},503116,e=>{"use strict";let s=(0,e.i(475254).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Clock",0,s],503116)},41966,852008,e=>{"use strict";var s=e.i(475254);let a=(0,s.default)("pen-tool",[["path",{d:"M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z",key:"nt11vn"}],["path",{d:"m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18",key:"15qc1e"}],["path",{d:"m2.3 2.3 7.286 7.286",key:"1wuzzi"}],["circle",{cx:"11",cy:"11",r:"2",key:"xmgehs"}]]);e.s(["PenTool",0,a],41966);let t=(0,s.default)("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);e.s(["Layers",0,t],852008)},945514,e=>{"use strict";var s=e.i(843476),a=e.i(271645),t=e.i(217255),r=e.i(618566),d=e.i(111110),i=e.i(35209),l=e.i(215519),n=e.i(306831),c=e.i(41931),o=e.i(531278),m=e.i(871689),x=e.i(284614),u=e.i(810980),h=e.i(41966),j=e.i(852008),b=e.i(475254);let p=(0,b.default)("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]),g=(0,b.default)("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);var y=e.i(269638),f=e.i(503116),N=e.i(63209),v=e.i(286536),C=e.i(519455),w=e.i(515288),k=e.i(487486);e.s(["default",0,function(){let{timeZone:e}=(0,l.useTimeZone)(),{data:b,status:T}=(0,t.useSession)(),D=(0,r.useRouter)(),L=(0,r.useParams)(),{t:M}=(0,d.useLanguage)(),[A,B]=(0,a.useState)(null);(0,i.usePageTitle)(M.admin.dashboard.title,A?.user.name||A?.user.email);let[z,H]=(0,a.useState)(!0),P=L.id,q=(0,a.useCallback)(async()=>{H(!0);try{let e=await c.apiClient.get(`/api/admin/users/${P}/detail`);B(e)}catch(e){console.error("Failed to fetch user detail",e)}finally{H(!1)}},[P]);if((0,a.useEffect)(()=>{if("loading"!==T){if(!b?.user||"admin"!==b.user.role)return void D.push("/");q()}},[b,T,D,q]),"loading"===T||z)return(0,s.jsx)("div",{className:"flex items-center justify-center min-h-[60vh]",children:(0,s.jsx)(o.Loader2,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!A)return(0,s.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-[60vh] gap-4",children:[(0,s.jsx)("p",{className:"text-muted-foreground",children:M.common?.error||"加载失败"}),(0,s.jsx)(C.Button,{onClick:q,children:"重试"})]});let E=[{key:"new",label:M.admin?.dashboard?.masteryNew||"未掌握",count:A.masteryDistribution.new,icon:N.AlertCircle,color:"text-red-500"},{key:"reviewing",label:M.admin?.dashboard?.masteryReviewing||"复习中",count:A.masteryDistribution.reviewing,icon:f.Clock,color:"text-yellow-500"},{key:"mastered",label:M.admin?.dashboard?.masteryMastered||"已掌握",count:A.masteryDistribution.mastered,icon:y.CheckCircle,color:"text-green-500"}],R=A.masteryDistribution.new+A.masteryDistribution.reviewing+A.masteryDistribution.mastered;return(0,s.jsxs)("div",{className:"max-w-5xl mx-auto p-4 sm:p-6 space-y-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-4",children:[(0,s.jsxs)(C.Button,{variant:"ghost",size:"sm",onClick:()=>D.push("/admin"),children:[(0,s.jsx)(m.ArrowLeft,{className:"h-4 w-4 mr-1"}),M.common?.back||"返回"]}),(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:"p-2 rounded-full bg-blue-50 dark:bg-blue-950/30",children:(0,s.jsx)(x.User,{className:"h-6 w-6 text-blue-500"})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-xl font-bold",children:A.user.name||"N/A"}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:A.user.email})]}),"admin"===A.user.role&&(0,s.jsx)(k.Badge,{variant:"default",children:M.admin?.admin||"管理员"}),(0,s.jsx)(k.Badge,{variant:A.user.isActive?"default":"destructive",children:A.user.isActive?M.admin?.active||"启用":M.admin?.disabled||"禁用"})]})]}),(0,s.jsxs)("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[(0,s.jsx)(w.Card,{className:"border-0 shadow-sm",children:(0,s.jsxs)(w.CardContent,{className:"p-4 text-center",children:[(0,s.jsx)(j.Layers,{className:"h-5 w-5 text-purple-500 mx-auto mb-1"}),(0,s.jsx)("div",{className:"text-2xl font-bold",children:A.notebookCount}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:M.admin?.dashboard?.notebooks||"错题本"})]})}),(0,s.jsx)(w.Card,{className:"border-0 shadow-sm",children:(0,s.jsxs)(w.CardContent,{className:"p-4 text-center",children:[(0,s.jsx)(u.BookOpen,{className:"h-5 w-5 text-red-500 mx-auto mb-1"}),(0,s.jsx)("div",{className:"text-2xl font-bold",children:A.errorCount}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:M.admin?.dashboard?.errors||"错题"})]})}),(0,s.jsx)(w.Card,{className:"border-0 shadow-sm",children:(0,s.jsxs)(w.CardContent,{className:"p-4 text-center",children:[(0,s.jsx)(h.PenTool,{className:"h-5 w-5 text-green-500 mx-auto mb-1"}),(0,s.jsx)("div",{className:"text-2xl font-bold",children:A.practiceCount}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:M.admin?.dashboard?.practice||"练习"})]})}),(0,s.jsx)(w.Card,{className:"border-0 shadow-sm",children:(0,s.jsxs)(w.CardContent,{className:"p-4 text-center",children:[(0,s.jsx)(p,{className:"h-5 w-5 text-blue-500 mx-auto mb-1"}),(0,s.jsx)("div",{className:"text-2xl font-bold",children:A.recent7DaysCount}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:M.admin?.dashboard?.recent7Days||"近7天录入"})]})})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,s.jsxs)(w.Card,{className:"border-0 shadow-sm",children:[(0,s.jsx)(w.CardHeader,{className:"pb-2",children:(0,s.jsxs)(w.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,s.jsx)(j.Layers,{className:"h-4 w-4 text-purple-500"}),M.admin?.dashboard?.userNotebooks||"错题本列表"]})}),(0,s.jsx)(w.CardContent,{children:0===A.notebooks.length?(0,s.jsx)("p",{className:"text-sm text-muted-foreground py-4 text-center",children:M.admin?.dashboard?.noData||"暂无数据"}):(0,s.jsx)("div",{className:"space-y-2",children:A.notebooks.map(e=>(0,s.jsxs)("div",{className:"flex justify-between items-center p-2 rounded-lg bg-muted/30",children:[(0,s.jsx)("span",{className:"font-medium text-sm",children:e.name}),(0,s.jsxs)(k.Badge,{variant:"secondary",className:"text-xs",children:[e.errorCount," 题"]})]},e.id))})})]}),(0,s.jsxs)(w.Card,{className:"border-0 shadow-sm",children:[(0,s.jsx)(w.CardHeader,{className:"pb-2",children:(0,s.jsxs)(w.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,s.jsx)(y.CheckCircle,{className:"h-4 w-4 text-green-500"}),M.admin?.dashboard?.masteryDistribution||"掌握度分布"]})}),(0,s.jsx)(w.CardContent,{children:0===R?(0,s.jsx)("p",{className:"text-sm text-muted-foreground py-4 text-center",children:M.admin?.dashboard?.noData||"暂无数据"}):(0,s.jsx)("div",{className:"space-y-3",children:E.map(e=>{let a=R>0?Math.round(e.count/R*100):0;return(0,s.jsxs)("div",{className:"space-y-1",children:[(0,s.jsxs)("div",{className:"flex justify-between text-sm items-center",children:[(0,s.jsxs)("span",{className:"flex items-center gap-1.5 font-medium",children:[(0,s.jsx)(e.icon,{className:`h-4 w-4 ${e.color}`}),e.label]}),(0,s.jsxs)("span",{className:"text-muted-foreground",children:[e.count," (",a,"%)"]})]}),(0,s.jsx)("div",{className:"w-full bg-muted rounded-full h-2",children:(0,s.jsx)("div",{className:"h-2 rounded-full bg-current opacity-60 transition-all duration-500",style:{width:`${a}%`}})})]},e.key)})})})]})]}),A.subjectDistribution.length>0&&(0,s.jsxs)(w.Card,{className:"border-0 shadow-sm",children:[(0,s.jsx)(w.CardHeader,{className:"pb-2",children:(0,s.jsxs)(w.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,s.jsx)(g,{className:"h-4 w-4 text-blue-500"}),M.admin?.dashboard?.subjectDistribution||"学科错题分布"]})}),(0,s.jsx)(w.CardContent,{children:(0,s.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3",children:A.subjectDistribution.map(e=>(0,s.jsxs)("div",{className:"flex items-center justify-between p-3 rounded-lg bg-muted/30",children:[(0,s.jsx)("span",{className:"font-medium text-sm",children:e.name}),(0,s.jsx)(k.Badge,{variant:"secondary",children:e.count})]},e.name))})})]}),(0,s.jsxs)(w.Card,{className:"border-0 shadow-sm",children:[(0,s.jsx)(w.CardHeader,{className:"pb-2",children:(0,s.jsxs)(w.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,s.jsx)(v.Eye,{className:"h-4 w-4 text-orange-500"}),M.admin?.dashboard?.recentErrors||"最近录入的错题"]})}),(0,s.jsx)(w.CardContent,{children:0===A.recentErrorItems.length?(0,s.jsx)("p",{className:"text-sm text-muted-foreground py-4 text-center",children:M.admin?.dashboard?.noData||"暂无数据"}):(0,s.jsx)("div",{className:"space-y-2",children:A.recentErrorItems.map(a=>(0,s.jsxs)("div",{className:"flex items-start justify-between p-3 rounded-lg bg-muted/30 gap-3",children:[(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsx)("p",{className:"text-sm font-medium truncate",children:a.questionText||a.ocrText||"(无题目文本)"}),(0,s.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[a.subject&&(0,s.jsx)(k.Badge,{variant:"outline",className:"text-xs",children:a.subject.name}),2===a.masteryLevel&&(0,s.jsx)(k.Badge,{variant:"default",className:"text-xs",children:M.admin?.dashboard?.masteryMastered||"已掌握"}),1===a.masteryLevel&&(0,s.jsx)(k.Badge,{variant:"secondary",className:"text-xs",children:M.admin?.dashboard?.masteryReviewing||"复习中"}),0===a.masteryLevel&&(0,s.jsx)(k.Badge,{variant:"outline",className:"text-xs",children:M.admin?.dashboard?.masteryNew||"未掌握"})]})]}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:(0,n.formatDateTime)(a.createdAt,"yyyy-MM-dd",e)})]},a.id))})})]})]})}],945514)},515288,e=>{"use strict";var s=e.i(843476),a=e.i(975157);e.s(["Card",0,function({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card",className:(0,a.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...t})},"CardContent",0,function({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-6",e),...t})},"CardDescription",0,function({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-muted-foreground text-sm",e),...t})},"CardHeader",0,function({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...t})},"CardTitle",0,function({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("leading-none font-semibold",e),...t})}])},35209,e=>{"use strict";var s=e.i(271645),a=e.i(111110);e.s(["usePageTitle",0,function(...e){let{t}=(0,a.useLanguage)(),r=[t.pageTitle.base,...e.map(e=>"string"==typeof e?e.trim():"").filter(e=>e.length>0)].join("-");(0,s.useEffect)(()=>{document.title=r},[r])}])}]);
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,981140,e=>{"use strict";"u">typeof window&&window.document&&window.document.createElement,e.s(["composeEventHandlers",0,function(e,t,{checkForDefaultPrevented:r=!0}={}){return function(n){if(e?.(n),!1===r||!n.defaultPrevented)return t?.(n)}}])},75830,e=>{"use strict";var t=e.i(271645),r=e.i(30030),n=e.i(820783),o=e.i(843476);function i(e){var r;let i,s=(r=e,(i=t.forwardRef((e,r)=>{let{children:o,...i}=e;if(t.isValidElement(o)){var s;let e,a,l=(s=o,(a=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(a=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),u=function(e,t){let r={...t};for(let n in t){let o=e[n],i=t[n];/^on[A-Z]/.test(n)?o&&i?r[n]=(...e)=>{let t=i(...e);return o(...e),t}:o&&(r[n]=o):"style"===n?r[n]={...o,...i}:"className"===n&&(r[n]=[o,i].filter(Boolean).join(" "))}return{...e,...r}}(i,o.props);return o.type!==t.Fragment&&(u.ref=r?(0,n.composeRefs)(r,l):l),t.cloneElement(o,u)}return t.Children.count(o)>1?t.Children.only(null):null})).displayName=`${r}.SlotClone`,i),l=t.forwardRef((e,r)=>{let{children:n,...i}=e,l=t.Children.toArray(n),u=l.find(a);if(u){let e=u.props.children,n=l.map(r=>r!==u?r:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,o.jsx)(s,{...i,ref:r,children:t.isValidElement(e)?t.cloneElement(e,void 0,n):null})}return(0,o.jsx)(s,{...i,ref:r,children:n})});return l.displayName=`${e}.Slot`,l}var s=Symbol("radix.slottable");function a(e){return t.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===s}e.s(["createCollection",0,function(e){let s=e+"CollectionProvider",[a,l]=(0,r.createContextScope)(s),[u,c]=a(s,{collectionRef:{current:null},itemMap:new Map}),d=e=>{let{scope:r,children:n}=e,i=t.default.useRef(null),s=t.default.useRef(new Map).current;return(0,o.jsx)(u,{scope:r,itemMap:s,collectionRef:i,children:n})};d.displayName=s;let f=e+"CollectionSlot",p=i(f),m=t.default.forwardRef((e,t)=>{let{scope:r,children:i}=e,s=c(f,r),a=(0,n.useComposedRefs)(t,s.collectionRef);return(0,o.jsx)(p,{ref:a,children:i})});m.displayName=f;let g=e+"CollectionItemSlot",v="data-radix-collection-item",y=i(g),h=t.default.forwardRef((e,r)=>{let{scope:i,children:s,...a}=e,l=t.default.useRef(null),u=(0,n.useComposedRefs)(r,l),d=c(g,i);return t.default.useEffect(()=>(d.itemMap.set(l,{ref:l,...a}),()=>void d.itemMap.delete(l))),(0,o.jsx)(y,{...{[v]:""},ref:u,children:s})});return h.displayName=g,[{Provider:d,Slot:m,ItemSlot:h},function(r){let n=c(e+"CollectionConsumer",r);return t.default.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${v}]`));return Array.from(n.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[n.collectionRef,n.itemMap])},l]}],75830)},30030,e=>{"use strict";var t=e.i(271645),r=e.i(843476);e.s(["createContext",0,function(e,n){let o=t.createContext(n),i=e=>{let{children:n,...i}=e,s=t.useMemo(()=>i,Object.values(i));return(0,r.jsx)(o.Provider,{value:s,children:n})};return i.displayName=e+"Provider",[i,function(r){let i=t.useContext(o);if(i)return i;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${e}\``)}]},"createContextScope",0,function(e,n=[]){let o=[],i=()=>{let r=o.map(e=>t.createContext(e));return function(n){let o=n?.[e]||r;return t.useMemo(()=>({[`__scope${e}`]:{...n,[e]:o}}),[n,o])}};return i.scopeName=e,[function(n,i){let s=t.createContext(i),a=o.length;o=[...o,i];let l=n=>{let{scope:o,children:i,...l}=n,u=o?.[e]?.[a]||s,c=t.useMemo(()=>l,Object.values(l));return(0,r.jsx)(u.Provider,{value:c,children:i})};return l.displayName=n+"Provider",[l,function(r,o){let l=o?.[e]?.[a]||s,u=t.useContext(l);if(u)return u;if(void 0!==i)return i;throw Error(`\`${r}\` must be used within \`${n}\``)}]},function(...e){let r=e[0];if(1===e.length)return r;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let o=n.reduce((t,{useScope:r,scopeName:n})=>{let o=r(e)[`__scope${n}`];return{...t,...o}},{});return t.useMemo(()=>({[`__scope${r.scopeName}`]:o}),[o])}};return n.scopeName=r.scopeName,n}(i,...n)]}])},586318,e=>{"use strict";var t=e.i(271645);e.i(843476);var r=t.createContext(void 0);e.s(["useDirection",0,function(e){let n=t.useContext(r);return e||n||"ltr"}])},610772,e=>{"use strict";var t=e.i(271645),r=e.i(934620),n=t[" useId ".trim().toString()]||(()=>void 0),o=0;e.s(["useId",0,function(e){let[i,s]=t.useState(n());return(0,r.useLayoutEffect)(()=>{e||s(e=>e??String(o++))},[e]),e||(i?`radix-${i}`:"")}])},30207,e=>{"use strict";var t=e.i(271645);e.s(["useCallbackRef",0,function(e){let r=t.useRef(e);return t.useEffect(()=>{r.current=e}),t.useMemo(()=>(...e)=>r.current?.(...e),[])}])},369340,934620,296626,e=>{"use strict";var t=e.i(271645),r=globalThis?.document?t.useLayoutEffect:()=>{};e.s(["useLayoutEffect",0,r],934620),t[" useEffectEvent ".trim().toString()],t[" useInsertionEffect ".trim().toString()];var n=t[" useInsertionEffect ".trim().toString()]||r;Symbol("RADIX:SYNC_STATE"),e.s(["useControllableState",0,function({prop:e,defaultProp:r,onChange:o=()=>{},caller:i}){let[s,a,l]=function({defaultProp:e,onChange:r}){let[o,i]=t.useState(e),s=t.useRef(o),a=t.useRef(r);return n(()=>{a.current=r},[r]),t.useEffect(()=>{s.current!==o&&(a.current?.(o),s.current=o)},[o,s]),[o,i,a]}({defaultProp:r,onChange:o}),u=void 0!==e,c=u?e:s;{let r=t.useRef(void 0!==e);t.useEffect(()=>{let e=r.current;if(e!==u){let t=u?"controlled":"uncontrolled";console.warn(`${i} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}r.current=u},[u,i])}return[c,t.useCallback(t=>{if(u){let r="function"==typeof t?t(e):t;r!==e&&l.current?.(r)}else a(t)},[u,e,a,l])]}],369340);var o=e.i(820783),i=e=>{var n;let i,a,{present:l,children:u}=e,c=function(e){var n,o;let[i,a]=t.useState(),l=t.useRef(null),u=t.useRef(e),c=t.useRef("none"),[d,f]=(n=e?"mounted":"unmounted",o={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},t.useReducer((e,t)=>o[e][t]??e,n));return t.useEffect(()=>{let e=s(l.current);c.current="mounted"===d?e:"none"},[d]),r(()=>{let t=l.current,r=u.current;if(r!==e){let n=c.current,o=s(t);e?f("MOUNT"):"none"===o||t?.display==="none"?f("UNMOUNT"):r&&n!==o?f("ANIMATION_OUT"):f("UNMOUNT"),u.current=e}},[e,f]),r(()=>{if(i){let e,t=i.ownerDocument.defaultView??window,r=r=>{let n=s(l.current).includes(CSS.escape(r.animationName));if(r.target===i&&n&&(f("ANIMATION_END"),!u.current)){let r=i.style.animationFillMode;i.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===i.style.animationFillMode&&(i.style.animationFillMode=r)})}},n=e=>{e.target===i&&(c.current=s(l.current))};return i.addEventListener("animationstart",n),i.addEventListener("animationcancel",r),i.addEventListener("animationend",r),()=>{t.clearTimeout(e),i.removeEventListener("animationstart",n),i.removeEventListener("animationcancel",r),i.removeEventListener("animationend",r)}}f("ANIMATION_END")},[i,f]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:t.useCallback(e=>{l.current=e?getComputedStyle(e):null,a(e)},[])}}(l),d="function"==typeof u?u({present:c.isPresent}):t.Children.only(u),f=(0,o.useComposedRefs)(c.ref,(n=d,(a=(i=Object.getOwnPropertyDescriptor(n.props,"ref")?.get)&&"isReactWarning"in i&&i.isReactWarning)?n.ref:(a=(i=Object.getOwnPropertyDescriptor(n,"ref")?.get)&&"isReactWarning"in i&&i.isReactWarning)?n.props.ref:n.props.ref||n.ref));return"function"==typeof u||c.isPresent?t.cloneElement(d,{ref:f}):null};function s(e){return e?.animationName||"none"}i.displayName="Presence",e.s(["Presence",0,i],296626)},999682,e=>{"use strict";var t=e.i(271645);e.s(["usePrevious",0,function(e){let r=t.useRef({value:e,previous:e});return t.useMemo(()=>(r.current.value!==e&&(r.current.previous=r.current.value,r.current.value=e),r.current.previous),[e])}])},635804,e=>{"use strict";var t=e.i(271645),r=e.i(934620);e.s(["useSize",0,function(e){let[n,o]=t.useState(void 0);return(0,r.useLayoutEffect)(()=>{if(e){o({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let r,n;if(!Array.isArray(t)||!t.length)return;let i=t[0];if("borderBoxSize"in i){let e=i.borderBoxSize,t=Array.isArray(e)?e[0]:e;r=t.inlineSize,n=t.blockSize}else r=e.offsetWidth,n=e.offsetHeight;o({width:r,height:n})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}o(void 0)},[e]),n}])},475254,e=>{"use strict";var t=e.i(271645);let r=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)},n=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim();var o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let i=(0,t.forwardRef)(({color:e="currentColor",size:r=24,strokeWidth:i=2,absoluteStrokeWidth:s,className:a="",children:l,iconNode:u,...c},d)=>(0,t.createElement)("svg",{ref:d,...o,width:r,height:r,stroke:e,strokeWidth:s?24*Number(i)/Number(r):i,className:n("lucide",a),...!l&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0})(c)&&{"aria-hidden":"true"},...c},[...u.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(l)?l:[l]]));e.s(["default",0,(e,o)=>{let s=(0,t.forwardRef)(({className:s,...a},l)=>(0,t.createElement)(i,{ref:l,iconNode:o,className:n(`lucide-${r(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,s),...a}));return s.displayName=r(e),s}],475254)},643531,e=>{"use strict";let t=(0,e.i(475254).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],643531)},664659,655900,e=>{"use strict";var t=e.i(475254);let r=(0,t.default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",0,r],664659);let n=(0,t.default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);e.s(["ChevronUp",0,n],655900)},531278,e=>{"use strict";let t=(0,e.i(475254).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["Loader2",0,t],531278)},727612,e=>{"use strict";let t=(0,e.i(475254).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",0,t],727612)},37727,e=>{"use strict";let t=(0,e.i(475254).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",0,t],37727)},618566,(e,t,r)=>{t.exports=e.r(976562)},519455,820783,991918,225913,e=>{"use strict";var t=e.i(843476),r=e.i(271645);function n(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function o(...e){return t=>{let r=!1,o=e.map(e=>{let o=n(e,t);return r||"function"!=typeof o||(r=!0),o});if(r)return()=>{for(let t=0;t<o.length;t++){let r=o[t];"function"==typeof r?r():n(e[t],null)}}}}e.s(["composeRefs",0,o,"useComposedRefs",0,function(...e){return r.useCallback(o(...e),e)}],820783);var i=Symbol.for("react.lazy"),s=r[" use ".trim().toString()];function a(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===i&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}function l(e){var n;let i,l=(n=e,(i=r.forwardRef((e,t)=>{let{children:n,...i}=e;if(a(n)&&"function"==typeof s&&(n=s(n._payload)),r.isValidElement(n)){var l;let e,s,a=(l=n,(s=(e=Object.getOwnPropertyDescriptor(l.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?l.ref:(s=(e=Object.getOwnPropertyDescriptor(l,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?l.props.ref:l.props.ref||l.ref),u=function(e,t){let r={...t};for(let n in t){let o=e[n],i=t[n];/^on[A-Z]/.test(n)?o&&i?r[n]=(...e)=>{let t=i(...e);return o(...e),t}:o&&(r[n]=o):"style"===n?r[n]={...o,...i}:"className"===n&&(r[n]=[o,i].filter(Boolean).join(" "))}return{...e,...r}}(i,n.props);return n.type!==r.Fragment&&(u.ref=t?o(t,a):a),r.cloneElement(n,u)}return r.Children.count(n)>1?r.Children.only(null):null})).displayName=`${n}.SlotClone`,i),u=r.forwardRef((e,n)=>{let{children:o,...i}=e;a(o)&&"function"==typeof s&&(o=s(o._payload));let u=r.Children.toArray(o),c=u.find(d);if(c){let e=c.props.children,o=u.map(t=>t!==c?t:r.Children.count(e)>1?r.Children.only(null):r.isValidElement(e)?e.props.children:null);return(0,t.jsx)(l,{...i,ref:n,children:r.isValidElement(e)?r.cloneElement(e,void 0,o):null})}return(0,t.jsx)(l,{...i,ref:n,children:o})});return u.displayName=`${e}.Slot`,u}var u=l("Slot"),c=Symbol("radix.slottable");function d(e){return r.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===c}e.s(["Slot",0,u,"createSlot",0,l],991918);var f=e.i(207670);let p=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,m=f.clsx,g=(e,t)=>r=>{var n;if((null==t?void 0:t.variants)==null)return m(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:o,defaultVariants:i}=t,s=Object.keys(o).map(e=>{let t=null==r?void 0:r[e],n=null==i?void 0:i[e];if(null===t)return null;let s=p(t)||p(n);return o[e][s]}),a=r&&Object.entries(r).reduce((e,t)=>{let[r,n]=t;return void 0===n||(e[r]=n),e},{});return m(e,s,null==t||null==(n=t.compoundVariants)?void 0:n.reduce((e,t)=>{let{class:r,className:n,...o}=t;return Object.entries(o).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...i,...a}[t]):({...i,...a})[t]===r})?[...e,r,n]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)};e.s(["cva",0,g],225913);var v=e.i(975157);let y=g("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});e.s(["Button",0,function({className:e,variant:r,size:n,asChild:o=!1,...i}){return(0,t.jsx)(o?u:"button",{"data-slot":"button",className:(0,v.cn)(y({variant:r,size:n,className:e})),...i})}],519455)},776639,e=>{"use strict";var t=e.i(843476),r=e.i(271645),n=e.i(981140),o=e.i(820783),i=e.i(30030),s=e.i(610772),a=e.i(369340),l=e.i(726330),u=e.i(765491),c=e.i(774606),d=e.i(296626);function f(e){var n;let i,s=(n=e,(i=r.forwardRef((e,t)=>{let{children:n,...i}=e;if(r.isValidElement(n)){var s;let e,a,l=(s=n,(a=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(a=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),u=function(e,t){let r={...t};for(let n in t){let o=e[n],i=t[n];/^on[A-Z]/.test(n)?o&&i?r[n]=(...e)=>{let t=i(...e);return o(...e),t}:o&&(r[n]=o):"style"===n?r[n]={...o,...i}:"className"===n&&(r[n]=[o,i].filter(Boolean).join(" "))}return{...e,...r}}(i,n.props);return n.type!==r.Fragment&&(u.ref=t?(0,o.composeRefs)(t,l):l),r.cloneElement(n,u)}return r.Children.count(n)>1?r.Children.only(null):null})).displayName=`${n}.SlotClone`,i),a=r.forwardRef((e,n)=>{let{children:o,...i}=e,a=r.Children.toArray(o),l=a.find(m);if(l){let e=l.props.children,o=a.map(t=>t!==l?t:r.Children.count(e)>1?r.Children.only(null):r.isValidElement(e)?e.props.children:null);return(0,t.jsx)(s,{...i,ref:n,children:r.isValidElement(e)?r.cloneElement(e,void 0,o):null})}return(0,t.jsx)(s,{...i,ref:n,children:o})});return a.displayName=`${e}.Slot`,a}e.i(174080);var p=Symbol("radix.slottable");function m(e){return r.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===p}var g=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,n)=>{let o=f(`Primitive.${n}`),i=r.forwardRef((e,r)=>{let{asChild:i,...s}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,t.jsx)(i?o:n,{...s,ref:r})});return i.displayName=`Primitive.${n}`,{...e,[n]:i}},{}),v=e.i(303536),y=e.i(985369),h=e.i(186312),b="Dialog",[x,w]=(0,i.createContextScope)(b),[N,R]=x(b),C=e=>{let{__scopeDialog:n,children:o,open:i,defaultOpen:l,onOpenChange:u,modal:c=!0}=e,d=r.useRef(null),f=r.useRef(null),[p,m]=(0,a.useControllableState)({prop:i,defaultProp:l??!1,onChange:u,caller:b});return(0,t.jsx)(N,{scope:n,triggerRef:d,contentRef:f,contentId:(0,s.useId)(),titleId:(0,s.useId)(),descriptionId:(0,s.useId)(),open:p,onOpenChange:m,onOpenToggle:r.useCallback(()=>m(e=>!e),[m]),modal:c,children:o})};C.displayName=b;var E="DialogTrigger",j=r.forwardRef((e,r)=>{let{__scopeDialog:i,...s}=e,a=R(E,i),l=(0,o.useComposedRefs)(r,a.triggerRef);return(0,t.jsx)(g.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":Z(a.open),...s,ref:l,onClick:(0,n.composeEventHandlers)(e.onClick,a.onOpenToggle)})});j.displayName=E;var O="DialogPortal",[S,D]=x(O,{forceMount:void 0}),k=e=>{let{__scopeDialog:n,forceMount:o,children:i,container:s}=e,a=R(O,n);return(0,t.jsx)(S,{scope:n,forceMount:o,children:r.Children.map(i,e=>(0,t.jsx)(d.Presence,{present:o||a.open,children:(0,t.jsx)(c.Portal,{asChild:!0,container:s,children:e})}))})};k.displayName=O;var I="DialogOverlay",A=r.forwardRef((e,r)=>{let n=D(I,e.__scopeDialog),{forceMount:o=n.forceMount,...i}=e,s=R(I,e.__scopeDialog);return s.modal?(0,t.jsx)(d.Presence,{present:o||s.open,children:(0,t.jsx)(P,{...i,ref:r})}):null});A.displayName=I;var T=f("DialogOverlay.RemoveScroll"),P=r.forwardRef((e,r)=>{let{__scopeDialog:n,...o}=e,i=R(I,n);return(0,t.jsx)(y.RemoveScroll,{as:T,allowPinchZoom:!0,shards:[i.contentRef],children:(0,t.jsx)(g.div,{"data-state":Z(i.open),...o,ref:r,style:{pointerEvents:"auto",...o.style}})})}),_="DialogContent",M=r.forwardRef((e,r)=>{let n=D(_,e.__scopeDialog),{forceMount:o=n.forceMount,...i}=e,s=R(_,e.__scopeDialog);return(0,t.jsx)(d.Presence,{present:o||s.open,children:s.modal?(0,t.jsx)($,{...i,ref:r}):(0,t.jsx)(F,{...i,ref:r})})});M.displayName=_;var $=r.forwardRef((e,i)=>{let s=R(_,e.__scopeDialog),a=r.useRef(null),l=(0,o.useComposedRefs)(i,s.contentRef,a);return r.useEffect(()=>{let e=a.current;if(e)return(0,h.hideOthers)(e)},[]),(0,t.jsx)(W,{...e,ref:l,trapFocus:s.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,n.composeEventHandlers)(e.onCloseAutoFocus,e=>{e.preventDefault(),s.triggerRef.current?.focus()}),onPointerDownOutside:(0,n.composeEventHandlers)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey;(2===t.button||r)&&e.preventDefault()}),onFocusOutside:(0,n.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault())})}),F=r.forwardRef((e,n)=>{let o=R(_,e.__scopeDialog),i=r.useRef(!1),s=r.useRef(!1);return(0,t.jsx)(W,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(i.current||o.triggerRef.current?.focus(),t.preventDefault()),i.current=!1,s.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(i.current=!0,"pointerdown"===t.detail.originalEvent.type&&(s.current=!0));let r=t.target;o.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&s.current&&t.preventDefault()}})}),W=r.forwardRef((e,n)=>{let{__scopeDialog:i,trapFocus:s,onOpenAutoFocus:a,onCloseAutoFocus:c,...d}=e,f=R(_,i),p=r.useRef(null),m=(0,o.useComposedRefs)(n,p);return(0,v.useFocusGuards)(),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.FocusScope,{asChild:!0,loop:!0,trapped:s,onMountAutoFocus:a,onUnmountAutoFocus:c,children:(0,t.jsx)(l.DismissableLayer,{role:"dialog",id:f.contentId,"aria-describedby":f.descriptionId,"aria-labelledby":f.titleId,"data-state":Z(f.open),...d,ref:m,onDismiss:()=>f.onOpenChange(!1)})}),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(X,{titleId:f.titleId}),(0,t.jsx)(G,{contentRef:p,descriptionId:f.descriptionId})]})]})}),z="DialogTitle",U=r.forwardRef((e,r)=>{let{__scopeDialog:n,...o}=e,i=R(z,n);return(0,t.jsx)(g.h2,{id:i.titleId,...o,ref:r})});U.displayName=z;var L="DialogDescription",V=r.forwardRef((e,r)=>{let{__scopeDialog:n,...o}=e,i=R(L,n);return(0,t.jsx)(g.p,{id:i.descriptionId,...o,ref:r})});V.displayName=L;var H="DialogClose",B=r.forwardRef((e,r)=>{let{__scopeDialog:o,...i}=e,s=R(H,o);return(0,t.jsx)(g.button,{type:"button",...i,ref:r,onClick:(0,n.composeEventHandlers)(e.onClick,()=>s.onOpenChange(!1))})});function Z(e){return e?"open":"closed"}B.displayName=H;var q="DialogTitleWarning",[J,K]=(0,i.createContext)(q,{contentName:_,titleName:z,docsSlug:"dialog"}),X=({titleId:e})=>{let t=K(q),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
|
|
2
|
-
|
|
3
|
-
If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
|
|
4
|
-
|
|
5
|
-
For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return r.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},G=({contentRef:e,descriptionId:t})=>{let n=K("DialogDescriptionWarning"),o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${n.contentName}}.`;return r.useEffect(()=>{let r=e.current?.getAttribute("aria-describedby");t&&r&&(document.getElementById(t)||console.warn(o))},[o,e,t]),null},Y=e.i(37727),Q=e.i(975157);let ee=r.forwardRef(({className:e,...r},n)=>(0,t.jsx)(A,{ref:n,className:(0,Q.cn)("fixed inset-0 z-50 bg-black/50 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...r}));ee.displayName=A.displayName;let et=r.forwardRef(({className:e,children:r,...n},o)=>(0,t.jsxs)(k,{children:[(0,t.jsx)(ee,{}),(0,t.jsxs)(M,{ref:o,onPointerDownOutside:e=>{e.preventDefault()},className:(0,Q.cn)("fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-2rem)] max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 rounded-2xl border bg-card p-6 shadow-xl duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",e),...n,children:[r,(0,t.jsxs)(B,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,t.jsx)(Y.X,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));et.displayName=M.displayName;let er=({className:e,...r})=>(0,t.jsx)("div",{className:(0,Q.cn)("flex flex-col space-y-1.5 text-center sm:text-left",e),...r});er.displayName="DialogHeader";let en=({className:e,...r})=>(0,t.jsx)("div",{className:(0,Q.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...r});en.displayName="DialogFooter";let eo=r.forwardRef(({className:e,...r},n)=>(0,t.jsx)(U,{ref:n,className:(0,Q.cn)("text-lg font-semibold leading-none tracking-tight",e),...r}));eo.displayName=U.displayName;let ei=r.forwardRef(({className:e,...r},n)=>(0,t.jsx)(V,{ref:n,className:(0,Q.cn)("text-sm text-muted-foreground",e),...r}));ei.displayName=V.displayName,e.s(["Dialog",0,C,"DialogContent",0,et,"DialogDescription",0,ei,"DialogFooter",0,en,"DialogHeader",0,er,"DialogTitle",0,eo,"DialogTrigger",0,j],776639)},793479,e=>{"use strict";var t=e.i(843476),r=e.i(975157);e.s(["Input",0,function({className:e,type:n,...o}){return(0,t.jsx)("input",{type:n,"data-slot":"input",className:(0,r.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...o})}])},41931,e=>{"use strict";class t extends Error{status;statusText;data;constructor(e,t,r){super(`API Error: ${e} ${t}`),this.status=e,this.statusText=t,this.data=r,this.name="ApiError"}}async function r(e,n={}){let{params:o,headers:i,timeout:s=6e4,...a}=n,l=e;if(o){let e=new URLSearchParams(o);l+=`?${e.toString()}`}let u=new AbortController,c=setTimeout(()=>u.abort(),s);try{let e=await fetch(l,{headers:{"Content-Type":"application/json",...i},signal:u.signal,...a});if(clearTimeout(c),!e.ok){let r;try{r=await e.json()}catch{r=await e.text()}throw new t(e.status,e.statusText,r)}if(204===e.status)return{};try{return await e.json()}catch{return{}}}catch(e){if(clearTimeout(c),e instanceof Error&&"AbortError"===e.name)throw new t(408,"Request Timeout",{message:"AI_TIMEOUT_ERROR"});throw e}}e.s(["apiClient",0,{get:(e,t)=>r(e,{...t,method:"GET"}),post:(e,t,n)=>r(e,{...n,method:"POST",body:JSON.stringify(t)}),put:(e,t,n)=>r(e,{...n,method:"PUT",body:JSON.stringify(t)}),patch:(e,t,n)=>r(e,{...n,method:"PATCH",body:JSON.stringify(t)}),delete:(e,t)=>r(e,{...t,method:"DELETE"})}])},294114,e=>{"use strict";let t={success:2500,info:3500,warning:4500,error:5e3},r={toasts:[],confirm:null},n=1,o=new Set;function i(e){r=e,o.forEach(e=>e(r))}function s(e){i({...r,toasts:r.toasts.filter(t=>t.id!==e)})}function a(e,o){let a="string"==typeof o?o:String(o??"");if(!a)return;let l=n++;i({...r,toasts:[...r.toasts.slice(-3),{id:l,type:e,message:a}]}),setTimeout(()=>s(l),t[e])}e.s(["confirmDialog",0,function(e,t={}){return 0===o.size?Promise.resolve("function"==typeof window.confirm&&window.confirm(e)):(r.confirm?.resolve(!1),new Promise(o=>{let s=n++;i({...r,confirm:{...t,id:s,message:e,resolve:e=>{r.confirm?.id===s&&i({...r,confirm:null}),o(e)}}})}))},"dismissToast",0,s,"subscribeFeedback",0,function(e){return o.add(e),e(r),()=>{o.delete(e)}},"toast",0,{success:e=>a("success",e),error:e=>a("error",e),info:e=>a("info",e),warning:e=>a("warning",e)}])}]);
|