@graphty/graph-io 0.3.48 → 0.3.49
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-Bzn3L-je.js} +2 -2
- package/dist/chunks/{approximations-C2riR4NT.js.map → approximations-Bzn3L-je.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-iptrlMBb.js} +906 -164
- package/dist/chunks/block-iptrlMBb.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-C3p0RQxR.js} +5 -4
- package/dist/chunks/{context-cgmmOxZ2.js.map → context-C3p0RQxR.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-DXHx7nwR.js} +16 -14
- package/dist/chunks/credentials-DXHx7nwR.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-DLA5kINx.js} +7 -2
- package/dist/chunks/descriptor-DLA5kINx.js.map +1 -0
- package/dist/chunks/{emit-CD8xnY8s.js → emit-BwHQkZle.js} +1660 -133
- package/dist/chunks/emit-BwHQkZle.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-Dcw7Ldtq.js → exporter-BP6otMO6.js} +6 -6
- package/dist/chunks/{exporter-Dcw7Ldtq.js.map → exporter-BP6otMO6.js.map} +1 -1
- package/dist/chunks/{exporter-bxxjOrDZ.js → exporter-D2CETOMK.js} +1222 -156
- package/dist/chunks/exporter-D2CETOMK.js.map +1 -0
- package/dist/chunks/{exporter-BIdaoIgh.js → exporter-D9yMtocA.js} +7 -7
- package/dist/chunks/{exporter-BIdaoIgh.js.map → exporter-D9yMtocA.js.map} +1 -1
- package/dist/chunks/{exporter-DtVU80Fa.js → exporter-_jrBTnos.js} +9 -8
- package/dist/chunks/{exporter-DtVU80Fa.js.map → exporter-_jrBTnos.js.map} +1 -1
- package/dist/chunks/{exporter-ChjL5fmP.js → exporter-nDfxIK5D.js} +9 -8
- package/dist/chunks/{exporter-ChjL5fmP.js.map → exporter-nDfxIK5D.js.map} +1 -1
- 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-ymWCETAJ.js} +387 -31
- package/dist/chunks/generic-ymWCETAJ.js.map +1 -0
- package/dist/chunks/{importer-e3huMZbm.js → importer-B92x1xY5.js} +14 -10
- package/dist/chunks/importer-B92x1xY5.js.map +1 -0
- package/dist/chunks/{importer-B87_fmVx.js → importer-CT9mJ1nn.js} +326 -84
- package/dist/chunks/importer-CT9mJ1nn.js.map +1 -0
- package/dist/chunks/{importer-CB_zV5_L.js → importer-DaLTjbds.js} +116 -1102
- package/dist/chunks/importer-DaLTjbds.js.map +1 -0
- package/dist/chunks/{importer-DPZDN40-.js → importer-GREKMdIf.js} +25 -17
- package/dist/chunks/importer-GREKMdIf.js.map +1 -0
- package/dist/chunks/{importer-Bji2MeWr.js → importer-PqaaKKnY.js} +13 -10
- package/dist/chunks/{importer-Bji2MeWr.js.map → importer-PqaaKKnY.js.map} +1 -1
- package/dist/chunks/{importer-Cyy6UseH.js → importer-Vn5QvmmJ.js} +66 -13
- package/dist/chunks/importer-Vn5QvmmJ.js.map +1 -0
- package/dist/chunks/{importer-CVT-JyDE.js → importer-vRq4h3j5.js} +1469 -356
- package/dist/chunks/importer-vRq4h3j5.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-Clf4QIyl.js} +282 -74
- package/dist/chunks/lexicon-Clf4QIyl.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-Zm3_ivgq.js +79 -0
- package/dist/chunks/round-trip-Zm3_ivgq.js.map +1 -0
- package/dist/chunks/{sigv4-LkAzsLAu.js → sigv4-EokFic1V.js} +5 -5
- package/dist/chunks/sigv4-EokFic1V.js.map +1 -0
- package/dist/chunks/{styles-CaABMoO1.js → styles-CCs214_3.js} +1237 -138
- package/dist/chunks/styles-CCs214_3.js.map +1 -0
- package/dist/chunks/styles-Cm62yyQX.js +2812 -0
- package/dist/chunks/styles-Cm62yyQX.js.map +1 -0
- package/dist/chunks/styles-DPQQIig4.js +1928 -0
- package/dist/chunks/styles-DPQQIig4.js.map +1 -0
- package/dist/chunks/{styles-yed-Cs1nmrjn.js → styles-yed-UMFdNqze.js} +503 -172
- package/dist/chunks/styles-yed-UMFdNqze.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 +5 -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 +847 -193
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +232 -220
- 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 +138 -23
- package/dist/sources-cypher.js.map +1 -1
- package/dist/sources-ndex.js +2 -2
- package/dist/sources-rest.js +16 -6
- package/dist/sources-rest.js.map +1 -1
- package/dist/sources-sparql.d.ts +1 -0
- package/dist/sources-sparql.js +405 -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/importer.d.ts.map +1 -1
- package/dist/src/formats/dot/importer.js +108 -31
- package/dist/src/formats/dot/importer.js.map +1 -1
- package/dist/src/formats/dot/label-places.d.ts +34 -0
- package/dist/src/formats/dot/label-places.d.ts.map +1 -0
- package/dist/src/formats/dot/label-places.js +179 -0
- package/dist/src/formats/dot/label-places.js.map +1 -0
- 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 +62 -2
- package/dist/src/formats/dot/styles.d.ts.map +1 -1
- package/dist/src/formats/dot/styles.js +1454 -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 +753 -101
- 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 +692 -161
- 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 +429 -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 +1755 -136
- package/dist/src/formats/json/styles.js.map +1 -1
- package/dist/src/formats/pajek/draw.d.ts +96 -0
- package/dist/src/formats/pajek/draw.d.ts.map +1 -0
- package/dist/src/formats/pajek/draw.js +372 -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 +1278 -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 +4 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -3
- 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/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 +124 -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 +5 -0
- package/dist/src/sources/rest/descriptor.js.map +1 -1
- package/dist/src/sources/rest/source.d.ts.map +1 -1
- package/dist/src/sources/rest/source.js +15 -0
- package/dist/src/sources/rest/source.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 +314 -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 +72 -0
- package/dist/src/sources/sparql/query.d.ts.map +1 -0
- package/dist/src/sources/sparql/query.js +113 -0
- package/dist/src/sources/sparql/query.js.map +1 -0
- package/dist/src/sources/types.d.ts +31 -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 +81 -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 +1015 -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 +3 -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 +202 -9
- 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 +461 -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 +622 -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 +203 -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/importer.ts +120 -35
- package/src/formats/dot/label-places.ts +228 -0
- package/src/formats/dot/record.ts +336 -0
- package/src/formats/dot/styles.ts +1654 -153
- 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 +851 -109
- package/src/formats/graphml/styles-plain.ts +6 -15
- package/src/formats/graphml/styles-yed.ts +762 -173
- package/src/formats/graphml/styles-yfiles3.ts +485 -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 +2041 -185
- package/src/formats/pajek/draw.ts +458 -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 +1381 -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 +5 -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/cypher/descriptor.ts +7 -1
- package/src/sources/cypher/index.ts +148 -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 +5 -0
- package/src/sources/rest/source.ts +16 -0
- package/src/sources/sigv4.ts +6 -4
- package/src/sources/sparql/descriptor.ts +67 -0
- package/src/sources/sparql/index.ts +356 -0
- package/src/sources/sparql/ntriples.ts +219 -0
- package/src/sources/sparql/params.ts +28 -0
- package/src/sources/sparql/query.ts +162 -0
- package/src/sources/types.ts +35 -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 +98 -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 +1160 -84
- package/src/styles/cyjs/defaults-table.ts +3 -0
- package/src/styles/cyjs/emit.ts +233 -13
- package/src/styles/cyjs/face.ts +372 -0
- package/src/styles/cyjs/mappers.ts +492 -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 +633 -5
- package/src/styles/vocabulary.ts +211 -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
|
@@ -171,9 +171,9 @@ function wantedGraphics(trees: JsonColumn[], domain: "node" | "edge", field: str
|
|
|
171
171
|
|
|
172
172
|
/**
|
|
173
173
|
* The mapped values of one `<data>` tree of a yFiles key: a ShapeNode's for a node, a
|
|
174
|
-
* PolyLineEdge's for an edge. A GenericNode, ImageNode, SVGNode
|
|
175
|
-
* read through the realizer `Realizers@active` names)
|
|
176
|
-
* height. Nothing for any other graphics (BezierEdge, ...).
|
|
174
|
+
* PolyLineEdge's for an edge. A GenericNode, ImageNode, SVGNode, UMLClassNode, UMLNoteNode, TableNode
|
|
175
|
+
* or ProxyAutoBoundsNode (a group, read through the realizer `Realizers@active` names), and yFiles 3's
|
|
176
|
+
* NodeGeometry `RectD`, give their geometry only: position, width and height. Nothing for any other graphics (BezierEdge, ...).
|
|
177
177
|
* @param domain - node or edge
|
|
178
178
|
* @param tree - the `<data>` content as tree.ts builds it
|
|
179
179
|
* @param unmapped - receives the fields whose text is present but not a number (not mapped)
|
|
@@ -184,7 +184,20 @@ export function graphicsValues(domain: "node" | "edge", tree: unknown, unmapped:
|
|
|
184
184
|
const out: [string, unknown][] = [];
|
|
185
185
|
if (domain === "node") {
|
|
186
186
|
const shape = child(tree, "ShapeNode");
|
|
187
|
-
|
|
187
|
+
const rect = child(tree, "RectD");
|
|
188
|
+
if (rect !== undefined) {
|
|
189
|
+
// yFiles 3's NodeGeometry: the same top-left corner and size as yEd's Geometry, capitalized
|
|
190
|
+
geometryValues(
|
|
191
|
+
{
|
|
192
|
+
"@_x": attr(rect, "X"),
|
|
193
|
+
"@_y": attr(rect, "Y"),
|
|
194
|
+
"@_width": attr(rect, "Width"),
|
|
195
|
+
"@_height": attr(rect, "Height"),
|
|
196
|
+
},
|
|
197
|
+
out,
|
|
198
|
+
unmapped,
|
|
199
|
+
);
|
|
200
|
+
} else if (shape === undefined) {
|
|
188
201
|
geometryValues(child(geometryNode(tree), "Geometry"), out, unmapped);
|
|
189
202
|
} else {
|
|
190
203
|
shapeNodeValues(shape, out, unmapped);
|
|
@@ -237,10 +250,10 @@ function geometryValues(geometry: unknown, out: [string, unknown][], unmapped: s
|
|
|
237
250
|
}
|
|
238
251
|
|
|
239
252
|
/** The node graphics besides ShapeNode whose Geometry is read. */
|
|
240
|
-
const GEOMETRY_NODES = ["GenericNode", "ImageNode", "SVGNode"] as const;
|
|
253
|
+
const GEOMETRY_NODES = ["GenericNode", "ImageNode", "SVGNode", "UMLClassNode", "UMLNoteNode", "TableNode"] as const;
|
|
241
254
|
|
|
242
255
|
/**
|
|
243
|
-
* The element holding a non-ShapeNode node's Geometry:
|
|
256
|
+
* The element holding a non-ShapeNode node's Geometry: one of GEOMETRY_NODES, or
|
|
244
257
|
* the active realizer of a ProxyAutoBoundsNode (`Realizers@active`, default 0).
|
|
245
258
|
* @param tree - the `<data>` content
|
|
246
259
|
* @returns the element, or undefined
|
|
@@ -148,11 +148,12 @@ export function isJsonImportDialect(value: unknown): value is JsonImportDialect
|
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
/**
|
|
151
|
-
* The dialect of a parsed JSON document, by
|
|
151
|
+
* The dialect of a parsed JSON document, told by its shape (Cytoscape:
|
|
152
152
|
* `elements` or a top-level array of `{ data }` elements; OBO Graphs: `graphs[]` whose first graph
|
|
153
153
|
* has an edge with `sub` (or `subj`) and `obj` or a `pred`, or a node with `lbl`, `meta` or an OWL
|
|
154
154
|
* `type`; JGF: `graph.nodes` / `graph.edges` or any other `graphs[]`; graphology: `options.type` / `options.multi`, `key` nodes without `id`, edges with
|
|
155
|
-
* `undirected` or an `attributes` record, and vis: edges with `from` / `to`,
|
|
155
|
+
* `undirected` or an `attributes` record, and vis: edges with `from` / `to`, or no edge record and an `options`
|
|
156
|
+
* object holding a vis-network option group (`nodes`, `edges`, `groups`, `physics`, ...), both only without
|
|
156
157
|
* NetworkX's `links` / `directed` / `multigraph` / `graph` keys; d3: `links` without
|
|
157
158
|
* `directed` / `multigraph` / `graph`; NetworkX adjacency_data: `nodes` and `adjacency` without
|
|
158
159
|
* `links` / `edges`; NetworkX tree_data: `children` without `nodes` / `links` / `edges`; else
|
|
@@ -229,14 +230,46 @@ function sniffEdgeListDialect(root: Record<string, unknown>): JsonImportDialect
|
|
|
229
230
|
if (record !== undefined) {
|
|
230
231
|
return record;
|
|
231
232
|
}
|
|
233
|
+
// vis: a `{ nodes, edges, options }` document with no edge record still carries vis-network's options
|
|
234
|
+
if (!networkx && firstEdge === null && isVisOptions(root.options)) {
|
|
235
|
+
return "vis";
|
|
236
|
+
}
|
|
232
237
|
const bare = !hasKey(root, "directed") && !hasKey(root, "multigraph") && !hasKey(root, "graph");
|
|
233
238
|
return bare && hasKey(root, "links") ? "d3" : "node-link";
|
|
234
239
|
}
|
|
235
240
|
|
|
241
|
+
/** vis-network's top-level option groups (https://visjs.github.io/vis-network/docs/network/#options). */
|
|
242
|
+
const VIS_OPTION_GROUPS = [
|
|
243
|
+
"nodes",
|
|
244
|
+
"edges",
|
|
245
|
+
"groups",
|
|
246
|
+
"physics",
|
|
247
|
+
"layout",
|
|
248
|
+
"interaction",
|
|
249
|
+
"manipulation",
|
|
250
|
+
"configure",
|
|
251
|
+
"autoResize",
|
|
252
|
+
"clickToUse",
|
|
253
|
+
"locale",
|
|
254
|
+
"locales",
|
|
255
|
+
"height",
|
|
256
|
+
"width",
|
|
257
|
+
];
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Whether a document's `options` is vis-network's: an object holding one of its top-level option groups.
|
|
261
|
+
* @param options - the document's `options`
|
|
262
|
+
* @returns true for vis-network options
|
|
263
|
+
*/
|
|
264
|
+
function isVisOptions(options: unknown): boolean {
|
|
265
|
+
return isJsonObject(options) && VIS_OPTION_GROUPS.some((k) => hasKey(options, k));
|
|
266
|
+
}
|
|
267
|
+
|
|
236
268
|
/**
|
|
237
269
|
* The graphology or vis dialect, read from the first node and edge records of a document without
|
|
238
|
-
* NetworkX's keys: graphology for a `key` node without `id`,
|
|
239
|
-
* `undirected` or an `attributes` record
|
|
270
|
+
* NetworkX's keys: graphology for a `key` node without `id`, an edge without `from` that has
|
|
271
|
+
* `undirected` or an `attributes` record, or, with no edges, an `id` node with an `attributes` record
|
|
272
|
+
* (Gephi's JSON export); vis for an edge with `from` and `to` but no `source`.
|
|
240
273
|
* @param firstNode - the first node record, or null
|
|
241
274
|
* @param firstEdge - the first edge record, or null
|
|
242
275
|
* @returns the dialect, or undefined when the records name neither
|
|
@@ -249,7 +282,10 @@ function sniffRecordDialect(
|
|
|
249
282
|
return "graphology";
|
|
250
283
|
}
|
|
251
284
|
if (firstEdge === null) {
|
|
252
|
-
|
|
285
|
+
// Gephi's JSON export of a graph with no edges: its nodes still carry the exporter's `attributes` record
|
|
286
|
+
return firstNode !== null && hasKey(firstNode, "id") && isJsonObject(firstNode.attributes)
|
|
287
|
+
? "graphology"
|
|
288
|
+
: undefined;
|
|
253
289
|
}
|
|
254
290
|
if (!hasKey(firstEdge, "from")) {
|
|
255
291
|
return hasKey(firstEdge, "undirected") || isJsonObject(firstEdge.attributes) ? "graphology" : undefined;
|
|
@@ -128,7 +128,7 @@ import {
|
|
|
128
128
|
} from "./dialect.js";
|
|
129
129
|
import { importObographs } from "./obographs.js";
|
|
130
130
|
import { jsonPositions } from "./positions.js";
|
|
131
|
-
import { jsonStyles, type JsonStyleSource } from "./styles.js";
|
|
131
|
+
import { jsonStyles, type JsonStyleSource, SIGMA_DEFAULT_SETTINGS, type SigmaSettings } from "./styles.js";
|
|
132
132
|
|
|
133
133
|
/**
|
|
134
134
|
* The format-specific options of the JSON importer. `graphIndex` / `graphName` choose one graph of
|
|
@@ -204,6 +204,13 @@ export interface JsonImportOptions extends GraphChoiceOptions, CommonImportOptio
|
|
|
204
204
|
* @defaultValue next to the nodes
|
|
205
205
|
*/
|
|
206
206
|
edgesPath?: string | undefined;
|
|
207
|
+
/**
|
|
208
|
+
* graphology and Gephi JSON documents: the sigma.js settings the graph is drawn with, which are the application's
|
|
209
|
+
* and never in the file. `renderEdgeLabels: true` draws the edges' labels, between two labeled nodes or, with
|
|
210
|
+
* `edgeLabelAnchors: "allNodes"`, on every edge; other settings are accepted and not read.
|
|
211
|
+
* @defaultValue sigma.js's own settings (no edge labels)
|
|
212
|
+
*/
|
|
213
|
+
sigmaSettings?: Readonly<Record<string, unknown>> | undefined;
|
|
207
214
|
}
|
|
208
215
|
|
|
209
216
|
/**
|
|
@@ -408,6 +415,15 @@ const GEPHI_NODE_KEYS: ReadonlySet<string> = new Set(["id", "attributes"]);
|
|
|
408
415
|
/** The structural keys of an edge in Gephi's JSON export. */
|
|
409
416
|
const GEPHI_EDGE_KEYS: ReadonlySet<string> = new Set([...GRAPHOLOGY_EDGE_KEYS, "id"]);
|
|
410
417
|
|
|
418
|
+
/**
|
|
419
|
+
* The keys Gephi's JSON export writes beside a node's `attributes`, the ones sigma.js draws: a Gephi column named
|
|
420
|
+
* like one of them is data under `attributes`, read as `<key>#data` so it never stands in for the element's own key.
|
|
421
|
+
*/
|
|
422
|
+
const GEPHI_NODE_DISPLAY_KEYS: ReadonlySet<string> = new Set(["label", "x", "y", "size", "color"]);
|
|
423
|
+
|
|
424
|
+
/** The keys Gephi's JSON export writes beside an edge's `attributes` (see GEPHI_NODE_DISPLAY_KEYS). */
|
|
425
|
+
const GEPHI_EDGE_DISPLAY_KEYS: ReadonlySet<string> = new Set(["label", "size", "color"]);
|
|
426
|
+
|
|
411
427
|
/** The vis.js endpoint keys. */
|
|
412
428
|
const VIS_SOURCE_KEYS: readonly string[] = Object.freeze(["from"]);
|
|
413
429
|
const VIS_TARGET_KEYS: readonly string[] = Object.freeze(["to"]);
|
|
@@ -452,6 +468,8 @@ interface ResolvedJsonOptions {
|
|
|
452
468
|
readonly edgesPath: readonly string[] | null;
|
|
453
469
|
/** Set by importAll(): every graph of a `graphs` array is read, so none is reported as skipped. */
|
|
454
470
|
readonly all?: boolean;
|
|
471
|
+
/** graphology: the sigma.js settings of the drawing. */
|
|
472
|
+
readonly sigma: SigmaSettings;
|
|
455
473
|
}
|
|
456
474
|
|
|
457
475
|
/**
|
|
@@ -499,9 +517,32 @@ function resolveJsonOptions(options: (JsonImportOptions & CommonImportOptions) |
|
|
|
499
517
|
typedefs,
|
|
500
518
|
nodesPath,
|
|
501
519
|
edgesPath,
|
|
520
|
+
sigma: sigmaSettingsOption(o.sigmaSettings),
|
|
502
521
|
};
|
|
503
522
|
}
|
|
504
523
|
|
|
524
|
+
/**
|
|
525
|
+
* Check the `sigmaSettings` option: an object, whose `renderEdgeLabels` and `edgeLabelAnchors` are sigma's values.
|
|
526
|
+
* @param value - the caller's value
|
|
527
|
+
* @returns the settings graph-io reads, sigma's own where not given
|
|
528
|
+
*/
|
|
529
|
+
function sigmaSettingsOption(value: unknown): SigmaSettings {
|
|
530
|
+
if (value === undefined) {
|
|
531
|
+
return SIGMA_DEFAULT_SETTINGS;
|
|
532
|
+
}
|
|
533
|
+
if (!isJsonObject(value)) {
|
|
534
|
+
throw unsupportedOption("sigmaSettings", value, ["an object of sigma.js settings"]);
|
|
535
|
+
}
|
|
536
|
+
const { renderEdgeLabels = false, edgeLabelAnchors = "nodeLabels" } = value;
|
|
537
|
+
if (typeof renderEdgeLabels !== "boolean") {
|
|
538
|
+
throw unsupportedOption("sigmaSettings.renderEdgeLabels", renderEdgeLabels, ["true", "false"]);
|
|
539
|
+
}
|
|
540
|
+
if (edgeLabelAnchors !== "nodeLabels" && edgeLabelAnchors !== "allNodes") {
|
|
541
|
+
throw unsupportedOption("sigmaSettings.edgeLabelAnchors", edgeLabelAnchors, ["nodeLabels", "allNodes"]);
|
|
542
|
+
}
|
|
543
|
+
return { renderEdgeLabels, edgeLabelAnchors };
|
|
544
|
+
}
|
|
545
|
+
|
|
505
546
|
/**
|
|
506
547
|
* Check a dotted path option: object keys joined by dots, none of them empty.
|
|
507
548
|
* @param name - the option name
|
|
@@ -1326,9 +1367,10 @@ export class ImportContext {
|
|
|
1326
1367
|
* @param structural - the element keys that are not attributes
|
|
1327
1368
|
* @param element - the element name for issues
|
|
1328
1369
|
* @param how - `weightFrom`: the weight key to skip in the dict; `plain`: write the element-level keys under their
|
|
1329
|
-
* own names, not with the `#element` suffix
|
|
1370
|
+
* own names, not with the `#element` suffix; `dataKeys`: the dict keys written with the `#data` suffix
|
|
1330
1371
|
* @param how.weightFrom - the weight key to skip in the dict, or null (the default)
|
|
1331
1372
|
* @param how.plain - write the element-level keys under their own names (default false)
|
|
1373
|
+
* @param how.dataKeys - the dict keys that name an element-level key, written as `<key>#data` (default none)
|
|
1332
1374
|
*/
|
|
1333
1375
|
writeNested(
|
|
1334
1376
|
writer: AttributeWriter,
|
|
@@ -1337,12 +1379,17 @@ export class ImportContext {
|
|
|
1337
1379
|
dict: JsonRecord,
|
|
1338
1380
|
structural: ReadonlySet<string>,
|
|
1339
1381
|
element: string,
|
|
1340
|
-
how: {
|
|
1382
|
+
how: {
|
|
1383
|
+
readonly weightFrom?: string | null;
|
|
1384
|
+
readonly plain?: boolean;
|
|
1385
|
+
readonly dataKeys?: ReadonlySet<string>;
|
|
1386
|
+
} = {},
|
|
1341
1387
|
): void {
|
|
1342
|
-
const { weightFrom = null, plain = false } = how;
|
|
1388
|
+
const { weightFrom = null, plain = false, dataKeys } = how;
|
|
1343
1389
|
for (const key of Object.keys(dict)) {
|
|
1344
1390
|
if (key !== weightFrom) {
|
|
1345
|
-
|
|
1391
|
+
const name = dataKeys?.has(key) === true ? `${key}${SUFFIX.data}` : key;
|
|
1392
|
+
writer.write(row, name, dict[key], SUFFIX.data, element);
|
|
1346
1393
|
}
|
|
1347
1394
|
}
|
|
1348
1395
|
for (const key of Object.keys(record)) {
|
|
@@ -2797,7 +2844,7 @@ function importGraphology(ctx: ImportContext, root: JsonRecord): void {
|
|
|
2797
2844
|
// `y`, `color`, `size`) beside `attributes`; they are read as attributes, not as unknown element keys
|
|
2798
2845
|
const firstNode = nodes.find((n) => isJsonObject(n));
|
|
2799
2846
|
const gephi = isJsonObject(firstNode) && !hasKey(firstNode, "key") && hasKey(firstNode, "id");
|
|
2800
|
-
ctx.styleSource = { dialect: "graphology", block: blockOf(root), gephi };
|
|
2847
|
+
ctx.styleSource = { dialect: "graphology", block: blockOf(root), gephi, sigma: ctx.json.sigma };
|
|
2801
2848
|
ctx.reportNodeIdFrom("graphology", "the node key");
|
|
2802
2849
|
ctx.sink.reserve(nodes.length, edges.length);
|
|
2803
2850
|
|
|
@@ -2989,6 +3036,7 @@ function pushGraphologyEdge(
|
|
|
2989
3036
|
ctx.writeNested(ctx.edges, edge, record, attributes, gephi ? GEPHI_EDGE_KEYS : GRAPHOLOGY_EDGE_KEYS, element, {
|
|
2990
3037
|
weightFrom: ctx.options.weightFrom,
|
|
2991
3038
|
plain: gephi,
|
|
3039
|
+
dataKeys: gephi ? GEPHI_EDGE_DISPLAY_KEYS : undefined,
|
|
2992
3040
|
});
|
|
2993
3041
|
if (declared.allowSelfLoops === false && u === v) {
|
|
2994
3042
|
violations.selfLoops++;
|
|
@@ -3069,7 +3117,10 @@ function pushNestedNode(
|
|
|
3069
3117
|
{ element },
|
|
3070
3118
|
);
|
|
3071
3119
|
}
|
|
3072
|
-
ctx.writeNested(ctx.nodes, index, record, isJsonObject(dict) ? dict : {}, structural, element, {
|
|
3120
|
+
ctx.writeNested(ctx.nodes, index, record, isJsonObject(dict) ? dict : {}, structural, element, {
|
|
3121
|
+
plain,
|
|
3122
|
+
dataKeys: plain ? GEPHI_NODE_DISPLAY_KEYS : undefined,
|
|
3123
|
+
});
|
|
3073
3124
|
} catch (err) {
|
|
3074
3125
|
ctx.report.recordError(err, { element: String(id) });
|
|
3075
3126
|
}
|
|
@@ -4267,6 +4318,7 @@ export const jsonImporter: GraphImporter<JsonImportOptions> = Object.freeze({
|
|
|
4267
4318
|
"nodeIdKey",
|
|
4268
4319
|
"nodesPath",
|
|
4269
4320
|
"oboIds",
|
|
4321
|
+
"sigmaSettings",
|
|
4270
4322
|
"sourceKey",
|
|
4271
4323
|
"targetKey",
|
|
4272
4324
|
"typedefs",
|
|
@@ -11,6 +11,7 @@ export {
|
|
|
11
11
|
type JsonImportDialect,
|
|
12
12
|
type JsonShapeMeta,
|
|
13
13
|
jsonShapeOf,
|
|
14
|
+
sniffJsonDialect,
|
|
14
15
|
} from "./dialect.js";
|
|
15
16
|
export { JSON_LOSS, jsonCapabilities, jsonExporter, type JsonExportOptions } from "./exporter.js";
|
|
16
17
|
export { JSON_ISSUE, jsonImporter, type JsonImportOptions } from "./importer.js";
|
|
@@ -3,12 +3,23 @@
|
|
|
3
3
|
* document has a role-`position` column the importer already flipped to y up. A plain
|
|
4
4
|
* `{ nodes: [{ x, y }] }` file is read as graphty-element's own convention (center, y up, file
|
|
5
5
|
* units) and never flipped, unless it carries a positive marker of a y-down tool: d3-force's
|
|
6
|
-
* simulation keys (`vx`, `vy`, `fx`, `fy`, `index`) or vis's `physics`.
|
|
6
|
+
* simulation keys (`vx`, `vy`, `fx`, `fy`, `index`) or vis's `physics`. A vis-network document
|
|
7
|
+
* (edges with `from` / `to`) is always y down in canvas px: vis-network draws `x` / `y` straight onto
|
|
8
|
+
* its canvas. A Cytoscape compound node's saved position is not read: Cytoscape.js draws a compound
|
|
9
|
+
* around its children.
|
|
7
10
|
*/
|
|
8
11
|
|
|
9
12
|
import type { Column, GraphSnapshot } from "@graphty/graph-format";
|
|
10
13
|
|
|
11
|
-
import type { ImporterPositions } from "../../positions/types.js";
|
|
14
|
+
import type { ImporterPositions, ViewerFit } from "../../positions/types.js";
|
|
15
|
+
import { jsonShapeOf } from "./dialect.js";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* How sigma.js fits a graphology graph into its canvas: the bounding box of the positions, 30 px in
|
|
19
|
+
* from each side, with node sizes in the positions' unit and label sizes in the canvas's px
|
|
20
|
+
* (sigma 4.0.1 settings: `stagePadding: 30`, `itemSizesReference: "positions"`, `autoRescale: true`).
|
|
21
|
+
*/
|
|
22
|
+
const SIGMA_FIT: ViewerFit = { padding: 30 };
|
|
12
23
|
|
|
13
24
|
/** Node keys that mark a y-down drawing. */
|
|
14
25
|
const Y_DOWN_MARKERS = ["vx", "vy", "fx", "fy", "index", "physics"] as const;
|
|
@@ -16,11 +27,12 @@ const Y_DOWN_MARKERS = ["vx", "vy", "fx", "fy", "index", "physics"] as const;
|
|
|
16
27
|
/**
|
|
17
28
|
* The spelling of a JSON file's positions.
|
|
18
29
|
* @param snapshot - the graph the JSON importer read
|
|
19
|
-
* @returns the plain x / y columns, or null to read
|
|
30
|
+
* @returns the plain x / y columns, the role-`position` column's spelling, or null to read that column as declared
|
|
20
31
|
*/
|
|
21
32
|
export function jsonPositions(snapshot: GraphSnapshot): ImporterPositions | null {
|
|
22
33
|
if (snapshot.nodes.byRole("position") !== null) {
|
|
23
|
-
|
|
34
|
+
// cy.json() saves a compound node's position too, but Cytoscape.js draws the compound around its children
|
|
35
|
+
return jsonShapeOf(snapshot)?.dialect === "cytoscape" ? { containersFollowChildren: true } : null;
|
|
24
36
|
}
|
|
25
37
|
const x = numeric(snapshot.nodes.get("x"));
|
|
26
38
|
const y = numeric(snapshot.nodes.get("y"));
|
|
@@ -29,13 +41,18 @@ export function jsonPositions(snapshot: GraphSnapshot): ImporterPositions | null
|
|
|
29
41
|
}
|
|
30
42
|
const z = numeric(snapshot.nodes.get("z"));
|
|
31
43
|
// a z means a 3D drawing (3d-force-graph), drawn y up even with the d3 keys
|
|
32
|
-
const
|
|
44
|
+
const dialect = jsonShapeOf(snapshot)?.dialect;
|
|
45
|
+
// sigma.js draws every graphology file y up: d3-force's keys in one do not make it a d3 drawing
|
|
46
|
+
// (graphology-specimen-node-sizes-opacity-p3)
|
|
47
|
+
const markers = dialect !== "graphology" && Y_DOWN_MARKERS.some((name) => snapshot.nodes.get(name) !== null);
|
|
48
|
+
const down = z === null && (dialect === "vis" || markers);
|
|
33
49
|
return {
|
|
34
50
|
x: x.meta.name,
|
|
35
51
|
y: y.meta.name,
|
|
36
52
|
...(z === null ? {} : { z: z.meta.name }),
|
|
37
53
|
yAxis: down ? "down" : "up",
|
|
38
54
|
units: down ? "px" : "file",
|
|
55
|
+
...(dialect === "graphology" ? { viewerFit: SIGMA_FIT } : {}),
|
|
39
56
|
};
|
|
40
57
|
}
|
|
41
58
|
|