@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
|
@@ -12,6 +12,12 @@
|
|
|
12
12
|
* `cx.bypass` columns, the provenance aspects a CX import created, the style rules and unknown
|
|
13
13
|
* aspects a CX import kept, and `status`.
|
|
14
14
|
*
|
|
15
|
+
* Given styles (`exportGraph(..., { styles })`), `cyVisualProperties` holds the Cytoscape style of the rules
|
|
16
|
+
* (`network`, `nodes:default` and `edges:default` with their mappings and dependencies) and a bypass for every
|
|
17
|
+
* element whose value the style cannot give, and the style values the rules read are attributes. The
|
|
18
|
+
* `graphty.styles` block, which graph-io hands over as a graph attribute, is written as an aspect of its own
|
|
19
|
+
* (a kept one is written back the same way).
|
|
20
|
+
*
|
|
15
21
|
* What CX cannot hold is announced by check() before anything is written: every edge is directed
|
|
16
22
|
* (W_CX_UNDIRECTED_AS_DIRECTED, W_MUTUAL_EXPANDED), node ids are integers (E_ID_CHARSET unless
|
|
17
23
|
* `sanitizeIds: "mangle"`, which keeps the original in the `graphty:originalId` attribute the
|
|
@@ -42,8 +48,12 @@ import { type ResolvedExportOptions, resolveExportOptions } from "../../common/o
|
|
|
42
48
|
import { plural } from "../../common/plural.js";
|
|
43
49
|
import { type ExplicitWeights, explicitWeights } from "../../common/weights.js";
|
|
44
50
|
import { encodeChunks, joinText } from "../../common/writer.js";
|
|
51
|
+
import { cytoscapeCxAspect, type CytoscapeEmitted } from "../../styles/cytoscape/emit.js";
|
|
52
|
+
import { STYLE_BLOCK_NAME } from "../../styles/io/block.js";
|
|
53
|
+
import type { ExporterStyleOptions } from "../../styles/io/writer.js";
|
|
45
54
|
import { type CommonExportOptions, type ExportCapabilities, type GraphExporter, type LossNote } from "../../types.js";
|
|
46
55
|
import { ORIGINAL_ID_ATTRIBUTE } from "../cx2/importer.js";
|
|
56
|
+
import { blockAspect, CX_STYLE_CAPABILITIES, cytoscapeStyledExport, snapshotBlock } from "./styles.js";
|
|
47
57
|
|
|
48
58
|
/** The format name. */
|
|
49
59
|
const CX_FORMAT = "cx";
|
|
@@ -216,6 +226,7 @@ const NEVER_WRITTEN: ReadonlySet<string> = new Set([
|
|
|
216
226
|
"status",
|
|
217
227
|
"groups",
|
|
218
228
|
"subnetwork",
|
|
229
|
+
STYLE_BLOCK_NAME,
|
|
219
230
|
]);
|
|
220
231
|
|
|
221
232
|
/** The weight attribute name (the CX importer's weightFrom default). */
|
|
@@ -559,7 +570,12 @@ function plan(snapshot: GraphSnapshot, common: ResolvedExportOptions): Plan {
|
|
|
559
570
|
nonfinite += weight.nonfinite;
|
|
560
571
|
|
|
561
572
|
graphColumnNotes(snapshot, note);
|
|
562
|
-
|
|
573
|
+
// the graphty.styles block is an aspect of its own
|
|
574
|
+
const graphAttrs = attributePlans(
|
|
575
|
+
snapshot.graph,
|
|
576
|
+
(c) => isBypass(c) || c.meta.name === STYLE_BLOCK_NAME,
|
|
577
|
+
(c) => c.meta.name,
|
|
578
|
+
);
|
|
563
579
|
|
|
564
580
|
if (children.column !== null && children.column.meta.role === "parents" && !several) {
|
|
565
581
|
note(
|
|
@@ -900,9 +916,10 @@ function writtenEdges(snapshot: GraphSnapshot, folding: PairFolding): number[] {
|
|
|
900
916
|
* @param snapshot - the snapshot
|
|
901
917
|
* @param p - the plan
|
|
902
918
|
* @param ids - the written node ids
|
|
919
|
+
* @param styled - the styles as a Cytoscape style, or null without styles
|
|
903
920
|
* @returns the aspects (those without elements included; the writer skips them)
|
|
904
921
|
*/
|
|
905
|
-
function aspects(snapshot: GraphSnapshot, p: Plan, ids: WrittenIds): Aspect[] {
|
|
922
|
+
function aspects(snapshot: GraphSnapshot, p: Plan, ids: WrittenIds, styled: CytoscapeEmitted | null): Aspect[] {
|
|
906
923
|
const { src, dst } = snapshot.edgeList();
|
|
907
924
|
const edges = writtenEdges(snapshot, p.folding);
|
|
908
925
|
const nodeRange = (): number[] => Array.from({ length: snapshot.nodeCount }, (_, i) => i);
|
|
@@ -1017,8 +1034,18 @@ function aspects(snapshot: GraphSnapshot, p: Plan, ids: WrittenIds): Aspect[] {
|
|
|
1017
1034
|
{ name: "cyTableColumn", elements: () => tableColumns(p, ids) },
|
|
1018
1035
|
{ name: "cartesianLayout", elements: () => layoutElements(p, ids, nodeRange()) },
|
|
1019
1036
|
{ name: "cyGroups", elements: () => groupElements(snapshot, p, ids, edges) },
|
|
1020
|
-
{
|
|
1037
|
+
{
|
|
1038
|
+
name: "cyVisualProperties",
|
|
1039
|
+
elements: () =>
|
|
1040
|
+
styled === null
|
|
1041
|
+
? visualProperties(p, ids, nodeRange(), edges, kept)
|
|
1042
|
+
: styledVisualProperties(styled, ids, p.edgeIds, edges),
|
|
1043
|
+
},
|
|
1021
1044
|
];
|
|
1045
|
+
const block = snapshotBlock(snapshot);
|
|
1046
|
+
if (block !== null) {
|
|
1047
|
+
out.push({ name: STYLE_BLOCK_NAME, elements: () => blockAspect(block) });
|
|
1048
|
+
}
|
|
1022
1049
|
out.push(...provenanceAspects(snapshot, p, ids, edges));
|
|
1023
1050
|
for (const [name, value] of Object.entries(kept)) {
|
|
1024
1051
|
if (!NEVER_WRITTEN.has(name) && Array.isArray(value)) {
|
|
@@ -1281,6 +1308,38 @@ function* visualProperties(
|
|
|
1281
1308
|
}
|
|
1282
1309
|
}
|
|
1283
1310
|
|
|
1311
|
+
/**
|
|
1312
|
+
* The cyVisualProperties entries of a styled export: the style's defaults, mappings and dependencies, then every
|
|
1313
|
+
* element's bypasses (as text, Cytoscape's form).
|
|
1314
|
+
* @param styled - the styles as a Cytoscape style
|
|
1315
|
+
* @param ids - the written ids
|
|
1316
|
+
* @param edgeIds - the written edge ids
|
|
1317
|
+
* @param edges - the written edges
|
|
1318
|
+
* @yields the entries
|
|
1319
|
+
*/
|
|
1320
|
+
function* styledVisualProperties(
|
|
1321
|
+
styled: CytoscapeEmitted,
|
|
1322
|
+
ids: WrittenIds,
|
|
1323
|
+
edgeIds: readonly number[],
|
|
1324
|
+
edges: readonly number[],
|
|
1325
|
+
): Generator<unknown, void, undefined> {
|
|
1326
|
+
yield* cytoscapeCxAspect(styled.style);
|
|
1327
|
+
const text = (m: ReadonlyMap<string, unknown>): Record<string, string> =>
|
|
1328
|
+
Object.fromEntries([...m].map(([k, v]) => [k, String(v)]));
|
|
1329
|
+
for (let row = 0; row < styled.bypasses.node.length; row++) {
|
|
1330
|
+
const m = styled.bypasses.node[row];
|
|
1331
|
+
if (m !== null && m.size > 0) {
|
|
1332
|
+
yield { properties_of: "nodes", applies_to: ids.idAt(row), properties: text(m) };
|
|
1333
|
+
}
|
|
1334
|
+
}
|
|
1335
|
+
for (const e of edges) {
|
|
1336
|
+
const m = styled.bypasses.edge[e];
|
|
1337
|
+
if (m !== null && m.size > 0) {
|
|
1338
|
+
yield { properties_of: "edges", applies_to: edgeIds[e], properties: text(m) };
|
|
1339
|
+
}
|
|
1340
|
+
}
|
|
1341
|
+
}
|
|
1342
|
+
|
|
1284
1343
|
/**
|
|
1285
1344
|
* The view of the subnetwork a CX import read (the one its style rules belong to).
|
|
1286
1345
|
* @param kept - meta.extra.cx
|
|
@@ -1393,10 +1452,15 @@ function provenanceAspects(snapshot: GraphSnapshot, p: Plan, ids: WrittenIds, ed
|
|
|
1393
1452
|
* Write the document as text parts.
|
|
1394
1453
|
* @param snapshot - the snapshot
|
|
1395
1454
|
* @param p - the plan
|
|
1455
|
+
* @param styled - the styles as a Cytoscape style, or null without styles
|
|
1396
1456
|
* @yields the document's text
|
|
1397
1457
|
* @returns nothing
|
|
1398
1458
|
*/
|
|
1399
|
-
function* write(
|
|
1459
|
+
function* write(
|
|
1460
|
+
snapshot: GraphSnapshot,
|
|
1461
|
+
p: Plan,
|
|
1462
|
+
styled: CytoscapeEmitted | null = null,
|
|
1463
|
+
): Generator<string, void, undefined> {
|
|
1400
1464
|
if (p.fatal !== null) {
|
|
1401
1465
|
throw p.fatal;
|
|
1402
1466
|
}
|
|
@@ -1404,7 +1468,7 @@ function* write(snapshot: GraphSnapshot, p: Plan): Generator<string, void, undef
|
|
|
1404
1468
|
if (ids === null) {
|
|
1405
1469
|
throw new GraphFormatError("E_INVALID_ID", "node ids cannot be written as CX integers", { reason: "charset" });
|
|
1406
1470
|
}
|
|
1407
|
-
const all = aspects(snapshot, p, ids);
|
|
1471
|
+
const all = aspects(snapshot, p, ids, styled);
|
|
1408
1472
|
const written: { aspect: Aspect; count: number }[] = [];
|
|
1409
1473
|
for (const aspect of all) {
|
|
1410
1474
|
let count = 0;
|
|
@@ -1450,6 +1514,7 @@ export const cxExporter: GraphExporter<CxExportOptions> = Object.freeze({
|
|
|
1450
1514
|
format: CX_FORMAT,
|
|
1451
1515
|
options: Object.freeze([]),
|
|
1452
1516
|
capabilities: CX_CAPABILITIES,
|
|
1517
|
+
styles: Object.freeze({ capabilities: CX_STYLE_CAPABILITIES }),
|
|
1453
1518
|
|
|
1454
1519
|
/**
|
|
1455
1520
|
* Pre-flight: what export() would lose, without writing anything.
|
|
@@ -1457,8 +1522,12 @@ export const cxExporter: GraphExporter<CxExportOptions> = Object.freeze({
|
|
|
1457
1522
|
* @param options - the common options
|
|
1458
1523
|
* @returns the notes, empty when the export is exact
|
|
1459
1524
|
*/
|
|
1460
|
-
check(snapshot: GraphSnapshot, options?: CxExportOptions): readonly LossNote[] {
|
|
1461
|
-
|
|
1525
|
+
check(snapshot: GraphSnapshot, options?: CxExportOptions & ExporterStyleOptions): readonly LossNote[] {
|
|
1526
|
+
const styled = cytoscapeStyledExport(snapshot, options?.styles, "desktop");
|
|
1527
|
+
return Object.freeze([
|
|
1528
|
+
...plan(styled?.snapshot ?? snapshot, resolveExportOptions(options)).notes,
|
|
1529
|
+
...(styled?.notes ?? []),
|
|
1530
|
+
]);
|
|
1462
1531
|
},
|
|
1463
1532
|
|
|
1464
1533
|
/**
|
|
@@ -1467,8 +1536,8 @@ export const cxExporter: GraphExporter<CxExportOptions> = Object.freeze({
|
|
|
1467
1536
|
* @param options - the common options
|
|
1468
1537
|
* @returns the chunks
|
|
1469
1538
|
*/
|
|
1470
|
-
export(snapshot: GraphSnapshot, options?: CxExportOptions): AsyncIterable<Uint8Array> {
|
|
1471
|
-
return encodeChunks(
|
|
1539
|
+
export(snapshot: GraphSnapshot, options?: CxExportOptions & ExporterStyleOptions): AsyncIterable<Uint8Array> {
|
|
1540
|
+
return encodeChunks(written(snapshot, options));
|
|
1472
1541
|
},
|
|
1473
1542
|
|
|
1474
1543
|
/**
|
|
@@ -1477,7 +1546,22 @@ export const cxExporter: GraphExporter<CxExportOptions> = Object.freeze({
|
|
|
1477
1546
|
* @param options - the common options
|
|
1478
1547
|
* @returns the document
|
|
1479
1548
|
*/
|
|
1480
|
-
exportToString(snapshot: GraphSnapshot, options?: CxExportOptions): Promise<string> {
|
|
1481
|
-
return joinText(
|
|
1549
|
+
exportToString(snapshot: GraphSnapshot, options?: CxExportOptions & ExporterStyleOptions): Promise<string> {
|
|
1550
|
+
return joinText(written(snapshot, options));
|
|
1482
1551
|
},
|
|
1483
1552
|
});
|
|
1553
|
+
|
|
1554
|
+
/**
|
|
1555
|
+
* The document's text, with the styles when they are given.
|
|
1556
|
+
* @param snapshot - the snapshot
|
|
1557
|
+
* @param options - the options
|
|
1558
|
+
* @returns the text parts
|
|
1559
|
+
*/
|
|
1560
|
+
function written(
|
|
1561
|
+
snapshot: GraphSnapshot,
|
|
1562
|
+
options: (CxExportOptions & ExporterStyleOptions) | undefined,
|
|
1563
|
+
): Generator<string, void, undefined> {
|
|
1564
|
+
const styled = cytoscapeStyledExport(snapshot, options?.styles, "desktop");
|
|
1565
|
+
const target = styled?.snapshot ?? snapshot;
|
|
1566
|
+
return write(target, plan(target, resolveExportOptions(options)), styled?.styled ?? null);
|
|
1567
|
+
}
|
|
@@ -17,8 +17,11 @@
|
|
|
17
17
|
* one `graphIndex` / `graphName` picks, `listGraphs()` lists them. Positions come from the
|
|
18
18
|
* subnetwork's view, y flipped to y-up, `z` into the `z` column; `cyGroups` give `parent` (or
|
|
19
19
|
* `parents`); per-element visual properties are one column per property (origin namespace
|
|
20
|
-
* "cx.bypass") and style rules are kept verbatim in `meta.extra.cx
|
|
21
|
-
* (
|
|
20
|
+
* "cx.bypass") and style rules are kept verbatim in `meta.extra.cx`; asked for styles
|
|
21
|
+
* (`importGraph(..., { styles: true })`), the importer reads the view's style rules and bypasses
|
|
22
|
+
* (styles.ts), kept for it through the report, otherwise W_STYLES_NOT_IMPORTED; the `graphty.styles`
|
|
23
|
+
* aspect of a file graphty wrote becomes the graph attribute of that name; provenance aspects become
|
|
24
|
+
* extension tables and list columns.
|
|
22
25
|
*/
|
|
23
26
|
|
|
24
27
|
import {
|
|
@@ -111,6 +114,7 @@ import {
|
|
|
111
114
|
import { agree, plural } from "../../common/plural.js";
|
|
112
115
|
import { ImportReportBuilder } from "../../common/report.js";
|
|
113
116
|
import { weightFromValue } from "../../common/weights.js";
|
|
117
|
+
import { STYLE_BLOCK_NAME } from "../../styles/io/block.js";
|
|
114
118
|
import {
|
|
115
119
|
type CommonImportOptions,
|
|
116
120
|
type GraphChoiceOptions,
|
|
@@ -120,6 +124,7 @@ import {
|
|
|
120
124
|
type ImportReport,
|
|
121
125
|
} from "../../types.js";
|
|
122
126
|
import { ORIGINAL_ID_ATTRIBUTE, zAsOption } from "../cx2/importer.js";
|
|
127
|
+
import { blockOfAspect, type CxStyleSource, readCxStyles } from "./styles.js";
|
|
123
128
|
|
|
124
129
|
/** The format name. */
|
|
125
130
|
const CX_FORMAT = "cx";
|
|
@@ -1083,6 +1088,41 @@ function refId(raw: unknown): NodeId | null {
|
|
|
1083
1088
|
}
|
|
1084
1089
|
}
|
|
1085
1090
|
|
|
1091
|
+
/**
|
|
1092
|
+
* The view a cyVisualProperties entry names.
|
|
1093
|
+
* @param entry - the entry
|
|
1094
|
+
* @returns the view's id, or null when it names none
|
|
1095
|
+
*/
|
|
1096
|
+
function entryView(entry: Record<string, unknown>): NodeId | null {
|
|
1097
|
+
return entry.view === undefined || entry.view === null ? null : refId(entry.view);
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
/**
|
|
1101
|
+
* A visual property value as the text of a bypass cell.
|
|
1102
|
+
* @param raw - the value
|
|
1103
|
+
* @returns the string itself, else its JSON
|
|
1104
|
+
*/
|
|
1105
|
+
function cellText(raw: unknown): string {
|
|
1106
|
+
return typeof raw === "string" ? raw : JSON.stringify(raw);
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
/** What readVisualProperties() collects from the entries of this graph's view. */
|
|
1110
|
+
interface VisualPropertiesRead {
|
|
1111
|
+
/** The per-element values, by property: [row, text] pairs. */
|
|
1112
|
+
readonly columns: {
|
|
1113
|
+
readonly node: Map<string, [number, string][]>;
|
|
1114
|
+
readonly edge: Map<string, [number, string][]>;
|
|
1115
|
+
};
|
|
1116
|
+
/** The network values, by property. */
|
|
1117
|
+
readonly network: Map<string, string>;
|
|
1118
|
+
/** How many default values the entries hold. */
|
|
1119
|
+
defaults: number;
|
|
1120
|
+
/** How many mappings. */
|
|
1121
|
+
mappings: number;
|
|
1122
|
+
/** How many dependencies. */
|
|
1123
|
+
dependencies: number;
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1086
1126
|
/**
|
|
1087
1127
|
* A member list: the ids of an array, or null for "all" (an absent list is empty).
|
|
1088
1128
|
* @param raw - the list
|
|
@@ -1364,26 +1404,6 @@ function memberCount(members: ReadonlySet<NodeId> | null, total: number): number
|
|
|
1364
1404
|
|
|
1365
1405
|
// ============================================================ the build
|
|
1366
1406
|
|
|
1367
|
-
/** The cyVisualProperties of a graph's view, gathered before they are written. */
|
|
1368
|
-
interface VisualCollection {
|
|
1369
|
-
/** per domain, per property: the [row, text] cells */
|
|
1370
|
-
columns: Record<"node" | "edge", Map<string, [number, string][]>>;
|
|
1371
|
-
/** the network values by property */
|
|
1372
|
-
network: Map<string, string>;
|
|
1373
|
-
defaults: number;
|
|
1374
|
-
mappings: number;
|
|
1375
|
-
dependencies: number;
|
|
1376
|
-
}
|
|
1377
|
-
|
|
1378
|
-
/**
|
|
1379
|
-
* A visual property value as text: a string as it is, anything else as JSON.
|
|
1380
|
-
* @param raw - the value
|
|
1381
|
-
* @returns its text
|
|
1382
|
-
*/
|
|
1383
|
-
function visualText(raw: unknown): string {
|
|
1384
|
-
return typeof raw === "string" ? raw : JSON.stringify(raw);
|
|
1385
|
-
}
|
|
1386
|
-
|
|
1387
1407
|
/** One attribute column of the graph being built. */
|
|
1388
1408
|
interface AttributeColumn {
|
|
1389
1409
|
readonly name: string;
|
|
@@ -1509,6 +1529,7 @@ class CxReader {
|
|
|
1509
1529
|
this.writeAttributes("edge", edgeColumns);
|
|
1510
1530
|
this.readNetworkAttributes();
|
|
1511
1531
|
this.readVisualProperties();
|
|
1532
|
+
this.readStyleBlock();
|
|
1512
1533
|
this.readProvenance();
|
|
1513
1534
|
for (const [kind, count] of this.dangling) {
|
|
1514
1535
|
report.warning(
|
|
@@ -2872,79 +2893,86 @@ class CxReader {
|
|
|
2872
2893
|
* applied.
|
|
2873
2894
|
*/
|
|
2874
2895
|
private readVisualProperties(): void {
|
|
2896
|
+
const entries = aspect(this.doc, "cyVisualProperties");
|
|
2875
2897
|
// Cytoscape's table-cell styles: a visual property aspect graph-io keeps but does not read
|
|
2876
2898
|
const tableStyles = TABLE_STYLE_ASPECTS.reduce((n, name) => n + (this.doc.kept.get(name)?.length ?? 0), 0);
|
|
2877
2899
|
// the graph's own view (its first): the one its positions come from; the others stay in meta.extra.cx
|
|
2878
2900
|
const views = new Set(this.plan.views.slice(0, 1));
|
|
2879
|
-
const
|
|
2901
|
+
const ofThisView = (view: NodeId | null): boolean => view === null || views.size === 0 || views.has(view);
|
|
2902
|
+
this.keepVisualPropertiesForStyles(entries, ofThisView);
|
|
2903
|
+
const read: VisualPropertiesRead = {
|
|
2880
2904
|
columns: { node: new Map(), edge: new Map() },
|
|
2881
2905
|
network: new Map(),
|
|
2882
2906
|
defaults: 0,
|
|
2883
2907
|
mappings: 0,
|
|
2884
2908
|
dependencies: 0,
|
|
2885
2909
|
};
|
|
2886
|
-
for (const { value } of
|
|
2887
|
-
if (isRecord(value)) {
|
|
2888
|
-
this.
|
|
2910
|
+
for (const { value } of entries) {
|
|
2911
|
+
if (isRecord(value) && ofThisView(entryView(value))) {
|
|
2912
|
+
this.collectVisualProperties(value, read);
|
|
2889
2913
|
}
|
|
2890
2914
|
}
|
|
2891
|
-
this.writeBypassColumns(
|
|
2892
|
-
this.
|
|
2893
|
-
this.reportStyleRules(visual, tableStyles);
|
|
2915
|
+
this.writeBypassColumns(read);
|
|
2916
|
+
this.warnStylesNotImported(read, tableStyles);
|
|
2894
2917
|
}
|
|
2895
2918
|
|
|
2896
2919
|
/**
|
|
2897
|
-
*
|
|
2898
|
-
*
|
|
2899
|
-
* @param
|
|
2900
|
-
* @param views - the views read (empty: every view)
|
|
2901
|
-
* @param visual - the collection to add to
|
|
2920
|
+
* Hand the style reader the entries of this graph's view (and those naming no view).
|
|
2921
|
+
* @param entries - every cyVisualProperties entry
|
|
2922
|
+
* @param ofThisView - whether a view is this graph's
|
|
2902
2923
|
*/
|
|
2903
|
-
private
|
|
2904
|
-
value:
|
|
2905
|
-
|
|
2906
|
-
visual: VisualCollection,
|
|
2924
|
+
private keepVisualPropertiesForStyles(
|
|
2925
|
+
entries: readonly { value: unknown }[],
|
|
2926
|
+
ofThisView: (view: NodeId | null) => boolean,
|
|
2907
2927
|
): void {
|
|
2908
|
-
const
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
case "nodes":
|
|
2917
|
-
this.collectElementProperties("node", value.applies_to, properties, visual.columns);
|
|
2918
|
-
break;
|
|
2919
|
-
case "edges":
|
|
2920
|
-
this.collectElementProperties("edge", value.applies_to, properties, visual.columns);
|
|
2921
|
-
break;
|
|
2922
|
-
case "network":
|
|
2923
|
-
for (const [property, raw] of Object.entries(properties)) {
|
|
2924
|
-
visual.network.set(property, visualText(raw));
|
|
2928
|
+
const others = new Set<unknown>();
|
|
2929
|
+
const kept = entries
|
|
2930
|
+
.map((h) => h.value)
|
|
2931
|
+
.filter((v) => {
|
|
2932
|
+
const view = isRecord(v) ? entryView(v) : null;
|
|
2933
|
+
if (!ofThisView(view)) {
|
|
2934
|
+
others.add(view);
|
|
2935
|
+
return false;
|
|
2925
2936
|
}
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2937
|
+
return true;
|
|
2938
|
+
});
|
|
2939
|
+
const source: CxStyleSource = others.size > 0 ? { entries: kept, otherViews: others.size } : { entries: kept };
|
|
2940
|
+
this.report.keepForStyles(source);
|
|
2941
|
+
}
|
|
2942
|
+
|
|
2943
|
+
/**
|
|
2944
|
+
* Collect one cyVisualProperties entry of this graph's view.
|
|
2945
|
+
* @param value - the entry
|
|
2946
|
+
* @param read - what is collected so far
|
|
2947
|
+
*/
|
|
2948
|
+
private collectVisualProperties(value: Record<string, unknown>, read: VisualPropertiesRead): void {
|
|
2949
|
+
const properties = isRecord(value.properties) ? value.properties : {};
|
|
2950
|
+
read.mappings += isRecord(value.mappings) ? Object.keys(value.mappings).length : 0;
|
|
2951
|
+
read.dependencies += isRecord(value.dependencies) ? Object.keys(value.dependencies).length : 0;
|
|
2952
|
+
if (value.properties_of === "nodes" || value.properties_of === "edges") {
|
|
2953
|
+
this.collectElementProperties(value, properties, read);
|
|
2954
|
+
} else if (value.properties_of === "network") {
|
|
2955
|
+
for (const [property, raw] of Object.entries(properties)) {
|
|
2956
|
+
read.network.set(property, cellText(raw));
|
|
2957
|
+
}
|
|
2958
|
+
} else {
|
|
2959
|
+
read.defaults += Object.keys(properties).length;
|
|
2930
2960
|
}
|
|
2931
2961
|
}
|
|
2932
2962
|
|
|
2933
2963
|
/**
|
|
2934
|
-
*
|
|
2935
|
-
*
|
|
2936
|
-
* @param
|
|
2937
|
-
* @param
|
|
2938
|
-
* @param properties - its visual properties
|
|
2939
|
-
* @param columns - the per-property cells to add to
|
|
2964
|
+
* Collect the per-element values of a nodes or edges entry.
|
|
2965
|
+
* @param value - the entry
|
|
2966
|
+
* @param properties - its properties
|
|
2967
|
+
* @param read - what is collected so far
|
|
2940
2968
|
*/
|
|
2941
2969
|
private collectElementProperties(
|
|
2942
|
-
|
|
2943
|
-
appliesTo: unknown,
|
|
2970
|
+
value: Record<string, unknown>,
|
|
2944
2971
|
properties: Record<string, unknown>,
|
|
2945
|
-
|
|
2972
|
+
read: VisualPropertiesRead,
|
|
2946
2973
|
): void {
|
|
2947
|
-
const
|
|
2974
|
+
const domain = value.properties_of === "nodes" ? "node" : "edge";
|
|
2975
|
+
const target = refId(value.applies_to);
|
|
2948
2976
|
const rows = domain === "node" ? this.nodeRows : this.edgeRows;
|
|
2949
2977
|
const row = target === null ? undefined : rows.get(target);
|
|
2950
2978
|
if (row === undefined) {
|
|
@@ -2954,19 +2982,19 @@ class CxReader {
|
|
|
2954
2982
|
return;
|
|
2955
2983
|
}
|
|
2956
2984
|
for (const [property, raw] of Object.entries(properties)) {
|
|
2957
|
-
const list = columns[domain].get(property) ?? [];
|
|
2958
|
-
list.push([row,
|
|
2959
|
-
columns[domain].set(property, list);
|
|
2985
|
+
const list = read.columns[domain].get(property) ?? [];
|
|
2986
|
+
list.push([row, cellText(raw)]);
|
|
2987
|
+
read.columns[domain].set(property, list);
|
|
2960
2988
|
}
|
|
2961
2989
|
}
|
|
2962
2990
|
|
|
2963
2991
|
/**
|
|
2964
|
-
* Write the
|
|
2965
|
-
* @param
|
|
2992
|
+
* Write the per-element and network values as string columns in the cx.bypass namespace.
|
|
2993
|
+
* @param read - what was collected
|
|
2966
2994
|
*/
|
|
2967
|
-
private writeBypassColumns(
|
|
2995
|
+
private writeBypassColumns(read: VisualPropertiesRead): void {
|
|
2968
2996
|
for (const domain of ["node", "edge"] as const) {
|
|
2969
|
-
for (const [property, cells] of columns[domain]) {
|
|
2997
|
+
for (const [property, cells] of read.columns[domain]) {
|
|
2970
2998
|
const handle = declareFresh(
|
|
2971
2999
|
this.sink,
|
|
2972
3000
|
domain,
|
|
@@ -2987,14 +3015,7 @@ class CxReader {
|
|
|
2987
3015
|
}
|
|
2988
3016
|
}
|
|
2989
3017
|
}
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
/**
|
|
2993
|
-
* Write the network visual values as graph values in the cx.bypass namespace.
|
|
2994
|
-
* @param network - the value of each property
|
|
2995
|
-
*/
|
|
2996
|
-
private writeBypassNetwork(network: ReadonlyMap<string, string>): void {
|
|
2997
|
-
for (const [property, text] of network) {
|
|
3018
|
+
for (const [property, text] of read.network) {
|
|
2998
3019
|
try {
|
|
2999
3020
|
this.sink.setGraphValue(property, text, {
|
|
3000
3021
|
dtype: "string",
|
|
@@ -3007,12 +3028,12 @@ class CxReader {
|
|
|
3007
3028
|
}
|
|
3008
3029
|
|
|
3009
3030
|
/**
|
|
3010
|
-
*
|
|
3011
|
-
* @param
|
|
3012
|
-
* @param tableStyles -
|
|
3031
|
+
* The warning that the file's style rules are kept and not applied, when it has any.
|
|
3032
|
+
* @param read - what was collected
|
|
3033
|
+
* @param tableStyles - how many table style elements the file holds
|
|
3013
3034
|
*/
|
|
3014
|
-
private
|
|
3015
|
-
const { defaults, mappings, dependencies } =
|
|
3035
|
+
private warnStylesNotImported(read: VisualPropertiesRead, tableStyles: number): void {
|
|
3036
|
+
const { defaults, mappings, dependencies } = read;
|
|
3016
3037
|
if (defaults + mappings + dependencies + tableStyles === 0) {
|
|
3017
3038
|
return;
|
|
3018
3039
|
}
|
|
@@ -3030,6 +3051,17 @@ class CxReader {
|
|
|
3030
3051
|
);
|
|
3031
3052
|
}
|
|
3032
3053
|
|
|
3054
|
+
/** The `graphty.styles` aspect of a file graphty wrote, as the graph attribute of that name. */
|
|
3055
|
+
private readStyleBlock(): void {
|
|
3056
|
+
const block = blockOfAspect(this.doc.kept.get(STYLE_BLOCK_NAME));
|
|
3057
|
+
if (block !== null) {
|
|
3058
|
+
this.sink.setGraphValue(STYLE_BLOCK_NAME, block, {
|
|
3059
|
+
dtype: "string",
|
|
3060
|
+
origin: { format: CX_FORMAT, id: null },
|
|
3061
|
+
});
|
|
3062
|
+
}
|
|
3063
|
+
}
|
|
3064
|
+
|
|
3033
3065
|
/**
|
|
3034
3066
|
* Read the provenance aspects: citations and supports as extension tables cx:citations and
|
|
3035
3067
|
* cx:supports, the node / edge links to them as list columns, functionTerms as a json column,
|
|
@@ -3230,7 +3262,10 @@ class CxReader {
|
|
|
3230
3262
|
}
|
|
3231
3263
|
return found;
|
|
3232
3264
|
};
|
|
3233
|
-
|
|
3265
|
+
// the graphty.styles aspect is read as a graph attribute (readStyleBlock), not kept
|
|
3266
|
+
const extra: Record<string, unknown> = Object.fromEntries(
|
|
3267
|
+
[...this.doc.kept].filter(([name]) => name !== STYLE_BLOCK_NAME),
|
|
3268
|
+
);
|
|
3234
3269
|
const groups = aspect(this.doc, "cyGroups").map((h) => plainJson(h.value));
|
|
3235
3270
|
const own: Record<string, unknown> = {};
|
|
3236
3271
|
if (groups.length > 0) {
|
|
@@ -3312,6 +3347,7 @@ export const cxImporter: GraphImporter<CxImportOptions> = Object.freeze({
|
|
|
3312
3347
|
options: Object.freeze(["zAs"]),
|
|
3313
3348
|
extensions: Object.freeze([".cx"]),
|
|
3314
3349
|
mimeTypes: Object.freeze(["application/json"]),
|
|
3350
|
+
styles: readCxStyles,
|
|
3315
3351
|
|
|
3316
3352
|
/**
|
|
3317
3353
|
* Confidence that the head is CX version 1: 0.95 when a top-level array starts with an object
|