excaliagent 0.1.0 → 0.3.0

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.
Files changed (363) hide show
  1. package/README.md +40 -9
  2. package/dist/server/args.js +6 -2
  3. package/dist/server/cli.js +35 -8
  4. package/dist/server/desktop/desktop.js +106 -64
  5. package/dist/server/desktop/exec.js +27 -0
  6. package/dist/server/desktop/process-table.js +167 -0
  7. package/dist/server/http.js +27 -5
  8. package/dist/server/instance.js +52 -0
  9. package/dist/server/panes/herdr-clients.js +28 -49
  10. package/dist/server/panes/herdr.js +5 -3
  11. package/dist/server/scene-store.js +58 -7
  12. package/dist/server/token.js +23 -0
  13. package/dist/web/assets/{abnfDiagram-VCTEODGH-lVjPevGa.js → abnfDiagram-VCTEODGH-DV-5IMmB.js} +1 -1
  14. package/dist/web/assets/{ar-SA-G6X2FPQ2-CD5aVmDx.js → ar-SA-G6X2FPQ2-n3XdOipE.js} +1 -1
  15. package/dist/web/assets/{architecture-7GRP2DOG-9pDjotLm.js → architecture-7GRP2DOG-C497sWO2.js} +1 -1
  16. package/dist/web/assets/{architectureDiagram-5GKGNRK7-D0Yl-_Yc.js → architectureDiagram-5GKGNRK7-DuCJZflG.js} +1 -1
  17. package/dist/web/assets/{az-AZ-76LH7QW2-D4vT9Alz.js → az-AZ-76LH7QW2-DSYFdGPZ.js} +1 -1
  18. package/dist/web/assets/{bg-BG-XCXSNQG7-MMTI5wg3.js → bg-BG-XCXSNQG7-aq-bPVBx.js} +1 -1
  19. package/dist/web/assets/{blockDiagram-I7D4REHJ-DhrilPMV.js → blockDiagram-I7D4REHJ-D6rbmy9X.js} +1 -1
  20. package/dist/web/assets/{bn-BD-2XOGV67Q-CCHqTpZW.js → bn-BD-2XOGV67Q-BsnX_gLN.js} +1 -1
  21. package/dist/web/assets/{c4Diagram-7LVT6UL2-DGXbRPw_.js → c4Diagram-7LVT6UL2-bkZh0r6f.js} +1 -1
  22. package/dist/web/assets/{ca-ES-6MX7JW3Y-ChGGIAut.js → ca-ES-6MX7JW3Y-CvtjFAUU.js} +1 -1
  23. package/dist/web/assets/channel-B_LXUtkZ.js +1 -0
  24. package/dist/web/assets/{chunk-4HAMMTFA-Cw9s83q8.js → chunk-4HAMMTFA-DZJ_s-sA.js} +1 -1
  25. package/dist/web/assets/{chunk-75Z2AOVW-BC0CaRUB.js → chunk-75Z2AOVW-DU74RPBJ.js} +1 -1
  26. package/dist/web/assets/{chunk-DU6HZSFF-W9nFVr4b.js → chunk-DU6HZSFF-CChYnq-U.js} +1 -1
  27. package/dist/web/assets/{chunk-EIO257PC-DG_y2xQ1.js → chunk-EIO257PC-DIGaCD3q.js} +1 -1
  28. package/dist/web/assets/{chunk-F27PBJKO-yfVK-Hr6.js → chunk-F27PBJKO-C65b5F8o.js} +1 -1
  29. package/dist/web/assets/{chunk-GMAD6QVW-C2Qn052r.js → chunk-GMAD6QVW-CJy4srfe.js} +1 -1
  30. package/dist/web/assets/{chunk-GVQU2GXP-IFaX5U4g.js → chunk-GVQU2GXP-CedQyfJw.js} +1 -1
  31. package/dist/web/assets/{chunk-IMKFNOWR-M1ZEBqas.js → chunk-IMKFNOWR-DPwApfTy.js} +1 -1
  32. package/dist/web/assets/{chunk-L3NEJ4N5-oLQiZ5i-.js → chunk-L3NEJ4N5-DXku7BIn.js} +1 -1
  33. package/dist/web/assets/{chunk-OSK3NFVY-D-OfNZzS.js → chunk-OSK3NFVY-BstcDrHK.js} +1 -1
  34. package/dist/web/assets/{chunk-P2QGCYS3-DJerQdnp.js → chunk-P2QGCYS3-BHerElni.js} +1 -1
  35. package/dist/web/assets/{chunk-POPQ4Y6H-BC0OyYJc.js → chunk-POPQ4Y6H-ZS2hGTJJ.js} +1 -1
  36. package/dist/web/assets/{chunk-PWAF6VOD-CjU6T4Vk.js → chunk-PWAF6VOD-BUUBZvSR.js} +1 -1
  37. package/dist/web/assets/{chunk-SHT3W25Y-DBMa5yhK.js → chunk-SHT3W25Y-CMdySuQW.js} +1 -1
  38. package/dist/web/assets/{chunk-SVP7TREG-Bbvoxr5d.js → chunk-SVP7TREG-E_6g4L6l.js} +1 -1
  39. package/dist/web/assets/{chunk-TICWLB2K-DIPq7Qti.js → chunk-TICWLB2K-CBTJSW3m.js} +1 -1
  40. package/dist/web/assets/classDiagram-ZZMXUADV-zYihe46b.js +1 -0
  41. package/dist/web/assets/classDiagram-v2-VYDZK3BY-zYihe46b.js +1 -0
  42. package/dist/web/assets/{cs-CZ-2BRQDIVT-Bax3wFiz.js → cs-CZ-2BRQDIVT-DLt9XJMu.js} +1 -1
  43. package/dist/web/assets/{cynefin-OW5HDTMX-y_XDTnaT.js → cynefin-OW5HDTMX-BYqJDvxe.js} +1 -1
  44. package/dist/web/assets/{cynefinDiagram-5FMLGOSQ-BeJtQvjE.js → cynefinDiagram-5FMLGOSQ-iwuMBkRk.js} +1 -1
  45. package/dist/web/assets/{da-DK-5WZEPLOC-i66Qepbp.js → da-DK-5WZEPLOC-BnzwheRI.js} +1 -1
  46. package/dist/web/assets/{dagre-GXQ25YYZ-CzBP3X6H.js → dagre-GXQ25YYZ-DGskQLMq.js} +1 -1
  47. package/dist/web/assets/{de-DE-XR44H4JA-yjhmbrBK.js → de-DE-XR44H4JA-B05-7snG.js} +1 -1
  48. package/dist/web/assets/{diagram-S7CK7UJ4-CL5OmME1.js → diagram-S7CK7UJ4-Sclpr_lb.js} +1 -1
  49. package/dist/web/assets/{diagram-UQ7AKVKN-6_lscQb4.js → diagram-UQ7AKVKN-CkRKjDjq.js} +1 -1
  50. package/dist/web/assets/{diagram-VSXAHHWV-C3E4-nJG.js → diagram-VSXAHHWV-DKAzSk6r.js} +1 -1
  51. package/dist/web/assets/{diagram-VX7I27RA-51lQ_NN2.js → diagram-VX7I27RA-Bjdeg2uG.js} +1 -1
  52. package/dist/web/assets/{diagram-Z3DM3KII-D86k1y9Z.js → diagram-Z3DM3KII-4jN9UD5P.js} +1 -1
  53. package/dist/web/assets/{dist-BPnbDAwD.js → dist-BQE0NGB-.js} +4 -4
  54. package/dist/web/assets/{ebnfDiagram-PWID7BFC-DDjKtPWY.js → ebnfDiagram-PWID7BFC-BSFSSJ77.js} +1 -1
  55. package/dist/web/assets/{el-GR-BZB4AONW-Deizd0yM.js → el-GR-BZB4AONW-ShhNmsmN.js} +1 -1
  56. package/dist/web/assets/{en-B4ZKOASM-Dvqqxrua.js → en-B4ZKOASM-BNw5UiKn.js} +1 -1
  57. package/dist/web/assets/{erDiagram-RLTQ6QDP-Dju3XIzd.js → erDiagram-RLTQ6QDP-CXr09bBy.js} +1 -1
  58. package/dist/web/assets/{es-ES-U4NZUMDT-Bz7tNFv9.js → es-ES-U4NZUMDT-2jCdm2lH.js} +1 -1
  59. package/dist/web/assets/{eu-ES-A7QVB2H4-B3BHiHTa.js → eu-ES-A7QVB2H4-BhBUGvkL.js} +1 -1
  60. package/dist/web/assets/{eventmodeling-NTZA5JFV-MeBWwPID.js → eventmodeling-NTZA5JFV-DLX5id4n.js} +1 -1
  61. package/dist/web/assets/{fa-IR-HGAKTJCU-B9t2EOWw.js → fa-IR-HGAKTJCU-B-Z0NFoQ.js} +1 -1
  62. package/dist/web/assets/{fi-FI-Z5N7JZ37-BRW-fC7d.js → fi-FI-Z5N7JZ37-C3a93Lzr.js} +1 -1
  63. package/dist/web/assets/flowDiagram-HODETNUW-CnV5VPNb.js +1 -0
  64. package/dist/web/assets/{fr-FR-RHASNOE6-C1x7RIuS.js → fr-FR-RHASNOE6-BfJc7jwO.js} +1 -1
  65. package/dist/web/assets/{ganttDiagram-EL5Y4UJY-CUQyfHZV.js → ganttDiagram-EL5Y4UJY-V2sHQ0x1.js} +1 -1
  66. package/dist/web/assets/{gitGraph-4MIJSDKK-77imLp1D.js → gitGraph-4MIJSDKK-BGpxF8pu.js} +1 -1
  67. package/dist/web/assets/{gitGraphDiagram-WWUBYQGX-CC4ZOu_u.js → gitGraphDiagram-WWUBYQGX-asoaR4Hx.js} +1 -1
  68. package/dist/web/assets/{gl-ES-HMX3MZ6V-DSChLEXM.js → gl-ES-HMX3MZ6V-C8eeUPra.js} +1 -1
  69. package/dist/web/assets/{he-IL-6SHJWFNN-DqrJHras.js → he-IL-6SHJWFNN-DB0HanYn.js} +1 -1
  70. package/dist/web/assets/{hi-IN-IWLTKZ5I-scDn95Bz.js → hi-IN-IWLTKZ5I-B3Gf328f.js} +1 -1
  71. package/dist/web/assets/{hu-HU-A5ZG7DT2-2BB7ywaE.js → hu-HU-A5ZG7DT2-7jNfqM7f.js} +1 -1
  72. package/dist/web/assets/{id-ID-SAP4L64H-BCD-rITt.js → id-ID-SAP4L64H-DZd1jLNQ.js} +1 -1
  73. package/dist/web/assets/{image-GAAHSSAO-BHEttEFL.js → image-GAAHSSAO-DKJMzS7d.js} +1 -1
  74. package/dist/web/assets/{index-C6RFmwp_.js → index-BLscnX3-.js} +13 -13
  75. package/dist/web/assets/{info-A6RAGUB7-Ee6NHVyn.js → info-A6RAGUB7-Dw0JaEzD.js} +1 -1
  76. package/dist/web/assets/{infoDiagram-27XIBGKW-bwB50WOT.js → infoDiagram-27XIBGKW-DhivBaFe.js} +1 -1
  77. package/dist/web/assets/{ishikawaDiagram-5VMMS53U-6CilUSFW.js → ishikawaDiagram-5VMMS53U-DHIyFGlH.js} +1 -1
  78. package/dist/web/assets/{it-IT-JPQ66NNP-D4MSuNp_.js → it-IT-JPQ66NNP-BF7oahO7.js} +1 -1
  79. package/dist/web/assets/{ja-JP-DBVTYXUO-BkR3NP86.js → ja-JP-DBVTYXUO-CtGU47sH.js} +1 -1
  80. package/dist/web/assets/{journeyDiagram-3NMN7TZE-C-woTmG9.js → journeyDiagram-3NMN7TZE-wwS9CODt.js} +1 -1
  81. package/dist/web/assets/{kaa-6HZHGXH3-C_EQTf78.js → kaa-6HZHGXH3-CyohUVIM.js} +1 -1
  82. package/dist/web/assets/{kab-KAB-ZGHBKWFO-P-qeHBkl.js → kab-KAB-ZGHBKWFO-2acNr90z.js} +1 -1
  83. package/dist/web/assets/{kanban-definition-UXKFOSKX-CL-EUtyf.js → kanban-definition-UXKFOSKX-vqJ11RID.js} +1 -1
  84. package/dist/web/assets/{kk-KZ-P5N5QNE5-DwZmyItd.js → kk-KZ-P5N5QNE5-C56zTJ0v.js} +1 -1
  85. package/dist/web/assets/{km-KH-HSX4SM5Z-3SN2ksDz.js → km-KH-HSX4SM5Z-Bg7FoxwJ.js} +1 -1
  86. package/dist/web/assets/{ko-KR-MTYHY66A--YzrPq0D.js → ko-KR-MTYHY66A-wlZa8Fb7.js} +1 -1
  87. package/dist/web/assets/{ku-TR-6OUDTVRD-BV1o1ulU.js → ku-TR-6OUDTVRD-DpMT6JcJ.js} +1 -1
  88. package/dist/web/assets/{line-DGLpHp6u.js → line-Cy2R8zKE.js} +1 -1
  89. package/dist/web/assets/{lt-LT-XHIRWOB4-BuU5cssW.js → lt-LT-XHIRWOB4-0nDOQqUM.js} +1 -1
  90. package/dist/web/assets/{lv-LV-5QDEKY6T-Z9bSAiFr.js → lv-LV-5QDEKY6T-DGNAIt-v.js} +1 -1
  91. package/dist/web/assets/{mermaid-parser.core-DA_7CZUN.js → mermaid-parser.core-C-IWeUrh.js} +3 -3
  92. package/dist/web/assets/{mindmap-definition-YA3MSWOX-B58mvQws.js → mindmap-definition-YA3MSWOX-DDX8XN8u.js} +1 -1
  93. package/dist/web/assets/{mr-IN-CRQNXWMA-Cz6h_4fN.js → mr-IN-CRQNXWMA-CHXpujpK.js} +1 -1
  94. package/dist/web/assets/{my-MM-5M5IBNSE-n2l8bHxH.js → my-MM-5M5IBNSE-Bg0H7WJb.js} +1 -1
  95. package/dist/web/assets/{nb-NO-T6EIAALU-r9C_Vo0N.js → nb-NO-T6EIAALU-BE_hPlhF.js} +1 -1
  96. package/dist/web/assets/{nl-NL-IS3SIHDZ-z43DJLFx.js → nl-NL-IS3SIHDZ-fdiiEQqB.js} +1 -1
  97. package/dist/web/assets/{nn-NO-6E72VCQL-Dc6CXJ79.js → nn-NO-6E72VCQL-C7j1gMVo.js} +1 -1
  98. package/dist/web/assets/{oc-FR-POXYY2M6-BgJXbWuu.js → oc-FR-POXYY2M6-Q5CdkT-D.js} +1 -1
  99. package/dist/web/assets/{pa-IN-N4M65BXN-CNGXNDOU.js → pa-IN-N4M65BXN-DJyQmbX0.js} +1 -1
  100. package/dist/web/assets/{packet-AYTQ26CC-DBS9PBUE.js → packet-AYTQ26CC-D4ouOVez.js} +1 -1
  101. package/dist/web/assets/{pegDiagram-XKGWAZYB-DA7TGmky.js → pegDiagram-XKGWAZYB-DAWOkGLy.js} +1 -1
  102. package/dist/web/assets/percentages-BXMCSKIN-B3ZxlSu3.js +1 -0
  103. package/dist/web/assets/{pie-WAS4IAKB-Cx2pnjZr.js → pie-WAS4IAKB-MCWueKc-.js} +1 -1
  104. package/dist/web/assets/{pieDiagram-E7YTZNPT-q7SgBOc3.js → pieDiagram-E7YTZNPT-BLlQT9t_.js} +1 -1
  105. package/dist/web/assets/{pl-PL-T2D74RX3-NeLUNwLZ.js → pl-PL-T2D74RX3-CcWFE9AN.js} +1 -1
  106. package/dist/web/assets/{pt-BR-5N22H2LF-D5X0RFzx.js → pt-BR-5N22H2LF-D6QCOM38.js} +1 -1
  107. package/dist/web/assets/{pt-PT-UZXXM6DQ-_ZsKyBBN.js → pt-PT-UZXXM6DQ-ByJh7ZNa.js} +1 -1
  108. package/dist/web/assets/{quadrantDiagram-AXDQQJYC-CqjGVnZh.js → quadrantDiagram-AXDQQJYC-CIinawCS.js} +1 -1
  109. package/dist/web/assets/{radar-RG4KPBEZ-BWJANoHa.js → radar-RG4KPBEZ-Cm5qT3Hl.js} +1 -1
  110. package/dist/web/assets/{railroad-74A4TZTK-BTAfdSvV.js → railroad-74A4TZTK-DO3FGMCu.js} +1 -1
  111. package/dist/web/assets/{railroad-abnf-HS5TGJTU-NfS3EnaM.js → railroad-abnf-HS5TGJTU-DqC68RR5.js} +1 -1
  112. package/dist/web/assets/{railroad-ebnf-LZEXJU2U-Ce5m2P1B.js → railroad-ebnf-LZEXJU2U-Cby7H3Dj.js} +1 -1
  113. package/dist/web/assets/{railroad-peg-WCYAUIDC-CyXkeDDy.js → railroad-peg-WCYAUIDC-CJpoUW06.js} +1 -1
  114. package/dist/web/assets/{railroadDiagram-O6MQD6OU-C4wOSBs0.js → railroadDiagram-O6MQD6OU-CIJ1E8KE.js} +1 -1
  115. package/dist/web/assets/{requirementDiagram-BXWQKSXE-dC2Q9_dM.js → requirementDiagram-BXWQKSXE-BTDHXcSN.js} +1 -1
  116. package/dist/web/assets/{ro-RO-JPDTUUEW-B0TUgaSO.js → ro-RO-JPDTUUEW-BlhbQCSw.js} +1 -1
  117. package/dist/web/assets/{ru-RU-B4JR7IUQ-FyI4SBb1.js → ru-RU-B4JR7IUQ-Cd8b9tGe.js} +1 -1
  118. package/dist/web/assets/{sankeyDiagram-P5KCCOFB-czlewm_g.js → sankeyDiagram-P5KCCOFB-DFx8uxV2.js} +1 -1
  119. package/dist/web/assets/{sequenceDiagram-WJ2MYXX4-rtSwZGtV.js → sequenceDiagram-WJ2MYXX4-Dr8vTa3e.js} +1 -1
  120. package/dist/web/assets/{si-LK-N5RQ5JYF-q-KyMvoF.js → si-LK-N5RQ5JYF-Y7h5xFBD.js} +1 -1
  121. package/dist/web/assets/{sk-SK-C5VTKIMK-tX-HO0L6.js → sk-SK-C5VTKIMK-DU5G4wEe.js} +1 -1
  122. package/dist/web/assets/{sl-SI-NN7IZMDC-Dy8vWC0s.js → sl-SI-NN7IZMDC-4olCD7lc.js} +1 -1
  123. package/dist/web/assets/{stateDiagram-D77RDMKH-CWDH4s-t.js → stateDiagram-D77RDMKH-CRqebLR8.js} +1 -1
  124. package/dist/web/assets/stateDiagram-v2-MP3YSRHH-DWV16uKx.js +1 -0
  125. package/dist/web/assets/subset-shared.chunk-1t88pPR-.js +1 -0
  126. package/dist/web/assets/{subset-worker.chunk-CBZq9OSE.js → subset-worker.chunk-Bqgy-Y1W.js} +1 -1
  127. package/dist/web/assets/{sv-SE-XGPEYMSR-D1ErsBn-.js → sv-SE-XGPEYMSR-Cp0rVzLX.js} +1 -1
  128. package/dist/web/assets/{swimlanes-42K2YHIH-CM2OkOmc.js → swimlanes-42K2YHIH-BYd8YoU8.js} +1 -1
  129. package/dist/web/assets/swimlanesDiagram-VR7AAH4N-CACbHpLI.js +8 -0
  130. package/dist/web/assets/{ta-IN-2NMHFXQM-PSu4eqYe.js → ta-IN-2NMHFXQM-DPDOL5cy.js} +1 -1
  131. package/dist/web/assets/{th-TH-HPSO5L25-BVu-PlXo.js → th-TH-HPSO5L25-CN82X-G0.js} +1 -1
  132. package/dist/web/assets/{timeline-definition-24CTP7MA-Bo6sYnPJ.js → timeline-definition-24CTP7MA-DeQFCevv.js} +1 -1
  133. package/dist/web/assets/{tr-TR-DEFEU3FU-BtC_O7fA.js → tr-TR-DEFEU3FU-DZkONFun.js} +1 -1
  134. package/dist/web/assets/{treeView-Q6P3EWNA-B3NS1SBg.js → treeView-Q6P3EWNA-C4dlZskR.js} +1 -1
  135. package/dist/web/assets/{treemap-WGGIJYW6-Du_VkW6s.js → treemap-WGGIJYW6-oSQNu9HW.js} +1 -1
  136. package/dist/web/assets/{uk-UA-QMV73CPH-RwWQcIwP.js → uk-UA-QMV73CPH-da8znbfC.js} +1 -1
  137. package/dist/web/assets/{vennDiagram-4TSXK5OY-R1EH0pXq.js → vennDiagram-4TSXK5OY-e4T6zK4z.js} +1 -1
  138. package/dist/web/assets/{vi-VN-M7AON7JQ-CUEI6eHH.js → vi-VN-M7AON7JQ-QWCjquXm.js} +1 -1
  139. package/dist/web/assets/{wardley-WFR3VGLG-9B3cKl8K.js → wardley-WFR3VGLG-BzQw11Sd.js} +1 -1
  140. package/dist/web/assets/{wardleyDiagram-VM6X3IG4-XZ18gIOz.js → wardleyDiagram-VM6X3IG4-DyPpKV2H.js} +1 -1
  141. package/dist/web/assets/{xychartDiagram-S5SC5T6Z-BLzXnvba.js → xychartDiagram-S5SC5T6Z-DKjIes2P.js} +1 -1
  142. package/dist/web/assets/{zh-CN-LNUGB5OW-C3asHvVp.js → zh-CN-LNUGB5OW-BbT-kvRj.js} +1 -1
  143. package/dist/web/assets/{zh-HK-E62DVLB3-BO6FsJfO.js → zh-HK-E62DVLB3-BPw2AWZD.js} +1 -1
  144. package/dist/web/assets/{zh-TW-RAJ6MFWO-DGtaI2hh.js → zh-TW-RAJ6MFWO-BE9F3OdK.js} +1 -1
  145. package/dist/web/index.html +1 -1
  146. package/package.json +3 -2
  147. package/dist/web/assets/channel-fspI7jZI.js +0 -1
  148. package/dist/web/assets/classDiagram-ZZMXUADV-Dr-7S1cu.js +0 -1
  149. package/dist/web/assets/classDiagram-v2-VYDZK3BY-Dr-7S1cu.js +0 -1
  150. package/dist/web/assets/flowDiagram-HODETNUW-kdP64-E7.js +0 -1
  151. package/dist/web/assets/percentages-BXMCSKIN-btxXaPp4.js +0 -1
  152. package/dist/web/assets/stateDiagram-v2-MP3YSRHH-DdSAvpNH.js +0 -1
  153. package/dist/web/assets/subset-shared.chunk-D1bYkpAa.js +0 -1
  154. package/dist/web/assets/swimlanesDiagram-VR7AAH4N-CVzVUDpQ.js +0 -8
  155. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-019d66dcad46dc156b162d267f981c20.woff2 +0 -0
  156. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-04b718e5623574919c8b0dea5f301444.woff2 +0 -0
  157. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-069e77aac84590e2e991d0a0176d34f2.woff2 +0 -0
  158. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-06c77b8c66e51ed6c63ccb502dd8b8af.woff2 +0 -0
  159. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-08e0dc436ad0ad61ba5558db0674d762.woff2 +0 -0
  160. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-093b9ef39a46ceae95a1df18a0a3a326.woff2 +0 -0
  161. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-095c169f3314805276f603a362766abd.woff2 +0 -0
  162. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-09850c4077f3fffe707905872e0e2460.woff2 +0 -0
  163. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-0986d134c05864f5025962eef9f994a0.woff2 +0 -0
  164. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-0b5d723fdc4e249c140f0909e87d03b4.woff2 +0 -0
  165. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-0f626226ba1272e832aea87bafd9720e.woff2 +0 -0
  166. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-0f7fb1e0d5015bb1371343153ecf7ce3.woff2 +0 -0
  167. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-0fa55a080fcd0f9dc2e0b0058b793df8.woff2 +0 -0
  168. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-0facdf1ea213ba40261022f5d5ed4493.woff2 +0 -0
  169. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-10a7ae9a371830a80c3d844acf1c02d7.woff2 +0 -0
  170. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-112c051027b2d766c19a519f6ee1f4f7.woff2 +0 -0
  171. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-11c345711937f0ba4b8f7b6b919c8440.woff2 +0 -0
  172. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-12b52b58eb3df36804b9a654ec9ee194.woff2 +0 -0
  173. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-13ae07ed2e272d26d59bc0691cd7117a.woff2 +0 -0
  174. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-13d2887ec8ee73c43acdabc52a05af7b.woff2 +0 -0
  175. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-145aa02cdd91946e67dc934e1acffe75.woff2 +0 -0
  176. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-15dc6d811c9cd078f9086a740d5a1038.woff2 +0 -0
  177. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-173945821411c09f70c95f98d590e697.woff2 +0 -0
  178. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-1b611157cd46bb184d4fa4dae2d6a2b8.woff2 +0 -0
  179. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-1e6fd68f1f3902ce48ce8c69df385622.woff2 +0 -0
  180. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-1ee544f0f1dac422545c505baa788992.woff2 +0 -0
  181. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-1fdc0c67ed57263a80fd108c1f6ccf24.woff2 +0 -0
  182. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-203b0e569e3b14aac86a003dc3fa523e.woff2 +0 -0
  183. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-20cc1bbf50e7efb442756cb605672c1f.woff2 +0 -0
  184. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-20e7bf72fa05de9adf7dbcc7bf51dde6.woff2 +0 -0
  185. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-21430ee05a1248901da8d0de08744d47.woff2 +0 -0
  186. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-23686f7f29da6e8008c36dd3a80c83d6.woff2 +0 -0
  187. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-23ad2d71b280f00b1363b95b7bea94eb.woff2 +0 -0
  188. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-23f228f3999c01983860012330e4be08.woff2 +0 -0
  189. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-24476a126f129212beb33f66853ea151.woff2 +0 -0
  190. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-24a21c1e4449222e8d1898d69ff3a404.woff2 +0 -0
  191. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-25b7f38e18f035f96cb5e547bd2bd08c.woff2 +0 -0
  192. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-29cec36cd205b211da97acabaa62f055.woff2 +0 -0
  193. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-2a26d20a23b00898ce82f09d2ee47c3f.woff2 +0 -0
  194. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-2adbc89c11e65905393d3dfc468b9d5b.woff2 +0 -0
  195. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-2b7441d46298788ac94e610ffcc709b6.woff2 +0 -0
  196. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-2b77e8ebfb2367ab2662396a60e7d320.woff2 +0 -0
  197. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-2cf96d082d35ea3d8106851223ad0d16.woff2 +0 -0
  198. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-2d43040e86ff03ba677f6f9c04cd0805.woff2 +0 -0
  199. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-2e33e8dc771ef5e1d9127d60a6b73679.woff2 +0 -0
  200. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-33432927cd87d40cfe393c7482bf221f.woff2 +0 -0
  201. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-353f33792a8f60dc69323ddf635a269e.woff2 +0 -0
  202. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-36925dfe329a45086cbb7fc5c20d45ac.woff2 +0 -0
  203. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-3717077e38f98d89eae729b6c14e56dc.woff2 +0 -0
  204. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-3756e81d3e149cf6099163ee79944fec.woff2 +0 -0
  205. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-395c35dd584b56b0789f58a0559beaf1.woff2 +0 -0
  206. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-3c9de2ae0ea4bc91a510942dfa4be8d2.woff2 +0 -0
  207. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-3cc70dbb64df5b21f1326cc24dee2195.woff2 +0 -0
  208. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-3e1f8f654357353bf0e04ba5c34b5f7f.woff2 +0 -0
  209. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-3e63ed8162808a9e425ed80a8bc79114.woff2 +0 -0
  210. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-3eaa538115d76932653c21d8dc28f207.woff2 +0 -0
  211. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-4095eb84ef3874e2600247bee0b04026.woff2 +0 -0
  212. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-41521fade99856108931b4768b1b2648.woff2 +0 -0
  213. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-450da755d5bcb70906e1295e559b9602.woff2 +0 -0
  214. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-452225341522a7942f0f6aab1a5c91a3.woff2 +0 -0
  215. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-4535823663ad81405188a528d8f2b1a2.woff2 +0 -0
  216. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-4806e761d750087c2d734fc64596eaff.woff2 +0 -0
  217. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-4a0fdb40036e87b40aa08dd30584cb85.woff2 +0 -0
  218. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-4a38cc3e9cf104e69ba246d37f8cf135.woff2 +0 -0
  219. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-4aca6a43e59aceee2166b0c7e4e85ef1.woff2 +0 -0
  220. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-4bfaa8ffa64c5ee560aa2daba7c9cbd3.woff2 +0 -0
  221. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-4dc6d5f188d5c96d44815cd1e81aa885.woff2 +0 -0
  222. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-4ddc14ed3eb0c3e46364317dfc0144a3.woff2 +0 -0
  223. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-4ee10ae43505e2e0bc62656ced49c0fa.woff2 +0 -0
  224. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-4f50e5136e136527280bc902c5817561.woff2 +0 -0
  225. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-51502f1206be09c565f1547c406e9558.woff2 +0 -0
  226. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-51a0e808bbc8361236ac521a119758a3.woff2 +0 -0
  227. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-52a84a22fd1369bffeaf21da2d6158dc.woff2 +0 -0
  228. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-5330a2119a716e4e7224ed108b085dac.woff2 +0 -0
  229. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-543fa46ace099a7099dad69123399400.woff2 +0 -0
  230. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-544fc28abe2c5c30e62383fd4dac255f.woff2 +0 -0
  231. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-54acdfc2166ad7fcbd074f75fd4a56ba.woff2 +0 -0
  232. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-5572b3513ba8df57a3d5d7303ee6b11b.woff2 +0 -0
  233. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-56467a5c8840c4d23a60b2f935114848.woff2 +0 -0
  234. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-56a32a7689abd0326e57c10c6c069bb4.woff2 +0 -0
  235. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-57862b464a55b18c7bf234ce22907d73.woff2 +0 -0
  236. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-583d166e56ba0de4b77eabb47ef67839.woff2 +0 -0
  237. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-5882ffa04f32584d26109137e2da4352.woff2 +0 -0
  238. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-58fd02350d0bc52cf1ca3bb32ce9766e.woff2 +0 -0
  239. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-5935a5775af3d5c6307ac667bd9ae74e.woff2 +0 -0
  240. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-59e9ff77b0efaf684bc09274fb6908c9.woff2 +0 -0
  241. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-5a1ce3117cfe90c48e8fb4a9a00f694d.woff2 +0 -0
  242. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-5a45d991244d4c7140217e1e5f5ca4f4.woff2 +0 -0
  243. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-5a7fac4b8b23a6e4e5ba0c9bf1756c91.woff2 +0 -0
  244. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-5b0ed6971aaab9c8ad563230bd5471a7.woff2 +0 -0
  245. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-5d2898fbc097a7e24c6f38d80587621e.woff2 +0 -0
  246. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-603aefd23e350ba7eb124273e3c9bcf1.woff2 +0 -0
  247. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-60a3089806700d379f11827ee9843b6b.woff2 +0 -0
  248. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-60a41c7e1c68f22424e6d22df544bc82.woff2 +0 -0
  249. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-642b26e2e5f5fb780b51b593dbc8c851.woff2 +0 -0
  250. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-66493ba5a8367f2928812f446f47b56a.woff2 +0 -0
  251. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-670ba603758d94268e8606f240a42e12.woff2 +0 -0
  252. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-671a2c20b1eb9e4ef8a192833940e319.woff2 +0 -0
  253. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-684d65f1793cac449dde5d59cb3c47fb.woff2 +0 -0
  254. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-69c09cc5fa3e55c74fc4821f76909cc3.woff2 +0 -0
  255. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-6ae5b42180ad70b971c91e7eefb8eba2.woff2 +0 -0
  256. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-6e092f71c1e634059ada0e52abadce67.woff2 +0 -0
  257. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-6f3256af8454371776bc46670d33cc65.woff2 +0 -0
  258. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-6fe5c5973cc06f74b2387a631ea36b88.woff2 +0 -0
  259. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-70c2eb8d64e71a42a834eb857ea9df51.woff2 +0 -0
  260. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-70e811fd7994e61f408c923de6ddd078.woff2 +0 -0
  261. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-7197d6fda6cba7c3874c53d6381ca239.woff2 +0 -0
  262. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-72252d73220fa3cd856677888cee1635.woff2 +0 -0
  263. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-72536a3d71b694a0d53dd90ddceae41e.woff2 +0 -0
  264. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-726303e0774b4e678bff8c2deb6ca603.woff2 +0 -0
  265. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-733171b4ffcd17ea1fe1c0ba627173bf.woff2 +0 -0
  266. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-739bc1a567439c7cffcd1614644593d2.woff2 +0 -0
  267. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-73e309718fd16cea44b4d54a33581811.woff2 +0 -0
  268. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-7494dc504ae00ee9cd0505f990f88c5d.woff2 +0 -0
  269. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-74e2263a91439c25b91d5132ce9f4d62.woff2 +0 -0
  270. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-761d05e3cd968cf574166867998ef06a.woff2 +0 -0
  271. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-7718fe60986d8b42b1be9c5ace5ccf25.woff2 +0 -0
  272. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-774d4f764a1299da5d28ec2f2ffe0d69.woff2 +0 -0
  273. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-79d494361ae093b69e74ee9dbe65bfd4.woff2 +0 -0
  274. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-79f007c1c6d07557120982951ea67998.woff2 +0 -0
  275. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-7a07ddc0f0c0f5f4a9bad6ee3dda66b5.woff2 +0 -0
  276. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-7ab2bed91166a9dca83a5ebfbe2a7f38.woff2 +0 -0
  277. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-7ccce86603f80a099ddb0cb21d4ae3e3.woff2 +0 -0
  278. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-7e4bde7e9c7f84cd34d8a845e384c746.woff2 +0 -0
  279. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-7e929f262f30c8ee78bf398150b1a7cd.woff2 +0 -0
  280. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-7eb9fffd1aa890d07d0f88cc82e6cfe4.woff2 +0 -0
  281. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-7f855356ab893b0d2b9c1c83b8116f0e.woff2 +0 -0
  282. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-829615148e6357d826b9242eb7fbbd1e.woff2 +0 -0
  283. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-866fa7613df6b3fd272bcfd4530c0bb9.woff2 +0 -0
  284. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-87599f94b6cc129d505b375798d0d751.woff2 +0 -0
  285. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-8c2f33cee3993174f7e87c28e4bf42ee.woff2 +0 -0
  286. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-8d3bcabb847b56243b16afe62adaaf21.woff2 +0 -0
  287. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-8de5b863cb50dfefdd07cb11c774d579.woff2 +0 -0
  288. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-8e9f97f01034820170065b2921b4fb5e.woff2 +0 -0
  289. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-8f476c4c99813d57cbe6eca4727388ad.woff2 +0 -0
  290. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-903bb6865f3452e2fda42e3a25547bc5.woff2 +0 -0
  291. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-91ddb2969bf2d31ba02ad82998d1314c.woff2 +0 -0
  292. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-938d90c10ff8c20386af7f242c05d6b0.woff2 +0 -0
  293. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-93fc8f28a33234bcadf1527cafabd502.woff2 +0 -0
  294. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-95429962233afd82db1c27df1500a28c.woff2 +0 -0
  295. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-9544732d2e62d1a429674f8ee41b5d3a.woff2 +0 -0
  296. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-9592bfc861f07bcb8d75c196b370e548.woff2 +0 -0
  297. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-95bfd249da4902577b4b7d76ebdd0b44.woff2 +0 -0
  298. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-968cffdc8ee679da094e77ebf50f58ef.woff2 +0 -0
  299. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-97f7f48ce90c9429bf32ae51469db74d.woff2 +0 -0
  300. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-982b630266d87db93d2539affb1275c6.woff2 +0 -0
  301. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-98f2ad84457de7f3740d9920b8fa8667.woff2 +0 -0
  302. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-99a16ef6a64934d5781933dbd9c46b2e.woff2 +0 -0
  303. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-9cfb2a77a4e45025105ad29a1748b90d.woff2 +0 -0
  304. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-9d81066dd2b337c938df6e90380a00dc.woff2 +0 -0
  305. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-9eb5a99df4e76ac3363453ac9ca288b1.woff2 +0 -0
  306. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-a004ddfcb26e67bd6e678c8ed19e25ce.woff2 +0 -0
  307. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-a0ca5df4258213d7fc9fce80f65ce760.woff2 +0 -0
  308. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-a1f916d6039285c4ffb900cd654e418f.woff2 +0 -0
  309. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-a203b91dad570bf05a58c3c3ddb529bf.woff2 +0 -0
  310. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-a365e82ed54697a52f27adcea1315fe8.woff2 +0 -0
  311. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-a4c34be6d42152e64b0df90bc4607f64.woff2 +0 -0
  312. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-a7accba310e821da5505f71c03b76bdb.woff2 +0 -0
  313. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-aa0d470430e6391eca720c7cfa44446f.woff2 +0 -0
  314. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-aa5c9ca6cf4fba00433b7aa3fa10671a.woff2 +0 -0
  315. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-ac9ceb44437becc3e9c4dbfebab7fc2d.woff2 +0 -0
  316. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-b1220a3c61f85cc0408deedb4c5f57a2.woff2 +0 -0
  317. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-b358f7a51ece39a3247942b1feabdb29.woff2 +0 -0
  318. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-b57aaedfd8ebdf3931f25119dc6a5eb2.woff2 +0 -0
  319. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-b5c1596551c256e0e9cf02028595b092.woff2 +0 -0
  320. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-b6d128682ee29e471486354d486a1b90.woff2 +0 -0
  321. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-b6fd38ca30869792244804b04bc058da.woff2 +0 -0
  322. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-b7d203b051eff504ff59ddca7576b6a9.woff2 +0 -0
  323. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-b96d9226ce77ec94ceca043d712182e6.woff2 +0 -0
  324. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-ba3de316d63c7e339987b16f41a0b879.woff2 +0 -0
  325. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-bafff7a14c27403dcc6cf1432e8ea836.woff2 +0 -0
  326. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-bd77e3c7f9e0b072d96af37f73d1aa32.woff2 +0 -0
  327. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-be549ab72f0719d606a5c01e2c0219b6.woff2 +0 -0
  328. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-c16ed9740b85badf16e86ea782a3062f.woff2 +0 -0
  329. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-c1f94158256bb1f3bf665b053d895af9.woff2 +0 -0
  330. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-c40533fdf4cc57177b12803598af7e59.woff2 +0 -0
  331. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-c4a687ac4f0c2766eefc9f77ed99cddf.woff2 +0 -0
  332. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-c69f61a4ab18d0488c8d1fc12e7028e8.woff2 +0 -0
  333. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-c8b71798409ccc126ee264a00aadcf21.woff2 +0 -0
  334. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-c99eda15fc26a2941579560f76c3a5cf.woff2 +0 -0
  335. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-cb17fc3db95f6d139afc9d31a8e93293.woff2 +0 -0
  336. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-cbaaefaaf326668277aa24dfa93c4d28.woff2 +0 -0
  337. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-cd145ce4a0ea18469358df53c207bc1b.woff2 +0 -0
  338. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-cdbce89e82cc1ab53a2decbf5819278f.woff2 +0 -0
  339. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-ce4884f96f11589608b76b726a755803.woff2 +0 -0
  340. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-cf2cc71752631e579e35b0e423bf2638.woff2 +0 -0
  341. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-cf6ff4e0f491ca0cf3038187a997b9b4.woff2 +0 -0
  342. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-cfb211578629b7e8153b37240de6a9d5.woff2 +0 -0
  343. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-d0cf73942fea1c74edbdf0b3011f4656.woff2 +0 -0
  344. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-d2666cbed13462c5dc36fa2f15c202ca.woff2 +0 -0
  345. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-d3716376641d615e2995605b29bca7b6.woff2 +0 -0
  346. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-dac48066b5883d8b4551fc584f0c2a3e.woff2 +0 -0
  347. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-dbea1af6dcd9860be40c3d18254338f5.woff2 +0 -0
  348. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-e11567fd2accf9957cd0d3c2be937d87.woff2 +0 -0
  349. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-e2ead7ea7da0437f085f42ffc05f8d13.woff2 +0 -0
  350. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-e3fcf5180fd466c8915c4e8069491054.woff2 +0 -0
  351. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-e480d9c614742d05f0e78f274f1e69e6.woff2 +0 -0
  352. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-e4bca6cfa53e499cae0a6be4894a90e9.woff2 +0 -0
  353. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-e51ef413167c6e14e0c0fdcc585f2fc9.woff2 +0 -0
  354. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-e5f453bb04da18eed01675eeebd88bf8.woff2 +0 -0
  355. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-e656f091b9dc4709722c9f4b84d3c797.woff2 +0 -0
  356. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-ec181b795ac1fb5a50d700b6e996d745.woff2 +0 -0
  357. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-ee8bae97908d5147b423f77ad0d3c1bb.woff2 +0 -0
  358. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-f0f13b5c60e0af5553bd359f5513be1b.woff2 +0 -0
  359. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-f2b54d4e7be0eaefe1c2c56836fa5368.woff2 +0 -0
  360. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-f56414bf9bced67990def8660e306759.woff2 +0 -0
  361. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-f5d079153c99a25b9be5b8583c4cc8a7.woff2 +0 -0
  362. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-f6032fc06eb20480f096199713f70885.woff2 +0 -0
  363. package/dist/web/fonts/Xiaolai/Xiaolai-Regular-f8ee5d36068a42b51d0e4a1116cfcec1.woff2 +0 -0
@@ -3,7 +3,11 @@ import { readFile, stat } from "node:fs/promises";
3
3
  import { extname, join, normalize, sep } from "node:path";
4
4
  import { timingSafeEqual } from "node:crypto";
5
5
  import { SESSION_ID } from "./hub.js";
6
- const COOKIE = "excaliagent_token";
6
+ import { validFile } from "./scene-store.js";
7
+ /** Cookies ignore the port, so the name carries it: two boards never clobber each other. */
8
+ export const cookieName = (port) => `excaliagent_token_${port}`;
9
+ /** The token is stable per state dir (token.ts), so the cookie may outlive a restart. */
10
+ const COOKIE_MAX_AGE = 365 * 24 * 3600;
7
11
  const MAX_BODY = 50 * 1024 * 1024;
8
12
  const TYPES = {
9
13
  ".html": "text/html; charset=utf-8",
@@ -33,10 +37,10 @@ function sameToken(a, b) {
33
37
  const y = Buffer.from(b);
34
38
  return x.length === y.length && timingSafeEqual(x, y);
35
39
  }
36
- function cookieToken(req) {
40
+ function cookieToken(req, port) {
37
41
  for (const part of (req.headers.cookie ?? "").split(";")) {
38
42
  const [k, ...v] = part.trim().split("=");
39
- if (k === COOKIE)
43
+ if (k === cookieName(port))
40
44
  return v.join("=");
41
45
  }
42
46
  return undefined;
@@ -145,6 +149,24 @@ export function createAppServer(opts) {
145
149
  res.writeHead(204).end();
146
150
  return;
147
151
  }
152
+ case "PUT /api/files": {
153
+ const body = (await readJson(req));
154
+ if (!Array.isArray(body?.files))
155
+ throw new HttpError(400, "files must be an array");
156
+ const bad = body.files.map(validFile).find((f) => f instanceof Error);
157
+ if (bad)
158
+ throw new HttpError(400, bad.message);
159
+ await opts.scenes.saveFiles(body.files);
160
+ res.writeHead(204).end();
161
+ return;
162
+ }
163
+ case "POST /api/files/get": {
164
+ const body = (await readJson(req));
165
+ if (!Array.isArray(body?.ids) || !body.ids.every((i) => typeof i === "string")) {
166
+ throw new HttpError(400, "ids must be a string array");
167
+ }
168
+ return json(res, 200, await opts.scenes.loadFiles(body.ids));
169
+ }
148
170
  case "POST /api/focus": {
149
171
  const body = (await readJson(req));
150
172
  if (typeof body?.sessionId !== "string")
@@ -189,12 +211,12 @@ export function createAppServer(opts) {
189
211
  return text(res, 401, "bad token");
190
212
  res.writeHead(302, {
191
213
  location: "/",
192
- "set-cookie": `${COOKIE}=${opts.token}; HttpOnly; SameSite=Strict; Path=/`,
214
+ "set-cookie": `${cookieName(port)}=${opts.token}; HttpOnly; SameSite=Strict; Path=/; Max-Age=${COOKIE_MAX_AGE}`,
193
215
  });
194
216
  res.end();
195
217
  return;
196
218
  }
197
- if (!sameToken(cookieToken(req), opts.token)) {
219
+ if (!sameToken(cookieToken(req, port), opts.token)) {
198
220
  return text(res, 401, "excaliagent: open the URL printed in the terminal (it carries the access token).");
199
221
  }
200
222
  if (url.pathname.startsWith("/api/"))
@@ -0,0 +1,52 @@
1
+ // One board per state dir: two servers saving the same scene.json would
2
+ // overwrite each other's edits. A running server records its port and pid in
3
+ // <stateDir>/server.json; a second start finds it (pid alive, and it answers to
4
+ // this state dir's token) and opens that board instead of starting another.
5
+ import { readFile, rm, writeFile } from "node:fs/promises";
6
+ import { join } from "node:path";
7
+ import { cookieName } from "./http.js";
8
+ const recordPath = (stateDir) => join(stateDir, "server.json");
9
+ export async function recordRunning(stateDir, port, pid = process.pid) {
10
+ await writeFile(recordPath(stateDir), JSON.stringify({ port, pid }), { mode: 0o600 });
11
+ }
12
+ /** Removes the record if it is `pid`'s (a newer server may have replaced it). */
13
+ export async function clearRunning(stateDir, pid = process.pid) {
14
+ const r = await readRecord(stateDir);
15
+ if (r?.pid === pid)
16
+ await rm(recordPath(stateDir), { force: true });
17
+ }
18
+ async function readRecord(stateDir) {
19
+ try {
20
+ const r = JSON.parse(await readFile(recordPath(stateDir), "utf8"));
21
+ return Number.isInteger(r.port) && Number.isInteger(r.pid) ? r : undefined;
22
+ }
23
+ catch {
24
+ return undefined;
25
+ }
26
+ }
27
+ function alive(pid) {
28
+ try {
29
+ process.kill(pid, 0);
30
+ return true;
31
+ }
32
+ catch (e) {
33
+ return e.code === "EPERM";
34
+ }
35
+ }
36
+ /** The port of a live board serving this state dir, if any. */
37
+ export async function findRunning(stateDir, token) {
38
+ const r = await readRecord(stateDir);
39
+ if (!r || !alive(r.pid))
40
+ return undefined;
41
+ try {
42
+ const res = await fetch(`http://127.0.0.1:${r.port}/api/sessions`, {
43
+ headers: { cookie: `${cookieName(r.port)}=${token}` },
44
+ signal: AbortSignal.timeout(1500),
45
+ });
46
+ await res.body?.cancel();
47
+ return res.ok ? r.port : undefined;
48
+ }
49
+ catch {
50
+ return undefined;
51
+ }
52
+ }
@@ -1,58 +1,37 @@
1
1
  /**
2
- * Find herdr client processes (the TUI attached to a herdr server) by
3
- * scanning /proc: comm "herdr" and no "server" argument. Clients whose socket
4
- * (HERDR_SOCKET_PATH, else ~/.config/herdr/herdr.sock under their HOME) is
5
- * ours are returned. Clients whose socket cannot be read are a fallback only
6
- * when none match; a client known to be on another server is never returned.
2
+ * Find herdr client processes (the TUI attached to a herdr server): processes
3
+ * whose executable name is "herdr" and that have no "server" argument. Clients
4
+ * whose socket is ours are preferred; if none can be tied to it (environment
5
+ * unreadable), every client is returned.
7
6
  */
8
- import { readdir, readFile } from "node:fs/promises";
9
- import { join } from "node:path";
10
- async function read(path) {
11
- try {
12
- return await readFile(path, "utf8");
13
- }
14
- catch {
15
- return undefined;
16
- }
7
+ import { basename, join } from "node:path";
8
+ /**
9
+ * herdr's API socket for an environment (checked on herdr 0.9.0 / Linux):
10
+ * HERDR_SOCKET_PATH, else $XDG_CONFIG_HOME/herdr/herdr.sock, else
11
+ * $HOME/.config/herdr/herdr.sock. The binary has no macOS-specific path
12
+ * (no ~/Library); assumed the same there (unverified on real hardware).
13
+ */
14
+ export function herdrSocketPath(env, home) {
15
+ if (env.HERDR_SOCKET_PATH)
16
+ return env.HERDR_SOCKET_PATH;
17
+ if (env.XDG_CONFIG_HOME)
18
+ return join(env.XDG_CONFIG_HOME, "herdr", "herdr.sock");
19
+ const h = env.HOME || home;
20
+ return h ? join(h, ".config", "herdr", "herdr.sock") : undefined;
17
21
  }
18
22
  export async function findHerdrClientPids(opts) {
19
- const procRoot = opts.procRoot ?? "/proc";
20
- let entries;
21
- try {
22
- entries = await readdir(procRoot);
23
- }
24
- catch {
25
- return [];
26
- }
27
- const unknown = [];
23
+ const { table } = opts;
24
+ const candidates = (await table.list()).filter((p) => basename(p.comm) === "herdr");
25
+ const all = [];
28
26
  const ours = [];
29
- await Promise.all(entries
30
- .filter((e) => /^\d+$/.test(e))
31
- .map(async (e) => {
32
- const dir = join(procRoot, e);
33
- if ((await read(join(dir, "comm")))?.trim() !== "herdr")
34
- return;
35
- const argv = (await read(join(dir, "cmdline")))?.split("\0").filter(Boolean) ?? [];
36
- if (argv.slice(1).includes("server"))
37
- return;
38
- const pid = Number(e);
39
- const environ = await read(join(dir, "environ"));
40
- if (environ === undefined) {
41
- unknown.push(pid);
27
+ await Promise.all(candidates.map(async ({ pid }) => {
28
+ const argv = await table.argv(pid);
29
+ if (argv?.slice(1).includes("server"))
42
30
  return;
43
- }
44
- const env = new Map();
45
- for (const kv of environ.split("\0")) {
46
- const i = kv.indexOf("=");
47
- if (i > 0)
48
- env.set(kv.slice(0, i), kv.slice(i + 1));
49
- }
50
- const home = env.get("HOME");
51
- const sock = env.get("HERDR_SOCKET_PATH") || (home ? join(home, ".config/herdr/herdr.sock") : undefined);
52
- if (sock === undefined)
53
- unknown.push(pid);
54
- else if (sock === opts.socketPath)
31
+ all.push(pid);
32
+ const env = await table.env(pid);
33
+ if (env && herdrSocketPath(env) === opts.socketPath)
55
34
  ours.push(pid);
56
35
  }));
57
- return (ours.length > 0 ? ours : unknown).sort((a, b) => a - b);
36
+ return (ours.length > 0 ? ours : all).sort((a, b) => a - b);
58
37
  }
@@ -7,7 +7,8 @@
7
7
  import { homedir } from "node:os";
8
8
  import { basename, join } from "node:path";
9
9
  import { createHerdrClient, HerdrError } from "./herdr-client.js";
10
- import { findHerdrClientPids } from "./herdr-clients.js";
10
+ import { createProcessTable } from "../desktop/process-table.js";
11
+ import { findHerdrClientPids, herdrSocketPath } from "./herdr-clients.js";
11
12
  export { createNoPaneLink } from "./none.js";
12
13
  export const HERDR_SUBSCRIPTIONS = [
13
14
  { type: "pane.created" },
@@ -46,7 +47,7 @@ export function pickWorkspace(panes, root) {
46
47
  return pick ? (pick.workspace_id ?? workspaceOf(pick.pane_id)) : undefined;
47
48
  }
48
49
  export function defaultHerdrSocketPath() {
49
- return process.env.HERDR_SOCKET_PATH || join(homedir(), ".config/herdr/herdr.sock");
50
+ return herdrSocketPath(process.env, homedir()) ?? join(homedir(), ".config", "herdr", "herdr.sock");
50
51
  }
51
52
  const workspaceOf = (paneId) => paneId.split(":")[0] ?? paneId;
52
53
  /** pid → pane for every foreground process of every pane; `panes` supplies ids and labels. */
@@ -79,7 +80,8 @@ function sameMap(a, b) {
79
80
  export function createHerdrLink(opts = {}) {
80
81
  const { resyncMs = 30_000 } = opts;
81
82
  const socketPath = opts.socketPath ?? defaultHerdrSocketPath();
82
- const clientPids = () => findHerdrClientPids({ socketPath, procRoot: opts.procRoot });
83
+ const table = opts.processTable ?? createProcessTable();
84
+ const clientPids = () => findHerdrClientPids({ socketPath, table });
83
85
  let map = new Map();
84
86
  const listeners = new Set();
85
87
  let closed = false;
@@ -1,28 +1,50 @@
1
- import { mkdir, open, readFile, rename } from "node:fs/promises";
1
+ import { mkdir, open, readFile, rename, stat } from "node:fs/promises";
2
2
  import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
+ /** Excalidraw file ids: hex hashes or nanoids. Also keeps paths inside files/. */
5
+ export const FILE_ID = /^[A-Za-z0-9_-]{1,128}$/;
6
+ const IMAGE_MIME = /^image\/[a-z0-9.+-]+$/;
7
+ /** A clean StoredFile, or an Error naming the bad field. */
8
+ export function validFile(f) {
9
+ const x = f;
10
+ if (typeof x?.id !== "string" || !FILE_ID.test(x.id))
11
+ return new Error("file id must match " + FILE_ID);
12
+ if (typeof x.mimeType !== "string" || !IMAGE_MIME.test(x.mimeType))
13
+ return new Error("file mimeType must be image/*");
14
+ if (typeof x.dataURL !== "string" || !x.dataURL.startsWith(`data:${x.mimeType}`)) {
15
+ return new Error("file dataURL must be a data: URL of its mimeType");
16
+ }
17
+ return { id: x.id, mimeType: x.mimeType, dataURL: x.dataURL, created: typeof x.created === "number" ? x.created : 0 };
18
+ }
4
19
  export function defaultStateDir(env = process.env, home = homedir()) {
5
20
  const base = env.XDG_STATE_HOME || join(home, ".local", "state");
6
21
  return join(base, "excaliagent");
7
22
  }
8
23
  const empty = () => ({ elements: [], appState: {} });
9
- /** scene.json in stateDir, written atomically (temp file + fsync + rename), saves serialized. */
24
+ /**
25
+ * scene.json in stateDir, written atomically (temp file + fsync + rename), saves
26
+ * serialized. Image files live apart, one files/<id>.json each, written once.
27
+ */
10
28
  export function createSceneStore(stateDir, log = console) {
11
29
  const path = join(stateDir, "scene.json");
12
30
  let queue = Promise.resolve();
13
31
  let seq = 0;
14
- async function write(scene) {
15
- await mkdir(stateDir, { recursive: true });
16
- const tmp = `${path}.tmp-${process.pid}-${seq++}`;
32
+ const filesDir = join(stateDir, "files");
33
+ async function writeAtomic(target, data) {
34
+ const tmp = `${target}.tmp-${process.pid}-${seq++}`;
17
35
  const fh = await open(tmp, "w", 0o600);
18
36
  try {
19
- await fh.writeFile(JSON.stringify(scene));
37
+ await fh.writeFile(JSON.stringify(data));
20
38
  await fh.sync();
21
39
  }
22
40
  finally {
23
41
  await fh.close();
24
42
  }
25
- await rename(tmp, path);
43
+ await rename(tmp, target);
44
+ }
45
+ async function write(scene) {
46
+ await mkdir(stateDir, { recursive: true });
47
+ await writeAtomic(path, scene);
26
48
  }
27
49
  return {
28
50
  path,
@@ -57,5 +79,34 @@ export function createSceneStore(stateDir, log = console) {
57
79
  queue = run.catch(() => { });
58
80
  return run;
59
81
  },
82
+ async saveFiles(files) {
83
+ const valid = files.map(validFile);
84
+ const bad = valid.find((f) => f instanceof Error);
85
+ if (bad)
86
+ throw bad;
87
+ await mkdir(filesDir, { recursive: true });
88
+ for (const f of valid) {
89
+ const target = join(filesDir, `${f.id}.json`);
90
+ if (await stat(target).catch(() => undefined))
91
+ continue;
92
+ await writeAtomic(target, f);
93
+ }
94
+ },
95
+ async loadFiles(ids) {
96
+ const out = [];
97
+ for (const id of ids) {
98
+ if (!FILE_ID.test(id))
99
+ continue;
100
+ try {
101
+ const f = validFile(JSON.parse(await readFile(join(filesDir, `${id}.json`), "utf8")));
102
+ if (!(f instanceof Error) && f.id === id)
103
+ out.push(f);
104
+ }
105
+ catch {
106
+ // missing or unreadable: the image shows as a placeholder
107
+ }
108
+ }
109
+ return out;
110
+ },
60
111
  };
61
112
  }
@@ -0,0 +1,23 @@
1
+ // The access token: created once per state dir and reused, so the browser's
2
+ // cookie (and a bookmark of the board) survives restarts. The file is 0600;
3
+ // whatever can read it could read ~/.claude too.
4
+ import { randomBytes } from "node:crypto";
5
+ import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
6
+ import { join } from "node:path";
7
+ const VALID = /^[A-Za-z0-9_-]{32,}$/;
8
+ export async function loadOrCreateToken(stateDir) {
9
+ const path = join(stateDir, "token");
10
+ try {
11
+ const t = (await readFile(path, "utf8")).trim();
12
+ if (VALID.test(t))
13
+ return t;
14
+ }
15
+ catch {
16
+ // missing: create it
17
+ }
18
+ await mkdir(stateDir, { recursive: true });
19
+ const token = randomBytes(24).toString("base64url");
20
+ await writeFile(path, `${token}\n`, { mode: 0o600 });
21
+ await chmod(path, 0o600); // mode only applies when the file is created
22
+ return token;
23
+ }
@@ -1 +1 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as t}from"./src-BWF7jMDv.js";import"./chunk-DU6HZSFF-W9nFVr4b.js";import"./dist-BPnbDAwD.js";import{n,r,t as i}from"./chunk-SVP7TREG-Bbvoxr5d.js";import{t as a}from"./chunk-JWPE2WC7-DVXcaiue.js";import{E as o,t as s}from"./mermaid-parser.core-DA_7CZUN.js";var c=o().RailroadAbnf.parser.LangiumParser,l=e(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=e(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=e(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=e(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=e(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=e(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=e(e=>{a(e,i),e.title&&i.setTitle(e.title),e.rules.map(e=>i.addRule(m(e)))},`populateDb`),g={parser:{parse:e(e=>{i.clear(),t.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new s(n);let r=n.value;t.debug(`[ABNF Parser] Parsed rules:`,r.rules.length),h(r),t.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:i}},db:i,renderer:r,styles:n};export{g as diagram};
1
+ import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as t}from"./src-BWF7jMDv.js";import"./chunk-DU6HZSFF-CChYnq-U.js";import"./dist-BQE0NGB-.js";import{n,r,t as i}from"./chunk-SVP7TREG-E_6g4L6l.js";import{t as a}from"./chunk-JWPE2WC7-DVXcaiue.js";import{E as o,t as s}from"./mermaid-parser.core-C-IWeUrh.js";var c=o().RailroadAbnf.parser.LangiumParser,l=e(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=e(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=e(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=e(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=e(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=e(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=e(e=>{a(e,i),e.title&&i.setTitle(e.title),e.rules.map(e=>i.addRule(m(e)))},`populateDb`),g={parser:{parse:e(e=>{i.clear(),t.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new s(n);let r=n.value;t.debug(`[ABNF Parser] Parsed rules:`,r.rules.length),h(r),t.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:i}},db:i,renderer:r,styles:n};export{g as diagram};
@@ -1,4 +1,4 @@
1
- import"./index-C6RFmwp_.js";var e={paste:`لصق`,pasteAsPlaintext:`اللصق كنص عادي`,pasteCharts:`لصق الرسوم البيانية`,selectAll:`تحديد الكل`,multiSelect:`إضافة عنصر للتحديد`,moveCanvas:`نقل لوح الرسم`,cut:`قص`,copy:`نسخ`,copyAsPng:`نسخ إلى الحافظة بصيغة PNG`,copyAsSvg:`نسخ إلى الحافظة بصيغة SVG`,copyText:`نسخ إلى الحافظة كنص`,copySource:``,convertToCode:``,bringForward:`جلب للأمام`,sendToBack:`أرسل للخلف`,bringToFront:`أحضر للأمام`,sendBackward:`أرسل للخلف`,delete:`حذف`,copyStyles:`نسخ الأنماط`,pasteStyles:`لصق الأنماط`,stroke:`الخط`,background:`الخلفية`,fill:`التعبئة`,strokeWidth:`سُمك الخط`,strokeStyle:`نمط الخط`,strokeStyle_solid:`متصل`,strokeStyle_dashed:`متقطع`,strokeStyle_dotted:`منقط`,sloppiness:`الإمالة`,opacity:`الشفافية`,textAlign:`محاذاة النص`,edges:`الحواف`,sharp:`حادة`,round:`دائرية`,arrowheads:`رؤوس الأسهم`,arrowhead_none:`لا شيء`,arrowhead_arrow:`سهم`,arrowhead_bar:`شريط`,arrowhead_circle:``,arrowhead_circle_outline:``,arrowhead_triangle:`مثلث`,arrowhead_triangle_outline:``,arrowhead_diamond:``,arrowhead_diamond_outline:``,fontSize:`حجم الخط`,fontFamily:`نوع الخط`,addWatermark:`إضافة "مصنوعة بواسطة Excalidraw"`,handDrawn:`رسم باليد`,normal:`عادي`,code:`رمز`,small:`صغير`,medium:`متوسط`,large:`كبير`,veryLarge:`كبير جدا`,solid:`كامل`,hachure:`خطوط`,zigzag:`متعرج`,crossHatch:`خطوط متقطعة`,thin:`نحيف`,bold:`داكن`,left:`الـيسار`,center:`وسط`,right:`يمين`,extraBold:`عريض`,architect:`معماري`,artist:`رسام`,cartoonist:`كرتوني`,fileTitle:`إسم الملف`,colorPicker:`منتقي اللون`,canvasColors:`تستخدم على القماش`,canvasBackground:`خلفية اللوحة`,drawingCanvas:`لوحة الرسم`,layers:`الطبقات`,actions:`الإجراءات`,language:`اللغة`,liveCollaboration:`التعاون المباشر...`,duplicateSelection:`تكرار`,untitled:`غير معنون`,name:`الاسم`,yourName:`اسمك`,madeWithExcalidraw:`مصنوعة بواسطة Excalidraw`,group:`تحديد مجموعة`,ungroup:`إلغاء تحديد مجموعة`,collaborators:`المتعاونون`,showGrid:`إظهار الشبكة`,addToLibrary:`أضف إلى المكتبة`,removeFromLibrary:`حذف من المكتبة`,libraryLoadingMessage:`جارٍ تحميل المكتبة…`,libraries:`تصفح المكتبات`,loadingScene:`جاري تحميل المشهد…`,align:`محاذاة`,alignTop:`محاذاة إلى اﻷعلى`,alignBottom:`محاذاة إلى اﻷسفل`,alignLeft:`محاذاة إلى اليسار`,alignRight:`محاذاة إلى اليمين`,centerVertically:`توسيط عمودي`,centerHorizontally:`توسيط أفقي`,distributeHorizontally:`التوزيع الأفقي`,distributeVertically:`التوزيع عمودياً`,flipHorizontal:`قلب عامودي`,flipVertical:`قلب أفقي`,viewMode:`نمط العرض`,share:`مشاركة`,showStroke:`إظهار منتقي لون الخط`,showBackground:`إظهار منتقي لون الخلفية`,toggleTheme:`غير النمط`,personalLib:`المكتبة الشخصية`,excalidrawLib:`مكتبتنا`,decreaseFontSize:`تصغير حجم الخط`,increaseFontSize:`تكبير حجم الخط`,unbindText:`فك ربط النص`,bindText:`ربط النص بالحاوية`,createContainerFromText:`نص مغلف في حاوية`,link:{edit:`تعديل الرابط`,editEmbed:`تحرير الرابط وإدراجه`,create:`إنشاء رابط`,createEmbed:`إنشاء رابط و إدراجه`,label:`رابط`,labelEmbed:`رابط و إدراج`,empty:`لم يتم تعيين رابط`},lineEditor:{edit:`تحرير السطر`,exit:`الخروج من المُحرر`},elementLock:{lock:`قفل`,unlock:`فتح`,lockAll:`قفل الكل`,unlockAll:`فتح الكل`},statusPublished:`نُشر`,sidebarLock:`إبقاء الشريط الجانبي مفتوح`,selectAllElementsInFrame:`تحديد جميع العناصر في الإطار`,removeAllElementsFromFrame:`إزالة جميع العناصر من الإطار`,eyeDropper:`اختيار اللون من القماش`,textToDiagram:``,prompt:``},t={noItems:`لا توجد عناصر أضيفت بعد...`,hint_emptyLibrary:`حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.`,hint_emptyPrivateLibrary:`حدد عنصر على القماش لإضافته هنا.`},n={clearReset:`إعادة تعيين اللوحة`,exportJSON:`صدر الملف`,exportImage:`تصدير الصورة...`,export:`حفظ إلى...`,copyToClipboard:`نسخ إلى الحافظة`,save:`احفظ للملف الحالي`,saveAs:`حفظ كـ`,load:`فتح`,getShareableLink:`احصل على رابط المشاركة`,close:`غلق`,selectLanguage:`اختر اللغة`,scrollBackToContent:`الرجوع إلى المحتوى`,zoomIn:`تكبير`,zoomOut:`تصغير`,resetZoom:`إعادة تعيين الشاشة`,menu:`القائمة`,done:`تم`,edit:`تعديل`,undo:`تراجع`,redo:`إعادة تنفيذ`,resetLibrary:`إعادة ضبط المكتبة`,createNewRoom:`إنشاء غرفة جديدة`,fullScreen:`شاشة كاملة`,darkMode:`الوضع المظلم`,lightMode:`الوضع المضيء`,zenMode:`وضع التأمل`,objectsSnapMode:`التقط إلى العناصر`,exitZenMode:`إلغاء الوضع الليلى`,cancel:`إلغاء`,clear:`مسح`,remove:`إزالة`,embed:`تبديل الإدراج`,publishLibrary:`انشر`,submit:`أرسل`,confirm:`تأكيد`,embeddableInteractionButton:`اضغط للتفاعل`},r={clearReset:`هذا سيُزيل كامل اللوحة. هل أنت متأكد؟`,couldNotCreateShareableLink:`تعذر إنشاء رابطة المشاركة.`,couldNotCreateShareableLinkTooBig:`تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا`,couldNotLoadInvalidFile:`تعذر التحميل، الملف غير صالح`,importBackendFailed:`فشل الاستيراد من الخادوم.`,cannotExportEmptyCanvas:`لا يمكن تصدير لوحة فارغة.`,couldNotCopyToClipboard:`تعذر النسخ إلى الحافظة.`,decryptFailed:`تعذر فك تشفير البيانات.`,uploadedSecurly:`تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادوم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.`,loadSceneOverridePrompt:`تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟`,collabStopOverridePrompt:`إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليا. هل أنت متأكد؟
1
+ import"./index-BLscnX3-.js";var e={paste:`لصق`,pasteAsPlaintext:`اللصق كنص عادي`,pasteCharts:`لصق الرسوم البيانية`,selectAll:`تحديد الكل`,multiSelect:`إضافة عنصر للتحديد`,moveCanvas:`نقل لوح الرسم`,cut:`قص`,copy:`نسخ`,copyAsPng:`نسخ إلى الحافظة بصيغة PNG`,copyAsSvg:`نسخ إلى الحافظة بصيغة SVG`,copyText:`نسخ إلى الحافظة كنص`,copySource:``,convertToCode:``,bringForward:`جلب للأمام`,sendToBack:`أرسل للخلف`,bringToFront:`أحضر للأمام`,sendBackward:`أرسل للخلف`,delete:`حذف`,copyStyles:`نسخ الأنماط`,pasteStyles:`لصق الأنماط`,stroke:`الخط`,background:`الخلفية`,fill:`التعبئة`,strokeWidth:`سُمك الخط`,strokeStyle:`نمط الخط`,strokeStyle_solid:`متصل`,strokeStyle_dashed:`متقطع`,strokeStyle_dotted:`منقط`,sloppiness:`الإمالة`,opacity:`الشفافية`,textAlign:`محاذاة النص`,edges:`الحواف`,sharp:`حادة`,round:`دائرية`,arrowheads:`رؤوس الأسهم`,arrowhead_none:`لا شيء`,arrowhead_arrow:`سهم`,arrowhead_bar:`شريط`,arrowhead_circle:``,arrowhead_circle_outline:``,arrowhead_triangle:`مثلث`,arrowhead_triangle_outline:``,arrowhead_diamond:``,arrowhead_diamond_outline:``,fontSize:`حجم الخط`,fontFamily:`نوع الخط`,addWatermark:`إضافة "مصنوعة بواسطة Excalidraw"`,handDrawn:`رسم باليد`,normal:`عادي`,code:`رمز`,small:`صغير`,medium:`متوسط`,large:`كبير`,veryLarge:`كبير جدا`,solid:`كامل`,hachure:`خطوط`,zigzag:`متعرج`,crossHatch:`خطوط متقطعة`,thin:`نحيف`,bold:`داكن`,left:`الـيسار`,center:`وسط`,right:`يمين`,extraBold:`عريض`,architect:`معماري`,artist:`رسام`,cartoonist:`كرتوني`,fileTitle:`إسم الملف`,colorPicker:`منتقي اللون`,canvasColors:`تستخدم على القماش`,canvasBackground:`خلفية اللوحة`,drawingCanvas:`لوحة الرسم`,layers:`الطبقات`,actions:`الإجراءات`,language:`اللغة`,liveCollaboration:`التعاون المباشر...`,duplicateSelection:`تكرار`,untitled:`غير معنون`,name:`الاسم`,yourName:`اسمك`,madeWithExcalidraw:`مصنوعة بواسطة Excalidraw`,group:`تحديد مجموعة`,ungroup:`إلغاء تحديد مجموعة`,collaborators:`المتعاونون`,showGrid:`إظهار الشبكة`,addToLibrary:`أضف إلى المكتبة`,removeFromLibrary:`حذف من المكتبة`,libraryLoadingMessage:`جارٍ تحميل المكتبة…`,libraries:`تصفح المكتبات`,loadingScene:`جاري تحميل المشهد…`,align:`محاذاة`,alignTop:`محاذاة إلى اﻷعلى`,alignBottom:`محاذاة إلى اﻷسفل`,alignLeft:`محاذاة إلى اليسار`,alignRight:`محاذاة إلى اليمين`,centerVertically:`توسيط عمودي`,centerHorizontally:`توسيط أفقي`,distributeHorizontally:`التوزيع الأفقي`,distributeVertically:`التوزيع عمودياً`,flipHorizontal:`قلب عامودي`,flipVertical:`قلب أفقي`,viewMode:`نمط العرض`,share:`مشاركة`,showStroke:`إظهار منتقي لون الخط`,showBackground:`إظهار منتقي لون الخلفية`,toggleTheme:`غير النمط`,personalLib:`المكتبة الشخصية`,excalidrawLib:`مكتبتنا`,decreaseFontSize:`تصغير حجم الخط`,increaseFontSize:`تكبير حجم الخط`,unbindText:`فك ربط النص`,bindText:`ربط النص بالحاوية`,createContainerFromText:`نص مغلف في حاوية`,link:{edit:`تعديل الرابط`,editEmbed:`تحرير الرابط وإدراجه`,create:`إنشاء رابط`,createEmbed:`إنشاء رابط و إدراجه`,label:`رابط`,labelEmbed:`رابط و إدراج`,empty:`لم يتم تعيين رابط`},lineEditor:{edit:`تحرير السطر`,exit:`الخروج من المُحرر`},elementLock:{lock:`قفل`,unlock:`فتح`,lockAll:`قفل الكل`,unlockAll:`فتح الكل`},statusPublished:`نُشر`,sidebarLock:`إبقاء الشريط الجانبي مفتوح`,selectAllElementsInFrame:`تحديد جميع العناصر في الإطار`,removeAllElementsFromFrame:`إزالة جميع العناصر من الإطار`,eyeDropper:`اختيار اللون من القماش`,textToDiagram:``,prompt:``},t={noItems:`لا توجد عناصر أضيفت بعد...`,hint_emptyLibrary:`حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.`,hint_emptyPrivateLibrary:`حدد عنصر على القماش لإضافته هنا.`},n={clearReset:`إعادة تعيين اللوحة`,exportJSON:`صدر الملف`,exportImage:`تصدير الصورة...`,export:`حفظ إلى...`,copyToClipboard:`نسخ إلى الحافظة`,save:`احفظ للملف الحالي`,saveAs:`حفظ كـ`,load:`فتح`,getShareableLink:`احصل على رابط المشاركة`,close:`غلق`,selectLanguage:`اختر اللغة`,scrollBackToContent:`الرجوع إلى المحتوى`,zoomIn:`تكبير`,zoomOut:`تصغير`,resetZoom:`إعادة تعيين الشاشة`,menu:`القائمة`,done:`تم`,edit:`تعديل`,undo:`تراجع`,redo:`إعادة تنفيذ`,resetLibrary:`إعادة ضبط المكتبة`,createNewRoom:`إنشاء غرفة جديدة`,fullScreen:`شاشة كاملة`,darkMode:`الوضع المظلم`,lightMode:`الوضع المضيء`,zenMode:`وضع التأمل`,objectsSnapMode:`التقط إلى العناصر`,exitZenMode:`إلغاء الوضع الليلى`,cancel:`إلغاء`,clear:`مسح`,remove:`إزالة`,embed:`تبديل الإدراج`,publishLibrary:`انشر`,submit:`أرسل`,confirm:`تأكيد`,embeddableInteractionButton:`اضغط للتفاعل`},r={clearReset:`هذا سيُزيل كامل اللوحة. هل أنت متأكد؟`,couldNotCreateShareableLink:`تعذر إنشاء رابطة المشاركة.`,couldNotCreateShareableLinkTooBig:`تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا`,couldNotLoadInvalidFile:`تعذر التحميل، الملف غير صالح`,importBackendFailed:`فشل الاستيراد من الخادوم.`,cannotExportEmptyCanvas:`لا يمكن تصدير لوحة فارغة.`,couldNotCopyToClipboard:`تعذر النسخ إلى الحافظة.`,decryptFailed:`تعذر فك تشفير البيانات.`,uploadedSecurly:`تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادوم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.`,loadSceneOverridePrompt:`تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟`,collabStopOverridePrompt:`إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليا. هل أنت متأكد؟
2
2
 
3
3
  (إذا كنت ترغب في الاحتفاظ برسمك المخزن داخليا، ببساطة أغلق علامة تبويب المتصفح بدلاً من ذلك.)`,errorAddingToLibrary:`تعذر إضافة العنصر للمكتبة`,errorRemovingFromLibrary:`تعذر إزالة العنصر من المكتبة`,confirmAddLibrary:`هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟`,imageDoesNotContainScene:`يبدو أن هذه الصورة لا تحتوي على أي بيانات مشهد. هل قمت بتمكين تضمين المشهد أثناء التصدير؟`,cannotRestoreFromImage:`تعذر استعادة المشهد من ملف الصورة`,invalidSceneUrl:`تعذر استيراد المشهد من عنوان URL المتوفر. إما أنها مشوهة، أو لا تحتوي على بيانات Excalidraw JSON صالحة.`,resetLibrary:`هذا سوف يمسح مكتبتك. هل أنت متأكد؟`,removeItemsFromsLibrary:`حذف {{count}} عنصر (عناصر) من المكتبة؟`,invalidEncryptionKey:`مفتاح التشفير يجب أن يكون من 22 حرفاً. التعاون المباشر معطل.`,collabOfflineWarning:`لا يوجد اتصال بالانترنت.
4
4
  لن يتم حفظ التغييرات التي قمت بها!`},i={unsupportedFileType:`نوع الملف غير مدعوم.`,imageInsertError:`تعذر إدراج الصورة. حاول مرة أخرى لاحقاً...`,fileTooBig:`الملف كبير جداً. الحد الأقصى المسموح به للحجم هو {{maxSize}}.`,svgImageInsertError:`تعذر إدراج صورة SVG. يبدو أن ترميز SVG غير صحيح.`,failedToFetchImage:``,invalidSVGString:`SVG غير صالح.`,cannotResolveCollabServer:`تعذر الاتصال بخادم التعاون. الرجاء إعادة تحميل الصفحة والمحاولة مرة أخرى.`,importLibraryError:`تعذر تحميل المكتبة`,collabSaveFailed:`تعذر الحفظ في قاعدة البيانات. إذا استمرت المشاكل، يفضل أن تحفظ ملفك محليا كي لا تفقد عملك.`,collabSaveFailed_sizeExceeded:`تعذر الحفظ في قاعدة البيانات، يبدو أن القماش كبير للغاية، يفضّل حفظ الملف محليا كي لا تفقد عملك.`,imageToolNotSupported:``,brave_measure_text_error:{line1:`يبدو أنك تستخدم متصفح Brave مع إعداد <bold>حظر صارم لتتبع البصمة</bold>.`,line2:`قد يؤدي هذا إلى كسر <bold>عناصر النص</bold> في الرسومات الخاصة بك.`,line3:`من المستحسن إلغاء تفعيل هذا الإعداد. يمكنك اتباع <link>هذه الخطوات</link> لفعل ذلك.`,line4:`إذا لم يصلح تعطيل هذا الإعداد طريقة عرض النصوص، الرجاء كتابة <issueLink>بلاغ</issueLink> على حسابنا في GitHub، أو راسلنا على <discordLink>Discord</discordLink>`},libraryElementTypeError:{embeddable:`لا يمكن إضافة العناصر القابلة للتضمين في المكتبة.`,iframe:``,image:`سوف يتم دعم إضافة صور إلى المكتبة قريباً!`},asyncPasteFailedOnRead:``,asyncPasteFailedOnParse:``,copyToSystemClipboardFailed:``},a={selection:`تحديد`,image:`إدراج صورة`,rectangle:`مستطيل`,diamond:`مضلع`,ellipse:`دائرة`,arrow:`سهم`,line:`خط`,freedraw:`رسم`,text:`نص`,library:`مكتبة`,lock:`الحفاظ على أداة التحديد نشطة بعد الرسم`,penMode:`وضع القلم - امنع اللمس`,link:`إضافة/تحديث الرابط للشكل المحدد`,eraser:`ممحاة`,frame:`أداة الإطار`,magicframe:``,embeddable:`تضمين ويب`,laser:`مؤشر ليزر`,hand:`يد (أداة الإزاحة)`,extraTools:`المزيد من أﻷدوات`,mermaidToExcalidraw:``,magicSettings:``},o={canvasActions:`إجراءات اللوحة`,selectedShapeActions:`إجراءات الشكل المحدد`,shapes:`الأشكال`},s={canvasPanning:`لتحريك القماش، اضغط على عجلة الفأرة أو مفتاح المسافة أثناء السحب، أو استخدم أداة اليد`,linearElement:`انقر لبدء نقاط متعددة، اسحب لخط واحد`,freeDraw:`انقر واسحب، افرج عند الانتهاء`,text:`نصيحة: يمكنك أيضًا إضافة نص بالنقر المزدوج في أي مكان بأداة الاختيار`,embeddable:`اضغط مع السحب لإنشاء موقع ويب مضمّن`,text_selected:`انقر نقراً مزدوجاً أو اضغط ادخال لتعديل النص`,text_editing:`اضغط على Esc أو (Ctrl أو Cmd) + Enter لإنهاء التعديل`,linearElementMulti:`انقر فوق النقطة الأخيرة أو اضغط على Esc أو Enter للإنهاء`,lockAngle:`يمكنك تقييد الزاوية بالضغط على SHIFT`,resize:`يمكنك تقييد النسب بالضغط على SHIFT أثناء تغيير الحجم،
@@ -1 +1 @@
1
- import"./chunk-FOHPRMQF-DD4dKubD.js";export{o as createArchitectureServices}from"./mermaid-parser.core-DA_7CZUN.js";
1
+ import"./chunk-FOHPRMQF-DD4dKubD.js";export{o as createArchitectureServices}from"./mermaid-parser.core-C-IWeUrh.js";