@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
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The styles of CX version 1 and CX2 files. Both hold one Cytoscape visual style (defaults, mappings and
|
|
3
|
+
* dependencies) and per-element bypasses. The readers resolve every element the way Cytoscape draws it (bypass over
|
|
4
|
+
* mapping over default) and translate the style into neutral rules, with Cytoscape desktop's default style beneath
|
|
5
|
+
* (Cytoscape starts every imported CX or CX2 style as a copy of it). The writers do the reverse: neutral rules
|
|
6
|
+
* become Cytoscape defaults and mappings, everything else per-element bypasses, so Cytoscape draws what graphty
|
|
7
|
+
* draws; the `graphty.styles` block is an aspect of its own and the style values its rules read are attributes.
|
|
8
|
+
*/
|
|
9
|
+
import { STYLE_ISSUE } from "../../styles/codes.js";
|
|
10
|
+
import { cytoscapeWritableProperties, emitCytoscapeStyle, } from "../../styles/cytoscape/emit.js";
|
|
11
|
+
import { cytoscapeStyleFromCx } from "../../styles/cytoscape/mappings.js";
|
|
12
|
+
import { cytoscapeBackground, resolveCytoscape, } from "../../styles/cytoscape/resolve.js";
|
|
13
|
+
import { cytoscapeRules } from "../../styles/cytoscape/translate.js";
|
|
14
|
+
import { STYLE_BLOCK_NAME } from "../../styles/io/block.js";
|
|
15
|
+
import { StyleNotes } from "../../styles/notes.js";
|
|
16
|
+
import { plainCell } from "../../styles/plan/resolve.js";
|
|
17
|
+
import { exactFromBlock, nonEmpty } from "../xgmml/styles.js";
|
|
18
|
+
/**
|
|
19
|
+
* The block text of a `graphty.styles` aspect (`[{ "block": "<json>" }]`, the aspect a CX or CX2 file graphty wrote
|
|
20
|
+
* keeps its block in), or null when it holds none.
|
|
21
|
+
* @param elements - the aspect's elements
|
|
22
|
+
* @returns the text
|
|
23
|
+
*/
|
|
24
|
+
export function blockOfAspect(elements) {
|
|
25
|
+
const first = elements?.[0];
|
|
26
|
+
if (first === null || typeof first !== "object" || !Object.hasOwn(first, "block")) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const text = first.block;
|
|
30
|
+
return typeof text === "string" ? text : null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The `graphty.styles` aspect's elements for a block.
|
|
34
|
+
* @param block - the block's text
|
|
35
|
+
* @returns the elements
|
|
36
|
+
*/
|
|
37
|
+
export function blockAspect(block) {
|
|
38
|
+
return [{ block }];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The `graphty.styles` block a snapshot carries as a graph attribute (an import of a file graphty wrote, or the one
|
|
42
|
+
* graph-io adds for a styled export), or null.
|
|
43
|
+
* @param snapshot - the graph
|
|
44
|
+
* @returns the block's text
|
|
45
|
+
*/
|
|
46
|
+
export function snapshotBlock(snapshot) {
|
|
47
|
+
const column = snapshot.graph.get(STYLE_BLOCK_NAME);
|
|
48
|
+
const value = column?.isSet(0) ? column.value(0) : null;
|
|
49
|
+
return typeof value === "string" ? value : null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Each element's bypasses: the columns of an importer's bypass namespace, keyed by the visual property's own name.
|
|
53
|
+
* @param table - the node or edge table
|
|
54
|
+
* @param n - the element count
|
|
55
|
+
* @param namespace - the bypass namespace
|
|
56
|
+
* @returns per element, its bypasses, and the bypass columns' names
|
|
57
|
+
*/
|
|
58
|
+
function bypassesOf(table, n, namespace) {
|
|
59
|
+
const columns = [...table].filter((c) => c.meta.origin?.namespace === namespace);
|
|
60
|
+
const maps = new Array(n).fill(null);
|
|
61
|
+
for (let i = 0; i < n; i++) {
|
|
62
|
+
let m = null;
|
|
63
|
+
for (const c of columns) {
|
|
64
|
+
const v = plainCell(c.isSet(i) ? c.value(i) : null);
|
|
65
|
+
if (v !== null) {
|
|
66
|
+
m ?? (m = new Map());
|
|
67
|
+
const id = c.meta.origin?.id;
|
|
68
|
+
m.set(typeof id === "string" && id.length > 0 ? id : c.meta.name, v);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
maps[i] = m;
|
|
72
|
+
}
|
|
73
|
+
return { maps, names: columns.map((c) => c.meta.name) };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The styles of a graph from its Cytoscape style and its bypass columns.
|
|
77
|
+
* @param snapshot - the graph
|
|
78
|
+
* @param context - the budget and cancel signal
|
|
79
|
+
* @param style - the file's style
|
|
80
|
+
* @param namespace - the importer's bypass namespace
|
|
81
|
+
* @param notes - where problems are noted
|
|
82
|
+
* @param dialect - the Cytoscape dialect the file is written in
|
|
83
|
+
* @returns the styles
|
|
84
|
+
*/
|
|
85
|
+
export function readDeclaredStyles(snapshot, context, style, namespace, notes, dialect = "desktop") {
|
|
86
|
+
const out = { node: { values: {} }, edge: { values: {} } };
|
|
87
|
+
const readFrom = { node: [], edge: [] };
|
|
88
|
+
for (const target of ["node", "edge"]) {
|
|
89
|
+
context.signal?.throwIfAborted();
|
|
90
|
+
const table = target === "node" ? snapshot.nodes : snapshot.edges;
|
|
91
|
+
const n = target === "node" ? snapshot.nodeCount : snapshot.edgeCount;
|
|
92
|
+
for (const m of style[target].mappings.values()) {
|
|
93
|
+
if (!table.has(m.column)) {
|
|
94
|
+
notes.add(STYLE_ISSUE.MAPPING_COLUMN_MISSING, target, m.column, { sample: m.kind });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const { maps, names } = bypassesOf(table, n, namespace);
|
|
98
|
+
readFrom[target] = names;
|
|
99
|
+
const elements = {
|
|
100
|
+
count: n,
|
|
101
|
+
value: (column, i) => (table.has(column) ? plainCell(table.value(column, i)) : null),
|
|
102
|
+
bypasses: maps,
|
|
103
|
+
};
|
|
104
|
+
const values = resolveCytoscape(target, style, elements, { notes, budget: context.budget });
|
|
105
|
+
// a file graphty wrote: a value its style writes as the nearest Cytoscape value is the block's
|
|
106
|
+
exactFromBlock(snapshot, target, values, dialect);
|
|
107
|
+
const { rules, columns } = cytoscapeRules(target, style, elements, { notes, budget: context.budget });
|
|
108
|
+
out[target] = { values: nonEmpty(values), rules, columns };
|
|
109
|
+
}
|
|
110
|
+
const background = cytoscapeBackground(style, notes);
|
|
111
|
+
return {
|
|
112
|
+
canonical: true,
|
|
113
|
+
dialect: "cytoscape",
|
|
114
|
+
tool: "cytoscape",
|
|
115
|
+
units: "px",
|
|
116
|
+
node: out.node,
|
|
117
|
+
edge: out.edge,
|
|
118
|
+
graph: background === null ? {} : { background },
|
|
119
|
+
notes: notes.list(),
|
|
120
|
+
readFrom,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* The styles of an imported CX version 1 network: the first view's `cyVisualProperties` (other views noted and
|
|
125
|
+
* skipped), its bypasses, and Cytoscape desktop's default style beneath.
|
|
126
|
+
* @param snapshot - the network
|
|
127
|
+
* @param context - what the import kept, the budget and the cancel signal
|
|
128
|
+
* @returns the styles
|
|
129
|
+
*/
|
|
130
|
+
export function readCxStyles(snapshot, context) {
|
|
131
|
+
const notes = new StyleNotes();
|
|
132
|
+
const kept = context.kept;
|
|
133
|
+
const style = cytoscapeStyleFromCx(kept?.entries ?? [], notes);
|
|
134
|
+
const otherViews = kept?.otherViews ?? 0;
|
|
135
|
+
if (otherViews > 0) {
|
|
136
|
+
notes.add(STYLE_ISSUE.OTHER_VIEWS, null, "cyVisualProperties", {
|
|
137
|
+
sample: `${otherViews} more`,
|
|
138
|
+
count: otherViews,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return readDeclaredStyles(snapshot, context, style, "cx.bypass", notes);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* The neutral properties a Cytoscape dialect writes, and the graph's background, as writer capabilities.
|
|
145
|
+
* @param dialect - the dialect
|
|
146
|
+
* @returns the capabilities
|
|
147
|
+
*/
|
|
148
|
+
export function cytoscapeWriteCapabilities(dialect) {
|
|
149
|
+
return Object.freeze({
|
|
150
|
+
node: Object.freeze(cytoscapeWritableProperties("node", dialect)),
|
|
151
|
+
edge: Object.freeze(cytoscapeWritableProperties("edge", dialect)),
|
|
152
|
+
graph: Object.freeze(["background"]),
|
|
153
|
+
// graph-io adds the block as a graph attribute (the writer moves it into an aspect of its own) and the style
|
|
154
|
+
// values the rules read as element attributes
|
|
155
|
+
block: "attributes",
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/** What the CX version 1 writer holds of a graph's styles. */
|
|
159
|
+
export const CX_STYLE_CAPABILITIES = cytoscapeWriteCapabilities("desktop");
|
|
160
|
+
/**
|
|
161
|
+
* The dtype a column of written style values gets: numbers, booleans or text (a mixed column as text).
|
|
162
|
+
* @param col - the values
|
|
163
|
+
* @returns the dtype
|
|
164
|
+
*/
|
|
165
|
+
function valuesDtype(col) {
|
|
166
|
+
const kinds = new Set(col.filter((v) => v !== null).map((v) => typeof v));
|
|
167
|
+
if (kinds.size === 1 && kinds.has("number")) {
|
|
168
|
+
return "f64";
|
|
169
|
+
}
|
|
170
|
+
return kinds.size === 1 && kinds.has("boolean") ? "bool" : "string";
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* A style note as a loss note.
|
|
174
|
+
* @param n - the note
|
|
175
|
+
* @returns the loss note
|
|
176
|
+
*/
|
|
177
|
+
export function lossOf(n) {
|
|
178
|
+
return Object.freeze({
|
|
179
|
+
code: n.code,
|
|
180
|
+
message: n.message,
|
|
181
|
+
column: null,
|
|
182
|
+
count: n.params.count,
|
|
183
|
+
style: n.params.target === null || n.params.property === null || n.params.target === "graph"
|
|
184
|
+
? undefined
|
|
185
|
+
: Object.freeze({ target: n.params.target, property: n.params.property }),
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Works out a CX or CX2 export with styles: the Cytoscape style of the rules, the bypasses that make Cytoscape draw
|
|
190
|
+
* exactly what they give, and the snapshot with the columns its mappings read added.
|
|
191
|
+
* @param snapshot - the graph handed to the exporter
|
|
192
|
+
* @param input - the styles, or undefined when none are written
|
|
193
|
+
* @param dialect - `"desktop"` for CX version 1, `"cx2"` for CX2
|
|
194
|
+
* @returns the styled export, or null without styles
|
|
195
|
+
*/
|
|
196
|
+
export function cytoscapeStyledExport(snapshot, input, dialect) {
|
|
197
|
+
if (input === undefined) {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
const notes = new StyleNotes();
|
|
201
|
+
const styled = emitCytoscapeStyle(input.rules, snapshot, { dialect, notes });
|
|
202
|
+
return { snapshot: withMappedColumns(snapshot, styled), styled, notes: notes.list().map(lossOf) };
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* The snapshot with the columns the emitted mappings read and it lacks added.
|
|
206
|
+
* @param snapshot - the graph handed to the exporter
|
|
207
|
+
* @param styled - the emitted style
|
|
208
|
+
* @returns the snapshot itself when it lacks none
|
|
209
|
+
*/
|
|
210
|
+
function withMappedColumns(snapshot, styled) {
|
|
211
|
+
const missing = ["node", "edge"].flatMap((target) => [...styled.columns[target]]
|
|
212
|
+
.filter(([name]) => !(target === "node" ? snapshot.nodes : snapshot.edges).has(name))
|
|
213
|
+
.map(([name, values]) => ({ target, name, values })));
|
|
214
|
+
if (missing.length === 0) {
|
|
215
|
+
return snapshot;
|
|
216
|
+
}
|
|
217
|
+
const out = snapshot.withColumns();
|
|
218
|
+
for (const { target, name, values } of missing) {
|
|
219
|
+
const dtype = valuesDtype(values);
|
|
220
|
+
const col = dtype === "string" ? values.map((v) => (v === null ? null : String(v))) : values;
|
|
221
|
+
(target === "node" ? out.nodes : out.edges).set(name, col, { dtype });
|
|
222
|
+
}
|
|
223
|
+
return out;
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/formats/cx/styles.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../../../src/formats/cx2/exporter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../../../src/formats/cx2/exporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAwBH,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAKtH;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,QAAQ;IACjB;;;OAGG;;IAEH,qFAAqF;;IAErF,8FAA8F;;IAE9F,uEAAuE;;IAEvE;;;OAGG;;IAEH,yDAAyD;;IAEzD,yDAAyD;;IAEzD,8GAA8G;;IAE9G;;;OAGG;;IAEH;;;OAGG;;IAEH,6FAA6F;;IAE7F,2DAA2D;;EAE7D,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,kBAiB7B,CAAC;AAyyBH;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAuCtD,CAAC"}
|
|
@@ -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
|
|
@@ -21,7 +26,11 @@ import { resolveExportOptions } from "../../common/options.js";
|
|
|
21
26
|
import { plural } from "../../common/plural.js";
|
|
22
27
|
import { explicitWeights } from "../../common/weights.js";
|
|
23
28
|
import { encodeChunks, joinText } from "../../common/writer.js";
|
|
29
|
+
import { cytoscapeCx2Aspects } from "../../styles/cytoscape/emit.js";
|
|
30
|
+
import { STYLE_BLOCK_NAME } from "../../styles/io/block.js";
|
|
31
|
+
import { blockAspect, cytoscapeStyledExport, snapshotBlock } from "../cx/styles.js";
|
|
24
32
|
import { BYPASS_NAMESPACE, CX2_FORMAT, cx2Type, ORIGINAL_ID_ATTRIBUTE } from "./importer.js";
|
|
33
|
+
import { CX2_STYLE_CAPABILITIES } from "./styles.js";
|
|
25
34
|
/**
|
|
26
35
|
* The loss notes the CX2 exporter's check() returns, by name. A key is the
|
|
27
36
|
* code without its severity and format prefixes.
|
|
@@ -119,8 +128,11 @@ const SKIPPED_ROLES = new Set([
|
|
|
119
128
|
"shape",
|
|
120
129
|
"thickness",
|
|
121
130
|
]);
|
|
131
|
+
/** The style aspects; written from the styles when styles are given, else the kept ones. */
|
|
132
|
+
const STYLE_ASPECTS = new Set(["visualProperties", "visualEditorProperties"]);
|
|
122
133
|
/** The aspects the exporter writes itself; an opaque aspect of the same name is not written again. */
|
|
123
134
|
const CORE_ASPECTS = new Set([
|
|
135
|
+
STYLE_BLOCK_NAME,
|
|
124
136
|
"nodes",
|
|
125
137
|
"edges",
|
|
126
138
|
"attributeDeclarations",
|
|
@@ -322,7 +334,9 @@ function plan(snapshot, common) {
|
|
|
322
334
|
const label = snapshot.nodes.byRole("label");
|
|
323
335
|
const nodeAttrs = planAttributes(snapshot.nodes, (c) => (c.meta.role !== null && SKIPPED_ROLES.has(c.meta.role)) || isBypass(c) || isZ(c), (c) => (c === label && !snapshot.nodes.has("name") ? "name" : c.meta.name), ids !== null && ids.changed > 0 ? new Set([ORIGINAL_ID_ATTRIBUTE]) : new Set());
|
|
324
336
|
const edgeAttrs = planEdgeAttributes(snapshot, weights, note);
|
|
325
|
-
const graphAttrs = planAttributes(snapshot.graph,
|
|
337
|
+
const graphAttrs = planAttributes(snapshot.graph,
|
|
338
|
+
// the graphty.styles block is an aspect of its own
|
|
339
|
+
(c) => c.meta.name === STYLE_BLOCK_NAME, (c) => c.meta.name).map((p) => ({ ...p, key: p.name }));
|
|
326
340
|
const position = snapshot.nodes.byRole("position");
|
|
327
341
|
nonFiniteNote(snapshot, [...nodeAttrs, ...edgeAttrs, ...graphAttrs], weights, position, note);
|
|
328
342
|
const edgeIds = planEdgeIds(snapshot, note, ids);
|
|
@@ -437,35 +451,13 @@ function attributesOf(plans, row) {
|
|
|
437
451
|
return out;
|
|
438
452
|
}
|
|
439
453
|
/**
|
|
440
|
-
*
|
|
454
|
+
* The networkAttributes element and its declarations: the graph attributes, then the snapshot's name and
|
|
455
|
+
* description where no attribute of that name is written.
|
|
441
456
|
* @param snapshot - the snapshot
|
|
442
457
|
* @param p - the plan
|
|
443
|
-
* @
|
|
444
|
-
* @returns nothing
|
|
458
|
+
* @returns the element and the declarations
|
|
445
459
|
*/
|
|
446
|
-
function
|
|
447
|
-
if (p.fatal !== null) {
|
|
448
|
-
throw p.fatal;
|
|
449
|
-
}
|
|
450
|
-
const { ids } = p;
|
|
451
|
-
if (ids === null) {
|
|
452
|
-
throw new GraphFormatError("E_INVALID_ID", "node ids cannot be written as CX2 integers", { reason: "charset" });
|
|
453
|
-
}
|
|
454
|
-
const { src, dst } = snapshot.edgeList();
|
|
455
|
-
const edges = [];
|
|
456
|
-
for (let e = 0; e < snapshot.edgeCount; e++) {
|
|
457
|
-
if (!p.folding.folded(e)) {
|
|
458
|
-
edges.push(e);
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
const nodeDecls = declarations(p.nodeAttrs, true);
|
|
462
|
-
if (p.originalIds) {
|
|
463
|
-
nodeDecls[ORIGINAL_ID_ATTRIBUTE] = { d: "string" };
|
|
464
|
-
}
|
|
465
|
-
const edgeDecls = declarations(p.edgeAttrs, true);
|
|
466
|
-
if (p.weights.weighted) {
|
|
467
|
-
edgeDecls[WEIGHT_ATTRIBUTE] = { d: "double" };
|
|
468
|
-
}
|
|
460
|
+
function networkOf(snapshot, p) {
|
|
469
461
|
const networkDecls = declarations(p.graphAttrs, false);
|
|
470
462
|
const network = {};
|
|
471
463
|
for (const a of p.graphAttrs) {
|
|
@@ -484,77 +476,136 @@ function* write(snapshot, p) {
|
|
|
484
476
|
networkDecls[key] = { d: "string" };
|
|
485
477
|
}
|
|
486
478
|
}
|
|
487
|
-
|
|
479
|
+
return { network, networkDecls };
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* The attributeDeclarations element: the kept declarations of other tables, then the network's, the nodes' and the
|
|
483
|
+
* edges' where there are any.
|
|
484
|
+
* @param p - the plan
|
|
485
|
+
* @param kept - what an import kept in meta.extra.cx2
|
|
486
|
+
* @param networkDecls - the network's declarations
|
|
487
|
+
* @returns the element
|
|
488
|
+
*/
|
|
489
|
+
function declarationsElementOf(p, kept, networkDecls) {
|
|
490
|
+
const nodeDecls = declarations(p.nodeAttrs, true);
|
|
491
|
+
if (p.originalIds) {
|
|
492
|
+
nodeDecls[ORIGINAL_ID_ATTRIBUTE] = { d: "string" };
|
|
493
|
+
}
|
|
494
|
+
const edgeDecls = declarations(p.edgeAttrs, true);
|
|
495
|
+
if (p.weights.weighted) {
|
|
496
|
+
edgeDecls[WEIGHT_ATTRIBUTE] = { d: "double" };
|
|
497
|
+
}
|
|
488
498
|
const otherDecls = isRecord(kept.declarations) ? kept.declarations : {};
|
|
489
|
-
const
|
|
490
|
-
const declarationsElement = { ...otherDecls };
|
|
499
|
+
const element = { ...otherDecls };
|
|
491
500
|
for (const [key, table] of [
|
|
492
501
|
["networkAttributes", networkDecls],
|
|
493
502
|
["nodes", nodeDecls],
|
|
494
503
|
["edges", edgeDecls],
|
|
495
504
|
]) {
|
|
496
505
|
if (Object.keys(table).length > 0) {
|
|
497
|
-
|
|
506
|
+
element[key] = table;
|
|
498
507
|
}
|
|
499
508
|
}
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
509
|
+
return element;
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* One edge element.
|
|
513
|
+
* @param p - the plan
|
|
514
|
+
* @param ids - the written node ids
|
|
515
|
+
* @param src - the source of each edge
|
|
516
|
+
* @param dst - the target of each edge
|
|
517
|
+
* @param e - the edge
|
|
518
|
+
* @returns the element
|
|
519
|
+
*/
|
|
520
|
+
function edgeElement(p, ids, src, dst, e) {
|
|
521
|
+
const element = {
|
|
522
|
+
id: p.edgeIds[e],
|
|
523
|
+
s: ids.idAt(src[e]),
|
|
524
|
+
t: ids.idAt(dst[e]),
|
|
525
|
+
};
|
|
526
|
+
let v = attributesOf(p.edgeAttrs, e);
|
|
527
|
+
if (p.weights.isExplicit(e)) {
|
|
528
|
+
const w = p.weights.value(e);
|
|
529
|
+
v ?? (v = {});
|
|
530
|
+
v[WEIGHT_ATTRIBUTE] = Number.isFinite(w) ? w : null;
|
|
507
531
|
}
|
|
508
|
-
if (
|
|
509
|
-
|
|
532
|
+
if (v !== null) {
|
|
533
|
+
element.v = v;
|
|
510
534
|
}
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
535
|
+
return element;
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* The optional aspects of a document that are written: those with elements.
|
|
539
|
+
* @param aspects - each aspect's name and element count
|
|
540
|
+
* @returns the metaData counts
|
|
541
|
+
*/
|
|
542
|
+
function presentAspects(aspects) {
|
|
543
|
+
return aspects.filter(([, n]) => n > 0).map(([name, n]) => [name, n]);
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Write the document as text parts.
|
|
547
|
+
* @param snapshot - the snapshot
|
|
548
|
+
* @param p - the plan
|
|
549
|
+
* @param styled - the styles as a Cytoscape style, or null without styles
|
|
550
|
+
* @yields the document's text
|
|
551
|
+
* @returns nothing
|
|
552
|
+
*/
|
|
553
|
+
function* write(snapshot, p, styled = null) {
|
|
554
|
+
if (p.fatal !== null) {
|
|
555
|
+
throw p.fatal;
|
|
514
556
|
}
|
|
515
|
-
|
|
516
|
-
|
|
557
|
+
const { ids } = p;
|
|
558
|
+
if (ids === null) {
|
|
559
|
+
throw new GraphFormatError("E_INVALID_ID", "node ids cannot be written as CX2 integers", { reason: "charset" });
|
|
517
560
|
}
|
|
518
|
-
|
|
519
|
-
|
|
561
|
+
const edges = [];
|
|
562
|
+
for (let e = 0; e < snapshot.edgeCount; e++) {
|
|
563
|
+
if (!p.folding.folded(e)) {
|
|
564
|
+
edges.push(e);
|
|
565
|
+
}
|
|
520
566
|
}
|
|
567
|
+
const { network, networkDecls } = networkOf(snapshot, p);
|
|
568
|
+
const { meta } = snapshot;
|
|
569
|
+
const kept = isRecord(meta.extra.cx2) ? meta.extra.cx2 : {};
|
|
570
|
+
const opaque = meta.sourceFormat === CX2_FORMAT && isRecord(kept.opaque) ? kept.opaque : {};
|
|
571
|
+
const declarationsElement = declarationsElementOf(p, kept, networkDecls);
|
|
572
|
+
const { bypassOf, nodeBypassRows, edgeBypassRows, opaqueAspects } = styleParts(snapshot, p, styled, opaque);
|
|
573
|
+
const hasDeclarations = Object.keys(declarationsElement).length > 0;
|
|
574
|
+
const hasNetwork = Object.keys(network).length > 0;
|
|
575
|
+
const counts = [
|
|
576
|
+
...presentAspects([
|
|
577
|
+
["attributeDeclarations", hasDeclarations ? 1 : 0],
|
|
578
|
+
["networkAttributes", hasNetwork ? 1 : 0],
|
|
579
|
+
]),
|
|
580
|
+
["nodes", snapshot.nodeCount],
|
|
581
|
+
["edges", edges.length],
|
|
582
|
+
...presentAspects([
|
|
583
|
+
["nodeBypasses", nodeBypassRows.length],
|
|
584
|
+
["edgeBypasses", edgeBypassRows.length],
|
|
585
|
+
]),
|
|
586
|
+
...opaqueAspects.map(([name, elements]) => [name, elements.length]),
|
|
587
|
+
];
|
|
521
588
|
yield '[{"CXVersion":"2.0","hasFragments":false},\n';
|
|
522
589
|
yield `{"metaData":${stringify(counts.map(([name, elementCount]) => ({ name, elementCount })))}},\n`;
|
|
523
590
|
if (hasDeclarations) {
|
|
524
591
|
yield `{"attributeDeclarations":[${stringify(declarationsElement)}]},\n`;
|
|
525
592
|
}
|
|
526
|
-
if (
|
|
593
|
+
if (hasNetwork) {
|
|
527
594
|
yield `{"networkAttributes":[${stringify(network)}]},\n`;
|
|
528
595
|
}
|
|
529
596
|
yield* block("nodes", snapshot.nodeCount, (i) => stringify(nodeElement(p, ids, i)));
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
const element = {
|
|
533
|
-
id: p.edgeIds[e],
|
|
534
|
-
s: ids.idAt(src[e]),
|
|
535
|
-
t: ids.idAt(dst[e]),
|
|
536
|
-
};
|
|
537
|
-
let v = attributesOf(p.edgeAttrs, e);
|
|
538
|
-
if (p.weights.isExplicit(e)) {
|
|
539
|
-
const w = p.weights.value(e);
|
|
540
|
-
v ?? (v = {});
|
|
541
|
-
v[WEIGHT_ATTRIBUTE] = Number.isFinite(w) ? w : null;
|
|
542
|
-
}
|
|
543
|
-
if (v !== null) {
|
|
544
|
-
element.v = v;
|
|
545
|
-
}
|
|
546
|
-
return stringify(element);
|
|
547
|
-
});
|
|
597
|
+
const { src, dst } = snapshot.edgeList();
|
|
598
|
+
yield* block("edges", edges.length, (k) => stringify(edgeElement(p, ids, src, dst, edges[k])));
|
|
548
599
|
if (nodeBypassRows.length > 0) {
|
|
549
600
|
yield* block("nodeBypasses", nodeBypassRows.length, (k) => {
|
|
550
601
|
const i = nodeBypassRows[k];
|
|
551
|
-
return stringify({ id: ids.idAt(i), v:
|
|
602
|
+
return stringify({ id: ids.idAt(i), v: bypassOf("node", i) });
|
|
552
603
|
});
|
|
553
604
|
}
|
|
554
605
|
if (edgeBypassRows.length > 0) {
|
|
555
606
|
yield* block("edgeBypasses", edgeBypassRows.length, (k) => {
|
|
556
607
|
const e = edgeBypassRows[k];
|
|
557
|
-
return stringify({ id: p.edgeIds[e], v:
|
|
608
|
+
return stringify({ id: p.edgeIds[e], v: bypassOf("edge", e) });
|
|
558
609
|
});
|
|
559
610
|
}
|
|
560
611
|
for (const [name, elements] of opaqueAspects) {
|
|
@@ -562,6 +613,49 @@ function* write(snapshot, p) {
|
|
|
562
613
|
}
|
|
563
614
|
yield '{"status":[{"error":"","success":true}]}]\n';
|
|
564
615
|
}
|
|
616
|
+
/**
|
|
617
|
+
* The bypasses and the extra aspects of a document. With styles, the bypasses and the style aspects are the
|
|
618
|
+
* styles' own (the bypass columns and style aspects of an import are what the styles were read from); without, the
|
|
619
|
+
* bypass columns and the kept aspects are written back.
|
|
620
|
+
* @param snapshot - the snapshot
|
|
621
|
+
* @param p - the plan
|
|
622
|
+
* @param styled - the styles as a Cytoscape style, or null without styles
|
|
623
|
+
* @param opaque - the opaque aspects a CX2 import kept
|
|
624
|
+
* @returns the parts
|
|
625
|
+
*/
|
|
626
|
+
function styleParts(snapshot, p, styled, opaque) {
|
|
627
|
+
const bypassOf = (target, row) => {
|
|
628
|
+
if (styled === null) {
|
|
629
|
+
return bypassValues(target === "node" ? p.nodeBypasses : p.edgeBypasses, row);
|
|
630
|
+
}
|
|
631
|
+
const m = styled.bypasses[target][row];
|
|
632
|
+
return m === null || m.size === 0 ? null : Object.fromEntries(m);
|
|
633
|
+
};
|
|
634
|
+
const rowsWith = (target, n) => {
|
|
635
|
+
if (styled === null) {
|
|
636
|
+
return bypassRows(target === "node" ? p.nodeBypasses : p.edgeBypasses, n);
|
|
637
|
+
}
|
|
638
|
+
const out = [];
|
|
639
|
+
for (let i = 0; i < n; i++) {
|
|
640
|
+
if (bypassOf(target, i) !== null) {
|
|
641
|
+
out.push(i);
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
return out;
|
|
645
|
+
};
|
|
646
|
+
const nodeBypassRows = rowsWith("node", snapshot.nodeCount);
|
|
647
|
+
const edgeBypassRows = rowsWith("edge", snapshot.edgeCount).filter((e) => !p.folding.folded(e));
|
|
648
|
+
const opaqueAspects = Object.entries(opaque).filter((entry) => !CORE_ASPECTS.has(entry[0]) && !(styled !== null && STYLE_ASPECTS.has(entry[0])) && Array.isArray(entry[1]));
|
|
649
|
+
if (styled !== null) {
|
|
650
|
+
const aspects = cytoscapeCx2Aspects(styled.style);
|
|
651
|
+
opaqueAspects.push(["visualProperties", aspects.visualProperties], ["visualEditorProperties", aspects.visualEditorProperties]);
|
|
652
|
+
}
|
|
653
|
+
const styleBlock = snapshotBlock(snapshot);
|
|
654
|
+
if (styleBlock !== null) {
|
|
655
|
+
opaqueAspects.push([STYLE_BLOCK_NAME, blockAspect(styleBlock)]);
|
|
656
|
+
}
|
|
657
|
+
return { bypassOf, nodeBypassRows, edgeBypassRows, opaqueAspects };
|
|
658
|
+
}
|
|
565
659
|
/**
|
|
566
660
|
* The text of one aspect block, element by element.
|
|
567
661
|
* @param aspect - the aspect name
|
|
@@ -654,6 +748,7 @@ export const cx2Exporter = Object.freeze({
|
|
|
654
748
|
format: CX2_FORMAT,
|
|
655
749
|
options: Object.freeze([]),
|
|
656
750
|
capabilities: CX2_CAPABILITIES,
|
|
751
|
+
styles: Object.freeze({ capabilities: CX2_STYLE_CAPABILITIES }),
|
|
657
752
|
/**
|
|
658
753
|
* Pre-flight: what export() would lose, without writing anything.
|
|
659
754
|
* @param snapshot - the snapshot
|
|
@@ -661,7 +756,11 @@ export const cx2Exporter = Object.freeze({
|
|
|
661
756
|
* @returns the notes, empty when the export is exact
|
|
662
757
|
*/
|
|
663
758
|
check(snapshot, options) {
|
|
664
|
-
|
|
759
|
+
const styled = cytoscapeStyledExport(snapshot, options?.styles, "cx2");
|
|
760
|
+
return Object.freeze([
|
|
761
|
+
...plan(styled?.snapshot ?? snapshot, resolveExportOptions(options)).notes,
|
|
762
|
+
...(styled?.notes ?? []),
|
|
763
|
+
]);
|
|
665
764
|
},
|
|
666
765
|
/**
|
|
667
766
|
* Write the document as UTF-8 chunks.
|
|
@@ -670,7 +769,7 @@ export const cx2Exporter = Object.freeze({
|
|
|
670
769
|
* @returns the chunks
|
|
671
770
|
*/
|
|
672
771
|
export(snapshot, options) {
|
|
673
|
-
return encodeChunks(
|
|
772
|
+
return encodeChunks(written(snapshot, options));
|
|
674
773
|
},
|
|
675
774
|
/**
|
|
676
775
|
* Write the document as one string.
|
|
@@ -679,7 +778,18 @@ export const cx2Exporter = Object.freeze({
|
|
|
679
778
|
* @returns the document
|
|
680
779
|
*/
|
|
681
780
|
exportToString(snapshot, options) {
|
|
682
|
-
return joinText(
|
|
781
|
+
return joinText(written(snapshot, options));
|
|
683
782
|
},
|
|
684
783
|
});
|
|
784
|
+
/**
|
|
785
|
+
* The document's text, with the styles when they are given.
|
|
786
|
+
* @param snapshot - the snapshot
|
|
787
|
+
* @param options - the options
|
|
788
|
+
* @returns the text parts
|
|
789
|
+
*/
|
|
790
|
+
function written(snapshot, options) {
|
|
791
|
+
const styled = cytoscapeStyledExport(snapshot, options?.styles, "cx2");
|
|
792
|
+
const target = styled?.snapshot ?? snapshot;
|
|
793
|
+
return write(target, plan(target, resolveExportOptions(options)), styled?.styled ?? null);
|
|
794
|
+
}
|
|
685
795
|
//# sourceMappingURL=exporter.js.map
|