ryugi-artifacts 1.2.0 → 1.4.1
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.
- package/dist/runtime/ryugi-ui.js +90 -0
- package/dist/server.cjs +140 -27
- package/dist/viewer/DocumentPage-B8-SlHYe.css +1 -0
- package/dist/viewer/{DocumentPage-CKcaZQSJ.js → DocumentPage-CUMc7_Xs.js} +160 -157
- package/dist/viewer/{abnfDiagram-VCTEODGH-CJY9VDd4.js → abnfDiagram-VCTEODGH-6sqmJ1ax.js} +1 -1
- package/dist/viewer/{ar-SA-G6X2FPQ2-K-GtJ7W1.js → ar-SA-G6X2FPQ2-B1vyJLm-.js} +1 -1
- package/dist/viewer/{architectureDiagram-5GKGNRK7-BkBtyasE.js → architectureDiagram-5GKGNRK7-C7b-KLYZ.js} +1 -1
- package/dist/viewer/{az-AZ-76LH7QW2-XoVI4fwq.js → az-AZ-76LH7QW2-7A-x2jlX.js} +1 -1
- package/dist/viewer/{bg-BG-XCXSNQG7-Cbfvo-2c.js → bg-BG-XCXSNQG7-DhUmN2uV.js} +1 -1
- package/dist/viewer/{blockDiagram-I7D4REHJ-BFwodIpD.js → blockDiagram-I7D4REHJ-vzR0MLtr.js} +1 -1
- package/dist/viewer/{bn-BD-2XOGV67Q-CdVUfI64.js → bn-BD-2XOGV67Q-shwCf3Bm.js} +1 -1
- package/dist/viewer/bundle-full-zufxvbLq.js +1 -0
- package/dist/viewer/{c4Diagram-7LVT6UL2-CLZxtZwl.js → c4Diagram-7LVT6UL2-58pCA6H1.js} +1 -1
- package/dist/viewer/{ca-ES-6MX7JW3Y-DJzuileD.js → ca-ES-6MX7JW3Y-CFF7L0QN.js} +1 -1
- package/dist/viewer/{chunk-4HAMMTFA-3V2j1-Kz.js → chunk-4HAMMTFA-CRwFsbSE.js} +1 -1
- package/dist/viewer/{chunk-EIO257PC-Cn8WiyTa.js → chunk-EIO257PC-B5jdzPER.js} +1 -1
- package/dist/viewer/{chunk-GMAD6QVW-BtjtirIk.js → chunk-GMAD6QVW-JoFSIaD3.js} +1 -1
- package/dist/viewer/{chunk-GVQU2GXP-CLOvs0EN.js → chunk-GVQU2GXP-CFOzMg3Y.js} +1 -1
- package/dist/viewer/{chunk-IMKFNOWR-CHa_S560.js → chunk-IMKFNOWR-DV7sFi2S.js} +1 -1
- package/dist/viewer/{chunk-L3NEJ4N5-wu75JLPc.js → chunk-L3NEJ4N5-BRIO8Vch.js} +1 -1
- package/dist/viewer/{chunk-OSK3NFVY-Nv7U0CWh.js → chunk-OSK3NFVY-BFuxpkWW.js} +1 -1
- package/dist/viewer/{chunk-PWAF6VOD-BMehzbEP.js → chunk-PWAF6VOD-jQqRXQjQ.js} +1 -1
- package/dist/viewer/{chunk-SHT3W25Y-X-Y-_0Ot.js → chunk-SHT3W25Y-CkrosGkz.js} +1 -1
- package/dist/viewer/{chunk-SVP7TREG-CPiBmvIE.js → chunk-SVP7TREG-DM5F3zf9.js} +1 -1
- package/dist/viewer/{chunk-TICWLB2K-BA_PbzF0.js → chunk-TICWLB2K-C7IgvsFS.js} +1 -1
- package/dist/viewer/{classDiagram-ZZMXUADV-g7lv5vM9.js → classDiagram-ZZMXUADV-DoyHBIFT.js} +1 -1
- package/dist/viewer/{classDiagram-v2-VYDZK3BY-g7lv5vM9.js → classDiagram-v2-VYDZK3BY-DoyHBIFT.js} +1 -1
- package/dist/viewer/{cs-CZ-2BRQDIVT-CT4fGx63.js → cs-CZ-2BRQDIVT-Cpg2fi5O.js} +1 -1
- package/dist/viewer/{cynefinDiagram-5FMLGOSQ-B8tI7bw4.js → cynefinDiagram-5FMLGOSQ-DCWaj-ji.js} +1 -1
- package/dist/viewer/{da-DK-5WZEPLOC-W6408Jjh.js → da-DK-5WZEPLOC-Dkrwy7UF.js} +1 -1
- package/dist/viewer/{dagre-GXQ25YYZ-C_e-LadC.js → dagre-GXQ25YYZ-CkvqswXB.js} +1 -1
- package/dist/viewer/{de-DE-XR44H4JA-CN0sXxCx.js → de-DE-XR44H4JA-BsFATsQ7.js} +1 -1
- package/dist/viewer/{diagram-S7CK7UJ4-DnpOqHnU.js → diagram-S7CK7UJ4-BLgTnal4.js} +1 -1
- package/dist/viewer/{diagram-UQ7AKVKN-DBtRgcbj.js → diagram-UQ7AKVKN-BOOuIOAi.js} +1 -1
- package/dist/viewer/{diagram-VX7I27RA-Cg3U157p.js → diagram-VX7I27RA-CBejVfwX.js} +1 -1
- package/dist/viewer/{diagram-Z3DM3KII-COnkTX3I.js → diagram-Z3DM3KII-Dsfn4cQT.js} +1 -1
- package/dist/viewer/dist-B8j_djl3.js +23 -0
- package/dist/viewer/dist-BW3kaAUU.js +1 -0
- package/dist/viewer/dist-BeeoOAkJ.js +1 -0
- package/dist/viewer/dist-BmGBmrLO.js +9 -0
- package/dist/viewer/dist-Bmu2jBZ8.js +1 -0
- package/dist/viewer/dist-BrnE25fw.js +1 -0
- package/dist/viewer/dist-C8j96inZ.js +1 -0
- package/dist/viewer/{dist-CUfsWem0.js → dist-CD80Ls-w.js} +1 -1
- package/dist/viewer/dist-CEi-EHZz.js +6 -0
- package/dist/viewer/{dist-zn8EeWds.js → dist-CawMU58Z.js} +4 -4
- package/dist/viewer/{dist-BzjGbwZW.js → dist-Co80CdmK.js} +1 -1
- package/dist/viewer/dist-D0Cs-QWY.js +1 -0
- package/dist/viewer/dist-DOYu8Ulf.js +1 -0
- package/dist/viewer/dist-DOfoiRwk.js +11 -0
- package/dist/viewer/dist-DT68yNv9.js +1 -0
- package/dist/viewer/dist-DV6DLjjc.js +1 -0
- package/dist/viewer/dist-DbN_am5s.js +1 -0
- package/dist/viewer/dist-DcltHyjJ.js +1 -0
- package/dist/viewer/dist-DjWWbDD5.js +1 -0
- package/dist/viewer/dist-DlOGd3i_.js +1 -0
- package/dist/viewer/dist-bzUY2uMM.js +1 -0
- package/dist/viewer/dist-jdF19sCi.js +1 -0
- package/dist/viewer/dist-rmtkIkJZ.js +2 -0
- package/dist/viewer/dist-yFvAy8Ar.js +1 -0
- package/dist/viewer/{ebnfDiagram-PWID7BFC-oAgHTNXR.js → ebnfDiagram-PWID7BFC-BKgqXbrD.js} +1 -1
- package/dist/viewer/{el-GR-BZB4AONW-BsMedPHo.js → el-GR-BZB4AONW-3fIJfxnW.js} +1 -1
- package/dist/viewer/{en-B4ZKOASM-CITu3D1s.js → en-B4ZKOASM-d6lCBBpL.js} +1 -1
- package/dist/viewer/{erDiagram-RLTQ6QDP-TwdW2oA7.js → erDiagram-RLTQ6QDP-DHNRCaQI.js} +1 -1
- package/dist/viewer/{es-ES-U4NZUMDT-Ck9awXmS.js → es-ES-U4NZUMDT-CRzZW3JH.js} +1 -1
- package/dist/viewer/{eu-ES-A7QVB2H4-B0zdMCeq.js → eu-ES-A7QVB2H4-DfzgRZX0.js} +1 -1
- package/dist/viewer/{fa-IR-HGAKTJCU-CS5a6owQ.js → fa-IR-HGAKTJCU-iFq4OcLj.js} +1 -1
- package/dist/viewer/{fi-FI-Z5N7JZ37-DFeVVwfY.js → fi-FI-Z5N7JZ37-CVMpTDOY.js} +1 -1
- package/dist/viewer/flowDiagram-HODETNUW-CLU6w8F4.js +1 -0
- package/dist/viewer/{fr-FR-RHASNOE6-DKx1LutU.js → fr-FR-RHASNOE6-lZ6pWX75.js} +1 -1
- package/dist/viewer/{ganttDiagram-EL5Y4UJY-C99HWJuC.js → ganttDiagram-EL5Y4UJY-BntFzPhy.js} +1 -1
- package/dist/viewer/{gl-ES-HMX3MZ6V-DIyoZ6Ev.js → gl-ES-HMX3MZ6V-CYVyT8xT.js} +1 -1
- package/dist/viewer/{he-IL-6SHJWFNN-S6gg5BZc.js → he-IL-6SHJWFNN-Bao7Zmwl.js} +1 -1
- package/dist/viewer/{hi-IN-IWLTKZ5I-DZ8Ixb7q.js → hi-IN-IWLTKZ5I-hKM14O0N.js} +1 -1
- package/dist/viewer/{hu-HU-A5ZG7DT2-DOuQYdX1.js → hu-HU-A5ZG7DT2-CUb5NDCe.js} +1 -1
- package/dist/viewer/{id-ID-SAP4L64H-meYgt4O6.js → id-ID-SAP4L64H-CQuTxtOp.js} +1 -1
- package/dist/viewer/{image-GAAHSSAO-HJXyQYlz.js → image-GAAHSSAO-BgjnXzFc.js} +1 -1
- package/dist/viewer/index.css +8 -8
- package/dist/viewer/index.js +2 -2
- package/dist/viewer/{infoDiagram-27XIBGKW-C384DKum.js → infoDiagram-27XIBGKW-CrRdoMz5.js} +1 -1
- package/dist/viewer/{ishikawaDiagram-5VMMS53U-DXcp6tVe.js → ishikawaDiagram-5VMMS53U-DIOQi7Cg.js} +1 -1
- package/dist/viewer/{it-IT-JPQ66NNP-PCIxpZOt.js → it-IT-JPQ66NNP-DyTa4yNl.js} +1 -1
- package/dist/viewer/{ja-JP-DBVTYXUO-CkCRU8jW.js → ja-JP-DBVTYXUO-yQ9cDwPd.js} +1 -1
- package/dist/viewer/{journeyDiagram-3NMN7TZE-2ppKvgP7.js → journeyDiagram-3NMN7TZE-BiI8dwZq.js} +1 -1
- package/dist/viewer/{kaa-6HZHGXH3-fLXXAJBo.js → kaa-6HZHGXH3-wsDFuKqq.js} +1 -1
- package/dist/viewer/{kab-KAB-ZGHBKWFO-GTYI24iK.js → kab-KAB-ZGHBKWFO-DrWLwoIp.js} +1 -1
- package/dist/viewer/{kanban-definition-UXKFOSKX-DZ6fRQhO.js → kanban-definition-UXKFOSKX-w8sX7hiq.js} +1 -1
- package/dist/viewer/{kk-KZ-P5N5QNE5-BdweMmqq.js → kk-KZ-P5N5QNE5-B1pGaoUJ.js} +1 -1
- package/dist/viewer/{km-KH-HSX4SM5Z-DI3cVVah.js → km-KH-HSX4SM5Z-peuqig33.js} +1 -1
- package/dist/viewer/{ko-KR-MTYHY66A-Cy7t75pr.js → ko-KR-MTYHY66A-H2BvroMZ.js} +1 -1
- package/dist/viewer/{ku-TR-6OUDTVRD-DKeK0G72.js → ku-TR-6OUDTVRD-D8yGB2lq.js} +1 -1
- package/dist/viewer/{lt-LT-XHIRWOB4-BKoZOZYV.js → lt-LT-XHIRWOB4-C7hY3ayX.js} +1 -1
- package/dist/viewer/{lv-LV-5QDEKY6T-Be_i1YDe.js → lv-LV-5QDEKY6T-CdQY_o2B.js} +1 -1
- package/dist/viewer/{mindmap-definition-YA3MSWOX-B8sPOCTd.js → mindmap-definition-YA3MSWOX-wcZRhXKP.js} +1 -1
- package/dist/viewer/{mr-IN-CRQNXWMA-Cm3TN0PF.js → mr-IN-CRQNXWMA-oxX7F2ME.js} +1 -1
- package/dist/viewer/{my-MM-5M5IBNSE-BhtdFitE.js → my-MM-5M5IBNSE-CzPg5_UV.js} +1 -1
- package/dist/viewer/{nb-NO-T6EIAALU-_DSnLYJl.js → nb-NO-T6EIAALU-C3-LoToi.js} +1 -1
- package/dist/viewer/{nl-NL-IS3SIHDZ-DVIAbdhD.js → nl-NL-IS3SIHDZ-BBv3k8Gy.js} +1 -1
- package/dist/viewer/{nn-NO-6E72VCQL-DsvBflH9.js → nn-NO-6E72VCQL-D1beVxxr.js} +1 -1
- package/dist/viewer/{oc-FR-POXYY2M6-CE2zpZKD.js → oc-FR-POXYY2M6-BmOG0UP2.js} +1 -1
- package/dist/viewer/{pa-IN-N4M65BXN-Bug3lVUE.js → pa-IN-N4M65BXN-BjoeRd7k.js} +1 -1
- package/dist/viewer/{pegDiagram-XKGWAZYB-DZba7UyZ.js → pegDiagram-XKGWAZYB-XRFpYjCF.js} +1 -1
- package/dist/viewer/percentages-BXMCSKIN-Cox4vFeW.js +1 -0
- package/dist/viewer/{pieDiagram-E7YTZNPT-CjQWu-G0.js → pieDiagram-E7YTZNPT-C3cG1M0U.js} +1 -1
- package/dist/viewer/{pl-PL-T2D74RX3-BX6FTriV.js → pl-PL-T2D74RX3-Cm1gxJBm.js} +1 -1
- package/dist/viewer/prod-DEzUWFeR.js +199 -0
- package/dist/viewer/{pt-BR-5N22H2LF-C1-DcwVl.js → pt-BR-5N22H2LF-aoLcWXkM.js} +1 -1
- package/dist/viewer/{pt-PT-UZXXM6DQ-CPD3ieL8.js → pt-PT-UZXXM6DQ-D-uSzCOy.js} +1 -1
- package/dist/viewer/{quadrantDiagram-AXDQQJYC-Dtj6HYuH.js → quadrantDiagram-AXDQQJYC-DacPT28Y.js} +1 -1
- package/dist/viewer/{railroadDiagram-O6MQD6OU-Chpu_GYF.js → railroadDiagram-O6MQD6OU-CJPW5CjY.js} +1 -1
- package/dist/viewer/{requirementDiagram-BXWQKSXE-CDt1TR0H.js → requirementDiagram-BXWQKSXE-C3UBy5Lz.js} +1 -1
- package/dist/viewer/{ro-RO-JPDTUUEW-DtihFuc7.js → ro-RO-JPDTUUEW-CmxHLZQI.js} +1 -1
- package/dist/viewer/{ru-RU-B4JR7IUQ-BVydWnmn.js → ru-RU-B4JR7IUQ-Cafw4aZs.js} +1 -1
- package/dist/viewer/{sequenceDiagram-WJ2MYXX4-B-HiREqk.js → sequenceDiagram-WJ2MYXX4-D68qb_4_.js} +1 -1
- package/dist/viewer/{si-LK-N5RQ5JYF-B6G4thDO.js → si-LK-N5RQ5JYF-DQfjIpcc.js} +1 -1
- package/dist/viewer/{sk-SK-C5VTKIMK-BWky4pRK.js → sk-SK-C5VTKIMK-Bq4SYKDN.js} +1 -1
- package/dist/viewer/{sl-SI-NN7IZMDC-Cfh4lNJc.js → sl-SI-NN7IZMDC-Bh-RezGM.js} +1 -1
- package/dist/viewer/{stateDiagram-D77RDMKH-9lAkDXF8.js → stateDiagram-D77RDMKH-BT2Jdlqs.js} +1 -1
- package/dist/viewer/{stateDiagram-v2-MP3YSRHH-BeettcPf.js → stateDiagram-v2-MP3YSRHH-D3NDVC0z.js} +1 -1
- package/dist/viewer/subset-shared.chunk-sjf42WzB.js +1 -0
- package/dist/viewer/{subset-worker.chunk-DLkR7jFY.js → subset-worker.chunk-kUSnMaQ3.js} +1 -1
- package/dist/viewer/{sv-SE-XGPEYMSR-DEXamQXG.js → sv-SE-XGPEYMSR-BdJ34kbq.js} +1 -1
- package/dist/viewer/{swimlanes-42K2YHIH-BIXO1VlE.js → swimlanes-42K2YHIH-DbqvhUWz.js} +1 -1
- package/dist/viewer/{swimlanesDiagram-VR7AAH4N-jhPlJ2VV.js → swimlanesDiagram-VR7AAH4N-BnVB12ID.js} +1 -1
- package/dist/viewer/{ta-IN-2NMHFXQM-B0O9h-3T.js → ta-IN-2NMHFXQM-BrlxbbKL.js} +1 -1
- package/dist/viewer/{th-TH-HPSO5L25-Dx39_LR7.js → th-TH-HPSO5L25-BvwUkuqj.js} +1 -1
- package/dist/viewer/{timeline-definition-24CTP7MA-DdXT3J9C.js → timeline-definition-24CTP7MA-CfRv8Y4n.js} +1 -1
- package/dist/viewer/{tr-TR-DEFEU3FU-DV9y2RyZ.js → tr-TR-DEFEU3FU-CAAj2nYr.js} +1 -1
- package/dist/viewer/{uk-UA-QMV73CPH-BgRmMEmN.js → uk-UA-QMV73CPH-BMbpyf9T.js} +1 -1
- package/dist/viewer/{vennDiagram-4TSXK5OY-CR5Sul_E.js → vennDiagram-4TSXK5OY-BUdpujzY.js} +1 -1
- package/dist/viewer/{vi-VN-M7AON7JQ-B0B_l7Uo.js → vi-VN-M7AON7JQ-CxPDfBGZ.js} +1 -1
- package/dist/viewer/{wardleyDiagram-VM6X3IG4-CqxcEB3O.js → wardleyDiagram-VM6X3IG4-CjTt7HCf.js} +1 -1
- package/dist/viewer/{xychartDiagram-S5SC5T6Z-BEvyZpkZ.js → xychartDiagram-S5SC5T6Z-K6R8M-rp.js} +1 -1
- package/dist/viewer/{zh-CN-LNUGB5OW-LFQbiQwU.js → zh-CN-LNUGB5OW-Ns7aJuNy.js} +1 -1
- package/dist/viewer/{zh-HK-E62DVLB3-3QKZloec.js → zh-HK-E62DVLB3-BXcuB03B.js} +1 -1
- package/dist/viewer/{zh-TW-RAJ6MFWO-DvqHAQqj.js → zh-TW-RAJ6MFWO-DM0fBdpl.js} +1 -1
- package/package.json +18 -16
- package/dist/viewer/DocumentPage-DJNawMpm.css +0 -1
- package/dist/viewer/bundle-full-BqxTJR_t.js +0 -1
- package/dist/viewer/dist-5gzwWJIh.js +0 -1
- package/dist/viewer/dist-6ge95jUR.js +0 -1
- package/dist/viewer/dist-B08avMqo.js +0 -1
- package/dist/viewer/dist-B3CWmz5H.js +0 -11
- package/dist/viewer/dist-BFXiyx5T.js +0 -1
- package/dist/viewer/dist-BLc60eWn.js +0 -1
- package/dist/viewer/dist-BSZraMgI.js +0 -6
- package/dist/viewer/dist-C0D5mTt6.js +0 -23
- package/dist/viewer/dist-CEU-zLZI.js +0 -1
- package/dist/viewer/dist-CLLMLHGt.js +0 -1
- package/dist/viewer/dist-COUyUe7S.js +0 -2
- package/dist/viewer/dist-CgygMKBu.js +0 -1
- package/dist/viewer/dist-ClNSVh_I.js +0 -1
- package/dist/viewer/dist-CxUCHy3t.js +0 -1
- package/dist/viewer/dist-CywKvbgg.js +0 -1
- package/dist/viewer/dist-DcMVh-xg.js +0 -1
- package/dist/viewer/dist-Dk8-0ERF.js +0 -1
- package/dist/viewer/dist-b7g3K_YY.js +0 -9
- package/dist/viewer/dist-e53or3P-.js +0 -1
- package/dist/viewer/dist-maKyBr1H.js +0 -1
- package/dist/viewer/dist-zqfK-dEL.js +0 -1
- package/dist/viewer/flowDiagram-HODETNUW-GyoGBILk.js +0 -1
- package/dist/viewer/percentages-BXMCSKIN-CMvTPh1_.js +0 -1
- package/dist/viewer/prod-YYAgs6Dl.js +0 -199
- package/dist/viewer/subset-shared.chunk-0TGLD4Jz.js +0 -1
package/dist/server.cjs
CHANGED
|
@@ -1865,9 +1865,9 @@ var import_node_path5 = __toESM(require("node:path"), 1);
|
|
|
1865
1865
|
// src/shared/geometry.ts
|
|
1866
1866
|
var GROUP_PAD = 48;
|
|
1867
1867
|
var GROUP_TOP = 144;
|
|
1868
|
-
var NAME_STRIP_H =
|
|
1868
|
+
var NAME_STRIP_H = 48;
|
|
1869
1869
|
var TITLE_LINE_HEIGHT = 1.15;
|
|
1870
|
-
var DEFAULT_TITLE_SIZE =
|
|
1870
|
+
var DEFAULT_TITLE_SIZE = 96;
|
|
1871
1871
|
var STICKY_DEFAULT_W = 240;
|
|
1872
1872
|
var STICKY_FONT_SIZE = 18;
|
|
1873
1873
|
var STICKY_LINE_H = 27;
|
|
@@ -1960,6 +1960,16 @@ function structuralWarnings(raw) {
|
|
|
1960
1960
|
if (raw.focus !== void 0 && (!isObject2(raw.focus) || typeof raw.focus.target !== "string")) {
|
|
1961
1961
|
warnings.push('"focus" must be { "target": <id>, "at": <time> }');
|
|
1962
1962
|
}
|
|
1963
|
+
if (raw.building !== void 0 && typeof raw.building !== "boolean") {
|
|
1964
|
+
warnings.push('"building" must be a boolean');
|
|
1965
|
+
}
|
|
1966
|
+
if (isObject2(raw.boards)) {
|
|
1967
|
+
for (const [id2, board] of Object.entries(raw.boards)) {
|
|
1968
|
+
if (isObject2(board) && board.interactive !== void 0 && typeof board.interactive !== "boolean") {
|
|
1969
|
+
warnings.push(`board "${id2}" field "interactive" must be a boolean`);
|
|
1970
|
+
}
|
|
1971
|
+
}
|
|
1972
|
+
}
|
|
1963
1973
|
if (warnings.length > 0) return warnings;
|
|
1964
1974
|
raw.pages.forEach((page, index) => {
|
|
1965
1975
|
if (!isObject2(page) || typeof page.id !== "string" || typeof page.name !== "string") {
|
|
@@ -1999,7 +2009,7 @@ function structuralWarnings(raw) {
|
|
|
1999
2009
|
}
|
|
2000
2010
|
return warnings;
|
|
2001
2011
|
}
|
|
2002
|
-
function validateCanvas(raw, fileExists) {
|
|
2012
|
+
function validateCanvas(raw, fileExists, options = {}) {
|
|
2003
2013
|
const structural = structuralWarnings(raw);
|
|
2004
2014
|
if (structural.length > 0) return structural;
|
|
2005
2015
|
const canvas = raw;
|
|
@@ -2011,7 +2021,10 @@ function validateCanvas(raw, fileExists) {
|
|
|
2011
2021
|
for (const [id2, board] of boards) {
|
|
2012
2022
|
if (!pages.has(board.page)) warnings.push(`board "${id2}" uses unknown page "${board.page}"`);
|
|
2013
2023
|
if (!board.file.startsWith("pages/")) warnings.push(`board "${id2}" file must start with "pages/": ${board.file}`);
|
|
2014
|
-
else if (!fileExists(board.file))
|
|
2024
|
+
else if (!fileExists(board.file)) {
|
|
2025
|
+
options.pending?.add(id2);
|
|
2026
|
+
if (!options.allowPending) warnings.push(`board "${id2}" file not found: ${board.file}`);
|
|
2027
|
+
}
|
|
2015
2028
|
}
|
|
2016
2029
|
for (let i6 = 0; i6 < boards.length; i6++) {
|
|
2017
2030
|
for (let j4 = i6 + 1; j4 < boards.length; j4++) {
|
|
@@ -2110,9 +2123,13 @@ function boardVersions(boardDir, canvas) {
|
|
|
2110
2123
|
const versions = {};
|
|
2111
2124
|
for (const board of Object.values(canvas.boards)) {
|
|
2112
2125
|
const target = resolveBoardFile(boardDir, board.file);
|
|
2113
|
-
if (!target)
|
|
2126
|
+
if (!target) {
|
|
2127
|
+
versions[board.file] = 0;
|
|
2128
|
+
continue;
|
|
2129
|
+
}
|
|
2114
2130
|
try {
|
|
2115
|
-
|
|
2131
|
+
const stat = import_node_fs5.default.statSync(target);
|
|
2132
|
+
versions[board.file] = stat.size > 0 ? stat.mtimeMs : 0;
|
|
2116
2133
|
} catch {
|
|
2117
2134
|
versions[board.file] = 0;
|
|
2118
2135
|
}
|
|
@@ -2121,17 +2138,26 @@ function boardVersions(boardDir, canvas) {
|
|
|
2121
2138
|
}
|
|
2122
2139
|
function readCanvas(boardDir) {
|
|
2123
2140
|
const { raw, warning } = readRaw(boardDir);
|
|
2124
|
-
if (warning) return { canvas: null, warnings: [warning], layout: null, versions: {} };
|
|
2141
|
+
if (warning) return { canvas: null, warnings: [warning], pending: [], layout: null, versions: {} };
|
|
2125
2142
|
try {
|
|
2126
2143
|
const structural = structuralWarnings(raw);
|
|
2127
|
-
if (structural.length > 0) return { canvas: null, warnings: structural, layout: null, versions: {} };
|
|
2144
|
+
if (structural.length > 0) return { canvas: null, warnings: structural, pending: [], layout: null, versions: {} };
|
|
2128
2145
|
const canvas = raw;
|
|
2129
|
-
const
|
|
2130
|
-
|
|
2146
|
+
const pending = /* @__PURE__ */ new Set();
|
|
2147
|
+
const warnings = validateCanvas(canvas, (rel) => resolveBoardFile(boardDir, rel) !== null, {
|
|
2148
|
+
pending,
|
|
2149
|
+
allowPending: canvas.building === true
|
|
2150
|
+
});
|
|
2151
|
+
const versions = boardVersions(boardDir, canvas);
|
|
2152
|
+
for (const [id2, board] of Object.entries(canvas.boards)) {
|
|
2153
|
+
if (!versions[board.file]) pending.add(id2);
|
|
2154
|
+
}
|
|
2155
|
+
return { canvas, warnings, pending: [...pending].sort(), layout: computeLayout(canvas), versions };
|
|
2131
2156
|
} catch (err) {
|
|
2132
2157
|
return {
|
|
2133
2158
|
canvas: null,
|
|
2134
2159
|
warnings: [`canvas.json could not be checked: ${err.message}`],
|
|
2160
|
+
pending: [],
|
|
2135
2161
|
layout: null,
|
|
2136
2162
|
versions: {}
|
|
2137
2163
|
};
|
|
@@ -2150,7 +2176,12 @@ function writeArtifactState(stateDir, ref, payload, extra = {}) {
|
|
|
2150
2176
|
if (ref.type === "artboard") {
|
|
2151
2177
|
writeJsonAtomic(import_node_path5.default.join(dir, "layout.json"), { checkedAt, ...payload.layout ?? { pages: {} } });
|
|
2152
2178
|
}
|
|
2153
|
-
writeJsonAtomic(import_node_path5.default.join(dir, "warnings.json"), {
|
|
2179
|
+
writeJsonAtomic(import_node_path5.default.join(dir, "warnings.json"), {
|
|
2180
|
+
checkedAt,
|
|
2181
|
+
warnings: payload.warnings,
|
|
2182
|
+
...payload.pending ? { pending: payload.pending } : {},
|
|
2183
|
+
...extra
|
|
2184
|
+
});
|
|
2154
2185
|
}
|
|
2155
2186
|
|
|
2156
2187
|
// src/server/document-comments.ts
|
|
@@ -36460,7 +36491,7 @@ decorateMethods(EphemeralStoreWasm.prototype, [
|
|
|
36460
36491
|
]);
|
|
36461
36492
|
decorateMethods(UndoManager.prototype, ["undo", "redo"]);
|
|
36462
36493
|
|
|
36463
|
-
// node_modules/.pnpm/@haklex+rich-collab-loro@0.
|
|
36494
|
+
// node_modules/.pnpm/@haklex+rich-collab-loro@0.50.0_lexical@0.52.0_typescript@5.9.3__loro-crdt@1.16.4/node_modules/@haklex/rich-collab-loro/dist/index.mjs
|
|
36464
36495
|
function transformOffset(previous, next, offset) {
|
|
36465
36496
|
const limit = Math.min(previous.length, next.length);
|
|
36466
36497
|
let prefix = 0;
|
|
@@ -67871,7 +67902,7 @@ var UNORDERED_LIST2 = mod28.UNORDERED_LIST;
|
|
|
67871
67902
|
var isTableRowDivider2 = mod28.isTableRowDivider;
|
|
67872
67903
|
var registerMarkdownShortcuts2 = mod28.registerMarkdownShortcuts;
|
|
67873
67904
|
|
|
67874
|
-
// node_modules/.pnpm/@haklex+rich-headless@0.
|
|
67905
|
+
// node_modules/.pnpm/@haklex+rich-headless@0.50.0_lexical@0.52.0_typescript@5.9.3__typescript@5.9.3/node_modules/@haklex/rich-headless/dist/transformers.mjs
|
|
67875
67906
|
var NEVER = /a^/;
|
|
67876
67907
|
var NOOP = () => {
|
|
67877
67908
|
};
|
|
@@ -70528,7 +70559,7 @@ var signal2 = mod43.signal;
|
|
|
70528
70559
|
var untracked2 = mod43.untracked;
|
|
70529
70560
|
var watchedSignal3 = mod43.watchedSignal;
|
|
70530
70561
|
|
|
70531
|
-
// node_modules/.pnpm/@haklex+rich-headless@0.
|
|
70562
|
+
// node_modules/.pnpm/@haklex+rich-headless@0.50.0_lexical@0.52.0_typescript@5.9.3__typescript@5.9.3/node_modules/@haklex/rich-headless/dist/index.mjs
|
|
70532
70563
|
var builtinNodes = [
|
|
70533
70564
|
HeadingNode2,
|
|
70534
70565
|
QuoteNode2,
|
|
@@ -71321,7 +71352,7 @@ function customAlphabet(alphabet, defaultSize = 21) {
|
|
|
71321
71352
|
}
|
|
71322
71353
|
var nanoid2 = customAlphabet(urlAlphabet2);
|
|
71323
71354
|
|
|
71324
|
-
// node_modules/.pnpm/@haklex+rich-litexml@0.
|
|
71355
|
+
// node_modules/.pnpm/@haklex+rich-litexml@0.50.0_typescript@5.9.3/node_modules/@haklex/rich-litexml/dist/src-COIhAhyB.js
|
|
71325
71356
|
var impl = null;
|
|
71326
71357
|
function registerParseHTML(fn5) {
|
|
71327
71358
|
impl = fn5;
|
|
@@ -83425,7 +83456,7 @@ function Document4() {
|
|
|
83425
83456
|
}
|
|
83426
83457
|
setPrototypeOf(Document4, Document2).prototype = Document2.prototype;
|
|
83427
83458
|
|
|
83428
|
-
// node_modules/.pnpm/@haklex+rich-litexml@0.
|
|
83459
|
+
// node_modules/.pnpm/@haklex+rich-litexml@0.50.0_typescript@5.9.3/node_modules/@haklex/rich-litexml/dist/node.mjs
|
|
83429
83460
|
registerParseHTML((html) => parseHTML2(html).document);
|
|
83430
83461
|
|
|
83431
83462
|
// src/server/balance.ts
|
|
@@ -83902,7 +83933,10 @@ var RUNTIME = `(() => {
|
|
|
83902
83933
|
const reason = event.reason;
|
|
83903
83934
|
post({ type: 'ryugi:error', message: 'unhandled rejection: ' + String((reason && reason.message) || reason) });
|
|
83904
83935
|
});
|
|
83905
|
-
const fields = () =>
|
|
83936
|
+
const fields = () =>
|
|
83937
|
+
Array.from(document.querySelectorAll('input, select, textarea, details, [data-ryugi-control]')).filter(
|
|
83938
|
+
(el) => el.hasAttribute('data-ryugi-control') || !el.closest('[data-ryugi-control]'),
|
|
83939
|
+
);
|
|
83906
83940
|
const keyOf = (el, index) => {
|
|
83907
83941
|
if (el.id) return '#' + el.id;
|
|
83908
83942
|
if (el.type === 'radio') return 'radio:' + el.name + ':' + el.value;
|
|
@@ -83920,7 +83954,12 @@ var RUNTIME = `(() => {
|
|
|
83920
83954
|
const state = { scroll: [scrollX, scrollY], fields: {} };
|
|
83921
83955
|
fields().forEach((el, index) => {
|
|
83922
83956
|
const key = keyOf(el, index);
|
|
83923
|
-
if (el.
|
|
83957
|
+
if (el.hasAttribute('data-ryugi-control')) {
|
|
83958
|
+
const saved = {};
|
|
83959
|
+
if ('value' in el && el.value !== undefined) saved.value = el.value;
|
|
83960
|
+
if (typeof el.checked === 'boolean') saved.checked = el.checked;
|
|
83961
|
+
state.fields[key] = saved;
|
|
83962
|
+
} else if (el.tagName === 'DETAILS') state.fields[key] = { open: el.open };
|
|
83924
83963
|
else if (el.type === 'checkbox' || el.type === 'radio') state.fields[key] = { checked: el.checked };
|
|
83925
83964
|
else if (el.type !== 'file' && el.type !== 'password') state.fields[key] = { value: el.value };
|
|
83926
83965
|
});
|
|
@@ -83930,7 +83969,20 @@ var RUNTIME = `(() => {
|
|
|
83930
83969
|
fields().forEach((el, index) => {
|
|
83931
83970
|
const saved = data.state.fields[keyOf(el, index)];
|
|
83932
83971
|
if (!saved) return;
|
|
83933
|
-
if ('
|
|
83972
|
+
if (el.hasAttribute('data-ryugi-control')) {
|
|
83973
|
+
let changed = false;
|
|
83974
|
+
if ('value' in saved && el.value !== saved.value) {
|
|
83975
|
+
el.value = saved.value;
|
|
83976
|
+
changed = true;
|
|
83977
|
+
}
|
|
83978
|
+
if ('checked' in saved && el.checked !== saved.checked) {
|
|
83979
|
+
el.checked = saved.checked;
|
|
83980
|
+
changed = true;
|
|
83981
|
+
}
|
|
83982
|
+
if (changed) {
|
|
83983
|
+
el.dispatchEvent(new CustomEvent('ryugi-change', { bubbles: true, detail: { value: el.value, checked: el.checked } }));
|
|
83984
|
+
}
|
|
83985
|
+
} else if ('open' in saved) el.open = saved.open;
|
|
83934
83986
|
else if ('checked' in saved) {
|
|
83935
83987
|
if (el.checked !== saved.checked) {
|
|
83936
83988
|
el.checked = saved.checked;
|
|
@@ -83949,11 +84001,14 @@ var RUNTIME = `(() => {
|
|
|
83949
84001
|
var HEAD = /<head(\s[^>]*)?>/i;
|
|
83950
84002
|
var PROLOGUE = /^\s*(<!doctype[^>]*>)?\s*(<html(\s[^>]*)?>)?/i;
|
|
83951
84003
|
var RUNTIME_LINE = RUNTIME.split("\n").map((line) => line.trim()).join(" ");
|
|
83952
|
-
|
|
84004
|
+
var UI_MARKER = /<ryugi-[a-z0-9-]+(?:\s|>)/i;
|
|
84005
|
+
var UI_META = /<meta[^>]+name=["']ryugi-ui["'][^>]*>/i;
|
|
84006
|
+
function injectRuntime(html, options = {}) {
|
|
83953
84007
|
const tag = `<script>${RUNTIME_LINE}</script>`;
|
|
84008
|
+
const ui2 = options.uiRuntimeUrl && (UI_MARKER.test(html) || UI_META.test(html)) ? `<script defer src="${options.uiRuntimeUrl.replace(/"/g, """)}"></script>` : "";
|
|
83954
84009
|
const head = HEAD.exec(html);
|
|
83955
84010
|
const at7 = head ? head.index + head[0].length : PROLOGUE.exec(html)?.[0].length ?? 0;
|
|
83956
|
-
return html.slice(0, at7) + tag + html.slice(at7);
|
|
84011
|
+
return html.slice(0, at7) + tag + ui2 + html.slice(at7);
|
|
83957
84012
|
}
|
|
83958
84013
|
|
|
83959
84014
|
// src/server/http.ts
|
|
@@ -84230,6 +84285,7 @@ function titleOf(payload, ref) {
|
|
|
84230
84285
|
async function startArtifactsServer(options) {
|
|
84231
84286
|
const root = import_node_path10.default.resolve(options.root);
|
|
84232
84287
|
const viewerDir = import_node_path10.default.resolve(options.viewerDir);
|
|
84288
|
+
const runtimeDir = options.runtimeDir ? import_node_path10.default.resolve(options.runtimeDir) : null;
|
|
84233
84289
|
const stateDir = import_node_path10.default.join(root, ".state");
|
|
84234
84290
|
import_node_fs10.default.mkdirSync(stateDir, { recursive: true, mode: 448 });
|
|
84235
84291
|
import_node_fs10.default.writeFileSync(import_node_path10.default.join(stateDir, ".gitignore"), "*\n");
|
|
@@ -84341,6 +84397,20 @@ async function startArtifactsServer(options) {
|
|
|
84341
84397
|
};
|
|
84342
84398
|
const isAuthorized = (req, keyFromQuery) => keyFromQuery !== null && safeEqual(keyFromQuery, token) || safeEqual(parseCookies(req.headers.cookie)[cookieName] ?? "", token);
|
|
84343
84399
|
const serveContent = (res, rest) => {
|
|
84400
|
+
if (rest.startsWith("runtime/")) {
|
|
84401
|
+
if (!runtimeDir) {
|
|
84402
|
+
send(res, 404, "Not found");
|
|
84403
|
+
return;
|
|
84404
|
+
}
|
|
84405
|
+
const relative2 = rest.slice("runtime/".length);
|
|
84406
|
+
const target2 = resolveInside(runtimeDir, relative2);
|
|
84407
|
+
if (!target2) {
|
|
84408
|
+
send(res, 403, "Forbidden");
|
|
84409
|
+
return;
|
|
84410
|
+
}
|
|
84411
|
+
sendFile(res, target2, { "Access-Control-Allow-Origin": "*", "Cache-Control": "public, max-age=3600" });
|
|
84412
|
+
return;
|
|
84413
|
+
}
|
|
84344
84414
|
const [type = "", id2 = "", ...parts] = rest.split("/");
|
|
84345
84415
|
const dir = resolveArtifactDir(root, type, id2);
|
|
84346
84416
|
if (!dir) {
|
|
@@ -84366,7 +84436,10 @@ async function startArtifactsServer(options) {
|
|
|
84366
84436
|
}
|
|
84367
84437
|
import_node_fs10.default.readFile(target, "utf8", (err, source) => {
|
|
84368
84438
|
if (err) send(res, 404, "Not found");
|
|
84369
|
-
else
|
|
84439
|
+
else {
|
|
84440
|
+
const uiRuntimeUrl = runtimeDir ? `${contentPrefix}runtime/ryugi-ui.js` : void 0;
|
|
84441
|
+
send(res, 200, injectRuntime(source, { uiRuntimeUrl }), { "Content-Type": "text/html; charset=utf-8", ...headers });
|
|
84442
|
+
}
|
|
84370
84443
|
});
|
|
84371
84444
|
};
|
|
84372
84445
|
const serveArtifactApi = (res, type, id2) => {
|
|
@@ -84514,8 +84587,10 @@ async function startArtifactsServer(options) {
|
|
|
84514
84587
|
signatures.set(`${ref.type}/${ref.id}`, artifactSignature(dir));
|
|
84515
84588
|
return writeState(ref, dir);
|
|
84516
84589
|
};
|
|
84590
|
+
const initialChanges = [];
|
|
84517
84591
|
for (const entry of listArtifacts(root).artifacts) {
|
|
84518
|
-
refreshState(entry, entry.dir);
|
|
84592
|
+
const payload = refreshState(entry, entry.dir);
|
|
84593
|
+
initialChanges.push({ ref: entry, payload, files: [] });
|
|
84519
84594
|
if (entry.type === "document") void documents.open(entry.id);
|
|
84520
84595
|
}
|
|
84521
84596
|
writeJsonAtomic(import_node_path10.default.join(stateDir, "server-info"), { type: "server-started", url, port, root });
|
|
@@ -84558,7 +84633,10 @@ async function startArtifactsServer(options) {
|
|
|
84558
84633
|
url,
|
|
84559
84634
|
linkFor,
|
|
84560
84635
|
clientCount: () => clients.size,
|
|
84561
|
-
onArtifactChange: (listener) =>
|
|
84636
|
+
onArtifactChange: (listener) => {
|
|
84637
|
+
changeListeners.push(listener);
|
|
84638
|
+
for (const change of initialChanges) listener(change.ref, change.payload, change.files);
|
|
84639
|
+
},
|
|
84562
84640
|
onActivity: (listener) => activityListeners.push(listener),
|
|
84563
84641
|
close: () => new Promise((resolve) => {
|
|
84564
84642
|
watcher.close();
|
|
@@ -84591,8 +84669,9 @@ function parseEnv(env, argv = []) {
|
|
|
84591
84669
|
urlHost,
|
|
84592
84670
|
idleTimeoutMs: positive(env.ARTIFACTS_IDLE_TIMEOUT_MS, DEFAULT_IDLE_TIMEOUT_MS),
|
|
84593
84671
|
lifecycleCheckMs: positive(env.ARTIFACTS_LIFECYCLE_CHECK_MS, DEFAULT_LIFECYCLE_CHECK_MS),
|
|
84594
|
-
open: env.ARTIFACTS_OPEN
|
|
84672
|
+
open: env.ARTIFACTS_OPEN !== "0",
|
|
84595
84673
|
openCmd: env.ARTIFACTS_OPEN_CMD || null,
|
|
84674
|
+
openArtifact: env.ARTIFACTS_OPEN_ARTIFACT || null,
|
|
84596
84675
|
serverId: serverIdArg ? serverIdArg.slice(SERVER_ID_ARG.length) : null
|
|
84597
84676
|
};
|
|
84598
84677
|
}
|
|
@@ -84627,6 +84706,39 @@ function processAlive(pid) {
|
|
|
84627
84706
|
}
|
|
84628
84707
|
}
|
|
84629
84708
|
|
|
84709
|
+
// src/server/ready.ts
|
|
84710
|
+
var pageOfGroup = (canvas, ids) => ids.map((id2) => canvas.boards[id2]?.page).find((page) => Boolean(page));
|
|
84711
|
+
function openReady(payload) {
|
|
84712
|
+
const canvas = payload.canvas;
|
|
84713
|
+
if (!canvas || payload.warnings.length > 0) return false;
|
|
84714
|
+
const boards = Object.entries(canvas.boards);
|
|
84715
|
+
if (boards.length === 0) return false;
|
|
84716
|
+
const pending = new Set(payload.pending);
|
|
84717
|
+
const ready = (id2) => {
|
|
84718
|
+
const board = canvas.boards[id2];
|
|
84719
|
+
if (!board) return false;
|
|
84720
|
+
return (payload.versions[board.file] ?? 0) > 0 && !pending.has(id2);
|
|
84721
|
+
};
|
|
84722
|
+
if (boards.every(([id2]) => ready(id2))) return true;
|
|
84723
|
+
const focus = canvas.focus?.target;
|
|
84724
|
+
const focusBoard = focus && canvas.boards[focus] ? focus : void 0;
|
|
84725
|
+
const focusGroupId = focus ? canvas.groups?.[focus] ? focus : focusBoard ? Object.entries(canvas.groups ?? {}).find(([, group]) => group.boards.includes(focusBoard))?.[0] : void 0 : void 0;
|
|
84726
|
+
const focusGroup = focusGroupId ? canvas.groups?.[focusGroupId] : void 0;
|
|
84727
|
+
if (focusGroup && focusGroup.boards.length > 0) return focusGroup.boards.every(ready);
|
|
84728
|
+
const targetPage = (focusBoard ? canvas.boards[focusBoard].page : void 0) ?? (focusGroup ? pageOfGroup(canvas, focusGroup.boards) : void 0) ?? canvas.activePage ?? canvas.pages[0]?.id;
|
|
84729
|
+
if (!targetPage) return false;
|
|
84730
|
+
const groups = Object.entries(canvas.groups ?? {}).filter(
|
|
84731
|
+
([, group]) => group.boards.some((id2) => canvas.boards[id2]?.page === targetPage)
|
|
84732
|
+
);
|
|
84733
|
+
for (const [, group] of groups) {
|
|
84734
|
+
if (group.boards.length > 0 && group.boards.every(ready)) return true;
|
|
84735
|
+
}
|
|
84736
|
+
if (groups.length > 0) return false;
|
|
84737
|
+
const pageBoards = boards.filter(([, board]) => board.page === targetPage);
|
|
84738
|
+
if (pageBoards.length === 1) return ready(pageBoards[0][0]);
|
|
84739
|
+
return pageBoards.filter(([id2]) => ready(id2)).length >= 2;
|
|
84740
|
+
}
|
|
84741
|
+
|
|
84630
84742
|
// src/server/main.ts
|
|
84631
84743
|
async function main() {
|
|
84632
84744
|
const config = parseEnv(process.env, process.argv.slice(2));
|
|
@@ -84635,6 +84747,7 @@ async function main() {
|
|
|
84635
84747
|
const server = await startArtifactsServer({
|
|
84636
84748
|
root,
|
|
84637
84749
|
viewerDir: import_node_path11.default.join(__dirname, "viewer"),
|
|
84750
|
+
runtimeDir: import_node_path11.default.join(__dirname, "runtime"),
|
|
84638
84751
|
host: config.host,
|
|
84639
84752
|
urlHost: config.urlHost
|
|
84640
84753
|
});
|
|
@@ -84645,8 +84758,8 @@ async function main() {
|
|
|
84645
84758
|
let browserOpened = false;
|
|
84646
84759
|
server.onArtifactChange((ref, payload) => {
|
|
84647
84760
|
if (browserOpened || !config.open || !isLoopback(config.host)) return;
|
|
84648
|
-
if (
|
|
84649
|
-
if ("
|
|
84761
|
+
if (config.openArtifact && `${ref.type}/${ref.id}` !== config.openArtifact) return;
|
|
84762
|
+
if ("canvas" in payload ? !openReady(payload) : payload.warnings.length > 0) return;
|
|
84650
84763
|
browserOpened = true;
|
|
84651
84764
|
if (server.clientCount() > 0) return;
|
|
84652
84765
|
const link = server.linkFor(ref.type, ref.id);
|