@graphty/graph-io 0.3.43 → 0.3.45
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-DJMHdDvv.js +40 -0
- package/dist/chunks/approximations-DJMHdDvv.js.map +1 -0
- package/dist/chunks/block-CPCHkX42.js +2777 -0
- package/dist/chunks/block-CPCHkX42.js.map +1 -0
- package/dist/chunks/{choose-DvpbdRuz.js → choose--jM0yYCo.js} +3 -2
- package/dist/chunks/{choose-DvpbdRuz.js.map → choose--jM0yYCo.js.map} +1 -1
- package/dist/chunks/{constants-fT3E8JYY.js → constants-BKwqelYD.js} +6 -2
- package/dist/chunks/constants-BKwqelYD.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-DZy6JgdA.js +3456 -0
- package/dist/chunks/emit-DZy6JgdA.js.map +1 -0
- package/dist/chunks/{escape-B62ZGM_a.js → escape-CgzxiYPg.js} +44 -21
- package/dist/chunks/escape-CgzxiYPg.js.map +1 -0
- package/dist/chunks/{export-rKLeGQMo.js → export-BvqAXCKh.js} +196 -792
- package/dist/chunks/export-BvqAXCKh.js.map +1 -0
- package/dist/chunks/{exporter-yLxKBvLE.js → exporter--Mk9gXCJ.js} +4 -3
- package/dist/chunks/{exporter-yLxKBvLE.js.map → exporter--Mk9gXCJ.js.map} +1 -1
- package/dist/chunks/{exporter-RVtXVetw.js → exporter-C-9cgZKa.js} +1805 -287
- package/dist/chunks/exporter-C-9cgZKa.js.map +1 -0
- package/dist/chunks/{exporter-8hLNemFk.js → exporter-DFqJhBnj.js} +133 -74
- package/dist/chunks/exporter-DFqJhBnj.js.map +1 -0
- package/dist/chunks/{exporter-BWwEuOPT.js → exporter-DteVeJki.js} +22 -12
- package/dist/chunks/exporter-DteVeJki.js.map +1 -0
- package/dist/chunks/format-BpQBx8MZ.js +676 -0
- package/dist/chunks/format-BpQBx8MZ.js.map +1 -0
- package/dist/chunks/generic-BGO71QBv.js +1347 -0
- package/dist/chunks/generic-BGO71QBv.js.map +1 -0
- package/dist/chunks/{importer-C98dpSH4.js → importer-B-9Rc1zO.js} +141 -82
- package/dist/chunks/importer-B-9Rc1zO.js.map +1 -0
- package/dist/chunks/{importer-D794XUTe.js → importer-BVVR740x.js} +31 -8
- package/dist/chunks/importer-BVVR740x.js.map +1 -0
- package/dist/chunks/{importer-WrGRZb0N.js → importer-C0AjA3Ax.js} +449 -102
- package/dist/chunks/importer-C0AjA3Ax.js.map +1 -0
- package/dist/chunks/{importer-BbNb7eNg.js → importer-C7pvJe1L.js} +1398 -129
- package/dist/chunks/importer-C7pvJe1L.js.map +1 -0
- package/dist/chunks/{importer-xZ-3suY1.js → importer-ClwoVx3O.js} +791 -135
- package/dist/chunks/importer-ClwoVx3O.js.map +1 -0
- package/dist/chunks/{importer-Ht7LNg8L.js → importer-D0sC_6bO.js} +116 -296
- package/dist/chunks/importer-D0sC_6bO.js.map +1 -0
- package/dist/chunks/{importer-Dz7tI8Sa.js → importer-EHQk1jbM.js} +617 -115
- package/dist/chunks/importer-EHQk1jbM.js.map +1 -0
- package/dist/chunks/{json-elements-DKSqpNW1.js → json-elements-DJZRZ6jd.js} +123 -32
- package/dist/chunks/json-elements-DJZRZ6jd.js.map +1 -0
- package/dist/chunks/lexicon-WMsNddyU.js +509 -0
- package/dist/chunks/lexicon-WMsNddyU.js.map +1 -0
- package/dist/chunks/{ontology-export-CtRXjg_i.js → ontology-export-G4MqRdux.js} +3 -2
- package/dist/chunks/{ontology-export-CtRXjg_i.js.map → ontology-export-G4MqRdux.js.map} +1 -1
- package/dist/chunks/{records-Cu4bxYOm.js → records-CiaWZrFH.js} +2 -2
- package/dist/chunks/{records-Cu4bxYOm.js.map → records-CiaWZrFH.js.map} +1 -1
- package/dist/chunks/styles-DvoFBKCK.js +690 -0
- package/dist/chunks/styles-DvoFBKCK.js.map +1 -0
- package/dist/chunks/styles-yed-Cz9rLBCP.js +842 -0
- package/dist/chunks/styles-yed-Cz9rLBCP.js.map +1 -0
- package/dist/chunks/styles-zNTmz5R7.js +2102 -0
- package/dist/chunks/styles-zNTmz5R7.js.map +1 -0
- package/dist/chunks/{text-DHOJXnED.js → text-CzJNFOS9.js} +2 -2
- package/dist/chunks/{text-DHOJXnED.js.map → text-CzJNFOS9.js.map} +1 -1
- package/dist/chunks/units-XMZFIFe1.js +19 -0
- package/dist/chunks/units-XMZFIFe1.js.map +1 -0
- package/dist/chunks/writer-gQ8kx99H.js +448 -0
- package/dist/chunks/writer-gQ8kx99H.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 +927 -74
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +351 -236
- 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 +1496 -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 +791 -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 +605 -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 +89 -0
- package/dist/src/styles/io/writer.d.ts.map +1 -0
- package/dist/src/styles/io/writer.js +626 -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 +1755 -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 +952 -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 +658 -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 +780 -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
|
@@ -14,11 +14,16 @@
|
|
|
14
14
|
* re-importing the tree gives them back. A value edited after import (a layout writing the
|
|
15
15
|
* position) or a tree column removed is therefore not written, and the exporter reports it as a
|
|
16
16
|
* loss (staleGraphicsRows()).
|
|
17
|
+
*
|
|
18
|
+
* Deprecated and frozen, not fixed: these columns, the rule that a target arrow makes an edge
|
|
19
|
+
* directed and the label role of `yfiles.label` stay exactly as they are until the next major
|
|
20
|
+
* version removes them. The yEd and yFiles 3 style readers read the kept graphics tree instead.
|
|
17
21
|
*/
|
|
18
22
|
|
|
19
|
-
import { type Column, type ColumnDecl, type JsonColumn } from "@graphty/graph-format";
|
|
23
|
+
import { type Column, type ColumnDecl, type GraphSnapshot, type JsonColumn } from "@graphty/graph-format";
|
|
20
24
|
|
|
21
25
|
import { localName } from "../../common/xml.js";
|
|
26
|
+
import type { ImporterPositions } from "../../positions/types.js";
|
|
22
27
|
|
|
23
28
|
/** The name prefix of every column mapped from yFiles graphics. */
|
|
24
29
|
const YFILES_COLUMN_PREFIX = "yfiles.";
|
|
@@ -27,7 +32,20 @@ type Tree = Record<string, unknown>;
|
|
|
27
32
|
|
|
28
33
|
/** The mapped node columns, by the field name graphty-element's records use. */
|
|
29
34
|
const NODE_FIELDS: Readonly<Record<string, Omit<ColumnDecl, "name">>> = {
|
|
30
|
-
|
|
35
|
+
// yEd writes the top-left corner of the node's box, y growing downward, in pixels
|
|
36
|
+
position: {
|
|
37
|
+
dtype: "f64",
|
|
38
|
+
components: 3,
|
|
39
|
+
role: "position",
|
|
40
|
+
mutable: true,
|
|
41
|
+
extra: {
|
|
42
|
+
units: "px",
|
|
43
|
+
yAxis: "down",
|
|
44
|
+
anchor: "top-left",
|
|
45
|
+
width: `${YFILES_COLUMN_PREFIX}width`,
|
|
46
|
+
height: `${YFILES_COLUMN_PREFIX}height`,
|
|
47
|
+
},
|
|
48
|
+
},
|
|
31
49
|
width: { dtype: "f64" },
|
|
32
50
|
height: { dtype: "f64" },
|
|
33
51
|
color: { dtype: "string" },
|
|
@@ -70,6 +88,16 @@ export function graphicsDecl(domain: "node" | "edge", field: string, keyId: stri
|
|
|
70
88
|
};
|
|
71
89
|
}
|
|
72
90
|
|
|
91
|
+
/**
|
|
92
|
+
* The tool behind a GraphML file's positions, for `extractPositions()`: yEd when they come from
|
|
93
|
+
* yFiles graphics. The column's `meta.extra` already says how they are spelled.
|
|
94
|
+
* @param snapshot - the graph the GraphML importer read
|
|
95
|
+
* @returns the tool, or null to read the position column as declared
|
|
96
|
+
*/
|
|
97
|
+
export function yfilesPositions(snapshot: GraphSnapshot): ImporterPositions | null {
|
|
98
|
+
return snapshot.nodes.byRole("position")?.meta.origin?.namespace === "yfiles" ? { tool: "yed" } : null;
|
|
99
|
+
}
|
|
100
|
+
|
|
73
101
|
/**
|
|
74
102
|
* Whether a column is one graphicsDecl() declared (a view of a yFiles tree, never exported).
|
|
75
103
|
* @param meta - the column's name, dtype and origin
|
|
@@ -143,7 +171,9 @@ function wantedGraphics(trees: JsonColumn[], domain: "node" | "edge", field: str
|
|
|
143
171
|
|
|
144
172
|
/**
|
|
145
173
|
* The mapped values of one `<data>` tree of a yFiles key: a ShapeNode's for a node, a
|
|
146
|
-
* PolyLineEdge's for an edge
|
|
174
|
+
* PolyLineEdge's for an edge. A GenericNode, ImageNode, SVGNode or ProxyAutoBoundsNode (a group,
|
|
175
|
+
* read through the realizer `Realizers@active` names) gives its geometry only: position, width and
|
|
176
|
+
* height. Nothing for any other graphics (BezierEdge, ...).
|
|
147
177
|
* @param domain - node or edge
|
|
148
178
|
* @param tree - the `<data>` content as tree.ts builds it
|
|
149
179
|
* @param unmapped - receives the fields whose text is present but not a number (not mapped)
|
|
@@ -154,7 +184,9 @@ export function graphicsValues(domain: "node" | "edge", tree: unknown, unmapped:
|
|
|
154
184
|
const out: [string, unknown][] = [];
|
|
155
185
|
if (domain === "node") {
|
|
156
186
|
const shape = child(tree, "ShapeNode");
|
|
157
|
-
if (shape
|
|
187
|
+
if (shape === undefined) {
|
|
188
|
+
geometryValues(child(geometryNode(tree), "Geometry"), out, unmapped);
|
|
189
|
+
} else {
|
|
158
190
|
shapeNodeValues(shape, out, unmapped);
|
|
159
191
|
}
|
|
160
192
|
} else {
|
|
@@ -173,15 +205,7 @@ export function graphicsValues(domain: "node" | "edge", tree: unknown, unmapped:
|
|
|
173
205
|
* @param unmapped - receives the fields whose text is not a number
|
|
174
206
|
*/
|
|
175
207
|
function shapeNodeValues(shape: unknown, out: [string, unknown][], unmapped: string[]): void {
|
|
176
|
-
|
|
177
|
-
// yFiles requires x, y, width and height on Geometry; a position needs both coordinates
|
|
178
|
-
const x = checked(attr(geometry, "x"), "x", unmapped);
|
|
179
|
-
const y = checked(attr(geometry, "y"), "y", unmapped);
|
|
180
|
-
if (x !== undefined && y !== undefined) {
|
|
181
|
-
out.push(["position", [x, y, 0]]);
|
|
182
|
-
}
|
|
183
|
-
push(out, "width", checked(attr(geometry, "width"), "width", unmapped));
|
|
184
|
-
push(out, "height", checked(attr(geometry, "height"), "height", unmapped));
|
|
208
|
+
geometryValues(child(shape, "Geometry"), out, unmapped);
|
|
185
209
|
push(out, "color", color(attr(child(shape, "Fill"), "color")));
|
|
186
210
|
const border = child(shape, "BorderStyle");
|
|
187
211
|
push(out, "borderColor", color(attr(border, "color")));
|
|
@@ -195,6 +219,58 @@ function shapeNodeValues(shape: unknown, out: [string, unknown][], unmapped: str
|
|
|
195
219
|
push(out, "shape", nonEmpty(attr(child(shape, "Shape"), "type")));
|
|
196
220
|
}
|
|
197
221
|
|
|
222
|
+
/**
|
|
223
|
+
* Read a Geometry: the position of the box's top-left corner, its width and height.
|
|
224
|
+
* @param geometry - the Geometry element, or undefined
|
|
225
|
+
* @param out - receives the values
|
|
226
|
+
* @param unmapped - receives the fields whose text is not a number
|
|
227
|
+
*/
|
|
228
|
+
function geometryValues(geometry: unknown, out: [string, unknown][], unmapped: string[]): void {
|
|
229
|
+
// yFiles requires x, y, width and height on Geometry; a position needs both coordinates
|
|
230
|
+
const x = checked(attr(geometry, "x"), "x", unmapped);
|
|
231
|
+
const y = checked(attr(geometry, "y"), "y", unmapped);
|
|
232
|
+
if (x !== undefined && y !== undefined) {
|
|
233
|
+
out.push(["position", [x, y, 0]]);
|
|
234
|
+
}
|
|
235
|
+
push(out, "width", checked(attr(geometry, "width"), "width", unmapped));
|
|
236
|
+
push(out, "height", checked(attr(geometry, "height"), "height", unmapped));
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/** The node graphics besides ShapeNode whose Geometry is read. */
|
|
240
|
+
const GEOMETRY_NODES = ["GenericNode", "ImageNode", "SVGNode"] as const;
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* The element holding a non-ShapeNode node's Geometry: a GenericNode, ImageNode or SVGNode, or
|
|
244
|
+
* the active realizer of a ProxyAutoBoundsNode (`Realizers@active`, default 0).
|
|
245
|
+
* @param tree - the `<data>` content
|
|
246
|
+
* @returns the element, or undefined
|
|
247
|
+
*/
|
|
248
|
+
function geometryNode(tree: unknown): unknown {
|
|
249
|
+
for (const local of GEOMETRY_NODES) {
|
|
250
|
+
const node = child(tree, local);
|
|
251
|
+
if (node !== undefined) {
|
|
252
|
+
return node;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
const realizers = child(child(tree, "ProxyAutoBoundsNode"), "Realizers");
|
|
256
|
+
const active = Number.parseInt(attr(realizers, "active") ?? "0", 10);
|
|
257
|
+
return elements(realizers)[Number.isNaN(active) ? 0 : active];
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Every child element of a tree node, in document order per name.
|
|
262
|
+
* @param node - the tree node
|
|
263
|
+
* @returns the children
|
|
264
|
+
*/
|
|
265
|
+
function elements(node: unknown): unknown[] {
|
|
266
|
+
if (typeof node !== "object" || node === null) {
|
|
267
|
+
return [];
|
|
268
|
+
}
|
|
269
|
+
return Object.entries(node as Tree)
|
|
270
|
+
.filter(([key]) => !key.startsWith("@_") && key !== "#text")
|
|
271
|
+
.flatMap(([, value]) => (Array.isArray(value) ? (value as unknown[]) : [value]));
|
|
272
|
+
}
|
|
273
|
+
|
|
198
274
|
/**
|
|
199
275
|
* Read a PolyLineEdge.
|
|
200
276
|
* @param edge - the PolyLineEdge element
|
|
@@ -29,6 +29,8 @@ import { otherFormatDialect, type ResolvedExportOptions, resolveExportOptions }
|
|
|
29
29
|
import { agree, plural } from "../../common/plural.js";
|
|
30
30
|
import { explicitWeights } from "../../common/weights.js";
|
|
31
31
|
import { encodeChunks, indentUnit, joinText } from "../../common/writer.js";
|
|
32
|
+
import { STYLE_BLOCK_NAME } from "../../styles/io/block.js";
|
|
33
|
+
import type { ExporterStyleOptions } from "../../styles/io/writer.js";
|
|
32
34
|
import { type CommonExportOptions, type ExportCapabilities, type GraphExporter, type LossNote } from "../../types.js";
|
|
33
35
|
import {
|
|
34
36
|
CYTOSCAPE_ELEMENT_KEYS,
|
|
@@ -43,6 +45,10 @@ import {
|
|
|
43
45
|
SUFFIX,
|
|
44
46
|
} from "./dialect.js";
|
|
45
47
|
import { OBOGRAPHS_LOSS, OBOGRAPHS_SHARED_LOSS, planObographs } from "./obographs-export.js";
|
|
48
|
+
import { JSON_STYLE_CAPABILITIES, type JsonStyledExport, jsonStyledExport, STYLE_KEY_REPLACED_CODE } from "./styles.js";
|
|
49
|
+
|
|
50
|
+
/** What the writer takes: the format's options, the common ones and the styles. */
|
|
51
|
+
type JsonWriteOptions = JsonExportOptions & CommonExportOptions & ExporterStyleOptions;
|
|
46
52
|
|
|
47
53
|
/**
|
|
48
54
|
* The format-specific options of the JSON exporter.
|
|
@@ -212,6 +218,11 @@ export const JSON_LOSS = Object.freeze({
|
|
|
212
218
|
* back with graph-io's usual type. The values are the same.
|
|
213
219
|
*/
|
|
214
220
|
DTYPE_UNSUPPORTED: LOSS.DTYPE,
|
|
221
|
+
/**
|
|
222
|
+
* Saving with styles: a column named like one of the dialect's style keys (graphology's `color`, `size`, `label`,
|
|
223
|
+
* vis.js's `color`, `shape`, `font`, ...) is written with what graphty draws, so the values it held differ.
|
|
224
|
+
*/
|
|
225
|
+
STYLE_KEY_REPLACED: STYLE_KEY_REPLACED_CODE,
|
|
215
226
|
});
|
|
216
227
|
|
|
217
228
|
/** The roles each dialect has a slot for (every other role column is a plain attribute, reported by checkCapabilities()). */
|
|
@@ -284,6 +295,8 @@ interface Resolved {
|
|
|
284
295
|
readonly weightKey: string;
|
|
285
296
|
readonly shape: JsonShapeMeta;
|
|
286
297
|
readonly ontologyIri: string | null;
|
|
298
|
+
/** The styles being written, worked out for the dialect; absent without styles. */
|
|
299
|
+
readonly styled?: JsonStyledExport;
|
|
287
300
|
}
|
|
288
301
|
|
|
289
302
|
/** Everything write() needs, computed once by plan(). */
|
|
@@ -651,6 +664,8 @@ function plan(snapshot: GraphSnapshot, resolved: Resolved): Plan {
|
|
|
651
664
|
const notes = checkCapabilities(snapshot, caps, resolved.common, {
|
|
652
665
|
roles: SLOT_ROLES[dialect],
|
|
653
666
|
positionDtype: "f64",
|
|
667
|
+
// Deprecated (next major): role columns are written as plain attributes; styles go through the style writer.
|
|
668
|
+
vizAsAttributes: true,
|
|
654
669
|
}).filter((n) => n.code !== LOSS.POSITIONS && n.code !== LOSS.EDGE_IDS_DROPPED);
|
|
655
670
|
const note: NoteFn = (code, message, column = null, count = null): void => {
|
|
656
671
|
notes.push(Object.freeze({ code, message, column, count }));
|
|
@@ -735,7 +750,8 @@ function reservedKeys(snapshot: GraphSnapshot, resolved: Resolved): Readonly<Rec
|
|
|
735
750
|
break;
|
|
736
751
|
case "vis":
|
|
737
752
|
node.add(resolved.nodeIdKey ?? "id");
|
|
738
|
-
edge
|
|
753
|
+
// an edge key named source or target reads the document as node-link JSON, whose endpoints those are
|
|
754
|
+
edge.add(resolved.sourceKey).add(resolved.targetKey).add("source").add("target");
|
|
739
755
|
break;
|
|
740
756
|
case "cytoscape":
|
|
741
757
|
node.add("id").add("parent");
|
|
@@ -1363,10 +1379,27 @@ function* writeNodeLink(snapshot: GraphSnapshot, p: Plan): Generator<string, voi
|
|
|
1363
1379
|
yield w.take();
|
|
1364
1380
|
}
|
|
1365
1381
|
w.close("]");
|
|
1382
|
+
writeTopLevelBlock(c, p);
|
|
1366
1383
|
w.close("}");
|
|
1367
1384
|
yield w.take();
|
|
1368
1385
|
}
|
|
1369
1386
|
|
|
1387
|
+
/**
|
|
1388
|
+
* The `graphty.styles` block as a top-level key, for a dialect that holds it there.
|
|
1389
|
+
* @param c - the cursor
|
|
1390
|
+
* @param p - the plan
|
|
1391
|
+
*/
|
|
1392
|
+
function writeTopLevelBlock(c: Cursor, p: Plan): void {
|
|
1393
|
+
const groups = p.resolved.styled?.groups ?? null;
|
|
1394
|
+
if (groups !== null) {
|
|
1395
|
+
c.w.member("groups", JSON.stringify(groups));
|
|
1396
|
+
}
|
|
1397
|
+
const block = p.resolved.styled?.topLevelBlock ?? null;
|
|
1398
|
+
if (block !== null) {
|
|
1399
|
+
c.w.member(STYLE_BLOCK_NAME, JSON.stringify(block));
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1370
1403
|
/**
|
|
1371
1404
|
* Write a vis.js document.
|
|
1372
1405
|
* @param snapshot - the snapshot
|
|
@@ -1416,6 +1449,7 @@ function* writeVis(snapshot: GraphSnapshot, p: Plan): Generator<string, void, un
|
|
|
1416
1449
|
yield w.take();
|
|
1417
1450
|
}
|
|
1418
1451
|
w.close("]");
|
|
1452
|
+
writeTopLevelBlock(c, p);
|
|
1419
1453
|
w.close("}");
|
|
1420
1454
|
yield w.take();
|
|
1421
1455
|
}
|
|
@@ -1624,7 +1658,7 @@ function* writeCytoscape(snapshot: GraphSnapshot, p: Plan): Generator<string, vo
|
|
|
1624
1658
|
writeSlots(c, p.nodes, i, parentSlots);
|
|
1625
1659
|
writeSlots(c, p.nodes, i, ATTRIBUTE_SLOTS);
|
|
1626
1660
|
w.close("}");
|
|
1627
|
-
writeCytoscapePosition(c, p
|
|
1661
|
+
writeCytoscapePosition(c, p, i);
|
|
1628
1662
|
writeSlots(c, p.nodes, i, ELEMENT_SLOTS);
|
|
1629
1663
|
w.close("}");
|
|
1630
1664
|
yield w.take();
|
|
@@ -1661,27 +1695,27 @@ function* writeCytoscape(snapshot: GraphSnapshot, p: Plan): Generator<string, vo
|
|
|
1661
1695
|
w.key("data");
|
|
1662
1696
|
writeGraphObject(c, p);
|
|
1663
1697
|
}
|
|
1664
|
-
|
|
1698
|
+
writeCytoscapeTopLevel(c, p);
|
|
1699
|
+
writeTopLevelBlock(c, p);
|
|
1665
1700
|
w.close("}");
|
|
1666
1701
|
yield w.take();
|
|
1667
1702
|
}
|
|
1668
1703
|
|
|
1669
1704
|
/**
|
|
1670
|
-
* Write a node's
|
|
1705
|
+
* Write a Cytoscape.js node's position: stored y-up, written with Cytoscape's y growing downward.
|
|
1671
1706
|
* @param c - the cursor
|
|
1672
|
-
* @param
|
|
1673
|
-
* @param i - the node
|
|
1707
|
+
* @param p - the plan
|
|
1708
|
+
* @param i - the node
|
|
1674
1709
|
*/
|
|
1675
|
-
function writeCytoscapePosition(c: Cursor,
|
|
1710
|
+
function writeCytoscapePosition(c: Cursor, p: Plan, i: number): void {
|
|
1676
1711
|
const { w } = c;
|
|
1677
|
-
for (const item of
|
|
1712
|
+
for (const item of p.nodes) {
|
|
1678
1713
|
if (item.slot === "cytoscapePosition" && item.column.isSet(i)) {
|
|
1679
1714
|
const value = item.column.value(i) as ArrayLike<number>;
|
|
1680
1715
|
const f32 = item.column.dtype === "f32";
|
|
1681
1716
|
w.key("position");
|
|
1682
1717
|
w.open("{");
|
|
1683
1718
|
w.member("x", numberText(value[0], f32, c.nonfinite));
|
|
1684
|
-
// stored y-up; Cytoscape's y grows downward
|
|
1685
1719
|
w.member("y", numberText(flipY(value[1]), f32, c.nonfinite));
|
|
1686
1720
|
w.close("}");
|
|
1687
1721
|
}
|
|
@@ -1689,19 +1723,23 @@ function writeCytoscapePosition(c: Cursor, items: readonly ColumnPlan[], i: numb
|
|
|
1689
1723
|
}
|
|
1690
1724
|
|
|
1691
1725
|
/**
|
|
1692
|
-
* Write the
|
|
1726
|
+
* Write the top-level keys of a Cytoscape.js document an import kept, and the stylesheet: the styles written replace
|
|
1727
|
+
* the stylesheet the file was read with.
|
|
1693
1728
|
* @param c - the cursor
|
|
1694
|
-
* @param
|
|
1729
|
+
* @param p - the plan
|
|
1695
1730
|
*/
|
|
1696
|
-
function
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1731
|
+
function writeCytoscapeTopLevel(c: Cursor, p: Plan): void {
|
|
1732
|
+
const { w } = c;
|
|
1733
|
+
const extra = p.resolved.shape.cytoscape ?? {};
|
|
1734
|
+
const stylesheet = p.resolved.styled?.stylesheet ?? null;
|
|
1700
1735
|
for (const key of Object.keys(extra)) {
|
|
1701
|
-
if (key !== "elements" && key !== "data") {
|
|
1702
|
-
|
|
1736
|
+
if (key !== "elements" && key !== "data" && !(key === "style" && stylesheet !== null)) {
|
|
1737
|
+
w.member(key, valueText(extra[key], false, c.nonfinite));
|
|
1703
1738
|
}
|
|
1704
1739
|
}
|
|
1740
|
+
if (stylesheet !== null) {
|
|
1741
|
+
w.member("style", valueText(stylesheet, false, c.nonfinite));
|
|
1742
|
+
}
|
|
1705
1743
|
}
|
|
1706
1744
|
|
|
1707
1745
|
/**
|
|
@@ -1744,9 +1782,20 @@ function edgeIdGenerator(snapshot: GraphSnapshot, p: Plan): (e: number) => strin
|
|
|
1744
1782
|
* @returns the parts
|
|
1745
1783
|
*/
|
|
1746
1784
|
function parts(snapshot: GraphSnapshot, resolved: Resolved): Generator<string, void, undefined> {
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1785
|
+
const s = resolved.styled?.snapshot ?? snapshot;
|
|
1786
|
+
return resolved.dialect === "obographs" ? planObographs(s, resolved).write() : write(s, plan(s, resolved));
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1789
|
+
/**
|
|
1790
|
+
* Resolve the options and, when styles are written, work them out for the dialect.
|
|
1791
|
+
* @param snapshot - the snapshot
|
|
1792
|
+
* @param options - the caller's options, with the styles graph-io hands an exporter
|
|
1793
|
+
* @returns the resolved options
|
|
1794
|
+
*/
|
|
1795
|
+
function resolveStyled(snapshot: GraphSnapshot, options: JsonWriteOptions | undefined): Resolved {
|
|
1796
|
+
const resolved = resolve(snapshot, options);
|
|
1797
|
+
const styled = jsonStyledExport(snapshot, resolved.dialect, options?.styles);
|
|
1798
|
+
return styled === null ? resolved : { ...resolved, styled };
|
|
1750
1799
|
}
|
|
1751
1800
|
|
|
1752
1801
|
/**
|
|
@@ -1768,6 +1817,7 @@ export const jsonExporter: GraphExporter<JsonExportOptions> = Object.freeze({
|
|
|
1768
1817
|
"weightKey",
|
|
1769
1818
|
]),
|
|
1770
1819
|
capabilities: dialectCapabilities("node-link"),
|
|
1820
|
+
styles: Object.freeze({ capabilities: JSON_STYLE_CAPABILITIES }),
|
|
1771
1821
|
|
|
1772
1822
|
/**
|
|
1773
1823
|
* Pre-flight: every loss of the selected dialect, without writing anything.
|
|
@@ -1776,10 +1826,10 @@ export const jsonExporter: GraphExporter<JsonExportOptions> = Object.freeze({
|
|
|
1776
1826
|
* @returns the notes, empty when the export is exact
|
|
1777
1827
|
*/
|
|
1778
1828
|
check(snapshot: GraphSnapshot, options?: JsonExportOptions & CommonExportOptions): readonly LossNote[] {
|
|
1779
|
-
const resolved =
|
|
1780
|
-
const
|
|
1781
|
-
|
|
1782
|
-
return Object.freeze([...notes]);
|
|
1829
|
+
const resolved = resolveStyled(snapshot, options);
|
|
1830
|
+
const s = resolved.styled?.snapshot ?? snapshot;
|
|
1831
|
+
const notes = resolved.dialect === "obographs" ? planObographs(s, resolved).notes : plan(s, resolved).notes;
|
|
1832
|
+
return Object.freeze([...notes, ...(resolved.styled?.notes ?? [])]);
|
|
1783
1833
|
},
|
|
1784
1834
|
|
|
1785
1835
|
/**
|
|
@@ -1789,7 +1839,7 @@ export const jsonExporter: GraphExporter<JsonExportOptions> = Object.freeze({
|
|
|
1789
1839
|
* @returns the chunks
|
|
1790
1840
|
*/
|
|
1791
1841
|
export(snapshot: GraphSnapshot, options?: JsonExportOptions & CommonExportOptions): AsyncIterable<Uint8Array> {
|
|
1792
|
-
return encodeChunks(parts(snapshot,
|
|
1842
|
+
return encodeChunks(parts(snapshot, resolveStyled(snapshot, options)));
|
|
1793
1843
|
},
|
|
1794
1844
|
|
|
1795
1845
|
/**
|
|
@@ -1799,7 +1849,7 @@ export const jsonExporter: GraphExporter<JsonExportOptions> = Object.freeze({
|
|
|
1799
1849
|
* @returns the document
|
|
1800
1850
|
*/
|
|
1801
1851
|
exportToString(snapshot: GraphSnapshot, options?: JsonExportOptions & CommonExportOptions): Promise<string> {
|
|
1802
|
-
return joinText(parts(snapshot,
|
|
1852
|
+
return joinText(parts(snapshot, resolveStyled(snapshot, options)));
|
|
1803
1853
|
},
|
|
1804
1854
|
});
|
|
1805
1855
|
|