ryugi-artifacts 1.47.0 → 1.48.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 (242) hide show
  1. package/dist/cli.cjs +34 -83
  2. package/dist/server.cjs +277 -134
  3. package/dist/viewer/ArtboardLayout-KQmamERB.js +12 -0
  4. package/dist/viewer/ArtifactList-BX7uyG0a.js +1 -0
  5. package/dist/viewer/{AutoPublishPrompt-DMbPBIa7.js → AutoPublishPrompt-hLdShrr1.js} +1 -1
  6. package/dist/viewer/{Avatar-sJ6BwmM4.js → Avatar-dVuGXaGv.js} +1 -1
  7. package/dist/viewer/{Canvas-BRcbK9Oh.js → Canvas-DR9g_0g-.js} +1 -1
  8. package/dist/viewer/DocumentLayout-BGmMGPWu.js +2 -0
  9. package/dist/viewer/{DocumentPage-tHCa_QBi.js → DocumentPage-C7pveaCL.js} +3 -3
  10. package/dist/viewer/{HtmlLayout-zDyQayIW.js → HtmlLayout-DN_RC8ER.js} +1 -1
  11. package/dist/viewer/{MenuSubmenuTrigger-DbKKTh4p.js → MenuSubmenuTrigger-COtUZ7rK.js} +1 -1
  12. package/dist/viewer/{PopoverPopup-DCSCUVit.js → PopoverPopup-DbicV8QT.js} +1 -1
  13. package/dist/viewer/PreviewLayout-bKeGBF-n.js +2 -0
  14. package/dist/viewer/{Select-s1rLjxSD.js → Select-CyQRjxXp.js} +1 -1
  15. package/dist/viewer/{SelectScrollUpArrow-Bf8GSGJi.js → SelectScrollUpArrow-BquMl3kO.js} +1 -1
  16. package/dist/viewer/{SettingsDialog-CtG16kqq.js → SettingsDialog-DALEpAnA.js} +1 -1
  17. package/dist/viewer/{SnapshotDocument-C6M98-Xm.js → SnapshotDocument-B4d-X_r-.js} +1 -1
  18. package/dist/viewer/{Switch-CiQE6IIA.js → Switch-C9DrBYMm.js} +1 -1
  19. package/dist/viewer/{TooltipPopup-3z_XuZz6.js → TooltipPopup-BRiHjngV.js} +1 -1
  20. package/dist/viewer/{VirtualizedEditor-D9Ivycdp-C2midg2t.js → VirtualizedEditor-D9Ivycdp-D5vZigul.js} +1 -1
  21. package/dist/viewer/{VirtualizedRenderer-C_d95FXi-CjilBxHD.js → VirtualizedRenderer-C_d95FXi-jDSvsO_S.js} +1 -1
  22. package/dist/viewer/{WarningsBadge-CwTzz_8O.js → WarningsBadge-Dq9MCOka.js} +1 -1
  23. package/dist/viewer/{abnfDiagram-VCTEODGH-B8FH4uyq.js → abnfDiagram-VCTEODGH-DvH3n-ag.js} +1 -1
  24. package/dist/viewer/{ar-SA-G6X2FPQ2-G-dKeKsf.js → ar-SA-G6X2FPQ2-D11wBsfI.js} +1 -1
  25. package/dist/viewer/{architecture-7GRP2DOG-BDHw3fSb.js → architecture-7GRP2DOG-getNBIXu.js} +1 -1
  26. package/dist/viewer/{architectureDiagram-5GKGNRK7-CaMlHVkz.js → architectureDiagram-5GKGNRK7-DacvQVV0.js} +1 -1
  27. package/dist/viewer/{atoms-C-iIWE8G.js → atoms-DfNSS4CQ.js} +2 -2
  28. package/dist/viewer/{az-AZ-76LH7QW2-DksynjeT.js → az-AZ-76LH7QW2-DmjLQk0z.js} +1 -1
  29. package/dist/viewer/{bg-BG-XCXSNQG7-3bPdXQKI.js → bg-BG-XCXSNQG7-Dq5qUQzr.js} +1 -1
  30. package/dist/viewer/{blockDiagram-I7D4REHJ-DBEfOaV6.js → blockDiagram-I7D4REHJ-DYFZvVtR.js} +1 -1
  31. package/dist/viewer/{bn-BD-2XOGV67Q-DBOxHyif.js → bn-BD-2XOGV67Q-CB5ihzW3.js} +1 -1
  32. package/dist/viewer/{c4Diagram-7LVT6UL2-DypJ8XID.js → c4Diagram-7LVT6UL2-CItIeFst.js} +1 -1
  33. package/dist/viewer/{ca-ES-6MX7JW3Y-eQQJVA5S.js → ca-ES-6MX7JW3Y-B1vvpFRz.js} +1 -1
  34. package/dist/viewer/{channel-Ci7EBqIH.js → channel-NSE57aBD.js} +9 -9
  35. package/dist/viewer/channel-tQ-5o9x1.js +1 -0
  36. package/dist/viewer/{chunk-4HAMMTFA-CPW78UTT.js → chunk-4HAMMTFA-BXjvEkTf.js} +1 -1
  37. package/dist/viewer/{chunk-75Z2AOVW-Eg087bVQ.js → chunk-75Z2AOVW-Cp5QYgru.js} +1 -1
  38. package/dist/viewer/{chunk-DU6HZSFF-CfZf-GY2.js → chunk-DU6HZSFF-Co37jFu9.js} +1 -1
  39. package/dist/viewer/{chunk-EIO257PC-CH0xWeCX.js → chunk-EIO257PC-BzoJi82T.js} +1 -1
  40. package/dist/viewer/{chunk-F27PBJKO-BgYz98-j.js → chunk-F27PBJKO-SOAeS3VX.js} +1 -1
  41. package/dist/viewer/{chunk-GMAD6QVW--aiwO7Dy.js → chunk-GMAD6QVW-Ozh-1h9J.js} +1 -1
  42. package/dist/viewer/{chunk-GVQU2GXP-8IoaKmow.js → chunk-GVQU2GXP-DPXdyMxy.js} +1 -1
  43. package/dist/viewer/{chunk-IMKFNOWR-B8zIyzHy.js → chunk-IMKFNOWR-D3-fYgRw.js} +1 -1
  44. package/dist/viewer/{chunk-L3NEJ4N5-BG153wzp.js → chunk-L3NEJ4N5-CsXfjxgF.js} +1 -1
  45. package/dist/viewer/{chunk-OSK3NFVY-kL1QnHSt.js → chunk-OSK3NFVY-33dYvZp0.js} +1 -1
  46. package/dist/viewer/{chunk-P2QGCYS3-DaSq0O1p.js → chunk-P2QGCYS3-3KdzOSkK.js} +1 -1
  47. package/dist/viewer/{chunk-POPQ4Y6H-DoMhff9f.js → chunk-POPQ4Y6H-DLxpEPms.js} +1 -1
  48. package/dist/viewer/{chunk-PWAF6VOD-DPNah1Nl.js → chunk-PWAF6VOD-JePqG5w3.js} +1 -1
  49. package/dist/viewer/{chunk-SHT3W25Y-D4Ix0weD.js → chunk-SHT3W25Y-D83tEMVR.js} +1 -1
  50. package/dist/viewer/{chunk-SVP7TREG-CFsWFQLo.js → chunk-SVP7TREG-B1VK1C1g.js} +1 -1
  51. package/dist/viewer/{chunk-TICWLB2K-DUDaM3ko.js → chunk-TICWLB2K-Cn0lQFgz.js} +1 -1
  52. package/dist/viewer/classDiagram-ZZMXUADV-CbZZST1l.js +1 -0
  53. package/dist/viewer/classDiagram-v2-VYDZK3BY-CbZZST1l.js +1 -0
  54. package/dist/viewer/{cs-CZ-2BRQDIVT-BKYK1gJC.js → cs-CZ-2BRQDIVT-CMWJYUvu.js} +1 -1
  55. package/dist/viewer/{cynefin-OW5HDTMX-DKQm7set.js → cynefin-OW5HDTMX-Cg5yzGfm.js} +1 -1
  56. package/dist/viewer/{cynefinDiagram-5FMLGOSQ-BTLYyESY.js → cynefinDiagram-5FMLGOSQ-DosdMrh6.js} +1 -1
  57. package/dist/viewer/{da-DK-5WZEPLOC-BDQOs5QW.js → da-DK-5WZEPLOC-D64URQaK.js} +1 -1
  58. package/dist/viewer/{dagre-GXQ25YYZ-BReLfRXY.js → dagre-GXQ25YYZ-CTCCaVFG.js} +1 -1
  59. package/dist/viewer/{de-DE-XR44H4JA-DnO-n72L.js → de-DE-XR44H4JA-41XC-cAS.js} +1 -1
  60. package/dist/viewer/{diagram-S7CK7UJ4-CIpJgK0W.js → diagram-S7CK7UJ4-CxwnLwpO.js} +1 -1
  61. package/dist/viewer/{diagram-UQ7AKVKN-BAmnr00y.js → diagram-UQ7AKVKN-AcI8HsSg.js} +1 -1
  62. package/dist/viewer/{diagram-VSXAHHWV-yXfFdEzV.js → diagram-VSXAHHWV-DlvGSQbP.js} +1 -1
  63. package/dist/viewer/{diagram-VX7I27RA-DK6fKObi.js → diagram-VX7I27RA-BbKISGj6.js} +1 -1
  64. package/dist/viewer/{diagram-Z3DM3KII-CcjaP-Wb.js → diagram-Z3DM3KII-DNwxN4s8.js} +1 -1
  65. package/dist/viewer/{dist-Bq1g2ZBY.js → dist-BAhKEC7v.js} +1 -1
  66. package/dist/viewer/{dist-34Z5y-sW.js → dist-BPuOQwgt.js} +1 -1
  67. package/dist/viewer/{dist-CMOQFuRH.js → dist-BR3etSjd.js} +1 -1
  68. package/dist/viewer/{dist-DcHSVaY8.js → dist-BtMYPQ-R.js} +4 -4
  69. package/dist/viewer/{dist-Cao1XXjH.js → dist-Bxn9izx8.js} +1 -1
  70. package/dist/viewer/{dist-CvYwMJzs.js → dist-C89I1Syb.js} +1 -1
  71. package/dist/viewer/{dist-vA7Qcthq.js → dist-C8gjGXlt.js} +1 -1
  72. package/dist/viewer/{dist-krnWQQrk.js → dist-CCpihLKc.js} +1 -1
  73. package/dist/viewer/{dist-CJTFllzN.js → dist-CaHvwSHf.js} +1 -1
  74. package/dist/viewer/{dist-C6kyd9D5.js → dist-Cd5E_SnD.js} +1 -1
  75. package/dist/viewer/{dist-DEGw8J87.js → dist-ChkKwRhM.js} +1 -1
  76. package/dist/viewer/{dist-DPhrPdn7.js → dist-CjRmmbjs.js} +1 -1
  77. package/dist/viewer/{dist-DucsqYIQ.js → dist-Cl-9gKYC.js} +1 -1
  78. package/dist/viewer/{dist-Hq0lXHyb.js → dist-CsaZKHv_.js} +1 -1
  79. package/dist/viewer/{dist-DeA2ZVNf.js → dist-D5nVsU3q.js} +1 -1
  80. package/dist/viewer/{dist-C89SuqnV.js → dist-D8In6BWy.js} +1 -1
  81. package/dist/viewer/{dist-kKmy1XoA.js → dist-DHiNxYl_.js} +1 -1
  82. package/dist/viewer/{dist-yJb9Vu52.js → dist-DY-Y4Me7.js} +1 -1
  83. package/dist/viewer/{dist-BIRjT5Cm.js → dist-DfgStcdq.js} +1 -1
  84. package/dist/viewer/{dist-DNgj5LJI.js → dist-Do_avVXy.js} +1 -1
  85. package/dist/viewer/{dist-DU1DaNRm.js → dist-DznxxRh9.js} +1 -1
  86. package/dist/viewer/{dist-DT-JP7sR.js → dist-WPS0bgUa.js} +1 -1
  87. package/dist/viewer/{dist-CJ_Cksaa.js → dist-u7oPbGhJ.js} +1 -1
  88. package/dist/viewer/{dist-NMoHUAGb.js → dist-wui1iR0t.js} +1 -1
  89. package/dist/viewer/{ebnfDiagram-PWID7BFC-BMm9lHLY.js → ebnfDiagram-PWID7BFC-LIQ-mL74.js} +1 -1
  90. package/dist/viewer/{el-GR-BZB4AONW-D7unzbhC.js → el-GR-BZB4AONW-nf4SIDWy.js} +1 -1
  91. package/dist/viewer/{en-B4ZKOASM-CWe-bLtn.js → en-B4ZKOASM-C3uSsrzN.js} +1 -1
  92. package/dist/viewer/{erDiagram-RLTQ6QDP-DN9VJJci.js → erDiagram-RLTQ6QDP-CtP4cA8a.js} +1 -1
  93. package/dist/viewer/{es-ES-U4NZUMDT-Bvlm0b7z.js → es-ES-U4NZUMDT-D83QBRdb.js} +1 -1
  94. package/dist/viewer/{eu-ES-A7QVB2H4-B5LYsQUM.js → eu-ES-A7QVB2H4-C1SzxCFV.js} +1 -1
  95. package/dist/viewer/{eventmodeling-NTZA5JFV-3zELSLwV.js → eventmodeling-NTZA5JFV-Dzz8QjX3.js} +1 -1
  96. package/dist/viewer/{fa-IR-HGAKTJCU-ByVwwvt0.js → fa-IR-HGAKTJCU-DJ75mace.js} +1 -1
  97. package/dist/viewer/{fi-FI-Z5N7JZ37-B02R6zbK.js → fi-FI-Z5N7JZ37-D0oIoDPa.js} +1 -1
  98. package/dist/viewer/flowDiagram-HODETNUW-Z8rwwmKe.js +1 -0
  99. package/dist/viewer/{fr-FR-RHASNOE6-DU5uEvk0.js → fr-FR-RHASNOE6-CxrYpwSQ.js} +1 -1
  100. package/dist/viewer/{ganttDiagram-EL5Y4UJY-B6Swc8hj.js → ganttDiagram-EL5Y4UJY-Dm_GsqHo.js} +1 -1
  101. package/dist/viewer/{gitGraph-4MIJSDKK-DzPv0N39.js → gitGraph-4MIJSDKK-Cmsi3QFW.js} +1 -1
  102. package/dist/viewer/{gitGraphDiagram-WWUBYQGX-BfB2YcQN.js → gitGraphDiagram-WWUBYQGX-pE4QOFt6.js} +1 -1
  103. package/dist/viewer/{gl-ES-HMX3MZ6V-Bknu-aK_.js → gl-ES-HMX3MZ6V-W_AoCFMi.js} +1 -1
  104. package/dist/viewer/{he-IL-6SHJWFNN-DvF-jE5l.js → he-IL-6SHJWFNN-iVqaubIb.js} +1 -1
  105. package/dist/viewer/{hi-IN-IWLTKZ5I-BwE5Vdy-.js → hi-IN-IWLTKZ5I-BCJYxdcu.js} +1 -1
  106. package/dist/viewer/{hu-HU-A5ZG7DT2-DC5IoPMr.js → hu-HU-A5ZG7DT2-D_ufjwGq.js} +1 -1
  107. package/dist/viewer/{id-ID-SAP4L64H-BQQOVK8S.js → id-ID-SAP4L64H-ByGvK2Qg.js} +1 -1
  108. package/dist/viewer/{image-GAAHSSAO-B5FAAqHd.js → image-GAAHSSAO-DIF9SQU_.js} +1 -1
  109. package/dist/viewer/{imperative-BnxnQwIX.js → imperative-ChsionQQ.js} +1 -1
  110. package/dist/viewer/index.html +6 -6
  111. package/dist/viewer/index.js +2 -2
  112. package/dist/viewer/{info-A6RAGUB7-DObaDBqg.js → info-A6RAGUB7-CNgClLVH.js} +1 -1
  113. package/dist/viewer/{infoDiagram-27XIBGKW-Ci1G0del.js → infoDiagram-27XIBGKW-BZqe2QYh.js} +1 -1
  114. package/dist/viewer/{isElementDisabled-DPhqCAQ0.js → isElementDisabled-f0m04fH6.js} +1 -1
  115. package/dist/viewer/{ishikawaDiagram-5VMMS53U-B-_DVyWy.js → ishikawaDiagram-5VMMS53U-DVh4zNCI.js} +1 -1
  116. package/dist/viewer/{it-IT-JPQ66NNP-CIRzYaKh.js → it-IT-JPQ66NNP-Dv6_nr0a.js} +1 -1
  117. package/dist/viewer/{ja-JP-DBVTYXUO-DNw7FEG3.js → ja-JP-DBVTYXUO-KZ9e7KAQ.js} +1 -1
  118. package/dist/viewer/{journeyDiagram-3NMN7TZE-BmXpZge8.js → journeyDiagram-3NMN7TZE-Hrs-56h0.js} +1 -1
  119. package/dist/viewer/{kaa-6HZHGXH3-BYMal1K6.js → kaa-6HZHGXH3-D811ofJi.js} +1 -1
  120. package/dist/viewer/{kab-KAB-ZGHBKWFO-DD1uWHLa.js → kab-KAB-ZGHBKWFO-8_E4WiNI.js} +1 -1
  121. package/dist/viewer/{kanban-definition-UXKFOSKX-qtW-l6On.js → kanban-definition-UXKFOSKX-DDV_2Nle.js} +1 -1
  122. package/dist/viewer/{kk-KZ-P5N5QNE5-BP7tR0-R.js → kk-KZ-P5N5QNE5-XH-ncBcx.js} +1 -1
  123. package/dist/viewer/{km-KH-HSX4SM5Z-BocR_B80.js → km-KH-HSX4SM5Z-DfuMBSsH.js} +1 -1
  124. package/dist/viewer/{ko-KR-MTYHY66A-DDzKDqBI.js → ko-KR-MTYHY66A-UTuAQHeO.js} +1 -1
  125. package/dist/viewer/{ku-TR-6OUDTVRD-Df99BvvZ.js → ku-TR-6OUDTVRD-B6cXUJdZ.js} +1 -1
  126. package/dist/viewer/{lt-LT-XHIRWOB4-BRTkJx8W.js → lt-LT-XHIRWOB4-osfVDYh4.js} +1 -1
  127. package/dist/viewer/{lv-LV-5QDEKY6T-D2FIwSIq.js → lv-LV-5QDEKY6T-owEwthaJ.js} +1 -1
  128. package/dist/viewer/{mermaid-parser.core-Bn4VLJH2.js → mermaid-parser.core-D7qGh1wC.js} +3 -3
  129. package/dist/viewer/{mindmap-definition-YA3MSWOX-Ns9W_dM6.js → mindmap-definition-YA3MSWOX-CEjQFlyO.js} +1 -1
  130. package/dist/viewer/{motion-BjbNPUCa.js → motion-i-14Q28p.js} +1 -1
  131. package/dist/viewer/{mr-IN-CRQNXWMA-pFSqGIla.js → mr-IN-CRQNXWMA-Ble9F94R.js} +1 -1
  132. package/dist/viewer/{my-MM-5M5IBNSE-BJkXPRLV.js → my-MM-5M5IBNSE-CaN6NJFL.js} +1 -1
  133. package/dist/viewer/{nb-NO-T6EIAALU-8CumXBsx.js → nb-NO-T6EIAALU-BDiEiYiE.js} +1 -1
  134. package/dist/viewer/{nl-NL-IS3SIHDZ-z2dABa5l.js → nl-NL-IS3SIHDZ-C0QmOZo_.js} +1 -1
  135. package/dist/viewer/{nn-NO-6E72VCQL-Cv6FIS7h.js → nn-NO-6E72VCQL-CQAbAV7N.js} +1 -1
  136. package/dist/viewer/{oc-FR-POXYY2M6-Bn4Vpssx.js → oc-FR-POXYY2M6-00g3KTwj.js} +1 -1
  137. package/dist/viewer/{pa-IN-N4M65BXN-C0ml9H6B.js → pa-IN-N4M65BXN-zKA1yqPY.js} +1 -1
  138. package/dist/viewer/{packet-AYTQ26CC-Bgc4xsy7.js → packet-AYTQ26CC-Bbo7YLwV.js} +1 -1
  139. package/dist/viewer/{pegDiagram-XKGWAZYB-CNEuS3Em.js → pegDiagram-XKGWAZYB-Bva2VVTO.js} +1 -1
  140. package/dist/viewer/percentages-BXMCSKIN-B9m0MHwS.js +1 -0
  141. package/dist/viewer/{pie-WAS4IAKB-CfkFfG-Z.js → pie-WAS4IAKB-DR-1NEAB.js} +1 -1
  142. package/dist/viewer/{pieDiagram-E7YTZNPT-CjuArQr5.js → pieDiagram-E7YTZNPT-DHxiq9Xw.js} +1 -1
  143. package/dist/viewer/{pl-PL-T2D74RX3-CPNtMC-7.js → pl-PL-T2D74RX3-Ds5hI1PP.js} +1 -1
  144. package/dist/viewer/preview.html +4 -4
  145. package/dist/viewer/preview.js +1 -1
  146. package/dist/viewer/{prod-DkgTkPT0.js → prod-Bxq8Vdzv.js} +12 -12
  147. package/dist/viewer/{pt-BR-5N22H2LF-Df-iaFJF.js → pt-BR-5N22H2LF-D7XJA5jJ.js} +1 -1
  148. package/dist/viewer/{pt-PT-UZXXM6DQ-Dkn6lidV.js → pt-PT-UZXXM6DQ-uJtX9Kj1.js} +1 -1
  149. package/dist/viewer/{quadrantDiagram-AXDQQJYC-iw0683GO.js → quadrantDiagram-AXDQQJYC-C8X4P0Un.js} +1 -1
  150. package/dist/viewer/{radar-RG4KPBEZ-DlyWbVXF.js → radar-RG4KPBEZ-B2Nkysmm.js} +1 -1
  151. package/dist/viewer/{railroad-74A4TZTK-COQW-__X.js → railroad-74A4TZTK-CqyegNhY.js} +1 -1
  152. package/dist/viewer/{railroad-abnf-HS5TGJTU-k4rmb6Ba.js → railroad-abnf-HS5TGJTU-D437JbRt.js} +1 -1
  153. package/dist/viewer/{railroad-ebnf-LZEXJU2U-6xlClmJB.js → railroad-ebnf-LZEXJU2U-Cfjp24wu.js} +1 -1
  154. package/dist/viewer/{railroad-peg-WCYAUIDC-CbchexCP.js → railroad-peg-WCYAUIDC-DFKq1m4V.js} +1 -1
  155. package/dist/viewer/{railroadDiagram-O6MQD6OU-DS-Bm6d_.js → railroadDiagram-O6MQD6OU-Bi0WDKNl.js} +1 -1
  156. package/dist/viewer/{requirementDiagram-BXWQKSXE-BINydeED.js → requirementDiagram-BXWQKSXE-CPxbWN0o.js} +1 -1
  157. package/dist/viewer/{ro-RO-JPDTUUEW-DdRvNm-I.js → ro-RO-JPDTUUEW-CahCeDzl.js} +1 -1
  158. package/dist/viewer/{route-B5bzKpud.js → route-w3PXrIFf.js} +1 -1
  159. package/dist/viewer/{ru-RU-B4JR7IUQ-CjNIRk4D.js → ru-RU-B4JR7IUQ-CqoxmaXz.js} +1 -1
  160. package/dist/viewer/{sankeyDiagram-P5KCCOFB-Df0U_V9p.js → sankeyDiagram-P5KCCOFB-DZw6r51H.js} +1 -1
  161. package/dist/viewer/{selection-Bv5ssed6.js → selection-BWAAa3tl.js} +1 -1
  162. package/dist/viewer/{sequenceDiagram-WJ2MYXX4-CwZzTbw6.js → sequenceDiagram-WJ2MYXX4-Thge-udC.js} +1 -1
  163. package/dist/viewer/{settings-dialog-oqRBz3HH.js → settings-dialog-CsUVMGkR.js} +1 -1
  164. package/dist/viewer/{si-LK-N5RQ5JYF-Bn2cq5Ok.js → si-LK-N5RQ5JYF-LdkAa2Ul.js} +1 -1
  165. package/dist/viewer/{sk-SK-C5VTKIMK-DkQagVs8.js → sk-SK-C5VTKIMK-CKX2GUNt.js} +1 -1
  166. package/dist/viewer/{sl-SI-NN7IZMDC-DWUkw9Es.js → sl-SI-NN7IZMDC-CzFyYKkG.js} +1 -1
  167. package/dist/viewer/{stateDiagram-D77RDMKH-DVyBdMso.js → stateDiagram-D77RDMKH-BIRU_cq9.js} +1 -1
  168. package/dist/viewer/stateDiagram-v2-MP3YSRHH-W6GM4mdH.js +1 -0
  169. package/dist/viewer/subset-shared.chunk-e43yvG81.js +1 -0
  170. package/dist/viewer/{subset-worker.chunk-B8oo_rFu.js → subset-worker.chunk-DnTcanba.js} +1 -1
  171. package/dist/viewer/{sv-SE-XGPEYMSR-Bwrn5pou.js → sv-SE-XGPEYMSR-DNC_mUSl.js} +1 -1
  172. package/dist/viewer/{swimlanes-42K2YHIH-DeoVqdEH.js → swimlanes-42K2YHIH-CjgoNxpA.js} +1 -1
  173. package/dist/viewer/swimlanesDiagram-VR7AAH4N-D5-PU8Pf.js +8 -0
  174. package/dist/viewer/{ta-IN-2NMHFXQM-oEgUCuIa.js → ta-IN-2NMHFXQM-CYr9ZGr1.js} +1 -1
  175. package/dist/viewer/{th-TH-HPSO5L25-CxPlzxKw.js → th-TH-HPSO5L25-C6bnXArK.js} +1 -1
  176. package/dist/viewer/{timeline-definition-24CTP7MA-mwiqh6_R.js → timeline-definition-24CTP7MA-B9JpbwqJ.js} +1 -1
  177. package/dist/viewer/{tr-TR-DEFEU3FU-7uH4wvY7.js → tr-TR-DEFEU3FU-BYGOia6c.js} +1 -1
  178. package/dist/viewer/{treeView-Q6P3EWNA-C2ArJ2Q4.js → treeView-Q6P3EWNA-Ak-ne88N.js} +1 -1
  179. package/dist/viewer/{treemap-WGGIJYW6-Vy7-EYOO.js → treemap-WGGIJYW6-DXjq0Uxk.js} +1 -1
  180. package/dist/viewer/{type-icons-BmaAIhru.js → type-icons-DfzR1Nvz.js} +1 -1
  181. package/dist/viewer/{uk-UA-QMV73CPH-SGNVkCzl.js → uk-UA-QMV73CPH-Dqls9x9N.js} +1 -1
  182. package/dist/viewer/{useOpenInteractionType-BS_27F88.js → useOpenInteractionType-DVZ9bVwU.js} +1 -1
  183. package/dist/viewer/{useTranslation-BaBmKQ5R.js → useTranslation-D91FrcSE.js} +1 -1
  184. package/dist/viewer/{useTypeFavicon-DVTP7TWI.js → useTypeFavicon-DV0oFcwK.js} +1 -1
  185. package/dist/viewer/{vennDiagram-4TSXK5OY-DCAXQgUU.js → vennDiagram-4TSXK5OY-CaR9-X17.js} +1 -1
  186. package/dist/viewer/{vi-VN-M7AON7JQ-ilE0ydgZ.js → vi-VN-M7AON7JQ-Hm3jAJrG.js} +1 -1
  187. package/dist/viewer/view-Dzqqcsok.js +1 -0
  188. package/dist/viewer/{viewport-CFJHn_Y6-CZ2u5hxC.js → viewport-CFJHn_Y6-CyNXuhKV.js} +1 -1
  189. package/dist/viewer/{wardley-WFR3VGLG-B5mJzBH-.js → wardley-WFR3VGLG-B8O3gzU6.js} +1 -1
  190. package/dist/viewer/{wardleyDiagram-VM6X3IG4-Bb0cqjgf.js → wardleyDiagram-VM6X3IG4-CkGcY15o.js} +1 -1
  191. package/dist/viewer/{xychartDiagram-S5SC5T6Z-D0eoP4oC.js → xychartDiagram-S5SC5T6Z-NfDIUsFv.js} +1 -1
  192. package/dist/viewer/{zh-CN-LNUGB5OW-BtfqsQSW.js → zh-CN-LNUGB5OW-DfOZAHSW.js} +1 -1
  193. package/dist/viewer/{zh-HK-E62DVLB3-4UGVsAFf.js → zh-HK-E62DVLB3-BGA8Pz-Y.js} +1 -1
  194. package/dist/viewer/{zh-TW-RAJ6MFWO-ChXgRlLr.js → zh-TW-RAJ6MFWO-p--eir4S.js} +1 -1
  195. package/dist/viewer-lib/{Canvas-CsAyNFlN.js → Canvas-aHZz21RV.js} +223 -188
  196. package/dist/viewer-lib/{PreviewView-DrA6Vyn8.js → PreviewView-Dhif0ukY.js} +63 -104
  197. package/dist/viewer-lib/core.js +3 -3
  198. package/dist/viewer-lib/ids.js +40 -0
  199. package/dist/viewer-lib/index.js +2322 -2536
  200. package/dist/viewer-lib/types/src/shared/ids.d.ts +2 -0
  201. package/dist/viewer-lib/types/src/shared/relay.d.ts +2 -1
  202. package/dist/viewer-lib/types/src/viewer/components/Canvas.d.ts +17 -9
  203. package/dist/viewer-lib/types/src/viewer/components/DebugHud.d.ts +12 -4
  204. package/dist/viewer-lib/types/src/viewer/components/EmbeddedCanvas.d.ts +6 -0
  205. package/dist/viewer-lib/types/src/viewer/components/ExpandedBoard.d.ts +2 -1
  206. package/dist/viewer-lib/types/src/viewer/components/PhoneBoard.d.ts +2 -1
  207. package/dist/viewer-lib/types/src/viewer/hooks/useBoardLifecycle.d.ts +28 -0
  208. package/dist/viewer-lib/types/src/viewer/hooks/useBoardOrigin.d.ts +8 -0
  209. package/dist/viewer-lib/types/src/viewer/hooks/useCanvasData.d.ts +2 -0
  210. package/dist/viewer-lib/types/src/viewer/hooks/useCulledBoards.d.ts +6 -0
  211. package/dist/viewer-lib/types/src/viewer/hooks/usePanZoom.d.ts +4 -1
  212. package/dist/viewer-lib/types/src/viewer/layouts/ArtboardView.d.ts +0 -1
  213. package/dist/viewer-lib/types/src/viewer/layouts/PhoneArtboard.d.ts +4 -3
  214. package/dist/viewer-lib/types/src/viewer/lib/board-lifecycle.d.ts +46 -0
  215. package/dist/viewer-lib/types/src/viewer/lib/board-origin.d.ts +21 -0
  216. package/dist/viewer-lib/types/src/viewer/lib/cull.d.ts +14 -0
  217. package/dist/viewer-lib/types/src/viewer/lib/embed-bridge.d.ts +27 -0
  218. package/dist/viewer-lib/types/src/viewer/lib/payload.d.ts +2 -0
  219. package/dist/viewer-lib/types/src/viewer/library/index.d.ts +1 -0
  220. package/package.json +7 -2
  221. package/dist/viewer/ArtboardLayout-BSA9WeVj.js +0 -14
  222. package/dist/viewer/ArtifactList-Bavpjuy4.js +0 -1
  223. package/dist/viewer/DocumentLayout-lHxaL5sP.js +0 -2
  224. package/dist/viewer/PreviewLayout-EAHAJn22.js +0 -2
  225. package/dist/viewer/channel-auni3Ry1.js +0 -1
  226. package/dist/viewer/classDiagram-ZZMXUADV-cNNncaUU.js +0 -1
  227. package/dist/viewer/classDiagram-v2-VYDZK3BY-cNNncaUU.js +0 -1
  228. package/dist/viewer/flowDiagram-HODETNUW--TvHHSmf.js +0 -1
  229. package/dist/viewer/percentages-BXMCSKIN-CZKcCCkO.js +0 -1
  230. package/dist/viewer/stateDiagram-v2-MP3YSRHH-BpgW6a_T.js +0 -1
  231. package/dist/viewer/subset-shared.chunk-CScPtGlu.js +0 -1
  232. package/dist/viewer/swimlanesDiagram-VR7AAH4N-BJ7X1Jzf.js +0 -8
  233. package/dist/viewer/view-DsLeNJwB.js +0 -1
  234. package/dist/viewer-lib/types/src/viewer/hooks/useBoardTiers.d.ts +0 -27
  235. package/dist/viewer-lib/types/src/viewer/hooks/useHoverDwell.d.ts +0 -20
  236. package/dist/viewer-lib/types/src/viewer/hooks/useKeptBoards.d.ts +0 -2
  237. package/dist/viewer-lib/types/src/viewer/lib/board-tiers.d.ts +0 -40
  238. package/dist/viewer-lib/types/src/viewer/lib/hover-dwell.d.ts +0 -18
  239. package/dist/viewer-lib/types/src/viewer/lib/kept-boards.d.ts +0 -7
  240. package/dist/viewer-lib/types/src/viewer/lib/live-limit.d.ts +0 -33
  241. package/dist/viewer-lib/types/src/viewer/lib/snapshot-store.d.ts +0 -41
  242. package/dist/viewer-lib/types/src/viewer/lib/tier-controller.d.ts +0 -28
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{g as t}from"./route-B5bzKpud.js";import{n,t as r}from"./jsx-runtime-CldxteV5.js";import{At as i,Ct as a,Dt as o,Et as s,Ft as c,It as l,Lt as u,Mt as d,Nt as f,Ot as p,Pt as m,St as h,Tt as g,at as _,bt as v,ct as y,dt as b,ft as x,gt as S,ht as C,it as w,jt as T,kt as E,lt as D,mt as ee,nt as O,ot as k,pt as A,rt as j,st as M,ut as N,vt as te,wt as P,xt as F,yt as I}from"./channel-Ci7EBqIH.js";import{c as L,i as R,l as z,n as B,o as V,r as H,s as U,t as W}from"./viewport-CFJHn_Y6-CZ2u5hxC.js";var G=e(n(),1),K=e(t(),1),q=r(),J=class{constructor(e){l(this,`host`,void 0),l(this,`range`,void 0),l(this,`listeners`,new Set),this.host=e}get editor(){return this.host.master}keys(){let e=this.bounds();return e?this.host.rows.slice(e[0],e[1]+1).map(e=>e.key):[]}islandKeys(e){let t=this.bounds(),n=this.host.islandIds(e);return!t||!n?[]:e.getEditorState().read(()=>b().getChildren().filter((e,r)=>{let i=n[r]===void 0?void 0:this.host.indexOf(n[r]);return i!==void 0&&i>=t[0]&&i<=t[1]}).map(e=>e.getKey()))}select(e,t,n){let r=this.host.islandIds(e);if(!r)return;let[i,a]=e.getEditorState().read(()=>{let e=b().getChildren().map(e=>e.getKey());return[r[e.indexOf(t)],r[e.indexOf(n)]]});i&&a&&this.set({anchorId:i,focusId:a})}selectAll(){let{rows:e}=this.host;e.length&&this.set({anchorId:e[0].id,focusId:e.at(-1).id})}extend(e){let t=this.range&&this.host.indexOf(this.range.focusId),n=t===void 0?void 0:this.host.rows[t+e];return!this.range||!n?!1:(this.set({anchorId:this.range.anchorId,focusId:n.id}),!0)}clear(){this.range&&this.set(void 0)}prune(){this.range&&(this.host.indexOf(this.range.anchorId)===void 0||this.host.indexOf(this.range.focusId)===void 0)&&this.set(void 0)}focusSelection(){let e=this.host.master.getEditorState().read(()=>{let e=C();if(!v(e))return null;let t=e.anchor.getNode(),n=t.getTopLevelElement()??t,r=(E(n)?n.getLastDescendant():null)??n;return{key:n.getKey(),end:t.is(r)&&e.anchor.offset===t.getTextContentSize()}}),t=e?this.host.rows.findIndex(t=>t.key===e.key):-1;t>=0&&this.host.focusBlock(t,e.end)}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}bounds(){if(!this.range)return null;let e=this.host.indexOf(this.range.anchorId),t=this.host.indexOf(this.range.focusId);return e===void 0||t===void 0?null:[Math.min(e,t),Math.max(e,t)]}set(e){this.range=e,this.listeners.forEach(e=>e())}};function Y(e){let t=h(e);E(e)&&(t.children=e.getChildren().map(Y));for(let n of a(e))t.$slots??={},t.$slots[n]=Y(g(e,n));return t}var X=class{constructor(e){l(this,`editor`,void 0),l(this,`rows`,[]),l(this,`onChange`,void 0),l(this,`unsubscribe`,void 0),l(this,`lastEdit`,void 0),this.editor=e,this.read(),this.unsubscribe=e.registerUpdateListener(({dirtyElements:e,dirtyLeaves:t,tags:n})=>{if(!e.size&&!t.size)return;this.read(new Set([...e.keys(),...t]));let r=[...n].find(e=>e.startsWith(`virtual-island:`));r||(this.lastEdit=void 0),this.onChange?.(r)})}read(e){let t=new Map(this.rows.map(e=>[e.key,e]));this.rows=this.editor.getEditorState().read(()=>b().getChildren().map(n=>{let r=n.getKey(),i=t.get(r);if(i?.node===n&&!e?.has(r))return i;let a=Y(n);return{data:a,key:r,node:n,id:I(n,y)||r,pool:`${a.type}:${a.url??a.tag??a.listType??``}`}}))}replace(e,t,n){let r=this.rows.findIndex(t=>t.id===e[0]);if(r<0||e.some((e,t)=>this.rows[r+t]?.id!==e))throw Error(`Virtual editor island is stale or noncontiguous`);let i=this.rows.slice(r,r+e.length).map(e=>e.key),a=Date.now(),o=this.lastEdit?.source===n&&this.lastEdit.ids===e.join(`,`)&&this.lastEdit.count===t.length&&t.length===e.length&&a-this.lastEdit.time<600;this.editor.update(()=>{let e=i.map(e=>N(e));if(e.some(e=>!e))throw Error(`Virtual editor block was removed`);let n;for(let r of t){let t=S(r);n?n.insertAfter(t):e[0].insertBefore(t),n=t}for(let t of e)t.remove()},{discrete:!0,tag:[o?`history-merge`:`history-push`,`virtual-island:${n}`]}),this.lastEdit={source:n,ids:e.join(`,`),time:a,count:t.length}}dispose(){this.unsubscribe()}},Z=new Set([`paragraph`,`text`,`heading`,`quote`,`list`,`listitem`,`details`,`dynamic`]);function Q(e,t){let n=e.getChildren();t.forEach((t,r)=>{let i=n[r];if(i?.getType()===t.type&&Z.has(t.type)){if(i.updateFromJSON(t),t.type===`details`){let e=i;e.setOpen(!!t.open),e.setSummary(t.summary)}else if(t.type===`dynamic`){let e=i;e.setUrl(t.url),e.setProps(t.props),e.setInitialHeight(t.initialHeight)}E(i)&&Q(i,t.children??[])}else{let n=S(t);i?i.replace(n):e.append(n)}});for(let e of n.slice(t.length))e.remove()}function $(e){for(;e?.getParent()&&e.getParent().getType()!==`root`;)e=e.getParent();return e?.getParent()?e:null}function ne(e,t){let n=document.caretPositionFromPoint?.(e,t);if(n)return{node:n.offsetNode,offset:n.offset};let r=document.caretRangeFromPoint?.(e,t);return r?{node:r.startContainer,offset:r.startOffset}:null}var re=class{constructor(e,t,n){if(l(this,`master`,void 0),l(this,`canvas`,void 0),l(this,`options`,void 0),l(this,`document`,void 0),l(this,`pool`,new H),l(this,`islands`,new Map),l(this,`states`,new Map),l(this,`viewport`,void 0),l(this,`preserve`,void 0),l(this,`documentBlocks`,new J(this)),l(this,`heights`,void 0),l(this,`revision`,0),l(this,`indices`,new Map),l(this,`listeners`,new Set),l(this,`observer`,void 0),l(this,`frame`,0),l(this,`dead`,!1),l(this,`width`,void 0),l(this,`metrics`,new Map),l(this,`firstParagraph`,-1),l(this,`selectionOwner`,void 0),l(this,`splitting`,new Set),l(this,`drag`,void 0),l(this,`previousRows`,[]),l(this,`onScroll`,()=>{this.refresh(),this.drag&&this.dragTo(this.drag.y)}),l(this,`onPointerDown`,e=>{if(e.button!==0)return;this.documentBlocks.clear();let t=this.pool.slots.find(t=>t.active&&t.element?.contains(e.target));if(!t)return;let n=this.pool.slots.find(e=>e.active&&e.id===this.selectionOwner),r=e.shiftKey&&n&&n!==t?n:t,i=this.island(r).editor.getRootElement();if(i){if(r!==t)e.preventDefault(),this.extendToPoint(r,i,e.clientX,e.clientY);else if(e.target.closest?.(`[contenteditable]`)!==i)return;this.drag={slot:r,y:e.clientY},document.addEventListener(`pointermove`,this.onPointerMove),document.addEventListener(`pointerup`,this.endDrag),document.addEventListener(`pointercancel`,this.endDrag)}}),l(this,`onPointerMove`,e=>{if(this.drag){if(!(e.buttons&1))return this.endDrag();this.drag.y=e.clientY,this.dragTo(e.clientY)}}),l(this,`endDrag`,()=>{this.drag=void 0,document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.endDrag),document.removeEventListener(`pointercancel`,this.endDrag)}),l(this,`onFocusIn`,e=>{let t=this.pool.slots.find(t=>t.element?.contains(e.target));t&&(this.selectionOwner=t.id)}),this.master=e,this.canvas=t,this.options=n,this.viewport=L(t,n.scrollContainer),this.preserve=new B(n.preserveCapacity??32,e=>{this.pool.slots.find(t=>t.id===e)?.beforeRelease?.()}),n.overscan!==void 0&&(!Number.isFinite(n.overscan)||n.overscan<0))throw Error(`Virtual editor overscan must be a nonnegative number`);this.document=new X(e),this.indices=new Map(this.rows.map((e,t)=>[e.id,t])),this.firstParagraph=this.rows.findIndex(e=>e.data.type===`paragraph`),e.update(()=>b().markDirty(),{discrete:!0,tag:`history-merge`}),this.width=t.clientWidth;try{this.heights=this.buildHeights()}catch(e){throw this.document.dispose(),e}t.style.height=`${this.heights.total}px`,this.document.onChange=e=>{this.reconcileDocument(e)},this.previousRows=this.rows.map(e=>({id:e.id,data:e.data})),this.observer=new ResizeObserver(()=>this.queueMeasure()),this.observer.observe(t),this.viewport instanceof HTMLElement&&this.observer.observe(this.viewport),this.viewport.addEventListener(`scroll`,this.onScroll,{passive:!0}),window.addEventListener(`resize`,this.onScroll),t.addEventListener(`focusin`,this.onFocusIn),t.addEventListener(`pointerdown`,this.onPointerDown),this.refresh(!1)}get rows(){return this.document.rows}get scrollTop(){return this.viewport instanceof HTMLElement?this.viewport.scrollTop:window.scrollY}setScrollTop(e){this.viewport instanceof HTMLElement?this.viewport.scrollTop=e:window.scrollTo(window.scrollX,e)}viewportTop(){return this.viewport instanceof HTMLElement?this.viewport.getBoundingClientRect().top+this.viewport.clientTop:0}viewportHeight(){return this.viewport instanceof HTMLElement?this.viewport.clientHeight:window.innerHeight}canvasTop(){return this.canvas.getBoundingClientRect().top-this.viewportTop()+this.scrollTop}buildHeights(){return new W(this.rows.map(e=>this.estimate(e.data)))}estimate(e){let t=this.options.estimateBlockHeight?.(e,this.width)??V(e,this.width);if(!Number.isFinite(t)||t<=0)throw Error(`Virtual editor estimated height must be positive and finite`);return Math.max(24,t)}reconcileDocument(e){let t=this.anchor(),n=new Map(this.previousRows.map((e,t)=>[e.id,{...e,height:this.heights.values[t]}]));(this.rows.length!==this.previousRows.length||this.rows.some((e,t)=>e.id!==this.previousRows[t].id))&&(this.heights=new W(this.rows.map(e=>n.get(e.id)?.height??this.estimate(e.data))));let r=new Map(this.rows.map((e,t)=>[e.id,t]));this.indices=r,this.documentBlocks.prune(),this.firstParagraph=this.rows.findIndex(e=>e.data.type===`paragraph`);for(let e of this.metrics.keys())r.has(e)||this.metrics.delete(e);for(let t of this.pool.slots){let n=this.islands.get(t.id);if(!n)continue;let i=n.ids.flatMap(e=>r.get(e)??[]);n.ids=i.length>1?this.rows.slice(Math.min(...i),Math.max(...i)+1).map(e=>e.id):i.map(e=>this.rows[e].id),n.source=e===`virtual-island:${t.id}`,n.ids.length?(t.index=r.get(n.ids[0]),t.pool=this.rows[t.index].pool):(t.beforeRelease?.(),t.active=!1)}this.pool.slots=this.pool.slots.filter(e=>{let t=this.islands.get(e.id);return!t||t.ids.length?!0:(t.unsubscribe(),this.preserve.forget(e.id),this.islands.delete(e.id),this.pool.disposed++,!1)}),this.previousRows=this.rows.map(e=>({id:e.id,data:e.data})),this.restore(t),this.refresh(!1),this.publish(),this.queueMeasure()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}publish(e=!0){if(this.dead||!this.listeners.size)return;this.revision++;let t=()=>this.listeners.forEach(e=>e());e?(0,K.flushSync)(t):t()}indexOf(e){return this.indices.get(e)}islandIds(e){for(let t of this.islands.values())if(t.editor===e)return t.ids}rowAt(e){let t=e-this.canvas.getBoundingClientRect().top-this.leadingMargin;return this.heights.find(Math.max(0,t))}dragTo(e){let t=this.drag?.slot;if(!t?.active)return;let n=this.rowAt(e);(n<t.index||n>=t.index+this.island(t).ids.length)&&this.extendIsland(t,n,!0)}extendToPoint(e,t,n,r){if(!this.extendIsland(e,this.rowAt(r),!0))return;let i=window.getSelection(),a=ne(n,r);i?.anchorNode&&t.contains(i.anchorNode)&&a&&t.contains(a.node)&&i.extend(a.node,a.offset)}holdsSelection(e,t){return e.id===this.selectionOwner&&t.editor.getEditorState().read(()=>C()!==null)}refresh(e=!0){if(this.dead||!this.rows.length)return;let t=Math.max(0,this.scrollTop-this.canvasTop()),n=this.options.overscan??this.viewportHeight()*1.5,r=this.heights.find(Math.max(0,t-n)),i=this.heights.find(t+this.viewportHeight()+n),a=new Set,o=[],s=new Set;for(let e of this.pool.slots){let t=this.islands.get(e.id);if(t&&(e.active||this.preserve.has(e.id))){(t.retained||t.editor.isComposing()||e.element?.contains(document.activeElement)||this.holdsSelection(e,t))&&s.add(e.id);for(let n=1;n<t.ids.length;n++)a.add(e.index+n);t.ids.length>1&&e.index<r&&e.index+t.ids.length>r&&o.push(e.index)}}let c=[...o,...Array.from({length:i-r+1},(e,t)=>r+t)].filter(e=>!a.has(e)),l=new Set(c),u=new Set;for(let e of this.pool.slots)(l.has(e.index)||s.has(e.id))&&this.preserve.activate(e.id)&&u.add(e.id);for(let e of this.pool.slots)e.active&&!l.has(e.index)&&!s.has(e.id)&&this.preserve.park(e.id,this.islands.get(e.id)?.ids.join(`,`)??``);let d=new Set([...this.preserve.ids(),...u]),f=this.pool.update(c,e=>this.rows[e].pool,s,d);for(let[e,t]of this.islands)this.pool.slots.some(t=>t.id===e)||(t.unsubscribe(),t.editor.setRootElement(null),this.preserve.forget(e),this.islands.delete(e));f&&this.publish(e)}island(e){let t=this.islands.get(e.id);if(t)return t;let n=this.master.read(()=>i());return t={editor:n,ids:[],generation:-1,loading:!1,source:!1,data:``,unsubscribe:()=>{},retained:0},this.islands.set(e.id,t),t.unsubscribe=n.registerUpdateListener(({editorState:r,dirtyElements:i,dirtyLeaves:a,tags:o})=>{if(t.ids.length>1&&this.queueSplit(e),t.loading||!t.ids.length||o.has(`virtual-bind`)||!i.size&&!a.size)return;let s=r.toJSON().root.children;if(JSON.stringify(s)===t.data)return;let c=new Set;s.forEach((e,n)=>{let r=e.$?.blockId,i=this.indices.has(r)&&!t.ids.includes(r);(!r||c.has(r)||i)&&(r=n===0?t.ids[0]:D(8)),e.$={...e.$,blockId:r},c.add(r)});let l=[...t.ids];t.ids=s.map(e=>e.$.blockId),t.data=JSON.stringify(s),n.update(()=>b().getChildren().forEach((e,n)=>f(e,y,t.ids[n])),{tag:`virtual-bind`}),this.document.replace(l,s,String(e.id))}),t}bind(e){let t=this.island(e),n=t.generation!==e.generation;n&&(t.ids=[this.rows[e.index].id]);let r=t.ids.map(e=>this.rows[this.indices.get(e)??-1]).filter(e=>!!e);if(!r.length)return;let i=r.map(e=>e.data),a=JSON.stringify(i);if(!n&&(t.source||a===t.data))t.source=!1,t.data=a;else{t.generation=e.generation,t.data=a,t.loading=!0;try{t.editor.update(()=>{Q(b(),i),n&&F(null)},{discrete:!0,tag:n?[`virtual-bind`,x]:`virtual-bind`})}finally{t.loading=!1}this.restorePanels(e),this.queueMeasure()}}attach(e,t){e.element&&this.observer.unobserve(e.element),e.element=t??void 0,t&&this.observer.observe(t)}mount(e,t){let n=this.pool.slots.filter(t=>t.active&&t.index>e.index).sort((e,t)=>e.index-t.index).map(e=>this.preserve.host(e.id)).find(e=>e?.parentElement===this.canvas);this.preserve.mount(e.id,t,e.active?this.canvas:null,n??null)}state(e){let t=this.states.get(e);return t||(t=new Map,this.states.set(e,t)),t}nodeState(e,t,n){let r=this.island(e),i=r.editor.getEditorState().read(()=>{let e=t?N(t):b().getFirstChild(),i=[];for(;e?.getParent()&&e.getParent().getType()!==`root`;)i.unshift(e.getIndexWithinParent()),e=e.getParent();let a=e?.getIndexWithinParent()??0;return`${a===0?n:r.ids[a]??n}:${i.join(`.`)}`});return this.state(i)}capturePanels(e){let t=this.islands.get(e.id)?.ids[0];t&&this.state(t).set(`details`,this.panels(e).map(({panel:e})=>e.open))}restorePanels(e){let t=this.state(this.island(e).ids[0]).get(`details`);this.panels(e).forEach(({panel:e,initialOpen:n},r)=>{e.open=t?.[r]??n})}panels(e){let t=this.island(e).editor;return t.getEditorState().read(()=>{let e=[],n=r=>{if(r.getType()===`details`){let n=t.getElementByKey(r.getKey());n instanceof HTMLDetailsElement&&e.push({panel:n,initialOpen:r.getOpen()})}E(r)&&r.getChildren().forEach(n)};return n(b()),e})}anchor(){let e=this.canvas.getBoundingClientRect(),t=document.elementFromPoint(e.left+e.width/2,Math.max(this.viewportTop()+8,e.top+1))?.closest(`[data-virtual-editor-slot]`),n=this.pool.slots.find(e=>e.active&&e.element===t)?.index??this.heights.find(Math.max(0,this.scrollTop-this.canvasTop()));return{id:this.previousRows[n]?.id??this.rows[n]?.id,offset:this.scrollTop-this.canvasTop()-this.blockOffset(n)}}restore(e){this.canvas.style.height=`${this.heights.total+this.leadingMargin}px`;let t=e.id?this.indices.get(e.id)??-1:-1;t>=0&&this.setScrollTop(this.canvasTop()+this.blockOffset(t)+e.offset)}queueMeasure(){!this.dead&&!this.frame&&(this.frame=requestAnimationFrame(()=>this.measure()))}slotOffset(e){return this.blockOffset(e.index)-(this.metrics.get(this.rows[e.index]?.id)?.top??0)}get leadingMargin(){return this.metrics.get(this.rows[0]?.id)?.top??0}blockOffset(e){return this.heights.offset(e)+this.leadingMargin}commitLayout(){cancelAnimationFrame(this.frame),this.measure(!1)}measure(e=!0){if(this.frame=0,this.dead)return;let t=this.anchor(),n=!1;Math.abs(this.canvas.clientWidth-this.width)>.5&&(this.width=this.canvas.clientWidth,this.metrics.clear(),this.heights=this.buildHeights(),n=!0);let r=new Set;for(let e of this.pool.slots){if(!e.active)continue;let t=this.islands.get(e.id),i=t?.editor.getRootElement();if(!i||!t?.ids.length)continue;let a=t.editor.getEditorState().read(()=>b().getChildren().map(e=>t.editor.getElementByKey(e.getKey())));a.forEach((e,n)=>{if(!e)return;let r=this.indices.get(t.ids[n])??-1,a=this.rows[r-1]?.data;e.toggleAttribute(`data-document-first`,r===0&&e===i.firstElementChild),e.toggleAttribute(`data-document-last`,r===this.rows.length-1&&e===i.lastElementChild),e.toggleAttribute(`data-document-first-paragraph`,r===this.firstParagraph),e.dataset.documentPrevTag=a?.type===`heading`?a.tag:a?.type===`horizontalrule`?`hr`:``});let o=i.getBoundingClientRect(),s=a.map(e=>e?.getBoundingClientRect());t.ids.forEach((e,i)=>{let c=this.indices.get(e)??-1,l=a[i];if(c<0||!l)return;l.dataset.blockId=e;let u=s[i],d=getComputedStyle(l),f=i===0?u.top-o.top:parseFloat(d.marginTop)||0,p=i===t.ids.length-1?o.bottom-u.bottom:parseFloat(d.marginBottom)||0;Math.abs(f-(this.metrics.get(e)?.top??0))>.1&&(n=!0),this.metrics.set(e,{height:u.height,top:f,bottom:p,gap:s[i+1]?s[i+1].top-u.bottom:void 0}),r.add(c),c>0&&r.add(c-1)})}for(let e of r){let t=this.metrics.get(this.rows[e].id);if(!t)continue;let r=Math.max(1,U(t,this.metrics.get(this.rows[e+1]?.id)));Math.abs(r-this.heights.values[e])>.1&&(this.heights.update(e,r),n=!0)}n&&(this.restore(t),this.refresh(!1),this.publish(e))}scrollTo(e){this.setScrollTop(this.canvasTop()+this.blockOffset(Math.max(0,Math.min(e,this.rows.length-1)))),this.refresh()}focusBlock(e,t=!1,n=!0){e<0||e>=this.rows.length||(n&&this.scrollTo(e),requestAnimationFrame(()=>{let r=this.pool.slots.find(t=>t.active&&this.islands.get(t.id)?.ids.includes(this.rows[e]?.id));if(!r)return;let{editor:i}=this.island(r);i.getRootElement()?.focus({preventScroll:!0}),i.update(()=>{t?b().selectEnd():b().selectStart()},{tag:n?void 0:ee})}))}extendIsland(e,t,n=!1){let r=this.island(e),i=e.index,a=i+r.ids.length-1,o=Math.max(0,Math.min(t,this.rows.length-1));if(o>=i&&o<=a)return!0;let s=o<i,c=s?this.rows.slice(o,i):this.rows.slice(a+1,o+1);if(r.ids.length+c.length>(this.options.selectionMergeLimit??200))return!1;let l=new Set(c.map(e=>e.id)),u=this.pool.slots.filter(t=>t!==e&&this.islands.get(t.id)?.ids.some(e=>l.has(e)));if(u.some(e=>{let t=this.islands.get(e.id);return t.retained>0||t.editor.isComposing()}))return!1;for(let e of u)e.beforeRelease?.(),e.active=!1,this.islands.get(e.id).generation=-1;return r.ids=s?[...l,...r.ids]:[...r.ids,...l],s&&(e.index=o),r.data=JSON.stringify(r.ids.map(e=>this.rows[this.indices.get(e)].data)),r.editor.update(()=>{let e=c.map(e=>S(e.data)),t=b().getFirstChild();s&&t?e.forEach(e=>t.insertBefore(e)):b().append(...e)},{discrete:!0,tag:[`virtual-bind`,x]}),this.refresh(!1),this.publish(n),this.queueMeasure(),!0}extendForKey(e,t){let n=this.island(e),r=t===`down`||t===`right`,i=n.editor.getEditorState().read(()=>{let e=C();if(!v(e))return!1;let n=b(),i=e.focus.getNode();if(t===`up`||t===`down`)return $(i)?.is(r?n.getLastChild():n.getFirstChild())??!1;let a=r?n.getLastDescendant():n.getFirstDescendant();return!!a&&i.is(a)&&e.focus.offset===(r?a.getTextContentSize():0)}),a=r?e.index+n.ids.length:e.index-1;return!i||a<0||a>=this.rows.length?!1:this.extendIsland(e,a)}splitIsland(e){let t=this.islands.get(e.id);if(!t||t.ids.length<2)return;let n=t.editor.getEditorState().read(()=>{let e=C();return $(v(e)?e.focus.getNode():null)?.getIndexWithinParent()??0}),r=t.ids[n]??t.ids[0];t.ids=[r],e.index=this.indices.get(r),t.data=JSON.stringify([this.rows[e.index].data]),t.editor.update(()=>b().getChildren().forEach((e,t)=>{t!==n&&e.remove()}),{discrete:!0,tag:`virtual-bind`}),this.refresh(!1),this.publish(),this.queueMeasure()}queueSplit(e){this.splitting.has(e.id)||(this.splitting.add(e.id),requestAnimationFrame(()=>{this.splitting.delete(e.id);let t=this.islands.get(e.id);if(this.dead||!e.active||!t||t.editor.isComposing())return;let n=window.getSelection(),r=t.editor.getRootElement();n&&!n.isCollapsed&&n.anchorNode&&r?.contains(n.anchorNode)||t.editor.getEditorState().read(()=>{let e=C();return e===null||v(e)&&e.isCollapsed()})&&this.splitIsland(e)}))}joinNeighbor(e,t){let n=this.island(e),r=t?e.index-1:e.index+n.ids.length,i=this.rows[r];if(!i)return!1;for(let t of this.pool.slots)t!==e&&this.islands.get(t.id)?.ids.includes(i.id)&&(t.beforeRelease?.(),t.active=!1);return n.ids=t?[i.id,...n.ids]:[...n.ids,i.id],t&&(e.index=r),n.editor.update(()=>{let e=S(i.data);t?b().getFirstChild().insertBefore(e):b().append(e);let n=C();v(n)&&n.deleteCharacter(t)},{discrete:!0}),!0}dispose(){this.dead=!0,this.document.dispose(),this.observer.disconnect(),cancelAnimationFrame(this.frame),this.viewport.removeEventListener(`scroll`,this.onScroll),window.removeEventListener(`resize`,this.onScroll),this.canvas.removeEventListener(`focusin`,this.onFocusIn),this.canvas.removeEventListener(`pointerdown`,this.onPointerDown),this.endDrag();for(let e of this.islands.values())e.unsubscribe();this.listeners.clear(),this.preserve.clear()}};function ie({controller:e,slot:t}){let[n]=m();return(0,G.useEffect)(()=>{let r=e=>{let t=C();if(!v(t)||!t.isCollapsed())return!1;let n=e?b().getLastDescendant():b().getFirstDescendant();return!!n&&t.anchor.key===n.getKey()&&t.anchor.offset===(e?n.getTextContentSize():0)},i=n=>(e.extendForKey(t,n),!1),a=[n.registerCommand(s,()=>(e.master.dispatchCommand(s,void 0),!0),4),n.registerCommand(P,()=>(e.master.dispatchCommand(P,void 0),!0),4),n.registerCommand(o,n=>!r(!1)||!e.joinNeighbor(t,!0)?!1:(n?.preventDefault(),!0),4),n.registerCommand(A,n=>!r(!0)||!e.joinNeighbor(t,!1)?!1:(n?.preventDefault(),!0),4),n.registerCommand(d,n=>n?.shiftKey?i(`up`):!r(!1)||t.index===0?!1:(n?.preventDefault(),e.focusBlock(t.index-1,!0),!0),4),n.registerCommand(te,n=>{if(n?.shiftKey)return i(`down`);if(!r(!0))return!1;let a=t.index+e.island(t).ids.length;return a>=e.rows.length?!1:(n?.preventDefault(),e.focusBlock(a),!0)},4),n.registerCommand(p,e=>!!e.shiftKey&&i(`left`),4),n.registerCommand(T,e=>!!e.shiftKey&&i(`right`),4)];return()=>a.forEach(e=>e())},[e,n,t]),null}function ae({controller:e,slot:t,plugins:n,onActiveEditorChange:r,onRelease:i,retainSurface:a,placeholder:o}){let s=e.island(t),l=e.rows[t.index],d=`${t.generation}:${t.active}`,[f,p]=(0,G.useState)(``),[m]=(0,G.useState)(()=>{let e=document.createElement(`div`);return e.style.display=`contents`,e}),h=t.active||e.preserve.has(t.id),g=c(),v=(0,G.useMemo)(()=>({blockId:l.id,active:t.active,editor:s.editor,documentBlocks:e.documentBlocks,nodeState:n=>e.nodeState(t,n,l.id),retain:()=>{s.retained++;let t=a(),n=!1;return()=>{n||(n=!0,s.retained--,t(),e.refresh(!1))}}}),[e,s.editor,a,l.id,t,t.active,t.generation]),y=(0,G.useCallback)(n=>e.attach(t,n),[e,t]);return(0,G.useLayoutEffect)(()=>{e.mount(t,m),h?e.bind(t):s.generation=-1,t.beforeRelease=()=>{e.capturePanels(t),i(s.editor)}}),(0,G.useLayoutEffect)(()=>()=>m.remove(),[m]),(0,G.useLayoutEffect)(()=>{let e=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>p(d))});return()=>cancelAnimationFrame(e)},[d]),(0,K.createPortal)((0,q.jsx)(`div`,{className:z,"data-pool":t.pool,"data-restoring":f===d?void 0:``,"data-virtual-editor-block":t.active?l.id:void 0,"data-virtual-editor-slot":t.id,ref:y,style:{display:t.active?void 0:`none`,transform:`translateY(${e.slotOffset(t)}px)`},onFocusCapture:()=>r(s.editor),children:(0,q.jsx)(u,{value:v,children:h&&(0,q.jsxs)(j,{skipCollabChecks:!0,initialEditor:s.editor,children:[(0,q.jsx)(O,{ErrorBoundary:w,contentEditable:(0,q.jsx)(_,{"aria-label":`Document block`,"aria-placeholder":o??``,className:`rich-editor__content qi8t62`,"data-virtual-editor-content":``,placeholder:(0,q.jsx)(`div`,{className:`b94s952`,style:{top:0,left:0,display:o?void 0:`none`},children:o})})}),t.active&&n,(0,q.jsx)(ie,{controller:e,slot:t}),t.active&&g]})})}),m,String(t.id))}function oe({controller:e,plugins:t,onActiveEditorChange:n,onRelease:r,retainSurface:i,placeholder:a}){let[,o]=(0,G.useState)(0);return(0,G.useLayoutEffect)(()=>e.subscribe(()=>o(e=>e+1)),[e]),(0,G.useLayoutEffect)(()=>e.commitLayout()),(0,q.jsx)(q.Fragment,{children:e.pool.slots.map(o=>(0,q.jsx)(ae,{controller:e,plugins:t,retainSurface:i,slot:o,placeholder:e.rows.length===1&&e.rows[0].data.type===`paragraph`&&!(e.rows[0].data.children??[]).some(e=>e.type!==`text`||e.text)?a:void 0,onActiveEditorChange:n,onRelease:r},o.id))})}function se({options:e,className:t,plugins:n,autoFocus:r,hasHeader:i,onActiveEditorChange:a,retainSurface:o,placeholder:s}){let[c]=m(),{scrollContainer:l,overscan:u,estimateBlockHeight:d,preserveCapacity:f,selectionMergeLimit:p}=e,h=(0,G.useMemo)(()=>({scrollContainer:l,overscan:u,estimateBlockHeight:d,preserveCapacity:f,selectionMergeLimit:p}),[l,u,d,f,p]),g=(0,G.useRef)(null),_=(0,G.useCallback)(e=>{g.current=e,a(e)},[a]),v=(0,G.useCallback)(e=>{g.current===e&&_(null)},[_]),y=(0,G.useRef)(null),[b,x]=(0,G.useState)(null),[S,C]=(0,G.useState)(``);return(0,G.useEffect)(()=>{x(null),C(``);let e=y.current,t;try{t=new re(c,e,h),x(t),Object.assign(e,{virtualEditor:t})}catch(e){C(String(e));return}return()=>{_(null),t.dispose(),Reflect.deleteProperty(e,`virtualEditor`)}},[c,_,h]),(0,G.useEffect)(()=>{b&&r&&b.focusBlock(0,!1,!1)},[r,b]),(0,q.jsxs)(`div`,{className:`rich-editor__content-wrapper ${M}`,style:{"--ce-padding-top":`${i?40:12}px`},children:[S&&(0,q.jsx)(`p`,{role:`alert`,children:S}),(0,q.jsx)(`div`,{className:`${k} ${t??``}`,children:(0,q.jsx)(`div`,{className:R,"data-virtual-editor":``,ref:y,children:b&&(0,q.jsx)(oe,{controller:b,placeholder:s,plugins:n,retainSurface:o,onActiveEditorChange:_,onRelease:v})})})]})}export{se as VirtualizedEditor};
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{_ as t}from"./route-w3PXrIFf.js";import{n,t as r}from"./jsx-runtime-CldxteV5.js";import{At as i,Ct as a,Dt as o,Et as s,Ft as c,It as l,Lt as u,Mt as d,Nt as f,Ot as p,Pt as m,St as h,Tt as g,at as _,bt as v,ct as y,dt as b,ft as x,gt as S,ht as C,it as w,jt as T,kt as E,lt as D,mt as ee,nt as O,ot as k,pt as A,rt as j,st as M,ut as N,vt as te,wt as P,xt as F,yt as I}from"./channel-NSE57aBD.js";import{c as L,i as R,l as z,n as B,o as V,r as H,s as U,t as W}from"./viewport-CFJHn_Y6-CyNXuhKV.js";var G=e(n(),1),K=e(t(),1),q=r(),J=class{constructor(e){l(this,`host`,void 0),l(this,`range`,void 0),l(this,`listeners`,new Set),this.host=e}get editor(){return this.host.master}keys(){let e=this.bounds();return e?this.host.rows.slice(e[0],e[1]+1).map(e=>e.key):[]}islandKeys(e){let t=this.bounds(),n=this.host.islandIds(e);return!t||!n?[]:e.getEditorState().read(()=>b().getChildren().filter((e,r)=>{let i=n[r]===void 0?void 0:this.host.indexOf(n[r]);return i!==void 0&&i>=t[0]&&i<=t[1]}).map(e=>e.getKey()))}select(e,t,n){let r=this.host.islandIds(e);if(!r)return;let[i,a]=e.getEditorState().read(()=>{let e=b().getChildren().map(e=>e.getKey());return[r[e.indexOf(t)],r[e.indexOf(n)]]});i&&a&&this.set({anchorId:i,focusId:a})}selectAll(){let{rows:e}=this.host;e.length&&this.set({anchorId:e[0].id,focusId:e.at(-1).id})}extend(e){let t=this.range&&this.host.indexOf(this.range.focusId),n=t===void 0?void 0:this.host.rows[t+e];return!this.range||!n?!1:(this.set({anchorId:this.range.anchorId,focusId:n.id}),!0)}clear(){this.range&&this.set(void 0)}prune(){this.range&&(this.host.indexOf(this.range.anchorId)===void 0||this.host.indexOf(this.range.focusId)===void 0)&&this.set(void 0)}focusSelection(){let e=this.host.master.getEditorState().read(()=>{let e=C();if(!v(e))return null;let t=e.anchor.getNode(),n=t.getTopLevelElement()??t,r=(E(n)?n.getLastDescendant():null)??n;return{key:n.getKey(),end:t.is(r)&&e.anchor.offset===t.getTextContentSize()}}),t=e?this.host.rows.findIndex(t=>t.key===e.key):-1;t>=0&&this.host.focusBlock(t,e.end)}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}bounds(){if(!this.range)return null;let e=this.host.indexOf(this.range.anchorId),t=this.host.indexOf(this.range.focusId);return e===void 0||t===void 0?null:[Math.min(e,t),Math.max(e,t)]}set(e){this.range=e,this.listeners.forEach(e=>e())}};function Y(e){let t=h(e);E(e)&&(t.children=e.getChildren().map(Y));for(let n of a(e))t.$slots??={},t.$slots[n]=Y(g(e,n));return t}var X=class{constructor(e){l(this,`editor`,void 0),l(this,`rows`,[]),l(this,`onChange`,void 0),l(this,`unsubscribe`,void 0),l(this,`lastEdit`,void 0),this.editor=e,this.read(),this.unsubscribe=e.registerUpdateListener(({dirtyElements:e,dirtyLeaves:t,tags:n})=>{if(!e.size&&!t.size)return;this.read(new Set([...e.keys(),...t]));let r=[...n].find(e=>e.startsWith(`virtual-island:`));r||(this.lastEdit=void 0),this.onChange?.(r)})}read(e){let t=new Map(this.rows.map(e=>[e.key,e]));this.rows=this.editor.getEditorState().read(()=>b().getChildren().map(n=>{let r=n.getKey(),i=t.get(r);if(i?.node===n&&!e?.has(r))return i;let a=Y(n);return{data:a,key:r,node:n,id:I(n,y)||r,pool:`${a.type}:${a.url??a.tag??a.listType??``}`}}))}replace(e,t,n){let r=this.rows.findIndex(t=>t.id===e[0]);if(r<0||e.some((e,t)=>this.rows[r+t]?.id!==e))throw Error(`Virtual editor island is stale or noncontiguous`);let i=this.rows.slice(r,r+e.length).map(e=>e.key),a=Date.now(),o=this.lastEdit?.source===n&&this.lastEdit.ids===e.join(`,`)&&this.lastEdit.count===t.length&&t.length===e.length&&a-this.lastEdit.time<600;this.editor.update(()=>{let e=i.map(e=>N(e));if(e.some(e=>!e))throw Error(`Virtual editor block was removed`);let n;for(let r of t){let t=S(r);n?n.insertAfter(t):e[0].insertBefore(t),n=t}for(let t of e)t.remove()},{discrete:!0,tag:[o?`history-merge`:`history-push`,`virtual-island:${n}`]}),this.lastEdit={source:n,ids:e.join(`,`),time:a,count:t.length}}dispose(){this.unsubscribe()}},Z=new Set([`paragraph`,`text`,`heading`,`quote`,`list`,`listitem`,`details`,`dynamic`]);function Q(e,t){let n=e.getChildren();t.forEach((t,r)=>{let i=n[r];if(i?.getType()===t.type&&Z.has(t.type)){if(i.updateFromJSON(t),t.type===`details`){let e=i;e.setOpen(!!t.open),e.setSummary(t.summary)}else if(t.type===`dynamic`){let e=i;e.setUrl(t.url),e.setProps(t.props),e.setInitialHeight(t.initialHeight)}E(i)&&Q(i,t.children??[])}else{let n=S(t);i?i.replace(n):e.append(n)}});for(let e of n.slice(t.length))e.remove()}function $(e){for(;e?.getParent()&&e.getParent().getType()!==`root`;)e=e.getParent();return e?.getParent()?e:null}function ne(e,t){let n=document.caretPositionFromPoint?.(e,t);if(n)return{node:n.offsetNode,offset:n.offset};let r=document.caretRangeFromPoint?.(e,t);return r?{node:r.startContainer,offset:r.startOffset}:null}var re=class{constructor(e,t,n){if(l(this,`master`,void 0),l(this,`canvas`,void 0),l(this,`options`,void 0),l(this,`document`,void 0),l(this,`pool`,new H),l(this,`islands`,new Map),l(this,`states`,new Map),l(this,`viewport`,void 0),l(this,`preserve`,void 0),l(this,`documentBlocks`,new J(this)),l(this,`heights`,void 0),l(this,`revision`,0),l(this,`indices`,new Map),l(this,`listeners`,new Set),l(this,`observer`,void 0),l(this,`frame`,0),l(this,`dead`,!1),l(this,`width`,void 0),l(this,`metrics`,new Map),l(this,`firstParagraph`,-1),l(this,`selectionOwner`,void 0),l(this,`splitting`,new Set),l(this,`drag`,void 0),l(this,`previousRows`,[]),l(this,`onScroll`,()=>{this.refresh(),this.drag&&this.dragTo(this.drag.y)}),l(this,`onPointerDown`,e=>{if(e.button!==0)return;this.documentBlocks.clear();let t=this.pool.slots.find(t=>t.active&&t.element?.contains(e.target));if(!t)return;let n=this.pool.slots.find(e=>e.active&&e.id===this.selectionOwner),r=e.shiftKey&&n&&n!==t?n:t,i=this.island(r).editor.getRootElement();if(i){if(r!==t)e.preventDefault(),this.extendToPoint(r,i,e.clientX,e.clientY);else if(e.target.closest?.(`[contenteditable]`)!==i)return;this.drag={slot:r,y:e.clientY},document.addEventListener(`pointermove`,this.onPointerMove),document.addEventListener(`pointerup`,this.endDrag),document.addEventListener(`pointercancel`,this.endDrag)}}),l(this,`onPointerMove`,e=>{if(this.drag){if(!(e.buttons&1))return this.endDrag();this.drag.y=e.clientY,this.dragTo(e.clientY)}}),l(this,`endDrag`,()=>{this.drag=void 0,document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.endDrag),document.removeEventListener(`pointercancel`,this.endDrag)}),l(this,`onFocusIn`,e=>{let t=this.pool.slots.find(t=>t.element?.contains(e.target));t&&(this.selectionOwner=t.id)}),this.master=e,this.canvas=t,this.options=n,this.viewport=L(t,n.scrollContainer),this.preserve=new B(n.preserveCapacity??32,e=>{this.pool.slots.find(t=>t.id===e)?.beforeRelease?.()}),n.overscan!==void 0&&(!Number.isFinite(n.overscan)||n.overscan<0))throw Error(`Virtual editor overscan must be a nonnegative number`);this.document=new X(e),this.indices=new Map(this.rows.map((e,t)=>[e.id,t])),this.firstParagraph=this.rows.findIndex(e=>e.data.type===`paragraph`),e.update(()=>b().markDirty(),{discrete:!0,tag:`history-merge`}),this.width=t.clientWidth;try{this.heights=this.buildHeights()}catch(e){throw this.document.dispose(),e}t.style.height=`${this.heights.total}px`,this.document.onChange=e=>{this.reconcileDocument(e)},this.previousRows=this.rows.map(e=>({id:e.id,data:e.data})),this.observer=new ResizeObserver(()=>this.queueMeasure()),this.observer.observe(t),this.viewport instanceof HTMLElement&&this.observer.observe(this.viewport),this.viewport.addEventListener(`scroll`,this.onScroll,{passive:!0}),window.addEventListener(`resize`,this.onScroll),t.addEventListener(`focusin`,this.onFocusIn),t.addEventListener(`pointerdown`,this.onPointerDown),this.refresh(!1)}get rows(){return this.document.rows}get scrollTop(){return this.viewport instanceof HTMLElement?this.viewport.scrollTop:window.scrollY}setScrollTop(e){this.viewport instanceof HTMLElement?this.viewport.scrollTop=e:window.scrollTo(window.scrollX,e)}viewportTop(){return this.viewport instanceof HTMLElement?this.viewport.getBoundingClientRect().top+this.viewport.clientTop:0}viewportHeight(){return this.viewport instanceof HTMLElement?this.viewport.clientHeight:window.innerHeight}canvasTop(){return this.canvas.getBoundingClientRect().top-this.viewportTop()+this.scrollTop}buildHeights(){return new W(this.rows.map(e=>this.estimate(e.data)))}estimate(e){let t=this.options.estimateBlockHeight?.(e,this.width)??V(e,this.width);if(!Number.isFinite(t)||t<=0)throw Error(`Virtual editor estimated height must be positive and finite`);return Math.max(24,t)}reconcileDocument(e){let t=this.anchor(),n=new Map(this.previousRows.map((e,t)=>[e.id,{...e,height:this.heights.values[t]}]));(this.rows.length!==this.previousRows.length||this.rows.some((e,t)=>e.id!==this.previousRows[t].id))&&(this.heights=new W(this.rows.map(e=>n.get(e.id)?.height??this.estimate(e.data))));let r=new Map(this.rows.map((e,t)=>[e.id,t]));this.indices=r,this.documentBlocks.prune(),this.firstParagraph=this.rows.findIndex(e=>e.data.type===`paragraph`);for(let e of this.metrics.keys())r.has(e)||this.metrics.delete(e);for(let t of this.pool.slots){let n=this.islands.get(t.id);if(!n)continue;let i=n.ids.flatMap(e=>r.get(e)??[]);n.ids=i.length>1?this.rows.slice(Math.min(...i),Math.max(...i)+1).map(e=>e.id):i.map(e=>this.rows[e].id),n.source=e===`virtual-island:${t.id}`,n.ids.length?(t.index=r.get(n.ids[0]),t.pool=this.rows[t.index].pool):(t.beforeRelease?.(),t.active=!1)}this.pool.slots=this.pool.slots.filter(e=>{let t=this.islands.get(e.id);return!t||t.ids.length?!0:(t.unsubscribe(),this.preserve.forget(e.id),this.islands.delete(e.id),this.pool.disposed++,!1)}),this.previousRows=this.rows.map(e=>({id:e.id,data:e.data})),this.restore(t),this.refresh(!1),this.publish(),this.queueMeasure()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}publish(e=!0){if(this.dead||!this.listeners.size)return;this.revision++;let t=()=>this.listeners.forEach(e=>e());e?(0,K.flushSync)(t):t()}indexOf(e){return this.indices.get(e)}islandIds(e){for(let t of this.islands.values())if(t.editor===e)return t.ids}rowAt(e){let t=e-this.canvas.getBoundingClientRect().top-this.leadingMargin;return this.heights.find(Math.max(0,t))}dragTo(e){let t=this.drag?.slot;if(!t?.active)return;let n=this.rowAt(e);(n<t.index||n>=t.index+this.island(t).ids.length)&&this.extendIsland(t,n,!0)}extendToPoint(e,t,n,r){if(!this.extendIsland(e,this.rowAt(r),!0))return;let i=window.getSelection(),a=ne(n,r);i?.anchorNode&&t.contains(i.anchorNode)&&a&&t.contains(a.node)&&i.extend(a.node,a.offset)}holdsSelection(e,t){return e.id===this.selectionOwner&&t.editor.getEditorState().read(()=>C()!==null)}refresh(e=!0){if(this.dead||!this.rows.length)return;let t=Math.max(0,this.scrollTop-this.canvasTop()),n=this.options.overscan??this.viewportHeight()*1.5,r=this.heights.find(Math.max(0,t-n)),i=this.heights.find(t+this.viewportHeight()+n),a=new Set,o=[],s=new Set;for(let e of this.pool.slots){let t=this.islands.get(e.id);if(t&&(e.active||this.preserve.has(e.id))){(t.retained||t.editor.isComposing()||e.element?.contains(document.activeElement)||this.holdsSelection(e,t))&&s.add(e.id);for(let n=1;n<t.ids.length;n++)a.add(e.index+n);t.ids.length>1&&e.index<r&&e.index+t.ids.length>r&&o.push(e.index)}}let c=[...o,...Array.from({length:i-r+1},(e,t)=>r+t)].filter(e=>!a.has(e)),l=new Set(c),u=new Set;for(let e of this.pool.slots)(l.has(e.index)||s.has(e.id))&&this.preserve.activate(e.id)&&u.add(e.id);for(let e of this.pool.slots)e.active&&!l.has(e.index)&&!s.has(e.id)&&this.preserve.park(e.id,this.islands.get(e.id)?.ids.join(`,`)??``);let d=new Set([...this.preserve.ids(),...u]),f=this.pool.update(c,e=>this.rows[e].pool,s,d);for(let[e,t]of this.islands)this.pool.slots.some(t=>t.id===e)||(t.unsubscribe(),t.editor.setRootElement(null),this.preserve.forget(e),this.islands.delete(e));f&&this.publish(e)}island(e){let t=this.islands.get(e.id);if(t)return t;let n=this.master.read(()=>i());return t={editor:n,ids:[],generation:-1,loading:!1,source:!1,data:``,unsubscribe:()=>{},retained:0},this.islands.set(e.id,t),t.unsubscribe=n.registerUpdateListener(({editorState:r,dirtyElements:i,dirtyLeaves:a,tags:o})=>{if(t.ids.length>1&&this.queueSplit(e),t.loading||!t.ids.length||o.has(`virtual-bind`)||!i.size&&!a.size)return;let s=r.toJSON().root.children;if(JSON.stringify(s)===t.data)return;let c=new Set;s.forEach((e,n)=>{let r=e.$?.blockId,i=this.indices.has(r)&&!t.ids.includes(r);(!r||c.has(r)||i)&&(r=n===0?t.ids[0]:D(8)),e.$={...e.$,blockId:r},c.add(r)});let l=[...t.ids];t.ids=s.map(e=>e.$.blockId),t.data=JSON.stringify(s),n.update(()=>b().getChildren().forEach((e,n)=>f(e,y,t.ids[n])),{tag:`virtual-bind`}),this.document.replace(l,s,String(e.id))}),t}bind(e){let t=this.island(e),n=t.generation!==e.generation;n&&(t.ids=[this.rows[e.index].id]);let r=t.ids.map(e=>this.rows[this.indices.get(e)??-1]).filter(e=>!!e);if(!r.length)return;let i=r.map(e=>e.data),a=JSON.stringify(i);if(!n&&(t.source||a===t.data))t.source=!1,t.data=a;else{t.generation=e.generation,t.data=a,t.loading=!0;try{t.editor.update(()=>{Q(b(),i),n&&F(null)},{discrete:!0,tag:n?[`virtual-bind`,x]:`virtual-bind`})}finally{t.loading=!1}this.restorePanels(e),this.queueMeasure()}}attach(e,t){e.element&&this.observer.unobserve(e.element),e.element=t??void 0,t&&this.observer.observe(t)}mount(e,t){let n=this.pool.slots.filter(t=>t.active&&t.index>e.index).sort((e,t)=>e.index-t.index).map(e=>this.preserve.host(e.id)).find(e=>e?.parentElement===this.canvas);this.preserve.mount(e.id,t,e.active?this.canvas:null,n??null)}state(e){let t=this.states.get(e);return t||(t=new Map,this.states.set(e,t)),t}nodeState(e,t,n){let r=this.island(e),i=r.editor.getEditorState().read(()=>{let e=t?N(t):b().getFirstChild(),i=[];for(;e?.getParent()&&e.getParent().getType()!==`root`;)i.unshift(e.getIndexWithinParent()),e=e.getParent();let a=e?.getIndexWithinParent()??0;return`${a===0?n:r.ids[a]??n}:${i.join(`.`)}`});return this.state(i)}capturePanels(e){let t=this.islands.get(e.id)?.ids[0];t&&this.state(t).set(`details`,this.panels(e).map(({panel:e})=>e.open))}restorePanels(e){let t=this.state(this.island(e).ids[0]).get(`details`);this.panels(e).forEach(({panel:e,initialOpen:n},r)=>{e.open=t?.[r]??n})}panels(e){let t=this.island(e).editor;return t.getEditorState().read(()=>{let e=[],n=r=>{if(r.getType()===`details`){let n=t.getElementByKey(r.getKey());n instanceof HTMLDetailsElement&&e.push({panel:n,initialOpen:r.getOpen()})}E(r)&&r.getChildren().forEach(n)};return n(b()),e})}anchor(){let e=this.canvas.getBoundingClientRect(),t=document.elementFromPoint(e.left+e.width/2,Math.max(this.viewportTop()+8,e.top+1))?.closest(`[data-virtual-editor-slot]`),n=this.pool.slots.find(e=>e.active&&e.element===t)?.index??this.heights.find(Math.max(0,this.scrollTop-this.canvasTop()));return{id:this.previousRows[n]?.id??this.rows[n]?.id,offset:this.scrollTop-this.canvasTop()-this.blockOffset(n)}}restore(e){this.canvas.style.height=`${this.heights.total+this.leadingMargin}px`;let t=e.id?this.indices.get(e.id)??-1:-1;t>=0&&this.setScrollTop(this.canvasTop()+this.blockOffset(t)+e.offset)}queueMeasure(){!this.dead&&!this.frame&&(this.frame=requestAnimationFrame(()=>this.measure()))}slotOffset(e){return this.blockOffset(e.index)-(this.metrics.get(this.rows[e.index]?.id)?.top??0)}get leadingMargin(){return this.metrics.get(this.rows[0]?.id)?.top??0}blockOffset(e){return this.heights.offset(e)+this.leadingMargin}commitLayout(){cancelAnimationFrame(this.frame),this.measure(!1)}measure(e=!0){if(this.frame=0,this.dead)return;let t=this.anchor(),n=!1;Math.abs(this.canvas.clientWidth-this.width)>.5&&(this.width=this.canvas.clientWidth,this.metrics.clear(),this.heights=this.buildHeights(),n=!0);let r=new Set;for(let e of this.pool.slots){if(!e.active)continue;let t=this.islands.get(e.id),i=t?.editor.getRootElement();if(!i||!t?.ids.length)continue;let a=t.editor.getEditorState().read(()=>b().getChildren().map(e=>t.editor.getElementByKey(e.getKey())));a.forEach((e,n)=>{if(!e)return;let r=this.indices.get(t.ids[n])??-1,a=this.rows[r-1]?.data;e.toggleAttribute(`data-document-first`,r===0&&e===i.firstElementChild),e.toggleAttribute(`data-document-last`,r===this.rows.length-1&&e===i.lastElementChild),e.toggleAttribute(`data-document-first-paragraph`,r===this.firstParagraph),e.dataset.documentPrevTag=a?.type===`heading`?a.tag:a?.type===`horizontalrule`?`hr`:``});let o=i.getBoundingClientRect(),s=a.map(e=>e?.getBoundingClientRect());t.ids.forEach((e,i)=>{let c=this.indices.get(e)??-1,l=a[i];if(c<0||!l)return;l.dataset.blockId=e;let u=s[i],d=getComputedStyle(l),f=i===0?u.top-o.top:parseFloat(d.marginTop)||0,p=i===t.ids.length-1?o.bottom-u.bottom:parseFloat(d.marginBottom)||0;Math.abs(f-(this.metrics.get(e)?.top??0))>.1&&(n=!0),this.metrics.set(e,{height:u.height,top:f,bottom:p,gap:s[i+1]?s[i+1].top-u.bottom:void 0}),r.add(c),c>0&&r.add(c-1)})}for(let e of r){let t=this.metrics.get(this.rows[e].id);if(!t)continue;let r=Math.max(1,U(t,this.metrics.get(this.rows[e+1]?.id)));Math.abs(r-this.heights.values[e])>.1&&(this.heights.update(e,r),n=!0)}n&&(this.restore(t),this.refresh(!1),this.publish(e))}scrollTo(e){this.setScrollTop(this.canvasTop()+this.blockOffset(Math.max(0,Math.min(e,this.rows.length-1)))),this.refresh()}focusBlock(e,t=!1,n=!0){e<0||e>=this.rows.length||(n&&this.scrollTo(e),requestAnimationFrame(()=>{let r=this.pool.slots.find(t=>t.active&&this.islands.get(t.id)?.ids.includes(this.rows[e]?.id));if(!r)return;let{editor:i}=this.island(r);i.getRootElement()?.focus({preventScroll:!0}),i.update(()=>{t?b().selectEnd():b().selectStart()},{tag:n?void 0:ee})}))}extendIsland(e,t,n=!1){let r=this.island(e),i=e.index,a=i+r.ids.length-1,o=Math.max(0,Math.min(t,this.rows.length-1));if(o>=i&&o<=a)return!0;let s=o<i,c=s?this.rows.slice(o,i):this.rows.slice(a+1,o+1);if(r.ids.length+c.length>(this.options.selectionMergeLimit??200))return!1;let l=new Set(c.map(e=>e.id)),u=this.pool.slots.filter(t=>t!==e&&this.islands.get(t.id)?.ids.some(e=>l.has(e)));if(u.some(e=>{let t=this.islands.get(e.id);return t.retained>0||t.editor.isComposing()}))return!1;for(let e of u)e.beforeRelease?.(),e.active=!1,this.islands.get(e.id).generation=-1;return r.ids=s?[...l,...r.ids]:[...r.ids,...l],s&&(e.index=o),r.data=JSON.stringify(r.ids.map(e=>this.rows[this.indices.get(e)].data)),r.editor.update(()=>{let e=c.map(e=>S(e.data)),t=b().getFirstChild();s&&t?e.forEach(e=>t.insertBefore(e)):b().append(...e)},{discrete:!0,tag:[`virtual-bind`,x]}),this.refresh(!1),this.publish(n),this.queueMeasure(),!0}extendForKey(e,t){let n=this.island(e),r=t===`down`||t===`right`,i=n.editor.getEditorState().read(()=>{let e=C();if(!v(e))return!1;let n=b(),i=e.focus.getNode();if(t===`up`||t===`down`)return $(i)?.is(r?n.getLastChild():n.getFirstChild())??!1;let a=r?n.getLastDescendant():n.getFirstDescendant();return!!a&&i.is(a)&&e.focus.offset===(r?a.getTextContentSize():0)}),a=r?e.index+n.ids.length:e.index-1;return!i||a<0||a>=this.rows.length?!1:this.extendIsland(e,a)}splitIsland(e){let t=this.islands.get(e.id);if(!t||t.ids.length<2)return;let n=t.editor.getEditorState().read(()=>{let e=C();return $(v(e)?e.focus.getNode():null)?.getIndexWithinParent()??0}),r=t.ids[n]??t.ids[0];t.ids=[r],e.index=this.indices.get(r),t.data=JSON.stringify([this.rows[e.index].data]),t.editor.update(()=>b().getChildren().forEach((e,t)=>{t!==n&&e.remove()}),{discrete:!0,tag:`virtual-bind`}),this.refresh(!1),this.publish(),this.queueMeasure()}queueSplit(e){this.splitting.has(e.id)||(this.splitting.add(e.id),requestAnimationFrame(()=>{this.splitting.delete(e.id);let t=this.islands.get(e.id);if(this.dead||!e.active||!t||t.editor.isComposing())return;let n=window.getSelection(),r=t.editor.getRootElement();n&&!n.isCollapsed&&n.anchorNode&&r?.contains(n.anchorNode)||t.editor.getEditorState().read(()=>{let e=C();return e===null||v(e)&&e.isCollapsed()})&&this.splitIsland(e)}))}joinNeighbor(e,t){let n=this.island(e),r=t?e.index-1:e.index+n.ids.length,i=this.rows[r];if(!i)return!1;for(let t of this.pool.slots)t!==e&&this.islands.get(t.id)?.ids.includes(i.id)&&(t.beforeRelease?.(),t.active=!1);return n.ids=t?[i.id,...n.ids]:[...n.ids,i.id],t&&(e.index=r),n.editor.update(()=>{let e=S(i.data);t?b().getFirstChild().insertBefore(e):b().append(e);let n=C();v(n)&&n.deleteCharacter(t)},{discrete:!0}),!0}dispose(){this.dead=!0,this.document.dispose(),this.observer.disconnect(),cancelAnimationFrame(this.frame),this.viewport.removeEventListener(`scroll`,this.onScroll),window.removeEventListener(`resize`,this.onScroll),this.canvas.removeEventListener(`focusin`,this.onFocusIn),this.canvas.removeEventListener(`pointerdown`,this.onPointerDown),this.endDrag();for(let e of this.islands.values())e.unsubscribe();this.listeners.clear(),this.preserve.clear()}};function ie({controller:e,slot:t}){let[n]=m();return(0,G.useEffect)(()=>{let r=e=>{let t=C();if(!v(t)||!t.isCollapsed())return!1;let n=e?b().getLastDescendant():b().getFirstDescendant();return!!n&&t.anchor.key===n.getKey()&&t.anchor.offset===(e?n.getTextContentSize():0)},i=n=>(e.extendForKey(t,n),!1),a=[n.registerCommand(s,()=>(e.master.dispatchCommand(s,void 0),!0),4),n.registerCommand(P,()=>(e.master.dispatchCommand(P,void 0),!0),4),n.registerCommand(o,n=>!r(!1)||!e.joinNeighbor(t,!0)?!1:(n?.preventDefault(),!0),4),n.registerCommand(A,n=>!r(!0)||!e.joinNeighbor(t,!1)?!1:(n?.preventDefault(),!0),4),n.registerCommand(d,n=>n?.shiftKey?i(`up`):!r(!1)||t.index===0?!1:(n?.preventDefault(),e.focusBlock(t.index-1,!0),!0),4),n.registerCommand(te,n=>{if(n?.shiftKey)return i(`down`);if(!r(!0))return!1;let a=t.index+e.island(t).ids.length;return a>=e.rows.length?!1:(n?.preventDefault(),e.focusBlock(a),!0)},4),n.registerCommand(p,e=>!!e.shiftKey&&i(`left`),4),n.registerCommand(T,e=>!!e.shiftKey&&i(`right`),4)];return()=>a.forEach(e=>e())},[e,n,t]),null}function ae({controller:e,slot:t,plugins:n,onActiveEditorChange:r,onRelease:i,retainSurface:a,placeholder:o}){let s=e.island(t),l=e.rows[t.index],d=`${t.generation}:${t.active}`,[f,p]=(0,G.useState)(``),[m]=(0,G.useState)(()=>{let e=document.createElement(`div`);return e.style.display=`contents`,e}),h=t.active||e.preserve.has(t.id),g=c(),v=(0,G.useMemo)(()=>({blockId:l.id,active:t.active,editor:s.editor,documentBlocks:e.documentBlocks,nodeState:n=>e.nodeState(t,n,l.id),retain:()=>{s.retained++;let t=a(),n=!1;return()=>{n||(n=!0,s.retained--,t(),e.refresh(!1))}}}),[e,s.editor,a,l.id,t,t.active,t.generation]),y=(0,G.useCallback)(n=>e.attach(t,n),[e,t]);return(0,G.useLayoutEffect)(()=>{e.mount(t,m),h?e.bind(t):s.generation=-1,t.beforeRelease=()=>{e.capturePanels(t),i(s.editor)}}),(0,G.useLayoutEffect)(()=>()=>m.remove(),[m]),(0,G.useLayoutEffect)(()=>{let e=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>p(d))});return()=>cancelAnimationFrame(e)},[d]),(0,K.createPortal)((0,q.jsx)(`div`,{className:z,"data-pool":t.pool,"data-restoring":f===d?void 0:``,"data-virtual-editor-block":t.active?l.id:void 0,"data-virtual-editor-slot":t.id,ref:y,style:{display:t.active?void 0:`none`,transform:`translateY(${e.slotOffset(t)}px)`},onFocusCapture:()=>r(s.editor),children:(0,q.jsx)(u,{value:v,children:h&&(0,q.jsxs)(j,{skipCollabChecks:!0,initialEditor:s.editor,children:[(0,q.jsx)(O,{ErrorBoundary:w,contentEditable:(0,q.jsx)(_,{"aria-label":`Document block`,"aria-placeholder":o??``,className:`rich-editor__content qi8t62`,"data-virtual-editor-content":``,placeholder:(0,q.jsx)(`div`,{className:`b94s952`,style:{top:0,left:0,display:o?void 0:`none`},children:o})})}),t.active&&n,(0,q.jsx)(ie,{controller:e,slot:t}),t.active&&g]})})}),m,String(t.id))}function oe({controller:e,plugins:t,onActiveEditorChange:n,onRelease:r,retainSurface:i,placeholder:a}){let[,o]=(0,G.useState)(0);return(0,G.useLayoutEffect)(()=>e.subscribe(()=>o(e=>e+1)),[e]),(0,G.useLayoutEffect)(()=>e.commitLayout()),(0,q.jsx)(q.Fragment,{children:e.pool.slots.map(o=>(0,q.jsx)(ae,{controller:e,plugins:t,retainSurface:i,slot:o,placeholder:e.rows.length===1&&e.rows[0].data.type===`paragraph`&&!(e.rows[0].data.children??[]).some(e=>e.type!==`text`||e.text)?a:void 0,onActiveEditorChange:n,onRelease:r},o.id))})}function se({options:e,className:t,plugins:n,autoFocus:r,hasHeader:i,onActiveEditorChange:a,retainSurface:o,placeholder:s}){let[c]=m(),{scrollContainer:l,overscan:u,estimateBlockHeight:d,preserveCapacity:f,selectionMergeLimit:p}=e,h=(0,G.useMemo)(()=>({scrollContainer:l,overscan:u,estimateBlockHeight:d,preserveCapacity:f,selectionMergeLimit:p}),[l,u,d,f,p]),g=(0,G.useRef)(null),_=(0,G.useCallback)(e=>{g.current=e,a(e)},[a]),v=(0,G.useCallback)(e=>{g.current===e&&_(null)},[_]),y=(0,G.useRef)(null),[b,x]=(0,G.useState)(null),[S,C]=(0,G.useState)(``);return(0,G.useEffect)(()=>{x(null),C(``);let e=y.current,t;try{t=new re(c,e,h),x(t),Object.assign(e,{virtualEditor:t})}catch(e){C(String(e));return}return()=>{_(null),t.dispose(),Reflect.deleteProperty(e,`virtualEditor`)}},[c,_,h]),(0,G.useEffect)(()=>{b&&r&&b.focusBlock(0,!1,!1)},[r,b]),(0,q.jsxs)(`div`,{className:`rich-editor__content-wrapper ${M}`,style:{"--ce-padding-top":`${i?40:12}px`},children:[S&&(0,q.jsx)(`p`,{role:`alert`,children:S}),(0,q.jsx)(`div`,{className:`${k} ${t??``}`,children:(0,q.jsx)(`div`,{className:R,"data-virtual-editor":``,ref:y,children:b&&(0,q.jsx)(oe,{controller:b,placeholder:s,plugins:n,retainSurface:o,onActiveEditorChange:_,onRelease:v})})})]})}export{se as VirtualizedEditor};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{g as t}from"./route-B5bzKpud.js";import{n,t as r}from"./jsx-runtime-CldxteV5.js";import{Lt as i}from"./channel-Ci7EBqIH.js";import{a,c as o,i as s,l as c,n as l,o as u,r as d,s as f,t as p}from"./viewport-CFJHn_Y6-CZ2u5hxC.js";import{n as m}from"./DocumentPage-tHCa_QBi.js";var h=e(n(),1),g=r(),_=e(t(),1);function v(e){"@babel/helpers - typeof";return v=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},v(e)}function y(e,t){if(v(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(v(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function b(e){var t=y(e,`string`);return v(t)==`symbol`?t:t+``}function x(e,t,n){return(t=b(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var S=class{constructor(e,t,n){if(x(this,`document`,void 0),x(this,`canvas`,void 0),x(this,`options`,void 0),x(this,`pool`,new d),x(this,`preserve`,void 0),x(this,`viewport`,void 0),x(this,`states`,new Map),x(this,`retained`,new Map),x(this,`heights`,void 0),x(this,`metrics`,new Map),x(this,`listeners`,new Set),x(this,`observer`,void 0),x(this,`width`,void 0),x(this,`frame`,0),x(this,`dead`,!1),x(this,`firstParagraph`,void 0),x(this,`onScroll`,()=>this.refresh()),x(this,`onFocusOut`,()=>queueMicrotask(()=>{this.dead||this.refresh()})),x(this,`queueMeasure`,()=>{!this.dead&&!this.frame&&(this.frame=requestAnimationFrame(()=>this.measure()))}),x(this,`onHash`,()=>{let e;try{e=decodeURIComponent(window.location.hash.slice(1))}catch{return}let t=this.document.headingRows.get(e);if(t!==void 0){this.scrollTo(t);let n=this.canvas.querySelector(`#${CSS.escape(e)}`);n&&this.setScrollTop(this.scrollTop+n.getBoundingClientRect().top-this.viewportTop())}}),this.document=e,this.canvas=t,this.options=n,n.overscan!==void 0&&(!Number.isFinite(n.overscan)||n.overscan<0))throw Error(`Renderer overscan must be a nonnegative number`);this.viewport=o(t,n.scrollContainer),this.preserve=new l(n.preserveCapacity??32,e=>{let t=this.pool.slots.find(t=>t.id===e);t?.beforeRelease?.(),t&&(t.committed=-1)}),this.width=t.clientWidth,this.heights=this.buildHeights(),this.firstParagraph=this.rows.flatMap(e=>e.blocks).find(e=>e.data.type===`paragraph`)?.index??-1,this.canvas.style.height=`${this.heights.total}px`,this.observer=new ResizeObserver(this.queueMeasure),this.observer.observe(t),this.viewport instanceof HTMLElement&&this.observer.observe(this.viewport),this.viewport.addEventListener(`scroll`,this.onScroll,{passive:!0}),this.canvas.addEventListener(`focusout`,this.onFocusOut),window.addEventListener(`resize`,this.onScroll),window.addEventListener(`hashchange`,this.onHash),this.refresh(!1),queueMicrotask(()=>{this.dead||this.onHash()})}get rows(){return this.document.rows}get scrollTop(){return this.viewport instanceof HTMLElement?this.viewport.scrollTop:window.scrollY}setScrollTop(e){this.viewport instanceof HTMLElement?this.viewport.scrollTop=e:window.scrollTo(window.scrollX,e)}viewportTop(){return this.viewport instanceof HTMLElement?this.viewport.getBoundingClientRect().top+this.viewport.clientTop:0}viewportHeight(){return this.viewport instanceof HTMLElement?this.viewport.clientHeight:window.innerHeight}canvasTop(){return this.canvas.getBoundingClientRect().top-this.viewportTop()+this.scrollTop}buildHeights(){return new p(this.rows.map(e=>e.blocks.reduce((e,t)=>{let n=this.options.estimateBlockHeight?.(t.data,this.width)??u(t.data,this.width);if(!Number.isFinite(n)||n<=0)throw Error(`Renderer estimated height must be positive and finite`);return e+n},0)))}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}publish(e=!0){if(this.dead||!this.listeners.size)return;let t=()=>this.listeners.forEach(e=>e());e?(0,_.flushSync)(t):t()}refresh(e=!0){if(this.dead||!this.rows.length)return;let t=Math.max(0,this.scrollTop-this.canvasTop()),n=this.options.overscan??this.viewportHeight()*1.5,r=this.heights.find(Math.max(0,t-n)),i=this.heights.find(t+this.viewportHeight()+n),a=Array.from({length:i-r+1},(e,t)=>r+t),o=new Set(a),s=new Set(this.pool.slots.filter(e=>e.active&&(this.retained.get(e.id)||e.element?.contains(globalThis.document.activeElement))).map(e=>e.id)),c=new Set;for(let e of this.pool.slots)(o.has(e.index)||s.has(e.id))&&this.preserve.activate(e.id)&&c.add(e.id);for(let e of this.pool.slots)e.active&&!o.has(e.index)&&!s.has(e.id)&&this.preserve.park(e.id,this.rows[e.index].id);let l=this.pool.slots.map(e=>e.id),u=this.pool.update(a,e=>this.rows[e].pool,s,new Set([...this.preserve.ids(),...c]));for(let e of l)this.pool.slots.some(t=>t.id===e)||this.preserve.forget(e);u&&this.publish(e)}mount(e,t){let n=this.pool.slots.filter(t=>t.active&&t.index>e.index).sort((e,t)=>e.index-t.index).map(e=>this.preserve.host(e.id)).find(e=>e?.parentElement===this.canvas);this.preserve.mount(e.id,t,e.active?this.canvas:null,n??null)}attach(e,t){e.element&&this.observer.unobserve(e.element),e.element=t??void 0,t&&this.observer.observe(t)}nodeState(e,t){let n=`${e}:${this.document.nodePath(t)}`,r=this.states.get(n);return r||(r=new Map,this.states.set(n,r)),r}capturePanels(e){this.nodeState(this.rows[e.index].id).set(`details`,[...e.element?.querySelectorAll(`details`)??[]].map(e=>e.open))}bind(e){if(e.committed===e.generation)return;e.committed=e.generation;let t=this.nodeState(this.rows[e.index].id).get(`details`),n=[],r=e=>{e.type===`details`&&n.push(!!e.open),e.children?.forEach(r)};r(this.rows[e.index].data),e.element?.querySelectorAll(`details`).forEach((e,r)=>e.open=t?.[r]??n[r]??!1)}get leadingMargin(){return this.metrics.get(this.rows[0]?.id)?.top??0}blockOffset(e){return this.heights.offset(e)+this.leadingMargin}slotOffset(e){return this.blockOffset(e.index)-(this.metrics.get(this.rows[e.index]?.id)?.top??0)}anchor(){let e=this.canvas.getBoundingClientRect(),t=globalThis.document.elementFromPoint(e.left+e.width/2,Math.max(this.viewportTop()+8,e.top+1))?.closest(`[data-virtual-renderer-slot]`),n=this.pool.slots.find(e=>e.active&&e.element===t)?.index??this.heights.find(Math.max(0,this.scrollTop-this.canvasTop()));return{index:n,offset:this.scrollTop-this.canvasTop()-this.blockOffset(n)}}commitLayout(){cancelAnimationFrame(this.frame),this.measure(!1)}measure(e=!0){if(this.frame=0,this.dead)return;let t=this.anchor(),n=!1;Math.abs(this.canvas.clientWidth-this.width)>.5&&(this.width=this.canvas.clientWidth,this.metrics.clear(),this.heights=this.buildHeights(),n=!0);let r=new Set;for(let e of this.pool.slots){if(!e.active)continue;let t=e.element?.firstElementChild;if(!t)continue;t.setAttribute(`data-rich-nested`,this.canvas.closest(`.rich-content`)?.getAttribute(`data-rich-nested`)??`false`);let i=[...t.children],a=this.rows[e.index].blocks;i.forEach((t,n)=>{let r=a[n];if(!r)return;t.dataset.blockId=r.id,t.dataset.rendererBlockIndex=String(r.index),t.toggleAttribute(`data-document-first`,e.index===0&&n===0),t.toggleAttribute(`data-document-last`,e.index===this.rows.length-1&&n===i.length-1),t.toggleAttribute(`data-document-first-paragraph`,r.index===this.firstParagraph);let o=a[n-1]?.data??this.rows[e.index-1]?.blocks.at(-1)?.data;t.dataset.documentPrevTag=o?.type===`heading`?o.tag:o?.type===`horizontalrule`?`hr`:``});let o=t.getBoundingClientRect(),s=i.filter(e=>getComputedStyle(e).display!==`none`).map(e=>e.getBoundingClientRect()),c=s.length?Math.min(...s.map(e=>e.top)):o.top,l=s.length?Math.max(...s.map(e=>e.bottom)):o.bottom,u=c-o.top;Math.abs(u-(this.metrics.get(this.rows[e.index].id)?.top??0))>.1&&(n=!0),this.metrics.set(this.rows[e.index].id,{height:l-c,top:u,bottom:o.bottom-l}),r.add(e.index),e.index>0&&r.add(e.index-1)}for(let e of r){let t=this.metrics.get(this.rows[e].id);if(!t)continue;let r=Math.max(0,f(t,this.metrics.get(this.rows[e+1]?.id)));Math.abs(r-this.heights.values[e])>.1&&(this.heights.update(e,r),n=!0)}n&&(this.canvas.style.height=`${this.heights.total+this.leadingMargin}px`,this.setScrollTop(this.canvasTop()+this.blockOffset(t.index)+t.offset),this.refresh(!1),this.publish(e))}scrollTo(e){this.rows.length&&(this.setScrollTop(this.canvasTop()+this.blockOffset(Math.max(0,Math.min(e,this.rows.length-1)))),this.refresh())}dispose(){this.dead=!0,this.observer.disconnect(),cancelAnimationFrame(this.frame),this.viewport.removeEventListener(`scroll`,this.onScroll),this.canvas.removeEventListener(`focusout`,this.onFocusOut),window.removeEventListener(`resize`,this.onScroll),window.removeEventListener(`hashchange`,this.onHash),this.preserve.clear(),this.listeners.clear()}};function C({controller:e,slot:t}){let n=e.rows[t.index],[r]=(0,h.useState)(()=>{let e=document.createElement(`div`);return e.style.display=`contents`,e}),o=t.active||e.preserve.has(t.id),s=`${t.generation}:${t.active}`,[l,u]=(0,h.useState)(``),d=(0,h.useMemo)(()=>e.document.render(t.index,t.id),[e,t.generation,t.id]),f=(0,h.useMemo)(()=>({active:t.active,blockId:n.id,editor:e.document.editor,nodeState:t=>e.nodeState(n.id,t),retain:()=>{e.retained.set(t.id,(e.retained.get(t.id)??0)+1);let n=!1;return()=>{if(n)return;n=!0;let r=(e.retained.get(t.id)??1)-1;r?e.retained.set(t.id,r):e.retained.delete(t.id),e.refresh(!1)}}}),[e,n.id,t.active,t.generation,t.id]),p=(0,h.useCallback)(n=>e.attach(t,n),[e,t]);return(0,h.useLayoutEffect)(()=>{e.mount(t,r),o?e.bind(t):t.committed=-1,t.beforeRelease=()=>e.capturePanels(t)}),(0,h.useLayoutEffect)(()=>()=>r.remove(),[r]),(0,h.useEffect)(()=>{let e=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>u(s))});return()=>cancelAnimationFrame(e)},[s]),(0,_.createPortal)((0,g.jsx)(`div`,{className:c,"data-pool":n.pool,"data-restoring":s===l?void 0:``,"data-virtual-renderer-block":t.active?n.id:void 0,"data-virtual-renderer-slot":t.id,ref:p,style:{display:t.active?void 0:`none`,transform:`translateY(${e.slotOffset(t)}px)`},children:(0,g.jsx)(`div`,{className:a,"data-virtual-renderer-content":``,children:(0,g.jsx)(i,{value:f,children:o&&d})})}),r,String(t.id))}function w({controller:e}){let[,t]=(0,h.useState)(0);return(0,h.useLayoutEffect)(()=>e.subscribe(()=>t(e=>e+1)),[e]),(0,h.useLayoutEffect)(()=>e.commitLayout()),(0,g.jsx)(g.Fragment,{children:e.pool.slots.map(t=>(0,g.jsx)(C,{controller:e,slot:t},t.id))})}function T({document:e,options:t}){let n=(0,h.useRef)(null),[r,i]=(0,h.useState)(null),[a,o]=(0,h.useState)(``);return(0,h.useEffect)(()=>{let r=n.current,a;try{a=new S(e,r,t),o(``),i(a),Object.assign(r,{virtualRenderer:a})}catch(e){o(String(e)),i(null);return}return()=>{a.dispose(),Reflect.deleteProperty(r,`virtualRenderer`)}},[e,t]),(0,g.jsxs)(g.Fragment,{children:[a&&(0,g.jsx)(`p`,{role:`alert`,children:a}),(0,g.jsx)(`div`,{className:s,"data-virtual-renderer":``,ref:n,children:r?(0,g.jsx)(w,{controller:r}):(0,g.jsx)(m,{document:e})})]})}export{T as VirtualizedRenderer};
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{_ as t}from"./route-w3PXrIFf.js";import{n,t as r}from"./jsx-runtime-CldxteV5.js";import{Lt as i}from"./channel-NSE57aBD.js";import{a,c as o,i as s,l as c,n as l,o as u,r as d,s as f,t as p}from"./viewport-CFJHn_Y6-CyNXuhKV.js";import{n as m}from"./DocumentPage-C7pveaCL.js";var h=e(n(),1),g=r(),_=e(t(),1);function v(e){"@babel/helpers - typeof";return v=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},v(e)}function y(e,t){if(v(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(v(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function b(e){var t=y(e,`string`);return v(t)==`symbol`?t:t+``}function x(e,t,n){return(t=b(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var S=class{constructor(e,t,n){if(x(this,`document`,void 0),x(this,`canvas`,void 0),x(this,`options`,void 0),x(this,`pool`,new d),x(this,`preserve`,void 0),x(this,`viewport`,void 0),x(this,`states`,new Map),x(this,`retained`,new Map),x(this,`heights`,void 0),x(this,`metrics`,new Map),x(this,`listeners`,new Set),x(this,`observer`,void 0),x(this,`width`,void 0),x(this,`frame`,0),x(this,`dead`,!1),x(this,`firstParagraph`,void 0),x(this,`onScroll`,()=>this.refresh()),x(this,`onFocusOut`,()=>queueMicrotask(()=>{this.dead||this.refresh()})),x(this,`queueMeasure`,()=>{!this.dead&&!this.frame&&(this.frame=requestAnimationFrame(()=>this.measure()))}),x(this,`onHash`,()=>{let e;try{e=decodeURIComponent(window.location.hash.slice(1))}catch{return}let t=this.document.headingRows.get(e);if(t!==void 0){this.scrollTo(t);let n=this.canvas.querySelector(`#${CSS.escape(e)}`);n&&this.setScrollTop(this.scrollTop+n.getBoundingClientRect().top-this.viewportTop())}}),this.document=e,this.canvas=t,this.options=n,n.overscan!==void 0&&(!Number.isFinite(n.overscan)||n.overscan<0))throw Error(`Renderer overscan must be a nonnegative number`);this.viewport=o(t,n.scrollContainer),this.preserve=new l(n.preserveCapacity??32,e=>{let t=this.pool.slots.find(t=>t.id===e);t?.beforeRelease?.(),t&&(t.committed=-1)}),this.width=t.clientWidth,this.heights=this.buildHeights(),this.firstParagraph=this.rows.flatMap(e=>e.blocks).find(e=>e.data.type===`paragraph`)?.index??-1,this.canvas.style.height=`${this.heights.total}px`,this.observer=new ResizeObserver(this.queueMeasure),this.observer.observe(t),this.viewport instanceof HTMLElement&&this.observer.observe(this.viewport),this.viewport.addEventListener(`scroll`,this.onScroll,{passive:!0}),this.canvas.addEventListener(`focusout`,this.onFocusOut),window.addEventListener(`resize`,this.onScroll),window.addEventListener(`hashchange`,this.onHash),this.refresh(!1),queueMicrotask(()=>{this.dead||this.onHash()})}get rows(){return this.document.rows}get scrollTop(){return this.viewport instanceof HTMLElement?this.viewport.scrollTop:window.scrollY}setScrollTop(e){this.viewport instanceof HTMLElement?this.viewport.scrollTop=e:window.scrollTo(window.scrollX,e)}viewportTop(){return this.viewport instanceof HTMLElement?this.viewport.getBoundingClientRect().top+this.viewport.clientTop:0}viewportHeight(){return this.viewport instanceof HTMLElement?this.viewport.clientHeight:window.innerHeight}canvasTop(){return this.canvas.getBoundingClientRect().top-this.viewportTop()+this.scrollTop}buildHeights(){return new p(this.rows.map(e=>e.blocks.reduce((e,t)=>{let n=this.options.estimateBlockHeight?.(t.data,this.width)??u(t.data,this.width);if(!Number.isFinite(n)||n<=0)throw Error(`Renderer estimated height must be positive and finite`);return e+n},0)))}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}publish(e=!0){if(this.dead||!this.listeners.size)return;let t=()=>this.listeners.forEach(e=>e());e?(0,_.flushSync)(t):t()}refresh(e=!0){if(this.dead||!this.rows.length)return;let t=Math.max(0,this.scrollTop-this.canvasTop()),n=this.options.overscan??this.viewportHeight()*1.5,r=this.heights.find(Math.max(0,t-n)),i=this.heights.find(t+this.viewportHeight()+n),a=Array.from({length:i-r+1},(e,t)=>r+t),o=new Set(a),s=new Set(this.pool.slots.filter(e=>e.active&&(this.retained.get(e.id)||e.element?.contains(globalThis.document.activeElement))).map(e=>e.id)),c=new Set;for(let e of this.pool.slots)(o.has(e.index)||s.has(e.id))&&this.preserve.activate(e.id)&&c.add(e.id);for(let e of this.pool.slots)e.active&&!o.has(e.index)&&!s.has(e.id)&&this.preserve.park(e.id,this.rows[e.index].id);let l=this.pool.slots.map(e=>e.id),u=this.pool.update(a,e=>this.rows[e].pool,s,new Set([...this.preserve.ids(),...c]));for(let e of l)this.pool.slots.some(t=>t.id===e)||this.preserve.forget(e);u&&this.publish(e)}mount(e,t){let n=this.pool.slots.filter(t=>t.active&&t.index>e.index).sort((e,t)=>e.index-t.index).map(e=>this.preserve.host(e.id)).find(e=>e?.parentElement===this.canvas);this.preserve.mount(e.id,t,e.active?this.canvas:null,n??null)}attach(e,t){e.element&&this.observer.unobserve(e.element),e.element=t??void 0,t&&this.observer.observe(t)}nodeState(e,t){let n=`${e}:${this.document.nodePath(t)}`,r=this.states.get(n);return r||(r=new Map,this.states.set(n,r)),r}capturePanels(e){this.nodeState(this.rows[e.index].id).set(`details`,[...e.element?.querySelectorAll(`details`)??[]].map(e=>e.open))}bind(e){if(e.committed===e.generation)return;e.committed=e.generation;let t=this.nodeState(this.rows[e.index].id).get(`details`),n=[],r=e=>{e.type===`details`&&n.push(!!e.open),e.children?.forEach(r)};r(this.rows[e.index].data),e.element?.querySelectorAll(`details`).forEach((e,r)=>e.open=t?.[r]??n[r]??!1)}get leadingMargin(){return this.metrics.get(this.rows[0]?.id)?.top??0}blockOffset(e){return this.heights.offset(e)+this.leadingMargin}slotOffset(e){return this.blockOffset(e.index)-(this.metrics.get(this.rows[e.index]?.id)?.top??0)}anchor(){let e=this.canvas.getBoundingClientRect(),t=globalThis.document.elementFromPoint(e.left+e.width/2,Math.max(this.viewportTop()+8,e.top+1))?.closest(`[data-virtual-renderer-slot]`),n=this.pool.slots.find(e=>e.active&&e.element===t)?.index??this.heights.find(Math.max(0,this.scrollTop-this.canvasTop()));return{index:n,offset:this.scrollTop-this.canvasTop()-this.blockOffset(n)}}commitLayout(){cancelAnimationFrame(this.frame),this.measure(!1)}measure(e=!0){if(this.frame=0,this.dead)return;let t=this.anchor(),n=!1;Math.abs(this.canvas.clientWidth-this.width)>.5&&(this.width=this.canvas.clientWidth,this.metrics.clear(),this.heights=this.buildHeights(),n=!0);let r=new Set;for(let e of this.pool.slots){if(!e.active)continue;let t=e.element?.firstElementChild;if(!t)continue;t.setAttribute(`data-rich-nested`,this.canvas.closest(`.rich-content`)?.getAttribute(`data-rich-nested`)??`false`);let i=[...t.children],a=this.rows[e.index].blocks;i.forEach((t,n)=>{let r=a[n];if(!r)return;t.dataset.blockId=r.id,t.dataset.rendererBlockIndex=String(r.index),t.toggleAttribute(`data-document-first`,e.index===0&&n===0),t.toggleAttribute(`data-document-last`,e.index===this.rows.length-1&&n===i.length-1),t.toggleAttribute(`data-document-first-paragraph`,r.index===this.firstParagraph);let o=a[n-1]?.data??this.rows[e.index-1]?.blocks.at(-1)?.data;t.dataset.documentPrevTag=o?.type===`heading`?o.tag:o?.type===`horizontalrule`?`hr`:``});let o=t.getBoundingClientRect(),s=i.filter(e=>getComputedStyle(e).display!==`none`).map(e=>e.getBoundingClientRect()),c=s.length?Math.min(...s.map(e=>e.top)):o.top,l=s.length?Math.max(...s.map(e=>e.bottom)):o.bottom,u=c-o.top;Math.abs(u-(this.metrics.get(this.rows[e.index].id)?.top??0))>.1&&(n=!0),this.metrics.set(this.rows[e.index].id,{height:l-c,top:u,bottom:o.bottom-l}),r.add(e.index),e.index>0&&r.add(e.index-1)}for(let e of r){let t=this.metrics.get(this.rows[e].id);if(!t)continue;let r=Math.max(0,f(t,this.metrics.get(this.rows[e+1]?.id)));Math.abs(r-this.heights.values[e])>.1&&(this.heights.update(e,r),n=!0)}n&&(this.canvas.style.height=`${this.heights.total+this.leadingMargin}px`,this.setScrollTop(this.canvasTop()+this.blockOffset(t.index)+t.offset),this.refresh(!1),this.publish(e))}scrollTo(e){this.rows.length&&(this.setScrollTop(this.canvasTop()+this.blockOffset(Math.max(0,Math.min(e,this.rows.length-1)))),this.refresh())}dispose(){this.dead=!0,this.observer.disconnect(),cancelAnimationFrame(this.frame),this.viewport.removeEventListener(`scroll`,this.onScroll),this.canvas.removeEventListener(`focusout`,this.onFocusOut),window.removeEventListener(`resize`,this.onScroll),window.removeEventListener(`hashchange`,this.onHash),this.preserve.clear(),this.listeners.clear()}};function C({controller:e,slot:t}){let n=e.rows[t.index],[r]=(0,h.useState)(()=>{let e=document.createElement(`div`);return e.style.display=`contents`,e}),o=t.active||e.preserve.has(t.id),s=`${t.generation}:${t.active}`,[l,u]=(0,h.useState)(``),d=(0,h.useMemo)(()=>e.document.render(t.index,t.id),[e,t.generation,t.id]),f=(0,h.useMemo)(()=>({active:t.active,blockId:n.id,editor:e.document.editor,nodeState:t=>e.nodeState(n.id,t),retain:()=>{e.retained.set(t.id,(e.retained.get(t.id)??0)+1);let n=!1;return()=>{if(n)return;n=!0;let r=(e.retained.get(t.id)??1)-1;r?e.retained.set(t.id,r):e.retained.delete(t.id),e.refresh(!1)}}}),[e,n.id,t.active,t.generation,t.id]),p=(0,h.useCallback)(n=>e.attach(t,n),[e,t]);return(0,h.useLayoutEffect)(()=>{e.mount(t,r),o?e.bind(t):t.committed=-1,t.beforeRelease=()=>e.capturePanels(t)}),(0,h.useLayoutEffect)(()=>()=>r.remove(),[r]),(0,h.useEffect)(()=>{let e=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>u(s))});return()=>cancelAnimationFrame(e)},[s]),(0,_.createPortal)((0,g.jsx)(`div`,{className:c,"data-pool":n.pool,"data-restoring":s===l?void 0:``,"data-virtual-renderer-block":t.active?n.id:void 0,"data-virtual-renderer-slot":t.id,ref:p,style:{display:t.active?void 0:`none`,transform:`translateY(${e.slotOffset(t)}px)`},children:(0,g.jsx)(`div`,{className:a,"data-virtual-renderer-content":``,children:(0,g.jsx)(i,{value:f,children:o&&d})})}),r,String(t.id))}function w({controller:e}){let[,t]=(0,h.useState)(0);return(0,h.useLayoutEffect)(()=>e.subscribe(()=>t(e=>e+1)),[e]),(0,h.useLayoutEffect)(()=>e.commitLayout()),(0,g.jsx)(g.Fragment,{children:e.pool.slots.map(t=>(0,g.jsx)(C,{controller:e,slot:t},t.id))})}function T({document:e,options:t}){let n=(0,h.useRef)(null),[r,i]=(0,h.useState)(null),[a,o]=(0,h.useState)(``);return(0,h.useEffect)(()=>{let r=n.current,a;try{a=new S(e,r,t),o(``),i(a),Object.assign(r,{virtualRenderer:a})}catch(e){o(String(e)),i(null);return}return()=>{a.dispose(),Reflect.deleteProperty(r,`virtualRenderer`)}},[e,t]),(0,g.jsxs)(g.Fragment,{children:[a&&(0,g.jsx)(`p`,{role:`alert`,children:a}),(0,g.jsx)(`div`,{className:s,"data-virtual-renderer":``,ref:n,children:r?(0,g.jsx)(w,{controller:r}):(0,g.jsx)(m,{document:e})})]})}export{T as VirtualizedRenderer};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-CldxteV5.js";import{i as t}from"./type-icons-BmaAIhru.js";var n=e();function r({warnings:e}){return e.length===0?null:(0,n.jsx)(t,{placement:`topRight`,content:(0,n.jsx)(`ul`,{className:`x1ghz6dp x12ulsxz xwn43p0 x1lr1uin x4z9k3i x1dbl2gt`,children:e.map((e,t)=>(0,n.jsx)(`li`,{children:e},t))}),children:(0,n.jsxs)(`button`,{type:`button`,className:`xixxii4 xlftelb xn0vg7t x1fgtraw x1awh872 xc342km xur7f20 xqdcvd7 x7zghnd xqfszdh x4z9k3i xk50ysn x1cqdj14 x1ypdohk x1n327nk`,children:[e.length,` `,e.length===1?`warning`:`warnings`]})})}export{r as t};
1
+ import{t as e}from"./jsx-runtime-CldxteV5.js";import{i as t}from"./type-icons-DfzR1Nvz.js";var n=e();function r({warnings:e}){return e.length===0?null:(0,n.jsx)(t,{placement:`topRight`,content:(0,n.jsx)(`ul`,{className:`x1ghz6dp x12ulsxz xwn43p0 x1lr1uin x4z9k3i x1dbl2gt`,children:e.map((e,t)=>(0,n.jsx)(`li`,{children:e},t))}),children:(0,n.jsxs)(`button`,{type:`button`,className:`xixxii4 xlftelb xn0vg7t x1fgtraw x1awh872 xc342km xur7f20 xqdcvd7 x7zghnd xqfszdh x4z9k3i xk50ysn x1cqdj14 x1ypdohk x1n327nk`,children:[e.length,` `,e.length===1?`warning`:`warnings`]})})}export{r as t};
@@ -1 +1 @@
1
- import{n as e}from"./src-Caqqw6Gw.js";import{n as t}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./chunk-DU6HZSFF-CfZf-GY2.js";import"./dist-DcHSVaY8.js";import{m as n,t as r}from"./mermaid-parser.core-Bn4VLJH2.js";import{n as i,r as a,t as o}from"./chunk-SVP7TREG-CFsWFQLo.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";var c=n().RailroadAbnf.parser.LangiumParser,l=t(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=t(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=t(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=t(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=t(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=t(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=t(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:t(t=>{o.clear(),e.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(t);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new r(n);let i=n.value;e.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),e.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"./src-Caqqw6Gw.js";import{n as t}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./chunk-DU6HZSFF-Co37jFu9.js";import"./dist-BtMYPQ-R.js";import{m as n,t as r}from"./mermaid-parser.core-D7qGh1wC.js";import{n as i,r as a,t as o}from"./chunk-SVP7TREG-B1VK1C1g.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";var c=n().RailroadAbnf.parser.LangiumParser,l=t(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=t(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=t(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=t(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=t(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=t(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=t(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:t(t=>{o.clear(),e.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(t);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new r(n);let i=n.value;e.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),e.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"./prod-DkgTkPT0.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"./prod-Bxq8Vdzv.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{M as createArchitectureServices}from"./mermaid-parser.core-Bn4VLJH2.js";
1
+ import"./chunk-FOHPRMQF-DD4dKubD.js";export{M as createArchitectureServices}from"./mermaid-parser.core-D7qGh1wC.js";