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
package/package.json
CHANGED
package/server.cjs
CHANGED
|
@@ -527421,7 +527421,7 @@ init_drizzle_orm();
|
|
|
527421
527421
|
var import_node_crypto26 = require("node:crypto");
|
|
527422
527422
|
|
|
527423
527423
|
// package.json
|
|
527424
|
-
var version2 = "0.37.
|
|
527424
|
+
var version2 = "0.37.2";
|
|
527425
527425
|
|
|
527426
527426
|
// src/main/lib/update-check.ts
|
|
527427
527427
|
var RELEASES_PAGE = "https://github.com/Kaiji-Z/LookatStudy/releases";
|
|
@@ -556283,10 +556283,97 @@ function parseShimejiActions(xml) {
|
|
|
556283
556283
|
duration: Number(pickAttr(attrs, ["\u9577\u3055", "Duration"]) ?? 1) || 1
|
|
556284
556284
|
});
|
|
556285
556285
|
}
|
|
556286
|
-
|
|
556286
|
+
const refs3 = [];
|
|
556287
|
+
if (kind === "Sequence") {
|
|
556288
|
+
const refRe = /<(?:動作参照|ActionReference)(?=[\s/>])[^>]*>/g;
|
|
556289
|
+
let rm2;
|
|
556290
|
+
while (rm2 = refRe.exec(block)) {
|
|
556291
|
+
const attrs = rm2[0].slice(1, -1);
|
|
556292
|
+
const refName = pickAttr(attrs, ["\u540D\u524D", "Name"]);
|
|
556293
|
+
if (!refName)
|
|
556294
|
+
continue;
|
|
556295
|
+
const durRaw = pickAttr(attrs, ["\u9577\u3055", "Duration"]);
|
|
556296
|
+
const duration3 = durRaw && /^\d+$/.test(durRaw.trim()) ? Number(durRaw) : void 0;
|
|
556297
|
+
refs3.push({ name: refName, ...duration3 !== void 0 ? { duration: duration3 } : {} });
|
|
556298
|
+
}
|
|
556299
|
+
}
|
|
556300
|
+
const archived = archiveOf(name19);
|
|
556301
|
+
actions.push({
|
|
556302
|
+
name: name19,
|
|
556303
|
+
kind,
|
|
556304
|
+
...className ? { className } : {},
|
|
556305
|
+
...archived.entry ? { archiveOf: archived.entry.en, archive: archived.archive } : {},
|
|
556306
|
+
...kind === "Sequence" ? { refs: refs3 } : {},
|
|
556307
|
+
poses
|
|
556308
|
+
});
|
|
556287
556309
|
}
|
|
556288
556310
|
return actions;
|
|
556289
556311
|
}
|
|
556312
|
+
function expandShimejiSequences(actions, maxDepth = 8) {
|
|
556313
|
+
const byName = new Map(actions.map((a) => [a.name, a]));
|
|
556314
|
+
const unexpanded = [];
|
|
556315
|
+
function flatten(name19, stack, depth) {
|
|
556316
|
+
if (depth > maxDepth || stack.has(name19))
|
|
556317
|
+
return null;
|
|
556318
|
+
const action = byName.get(name19);
|
|
556319
|
+
if (!action)
|
|
556320
|
+
return null;
|
|
556321
|
+
if (action.kind !== "Sequence" || !action.refs?.length)
|
|
556322
|
+
return action.poses.map((p) => ({ ...p }));
|
|
556323
|
+
const inner = new Set(stack);
|
|
556324
|
+
inner.add(name19);
|
|
556325
|
+
const out = [];
|
|
556326
|
+
for (const ref of action.refs) {
|
|
556327
|
+
const child = byName.get(ref.name);
|
|
556328
|
+
if (!child)
|
|
556329
|
+
return null;
|
|
556330
|
+
const childPoses = flatten(ref.name, inner, depth + 1);
|
|
556331
|
+
if (!childPoses || childPoses.length === 0)
|
|
556332
|
+
continue;
|
|
556333
|
+
if (ref.duration !== void 0 && ref.duration > 0) {
|
|
556334
|
+
const total = childPoses.reduce((n, p) => n + p.duration, 0);
|
|
556335
|
+
if (total > 0) {
|
|
556336
|
+
const scale = ref.duration / total;
|
|
556337
|
+
for (const p of childPoses)
|
|
556338
|
+
p.duration = Math.max(1, Math.round(p.duration * scale));
|
|
556339
|
+
}
|
|
556340
|
+
}
|
|
556341
|
+
out.push(...childPoses);
|
|
556342
|
+
}
|
|
556343
|
+
return out.length ? out : null;
|
|
556344
|
+
}
|
|
556345
|
+
const result = actions.map((a) => {
|
|
556346
|
+
if (a.kind !== "Sequence")
|
|
556347
|
+
return a;
|
|
556348
|
+
const flattened = flatten(a.name, /* @__PURE__ */ new Set(), 0);
|
|
556349
|
+
if (!flattened) {
|
|
556350
|
+
unexpanded.push(a.name);
|
|
556351
|
+
return a;
|
|
556352
|
+
}
|
|
556353
|
+
const firstLeafKind = findFirstLeafKind(a, byName, /* @__PURE__ */ new Set(), 0, maxDepth);
|
|
556354
|
+
return {
|
|
556355
|
+
...a,
|
|
556356
|
+
kind: firstLeafKind === "Move" ? "Move" : "Stay",
|
|
556357
|
+
poses: flattened,
|
|
556358
|
+
refs: void 0
|
|
556359
|
+
};
|
|
556360
|
+
});
|
|
556361
|
+
return { actions: result, unexpanded };
|
|
556362
|
+
}
|
|
556363
|
+
function findFirstLeafKind(action, byName, stack, depth, maxDepth) {
|
|
556364
|
+
const firstRef = action.refs?.[0];
|
|
556365
|
+
if (!firstRef)
|
|
556366
|
+
return "Stay";
|
|
556367
|
+
if (stack.has(firstRef.name) || depth > maxDepth)
|
|
556368
|
+
return "Stay";
|
|
556369
|
+
const child = byName.get(firstRef.name);
|
|
556370
|
+
if (!child)
|
|
556371
|
+
return "Stay";
|
|
556372
|
+
if (child.kind === "Sequence") {
|
|
556373
|
+
return findFirstLeafKind(child, byName, new Set(stack).add(action.name), depth + 1, maxDepth);
|
|
556374
|
+
}
|
|
556375
|
+
return child.kind;
|
|
556376
|
+
}
|
|
556290
556377
|
function parseShimejiBehaviors(xml) {
|
|
556291
556378
|
const text3 = stripBom(xml);
|
|
556292
556379
|
const behaviors = [];
|
|
@@ -556552,7 +556639,8 @@ async function confirmShimejiImport(_db2, dataDir, importId, characterRefs) {
|
|
|
556552
556639
|
const actionsPath = ["Actions.xml", "actions.xml"].map((f) => (0, import_node_path14.join)(stagingDir, confDir, "conf", f)).find((p) => (0, import_node_fs12.existsSync)(p));
|
|
556553
556640
|
const xml = await (0, import_promises6.readFile)(actionsPath, "utf8");
|
|
556554
556641
|
const format = detectFormat(actionsPath, xml);
|
|
556555
|
-
const
|
|
556642
|
+
const parsed = expandShimejiSequences(parseShimejiActions(xml));
|
|
556643
|
+
const actions = parsed.actions.map((a) => ({ ...a, slot: archiveOf(a.name).slot, archive: archiveOf(a.name).archive }));
|
|
556556
556644
|
const behPath = ["Behavior.xml", "behaviors.xml"].map((f) => (0, import_node_path14.join)(stagingDir, confDir, "conf", f)).find((p) => (0, import_node_fs12.existsSync)(p));
|
|
556557
556645
|
const behaviors = behPath ? parseShimejiBehaviors(await (0, import_promises6.readFile)(behPath, "utf8")) : [];
|
|
556558
556646
|
const packId = `shimeji-${(0, import_node_crypto15.randomUUID)().slice(0, 8)}`;
|
|
@@ -556587,7 +556675,21 @@ async function confirmShimejiImport(_db2, dataDir, importId, characterRefs) {
|
|
|
556587
556675
|
async function getShimejiPack(_db2, dataDir, packId) {
|
|
556588
556676
|
if (!/^shimeji-[0-9a-f]{8}$/.test(packId))
|
|
556589
556677
|
return null;
|
|
556590
|
-
|
|
556678
|
+
const manifest = await readJson((0, import_node_path14.join)(packsRoot(dataDir), packId, "manifest.json"));
|
|
556679
|
+
if (!manifest)
|
|
556680
|
+
return null;
|
|
556681
|
+
if (manifest.actions.some((a) => !a.archiveOf || !a.archive)) {
|
|
556682
|
+
manifest.actions = manifest.actions.map((a) => ({
|
|
556683
|
+
...a,
|
|
556684
|
+
...a.archiveOf ? {} : archiveOf(a.name).entry ? { archiveOf: archiveOf(a.name).entry.en } : {},
|
|
556685
|
+
...a.archive ? {} : { archive: archiveOf(a.name).archive }
|
|
556686
|
+
}));
|
|
556687
|
+
try {
|
|
556688
|
+
await (0, import_promises6.writeFile)((0, import_node_path14.join)(packsRoot(dataDir), packId, "manifest.json"), JSON.stringify(manifest));
|
|
556689
|
+
} catch {
|
|
556690
|
+
}
|
|
556691
|
+
}
|
|
556692
|
+
return manifest;
|
|
556591
556693
|
}
|
|
556592
556694
|
async function listShimejiPacks(db, dataDir) {
|
|
556593
556695
|
const root = packsRoot(dataDir);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r,j as h}from"./index-
|
|
1
|
+
import{r,j as h}from"./index-C9fscARj.js";import{c as T,u as L,r as D}from"./main-jV_OilRs.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as s,j as t}from"./index-
|
|
1
|
+
import{r as s,j as t}from"./index-C9fscARj.js";import{c as y,u as v,b as k,L as j,F as N,M as w,G as C,T as M,d as _}from"./main-jV_OilRs.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{u as G,r as v,j as c,o as ie,p as ce,c as le}from"./index-
|
|
1
|
+
import{u as G,r as v,j as c,o as ie,p as ce,c as le}from"./index-C9fscARj.js";function A(e,t){return{code:e,message:t}}function me(e,t={}){const n=t.minSide??256,u=t.maxSide??4096,i=t.marginRatio??.02,o=t.alphaThreshold??128,r=t.minBlobAreaRatio??.05,h=t.maxSamples??1e6,l=[],g=(s,p=0,w=0)=>({ok:!1,issues:s.map(([T,C])=>A(T,C)),opaqueRatio:p,blobCount:w}),{width:a,height:m,rgba:b}=e;if(!Number.isFinite(a)||!Number.isFinite(m)||a<=0||m<=0||!Number.isInteger(a)||!Number.isInteger(m))return g([["BAD_DIMENSIONS",`非法尺寸 ${a}x${m}`]]);if(Math.min(a,m)<n&&l.push(A("TOO_SMALL",`短边 ${Math.min(a,m)}px < ${n}px`)),Math.max(a,m)>u&&l.push(A("TOO_LARGE",`长边 ${Math.max(a,m)}px > ${u}px(导入时自动缩放)`)),!b||b.length!==a*m*4)return l.push(A("BAD_PIXEL_BUFFER",`rgba 长度 ${(b==null?void 0:b.length)??0} ≠ ${a}*${m}*4`)),{ok:!1,issues:l,opaqueRatio:0,blobCount:0};const x=Math.max(1,Math.ceil(Math.sqrt(a*m/h))),d=Math.floor((a-1)/x)+1,f=Math.floor((m-1)/x)+1,y=new Uint8Array(d*f);let L=0,M=0,N=255,S=d,R=-1,k=f,Y=-1;for(let s=0;s<f;s++){const p=s*x;for(let w=0;w<d;w++){const T=w*x,C=b[(p*a+T)*4+3];M++,C<N&&(N=C),C>=o&&(y[s*d+w]=1,L++,w<S&&(S=w),w>R&&(R=w),s<k&&(k=s),s>Y&&(Y=s))}}const J=M>0?L/M:0;if(L===0)return l.push(A("ALL_TRANSPARENT","整图无不透明像素(空图/坏抠图)")),{ok:l.length===0,issues:l,opaqueRatio:J,blobCount:0};if(N===255&&l.push(A("NO_ALPHA","未检出任何透明像素——需要透明底 PNG(可一键抠图/豆包抠图)")),S===0||k===0||R===d-1||Y===f-1){const s=a*i,p=m*i;(S*x<s||k*x<p||R*x+x-1>a-1-s||Y*x+x-1>m-1-p)&&l.push(A("EDGE_TOUCH","主体贴边——四周留 5~10% 空白,给跳跃/挤压变换留余地"))}const _=new Uint8Array(d*f),B=[],$=[];for(let s=0;s<y.length;s++){if(!y[s]||_[s])continue;let p=0,w=d,T=-1,C=f,O=-1;for($.push(s),_[s]=1;$.length>0;){const E=$.pop();p++;const P=E%d,X=(E-P)/d;P<w&&(w=P),P>T&&(T=P),X<C&&(C=X),X>O&&(O=X);const D=I=>{y[I]&&!_[I]&&(_[I]=1,$.push(I))};P>0&&D(E-1),P<d-1&&D(E+1),X>0&&D(E-d),X<f-1&&D(E+d)}B.push({area:p,minX:w,maxX:T,minY:C,maxY:O})}const se=B.length>0?Math.max(...B.map(s=>s.area)):0,Z=B.filter(s=>s.area>=se*r),re=(s,p)=>s.minX>=p.minX&&s.maxX<=p.maxX&&s.minY>=p.minY&&s.maxY<=p.maxY,oe=(s,p)=>{const w=Math.min(s.maxX,p.maxX)-Math.max(s.minX,p.minX),T=Math.min(s.maxY,p.maxY)-Math.max(s.minY,p.minY);if(w<=0||T<=0)return 0;const C=w*T,O=(s.maxX-s.minX+1)*(s.maxY-s.minY+1),E=(p.maxX-p.minX+1)*(p.maxY-p.minY+1);return C/Math.min(O,E)},F=Z.filter(s=>!Z.some(p=>p!==s&&p.area>=s.area&&(re(s,p)||oe(s,p)>=.4))).length;return F>=2&&l.push(A("MULTI_BLOB",`检出 ${F} 个独立主体——请裁剪到单角色`)),{ok:l.length===0,issues:l,opaqueRatio:J,blobCount:F}}function de(e){return typeof e.poseHoldMs=="number"?e.poseHoldMs:1200}const ue=""+new URL("alien-idle-D2VKjYsl.png",import.meta.url).href,fe=""+new URL("alien-happy-Ci3JfpxD.png",import.meta.url).href,he=""+new URL("alien-thinking-gWKA2xDz.png",import.meta.url).href,pe=""+new URL("alien-keyL-C_tZriGQ.png",import.meta.url).href,xe=""+new URL("alien-keyL-C_tZriGQ.png",import.meta.url).href,z=""+new URL("alien-head-CS10QxqG.png",import.meta.url).href,be=""+new URL("alien-body-DXq5WJRs.png",import.meta.url).href,j={head:{x:.3,y:.05,w:.4,h:.2726},body:{x:.3,y:.3226,w:.4,h:.2841}},ee={x:.5,y:.3226},ye={formatVersion:1,id:"lab-alien",name:"Lab 小宇航员(Kenney)",author:"Kenney",license:"CC0-1.0 (Kenney Platformer Characters)",tier:"bongo",states:{idle:"idle.png",keyL:"keyl.png",keyR:"keyr.png",happy:"happy.png",thinking:"thinking.png"},poseHoldMs:1100};async function ge(){const e={idle:ue,keyL:pe,keyR:xe,happy:fe,thinking:he},t=await we(z),n=document.createElement("canvas");n.width=512,n.height=512;const u=n.getContext("2d");u.drawImage(t,0,0);const i=u.getImageData(0,0,512,512),o=me({width:512,height:512,rgba:i.data});return{srcs:e,parts:{head:z,body:be},selfSpec:o}}function we(e){return new Promise((t,n)=>{const u=new Image;u.onload=()=>t(u),u.onerror=()=>n(new Error(`image load failed: ${e}`)),u.src=e})}function te(e,t,n){const{x:u,y:i,w:o,h:r,t:h,deform:l}=n,g=n.cols??6,a=n.rows??8,m=n.src??{x:0,y:0,w:t.width,h:t.height},b=[];for(let d=0;d<=a;d++)for(let f=0;f<=g;f++){const y=f/g,L=d/a,M=l(y,L,h);b.push([u+y*o+M.dx,i+L*r+M.dy])}const x=(d,f)=>b[f*(g+1)+d];for(let d=0;d<a;d++)for(let f=0;f<g;f++){const y=x(f,d),L=x(f+1,d),M=x(f,d+1),N=x(f+1,d+1),S=m.x+f/g*m.w,R=m.y+d/a*m.h,k=m.x+(f+1)/g*m.w,Y=m.y+(d+1)/a*m.h;ne(e,t,[S,R],[k,R],[S,Y],y,L,M),ne(e,t,[k,R],[k,Y],[S,Y],L,N,M)}}function ne(e,t,n,u,i,o,r,h){const l=(u[0]-n[0])*(i[1]-n[1])-(i[0]-n[0])*(u[1]-n[1]);if(Math.abs(l)<1e-8)return;const g=((r[0]-o[0])*(i[1]-n[1])-(h[0]-o[0])*(u[1]-n[1]))/l,a=((h[0]-o[0])*(u[0]-n[0])-(r[0]-o[0])*(i[0]-n[0]))/l,m=((r[1]-o[1])*(i[1]-n[1])-(h[1]-o[1])*(u[1]-n[1]))/l,b=((h[1]-o[1])*(u[0]-n[0])-(r[1]-o[1])*(i[0]-n[0]))/l,x=o[0]-g*n[0]-a*n[1],d=o[1]-m*n[0]-b*n[1];e.save(),e.beginPath(),e.moveTo(o[0],o[1]),e.lineTo(r[0],r[1]),e.lineTo(h[0],h[1]),e.closePath(),e.clip(),e.transform(g,m,a,b,x,d),e.drawImage(t,0,0),e.restore()}function K(e){const t=v.useRef(e);t.current=e,v.useEffect(()=>{const n={side:1},u=r=>{if(r.repeat)return;const h=ce(r.code,n.side);n.side=n.side===1?-1:1,t.current(h===1?"keyR":"keyL")},i=r=>t.current(r.detail?"thinking":"idle"),o=ie(r=>t.current(r.kind==="wrong"?"wrong":"happy"));return window.addEventListener("keydown",u,{passive:!0}),window.addEventListener("companion-streaming",i),()=>{window.removeEventListener("keydown",u),window.removeEventListener("companion-streaming",i),o()}},[])}function H(){const[e,t]=v.useState("idle"),n=v.useRef(null),u=v.useCallback((i,o=0)=>{n.current!==null&&window.clearTimeout(n.current),n.current=null,t(i);const r=o>0?o:0;r>0&&i!=="idle"&&(n.current=window.setTimeout(()=>t("idle"),r))},[]);return v.useEffect(()=>()=>{n.current!==null&&window.clearTimeout(n.current)},[]),{pose:e,setTimed:u}}function Q(e,t){t||!e||typeof e.animate!="function"||e.animate([{transform:"translateY(0)"},{transform:"translateY(-12%)"},{transform:"translateY(2%)"},{transform:"translateY(0)"}],{duration:380,easing:"cubic-bezier(0.2, 1.4, 0.4, 1)"})}function V(e,t){t||!e||typeof e.animate!="function"||e.animate([{transform:"rotate(0deg)"},{transform:"rotate(-6deg)"},{transform:"rotate(6deg)"},{transform:"rotate(0deg)"}],{duration:280})}function q(e,t){t||!e||typeof e.animate!="function"||e.animate([{transform:"translateY(0px) scale(1, 1)"},{transform:"translateY(2.5px) scale(1.045, 0.93)",offset:.42},{transform:"translateY(0px) scale(1, 1)"}],{duration:185,easing:"ease-out",composite:"add"})}const W=`
|
|
2
2
|
.cbot { position: relative; display: inline-block; line-height: 0;
|
|
3
3
|
animation: cbot-breath 3.4s ease-in-out infinite; transform-origin: 50% 62%; }
|
|
4
4
|
.cbot img, .cbot canvas { display: block; user-select: none; }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as u,j as t}from"./index-
|
|
1
|
+
import{r as u,j as t}from"./index-C9fscARj.js";import{c as C,U as I,u as y,a as L,d as S,X as N,B as M,T as E,C as R}from"./main-jV_OilRs.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as o,h as U,j as e,c as ie}from"./index-
|
|
1
|
+
import{r as o,h as U,j as e,c as ie}from"./index-C9fscARj.js";import{c as te,u as ce,a as j,m as de,T as z,p as Y,A as q,L as V,q as oe,X as xe}from"./main-jV_OilRs.js";import{R as G}from"./rotate-ccw-DZE_kYZu.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./mermaid.core-
|
|
2
|
-
import{r as o,j as t}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./mermaid.core-37_hzSNp.js","./main-jV_OilRs.js","./index-C9fscARj.js","./index-EInfxfl9.css","./main-D9IB7N5p.css","./transform-Bd_a5eGM.js","./mermaid-layout-elk.core-B1-o2tyd.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as o,j as t}from"./index-C9fscARj.js";import{c as K,_ as B,u as O,b as H,y as U,X,z as L}from"./main-jV_OilRs.js";import{M as Y,C as G}from"./CanvasStage-By84li0a.js";/**
|
|
3
3
|
* @license lucide-react v0.468.0 - ISC
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under the ISC license.
|
|
6
6
|
* See the LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/const J=K("Workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]]);function Q(e){const i=e.split(`
|
|
8
8
|
`);for(let r=0;r<i.length;r++){const a=i[r]??"",s=a.trim();if(!(!s||s.startsWith("%%")))return/^flowchart-elk\b/i.test(s)?e:/^(flowchart|graph)\b/i.test(s)?(i[r]=a.replace(/^(\s*)(flowchart|graph)\b/i,"$1flowchart-elk"),i.join(`
|
|
9
|
-
`)):e}return e}let p=null;function ee(){return p||(p=B(()=>import("./mermaid.core-DnOBsKcF.js").then(e=>e.bI),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url).then(async e=>{const i=e.default,{default:r}=await B(async()=>{const{default:a}=await import("./mermaid-layout-elk.core-BtEZ1o-e.js").then(s=>s.m);return{default:a}},__vite__mapDeps([6,1,2,3,4]),import.meta.url);return i.registerLayoutLoaders(r),i.initialize({startOnLoad:!1,theme:"base",securityLevel:"strict",themeVariables:te(),flowchart:{useMaxWidth:!0,htmlLabels:!0,curve:"basis",nodeSpacing:42,rankSpacing:54,padding:10},sequence:{useMaxWidth:!0,boxMargin:8,noteMargin:8,messageMargin:32}}),i})),p}function te(){const e=(r,a)=>{if(typeof document>"u")return a;const s=getComputedStyle(document.documentElement).getPropertyValue(r).trim();return s?`rgb(${s})`:a};return{background:"transparent",fontFamily:typeof document<"u"&&getComputedStyle(document.body).fontFamily||"ui-sans-serif, system-ui, sans-serif",fontSize:"14px",primaryColor:e("--surface-3-rgb","rgb(42 43 46)"),primaryBorderColor:e("--border-rgb","rgb(37 38 41)"),primaryTextColor:e("--ink-strong-rgb","rgb(250 250 250)"),secondaryColor:e("--surface-2-rgb","rgb(32 33 36)"),secondaryBorderColor:e("--border-faint-rgb","rgb(26 26 29)"),secondaryTextColor:e("--ink-rgb","rgb(245 245 250)"),tertiaryColor:e("--surface-1-rgb","rgb(24 25 27)"),tertiaryBorderColor:e("--border-faint-rgb","rgb(26 26 29)"),tertiaryTextColor:e("--ink-rgb","rgb(245 245 250)"),lineColor:e("--ink-faint-rgb","rgb(117 117 126)"),textColor:e("--ink-rgb","rgb(245 245 250)"),edgeLabelBackground:e("--surface-0-rgb","rgb(12 13 15)"),clusterBkg:e("--surface-1-rgb","rgb(24 25 27)"),clusterBorder:e("--border-faint-rgb","rgb(26 26 29)"),nodeBorder:e("--border-rgb","rgb(37 38 41)"),mainBkg:e("--surface-3-rgb","rgb(42 43 46)"),nodeTextColor:e("--ink-rgb","rgb(245 245 250)"),arrowheadColor:e("--ink-faint-rgb","rgb(117 117 126)"),actorBkg:e("--surface-3-rgb","rgb(42 43 46)"),actorBorder:e("--border-rgb","rgb(37 38 41)"),actorTextColor:e("--ink-strong-rgb","rgb(250 250 250)"),activationBkgColor:e("--surface-3-rgb","rgb(42 43 46)"),activationBorderColor:e("--border-rgb","rgb(37 38 41)"),signalColor:e("--ink-rgb","rgb(245 245 250)"),signalTextColor:e("--ink-rgb","rgb(245 245 250)"),labelBoxBkgColor:e("--surface-2-rgb","rgb(32 33 36)"),labelBoxBorderColor:e("--border-rgb","rgb(37 38 41)"),labelTextColor:e("--ink-rgb","rgb(245 245 250)"),loopTextColor:e("--ink-strong-rgb","rgb(250 250 250)"),noteBkgColor:"rgb(255 200 0 / 0.12)",noteBorderColor:"rgb(255 200 0 / 0.4)",noteTextColor:e("--ink-rgb","rgb(245 245 250)")}}typeof window<"u"&&window.addEventListener("theme-changed",()=>{p=null});async function re(e,i){const r=await ee(),a=Q(i);try{await r.parse(a)}catch(c){throw new Error(`mermaid 语法校验失败: ${c instanceof Error?c.message:String(c)}`)}const{svg:s}=await r.render(e,a);if(s.includes('aria-roledescription="error"')||s.includes('class="error-text"')||s.includes("Syntax error"))throw new Error("mermaid 渲染失败(语法错误或节点 label 含未转义特殊字符)");return s}function ae({title:e,onClose:i,children:r}){const a=O(),s=o.useRef(null);return H(s,!0),o.useEffect(()=>{const c=d=>{d.key==="Escape"&&i()};return window.addEventListener("keydown",c),()=>window.removeEventListener("keydown",c)},[i]),U.createPortal(t.jsxs("div",{className:"fixed inset-0 z-50 flex flex-col bg-black/80","data-testid":"diagram-viewer-modal","data-noswipe":"",role:"dialog","aria-modal":"true","aria-label":e,children:[t.jsxs("div",{className:"flex items-center justify-between gap-3 px-4 py-2.5 shrink-0",onClick:c=>c.stopPropagation(),children:[t.jsx("h3",{className:"text-body font-bold text-white truncate",children:e}),t.jsxs("div",{className:"flex items-center gap-3 shrink-0",children:[t.jsx("span",{className:"text-caption text-white/50 hidden sm:inline",children:a("artifact.viewer.hint")}),t.jsx("button",{onClick:i,"data-testid":"diagram-viewer-close","aria-label":a("action.close"),"data-tooltip":a("action.close"),className:"text-white/70 hover:text-white w-9 h-9 flex items-center justify-center rounded-lg hover:bg-white/10 transition-colors",children:t.jsx(X,{className:"w-5 h-5"})})]})]}),t.jsx("div",{className:"flex-1 min-h-0 px-2 pb-2",onClick:i,children:t.jsx("div",{ref:s,className:"h-full w-full",onClick:c=>c.stopPropagation(),children:r})})]}),document.body)}function z(e){let i=5381;for(let r=0;r<e.length;r++)i=(i<<5)+i+e.charCodeAt(r)>>>0;return i.toString(36)}const v=.3,k=3,x=.2;function I({data:e,variant:i="card"}){const r=e,a=O(),s={flowchart:a("artifact.diagram.flowchart"),sequence:a("artifact.diagram.sequence"),state:a("artifact.diagram.state")},c=o.useId().replace(/[:]/g,"_"),[d,w]=o.useState({status:"loading"}),[u,A]=o.useState(()=>{try{return sessionStorage.getItem(`mmdfix:${r.mermaid.length}:${z(r.mermaid)}`)??r.mermaid}catch{return r.mermaid}}),[j,P]=o.useState(!1),[C,N]=o.useState(!1),[R,$]=o.useState(0);o.useEffect(()=>{const n=()=>$(l=>l+1);return window.addEventListener("theme-changed",n),()=>window.removeEventListener("theme-changed",n)},[]);const[m,M]=o.useState(null),[g,b]=o.useState(1),[F,y]=o.useState(!1);o.useEffect(()=>{let n=!1;return w({status:"loading"}),M(null),re(`mmd-${c}`,u).then(l=>{if(!n&&(w({status:"rendered",svg:l}),u!==r.mermaid))try{sessionStorage.setItem(`mmdfix:${r.mermaid.length}:${z(r.mermaid)}`,u)}catch{}}).catch(l=>{n||(console.error("[MermaidArtifact] render failed:",l),w({status:"error",message:l instanceof Error?l.message:String(l)}))}),()=>{n=!0}},[u,c,R,r.mermaid]),o.useEffect(()=>{var n;d.status!=="error"||j||(P(!0),u===r.mermaid&&(n=window.api)!=null&&n.repairMermaidDiagram&&(N(!0),window.api.repairMermaidDiagram({mermaid:u,errorMessage:d.message,diagramType:r.diagramType}).then(l=>{l.ok&&l.mermaid.trim()&&A(l.mermaid)}).catch(()=>{}).finally(()=>N(!1))))},[d,j,u,r.mermaid,r.diagramType]);const D=`https://mermaid.live/edit#${encodeURIComponent(u)}`,V=o.useCallback(()=>b(n=>Math.min(k,+(n+x).toFixed(2))),[]),W=o.useCallback(()=>b(n=>Math.max(v,+(n-x).toFixed(2))),[]),q=o.useCallback(()=>b(1),[]),Z=o.useCallback(n=>{if(!n.ctrlKey&&!n.metaKey)return;n.preventDefault();const l=n.deltaY>0?-x:x;b(h=>Math.min(k,Math.max(v,+(h+l).toFixed(2))))},[]),E=d.status==="rendered"?t.jsx("div",{ref:n=>{var l;if(n&&!m){const h=n.querySelector("svg");if(h){const S=h.getBoundingClientRect(),f=(l=h.viewBox)==null?void 0:l.baseVal,T=f&&f.width?f.width:S.width,_=f&&f.height?f.height:S.height;T>0&&_>0&&M({width:T,height:_})}}},style:{width:(m==null?void 0:m.width)??void 0,height:(m==null?void 0:m.height)??void 0},dangerouslySetInnerHTML:{__html:d.svg},"data-testid":"mermaid-svg"}):null;return i==="canvas"?t.jsx("div",{"data-testid":"mermaid-canvas-content",children:E}):t.jsxs("div",{className:"surface-card p-4","data-testid":"artifact-mermaid",children:[t.jsxs("div",{className:"flex items-center justify-between mb-3 gap-2",children:[t.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[t.jsx(J,{className:"w-4 h-4 text-ink-muted shrink-0"}),t.jsx("h3",{className:"text-body font-bold text-ink truncate",children:r.title}),t.jsx("span",{className:"text-caption font-bold px-1.5 py-0.5 rounded bg-accent/15 text-accent shrink-0",children:s[r.diagramType]??r.diagramType})]}),t.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[d.status==="rendered"&&t.jsxs("div",{className:"flex items-center gap-1","data-testid":"mermaid-zoom-controls",children:[t.jsx("button",{onClick:W,disabled:g<=v,className:"w-6 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-1 hover:bg-surface-3 disabled:opacity-30 text-label font-bold flex items-center justify-center",title:a("artifact.zoomOut"),"data-testid":"mermaid-zoom-out",children:"−"}),t.jsxs("button",{onClick:q,className:"px-1.5 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-1 hover:bg-surface-3 text-caption font-bold tabular-nums",title:a("artifact.zoomReset"),"data-testid":"mermaid-zoom-reset",children:[Math.round(g*100),"%"]}),t.jsx("button",{onClick:V,disabled:g>=k,className:"w-6 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-1 hover:bg-surface-3 disabled:opacity-30 text-label font-bold flex items-center justify-center",title:a("artifact.zoomIn"),"data-testid":"mermaid-zoom-in",children:"+"})]}),d.status==="rendered"&&t.jsx("button",{onClick:()=>y(!0),"data-testid":"mermaid-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:t.jsx(Y,{className:"w-3.5 h-3.5"})})]}),t.jsx("button",{onClick:()=>window.open(D,"_blank"),className:"text-caption text-accent hover:underline font-bold shrink-0","data-testid":"mermaid-open-live",title:a("artifact.mermaid.openLive"),children:"mermaid.live ↗"})]}),t.jsxs("div",{onClick:()=>{d.status==="rendered"&&y(!0)},onWheel:Z,className:"bg-surface-0/40 rounded-lg p-3 overflow-auto min-h-[120px] max-h-[500px] select-none",style:{touchAction:"pan-x pan-y"},"data-testid":"mermaid-render-area","data-noswipe":"",children:[d.status==="loading"&&t.jsxs("div",{className:"flex items-center gap-2 text-body text-ink-muted my-8 justify-center","data-testid":"mermaid-loading",children:[t.jsx("span",{className:"typing-dot w-1.5 h-1.5 bg-accent rounded-full inline-block"}),t.jsx("span",{children:a("artifact.mermaid.rendering")})]}),d.status==="rendered"&&t.jsx("div",{style:{width:m?m.width*g:"auto",height:m?m.height*g:"auto",margin:"0 auto"},children:t.jsx("div",{style:{transform:`scale(${g})`,transformOrigin:"top left"},children:E})}),d.status==="error"&&C&&t.jsxs("div",{className:"flex items-center gap-2 text-body text-ink-muted my-8 justify-center","data-testid":"mermaid-repairing",children:[t.jsx("span",{className:"typing-dot w-1.5 h-1.5 bg-accent rounded-full inline-block"}),t.jsx("span",{children:a("artifact.mermaid.repairing")})]}),d.status==="error"&&!C&&t.jsxs("div",{className:"w-full text-center my-4","data-testid":"mermaid-fallback",children:[t.jsxs("div",{className:"text-body text-warning mb-2 flex items-center justify-center gap-1.5",children:[t.jsx(L,{className:"w-4 h-4 shrink-0"}),t.jsx("span",{children:a("artifact.mermaid.renderFailed")})]}),t.jsx("pre",{className:"text-label bg-surface-1/60 rounded p-2 overflow-x-auto text-ink-muted font-mono text-left",children:u}),t.jsx("div",{className:"text-caption text-ink-muted mt-2",children:a("artifact.mermaid.errorPrefix",{msg:d.message})})]})]}),d.status==="rendered"&&t.jsx("div",{className:"mt-1.5 text-caption text-ink-muted flex items-center gap-2",children:t.jsx("span",{children:a("artifact.mermaid.hint")})}),F&&d.status==="rendered"&&t.jsx(ae,{title:r.title,onClose:()=>y(!1),children:t.jsx("div",{className:"h-full w-full rounded-xl overflow-hidden bg-surface-0/60",children:t.jsx(G,{testid:"mermaid-modal-stage",children:t.jsx(I,{data:e,variant:"canvas"})})})}),r.warnings&&r.warnings.length>0&&t.jsxs("div",{className:"mt-2 text-caption text-warning flex items-start gap-1","data-testid":"artifact-warnings",children:[t.jsx(L,{className:"w-3.5 h-3.5 shrink-0 mt-0.5"}),t.jsx("span",{children:r.warnings.join("; ")})]})]})}const oe=Object.freeze(Object.defineProperty({__proto__:null,MermaidArtifact:I},Symbol.toStringTag,{value:"Module"}));export{ae as D,I as M,oe as a};
|
|
9
|
+
`)):e}return e}let p=null;function ee(){return p||(p=B(()=>import("./mermaid.core-37_hzSNp.js").then(e=>e.bI),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url).then(async e=>{const i=e.default,{default:r}=await B(async()=>{const{default:a}=await import("./mermaid-layout-elk.core-B1-o2tyd.js").then(s=>s.m);return{default:a}},__vite__mapDeps([6,1,2,3,4]),import.meta.url);return i.registerLayoutLoaders(r),i.initialize({startOnLoad:!1,theme:"base",securityLevel:"strict",themeVariables:te(),flowchart:{useMaxWidth:!0,htmlLabels:!0,curve:"basis",nodeSpacing:42,rankSpacing:54,padding:10},sequence:{useMaxWidth:!0,boxMargin:8,noteMargin:8,messageMargin:32}}),i})),p}function te(){const e=(r,a)=>{if(typeof document>"u")return a;const s=getComputedStyle(document.documentElement).getPropertyValue(r).trim();return s?`rgb(${s})`:a};return{background:"transparent",fontFamily:typeof document<"u"&&getComputedStyle(document.body).fontFamily||"ui-sans-serif, system-ui, sans-serif",fontSize:"14px",primaryColor:e("--surface-3-rgb","rgb(42 43 46)"),primaryBorderColor:e("--border-rgb","rgb(37 38 41)"),primaryTextColor:e("--ink-strong-rgb","rgb(250 250 250)"),secondaryColor:e("--surface-2-rgb","rgb(32 33 36)"),secondaryBorderColor:e("--border-faint-rgb","rgb(26 26 29)"),secondaryTextColor:e("--ink-rgb","rgb(245 245 250)"),tertiaryColor:e("--surface-1-rgb","rgb(24 25 27)"),tertiaryBorderColor:e("--border-faint-rgb","rgb(26 26 29)"),tertiaryTextColor:e("--ink-rgb","rgb(245 245 250)"),lineColor:e("--ink-faint-rgb","rgb(117 117 126)"),textColor:e("--ink-rgb","rgb(245 245 250)"),edgeLabelBackground:e("--surface-0-rgb","rgb(12 13 15)"),clusterBkg:e("--surface-1-rgb","rgb(24 25 27)"),clusterBorder:e("--border-faint-rgb","rgb(26 26 29)"),nodeBorder:e("--border-rgb","rgb(37 38 41)"),mainBkg:e("--surface-3-rgb","rgb(42 43 46)"),nodeTextColor:e("--ink-rgb","rgb(245 245 250)"),arrowheadColor:e("--ink-faint-rgb","rgb(117 117 126)"),actorBkg:e("--surface-3-rgb","rgb(42 43 46)"),actorBorder:e("--border-rgb","rgb(37 38 41)"),actorTextColor:e("--ink-strong-rgb","rgb(250 250 250)"),activationBkgColor:e("--surface-3-rgb","rgb(42 43 46)"),activationBorderColor:e("--border-rgb","rgb(37 38 41)"),signalColor:e("--ink-rgb","rgb(245 245 250)"),signalTextColor:e("--ink-rgb","rgb(245 245 250)"),labelBoxBkgColor:e("--surface-2-rgb","rgb(32 33 36)"),labelBoxBorderColor:e("--border-rgb","rgb(37 38 41)"),labelTextColor:e("--ink-rgb","rgb(245 245 250)"),loopTextColor:e("--ink-strong-rgb","rgb(250 250 250)"),noteBkgColor:"rgb(255 200 0 / 0.12)",noteBorderColor:"rgb(255 200 0 / 0.4)",noteTextColor:e("--ink-rgb","rgb(245 245 250)")}}typeof window<"u"&&window.addEventListener("theme-changed",()=>{p=null});async function re(e,i){const r=await ee(),a=Q(i);try{await r.parse(a)}catch(c){throw new Error(`mermaid 语法校验失败: ${c instanceof Error?c.message:String(c)}`)}const{svg:s}=await r.render(e,a);if(s.includes('aria-roledescription="error"')||s.includes('class="error-text"')||s.includes("Syntax error"))throw new Error("mermaid 渲染失败(语法错误或节点 label 含未转义特殊字符)");return s}function ae({title:e,onClose:i,children:r}){const a=O(),s=o.useRef(null);return H(s,!0),o.useEffect(()=>{const c=d=>{d.key==="Escape"&&i()};return window.addEventListener("keydown",c),()=>window.removeEventListener("keydown",c)},[i]),U.createPortal(t.jsxs("div",{className:"fixed inset-0 z-50 flex flex-col bg-black/80","data-testid":"diagram-viewer-modal","data-noswipe":"",role:"dialog","aria-modal":"true","aria-label":e,children:[t.jsxs("div",{className:"flex items-center justify-between gap-3 px-4 py-2.5 shrink-0",onClick:c=>c.stopPropagation(),children:[t.jsx("h3",{className:"text-body font-bold text-white truncate",children:e}),t.jsxs("div",{className:"flex items-center gap-3 shrink-0",children:[t.jsx("span",{className:"text-caption text-white/50 hidden sm:inline",children:a("artifact.viewer.hint")}),t.jsx("button",{onClick:i,"data-testid":"diagram-viewer-close","aria-label":a("action.close"),"data-tooltip":a("action.close"),className:"text-white/70 hover:text-white w-9 h-9 flex items-center justify-center rounded-lg hover:bg-white/10 transition-colors",children:t.jsx(X,{className:"w-5 h-5"})})]})]}),t.jsx("div",{className:"flex-1 min-h-0 px-2 pb-2",onClick:i,children:t.jsx("div",{ref:s,className:"h-full w-full",onClick:c=>c.stopPropagation(),children:r})})]}),document.body)}function z(e){let i=5381;for(let r=0;r<e.length;r++)i=(i<<5)+i+e.charCodeAt(r)>>>0;return i.toString(36)}const v=.3,k=3,x=.2;function I({data:e,variant:i="card"}){const r=e,a=O(),s={flowchart:a("artifact.diagram.flowchart"),sequence:a("artifact.diagram.sequence"),state:a("artifact.diagram.state")},c=o.useId().replace(/[:]/g,"_"),[d,w]=o.useState({status:"loading"}),[u,A]=o.useState(()=>{try{return sessionStorage.getItem(`mmdfix:${r.mermaid.length}:${z(r.mermaid)}`)??r.mermaid}catch{return r.mermaid}}),[j,P]=o.useState(!1),[C,N]=o.useState(!1),[R,$]=o.useState(0);o.useEffect(()=>{const n=()=>$(l=>l+1);return window.addEventListener("theme-changed",n),()=>window.removeEventListener("theme-changed",n)},[]);const[m,M]=o.useState(null),[g,b]=o.useState(1),[F,y]=o.useState(!1);o.useEffect(()=>{let n=!1;return w({status:"loading"}),M(null),re(`mmd-${c}`,u).then(l=>{if(!n&&(w({status:"rendered",svg:l}),u!==r.mermaid))try{sessionStorage.setItem(`mmdfix:${r.mermaid.length}:${z(r.mermaid)}`,u)}catch{}}).catch(l=>{n||(console.error("[MermaidArtifact] render failed:",l),w({status:"error",message:l instanceof Error?l.message:String(l)}))}),()=>{n=!0}},[u,c,R,r.mermaid]),o.useEffect(()=>{var n;d.status!=="error"||j||(P(!0),u===r.mermaid&&(n=window.api)!=null&&n.repairMermaidDiagram&&(N(!0),window.api.repairMermaidDiagram({mermaid:u,errorMessage:d.message,diagramType:r.diagramType}).then(l=>{l.ok&&l.mermaid.trim()&&A(l.mermaid)}).catch(()=>{}).finally(()=>N(!1))))},[d,j,u,r.mermaid,r.diagramType]);const D=`https://mermaid.live/edit#${encodeURIComponent(u)}`,V=o.useCallback(()=>b(n=>Math.min(k,+(n+x).toFixed(2))),[]),W=o.useCallback(()=>b(n=>Math.max(v,+(n-x).toFixed(2))),[]),q=o.useCallback(()=>b(1),[]),Z=o.useCallback(n=>{if(!n.ctrlKey&&!n.metaKey)return;n.preventDefault();const l=n.deltaY>0?-x:x;b(h=>Math.min(k,Math.max(v,+(h+l).toFixed(2))))},[]),E=d.status==="rendered"?t.jsx("div",{ref:n=>{var l;if(n&&!m){const h=n.querySelector("svg");if(h){const S=h.getBoundingClientRect(),f=(l=h.viewBox)==null?void 0:l.baseVal,T=f&&f.width?f.width:S.width,_=f&&f.height?f.height:S.height;T>0&&_>0&&M({width:T,height:_})}}},style:{width:(m==null?void 0:m.width)??void 0,height:(m==null?void 0:m.height)??void 0},dangerouslySetInnerHTML:{__html:d.svg},"data-testid":"mermaid-svg"}):null;return i==="canvas"?t.jsx("div",{"data-testid":"mermaid-canvas-content",children:E}):t.jsxs("div",{className:"surface-card p-4","data-testid":"artifact-mermaid",children:[t.jsxs("div",{className:"flex items-center justify-between mb-3 gap-2",children:[t.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[t.jsx(J,{className:"w-4 h-4 text-ink-muted shrink-0"}),t.jsx("h3",{className:"text-body font-bold text-ink truncate",children:r.title}),t.jsx("span",{className:"text-caption font-bold px-1.5 py-0.5 rounded bg-accent/15 text-accent shrink-0",children:s[r.diagramType]??r.diagramType})]}),t.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[d.status==="rendered"&&t.jsxs("div",{className:"flex items-center gap-1","data-testid":"mermaid-zoom-controls",children:[t.jsx("button",{onClick:W,disabled:g<=v,className:"w-6 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-1 hover:bg-surface-3 disabled:opacity-30 text-label font-bold flex items-center justify-center",title:a("artifact.zoomOut"),"data-testid":"mermaid-zoom-out",children:"−"}),t.jsxs("button",{onClick:q,className:"px-1.5 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-1 hover:bg-surface-3 text-caption font-bold tabular-nums",title:a("artifact.zoomReset"),"data-testid":"mermaid-zoom-reset",children:[Math.round(g*100),"%"]}),t.jsx("button",{onClick:V,disabled:g>=k,className:"w-6 h-6 rounded border border-[var(--border)] text-ink-muted hover:bg-surface-1 hover:bg-surface-3 disabled:opacity-30 text-label font-bold flex items-center justify-center",title:a("artifact.zoomIn"),"data-testid":"mermaid-zoom-in",children:"+"})]}),d.status==="rendered"&&t.jsx("button",{onClick:()=>y(!0),"data-testid":"mermaid-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:t.jsx(Y,{className:"w-3.5 h-3.5"})})]}),t.jsx("button",{onClick:()=>window.open(D,"_blank"),className:"text-caption text-accent hover:underline font-bold shrink-0","data-testid":"mermaid-open-live",title:a("artifact.mermaid.openLive"),children:"mermaid.live ↗"})]}),t.jsxs("div",{onClick:()=>{d.status==="rendered"&&y(!0)},onWheel:Z,className:"bg-surface-0/40 rounded-lg p-3 overflow-auto min-h-[120px] max-h-[500px] select-none",style:{touchAction:"pan-x pan-y"},"data-testid":"mermaid-render-area","data-noswipe":"",children:[d.status==="loading"&&t.jsxs("div",{className:"flex items-center gap-2 text-body text-ink-muted my-8 justify-center","data-testid":"mermaid-loading",children:[t.jsx("span",{className:"typing-dot w-1.5 h-1.5 bg-accent rounded-full inline-block"}),t.jsx("span",{children:a("artifact.mermaid.rendering")})]}),d.status==="rendered"&&t.jsx("div",{style:{width:m?m.width*g:"auto",height:m?m.height*g:"auto",margin:"0 auto"},children:t.jsx("div",{style:{transform:`scale(${g})`,transformOrigin:"top left"},children:E})}),d.status==="error"&&C&&t.jsxs("div",{className:"flex items-center gap-2 text-body text-ink-muted my-8 justify-center","data-testid":"mermaid-repairing",children:[t.jsx("span",{className:"typing-dot w-1.5 h-1.5 bg-accent rounded-full inline-block"}),t.jsx("span",{children:a("artifact.mermaid.repairing")})]}),d.status==="error"&&!C&&t.jsxs("div",{className:"w-full text-center my-4","data-testid":"mermaid-fallback",children:[t.jsxs("div",{className:"text-body text-warning mb-2 flex items-center justify-center gap-1.5",children:[t.jsx(L,{className:"w-4 h-4 shrink-0"}),t.jsx("span",{children:a("artifact.mermaid.renderFailed")})]}),t.jsx("pre",{className:"text-label bg-surface-1/60 rounded p-2 overflow-x-auto text-ink-muted font-mono text-left",children:u}),t.jsx("div",{className:"text-caption text-ink-muted mt-2",children:a("artifact.mermaid.errorPrefix",{msg:d.message})})]})]}),d.status==="rendered"&&t.jsx("div",{className:"mt-1.5 text-caption text-ink-muted flex items-center gap-2",children:t.jsx("span",{children:a("artifact.mermaid.hint")})}),F&&d.status==="rendered"&&t.jsx(ae,{title:r.title,onClose:()=>y(!1),children:t.jsx("div",{className:"h-full w-full rounded-xl overflow-hidden bg-surface-0/60",children:t.jsx(G,{testid:"mermaid-modal-stage",children:t.jsx(I,{data:e,variant:"canvas"})})})}),r.warnings&&r.warnings.length>0&&t.jsxs("div",{className:"mt-2 text-caption text-warning flex items-start gap-1","data-testid":"artifact-warnings",children:[t.jsx(L,{className:"w-3.5 h-3.5 shrink-0 mt-0.5"}),t.jsx("span",{children:r.warnings.join("; ")})]})]})}const oe=Object.freeze(Object.defineProperty({__proto__:null,MermaidArtifact:I},Symbol.toStringTag,{value:"Module"}));export{ae as D,I as M,oe as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as n,j as e}from"./index-
|
|
1
|
+
import{r as n,j as e}from"./index-C9fscARj.js";import{c as L,u as I,g as T,b as G,h as F,a as c,i as H,X as q,j as K,P as O,L as V,A as X,k as J,l as Q,m as U,n as W,s as Y,o as Z}from"./main-jV_OilRs.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as a,j as e,c as S}from"./index-
|
|
1
|
+
import{r as a,j as e,c as S}from"./index-C9fscARj.js";import{u as j,a as N,S as M}from"./main-jV_OilRs.js";function A({tree:c,onReviewNode:d,progressMap:o}){const s=j(),[l,f]=a.useState([]),[b,h]=a.useState(!0),[n,x]=a.useState(null);a.useEffect(()=>{N.getAllSrsItems().then(t=>f(t)).catch(()=>f([])).finally(()=>h(!1))},[]);const p=a.useMemo(()=>new Map(c.map(t=>[t.id,t])),[c]),g=a.useMemo(()=>new Set(l.filter(t=>t.overdue).map(t=>t.nodeId)),[l]),i=a.useMemo(()=>{const t=c.filter(u=>{var y;const m=(y=o[u.id])==null?void 0:y.status;return u.type==="lesson"&&(m==="in_progress"||m==="mastered")}),r=new Map;for(const u of t){const m=u.parentId??"(root)";r.has(m)||r.set(m,[]),r.get(m).push(u)}return r},[c,o]),w=a.useMemo(()=>Array.from(i.values()).flat().filter(t=>g.has(t.id)).length,[i,g]),v=a.useMemo(()=>Array.from(i.values()).flat(),[i]);if(a.useEffect(()=>{if(i.size>0&&(!n||!i.has(n))){const t=i.keys().next().value;t&&x(t)}},[i,n]),b)return e.jsxs("div",{className:"text-center py-12 text-body text-ink-muted flex items-center justify-center gap-2",children:[e.jsx("span",{className:"typing-dot w-1.5 h-1.5 bg-brand rounded-full inline-block"}),s("review.loading")]});if(v.length===0)return e.jsxs("div",{className:"text-center py-16","data-testid":"review-empty",children:[e.jsx("div",{className:"text-4xl mb-3 opacity-30",children:"📖"}),e.jsx("div",{className:"text-body text-ink-muted",children:s("review.empty.title")}),e.jsx("div",{className:"text-label text-ink-faint mt-1",children:s("review.empty.desc")})]});const k=t=>{var r;return((r=p.get(t))==null?void 0:r.title)??t};return e.jsxs("div",{className:"p-5 max-w-2xl mx-auto","data-testid":"review-panel",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h2",{className:"text-title font-extrabold text-ink-strong",children:s("review.title")}),w>0&&e.jsxs("span",{className:"text-label font-bold text-review","data-testid":"review-due-count",children:[w," ",s("review.due.count")]})]}),e.jsxs("button",{onClick:()=>{const t=v[Math.floor(Math.random()*v.length)];t&&d(t.id)},"data-testid":"review-interleave",className:"btn-3d-neutral w-full py-2.5 text-body mb-5 flex items-center justify-center gap-1.5",children:[e.jsx(M,{className:"w-4 h-4"}),s("review.interleave")]}),e.jsx("div",{className:"text-label font-bold text-ink-muted mb-2",children:s("review.selectSection")}),e.jsx("div",{className:"flex flex-wrap gap-1.5 mb-4",children:Array.from(i.entries()).map(([t,r])=>e.jsxs("button",{onClick:()=>x(t),className:`px-2.5 py-1 rounded-full text-label font-bold transition-colors ${n===t?"bg-brand/15 text-brand ring-1 ring-brand/30":"bg-surface-3 text-ink-muted hover:text-ink-strong"}`,children:[k(t),e.jsxs("span",{className:"ml-1 opacity-60",children:["(",r.length,")"]})]},t))}),n&&i.has(n)&&e.jsx("div",{className:"space-y-1.5","data-testid":"review-lesson-list",children:i.get(n).map(t=>{const r=g.has(t.id);return e.jsxs("div",{className:`flex items-center justify-between gap-2 p-2.5 rounded-lg transition-colors ${r?"bg-review/8 ring-1 ring-review/20":"bg-surface-3 hover:bg-surface-3/80"}`,children:[e.jsxs("div",{className:"flex items-center gap-1.5 truncate flex-1",children:[r&&e.jsx("span",{className:"shrink-0 w-1.5 h-1.5 rounded-full bg-review"}),e.jsx("span",{className:"text-body text-ink-strong truncate",children:t.title})]}),e.jsx("button",{onClick:()=>d(t.id),"data-testid":`review-lesson-${t.id.slice(0,8)}`,className:"shrink-0 px-3 py-1 rounded-lg bg-brand/15 text-brand text-label font-bold hover:bg-brand/25 transition-colors",children:s("review.reviewLesson")})]},t.id)})})]})}function E({nodeId:c,onRated:d}){const o=a.useRef(null),s=j(),[l,f]=a.useState(!1),[b,h]=a.useState(!1),n=async x=>{if(!(l||b)){f(!0);try{await N.recordReview(c,x),h(!0),d==null||d(),S(x>=4?"correct":"wrong",{origin:x>=4&&o.current?(()=>{const p=o.current.getBoundingClientRect();return{x:p.right-48,y:p.top+24}})():void 0})}catch{}finally{f(!1)}}};return b?e.jsx("div",{className:"text-center text-body text-brand py-2","data-testid":"self-rated",children:s("review.selfrated")}):e.jsxs("div",{ref:o,className:"border-t border-[var(--border-faint)] pt-3 mt-3","data-testid":"self-rating",children:[e.jsx("div",{className:"text-caption font-bold text-ink-muted uppercase tracking-wider mb-2 text-center",children:s("review.selfrate.title")}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("button",{onClick:()=>n(1),disabled:l,"data-testid":"rate-again",className:"py-2 rounded-lg border border-warning/40 text-warning hover:bg-warning/10 transition-colors disabled:opacity-40 flex flex-col items-center gap-0.5",children:[e.jsx("span",{className:"text-body font-bold",children:s("review.selfrate.again")}),e.jsx("span",{className:"text-caption opacity-70",children:s("review.selfrate.again.hint")})]}),e.jsxs("button",{onClick:()=>n(4),disabled:l,"data-testid":"rate-remembered",className:"py-2 rounded-lg border border-accent/40 text-accent hover:bg-accent/10 transition-colors disabled:opacity-40 flex flex-col items-center gap-0.5",children:[e.jsx("span",{className:"text-body font-bold",children:s("review.selfrate.remembered")}),e.jsx("span",{className:"text-caption opacity-70",children:s("review.selfrate.remembered.hint")})]}),e.jsxs("button",{onClick:()=>n(5),disabled:l,"data-testid":"rate-mastered",className:"py-2 rounded-lg border border-brand/40 text-brand hover:bg-brand/10 transition-colors disabled:opacity-40 flex flex-col items-center gap-0.5",children:[e.jsx("span",{className:"text-body font-bold",children:s("review.selfrate.mastered")}),e.jsx("span",{className:"text-caption opacity-70",children:s("review.selfrate.mastered.hint")})]})]})]})}export{A as ReviewPanel,E as SelfRatingCard};
|