chalkbridge 1.0.3 → 1.1.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 (153) hide show
  1. package/dist/{chunk-VTFAXWQJ.js → chunk-XDK5UUTO.js} +254 -12
  2. package/dist/cli.js +542 -89
  3. package/dist/index.js +1 -1
  4. package/guides/icons.md +22 -3
  5. package/guides/layout.md +42 -3
  6. package/package.json +1 -1
  7. package/ui-dist/assets/{abnfDiagram-VCTEODGH-BJtEDuNS.js → abnfDiagram-VCTEODGH-BCawxiKB.js} +1 -1
  8. package/ui-dist/assets/{ar-SA-G6X2FPQ2-B6obDqD5.js → ar-SA-G6X2FPQ2-UCm9FftA.js} +1 -1
  9. package/ui-dist/assets/architecture-7GRP2DOG-CiyYoVgW.js +1 -0
  10. package/ui-dist/assets/{architectureDiagram-5GKGNRK7-CvbQe1_v.js → architectureDiagram-5GKGNRK7-DIw1pNEk.js} +1 -1
  11. package/ui-dist/assets/{az-AZ-76LH7QW2-CfV9ZZWy.js → az-AZ-76LH7QW2-B5LEIxkk.js} +1 -1
  12. package/ui-dist/assets/{bg-BG-XCXSNQG7-DUA8YPCl.js → bg-BG-XCXSNQG7-2bpThpZL.js} +1 -1
  13. package/ui-dist/assets/{blockDiagram-NRAW4CY4-DocsEmiD.js → blockDiagram-NRAW4CY4-BGr2WGp_.js} +1 -1
  14. package/ui-dist/assets/{bn-BD-2XOGV67Q-DvE_tajm.js → bn-BD-2XOGV67Q-Drz-y_cX.js} +1 -1
  15. package/ui-dist/assets/{c4Diagram-UCG6FXSJ-Tx_g_cO9.js → c4Diagram-UCG6FXSJ-vbm87bpC.js} +1 -1
  16. package/ui-dist/assets/{ca-ES-6MX7JW3Y-DHdtT9lh.js → ca-ES-6MX7JW3Y-D89p_FZ-.js} +1 -1
  17. package/ui-dist/assets/channel-DtgwkzBZ.js +1 -0
  18. package/ui-dist/assets/{chunk-75Z2AOVW-LAZTrfqO.js → chunk-75Z2AOVW-B7kf5jVz.js} +1 -1
  19. package/ui-dist/assets/{chunk-DU6HZSFF-DYQVLGqe.js → chunk-DU6HZSFF-BlGPS6B6.js} +1 -1
  20. package/ui-dist/assets/{chunk-EIO257PC-B41AYx2_.js → chunk-EIO257PC-nzXnwORk.js} +1 -1
  21. package/ui-dist/assets/{chunk-F27PBJKO-BTHkH7Vo.js → chunk-F27PBJKO-B7qepoj_.js} +1 -1
  22. package/ui-dist/assets/{chunk-G27WJ6UU-BBBWLXXO.js → chunk-G27WJ6UU-CSjcvmOf.js} +1 -1
  23. package/ui-dist/assets/{chunk-GMAD6QVW-BkvPd3CL.js → chunk-GMAD6QVW-CtaZAO5u.js} +1 -1
  24. package/ui-dist/assets/{chunk-JQ64N6SF-CKrtUr61.js → chunk-JQ64N6SF-CuhtdTse.js} +1 -1
  25. package/ui-dist/assets/{chunk-LCL6LL3I-B4K72jRj.js → chunk-LCL6LL3I-DMfA3a_s.js} +1 -1
  26. package/ui-dist/assets/{chunk-OBVCFTLP-CMCEQnr_.js → chunk-OBVCFTLP-BoBuso2l.js} +1 -1
  27. package/ui-dist/assets/{chunk-P2QGCYS3-BNpg6XHk.js → chunk-P2QGCYS3-BZHK87sP.js} +1 -1
  28. package/ui-dist/assets/{chunk-POPQ4Y6H-BaAoqHUX.js → chunk-POPQ4Y6H-Dk_v51-0.js} +1 -1
  29. package/ui-dist/assets/{chunk-PWAF6VOD-CGQ4p70E.js → chunk-PWAF6VOD-DQTvHbxy.js} +1 -1
  30. package/ui-dist/assets/{chunk-R7TYR2AO-B2S7-r2z.js → chunk-R7TYR2AO-CQ_StUs1.js} +1 -1
  31. package/ui-dist/assets/{chunk-RHFEMEQ7-C_ziruXk.js → chunk-RHFEMEQ7-BTgGEQit.js} +1 -1
  32. package/ui-dist/assets/{chunk-SVP7TREG-FJEPEsgF.js → chunk-SVP7TREG-lkVXeHxJ.js} +1 -1
  33. package/ui-dist/assets/{chunk-TEH6E4GO-BvKV-yBX.js → chunk-TEH6E4GO-DIEC-0PO.js} +1 -1
  34. package/ui-dist/assets/classDiagram-DTDB5LWJ-B83TJF6p.js +1 -0
  35. package/ui-dist/assets/classDiagram-v2-JRS7N3AN-B83TJF6p.js +1 -0
  36. package/ui-dist/assets/{cs-CZ-2BRQDIVT-BamYs5wC.js → cs-CZ-2BRQDIVT-CmSaQCAW.js} +1 -1
  37. package/ui-dist/assets/{cynefin-OW5HDTMX-Cj_nyyy3.js → cynefin-OW5HDTMX-B6f8qooM.js} +1 -1
  38. package/ui-dist/assets/{cynefinDiagram-5FMLGOSQ-B3Rm8-dE.js → cynefinDiagram-5FMLGOSQ-DFu8uB2c.js} +1 -1
  39. package/ui-dist/assets/{da-DK-5WZEPLOC-B8baJSus.js → da-DK-5WZEPLOC-DZ68cfJh.js} +1 -1
  40. package/ui-dist/assets/{dagre-3AP2YEHR-BesdyiUo.js → dagre-3AP2YEHR-CuUE3cEY.js} +1 -1
  41. package/ui-dist/assets/{de-DE-XR44H4JA-DKPtPOlk.js → de-DE-XR44H4JA-ClBUqbwZ.js} +1 -1
  42. package/ui-dist/assets/{diagram-S7CK7UJ4-jeIUYTnQ.js → diagram-S7CK7UJ4-DjLndaJK.js} +1 -1
  43. package/ui-dist/assets/{diagram-UQ7AKVKN-BmAlHtLI.js → diagram-UQ7AKVKN-wLhxEBwN.js} +1 -1
  44. package/ui-dist/assets/{diagram-VSXAHHWV-B-S5XoGb.js → diagram-VSXAHHWV-CVek4gvW.js} +1 -1
  45. package/ui-dist/assets/{diagram-VX7I27RA--KrWarId.js → diagram-VX7I27RA-CXyuaDuW.js} +1 -1
  46. package/ui-dist/assets/{diagram-Z3DM3KII-B7MnKinD.js → diagram-Z3DM3KII-BGk8dw5c.js} +1 -1
  47. package/ui-dist/assets/{dist-C2o0r0se.js → dist-DyDCC61R.js} +4 -4
  48. package/ui-dist/assets/{ebnfDiagram-PWID7BFC-C20WACav.js → ebnfDiagram-PWID7BFC-Bq5wdWGX.js} +1 -1
  49. package/ui-dist/assets/{el-GR-BZB4AONW-FSgeiYUW.js → el-GR-BZB4AONW-oCuJWxYE.js} +1 -1
  50. package/ui-dist/assets/{en-B4ZKOASM-BAWBMIE-.js → en-B4ZKOASM-DevQWFhD.js} +1 -1
  51. package/ui-dist/assets/{erDiagram-SSCWMZ5O-DU4Qz6qu.js → erDiagram-SSCWMZ5O-CXZW4I_b.js} +1 -1
  52. package/ui-dist/assets/{es-ES-U4NZUMDT-CZ9XqqCk.js → es-ES-U4NZUMDT-DgzMLG1J.js} +1 -1
  53. package/ui-dist/assets/{eu-ES-A7QVB2H4-CNagAo_o.js → eu-ES-A7QVB2H4-1tA3vosZ.js} +1 -1
  54. package/ui-dist/assets/eventmodeling-NTZA5JFV-Bh0QsTUi.js +1 -0
  55. package/ui-dist/assets/{fa-IR-HGAKTJCU-CGpX3K56.js → fa-IR-HGAKTJCU-BVbN6Ifb.js} +1 -1
  56. package/ui-dist/assets/{fi-FI-Z5N7JZ37-D8ErPXQZ.js → fi-FI-Z5N7JZ37-DsGMdP7T.js} +1 -1
  57. package/ui-dist/assets/flowDiagram-A5DVABFB-Chb6hSSG.js +1 -0
  58. package/ui-dist/assets/{fr-FR-RHASNOE6-CgP9qmF-.js → fr-FR-RHASNOE6-BEZa94DA.js} +1 -1
  59. package/ui-dist/assets/{ganttDiagram-EL5Y4UJY-CNqGfKGy.js → ganttDiagram-EL5Y4UJY-BZxyNgRP.js} +1 -1
  60. package/ui-dist/assets/{gitGraph-4MIJSDKK-Cjg2l4tr.js → gitGraph-4MIJSDKK-Cz7F-_6d.js} +1 -1
  61. package/ui-dist/assets/{gitGraphDiagram-WWUBYQGX-C1RblGyv.js → gitGraphDiagram-WWUBYQGX-77gOaAOD.js} +1 -1
  62. package/ui-dist/assets/{gl-ES-HMX3MZ6V-D64w31ga.js → gl-ES-HMX3MZ6V-DfSDz_sy.js} +1 -1
  63. package/ui-dist/assets/{he-IL-6SHJWFNN-prTy1rRE.js → he-IL-6SHJWFNN-DT8nqxK2.js} +1 -1
  64. package/ui-dist/assets/{hi-IN-IWLTKZ5I-uvdg8ovV.js → hi-IN-IWLTKZ5I-BtL1eizk.js} +1 -1
  65. package/ui-dist/assets/{hu-HU-A5ZG7DT2-OIhzhh7g.js → hu-HU-A5ZG7DT2-5FwjCLbT.js} +1 -1
  66. package/ui-dist/assets/{id-ID-SAP4L64H-Bs8DbFR5.js → id-ID-SAP4L64H-DXfUbYET.js} +1 -1
  67. package/ui-dist/assets/image-GAAHSSAO-AgKiDvHK.js +1 -0
  68. package/ui-dist/assets/{index-CknJbzCM.js → index-Boxo043A.js} +8 -8
  69. package/ui-dist/assets/{info-A6RAGUB7-DdLeprH9.js → info-A6RAGUB7-DIe8iET8.js} +1 -1
  70. package/ui-dist/assets/{infoDiagram-RXCK75RN-B1aPG_BB.js → infoDiagram-RXCK75RN-Dik-rzpk.js} +1 -1
  71. package/ui-dist/assets/{ishikawaDiagram-5VMMS53U-ChG5EVuT.js → ishikawaDiagram-5VMMS53U-Ccb-hHW6.js} +1 -1
  72. package/ui-dist/assets/{it-IT-JPQ66NNP-CVy3c_Ht.js → it-IT-JPQ66NNP-6_sPHBVO.js} +1 -1
  73. package/ui-dist/assets/{ja-JP-DBVTYXUO-EcX4mq4z.js → ja-JP-DBVTYXUO-DgY_5_c8.js} +1 -1
  74. package/ui-dist/assets/{journeyDiagram-EYS64GPL-BZ4Ytc1U.js → journeyDiagram-EYS64GPL-CgzxmpyV.js} +1 -1
  75. package/ui-dist/assets/{kaa-6HZHGXH3-BwP9az-p.js → kaa-6HZHGXH3-glmGx672.js} +1 -1
  76. package/ui-dist/assets/{kab-KAB-ZGHBKWFO-By-AIEWs.js → kab-KAB-ZGHBKWFO--G7baVL0.js} +1 -1
  77. package/ui-dist/assets/{kanban-definition-3QL26DDD-Dm8bYrkM.js → kanban-definition-3QL26DDD-D6TnbrdQ.js} +1 -1
  78. package/ui-dist/assets/{kk-KZ-P5N5QNE5-DYNjxBd-.js → kk-KZ-P5N5QNE5-D3Vn0qgF.js} +1 -1
  79. package/ui-dist/assets/{km-KH-HSX4SM5Z-DS2ZYG-3.js → km-KH-HSX4SM5Z-CAHt3o8M.js} +1 -1
  80. package/ui-dist/assets/{ko-KR-MTYHY66A-DOz4vl1z.js → ko-KR-MTYHY66A-N3tCiPap.js} +1 -1
  81. package/ui-dist/assets/{ku-TR-6OUDTVRD-CxEEWxJq.js → ku-TR-6OUDTVRD-CSZFwS--.js} +1 -1
  82. package/ui-dist/assets/{line-B65qaCJb.js → line-BhVZwKwh.js} +1 -1
  83. package/ui-dist/assets/{lt-LT-XHIRWOB4-CkgB2O8i.js → lt-LT-XHIRWOB4-DuSlkfc-.js} +1 -1
  84. package/ui-dist/assets/{lv-LV-5QDEKY6T-BUDeq4Hb.js → lv-LV-5QDEKY6T-COuWGNLd.js} +1 -1
  85. package/ui-dist/assets/{mermaid-parser.core-C60rNywA.js → mermaid-parser.core-DlqbfUOM.js} +3 -3
  86. package/ui-dist/assets/{mindmap-definition-FBJOCRG2-DAu41qFN.js → mindmap-definition-FBJOCRG2-D9wLjZXa.js} +1 -1
  87. package/ui-dist/assets/{mr-IN-CRQNXWMA-DtuuryqC.js → mr-IN-CRQNXWMA-Bv4WHAzM.js} +1 -1
  88. package/ui-dist/assets/{my-MM-5M5IBNSE-CC79-XBH.js → my-MM-5M5IBNSE-BNltBCCh.js} +1 -1
  89. package/ui-dist/assets/{nb-NO-T6EIAALU-CKNIbK-0.js → nb-NO-T6EIAALU-DgsGabVE.js} +1 -1
  90. package/ui-dist/assets/{nl-NL-IS3SIHDZ-B3dYZhvS.js → nl-NL-IS3SIHDZ-MPMxu0cH.js} +1 -1
  91. package/ui-dist/assets/{nn-NO-6E72VCQL-CdPrOnP4.js → nn-NO-6E72VCQL-CY-NT6bD.js} +1 -1
  92. package/ui-dist/assets/{oc-FR-POXYY2M6-DUmzGjKc.js → oc-FR-POXYY2M6-BCWtA2dJ.js} +1 -1
  93. package/ui-dist/assets/{pa-IN-N4M65BXN-DH39ZTHj.js → pa-IN-N4M65BXN-CU1D5Lce.js} +1 -1
  94. package/ui-dist/assets/{packet-AYTQ26CC-DdR4jEOZ.js → packet-AYTQ26CC-DCMIIosG.js} +1 -1
  95. package/ui-dist/assets/{pegDiagram-XKGWAZYB-Dx1lj8MV.js → pegDiagram-XKGWAZYB-CpU2aj-A.js} +1 -1
  96. package/ui-dist/assets/percentages-BXMCSKIN-CMz17NMy.js +1 -0
  97. package/ui-dist/assets/{pie-WAS4IAKB-cVrV21tR.js → pie-WAS4IAKB-BEVkH0em.js} +1 -1
  98. package/ui-dist/assets/{pieDiagram-E7YTZNPT-CcvgLYQz.js → pieDiagram-E7YTZNPT-D-jyX8nJ.js} +1 -1
  99. package/ui-dist/assets/{pl-PL-T2D74RX3-BNYpL8df.js → pl-PL-T2D74RX3-CwNWACCb.js} +1 -1
  100. package/ui-dist/assets/{pt-BR-5N22H2LF-RWmGHl_8.js → pt-BR-5N22H2LF-DCs1W5P0.js} +1 -1
  101. package/ui-dist/assets/{pt-PT-UZXXM6DQ-smq6YmTY.js → pt-PT-UZXXM6DQ-Bm9Hlh9S.js} +1 -1
  102. package/ui-dist/assets/{quadrantDiagram-AXDQQJYC-C4xDsL0E.js → quadrantDiagram-AXDQQJYC-BqzJD4zL.js} +1 -1
  103. package/ui-dist/assets/{radar-RG4KPBEZ-DYaemlGZ.js → radar-RG4KPBEZ-B6T3SZ4z.js} +1 -1
  104. package/ui-dist/assets/{railroad-74A4TZTK-BbRg5RPZ.js → railroad-74A4TZTK-BPKCaP4g.js} +1 -1
  105. package/ui-dist/assets/railroad-abnf-HS5TGJTU-RL2kk25t.js +1 -0
  106. package/ui-dist/assets/railroad-ebnf-LZEXJU2U-NY4mALmg.js +1 -0
  107. package/ui-dist/assets/railroad-peg-WCYAUIDC-BNAC9MGy.js +1 -0
  108. package/ui-dist/assets/{railroadDiagram-O6MQD6OU-CR1fbGhX.js → railroadDiagram-O6MQD6OU-CzTuUKE-.js} +1 -1
  109. package/ui-dist/assets/{requirementDiagram-EFPCY7ZU-CFp52i96.js → requirementDiagram-EFPCY7ZU-Bly8_reu.js} +1 -1
  110. package/ui-dist/assets/{ro-RO-JPDTUUEW-BOjKaxCz.js → ro-RO-JPDTUUEW-DbKkWzmT.js} +1 -1
  111. package/ui-dist/assets/{ru-RU-B4JR7IUQ-DOK2ZlyX.js → ru-RU-B4JR7IUQ-C7y8hptt.js} +1 -1
  112. package/ui-dist/assets/{sankeyDiagram-P5KCCOFB-CZWdGNnS.js → sankeyDiagram-P5KCCOFB-BNe1jsYh.js} +1 -1
  113. package/ui-dist/assets/{sequenceDiagram-WJ2MYXX4-D4X03yFA.js → sequenceDiagram-WJ2MYXX4-jpU3VDzA.js} +1 -1
  114. package/ui-dist/assets/{si-LK-N5RQ5JYF-BtKkEPfN.js → si-LK-N5RQ5JYF-DsyN9eZC.js} +1 -1
  115. package/ui-dist/assets/{sk-SK-C5VTKIMK-DehBWGkI.js → sk-SK-C5VTKIMK-C3GmutL2.js} +1 -1
  116. package/ui-dist/assets/{sl-SI-NN7IZMDC-ClR46UYx.js → sl-SI-NN7IZMDC-C6dxM6aa.js} +1 -1
  117. package/ui-dist/assets/{stateDiagram-HBIQ2CUA-Bg1Uy2K-.js → stateDiagram-HBIQ2CUA-B2ZRnydN.js} +1 -1
  118. package/ui-dist/assets/stateDiagram-v2-4QOOHH4V-BUscqu-N.js +1 -0
  119. package/ui-dist/assets/subset-shared.chunk-CRXudW0i.js +1 -0
  120. package/ui-dist/assets/{subset-worker.chunk-BLppPGco.js → subset-worker.chunk-WItGSQq_.js} +1 -1
  121. package/ui-dist/assets/{sv-SE-XGPEYMSR-Cq54FLpH.js → sv-SE-XGPEYMSR-BPU1z_vz.js} +1 -1
  122. package/ui-dist/assets/{swimlanes-XN3QIQJK-Ca4vLBMp.js → swimlanes-XN3QIQJK-BuYIN15M.js} +1 -1
  123. package/ui-dist/assets/swimlanesDiagram-VK2B7HYN-Cn_HC7uw.js +8 -0
  124. package/ui-dist/assets/{ta-IN-2NMHFXQM-SCh3n0lB.js → ta-IN-2NMHFXQM-AJVbdGTO.js} +1 -1
  125. package/ui-dist/assets/{th-TH-HPSO5L25-BotlAjVv.js → th-TH-HPSO5L25-B1vvYNmv.js} +1 -1
  126. package/ui-dist/assets/{timeline-definition-24CTP7MA-CjHCKN4P.js → timeline-definition-24CTP7MA-Bld3Oj9i.js} +1 -1
  127. package/ui-dist/assets/{tr-TR-DEFEU3FU-B4u6Au2y.js → tr-TR-DEFEU3FU-C_emJDca.js} +1 -1
  128. package/ui-dist/assets/{treeView-Q6P3EWNA-CKMtikLc.js → treeView-Q6P3EWNA-CQEi50Re.js} +1 -1
  129. package/ui-dist/assets/{treemap-WGGIJYW6-B51xYeX7.js → treemap-WGGIJYW6-D3gRwGbr.js} +1 -1
  130. package/ui-dist/assets/{uk-UA-QMV73CPH-CtQkKgv_.js → uk-UA-QMV73CPH-B69Ddo0p.js} +1 -1
  131. package/ui-dist/assets/{vennDiagram-4TSXK5OY-CSH3IvAD.js → vennDiagram-4TSXK5OY-BWtR81LD.js} +1 -1
  132. package/ui-dist/assets/{vi-VN-M7AON7JQ-CjZyv0HH.js → vi-VN-M7AON7JQ-ByM0OkIF.js} +1 -1
  133. package/ui-dist/assets/{wardley-WFR3VGLG-wnJkewtF.js → wardley-WFR3VGLG-DpBUmo8s.js} +1 -1
  134. package/ui-dist/assets/{wardleyDiagram-VM6X3IG4-BJuisjH-.js → wardleyDiagram-VM6X3IG4-n39Dh9vZ.js} +1 -1
  135. package/ui-dist/assets/{xychartDiagram-S5SC5T6Z-hiDu0XBA.js → xychartDiagram-S5SC5T6Z-D8-lcdGr.js} +1 -1
  136. package/ui-dist/assets/{zh-CN-LNUGB5OW-DyyyDDxj.js → zh-CN-LNUGB5OW-g_S93sCp.js} +1 -1
  137. package/ui-dist/assets/{zh-HK-E62DVLB3-Ch2pxiFR.js → zh-HK-E62DVLB3-B3J_lyrF.js} +1 -1
  138. package/ui-dist/assets/{zh-TW-RAJ6MFWO-CSf1_B6H.js → zh-TW-RAJ6MFWO-mYLP5aqQ.js} +1 -1
  139. package/ui-dist/index.html +1 -1
  140. package/ui-dist/assets/architecture-7GRP2DOG-8nO9N-PA.js +0 -1
  141. package/ui-dist/assets/channel-uzdT5KPV.js +0 -1
  142. package/ui-dist/assets/classDiagram-DTDB5LWJ-CodHh4yt.js +0 -1
  143. package/ui-dist/assets/classDiagram-v2-JRS7N3AN-CodHh4yt.js +0 -1
  144. package/ui-dist/assets/eventmodeling-NTZA5JFV-CLxW34Y6.js +0 -1
  145. package/ui-dist/assets/flowDiagram-A5DVABFB-mMONVpxe.js +0 -1
  146. package/ui-dist/assets/image-GAAHSSAO-D1P4Y62B.js +0 -1
  147. package/ui-dist/assets/percentages-BXMCSKIN-d5p7s-wT.js +0 -1
  148. package/ui-dist/assets/railroad-abnf-HS5TGJTU-BoiCOpxv.js +0 -1
  149. package/ui-dist/assets/railroad-ebnf-LZEXJU2U-ArFqgLSZ.js +0 -1
  150. package/ui-dist/assets/railroad-peg-WCYAUIDC-BAks8GCx.js +0 -1
  151. package/ui-dist/assets/stateDiagram-v2-4QOOHH4V-Ci4MD4Pt.js +0 -1
  152. package/ui-dist/assets/subset-shared.chunk-DQ-JqEaX.js +0 -1
  153. package/ui-dist/assets/swimlanesDiagram-VK2B7HYN-BKiafpMh.js +0 -8
@@ -223,10 +223,16 @@ var BINDING_FIELDS = [
223
223
  "startBinding",
224
224
  "endBinding"
225
225
  ];
226
+ var DataUrl = z.custom(isNonEmptyString, {
227
+ message: "dataURL must be a non-empty string"
228
+ });
229
+ var FileMimeType = z.custom(isNonEmptyString, {
230
+ message: "mimeType must be a non-empty string"
231
+ });
226
232
  var SceneFile = z.object({
227
233
  id: FileId,
228
- mimeType: z.string(),
229
- dataURL: z.string(),
234
+ mimeType: FileMimeType,
235
+ dataURL: DataUrl,
230
236
  created: z.number(),
231
237
  lastRetrieved: z.number().optional()
232
238
  });
@@ -381,6 +387,13 @@ var DescribedElement = z.object({
381
387
  to: ElementId.nullish(),
382
388
  style: DescribedStyle.nullish()
383
389
  });
390
+ var Overlap = z.object({
391
+ a: ElementId,
392
+ b: ElementId,
393
+ /** Size of the intersecting region, in px. */
394
+ width: z.number(),
395
+ height: z.number()
396
+ });
384
397
  var SceneDescription = z.object({
385
398
  sceneId: SceneId,
386
399
  name: z.string(),
@@ -389,6 +402,10 @@ var SceneDescription = z.object({
389
402
  updatedAgoMs: z.number().int(),
390
403
  frames: z.array(DescribedFrame),
391
404
  elements: z.array(DescribedElement),
405
+ /** Worst first, and capped — see `MAX_REPORTED_OVERLAPS`. */
406
+ overlaps: z.array(Overlap),
407
+ /** Every collision found, including the ones `overlaps` was truncated past. */
408
+ overlapCount: z.number().int().nonnegative(),
392
409
  detail: DetailLevel
393
410
  });
394
411
  var DescribedEdge = z.object({
@@ -726,8 +743,30 @@ var HOUSE = {
726
743
  external: { strokeColor: "#1e1e1e", backgroundColor: "transparent" },
727
744
  hotspot: { strokeColor: "#e03131", backgroundColor: "#ffc9c9" }
728
745
  },
729
- sizes: { service: [180, 80], icon: 64, framePad: 40 },
730
- spacing: { h: 60, v: 100 }
746
+ sizes: {
747
+ /** The floor a labelled shape starts from, and the size an unlabelled one keeps. */
748
+ service: [180, 80],
749
+ icon: 64,
750
+ framePad: 40,
751
+ /** Breathing room around a bound label. Wider than upstream's 5 px, which lets text
752
+ * touch the stroke. */
753
+ labelPadX: 16,
754
+ labelPadY: 12,
755
+ /** Past this a label wraps instead of widening. A 400 px box holding one line reads
756
+ * as a banner, not a node. */
757
+ maxBox: 280
758
+ },
759
+ spacing: { h: 60, v: 100 },
760
+ /**
761
+ * Every computed size rounds up to this.
762
+ *
763
+ * `guides/layout.md` already tells the reader to keep coordinates on a 20 px grid so a
764
+ * nudge stays aligned; sizes derived from measured text have to land on it too. It is
765
+ * also what answers `adr/0004`'s objection to measuring at all — that per-box widths
766
+ * differing by a few pixels make a rank of five look ragged. Quantised, they do not
767
+ * differ by a few pixels: they are equal or they are 20 apart on purpose.
768
+ */
769
+ grid: 20
731
770
  };
732
771
  var CreatableType = z.enum(["rectangle", "diamond", "ellipse", "text", "line"], {
733
772
  error: (issue) => issue.input === "arrow" ? "arrow rejected \u2014 use chalk_connect(fromId, toId), it handles the bindings" : `unknown element type ${JSON.stringify(issue.input)} \u2014 valid: rectangle, diamond, ellipse, text, line, and chalk_connect for arrows`
@@ -898,7 +937,17 @@ var ReadMeOutput = z.object({
898
937
  var writeResult = {
899
938
  sceneId: SceneId,
900
939
  sceneVersion: z.number().int(),
901
- broadcastTo: z.number().int().nonnegative()
940
+ broadcastTo: z.number().int().nonnegative(),
941
+ /**
942
+ * Something is buried on the canvas after this write — or `null`, which is the normal
943
+ * case and says so by being absent rather than by saying "none".
944
+ *
945
+ * On **every** write rather than on a read, because the alternative is that the agent
946
+ * has to decide to go and look, and the only tool that used to answer "did that land
947
+ * badly?" was `chalk_screenshot` — a rendered image, the most expensive call here. A
948
+ * layout mistake now costs one sentence at the moment it is made.
949
+ */
950
+ overlapWarning: z.string().nullable()
902
951
  };
903
952
  var ToolRejection = z.object({
904
953
  id: ElementId,
@@ -1050,10 +1099,27 @@ var SearchIconsOutput = z.object({
1050
1099
  */
1051
1100
  note: z.string().nullable()
1052
1101
  });
1102
+ var IconPlacement = z.enum(["above", "below", "left", "right", "badge", "inside"]);
1053
1103
  var PlaceIconInput = z.object({
1054
1104
  iconId: IconId,
1055
- x: z.number(),
1056
- y: z.number(),
1105
+ /**
1106
+ * Absolute position. Optional **only** when `attachTo` is given — one or the other has
1107
+ * to say where the icon goes, and the error names the missing half.
1108
+ */
1109
+ x: z.number().optional(),
1110
+ y: z.number().optional(),
1111
+ /**
1112
+ * Attach the icon to an existing element instead of positioning it by hand.
1113
+ *
1114
+ * This is the difference between an icon that is *part of* a node and one that merely
1115
+ * happens to be near it today. An attached icon is recorded in
1116
+ * `customData.chalk.anchorIds` and travels with its element through every arrange
1117
+ * operation, `layout-layered` included — which is what stops a set of vendor marks being
1118
+ * left stranded across the canvas the first time the boxes are laid out.
1119
+ */
1120
+ attachTo: ElementId.optional(),
1121
+ /** Where it sits relative to `attachTo`. Ignored without it. Defaults to `above`. */
1122
+ placement: IconPlacement.optional(),
1057
1123
  /** Longest side in px. Defaults to `HOUSE.sizes.icon`; the aspect comes from the icon. */
1058
1124
  size: z.number().positive().optional(),
1059
1125
  /** A caption centred beneath it. An unlabelled icon says "a thing was here". */
@@ -1311,6 +1377,11 @@ var unknownIcon = (id, packs) => err("UNKNOWN_ICON", `no icon "${id}" in the cat
1311
1377
  tool: "chalk_search_icons",
1312
1378
  detail: { id }
1313
1379
  });
1380
+ var iconNeedsAPlace = (id) => err("ICON_NEEDS_A_PLACE", `nowhere to put "${id}" \u2014 pass attachTo, or both x and y`, {
1381
+ hint: "attachTo: the element it belongs to (it then travels with that element through every layout). x/y only for an icon that belongs to the canvas rather than to a node",
1382
+ tool: "chalk_place_icon",
1383
+ detail: { id }
1384
+ });
1314
1385
  var packInstallFailed = (pack, reason) => err("PACK_INSTALL_FAILED", `could not install the icon pack "${pack}": ${reason}`, {
1315
1386
  hint: "check the machine can reach the npm registry, or install the package yourself and point chalk_install_pack at it with `from`",
1316
1387
  tool: "chalk_install_pack",
@@ -1430,6 +1501,174 @@ function installDomShim() {
1430
1501
  };
1431
1502
  }
1432
1503
 
1504
+ // src/domain/style/text-metrics.ts
1505
+ var EXCALIFONT_EM = {
1506
+ " ": 0.4,
1507
+ "!": 0.314,
1508
+ '"': 0.371,
1509
+ "#": 0.783,
1510
+ $: 0.721,
1511
+ "%": 0.928,
1512
+ "&": 0.718,
1513
+ "'": 0.218,
1514
+ "(": 0.441,
1515
+ ")": 0.402,
1516
+ "*": 0.525,
1517
+ "+": 0.55,
1518
+ ",": 0.257,
1519
+ "-": 0.411,
1520
+ ".": 0.274,
1521
+ "/": 0.561,
1522
+ "0": 0.664,
1523
+ "1": 0.427,
1524
+ "2": 0.7,
1525
+ "3": 0.608,
1526
+ "4": 0.585,
1527
+ "5": 0.618,
1528
+ "6": 0.64,
1529
+ "7": 0.558,
1530
+ "8": 0.636,
1531
+ "9": 0.629,
1532
+ ":": 0.264,
1533
+ ";": 0.298,
1534
+ "<": 0.55,
1535
+ "=": 0.55,
1536
+ ">": 0.55,
1537
+ "?": 0.466,
1538
+ "@": 0.829,
1539
+ A: 0.676,
1540
+ B: 0.761,
1541
+ C: 0.629,
1542
+ D: 0.78,
1543
+ E: 0.707,
1544
+ F: 0.661,
1545
+ G: 0.78,
1546
+ H: 0.573,
1547
+ I: 0.545,
1548
+ J: 0.569,
1549
+ K: 0.613,
1550
+ L: 0.543,
1551
+ M: 0.766,
1552
+ N: 0.632,
1553
+ O: 0.767,
1554
+ P: 0.698,
1555
+ Q: 0.768,
1556
+ R: 0.736,
1557
+ S: 0.622,
1558
+ T: 0.857,
1559
+ U: 0.73,
1560
+ V: 0.592,
1561
+ W: 0.786,
1562
+ X: 0.628,
1563
+ Y: 0.564,
1564
+ Z: 0.832,
1565
+ "[": 0.472,
1566
+ "\\": 0.589,
1567
+ "]": 0.497,
1568
+ "^": 0.51,
1569
+ _: 0.67,
1570
+ "`": 0.6,
1571
+ a: 0.576,
1572
+ b: 0.555,
1573
+ c: 0.504,
1574
+ d: 0.605,
1575
+ e: 0.537,
1576
+ f: 0.497,
1577
+ g: 0.555,
1578
+ h: 0.567,
1579
+ i: 0.244,
1580
+ j: 0.328,
1581
+ k: 0.533,
1582
+ l: 0.225,
1583
+ m: 0.663,
1584
+ n: 0.526,
1585
+ o: 0.6,
1586
+ p: 0.537,
1587
+ q: 0.539,
1588
+ r: 0.412,
1589
+ s: 0.543,
1590
+ t: 0.553,
1591
+ u: 0.548,
1592
+ v: 0.525,
1593
+ w: 0.693,
1594
+ x: 0.591,
1595
+ y: 0.53,
1596
+ z: 0.572,
1597
+ "{": 0.504,
1598
+ "|": 0.299,
1599
+ "}": 0.544,
1600
+ "~": 0.669,
1601
+ // Beyond ASCII, only what actually turns up in a diagram. `·` earns its place: it is
1602
+ // the separator this project's own labels use ("Dev machine · manage.sh dist"), and the
1603
+ // block fallback below would over-estimate it nearly threefold.
1604
+ "\xB7": 0.2,
1605
+ "\u2013": 0.702,
1606
+ "\u2014": 0.935,
1607
+ "\u2026": 0.709,
1608
+ "\u2022": 0.522,
1609
+ "\u2019": 0.304,
1610
+ "\u201C": 0.412,
1611
+ "\u201D": 0.428,
1612
+ "\xD7": 0.55,
1613
+ "\xB0": 0.412,
1614
+ "\xA3": 0.71,
1615
+ "\u20AC": 0.713,
1616
+ \u00E9: 0.551,
1617
+ \u00FC: 0.508,
1618
+ \u00F1: 0.526,
1619
+ "\u2713": 0.749
1620
+ };
1621
+ var fallbackEm = (codePoint) => {
1622
+ if (codePoint < 32) return 0;
1623
+ if (codePoint <= 591) return 0.56;
1624
+ if (codePoint >= 8192 && codePoint <= 8303) return 0.95;
1625
+ if (codePoint >= 126976) return 1.4;
1626
+ return 1;
1627
+ };
1628
+ var emWidth = (character) => {
1629
+ const known = EXCALIFONT_EM[character];
1630
+ if (known !== void 0) return known;
1631
+ return fallbackEm(character.codePointAt(0) ?? 0);
1632
+ };
1633
+ function measureLine(text, fontSize) {
1634
+ let em = 0;
1635
+ for (const character of text) em += emWidth(character);
1636
+ return em * fontSize;
1637
+ }
1638
+ function wrapLines(text, fontSize, maxWidth) {
1639
+ const paragraphs = text.split("\n");
1640
+ const lines = [];
1641
+ for (const paragraph of paragraphs) {
1642
+ const words = paragraph.split(" ").filter((word) => word !== "");
1643
+ if (words.length === 0) {
1644
+ lines.push("");
1645
+ continue;
1646
+ }
1647
+ let line = "";
1648
+ for (const word of words) {
1649
+ const candidate = line === "" ? word : `${line} ${word}`;
1650
+ if (line !== "" && measureLine(candidate, fontSize) > maxWidth) {
1651
+ lines.push(line);
1652
+ line = word;
1653
+ } else {
1654
+ line = candidate;
1655
+ }
1656
+ }
1657
+ lines.push(line);
1658
+ }
1659
+ return lines;
1660
+ }
1661
+
1662
+ // src/adapters/excalidraw/text-metrics.ts
1663
+ var fontSizeOf = (fontString) => {
1664
+ const match = /(\d+(?:\.\d+)?)px/.exec(fontString);
1665
+ const size = match?.[1];
1666
+ return size === void 0 ? 20 : Number.parseFloat(size);
1667
+ };
1668
+ var createTextMetricsProvider = () => ({
1669
+ getLineWidth: (text, fontString) => measureLine(text, fontSizeOf(fontString))
1670
+ });
1671
+
1433
1672
  // src/adapters/excalidraw/node-expander.ts
1434
1673
  var WARM_UP = [
1435
1674
  { type: "rectangle", id: "warmup-a", x: 0, y: 0, width: 10, height: 10, label: { text: "a" } },
@@ -1448,7 +1687,8 @@ var converter = null;
1448
1687
  async function loadConverter() {
1449
1688
  const uninstall = installDomShim();
1450
1689
  try {
1451
- const { convertToExcalidrawElements } = await import('./prod-KHI2WQT3.js');
1690
+ const { convertToExcalidrawElements, setCustomTextMetricsProvider } = await import('./prod-KHI2WQT3.js');
1691
+ setCustomTextMetricsProvider(createTextMetricsProvider());
1452
1692
  convertToExcalidrawElements([...WARM_UP], { regenerateIds: false });
1453
1693
  return ok(convertToExcalidrawElements);
1454
1694
  } catch (thrown) {
@@ -1457,6 +1697,8 @@ async function loadConverter() {
1457
1697
  uninstall();
1458
1698
  }
1459
1699
  }
1700
+ var NEEDS_STAND_IN = /* @__PURE__ */ new Set(["image", "frame", "embeddable"]);
1701
+ var standIn = (element) => NEEDS_STAND_IN.has(element.type) ? { ...element, type: "rectangle" } : element;
1460
1702
  function createNodeSkeletonExpander() {
1461
1703
  return {
1462
1704
  async expand(skeletons, context) {
@@ -1466,7 +1708,7 @@ function createNodeSkeletonExpander() {
1466
1708
  if (!loaded.ok) return loaded;
1467
1709
  let raw;
1468
1710
  try {
1469
- const convertible = (context ?? []).filter((element) => element.type !== "frame");
1711
+ const convertible = (context ?? []).map(standIn);
1470
1712
  raw = loaded.value([...convertible, ...skeletons], { regenerateIds: false });
1471
1713
  } catch (thrown) {
1472
1714
  return fail(expansionFailed(describeThrown(thrown)));
@@ -1503,6 +1745,6 @@ var stable = (element) => {
1503
1745
  return rest;
1504
1746
  };
1505
1747
 
1506
- export { AnnotateInput, AnnotateOutput, ApiError, ArrangeOutput, ArrangeToolInput, BINDING_FIELDS, ClientMessage, ConnectOutput, ConnectToolInput, CreateElementsInput, CreateElementsOutput, 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, idCollision, isFail, isOk, noBoundLabel, noBrowser, noScenes, notAPack, notARepo, ok, packInstallFailed, partition, pathOutsideRepo, point, portUnavailable, refusedFieldMessage, sceneFileMissing, staleVersion, storeUnavailable, unknownElement, unknownIcon, unknownScene, unknownSnapshot, unreadableSceneFile };
1507
- //# sourceMappingURL=chunk-VTFAXWQJ.js.map
1508
- //# sourceMappingURL=chunk-VTFAXWQJ.js.map
1748
+ 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 };
1749
+ //# sourceMappingURL=chunk-XDK5UUTO.js.map
1750
+ //# sourceMappingURL=chunk-XDK5UUTO.js.map