chalkbridge 1.1.1 → 1.1.3

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 (152) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/dist/{chunk-XFH76JS6.js → chunk-BCHUGREF.js} +19 -3
  3. package/dist/cli.js +25 -7
  4. package/dist/index.js +1 -1
  5. package/package.json +1 -1
  6. package/ui-dist/assets/{abnfDiagram-VCTEODGH-Bwcewgyl.js → abnfDiagram-VCTEODGH-o3pL7yuH.js} +1 -1
  7. package/ui-dist/assets/{ar-SA-G6X2FPQ2-58dCrzRZ.js → ar-SA-G6X2FPQ2-DBW5vJrl.js} +1 -1
  8. package/ui-dist/assets/architecture-7GRP2DOG-RDk7_3oa.js +1 -0
  9. package/ui-dist/assets/{architectureDiagram-5GKGNRK7-CMPSnIrP.js → architectureDiagram-5GKGNRK7-DSy67j6A.js} +1 -1
  10. package/ui-dist/assets/{az-AZ-76LH7QW2-CCpEVexR.js → az-AZ-76LH7QW2-BmAulnA5.js} +1 -1
  11. package/ui-dist/assets/{bg-BG-XCXSNQG7-DDlArZMH.js → bg-BG-XCXSNQG7-MsfQK8qt.js} +1 -1
  12. package/ui-dist/assets/{blockDiagram-NRAW4CY4-D7TrKIo5.js → blockDiagram-NRAW4CY4-pYwdCg5K.js} +1 -1
  13. package/ui-dist/assets/{bn-BD-2XOGV67Q-BXyhMN4V.js → bn-BD-2XOGV67Q-YBAjV44K.js} +1 -1
  14. package/ui-dist/assets/{c4Diagram-UCG6FXSJ-CazStwlL.js → c4Diagram-UCG6FXSJ-Cw8oeBvh.js} +1 -1
  15. package/ui-dist/assets/{ca-ES-6MX7JW3Y-JHxjajfS.js → ca-ES-6MX7JW3Y-DowmBq0t.js} +1 -1
  16. package/ui-dist/assets/channel-DLSyDDT5.js +1 -0
  17. package/ui-dist/assets/{chunk-75Z2AOVW-BJsQGYsA.js → chunk-75Z2AOVW-C_9Gsbyz.js} +1 -1
  18. package/ui-dist/assets/{chunk-DU6HZSFF-C1xw9RZQ.js → chunk-DU6HZSFF-CDriaWMp.js} +1 -1
  19. package/ui-dist/assets/{chunk-EIO257PC-BrhyYOZD.js → chunk-EIO257PC-D_pewQb7.js} +1 -1
  20. package/ui-dist/assets/{chunk-F27PBJKO-f6XMRQIS.js → chunk-F27PBJKO-Bjx929X5.js} +1 -1
  21. package/ui-dist/assets/{chunk-G27WJ6UU-Cws9GsBU.js → chunk-G27WJ6UU-CUP8Px4l.js} +1 -1
  22. package/ui-dist/assets/{chunk-GMAD6QVW-CbhLp4Jt.js → chunk-GMAD6QVW-BDiTKJ44.js} +1 -1
  23. package/ui-dist/assets/{chunk-JQ64N6SF-B5lJbHea.js → chunk-JQ64N6SF-B-1BJXWR.js} +1 -1
  24. package/ui-dist/assets/{chunk-LCL6LL3I-bGYRjzHM.js → chunk-LCL6LL3I-BL1AQkvu.js} +1 -1
  25. package/ui-dist/assets/{chunk-OBVCFTLP-CxeUZPN4.js → chunk-OBVCFTLP-BCWN-rmO.js} +1 -1
  26. package/ui-dist/assets/{chunk-P2QGCYS3-CZEugM1f.js → chunk-P2QGCYS3-CmgTdIFO.js} +1 -1
  27. package/ui-dist/assets/{chunk-POPQ4Y6H-CoDq2Q_g.js → chunk-POPQ4Y6H-KQZYy9sO.js} +1 -1
  28. package/ui-dist/assets/{chunk-PWAF6VOD-CX_HLotF.js → chunk-PWAF6VOD-BouCnRui.js} +1 -1
  29. package/ui-dist/assets/{chunk-R7TYR2AO-B4M26mv9.js → chunk-R7TYR2AO-_u4RvBBs.js} +1 -1
  30. package/ui-dist/assets/{chunk-RHFEMEQ7-CVXQBX33.js → chunk-RHFEMEQ7-wg76vEGp.js} +1 -1
  31. package/ui-dist/assets/{chunk-SVP7TREG-L7TJWT_o.js → chunk-SVP7TREG-DbwdbtHd.js} +1 -1
  32. package/ui-dist/assets/{chunk-TEH6E4GO-Dct0SlmV.js → chunk-TEH6E4GO-BzhVoidg.js} +1 -1
  33. package/ui-dist/assets/classDiagram-DTDB5LWJ-gerVLyI5.js +1 -0
  34. package/ui-dist/assets/classDiagram-v2-JRS7N3AN-gerVLyI5.js +1 -0
  35. package/ui-dist/assets/{cs-CZ-2BRQDIVT-CvvJph-H.js → cs-CZ-2BRQDIVT-DF4u_CNK.js} +1 -1
  36. package/ui-dist/assets/{cynefin-OW5HDTMX-Ei_Xgi2_.js → cynefin-OW5HDTMX-_c7TUx7k.js} +1 -1
  37. package/ui-dist/assets/{cynefinDiagram-5FMLGOSQ-AFFSo_cm.js → cynefinDiagram-5FMLGOSQ-Baphukwe.js} +1 -1
  38. package/ui-dist/assets/{da-DK-5WZEPLOC-BaezbVeN.js → da-DK-5WZEPLOC-BHVp_PHH.js} +1 -1
  39. package/ui-dist/assets/{dagre-3AP2YEHR-B-FVEWH2.js → dagre-3AP2YEHR-0kiD869k.js} +1 -1
  40. package/ui-dist/assets/{de-DE-XR44H4JA-BAGdMA-L.js → de-DE-XR44H4JA-CgW8oFzH.js} +1 -1
  41. package/ui-dist/assets/{diagram-S7CK7UJ4-eyl1yJj7.js → diagram-S7CK7UJ4-zoqnxuLt.js} +1 -1
  42. package/ui-dist/assets/{diagram-UQ7AKVKN-CugR7jCP.js → diagram-UQ7AKVKN-DMMWXR23.js} +1 -1
  43. package/ui-dist/assets/{diagram-VSXAHHWV-Dz85hV5k.js → diagram-VSXAHHWV-HjDZHJFx.js} +1 -1
  44. package/ui-dist/assets/{diagram-VX7I27RA-BYSNxzTB.js → diagram-VX7I27RA-W7XiAa3Y.js} +1 -1
  45. package/ui-dist/assets/{diagram-Z3DM3KII-BN4pFJaP.js → diagram-Z3DM3KII-Ch_-xBqE.js} +1 -1
  46. package/ui-dist/assets/{dist-CVqcfLn4.js → dist-BWboiH3s.js} +4 -4
  47. package/ui-dist/assets/{ebnfDiagram-PWID7BFC-Ddprc5Rv.js → ebnfDiagram-PWID7BFC-CKRspb8c.js} +1 -1
  48. package/ui-dist/assets/{el-GR-BZB4AONW-C8EbIpNQ.js → el-GR-BZB4AONW-DH-i72OV.js} +1 -1
  49. package/ui-dist/assets/{en-B4ZKOASM-BZp0XUv6.js → en-B4ZKOASM-BHQxRb4V.js} +1 -1
  50. package/ui-dist/assets/{erDiagram-SSCWMZ5O-BoMeaxjf.js → erDiagram-SSCWMZ5O-zX3V6vuZ.js} +1 -1
  51. package/ui-dist/assets/{es-ES-U4NZUMDT-CA2eQinb.js → es-ES-U4NZUMDT-eUPIrX1m.js} +1 -1
  52. package/ui-dist/assets/{eu-ES-A7QVB2H4-CcaNArBV.js → eu-ES-A7QVB2H4-Cf5MkJHT.js} +1 -1
  53. package/ui-dist/assets/eventmodeling-NTZA5JFV-DJ7hv96e.js +1 -0
  54. package/ui-dist/assets/{fa-IR-HGAKTJCU-BH7DgnZN.js → fa-IR-HGAKTJCU-G0NL5O32.js} +1 -1
  55. package/ui-dist/assets/{fi-FI-Z5N7JZ37-DWg6APJ2.js → fi-FI-Z5N7JZ37-eDytnoCD.js} +1 -1
  56. package/ui-dist/assets/flowDiagram-A5DVABFB-B14HNvA3.js +1 -0
  57. package/ui-dist/assets/{fr-FR-RHASNOE6-qBJplDsT.js → fr-FR-RHASNOE6-CDn5YGxh.js} +1 -1
  58. package/ui-dist/assets/{ganttDiagram-EL5Y4UJY-4wx5f9nv.js → ganttDiagram-EL5Y4UJY-Cgpii2nh.js} +1 -1
  59. package/ui-dist/assets/{gitGraph-4MIJSDKK-DDYlgTud.js → gitGraph-4MIJSDKK-B2FLI0YT.js} +1 -1
  60. package/ui-dist/assets/{gitGraphDiagram-WWUBYQGX-DAhZkdQa.js → gitGraphDiagram-WWUBYQGX-BFZVNaJk.js} +1 -1
  61. package/ui-dist/assets/{gl-ES-HMX3MZ6V-CTvRbK-4.js → gl-ES-HMX3MZ6V-DqTa_6zQ.js} +1 -1
  62. package/ui-dist/assets/{he-IL-6SHJWFNN-w2aMYZZd.js → he-IL-6SHJWFNN-CF_hmTDD.js} +1 -1
  63. package/ui-dist/assets/{hi-IN-IWLTKZ5I-DX4ZRE2H.js → hi-IN-IWLTKZ5I-BurR-HWO.js} +1 -1
  64. package/ui-dist/assets/{hu-HU-A5ZG7DT2-naHDPNOM.js → hu-HU-A5ZG7DT2-CTMiHFNL.js} +1 -1
  65. package/ui-dist/assets/{id-ID-SAP4L64H-D5QxdnZa.js → id-ID-SAP4L64H-v9eAe-Pl.js} +1 -1
  66. package/ui-dist/assets/image-GAAHSSAO-aYcCZOxV.js +1 -0
  67. package/ui-dist/assets/{index-W8DLsYN7.js → index-DyAw3r3e.js} +8 -8
  68. package/ui-dist/assets/{info-A6RAGUB7-RXb_MEIH.js → info-A6RAGUB7-D9vkABZg.js} +1 -1
  69. package/ui-dist/assets/{infoDiagram-RXCK75RN-DzaEiHqC.js → infoDiagram-RXCK75RN-DkIWJAJT.js} +1 -1
  70. package/ui-dist/assets/{ishikawaDiagram-5VMMS53U-C9We7rRC.js → ishikawaDiagram-5VMMS53U-Bft8Dz3r.js} +1 -1
  71. package/ui-dist/assets/{it-IT-JPQ66NNP-B0YDAONu.js → it-IT-JPQ66NNP-BBzW6blD.js} +1 -1
  72. package/ui-dist/assets/{ja-JP-DBVTYXUO-CjS5c0my.js → ja-JP-DBVTYXUO-BTXAY95B.js} +1 -1
  73. package/ui-dist/assets/{journeyDiagram-EYS64GPL-BnolpCVx.js → journeyDiagram-EYS64GPL-CNPbcef4.js} +1 -1
  74. package/ui-dist/assets/{kaa-6HZHGXH3-BCxOG4kc.js → kaa-6HZHGXH3-DYouzW_m.js} +1 -1
  75. package/ui-dist/assets/{kab-KAB-ZGHBKWFO-D3QotDYI.js → kab-KAB-ZGHBKWFO-DEG1xQQq.js} +1 -1
  76. package/ui-dist/assets/{kanban-definition-3QL26DDD-Cy9HKz-0.js → kanban-definition-3QL26DDD-DS4F4kyE.js} +1 -1
  77. package/ui-dist/assets/{kk-KZ-P5N5QNE5-BrSjotfG.js → kk-KZ-P5N5QNE5-CPOAfzr_.js} +1 -1
  78. package/ui-dist/assets/{km-KH-HSX4SM5Z-fb8nqdkK.js → km-KH-HSX4SM5Z-BO5OGKgL.js} +1 -1
  79. package/ui-dist/assets/{ko-KR-MTYHY66A-BXj8eDyy.js → ko-KR-MTYHY66A-D_3EAP_r.js} +1 -1
  80. package/ui-dist/assets/{ku-TR-6OUDTVRD-COZArCj9.js → ku-TR-6OUDTVRD-C5yHTP7U.js} +1 -1
  81. package/ui-dist/assets/{line-7U1712L5.js → line-BOfOxQ0L.js} +1 -1
  82. package/ui-dist/assets/{lt-LT-XHIRWOB4-C-HJQqop.js → lt-LT-XHIRWOB4-D8sald8e.js} +1 -1
  83. package/ui-dist/assets/{lv-LV-5QDEKY6T-DLfr6jLA.js → lv-LV-5QDEKY6T-nMvlSBwd.js} +1 -1
  84. package/ui-dist/assets/{mermaid-parser.core-DrLo74XG.js → mermaid-parser.core-DbslZ7z6.js} +3 -3
  85. package/ui-dist/assets/{mindmap-definition-FBJOCRG2-Ba42gC8u.js → mindmap-definition-FBJOCRG2-CC7YRs1I.js} +1 -1
  86. package/ui-dist/assets/{mr-IN-CRQNXWMA-B9soDV3M.js → mr-IN-CRQNXWMA-DwYEdJ6g.js} +1 -1
  87. package/ui-dist/assets/{my-MM-5M5IBNSE-LZaFHx2a.js → my-MM-5M5IBNSE-CkVtPsgu.js} +1 -1
  88. package/ui-dist/assets/{nb-NO-T6EIAALU-BwhFAqXH.js → nb-NO-T6EIAALU-CfcrwCef.js} +1 -1
  89. package/ui-dist/assets/{nl-NL-IS3SIHDZ-D2FhUB0E.js → nl-NL-IS3SIHDZ-DPVjOdP8.js} +1 -1
  90. package/ui-dist/assets/{nn-NO-6E72VCQL-yn-NI0ZL.js → nn-NO-6E72VCQL-z4XCBvtQ.js} +1 -1
  91. package/ui-dist/assets/{oc-FR-POXYY2M6-DOhix0u-.js → oc-FR-POXYY2M6-XiwDZwgM.js} +1 -1
  92. package/ui-dist/assets/{pa-IN-N4M65BXN-9aoDSwWx.js → pa-IN-N4M65BXN-DuXPS7Vb.js} +1 -1
  93. package/ui-dist/assets/{packet-AYTQ26CC-DuyZkxuT.js → packet-AYTQ26CC-B4TcY0kB.js} +1 -1
  94. package/ui-dist/assets/{pegDiagram-XKGWAZYB-PH6THd_o.js → pegDiagram-XKGWAZYB-DUSJlo42.js} +1 -1
  95. package/ui-dist/assets/percentages-BXMCSKIN-B9EK3GBV.js +1 -0
  96. package/ui-dist/assets/{pie-WAS4IAKB-BdQJyLvD.js → pie-WAS4IAKB-T3VzDsca.js} +1 -1
  97. package/ui-dist/assets/{pieDiagram-E7YTZNPT-CPm011HM.js → pieDiagram-E7YTZNPT-gIAK7l_u.js} +1 -1
  98. package/ui-dist/assets/{pl-PL-T2D74RX3-BO50j2s4.js → pl-PL-T2D74RX3-D00kamQC.js} +1 -1
  99. package/ui-dist/assets/{pt-BR-5N22H2LF-Cp8T2vmD.js → pt-BR-5N22H2LF-C5ZNqytO.js} +1 -1
  100. package/ui-dist/assets/{pt-PT-UZXXM6DQ-CdTZJ0Y5.js → pt-PT-UZXXM6DQ-DJoIVZb6.js} +1 -1
  101. package/ui-dist/assets/{quadrantDiagram-AXDQQJYC-Cm1Rlzhk.js → quadrantDiagram-AXDQQJYC-QB418pxc.js} +1 -1
  102. package/ui-dist/assets/{radar-RG4KPBEZ-48srnC1_.js → radar-RG4KPBEZ-BNg2Od-m.js} +1 -1
  103. package/ui-dist/assets/{railroad-74A4TZTK-C6601ICA.js → railroad-74A4TZTK-HxmWWcYY.js} +1 -1
  104. package/ui-dist/assets/railroad-abnf-HS5TGJTU-E1hw9v0U.js +1 -0
  105. package/ui-dist/assets/railroad-ebnf-LZEXJU2U-D11k3-Yx.js +1 -0
  106. package/ui-dist/assets/railroad-peg-WCYAUIDC-djipl3Qi.js +1 -0
  107. package/ui-dist/assets/{railroadDiagram-O6MQD6OU-C8yR5TE7.js → railroadDiagram-O6MQD6OU-BhkRr0Xw.js} +1 -1
  108. package/ui-dist/assets/{requirementDiagram-EFPCY7ZU-DeleqP-5.js → requirementDiagram-EFPCY7ZU-oFFR0XIe.js} +1 -1
  109. package/ui-dist/assets/{ro-RO-JPDTUUEW-C7SipvaK.js → ro-RO-JPDTUUEW-BVCBG6Yb.js} +1 -1
  110. package/ui-dist/assets/{ru-RU-B4JR7IUQ-dNLeoFpA.js → ru-RU-B4JR7IUQ-CL22wPes.js} +1 -1
  111. package/ui-dist/assets/{sankeyDiagram-P5KCCOFB-CSJKN7--.js → sankeyDiagram-P5KCCOFB-Cod_IgpA.js} +1 -1
  112. package/ui-dist/assets/{sequenceDiagram-WJ2MYXX4-B_C10dhq.js → sequenceDiagram-WJ2MYXX4-BS1ccxYk.js} +1 -1
  113. package/ui-dist/assets/{si-LK-N5RQ5JYF-DogInl3-.js → si-LK-N5RQ5JYF-DLaLR7Cr.js} +1 -1
  114. package/ui-dist/assets/{sk-SK-C5VTKIMK-2YnR2SrM.js → sk-SK-C5VTKIMK-ZkUf5uTC.js} +1 -1
  115. package/ui-dist/assets/{sl-SI-NN7IZMDC-w1ecqU-U.js → sl-SI-NN7IZMDC-EUpD9Npa.js} +1 -1
  116. package/ui-dist/assets/{stateDiagram-HBIQ2CUA-BIYHmokV.js → stateDiagram-HBIQ2CUA-bZ2iHCKf.js} +1 -1
  117. package/ui-dist/assets/stateDiagram-v2-4QOOHH4V-UKcZzetZ.js +1 -0
  118. package/ui-dist/assets/subset-shared.chunk-DiI1sxPG.js +1 -0
  119. package/ui-dist/assets/{subset-worker.chunk-Fq9aq3Pk.js → subset-worker.chunk-TUbActJA.js} +1 -1
  120. package/ui-dist/assets/{sv-SE-XGPEYMSR-ZA1w16aZ.js → sv-SE-XGPEYMSR-Cn1sCwWu.js} +1 -1
  121. package/ui-dist/assets/{swimlanes-XN3QIQJK-Bsz-wFaq.js → swimlanes-XN3QIQJK-CuBYIsLr.js} +1 -1
  122. package/ui-dist/assets/swimlanesDiagram-VK2B7HYN-E0ldUagU.js +8 -0
  123. package/ui-dist/assets/{ta-IN-2NMHFXQM-CanbC1P6.js → ta-IN-2NMHFXQM-ChpHwna3.js} +1 -1
  124. package/ui-dist/assets/{th-TH-HPSO5L25-DyHWEX0G.js → th-TH-HPSO5L25-DmDVSHGj.js} +1 -1
  125. package/ui-dist/assets/{timeline-definition-24CTP7MA-4TgC1OoH.js → timeline-definition-24CTP7MA-C2U3-ZAF.js} +1 -1
  126. package/ui-dist/assets/{tr-TR-DEFEU3FU-D0W6rufc.js → tr-TR-DEFEU3FU-BUP3Lszu.js} +1 -1
  127. package/ui-dist/assets/{treeView-Q6P3EWNA-C9fqdzP-.js → treeView-Q6P3EWNA-CySxZ2VI.js} +1 -1
  128. package/ui-dist/assets/{treemap-WGGIJYW6-BqNZy40L.js → treemap-WGGIJYW6-D_4Wf_x5.js} +1 -1
  129. package/ui-dist/assets/{uk-UA-QMV73CPH-C1iCWdAQ.js → uk-UA-QMV73CPH-BDn1-hez.js} +1 -1
  130. package/ui-dist/assets/{vennDiagram-4TSXK5OY-BQFCZXqB.js → vennDiagram-4TSXK5OY-DoYDFYaB.js} +1 -1
  131. package/ui-dist/assets/{vi-VN-M7AON7JQ-BWynaJhA.js → vi-VN-M7AON7JQ-D1JkmMTs.js} +1 -1
  132. package/ui-dist/assets/{wardley-WFR3VGLG-cNQ06Oix.js → wardley-WFR3VGLG-3NuaJoyt.js} +1 -1
  133. package/ui-dist/assets/{wardleyDiagram-VM6X3IG4-BbLDW2ka.js → wardleyDiagram-VM6X3IG4-BkSb9uJ5.js} +1 -1
  134. package/ui-dist/assets/{xychartDiagram-S5SC5T6Z-r5VAgI1x.js → xychartDiagram-S5SC5T6Z-DaStHnZJ.js} +1 -1
  135. package/ui-dist/assets/{zh-CN-LNUGB5OW-BNvy0Mnj.js → zh-CN-LNUGB5OW-D6ucAnvY.js} +1 -1
  136. package/ui-dist/assets/{zh-HK-E62DVLB3-Csv83LC3.js → zh-HK-E62DVLB3-tvTQyrAF.js} +1 -1
  137. package/ui-dist/assets/{zh-TW-RAJ6MFWO-CW-6XIyO.js → zh-TW-RAJ6MFWO-y6am-Uwk.js} +1 -1
  138. package/ui-dist/index.html +1 -1
  139. package/ui-dist/assets/architecture-7GRP2DOG-Df8gKqbg.js +0 -1
  140. package/ui-dist/assets/channel-C4uQlBVf.js +0 -1
  141. package/ui-dist/assets/classDiagram-DTDB5LWJ-DRbrF0Ha.js +0 -1
  142. package/ui-dist/assets/classDiagram-v2-JRS7N3AN-DRbrF0Ha.js +0 -1
  143. package/ui-dist/assets/eventmodeling-NTZA5JFV-CSPN2jeA.js +0 -1
  144. package/ui-dist/assets/flowDiagram-A5DVABFB-YrkFRLG9.js +0 -1
  145. package/ui-dist/assets/image-GAAHSSAO-C9O0QZ3x.js +0 -1
  146. package/ui-dist/assets/percentages-BXMCSKIN-BFxN7npZ.js +0 -1
  147. package/ui-dist/assets/railroad-abnf-HS5TGJTU-Dmq5JjW8.js +0 -1
  148. package/ui-dist/assets/railroad-ebnf-LZEXJU2U-DzMo_BK8.js +0 -1
  149. package/ui-dist/assets/railroad-peg-WCYAUIDC-LanIHXaC.js +0 -1
  150. package/ui-dist/assets/stateDiagram-v2-4QOOHH4V-BEVYrEze.js +0 -1
  151. package/ui-dist/assets/subset-shared.chunk-zuCoK3Ax.js +0 -1
  152. package/ui-dist/assets/swimlanesDiagram-VK2B7HYN-DVXdrFIL.js +0 -8
package/CHANGELOG.md CHANGED
@@ -1,5 +1,111 @@
1
1
  # chalkbridge
2
2
 
3
+ ## 1.1.2
4
+
5
+ **Arrows stay attached when you drag the box they point at.**
6
+
7
+ Reported as arrows never being attached to icons and some rectangles: drag the shape and
8
+ the arrow stays put, its endpoints sitting exactly where they were drawn. The dividing line
9
+ was not the shape type — it was which arrows were *elbowed*.
10
+
11
+ `arrowType: "elbow"` set upstream's `elbowed` flag, and that flag is not decoration.
12
+ `ExcalidrawElbowArrowElement` narrows **both** bindings to `FixedPointBinding`, which adds
13
+ a `fixedPoint`. Every binding Chalkbridge produces comes from
14
+ `convertToExcalidrawElements`, which derives the plain `focus`/`gap` form and no
15
+ `fixedPoint` — so an elbow arrow carried a binding the renderer could not use, and moving
16
+ the shape did nothing to it.
17
+
18
+ - **Right angles are recorded as `customData.chalk.route`**, and the arrow ships as a plain
19
+ multi-point arrow with `roundness: null`. The same square corners, with a binding the
20
+ renderer honours.
21
+ - **Old scenes repair on contact.** An arrow still carrying the flag loses it the first time
22
+ anything moves under it, so nothing needs migrating.
23
+ - The `boundElements` half was correct throughout — measured across rectangle, ellipse,
24
+ diamond and image, every shape listed its arrows and no arrow had an unbound end.
25
+
26
+ Verified on a scene built from scratch with an icon among the shapes, then moving the icon
27
+ and two others: all seven endpoints on moved shapes followed, each still inside the binding
28
+ gap.
29
+
30
+ ## 1.1.1
31
+
32
+ **Layouts that read, and arrows that meet the boxes they name.**
33
+
34
+ Everything here came from one rendered diagram — nineteen boxes, twenty-four bound arrows —
35
+ and every claim was measured before and after rather than eyeballed.
36
+
37
+ - **`layout-layered` no longer scatters a graph containing a cycle.** Ranking is a
38
+ fixed-point iteration and a ring has no fixed point, so the loop spent its whole pass
39
+ budget instead of settling: nineteen boxes with four small rings reached a **maximum rank
40
+ of 61**, and the drawing came out **11,072 px wide with a 5,824 px hole in it**. Cycles
41
+ are broken before ranking now — which the function had documented since it was written
42
+ and no code ever did. The same boxes land **1,760 px wide in six even columns**, and the
43
+ dropped edge is still drawn, running backwards against the flow.
44
+ - **Arrows route around what is in the way.** Both previous routes were computed from the
45
+ two boxes at the ends and nothing else, so both drew through whatever sat between them —
46
+ five of thirteen arrows in one sample, and two of sixteen in another *while already
47
+ elbowed*. `domain/scene/route.ts` searches a sparse grid with A\* and a turn penalty, and
48
+ only detours when the direct line actually hits something. Both samples now measure **0
49
+ through a box**.
50
+ - **Every bound endpoint is a fixed point of the renderer's own rule.** Excalidraw
51
+ re-derives a bound endpoint on every paint from the *adjacent* point, discarding what the
52
+ file said — so being on the boundary was not enough. Seventeen of twenty-nine arrows
53
+ drifted between file and canvas, by 8 to 105 px, while every stored endpoint sat
54
+ correctly on its box. Now **zero of twenty-nine**.
55
+ - **`layout-radial` and `layout-tree` are new.** Radial rings a hub; tree puts it on the
56
+ left and fans the rest out, which reads better whenever labels are wide, because a ring
57
+ long enough to seat its members crosses its own middle.
58
+ - **`chalk_describe_scene` ends with a `layout:` line** naming which of the three the graph
59
+ wants and what decided it, since Claude cannot see the canvas.
60
+ - **A resize refits its container's caption**, which was translated by the container's
61
+ *origin* delta — a quantity a resize does not change.
62
+ - **A free-standing note wraps.** 261 characters came out 2,651 px wide and 25 px tall, one
63
+ line. `chalk_annotate` also looks for somewhere clear instead of landing on whatever ran
64
+ under its anchor.
65
+ - **Arrow captions stop printing through each other**, and `layout-tree` sizes its column
66
+ gaps to the captions crossing them.
67
+
68
+ `@dagrejs/dagre` was evaluated behind a port and not adopted: benchmarked over five graph
69
+ shapes with edge labels given to both engines it is a tie, and 18% wider on the shape
70
+ closest to the reported diagram. ELK is the stronger engine and is EPL-2.0, which the
71
+ licence suite forbids by name.
72
+
73
+ ## 1.1.0
74
+
75
+ **Diagrams that come out readable the first time.**
76
+
77
+ Drawing an eight-box architecture diagram used to take about 27 minutes and end with boxes
78
+ resized by hand and elements dragged out from under their frames. The same diagram is now
79
+ sixteen tool calls with nothing repositioned afterwards.
80
+
81
+ - **Shapes are sized to their labels.** Node has no canvas, so every shape was a flat
82
+ 180×80 whatever it said — and a long label wrapped past the bottom of an 80 px box, where
83
+ the container clipped it away entirely. Advance widths for the bundled font are now
84
+ measured (`adr/0006`, superseding `adr/0004`).
85
+ - **Collisions are reported instead of photographed.** `chalk_describe_scene` ends with an
86
+ `overlaps:` section, and every write tool returns `overlapWarning`. Previously the only
87
+ way to ask "did that land badly?" was a rendered image.
88
+ - **Frames follow what they hold.** A frame was sized to its contents once, when it was
89
+ created; every later move slid the children out and left the box behind.
90
+ - **Icons belong to a box.** `chalk_place_icon` takes `attachTo` and `placement`, so an
91
+ attached icon travels with its element through every layout.
92
+ - **Elbow arrows actually bend**, and arrows leaving the same face of a box fan out rather
93
+ than stacking in one lane.
94
+ - **`layout-layered` leaves room for what it draws.** Edges spanning more than one rank get
95
+ a reserved corridor, and the gap between ranks is sized to the widest caption crossing it.
96
+
97
+ ## 1.0.4
98
+
99
+ **Icons that render, and arrows that will bind to them.**
100
+
101
+ - **An icon reached the canvas as an invisible element.** The image and its file have to
102
+ land in the same commit; they did not, so the element was there and nothing was drawn.
103
+ - **An arrow would not bind to an icon.** Upstream's binding switch covers exactly
104
+ `rectangle | ellipse | diamond`, and Chalkbridge produces three types it does not —
105
+ `image`, `embeddable`, `frame`. Each now gets a rectangular stand-in during expansion, so
106
+ the binding is still *derived* rather than hand-written (invariant 16).
107
+ - A README that explains what the thing is before explaining how to build it.
108
+
3
109
  ## 1.0.3
4
110
 
5
111
  **An upgrade now actually arrives, a bridge can be stopped, and it ends when you are
@@ -86,7 +86,23 @@ var ChalkMeta = z.object({
86
86
  author: ChalkAuthor,
87
87
  kind: z.enum(["icon", "note", "embed"]).optional(),
88
88
  iconId: IconId.optional(),
89
- anchorIds: z.array(ElementId).optional()
89
+ anchorIds: z.array(ElementId).optional(),
90
+ /**
91
+ * "Draw this arrow with right angles" — recorded here rather than as upstream's
92
+ * `elbowed`, because that flag carries a binding contract we cannot meet.
93
+ *
94
+ * `ExcalidrawElbowArrowElement` in the installed 0.18.1 is not merely an arrow with a
95
+ * flag set: it narrows **both** bindings to `FixedPointBinding`, which adds a
96
+ * `fixedPoint`. Every binding Chalkbridge produces comes from
97
+ * `convertToExcalidrawElements`, which derives the plain `focus`/`gap` form. So an arrow
98
+ * marked `elbowed` had a binding the renderer could not use when the shape moved, and
99
+ * dragging a box left its arrows behind — the endpoints sitting exactly where they were.
100
+ *
101
+ * A plain arrow with several points and `roundness: null` draws the same right angles,
102
+ * keeps the binding Excalidraw expects, and follows its box. The flag is the only thing
103
+ * that had to go; the shape it was standing for is what this records.
104
+ */
105
+ route: z.literal("orthogonal").optional()
90
106
  });
91
107
  var CustomData = z.looseObject({ chalk: ChalkMeta.optional() });
92
108
  var base = {
@@ -1807,5 +1823,5 @@ var stable = (element) => {
1807
1823
  };
1808
1824
 
1809
1825
  export { AnnotateInput, AnnotateOutput, ApiError, ArrangeOutput, ArrangeToolInput, BINDING_FIELDS, ClientMessage, ConnectOutput, ConnectToolInput, CreateElementsInput, CreateElementsOutput, DataUrl, DebugElementRequest, DeleteElementsInput, DeleteElementsOutput, DescribeSceneInput, DescribeSceneOutput, DetailLevel, EXCALIDRAW_FILE_TYPE, EXCALIDRAW_FILE_VERSION, ElementId, EmbedInput, EmbedOutput, ExcalidrawFile, ExportImageInput, ExportImageOutput, ExportSceneInput, ExportSceneOutput, FLAG_GLYPH, FileId, FocusInput, FocusOutput, FrameId, FrameInput, FrameOutput, GUIDE_TOPICS, GetElementsInput, GetElementsOutput, GetSelectionInput, GetSelectionOutput, GroupId, GroupInput, GroupOutput, GuideTopic, HOUSE, HealthResponse, IconId, IconItem, ImportSceneInput, ImportSceneOutput, Index, InstallPackInput, InstallPackOutput, KIND_ABBREVIATION, ListPacksInput, ListPacksOutput, ListScenesInput, ListScenesOutput, PROTOCOL_VERSION, PackKind, PackName, PackRecipe, PlaceIconInput, PlaceIconOutput, ROUNDNESS, RawElementsInput, RawElementsOutput, ReadMeInput, ReadMeOutput, RemovePackInput, RemovePackOutput, RestoreSnapshotInput, RestoreSnapshotOutput, SERVER_MANAGED_FIELDS, STALE_SELECTION_MS, Scene, SceneElement, SceneId, SceneSettingsInput, SceneSettingsOutput, ScreenshotInput, ScreenshotOutput, ScreenshotResponse, SearchIconsInput, SearchIconsOutput, SnapshotId, SnapshotInput, SnapshotOutput, UngroupInput, UngroupOutput, UpdateElementsInput, UpdateElementsOutput, assertNever, bridgeSpawnFailed, bridgeUnreachable, bridgeVersionMismatch, catalogUnavailable, createNodeSkeletonExpander, deepEqual, describeThrown, diskConflict, emptySelection, expansionFailed, exportFailed, exportTimedOut, fail, frameIdOf, iconIdOf, iconNeedsAPlace, idCollision, isFail, isOk, measureLine, noBoundLabel, noBrowser, noScenes, notAPack, notARepo, ok, packInstallFailed, partition, pathOutsideRepo, point, portUnavailable, refusedFieldMessage, sceneFileMissing, staleVersion, storeUnavailable, unknownElement, unknownIcon, unknownScene, unknownSnapshot, unreadableSceneFile, wrapLines };
1810
- //# sourceMappingURL=chunk-XFH76JS6.js.map
1811
- //# sourceMappingURL=chunk-XFH76JS6.js.map
1826
+ //# sourceMappingURL=chunk-BCHUGREF.js.map
1827
+ //# sourceMappingURL=chunk-BCHUGREF.js.map
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { SceneElement, PackName, PackKind, IconId, SceneId, Scene, SnapshotId, SERVER_MANAGED_FIELDS, BINDING_FIELDS, GUIDE_TOPICS, DetailLevel, createNodeSkeletonExpander, ok, fail, bridgeSpawnFailed, bridgeVersionMismatch, bridgeUnreachable, GuideTopic, storeUnavailable, describeThrown, unreadableSceneFile, pathOutsideRepo, packInstallFailed, sceneFileMissing, notAPack, PackRecipe, portUnavailable, DescribeSceneOutput, DescribeSceneInput, GetSelectionOutput, GetSelectionInput, GetElementsOutput, GetElementsInput, ListScenesOutput, ListScenesInput, SceneSettingsOutput, SceneSettingsInput, SearchIconsOutput, SearchIconsInput, ScreenshotOutput, ScreenshotInput, ReadMeOutput, ReadMeInput, PlaceIconOutput, PlaceIconInput, SnapshotOutput, SnapshotInput, RestoreSnapshotOutput, RestoreSnapshotInput, ExportSceneOutput, ExportSceneInput, ImportSceneOutput, ImportSceneInput, ExportImageOutput, ExportImageInput, InstallPackOutput, InstallPackInput, notARepo, ScreenshotResponse, RemovePackOutput, ListPacksOutput, RawElementsOutput, FocusOutput, EmbedOutput, AnnotateOutput, FrameOutput, UngroupOutput, GroupOutput, ArrangeOutput, DeleteElementsOutput, UpdateElementsOutput, ConnectOutput, CreateElementsOutput, HealthResponse, iconIdOf, unknownScene, unknownSnapshot, exportFailed, unknownIcon, HOUSE, FileId, ElementId, diskConflict, refusedFieldMessage, idCollision, expansionFailed, emptySelection, unknownElement, measureLine, frameIdOf, GroupId, staleVersion, noBoundLabel, deepEqual, exportTimedOut, noBrowser, DebugElementRequest, CreateElementsInput, ConnectToolInput, UpdateElementsInput, DeleteElementsInput, ArrangeToolInput, GroupInput, UngroupInput, FrameInput, AnnotateInput, EmbedInput, FocusInput, RawElementsInput, ListPacksInput, RemovePackInput, iconNeedsAPlace, DataUrl, Index, wrapLines, ROUNDNESS, STALE_SELECTION_MS, noScenes, ClientMessage, assertNever, PROTOCOL_VERSION, ApiError, EXCALIDRAW_FILE_VERSION, EXCALIDRAW_FILE_TYPE, point, FLAG_GLYPH, KIND_ABBREVIATION, catalogUnavailable, FrameId, IconItem, ExcalidrawFile } from './chunk-XFH76JS6.js';
2
+ import { SceneElement, PackName, PackKind, IconId, SceneId, Scene, SnapshotId, SERVER_MANAGED_FIELDS, BINDING_FIELDS, GUIDE_TOPICS, DetailLevel, createNodeSkeletonExpander, ok, fail, bridgeSpawnFailed, bridgeVersionMismatch, bridgeUnreachable, GuideTopic, storeUnavailable, describeThrown, unreadableSceneFile, pathOutsideRepo, packInstallFailed, sceneFileMissing, notAPack, PackRecipe, portUnavailable, DescribeSceneOutput, DescribeSceneInput, GetSelectionOutput, GetSelectionInput, GetElementsOutput, GetElementsInput, ListScenesOutput, ListScenesInput, SceneSettingsOutput, SceneSettingsInput, SearchIconsOutput, SearchIconsInput, ScreenshotOutput, ScreenshotInput, ReadMeOutput, ReadMeInput, PlaceIconOutput, PlaceIconInput, SnapshotOutput, SnapshotInput, RestoreSnapshotOutput, RestoreSnapshotInput, ExportSceneOutput, ExportSceneInput, ImportSceneOutput, ImportSceneInput, ExportImageOutput, ExportImageInput, InstallPackOutput, InstallPackInput, notARepo, ScreenshotResponse, RemovePackOutput, ListPacksOutput, RawElementsOutput, FocusOutput, EmbedOutput, AnnotateOutput, FrameOutput, UngroupOutput, GroupOutput, ArrangeOutput, DeleteElementsOutput, UpdateElementsOutput, ConnectOutput, CreateElementsOutput, HealthResponse, iconIdOf, unknownScene, unknownSnapshot, exportFailed, unknownIcon, HOUSE, FileId, ElementId, diskConflict, refusedFieldMessage, idCollision, expansionFailed, emptySelection, unknownElement, measureLine, frameIdOf, GroupId, staleVersion, noBoundLabel, deepEqual, exportTimedOut, noBrowser, DebugElementRequest, CreateElementsInput, ConnectToolInput, UpdateElementsInput, DeleteElementsInput, ArrangeToolInput, GroupInput, UngroupInput, FrameInput, AnnotateInput, EmbedInput, FocusInput, RawElementsInput, ListPacksInput, RemovePackInput, iconNeedsAPlace, DataUrl, Index, wrapLines, ROUNDNESS, STALE_SELECTION_MS, noScenes, ClientMessage, assertNever, PROTOCOL_VERSION, ApiError, EXCALIDRAW_FILE_VERSION, EXCALIDRAW_FILE_TYPE, point, FLAG_GLYPH, KIND_ABBREVIATION, catalogUnavailable, FrameId, IconItem, ExcalidrawFile } from './chunk-BCHUGREF.js';
3
3
  import './chunk-7D4SUZUM.js';
4
4
  import { appendFileSync, existsSync, mkdirSync } from 'node:fs';
5
5
  import { homedir } from 'node:os';
@@ -3987,6 +3987,13 @@ function anchorOn(box, adjacent, gap) {
3987
3987
  if (reach === 0) return [bx, by];
3988
3988
  return [bx + dx * toSide * gap / reach, by + dy * toSide * gap / reach];
3989
3989
  }
3990
+ function isOrthogonal(arrow) {
3991
+ return arrow.customData?.chalk?.route === "orthogonal" || arrow.elbowed === true;
3992
+ }
3993
+ function withOrthogonalMark(arrow) {
3994
+ const chalk = arrow.customData?.chalk ?? { author: "human" };
3995
+ return { customData: { ...arrow.customData, chalk: { ...chalk, route: "orthogonal" } } };
3996
+ }
3990
3997
  function redrawOne(current, labels, arrow, lane) {
3991
3998
  if (arrow.type !== "arrow") return [];
3992
3999
  const fromId = startOf(arrow);
@@ -3997,7 +4004,7 @@ function redrawOne(current, labels, arrow, lane) {
3997
4004
  if (from === void 0 || to === void 0) return [];
3998
4005
  const startGap = arrow.startBinding?.gap ?? 4;
3999
4006
  const endGap = arrow.endBinding?.gap ?? 4;
4000
- const elbowed = arrow.elbowed === true;
4007
+ const elbowed = isOrthogonal(arrow);
4001
4008
  const [sx, sy, ex, ey] = elbowed ? facePoints(boxOf(from), boxOf(to), startGap, endGap, lane) : [
4002
4009
  ...edgePoint(boxOf(from), boxOf(to), startGap),
4003
4010
  ...edgePoint(boxOf(to), boxOf(from), endGap)
@@ -4032,6 +4039,10 @@ function redrawOne(current, labels, arrow, lane) {
4032
4039
  };
4033
4040
  const redrawn = {
4034
4041
  ...arrow,
4042
+ // Repair on contact: an arrow drawn by an earlier version carries `elbowed: true` and
4043
+ // a binding the renderer cannot use. Clearing it here means the scene heals the first
4044
+ // time anything moves under it.
4045
+ ...elbowed ? { elbowed: false, roundness: null, ...withOrthogonalMark(arrow) } : {},
4035
4046
  // A detour is an orthogonal route, so it is drawn as one.
4036
4047
  //
4037
4048
  // This is not cosmetic. Excalidraw owns the endpoints of a *bound* arrow at paint
@@ -4046,7 +4057,9 @@ function redrawOne(current, labels, arrow, lane) {
4046
4057
  // `roundness` comes out as a long S sweeping across the diagram — which is what the
4047
4058
  // bend at the bottom of the sample was. Square corners are what an orthogonal route
4048
4059
  // actually means.
4049
- ...route === null ? {} : { elbowed: true, roundness: null },
4060
+ // Square corners and the route marker never upstream's `elbowed`, whose binding
4061
+ // contract we cannot meet and which left dragged boxes trailing detached arrows.
4062
+ ...route === null ? {} : { elbowed: false, roundness: null, ...withOrthogonalMark(arrow) },
4050
4063
  x: origin[0],
4051
4064
  y: origin[1],
4052
4065
  width: spans.w,
@@ -4080,7 +4093,7 @@ function laneOffsets(arrows, current) {
4080
4093
  };
4081
4094
  const across = (face, box) => face === "right" || face === "left" ? centre(box)[1] : centre(box)[0];
4082
4095
  for (const arrow of arrows) {
4083
- if (arrow.type !== "arrow" || arrow.elbowed !== true) continue;
4096
+ if (arrow.type !== "arrow" || !isOrthogonal(arrow)) continue;
4084
4097
  const fromId = startOf(arrow);
4085
4098
  const toId = endOf(arrow);
4086
4099
  if (fromId === null || toId === null) continue;
@@ -4787,7 +4800,7 @@ function shapeOf(arrowType) {
4787
4800
  case "sharp":
4788
4801
  return { roundness: null, elbowed: false };
4789
4802
  case "elbow":
4790
- return { roundness: null, elbowed: true };
4803
+ return { roundness: null, elbowed: false, orthogonal: true };
4791
4804
  default:
4792
4805
  return { roundness: { type: ROUNDNESS.PROPORTIONAL_RADIUS }, elbowed: false };
4793
4806
  }
@@ -4803,7 +4816,7 @@ function connectElements(deps) {
4803
4816
  const to = live.get(input.toId);
4804
4817
  if (from === void 0) return fail(unknownElement(input.fromId));
4805
4818
  if (to === void 0) return fail(unknownElement(input.toId));
4806
- const shape = shapeOf(input.arrowType);
4819
+ const { orthogonal, ...shape } = shapeOf(input.arrowType);
4807
4820
  const skeleton = {
4808
4821
  type: "arrow",
4809
4822
  id: deps.idGen.elementId(),
@@ -4816,6 +4829,11 @@ function connectElements(deps) {
4816
4829
  strokeWidth: HOUSE.strokeWidth,
4817
4830
  roughness: HOUSE.roughness,
4818
4831
  ...shape,
4832
+ // Right angles are recorded under `customData.chalk`, which is where Chalkbridge
4833
+ // metadata lives (invariant 23), rather than as upstream's `elbowed` — that flag
4834
+ // narrows both bindings to `FixedPointBinding` and an arrow carrying it without one
4835
+ // does not follow its box when the box is dragged. `ChalkMeta.route` has the detail.
4836
+ ...orthogonal === true ? { customData: { chalk: { author: "claude", route: "orthogonal" } } } : {},
4819
4837
  ...input.strokeStyle === void 0 ? {} : { strokeStyle: input.strokeStyle },
4820
4838
  ...input.startArrowhead === void 0 ? {} : { startArrowhead: input.startArrowhead },
4821
4839
  ...input.endArrowhead === void 0 ? {} : { endArrowhead: input.endArrowhead },
@@ -5645,7 +5663,7 @@ function readEnv(source) {
5645
5663
  }
5646
5664
 
5647
5665
  // src/composition/container.ts
5648
- var PACKAGE_VERSION = "1.1.1";
5666
+ var PACKAGE_VERSION = "1.1.3";
5649
5667
  function readRuntime() {
5650
5668
  return {
5651
5669
  env: process.env,
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { createNodeSkeletonExpander, fail, isFail, isOk, ok, partition } from './chunk-XFH76JS6.js';
1
+ export { createNodeSkeletonExpander, fail, isFail, isOk, ok, partition } from './chunk-BCHUGREF.js';
2
2
  import './chunk-7D4SUZUM.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chalkbridge",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "type": "module",
5
5
  "description": "Self-hosted Excalidraw canvas for Claude Code to draw and reason on architecture diagrams.",
6
6
  "license": "MIT",
@@ -1 +1 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as t}from"./src-oBChb5qS.js";import"./chunk-DU6HZSFF-C1xw9RZQ.js";import"./dist-CVqcfLn4.js";import{m as n,t as r}from"./mermaid-parser.core-DrLo74XG.js";import{n as i,r as a,t as o}from"./chunk-SVP7TREG-L7TJWT_o.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";var c=n().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=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:e(e=>{o.clear(),t.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new r(n);let i=n.value;t.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),t.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
1
+ import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as t}from"./src-oBChb5qS.js";import"./chunk-DU6HZSFF-CDriaWMp.js";import"./dist-BWboiH3s.js";import{m as n,t as r}from"./mermaid-parser.core-DbslZ7z6.js";import{n as i,r as a,t as o}from"./chunk-SVP7TREG-DbwdbtHd.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";var c=n().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=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:e(e=>{o.clear(),t.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new r(n);let i=n.value;t.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),t.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
@@ -1,4 +1,4 @@
1
- import"./index-W8DLsYN7.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-DyAw3r3e.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 أثناء تغيير الحجم،
@@ -0,0 +1 @@
1
+ import"./chunk-FOHPRMQF-DHwB1DNv.js";import{M as e}from"./mermaid-parser.core-DbslZ7z6.js";export{e as createArchitectureServices};