ryugi-artifacts 1.24.3 → 1.26.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 (143) hide show
  1. package/dist/cli.cjs +5 -2
  2. package/dist/server.cjs +192 -20
  3. package/dist/viewer/{CloudDocument-B79kSG8x.js → CloudDocument-DbBCNw2D.js} +1 -1
  4. package/dist/viewer/{CloudLiveDocument-Cs09UlQ2.js → CloudLiveDocument-Bfh5nA3V.js} +1 -1
  5. package/dist/viewer/{DocumentLayout-ChR45hJs.js → DocumentLayout-Ds9A-4Ya.js} +139 -137
  6. package/dist/viewer/{DocumentPage-D--i0Lg9.js → DocumentPage-xPmcnWV1.js} +1 -1
  7. package/dist/viewer/{abnfDiagram-VCTEODGH-CyCOwhY6.js → abnfDiagram-VCTEODGH-Brpd1RlW.js} +1 -1
  8. package/dist/viewer/{ar-SA-G6X2FPQ2-BgPZlcDL.js → ar-SA-G6X2FPQ2-BbW5UO-r.js} +1 -1
  9. package/dist/viewer/{architectureDiagram-5GKGNRK7--a4EO4Cp.js → architectureDiagram-5GKGNRK7-BMS6dApX.js} +1 -1
  10. package/dist/viewer/{az-AZ-76LH7QW2-MV9D9CJt.js → az-AZ-76LH7QW2-70-wuCoO.js} +1 -1
  11. package/dist/viewer/{bg-BG-XCXSNQG7-Di7ZbTVm.js → bg-BG-XCXSNQG7-D4e_645F.js} +1 -1
  12. package/dist/viewer/{blockDiagram-I7D4REHJ-ClTBv_j7.js → blockDiagram-I7D4REHJ-Axkq7ASl.js} +1 -1
  13. package/dist/viewer/{bn-BD-2XOGV67Q-Bwqwj7j1.js → bn-BD-2XOGV67Q-0wczW7AK.js} +1 -1
  14. package/dist/viewer/{c4Diagram-7LVT6UL2-vmirfzR4.js → c4Diagram-7LVT6UL2-DhNnDuF8.js} +1 -1
  15. package/dist/viewer/{ca-ES-6MX7JW3Y-CayoejzO.js → ca-ES-6MX7JW3Y-DC9ua84M.js} +1 -1
  16. package/dist/viewer/{chunk-4HAMMTFA-DtepqTGF.js → chunk-4HAMMTFA-CYhM7R5j.js} +1 -1
  17. package/dist/viewer/{chunk-EIO257PC-ifYiEjOw.js → chunk-EIO257PC-BykOaiKr.js} +1 -1
  18. package/dist/viewer/{chunk-GMAD6QVW-CBz1VAZP.js → chunk-GMAD6QVW-CC7L2cgy.js} +1 -1
  19. package/dist/viewer/{chunk-GVQU2GXP-BYEhJ68c.js → chunk-GVQU2GXP-B9B3Uffn.js} +1 -1
  20. package/dist/viewer/{chunk-IMKFNOWR-DtsWpVDV.js → chunk-IMKFNOWR-QLLc7dWD.js} +1 -1
  21. package/dist/viewer/{chunk-L3NEJ4N5-8hOHuZaJ.js → chunk-L3NEJ4N5-CWP-SNdl.js} +1 -1
  22. package/dist/viewer/{chunk-OSK3NFVY-DuxFL_QF.js → chunk-OSK3NFVY-BZxwKSPw.js} +1 -1
  23. package/dist/viewer/{chunk-PWAF6VOD-Cz00dFZD.js → chunk-PWAF6VOD-D2_jxpxl.js} +1 -1
  24. package/dist/viewer/{chunk-SHT3W25Y-CYKiAz6-.js → chunk-SHT3W25Y-VC45lCjU.js} +1 -1
  25. package/dist/viewer/{chunk-SVP7TREG-Dx-ZDsRl.js → chunk-SVP7TREG-Sj4kR_YS.js} +1 -1
  26. package/dist/viewer/{chunk-TICWLB2K-B7YHfYIz.js → chunk-TICWLB2K-CvUhoOJw.js} +1 -1
  27. package/dist/viewer/{classDiagram-ZZMXUADV-BTWYDkIU.js → classDiagram-ZZMXUADV-C-yMvOAt.js} +1 -1
  28. package/dist/viewer/{classDiagram-v2-VYDZK3BY-BTWYDkIU.js → classDiagram-v2-VYDZK3BY-C-yMvOAt.js} +1 -1
  29. package/dist/viewer/{cs-CZ-2BRQDIVT-BWqlIjPR.js → cs-CZ-2BRQDIVT-XbkJpsQj.js} +1 -1
  30. package/dist/viewer/{cynefinDiagram-5FMLGOSQ-9iLU8wFx.js → cynefinDiagram-5FMLGOSQ-Yy8JKQ_2.js} +1 -1
  31. package/dist/viewer/{da-DK-5WZEPLOC-BNxmg89e.js → da-DK-5WZEPLOC-DV1-tMZF.js} +1 -1
  32. package/dist/viewer/{dagre-GXQ25YYZ-DFw2VX2-.js → dagre-GXQ25YYZ-DXldFrG3.js} +1 -1
  33. package/dist/viewer/{de-DE-XR44H4JA-CJFEPv_R.js → de-DE-XR44H4JA-DxTWrl8W.js} +1 -1
  34. package/dist/viewer/{diagram-S7CK7UJ4-CXo7e7mx.js → diagram-S7CK7UJ4-DiRMsye-.js} +1 -1
  35. package/dist/viewer/{diagram-UQ7AKVKN-BvX9WyHm.js → diagram-UQ7AKVKN-C2rmPjrN.js} +1 -1
  36. package/dist/viewer/{diagram-VX7I27RA-BThG9ImK.js → diagram-VX7I27RA-DZZhObnA.js} +1 -1
  37. package/dist/viewer/{diagram-Z3DM3KII-BUgWTQY3.js → diagram-Z3DM3KII-D77Eat5h.js} +1 -1
  38. package/dist/viewer/{dist-RL-mQQKQ.js → dist-17nTlkIe.js} +1 -1
  39. package/dist/viewer/{dist-dBDaVg32.js → dist-1O754465.js} +1 -1
  40. package/dist/viewer/{dist-DzBhPQGF.js → dist-BR2dIkkd.js} +1 -1
  41. package/dist/viewer/{dist-BQmjP2BX.js → dist-BeeqwauU.js} +1 -1
  42. package/dist/viewer/{dist-9o1yleJX.js → dist-BhrJsMRi.js} +1 -1
  43. package/dist/viewer/{dist-BYCiECxW.js → dist-Bv7ULwLL.js} +1 -1
  44. package/dist/viewer/{dist-5j8-t6cO.js → dist-BzUOV89P.js} +1 -1
  45. package/dist/viewer/{dist-rtMMue_C.js → dist-CDjN1ndo.js} +1 -1
  46. package/dist/viewer/{dist-D2XUnUrR.js → dist-CFE1y6m7.js} +1 -1
  47. package/dist/viewer/{dist-UPlWh6ob.js → dist-CmtmDARI.js} +1 -1
  48. package/dist/viewer/{dist-BZOlMdKe.js → dist-Cx6OfxTc.js} +1 -1
  49. package/dist/viewer/{dist-MS6Hn9hp.js → dist-D8kvlqzF.js} +1 -1
  50. package/dist/viewer/{dist-Dp4_LL-V.js → dist-DJKWnL3r.js} +1 -1
  51. package/dist/viewer/{dist-COUZZVRX.js → dist-Dhyna9th.js} +1 -1
  52. package/dist/viewer/{dist-C5MQme3t.js → dist-Dkx42CNh.js} +1 -1
  53. package/dist/viewer/{dist-4i5jVF6x.js → dist-DwbJftDI.js} +1 -1
  54. package/dist/viewer/{dist-CIIb97-U.js → dist-Dzz5DlJ9.js} +1 -1
  55. package/dist/viewer/{dist-CM2Hp3T3.js → dist-FOOPjNYH.js} +1 -1
  56. package/dist/viewer/{dist-xgPtD3H2.js → dist-XN9R9kRh.js} +1 -1
  57. package/dist/viewer/{dist-BhtABTvL.js → dist-ZrNcGIZF.js} +4 -4
  58. package/dist/viewer/{dist-1XIRsI4W.js → dist-bdqt2Frs.js} +1 -1
  59. package/dist/viewer/{dist-CbAucWHo.js → dist-hE06xGmt.js} +1 -1
  60. package/dist/viewer/{dist-Dm4PEwDT.js → dist-kPop0EJT.js} +1 -1
  61. package/dist/viewer/{dist-DJE13ECo.js → dist-vfH8ORPT.js} +1 -1
  62. package/dist/viewer/{ebnfDiagram-PWID7BFC-rTnsBcWI.js → ebnfDiagram-PWID7BFC-BtAy0Tb1.js} +1 -1
  63. package/dist/viewer/{el-GR-BZB4AONW-CN2KkEv-.js → el-GR-BZB4AONW-BOKdlh7s.js} +1 -1
  64. package/dist/viewer/{en-B4ZKOASM-BP5Uv8nJ.js → en-B4ZKOASM-8FW6YS74.js} +1 -1
  65. package/dist/viewer/{erDiagram-RLTQ6QDP-0UbDYqFz.js → erDiagram-RLTQ6QDP-C9QLuksP.js} +1 -1
  66. package/dist/viewer/{es-ES-U4NZUMDT-C9I_j7j4.js → es-ES-U4NZUMDT-DK-35lQh.js} +1 -1
  67. package/dist/viewer/{eu-ES-A7QVB2H4-CGiek0u3.js → eu-ES-A7QVB2H4-D2jhOjSH.js} +1 -1
  68. package/dist/viewer/{fa-IR-HGAKTJCU-DgB2_AR4.js → fa-IR-HGAKTJCU-C8ZEk4kn.js} +1 -1
  69. package/dist/viewer/{fi-FI-Z5N7JZ37-B8pGvqeI.js → fi-FI-Z5N7JZ37-TO_gvBtw.js} +1 -1
  70. package/dist/viewer/flowDiagram-HODETNUW-5Hsw_-ox.js +1 -0
  71. package/dist/viewer/{fr-FR-RHASNOE6-DuWU7lPr.js → fr-FR-RHASNOE6-DFO1e9NV.js} +1 -1
  72. package/dist/viewer/{ganttDiagram-EL5Y4UJY-VXGfs7lW.js → ganttDiagram-EL5Y4UJY-DbLQ4Ecz.js} +1 -1
  73. package/dist/viewer/{gl-ES-HMX3MZ6V-BW8lnRsk.js → gl-ES-HMX3MZ6V-CioNUqYL.js} +1 -1
  74. package/dist/viewer/{he-IL-6SHJWFNN-BKQh0-6x.js → he-IL-6SHJWFNN-DqWMzMec.js} +1 -1
  75. package/dist/viewer/{hi-IN-IWLTKZ5I-3snvJA6Y.js → hi-IN-IWLTKZ5I-Banp69tJ.js} +1 -1
  76. package/dist/viewer/{hu-HU-A5ZG7DT2-BiLQFPUw.js → hu-HU-A5ZG7DT2-CP80C_oD.js} +1 -1
  77. package/dist/viewer/{id-ID-SAP4L64H-h-S5CO-4.js → id-ID-SAP4L64H-suHP6FQZ.js} +1 -1
  78. package/dist/viewer/{image-GAAHSSAO-CGhTr3t9.js → image-GAAHSSAO-C2xhPNdh.js} +1 -1
  79. package/dist/viewer/index.css +1 -1
  80. package/dist/viewer/index.html +1 -1
  81. package/dist/viewer/index.js +10 -10
  82. package/dist/viewer/{infoDiagram-27XIBGKW-10Qd2MZd.js → infoDiagram-27XIBGKW-cIfHiUYr.js} +1 -1
  83. package/dist/viewer/{ishikawaDiagram-5VMMS53U-uzLJaRfk.js → ishikawaDiagram-5VMMS53U-ptUOa9TA.js} +1 -1
  84. package/dist/viewer/{it-IT-JPQ66NNP-BxVl0jqX.js → it-IT-JPQ66NNP-DIGgNJ1T.js} +1 -1
  85. package/dist/viewer/{ja-JP-DBVTYXUO-5www0IS0.js → ja-JP-DBVTYXUO-D9Yr6TZy.js} +1 -1
  86. package/dist/viewer/{journeyDiagram-3NMN7TZE-Bghj0jnk.js → journeyDiagram-3NMN7TZE-BQRC7EoU.js} +1 -1
  87. package/dist/viewer/{kaa-6HZHGXH3-Ej8gkIf_.js → kaa-6HZHGXH3-QNvyeMuI.js} +1 -1
  88. package/dist/viewer/{kab-KAB-ZGHBKWFO-0KBehczv.js → kab-KAB-ZGHBKWFO-BfwpvpxF.js} +1 -1
  89. package/dist/viewer/{kanban-definition-UXKFOSKX-X1q_3pX6.js → kanban-definition-UXKFOSKX-CNn14by3.js} +1 -1
  90. package/dist/viewer/{kk-KZ-P5N5QNE5-GpxcOEeb.js → kk-KZ-P5N5QNE5-D_Ltivv-.js} +1 -1
  91. package/dist/viewer/{km-KH-HSX4SM5Z-OeGcfw80.js → km-KH-HSX4SM5Z-BcUHv5LE.js} +1 -1
  92. package/dist/viewer/{ko-KR-MTYHY66A-jk9_cKt9.js → ko-KR-MTYHY66A-0mBEcDey.js} +1 -1
  93. package/dist/viewer/{ku-TR-6OUDTVRD-QdNNx6ou.js → ku-TR-6OUDTVRD-BUsanIWi.js} +1 -1
  94. package/dist/viewer/{lt-LT-XHIRWOB4-Ct9DJIcs.js → lt-LT-XHIRWOB4-BSu4_CWZ.js} +1 -1
  95. package/dist/viewer/{lv-LV-5QDEKY6T-DMgVUirx.js → lv-LV-5QDEKY6T-BXNXeNTd.js} +1 -1
  96. package/dist/viewer/{mindmap-definition-YA3MSWOX-BA4ZI1ph.js → mindmap-definition-YA3MSWOX-sy_pMr7G.js} +1 -1
  97. package/dist/viewer/{mr-IN-CRQNXWMA-D8WXsx2z.js → mr-IN-CRQNXWMA-qWN8Si5W.js} +1 -1
  98. package/dist/viewer/{my-MM-5M5IBNSE-BxUklU-z.js → my-MM-5M5IBNSE-Be_srPPh.js} +1 -1
  99. package/dist/viewer/{nb-NO-T6EIAALU-D79mtkDF.js → nb-NO-T6EIAALU-BDfYN1Al.js} +1 -1
  100. package/dist/viewer/{nl-NL-IS3SIHDZ-Bk1Hx525.js → nl-NL-IS3SIHDZ-CfAshA_G.js} +1 -1
  101. package/dist/viewer/{nn-NO-6E72VCQL-D5KXA0KN.js → nn-NO-6E72VCQL-CcGBoumS.js} +1 -1
  102. package/dist/viewer/{oc-FR-POXYY2M6-BrKobYvw.js → oc-FR-POXYY2M6-BbSWGurU.js} +1 -1
  103. package/dist/viewer/{pa-IN-N4M65BXN-DA-7PpKO.js → pa-IN-N4M65BXN-DPO2pQDw.js} +1 -1
  104. package/dist/viewer/{pegDiagram-XKGWAZYB-Dah-lLGv.js → pegDiagram-XKGWAZYB-DpGIxLMI.js} +1 -1
  105. package/dist/viewer/percentages-BXMCSKIN-Bwa1Mbu5.js +1 -0
  106. package/dist/viewer/{pieDiagram-E7YTZNPT-yMT-IIXv.js → pieDiagram-E7YTZNPT-IcewqVPH.js} +1 -1
  107. package/dist/viewer/{pl-PL-T2D74RX3-6vipNnrg.js → pl-PL-T2D74RX3-BckSoc_Y.js} +1 -1
  108. package/dist/viewer/{prod-DPKm04bN.js → prod-A7Umh8Gn.js} +8 -8
  109. package/dist/viewer/{pt-BR-5N22H2LF-D-D4mras.js → pt-BR-5N22H2LF-DEFbi7IP.js} +1 -1
  110. package/dist/viewer/{pt-PT-UZXXM6DQ-jbMenRDm.js → pt-PT-UZXXM6DQ-BhqMPW44.js} +1 -1
  111. package/dist/viewer/{quadrantDiagram-AXDQQJYC-Bi037eK3.js → quadrantDiagram-AXDQQJYC-B-ygMB2U.js} +1 -1
  112. package/dist/viewer/{railroadDiagram-O6MQD6OU-Cv-XQH-w.js → railroadDiagram-O6MQD6OU-Cj-pFQmg.js} +1 -1
  113. package/dist/viewer/{requirementDiagram-BXWQKSXE-BkIr3WQO.js → requirementDiagram-BXWQKSXE-DttdunDj.js} +1 -1
  114. package/dist/viewer/{ro-RO-JPDTUUEW-K8s9EA8v.js → ro-RO-JPDTUUEW-BYi2-4-R.js} +1 -1
  115. package/dist/viewer/{ru-RU-B4JR7IUQ-CB2vGUR6.js → ru-RU-B4JR7IUQ-BgxG_GLL.js} +1 -1
  116. package/dist/viewer/{sequenceDiagram-WJ2MYXX4-DhzIalNM.js → sequenceDiagram-WJ2MYXX4-D3mrIkWD.js} +1 -1
  117. package/dist/viewer/{si-LK-N5RQ5JYF-Ctb_3bFc.js → si-LK-N5RQ5JYF-B3v1n2Ac.js} +1 -1
  118. package/dist/viewer/{sk-SK-C5VTKIMK-tesZCwwG.js → sk-SK-C5VTKIMK-DZl_0d3B.js} +1 -1
  119. package/dist/viewer/{sl-SI-NN7IZMDC-D1noV_5J.js → sl-SI-NN7IZMDC-BZgoamdA.js} +1 -1
  120. package/dist/viewer/{stateDiagram-D77RDMKH-BcTdeO-3.js → stateDiagram-D77RDMKH-D9pc1HyB.js} +1 -1
  121. package/dist/viewer/{stateDiagram-v2-MP3YSRHH-vHQn4ZHD.js → stateDiagram-v2-MP3YSRHH-2UvrV37a.js} +1 -1
  122. package/dist/viewer/subset-shared.chunk-CoDQMzue.js +1 -0
  123. package/dist/viewer/{subset-worker.chunk-Dl6Q5XEL.js → subset-worker.chunk-Bd8ucm57.js} +1 -1
  124. package/dist/viewer/{sv-SE-XGPEYMSR-DbSiZbxE.js → sv-SE-XGPEYMSR-BEQYEGKg.js} +1 -1
  125. package/dist/viewer/{swimlanes-42K2YHIH-62ccqJxQ.js → swimlanes-42K2YHIH-D22Inp64.js} +1 -1
  126. package/dist/viewer/{swimlanesDiagram-VR7AAH4N-Dy990XNf.js → swimlanesDiagram-VR7AAH4N-CuqPd6HM.js} +1 -1
  127. package/dist/viewer/{ta-IN-2NMHFXQM-Dd6dWjZl.js → ta-IN-2NMHFXQM-CyRxQL3p.js} +1 -1
  128. package/dist/viewer/{th-TH-HPSO5L25-CCiLUbo6.js → th-TH-HPSO5L25-BhWJMD6f.js} +1 -1
  129. package/dist/viewer/{timeline-definition-24CTP7MA-DV0TxIvS.js → timeline-definition-24CTP7MA-BFA-sFgt.js} +1 -1
  130. package/dist/viewer/{tr-TR-DEFEU3FU-Bo-aoWx4.js → tr-TR-DEFEU3FU-DMDGJnK-.js} +1 -1
  131. package/dist/viewer/{uk-UA-QMV73CPH-BlWx1WdG.js → uk-UA-QMV73CPH-DmPABGgR.js} +1 -1
  132. package/dist/viewer/{useSandboxFrame-DgFpRYDp.js → useSandboxFrame-8NPM2cx_.js} +8 -8
  133. package/dist/viewer/{vennDiagram-4TSXK5OY-DXWeywrK.js → vennDiagram-4TSXK5OY-CeGCVdJx.js} +1 -1
  134. package/dist/viewer/{vi-VN-M7AON7JQ-DJG0-mmO.js → vi-VN-M7AON7JQ-D88dtyMx.js} +1 -1
  135. package/dist/viewer/{wardleyDiagram-VM6X3IG4-Bw9Ybbn9.js → wardleyDiagram-VM6X3IG4-BCmncTX7.js} +1 -1
  136. package/dist/viewer/{xychartDiagram-S5SC5T6Z-Kj-9vvpL.js → xychartDiagram-S5SC5T6Z-CZdaTITq.js} +1 -1
  137. package/dist/viewer/{zh-CN-LNUGB5OW-CXYXe-uB.js → zh-CN-LNUGB5OW-Df3QE7u3.js} +1 -1
  138. package/dist/viewer/{zh-HK-E62DVLB3-C7P64Edv.js → zh-HK-E62DVLB3-BRBXHeIK.js} +1 -1
  139. package/dist/viewer/{zh-TW-RAJ6MFWO-C7Ff6DoL.js → zh-TW-RAJ6MFWO-DJmITs75.js} +1 -1
  140. package/package.json +16 -15
  141. package/dist/viewer/flowDiagram-HODETNUW-C7k3vjjl.js +0 -1
  142. package/dist/viewer/percentages-BXMCSKIN-BYIkLN5D.js +0 -1
  143. package/dist/viewer/subset-shared.chunk-Bscg71my.js +0 -1
package/dist/cli.cjs CHANGED
@@ -367,6 +367,9 @@ function isCloudRecord(value) {
367
367
  const { id, url, publishedAt, visibility } = value;
368
368
  return typeof id === "string" && typeof url === "string" && (typeof publishedAt === "string" || publishedAt === null) && isVisibility(visibility);
369
369
  }
370
+ function cloudRecord({ id, url, publishedAt, visibility, fingerprint }) {
371
+ return { id, url, publishedAt, visibility, ...typeof fingerprint === "string" ? { fingerprint } : {} };
372
+ }
370
373
  function normalize(raw) {
371
374
  const config2 = defaults();
372
375
  if (typeof raw !== "object" || raw === null) return config2;
@@ -380,7 +383,7 @@ function normalize(raw) {
380
383
  if (visibility !== void 0 && !isVisibility(visibility)) continue;
381
384
  const entry = {};
382
385
  if (visibility) entry.visibility = visibility;
383
- if (isCloudRecord(cloud)) entry.cloud = { id: cloud.id, url: cloud.url, publishedAt: cloud.publishedAt, visibility: cloud.visibility };
386
+ if (isCloudRecord(cloud)) entry.cloud = cloudRecord(cloud);
384
387
  if (autoPublish2 === false) entry.autoPublish = false;
385
388
  config2.artifacts[key] = entry;
386
389
  }
@@ -922,7 +925,7 @@ async function main(argv) {
922
925
  }, emit);
923
926
  }
924
927
  if (command === "--version" || command === "-v") {
925
- console.log("1.24.3");
928
+ console.log("1.26.0");
926
929
  return 0;
927
930
  }
928
931
  if (command === "--help" || command === "-h") {
package/dist/server.cjs CHANGED
@@ -5422,7 +5422,7 @@ function customAlphabet(alphabet, defaultSize = 21) {
5422
5422
  }
5423
5423
  var nanoid = customAlphabet(urlAlphabet);
5424
5424
 
5425
- // node_modules/.pnpm/@haklex+rich-litexml@0.52.0_typescript@5.9.3/node_modules/@haklex/rich-litexml/dist/src-COIhAhyB.js
5425
+ // node_modules/.pnpm/@haklex+rich-litexml@0.54.1_typescript@5.9.3/node_modules/@haklex/rich-litexml/dist/src-BcPLrM3G.js
5426
5426
  var impl = null;
5427
5427
  function registerParseHTML(fn5) {
5428
5428
  impl = fn5;
@@ -5570,6 +5570,7 @@ var makePollIdSuffix = customAlphabet(idAlphabet, 10);
5570
5570
  var makeOptionIdSuffix = customAlphabet(idAlphabet, 6);
5571
5571
  var makeChatParticipantId = customAlphabet(idAlphabet, 6);
5572
5572
  var makeChatMessageId = customAlphabet(idAlphabet, 8);
5573
+ var makeStepId = customAlphabet(idAlphabet, 8);
5573
5574
  function extractBlockId(el2) {
5574
5575
  const id2 = el2.getAttribute("id");
5575
5576
  return id2 ? { $: { blockId: id2 } } : {};
@@ -5933,6 +5934,30 @@ function registerCustomReaders(registry2) {
5933
5934
  version: 1
5934
5935
  };
5935
5936
  });
5937
+ registry2.registerReader("steps", (el2, ctx) => {
5938
+ const steps = [];
5939
+ for (const child of el2.children) {
5940
+ if (child.tagName.toLowerCase() !== "step") continue;
5941
+ steps.push({
5942
+ id: child.getAttribute("id") || `s_${makeStepId()}`,
5943
+ title: child.getAttribute("title") ?? "",
5944
+ content: { root: {
5945
+ type: "root",
5946
+ children: ctx.parseChildren(child),
5947
+ direction: "ltr",
5948
+ format: "",
5949
+ indent: 0,
5950
+ version: 1
5951
+ } }
5952
+ });
5953
+ }
5954
+ return {
5955
+ type: "steps",
5956
+ ...extractBlockId(el2),
5957
+ steps,
5958
+ version: 1
5959
+ };
5960
+ });
5936
5961
  registry2.registerReader("chat", (el2) => {
5937
5962
  const variant = el2.getAttribute("variant") === "user-user" ? "user-user" : "user-agent";
5938
5963
  const participants = [];
@@ -6465,6 +6490,22 @@ function registerCustomWriters(registry2) {
6465
6490
  children: files
6466
6491
  };
6467
6492
  });
6493
+ registry2.registerWriter("steps", (node, ctx) => {
6494
+ const n7 = node;
6495
+ const steps = (n7.steps ?? []).map((step) => ({
6496
+ tag: "step",
6497
+ attrs: optAttr({
6498
+ id: step.id,
6499
+ title: step.title
6500
+ }),
6501
+ children: ctx.serializeNestedState(step.content)
6502
+ }));
6503
+ return {
6504
+ tag: "steps",
6505
+ attrs: blockId(n7),
6506
+ children: steps
6507
+ };
6508
+ });
6468
6509
  registry2.registerWriter("chat", (node) => {
6469
6510
  const n7 = node;
6470
6511
  const participantsEl = {
@@ -6757,6 +6798,8 @@ var BLOCK_TAGS = /* @__PURE__ */ new Set([
6757
6798
  "footnote-section",
6758
6799
  "grid",
6759
6800
  "cell",
6801
+ "steps",
6802
+ "step",
6760
6803
  "excalidraw"
6761
6804
  ]);
6762
6805
  function isBlockContainer(element) {
@@ -17526,7 +17569,7 @@ function Document4() {
17526
17569
  }
17527
17570
  setPrototypeOf(Document4, Document2).prototype = Document2.prototype;
17528
17571
 
17529
- // node_modules/.pnpm/@haklex+rich-litexml@0.52.0_typescript@5.9.3/node_modules/@haklex/rich-litexml/dist/node.mjs
17572
+ // node_modules/.pnpm/@haklex+rich-litexml@0.54.1_typescript@5.9.3/node_modules/@haklex/rich-litexml/dist/node.mjs
17530
17573
  registerParseHTML((html) => parseHTML2(html).document);
17531
17574
 
17532
17575
  // node_modules/.pnpm/nanoid@5.1.16/node_modules/nanoid/index.js
@@ -17631,6 +17674,8 @@ var BLOCK_TAGS2 = [
17631
17674
  "math",
17632
17675
  "alert",
17633
17676
  "details",
17677
+ "steps",
17678
+ "step",
17634
17679
  "footnote-section",
17635
17680
  "def",
17636
17681
  "dynamic",
@@ -52983,7 +53028,7 @@ decorateMethods(EphemeralStoreWasm.prototype, [
52983
53028
  ]);
52984
53029
  decorateMethods(UndoManager.prototype, ["undo", "redo"]);
52985
53030
 
52986
- // node_modules/.pnpm/@haklex+rich-collab-loro@0.52.0_lexical@0.52.0_typescript@5.9.3__loro-crdt@1.16.4/node_modules/@haklex/rich-collab-loro/dist/index.mjs
53031
+ // node_modules/.pnpm/@haklex+rich-collab-loro@0.54.1_lexical@0.52.0_typescript@5.9.3__loro-crdt@1.16.4/node_modules/@haklex/rich-collab-loro/dist/index.mjs
52987
53032
  function transformOffset(previous, next, offset) {
52988
53033
  const limit = Math.min(previous.length, next.length);
52989
53034
  let prefix = 0;
@@ -84398,7 +84443,7 @@ var UNORDERED_LIST2 = mod28.UNORDERED_LIST;
84398
84443
  var isTableRowDivider2 = mod28.isTableRowDivider;
84399
84444
  var registerMarkdownShortcuts2 = mod28.registerMarkdownShortcuts;
84400
84445
 
84401
- // node_modules/.pnpm/@haklex+rich-headless@0.52.0_lexical@0.52.0_typescript@5.9.3__typescript@5.9.3/node_modules/@haklex/rich-headless/dist/transformers.mjs
84446
+ // node_modules/.pnpm/@haklex+rich-headless@0.54.1_lexical@0.52.0_typescript@5.9.3__typescript@5.9.3/node_modules/@haklex/rich-headless/dist/transformers.mjs
84402
84447
  var NEVER = /a^/;
84403
84448
  var NOOP = () => {
84404
84449
  };
@@ -84692,6 +84737,20 @@ ${cells}
84692
84737
  replace: NOOP,
84693
84738
  type: "element"
84694
84739
  };
84740
+ var STEPS_BLOCK_TRANSFORMER = {
84741
+ dependencies: [],
84742
+ export: (node) => {
84743
+ if (node.getType() !== "steps") return null;
84744
+ return `::: steps
84745
+ ${(node.exportJSON().steps ?? []).map((s7) => `::: step{title="${qA(String(s7.title ?? ""))}"}
84746
+ ${stateText(s7.content)}
84747
+ :::`).join("\n")}
84748
+ :::`;
84749
+ },
84750
+ regExp: NEVER,
84751
+ replace: NOOP,
84752
+ type: "element"
84753
+ };
84695
84754
  var HORIZONTAL_RULE_BLOCK_TRANSFORMER = {
84696
84755
  dependencies: [],
84697
84756
  export: (node) => node.getType() === "horizontalrule" ? "---" : null,
@@ -84843,6 +84902,7 @@ var allHeadlessTransformers = [
84843
84902
  CHART_BLOCK_TRANSFORMER,
84844
84903
  NESTED_DOC_BLOCK_TRANSFORMER,
84845
84904
  GRID_CONTAINER_BLOCK_TRANSFORMER,
84905
+ STEPS_BLOCK_TRANSFORMER,
84846
84906
  HORIZONTAL_RULE_BLOCK_TRANSFORMER,
84847
84907
  TABLE_BLOCK_TRANSFORMER,
84848
84908
  CODE_SNIPPET_BLOCK_TRANSFORMER,
@@ -87055,7 +87115,7 @@ var signal2 = mod43.signal;
87055
87115
  var untracked2 = mod43.untracked;
87056
87116
  var watchedSignal3 = mod43.watchedSignal;
87057
87117
 
87058
- // node_modules/.pnpm/@haklex+rich-headless@0.52.0_lexical@0.52.0_typescript@5.9.3__typescript@5.9.3/node_modules/@haklex/rich-headless/dist/index.mjs
87118
+ // node_modules/.pnpm/@haklex+rich-headless@0.54.1_lexical@0.52.0_typescript@5.9.3__typescript@5.9.3/node_modules/@haklex/rich-headless/dist/index.mjs
87059
87119
  var builtinNodes = [
87060
87120
  HeadingNode2,
87061
87121
  QuoteNode2,
@@ -87595,6 +87655,48 @@ var GridContainerNode = class GridContainerNode2 extends DecoratorNode2 {
87595
87655
  return this.__cells.map((cell) => extractText(cell)).join("\n");
87596
87656
  }
87597
87657
  };
87658
+ var StepsNode = class StepsNode2 extends DecoratorNode2 {
87659
+ static getType() {
87660
+ return "steps";
87661
+ }
87662
+ constructor(key2) {
87663
+ super(key2);
87664
+ this.__steps = [];
87665
+ }
87666
+ static clone(node) {
87667
+ const n7 = new StepsNode2(node.__key);
87668
+ n7.__steps = node.__steps;
87669
+ return n7;
87670
+ }
87671
+ static importJSON(_json) {
87672
+ const node = new StepsNode2();
87673
+ node.__steps = Array.isArray(_json.steps) ? _json.steps : [];
87674
+ return node.updateFromJSON(_json);
87675
+ }
87676
+ exportJSON() {
87677
+ return {
87678
+ ...super.exportJSON(),
87679
+ type: "steps",
87680
+ version: 1,
87681
+ steps: this.__steps
87682
+ };
87683
+ }
87684
+ createDOM() {
87685
+ return stubDOM();
87686
+ }
87687
+ updateDOM() {
87688
+ return false;
87689
+ }
87690
+ decorate() {
87691
+ return null;
87692
+ }
87693
+ isInline() {
87694
+ return false;
87695
+ }
87696
+ getTextContent() {
87697
+ return this.__steps.map((step) => [step.title, extractText(step.content)].filter(Boolean).join("\n")).join("\n");
87698
+ }
87699
+ };
87598
87700
  var customHeadlessNodes = [
87599
87701
  SpoilerNode,
87600
87702
  RubyNode,
@@ -87623,6 +87725,7 @@ var customHeadlessNodes = [
87623
87725
  AlertQuoteNode,
87624
87726
  NestedDocNode,
87625
87727
  GridContainerNode,
87728
+ StepsNode,
87626
87729
  PollNode,
87627
87730
  ChatNode
87628
87731
  ];
@@ -89167,6 +89270,9 @@ function isCloudRecord(value) {
89167
89270
  const { id: id2, url, publishedAt, visibility } = value;
89168
89271
  return typeof id2 === "string" && typeof url === "string" && (typeof publishedAt === "string" || publishedAt === null) && isVisibility(visibility);
89169
89272
  }
89273
+ function cloudRecord({ id: id2, url, publishedAt, visibility, fingerprint }) {
89274
+ return { id: id2, url, publishedAt, visibility, ...typeof fingerprint === "string" ? { fingerprint } : {} };
89275
+ }
89170
89276
  function normalize(raw) {
89171
89277
  const config = defaults();
89172
89278
  if (typeof raw !== "object" || raw === null) return config;
@@ -89180,7 +89286,7 @@ function normalize(raw) {
89180
89286
  if (visibility !== void 0 && !isVisibility(visibility)) continue;
89181
89287
  const entry = {};
89182
89288
  if (visibility) entry.visibility = visibility;
89183
- if (isCloudRecord(cloud)) entry.cloud = { id: cloud.id, url: cloud.url, publishedAt: cloud.publishedAt, visibility: cloud.visibility };
89289
+ if (isCloudRecord(cloud)) entry.cloud = cloudRecord(cloud);
89184
89290
  if (autoPublish2 === false) entry.autoPublish = false;
89185
89291
  config.artifacts[key2] = entry;
89186
89292
  }
@@ -89793,7 +89899,7 @@ var LOGIN_STATE_TTL_MS = 10 * 60 * 1e3;
89793
89899
  var UPLOAD_CONCURRENCY = 6;
89794
89900
  var MAX_JSON_BODY = 4096;
89795
89901
  var CLOUD_ID = /^[A-Za-z0-9_-]{1,64}$/;
89796
- var ROUTE = /^\/api\/cloud\/(status|login|logout|artifacts|publish|reserve|visibility|auto-publish)(?:\/([^/]+)(?:\/([^/]+))?)?$/;
89902
+ var ROUTE = /^\/api\/cloud\/(status|login|logout|artifacts|publish|reserve|visibility|auto-publish|sync)(?:\/([^/]+)(?:\/([^/]+))?)?$/;
89797
89903
  var SignedOut = class extends Error {
89798
89904
  };
89799
89905
  var CloudRefused = class extends Error {
@@ -89835,6 +89941,11 @@ async function errorMessage(res) {
89835
89941
  return text2 || res.statusText;
89836
89942
  }
89837
89943
  }
89944
+ function fingerprintPayload(payload) {
89945
+ const versions = payload.versions;
89946
+ if (!versions) return payload;
89947
+ return { ...payload, versions: Object.fromEntries(Object.entries(versions).map(([file, version2]) => [file, version2 > 0])) };
89948
+ }
89838
89949
  function createCloudRoutes(options) {
89839
89950
  const { origin, credentialsFile: credentialsFile2, configFile, project } = options;
89840
89951
  const settingsFile = settingsFileFor(credentialsFile2);
@@ -89912,22 +90023,43 @@ function createCloudRoutes(options) {
89912
90023
  }
89913
90024
  return artifactEntry(key2).cloud?.url ?? null;
89914
90025
  };
89915
- const publish = async (ref, requested, { recreate = true } = {}) => {
90026
+ const prepare = async (ref) => {
89916
90027
  const inspected = await options.inspect(ref);
89917
90028
  if (!inspected) throw new CloudRefused(404, `${ref.type}/${ref.id} not found`);
89918
- if (inspected.reasons.length > 0 || !inspected.payload) return { status: 409, body: { error: "fix these before publishing", reasons: inspected.reasons } };
89919
- let files;
90029
+ if (inspected.reasons.length > 0 || !inspected.payload) return { ready: false, reasons: inspected.reasons };
90030
+ let packed;
89920
90031
  try {
89921
- files = withCloudRuntime(ref.type, packArtifact(inspected.dir, ref.type));
90032
+ packed = packArtifact(inspected.dir, ref.type);
89922
90033
  } catch (err) {
89923
90034
  throw new CloudRefused(413, err.message);
89924
90035
  }
90036
+ const sha = (data) => import_node_crypto6.default.createHash("sha256").update(data).digest("hex");
90037
+ const hashed = withCloudRuntime(ref.type, packed).map((file) => ({ ...file, hash: sha(file.data) }));
90038
+ const content = { title: inspected.title, payload: inspected.payload, files: hashed.map(({ path: path22, hash }) => ({ path: path22, hash })) };
90039
+ const fingerprint = sha(JSON.stringify({ title: inspected.title, payload: fingerprintPayload(inspected.payload), files: packed.map((file) => ({ path: file.path, hash: sha(file.data) })) }));
90040
+ return { ready: true, hashed, content, fingerprint };
90041
+ };
90042
+ const upToDate = async (ref) => {
90043
+ const cloud = artifactEntry(`${ref.type}/${ref.id}`).cloud;
90044
+ if (!cloud?.publishedAt) {
90045
+ if (!await options.inspect(ref)) throw new CloudRefused(404, `${ref.type}/${ref.id} not found`);
90046
+ return null;
90047
+ }
90048
+ const prepared = await prepare(ref);
90049
+ return prepared.ready ? prepared.fingerprint === cloud.fingerprint : null;
90050
+ };
90051
+ const publish = async (ref, requested, { recreate = true, skipUnchanged = false } = {}) => {
90052
+ const prepared = await prepare(ref);
90053
+ if (!prepared.ready) return { status: 409, body: { error: "fix these before publishing", reasons: prepared.reasons } };
90054
+ const { hashed, content, fingerprint } = prepared;
89925
90055
  const key2 = `${ref.type}/${ref.id}`;
89926
90056
  const entry = artifactEntry(key2);
89927
- const hashed = files.map((file) => ({ ...file, hash: import_node_crypto6.default.createHash("sha256").update(file.data).digest("hex") }));
90057
+ const current = entry.cloud;
90058
+ if (skipUnchanged && current?.publishedAt && current.fingerprint === fingerprint) {
90059
+ return { status: 200, body: { id: current.id, url: current.url, visibility: current.visibility, publishedAt: current.publishedAt } };
90060
+ }
89928
90061
  const byHash = new Map(hashed.map((file) => [file.hash, file.data]));
89929
- const manifest = hashed.map(({ path: path22, hash }) => ({ path: path22, hash }));
89930
- const version2 = (visibility) => ({ title: inspected.title, payload: inspected.payload, files: manifest, project, ...visibility ? { visibility } : {} });
90062
+ const version2 = (visibility) => ({ ...content, project, ...visibility ? { visibility } : {} });
89931
90063
  const create3 = () => createRecord2(ref, requested ?? entry.visibility ?? "private");
89932
90064
  const upload = async (id2, hashes) => {
89933
90065
  for (let i6 = 0; i6 < hashes.length; i6 += UPLOAD_CONCURRENCY) {
@@ -89956,7 +90088,7 @@ function createCloudRoutes(options) {
89956
90088
  const published = await (await expectOk(res)).json();
89957
90089
  updateArtifactConfig(configFile, key2, {
89958
90090
  visibility: published.visibility,
89959
- cloud: { id: published.id, url: published.url, publishedAt: published.updatedAt, visibility: published.visibility }
90091
+ cloud: { id: published.id, url: published.url, publishedAt: published.updatedAt, visibility: published.visibility, fingerprint }
89960
90092
  });
89961
90093
  return { status: 200, body: { id: published.id, url: published.url, visibility: published.visibility, publishedAt: published.updatedAt } };
89962
90094
  };
@@ -89996,7 +90128,7 @@ function createCloudRoutes(options) {
89996
90128
  const entry = artifactEntry(key2);
89997
90129
  if (entry.autoPublish === false) return { kind: "opted-out" };
89998
90130
  try {
89999
- const result = await publish(ref, void 0, { recreate: false });
90131
+ const result = await publish(ref, void 0, { recreate: false, skipUnchanged: true });
90000
90132
  if (result.status !== 200) return { kind: "not-ready" };
90001
90133
  return { kind: "published", created: result.body.id !== entry.cloud?.id };
90002
90134
  } catch (err) {
@@ -90059,6 +90191,10 @@ function createCloudRoutes(options) {
90059
90191
  sendJson(res, result.status, result.body);
90060
90192
  return;
90061
90193
  }
90194
+ if (action === "sync" && ref && method === "GET") {
90195
+ sendJson(res, 200, { upToDate: await serialized(`${ref.type}/${ref.id}`, () => upToDate(ref)) });
90196
+ return;
90197
+ }
90062
90198
  if (action === "reserve" && ref && method === "POST") {
90063
90199
  sendJson(res, 200, { url: await serialized(`${ref.type}/${ref.id}`, () => reserve(ref)) });
90064
90200
  return;
@@ -90295,6 +90431,8 @@ function allowInlineScripts(csp, html) {
90295
90431
  // src/server/auto-publish.ts
90296
90432
  var import_node_crypto8 = __toESM(require("node:crypto"), 1);
90297
90433
  var import_node_fs20 = __toESM(require("node:fs"), 1);
90434
+ var IDLE_MS = 5 * 60 * 1e3;
90435
+ var MAX_WAIT_MS = 15 * 60 * 1e3;
90298
90436
  var SIGNED_OUT_MESSAGE = "auto-publish paused: the Ryugi Cloud sign-in expired";
90299
90437
  function isNotice(value) {
90300
90438
  if (typeof value !== "object" || value === null) return false;
@@ -90326,7 +90464,20 @@ function createAutoPublisher(options) {
90326
90464
  const raise = (kind, message) => {
90327
90465
  if (notice?.kind !== kind) notice = { id: import_node_crypto8.default.randomUUID(), kind, message };
90328
90466
  };
90467
+ let idleTimer = null;
90468
+ let maxTimer = null;
90469
+ const clearTimers = () => {
90470
+ if (idleTimer) clearTimeout(idleTimer);
90471
+ if (maxTimer) clearTimeout(maxTimer);
90472
+ idleTimer = maxTimer = null;
90473
+ };
90474
+ const schedule = () => {
90475
+ if (idleTimer) clearTimeout(idleTimer);
90476
+ idleTimer = setTimeout(() => void flush(), options.idleMs ?? IDLE_MS).unref();
90477
+ maxTimer ??= setTimeout(() => void flush(), options.maxWaitMs ?? MAX_WAIT_MS).unref();
90478
+ };
90329
90479
  const run2 = async () => {
90480
+ clearTimers();
90330
90481
  if (!options.enabled() || dirty.size === 0) return;
90331
90482
  const token = options.token();
90332
90483
  if (paused && paused.token === token) return;
@@ -90334,6 +90485,7 @@ function createAutoPublisher(options) {
90334
90485
  paused = null;
90335
90486
  if (notice?.kind === "signed-out") notice = null;
90336
90487
  }
90488
+ let retry = false;
90337
90489
  for (const key2 of [...dirty]) {
90338
90490
  remarked.delete(key2);
90339
90491
  const outcome = await options.publish(key2);
@@ -90343,15 +90495,19 @@ function createAutoPublisher(options) {
90343
90495
  break;
90344
90496
  }
90345
90497
  if (outcome.kind === "published") {
90346
- if (!remarked.has(key2)) dirty.delete(key2);
90498
+ if (remarked.has(key2)) retry = true;
90499
+ else dirty.delete(key2);
90347
90500
  if (outcome.created && notice?.kind === "cap") notice = null;
90348
90501
  } else if (outcome.kind === "opted-out" || outcome.kind === "gone") {
90349
90502
  dirty.delete(key2);
90350
90503
  } else if (outcome.kind === "cannot-create") {
90351
90504
  raise("cap", outcome.message);
90505
+ } else {
90506
+ retry = true;
90352
90507
  }
90353
90508
  }
90354
90509
  save();
90510
+ if (retry) schedule();
90355
90511
  };
90356
90512
  let running = null;
90357
90513
  let queued = null;
@@ -90368,18 +90524,21 @@ function createAutoPublisher(options) {
90368
90524
  });
90369
90525
  return queued;
90370
90526
  };
90527
+ if (dirty.size > 0) schedule();
90371
90528
  return {
90372
90529
  changed(key2) {
90373
90530
  if (!options.enabled()) return;
90374
90531
  dirty.add(key2);
90375
90532
  remarked.add(key2);
90376
90533
  save();
90534
+ schedule();
90377
90535
  },
90378
90536
  removed(key2) {
90379
90537
  if (!dirty.delete(key2)) return;
90380
90538
  save();
90381
90539
  },
90382
- flush
90540
+ flush,
90541
+ close: clearTimers
90383
90542
  };
90384
90543
  }
90385
90544
 
@@ -90606,7 +90765,19 @@ async function startArtifactsServer(options) {
90606
90765
  return { dir, title, reasons, payload: published };
90607
90766
  };
90608
90767
  const cloud = options.cloud && options.configFile ? createCloudRoutes({ ...options.cloud, configFile: options.configFile, project: import_node_path20.default.basename(import_node_path20.default.resolve(root, "../..")), port: () => port, inspect }) : null;
90609
- const autoPublisher = cloud ? createAutoPublisher({ stateFile: import_node_path20.default.join(stateDir, "auto-publish.json"), enabled: cloud.autoPublishEnabled, token: cloud.token, publish: cloud.autoPublish }) : null;
90768
+ const autoPublisher = cloud ? createAutoPublisher({
90769
+ stateFile: import_node_path20.default.join(stateDir, "auto-publish.json"),
90770
+ enabled: cloud.autoPublishEnabled,
90771
+ token: cloud.token,
90772
+ publish: async (key2) => {
90773
+ const outcome = await cloud.autoPublish(key2);
90774
+ if (outcome.kind === "published") {
90775
+ const frame = textFrame(JSON.stringify({ type: "cloud-published", artifact: key2 }));
90776
+ for (const socket of clients) socket.write(frame);
90777
+ }
90778
+ return outcome;
90779
+ }
90780
+ }) : null;
90610
90781
  const sameOrigin = (req) => {
90611
90782
  const origin2 = req.headers.origin;
90612
90783
  const host = req.headers.host ?? "";
@@ -91263,6 +91434,7 @@ async function startArtifactsServer(options) {
91263
91434
  onActivity: (listener) => activityListeners.push(listener),
91264
91435
  close: () => new Promise((resolve) => {
91265
91436
  watcher.close();
91437
+ autoPublisher?.close();
91266
91438
  relay?.close();
91267
91439
  direct.close();
91268
91440
  selections.clearAll();
@@ -91369,7 +91541,7 @@ function openReady(payload) {
91369
91541
  }
91370
91542
 
91371
91543
  // package.json
91372
- var version = "1.24.3";
91544
+ var version = "1.26.0";
91373
91545
 
91374
91546
  // src/server/main.ts
91375
91547
  async function main() {
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r,x as i}from"./useSandboxFrame-DgFpRYDp.js";import{_ as a,d as o,f as s,g as c,t as l,v as u,y as d}from"./DocumentLayout-ChR45hJs.js";var f=e(t(),1),p=n();function m(){let e=(0,f.useMemo)(()=>window.matchMedia(`(prefers-color-scheme: dark)`),[]),[t,n]=(0,f.useState)(e.matches);return(0,f.useEffect)(()=>{let t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[e]),t}function h({id:e,state:t,contentBase:n,comments:h=i(),offline:g=!1}){let _=m(),[v,y]=(0,f.useState)(null),b=(0,f.useMemo)(()=>({artifact:`cloud/${e}`,contentBase:n,channel:a(),send:()=>void 0}),[e,n]),x=r(e,{comments:h.threads.filter(e=>e.status===`open`).length,activity:null,retrying:!1,reason:null});return(0,f.useEffect)(()=>{let e=document.createElement(`base`);return e.href=n,document.head.prepend(e),()=>e.remove()},[n]),(0,p.jsxs)(`div`,{className:`x1us19tq x1rozbrz xo2rkog`,className:`ryugi-doc ${{className:`x1us19tq x1rozbrz xo2rkog`}.className??``}`,children:[g?(0,p.jsxs)(`div`,{...{0:{className:`x78zum5 x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61`},1:{className:`x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61 x1s85apg x1ux6vrq`}}[!!x|0],children:[(0,p.jsx)(`i`,{className:`xci0xqf x1hagigm x16rqkct xxwmxtg`}),`电脑离线,暂时不能评论`]}):null,(0,p.jsx)(l,{editor:v,threads:h.threads,children:(0,p.jsx)(c.Provider,{value:b,children:(0,p.jsx)(d,{variant:`article`,theme:_?`dark`:`light`,initialValue:t,extraNodes:o,rendererConfig:s,onEditorReady:e=>{e?.setEditable(!1),y(e??null)},children:(0,p.jsx)(u,{})})})})]})}export{h as default};
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r,x as i}from"./useSandboxFrame-8NPM2cx_.js";import{_ as a,d as o,f as s,g as c,t as l,v as u,y as d}from"./DocumentLayout-Ds9A-4Ya.js";var f=e(t(),1),p=n();function m(){let e=(0,f.useMemo)(()=>window.matchMedia(`(prefers-color-scheme: dark)`),[]),[t,n]=(0,f.useState)(e.matches);return(0,f.useEffect)(()=>{let t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[e]),t}function h({id:e,state:t,contentBase:n,comments:h=i(),offline:g=!1}){let _=m(),[v,y]=(0,f.useState)(null),b=(0,f.useMemo)(()=>({artifact:`cloud/${e}`,contentBase:n,channel:a(),send:()=>void 0}),[e,n]),x=r(e,{comments:h.threads.filter(e=>e.status===`open`).length,activity:null,retrying:!1,reason:null});return(0,f.useEffect)(()=>{let e=document.createElement(`base`);return e.href=n,document.head.prepend(e),()=>e.remove()},[n]),(0,p.jsxs)(`div`,{className:`x1us19tq x1rozbrz xo2rkog`,className:`ryugi-doc ${{className:`x1us19tq x1rozbrz xo2rkog`}.className??``}`,children:[g?(0,p.jsxs)(`div`,{...{0:{className:`x78zum5 x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61`},1:{className:`x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61 x1s85apg x1ux6vrq`}}[!!x|0],children:[(0,p.jsx)(`i`,{className:`xci0xqf x1hagigm x16rqkct xxwmxtg`}),`电脑离线,暂时不能评论`]}):null,(0,p.jsx)(l,{editor:v,threads:h.threads,children:(0,p.jsx)(c.Provider,{value:b,children:(0,p.jsx)(d,{variant:`article`,theme:_?`dark`:`light`,initialValue:t,extraNodes:o,rendererConfig:s,onEditorReady:e=>{e?.setEditable(!1),y(e??null)},children:(0,p.jsx)(u,{})})})})]})}export{h as default};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r}from"./useSandboxFrame-DgFpRYDp.js";import{t as i}from"./index.js";import a from"./CloudDocument-B79kSG8x.js";import{DocumentView as o,t as s}from"./DocumentPage-D--i0Lg9.js";var c=e(t(),1),l=`1.24.3`,u=e=>/^(\d+)\.(\d+)\./.exec(e??``)?.slice(1,3).join(`.`)??null;function d(e,t){let n=u(e);return n!==null&&n===u(t)}var f=(e,t)=>`电脑上的 ryugi 是 ${t??`未知版本`},网页是 ${e},版本对上之前只能评论`,p=n();function m({id:e,state:t,contentBase:n,liveContentBase:u,comments:m}){let{transport:h,presence:g}=s(e,u??n??``),_=g?.online??!1;r(e,{online:g?.online??null});let[v,y]=(0,c.useState)(!1);if((0,c.useEffect)(()=>{_&&y(!0)},[_]),!h||!(v||_))return!t||!n?(0,p.jsx)(i,{children:g===null?`正在连接…`:`还没发布。电脑在线时,这里会实时显示。`}):(0,p.jsx)(a,{id:e,state:t,contentBase:n,comments:m,offline:g!==null&&!_});let b=_&&d(l,g?.version??null),x=_&&!b?f(l,g?.version??null):null;return(0,p.jsx)(o,{id:e,transport:h,live:_,cloud:{online:_,canEdit:b,reason:x}})}export{m as default};
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r}from"./useSandboxFrame-8NPM2cx_.js";import{t as i}from"./index.js";import a from"./CloudDocument-DbBCNw2D.js";import{DocumentView as o,t as s}from"./DocumentPage-xPmcnWV1.js";var c=e(t(),1),l=`1.26.0`,u=e=>/^(\d+)\.(\d+)\./.exec(e??``)?.slice(1,3).join(`.`)??null;function d(e,t){let n=u(e);return n!==null&&n===u(t)}var f=(e,t)=>`电脑上的 ryugi 是 ${t??`未知版本`},网页是 ${e},版本对上之前只能评论`,p=n();function m({id:e,state:t,contentBase:n,liveContentBase:u,comments:m}){let{transport:h,presence:g}=s(e,u??n??``),_=g?.online??!1;r(e,{online:g?.online??null});let[v,y]=(0,c.useState)(!1);if((0,c.useEffect)(()=>{_&&y(!0)},[_]),!h||!(v||_))return!t||!n?(0,p.jsx)(i,{children:g===null?`正在连接…`:`还没发布。电脑在线时,这里会实时显示。`}):(0,p.jsx)(a,{id:e,state:t,contentBase:n,comments:m,offline:g!==null&&!_});let b=_&&d(l,g?.version??null),x=_&&!b?f(l,g?.version??null):null;return(0,p.jsx)(o,{id:e,transport:h,live:_,cloud:{online:_,canEdit:b,reason:x}})}export{m as default};