@graphty/graph-io 0.3.42 → 0.3.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/approximations-3Q4TsdTh.js +40 -0
- package/dist/chunks/approximations-3Q4TsdTh.js.map +1 -0
- package/dist/chunks/block-JQiwViEt.js +2777 -0
- package/dist/chunks/block-JQiwViEt.js.map +1 -0
- package/dist/chunks/{choose-DvpbdRuz.js → choose-BemygfH8.js} +3 -2
- package/dist/chunks/{choose-DvpbdRuz.js.map → choose-BemygfH8.js.map} +1 -1
- package/dist/chunks/{constants-fT3E8JYY.js → constants-BFUR_CtU.js} +6 -2
- package/dist/chunks/constants-BFUR_CtU.js.map +1 -0
- package/dist/chunks/convert-BcQ8_jMo.js +59 -0
- package/dist/chunks/convert-BcQ8_jMo.js.map +1 -0
- package/dist/chunks/emit-DCwFLts5.js +3456 -0
- package/dist/chunks/emit-DCwFLts5.js.map +1 -0
- package/dist/chunks/{escape-B62ZGM_a.js → escape-B1rMftd9.js} +43 -20
- package/dist/chunks/escape-B1rMftd9.js.map +1 -0
- package/dist/chunks/{export-rKLeGQMo.js → export-D7IGzTG4.js} +196 -792
- package/dist/chunks/export-D7IGzTG4.js.map +1 -0
- package/dist/chunks/{exporter-BWwEuOPT.js → exporter-BtnqYuuj.js} +22 -12
- package/dist/chunks/exporter-BtnqYuuj.js.map +1 -0
- package/dist/chunks/{exporter-yLxKBvLE.js → exporter-ChPyhBOv.js} +4 -3
- package/dist/chunks/{exporter-yLxKBvLE.js.map → exporter-ChPyhBOv.js.map} +1 -1
- package/dist/chunks/{exporter-8hLNemFk.js → exporter-KEPxYUXD.js} +133 -74
- package/dist/chunks/exporter-KEPxYUXD.js.map +1 -0
- package/dist/chunks/{exporter-CpRyHZ3H.js → exporter-quPUCBiC.js} +1807 -288
- package/dist/chunks/exporter-quPUCBiC.js.map +1 -0
- package/dist/chunks/format-GDmO6m6Q.js +676 -0
- package/dist/chunks/format-GDmO6m6Q.js.map +1 -0
- package/dist/chunks/generic-BL06jrJf.js +1347 -0
- package/dist/chunks/generic-BL06jrJf.js.map +1 -0
- package/dist/chunks/{importer-WrGRZb0N.js → importer-B7r2owVf.js} +449 -102
- package/dist/chunks/importer-B7r2owVf.js.map +1 -0
- package/dist/chunks/{importer-Ht7LNg8L.js → importer-BFmOP96W.js} +116 -296
- package/dist/chunks/importer-BFmOP96W.js.map +1 -0
- package/dist/chunks/{importer-BbNb7eNg.js → importer-C2nzGhdV.js} +1390 -129
- package/dist/chunks/importer-C2nzGhdV.js.map +1 -0
- package/dist/chunks/{importer-Dz7tI8Sa.js → importer-CbX2_rNF.js} +617 -115
- package/dist/chunks/importer-CbX2_rNF.js.map +1 -0
- package/dist/chunks/{importer-D794XUTe.js → importer-CdzeN6X4.js} +31 -8
- package/dist/chunks/importer-CdzeN6X4.js.map +1 -0
- package/dist/chunks/{importer-xZ-3suY1.js → importer-ChKNC_GN.js} +791 -135
- package/dist/chunks/importer-ChKNC_GN.js.map +1 -0
- package/dist/chunks/{importer-C98dpSH4.js → importer-dwoYpSqb.js} +141 -82
- package/dist/chunks/importer-dwoYpSqb.js.map +1 -0
- package/dist/chunks/index-B9fdNpTA.js +4310 -0
- package/dist/chunks/index-B9fdNpTA.js.map +1 -0
- package/dist/chunks/{json-elements-DKSqpNW1.js → json-elements-C4FwgnH5.js} +123 -32
- package/dist/chunks/json-elements-C4FwgnH5.js.map +1 -0
- package/dist/chunks/lexicon-B-knUi-l.js +508 -0
- package/dist/chunks/lexicon-B-knUi-l.js.map +1 -0
- package/dist/chunks/{ontology-export-CtRXjg_i.js → ontology-export-BSpbY5FL.js} +3 -2
- package/dist/chunks/{ontology-export-CtRXjg_i.js.map → ontology-export-BSpbY5FL.js.map} +1 -1
- package/dist/chunks/{records-Cu4bxYOm.js → records-Nwz_rbNt.js} +2 -2
- package/dist/chunks/{records-Cu4bxYOm.js.map → records-Nwz_rbNt.js.map} +1 -1
- package/dist/chunks/styles-Brt9JMfs.js +690 -0
- package/dist/chunks/styles-Brt9JMfs.js.map +1 -0
- package/dist/chunks/styles-_N-C8S-U.js +2102 -0
- package/dist/chunks/styles-_N-C8S-U.js.map +1 -0
- package/dist/chunks/styles-yed-DAfcIkf7.js +842 -0
- package/dist/chunks/styles-yed-DAfcIkf7.js.map +1 -0
- package/dist/chunks/{text-DHOJXnED.js → text-CgzMqHQb.js} +2 -2
- package/dist/chunks/{text-DHOJXnED.js.map → text-CgzMqHQb.js.map} +1 -1
- package/dist/chunks/units-XMZFIFe1.js +19 -0
- package/dist/chunks/units-XMZFIFe1.js.map +1 -0
- package/dist/csv.js +5 -4
- package/dist/csv.js.map +1 -1
- package/dist/cx.js +1 -1
- package/dist/cx2.js +2 -2
- package/dist/cys.js +1 -1
- package/dist/dot.js +5 -2
- package/dist/dot.js.map +1 -1
- package/dist/gexf.js +295 -414
- package/dist/gexf.js.map +1 -1
- package/dist/gml.js +8 -3031
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +354 -240
- package/dist/graph-io.js.map +1 -1
- package/dist/graphml.js +4 -2
- package/dist/graphml.js.map +1 -1
- package/dist/json.js +1 -1
- package/dist/neo4j.js +4 -3
- package/dist/neo4j.js.map +1 -1
- package/dist/obo.js +1 -1
- package/dist/pajek.js +4 -2
- package/dist/positions.d.ts +1 -0
- package/dist/positions.js +427 -0
- package/dist/positions.js.map +1 -0
- package/dist/src/common/codes.d.ts +6 -0
- package/dist/src/common/codes.d.ts.map +1 -1
- package/dist/src/common/codes.js +6 -0
- package/dist/src/common/codes.js.map +1 -1
- package/dist/src/common/escape.d.ts.map +1 -1
- package/dist/src/common/escape.js +4 -2
- package/dist/src/common/escape.js.map +1 -1
- package/dist/src/common/export.d.ts +10 -0
- package/dist/src/common/export.d.ts.map +1 -1
- package/dist/src/common/export.js +123 -100
- package/dist/src/common/export.js.map +1 -1
- package/dist/src/common/input.d.ts.map +1 -1
- package/dist/src/common/input.js +8 -1
- package/dist/src/common/input.js.map +1 -1
- package/dist/src/common/json-elements.d.ts +12 -9
- package/dist/src/common/json-elements.d.ts.map +1 -1
- package/dist/src/common/json-elements.js +160 -37
- package/dist/src/common/json-elements.js.map +1 -1
- package/dist/src/common/notes.d.ts +42 -0
- package/dist/src/common/notes.d.ts.map +1 -0
- package/dist/src/common/notes.js +72 -0
- package/dist/src/common/notes.js.map +1 -0
- package/dist/src/common/report.d.ts +18 -0
- package/dist/src/common/report.d.ts.map +1 -1
- package/dist/src/common/report.js +36 -1
- package/dist/src/common/report.js.map +1 -1
- package/dist/src/common/units.d.ts +24 -0
- package/dist/src/common/units.d.ts.map +1 -0
- package/dist/src/common/units.js +26 -0
- package/dist/src/common/units.js.map +1 -0
- package/dist/src/common/xml.d.ts +18 -0
- package/dist/src/common/xml.d.ts.map +1 -1
- package/dist/src/common/xml.js +42 -5
- package/dist/src/common/xml.js.map +1 -1
- package/dist/src/formats/cx/exporter.d.ts +6 -0
- package/dist/src/formats/cx/exporter.d.ts.map +1 -1
- package/dist/src/formats/cx/exporter.js +71 -8
- package/dist/src/formats/cx/exporter.js.map +1 -1
- package/dist/src/formats/cx/importer.d.ts +5 -2
- package/dist/src/formats/cx/importer.d.ts.map +1 -1
- package/dist/src/formats/cx/importer.js +102 -72
- package/dist/src/formats/cx/importer.js.map +1 -1
- package/dist/src/formats/cx/styles.d.ts +102 -0
- package/dist/src/formats/cx/styles.d.ts.map +1 -0
- package/dist/src/formats/cx/styles.js +225 -0
- package/dist/src/formats/cx/styles.js.map +1 -0
- package/dist/src/formats/cx2/exporter.d.ts +5 -0
- package/dist/src/formats/cx2/exporter.d.ts.map +1 -1
- package/dist/src/formats/cx2/exporter.js +181 -71
- package/dist/src/formats/cx2/exporter.js.map +1 -1
- package/dist/src/formats/cx2/importer.d.ts +4 -1
- package/dist/src/formats/cx2/importer.d.ts.map +1 -1
- package/dist/src/formats/cx2/importer.js +19 -1
- package/dist/src/formats/cx2/importer.js.map +1 -1
- package/dist/src/formats/cx2/styles.d.ts +18 -0
- package/dist/src/formats/cx2/styles.d.ts.map +1 -0
- package/dist/src/formats/cx2/styles.js +24 -0
- package/dist/src/formats/cx2/styles.js.map +1 -0
- package/dist/src/formats/cys/constants.d.ts +2 -0
- package/dist/src/formats/cys/constants.d.ts.map +1 -1
- package/dist/src/formats/cys/constants.js +2 -0
- package/dist/src/formats/cys/constants.js.map +1 -1
- package/dist/src/formats/cys/exporter.d.ts +6 -2
- package/dist/src/formats/cys/exporter.d.ts.map +1 -1
- package/dist/src/formats/cys/exporter.js +215 -53
- package/dist/src/formats/cys/exporter.js.map +1 -1
- package/dist/src/formats/cys/importer.d.ts +2 -1
- package/dist/src/formats/cys/importer.d.ts.map +1 -1
- package/dist/src/formats/cys/importer.js +119 -6
- package/dist/src/formats/cys/importer.js.map +1 -1
- package/dist/src/formats/cys/session.d.ts +2 -0
- package/dist/src/formats/cys/session.d.ts.map +1 -1
- package/dist/src/formats/cys/session.js +5 -0
- package/dist/src/formats/cys/session.js.map +1 -1
- package/dist/src/formats/cys/styles.d.ts +38 -0
- package/dist/src/formats/cys/styles.d.ts.map +1 -0
- package/dist/src/formats/cys/styles.js +213 -0
- package/dist/src/formats/cys/styles.js.map +1 -0
- package/dist/src/formats/cys/tables.d.ts +8 -3
- package/dist/src/formats/cys/tables.d.ts.map +1 -1
- package/dist/src/formats/cys/tables.js +88 -34
- package/dist/src/formats/cys/tables.js.map +1 -1
- package/dist/src/formats/dot/exporter.d.ts +2 -0
- package/dist/src/formats/dot/exporter.d.ts.map +1 -1
- package/dist/src/formats/dot/exporter.js +195 -81
- package/dist/src/formats/dot/exporter.js.map +1 -1
- package/dist/src/formats/dot/importer.d.ts.map +1 -1
- package/dist/src/formats/dot/importer.js +100 -20
- package/dist/src/formats/dot/importer.js.map +1 -1
- package/dist/src/formats/dot/index.d.ts +1 -0
- package/dist/src/formats/dot/index.d.ts.map +1 -1
- package/dist/src/formats/dot/index.js +1 -0
- package/dist/src/formats/dot/index.js.map +1 -1
- package/dist/src/formats/dot/positions.d.ts +14 -0
- package/dist/src/formats/dot/positions.d.ts.map +1 -0
- package/dist/src/formats/dot/positions.js +70 -0
- package/dist/src/formats/dot/positions.js.map +1 -0
- package/dist/src/formats/dot/styles.d.ts +82 -0
- package/dist/src/formats/dot/styles.d.ts.map +1 -0
- package/dist/src/formats/dot/styles.js +1484 -0
- package/dist/src/formats/dot/styles.js.map +1 -0
- package/dist/src/formats/gexf/exporter.d.ts.map +1 -1
- package/dist/src/formats/gexf/exporter.js +23 -7
- 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 +441 -265
- package/dist/src/formats/json/importer.js.map +1 -1
- package/dist/src/formats/json/positions.d.ts +16 -0
- package/dist/src/formats/json/positions.d.ts.map +1 -0
- package/dist/src/formats/json/positions.js +44 -0
- package/dist/src/formats/json/positions.js.map +1 -0
- package/dist/src/formats/json/styles.d.ts +102 -0
- package/dist/src/formats/json/styles.d.ts.map +1 -0
- package/dist/src/formats/json/styles.js +1753 -0
- package/dist/src/formats/json/styles.js.map +1 -0
- package/dist/src/formats/neo4j/exporter.d.ts.map +1 -1
- package/dist/src/formats/neo4j/exporter.js +2 -1
- package/dist/src/formats/neo4j/exporter.js.map +1 -1
- package/dist/src/formats/pajek/exporter.d.ts +2 -0
- package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
- package/dist/src/formats/pajek/exporter.js +142 -76
- package/dist/src/formats/pajek/exporter.js.map +1 -1
- package/dist/src/formats/pajek/importer.d.ts +4 -0
- package/dist/src/formats/pajek/importer.d.ts.map +1 -1
- package/dist/src/formats/pajek/importer.js +60 -6
- package/dist/src/formats/pajek/importer.js.map +1 -1
- package/dist/src/formats/pajek/index.d.ts +2 -0
- package/dist/src/formats/pajek/index.d.ts.map +1 -1
- package/dist/src/formats/pajek/index.js +2 -0
- package/dist/src/formats/pajek/index.js.map +1 -1
- package/dist/src/formats/pajek/styles.d.ts +50 -0
- package/dist/src/formats/pajek/styles.d.ts.map +1 -0
- package/dist/src/formats/pajek/styles.js +569 -0
- package/dist/src/formats/pajek/styles.js.map +1 -0
- package/dist/src/formats/pajek/syntax.d.ts +6 -0
- package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
- package/dist/src/formats/pajek/syntax.js +6 -0
- package/dist/src/formats/pajek/syntax.js.map +1 -1
- package/dist/src/formats/xgmml/columns.d.ts.map +1 -1
- package/dist/src/formats/xgmml/columns.js +34 -9
- package/dist/src/formats/xgmml/columns.js.map +1 -1
- package/dist/src/formats/xgmml/constants.d.ts +2 -0
- package/dist/src/formats/xgmml/constants.d.ts.map +1 -1
- package/dist/src/formats/xgmml/constants.js +3 -1
- package/dist/src/formats/xgmml/constants.js.map +1 -1
- package/dist/src/formats/xgmml/document.d.ts +12 -8
- package/dist/src/formats/xgmml/document.d.ts.map +1 -1
- package/dist/src/formats/xgmml/document.js +56 -13
- package/dist/src/formats/xgmml/document.js.map +1 -1
- package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
- package/dist/src/formats/xgmml/emit.js +12 -6
- package/dist/src/formats/xgmml/emit.js.map +1 -1
- package/dist/src/formats/xgmml/exporter.d.ts +3 -1
- package/dist/src/formats/xgmml/exporter.d.ts.map +1 -1
- package/dist/src/formats/xgmml/exporter.js +22 -9
- package/dist/src/formats/xgmml/exporter.js.map +1 -1
- package/dist/src/formats/xgmml/importer.d.ts +2 -1
- package/dist/src/formats/xgmml/importer.d.ts.map +1 -1
- package/dist/src/formats/xgmml/importer.js +31 -24
- package/dist/src/formats/xgmml/importer.js.map +1 -1
- package/dist/src/formats/xgmml/styles.d.ts +104 -0
- package/dist/src/formats/xgmml/styles.d.ts.map +1 -0
- package/dist/src/formats/xgmml/styles.js +310 -0
- package/dist/src/formats/xgmml/styles.js.map +1 -0
- package/dist/src/index.d.ts +9 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -7
- package/dist/src/index.js.map +1 -1
- package/dist/src/positions/codes.d.ts +31 -0
- package/dist/src/positions/codes.d.ts.map +1 -0
- package/dist/src/positions/codes.js +26 -0
- package/dist/src/positions/codes.js.map +1 -0
- package/dist/src/positions/convert.d.ts +58 -0
- package/dist/src/positions/convert.d.ts.map +1 -0
- package/dist/src/positions/convert.js +107 -0
- package/dist/src/positions/convert.js.map +1 -0
- package/dist/src/positions/extract.d.ts +27 -0
- package/dist/src/positions/extract.d.ts.map +1 -0
- package/dist/src/positions/extract.js +526 -0
- package/dist/src/positions/extract.js.map +1 -0
- package/dist/src/positions/index.d.ts +10 -0
- package/dist/src/positions/index.d.ts.map +1 -0
- package/dist/src/positions/index.js +9 -0
- package/dist/src/positions/index.js.map +1 -0
- package/dist/src/positions/types.d.ts +208 -0
- package/dist/src/positions/types.d.ts.map +1 -0
- package/dist/src/positions/types.js +10 -0
- package/dist/src/positions/types.js.map +1 -0
- package/dist/src/registry.d.ts +30 -0
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +130 -9
- package/dist/src/registry.js.map +1 -1
- package/dist/src/styles/annotations.d.ts +132 -0
- package/dist/src/styles/annotations.d.ts.map +1 -0
- package/dist/src/styles/annotations.js +320 -0
- package/dist/src/styles/annotations.js.map +1 -0
- package/dist/src/styles/budget.d.ts +45 -0
- package/dist/src/styles/budget.d.ts.map +1 -0
- package/dist/src/styles/budget.js +58 -0
- package/dist/src/styles/budget.js.map +1 -0
- package/dist/src/styles/canon/bends.d.ts +32 -0
- package/dist/src/styles/canon/bends.d.ts.map +1 -0
- package/dist/src/styles/canon/bends.js +74 -0
- package/dist/src/styles/canon/bends.js.map +1 -0
- package/dist/src/styles/canon/color-tables.d.ts +22 -0
- package/dist/src/styles/canon/color-tables.d.ts.map +1 -0
- package/dist/src/styles/canon/color-tables.js +369 -0
- package/dist/src/styles/canon/color-tables.js.map +1 -0
- package/dist/src/styles/canon/color.d.ts +66 -0
- package/dist/src/styles/canon/color.d.ts.map +1 -0
- package/dist/src/styles/canon/color.js +548 -0
- package/dist/src/styles/canon/color.js.map +1 -0
- package/dist/src/styles/canon/enums.d.ts +25 -0
- package/dist/src/styles/canon/enums.d.ts.map +1 -0
- package/dist/src/styles/canon/enums.js +187 -0
- package/dist/src/styles/canon/enums.js.map +1 -0
- package/dist/src/styles/canon/graphviz.d.ts +48 -0
- package/dist/src/styles/canon/graphviz.d.ts.map +1 -0
- package/dist/src/styles/canon/graphviz.js +160 -0
- package/dist/src/styles/canon/graphviz.js.map +1 -0
- package/dist/src/styles/canon/index.d.ts +13 -0
- package/dist/src/styles/canon/index.d.ts.map +1 -0
- package/dist/src/styles/canon/index.js +13 -0
- package/dist/src/styles/canon/index.js.map +1 -0
- package/dist/src/styles/canon/number.d.ts +59 -0
- package/dist/src/styles/canon/number.d.ts.map +1 -0
- package/dist/src/styles/canon/number.js +142 -0
- package/dist/src/styles/canon/number.js.map +1 -0
- package/dist/src/styles/canon/site.d.ts +51 -0
- package/dist/src/styles/canon/site.d.ts.map +1 -0
- package/dist/src/styles/canon/site.js +63 -0
- package/dist/src/styles/canon/site.js.map +1 -0
- package/dist/src/styles/canon/text.d.ts +61 -0
- package/dist/src/styles/canon/text.d.ts.map +1 -0
- package/dist/src/styles/canon/text.js +199 -0
- package/dist/src/styles/canon/text.js.map +1 -0
- package/dist/src/styles/codes.d.ts +95 -0
- package/dist/src/styles/codes.d.ts.map +1 -0
- package/dist/src/styles/codes.js +97 -0
- package/dist/src/styles/codes.js.map +1 -0
- package/dist/src/styles/cyjs/cascade.d.ts +134 -0
- package/dist/src/styles/cyjs/cascade.d.ts.map +1 -0
- package/dist/src/styles/cyjs/cascade.js +2252 -0
- package/dist/src/styles/cyjs/cascade.js.map +1 -0
- package/dist/src/styles/cyjs/defaults-table.d.ts +25 -0
- package/dist/src/styles/cyjs/defaults-table.d.ts.map +1 -0
- package/dist/src/styles/cyjs/defaults-table.js +76 -0
- package/dist/src/styles/cyjs/defaults-table.js.map +1 -0
- package/dist/src/styles/cyjs/emit.d.ts +82 -0
- package/dist/src/styles/cyjs/emit.d.ts.map +1 -0
- package/dist/src/styles/cyjs/emit.js +790 -0
- package/dist/src/styles/cyjs/emit.js.map +1 -0
- package/dist/src/styles/cyjs/index.d.ts +13 -0
- package/dist/src/styles/cyjs/index.d.ts.map +1 -0
- package/dist/src/styles/cyjs/index.js +13 -0
- package/dist/src/styles/cyjs/index.js.map +1 -0
- package/dist/src/styles/cyjs/live.d.ts +46 -0
- package/dist/src/styles/cyjs/live.d.ts.map +1 -0
- package/dist/src/styles/cyjs/live.js +108 -0
- package/dist/src/styles/cyjs/live.js.map +1 -0
- package/dist/src/styles/cyjs/mappers.d.ts +147 -0
- package/dist/src/styles/cyjs/mappers.d.ts.map +1 -0
- package/dist/src/styles/cyjs/mappers.js +744 -0
- package/dist/src/styles/cyjs/mappers.js.map +1 -0
- package/dist/src/styles/cyjs/selector.d.ts +113 -0
- package/dist/src/styles/cyjs/selector.d.ts.map +1 -0
- package/dist/src/styles/cyjs/selector.js +611 -0
- package/dist/src/styles/cyjs/selector.js.map +1 -0
- package/dist/src/styles/cyjs/stylesheet-text.d.ts +37 -0
- package/dist/src/styles/cyjs/stylesheet-text.d.ts.map +1 -0
- package/dist/src/styles/cyjs/stylesheet-text.js +181 -0
- package/dist/src/styles/cyjs/stylesheet-text.js.map +1 -0
- package/dist/src/styles/cytoscape/emit.d.ts +125 -0
- package/dist/src/styles/cytoscape/emit.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/emit.js +1025 -0
- package/dist/src/styles/cytoscape/emit.js.map +1 -0
- package/dist/src/styles/cytoscape/index.d.ts +10 -0
- package/dist/src/styles/cytoscape/index.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/index.js +10 -0
- package/dist/src/styles/cytoscape/index.js.map +1 -0
- package/dist/src/styles/cytoscape/lexicon.d.ts +49 -0
- package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/lexicon.js +603 -0
- package/dist/src/styles/cytoscape/lexicon.js.map +1 -0
- package/dist/src/styles/cytoscape/mappings.d.ts +171 -0
- package/dist/src/styles/cytoscape/mappings.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/mappings.js +460 -0
- package/dist/src/styles/cytoscape/mappings.js.map +1 -0
- package/dist/src/styles/cytoscape/resolve.d.ts +137 -0
- package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/resolve.js +381 -0
- package/dist/src/styles/cytoscape/resolve.js.map +1 -0
- package/dist/src/styles/cytoscape/translate.d.ts +50 -0
- package/dist/src/styles/cytoscape/translate.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/translate.js +156 -0
- package/dist/src/styles/cytoscape/translate.js.map +1 -0
- package/dist/src/styles/defaults.d.ts +90 -0
- package/dist/src/styles/defaults.d.ts.map +1 -0
- package/dist/src/styles/defaults.js +414 -0
- package/dist/src/styles/defaults.js.map +1 -0
- package/dist/src/styles/index.d.ts +15 -0
- package/dist/src/styles/index.d.ts.map +1 -0
- package/dist/src/styles/index.js +14 -0
- package/dist/src/styles/index.js.map +1 -0
- package/dist/src/styles/internal.d.ts +17 -0
- package/dist/src/styles/internal.d.ts.map +1 -0
- package/dist/src/styles/internal.js +16 -0
- package/dist/src/styles/internal.js.map +1 -0
- package/dist/src/styles/io/approximations.d.ts +24 -0
- package/dist/src/styles/io/approximations.d.ts.map +1 -0
- package/dist/src/styles/io/approximations.js +51 -0
- package/dist/src/styles/io/approximations.js.map +1 -0
- package/dist/src/styles/io/block.d.ts +166 -0
- package/dist/src/styles/io/block.d.ts.map +1 -0
- package/dist/src/styles/io/block.js +930 -0
- package/dist/src/styles/io/block.js.map +1 -0
- package/dist/src/styles/io/generic.d.ts +88 -0
- package/dist/src/styles/io/generic.d.ts.map +1 -0
- package/dist/src/styles/io/generic.js +516 -0
- package/dist/src/styles/io/generic.js.map +1 -0
- package/dist/src/styles/io/index.d.ts +8 -0
- package/dist/src/styles/io/index.d.ts.map +1 -0
- package/dist/src/styles/io/index.js +7 -0
- package/dist/src/styles/io/index.js.map +1 -0
- package/dist/src/styles/io/writer.d.ts +80 -0
- package/dist/src/styles/io/writer.d.ts.map +1 -0
- package/dist/src/styles/io/writer.js +596 -0
- package/dist/src/styles/io/writer.js.map +1 -0
- package/dist/src/styles/notes.d.ts +47 -0
- package/dist/src/styles/notes.d.ts.map +1 -0
- package/dist/src/styles/notes.js +140 -0
- package/dist/src/styles/notes.js.map +1 -0
- package/dist/src/styles/plan/classes.d.ts +31 -0
- package/dist/src/styles/plan/classes.d.ts.map +1 -0
- package/dist/src/styles/plan/classes.js +139 -0
- package/dist/src/styles/plan/classes.js.map +1 -0
- package/dist/src/styles/plan/continuous.d.ts +32 -0
- package/dist/src/styles/plan/continuous.d.ts.map +1 -0
- package/dist/src/styles/plan/continuous.js +165 -0
- package/dist/src/styles/plan/continuous.js.map +1 -0
- package/dist/src/styles/plan/discrete.d.ts +39 -0
- package/dist/src/styles/plan/discrete.d.ts.map +1 -0
- package/dist/src/styles/plan/discrete.js +127 -0
- package/dist/src/styles/plan/discrete.js.map +1 -0
- package/dist/src/styles/plan/families.d.ts +31 -0
- package/dist/src/styles/plan/families.d.ts.map +1 -0
- package/dist/src/styles/plan/families.js +95 -0
- package/dist/src/styles/plan/families.js.map +1 -0
- package/dist/src/styles/plan/features.d.ts +58 -0
- package/dist/src/styles/plan/features.d.ts.map +1 -0
- package/dist/src/styles/plan/features.js +185 -0
- package/dist/src/styles/plan/features.js.map +1 -0
- package/dist/src/styles/plan/index.d.ts +7 -0
- package/dist/src/styles/plan/index.d.ts.map +1 -0
- package/dist/src/styles/plan/index.js +7 -0
- package/dist/src/styles/plan/index.js.map +1 -0
- package/dist/src/styles/plan/plan.d.ts +71 -0
- package/dist/src/styles/plan/plan.d.ts.map +1 -0
- package/dist/src/styles/plan/plan.js +893 -0
- package/dist/src/styles/plan/plan.js.map +1 -0
- package/dist/src/styles/plan/resolve.d.ts +137 -0
- package/dist/src/styles/plan/resolve.d.ts.map +1 -0
- package/dist/src/styles/plan/resolve.js +587 -0
- package/dist/src/styles/plan/resolve.js.map +1 -0
- package/dist/src/styles/types.d.ts +702 -0
- package/dist/src/styles/types.d.ts.map +1 -0
- package/dist/src/styles/types.js +10 -0
- package/dist/src/styles/types.js.map +1 -0
- package/dist/src/styles/vocabulary.d.ts +41 -0
- package/dist/src/styles/vocabulary.d.ts.map +1 -0
- package/dist/src/styles/vocabulary.js +140 -0
- package/dist/src/styles/vocabulary.js.map +1 -0
- package/dist/src/types.d.ts +64 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/styles.d.ts +1 -0
- package/dist/styles.js +322 -0
- package/dist/styles.js.map +1 -0
- package/dist/xgmml.js +5 -4
- package/dist/xgmml.js.map +1 -1
- package/package.json +13 -2
- package/src/common/codes.ts +7 -0
- package/src/common/escape.ts +5 -2
- package/src/common/export.ts +179 -140
- package/src/common/input.ts +8 -4
- package/src/common/json-elements.ts +169 -38
- package/src/common/notes.ts +94 -0
- package/src/common/report.ts +41 -1
- package/src/common/units.ts +42 -0
- package/src/common/xml.ts +45 -5
- package/src/formats/cx/exporter.ts +95 -11
- package/src/formats/cx/importer.ts +126 -90
- package/src/formats/cx/styles.ts +304 -0
- package/src/formats/cx2/exporter.ts +234 -77
- package/src/formats/cx2/importer.ts +19 -1
- package/src/formats/cx2/styles.ts +29 -0
- package/src/formats/cys/constants.ts +3 -0
- package/src/formats/cys/exporter.ts +246 -60
- package/src/formats/cys/importer.ts +125 -9
- package/src/formats/cys/session.ts +6 -0
- package/src/formats/cys/styles.ts +254 -0
- package/src/formats/cys/tables.ts +117 -48
- package/src/formats/dot/exporter.ts +262 -126
- package/src/formats/dot/importer.ts +111 -20
- package/src/formats/dot/index.ts +1 -0
- package/src/formats/dot/positions.ts +77 -0
- package/src/formats/dot/styles.ts +1741 -0
- package/src/formats/gexf/exporter.ts +30 -13
- 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 +543 -323
- package/src/formats/json/positions.ts +50 -0
- package/src/formats/json/styles.ts +2082 -0
- package/src/formats/neo4j/exporter.ts +2 -1
- package/src/formats/pajek/exporter.ts +195 -106
- package/src/formats/pajek/importer.ts +78 -9
- package/src/formats/pajek/index.ts +2 -0
- package/src/formats/pajek/styles.ts +685 -0
- package/src/formats/pajek/syntax.ts +7 -0
- package/src/formats/xgmml/columns.ts +39 -9
- package/src/formats/xgmml/constants.ts +3 -0
- package/src/formats/xgmml/document.ts +54 -12
- package/src/formats/xgmml/emit.ts +11 -6
- package/src/formats/xgmml/exporter.ts +32 -13
- package/src/formats/xgmml/importer.ts +43 -29
- package/src/formats/xgmml/styles.ts +400 -0
- package/src/index.ts +16 -0
- package/src/positions/codes.ts +32 -0
- package/src/positions/convert.ts +123 -0
- package/src/positions/extract.ts +619 -0
- package/src/positions/index.ts +23 -0
- package/src/positions/types.ts +221 -0
- package/src/registry.ts +179 -8
- package/src/styles/annotations.ts +478 -0
- package/src/styles/budget.ts +60 -0
- package/src/styles/canon/bends.ts +84 -0
- package/src/styles/canon/color-tables.ts +386 -0
- package/src/styles/canon/color.ts +624 -0
- package/src/styles/canon/enums.ts +211 -0
- package/src/styles/canon/graphviz.ts +189 -0
- package/src/styles/canon/index.ts +13 -0
- package/src/styles/canon/number.ts +152 -0
- package/src/styles/canon/site.ts +87 -0
- package/src/styles/canon/text.ts +221 -0
- package/src/styles/codes.ts +104 -0
- package/src/styles/cyjs/cascade.ts +2670 -0
- package/src/styles/cyjs/defaults-table.ts +82 -0
- package/src/styles/cyjs/emit.ts +951 -0
- package/src/styles/cyjs/index.ts +37 -0
- package/src/styles/cyjs/live.ts +147 -0
- package/src/styles/cyjs/mappers.ts +879 -0
- package/src/styles/cyjs/selector.ts +778 -0
- package/src/styles/cyjs/stylesheet-text.ts +214 -0
- package/src/styles/cytoscape/emit.ts +1264 -0
- package/src/styles/cytoscape/index.ts +40 -0
- package/src/styles/cytoscape/lexicon.ts +656 -0
- package/src/styles/cytoscape/mappings.ts +603 -0
- package/src/styles/cytoscape/resolve.ts +521 -0
- package/src/styles/cytoscape/translate.ts +237 -0
- package/src/styles/defaults.ts +504 -0
- package/src/styles/index.ts +57 -0
- package/src/styles/internal.ts +17 -0
- package/src/styles/io/approximations.ts +47 -0
- package/src/styles/io/block.ts +1138 -0
- package/src/styles/io/generic.ts +687 -0
- package/src/styles/io/index.ts +18 -0
- package/src/styles/io/writer.ts +745 -0
- package/src/styles/notes.ts +165 -0
- package/src/styles/plan/classes.ts +166 -0
- package/src/styles/plan/continuous.ts +218 -0
- package/src/styles/plan/discrete.ts +165 -0
- package/src/styles/plan/families.ts +115 -0
- package/src/styles/plan/features.ts +234 -0
- package/src/styles/plan/index.ts +7 -0
- package/src/styles/plan/plan.ts +1129 -0
- package/src/styles/plan/resolve.ts +685 -0
- package/src/styles/types.ts +814 -0
- package/src/styles/vocabulary.ts +172 -0
- package/src/types.ts +76 -1
- package/dist/chunks/constants-fT3E8JYY.js.map +0 -1
- package/dist/chunks/escape-B62ZGM_a.js.map +0 -1
- package/dist/chunks/export-rKLeGQMo.js.map +0 -1
- package/dist/chunks/exporter-8hLNemFk.js.map +0 -1
- package/dist/chunks/exporter-BWwEuOPT.js.map +0 -1
- package/dist/chunks/exporter-CpRyHZ3H.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
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
* `z` from the `z` column), `edges`, the `cx2.bypass` columns as `nodeBypasses` / `edgeBypasses`,
|
|
7
7
|
* the opaque aspects a CX2 import kept (which returns its own style rules) and `status`.
|
|
8
8
|
*
|
|
9
|
+
* Given styles (`exportGraph(..., { styles })`), `visualProperties` and `visualEditorProperties` are the
|
|
10
|
+
* Cytoscape style of the rules (defaults and mappings), the bypasses are every element whose value the style
|
|
11
|
+
* cannot give, and the style values the rules read are attributes; the `graphty.styles` block, which graph-io
|
|
12
|
+
* hands over as a graph attribute, is written as an aspect of its own (a kept one is written back the same way).
|
|
13
|
+
*
|
|
9
14
|
* What CX2 cannot hold is announced by check() before anything is written: every edge is
|
|
10
15
|
* directed (W_CX2_UNDIRECTED_AS_DIRECTED, W_MUTUAL_EXPANDED), node ids are integers (E_ID_CHARSET
|
|
11
16
|
* unless `sanitizeIds: "mangle"`, which keeps the original in the `graphty:originalId` attribute
|
|
@@ -32,8 +37,13 @@ import { type ResolvedExportOptions, resolveExportOptions } from "../../common/o
|
|
|
32
37
|
import { plural } from "../../common/plural.js";
|
|
33
38
|
import { type ExplicitWeights, explicitWeights } from "../../common/weights.js";
|
|
34
39
|
import { encodeChunks, joinText } from "../../common/writer.js";
|
|
40
|
+
import { cytoscapeCx2Aspects, type CytoscapeEmitted } from "../../styles/cytoscape/emit.js";
|
|
41
|
+
import { STYLE_BLOCK_NAME } from "../../styles/io/block.js";
|
|
42
|
+
import type { ExporterStyleOptions } from "../../styles/io/writer.js";
|
|
35
43
|
import { type CommonExportOptions, type ExportCapabilities, type GraphExporter, type LossNote } from "../../types.js";
|
|
44
|
+
import { blockAspect, cytoscapeStyledExport, snapshotBlock } from "../cx/styles.js";
|
|
36
45
|
import { BYPASS_NAMESPACE, CX2_FORMAT, cx2Type, ORIGINAL_ID_ATTRIBUTE } from "./importer.js";
|
|
46
|
+
import { CX2_STYLE_CAPABILITIES } from "./styles.js";
|
|
37
47
|
|
|
38
48
|
/**
|
|
39
49
|
* The options of the CX2 exporter: the common export options; it has none of its own.
|
|
@@ -142,8 +152,12 @@ const SKIPPED_ROLES: ReadonlySet<string> = new Set([
|
|
|
142
152
|
"thickness",
|
|
143
153
|
]);
|
|
144
154
|
|
|
155
|
+
/** The style aspects; written from the styles when styles are given, else the kept ones. */
|
|
156
|
+
const STYLE_ASPECTS: ReadonlySet<string> = new Set(["visualProperties", "visualEditorProperties"]);
|
|
157
|
+
|
|
145
158
|
/** The aspects the exporter writes itself; an opaque aspect of the same name is not written again. */
|
|
146
159
|
const CORE_ASPECTS: ReadonlySet<string> = new Set([
|
|
160
|
+
STYLE_BLOCK_NAME,
|
|
147
161
|
"nodes",
|
|
148
162
|
"edges",
|
|
149
163
|
"attributeDeclarations",
|
|
@@ -444,7 +458,8 @@ function plan(snapshot: GraphSnapshot, common: ResolvedExportOptions): Plan {
|
|
|
444
458
|
const edgeAttrs = planEdgeAttributes(snapshot, weights, note);
|
|
445
459
|
const graphAttrs = planAttributes(
|
|
446
460
|
snapshot.graph,
|
|
447
|
-
|
|
461
|
+
// the graphty.styles block is an aspect of its own
|
|
462
|
+
(c) => c.meta.name === STYLE_BLOCK_NAME,
|
|
448
463
|
(c) => c.meta.name,
|
|
449
464
|
).map((p) => ({ ...p, key: p.name }));
|
|
450
465
|
|
|
@@ -569,36 +584,16 @@ function attributesOf(plans: readonly AttributePlan[], row: number): Record<stri
|
|
|
569
584
|
}
|
|
570
585
|
|
|
571
586
|
/**
|
|
572
|
-
*
|
|
587
|
+
* The networkAttributes element and its declarations: the graph attributes, then the snapshot's name and
|
|
588
|
+
* description where no attribute of that name is written.
|
|
573
589
|
* @param snapshot - the snapshot
|
|
574
590
|
* @param p - the plan
|
|
575
|
-
* @
|
|
576
|
-
* @returns nothing
|
|
591
|
+
* @returns the element and the declarations
|
|
577
592
|
*/
|
|
578
|
-
function
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
const { ids } = p;
|
|
583
|
-
if (ids === null) {
|
|
584
|
-
throw new GraphFormatError("E_INVALID_ID", "node ids cannot be written as CX2 integers", { reason: "charset" });
|
|
585
|
-
}
|
|
586
|
-
const { src, dst } = snapshot.edgeList();
|
|
587
|
-
const edges: number[] = [];
|
|
588
|
-
for (let e = 0; e < snapshot.edgeCount; e++) {
|
|
589
|
-
if (!p.folding.folded(e)) {
|
|
590
|
-
edges.push(e);
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
|
|
594
|
-
const nodeDecls = declarations(p.nodeAttrs, true);
|
|
595
|
-
if (p.originalIds) {
|
|
596
|
-
nodeDecls[ORIGINAL_ID_ATTRIBUTE] = { d: "string" };
|
|
597
|
-
}
|
|
598
|
-
const edgeDecls = declarations(p.edgeAttrs, true);
|
|
599
|
-
if (p.weights.weighted) {
|
|
600
|
-
edgeDecls[WEIGHT_ATTRIBUTE] = { d: "double" };
|
|
601
|
-
}
|
|
593
|
+
function networkOf(
|
|
594
|
+
snapshot: GraphSnapshot,
|
|
595
|
+
p: Plan,
|
|
596
|
+
): { network: Record<string, unknown>; networkDecls: Record<string, unknown> } {
|
|
602
597
|
const networkDecls = declarations(p.graphAttrs, false);
|
|
603
598
|
const network: Record<string, unknown> = {};
|
|
604
599
|
for (const a of p.graphAttrs) {
|
|
@@ -617,81 +612,155 @@ function* write(snapshot: GraphSnapshot, p: Plan): Generator<string, void, undef
|
|
|
617
612
|
networkDecls[key] = { d: "string" };
|
|
618
613
|
}
|
|
619
614
|
}
|
|
620
|
-
|
|
615
|
+
return { network, networkDecls };
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* The attributeDeclarations element: the kept declarations of other tables, then the network's, the nodes' and the
|
|
620
|
+
* edges' where there are any.
|
|
621
|
+
* @param p - the plan
|
|
622
|
+
* @param kept - what an import kept in meta.extra.cx2
|
|
623
|
+
* @param networkDecls - the network's declarations
|
|
624
|
+
* @returns the element
|
|
625
|
+
*/
|
|
626
|
+
function declarationsElementOf(
|
|
627
|
+
p: Plan,
|
|
628
|
+
kept: Record<string, unknown>,
|
|
629
|
+
networkDecls: Record<string, unknown>,
|
|
630
|
+
): Record<string, unknown> {
|
|
631
|
+
const nodeDecls = declarations(p.nodeAttrs, true);
|
|
632
|
+
if (p.originalIds) {
|
|
633
|
+
nodeDecls[ORIGINAL_ID_ATTRIBUTE] = { d: "string" };
|
|
634
|
+
}
|
|
635
|
+
const edgeDecls = declarations(p.edgeAttrs, true);
|
|
636
|
+
if (p.weights.weighted) {
|
|
637
|
+
edgeDecls[WEIGHT_ATTRIBUTE] = { d: "double" };
|
|
638
|
+
}
|
|
621
639
|
const otherDecls = isRecord(kept.declarations) ? kept.declarations : {};
|
|
622
|
-
const
|
|
623
|
-
const declarationsElement: Record<string, unknown> = { ...otherDecls };
|
|
640
|
+
const element: Record<string, unknown> = { ...otherDecls };
|
|
624
641
|
for (const [key, table] of [
|
|
625
642
|
["networkAttributes", networkDecls],
|
|
626
643
|
["nodes", nodeDecls],
|
|
627
644
|
["edges", edgeDecls],
|
|
628
645
|
] as const) {
|
|
629
646
|
if (Object.keys(table).length > 0) {
|
|
630
|
-
|
|
647
|
+
element[key] = table;
|
|
631
648
|
}
|
|
632
649
|
}
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
const opaqueAspects = Object.entries(opaque).filter(
|
|
636
|
-
(entry): entry is [string, unknown[]] => !CORE_ASPECTS.has(entry[0]) && Array.isArray(entry[1]),
|
|
637
|
-
);
|
|
650
|
+
return element;
|
|
651
|
+
}
|
|
638
652
|
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
653
|
+
/**
|
|
654
|
+
* One edge element.
|
|
655
|
+
* @param p - the plan
|
|
656
|
+
* @param ids - the written node ids
|
|
657
|
+
* @param src - the source of each edge
|
|
658
|
+
* @param dst - the target of each edge
|
|
659
|
+
* @param e - the edge
|
|
660
|
+
* @returns the element
|
|
661
|
+
*/
|
|
662
|
+
function edgeElement(
|
|
663
|
+
p: Plan,
|
|
664
|
+
ids: WrittenIds,
|
|
665
|
+
src: ArrayLike<number>,
|
|
666
|
+
dst: ArrayLike<number>,
|
|
667
|
+
e: number,
|
|
668
|
+
): Record<string, unknown> {
|
|
669
|
+
const element: Record<string, unknown> = {
|
|
670
|
+
id: p.edgeIds[e],
|
|
671
|
+
s: ids.idAt(src[e]),
|
|
672
|
+
t: ids.idAt(dst[e]),
|
|
673
|
+
};
|
|
674
|
+
let v = attributesOf(p.edgeAttrs, e);
|
|
675
|
+
if (p.weights.isExplicit(e)) {
|
|
676
|
+
const w = p.weights.value(e);
|
|
677
|
+
v ??= {};
|
|
678
|
+
v[WEIGHT_ATTRIBUTE] = Number.isFinite(w) ? w : null;
|
|
643
679
|
}
|
|
644
|
-
if (
|
|
645
|
-
|
|
680
|
+
if (v !== null) {
|
|
681
|
+
element.v = v;
|
|
646
682
|
}
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
683
|
+
return element;
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
/**
|
|
687
|
+
* The optional aspects of a document that are written: those with elements.
|
|
688
|
+
* @param aspects - each aspect's name and element count
|
|
689
|
+
* @returns the metaData counts
|
|
690
|
+
*/
|
|
691
|
+
function presentAspects(aspects: readonly (readonly [string, number])[]): [string, number][] {
|
|
692
|
+
return aspects.filter(([, n]) => n > 0).map(([name, n]) => [name, n]);
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
/**
|
|
696
|
+
* Write the document as text parts.
|
|
697
|
+
* @param snapshot - the snapshot
|
|
698
|
+
* @param p - the plan
|
|
699
|
+
* @param styled - the styles as a Cytoscape style, or null without styles
|
|
700
|
+
* @yields the document's text
|
|
701
|
+
* @returns nothing
|
|
702
|
+
*/
|
|
703
|
+
function* write(
|
|
704
|
+
snapshot: GraphSnapshot,
|
|
705
|
+
p: Plan,
|
|
706
|
+
styled: CytoscapeEmitted | null = null,
|
|
707
|
+
): Generator<string, void, undefined> {
|
|
708
|
+
if (p.fatal !== null) {
|
|
709
|
+
throw p.fatal;
|
|
650
710
|
}
|
|
651
|
-
|
|
652
|
-
|
|
711
|
+
const { ids } = p;
|
|
712
|
+
if (ids === null) {
|
|
713
|
+
throw new GraphFormatError("E_INVALID_ID", "node ids cannot be written as CX2 integers", { reason: "charset" });
|
|
653
714
|
}
|
|
654
|
-
|
|
655
|
-
|
|
715
|
+
const edges: number[] = [];
|
|
716
|
+
for (let e = 0; e < snapshot.edgeCount; e++) {
|
|
717
|
+
if (!p.folding.folded(e)) {
|
|
718
|
+
edges.push(e);
|
|
719
|
+
}
|
|
656
720
|
}
|
|
721
|
+
const { network, networkDecls } = networkOf(snapshot, p);
|
|
722
|
+
const { meta } = snapshot;
|
|
723
|
+
const kept = isRecord(meta.extra.cx2) ? meta.extra.cx2 : {};
|
|
724
|
+
const opaque = meta.sourceFormat === CX2_FORMAT && isRecord(kept.opaque) ? kept.opaque : {};
|
|
725
|
+
const declarationsElement = declarationsElementOf(p, kept, networkDecls);
|
|
726
|
+
const { bypassOf, nodeBypassRows, edgeBypassRows, opaqueAspects } = styleParts(snapshot, p, styled, opaque);
|
|
727
|
+
const hasDeclarations = Object.keys(declarationsElement).length > 0;
|
|
728
|
+
const hasNetwork = Object.keys(network).length > 0;
|
|
729
|
+
const counts: [string, number][] = [
|
|
730
|
+
...presentAspects([
|
|
731
|
+
["attributeDeclarations", hasDeclarations ? 1 : 0],
|
|
732
|
+
["networkAttributes", hasNetwork ? 1 : 0],
|
|
733
|
+
]),
|
|
734
|
+
["nodes", snapshot.nodeCount],
|
|
735
|
+
["edges", edges.length],
|
|
736
|
+
...presentAspects([
|
|
737
|
+
["nodeBypasses", nodeBypassRows.length],
|
|
738
|
+
["edgeBypasses", edgeBypassRows.length],
|
|
739
|
+
]),
|
|
740
|
+
...opaqueAspects.map(([name, elements]): [string, number] => [name, elements.length]),
|
|
741
|
+
];
|
|
657
742
|
|
|
658
743
|
yield '[{"CXVersion":"2.0","hasFragments":false},\n';
|
|
659
744
|
yield `{"metaData":${stringify(counts.map(([name, elementCount]) => ({ name, elementCount })))}},\n`;
|
|
660
745
|
if (hasDeclarations) {
|
|
661
746
|
yield `{"attributeDeclarations":[${stringify(declarationsElement)}]},\n`;
|
|
662
747
|
}
|
|
663
|
-
if (
|
|
748
|
+
if (hasNetwork) {
|
|
664
749
|
yield `{"networkAttributes":[${stringify(network)}]},\n`;
|
|
665
750
|
}
|
|
666
751
|
yield* block("nodes", snapshot.nodeCount, (i) => stringify(nodeElement(p, ids, i)));
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
const element: Record<string, unknown> = {
|
|
670
|
-
id: p.edgeIds[e],
|
|
671
|
-
s: ids.idAt(src[e]),
|
|
672
|
-
t: ids.idAt(dst[e]),
|
|
673
|
-
};
|
|
674
|
-
let v = attributesOf(p.edgeAttrs, e);
|
|
675
|
-
if (p.weights.isExplicit(e)) {
|
|
676
|
-
const w = p.weights.value(e);
|
|
677
|
-
v ??= {};
|
|
678
|
-
v[WEIGHT_ATTRIBUTE] = Number.isFinite(w) ? w : null;
|
|
679
|
-
}
|
|
680
|
-
if (v !== null) {
|
|
681
|
-
element.v = v;
|
|
682
|
-
}
|
|
683
|
-
return stringify(element);
|
|
684
|
-
});
|
|
752
|
+
const { src, dst } = snapshot.edgeList();
|
|
753
|
+
yield* block("edges", edges.length, (k) => stringify(edgeElement(p, ids, src, dst, edges[k])));
|
|
685
754
|
if (nodeBypassRows.length > 0) {
|
|
686
755
|
yield* block("nodeBypasses", nodeBypassRows.length, (k) => {
|
|
687
756
|
const i = nodeBypassRows[k];
|
|
688
|
-
return stringify({ id: ids.idAt(i), v:
|
|
757
|
+
return stringify({ id: ids.idAt(i), v: bypassOf("node", i) });
|
|
689
758
|
});
|
|
690
759
|
}
|
|
691
760
|
if (edgeBypassRows.length > 0) {
|
|
692
761
|
yield* block("edgeBypasses", edgeBypassRows.length, (k) => {
|
|
693
762
|
const e = edgeBypassRows[k];
|
|
694
|
-
return stringify({ id: p.edgeIds[e], v:
|
|
763
|
+
return stringify({ id: p.edgeIds[e], v: bypassOf("edge", e) });
|
|
695
764
|
});
|
|
696
765
|
}
|
|
697
766
|
for (const [name, elements] of opaqueAspects) {
|
|
@@ -700,6 +769,74 @@ function* write(snapshot: GraphSnapshot, p: Plan): Generator<string, void, undef
|
|
|
700
769
|
yield '{"status":[{"error":"","success":true}]}]\n';
|
|
701
770
|
}
|
|
702
771
|
|
|
772
|
+
/** The bypasses and the extra aspects of a document. */
|
|
773
|
+
interface StyleParts {
|
|
774
|
+
/** An element's bypasses, or null. */
|
|
775
|
+
readonly bypassOf: (target: "node" | "edge", row: number) => Record<string, unknown> | null;
|
|
776
|
+
/** The nodes with bypasses. */
|
|
777
|
+
readonly nodeBypassRows: number[];
|
|
778
|
+
/** The written edges with bypasses. */
|
|
779
|
+
readonly edgeBypassRows: number[];
|
|
780
|
+
/** The aspects written after the bypasses: the kept opaque ones, the style, the `graphty.styles` block. */
|
|
781
|
+
readonly opaqueAspects: [string, unknown[]][];
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
/**
|
|
785
|
+
* The bypasses and the extra aspects of a document. With styles, the bypasses and the style aspects are the
|
|
786
|
+
* styles' own (the bypass columns and style aspects of an import are what the styles were read from); without, the
|
|
787
|
+
* bypass columns and the kept aspects are written back.
|
|
788
|
+
* @param snapshot - the snapshot
|
|
789
|
+
* @param p - the plan
|
|
790
|
+
* @param styled - the styles as a Cytoscape style, or null without styles
|
|
791
|
+
* @param opaque - the opaque aspects a CX2 import kept
|
|
792
|
+
* @returns the parts
|
|
793
|
+
*/
|
|
794
|
+
function styleParts(
|
|
795
|
+
snapshot: GraphSnapshot,
|
|
796
|
+
p: Plan,
|
|
797
|
+
styled: CytoscapeEmitted | null,
|
|
798
|
+
opaque: Record<string, unknown>,
|
|
799
|
+
): StyleParts {
|
|
800
|
+
const bypassOf = (target: "node" | "edge", row: number): Record<string, unknown> | null => {
|
|
801
|
+
if (styled === null) {
|
|
802
|
+
return bypassValues(target === "node" ? p.nodeBypasses : p.edgeBypasses, row);
|
|
803
|
+
}
|
|
804
|
+
const m = styled.bypasses[target][row];
|
|
805
|
+
return m === null || m.size === 0 ? null : Object.fromEntries(m);
|
|
806
|
+
};
|
|
807
|
+
const rowsWith = (target: "node" | "edge", n: number): number[] => {
|
|
808
|
+
if (styled === null) {
|
|
809
|
+
return bypassRows(target === "node" ? p.nodeBypasses : p.edgeBypasses, n);
|
|
810
|
+
}
|
|
811
|
+
const out: number[] = [];
|
|
812
|
+
for (let i = 0; i < n; i++) {
|
|
813
|
+
if (bypassOf(target, i) !== null) {
|
|
814
|
+
out.push(i);
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
return out;
|
|
818
|
+
};
|
|
819
|
+
const nodeBypassRows = rowsWith("node", snapshot.nodeCount);
|
|
820
|
+
const edgeBypassRows = rowsWith("edge", snapshot.edgeCount).filter((e) => !p.folding.folded(e));
|
|
821
|
+
const opaqueAspects = Object.entries(opaque).filter(
|
|
822
|
+
(entry): entry is [string, unknown[]] =>
|
|
823
|
+
!CORE_ASPECTS.has(entry[0]) && !(styled !== null && STYLE_ASPECTS.has(entry[0])) && Array.isArray(entry[1]),
|
|
824
|
+
);
|
|
825
|
+
if (styled !== null) {
|
|
826
|
+
const aspects = cytoscapeCx2Aspects(styled.style);
|
|
827
|
+
opaqueAspects.push(
|
|
828
|
+
["visualProperties", aspects.visualProperties],
|
|
829
|
+
["visualEditorProperties", aspects.visualEditorProperties],
|
|
830
|
+
);
|
|
831
|
+
}
|
|
832
|
+
const styleBlock = snapshotBlock(snapshot);
|
|
833
|
+
if (styleBlock !== null) {
|
|
834
|
+
opaqueAspects.push([STYLE_BLOCK_NAME, blockAspect(styleBlock)]);
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
return { bypassOf, nodeBypassRows, edgeBypassRows, opaqueAspects };
|
|
838
|
+
}
|
|
839
|
+
|
|
703
840
|
/**
|
|
704
841
|
* The text of one aspect block, element by element.
|
|
705
842
|
* @param aspect - the aspect name
|
|
@@ -799,6 +936,7 @@ export const cx2Exporter: GraphExporter<Cx2ExportOptions> = Object.freeze({
|
|
|
799
936
|
format: CX2_FORMAT,
|
|
800
937
|
options: Object.freeze([]),
|
|
801
938
|
capabilities: CX2_CAPABILITIES,
|
|
939
|
+
styles: Object.freeze({ capabilities: CX2_STYLE_CAPABILITIES }),
|
|
802
940
|
|
|
803
941
|
/**
|
|
804
942
|
* Pre-flight: what export() would lose, without writing anything.
|
|
@@ -806,8 +944,12 @@ export const cx2Exporter: GraphExporter<Cx2ExportOptions> = Object.freeze({
|
|
|
806
944
|
* @param options - the common options
|
|
807
945
|
* @returns the notes, empty when the export is exact
|
|
808
946
|
*/
|
|
809
|
-
check(snapshot: GraphSnapshot, options?: Cx2ExportOptions): readonly LossNote[] {
|
|
810
|
-
|
|
947
|
+
check(snapshot: GraphSnapshot, options?: Cx2ExportOptions & ExporterStyleOptions): readonly LossNote[] {
|
|
948
|
+
const styled = cytoscapeStyledExport(snapshot, options?.styles, "cx2");
|
|
949
|
+
return Object.freeze([
|
|
950
|
+
...plan(styled?.snapshot ?? snapshot, resolveExportOptions(options)).notes,
|
|
951
|
+
...(styled?.notes ?? []),
|
|
952
|
+
]);
|
|
811
953
|
},
|
|
812
954
|
|
|
813
955
|
/**
|
|
@@ -816,8 +958,8 @@ export const cx2Exporter: GraphExporter<Cx2ExportOptions> = Object.freeze({
|
|
|
816
958
|
* @param options - the common options
|
|
817
959
|
* @returns the chunks
|
|
818
960
|
*/
|
|
819
|
-
export(snapshot: GraphSnapshot, options?: Cx2ExportOptions): AsyncIterable<Uint8Array> {
|
|
820
|
-
return encodeChunks(
|
|
961
|
+
export(snapshot: GraphSnapshot, options?: Cx2ExportOptions & ExporterStyleOptions): AsyncIterable<Uint8Array> {
|
|
962
|
+
return encodeChunks(written(snapshot, options));
|
|
821
963
|
},
|
|
822
964
|
|
|
823
965
|
/**
|
|
@@ -826,7 +968,22 @@ export const cx2Exporter: GraphExporter<Cx2ExportOptions> = Object.freeze({
|
|
|
826
968
|
* @param options - the common options
|
|
827
969
|
* @returns the document
|
|
828
970
|
*/
|
|
829
|
-
exportToString(snapshot: GraphSnapshot, options?: Cx2ExportOptions): Promise<string> {
|
|
830
|
-
return joinText(
|
|
971
|
+
exportToString(snapshot: GraphSnapshot, options?: Cx2ExportOptions & ExporterStyleOptions): Promise<string> {
|
|
972
|
+
return joinText(written(snapshot, options));
|
|
831
973
|
},
|
|
832
974
|
});
|
|
975
|
+
|
|
976
|
+
/**
|
|
977
|
+
* The document's text, with the styles when they are given.
|
|
978
|
+
* @param snapshot - the snapshot
|
|
979
|
+
* @param options - the options
|
|
980
|
+
* @returns the text parts
|
|
981
|
+
*/
|
|
982
|
+
function written(
|
|
983
|
+
snapshot: GraphSnapshot,
|
|
984
|
+
options: (Cx2ExportOptions & ExporterStyleOptions) | undefined,
|
|
985
|
+
): Generator<string, void, undefined> {
|
|
986
|
+
const styled = cytoscapeStyledExport(snapshot, options?.styles, "cx2");
|
|
987
|
+
const target = styled?.snapshot ?? snapshot;
|
|
988
|
+
return write(target, plan(target, resolveExportOptions(options)), styled?.styled ?? null);
|
|
989
|
+
}
|
|
@@ -16,7 +16,10 @@
|
|
|
16
16
|
* `x` / `y` become the position column with y flipped to y-up, `z` the `z` column; per-element
|
|
17
17
|
* bypasses become one column per visual property (origin namespace "cx2.bypass"); style rules
|
|
18
18
|
* (`visualProperties`, `visualEditorProperties`) and every opaque aspect are kept verbatim in
|
|
19
|
-
* `meta.extra.cx2.opaque`
|
|
19
|
+
* `meta.extra.cx2.opaque`. Asked for styles (`importGraph(..., { styles: true })`), the importer reads
|
|
20
|
+
* the style rules and the bypasses (styles.ts), kept for it through the report; otherwise
|
|
21
|
+
* W_STYLES_NOT_IMPORTED. The `graphty.styles` aspect of a file graphty wrote becomes the graph
|
|
22
|
+
* attribute of that name, as in every other format.
|
|
20
23
|
*/
|
|
21
24
|
|
|
22
25
|
import {
|
|
@@ -103,7 +106,10 @@ import {
|
|
|
103
106
|
import { agree, plural } from "../../common/plural.js";
|
|
104
107
|
import { ImportReportBuilder } from "../../common/report.js";
|
|
105
108
|
import { weightFromValue } from "../../common/weights.js";
|
|
109
|
+
import { STYLE_BLOCK_NAME } from "../../styles/io/block.js";
|
|
106
110
|
import { type CommonImportOptions, type GraphImporter, type ImportInput, type ImportReport } from "../../types.js";
|
|
111
|
+
import { blockOfAspect, type Cx2StyleSource } from "../cx/styles.js";
|
|
112
|
+
import { readCx2Styles } from "./styles.js";
|
|
107
113
|
|
|
108
114
|
/**
|
|
109
115
|
* The format name.
|
|
@@ -2402,6 +2408,7 @@ export const cx2Importer: GraphImporter<Cx2ImportOptions> = Object.freeze({
|
|
|
2402
2408
|
options: Object.freeze(["zAs"]),
|
|
2403
2409
|
extensions: Object.freeze([".cx2"]),
|
|
2404
2410
|
mimeTypes: Object.freeze(["application/json"]),
|
|
2411
|
+
styles: readCx2Styles,
|
|
2405
2412
|
|
|
2406
2413
|
/**
|
|
2407
2414
|
* Confidence that the head is CX2: 0.97 when the first member of a top-level array is an
|
|
@@ -2434,7 +2441,18 @@ export const cx2Importer: GraphImporter<Cx2ImportOptions> = Object.freeze({
|
|
|
2434
2441
|
reportSinkOptions(sink, options, report, true);
|
|
2435
2442
|
reportUnusedOptions(options, report, USED_OPTIONS);
|
|
2436
2443
|
const doc = await readDocument(input, report, resolved);
|
|
2444
|
+
// the graphty.styles block of a file graphty wrote: a graph attribute, as in every other format
|
|
2445
|
+
const block = blockOfAspect(doc.opaque.get(STYLE_BLOCK_NAME));
|
|
2446
|
+
doc.opaque.delete(STYLE_BLOCK_NAME);
|
|
2437
2447
|
new Cx2Reader(sink, report, resolved, zAs, doc).build();
|
|
2448
|
+
if (block !== null) {
|
|
2449
|
+
sink.setGraphValue(STYLE_BLOCK_NAME, block, { dtype: "string", origin: { format: CX2_FORMAT, id: null } });
|
|
2450
|
+
}
|
|
2451
|
+
const kept: Cx2StyleSource = {
|
|
2452
|
+
visualProperties: doc.opaque.get("visualProperties"),
|
|
2453
|
+
visualEditorProperties: doc.opaque.get("visualEditorProperties"),
|
|
2454
|
+
};
|
|
2455
|
+
report.keepForStyles(kept);
|
|
2438
2456
|
throwIfAborted(resolved.signal);
|
|
2439
2457
|
return report.finish();
|
|
2440
2458
|
},
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The styles of CX2 files: the `visualProperties` aspect (defaults, `nodeMapping`, `edgeMapping`), the dependencies
|
|
3
|
+
* in `visualEditorProperties`, and the `nodeBypasses` / `edgeBypasses` columns, resolved the way Cytoscape draws
|
|
4
|
+
* them with Cytoscape desktop's default style beneath. The reading and writing CX version 1 shares are in
|
|
5
|
+
* `../cx/styles.ts`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { GraphSnapshot } from "@graphty/graph-format";
|
|
9
|
+
|
|
10
|
+
import { cytoscapeStyleFromCx2 } from "../../styles/cytoscape/mappings.js";
|
|
11
|
+
import { StyleNotes } from "../../styles/notes.js";
|
|
12
|
+
import type { ImporterStyles, StyleReadContext, StyleWriteCapabilities } from "../../styles/types.js";
|
|
13
|
+
import { type Cx2StyleSource, cytoscapeWriteCapabilities, readDeclaredStyles } from "../cx/styles.js";
|
|
14
|
+
|
|
15
|
+
/** What the CX2 writer holds of a graph's styles. */
|
|
16
|
+
export const CX2_STYLE_CAPABILITIES: StyleWriteCapabilities = cytoscapeWriteCapabilities("cx2");
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The styles of an imported CX2 network.
|
|
20
|
+
* @param snapshot - the network
|
|
21
|
+
* @param context - what the import kept, the budget and the cancel signal
|
|
22
|
+
* @returns the styles
|
|
23
|
+
*/
|
|
24
|
+
export function readCx2Styles(snapshot: GraphSnapshot, context: StyleReadContext): ImporterStyles {
|
|
25
|
+
const notes = new StyleNotes();
|
|
26
|
+
const kept = context.kept as Cx2StyleSource | undefined;
|
|
27
|
+
const style = cytoscapeStyleFromCx2(kept?.visualProperties, kept?.visualEditorProperties, notes);
|
|
28
|
+
return readDeclaredStyles(snapshot, context, style, "cx2.bypass", notes, "cx2");
|
|
29
|
+
}
|
|
@@ -142,3 +142,6 @@ export const CYS_ISSUE = Object.freeze({
|
|
|
142
142
|
/** `graphName` matches several networks in the session. The import stops. */
|
|
143
143
|
AMBIGUOUS_GRAPH_NAME: AMBIGUOUS_GRAPH_NAME_CODE,
|
|
144
144
|
});
|
|
145
|
+
|
|
146
|
+
/** The name prefix of the per-element style value columns graphty writes into a session's tables. */
|
|
147
|
+
export const STYLE_COLUMN_PREFIX = "graphty.style.";
|