@graphty/graph-io 0.3.48 → 0.3.50
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/chunks/{approximations-C2riR4NT.js → approximations-BRXsll0T.js} +2 -2
- package/dist/chunks/{approximations-C2riR4NT.js.map → approximations-BRXsll0T.js.map} +1 -1
- package/dist/chunks/bends-BGXjv_U4.js +129 -0
- package/dist/chunks/bends-BGXjv_U4.js.map +1 -0
- package/dist/chunks/{block-Cu22ewuS.js → block-yl0f_qLO.js} +931 -164
- package/dist/chunks/block-yl0f_qLO.js.map +1 -0
- package/dist/chunks/choose-CczZJaX_.js +717 -0
- package/dist/chunks/choose-CczZJaX_.js.map +1 -0
- package/dist/chunks/{codes-CV_Bhcyi.js → codes-BE2xir2k.js} +6 -2
- package/dist/chunks/codes-BE2xir2k.js.map +1 -0
- package/dist/chunks/{constants-D0LqcsLJ.js → constants-CKkYLPtt.js} +2 -2
- package/dist/chunks/{constants-D0LqcsLJ.js.map → constants-CKkYLPtt.js.map} +1 -1
- package/dist/chunks/{context-cgmmOxZ2.js → context-DizmppHy.js} +5 -4
- package/dist/chunks/{context-cgmmOxZ2.js.map → context-DizmppHy.js.map} +1 -1
- package/dist/chunks/{convert-BcQ8_jMo.js → convert-Ct2zelbQ.js} +7 -2
- package/dist/chunks/convert-Ct2zelbQ.js.map +1 -0
- package/dist/chunks/{credentials-BiQsnMTb.js → credentials-CmvJXYeH.js} +67 -16
- package/dist/chunks/credentials-CmvJXYeH.js.map +1 -0
- package/dist/chunks/{cx-export-BEeF6ymo.js → cx-export-Bt6NoqTQ.js} +3 -3
- package/dist/chunks/{cx-export-BEeF6ymo.js.map → cx-export-Bt6NoqTQ.js.map} +1 -1
- package/dist/chunks/descriptor-B28U25x4.js +60 -0
- package/dist/chunks/descriptor-B28U25x4.js.map +1 -0
- package/dist/chunks/{descriptor-BJ-W0Jd-.js → descriptor-Dhez_Cew.js} +11 -2
- package/dist/chunks/descriptor-Dhez_Cew.js.map +1 -0
- package/dist/chunks/{emit-CD8xnY8s.js → emit-7Jkpg0yd.js} +1788 -133
- package/dist/chunks/emit-7Jkpg0yd.js.map +1 -0
- package/dist/chunks/{escape-DH2Egt-l.js → escape-CuCIzNMB.js} +8 -8
- package/dist/chunks/{escape-DH2Egt-l.js.map → escape-CuCIzNMB.js.map} +1 -1
- package/dist/chunks/{export-CZ7VRm4I.js → export-Cha4dRFz.js} +45 -387
- package/dist/chunks/export-Cha4dRFz.js.map +1 -0
- package/dist/chunks/{exporter-ChjL5fmP.js → exporter-1Ajud15J.js} +9 -8
- package/dist/chunks/{exporter-ChjL5fmP.js.map → exporter-1Ajud15J.js.map} +1 -1
- package/dist/chunks/{exporter-BIdaoIgh.js → exporter-B6yvL3wy.js} +7 -7
- package/dist/chunks/{exporter-BIdaoIgh.js.map → exporter-B6yvL3wy.js.map} +1 -1
- package/dist/chunks/{exporter-Dcw7Ldtq.js → exporter-BP6otMO6.js} +6 -6
- package/dist/chunks/{exporter-Dcw7Ldtq.js.map → exporter-BP6otMO6.js.map} +1 -1
- package/dist/chunks/{exporter-DtVU80Fa.js → exporter-CA5q8ROP.js} +9 -8
- package/dist/chunks/{exporter-DtVU80Fa.js.map → exporter-CA5q8ROP.js.map} +1 -1
- package/dist/chunks/{exporter-bxxjOrDZ.js → exporter-CQQZFJ2v.js} +1284 -156
- package/dist/chunks/exporter-CQQZFJ2v.js.map +1 -0
- package/dist/chunks/format-BXiAb-1h.js +408 -0
- package/dist/chunks/format-BXiAb-1h.js.map +1 -0
- package/dist/chunks/{generic-CP6YD34u.js → generic-Dc21MAdg.js} +387 -31
- package/dist/chunks/generic-Dc21MAdg.js.map +1 -0
- package/dist/chunks/{importer-B87_fmVx.js → importer-C6NVpCXp.js} +327 -84
- package/dist/chunks/importer-C6NVpCXp.js.map +1 -0
- package/dist/chunks/{importer-DPZDN40-.js → importer-CKFe4q54.js} +25 -17
- package/dist/chunks/importer-CKFe4q54.js.map +1 -0
- package/dist/chunks/{importer-Bji2MeWr.js → importer-CKbUbsJA.js} +13 -10
- package/dist/chunks/{importer-Bji2MeWr.js.map → importer-CKbUbsJA.js.map} +1 -1
- package/dist/chunks/{importer-CB_zV5_L.js → importer-ClCsdgTJ.js} +208 -1104
- package/dist/chunks/importer-ClCsdgTJ.js.map +1 -0
- package/dist/chunks/{importer-e3huMZbm.js → importer-CyVZTrf0.js} +14 -10
- package/dist/chunks/importer-CyVZTrf0.js.map +1 -0
- package/dist/chunks/{importer-CVT-JyDE.js → importer-DgG4v1Ms.js} +1537 -355
- package/dist/chunks/importer-DgG4v1Ms.js.map +1 -0
- package/dist/chunks/{importer-Cyy6UseH.js → importer-asFUrIsj.js} +66 -13
- package/dist/chunks/importer-asFUrIsj.js.map +1 -0
- package/dist/chunks/{input-Ccg9I22A.js → input-CAxt_aV-.js} +4 -4
- package/dist/chunks/{input-Ccg9I22A.js.map → input-CAxt_aV-.js.map} +1 -1
- package/dist/chunks/{json-elements-By172SVq.js → json-elements-Cq76WjnZ.js} +4 -4
- package/dist/chunks/{json-elements-By172SVq.js.map → json-elements-Cq76WjnZ.js.map} +1 -1
- package/dist/chunks/{lexicon-u2SI5xcx.js → lexicon-IVRq2Uoo.js} +282 -74
- package/dist/chunks/lexicon-IVRq2Uoo.js.map +1 -0
- package/dist/chunks/{ontology-export-BwgMyuF0.js → ontology-export-OMo91mb0.js} +4 -4
- package/dist/chunks/{ontology-export-BwgMyuF0.js.map → ontology-export-OMo91mb0.js.map} +1 -1
- package/dist/chunks/{records-Cgvxz-Vx.js → records-NJiYvekn.js} +2 -2
- package/dist/chunks/{records-Cgvxz-Vx.js.map → records-NJiYvekn.js.map} +1 -1
- package/dist/chunks/{report-CgdsL9Hb.js → report-CwMfYa9J.js} +23 -23
- package/dist/chunks/{report-CgdsL9Hb.js.map → report-CwMfYa9J.js.map} +1 -1
- package/dist/chunks/round-trip-Cy3_SHRZ.js +79 -0
- package/dist/chunks/round-trip-Cy3_SHRZ.js.map +1 -0
- package/dist/chunks/{sigv4-LkAzsLAu.js → sigv4-BXwVbza3.js} +5 -5
- package/dist/chunks/sigv4-BXwVbza3.js.map +1 -0
- package/dist/chunks/{styles-CaABMoO1.js → styles-CAVmBLgp.js} +1237 -138
- package/dist/chunks/styles-CAVmBLgp.js.map +1 -0
- package/dist/chunks/styles-CPczw1Jz.js +1928 -0
- package/dist/chunks/styles-CPczw1Jz.js.map +1 -0
- package/dist/chunks/styles-boK6Ln54.js +2847 -0
- package/dist/chunks/styles-boK6Ln54.js.map +1 -0
- package/dist/chunks/{styles-yed-Cs1nmrjn.js → styles-yed-XeFBQ6VS.js} +506 -175
- package/dist/chunks/styles-yed-XeFBQ6VS.js.map +1 -0
- package/dist/chunks/{text-BuKQVMz2.js → text-ystE2bYi.js} +2 -2
- package/dist/chunks/{text-BuKQVMz2.js.map → text-ystE2bYi.js.map} +1 -1
- package/dist/csv.js +7 -7
- package/dist/cx.js +2 -2
- package/dist/cx2.js +2 -2
- package/dist/cys.js +1 -1
- package/dist/dot.js +8 -4
- package/dist/dot.js.map +1 -1
- package/dist/gexf.js +42 -12
- package/dist/gexf.js.map +1 -1
- package/dist/gml.js +848 -194
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +230 -193
- package/dist/graph-io.js.map +1 -1
- package/dist/graphml.js +3 -3
- package/dist/json.js +3 -2
- package/dist/neo4j.js +6 -6
- package/dist/obo.js +1 -1
- package/dist/pajek.js +1 -1
- package/dist/positions.js +45 -3
- package/dist/positions.js.map +1 -1
- package/dist/sources-cypher.js +141 -23
- package/dist/sources-cypher.js.map +1 -1
- package/dist/sources-ndex.js +2 -2
- package/dist/sources-rest.js +32 -6
- package/dist/sources-rest.js.map +1 -1
- package/dist/sources-sparql.d.ts +1 -0
- package/dist/sources-sparql.js +439 -0
- package/dist/sources-sparql.js.map +1 -0
- package/dist/src/formats/cx/importer.d.ts.map +1 -1
- package/dist/src/formats/cx/importer.js +5 -1
- package/dist/src/formats/cx/importer.js.map +1 -1
- package/dist/src/formats/cx/styles.d.ts +24 -1
- package/dist/src/formats/cx/styles.d.ts.map +1 -1
- package/dist/src/formats/cx/styles.js +117 -11
- package/dist/src/formats/cx/styles.js.map +1 -1
- package/dist/src/formats/cx2/importer.d.ts.map +1 -1
- package/dist/src/formats/cx2/importer.js +1 -0
- package/dist/src/formats/cx2/importer.js.map +1 -1
- package/dist/src/formats/cx2/styles.d.ts.map +1 -1
- package/dist/src/formats/cx2/styles.js +3 -1
- package/dist/src/formats/cx2/styles.js.map +1 -1
- package/dist/src/formats/cys/importer.d.ts.map +1 -1
- package/dist/src/formats/cys/importer.js +1 -0
- package/dist/src/formats/cys/importer.js.map +1 -1
- package/dist/src/formats/cys/styles.d.ts +2 -0
- package/dist/src/formats/cys/styles.d.ts.map +1 -1
- package/dist/src/formats/cys/styles.js +15 -7
- package/dist/src/formats/cys/styles.js.map +1 -1
- package/dist/src/formats/dot/drawing.d.ts +98 -0
- package/dist/src/formats/dot/drawing.d.ts.map +1 -0
- package/dist/src/formats/dot/drawing.js +734 -0
- package/dist/src/formats/dot/drawing.js.map +1 -0
- package/dist/src/formats/dot/exporter.d.ts.map +1 -1
- package/dist/src/formats/dot/exporter.js +34 -2
- package/dist/src/formats/dot/exporter.js.map +1 -1
- package/dist/src/formats/dot/importer.d.ts +6 -1
- package/dist/src/formats/dot/importer.d.ts.map +1 -1
- package/dist/src/formats/dot/importer.js +170 -33
- package/dist/src/formats/dot/importer.js.map +1 -1
- package/dist/src/formats/dot/index.d.ts +3 -1
- package/dist/src/formats/dot/index.d.ts.map +1 -1
- package/dist/src/formats/dot/index.js +2 -1
- package/dist/src/formats/dot/index.js.map +1 -1
- package/dist/src/formats/dot/label-places.d.ts +41 -0
- package/dist/src/formats/dot/label-places.d.ts.map +1 -0
- package/dist/src/formats/dot/label-places.js +185 -0
- package/dist/src/formats/dot/label-places.js.map +1 -0
- package/dist/src/formats/dot/names.d.ts +13 -0
- package/dist/src/formats/dot/names.d.ts.map +1 -1
- package/dist/src/formats/dot/names.js +13 -0
- package/dist/src/formats/dot/names.js.map +1 -1
- package/dist/src/formats/dot/record.d.ts +50 -0
- package/dist/src/formats/dot/record.d.ts.map +1 -0
- package/dist/src/formats/dot/record.js +275 -0
- package/dist/src/formats/dot/record.js.map +1 -0
- package/dist/src/formats/dot/styles.d.ts +72 -2
- package/dist/src/formats/dot/styles.d.ts.map +1 -1
- package/dist/src/formats/dot/styles.js +1500 -119
- package/dist/src/formats/dot/styles.js.map +1 -1
- package/dist/src/formats/gexf/dialog-metrics.d.ts +15 -0
- package/dist/src/formats/gexf/dialog-metrics.d.ts.map +1 -0
- package/dist/src/formats/gexf/dialog-metrics.js +59 -0
- package/dist/src/formats/gexf/dialog-metrics.js.map +1 -0
- package/dist/src/formats/gexf/importer.d.ts +7 -0
- package/dist/src/formats/gexf/importer.d.ts.map +1 -1
- package/dist/src/formats/gexf/importer.js +41 -5
- package/dist/src/formats/gexf/importer.js.map +1 -1
- package/dist/src/formats/gexf/preview.d.ts +77 -0
- package/dist/src/formats/gexf/preview.d.ts.map +1 -0
- package/dist/src/formats/gexf/preview.js +191 -0
- package/dist/src/formats/gexf/preview.js.map +1 -0
- package/dist/src/formats/gexf/schema.d.ts.map +1 -1
- package/dist/src/formats/gexf/schema.js +2 -1
- package/dist/src/formats/gexf/schema.js.map +1 -1
- package/dist/src/formats/gexf/styles.d.ts +58 -31
- package/dist/src/formats/gexf/styles.d.ts.map +1 -1
- package/dist/src/formats/gexf/styles.js +848 -225
- package/dist/src/formats/gexf/styles.js.map +1 -1
- package/dist/src/formats/gml/importer.d.ts +5 -2
- package/dist/src/formats/gml/importer.d.ts.map +1 -1
- package/dist/src/formats/gml/importer.js +258 -71
- package/dist/src/formats/gml/importer.js.map +1 -1
- package/dist/src/formats/gml/index.d.ts +1 -1
- package/dist/src/formats/gml/index.d.ts.map +1 -1
- package/dist/src/formats/gml/index.js +1 -1
- package/dist/src/formats/gml/index.js.map +1 -1
- package/dist/src/formats/gml/positions.d.ts +7 -0
- package/dist/src/formats/gml/positions.d.ts.map +1 -1
- package/dist/src/formats/gml/positions.js +29 -7
- package/dist/src/formats/gml/positions.js.map +1 -1
- package/dist/src/formats/gml/styles.d.ts.map +1 -1
- package/dist/src/formats/gml/styles.js +754 -102
- package/dist/src/formats/gml/styles.js.map +1 -1
- package/dist/src/formats/graphml/styles-plain.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-plain.js +6 -10
- package/dist/src/formats/graphml/styles-plain.js.map +1 -1
- package/dist/src/formats/graphml/styles-yed.d.ts +21 -15
- package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-yed.js +695 -164
- package/dist/src/formats/graphml/styles-yed.js.map +1 -1
- package/dist/src/formats/graphml/styles-yfiles3.d.ts +1 -1
- package/dist/src/formats/graphml/styles-yfiles3.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-yfiles3.js +431 -64
- package/dist/src/formats/graphml/styles-yfiles3.js.map +1 -1
- package/dist/src/formats/graphml/yfiles.d.ts +3 -3
- package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
- package/dist/src/formats/graphml/yfiles.js +16 -6
- package/dist/src/formats/graphml/yfiles.js.map +1 -1
- package/dist/src/formats/json/dialect.d.ts +3 -2
- package/dist/src/formats/json/dialect.d.ts.map +1 -1
- package/dist/src/formats/json/dialect.js +39 -5
- package/dist/src/formats/json/dialect.js.map +1 -1
- package/dist/src/formats/json/importer.d.ts +13 -2
- package/dist/src/formats/json/importer.d.ts.map +1 -1
- package/dist/src/formats/json/importer.js +42 -6
- package/dist/src/formats/json/importer.js.map +1 -1
- package/dist/src/formats/json/index.d.ts +1 -1
- package/dist/src/formats/json/index.d.ts.map +1 -1
- package/dist/src/formats/json/index.js +1 -1
- package/dist/src/formats/json/index.js.map +1 -1
- package/dist/src/formats/json/positions.d.ts +5 -2
- package/dist/src/formats/json/positions.d.ts.map +1 -1
- package/dist/src/formats/json/positions.js +20 -4
- package/dist/src/formats/json/positions.js.map +1 -1
- package/dist/src/formats/json/styles.d.ts +12 -1
- package/dist/src/formats/json/styles.d.ts.map +1 -1
- package/dist/src/formats/json/styles.js +1843 -136
- package/dist/src/formats/json/styles.js.map +1 -1
- package/dist/src/formats/pajek/draw.d.ts +104 -0
- package/dist/src/formats/pajek/draw.d.ts.map +1 -0
- package/dist/src/formats/pajek/draw.js +382 -0
- package/dist/src/formats/pajek/draw.js.map +1 -0
- package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
- package/dist/src/formats/pajek/exporter.js +70 -51
- package/dist/src/formats/pajek/exporter.js.map +1 -1
- package/dist/src/formats/pajek/importer.d.ts +9 -0
- package/dist/src/formats/pajek/importer.d.ts.map +1 -1
- package/dist/src/formats/pajek/importer.js +233 -102
- package/dist/src/formats/pajek/importer.js.map +1 -1
- package/dist/src/formats/pajek/index.d.ts +1 -0
- package/dist/src/formats/pajek/index.d.ts.map +1 -1
- package/dist/src/formats/pajek/index.js.map +1 -1
- package/dist/src/formats/pajek/styles.d.ts +15 -7
- package/dist/src/formats/pajek/styles.d.ts.map +1 -1
- package/dist/src/formats/pajek/styles.js +1395 -114
- package/dist/src/formats/pajek/styles.js.map +1 -1
- package/dist/src/formats/pajek/syntax.d.ts +10 -1
- package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
- package/dist/src/formats/pajek/syntax.js +26 -2
- package/dist/src/formats/pajek/syntax.js.map +1 -1
- package/dist/src/formats/xgmml/emit.d.ts +1 -0
- package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
- package/dist/src/formats/xgmml/emit.js +65 -5
- package/dist/src/formats/xgmml/emit.js.map +1 -1
- package/dist/src/formats/xgmml/styles.d.ts +23 -3
- package/dist/src/formats/xgmml/styles.d.ts.map +1 -1
- package/dist/src/formats/xgmml/styles.js +277 -60
- package/dist/src/formats/xgmml/styles.js.map +1 -1
- package/dist/src/index.d.ts +6 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/positions/convert.d.ts.map +1 -1
- package/dist/src/positions/convert.js +11 -1
- package/dist/src/positions/convert.js.map +1 -1
- package/dist/src/positions/extract.d.ts.map +1 -1
- package/dist/src/positions/extract.js +53 -1
- package/dist/src/positions/extract.js.map +1 -1
- package/dist/src/positions/index.d.ts +1 -1
- package/dist/src/positions/index.d.ts.map +1 -1
- package/dist/src/positions/types.d.ts +59 -0
- package/dist/src/positions/types.d.ts.map +1 -1
- package/dist/src/sources/builtins.d.ts +1 -1
- package/dist/src/sources/builtins.d.ts.map +1 -1
- package/dist/src/sources/builtins.js +8 -2
- package/dist/src/sources/builtins.js.map +1 -1
- package/dist/src/sources/context.d.ts.map +1 -1
- package/dist/src/sources/context.js +1 -0
- package/dist/src/sources/context.js.map +1 -1
- package/dist/src/sources/credentials.d.ts +50 -1
- package/dist/src/sources/credentials.d.ts.map +1 -1
- package/dist/src/sources/credentials.js +69 -0
- package/dist/src/sources/credentials.js.map +1 -1
- package/dist/src/sources/cypher/descriptor.d.ts.map +1 -1
- package/dist/src/sources/cypher/descriptor.js +5 -0
- package/dist/src/sources/cypher/descriptor.js.map +1 -1
- package/dist/src/sources/cypher/index.d.ts.map +1 -1
- package/dist/src/sources/cypher/index.js +125 -18
- package/dist/src/sources/cypher/index.js.map +1 -1
- package/dist/src/sources/cypher/params.d.ts +1 -1
- package/dist/src/sources/cypher/params.d.ts.map +1 -1
- package/dist/src/sources/cypher/query-builder.d.ts +17 -0
- package/dist/src/sources/cypher/query-builder.d.ts.map +1 -1
- package/dist/src/sources/cypher/query-builder.js +31 -0
- package/dist/src/sources/cypher/query-builder.js.map +1 -1
- package/dist/src/sources/ids.d.ts +5 -0
- package/dist/src/sources/ids.d.ts.map +1 -1
- package/dist/src/sources/ids.js +5 -0
- package/dist/src/sources/ids.js.map +1 -1
- package/dist/src/sources/params.d.ts +3 -0
- package/dist/src/sources/params.d.ts.map +1 -1
- package/dist/src/sources/rest/descriptor.d.ts.map +1 -1
- package/dist/src/sources/rest/descriptor.js +9 -0
- package/dist/src/sources/rest/descriptor.js.map +1 -1
- package/dist/src/sources/rest/openalex.d.ts +4 -2
- package/dist/src/sources/rest/openalex.d.ts.map +1 -1
- package/dist/src/sources/rest/openalex.js +4 -2
- package/dist/src/sources/rest/openalex.js.map +1 -1
- package/dist/src/sources/rest/source.d.ts.map +1 -1
- package/dist/src/sources/rest/source.js +38 -0
- package/dist/src/sources/rest/source.js.map +1 -1
- package/dist/src/sources/run.d.ts +2 -0
- package/dist/src/sources/run.d.ts.map +1 -1
- package/dist/src/sources/run.js +30 -3
- package/dist/src/sources/run.js.map +1 -1
- package/dist/src/sources/sigv4.d.ts +5 -3
- package/dist/src/sources/sigv4.d.ts.map +1 -1
- package/dist/src/sources/sigv4.js +6 -4
- package/dist/src/sources/sigv4.js.map +1 -1
- package/dist/src/sources/sparql/descriptor.d.ts +10 -0
- package/dist/src/sources/sparql/descriptor.d.ts.map +1 -0
- package/dist/src/sources/sparql/descriptor.js +64 -0
- package/dist/src/sources/sparql/descriptor.js.map +1 -0
- package/dist/src/sources/sparql/index.d.ts +28 -0
- package/dist/src/sources/sparql/index.d.ts.map +1 -0
- package/dist/src/sources/sparql/index.js +327 -0
- package/dist/src/sources/sparql/index.js.map +1 -0
- package/dist/src/sources/sparql/ntriples.d.ts +69 -0
- package/dist/src/sources/sparql/ntriples.d.ts.map +1 -0
- package/dist/src/sources/sparql/ntriples.js +180 -0
- package/dist/src/sources/sparql/ntriples.js.map +1 -0
- package/dist/src/sources/sparql/params.d.ts +27 -0
- package/dist/src/sources/sparql/params.d.ts.map +1 -0
- package/dist/src/sources/sparql/params.js +5 -0
- package/dist/src/sources/sparql/params.js.map +1 -0
- package/dist/src/sources/sparql/query.d.ts +73 -0
- package/dist/src/sources/sparql/query.d.ts.map +1 -0
- package/dist/src/sources/sparql/query.js +164 -0
- package/dist/src/sources/sparql/query.js.map +1 -0
- package/dist/src/sources/types.d.ts +60 -0
- package/dist/src/sources/types.d.ts.map +1 -1
- package/dist/src/styles/annotations.d.ts +61 -5
- package/dist/src/styles/annotations.d.ts.map +1 -1
- package/dist/src/styles/annotations.js +130 -22
- package/dist/src/styles/annotations.js.map +1 -1
- package/dist/src/styles/canon/bends.d.ts +46 -0
- package/dist/src/styles/canon/bends.d.ts.map +1 -1
- package/dist/src/styles/canon/bends.js +123 -0
- package/dist/src/styles/canon/bends.js.map +1 -1
- package/dist/src/styles/canon/color-tables.d.ts +6 -1
- package/dist/src/styles/canon/color-tables.d.ts.map +1 -1
- package/dist/src/styles/canon/color-tables.js +10 -4
- package/dist/src/styles/canon/color-tables.js.map +1 -1
- package/dist/src/styles/canon/color.d.ts +3 -1
- package/dist/src/styles/canon/color.d.ts.map +1 -1
- package/dist/src/styles/canon/color.js +103 -3
- package/dist/src/styles/canon/color.js.map +1 -1
- package/dist/src/styles/canon/enums.d.ts +2 -2
- package/dist/src/styles/canon/enums.d.ts.map +1 -1
- package/dist/src/styles/canon/enums.js +89 -7
- package/dist/src/styles/canon/enums.js.map +1 -1
- package/dist/src/styles/canon/graphviz.d.ts +12 -3
- package/dist/src/styles/canon/graphviz.d.ts.map +1 -1
- package/dist/src/styles/canon/graphviz.js +57 -9
- package/dist/src/styles/canon/graphviz.js.map +1 -1
- package/dist/src/styles/canon/number.d.ts +8 -0
- package/dist/src/styles/canon/number.d.ts.map +1 -1
- package/dist/src/styles/canon/number.js +18 -0
- package/dist/src/styles/canon/number.js.map +1 -1
- package/dist/src/styles/canon/text.d.ts +29 -2
- package/dist/src/styles/canon/text.d.ts.map +1 -1
- package/dist/src/styles/canon/text.js +156 -16
- package/dist/src/styles/canon/text.js.map +1 -1
- package/dist/src/styles/codes.d.ts +2 -0
- package/dist/src/styles/codes.d.ts.map +1 -1
- package/dist/src/styles/codes.js +2 -0
- package/dist/src/styles/codes.js.map +1 -1
- package/dist/src/styles/cyjs/cascade.d.ts.map +1 -1
- package/dist/src/styles/cyjs/cascade.js +1139 -79
- package/dist/src/styles/cyjs/cascade.js.map +1 -1
- package/dist/src/styles/cyjs/defaults-table.d.ts.map +1 -1
- package/dist/src/styles/cyjs/defaults-table.js +4 -0
- package/dist/src/styles/cyjs/defaults-table.js.map +1 -1
- package/dist/src/styles/cyjs/emit.d.ts.map +1 -1
- package/dist/src/styles/cyjs/emit.js +232 -10
- package/dist/src/styles/cyjs/emit.js.map +1 -1
- package/dist/src/styles/cyjs/face.d.ts +20 -0
- package/dist/src/styles/cyjs/face.d.ts.map +1 -0
- package/dist/src/styles/cyjs/face.js +332 -0
- package/dist/src/styles/cyjs/face.js.map +1 -0
- package/dist/src/styles/cyjs/mappers.d.ts +44 -1
- package/dist/src/styles/cyjs/mappers.d.ts.map +1 -1
- package/dist/src/styles/cyjs/mappers.js +475 -26
- package/dist/src/styles/cyjs/mappers.js.map +1 -1
- package/dist/src/styles/cyjs/routes.d.ts +53 -0
- package/dist/src/styles/cyjs/routes.d.ts.map +1 -0
- package/dist/src/styles/cyjs/routes.js +360 -0
- package/dist/src/styles/cyjs/routes.js.map +1 -0
- package/dist/src/styles/cytoscape/charts.d.ts +23 -0
- package/dist/src/styles/cytoscape/charts.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/charts.js +560 -0
- package/dist/src/styles/cytoscape/charts.js.map +1 -0
- package/dist/src/styles/cytoscape/emit.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/emit.js +156 -48
- package/dist/src/styles/cytoscape/emit.js.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.d.ts +91 -3
- package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.js +387 -77
- package/dist/src/styles/cytoscape/lexicon.js.map +1 -1
- package/dist/src/styles/cytoscape/mappings.d.ts +30 -0
- package/dist/src/styles/cytoscape/mappings.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/mappings.js +92 -0
- package/dist/src/styles/cytoscape/mappings.js.map +1 -1
- package/dist/src/styles/cytoscape/resolve.d.ts +42 -2
- package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/resolve.js +623 -17
- package/dist/src/styles/cytoscape/resolve.js.map +1 -1
- package/dist/src/styles/defaults.d.ts +46 -26
- package/dist/src/styles/defaults.d.ts.map +1 -1
- package/dist/src/styles/defaults.js +308 -71
- package/dist/src/styles/defaults.js.map +1 -1
- package/dist/src/styles/index.d.ts +4 -3
- package/dist/src/styles/index.d.ts.map +1 -1
- package/dist/src/styles/index.js +3 -2
- package/dist/src/styles/index.js.map +1 -1
- package/dist/src/styles/internal.d.ts +1 -0
- package/dist/src/styles/internal.d.ts.map +1 -1
- package/dist/src/styles/internal.js +1 -0
- package/dist/src/styles/internal.js.map +1 -1
- package/dist/src/styles/io/generic.d.ts.map +1 -1
- package/dist/src/styles/io/generic.js +56 -16
- package/dist/src/styles/io/generic.js.map +1 -1
- package/dist/src/styles/io/round-trip.d.ts +56 -0
- package/dist/src/styles/io/round-trip.d.ts.map +1 -0
- package/dist/src/styles/io/round-trip.js +138 -0
- package/dist/src/styles/io/round-trip.js.map +1 -0
- package/dist/src/styles/io/writer.d.ts.map +1 -1
- package/dist/src/styles/io/writer.js +6 -1
- package/dist/src/styles/io/writer.js.map +1 -1
- package/dist/src/styles/notes.d.ts.map +1 -1
- package/dist/src/styles/notes.js +1 -0
- package/dist/src/styles/notes.js.map +1 -1
- package/dist/src/styles/plan/features.d.ts +1 -1
- package/dist/src/styles/plan/features.d.ts.map +1 -1
- package/dist/src/styles/plan/features.js +22 -2
- package/dist/src/styles/plan/features.js.map +1 -1
- package/dist/src/styles/plan/index.d.ts +1 -1
- package/dist/src/styles/plan/index.d.ts.map +1 -1
- package/dist/src/styles/plan/index.js +1 -1
- package/dist/src/styles/plan/index.js.map +1 -1
- package/dist/src/styles/plan/plan.d.ts.map +1 -1
- package/dist/src/styles/plan/plan.js +61 -4
- package/dist/src/styles/plan/plan.js.map +1 -1
- package/dist/src/styles/plan/resolve.d.ts +11 -0
- package/dist/src/styles/plan/resolve.d.ts.map +1 -1
- package/dist/src/styles/plan/resolve.js +40 -4
- package/dist/src/styles/plan/resolve.js.map +1 -1
- package/dist/src/styles/slots.d.ts +14 -0
- package/dist/src/styles/slots.d.ts.map +1 -0
- package/dist/src/styles/slots.js +20 -0
- package/dist/src/styles/slots.js.map +1 -0
- package/dist/src/styles/types.d.ts +687 -6
- package/dist/src/styles/types.d.ts.map +1 -1
- package/dist/src/styles/vocabulary.d.ts +3 -2
- package/dist/src/styles/vocabulary.d.ts.map +1 -1
- package/dist/src/styles/vocabulary.js +224 -0
- package/dist/src/styles/vocabulary.js.map +1 -1
- package/dist/styles.js +30 -239
- package/dist/styles.js.map +1 -1
- package/dist/xgmml.js +3 -3
- package/package.json +27 -7
- package/src/formats/cx/importer.ts +6 -1
- package/src/formats/cx/styles.ts +143 -9
- package/src/formats/cx2/importer.ts +1 -0
- package/src/formats/cx2/styles.ts +3 -1
- package/src/formats/cys/importer.ts +1 -0
- package/src/formats/cys/styles.ts +27 -5
- package/src/formats/dot/drawing.ts +799 -0
- package/src/formats/dot/exporter.ts +37 -1
- package/src/formats/dot/importer.ts +192 -36
- package/src/formats/dot/index.ts +3 -1
- package/src/formats/dot/label-places.ts +241 -0
- package/src/formats/dot/names.ts +15 -0
- package/src/formats/dot/record.ts +336 -0
- package/src/formats/dot/styles.ts +1702 -149
- package/src/formats/gexf/dialog-metrics.ts +61 -0
- package/src/formats/gexf/importer.ts +50 -5
- package/src/formats/gexf/preview.ts +217 -0
- package/src/formats/gexf/schema.ts +2 -1
- package/src/formats/gexf/styles.ts +1099 -245
- package/src/formats/gml/importer.ts +291 -76
- package/src/formats/gml/index.ts +1 -1
- package/src/formats/gml/positions.ts +29 -7
- package/src/formats/gml/styles.ts +852 -110
- package/src/formats/graphml/styles-plain.ts +6 -15
- package/src/formats/graphml/styles-yed.ts +765 -176
- package/src/formats/graphml/styles-yfiles3.ts +487 -63
- package/src/formats/graphml/yfiles.ts +19 -6
- package/src/formats/json/dialect.ts +41 -5
- package/src/formats/json/importer.ts +59 -7
- package/src/formats/json/index.ts +1 -0
- package/src/formats/json/positions.ts +22 -5
- package/src/formats/json/styles.ts +2123 -171
- package/src/formats/pajek/draw.ts +469 -0
- package/src/formats/pajek/exporter.ts +81 -49
- package/src/formats/pajek/importer.ts +278 -103
- package/src/formats/pajek/index.ts +1 -0
- package/src/formats/pajek/styles.ts +1506 -133
- package/src/formats/pajek/syntax.ts +27 -2
- package/src/formats/xgmml/emit.ts +73 -5
- package/src/formats/xgmml/styles.ts +330 -71
- package/src/index.ts +12 -1
- package/src/positions/convert.ts +12 -1
- package/src/positions/extract.ts +55 -1
- package/src/positions/index.ts +1 -0
- package/src/positions/types.ts +60 -0
- package/src/sources/builtins.ts +8 -1
- package/src/sources/context.ts +1 -0
- package/src/sources/credentials.ts +90 -1
- package/src/sources/cypher/descriptor.ts +7 -1
- package/src/sources/cypher/index.ts +149 -18
- package/src/sources/cypher/params.ts +1 -1
- package/src/sources/cypher/query-builder.ts +33 -0
- package/src/sources/ids.ts +6 -0
- package/src/sources/params.ts +3 -0
- package/src/sources/rest/descriptor.ts +9 -0
- package/src/sources/rest/openalex.ts +4 -2
- package/src/sources/rest/source.ts +41 -0
- package/src/sources/run.ts +35 -3
- package/src/sources/sigv4.ts +6 -4
- package/src/sources/sparql/descriptor.ts +67 -0
- package/src/sources/sparql/index.ts +371 -0
- package/src/sources/sparql/ntriples.ts +219 -0
- package/src/sources/sparql/params.ts +28 -0
- package/src/sources/sparql/query.ts +216 -0
- package/src/sources/types.ts +68 -0
- package/src/styles/annotations.ts +201 -27
- package/src/styles/canon/bends.ts +137 -0
- package/src/styles/canon/color-tables.ts +10 -4
- package/src/styles/canon/color.ts +105 -3
- package/src/styles/canon/enums.ts +107 -8
- package/src/styles/canon/graphviz.ts +71 -10
- package/src/styles/canon/number.ts +19 -0
- package/src/styles/canon/text.ts +187 -16
- package/src/styles/codes.ts +2 -0
- package/src/styles/cyjs/cascade.ts +1303 -84
- package/src/styles/cyjs/defaults-table.ts +4 -0
- package/src/styles/cyjs/emit.ts +268 -14
- package/src/styles/cyjs/face.ts +372 -0
- package/src/styles/cyjs/mappers.ts +506 -27
- package/src/styles/cyjs/routes.ts +432 -0
- package/src/styles/cytoscape/charts.ts +684 -0
- package/src/styles/cytoscape/emit.ts +170 -48
- package/src/styles/cytoscape/lexicon.ts +431 -78
- package/src/styles/cytoscape/mappings.ts +108 -0
- package/src/styles/cytoscape/resolve.ts +741 -17
- package/src/styles/defaults.ts +417 -108
- package/src/styles/index.ts +5 -0
- package/src/styles/internal.ts +1 -0
- package/src/styles/io/generic.ts +79 -23
- package/src/styles/io/round-trip.ts +202 -0
- package/src/styles/io/writer.ts +6 -1
- package/src/styles/notes.ts +1 -0
- package/src/styles/plan/features.ts +23 -2
- package/src/styles/plan/index.ts +1 -1
- package/src/styles/plan/plan.ts +69 -5
- package/src/styles/plan/resolve.ts +47 -4
- package/src/styles/slots.ts +25 -0
- package/src/styles/types.ts +698 -5
- package/src/styles/vocabulary.ts +232 -2
- package/dist/chunks/block-Cu22ewuS.js.map +0 -1
- package/dist/chunks/choose-Cdx6Enl2.js +0 -57
- package/dist/chunks/choose-Cdx6Enl2.js.map +0 -1
- package/dist/chunks/codes-CV_Bhcyi.js.map +0 -1
- package/dist/chunks/convert-BcQ8_jMo.js.map +0 -1
- package/dist/chunks/credentials-BiQsnMTb.js.map +0 -1
- package/dist/chunks/descriptor-BJ-W0Jd-.js.map +0 -1
- package/dist/chunks/emit-CD8xnY8s.js.map +0 -1
- package/dist/chunks/export-CZ7VRm4I.js.map +0 -1
- package/dist/chunks/exporter-bxxjOrDZ.js.map +0 -1
- package/dist/chunks/format-BMS-1Nxb.js +0 -64
- package/dist/chunks/format-BMS-1Nxb.js.map +0 -1
- package/dist/chunks/generic-CP6YD34u.js.map +0 -1
- package/dist/chunks/importer-B87_fmVx.js.map +0 -1
- package/dist/chunks/importer-CB_zV5_L.js.map +0 -1
- package/dist/chunks/importer-CVT-JyDE.js.map +0 -1
- package/dist/chunks/importer-Cyy6UseH.js.map +0 -1
- package/dist/chunks/importer-DPZDN40-.js.map +0 -1
- package/dist/chunks/importer-e3huMZbm.js.map +0 -1
- package/dist/chunks/lexicon-u2SI5xcx.js.map +0 -1
- package/dist/chunks/sigv4-LkAzsLAu.js.map +0 -1
- package/dist/chunks/styles-CaABMoO1.js.map +0 -1
- package/dist/chunks/styles-P_gmFAOi.js +0 -770
- package/dist/chunks/styles-P_gmFAOi.js.map +0 -1
- package/dist/chunks/styles-yed-Cs1nmrjn.js.map +0 -1
- package/dist/chunks/writer-DvHTl36J.js +0 -449
- package/dist/chunks/writer-DvHTl36J.js.map +0 -1
package/src/styles/defaults.ts
CHANGED
|
@@ -49,38 +49,11 @@ export type ToolDerivedDefault =
|
|
|
49
49
|
readonly source: string;
|
|
50
50
|
}
|
|
51
51
|
| {
|
|
52
|
-
/**
|
|
53
|
-
* An edge with no color of its own takes the mean of its two nodes' colors, each channel rounded down
|
|
54
|
-
* (Gephi Preview's "mixed" edge color).
|
|
55
|
-
*/
|
|
52
|
+
/** An edge with no color of its own takes the mix of its two end nodes' colors (Gephi's EdgeColor MIXED). */
|
|
56
53
|
readonly kind: "colorFromEndNodes";
|
|
57
54
|
/** Where the default is stated. */
|
|
58
55
|
readonly source: string;
|
|
59
56
|
}
|
|
60
|
-
| {
|
|
61
|
-
/**
|
|
62
|
-
* A node with no border of its own gets a border of its fill with each channel times `darken`, `widthFactor`
|
|
63
|
-
* times its width wide (Gephi Preview's "darker" border, scaled with the node).
|
|
64
|
-
*/
|
|
65
|
-
readonly kind: "borderFromFill";
|
|
66
|
-
/** What each color channel of the fill is multiplied by. */
|
|
67
|
-
readonly darken: number;
|
|
68
|
-
/** The border's width as a share of the node's width. */
|
|
69
|
-
readonly widthFactor: number;
|
|
70
|
-
/** Where the default is stated. */
|
|
71
|
-
readonly source: string;
|
|
72
|
-
}
|
|
73
|
-
| {
|
|
74
|
-
/**
|
|
75
|
-
* A node with no label size of its own gets a label size of its width times `factor` (Gephi Preview's
|
|
76
|
-
* proportional label size).
|
|
77
|
-
*/
|
|
78
|
-
readonly kind: "labelSizeFromWidth";
|
|
79
|
-
/** The label size per unit of the node's width. */
|
|
80
|
-
readonly factor: number;
|
|
81
|
-
/** Where the default is stated. */
|
|
82
|
-
readonly source: string;
|
|
83
|
-
}
|
|
84
57
|
| {
|
|
85
58
|
/** An edge with no width of its own is drawn as thick as its weight (1 for an edge with no weight, or a weight of 0 or below). */
|
|
86
59
|
readonly kind: "widthFromWeight";
|
|
@@ -115,6 +88,59 @@ export interface ToolDefaults {
|
|
|
115
88
|
readonly graph: ToolDefaultValues<GraphStyleValues>;
|
|
116
89
|
/** Defaults that are rules, applied above the constants. */
|
|
117
90
|
readonly derived: readonly ToolDerivedDefault[];
|
|
91
|
+
/**
|
|
92
|
+
* The largest corner radius, in `units`, the program draws on a rounded rectangle whose file gives none. Not a
|
|
93
|
+
* node default: it only bounds the rounding of the shape the file names, so no rule carries it and no writer has
|
|
94
|
+
* to hold it.
|
|
95
|
+
*/
|
|
96
|
+
readonly roundedCornerRadius?: ToolDefaultValue<number>;
|
|
97
|
+
/**
|
|
98
|
+
* How big the program draws its filled triangle arrowhead, which it sizes from the line width and its own size
|
|
99
|
+
* setting rather than from the neutral `arrowSize` alone. Not an edge default: the size follows from two
|
|
100
|
+
* properties, so no rule carries it. Absent for a program whose arrowheads graph-io has not measured.
|
|
101
|
+
*/
|
|
102
|
+
readonly arrowhead?: ToolArrowhead;
|
|
103
|
+
/**
|
|
104
|
+
* Whether the program draws a node's `borderWidth` in screen pixels, the same at every zoom, rather than as a
|
|
105
|
+
* length that grows and shrinks with the drawing: vis-network divides it by its view's scale. Not a node default:
|
|
106
|
+
* it says how every node's border width is read, so no rule carries it. Absent, a border width is a length.
|
|
107
|
+
*/
|
|
108
|
+
readonly nodeBorderOnScreen?: ToolDefaultValue<boolean>;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* How a program sizes its filled triangle arrowhead, in its `units`.
|
|
113
|
+
* @category Styles
|
|
114
|
+
*/
|
|
115
|
+
export interface ToolArrowhead {
|
|
116
|
+
/**
|
|
117
|
+
* The arrowhead's length along its line.
|
|
118
|
+
* @param arrowSize - the edge's neutral `arrowSize` (1 is the program's normal size)
|
|
119
|
+
* @param width - the edge's line width
|
|
120
|
+
* @returns the length
|
|
121
|
+
*/
|
|
122
|
+
readonly length: (arrowSize: number, width: number) => number;
|
|
123
|
+
/** Its width across the line as a fraction of its length, which its diamond shares. */
|
|
124
|
+
readonly aspect: number;
|
|
125
|
+
/**
|
|
126
|
+
* Another arrow shape's length along its line as a fraction of the triangle's, and its width as a fraction of
|
|
127
|
+
* its own length, where they differ.
|
|
128
|
+
*/
|
|
129
|
+
readonly shapes?: Readonly<
|
|
130
|
+
Partial<
|
|
131
|
+
Record<
|
|
132
|
+
StyleArrowShape,
|
|
133
|
+
{
|
|
134
|
+
/** The shape's length along its line, as a fraction of the triangle's. */
|
|
135
|
+
readonly length: number;
|
|
136
|
+
/** Its width across the line as a fraction of its own length; unset, the triangle's. */
|
|
137
|
+
readonly aspect?: number;
|
|
138
|
+
}
|
|
139
|
+
>
|
|
140
|
+
>
|
|
141
|
+
>;
|
|
142
|
+
/** Where the rule is stated or measured. */
|
|
143
|
+
readonly source: string;
|
|
118
144
|
}
|
|
119
145
|
|
|
120
146
|
/**
|
|
@@ -129,6 +155,9 @@ function v<V>(value: V, source: string): ToolDefaultValue<V> {
|
|
|
129
155
|
|
|
130
156
|
const CY = "cytoscape-impl vizmap-gui-impl default_vizmap.xml, style default, line";
|
|
131
157
|
const CYL = "cytoscape-api BasicVisualLexicon.java line";
|
|
158
|
+
/** Cytoscape desktop's zigzag and sine-wave strokes: both swing 10 px and repeat every 20 px. */
|
|
159
|
+
const CY_WAVE =
|
|
160
|
+
"cytoscape-impl ding-presentation-impl 3.10.5 org.cytoscape.ding.impl.strokes: ZigzagStroke (amplitude 10, a turn every 10) and SineWaveStroke (amplitude 10, wavelength 20)";
|
|
132
161
|
const CYJS = "cytoscape.js 3.34.3 dist/cytoscape.cjs.js line";
|
|
133
162
|
const GV = "graphviz.org/docs/attrs";
|
|
134
163
|
const YED_QA = "yEd Q&A, How can I change the default nodes and/or default edges";
|
|
@@ -138,14 +167,86 @@ const YED_BG = "yFiles for Java 2.19 DefaultBackgroundRenderer API docs";
|
|
|
138
167
|
const Y3 = "yFiles for HTML API docs,";
|
|
139
168
|
const GEPHI = "gephi master 92e503df61a7";
|
|
140
169
|
const VIS = "vis-network 10.1.2 vis-network.esm.js";
|
|
170
|
+
const VIS9 = "vis-network 9.1.9 standalone/umd/vis-network.js";
|
|
141
171
|
const SIGMA = "sigma 3.0.3 packages/sigma/src";
|
|
142
|
-
const
|
|
172
|
+
const SIGMA4 = "sigma 4.0.1 dist/types-d8ce3382.esm.js";
|
|
143
173
|
const PAJEK = "Pajek 6.02 reference manual";
|
|
144
|
-
const PAJEK_SHAPES =
|
|
145
|
-
"the SHAPES.CFG Pajek writes when none exists (DrawEPS.htm), " +
|
|
146
|
-
"github.com/ohshane/radical-clustering 0f568f67893558035868b3db1bf365870ba52f6b shapes.cfg, SHAPE ELLIPSE";
|
|
147
174
|
const OGDF = "ogdf master 1a40505ac006";
|
|
175
|
+
const OGDF_SVG =
|
|
176
|
+
"OGDF 2025.10 GraphIO::drawSVG with its default SVGSettings (graph-io/test/fidelity/oracles/gml-specimen-labels-p5.svg: ";
|
|
148
177
|
const NX = "networkx 6da4704cbf32 networkx/drawing/nx_pylab.py line";
|
|
178
|
+
const MEASURED = "measured in the program's own SVG export (graph-io/test/fidelity/oracles/";
|
|
179
|
+
const PAJEK_SVG = `${MEASURED}pajek-`;
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Cytoscape desktop draws an arrow `EDGE_*_ARROW_SIZE` (6 by default, the neutral arrowSize 1) plus the line width
|
|
183
|
+
* across, a DELTA twice as long, a square, a circle and a half arrow as long as that, and a T bar as wide as the
|
|
184
|
+
* DELTA is long and a tenth of that deep: measured on cx-ndex-90f78bcd (width 1), cx2-u2os-hierarchy (width 2),
|
|
185
|
+
* cx2-signor-aml and cx2-syn-bypass (widths 1 and 7).
|
|
186
|
+
*/
|
|
187
|
+
const CYTOSCAPE_ARROWHEAD: ToolArrowhead = {
|
|
188
|
+
length: (size, width) => 2 * (6 * size + width),
|
|
189
|
+
aspect: 0.5,
|
|
190
|
+
shapes: {
|
|
191
|
+
square: { length: 0.5, aspect: 1 },
|
|
192
|
+
circle: { length: 0.5, aspect: 1 },
|
|
193
|
+
"circle-open": { length: 0.5, aspect: 1 },
|
|
194
|
+
// HALF_TOP's barb: 1.135 long and 1 to one side of its line
|
|
195
|
+
half: { length: 0.5675, aspect: 0.881 },
|
|
196
|
+
"other:half-bottom": { length: 0.5675, aspect: 0.881 },
|
|
197
|
+
tee: { length: 0.1, aspect: 10 },
|
|
198
|
+
// a square's outline, and a half circle (half a CIRCLE deep, as wide)
|
|
199
|
+
"other:open-square": { length: 0.5, aspect: 1 },
|
|
200
|
+
"other:half-circle": { length: 0.25, aspect: 2 },
|
|
201
|
+
"other:open-half-circle": { length: 0.25, aspect: 2 },
|
|
202
|
+
},
|
|
203
|
+
source: `${MEASURED}cx-ndex-90f78bcd, cx2-u2os-hierarchy, cx2-signor-aml, cx2-syn-bypass, cx-syn-mappings: each arrow's unit glyph), Cytoscape 3.10.5`,
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Cytoscape desktop draws a node's outline its size less its border's width across and strokes the border along it,
|
|
208
|
+
* so the border's outer edge is the node's size: a 40 x 40 HEXAGON with a border of 1 is a 39-wide path.
|
|
209
|
+
*/
|
|
210
|
+
/** Cytoscape desktop draws a curved edge through its handles, and the loops it adds itself, through their midpoints. */
|
|
211
|
+
const CYTOSCAPE_BEND_CURVE = v(
|
|
212
|
+
"midpoints",
|
|
213
|
+
"cytoscape-impl ding-presentation-impl GraphGraphics.java computeCubicPolyEdgePath (cubic pieces between the handles' midpoints, controls pulled toward each handle by CURVE_ELLIPTICAL)",
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Cytoscape desktop draws a label's background box round its words alone: as wide as the text and one line tall,
|
|
218
|
+
* the font's ascent plus descent (1.164 of a DejaVu Sans font's size), which is also the step between its lines.
|
|
219
|
+
*/
|
|
220
|
+
const CYTOSCAPE_LABEL_BOX = `${MEASURED}xgmml-specimen-labels: label-background-* boxes and the captions' two lines), Cytoscape 3.10.5`;
|
|
221
|
+
const CYTOSCAPE_LABEL_PADDING = v(0, CYTOSCAPE_LABEL_BOX);
|
|
222
|
+
const CYTOSCAPE_LABEL_LINE_HEIGHT = v(1, CYTOSCAPE_LABEL_BOX);
|
|
223
|
+
|
|
224
|
+
const CYTOSCAPE_BORDER_INSIDE = v<"inside">(
|
|
225
|
+
"inside",
|
|
226
|
+
`${MEASURED}cx2-repro-shared-interaction, cys-luad-vest-v2, cx2-synthetic-lethal), Cytoscape 3.10.5`,
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* draw.io draws a yEd or yFiles file's arrows `endSize` 6 plus the line width long and as wide; yEd itself could not
|
|
231
|
+
* be run, so draw.io's drawing stands in.
|
|
232
|
+
*/
|
|
233
|
+
const DRAWIO_ARROWHEAD: ToolArrowhead = {
|
|
234
|
+
length: (size, width) => 6 * size + width,
|
|
235
|
+
aspect: 1,
|
|
236
|
+
source: `${MEASURED}graphml-*, draw.io 32.4.1 standing in for yEd)`,
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* The largest corner radius of a rounded rectangle whose file gives none, in the program's units. Cytoscape.js is the
|
|
241
|
+
* one program that publishes its rule (`getRoundRectangleRadius`); the others draw barely rounded corners too, so they
|
|
242
|
+
* get the same 8, and a 513 x 453 group keeps small corners instead of a quarter of its side.
|
|
243
|
+
* @param tool - the program, when it is not Cytoscape.js and so states no radius of its own
|
|
244
|
+
* @returns the default
|
|
245
|
+
*/
|
|
246
|
+
function cornerCap(tool?: string): ToolDefaultValue<number> {
|
|
247
|
+
const rule = `${CYJS} 4386`;
|
|
248
|
+
return v(8, tool === undefined ? rule : `${rule} (Cytoscape.js's rule; ${tool} states none)`);
|
|
249
|
+
}
|
|
149
250
|
|
|
150
251
|
/**
|
|
151
252
|
* The defaults of every program graph-io recognizes as a file's writer, by tool id.
|
|
@@ -158,6 +259,8 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
158
259
|
tool: "cytoscape",
|
|
159
260
|
version: "cytoscape-impl develop 6c63e97c5152 (3.11)",
|
|
160
261
|
units: "px",
|
|
262
|
+
roundedCornerRadius: cornerCap("cytoscape"),
|
|
263
|
+
arrowhead: CYTOSCAPE_ARROWHEAD,
|
|
161
264
|
node: {
|
|
162
265
|
fill: v("#89d0f5", `${CY} 382`),
|
|
163
266
|
fillOpacity: v(1, `${CY} 383`),
|
|
@@ -167,29 +270,44 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
167
270
|
borderColor: v("#cccccc", `${CY} 392`),
|
|
168
271
|
borderWidth: v(0, `${CY} 350`),
|
|
169
272
|
borderStyle: v("solid", `${CY} 366`),
|
|
273
|
+
borderPosition: CYTOSCAPE_BORDER_INSIDE,
|
|
274
|
+
borderWaveAmplitude: v(10, CY_WAVE),
|
|
275
|
+
borderWavePeriod: v(20, CY_WAVE),
|
|
170
276
|
labelColor: v("#000000", `${CY} 395`),
|
|
171
|
-
labelFont: v("sans-serif", `${CY} 370`),
|
|
277
|
+
labelFont: v("DejaVu Sans, sans-serif", `${CY} 370 (SansSerif, drawn in Java's face for it)`),
|
|
172
278
|
labelWeight: v("normal", `${CY} 370`),
|
|
173
279
|
labelItalic: v(false, `${CY} 370`),
|
|
174
280
|
labelSize: v(12, `${CY} 371`),
|
|
281
|
+
labelWrapWidth: v(200, `${CY} 372`),
|
|
282
|
+
labelWrapTrailingSpace: v(
|
|
283
|
+
true,
|
|
284
|
+
`${MEASURED}cx-ndex-90f78bcd: each word is measured with the space after it), Cytoscape 3.10.5`,
|
|
285
|
+
),
|
|
175
286
|
labelPosition: v("center", `${CY} 380`),
|
|
287
|
+
labelPadding: CYTOSCAPE_LABEL_PADDING,
|
|
288
|
+
labelLineHeight: CYTOSCAPE_LABEL_LINE_HEIGHT,
|
|
176
289
|
},
|
|
177
290
|
edge: {
|
|
178
291
|
color: v("#848484", `${CY} 431`),
|
|
179
292
|
width: v(2, `${CY} 417`),
|
|
180
293
|
lineStyle: v("solid", `${CY} 438`),
|
|
294
|
+
waveAmplitude: v(10, CY_WAVE),
|
|
295
|
+
wavePeriod: v(20, CY_WAVE),
|
|
181
296
|
opacity: v(1, `${CY} 423`),
|
|
182
297
|
sourceArrow: v("none", `${CY} 437`),
|
|
183
298
|
targetArrow: v("none", `${CY} 428`),
|
|
184
299
|
sourceArrowColor: v("#000000", `${CY} 432`),
|
|
185
300
|
targetArrowColor: v("#000000", `${CY} 432`),
|
|
186
301
|
labelColor: v("#000000", `${CY} 415`),
|
|
187
|
-
labelFont: v("sans-serif", `${CY} 439`),
|
|
302
|
+
labelFont: v("DejaVu Sans, sans-serif", `${CY} 439 (SansSerif, drawn in Java's face for it)`),
|
|
188
303
|
labelWeight: v("normal", `${CY} 439`),
|
|
189
304
|
labelItalic: v(false, `${CY} 439`),
|
|
190
305
|
labelSize: v(10, `${CY} 439`),
|
|
306
|
+
labelPadding: CYTOSCAPE_LABEL_PADDING,
|
|
307
|
+
labelLineHeight: CYTOSCAPE_LABEL_LINE_HEIGHT,
|
|
191
308
|
// EDGE_CURVED is true there, but it only rounds an edge's bends: an edge without bends is straight
|
|
192
309
|
curved: v(false, `${CY} 422`),
|
|
310
|
+
bendCurve: CYTOSCAPE_BEND_CURVE,
|
|
193
311
|
},
|
|
194
312
|
graph: { background: v("#ffffff", `${CY} 335`) },
|
|
195
313
|
derived: [{ kind: "labelFromColumn", column: "name", source: `${CY} 406-408` }],
|
|
@@ -198,6 +316,8 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
198
316
|
tool: "cytoscape-fallbacks",
|
|
199
317
|
version: "cytoscape-api develop (3.11)",
|
|
200
318
|
units: "px",
|
|
319
|
+
roundedCornerRadius: cornerCap("cytoscape-fallbacks"),
|
|
320
|
+
arrowhead: CYTOSCAPE_ARROWHEAD,
|
|
201
321
|
node: {
|
|
202
322
|
fill: v("#c80000", `${CYL} 83`),
|
|
203
323
|
fillOpacity: v(1, `${CYL} 273`),
|
|
@@ -206,24 +326,39 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
206
326
|
height: v(40, `${CYL} 163`),
|
|
207
327
|
borderColor: v("#000000", `${CYL} 230`),
|
|
208
328
|
borderWidth: v(2, `${CYL} 54`),
|
|
329
|
+
borderPosition: CYTOSCAPE_BORDER_INSIDE,
|
|
330
|
+
borderWaveAmplitude: v(10, CY_WAVE),
|
|
331
|
+
borderWavePeriod: v(20, CY_WAVE),
|
|
209
332
|
labelColor: v("#000000", `${CYL} 91`),
|
|
210
|
-
labelFont: v("sans-serif", `${CYL} 255`),
|
|
333
|
+
labelFont: v("DejaVu Sans, sans-serif", `${CYL} 255 (SansSerif, drawn in Java's face for it)`),
|
|
211
334
|
labelWeight: v("normal", `${CYL} 255`),
|
|
212
335
|
labelItalic: v(false, `${CYL} 255`),
|
|
213
336
|
labelSize: v(12, `${CYL} 55`),
|
|
337
|
+
labelWrapWidth: v(200, `${CYL} 196`),
|
|
338
|
+
labelWrapTrailingSpace: v(
|
|
339
|
+
true,
|
|
340
|
+
`${MEASURED}cx-ndex-90f78bcd: each word is measured with the space after it), Cytoscape 3.10.5`,
|
|
341
|
+
),
|
|
214
342
|
labelPosition: v("center", `${CYL} 205`),
|
|
343
|
+
labelPadding: CYTOSCAPE_LABEL_PADDING,
|
|
344
|
+
labelLineHeight: CYTOSCAPE_LABEL_LINE_HEIGHT,
|
|
215
345
|
},
|
|
216
346
|
edge: {
|
|
217
347
|
color: v("#404040", `${CYL} 469`),
|
|
218
348
|
width: v(1, `${CYL} 368`),
|
|
219
349
|
lineStyle: v("solid", `${CYL} 392`),
|
|
350
|
+
waveAmplitude: v(10, CY_WAVE),
|
|
351
|
+
wavePeriod: v(20, CY_WAVE),
|
|
220
352
|
sourceArrow: v("none", `${CYL} 487`),
|
|
221
353
|
targetArrow: v("none", `${CYL} 493`),
|
|
222
354
|
labelColor: v("#000000", `${CYL} 327`),
|
|
223
|
-
labelFont: v("sans-serif", `${CYL} 408`),
|
|
355
|
+
labelFont: v("DejaVu Sans, sans-serif", `${CYL} 408 (SansSerif, drawn in Java's face for it)`),
|
|
224
356
|
labelWeight: v("normal", `${CYL} 408`),
|
|
225
357
|
labelItalic: v(false, `${CYL} 408`),
|
|
226
358
|
labelSize: v(10, `${CYL} 416`),
|
|
359
|
+
labelPadding: CYTOSCAPE_LABEL_PADDING,
|
|
360
|
+
labelLineHeight: CYTOSCAPE_LABEL_LINE_HEIGHT,
|
|
361
|
+
bendCurve: CYTOSCAPE_BEND_CURVE,
|
|
227
362
|
},
|
|
228
363
|
graph: { background: v("#ffffff", `${CYL} 667`) },
|
|
229
364
|
derived: [],
|
|
@@ -232,6 +367,22 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
232
367
|
tool: "cytoscape-js",
|
|
233
368
|
version: "cytoscape.js 3.34.3",
|
|
234
369
|
units: "px",
|
|
370
|
+
roundedCornerRadius: cornerCap(),
|
|
371
|
+
arrowhead: {
|
|
372
|
+
// getArrowWidth, and the triangle's points at +-0.15, -0.3 of it
|
|
373
|
+
length: (size, width) => 0.3 * Math.max((width * 13.37) ** 0.9, 29) * size,
|
|
374
|
+
aspect: 1,
|
|
375
|
+
// a tee is 0.1 of the arrow width deep, the triangle 0.3 long; triangle-tee reaches back to its bar
|
|
376
|
+
// at 0.5, circle-triangle to 0.6 and triangle-cross to its cross line at 0.4 plus the line's width
|
|
377
|
+
shapes: {
|
|
378
|
+
tee: { length: 1 / 3, aspect: 3 },
|
|
379
|
+
"other:triangle-tee": { length: 5 / 3, aspect: 0.6 },
|
|
380
|
+
"other:triangle-cross": { length: 1.5, aspect: 0.66 },
|
|
381
|
+
"other:circle-triangle": { length: 2, aspect: 0.5 },
|
|
382
|
+
"other:chevron": { length: 2 / 3, aspect: 1.5 },
|
|
383
|
+
},
|
|
384
|
+
source: `${CYJS} 23497 (getArrowWidth), 22714-22716 (triangle), 22813-22814 (tee), 22627 (arrowShapeWidth)`,
|
|
385
|
+
},
|
|
235
386
|
node: {
|
|
236
387
|
fill: v("#999999", `${CYJS} 18536`),
|
|
237
388
|
fillOpacity: v(1, `${CYJS} 18538`),
|
|
@@ -241,17 +392,42 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
241
392
|
borderColor: v("#000000", `${CYJS} 18555`),
|
|
242
393
|
borderWidth: v(0, `${CYJS} 18557`),
|
|
243
394
|
borderStyle: v("solid", `${CYJS} 18558`),
|
|
395
|
+
borderPosition: v("center", `${CYJS} 18563`),
|
|
396
|
+
outerBorderColor: v("#999999", `${CYJS} 18564`),
|
|
397
|
+
// the underlay and the overlay draw nothing until an opacity is set; then these
|
|
398
|
+
underlayColor: v("#000000", `${CYJS} 18524`),
|
|
399
|
+
underlayPadding: v(10, `${CYJS} 18525`),
|
|
400
|
+
underlayShape: v("round-rectangle", `${CYJS} 18526`),
|
|
401
|
+
overlayColor: v("#000000", `${CYJS} 18519`),
|
|
402
|
+
overlayPadding: v(10, `${CYJS} 18520`),
|
|
403
|
+
overlayShape: v("round-rectangle", `${CYJS} 18521`),
|
|
244
404
|
opacity: v(1, `${CYJS} 18503`),
|
|
245
405
|
labelColor: v("#000000", `${CYJS} 18474`),
|
|
246
406
|
labelSize: v(16, `${CYJS} 18496`),
|
|
247
407
|
labelFont: v("Helvetica Neue, Helvetica, sans-serif", `${CYJS} 18493`),
|
|
248
408
|
labelWeight: v("normal", `${CYJS} 18495`),
|
|
249
409
|
labelPosition: v("top", `${CYJS} 18470-18471`),
|
|
410
|
+
// text-wrap: wrap measures `subline + word + wordSeparator` against text-max-width; ponytail: a
|
|
411
|
+
// line's last word has no separator there, where graphty counts a space after it too
|
|
412
|
+
labelWrapTrailingSpace: v(true, `${CYJS} 25218`),
|
|
250
413
|
},
|
|
251
414
|
edge: {
|
|
252
415
|
color: v("#999999", `${CYJS} 18639`),
|
|
253
416
|
sourceArrowColor: v("#999999", `${CYJS} 18639`),
|
|
254
417
|
targetArrowColor: v("#999999", `${CYJS} 18639`),
|
|
418
|
+
outlineColor: v("#000000", `${CYJS} 18644`),
|
|
419
|
+
underlayColor: v("#000000", `${CYJS} 18524`),
|
|
420
|
+
underlayPadding: v(10, `${CYJS} 18525`),
|
|
421
|
+
overlayColor: v("#000000", `${CYJS} 18519`),
|
|
422
|
+
overlayPadding: v(10, `${CYJS} 18520`),
|
|
423
|
+
gradientKind: v("none", `${CYJS} 18640 (line-fill solid)`),
|
|
424
|
+
midSourceArrowColor: v("#999999", `${CYJS} 18639`),
|
|
425
|
+
midTargetArrowColor: v("#999999", `${CYJS} 18639`),
|
|
426
|
+
// an edge's label is centered on the line's middle (recalculateEdgeLabelProjections)
|
|
427
|
+
labelPosition: v("center", `${CYJS} 24942`),
|
|
428
|
+
// a source or target label is centered on the line where it leaves its node, unless offset
|
|
429
|
+
sourceLabelOffset: v(0, `${CYJS} 18511, 18515`),
|
|
430
|
+
targetLabelOffset: v(0, `${CYJS} 18511, 18515`),
|
|
255
431
|
width: v(3, `${CYJS} 18711`),
|
|
256
432
|
lineStyle: v("solid", `${CYJS} 18638`),
|
|
257
433
|
opacity: v(1, `${CYJS} 18503`),
|
|
@@ -259,28 +435,56 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
259
435
|
targetArrow: v("none", `${CYJS} 18671`),
|
|
260
436
|
arrowSize: v(1, `${CYJS} 18660`),
|
|
261
437
|
curved: v(false, `${CYJS} 18658`),
|
|
438
|
+
// control-point-step-size 40: a quadratic's middle is half as far out as its control point
|
|
439
|
+
fanSpacing: v(20, `${CYJS} 18647`),
|
|
262
440
|
labelColor: v("#000000", `${CYJS} 18474`),
|
|
263
441
|
labelSize: v(16, `${CYJS} 18496`),
|
|
264
442
|
labelFont: v("Helvetica Neue, Helvetica, sans-serif", `${CYJS} 18493`),
|
|
265
443
|
labelWeight: v("normal", `${CYJS} 18495`),
|
|
266
444
|
},
|
|
267
|
-
graph: {
|
|
445
|
+
graph: {
|
|
446
|
+
// the canvas is cleared to transparent, so the page's default white shows through
|
|
447
|
+
background: v("#ffffff", `${CYJS} 31537 (clearCanvas: clearRect)`),
|
|
448
|
+
},
|
|
268
449
|
derived: [],
|
|
269
450
|
},
|
|
270
451
|
{
|
|
271
452
|
tool: "graphviz",
|
|
272
453
|
version: "graphviz main (16.1.0)",
|
|
273
454
|
units: "px",
|
|
455
|
+
roundedCornerRadius: cornerCap("graphviz"),
|
|
456
|
+
arrowhead: {
|
|
457
|
+
// ARROW_LENGTH 10 and the normal arrow's half width 0.35 of its length
|
|
458
|
+
length: (size) => 10 * size,
|
|
459
|
+
aspect: 0.7,
|
|
460
|
+
// each arrow type's length factor and the half width its arrow_type_* function draws
|
|
461
|
+
shapes: {
|
|
462
|
+
tee: { length: 0.2, aspect: 5 },
|
|
463
|
+
square: { length: 0.8, aspect: 1 },
|
|
464
|
+
diamond: { length: 1.2, aspect: 2 / 3 },
|
|
465
|
+
"diamond-open": { length: 1.2, aspect: 2 / 3 },
|
|
466
|
+
circle: { length: 0.8, aspect: 1 },
|
|
467
|
+
"circle-open": { length: 0.8, aspect: 1 },
|
|
468
|
+
crow: { length: 1, aspect: 0.9 },
|
|
469
|
+
vee: { length: 1, aspect: 0.9 },
|
|
470
|
+
// the arc of curve and icurve, a half circle of radius half the arrow's length across its
|
|
471
|
+
// stem (the stem is the line, carried on to the tip)
|
|
472
|
+
"other:curve": { length: 0.5, aspect: 2 },
|
|
473
|
+
"other:inv-curve": { length: 0.5, aspect: 2 },
|
|
474
|
+
},
|
|
475
|
+
source: "graphviz lib/common/arrows.c (ARROW_LENGTH 10, Arrowtypes lenfact, arrow_type_normal 0.35, arrow_type_crow 0.45, arrow_type_tee, arrow_type_box 0.4, arrow_type_diamond 1/3, arrow_type_dot, arrow_type_curve)",
|
|
476
|
+
},
|
|
274
477
|
node: {
|
|
275
478
|
fillOpacity: v(0, `${GV}/style/ (default "", not filled)`),
|
|
276
479
|
borderColor: v("#000000", `${GV}/color/`),
|
|
277
480
|
borderWidth: v(1, `${GV}/penwidth/; lib/common/const.h line 77`),
|
|
481
|
+
borderPosition: v("center", `${MEASURED}dot-synth-nodes), Graphviz strokes the node's own outline`),
|
|
278
482
|
shape: v("ellipse", `${GV}/shape/; lib/common/const.h line 76`),
|
|
279
483
|
width: v(54, `${GV}/width/ (0.75 inch); lib/common/const.h line 72`),
|
|
280
484
|
height: v(36, `${GV}/height/ (0.5 inch); lib/common/const.h line 73`),
|
|
281
485
|
labelColor: v("#000000", `${GV}/fontcolor/`),
|
|
282
486
|
labelSize: v(14, `${GV}/fontsize/; lib/common/const.h line 61`),
|
|
283
|
-
labelFont: v("Times
|
|
487
|
+
labelFont: v("Times, serif", `${GV}/fontname/ (Times-Roman); lib/common/const.h line 67`),
|
|
284
488
|
labelPosition: v("center", `${GV}/labelloc/`),
|
|
285
489
|
},
|
|
286
490
|
edge: {
|
|
@@ -292,12 +496,12 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
292
496
|
arrowSize: v(1, `${GV}/arrowsize/`),
|
|
293
497
|
labelColor: v("#000000", `${GV}/fontcolor/`),
|
|
294
498
|
labelSize: v(14, `${GV}/fontsize/`),
|
|
295
|
-
labelFont: v("Times
|
|
499
|
+
labelFont: v("Times, serif", `${GV}/fontname/ (Times-Roman)`),
|
|
296
500
|
},
|
|
297
501
|
graph: {
|
|
298
502
|
background: v(
|
|
299
503
|
"#ffffff",
|
|
300
|
-
`${GV}/bgcolor/ (default
|
|
504
|
+
`${GV}/bgcolor/ (default unset); lib/common/emit.c emit_background (an unset bgcolor paints the page white)`,
|
|
301
505
|
),
|
|
302
506
|
},
|
|
303
507
|
derived: [
|
|
@@ -313,14 +517,17 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
313
517
|
tool: "yed",
|
|
314
518
|
version: "yEd / yFiles for Java 2.19",
|
|
315
519
|
units: "px",
|
|
520
|
+
roundedCornerRadius: cornerCap("yed"),
|
|
521
|
+
arrowhead: DRAWIO_ARROWHEAD,
|
|
316
522
|
node: {
|
|
317
523
|
fill: v("#ffcc00", `${YED_QA}; ${YED_CORPUS} of y:Fill color`),
|
|
318
524
|
shape: v("rectangle", "yFiles for Java 2.19 ShapeNodeRealizer API docs"),
|
|
319
525
|
borderColor: v("#000000", `${YED_CORPUS} of y:BorderStyle`),
|
|
320
526
|
borderWidth: v(1, `${YED_CORPUS} of y:BorderStyle`),
|
|
321
527
|
borderStyle: v("solid", `${YED_CORPUS} of y:BorderStyle`),
|
|
528
|
+
borderPosition: v("center", `${MEASURED}graphml-*, draw.io 32.4.1 standing in for yEd)`),
|
|
322
529
|
labelColor: v("#000000", `${YED_CORPUS} of y:NodeLabel`),
|
|
323
|
-
labelFont: v("
|
|
530
|
+
labelFont: v("DejaVu Sans, sans-serif", `${YED_CORPUS} of y:NodeLabel (Dialog's face)`),
|
|
324
531
|
labelSize: v(12, `${YED_CORPUS} of y:NodeLabel`),
|
|
325
532
|
labelWeight: v("normal", `${YED_CORPUS} of y:NodeLabel`),
|
|
326
533
|
labelPosition: v("center", `${YED_CORPUS} of y:NodeLabel`),
|
|
@@ -332,7 +539,7 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
332
539
|
sourceArrow: v("none", `${YED_EDGE} (defaults to Arrow.NONE)`),
|
|
333
540
|
targetArrow: v("none", `${YED_EDGE} (defaults to Arrow.NONE)`),
|
|
334
541
|
labelColor: v("#000000", `${YED_CORPUS} of y:EdgeLabel`),
|
|
335
|
-
labelFont: v("
|
|
542
|
+
labelFont: v("DejaVu Sans, sans-serif", `${YED_CORPUS} of y:EdgeLabel (Dialog's face)`),
|
|
336
543
|
labelSize: v(12, `${YED_CORPUS} of y:EdgeLabel`),
|
|
337
544
|
},
|
|
338
545
|
graph: {
|
|
@@ -347,14 +554,24 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
347
554
|
tool: "yfiles3",
|
|
348
555
|
version: "yFiles for HTML (API docs retrieved 2026-10-11)",
|
|
349
556
|
units: "px",
|
|
557
|
+
roundedCornerRadius: cornerCap("yfiles3"),
|
|
558
|
+
arrowhead: DRAWIO_ARROWHEAD,
|
|
350
559
|
node: {
|
|
351
560
|
fill: v("#ffffff", `${Y3} ShapeNodeStyle fill`),
|
|
352
561
|
borderColor: v("#000000", `${Y3} ShapeNodeStyle stroke`),
|
|
353
562
|
borderWidth: v(1, `${Y3} ShapeNodeStyle stroke`),
|
|
563
|
+
borderPosition: v(
|
|
564
|
+
"center",
|
|
565
|
+
`${MEASURED}graphml-yfiles-html-*, draw.io 32.4.1 standing in for yFiles)`,
|
|
566
|
+
),
|
|
354
567
|
shape: v("rectangle", `${Y3} ShapeNodeStyle shape`),
|
|
355
568
|
labelColor: v("#000000", `${Y3} LabelStyle textFill`),
|
|
356
569
|
labelFont: v("Arial", `${Y3} LabelStyle font`),
|
|
357
570
|
labelSize: v(12, `${Y3} LabelStyle font`),
|
|
571
|
+
labelPosition: v(
|
|
572
|
+
"center",
|
|
573
|
+
`${Y3} IGraph.nodeDefaults labels layoutParameter (InteriorLabelModel center)`,
|
|
574
|
+
),
|
|
358
575
|
},
|
|
359
576
|
edge: {
|
|
360
577
|
color: v("#000000", `${Y3} PolylineEdgeStyle stroke`),
|
|
@@ -365,76 +582,58 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
365
582
|
labelFont: v("Arial", `${Y3} LabelStyle font`),
|
|
366
583
|
labelSize: v(12, `${Y3} LabelStyle font`),
|
|
367
584
|
},
|
|
368
|
-
graph: {
|
|
585
|
+
graph: {
|
|
586
|
+
background: v("#ffffff", `${Y3} GraphComponent (a transparent canvas over the page's white)`),
|
|
587
|
+
},
|
|
369
588
|
derived: [],
|
|
370
589
|
},
|
|
371
590
|
{
|
|
372
591
|
tool: "gephi",
|
|
373
592
|
version: "gephi 0.11.4-SNAPSHOT",
|
|
374
593
|
units: "relative",
|
|
594
|
+
roundedCornerRadius: cornerCap("gephi"),
|
|
595
|
+
arrowhead: {
|
|
596
|
+
length: (size, width) => 3.25 * width * size,
|
|
597
|
+
aspect: 0.9,
|
|
598
|
+
source: `${MEASURED}gexf-synth-nx-viz, widths 1 to 4), Gephi Toolkit 0.11.3`,
|
|
599
|
+
},
|
|
375
600
|
node: {
|
|
376
601
|
fill: v("#000000", "gephi/graphstore a4c790b2343e NodeImpl.java line 322"),
|
|
377
|
-
width: v(
|
|
378
|
-
height: v(
|
|
602
|
+
width: v(20, `${GEPHI} AbstractProcessor.java lines 195-198 (size 10 is a radius)`),
|
|
603
|
+
height: v(20, `${GEPHI} AbstractProcessor.java lines 195-198 (size 10 is a radius)`),
|
|
379
604
|
shape: v("ellipse", "GEXF 1.3 viz shape default disc; Preview NodeRenderer"),
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
labelColor: v("#000000", `${GEPHI} DefaultPreset.java line 91 (DependantOriginalColor(BLACK))`),
|
|
385
|
-
labelFont: v("Arial", `${GEPHI} DefaultPreset.java line 93 (Arial plain 12)`),
|
|
386
|
-
// the size of a size-10 node's label; Preview scales it with the node (labelSizeFromWidth below)
|
|
387
|
-
labelSize: v(12, `${GEPHI} DefaultPreset.java line 93 (Arial plain 12)`),
|
|
605
|
+
borderPosition: v(
|
|
606
|
+
"inside",
|
|
607
|
+
`${MEASURED}gexf-specimen-node-fills-borders-p3), Gephi Toolkit 0.11.3: the border is stroked on a circle of radius size - border / 2`,
|
|
608
|
+
),
|
|
388
609
|
labelPosition: v(
|
|
389
610
|
"center",
|
|
390
611
|
`${GEPHI} NodeLabelRenderer.java (a label is drawn centered on its node)`,
|
|
391
612
|
),
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
curved: v(
|
|
613
|
+
// a node drawn under another still shows its label (gexf-cns-wos n5 under n109: "Borner, K")
|
|
614
|
+
labelOnTop: v(
|
|
395
615
|
true,
|
|
396
|
-
`${GEPHI}
|
|
616
|
+
`${GEPHI} PreviewController (the node label items are drawn after every node); Gephi Toolkit 0.11.3 SVG export: g#node-labels after g#nodes`,
|
|
397
617
|
),
|
|
618
|
+
},
|
|
619
|
+
edge: {
|
|
398
620
|
sourceArrow: v("none", `${GEPHI} DefaultPreset.java line 62`),
|
|
399
621
|
targetArrow: v("none", `${GEPHI} DefaultPreset.java line 62`),
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
622
|
+
curved: v(true, `${GEPHI} DefaultPreset.java (EDGE_CURVED true); Gephi Toolkit 0.11.3 SVG export`),
|
|
623
|
+
fanned: v(
|
|
624
|
+
false,
|
|
625
|
+
`${GEPHI} EdgeRenderer.java (each curved edge bows left of its own direction, siblings ignored); Gephi Toolkit 0.11.3 SVG export`,
|
|
626
|
+
),
|
|
627
|
+
arcRadius: v(
|
|
628
|
+
1 / 1.2,
|
|
629
|
+
`${GEPHI} EdgeRenderer.java (CurvedEdgeRenderer: an arc through both node centers of radius length / ARC_CURVENESS, default 1.2)`,
|
|
405
630
|
),
|
|
406
|
-
opacity: v(1, `${GEPHI} DefaultPreset.java line 71 (EDGE_OPACITY 100)`),
|
|
407
631
|
},
|
|
408
632
|
graph: { background: v("#ffffff", `${GEPHI} VizConfig.java line 111`) },
|
|
409
633
|
derived: [
|
|
410
|
-
{
|
|
411
|
-
kind: "labelFromColumn",
|
|
412
|
-
column: "label",
|
|
413
|
-
source: `${SIGMA}/settings.ts lines 119-126 (renderLabels); ${GEXFJS} lines 1019-1040`,
|
|
414
|
-
},
|
|
415
634
|
{
|
|
416
635
|
kind: "colorFromEndNodes",
|
|
417
|
-
source:
|
|
418
|
-
`${GEPHI} DefaultPreset.java line 65 (EdgeColor.Mode.MIXED); ` +
|
|
419
|
-
"PreviewAPI types/EdgeColor.java lines 89-93",
|
|
420
|
-
},
|
|
421
|
-
{
|
|
422
|
-
kind: "borderFromFill",
|
|
423
|
-
darken: 0.498,
|
|
424
|
-
widthFactor: 0.08,
|
|
425
|
-
source:
|
|
426
|
-
`${GEPHI} DefaultPreset.java lines 84, 86 (DependantColor DARKER, NODE_BORDER_FIXED false); ` +
|
|
427
|
-
"PreviewAPI types/DependantColor.java lines 55, 85-86; Utils ColorUtils.java lines 22-34; " +
|
|
428
|
-
"PreviewPlugin renderers/SizeUtils.java lines 11, 33-38 (0.16 x size / 2 of a node drawn " +
|
|
429
|
-
"size x 2 wide, builders/NodeBuilder.java line 65)",
|
|
430
|
-
},
|
|
431
|
-
{
|
|
432
|
-
kind: "labelSizeFromWidth",
|
|
433
|
-
factor: 1.2,
|
|
434
|
-
source:
|
|
435
|
-
`${GEPHI} DefaultPreset.java lines 93, 98 (Arial 12, NODE_LABEL_PROPORTIONAL_SIZE true); ` +
|
|
436
|
-
"PreviewPlugin renderers/NodeLabelRenderer.java lines 165-173 (12 x the node drawn size x 2 " +
|
|
437
|
-
"wide x 0.05, builders/NodeBuilder.java line 65)",
|
|
636
|
+
source: `${GEPHI} DefaultPreset.java (EDGE_COLOR EdgeColor.Mode.MIXED); Gephi Toolkit 0.11.3 SVG export`,
|
|
438
637
|
},
|
|
439
638
|
{
|
|
440
639
|
kind: "widthFromWeight",
|
|
@@ -451,26 +650,62 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
451
650
|
tool: "vis-network",
|
|
452
651
|
version: "vis-network 10.1.2",
|
|
453
652
|
units: "px",
|
|
653
|
+
roundedCornerRadius: cornerCap("vis-network"),
|
|
654
|
+
arrowhead: {
|
|
655
|
+
// EdgeBase.getArrowData: 15 * scaleFactor + 3 * width; ArrowHead's points at -1, +-0.3
|
|
656
|
+
length: (size, width) => 15 * size + 3 * width,
|
|
657
|
+
aspect: 0.6,
|
|
658
|
+
// its bar is 0.15 of the arrow's length deep and as wide as the arrow is long; its box is 0.6 of the
|
|
659
|
+
// length square, its circle 0.8 of the length across, and its curve and inv_curve arcs have a
|
|
660
|
+
// radius of 0.4 of it
|
|
661
|
+
shapes: {
|
|
662
|
+
tee: { length: 0.15, aspect: 1 / 0.15 },
|
|
663
|
+
square: { length: 0.6, aspect: 1 },
|
|
664
|
+
circle: { length: 0.8, aspect: 1 },
|
|
665
|
+
"other:curve": { length: 0.4, aspect: 2 },
|
|
666
|
+
"other:inv-curve": { length: 0.4, aspect: 2 },
|
|
667
|
+
},
|
|
668
|
+
source: `${VIS} EdgeBase.getArrowData, ArrowHead, Bar, Box, Circle, Curve, InvertedCurve (measured on json-vis-unix, json-vis-world, json-vis-synth)`,
|
|
669
|
+
},
|
|
670
|
+
nodeBorderOnScreen: v(
|
|
671
|
+
true,
|
|
672
|
+
`${VIS9} NodeBase.initContextForDraw and performStroke: borderWidth / view.scale, at most the node's width`,
|
|
673
|
+
),
|
|
454
674
|
node: {
|
|
455
675
|
fill: v("#97c2fc", `${VIS} lines 32986-33110`),
|
|
456
676
|
borderColor: v("#2b7ce9", `${VIS} lines 32986-33110`),
|
|
457
677
|
borderWidth: v(1, `${VIS} lines 32986-33110`),
|
|
678
|
+
// a canvas stroke along the node's own outline, half in and half out (NodeBase.performStroke)
|
|
679
|
+
borderPosition: v("center", `${VIS9} NodeBase.performStroke: ctx.stroke() on the shape's own path`),
|
|
458
680
|
shape: v("ellipse", `${VIS} lines 32986-33110`),
|
|
459
681
|
labelColor: v("#343434", `${VIS} lines 32986-33110`),
|
|
460
682
|
labelSize: v(14, `${VIS} lines 32986-33110`),
|
|
461
683
|
labelFont: v("arial", `${VIS} lines 32986-33110`),
|
|
462
684
|
labelPosition: v("center", `${VIS} lines 32986-33110`),
|
|
685
|
+
// Label.draw returns before drawing when the font is under drawThreshold - 1 px on screen
|
|
686
|
+
labelMinScreenSize: v(4, `${VIS9} Label.draw, nodes scaling.label.drawThreshold 5`),
|
|
463
687
|
},
|
|
464
688
|
edge: {
|
|
465
689
|
width: v(1, `${VIS} lines 25160-25290`),
|
|
690
|
+
outlineColor: v("#6f6f6f", `${VIS} lines 25160-25290 (background.color)`),
|
|
466
691
|
lineStyle: v("solid", `${VIS} lines 25160-25290 (dashes false)`),
|
|
467
692
|
sourceArrow: v("none", `${VIS} lines 25160-25290`),
|
|
468
693
|
targetArrow: v("none", `${VIS} lines 25160-25290`),
|
|
469
694
|
labelColor: v("#343434", `${VIS} lines 25160-25290`),
|
|
470
695
|
labelSize: v(14, `${VIS} lines 25160-25290`),
|
|
471
696
|
labelFont: v("arial", `${VIS} lines 25160-25290`),
|
|
697
|
+
labelMinScreenSize: v(4, `${VIS9} Label.draw, edges scaling.label.drawThreshold 5`),
|
|
698
|
+
// an edge label is drawn on the line, its letters stroked white 2 px wide (font.strokeWidth 2)
|
|
699
|
+
labelPosition: v("center", `${VIS9} Edge.drawLabel (the label at the line's middle point)`),
|
|
700
|
+
labelOutlineColor: v("#ffffff", `${VIS} lines 25160-25290 (font.strokeColor)`),
|
|
701
|
+
labelOutlineWidth: v(2, `${VIS} lines 25160-25290 (font.strokeWidth)`),
|
|
702
|
+
},
|
|
703
|
+
graph: {
|
|
704
|
+
background: v(
|
|
705
|
+
"#ffffff",
|
|
706
|
+
"vis-network 9.1.9 vis-network.esm.js line 32378 (clearRect: the page's white shows through)",
|
|
707
|
+
),
|
|
472
708
|
},
|
|
473
|
-
graph: {},
|
|
474
709
|
derived: [
|
|
475
710
|
{ kind: "labelFromColumn", column: "label", source: `${VIS} lines 32986-33110` },
|
|
476
711
|
{ kind: "colorFromSourceNode", source: `${VIS} lines 25160-25290 (color.inherit "from")` },
|
|
@@ -478,50 +713,107 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
478
713
|
},
|
|
479
714
|
{
|
|
480
715
|
tool: "sigma",
|
|
481
|
-
version: "sigma
|
|
716
|
+
version: "sigma 4.0.1",
|
|
482
717
|
units: "relative",
|
|
718
|
+
roundedCornerRadius: cornerCap("sigma"),
|
|
483
719
|
node: {
|
|
484
|
-
fill: v("#
|
|
720
|
+
fill: v("#666666", `${SIGMA4} DEFAULT_NODE_DISPLAY_DATA (color "#666")`),
|
|
485
721
|
shape: v("ellipse", `${SIGMA}/settings.ts lines 119-126`),
|
|
486
|
-
width: v(
|
|
487
|
-
height: v(
|
|
722
|
+
width: v(20, `${SIGMA4} DEFAULT_NODE_DISPLAY_DATA (size 10 is a radius)`),
|
|
723
|
+
height: v(20, `${SIGMA4} DEFAULT_NODE_DISPLAY_DATA (size 10 is a radius)`),
|
|
488
724
|
labelColor: v("#000000", `${SIGMA}/settings.ts lines 119-126`),
|
|
489
725
|
labelFont: v("Arial", `${SIGMA}/settings.ts lines 119-126`),
|
|
490
|
-
labelSize
|
|
726
|
+
// sigma 4 sets every node's labelSize to 12 before its styles run; the 14 in sigma.esm.js
|
|
727
|
+
// (`defaultLabelSize`) is only reached by a node whose styles cleared it.
|
|
728
|
+
labelSize: v(12, `${SIGMA4} DEFAULT_NODE_DISPLAY_DATA (labelSize 12)`),
|
|
491
729
|
labelWeight: v("normal", `${SIGMA}/settings.ts lines 119-126`),
|
|
730
|
+
labelPosition: v("right", `${SIGMA4} DEFAULT_NODE_DISPLAY_DATA (labelPosition "right")`),
|
|
731
|
+
// sigma keeps the largest node's label per 100 px cell of its first framing; it avoids no overlap
|
|
732
|
+
labelGridCellSize: v(
|
|
733
|
+
100,
|
|
734
|
+
`${SIGMA4} LabelGrid.getLabelsToDisplay (labelDensity 1, labelGridCellSize 100)`,
|
|
735
|
+
),
|
|
736
|
+
labelOnTop: v(true, `${SIGMA4} labels are drawn by their own program after every node and edge`),
|
|
737
|
+
// a node's label is drawn only while its node's rendered size (a radius) is 6 px or more
|
|
738
|
+
labelMinNodeScreenSize: v(12, `${SIGMA4} renderLabels (labelRenderedSizeThreshold 6, a radius)`),
|
|
492
739
|
},
|
|
493
740
|
edge: {
|
|
494
741
|
color: v("#cccccc", `${SIGMA}/settings.ts lines 119-126`),
|
|
495
|
-
|
|
742
|
+
// an edge of sigma's default size 1, drawn half as wide as its size (readSigmaRow)
|
|
743
|
+
width: v(0.5, `${SIGMA4} DEFAULT_EDGE_DISPLAY_DATA (size 1)`),
|
|
744
|
+
// an edge label (renderEdgeLabels) is drawn at its line's middle, 12 px, in #666
|
|
745
|
+
labelColor: v("#666666", `${SIGMA4} DEFAULT_EDGE_DISPLAY_DATA (labelColor "#666")`),
|
|
746
|
+
labelSize: v(12, "sigma 4.0.1 dist/sigma.esm.js line 2816 (DEFAULT_EDGE_LABEL_SIZE)"),
|
|
747
|
+
labelPosition: v("center", "sigma 4.0.1 dist/sigma.esm.js line 3647 (the middle of its two ends)"),
|
|
496
748
|
sourceArrow: v("none", `${SIGMA}/settings.ts lines 119-126 (type line)`),
|
|
497
749
|
targetArrow: v("none", `${SIGMA}/settings.ts lines 119-126 (type line)`),
|
|
750
|
+
// no edge is drawn thinner on screen, whatever its size (the shader's max(size, minEdgeThickness 1.7),
|
|
751
|
+
// drawn half as wide as a node of that size is in radius, as readSigmaRow halves a size)
|
|
752
|
+
minScreenWidth: v(
|
|
753
|
+
0.85,
|
|
754
|
+
`${SIGMA4} edge program (pixelsThickness = max(size, minEdgeThickness 1.7))`,
|
|
755
|
+
),
|
|
756
|
+
},
|
|
757
|
+
graph: {
|
|
758
|
+
background: v(
|
|
759
|
+
"#ffffff",
|
|
760
|
+
"sigma 4.0.1 dist/sigma.esm.js line 5202 (gl.clear to transparent: the page's white shows through)",
|
|
761
|
+
),
|
|
498
762
|
},
|
|
499
|
-
graph: {},
|
|
500
763
|
derived: [{ kind: "labelFromColumn", column: "label", source: `${SIGMA}/settings.ts lines 119-126` }],
|
|
501
764
|
},
|
|
502
765
|
{
|
|
503
766
|
tool: "pajek",
|
|
504
767
|
version: "Pajek 6.02",
|
|
505
|
-
|
|
768
|
+
// PostScript points, the unit of Pajek's EPS and SVG export (formats/pajek/styles.ts)
|
|
769
|
+
units: "px",
|
|
770
|
+
roundedCornerRadius: cornerCap("pajek"),
|
|
771
|
+
// a line's `s` (arrowSize) scales Pajek's arrowhead whatever its width: 6 x s long (tip to its back
|
|
772
|
+
// corners) and 5 x s wide
|
|
773
|
+
arrowhead: {
|
|
774
|
+
length: (size) => 6 * size,
|
|
775
|
+
aspect: 5 / 6,
|
|
776
|
+
source: `${PAJEK_SVG}specimen-arrows: s 0.5, 1, 2, 3 and 5 draw arrowheads 3, 6, 12, 18 and 30 long, 2.5, 5, 10, 15 and 25 wide; football: s 4 and 9)`,
|
|
777
|
+
},
|
|
506
778
|
node: {
|
|
507
779
|
shape: v("ellipse", `${PAJEK} p. 85`),
|
|
508
780
|
opacity: v(1, `${PAJEK} p. 87`),
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
781
|
+
// Pajek 6.02's own defaults, as its SVG export draws a vertex and label the file gives no
|
|
782
|
+
// parameters for (the manual names these settings but not their values)
|
|
783
|
+
borderColor: v("#660000", `${PAJEK_SVG}football, kdorola: every vertex without bc)`),
|
|
784
|
+
borderWidth: v(0.5, `${PAJEK_SVG}football, kdorola: every vertex without bw)`),
|
|
785
|
+
// an SVG stroke along the vertex's own outline, half in and half out
|
|
786
|
+
borderPosition: v(
|
|
787
|
+
"center",
|
|
788
|
+
`${PAJEK_SVG}specimen-node-fills-borders-p3: bw 8 draws a vertex of size 36 44 across)`,
|
|
789
|
+
),
|
|
790
|
+
width: v(20, `${PAJEK_SVG}football, iliad: a vertex without s_size, x_fact or y_fact)`),
|
|
791
|
+
height: v(20, `${PAJEK_SVG}football, iliad: a vertex without s_size, x_fact or y_fact)`),
|
|
792
|
+
fill: v("#ffd9bc", `${PAJEK_SVG}football, kdorola: every vertex without ic)`),
|
|
793
|
+
labelColor: v("#ad0000", `${PAJEK_SVG}football, 1crn: every label without lc)`),
|
|
794
|
+
labelSize: v(15, `${PAJEK_SVG}football, 1crn: every label without fos)`),
|
|
795
|
+
labelFont: v("Arial", `${PAJEK_SVG}football, 1crn: every label without font)`),
|
|
796
|
+
labelWeight: v("bold", `${PAJEK_SVG}football, 1crn: every label is bold)`),
|
|
797
|
+
// the text starts 20 from the center at lphi 285 and runs to the right, its baseline through
|
|
798
|
+
// that point: its left edge's middle at 20 cos 285 across and 20 sin 285 less 0.3465 of its
|
|
799
|
+
// size down (formats/pajek/styles.ts readLabelPosition)
|
|
800
|
+
labelPosition: v("center", `${PAJEK_SVG}football, 1crn, specimen-labels: lr 20 lphi 285)`),
|
|
801
|
+
labelOffsetX: v(5.176380902, `${PAJEK_SVG}football, 1crn, specimen-labels: lr 20 lphi 285)`),
|
|
802
|
+
labelOffsetY: v(14.121016526, `${PAJEK_SVG}football, 1crn, specimen-labels: lr 20 lphi 285)`),
|
|
803
|
+
labelShiftX: v(0.5, `${PAJEK_SVG}football, 1crn, specimen-labels: text-anchor start)`),
|
|
513
804
|
},
|
|
514
805
|
edge: {
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
// of the drawing was scaled by, and a border 0.2 wide was drawn far too thin to see.
|
|
806
|
+
// an edge (undirected) is drawn twice the width of an arc; the arc rule below sets an arc's
|
|
807
|
+
width: v(2, `${PAJEK_SVG}1crn, lin-rel4, synth-vertices: edges without w; c: w 0.5 drawn 1)`),
|
|
808
|
+
color: v("#007091", `${PAJEK_SVG}1crn, lin-rel4, c: edges without c)`),
|
|
519
809
|
lineStyle: v("solid", `${PAJEK} p. 90`),
|
|
520
810
|
opacity: v(1, `${PAJEK} p. 87`),
|
|
521
811
|
sourceArrow: v("none", `${PAJEK} p. 91`),
|
|
522
812
|
targetArrow: v("none", `${PAJEK} p. 91 (edges have none)`),
|
|
523
813
|
},
|
|
524
|
-
graph: {
|
|
814
|
+
graph: {
|
|
815
|
+
background: v("#ffffff", `${PAJEK}, Draw window (assumed: a white background)`),
|
|
816
|
+
},
|
|
525
817
|
derived: [
|
|
526
818
|
{ kind: "labelFromColumn", column: "label", source: `${PAJEK}, vertex labels (drawn by default)` },
|
|
527
819
|
{ kind: "targetArrowOnDirected", arrow: "triangle", source: `${PAJEK} p. 91 (arcs)` },
|
|
@@ -531,6 +823,13 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
531
823
|
tool: "ogdf",
|
|
532
824
|
version: "ogdf master 1a40505ac006",
|
|
533
825
|
units: "px",
|
|
826
|
+
roundedCornerRadius: cornerCap("ogdf"),
|
|
827
|
+
// OGDF's arrowhead is three times its line's width long and half as wide as it is long
|
|
828
|
+
arrowhead: {
|
|
829
|
+
length: (size, width) => 3 * width * size,
|
|
830
|
+
aspect: 0.5,
|
|
831
|
+
source: `${MEASURED}gml-specimen-arrows-p5.svg: lineWidth 1, 1.5 and 3 draw arrowheads 3, 4.5 and 9 long, 1.5, 2.25 and 4.5 wide)`,
|
|
832
|
+
},
|
|
534
833
|
node: {
|
|
535
834
|
fill: v("#ffffff", `${OGDF} LayoutStandards.cpp lines 38-45`),
|
|
536
835
|
shape: v("rectangle", `${OGDF} LayoutStandards.cpp lines 38-45`),
|
|
@@ -539,19 +838,29 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
|
|
|
539
838
|
borderColor: v("#000000", `${OGDF} LayoutStandards.cpp lines 38-45`),
|
|
540
839
|
borderWidth: v(1, `${OGDF} LayoutStandards.cpp lines 38-45`),
|
|
541
840
|
borderStyle: v("solid", `${OGDF} LayoutStandards.cpp lines 38-45`),
|
|
841
|
+
// GraphIO::drawSVG's default SVGSettings: every label in one font, centered on its node
|
|
842
|
+
labelColor: v("#000000", `${OGDF_SVG}fill #000000)`),
|
|
843
|
+
labelFont: v("Arial", `${OGDF_SVG}font-family Arial)`),
|
|
844
|
+
labelSize: v(10, `${OGDF_SVG}font-size 10)`),
|
|
845
|
+
labelPosition: v("center", `${OGDF_SVG}text-anchor middle at the node's center)`),
|
|
542
846
|
},
|
|
543
847
|
edge: {
|
|
544
848
|
color: v("#000000", `${OGDF} LayoutStandards.cpp lines 38-45`),
|
|
545
849
|
width: v(1, `${OGDF} LayoutStandards.cpp lines 38-45`),
|
|
546
850
|
lineStyle: v("solid", `${OGDF} LayoutStandards.cpp lines 38-45`),
|
|
851
|
+
labelColor: v("#000000", `${OGDF_SVG}fill #000000)`),
|
|
852
|
+
labelFont: v("Arial", `${OGDF_SVG}font-family Arial)`),
|
|
853
|
+
labelSize: v(10, `${OGDF_SVG}font-size 10)`),
|
|
854
|
+
labelPosition: v("center", `${OGDF_SVG}text-anchor middle on the line, dominant-baseline middle)`),
|
|
547
855
|
},
|
|
548
|
-
graph: {},
|
|
856
|
+
graph: { background: v("#ffffff", `${OGDF_SVG}no background: the page's white shows through)`) },
|
|
549
857
|
derived: [],
|
|
550
858
|
},
|
|
551
859
|
{
|
|
552
860
|
tool: "networkx",
|
|
553
861
|
version: "networkx 3.7 (main 6da4704cbf32)",
|
|
554
862
|
units: "px",
|
|
863
|
+
roundedCornerRadius: cornerCap("networkx"),
|
|
555
864
|
node: {
|
|
556
865
|
fill: v("#1f78b4", `${NX} 1378`),
|
|
557
866
|
fillOpacity: v(1, `${NX} 549`),
|