lookatstudy-mobile 0.37.1 → 0.37.2
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/package.json +1 -1
- package/server.cjs +106 -4
- package/web/assets/{CanvasStage-DWa6BPww.js → CanvasStage-By84li0a.js} +1 -1
- package/web/assets/{CommandPalette-DiD-q1kY.js → CommandPalette-DJpv5YLk.js} +1 -1
- package/web/assets/{CompanionBotLab-Uh7Iurz6.js → CompanionBotLab-BrjON5X5.js} +1 -1
- package/web/assets/{CourseSearchPanel-BDg7IVGf.js → CourseSearchPanel-Dp-83TJq.js} +1 -1
- package/web/assets/{ExamView-BCAqFLj-.js → ExamView-BiWyQCTQ.js} +1 -1
- package/web/assets/{MermaidArtifact-pvwMTDsC.js → MermaidArtifact-C-9JGr1S.js} +3 -3
- package/web/assets/{PersonalProfileModal-Cp2sd0r5.js → PersonalProfileModal-Bberh-21.js} +1 -1
- package/web/assets/{ReviewPanel-BKloT7C_.js → ReviewPanel-D52vKY80.js} +1 -1
- package/web/assets/{SettingsView-DlAIL4xo.js → SettingsView-BE8J-BR5.js} +2 -2
- package/web/assets/{VoicePanel-Blijw_xQ.js → VoicePanel-Df6DgExP.js} +1 -1
- package/web/assets/{abnfDiagram-VCTEODGH-ODA7YWAP-D-Sdh0h-.js → abnfDiagram-VCTEODGH-ODA7YWAP-GEEhu7or.js} +1 -1
- package/web/assets/{abnfDiagram-VCTEODGH-B4Pws_nv.js → abnfDiagram-VCTEODGH-xWn5W_Em.js} +1 -1
- package/web/assets/{architectureDiagram-5GKGNRK7-C4PU3XN7-Bkd1gLHS.js → architectureDiagram-5GKGNRK7-C4PU3XN7-JmOGh5LH.js} +1 -1
- package/web/assets/{architectureDiagram-5GKGNRK7-DLKfj4RZ.js → architectureDiagram-5GKGNRK7-CvI35bTW.js} +1 -1
- package/web/assets/{blockDiagram-I7D4REHJ-CcU7UGAT.js → blockDiagram-I7D4REHJ-BMKUeuF0.js} +1 -1
- package/web/assets/{blockDiagram-NRAW4CY4-UMJ6PMQQ-C4bMYcFo.js → blockDiagram-NRAW4CY4-UMJ6PMQQ-Dv4-Yiui.js} +1 -1
- package/web/assets/{c4Diagram-7LVT6UL2-DTM1UxNS.js → c4Diagram-7LVT6UL2-DNalANVV.js} +1 -1
- package/web/assets/{c4Diagram-UCG6FXSJ-75X3U2P3-B1cVRXCm.js → c4Diagram-UCG6FXSJ-75X3U2P3-BMz228D6.js} +1 -1
- package/web/assets/channel-BsRXIHWg.js +1 -0
- package/web/assets/{chunk-2Q5K7J3B-CK1sHHcq.js → chunk-2Q5K7J3B-M3FYrmxX.js} +1 -1
- package/web/assets/{chunk-5VM5RSS4-CtN85jHB.js → chunk-5VM5RSS4-nbGREPjw.js} +1 -1
- package/web/assets/{chunk-7XDTSPCN-DL3gFm2O.js → chunk-7XDTSPCN-rYhyRTOx.js} +1 -1
- package/web/assets/{chunk-CTNIYPP6-34jcHYzx.js → chunk-CTNIYPP6-BgXYMFW5.js} +1 -1
- package/web/assets/{chunk-CXNFBKHE-Ajw5fhAt.js → chunk-CXNFBKHE-CkmFhBAk.js} +1 -1
- package/web/assets/{chunk-F27PBJKO-CeTL5oEt.js → chunk-F27PBJKO-CAqAYmMM.js} +1 -1
- package/web/assets/{chunk-IMKFNOWR-BXpLlPze.js → chunk-IMKFNOWR-pDBbu4GI.js} +1 -1
- package/web/assets/{chunk-ISA7TJRJ-CkTr2ChC.js → chunk-ISA7TJRJ-CHl4BhBt.js} +1 -1
- package/web/assets/{chunk-JWPE2WC7-DSacNhA4.js → chunk-JWPE2WC7-DSVI_4gB.js} +1 -1
- package/web/assets/{chunk-LV3HUYFY-BDvEK9u6.js → chunk-LV3HUYFY-Doco33ZI.js} +1 -1
- package/web/assets/{chunk-M3IUQBOH-iJMK0j9N.js → chunk-M3IUQBOH-RTAJkyza.js} +1 -1
- package/web/assets/{chunk-NDIOYS4C-cxrwwBVm.js → chunk-NDIOYS4C-DcWvuy8G.js} +1 -1
- package/web/assets/{chunk-POPQ4Y6H-DNyVIlsa.js → chunk-POPQ4Y6H-yjjWWA8X.js} +1 -1
- package/web/assets/{chunk-RE4WF27V-DOxrYV0W.js → chunk-RE4WF27V-C32wZGPA.js} +1 -1
- package/web/assets/{chunk-SVP7TREG-DbnWkZ8h.js → chunk-SVP7TREG-BdekvWAw.js} +1 -1
- package/web/assets/{chunk-TICWLB2K-Ba3f7lw5.js → chunk-TICWLB2K-Cz68TTKA.js} +1 -1
- package/web/assets/{chunk-VII2H2IX-Dbzz_on1.js → chunk-VII2H2IX-fTD7U-xL.js} +1 -1
- package/web/assets/{chunk-X5GNSKZ3-zngMbi6F.js → chunk-X5GNSKZ3-16RMlpb5.js} +1 -1
- package/web/assets/{chunk-XCWWM2C3-3NMcdDFX.js → chunk-XCWWM2C3-CO-wuQPY.js} +1 -1
- package/web/assets/{chunk-XXDRQBXY-DacZhf2D.js → chunk-XXDRQBXY-DPkBKESf.js} +1 -1
- package/web/assets/classDiagram-DTDB5LWJ-LWRDKZ5K-BwnHfZhN.js +1 -0
- package/web/assets/classDiagram-ZZMXUADV-BBeyyi3H.js +1 -0
- package/web/assets/classDiagram-v2-JRS7N3AN-2BZHGRP2-BwnHfZhN.js +1 -0
- package/web/assets/classDiagram-v2-VYDZK3BY-BBeyyi3H.js +1 -0
- package/web/assets/{core-iuOIACGb.js → core-CQhot3Yw.js} +1 -1
- package/web/assets/{cose-bilkent-JH36ORCC-Dq-Q8BZJ.js → cose-bilkent-JH36ORCC-NQkKxkmm.js} +1 -1
- package/web/assets/{cose-bilkent-JH36ORCC-OB24KH3T-CPgU6fjd.js → cose-bilkent-JH36ORCC-OB24KH3T-71WGRXpy.js} +1 -1
- package/web/assets/{cynefin-OW5HDTMX-GVF3BKWE-BhhUo0ca.js → cynefin-OW5HDTMX-GVF3BKWE-wLMpc-W6.js} +1 -1
- package/web/assets/{cynefin-OW5HDTMX-BpkRUbag.js → cynefin-OW5HDTMX-Ycd8yaFB.js} +1 -1
- package/web/assets/{cynefinDiagram-5FMLGOSQ-H3WIRU3N-DjzZZfXh.js → cynefinDiagram-5FMLGOSQ-H3WIRU3N-BqUnto1I.js} +1 -1
- package/web/assets/{cynefinDiagram-5FMLGOSQ-CbT5J2AS.js → cynefinDiagram-5FMLGOSQ-qdatKGJp.js} +1 -1
- package/web/assets/{dagre-3AP2YEHR-DCERTXHT-DmYKg1uA.js → dagre-3AP2YEHR-DCERTXHT-DU7hl9mL.js} +1 -1
- package/web/assets/{dagre-GXQ25YYZ-DaFjM1tp.js → dagre-GXQ25YYZ-DXBvPLCC.js} +1 -1
- package/web/assets/{diagram-S7CK7UJ4-BuDFhDGD.js → diagram-S7CK7UJ4-CJndlA9d.js} +1 -1
- package/web/assets/{diagram-S7CK7UJ4-MULGZGEL-CCFqnfoE.js → diagram-S7CK7UJ4-MULGZGEL-ChZOJtIr.js} +1 -1
- package/web/assets/{diagram-UQ7AKVKN-BEZkD-tG.js → diagram-UQ7AKVKN-ByEgUbMO.js} +1 -1
- package/web/assets/{diagram-UQ7AKVKN-YQBY353J-Dchh3ymU.js → diagram-UQ7AKVKN-YQBY353J-CBg1xAIv.js} +1 -1
- package/web/assets/{diagram-VSXAHHWV-LcyvOZyA.js → diagram-VSXAHHWV-DG9QiDXM.js} +1 -1
- package/web/assets/{diagram-VSXAHHWV-WLNH2ELY-UVsHRiao.js → diagram-VSXAHHWV-WLNH2ELY-BmmwN3nm.js} +1 -1
- package/web/assets/{diagram-VX7I27RA-TfCoRqjg.js → diagram-VX7I27RA-D5I8_1IH.js} +1 -1
- package/web/assets/{diagram-VX7I27RA-XW6YQV5G-BSieiGEG.js → diagram-VX7I27RA-XW6YQV5G-BpJ1XA39.js} +1 -1
- package/web/assets/{diagram-Z3DM3KII-D81rsk1w.js → diagram-Z3DM3KII-BgBYUzLO.js} +1 -1
- package/web/assets/{diagram-Z3DM3KII-HG7RF65D-Rbjpm9hG.js → diagram-Z3DM3KII-HG7RF65D-DvYaKe9o.js} +1 -1
- package/web/assets/{ebnfDiagram-PWID7BFC-D1tfiTa_.js → ebnfDiagram-PWID7BFC-BvljgvDM.js} +1 -1
- package/web/assets/{ebnfDiagram-PWID7BFC-OKY4VHYD-DJFrRkqu.js → ebnfDiagram-PWID7BFC-OKY4VHYD-Cnq_rs5C.js} +1 -1
- package/web/assets/{elk.bundled-Zj2eepJ0.js → elk.bundled-DuC4qO17.js} +1 -1
- package/web/assets/{erDiagram-RLTQ6QDP-OU6RwfWr.js → erDiagram-RLTQ6QDP-CuGCxm27.js} +1 -1
- package/web/assets/{erDiagram-SSCWMZ5O-PIPKOIK7-XR2szNAv.js → erDiagram-SSCWMZ5O-PIPKOIK7-DWea4HYD.js} +1 -1
- package/web/assets/{flowDiagram-A5DVABFB-2Z4AVO5R-DAB9UlGL.js → flowDiagram-A5DVABFB-2Z4AVO5R-Bt5oLSB0.js} +1 -1
- package/web/assets/{flowDiagram-HODETNUW-Bj5XhSEr.js → flowDiagram-HODETNUW-ChwXi3ep.js} +1 -1
- package/web/assets/{ganttDiagram-EL5Y4UJY-DYYnYoH2.js → ganttDiagram-EL5Y4UJY-Cip61aQW.js} +1 -1
- package/web/assets/{ganttDiagram-EL5Y4UJY-JZNG7GOG-DFEJViIL.js → ganttDiagram-EL5Y4UJY-JZNG7GOG-DIt3-EPi.js} +1 -1
- package/web/assets/{gitGraphDiagram-WWUBYQGX-_Z0hgx0B.js → gitGraphDiagram-WWUBYQGX-BGE_KKwm.js} +1 -1
- package/web/assets/{gitGraphDiagram-WWUBYQGX-DMWMLL3G-C4Pimd0G.js → gitGraphDiagram-WWUBYQGX-DMWMLL3G-CsyX4tkZ.js} +1 -1
- package/web/assets/{index-CVsNhplX.js → index-48coRDBX.js} +3 -3
- package/web/assets/index-C9fscARj.js +53 -0
- package/web/assets/{index-BqH7RtMm.js → index-CatQea2M.js} +1 -1
- package/web/assets/{index-Bp9UucY6.js → index-D3SI1A7X.js} +1 -1
- package/web/assets/{infoDiagram-27XIBGKW-BbzbmS5U.js → infoDiagram-27XIBGKW-CHFCryER.js} +1 -1
- package/web/assets/{infoDiagram-RXCK75RN-HANS5KVC-BTP5MSJx.js → infoDiagram-RXCK75RN-HANS5KVC-ocLW6L6_.js} +1 -1
- package/web/assets/{ishikawaDiagram-5VMMS53U-7GCIT7WU-CcMY5L6M.js → ishikawaDiagram-5VMMS53U-7GCIT7WU-BUo_yhnm.js} +1 -1
- package/web/assets/{ishikawaDiagram-5VMMS53U-Biav4sA5.js → ishikawaDiagram-5VMMS53U-Bhg1TVZJ.js} +1 -1
- package/web/assets/{journeyDiagram-3NMN7TZE-wLoy0nOR.js → journeyDiagram-3NMN7TZE-C3OfUgiV.js} +1 -1
- package/web/assets/{journeyDiagram-EYS64GPL-OAPELBT7-yWvaQfBz.js → journeyDiagram-EYS64GPL-OAPELBT7-DQESZnLZ.js} +1 -1
- package/web/assets/{kanban-definition-3QL26DDD-I7RKWQQY--EREHjsb.js → kanban-definition-3QL26DDD-I7RKWQQY-BF-ZXqR5.js} +1 -1
- package/web/assets/{kanban-definition-UXKFOSKX-B_4rU47Y.js → kanban-definition-UXKFOSKX-CSI_GcJW.js} +1 -1
- package/web/assets/{katex-N6JRN4PM-D2c3WCAB.js → katex-N6JRN4PM-CxrguQd-.js} +1 -1
- package/web/assets/{layout-28aDa-kS.js → layout-CDbDCQeb.js} +1 -1
- package/web/assets/{main-Q55C34or.js → main-jV_OilRs.js} +7 -7
- package/web/assets/{mermaid-layout-elk.core-BtEZ1o-e.js → mermaid-layout-elk.core-B1-o2tyd.js} +2 -2
- package/web/assets/{mermaid.core-DnOBsKcF.js → mermaid.core-37_hzSNp.js} +5 -5
- package/web/assets/{mindmap-definition-FBJOCRG2-KIYZG64Y-CAgYj6yn.js → mindmap-definition-FBJOCRG2-KIYZG64Y-rppk7mo-.js} +1 -1
- package/web/assets/{mindmap-definition-YA3MSWOX-fDXRUwwB.js → mindmap-definition-YA3MSWOX-BUzaoDCs.js} +1 -1
- package/web/assets/{pegDiagram-XKGWAZYB-Ddka_qjr.js → pegDiagram-XKGWAZYB-CQPL5MMj.js} +1 -1
- package/web/assets/{pegDiagram-XKGWAZYB-OIP57N6J-DDSZmF9B.js → pegDiagram-XKGWAZYB-OIP57N6J-CngQPdjr.js} +1 -1
- package/web/assets/{pet-BEkzd4ze.js → pet-xGooCXVY.js} +1 -1
- package/web/assets/{pieDiagram-E7YTZNPT-2UOTW327-ox59cMau.js → pieDiagram-E7YTZNPT-2UOTW327-DkHaDPtZ.js} +1 -1
- package/web/assets/{pieDiagram-E7YTZNPT-D9oat8I8.js → pieDiagram-E7YTZNPT-BDTdqFkm.js} +1 -1
- package/web/assets/{quadrantDiagram-AXDQQJYC-MrrLJtbc.js → quadrantDiagram-AXDQQJYC-CXFhoJ1v.js} +1 -1
- package/web/assets/{quadrantDiagram-AXDQQJYC-SN3ASJJK-ChSnrtGL.js → quadrantDiagram-AXDQQJYC-SN3ASJJK-KFKnY5SQ.js} +1 -1
- package/web/assets/{railroadDiagram-O6MQD6OU-34742W6X-DpAy_neF.js → railroadDiagram-O6MQD6OU-34742W6X-BMHll5kZ.js} +1 -1
- package/web/assets/{railroadDiagram-O6MQD6OU-DsQMMR2g.js → railroadDiagram-O6MQD6OU-DdZMZ3P-.js} +1 -1
- package/web/assets/{render-O7CIS3YK-uyJB6lwg.js → render-O7CIS3YK-BUZqrLRp.js} +7 -7
- package/web/assets/{requirementDiagram-BXWQKSXE-Cg450wQf.js → requirementDiagram-BXWQKSXE-WrY_I6-V.js} +1 -1
- package/web/assets/{requirementDiagram-EFPCY7ZU-NGAFFSMB-mh7_uzgF.js → requirementDiagram-EFPCY7ZU-NGAFFSMB-CmLM20oA.js} +1 -1
- package/web/assets/{rotate-ccw-BOEgpxYS.js → rotate-ccw-DZE_kYZu.js} +1 -1
- package/web/assets/{sankeyDiagram-P5KCCOFB-3D3M4XPB-DUQwTphe.js → sankeyDiagram-P5KCCOFB-3D3M4XPB-RJsf4h9t.js} +1 -1
- package/web/assets/{sankeyDiagram-P5KCCOFB-BwzEBa47.js → sankeyDiagram-P5KCCOFB-Bjyi_fcC.js} +1 -1
- package/web/assets/{sequenceDiagram-WJ2MYXX4-BI3YNUx6.js → sequenceDiagram-WJ2MYXX4-Co6SKGyz.js} +1 -1
- package/web/assets/{sequenceDiagram-WJ2MYXX4-Q2IOPB4R-CgNGGShc.js → sequenceDiagram-WJ2MYXX4-Q2IOPB4R-B5nuUy2h.js} +1 -1
- package/web/assets/{sizeCapture-INFHLROL-BkVRwlBC.js → sizeCapture-INFHLROL-CF0_wtm2.js} +1 -1
- package/web/assets/{sizeCapture-X5ZJPWSS-PSGVOMYM-DMoR5_G_.js → sizeCapture-X5ZJPWSS-PSGVOMYM-xWY2H6Me.js} +1 -1
- package/web/assets/{stateDiagram-D77RDMKH-DomT165i.js → stateDiagram-D77RDMKH-5V-346Qd.js} +1 -1
- package/web/assets/{stateDiagram-HBIQ2CUA-4M2S6MAN-BjwnPs-t.js → stateDiagram-HBIQ2CUA-4M2S6MAN-B6gqxipM.js} +1 -1
- package/web/assets/stateDiagram-v2-4QOOHH4V-LBBLA2WV-DnphY6WO.js +1 -0
- package/web/assets/stateDiagram-v2-MP3YSRHH-DKtXGidN.js +1 -0
- package/web/assets/{swimlanes-42K2YHIH-CzbjyNdC.js → swimlanes-42K2YHIH-D9gzHPsn.js} +1 -1
- package/web/assets/{swimlanes-XN3QIQJK-N6N2CCQ6-C4xMnbVh.js → swimlanes-XN3QIQJK-N6N2CCQ6-rlPeyqTj.js} +1 -1
- package/web/assets/swimlanesDiagram-VK2B7HYN-E6N4H5SY-8pA5lT4C.js +8 -0
- package/web/assets/swimlanesDiagram-VR7AAH4N-B7BbPyRn.js +8 -0
- package/web/assets/{timeline-definition-24CTP7MA-CTIJns6D.js → timeline-definition-24CTP7MA-B2GfJfmd.js} +1 -1
- package/web/assets/{timeline-definition-24CTP7MA-KN7RSRVM-BOjiMd8Q.js → timeline-definition-24CTP7MA-KN7RSRVM-CKXP2kGU.js} +1 -1
- package/web/assets/{vennDiagram-4TSXK5OY-AKJ7LXAN-4hLVPR4S.js → vennDiagram-4TSXK5OY-AKJ7LXAN-CybCMyEX.js} +1 -1
- package/web/assets/{vennDiagram-4TSXK5OY-A_Q4N3Be.js → vennDiagram-4TSXK5OY-DkP-OS8t.js} +1 -1
- package/web/assets/{wardleyDiagram-VM6X3IG4-3B6A3BN5-BMnLic23.js → wardleyDiagram-VM6X3IG4-3B6A3BN5-BdgAi1Gp.js} +1 -1
- package/web/assets/{wardleyDiagram-VM6X3IG4-BjEyKJ7j.js → wardleyDiagram-VM6X3IG4-DvRT9ehw.js} +1 -1
- package/web/assets/{xychartDiagram-S5SC5T6Z-1YiCzgCj.js → xychartDiagram-S5SC5T6Z-D0gQ0QKw.js} +1 -1
- package/web/assets/{xychartDiagram-S5SC5T6Z-OBDNV6WG-BGnMnf5M.js → xychartDiagram-S5SC5T6Z-OBDNV6WG-23Q1AKCq.js} +1 -1
- package/web/index.html +2 -2
- package/web/pet.html +2 -2
- package/web/assets/channel-Bd-gObO1.js +0 -1
- package/web/assets/classDiagram-DTDB5LWJ-LWRDKZ5K-59033U8k.js +0 -1
- package/web/assets/classDiagram-ZZMXUADV-DM-KS5hV.js +0 -1
- package/web/assets/classDiagram-v2-JRS7N3AN-2BZHGRP2-59033U8k.js +0 -1
- package/web/assets/classDiagram-v2-VYDZK3BY-DM-KS5hV.js +0 -1
- package/web/assets/index-DFeHjpII.js +0 -53
- package/web/assets/stateDiagram-v2-4QOOHH4V-LBBLA2WV-CYpZRXYS.js +0 -1
- package/web/assets/stateDiagram-v2-MP3YSRHH-Bu-0oSj-.js +0 -1
- package/web/assets/swimlanesDiagram-VK2B7HYN-E6N4H5SY-CaXDcqd7.js +0 -8
- package/web/assets/swimlanesDiagram-VR7AAH4N-BU5GIrS3.js +0 -8
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./elk.bundled-
|
|
2
|
-
import{r as g,j as e,c as Q}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./elk.bundled-DuC4qO17.js","./index-C9fscARj.js","./index-EInfxfl9.css","./_commonjs-dynamic-modules-TDtrdbi3.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as g,j as e,c as Q}from"./index-C9fscARj.js";import{c as Z,_ as ee,u as R,Z as te,z as T,$ as se,a0 as ne,A as ae,k as re,j as ie,a1 as oe,q as D,X as G,a2 as ce,a3 as le,a4 as de,a5 as he}from"./main-jV_OilRs.js";import{D as H,M as ue}from"./MermaidArtifact-C-9JGr1S.js";import{M as K,C as B}from"./CanvasStage-By84li0a.js";import{R as xe}from"./rotate-ccw-DZE_kYZu.js";/**
|
|
3
3
|
* @license lucide-react v0.468.0 - ISC
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under the ISC license.
|
|
@@ -9,6 +9,6 @@ import{r as g,j as e,c as Q}from"./index-DFeHjpII.js";import{c as Z,_ as ee,u as
|
|
|
9
9
|
*
|
|
10
10
|
* This source code is licensed under the ISC license.
|
|
11
11
|
* See the LICENSE file in the root directory of this source tree.
|
|
12
|
-
*/const me=Z("Dices",[["rect",{width:"12",height:"12",x:"2",y:"10",rx:"2",ry:"2",key:"6agr2n"}],["path",{d:"m17.92 14 3.5-3.5a2.24 2.24 0 0 0 0-3l-5-4.92a2.24 2.24 0 0 0-3 0L10 6",key:"1o487t"}],["path",{d:"M6 18h.01",key:"uhywen"}],["path",{d:"M10 14h.01",key:"ssrbsk"}],["path",{d:"M15 6h.01",key:"cblpky"}],["path",{d:"M18 9h.01",key:"2061c0"}]]);function z(s,t=13){let n=0;for(const a of s)n+=/[\u2e80-\u9fff\uf900-\ufaff\uff00-\uffef\u3000-\u303f]/.test(a)?t:t*.58;return n}const q=118;function ge(s){if(z(s)<=q)return[s];const t=[];for(let d=0;d<s.length;d++)/[\s/\-—·]/.test(s[d]??"")&&t.push(d);const n=s.length/2;let a=-1,r=1/0;for(const d of t){const f=Math.abs(d+1-n);f<r&&(r=f,a=d)}let i,c;if(a>=0)i=s.slice(0,a+1).trim(),c=s.slice(a+1).trim();else{let d=0,f=0;for(const b of s)if(d+=z(b),f++,d>=z(s)/2)break;i=s.slice(0,f),c=s.slice(f)}if(z(i)<=q&&z(c)<=q)return[i,c];const o=d=>{let f="";for(const b of d){if(z(f+b+"…")>q)break;f+=b}return f+"…"};return[z(i)>q?o(i):i,z(c)>q?o(c):c]}function J(s,t){const n=ge(s),a=t?14:13,r=Math.max(...n.map(d=>z(d,a))),i=t?30:24,c=17,o=t?18:14;return{width:Math.min(t?200:180,Math.max(t?92:76,r+i)),height:o+n.length*c,lines:n}}function pe(s,t,n){const a=new Set(s.map(r=>r.id));if(Array.isArray(n)&&n.length>0){const r=new Set,i=[];for(const c of n){if(!c||typeof c.id!="string"||!c.id)continue;const o=Array.isArray(c.nodeIds)?[...new Set(c.nodeIds.filter(d=>typeof d=="string"&&a.has(d)&&!r.has(d)))]:[];o.length<2||(o.forEach(d=>r.add(d)),i.push({id:c.id,label:typeof c.label=="string"&&c.label?c.label:"分组",nodeIds:o}))}if(i.length>0&&!(i.length===1&&r.size===s.length&&s.length>2))return{groups:i,fallback:!1}}return{groups:be(s,t),fallback:!0}}function be(s,t){if(s.length<4)return[];const n=new Map(s.map((h,l)=>[h.id,l])),a=new Map;for(const h of s)a.set(h.id,[]);const r=new Set;for(const h of t){if(!n.has(h.from)||!n.has(h.to)||h.from===h.to)continue;const l=[h.from,h.to].sort().join("→");r.has(l)||(r.add(l),a.get(h.from).push(h.to),a.get(h.to).push(h.from))}const i=[...s].sort((h,l)=>{const x=a.get(h.id).length,k=a.get(l.id).length;return x!==k?k-x:(n.get(h.id)??0)-(n.get(l.id)??0)}),c=Math.min(3,Math.max(1,Math.ceil(s.length/4))),o=i.slice(0,c).filter(h=>{var l;return(((l=a.get(h.id))==null?void 0:l.length)??0)>0});if(o.length===0)return[];const d=new Map;o.forEach((h,l)=>d.set(h.id,l));const f=o.map(h=>h.id);for(;f.length;){const h=f.shift(),l=d.get(h);for(const x of a.get(h)??[])d.has(x)||(d.set(x,l),f.push(x))}const b=[];return o.forEach((h,l)=>{const x=s.filter(k=>d.get(k.id)===l).map(k=>k.id);x.length<2||b.push({id:`grp-${h.id}`,label:h.label.length<=5?`${h.label}相关`:h.label,nodeIds:x})}),b}const O=34;function we(s,t,n){var h;const a=new Set(s.map(l=>l.id)),r=new Map;for(const l of s)r.set(l.id,0);const i=new Set,c=[];for(const l of t){if(!a.has(l.from)||!a.has(l.to)||l.from===l.to)continue;const x=[l.from,l.to].sort().join("→");i.has(x)||(i.add(x),c.push(l),r.set(l.from,r.get(l.from)+1),r.set(l.to,r.get(l.to)+1))}let o=((h=s[0])==null?void 0:h.id)??"";for(const l of s)(r.get(l.id)??0)>(r.get(o)??0)&&(o=l.id);const d=new Map;for(const l of n)for(const x of l.nodeIds)a.has(x)&&!d.has(x)&&d.set(x,l.id);const f=l=>{const x=J(l.label,l.id===o||(r.get(l.id)??0)>=4);return{id:l.id,width:Math.ceil(x.width),height:Math.ceil(x.height)}},b=[];for(const l of n){const x=l.nodeIds.filter(k=>d.get(k)===l.id&&a.has(k));x.length!==0&&b.push({id:`g:${l.id}`,layoutOptions:{"elk.padding":`[top=${O},left=14,bottom=12,right=14]`},children:x.map(k=>f(s.find(p=>p.id===k)))})}for(const l of s)d.has(l.id)||b.push(f(l));return{id:"root",layoutOptions:{"elk.algorithm":"layered","elk.direction":"DOWN","elk.edgeRouting":"ORTHOGONAL","elk.hierarchyHandling":"INCLUDE_CHILDREN","elk.spacing.nodeNode":"34","elk.spacing.edgeNode":"26","elk.spacing.componentComponent":"48","elk.layered.spacing.nodeNodeBetweenLayers":"56"},children:b,edges:c.map((l,x)=>({id:`e${x}`,sources:[l.from],targets:[l.to]}))}}function je(s){if(s.length===0)return{x:0,y:0};if(s.length===1)return s[0];const t=[];let n=0;for(let r=1;r<s.length;r++){const i=Math.hypot(s[r].x-s[r-1].x,s[r].y-s[r-1].y);t.push(i),n+=i}let a=n/2;for(let r=0;r<t.length;r++){if(a<=t[r]||r===t.length-1){const i=t[r]===0?0:a/t[r];return{x:s[r].x+(s[r+1].x-s[r].x)*i,y:s[r].y+(s[r+1].y-s[r].y)*i}}a-=t[r]}return s[s.length-1]}function ye(s,t,n,a,r,i){var y;const c=new Map(t.map(u=>[u.id,u])),o=new Map;a.forEach((u,m)=>o.set(u.id,m%5));const d=new Map(a.map(u=>[u.id,u])),f=new Map;for(const u of a)for(const m of u.nodeIds)f.has(m)||f.set(m,u.id);const b=[],h=[],l=[],x=new Map([["root",{x:0,y:0}]]),k=[],p=(u,m,v,S)=>{var M;for(const N of u.children??[]){const C=m+(N.x??0),$=v+(N.y??0);if((M=N.children)!=null&&M.length){const w=N.id.startsWith("g:")?N.id.slice(2):N.id,j=d.get(w);h.push({id:w,label:(j==null?void 0:j.label)??"分组",x:C,y:$,w:N.width??0,h:N.height??0,colorIdx:o.get(w)??0}),x.set(N.id,{x:C,y:$}),p(N,C,$,w)}else{const w=c.get(N.id);if(!w)continue;const j=J(w.label,w.id===i),E=f.get(w.id)??null;b.push({id:w.id,x:C,y:$,w:N.width??Math.ceil(j.width),h:N.height??Math.ceil(j.height),lines:j.lines,hub:w.id===i,groupId:S,colorIdx:E!=null?o.get(E)??0:-1})}}for(const N of u.edges??[])k.push({e:N,fallback:{x:m,y:v}})};p(s,0,0,null);for(const{e:u,fallback:m}of k){const v=(y=u.sections)==null?void 0:y[0];if(!v)continue;const S=(u.container!=null?x.get(u.container):void 0)??m,M=[v.startPoint,...v.bendPoints??[],v.endPoint].map($=>({x:$.x+S.x,y:$.y+S.y})),N=Number(u.id.slice(1)),C=n[N];C&&l.push({from:C.from,to:C.to,label:C.label,pts:M,labelPt:C.label?je(M):null})}return{width:Math.ceil(s.width??0),height:Math.ceil(s.height??0),nodes:b,groups:h,edges:l,hubId:i,groupsFallback:r}}let X=null;function ke(){return X??(X=ee(()=>import("./elk.bundled-Zj2eepJ0.js").then(s=>s.e),__vite__mapDeps([0,1,2,3]),import.meta.url).then(s=>{const t=s,n=t.default??t;return new n})),X}async function ve(s,t,n){const a=pe(s,t,n),r=we(s,t,a.groups),i=Ne(s,t),o=await(await ke()).layout(r);return ye(o,s,t,a.groups,a.fallback,i)}function Ne(s,t){var c;const n=new Set(s.map(o=>o.id)),a=new Map;for(const o of s)a.set(o.id,0);const r=new Set;for(const o of t){if(!n.has(o.from)||!n.has(o.to)||o.from===o.to)continue;const d=[o.from,o.to].sort().join("→");r.has(d)||(r.add(d),a.set(o.from,a.get(o.from)+1),a.set(o.to,a.get(o.to)+1))}let i=((c=s[0])==null?void 0:c.id)??"";for(const o of s)(a.get(o.id)??0)>(a.get(i)??0)&&(i=o.id);return i}const L=.4,W=2.5,_=.2;function Me(s){return s.map((t,n)=>`${n===0?"M":"L"} ${t.x.toFixed(1)} ${t.y.toFixed(1)}`).join(" ")}function P({layout:s}){return e.jsxs("svg",{width:s.width,height:s.height,viewBox:`0 0 ${s.width} ${s.height}`,style:{display:"block"},"data-testid":"conceptmap-svg",children:[e.jsx("defs",{children:e.jsx("marker",{id:"cm-arrow",viewBox:"0 0 10 10",refX:9,refY:5,markerWidth:6.5,markerHeight:6.5,orient:"auto-start-reverse",children:e.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",className:"fill-ink-faint"})})}),s.groups.map((t,n)=>e.jsxs("g",{className:"cm-enter",style:{animationDelay:`${n*60}ms`},children:[e.jsx("rect",{x:t.x,y:t.y,width:t.w,height:t.h,rx:14,className:"cm-group-box",style:{fill:`var(--cm-c${t.colorIdx}-fill)`,stroke:`var(--cm-c${t.colorIdx}-line)`}}),e.jsx("rect",{x:t.x,y:t.y,width:t.w,height:O,rx:14,className:"cm-group-head",style:{fill:`var(--cm-c${t.colorIdx}-line)`}}),e.jsx("rect",{x:t.x,y:t.y+O/2,width:t.w,height:O/2,className:"cm-group-head",style:{fill:`var(--cm-c${t.colorIdx}-line)`}}),e.jsx("text",{x:t.x+14,y:t.y+22,fontSize:12,fontWeight:600,fill:`var(--cm-c${t.colorIdx}-line)`,"data-testid":"conceptmap-group-label",children:t.label})]},`g-${t.id}`)),s.edges.map((t,n)=>{const a=t.label?{width:z(t.label,12)+16,height:19}:null;return e.jsxs("g",{className:"cm-enter",style:{animationDelay:`${(s.groups.length+1)*60+n*30}ms`},children:[e.jsx("path",{d:Me(t.pts),className:"fill-none stroke-ink-faint/80",strokeWidth:1.6,markerEnd:"url(#cm-arrow)"}),t.label&&a&&t.labelPt&&e.jsxs("g",{children:[e.jsx("rect",{x:t.labelPt.x-a.width/2,y:t.labelPt.y-a.height/2,width:a.width,height:a.height,rx:a.height/2,className:"fill-surface-0/95 stroke-[var(--border-faint)]",strokeWidth:1}),e.jsx("text",{x:t.labelPt.x,y:t.labelPt.y+3.5,textAnchor:"middle",fontSize:12,className:"fill-ink-muted font-medium",style:{paintOrder:"stroke"},stroke:"var(--surface-0)",strokeWidth:3,children:t.label})]})]},`e-${n}`)}),s.nodes.map((t,n)=>{const a=t.colorIdx>=0?`var(--cm-c${t.colorIdx}-fill)`:"var(--surface-3)",r=t.colorIdx>=0?`var(--cm-c${t.colorIdx}-line)`:"var(--border)",i=t.hub?14:13;return e.jsxs("g",{className:"cm-enter",style:{animationDelay:`${(s.groups.length+2)*60+n*35}ms`},children:[e.jsx("rect",{x:t.x,y:t.y,width:t.w,height:t.h,rx:t.hub?12:10,fill:a,stroke:r,strokeWidth:t.hub?1.8:1.4}),t.lines.map((c,o)=>e.jsx("text",{x:t.x+t.w/2,y:t.y+t.h/2+(o-(t.lines.length-1)/2)*17+4.5,textAnchor:"middle",fontSize:i,className:t.hub?"fill-ink-strong font-bold":"fill-ink",children:c},o))]},t.id)})]})}function Se({data:s,variant:t="card"}){const n=s,a=R(),r=g.useMemo(()=>JSON.stringify({n:n.nodes,e:n.edges,g:n.groups??null}),[n.nodes,n.edges,n.groups]),[i,c]=g.useState(null);g.useEffect(()=>{let y=!0;return c(null),ve(n.nodes,n.edges,n.groups??null).then(u=>{y&&c(u)}).catch(()=>{}),()=>{y=!1}},[r]);const[o,d]=g.useState(1),[f,b]=g.useState(!1),h=g.useRef(null);g.useEffect(()=>{const y=h.current;if(!y||!i)return;const u=()=>{const v=(y.clientWidth-16)/i.width;v<1&&d(Math.max(L,+v.toFixed(2)))};u();const m=new ResizeObserver(u);return m.observe(y),()=>m.disconnect()},[i==null?void 0:i.width,i]);const l=g.useCallback(()=>d(y=>Math.min(W,+(y+_).toFixed(2))),[]),x=g.useCallback(()=>d(y=>Math.max(L,+(y-_).toFixed(2))),[]),k=g.useCallback(()=>d(1),[]),p=g.useCallback(y=>{if(!y.ctrlKey&&!y.metaKey)return;y.preventDefault();const u=y.deltaY>0?-_:_;d(m=>Math.min(W,Math.max(L,+(m+u).toFixed(2))))},[]);return t==="canvas"?e.jsx("div",{"data-testid":"conceptmap-canvas-content",children:i?e.jsx(P,{layout:i}):e.jsx("div",{style:{minWidth:320,minHeight:160}})}):e.jsxs("div",{className:"surface-card p-4","data-testid":"artifact-concept-map",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3 gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx(te,{className:"w-4 h-4 text-ink-muted shrink-0"}),e.jsx("h3",{className:"text-body font-bold text-ink truncate",children:n.title})]}),e.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-1","data-testid":"conceptmap-zoom-controls",children:[e.jsx("button",{onClick:x,disabled:o<=L,className:"w-6 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-3 disabled:opacity-30 text-label font-bold flex items-center justify-center",title:a("artifact.zoomOut"),children:"−"}),e.jsxs("button",{onClick:k,className:"px-1.5 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-3 text-caption font-bold tabular-nums",title:a("artifact.zoomReset"),children:[Math.round(o*100),"%"]}),e.jsx("button",{onClick:l,disabled:o>=W,className:"w-6 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-3 disabled:opacity-30 text-label font-bold flex items-center justify-center",title:a("artifact.zoomIn"),children:"+"})]}),e.jsx("button",{onClick:()=>b(!0),"data-testid":"conceptmap-expand","aria-label":a("artifact.viewer.open"),"data-tooltip":a("artifact.viewer.open"),className:"w-6 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-3 flex items-center justify-center",children:e.jsx(K,{className:"w-3.5 h-3.5"})})]})]}),e.jsx("div",{ref:h,onClick:()=>b(!0),onWheel:p,className:"bg-surface-0/40 rounded-lg p-2 overflow-auto min-h-[160px] max-h-[500px] select-none",style:{touchAction:"pan-x pan-y"},"data-testid":"conceptmap-render-area","data-noswipe":"",children:i?e.jsx("div",{style:{width:i.width*o,height:i.height*o,margin:"0 auto"},children:e.jsx("div",{style:{transform:`scale(${o})`,transformOrigin:"top left",width:i.width,height:i.height},children:e.jsx(P,{layout:i})})}):e.jsx("div",{className:"h-[152px] flex items-center justify-center text-caption text-ink-muted","data-testid":"conceptmap-loading",children:"…"})}),e.jsx("div",{className:"mt-1.5 flex items-center justify-between text-caption text-ink-muted",children:e.jsx("span",{children:a("artifact.conceptmap.stats",{nodes:n.nodes.length,edges:n.edges.length})})}),n.warnings&&n.warnings.length>0&&e.jsxs("div",{className:"mt-1 text-caption text-warning flex items-start gap-1","data-testid":"artifact-warnings",children:[e.jsx(T,{className:"w-3.5 h-3.5 shrink-0 mt-0.5"}),e.jsx("span",{children:n.warnings.join("; ")})]}),f&&e.jsx(H,{title:n.title,onClose:()=>b(!1),children:e.jsx("div",{className:"h-full w-full rounded-xl overflow-hidden bg-surface-0/60",children:e.jsx(B,{testid:"conceptmap-modal-stage",children:i?e.jsx(P,{layout:i}):e.jsx("div",{className:"min-w-[320px] min-h-[160px]"})})})})]})}function Ce(s,t){const{correct:n,total:a}=s,r=a>0&&n===a,i=a>0&&n<a,c=t!=null&&t>=se,o=t!=null&&t>=ne;return i?[{id:"explain-wrong"},{id:"retry"}]:r&&c?[{id:"next-topic"},{id:"go-deeper"}]:r&&o?[{id:"mark-mastered",advancesMastery:!0},{id:"next-topic"},{id:"go-deeper"}]:[{id:"go-deeper"},{id:"retry"}]}const ze="ls-quiz-progress:";function $e(s){const t=s.questions.map(a=>`${a.prompt}|${(a.options??[]).join("/")}#${a.answer??""}`).join(`
|
|
12
|
+
*/const me=Z("Dices",[["rect",{width:"12",height:"12",x:"2",y:"10",rx:"2",ry:"2",key:"6agr2n"}],["path",{d:"m17.92 14 3.5-3.5a2.24 2.24 0 0 0 0-3l-5-4.92a2.24 2.24 0 0 0-3 0L10 6",key:"1o487t"}],["path",{d:"M6 18h.01",key:"uhywen"}],["path",{d:"M10 14h.01",key:"ssrbsk"}],["path",{d:"M15 6h.01",key:"cblpky"}],["path",{d:"M18 9h.01",key:"2061c0"}]]);function z(s,t=13){let n=0;for(const a of s)n+=/[\u2e80-\u9fff\uf900-\ufaff\uff00-\uffef\u3000-\u303f]/.test(a)?t:t*.58;return n}const q=118;function ge(s){if(z(s)<=q)return[s];const t=[];for(let d=0;d<s.length;d++)/[\s/\-—·]/.test(s[d]??"")&&t.push(d);const n=s.length/2;let a=-1,r=1/0;for(const d of t){const f=Math.abs(d+1-n);f<r&&(r=f,a=d)}let i,c;if(a>=0)i=s.slice(0,a+1).trim(),c=s.slice(a+1).trim();else{let d=0,f=0;for(const b of s)if(d+=z(b),f++,d>=z(s)/2)break;i=s.slice(0,f),c=s.slice(f)}if(z(i)<=q&&z(c)<=q)return[i,c];const o=d=>{let f="";for(const b of d){if(z(f+b+"…")>q)break;f+=b}return f+"…"};return[z(i)>q?o(i):i,z(c)>q?o(c):c]}function J(s,t){const n=ge(s),a=t?14:13,r=Math.max(...n.map(d=>z(d,a))),i=t?30:24,c=17,o=t?18:14;return{width:Math.min(t?200:180,Math.max(t?92:76,r+i)),height:o+n.length*c,lines:n}}function pe(s,t,n){const a=new Set(s.map(r=>r.id));if(Array.isArray(n)&&n.length>0){const r=new Set,i=[];for(const c of n){if(!c||typeof c.id!="string"||!c.id)continue;const o=Array.isArray(c.nodeIds)?[...new Set(c.nodeIds.filter(d=>typeof d=="string"&&a.has(d)&&!r.has(d)))]:[];o.length<2||(o.forEach(d=>r.add(d)),i.push({id:c.id,label:typeof c.label=="string"&&c.label?c.label:"分组",nodeIds:o}))}if(i.length>0&&!(i.length===1&&r.size===s.length&&s.length>2))return{groups:i,fallback:!1}}return{groups:be(s,t),fallback:!0}}function be(s,t){if(s.length<4)return[];const n=new Map(s.map((h,l)=>[h.id,l])),a=new Map;for(const h of s)a.set(h.id,[]);const r=new Set;for(const h of t){if(!n.has(h.from)||!n.has(h.to)||h.from===h.to)continue;const l=[h.from,h.to].sort().join("→");r.has(l)||(r.add(l),a.get(h.from).push(h.to),a.get(h.to).push(h.from))}const i=[...s].sort((h,l)=>{const x=a.get(h.id).length,k=a.get(l.id).length;return x!==k?k-x:(n.get(h.id)??0)-(n.get(l.id)??0)}),c=Math.min(3,Math.max(1,Math.ceil(s.length/4))),o=i.slice(0,c).filter(h=>{var l;return(((l=a.get(h.id))==null?void 0:l.length)??0)>0});if(o.length===0)return[];const d=new Map;o.forEach((h,l)=>d.set(h.id,l));const f=o.map(h=>h.id);for(;f.length;){const h=f.shift(),l=d.get(h);for(const x of a.get(h)??[])d.has(x)||(d.set(x,l),f.push(x))}const b=[];return o.forEach((h,l)=>{const x=s.filter(k=>d.get(k.id)===l).map(k=>k.id);x.length<2||b.push({id:`grp-${h.id}`,label:h.label.length<=5?`${h.label}相关`:h.label,nodeIds:x})}),b}const O=34;function we(s,t,n){var h;const a=new Set(s.map(l=>l.id)),r=new Map;for(const l of s)r.set(l.id,0);const i=new Set,c=[];for(const l of t){if(!a.has(l.from)||!a.has(l.to)||l.from===l.to)continue;const x=[l.from,l.to].sort().join("→");i.has(x)||(i.add(x),c.push(l),r.set(l.from,r.get(l.from)+1),r.set(l.to,r.get(l.to)+1))}let o=((h=s[0])==null?void 0:h.id)??"";for(const l of s)(r.get(l.id)??0)>(r.get(o)??0)&&(o=l.id);const d=new Map;for(const l of n)for(const x of l.nodeIds)a.has(x)&&!d.has(x)&&d.set(x,l.id);const f=l=>{const x=J(l.label,l.id===o||(r.get(l.id)??0)>=4);return{id:l.id,width:Math.ceil(x.width),height:Math.ceil(x.height)}},b=[];for(const l of n){const x=l.nodeIds.filter(k=>d.get(k)===l.id&&a.has(k));x.length!==0&&b.push({id:`g:${l.id}`,layoutOptions:{"elk.padding":`[top=${O},left=14,bottom=12,right=14]`},children:x.map(k=>f(s.find(p=>p.id===k)))})}for(const l of s)d.has(l.id)||b.push(f(l));return{id:"root",layoutOptions:{"elk.algorithm":"layered","elk.direction":"DOWN","elk.edgeRouting":"ORTHOGONAL","elk.hierarchyHandling":"INCLUDE_CHILDREN","elk.spacing.nodeNode":"34","elk.spacing.edgeNode":"26","elk.spacing.componentComponent":"48","elk.layered.spacing.nodeNodeBetweenLayers":"56"},children:b,edges:c.map((l,x)=>({id:`e${x}`,sources:[l.from],targets:[l.to]}))}}function je(s){if(s.length===0)return{x:0,y:0};if(s.length===1)return s[0];const t=[];let n=0;for(let r=1;r<s.length;r++){const i=Math.hypot(s[r].x-s[r-1].x,s[r].y-s[r-1].y);t.push(i),n+=i}let a=n/2;for(let r=0;r<t.length;r++){if(a<=t[r]||r===t.length-1){const i=t[r]===0?0:a/t[r];return{x:s[r].x+(s[r+1].x-s[r].x)*i,y:s[r].y+(s[r+1].y-s[r].y)*i}}a-=t[r]}return s[s.length-1]}function ye(s,t,n,a,r,i){var y;const c=new Map(t.map(u=>[u.id,u])),o=new Map;a.forEach((u,m)=>o.set(u.id,m%5));const d=new Map(a.map(u=>[u.id,u])),f=new Map;for(const u of a)for(const m of u.nodeIds)f.has(m)||f.set(m,u.id);const b=[],h=[],l=[],x=new Map([["root",{x:0,y:0}]]),k=[],p=(u,m,v,S)=>{var M;for(const N of u.children??[]){const C=m+(N.x??0),$=v+(N.y??0);if((M=N.children)!=null&&M.length){const w=N.id.startsWith("g:")?N.id.slice(2):N.id,j=d.get(w);h.push({id:w,label:(j==null?void 0:j.label)??"分组",x:C,y:$,w:N.width??0,h:N.height??0,colorIdx:o.get(w)??0}),x.set(N.id,{x:C,y:$}),p(N,C,$,w)}else{const w=c.get(N.id);if(!w)continue;const j=J(w.label,w.id===i),E=f.get(w.id)??null;b.push({id:w.id,x:C,y:$,w:N.width??Math.ceil(j.width),h:N.height??Math.ceil(j.height),lines:j.lines,hub:w.id===i,groupId:S,colorIdx:E!=null?o.get(E)??0:-1})}}for(const N of u.edges??[])k.push({e:N,fallback:{x:m,y:v}})};p(s,0,0,null);for(const{e:u,fallback:m}of k){const v=(y=u.sections)==null?void 0:y[0];if(!v)continue;const S=(u.container!=null?x.get(u.container):void 0)??m,M=[v.startPoint,...v.bendPoints??[],v.endPoint].map($=>({x:$.x+S.x,y:$.y+S.y})),N=Number(u.id.slice(1)),C=n[N];C&&l.push({from:C.from,to:C.to,label:C.label,pts:M,labelPt:C.label?je(M):null})}return{width:Math.ceil(s.width??0),height:Math.ceil(s.height??0),nodes:b,groups:h,edges:l,hubId:i,groupsFallback:r}}let X=null;function ke(){return X??(X=ee(()=>import("./elk.bundled-DuC4qO17.js").then(s=>s.e),__vite__mapDeps([0,1,2,3]),import.meta.url).then(s=>{const t=s,n=t.default??t;return new n})),X}async function ve(s,t,n){const a=pe(s,t,n),r=we(s,t,a.groups),i=Ne(s,t),o=await(await ke()).layout(r);return ye(o,s,t,a.groups,a.fallback,i)}function Ne(s,t){var c;const n=new Set(s.map(o=>o.id)),a=new Map;for(const o of s)a.set(o.id,0);const r=new Set;for(const o of t){if(!n.has(o.from)||!n.has(o.to)||o.from===o.to)continue;const d=[o.from,o.to].sort().join("→");r.has(d)||(r.add(d),a.set(o.from,a.get(o.from)+1),a.set(o.to,a.get(o.to)+1))}let i=((c=s[0])==null?void 0:c.id)??"";for(const o of s)(a.get(o.id)??0)>(a.get(i)??0)&&(i=o.id);return i}const L=.4,W=2.5,_=.2;function Me(s){return s.map((t,n)=>`${n===0?"M":"L"} ${t.x.toFixed(1)} ${t.y.toFixed(1)}`).join(" ")}function P({layout:s}){return e.jsxs("svg",{width:s.width,height:s.height,viewBox:`0 0 ${s.width} ${s.height}`,style:{display:"block"},"data-testid":"conceptmap-svg",children:[e.jsx("defs",{children:e.jsx("marker",{id:"cm-arrow",viewBox:"0 0 10 10",refX:9,refY:5,markerWidth:6.5,markerHeight:6.5,orient:"auto-start-reverse",children:e.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",className:"fill-ink-faint"})})}),s.groups.map((t,n)=>e.jsxs("g",{className:"cm-enter",style:{animationDelay:`${n*60}ms`},children:[e.jsx("rect",{x:t.x,y:t.y,width:t.w,height:t.h,rx:14,className:"cm-group-box",style:{fill:`var(--cm-c${t.colorIdx}-fill)`,stroke:`var(--cm-c${t.colorIdx}-line)`}}),e.jsx("rect",{x:t.x,y:t.y,width:t.w,height:O,rx:14,className:"cm-group-head",style:{fill:`var(--cm-c${t.colorIdx}-line)`}}),e.jsx("rect",{x:t.x,y:t.y+O/2,width:t.w,height:O/2,className:"cm-group-head",style:{fill:`var(--cm-c${t.colorIdx}-line)`}}),e.jsx("text",{x:t.x+14,y:t.y+22,fontSize:12,fontWeight:600,fill:`var(--cm-c${t.colorIdx}-line)`,"data-testid":"conceptmap-group-label",children:t.label})]},`g-${t.id}`)),s.edges.map((t,n)=>{const a=t.label?{width:z(t.label,12)+16,height:19}:null;return e.jsxs("g",{className:"cm-enter",style:{animationDelay:`${(s.groups.length+1)*60+n*30}ms`},children:[e.jsx("path",{d:Me(t.pts),className:"fill-none stroke-ink-faint/80",strokeWidth:1.6,markerEnd:"url(#cm-arrow)"}),t.label&&a&&t.labelPt&&e.jsxs("g",{children:[e.jsx("rect",{x:t.labelPt.x-a.width/2,y:t.labelPt.y-a.height/2,width:a.width,height:a.height,rx:a.height/2,className:"fill-surface-0/95 stroke-[var(--border-faint)]",strokeWidth:1}),e.jsx("text",{x:t.labelPt.x,y:t.labelPt.y+3.5,textAnchor:"middle",fontSize:12,className:"fill-ink-muted font-medium",style:{paintOrder:"stroke"},stroke:"var(--surface-0)",strokeWidth:3,children:t.label})]})]},`e-${n}`)}),s.nodes.map((t,n)=>{const a=t.colorIdx>=0?`var(--cm-c${t.colorIdx}-fill)`:"var(--surface-3)",r=t.colorIdx>=0?`var(--cm-c${t.colorIdx}-line)`:"var(--border)",i=t.hub?14:13;return e.jsxs("g",{className:"cm-enter",style:{animationDelay:`${(s.groups.length+2)*60+n*35}ms`},children:[e.jsx("rect",{x:t.x,y:t.y,width:t.w,height:t.h,rx:t.hub?12:10,fill:a,stroke:r,strokeWidth:t.hub?1.8:1.4}),t.lines.map((c,o)=>e.jsx("text",{x:t.x+t.w/2,y:t.y+t.h/2+(o-(t.lines.length-1)/2)*17+4.5,textAnchor:"middle",fontSize:i,className:t.hub?"fill-ink-strong font-bold":"fill-ink",children:c},o))]},t.id)})]})}function Se({data:s,variant:t="card"}){const n=s,a=R(),r=g.useMemo(()=>JSON.stringify({n:n.nodes,e:n.edges,g:n.groups??null}),[n.nodes,n.edges,n.groups]),[i,c]=g.useState(null);g.useEffect(()=>{let y=!0;return c(null),ve(n.nodes,n.edges,n.groups??null).then(u=>{y&&c(u)}).catch(()=>{}),()=>{y=!1}},[r]);const[o,d]=g.useState(1),[f,b]=g.useState(!1),h=g.useRef(null);g.useEffect(()=>{const y=h.current;if(!y||!i)return;const u=()=>{const v=(y.clientWidth-16)/i.width;v<1&&d(Math.max(L,+v.toFixed(2)))};u();const m=new ResizeObserver(u);return m.observe(y),()=>m.disconnect()},[i==null?void 0:i.width,i]);const l=g.useCallback(()=>d(y=>Math.min(W,+(y+_).toFixed(2))),[]),x=g.useCallback(()=>d(y=>Math.max(L,+(y-_).toFixed(2))),[]),k=g.useCallback(()=>d(1),[]),p=g.useCallback(y=>{if(!y.ctrlKey&&!y.metaKey)return;y.preventDefault();const u=y.deltaY>0?-_:_;d(m=>Math.min(W,Math.max(L,+(m+u).toFixed(2))))},[]);return t==="canvas"?e.jsx("div",{"data-testid":"conceptmap-canvas-content",children:i?e.jsx(P,{layout:i}):e.jsx("div",{style:{minWidth:320,minHeight:160}})}):e.jsxs("div",{className:"surface-card p-4","data-testid":"artifact-concept-map",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3 gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx(te,{className:"w-4 h-4 text-ink-muted shrink-0"}),e.jsx("h3",{className:"text-body font-bold text-ink truncate",children:n.title})]}),e.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-1","data-testid":"conceptmap-zoom-controls",children:[e.jsx("button",{onClick:x,disabled:o<=L,className:"w-6 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-3 disabled:opacity-30 text-label font-bold flex items-center justify-center",title:a("artifact.zoomOut"),children:"−"}),e.jsxs("button",{onClick:k,className:"px-1.5 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-3 text-caption font-bold tabular-nums",title:a("artifact.zoomReset"),children:[Math.round(o*100),"%"]}),e.jsx("button",{onClick:l,disabled:o>=W,className:"w-6 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-3 disabled:opacity-30 text-label font-bold flex items-center justify-center",title:a("artifact.zoomIn"),children:"+"})]}),e.jsx("button",{onClick:()=>b(!0),"data-testid":"conceptmap-expand","aria-label":a("artifact.viewer.open"),"data-tooltip":a("artifact.viewer.open"),className:"w-6 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-3 flex items-center justify-center",children:e.jsx(K,{className:"w-3.5 h-3.5"})})]})]}),e.jsx("div",{ref:h,onClick:()=>b(!0),onWheel:p,className:"bg-surface-0/40 rounded-lg p-2 overflow-auto min-h-[160px] max-h-[500px] select-none",style:{touchAction:"pan-x pan-y"},"data-testid":"conceptmap-render-area","data-noswipe":"",children:i?e.jsx("div",{style:{width:i.width*o,height:i.height*o,margin:"0 auto"},children:e.jsx("div",{style:{transform:`scale(${o})`,transformOrigin:"top left",width:i.width,height:i.height},children:e.jsx(P,{layout:i})})}):e.jsx("div",{className:"h-[152px] flex items-center justify-center text-caption text-ink-muted","data-testid":"conceptmap-loading",children:"…"})}),e.jsx("div",{className:"mt-1.5 flex items-center justify-between text-caption text-ink-muted",children:e.jsx("span",{children:a("artifact.conceptmap.stats",{nodes:n.nodes.length,edges:n.edges.length})})}),n.warnings&&n.warnings.length>0&&e.jsxs("div",{className:"mt-1 text-caption text-warning flex items-start gap-1","data-testid":"artifact-warnings",children:[e.jsx(T,{className:"w-3.5 h-3.5 shrink-0 mt-0.5"}),e.jsx("span",{children:n.warnings.join("; ")})]}),f&&e.jsx(H,{title:n.title,onClose:()=>b(!1),children:e.jsx("div",{className:"h-full w-full rounded-xl overflow-hidden bg-surface-0/60",children:e.jsx(B,{testid:"conceptmap-modal-stage",children:i?e.jsx(P,{layout:i}):e.jsx("div",{className:"min-w-[320px] min-h-[160px]"})})})})]})}function Ce(s,t){const{correct:n,total:a}=s,r=a>0&&n===a,i=a>0&&n<a,c=t!=null&&t>=se,o=t!=null&&t>=ne;return i?[{id:"explain-wrong"},{id:"retry"}]:r&&c?[{id:"next-topic"},{id:"go-deeper"}]:r&&o?[{id:"mark-mastered",advancesMastery:!0},{id:"next-topic"},{id:"go-deeper"}]:[{id:"go-deeper"},{id:"retry"}]}const ze="ls-quiz-progress:";function $e(s){const t=s.questions.map(a=>`${a.prompt}|${(a.options??[]).join("/")}#${a.answer??""}`).join(`
|
|
13
13
|
`);let n=2166136261;for(let a=0;a<t.length;a++)n^=t.charCodeAt(a),n=Math.imul(n,16777619);return`${ze}${(n>>>0).toString(36)}`}function Ee(s){var t,n;try{const a=localStorage.getItem(s);if(!a)return null;const r=JSON.parse(a);return typeof(r==null?void 0:r.current)=="number"&&r.current>=0&&typeof((t=r==null?void 0:r.score)==null?void 0:t.correct)=="number"&&typeof((n=r==null?void 0:r.score)==null?void 0:n.total)=="number"?r:null}catch{return null}}function Ie(s,t){try{localStorage.setItem(s,JSON.stringify(t))}catch{}}const qe={"explain-wrong":{icon:fe,labelKey:"quiz.action.explainWrong",message:"我刚才有题答错了,帮我讲讲为什么错、正确的思路是什么。"},retry:{icon:xe,labelKey:"quiz.action.retry",message:"再来一组类似的题巩固一下。"},"go-deeper":{icon:ie,labelKey:"quiz.action.goDeeper",message:"这组我答得不错,帮我深入讲讲背后的原理和容易混淆的地方。"},"mark-mastered":{icon:re,labelKey:"quiz.action.markMastered",message:"这课我觉得掌握了,帮我确认一下——出个综合题检验,通过了就标记为掌握。"},"next-topic":{icon:ae,labelKey:"quiz.action.nextTopic",message:"进入下一个知识点。"}};function Re({data:s,onAnswered:t,quizMastery:n,onPickAction:a,onQuizCompleted:r}){const i=s,c=R(),o=g.useMemo(()=>$e(i),[i]),d=g.useMemo(()=>Ee(o),[o]),[f,b]=g.useState((d==null?void 0:d.current)??0),[h,l]=g.useState(null),[x,k]=g.useState(!1),[p,y]=g.useState((d==null?void 0:d.score)??{correct:0,total:0}),u=g.useRef([]),m=g.useRef(null);g.useEffect(()=>{Ie(o,{current:f,score:p})},[o,f,p]);const[v,S]=g.useState(!1);if(f>=i.questions.length){const w=!!a&&!r;if(r)return e.jsxs("div",{className:"surface-card p-4 text-center","data-testid":"artifact-quiz-done",children:[e.jsx("div",{className:"text-2xl mb-2",children:p.correct===p.total?"🎉":"📚"}),e.jsx("div",{className:"text-body font-bold text-ink",children:c("quiz.scoreSummary",{correct:p.correct,total:p.total})}),v?e.jsx("div",{className:"text-label text-ink-muted mt-1","data-testid":"quiz-hook-sent",children:c("quiz.hook.sent")}):e.jsx("button",{onClick:()=>{S(!0),r({title:i.title??"",correct:p.correct,total:p.total,detail:[...u.current]})},"data-testid":"quiz-hook-finish",className:"btn-3d-brand mt-3 px-5 py-2 text-body",children:c("quiz.hook.finish")})]});const j=w?Ce(p,n??null):[];return e.jsxs("div",{className:"surface-card p-4 text-center","data-testid":"artifact-quiz-done",children:[e.jsx("div",{className:"text-2xl mb-2",children:p.correct===p.total?"🎉":"📚"}),e.jsx("div",{className:"text-body font-bold text-ink",children:c("quiz.scoreSummary",{correct:p.correct,total:p.total})}),e.jsx("div",{className:"text-label text-ink-muted mt-1",children:p.correct===p.total?c("quiz.allCorrectHint"):c("quiz.tryAgainHint")}),j.length>0&&e.jsxs("div",{className:"mt-3 space-y-2 text-left","data-testid":"quiz-next-actions",children:[e.jsx("div",{className:"text-label text-ink-muted",children:c("quiz.action.nextPrompt")}),j.map((E,A)=>{const I=qe[E.id],Y=I.icon;return e.jsxs("button",{onClick:()=>a==null?void 0:a(I.message),"data-testid":`quiz-action-${E.id}`,className:`${A===0?"btn-3d-brand":"btn-3d-neutral"} w-full py-2 text-body flex items-center justify-center gap-1.5`,children:[e.jsx(Y,{className:"w-4 h-4"}),c(I.labelKey)]},E.id)})]})]})}const M=i.questions[f],N=x&&h===M.answer,C=()=>{if(h===null)return;k(!0);const w=h===M.answer;y(j=>({correct:j.correct+(w?1:0),total:j.total+1})),t==null||t(M,h,w),u.current.push({prompt:M.prompt,chosen:M.options[h]??"?",answerText:M.options[M.answer]??"?",correct:w}),Q(w?"correct":"wrong",{origin:w&&m.current?(()=>{const j=m.current.getBoundingClientRect();return{x:j.right-48,y:j.top+24}})():void 0})},$=()=>{f===i.questions.length-1&&r&&!v&&(S(!0),r({title:i.title??"",correct:p.correct,total:p.total,detail:[...u.current]})),b(w=>w+1),l(null),k(!1)};return e.jsxs("div",{ref:m,className:"surface-card p-4","data-testid":"artifact-quiz",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(oe,{className:"w-4 h-4 text-brand"}),e.jsx("span",{className:"text-label font-bold text-brand",children:c("quiz.questionProgress",{cur:f+1,total:i.questions.length})})]}),e.jsx("span",{className:"text-label text-ink-muted",children:c("quiz.answeredCorrect",{n:p.correct})})]}),e.jsx("div",{className:"text-body text-ink font-medium mb-3 leading-relaxed",children:M.prompt}),e.jsx("div",{className:"space-y-2 mb-3",children:M.options.map((w,j)=>{const E=h===j,A=x&&j===M.answer,I=x&&E&&!A;return e.jsxs("button",{onClick:()=>!x&&l(j),disabled:x,"data-testid":`quiz-option-${j}`,className:`w-full text-left text-body p-2.5 rounded-lg border-2 font-medium transition-colors ${A?"border-brand bg-brand/10 text-brand animate-answer-correct":I?"border-warning bg-warning/10 text-warning animate-answer-wrong":E?"border-accent bg-accent/10 text-accent":"border-[var(--border)] text-ink-muted hover:border-[var(--border)]"} ${x?"cursor-default":"cursor-pointer"}`,children:[e.jsx("span",{className:"font-bold mr-2",children:String.fromCharCode(65+j)}),w,A&&e.jsx("span",{className:"float-right",children:e.jsx(D,{className:"w-4 h-4 inline-block"})}),I&&e.jsx("span",{className:"float-right",children:e.jsx(G,{className:"w-4 h-4 inline-block"})})]},j)})}),x&&e.jsxs("div",{className:`rounded-lg p-3 mb-3 text-body leading-relaxed animate-artifact-render ${N?"bg-brand/10 border border-brand/30 text-brand":"bg-warning/10 border border-warning/30 text-warning"}`,"data-testid":"quiz-explanation",children:[e.jsxs("div",{className:"font-bold mb-1 flex items-center gap-1.5",children:[N?e.jsx(D,{className:"w-4 h-4"}):e.jsx(G,{className:"w-4 h-4"}),e.jsx("span",{children:c(N?"quiz.correct":"quiz.wrong")})]}),e.jsx("div",{className:"text-ink-muted",children:M.explanation})]}),x?e.jsx("button",{onClick:$,"data-testid":"quiz-next",className:"btn-3d-brand w-full py-2 text-body",children:f+1<i.questions.length?c("exercise.next"):c("quiz.finish")}):e.jsx("button",{onClick:C,disabled:h===null,"data-testid":"quiz-submit",className:"btn-3d-brand w-full py-2 text-body disabled:opacity-40",children:c("exercise.submit")}),i.warnings&&i.warnings.length>0&&e.jsxs("div",{className:"mt-2 text-caption text-warning flex items-start gap-1","data-testid":"artifact-warnings",children:[e.jsx(T,{className:"w-3.5 h-3.5 shrink-0 mt-0.5"}),e.jsx("span",{children:i.warnings.join("; ")})]})]})}function U({data:s,variant:t="card"}){const n=s,a=R(),[r,i]=g.useState(!1),c=e.jsxs("table",{className:"text-body",style:{width:"max-content",minWidth:"100%"},children:[e.jsx("thead",{children:e.jsx("tr",{className:"bg-surface-3/60",children:n.headers.map((o,d)=>e.jsx("th",{className:`px-3 py-2.5 text-left font-bold border-b border-[var(--border)] ${d===0?"text-ink-strong":"text-ink"}`,children:o},d))})}),e.jsx("tbody",{children:n.rows.map((o,d)=>e.jsx("tr",{className:d%2===0?"bg-surface-0/40":"",children:o.map((f,b)=>e.jsx("td",{className:`px-3 py-2.5 border-b border-[var(--border-faint)] align-top leading-relaxed ${b===0?"font-bold text-ink-strong whitespace-nowrap bg-surface-1/40":"text-ink-muted"}`,style:b===0?void 0:{maxWidth:260,overflowWrap:"anywhere"},children:f},b))},d))})]});return t==="canvas"?e.jsx("div",{className:"w-fit","data-testid":"comparetable-canvas-content",children:c}):e.jsxs("div",{className:"surface-card p-4","data-testid":"artifact-compare-table",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(ce,{className:"w-4 h-4 text-ink-muted shrink-0"}),e.jsx("h3",{className:"text-body font-bold text-ink truncate",children:n.title})]}),e.jsx("button",{onClick:()=>i(!0),"data-testid":"comparetable-expand","aria-label":a("artifact.viewer.open"),"data-tooltip":a("artifact.viewer.open"),className:"w-6 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-3 flex items-center justify-center shrink-0",children:e.jsx(K,{className:"w-3.5 h-3.5"})})]}),e.jsx("div",{className:"overflow-x-auto rounded-lg border border-[var(--border-faint)]",onClick:()=>i(!0),style:{touchAction:"pan-x pan-y"},"data-noswipe":"",children:c}),n.warnings&&n.warnings.length>0&&e.jsxs("div",{className:"mt-2 text-caption text-warning flex items-start gap-1","data-testid":"artifact-warnings",children:[e.jsx(T,{className:"w-3.5 h-3.5 shrink-0 mt-0.5"}),e.jsx("span",{children:n.warnings.join("; ")})]}),r&&e.jsx(H,{title:n.title,onClose:()=>i(!1),children:e.jsx("div",{className:"h-full w-full rounded-xl overflow-hidden bg-surface-0/60",children:e.jsx(B,{testid:"comparetable-modal-stage",children:e.jsx("div",{className:"p-2 surface-card",children:e.jsx(U,{data:s,variant:"canvas"})})})})})]})}function V({data:s,variant:t="card"}){const n=s,a=R(),[r,i]=g.useState(null),[c,o]=g.useState(!1),d=g.useRef([]),f=g.useRef([]),b=n.code.split(`
|
|
14
14
|
`),[h,l]=g.useState(null);g.useEffect(()=>{let u=!0;return le(n.code,n.language).then(m=>{u&&m&&l(m)}),()=>{u=!1}},[n.code,n.language]);const x=u=>{if(r===null)return!1;const m=n.annotations[r];return m&&u>=m.lineStart&&u<=m.lineEnd},k=u=>{const m=r===u?null:u;if(i(m),m!==null){const v=n.annotations[m],S=(c?f:d).current[v.lineStart-1];S==null||S.scrollIntoView({behavior:"smooth",block:"center"})}},p=u=>e.jsx("div",{className:"bg-neutral-950 rounded-lg overflow-hidden border border-neutral-800 max-h-[420px] overflow-y-auto",children:e.jsx("pre",{className:"text-label font-mono leading-relaxed overflow-x-auto",children:e.jsx("code",{children:b.map((m,v)=>{const S=v+1;return e.jsxs("div",{ref:M=>{u.current[v]=M},className:`flex ${x(S)?"bg-brand/15":""}`,children:[e.jsx("span",{className:"select-none text-neutral-600 pr-3 pl-3 text-right w-10 shrink-0 border-r border-neutral-800 tabular-nums",children:S}),h&&h[v]!=null?e.jsx("span",{className:"pl-3 whitespace-pre text-neutral-200","data-testid":"walk-shiki-line",dangerouslySetInnerHTML:{__html:h[v]||" "}}):e.jsx("span",{className:"text-neutral-200 pl-3 whitespace-pre",children:m||" "})]},v)})})})}),y=e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-caption font-bold text-ink-muted",children:a("artifact.codewalk.sectionLabel")}),n.annotations.map((u,m)=>e.jsxs("button",{onClick:()=>k(m),"data-testid":`annotation-${m}`,className:`w-full text-left p-2.5 rounded-lg border transition-colors ${r===m?"border-brand bg-brand/10":"border-[var(--border-faint)] hover:border-[var(--border)]"}`,children:[e.jsx("div",{className:"text-caption font-bold text-brand mb-0.5",children:u.lineEnd!==u.lineStart?a("artifact.codewalk.lineRange",{a:u.lineStart,b:u.lineEnd}):a("artifact.codewalk.lineSingle",{n:u.lineStart})}),e.jsx("div",{className:"text-body text-ink-muted leading-relaxed",children:u.note})]},m))]});return t==="canvas"?e.jsx("div",{className:"w-fit","data-testid":"codewalk-canvas-content",children:p(f)}):e.jsxs("div",{className:"surface-card p-4","data-testid":"artifact-code-walkthrough",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(de,{className:"w-4 h-4 text-ink-muted shrink-0"}),e.jsx("h3",{className:"text-body font-bold text-ink truncate",children:n.title}),e.jsx("span",{className:"text-caption font-bold px-1.5 py-0.5 rounded bg-surface-3 text-ink-muted font-mono shrink-0",children:n.language})]}),e.jsx("button",{onClick:()=>o(!0),"data-testid":"codewalk-expand","aria-label":a("artifact.viewer.open"),"data-tooltip":a("artifact.viewer.open"),className:"w-6 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-3 flex items-center justify-center shrink-0",children:e.jsx(K,{className:"w-3.5 h-3.5"})})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-3",children:[e.jsx("div",{onClick:()=>{c||o(!0)},style:{touchAction:"pan-x pan-y"},"data-noswipe":"",children:p(d)}),y]}),n.warnings&&n.warnings.length>0&&e.jsxs("div",{className:"mt-2 text-caption text-warning flex items-start gap-1","data-testid":"artifact-warnings",children:[e.jsx(T,{className:"w-3.5 h-3.5 shrink-0 mt-0.5"}),e.jsx("span",{children:n.warnings.join("; ")})]}),c&&e.jsx(H,{title:n.title,onClose:()=>o(!1),children:e.jsx("div",{className:"h-full w-full rounded-xl overflow-hidden bg-surface-0/60",children:e.jsx(B,{testid:"codewalk-modal-stage",children:e.jsx(V,{data:s,variant:"canvas"})})})})]})}function Ae({data:s,onPickAction:t}){const n=s,a=R(),[r,i]=g.useState(null),c=o=>{r||(i(o.id),t==null||t(`${a("guess.pickedPrefix")}${o.label}`))};return e.jsxs("div",{className:"surface-card p-4","data-testid":"artifact-guess",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(me,{className:"w-4 h-4 text-accent"}),e.jsx("span",{className:"text-label font-bold text-accent",children:a("guess.header")})]}),e.jsx("div",{className:"text-body text-ink font-medium mb-3 leading-relaxed",children:n.prompt}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2 mb-2",children:n.options.map(o=>{const d=r===o.id,f=r!==null;return e.jsxs("button",{onClick:()=>c(o),disabled:f,"data-testid":`guess-option-${o.id}`,className:`text-body p-2.5 rounded-lg border-2 font-medium transition-colors text-left flex items-center justify-between gap-2 ${d?"border-accent bg-accent/10 text-accent":f?"border-[var(--border-faint)] text-ink-faint cursor-default":"border-[var(--border)] text-ink-muted hover:border-accent hover:text-accent cursor-pointer"}`,children:[e.jsx("span",{children:o.label}),d&&e.jsx(D,{className:"w-4 h-4 shrink-0"})]},o.id)})}),r&&e.jsx("div",{className:"text-label text-ink-muted mt-1","data-testid":"guess-picked-hint",children:a("guess.waitReveal")}),n.warnings&&n.warnings.length>0&&e.jsx("div",{className:"mt-2 text-caption text-warning","data-testid":"artifact-warnings",children:n.warnings.join("; ")})]})}function Pe({data:s,onQuizAnswered:t,quizMastery:n,onPickAction:a,onQuizCompleted:r,variant:i="card"}){const c=s;if(!c||!c.artifactType)return e.jsx(F,{data:s});switch(c.artifactType){case"concept_map":return e.jsx(Se,{data:s,variant:i});case"quiz":return e.jsx(Re,{data:s,onAnswered:t,quizMastery:n,onPickAction:a,onQuizCompleted:r});case"compare_table":return e.jsx(U,{data:s,variant:i});case"diagram":return e.jsx(ue,{data:s,variant:i});case"code_walkthrough":return e.jsx(V,{data:s,variant:i});case"guess":return e.jsx(Ae,{data:s,onPickAction:a});default:return e.jsx(F,{data:s})}}function F({data:s}){var n;const t=R();return e.jsxs("div",{className:"surface-card p-4 text-body text-ink-muted","data-testid":"artifact-unknown",children:[e.jsxs("div",{className:"font-bold mb-1 flex items-center gap-1.5",children:[e.jsx(he,{className:"w-4 h-4"}),t("artifact.unknownHeader")]}),e.jsx("pre",{className:"text-caption overflow-x-auto text-ink-muted",children:(n=JSON.stringify(s,null,2))==null?void 0:n.slice(0,200)})]})}export{Pe as ArtifactRenderer,V as CodeWalkthroughArtifact,U as CompareTableArtifact,Se as ConceptMapArtifact,Ae as GuessArtifact,ue as MermaidArtifact,Re as QuizArtifact};
|