@graphty/graph-io 0.3.43 → 0.3.44
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-3Q4TsdTh.js +40 -0
- package/dist/chunks/approximations-3Q4TsdTh.js.map +1 -0
- package/dist/chunks/block-JQiwViEt.js +2777 -0
- package/dist/chunks/block-JQiwViEt.js.map +1 -0
- package/dist/chunks/{choose-DvpbdRuz.js → choose-BemygfH8.js} +3 -2
- package/dist/chunks/{choose-DvpbdRuz.js.map → choose-BemygfH8.js.map} +1 -1
- package/dist/chunks/{constants-fT3E8JYY.js → constants-BFUR_CtU.js} +6 -2
- package/dist/chunks/constants-BFUR_CtU.js.map +1 -0
- package/dist/chunks/convert-BcQ8_jMo.js +59 -0
- package/dist/chunks/convert-BcQ8_jMo.js.map +1 -0
- package/dist/chunks/emit-DCwFLts5.js +3456 -0
- package/dist/chunks/emit-DCwFLts5.js.map +1 -0
- package/dist/chunks/{escape-B62ZGM_a.js → escape-B1rMftd9.js} +43 -20
- package/dist/chunks/escape-B1rMftd9.js.map +1 -0
- package/dist/chunks/{export-rKLeGQMo.js → export-D7IGzTG4.js} +196 -792
- package/dist/chunks/export-D7IGzTG4.js.map +1 -0
- package/dist/chunks/{exporter-BWwEuOPT.js → exporter-BtnqYuuj.js} +22 -12
- package/dist/chunks/exporter-BtnqYuuj.js.map +1 -0
- package/dist/chunks/{exporter-yLxKBvLE.js → exporter-ChPyhBOv.js} +4 -3
- package/dist/chunks/{exporter-yLxKBvLE.js.map → exporter-ChPyhBOv.js.map} +1 -1
- package/dist/chunks/{exporter-8hLNemFk.js → exporter-KEPxYUXD.js} +133 -74
- package/dist/chunks/exporter-KEPxYUXD.js.map +1 -0
- package/dist/chunks/{exporter-RVtXVetw.js → exporter-quPUCBiC.js} +1805 -287
- package/dist/chunks/exporter-quPUCBiC.js.map +1 -0
- package/dist/chunks/format-GDmO6m6Q.js +676 -0
- package/dist/chunks/format-GDmO6m6Q.js.map +1 -0
- package/dist/chunks/generic-BL06jrJf.js +1347 -0
- package/dist/chunks/generic-BL06jrJf.js.map +1 -0
- package/dist/chunks/{importer-WrGRZb0N.js → importer-B7r2owVf.js} +449 -102
- package/dist/chunks/importer-B7r2owVf.js.map +1 -0
- package/dist/chunks/{importer-Ht7LNg8L.js → importer-BFmOP96W.js} +116 -296
- package/dist/chunks/importer-BFmOP96W.js.map +1 -0
- package/dist/chunks/{importer-BbNb7eNg.js → importer-C2nzGhdV.js} +1390 -129
- package/dist/chunks/importer-C2nzGhdV.js.map +1 -0
- package/dist/chunks/{importer-Dz7tI8Sa.js → importer-CbX2_rNF.js} +617 -115
- package/dist/chunks/importer-CbX2_rNF.js.map +1 -0
- package/dist/chunks/{importer-D794XUTe.js → importer-CdzeN6X4.js} +31 -8
- package/dist/chunks/importer-CdzeN6X4.js.map +1 -0
- package/dist/chunks/{importer-xZ-3suY1.js → importer-ChKNC_GN.js} +791 -135
- package/dist/chunks/importer-ChKNC_GN.js.map +1 -0
- package/dist/chunks/{importer-C98dpSH4.js → importer-dwoYpSqb.js} +141 -82
- package/dist/chunks/importer-dwoYpSqb.js.map +1 -0
- package/dist/chunks/index-B9fdNpTA.js +4310 -0
- package/dist/chunks/index-B9fdNpTA.js.map +1 -0
- package/dist/chunks/{json-elements-DKSqpNW1.js → json-elements-C4FwgnH5.js} +123 -32
- package/dist/chunks/json-elements-C4FwgnH5.js.map +1 -0
- package/dist/chunks/lexicon-B-knUi-l.js +508 -0
- package/dist/chunks/lexicon-B-knUi-l.js.map +1 -0
- package/dist/chunks/{ontology-export-CtRXjg_i.js → ontology-export-BSpbY5FL.js} +3 -2
- package/dist/chunks/{ontology-export-CtRXjg_i.js.map → ontology-export-BSpbY5FL.js.map} +1 -1
- package/dist/chunks/{records-Cu4bxYOm.js → records-Nwz_rbNt.js} +2 -2
- package/dist/chunks/{records-Cu4bxYOm.js.map → records-Nwz_rbNt.js.map} +1 -1
- package/dist/chunks/styles-Brt9JMfs.js +690 -0
- package/dist/chunks/styles-Brt9JMfs.js.map +1 -0
- package/dist/chunks/styles-_N-C8S-U.js +2102 -0
- package/dist/chunks/styles-_N-C8S-U.js.map +1 -0
- package/dist/chunks/styles-yed-DAfcIkf7.js +842 -0
- package/dist/chunks/styles-yed-DAfcIkf7.js.map +1 -0
- package/dist/chunks/{text-DHOJXnED.js → text-CgzMqHQb.js} +2 -2
- package/dist/chunks/{text-DHOJXnED.js.map → text-CgzMqHQb.js.map} +1 -1
- package/dist/chunks/units-XMZFIFe1.js +19 -0
- package/dist/chunks/units-XMZFIFe1.js.map +1 -0
- package/dist/csv.js +5 -4
- package/dist/csv.js.map +1 -1
- package/dist/cx.js +1 -1
- package/dist/cx2.js +2 -2
- package/dist/cys.js +1 -1
- package/dist/dot.js +5 -2
- package/dist/dot.js.map +1 -1
- package/dist/gexf.js +292 -412
- package/dist/gexf.js.map +1 -1
- package/dist/gml.js +8 -3031
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +354 -240
- package/dist/graph-io.js.map +1 -1
- package/dist/graphml.js +4 -2
- package/dist/graphml.js.map +1 -1
- package/dist/json.js +1 -1
- package/dist/neo4j.js +4 -3
- package/dist/neo4j.js.map +1 -1
- package/dist/obo.js +1 -1
- package/dist/pajek.js +4 -2
- package/dist/positions.d.ts +1 -0
- package/dist/positions.js +427 -0
- package/dist/positions.js.map +1 -0
- package/dist/src/common/codes.d.ts +6 -0
- package/dist/src/common/codes.d.ts.map +1 -1
- package/dist/src/common/codes.js +6 -0
- package/dist/src/common/codes.js.map +1 -1
- package/dist/src/common/escape.d.ts.map +1 -1
- package/dist/src/common/escape.js +4 -2
- package/dist/src/common/escape.js.map +1 -1
- package/dist/src/common/export.d.ts +10 -0
- package/dist/src/common/export.d.ts.map +1 -1
- package/dist/src/common/export.js +123 -100
- package/dist/src/common/export.js.map +1 -1
- package/dist/src/common/input.d.ts.map +1 -1
- package/dist/src/common/input.js +8 -1
- package/dist/src/common/input.js.map +1 -1
- package/dist/src/common/json-elements.d.ts +12 -9
- package/dist/src/common/json-elements.d.ts.map +1 -1
- package/dist/src/common/json-elements.js +160 -37
- package/dist/src/common/json-elements.js.map +1 -1
- package/dist/src/common/notes.d.ts +42 -0
- package/dist/src/common/notes.d.ts.map +1 -0
- package/dist/src/common/notes.js +72 -0
- package/dist/src/common/notes.js.map +1 -0
- package/dist/src/common/report.d.ts +18 -0
- package/dist/src/common/report.d.ts.map +1 -1
- package/dist/src/common/report.js +36 -1
- package/dist/src/common/report.js.map +1 -1
- package/dist/src/common/units.d.ts +24 -0
- package/dist/src/common/units.d.ts.map +1 -0
- package/dist/src/common/units.js +26 -0
- package/dist/src/common/units.js.map +1 -0
- package/dist/src/common/xml.d.ts +18 -0
- package/dist/src/common/xml.d.ts.map +1 -1
- package/dist/src/common/xml.js +42 -5
- package/dist/src/common/xml.js.map +1 -1
- package/dist/src/formats/cx/exporter.d.ts +6 -0
- package/dist/src/formats/cx/exporter.d.ts.map +1 -1
- package/dist/src/formats/cx/exporter.js +71 -8
- package/dist/src/formats/cx/exporter.js.map +1 -1
- package/dist/src/formats/cx/importer.d.ts +5 -2
- package/dist/src/formats/cx/importer.d.ts.map +1 -1
- package/dist/src/formats/cx/importer.js +102 -72
- package/dist/src/formats/cx/importer.js.map +1 -1
- package/dist/src/formats/cx/styles.d.ts +102 -0
- package/dist/src/formats/cx/styles.d.ts.map +1 -0
- package/dist/src/formats/cx/styles.js +225 -0
- package/dist/src/formats/cx/styles.js.map +1 -0
- package/dist/src/formats/cx2/exporter.d.ts +5 -0
- package/dist/src/formats/cx2/exporter.d.ts.map +1 -1
- package/dist/src/formats/cx2/exporter.js +181 -71
- package/dist/src/formats/cx2/exporter.js.map +1 -1
- package/dist/src/formats/cx2/importer.d.ts +4 -1
- package/dist/src/formats/cx2/importer.d.ts.map +1 -1
- package/dist/src/formats/cx2/importer.js +19 -1
- package/dist/src/formats/cx2/importer.js.map +1 -1
- package/dist/src/formats/cx2/styles.d.ts +18 -0
- package/dist/src/formats/cx2/styles.d.ts.map +1 -0
- package/dist/src/formats/cx2/styles.js +24 -0
- package/dist/src/formats/cx2/styles.js.map +1 -0
- package/dist/src/formats/cys/constants.d.ts +2 -0
- package/dist/src/formats/cys/constants.d.ts.map +1 -1
- package/dist/src/formats/cys/constants.js +2 -0
- package/dist/src/formats/cys/constants.js.map +1 -1
- package/dist/src/formats/cys/exporter.d.ts +6 -2
- package/dist/src/formats/cys/exporter.d.ts.map +1 -1
- package/dist/src/formats/cys/exporter.js +215 -53
- package/dist/src/formats/cys/exporter.js.map +1 -1
- package/dist/src/formats/cys/importer.d.ts +2 -1
- package/dist/src/formats/cys/importer.d.ts.map +1 -1
- package/dist/src/formats/cys/importer.js +119 -6
- package/dist/src/formats/cys/importer.js.map +1 -1
- package/dist/src/formats/cys/session.d.ts +2 -0
- package/dist/src/formats/cys/session.d.ts.map +1 -1
- package/dist/src/formats/cys/session.js +5 -0
- package/dist/src/formats/cys/session.js.map +1 -1
- package/dist/src/formats/cys/styles.d.ts +38 -0
- package/dist/src/formats/cys/styles.d.ts.map +1 -0
- package/dist/src/formats/cys/styles.js +213 -0
- package/dist/src/formats/cys/styles.js.map +1 -0
- package/dist/src/formats/cys/tables.d.ts +8 -3
- package/dist/src/formats/cys/tables.d.ts.map +1 -1
- package/dist/src/formats/cys/tables.js +88 -34
- package/dist/src/formats/cys/tables.js.map +1 -1
- package/dist/src/formats/dot/exporter.d.ts +2 -0
- package/dist/src/formats/dot/exporter.d.ts.map +1 -1
- package/dist/src/formats/dot/exporter.js +195 -81
- package/dist/src/formats/dot/exporter.js.map +1 -1
- package/dist/src/formats/dot/importer.d.ts.map +1 -1
- package/dist/src/formats/dot/importer.js +100 -20
- package/dist/src/formats/dot/importer.js.map +1 -1
- package/dist/src/formats/dot/index.d.ts +1 -0
- package/dist/src/formats/dot/index.d.ts.map +1 -1
- package/dist/src/formats/dot/index.js +1 -0
- package/dist/src/formats/dot/index.js.map +1 -1
- package/dist/src/formats/dot/positions.d.ts +14 -0
- package/dist/src/formats/dot/positions.d.ts.map +1 -0
- package/dist/src/formats/dot/positions.js +70 -0
- package/dist/src/formats/dot/positions.js.map +1 -0
- package/dist/src/formats/dot/styles.d.ts +82 -0
- package/dist/src/formats/dot/styles.d.ts.map +1 -0
- package/dist/src/formats/dot/styles.js +1484 -0
- package/dist/src/formats/dot/styles.js.map +1 -0
- package/dist/src/formats/gexf/exporter.d.ts.map +1 -1
- package/dist/src/formats/gexf/exporter.js +20 -5
- package/dist/src/formats/gexf/exporter.js.map +1 -1
- package/dist/src/formats/gexf/importer.d.ts +8 -1
- package/dist/src/formats/gexf/importer.d.ts.map +1 -1
- package/dist/src/formats/gexf/importer.js +251 -131
- package/dist/src/formats/gexf/importer.js.map +1 -1
- package/dist/src/formats/gexf/index.d.ts +8 -0
- package/dist/src/formats/gexf/index.d.ts.map +1 -1
- package/dist/src/formats/gexf/index.js +10 -2
- package/dist/src/formats/gexf/index.js.map +1 -1
- package/dist/src/formats/gexf/schema.d.ts +5 -0
- package/dist/src/formats/gexf/schema.d.ts.map +1 -1
- package/dist/src/formats/gexf/schema.js +5 -0
- package/dist/src/formats/gexf/schema.js.map +1 -1
- package/dist/src/formats/gexf/styles.d.ts +74 -0
- package/dist/src/formats/gexf/styles.d.ts.map +1 -0
- package/dist/src/formats/gexf/styles.js +604 -0
- package/dist/src/formats/gexf/styles.js.map +1 -0
- package/dist/src/formats/gml/exporter.d.ts +1 -5
- package/dist/src/formats/gml/exporter.d.ts.map +1 -1
- package/dist/src/formats/gml/exporter.js +19 -8
- package/dist/src/formats/gml/exporter.js.map +1 -1
- package/dist/src/formats/gml/importer.d.ts.map +1 -1
- package/dist/src/formats/gml/importer.js +4 -0
- package/dist/src/formats/gml/importer.js.map +1 -1
- package/dist/src/formats/gml/index.d.ts +2 -1
- package/dist/src/formats/gml/index.d.ts.map +1 -1
- package/dist/src/formats/gml/index.js +2 -1
- package/dist/src/formats/gml/index.js.map +1 -1
- package/dist/src/formats/gml/positions.d.ts +14 -0
- package/dist/src/formats/gml/positions.d.ts.map +1 -0
- package/dist/src/formats/gml/positions.js +46 -0
- package/dist/src/formats/gml/positions.js.map +1 -0
- package/dist/src/formats/gml/styles.d.ts +59 -0
- package/dist/src/formats/gml/styles.d.ts.map +1 -0
- package/dist/src/formats/gml/styles.js +1056 -0
- package/dist/src/formats/gml/styles.js.map +1 -0
- package/dist/src/formats/gml/syntax.d.ts +11 -0
- package/dist/src/formats/gml/syntax.d.ts.map +1 -1
- package/dist/src/formats/gml/syntax.js +151 -62
- package/dist/src/formats/gml/syntax.js.map +1 -1
- package/dist/src/formats/graphml/constants.d.ts +4 -0
- package/dist/src/formats/graphml/constants.d.ts.map +1 -1
- package/dist/src/formats/graphml/constants.js +5 -1
- package/dist/src/formats/graphml/constants.js.map +1 -1
- package/dist/src/formats/graphml/exporter.d.ts.map +1 -1
- package/dist/src/formats/graphml/exporter.js +133 -65
- package/dist/src/formats/graphml/exporter.js.map +1 -1
- package/dist/src/formats/graphml/importer.d.ts +4 -1
- package/dist/src/formats/graphml/importer.d.ts.map +1 -1
- package/dist/src/formats/graphml/importer.js +100 -44
- package/dist/src/formats/graphml/importer.js.map +1 -1
- package/dist/src/formats/graphml/index.d.ts +1 -0
- package/dist/src/formats/graphml/index.d.ts.map +1 -1
- package/dist/src/formats/graphml/index.js +1 -0
- package/dist/src/formats/graphml/index.js.map +1 -1
- package/dist/src/formats/graphml/styles-plain.d.ts +19 -0
- package/dist/src/formats/graphml/styles-plain.d.ts.map +1 -0
- package/dist/src/formats/graphml/styles-plain.js +187 -0
- package/dist/src/formats/graphml/styles-plain.js.map +1 -0
- package/dist/src/formats/graphml/styles-yed.d.ts +179 -0
- package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -0
- package/dist/src/formats/graphml/styles-yed.js +1086 -0
- package/dist/src/formats/graphml/styles-yed.js.map +1 -0
- package/dist/src/formats/graphml/styles-yfiles3.d.ts +19 -0
- package/dist/src/formats/graphml/styles-yfiles3.d.ts.map +1 -0
- package/dist/src/formats/graphml/styles-yfiles3.js +508 -0
- package/dist/src/formats/graphml/styles-yfiles3.js.map +1 -0
- package/dist/src/formats/graphml/tree.d.ts.map +1 -1
- package/dist/src/formats/graphml/tree.js +34 -19
- package/dist/src/formats/graphml/tree.js.map +1 -1
- package/dist/src/formats/graphml/yfiles.d.ts +16 -2
- package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
- package/dist/src/formats/graphml/yfiles.js +83 -12
- package/dist/src/formats/graphml/yfiles.js.map +1 -1
- package/dist/src/formats/json/exporter.d.ts +5 -0
- package/dist/src/formats/json/exporter.d.ts.map +1 -1
- package/dist/src/formats/json/exporter.js +68 -25
- package/dist/src/formats/json/exporter.js.map +1 -1
- package/dist/src/formats/json/importer.d.ts +22 -3
- package/dist/src/formats/json/importer.d.ts.map +1 -1
- package/dist/src/formats/json/importer.js +439 -264
- package/dist/src/formats/json/importer.js.map +1 -1
- package/dist/src/formats/json/positions.d.ts +16 -0
- package/dist/src/formats/json/positions.d.ts.map +1 -0
- package/dist/src/formats/json/positions.js +44 -0
- package/dist/src/formats/json/positions.js.map +1 -0
- package/dist/src/formats/json/styles.d.ts +102 -0
- package/dist/src/formats/json/styles.d.ts.map +1 -0
- package/dist/src/formats/json/styles.js +1753 -0
- package/dist/src/formats/json/styles.js.map +1 -0
- package/dist/src/formats/neo4j/exporter.d.ts.map +1 -1
- package/dist/src/formats/neo4j/exporter.js +2 -1
- package/dist/src/formats/neo4j/exporter.js.map +1 -1
- package/dist/src/formats/pajek/exporter.d.ts +2 -0
- package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
- package/dist/src/formats/pajek/exporter.js +142 -76
- package/dist/src/formats/pajek/exporter.js.map +1 -1
- package/dist/src/formats/pajek/importer.d.ts +4 -0
- package/dist/src/formats/pajek/importer.d.ts.map +1 -1
- package/dist/src/formats/pajek/importer.js +60 -6
- package/dist/src/formats/pajek/importer.js.map +1 -1
- package/dist/src/formats/pajek/index.d.ts +2 -0
- package/dist/src/formats/pajek/index.d.ts.map +1 -1
- package/dist/src/formats/pajek/index.js +2 -0
- package/dist/src/formats/pajek/index.js.map +1 -1
- package/dist/src/formats/pajek/styles.d.ts +50 -0
- package/dist/src/formats/pajek/styles.d.ts.map +1 -0
- package/dist/src/formats/pajek/styles.js +569 -0
- package/dist/src/formats/pajek/styles.js.map +1 -0
- package/dist/src/formats/pajek/syntax.d.ts +6 -0
- package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
- package/dist/src/formats/pajek/syntax.js +6 -0
- package/dist/src/formats/pajek/syntax.js.map +1 -1
- package/dist/src/formats/xgmml/columns.d.ts.map +1 -1
- package/dist/src/formats/xgmml/columns.js +34 -9
- package/dist/src/formats/xgmml/columns.js.map +1 -1
- package/dist/src/formats/xgmml/constants.d.ts +2 -0
- package/dist/src/formats/xgmml/constants.d.ts.map +1 -1
- package/dist/src/formats/xgmml/constants.js +3 -1
- package/dist/src/formats/xgmml/constants.js.map +1 -1
- package/dist/src/formats/xgmml/document.d.ts +12 -8
- package/dist/src/formats/xgmml/document.d.ts.map +1 -1
- package/dist/src/formats/xgmml/document.js +56 -13
- package/dist/src/formats/xgmml/document.js.map +1 -1
- package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
- package/dist/src/formats/xgmml/emit.js +12 -6
- package/dist/src/formats/xgmml/emit.js.map +1 -1
- package/dist/src/formats/xgmml/exporter.d.ts +3 -1
- package/dist/src/formats/xgmml/exporter.d.ts.map +1 -1
- package/dist/src/formats/xgmml/exporter.js +22 -9
- package/dist/src/formats/xgmml/exporter.js.map +1 -1
- package/dist/src/formats/xgmml/importer.d.ts +2 -1
- package/dist/src/formats/xgmml/importer.d.ts.map +1 -1
- package/dist/src/formats/xgmml/importer.js +31 -24
- package/dist/src/formats/xgmml/importer.js.map +1 -1
- package/dist/src/formats/xgmml/styles.d.ts +104 -0
- package/dist/src/formats/xgmml/styles.d.ts.map +1 -0
- package/dist/src/formats/xgmml/styles.js +310 -0
- package/dist/src/formats/xgmml/styles.js.map +1 -0
- package/dist/src/index.d.ts +9 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -7
- package/dist/src/index.js.map +1 -1
- package/dist/src/positions/codes.d.ts +31 -0
- package/dist/src/positions/codes.d.ts.map +1 -0
- package/dist/src/positions/codes.js +26 -0
- package/dist/src/positions/codes.js.map +1 -0
- package/dist/src/positions/convert.d.ts +58 -0
- package/dist/src/positions/convert.d.ts.map +1 -0
- package/dist/src/positions/convert.js +107 -0
- package/dist/src/positions/convert.js.map +1 -0
- package/dist/src/positions/extract.d.ts +27 -0
- package/dist/src/positions/extract.d.ts.map +1 -0
- package/dist/src/positions/extract.js +526 -0
- package/dist/src/positions/extract.js.map +1 -0
- package/dist/src/positions/index.d.ts +10 -0
- package/dist/src/positions/index.d.ts.map +1 -0
- package/dist/src/positions/index.js +9 -0
- package/dist/src/positions/index.js.map +1 -0
- package/dist/src/positions/types.d.ts +208 -0
- package/dist/src/positions/types.d.ts.map +1 -0
- package/dist/src/positions/types.js +10 -0
- package/dist/src/positions/types.js.map +1 -0
- package/dist/src/registry.d.ts +30 -0
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +130 -9
- package/dist/src/registry.js.map +1 -1
- package/dist/src/styles/annotations.d.ts +132 -0
- package/dist/src/styles/annotations.d.ts.map +1 -0
- package/dist/src/styles/annotations.js +320 -0
- package/dist/src/styles/annotations.js.map +1 -0
- package/dist/src/styles/budget.d.ts +45 -0
- package/dist/src/styles/budget.d.ts.map +1 -0
- package/dist/src/styles/budget.js +58 -0
- package/dist/src/styles/budget.js.map +1 -0
- package/dist/src/styles/canon/bends.d.ts +32 -0
- package/dist/src/styles/canon/bends.d.ts.map +1 -0
- package/dist/src/styles/canon/bends.js +74 -0
- package/dist/src/styles/canon/bends.js.map +1 -0
- package/dist/src/styles/canon/color-tables.d.ts +22 -0
- package/dist/src/styles/canon/color-tables.d.ts.map +1 -0
- package/dist/src/styles/canon/color-tables.js +369 -0
- package/dist/src/styles/canon/color-tables.js.map +1 -0
- package/dist/src/styles/canon/color.d.ts +66 -0
- package/dist/src/styles/canon/color.d.ts.map +1 -0
- package/dist/src/styles/canon/color.js +548 -0
- package/dist/src/styles/canon/color.js.map +1 -0
- package/dist/src/styles/canon/enums.d.ts +25 -0
- package/dist/src/styles/canon/enums.d.ts.map +1 -0
- package/dist/src/styles/canon/enums.js +187 -0
- package/dist/src/styles/canon/enums.js.map +1 -0
- package/dist/src/styles/canon/graphviz.d.ts +48 -0
- package/dist/src/styles/canon/graphviz.d.ts.map +1 -0
- package/dist/src/styles/canon/graphviz.js +160 -0
- package/dist/src/styles/canon/graphviz.js.map +1 -0
- package/dist/src/styles/canon/index.d.ts +13 -0
- package/dist/src/styles/canon/index.d.ts.map +1 -0
- package/dist/src/styles/canon/index.js +13 -0
- package/dist/src/styles/canon/index.js.map +1 -0
- package/dist/src/styles/canon/number.d.ts +59 -0
- package/dist/src/styles/canon/number.d.ts.map +1 -0
- package/dist/src/styles/canon/number.js +142 -0
- package/dist/src/styles/canon/number.js.map +1 -0
- package/dist/src/styles/canon/site.d.ts +51 -0
- package/dist/src/styles/canon/site.d.ts.map +1 -0
- package/dist/src/styles/canon/site.js +63 -0
- package/dist/src/styles/canon/site.js.map +1 -0
- package/dist/src/styles/canon/text.d.ts +61 -0
- package/dist/src/styles/canon/text.d.ts.map +1 -0
- package/dist/src/styles/canon/text.js +199 -0
- package/dist/src/styles/canon/text.js.map +1 -0
- package/dist/src/styles/codes.d.ts +95 -0
- package/dist/src/styles/codes.d.ts.map +1 -0
- package/dist/src/styles/codes.js +97 -0
- package/dist/src/styles/codes.js.map +1 -0
- package/dist/src/styles/cyjs/cascade.d.ts +134 -0
- package/dist/src/styles/cyjs/cascade.d.ts.map +1 -0
- package/dist/src/styles/cyjs/cascade.js +2252 -0
- package/dist/src/styles/cyjs/cascade.js.map +1 -0
- package/dist/src/styles/cyjs/defaults-table.d.ts +25 -0
- package/dist/src/styles/cyjs/defaults-table.d.ts.map +1 -0
- package/dist/src/styles/cyjs/defaults-table.js +76 -0
- package/dist/src/styles/cyjs/defaults-table.js.map +1 -0
- package/dist/src/styles/cyjs/emit.d.ts +82 -0
- package/dist/src/styles/cyjs/emit.d.ts.map +1 -0
- package/dist/src/styles/cyjs/emit.js +790 -0
- package/dist/src/styles/cyjs/emit.js.map +1 -0
- package/dist/src/styles/cyjs/index.d.ts +13 -0
- package/dist/src/styles/cyjs/index.d.ts.map +1 -0
- package/dist/src/styles/cyjs/index.js +13 -0
- package/dist/src/styles/cyjs/index.js.map +1 -0
- package/dist/src/styles/cyjs/live.d.ts +46 -0
- package/dist/src/styles/cyjs/live.d.ts.map +1 -0
- package/dist/src/styles/cyjs/live.js +108 -0
- package/dist/src/styles/cyjs/live.js.map +1 -0
- package/dist/src/styles/cyjs/mappers.d.ts +147 -0
- package/dist/src/styles/cyjs/mappers.d.ts.map +1 -0
- package/dist/src/styles/cyjs/mappers.js +744 -0
- package/dist/src/styles/cyjs/mappers.js.map +1 -0
- package/dist/src/styles/cyjs/selector.d.ts +113 -0
- package/dist/src/styles/cyjs/selector.d.ts.map +1 -0
- package/dist/src/styles/cyjs/selector.js +611 -0
- package/dist/src/styles/cyjs/selector.js.map +1 -0
- package/dist/src/styles/cyjs/stylesheet-text.d.ts +37 -0
- package/dist/src/styles/cyjs/stylesheet-text.d.ts.map +1 -0
- package/dist/src/styles/cyjs/stylesheet-text.js +181 -0
- package/dist/src/styles/cyjs/stylesheet-text.js.map +1 -0
- package/dist/src/styles/cytoscape/emit.d.ts +125 -0
- package/dist/src/styles/cytoscape/emit.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/emit.js +1025 -0
- package/dist/src/styles/cytoscape/emit.js.map +1 -0
- package/dist/src/styles/cytoscape/index.d.ts +10 -0
- package/dist/src/styles/cytoscape/index.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/index.js +10 -0
- package/dist/src/styles/cytoscape/index.js.map +1 -0
- package/dist/src/styles/cytoscape/lexicon.d.ts +49 -0
- package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/lexicon.js +603 -0
- package/dist/src/styles/cytoscape/lexicon.js.map +1 -0
- package/dist/src/styles/cytoscape/mappings.d.ts +171 -0
- package/dist/src/styles/cytoscape/mappings.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/mappings.js +460 -0
- package/dist/src/styles/cytoscape/mappings.js.map +1 -0
- package/dist/src/styles/cytoscape/resolve.d.ts +137 -0
- package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/resolve.js +381 -0
- package/dist/src/styles/cytoscape/resolve.js.map +1 -0
- package/dist/src/styles/cytoscape/translate.d.ts +50 -0
- package/dist/src/styles/cytoscape/translate.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/translate.js +156 -0
- package/dist/src/styles/cytoscape/translate.js.map +1 -0
- package/dist/src/styles/defaults.d.ts +90 -0
- package/dist/src/styles/defaults.d.ts.map +1 -0
- package/dist/src/styles/defaults.js +414 -0
- package/dist/src/styles/defaults.js.map +1 -0
- package/dist/src/styles/index.d.ts +15 -0
- package/dist/src/styles/index.d.ts.map +1 -0
- package/dist/src/styles/index.js +14 -0
- package/dist/src/styles/index.js.map +1 -0
- package/dist/src/styles/internal.d.ts +17 -0
- package/dist/src/styles/internal.d.ts.map +1 -0
- package/dist/src/styles/internal.js +16 -0
- package/dist/src/styles/internal.js.map +1 -0
- package/dist/src/styles/io/approximations.d.ts +24 -0
- package/dist/src/styles/io/approximations.d.ts.map +1 -0
- package/dist/src/styles/io/approximations.js +51 -0
- package/dist/src/styles/io/approximations.js.map +1 -0
- package/dist/src/styles/io/block.d.ts +166 -0
- package/dist/src/styles/io/block.d.ts.map +1 -0
- package/dist/src/styles/io/block.js +930 -0
- package/dist/src/styles/io/block.js.map +1 -0
- package/dist/src/styles/io/generic.d.ts +88 -0
- package/dist/src/styles/io/generic.d.ts.map +1 -0
- package/dist/src/styles/io/generic.js +516 -0
- package/dist/src/styles/io/generic.js.map +1 -0
- package/dist/src/styles/io/index.d.ts +8 -0
- package/dist/src/styles/io/index.d.ts.map +1 -0
- package/dist/src/styles/io/index.js +7 -0
- package/dist/src/styles/io/index.js.map +1 -0
- package/dist/src/styles/io/writer.d.ts +80 -0
- package/dist/src/styles/io/writer.d.ts.map +1 -0
- package/dist/src/styles/io/writer.js +596 -0
- package/dist/src/styles/io/writer.js.map +1 -0
- package/dist/src/styles/notes.d.ts +47 -0
- package/dist/src/styles/notes.d.ts.map +1 -0
- package/dist/src/styles/notes.js +140 -0
- package/dist/src/styles/notes.js.map +1 -0
- package/dist/src/styles/plan/classes.d.ts +31 -0
- package/dist/src/styles/plan/classes.d.ts.map +1 -0
- package/dist/src/styles/plan/classes.js +139 -0
- package/dist/src/styles/plan/classes.js.map +1 -0
- package/dist/src/styles/plan/continuous.d.ts +32 -0
- package/dist/src/styles/plan/continuous.d.ts.map +1 -0
- package/dist/src/styles/plan/continuous.js +165 -0
- package/dist/src/styles/plan/continuous.js.map +1 -0
- package/dist/src/styles/plan/discrete.d.ts +39 -0
- package/dist/src/styles/plan/discrete.d.ts.map +1 -0
- package/dist/src/styles/plan/discrete.js +127 -0
- package/dist/src/styles/plan/discrete.js.map +1 -0
- package/dist/src/styles/plan/families.d.ts +31 -0
- package/dist/src/styles/plan/families.d.ts.map +1 -0
- package/dist/src/styles/plan/families.js +95 -0
- package/dist/src/styles/plan/families.js.map +1 -0
- package/dist/src/styles/plan/features.d.ts +58 -0
- package/dist/src/styles/plan/features.d.ts.map +1 -0
- package/dist/src/styles/plan/features.js +185 -0
- package/dist/src/styles/plan/features.js.map +1 -0
- package/dist/src/styles/plan/index.d.ts +7 -0
- package/dist/src/styles/plan/index.d.ts.map +1 -0
- package/dist/src/styles/plan/index.js +7 -0
- package/dist/src/styles/plan/index.js.map +1 -0
- package/dist/src/styles/plan/plan.d.ts +71 -0
- package/dist/src/styles/plan/plan.d.ts.map +1 -0
- package/dist/src/styles/plan/plan.js +893 -0
- package/dist/src/styles/plan/plan.js.map +1 -0
- package/dist/src/styles/plan/resolve.d.ts +137 -0
- package/dist/src/styles/plan/resolve.d.ts.map +1 -0
- package/dist/src/styles/plan/resolve.js +587 -0
- package/dist/src/styles/plan/resolve.js.map +1 -0
- package/dist/src/styles/types.d.ts +702 -0
- package/dist/src/styles/types.d.ts.map +1 -0
- package/dist/src/styles/types.js +10 -0
- package/dist/src/styles/types.js.map +1 -0
- package/dist/src/styles/vocabulary.d.ts +41 -0
- package/dist/src/styles/vocabulary.d.ts.map +1 -0
- package/dist/src/styles/vocabulary.js +140 -0
- package/dist/src/styles/vocabulary.js.map +1 -0
- package/dist/src/types.d.ts +64 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/styles.d.ts +1 -0
- package/dist/styles.js +322 -0
- package/dist/styles.js.map +1 -0
- package/dist/xgmml.js +5 -4
- package/dist/xgmml.js.map +1 -1
- package/package.json +13 -2
- package/src/common/codes.ts +7 -0
- package/src/common/escape.ts +5 -2
- package/src/common/export.ts +179 -140
- package/src/common/input.ts +8 -4
- package/src/common/json-elements.ts +169 -38
- package/src/common/notes.ts +94 -0
- package/src/common/report.ts +41 -1
- package/src/common/units.ts +42 -0
- package/src/common/xml.ts +45 -5
- package/src/formats/cx/exporter.ts +95 -11
- package/src/formats/cx/importer.ts +126 -90
- package/src/formats/cx/styles.ts +304 -0
- package/src/formats/cx2/exporter.ts +234 -77
- package/src/formats/cx2/importer.ts +19 -1
- package/src/formats/cx2/styles.ts +29 -0
- package/src/formats/cys/constants.ts +3 -0
- package/src/formats/cys/exporter.ts +246 -60
- package/src/formats/cys/importer.ts +125 -9
- package/src/formats/cys/session.ts +6 -0
- package/src/formats/cys/styles.ts +254 -0
- package/src/formats/cys/tables.ts +117 -48
- package/src/formats/dot/exporter.ts +262 -126
- package/src/formats/dot/importer.ts +111 -20
- package/src/formats/dot/index.ts +1 -0
- package/src/formats/dot/positions.ts +77 -0
- package/src/formats/dot/styles.ts +1741 -0
- package/src/formats/gexf/exporter.ts +27 -11
- package/src/formats/gexf/importer.ts +308 -158
- package/src/formats/gexf/index.ts +10 -0
- package/src/formats/gexf/schema.ts +5 -0
- package/src/formats/gexf/styles.ts +719 -0
- package/src/formats/gml/exporter.ts +33 -14
- package/src/formats/gml/importer.ts +4 -0
- package/src/formats/gml/index.ts +2 -1
- package/src/formats/gml/positions.ts +52 -0
- package/src/formats/gml/styles.ts +1248 -0
- package/src/formats/gml/syntax.ts +173 -62
- package/src/formats/graphml/constants.ts +5 -0
- package/src/formats/graphml/exporter.ts +163 -71
- package/src/formats/graphml/importer.ts +119 -45
- package/src/formats/graphml/index.ts +1 -0
- package/src/formats/graphml/styles-plain.ts +236 -0
- package/src/formats/graphml/styles-yed.ts +1221 -0
- package/src/formats/graphml/styles-yfiles3.ts +573 -0
- package/src/formats/graphml/tree.ts +36 -20
- package/src/formats/graphml/yfiles.ts +89 -13
- package/src/formats/json/exporter.ts +76 -26
- package/src/formats/json/importer.ts +541 -322
- package/src/formats/json/positions.ts +50 -0
- package/src/formats/json/styles.ts +2082 -0
- package/src/formats/neo4j/exporter.ts +2 -1
- package/src/formats/pajek/exporter.ts +195 -106
- package/src/formats/pajek/importer.ts +78 -9
- package/src/formats/pajek/index.ts +2 -0
- package/src/formats/pajek/styles.ts +685 -0
- package/src/formats/pajek/syntax.ts +7 -0
- package/src/formats/xgmml/columns.ts +39 -9
- package/src/formats/xgmml/constants.ts +3 -0
- package/src/formats/xgmml/document.ts +54 -12
- package/src/formats/xgmml/emit.ts +11 -6
- package/src/formats/xgmml/exporter.ts +32 -13
- package/src/formats/xgmml/importer.ts +43 -29
- package/src/formats/xgmml/styles.ts +400 -0
- package/src/index.ts +16 -0
- package/src/positions/codes.ts +32 -0
- package/src/positions/convert.ts +123 -0
- package/src/positions/extract.ts +619 -0
- package/src/positions/index.ts +23 -0
- package/src/positions/types.ts +221 -0
- package/src/registry.ts +179 -8
- package/src/styles/annotations.ts +478 -0
- package/src/styles/budget.ts +60 -0
- package/src/styles/canon/bends.ts +84 -0
- package/src/styles/canon/color-tables.ts +386 -0
- package/src/styles/canon/color.ts +624 -0
- package/src/styles/canon/enums.ts +211 -0
- package/src/styles/canon/graphviz.ts +189 -0
- package/src/styles/canon/index.ts +13 -0
- package/src/styles/canon/number.ts +152 -0
- package/src/styles/canon/site.ts +87 -0
- package/src/styles/canon/text.ts +221 -0
- package/src/styles/codes.ts +104 -0
- package/src/styles/cyjs/cascade.ts +2670 -0
- package/src/styles/cyjs/defaults-table.ts +82 -0
- package/src/styles/cyjs/emit.ts +951 -0
- package/src/styles/cyjs/index.ts +37 -0
- package/src/styles/cyjs/live.ts +147 -0
- package/src/styles/cyjs/mappers.ts +879 -0
- package/src/styles/cyjs/selector.ts +778 -0
- package/src/styles/cyjs/stylesheet-text.ts +214 -0
- package/src/styles/cytoscape/emit.ts +1264 -0
- package/src/styles/cytoscape/index.ts +40 -0
- package/src/styles/cytoscape/lexicon.ts +656 -0
- package/src/styles/cytoscape/mappings.ts +603 -0
- package/src/styles/cytoscape/resolve.ts +521 -0
- package/src/styles/cytoscape/translate.ts +237 -0
- package/src/styles/defaults.ts +504 -0
- package/src/styles/index.ts +57 -0
- package/src/styles/internal.ts +17 -0
- package/src/styles/io/approximations.ts +47 -0
- package/src/styles/io/block.ts +1138 -0
- package/src/styles/io/generic.ts +687 -0
- package/src/styles/io/index.ts +18 -0
- package/src/styles/io/writer.ts +745 -0
- package/src/styles/notes.ts +165 -0
- package/src/styles/plan/classes.ts +166 -0
- package/src/styles/plan/continuous.ts +218 -0
- package/src/styles/plan/discrete.ts +165 -0
- package/src/styles/plan/families.ts +115 -0
- package/src/styles/plan/features.ts +234 -0
- package/src/styles/plan/index.ts +7 -0
- package/src/styles/plan/plan.ts +1129 -0
- package/src/styles/plan/resolve.ts +685 -0
- package/src/styles/types.ts +814 -0
- package/src/styles/vocabulary.ts +172 -0
- package/src/types.ts +76 -1
- package/dist/chunks/constants-fT3E8JYY.js.map +0 -1
- package/dist/chunks/escape-B62ZGM_a.js.map +0 -1
- package/dist/chunks/export-rKLeGQMo.js.map +0 -1
- package/dist/chunks/exporter-8hLNemFk.js.map +0 -1
- package/dist/chunks/exporter-BWwEuOPT.js.map +0 -1
- package/dist/chunks/exporter-RVtXVetw.js.map +0 -1
- package/dist/chunks/importer-BbNb7eNg.js.map +0 -1
- package/dist/chunks/importer-C98dpSH4.js.map +0 -1
- package/dist/chunks/importer-D794XUTe.js.map +0 -1
- package/dist/chunks/importer-Dz7tI8Sa.js.map +0 -1
- package/dist/chunks/importer-Ht7LNg8L.js.map +0 -1
- package/dist/chunks/importer-WrGRZb0N.js.map +0 -1
- package/dist/chunks/importer-xZ-3suY1.js.map +0 -1
- package/dist/chunks/json-elements-DKSqpNW1.js.map +0 -1
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The types of `@graphty/graph-io/positions`: the neutral form every format's stored node
|
|
3
|
+
* coordinates are read into, and how a column or an importer says how its coordinates are spelled.
|
|
4
|
+
*
|
|
5
|
+
* The neutral convention: every coordinate is the node's center, y grows upward, in the file's own
|
|
6
|
+
* length unit (`units`), with 3 components (z = 0 when the file stored 2, or when every node has the
|
|
7
|
+
* same z).
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { GraphTool, LengthUnit } from "../common/units.js";
|
|
11
|
+
import type { PositionNoteCode } from "./codes.js";
|
|
12
|
+
|
|
13
|
+
export type { GraphTool, LengthUnit } from "../common/units.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Which way a file's y coordinate grows. "down" is screen order (yEd, Cytoscape, Pajek, d3), "up"
|
|
17
|
+
* is math order (Gephi, Graphviz, graph-io's own position columns).
|
|
18
|
+
* @category Positions
|
|
19
|
+
*/
|
|
20
|
+
export type YAxis = "up" | "down";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* What a stored node coordinate points at: the node's center, or the top-left corner of its box
|
|
24
|
+
* (yEd), which needs the node's width and height to find the center.
|
|
25
|
+
* @category Positions
|
|
26
|
+
*/
|
|
27
|
+
export type PositionAnchor = "center" | "top-left";
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* How a role-`position` column's values are spelled, as optional fields of the column's
|
|
31
|
+
* `meta.extra`. A missing field means y up, center, `"file"` units: what the Cytoscape-family,
|
|
32
|
+
* GEXF and DOT columns already hold.
|
|
33
|
+
* @category Positions
|
|
34
|
+
*/
|
|
35
|
+
export interface PositionColumnExtra {
|
|
36
|
+
/** The unit of the coordinates. */
|
|
37
|
+
readonly units?: LengthUnit;
|
|
38
|
+
/**
|
|
39
|
+
* How many px (points) one unit of the coordinates is, when `units` is "file" but the file's
|
|
40
|
+
* unit is a known length: 72 for Graphviz input inches. Lets a reader draw the coordinates in
|
|
41
|
+
* the same unit as the file's px style lengths; the coordinates themselves stay as written.
|
|
42
|
+
*/
|
|
43
|
+
readonly pxPerUnit?: number;
|
|
44
|
+
/** How many coordinates the file wrote per node: 2, or 3 when it stored a z. */
|
|
45
|
+
readonly sourceDims?: 2 | 3;
|
|
46
|
+
/** Which way y grows; "down" is flipped to y up. */
|
|
47
|
+
readonly yAxis?: YAxis;
|
|
48
|
+
/** What the coordinate points at; "top-left" is moved to the center using `width` and `height`. */
|
|
49
|
+
readonly anchor?: PositionAnchor;
|
|
50
|
+
/** The name of the node column holding each node's width, for a top-left anchor. */
|
|
51
|
+
readonly width?: string;
|
|
52
|
+
/** The name of the node column holding each node's height, for a top-left anchor. */
|
|
53
|
+
readonly height?: string;
|
|
54
|
+
/** A z the file centers its depth on (Pajek's 0.5): subtracted from a real z before any flip. */
|
|
55
|
+
readonly zOrigin?: number;
|
|
56
|
+
/**
|
|
57
|
+
* The file writes (0, 0) for a node it has no position for (NetworkX's Pajek writer): when other
|
|
58
|
+
* rows are placed, a (0, 0) shared by two or more rows counts as unplaced.
|
|
59
|
+
*/
|
|
60
|
+
readonly zeroUnplaced?: boolean;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* A group container's box, as an importer's `positions()` hook gives it: (`x`, `y`) is where the
|
|
65
|
+
* box's anchor is, spelled like the node coordinates (the same y direction and anchor).
|
|
66
|
+
* @category Positions
|
|
67
|
+
*/
|
|
68
|
+
export interface ImporterGroupBox {
|
|
69
|
+
/** The container node, by index. */
|
|
70
|
+
readonly node: number;
|
|
71
|
+
/** The box. */
|
|
72
|
+
readonly box: {
|
|
73
|
+
/** The box's anchor, x. */
|
|
74
|
+
readonly x: number;
|
|
75
|
+
/** The box's anchor, y. */
|
|
76
|
+
readonly y: number;
|
|
77
|
+
/** The box's width. */
|
|
78
|
+
readonly width: number;
|
|
79
|
+
/** The box's height. */
|
|
80
|
+
readonly height: number;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* What an importer's `positions()` hook returns: where its coordinates are and how they are spelled.
|
|
86
|
+
*
|
|
87
|
+
* The simple form names two (or three) plain numeric node columns:
|
|
88
|
+
* `{ x: "x", y: "y", yAxis: "down", units: "px" }`. The advanced form names a 3-component column
|
|
89
|
+
* (`column`) and may add the anchor, size columns, group boxes, a median node size and the tool.
|
|
90
|
+
* @category Positions
|
|
91
|
+
*/
|
|
92
|
+
export interface ImporterPositions extends PositionColumnExtra {
|
|
93
|
+
/** A plain numeric node column holding x (simple form). */
|
|
94
|
+
readonly x?: string;
|
|
95
|
+
/** A plain numeric node column holding y (simple form). */
|
|
96
|
+
readonly y?: string;
|
|
97
|
+
/** A plain numeric node column holding z (simple form); omit for a 2D file. */
|
|
98
|
+
readonly z?: string;
|
|
99
|
+
/** A 3-component node column holding the coordinates (advanced form); defaults to the role-`position` column. */
|
|
100
|
+
readonly column?: string;
|
|
101
|
+
/** Group container boxes the file stores apart from the node coordinates (Graphviz cluster `bb`). */
|
|
102
|
+
readonly groups?: readonly ImporterGroupBox[];
|
|
103
|
+
/** The median node diameter in the file's unit, when the importer knows it better than the size columns. */
|
|
104
|
+
readonly medianNodeSize?: number | null;
|
|
105
|
+
/** The tool that wrote the file, when the importer knows it better than `meta.creator`. */
|
|
106
|
+
readonly tool?: GraphTool | null;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* What an importer's `positions()` hook is given besides the snapshot.
|
|
111
|
+
* @category Positions
|
|
112
|
+
*/
|
|
113
|
+
export interface PositionReadContext {
|
|
114
|
+
/** Aborts a long read. */
|
|
115
|
+
readonly signal: AbortSignal | null;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* A note about the stored positions: a code with its parameters, never a sentence for a reader.
|
|
120
|
+
* `message` is graph-io's English for its own logs.
|
|
121
|
+
* @category Positions
|
|
122
|
+
*/
|
|
123
|
+
export interface PositionNote {
|
|
124
|
+
/** The condition. */
|
|
125
|
+
readonly code: PositionNoteCode;
|
|
126
|
+
/** How many elements (or columns) it covers, and up to 8 examples. */
|
|
127
|
+
readonly params: {
|
|
128
|
+
/** How many elements (or columns) it covers. */
|
|
129
|
+
readonly count: number;
|
|
130
|
+
/** Up to 8 of their ids (or column names). */
|
|
131
|
+
readonly samples: readonly string[];
|
|
132
|
+
};
|
|
133
|
+
/** The node indexes it covers, or only their count when it is about the file as a whole. */
|
|
134
|
+
readonly elements:
|
|
135
|
+
| readonly number[]
|
|
136
|
+
| {
|
|
137
|
+
/** How many it covers. */
|
|
138
|
+
readonly count: number;
|
|
139
|
+
};
|
|
140
|
+
/** graph-io's English; never shown to a reader by graphty-element. */
|
|
141
|
+
readonly message: string;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* A group container's box in the neutral convention: (`x`, `y`) is the box's center, y up.
|
|
146
|
+
* @category Positions
|
|
147
|
+
*/
|
|
148
|
+
export interface FilePositionGroup {
|
|
149
|
+
/** The container node, by index. */
|
|
150
|
+
readonly node: number;
|
|
151
|
+
/** The box: center, width and height in the file's unit. */
|
|
152
|
+
readonly box: {
|
|
153
|
+
/** The box's center, x. */
|
|
154
|
+
readonly x: number;
|
|
155
|
+
/** The box's center, y. */
|
|
156
|
+
readonly y: number;
|
|
157
|
+
/** The box's width. */
|
|
158
|
+
readonly width: number;
|
|
159
|
+
/** The box's height. */
|
|
160
|
+
readonly height: number;
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* A file's stored node coordinates in the neutral convention: the node's center, y up, in the
|
|
166
|
+
* file's own unit, 3 components per node.
|
|
167
|
+
* @category Positions
|
|
168
|
+
*/
|
|
169
|
+
export interface FilePositions {
|
|
170
|
+
/** The shape version of this object. */
|
|
171
|
+
readonly version: 1;
|
|
172
|
+
/** Where the coordinates came from: the format, the tool that wrote the file, and the y direction it used. */
|
|
173
|
+
readonly source: {
|
|
174
|
+
/** The format that read the file. */
|
|
175
|
+
readonly format: string;
|
|
176
|
+
/** The tool that wrote the file, or null when the file does not say. */
|
|
177
|
+
readonly tool: GraphTool | null;
|
|
178
|
+
/** Which way y grew in the file; every coordinate here has y up. */
|
|
179
|
+
readonly yAxis: YAxis;
|
|
180
|
+
};
|
|
181
|
+
/** The unit of every coordinate and size. */
|
|
182
|
+
readonly units: LengthUnit;
|
|
183
|
+
/**
|
|
184
|
+
* How many px (points) one unit is, when `units` is "file" but the file's unit is a known
|
|
185
|
+
* length (Graphviz input inches: 72); absent otherwise. Multiply a coordinate by it to compare
|
|
186
|
+
* it with the file's px style lengths.
|
|
187
|
+
*/
|
|
188
|
+
readonly pxPerUnit?: number;
|
|
189
|
+
/** The median node diameter, in `units`, when the file stores node sizes; else null. */
|
|
190
|
+
readonly medianNodeSize: number | null;
|
|
191
|
+
/** 3 when the nodes differ in z, else 2 (z is then 0). */
|
|
192
|
+
readonly dims: 2 | 3;
|
|
193
|
+
/** x, y, z per node, by node index (3 * nodeCount); NaN for a node with no position. */
|
|
194
|
+
readonly coords: Float64Array;
|
|
195
|
+
/** The nodes with a position. */
|
|
196
|
+
readonly placed: number;
|
|
197
|
+
/** The nodes that need one: every node except group containers the file gives no box. */
|
|
198
|
+
readonly total: number;
|
|
199
|
+
/** False when nothing is stored, or every node sits on one point (coords are then all NaN). */
|
|
200
|
+
readonly usable: boolean;
|
|
201
|
+
/** The box around every placed node, or null when none is placed. */
|
|
202
|
+
readonly bounds: {
|
|
203
|
+
/** The smallest x, y and z. */
|
|
204
|
+
readonly min: readonly [number, number, number];
|
|
205
|
+
/** The largest x, y and z. */
|
|
206
|
+
readonly max: readonly [number, number, number];
|
|
207
|
+
} | null;
|
|
208
|
+
/** Group containers with a box. */
|
|
209
|
+
readonly groups: readonly FilePositionGroup[];
|
|
210
|
+
/** What could not be read as written. */
|
|
211
|
+
readonly notes: readonly PositionNote[];
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Options of `extractPositions()`.
|
|
216
|
+
* @category Positions
|
|
217
|
+
*/
|
|
218
|
+
export interface ExtractPositionsOptions {
|
|
219
|
+
/** Aborts the read; it throws the signal's reason. */
|
|
220
|
+
readonly signal?: AbortSignal | null;
|
|
221
|
+
}
|
package/src/registry.ts
CHANGED
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
FETCH_CODE,
|
|
24
24
|
OPTION_IGNORED_CODE,
|
|
25
25
|
SELF_LOOPS_DROPPED_CODE,
|
|
26
|
+
STYLES_NOT_IMPORTED_CODE,
|
|
26
27
|
UNKNOWN_OPTION_CODE,
|
|
27
28
|
WEIGHT_NOT_FOUND_CODE,
|
|
28
29
|
} from "./common/codes.js";
|
|
@@ -45,6 +46,9 @@ import { oboExporter, oboImporter } from "./formats/obo/index.js";
|
|
|
45
46
|
import { pajekExporter, pajekImporter } from "./formats/pajek/index.js";
|
|
46
47
|
import { xgmmlExporter, xgmmlImporter } from "./formats/xgmml/index.js";
|
|
47
48
|
import { type FormatName, rankFormats, SNIFF_HEAD_BYTES, type SniffHints, type SniffResult } from "./sniff.js";
|
|
49
|
+
import { extractStyles, type StyleImportOptions } from "./styles/io/generic.js";
|
|
50
|
+
import { isKeptGraphtyProperty, prepareStyleExport } from "./styles/io/writer.js";
|
|
51
|
+
import type { ExtractedStyles } from "./styles/types.js";
|
|
48
52
|
import {
|
|
49
53
|
type CommonExportOptions,
|
|
50
54
|
type CommonImportOptions,
|
|
@@ -137,6 +141,13 @@ export interface ImportGraphOptions extends CommonImportOptions, GraphChoiceOpti
|
|
|
137
141
|
* @defaultValue 16777216
|
|
138
142
|
*/
|
|
139
143
|
readonly maxEmptyCells?: number | undefined;
|
|
144
|
+
/**
|
|
145
|
+
* Read the file's styles too: `true`, or `{ toolDefaults: false }` to leave out the defaults of the program
|
|
146
|
+
* that wrote the file. The styles are in `result.styles`; the graph, the report and every export are the same
|
|
147
|
+
* either way.
|
|
148
|
+
* @defaultValue false
|
|
149
|
+
*/
|
|
150
|
+
readonly styles?: boolean | StyleImportOptions | undefined;
|
|
140
151
|
/** Format-specific options, passed to the importer as they are. */
|
|
141
152
|
readonly [formatOption: string]: unknown;
|
|
142
153
|
}
|
|
@@ -172,6 +183,12 @@ export interface ImportGraphResult {
|
|
|
172
183
|
* can ignore it. It is not enumerable, so `console.log(result)` and `{ ...result }` leave it out.
|
|
173
184
|
*/
|
|
174
185
|
readonly freeze: FreezeReport;
|
|
186
|
+
/**
|
|
187
|
+
* The file's styles, when you passed the `styles` option: the rules that reproduce how the program that wrote
|
|
188
|
+
* the file draws each node and edge, read by the importer that read the file. Null when the file has none.
|
|
189
|
+
* Absent without the option.
|
|
190
|
+
*/
|
|
191
|
+
readonly styles?: ExtractedStyles | null;
|
|
175
192
|
}
|
|
176
193
|
|
|
177
194
|
/**
|
|
@@ -239,6 +256,13 @@ export interface FormatInfo {
|
|
|
239
256
|
* @category Saving
|
|
240
257
|
*/
|
|
241
258
|
export interface ExportGraphOptions extends CommonExportOptions {
|
|
259
|
+
/**
|
|
260
|
+
* Write these styles too (`result.styles` of an import, or styles built for this graph): each element's look in
|
|
261
|
+
* the format's own style slots and, where the format can keep them, the rules, so importing the file back
|
|
262
|
+
* rebuilds them. What the format cannot hold is a W_STYLE_ note of checkExport(). Styles read from or built for a
|
|
263
|
+
* different graph fail with E_STYLES_MISMATCH before anything is written.
|
|
264
|
+
*/
|
|
265
|
+
readonly styles?: ExtractedStyles | null | undefined;
|
|
242
266
|
/** Format-specific options, passed to the exporter as they are. */
|
|
243
267
|
readonly [formatOption: string]: unknown;
|
|
244
268
|
}
|
|
@@ -272,6 +296,7 @@ const FUNCTION_OPTIONS: ReadonlySet<string> = new Set([
|
|
|
272
296
|
"sanitizeIds",
|
|
273
297
|
"selfLoops",
|
|
274
298
|
"signal",
|
|
299
|
+
"styles",
|
|
275
300
|
"weightDtype",
|
|
276
301
|
"weightFrom",
|
|
277
302
|
]);
|
|
@@ -284,6 +309,7 @@ const REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
284
309
|
"builder",
|
|
285
310
|
"freeze",
|
|
286
311
|
"maxEmptyCells",
|
|
312
|
+
"styles",
|
|
287
313
|
]);
|
|
288
314
|
|
|
289
315
|
/**
|
|
@@ -687,7 +713,43 @@ export class FormatRegistry {
|
|
|
687
713
|
format: FormatName,
|
|
688
714
|
options?: ExportGraphOptions | CommonExportOptions,
|
|
689
715
|
): AsyncIterable<Uint8Array> {
|
|
690
|
-
|
|
716
|
+
const styled = this.styled(snapshot, format, options);
|
|
717
|
+
if (styled === null) {
|
|
718
|
+
return this.exporter(format).export(snapshot, options);
|
|
719
|
+
}
|
|
720
|
+
if (styled.refusal !== null) {
|
|
721
|
+
return refuse(styled.refusal);
|
|
722
|
+
}
|
|
723
|
+
return styled.exporter.export(styled.snapshot, styled.options);
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
/**
|
|
727
|
+
* An export with styles worked out, or null when no styles were given (the export is then exactly as before).
|
|
728
|
+
* @param snapshot - the graph
|
|
729
|
+
* @param format - the format name
|
|
730
|
+
* @param options - the caller's options
|
|
731
|
+
* @returns the exporter, the snapshot and options to hand it, the style losses and any refusal
|
|
732
|
+
*/
|
|
733
|
+
private styled(
|
|
734
|
+
snapshot: GraphSnapshot,
|
|
735
|
+
format: FormatName,
|
|
736
|
+
options: ExportGraphOptions | CommonExportOptions | undefined,
|
|
737
|
+
): StyledExport | null {
|
|
738
|
+
const styles = (options as ExportGraphOptions | undefined)?.styles;
|
|
739
|
+
if (styles === undefined || styles === null) {
|
|
740
|
+
return null;
|
|
741
|
+
}
|
|
742
|
+
const exporter = this.exporter(format);
|
|
743
|
+
const { styles: _given, ...rest } = options as ExportGraphOptions;
|
|
744
|
+
const prepared = prepareStyleExport(snapshot, exporter, styles, rest);
|
|
745
|
+
return {
|
|
746
|
+
exporter,
|
|
747
|
+
snapshot: prepared.snapshot,
|
|
748
|
+
options: prepared.input === null ? rest : { ...rest, styles: prepared.input },
|
|
749
|
+
plain: rest,
|
|
750
|
+
notes: prepared.notes,
|
|
751
|
+
refusal: prepared.refusal,
|
|
752
|
+
};
|
|
691
753
|
}
|
|
692
754
|
|
|
693
755
|
/**
|
|
@@ -702,7 +764,14 @@ export class FormatRegistry {
|
|
|
702
764
|
format: FormatName,
|
|
703
765
|
options?: ExportGraphOptions | CommonExportOptions,
|
|
704
766
|
): Promise<string> {
|
|
705
|
-
|
|
767
|
+
const styled = this.styled(snapshot, format, options);
|
|
768
|
+
if (styled === null) {
|
|
769
|
+
return this.exporter(format).exportToString(snapshot, options);
|
|
770
|
+
}
|
|
771
|
+
if (styled.refusal !== null) {
|
|
772
|
+
throw refusalError(styled.refusal);
|
|
773
|
+
}
|
|
774
|
+
return styled.exporter.exportToString(styled.snapshot, styled.options);
|
|
706
775
|
}
|
|
707
776
|
|
|
708
777
|
/**
|
|
@@ -754,7 +823,28 @@ export class FormatRegistry {
|
|
|
754
823
|
format: FormatName,
|
|
755
824
|
options?: ExportGraphOptions | CommonExportOptions,
|
|
756
825
|
): readonly LossNote[] {
|
|
757
|
-
const
|
|
826
|
+
const styled = this.styled(snapshot, format, options);
|
|
827
|
+
let notes: readonly LossNote[];
|
|
828
|
+
if (styled === null) {
|
|
829
|
+
notes = this.exporter(format).check(snapshot, options);
|
|
830
|
+
} else if (styled.refusal === null) {
|
|
831
|
+
// a property graph-io already reports as not written is reported once, whoever else notices
|
|
832
|
+
const key = (n: LossNote): string =>
|
|
833
|
+
`${n.code}\u0000${n.style?.target ?? ""}\u0000${n.style?.property ?? ""}`;
|
|
834
|
+
const reported = new Set(styled.notes.filter((n) => n.style !== undefined).map(key));
|
|
835
|
+
notes = [
|
|
836
|
+
...styled.exporter
|
|
837
|
+
.check(styled.snapshot, styled.options)
|
|
838
|
+
.filter(
|
|
839
|
+
(n) =>
|
|
840
|
+
n.style === undefined ||
|
|
841
|
+
(!reported.has(key(n)) && !isKeptGraphtyProperty(n, styled.exporter)),
|
|
842
|
+
),
|
|
843
|
+
...styled.notes,
|
|
844
|
+
];
|
|
845
|
+
} else {
|
|
846
|
+
notes = [...styled.exporter.check(snapshot, styled.plain), styled.refusal];
|
|
847
|
+
}
|
|
758
848
|
const unknown = this.unknownOptions(options);
|
|
759
849
|
if (unknown.length === 0) {
|
|
760
850
|
return notes;
|
|
@@ -845,7 +935,7 @@ export class FormatRegistry {
|
|
|
845
935
|
mimeTypes: importer?.mimeTypes ?? exporter?.mimeTypes ?? [],
|
|
846
936
|
canImport: importer !== undefined,
|
|
847
937
|
canExport: exporter !== undefined,
|
|
848
|
-
capabilities: exporter
|
|
938
|
+
capabilities: capabilitiesOf(exporter),
|
|
849
939
|
});
|
|
850
940
|
});
|
|
851
941
|
}
|
|
@@ -1405,6 +1495,16 @@ function result(
|
|
|
1405
1495
|
throw freezeFailure(err, report);
|
|
1406
1496
|
}
|
|
1407
1497
|
const { warnings } = chosen;
|
|
1498
|
+
const wanted = options.styles;
|
|
1499
|
+
let styles: ExtractedStyles | null | undefined;
|
|
1500
|
+
if (wanted !== undefined && wanted !== false) {
|
|
1501
|
+
styles = extractStyles(chosen.importer, frozen.snapshot, report, {
|
|
1502
|
+
signal: options.signal,
|
|
1503
|
+
toolDefaults: typeof wanted === "object" ? wanted.toolDefaults : undefined,
|
|
1504
|
+
});
|
|
1505
|
+
}
|
|
1506
|
+
const read =
|
|
1507
|
+
styles !== undefined && chosen.importer.styles !== undefined ? withoutStylesNotImported(report) : report;
|
|
1408
1508
|
const result = {
|
|
1409
1509
|
format: chosen.importer.format,
|
|
1410
1510
|
sniff: chosen.sniff,
|
|
@@ -1412,11 +1512,11 @@ function result(
|
|
|
1412
1512
|
report: withFreezeWarnings(
|
|
1413
1513
|
weightNotFound(
|
|
1414
1514
|
warnings.length === 0
|
|
1415
|
-
?
|
|
1515
|
+
? read
|
|
1416
1516
|
: Object.freeze({
|
|
1417
|
-
...
|
|
1418
|
-
issues: Object.freeze([...warnings, ...
|
|
1419
|
-
warningCount:
|
|
1517
|
+
...read,
|
|
1518
|
+
issues: Object.freeze([...warnings, ...read.issues]),
|
|
1519
|
+
warningCount: read.warningCount + warnings.length,
|
|
1420
1520
|
}),
|
|
1421
1521
|
frozen.snapshot,
|
|
1422
1522
|
options.weightFrom,
|
|
@@ -1424,11 +1524,82 @@ function result(
|
|
|
1424
1524
|
frozen.report,
|
|
1425
1525
|
),
|
|
1426
1526
|
};
|
|
1527
|
+
if (styles !== undefined) {
|
|
1528
|
+
Object.assign(result, { styles });
|
|
1529
|
+
}
|
|
1427
1530
|
// not enumerable: it holds one entry per edge, and console.log(result) should show the graph, not that
|
|
1428
1531
|
Object.defineProperty(result, "freeze", { value: frozen.report, enumerable: false });
|
|
1429
1532
|
return Object.freeze(result as ImportGraphResult);
|
|
1430
1533
|
}
|
|
1431
1534
|
|
|
1535
|
+
/**
|
|
1536
|
+
* A report without its W_STYLES_NOT_IMPORTED warnings: the importer read the styles it would have named.
|
|
1537
|
+
* @param report - the importer's report
|
|
1538
|
+
* @returns the report, a copy only when it held such a warning
|
|
1539
|
+
*/
|
|
1540
|
+
function withoutStylesNotImported(report: ImportReport): ImportReport {
|
|
1541
|
+
const issues = report.issues.filter((i) => i.code !== STYLES_NOT_IMPORTED_CODE);
|
|
1542
|
+
if (issues.length === report.issues.length) {
|
|
1543
|
+
return report;
|
|
1544
|
+
}
|
|
1545
|
+
return Object.freeze({
|
|
1546
|
+
...report,
|
|
1547
|
+
issues: Object.freeze(issues),
|
|
1548
|
+
warningCount: report.warningCount - (report.issues.length - issues.length),
|
|
1549
|
+
});
|
|
1550
|
+
}
|
|
1551
|
+
|
|
1552
|
+
/** An export with styles, worked out by FormatRegistry.styled(). */
|
|
1553
|
+
interface StyledExport {
|
|
1554
|
+
/** The exporter. */
|
|
1555
|
+
readonly exporter: GraphExporter;
|
|
1556
|
+
/** The snapshot to hand it. */
|
|
1557
|
+
readonly snapshot: GraphSnapshot;
|
|
1558
|
+
/** The options to hand it: the caller's, with `styles` replaced by the exporter's input or left out. */
|
|
1559
|
+
readonly options: ExportGraphOptions;
|
|
1560
|
+
/** The caller's options without `styles`. */
|
|
1561
|
+
readonly plain: ExportGraphOptions;
|
|
1562
|
+
/** The style losses. */
|
|
1563
|
+
readonly notes: readonly LossNote[];
|
|
1564
|
+
/** E_STYLES_MISMATCH, or null. */
|
|
1565
|
+
readonly refusal: LossNote | null;
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1568
|
+
/**
|
|
1569
|
+
* The error an export refused for its styles throws.
|
|
1570
|
+
* @param note - the refusal note
|
|
1571
|
+
* @returns the error
|
|
1572
|
+
*/
|
|
1573
|
+
function refusalError(note: LossNote): GraphFormatError {
|
|
1574
|
+
return new GraphFormatError("E_UNSUPPORTED", note.message, { code: note.code });
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
/**
|
|
1578
|
+
* Chunks that fail on the first read, before any byte: an export refused for its styles.
|
|
1579
|
+
* @param note - the refusal note
|
|
1580
|
+
* @returns chunks whose first read rejects
|
|
1581
|
+
*/
|
|
1582
|
+
function refuse(note: LossNote): AsyncIterable<Uint8Array> {
|
|
1583
|
+
return {
|
|
1584
|
+
[Symbol.asyncIterator]: () => ({ next: () => Promise.reject(refusalError(note)) }),
|
|
1585
|
+
};
|
|
1586
|
+
}
|
|
1587
|
+
|
|
1588
|
+
/**
|
|
1589
|
+
* The capabilities listFormats() reports for an exporter: its table plus, when it writes styles, their capabilities.
|
|
1590
|
+
* @param exporter - the exporter, or undefined
|
|
1591
|
+
* @returns the capabilities, or null
|
|
1592
|
+
*/
|
|
1593
|
+
function capabilitiesOf(exporter: GraphExporter | undefined): ExportCapabilities | null {
|
|
1594
|
+
if (exporter === undefined) {
|
|
1595
|
+
return null;
|
|
1596
|
+
}
|
|
1597
|
+
if (exporter.styles === undefined) {
|
|
1598
|
+
return exporter.capabilities;
|
|
1599
|
+
}
|
|
1600
|
+
return Object.freeze({ ...exporter.capabilities, styles: exporter.styles.capabilities });
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1432
1603
|
/**
|
|
1433
1604
|
* The message of a W_UNKNOWN_OPTION warning or note.
|
|
1434
1605
|
* @param name - the option name
|