@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
|
@@ -12,7 +12,7 @@ import { declareResolved, DictHeuristic, uniqueColumnName } from "../../common/a
|
|
|
12
12
|
import { type ImportReportBuilder, type IssueLocation } from "../../common/report.js";
|
|
13
13
|
import { inferTextDtype, parseTextCell } from "../../common/text.js";
|
|
14
14
|
import { CYTOSCAPE_ORIGIN_NAMESPACE, FORMAT, XGMML_ISSUE } from "./constants.js";
|
|
15
|
-
import { type AttRec,
|
|
15
|
+
import { type AttRec, attTree } from "./document.js";
|
|
16
16
|
import { attType, elementKind, parseScalar, type ScalarKind, widenScalar } from "./values.js";
|
|
17
17
|
|
|
18
18
|
/** A table of the snapshot. */
|
|
@@ -153,6 +153,14 @@ export class ColumnSet {
|
|
|
153
153
|
if (cell !== null) {
|
|
154
154
|
plan.declared.add("string");
|
|
155
155
|
}
|
|
156
|
+
} else if ((type.kind === "list" || type.kind === "map") && deeperThan(att, MAX_JSON_ATT_DEPTH)) {
|
|
157
|
+
// a json value that deep cannot be written as JSON text (or read back) without overflowing the stack
|
|
158
|
+
this.badAtt(
|
|
159
|
+
`"${name}" is nested more than ${String(MAX_JSON_ATT_DEPTH)} atts deep; it is skipped`,
|
|
160
|
+
att,
|
|
161
|
+
"depth",
|
|
162
|
+
);
|
|
163
|
+
cell = null;
|
|
156
164
|
} else if (type.kind === "list") {
|
|
157
165
|
cell = this.listCell(att, name, plan, at);
|
|
158
166
|
plan.declared.add("list");
|
|
@@ -698,19 +706,41 @@ function recordOf(att: AttRec): Record<string, unknown> {
|
|
|
698
706
|
return out;
|
|
699
707
|
}
|
|
700
708
|
|
|
709
|
+
/** The deepest list or map att kept, as a json value. */
|
|
710
|
+
const MAX_JSON_ATT_DEPTH = 64;
|
|
711
|
+
|
|
712
|
+
/**
|
|
713
|
+
* Whether an att tree is deeper than a limit, walked with an explicit stack.
|
|
714
|
+
* @param root - the att
|
|
715
|
+
* @param limit - the most levels allowed
|
|
716
|
+
* @returns true when deeper
|
|
717
|
+
*/
|
|
718
|
+
function deeperThan(root: AttRec, limit: number): boolean {
|
|
719
|
+
const stack: [AttRec, number][] = [[root, 1]];
|
|
720
|
+
for (let top = stack.pop(); top !== undefined; top = stack.pop()) {
|
|
721
|
+
const [att, depth] = top;
|
|
722
|
+
if (depth > limit) {
|
|
723
|
+
return true;
|
|
724
|
+
}
|
|
725
|
+
for (const child of att.children) {
|
|
726
|
+
stack.push([child, depth + 1]);
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
return false;
|
|
730
|
+
}
|
|
731
|
+
|
|
701
732
|
/**
|
|
702
|
-
* An att as a json value: its value text, its children as an array or a record
|
|
733
|
+
* An att as a json value: its XML, its value text, or its children as an array or a record.
|
|
703
734
|
* @param att - the att
|
|
704
735
|
* @returns the value
|
|
705
736
|
*/
|
|
706
737
|
function jsonOfAtt(att: AttRec): unknown {
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
return
|
|
712
|
-
}
|
|
713
|
-
return isListLike(att) ? att.children.map(jsonOfAtt) : recordOf(att);
|
|
738
|
+
return attTree(att, (a) => {
|
|
739
|
+
if (a.xml !== null) {
|
|
740
|
+
return { value: a.xml };
|
|
741
|
+
}
|
|
742
|
+
return a.children.length === 0 ? { value: a.value } : null;
|
|
743
|
+
});
|
|
714
744
|
}
|
|
715
745
|
|
|
716
746
|
/**
|
|
@@ -50,6 +50,7 @@ import {
|
|
|
50
50
|
WEIGHT_KEY_CLASH_CODE,
|
|
51
51
|
WIDENED_CODE,
|
|
52
52
|
XML_ILLEGAL_CHAR_CODE,
|
|
53
|
+
XML_NESTING_CODE,
|
|
53
54
|
XML_SYNTAX_CODE,
|
|
54
55
|
} from "../../common/codes.js";
|
|
55
56
|
|
|
@@ -190,6 +191,8 @@ export const XGMML_ISSUE = Object.freeze({
|
|
|
190
191
|
...ELEMENT_ISSUE,
|
|
191
192
|
/** The input is not well-formed XML. The import stops. */
|
|
192
193
|
XML_SYNTAX: XML_SYNTAX_CODE,
|
|
194
|
+
/** Elements are nested more than 100,000 deep. The import stops. */
|
|
195
|
+
XML_NESTING: XML_NESTING_CODE,
|
|
193
196
|
/** The input is empty or whitespace only. The import stops. */
|
|
194
197
|
EMPTY_INPUT: EMPTY_INPUT_CODE,
|
|
195
198
|
/** The input is not valid UTF-8. The import stops. */
|
|
@@ -1046,7 +1046,19 @@ export class XgmmlParser implements XmlHandler {
|
|
|
1046
1046
|
if (target.graphics !== null && att.name in target.graphics) {
|
|
1047
1047
|
this.duplicateGraphics(att.name, att.line);
|
|
1048
1048
|
}
|
|
1049
|
-
target
|
|
1049
|
+
// in place: beginGraphics() gave the target its own record, and a copy per att cost the square of a node's
|
|
1050
|
+
// att count. An att named __proto__ is defined, not assigned, so it stays an own property
|
|
1051
|
+
const graphics = (target.graphics ??= {});
|
|
1052
|
+
if (att.name === "__proto__") {
|
|
1053
|
+
Object.defineProperty(graphics, att.name, {
|
|
1054
|
+
value: attJson(att),
|
|
1055
|
+
writable: true,
|
|
1056
|
+
enumerable: true,
|
|
1057
|
+
configurable: true,
|
|
1058
|
+
});
|
|
1059
|
+
} else {
|
|
1060
|
+
graphics[att.name] = attJson(att);
|
|
1061
|
+
}
|
|
1050
1062
|
}
|
|
1051
1063
|
|
|
1052
1064
|
/**
|
|
@@ -1072,7 +1084,7 @@ export class XgmmlParser implements XmlHandler {
|
|
|
1072
1084
|
* @returns true for a list
|
|
1073
1085
|
* @category Plugin helpers
|
|
1074
1086
|
*/
|
|
1075
|
-
|
|
1087
|
+
function isListLike(att: AttRec): boolean {
|
|
1076
1088
|
const names = new Set(att.children.map((c) => c.name));
|
|
1077
1089
|
if (names.size !== 1) {
|
|
1078
1090
|
return false;
|
|
@@ -1090,18 +1102,48 @@ export function isListLike(att: AttRec): boolean {
|
|
|
1090
1102
|
* @category Plugin helpers
|
|
1091
1103
|
*/
|
|
1092
1104
|
export function attJson(att: AttRec): unknown {
|
|
1093
|
-
|
|
1094
|
-
if (
|
|
1095
|
-
return
|
|
1105
|
+
return attTree(att, (a) => {
|
|
1106
|
+
if (a.children.length > 0) {
|
|
1107
|
+
return null;
|
|
1096
1108
|
}
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
return
|
|
1109
|
+
if (a.value !== null) {
|
|
1110
|
+
return { value: a.value };
|
|
1111
|
+
}
|
|
1112
|
+
return { value: Object.keys(a.extra).length > 0 ? { ...a.extra } : null };
|
|
1113
|
+
});
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
/**
|
|
1117
|
+
* An att tree as plain data, walked with an explicit stack so an att nested any depth deep cannot overflow the
|
|
1118
|
+
* call stack: an att `leafOf` gives a value for is that value; any other is an array of its children when they are
|
|
1119
|
+
* list items (isListLike), else a record of them by name.
|
|
1120
|
+
* @param root - the att
|
|
1121
|
+
* @param leafOf - the value of an att that is a leaf, or null for one whose children make its value
|
|
1122
|
+
* @returns the value
|
|
1123
|
+
* @category Plugin helpers
|
|
1124
|
+
*/
|
|
1125
|
+
export function attTree(root: AttRec, leafOf: (att: AttRec) => { readonly value: unknown } | null): unknown {
|
|
1126
|
+
const rootLeaf = leafOf(root);
|
|
1127
|
+
if (rootLeaf !== null) {
|
|
1128
|
+
return rootLeaf.value;
|
|
1101
1129
|
}
|
|
1102
|
-
const
|
|
1103
|
-
|
|
1104
|
-
|
|
1130
|
+
const container = (att: AttRec): unknown[] | Record<string, unknown> => (isListLike(att) ? [] : {});
|
|
1131
|
+
const out = container(root);
|
|
1132
|
+
const stack: [AttRec, unknown[] | Record<string, unknown>][] = [[root, out]];
|
|
1133
|
+
for (let top = stack.pop(); top !== undefined; top = stack.pop()) {
|
|
1134
|
+
const [att, into] = top;
|
|
1135
|
+
for (const child of att.children) {
|
|
1136
|
+
const leaf = leafOf(child);
|
|
1137
|
+
const value = leaf === null ? container(child) : leaf.value;
|
|
1138
|
+
if (Array.isArray(into)) {
|
|
1139
|
+
into.push(value);
|
|
1140
|
+
} else {
|
|
1141
|
+
into[child.name ?? ""] = value;
|
|
1142
|
+
}
|
|
1143
|
+
if (leaf === null) {
|
|
1144
|
+
stack.push([child, value as unknown[] | Record<string, unknown>]);
|
|
1145
|
+
}
|
|
1146
|
+
}
|
|
1105
1147
|
}
|
|
1106
1148
|
return out;
|
|
1107
1149
|
}
|
|
@@ -15,6 +15,7 @@ import { type ResolvedImportOptions } from "../../common/options.js";
|
|
|
15
15
|
import { agree, plural } from "../../common/plural.js";
|
|
16
16
|
import { type ImportReportBuilder, type IssueLocation } from "../../common/report.js";
|
|
17
17
|
import { parseWeightText } from "../../common/weights.js";
|
|
18
|
+
import { flipY } from "../../positions/convert.js";
|
|
18
19
|
import { ColumnSet } from "./columns.js";
|
|
19
20
|
import {
|
|
20
21
|
CYTOSCAPE_ORIGIN_NAMESPACE,
|
|
@@ -1419,10 +1420,15 @@ class JsonColumn {
|
|
|
1419
1420
|
return;
|
|
1420
1421
|
}
|
|
1421
1422
|
const sink = this.emitter.target;
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1423
|
+
try {
|
|
1424
|
+
if (this.domain === "node") {
|
|
1425
|
+
sink.setNodeValue(this.handle, index, value);
|
|
1426
|
+
} else {
|
|
1427
|
+
sink.setEdgeValue(this.handle, index, value);
|
|
1428
|
+
}
|
|
1429
|
+
} catch (err) {
|
|
1430
|
+
// a value the sink refuses (graphics nested deeper than a json cell holds) leaves the cell unset
|
|
1431
|
+
this.emitter.issues.recordError(err, { element: this.name });
|
|
1426
1432
|
}
|
|
1427
1433
|
}
|
|
1428
1434
|
}
|
|
@@ -1468,8 +1474,7 @@ class Positions {
|
|
|
1468
1474
|
}
|
|
1469
1475
|
}
|
|
1470
1476
|
if (x !== null && y !== null) {
|
|
1471
|
-
|
|
1472
|
-
this.values.set(row.index, [x, flipped, this.zAs === "position" ? (z ?? 0) : 0]);
|
|
1477
|
+
this.values.set(row.index, [x, flipY(y), this.zAs === "position" ? (z ?? 0) : 0]);
|
|
1473
1478
|
}
|
|
1474
1479
|
}
|
|
1475
1480
|
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* and nested atts, containment as each group node's nested graph of `xlink:href` member
|
|
9
9
|
* references (every node is declared at the top level, so the node order survives), and newline
|
|
10
10
|
* and tab as character references unless `cytoscapeEscapes` asks for Cytoscape's two-character
|
|
11
|
-
* form. It writes the graph's structure and columns,
|
|
11
|
+
* form. It writes the graph's structure and columns; given styles (`exportGraph(..., { styles })`), every element's
|
|
12
|
+
* `<graphics>` holds what graphty draws as Cytoscape visual properties, and the `graphty.styles` block and the
|
|
13
|
+
* style values its rules read go into graph and element `<att>`s.
|
|
12
14
|
*/
|
|
13
15
|
|
|
14
16
|
import { type Column, GraphFormatError, type GraphSnapshot } from "@graphty/graph-format";
|
|
@@ -24,6 +26,7 @@ import { agree, plural } from "../../common/plural.js";
|
|
|
24
26
|
import { type ExplicitWeights, explicitWeights } from "../../common/weights.js";
|
|
25
27
|
import { encodeChunks, joinText } from "../../common/writer.js";
|
|
26
28
|
import { xmlIllegalTextNotes } from "../../common/xml.js";
|
|
29
|
+
import type { ExporterStyleInput, ExporterStyleOptions } from "../../styles/io/writer.js";
|
|
27
30
|
import { type CommonExportOptions, type ExportCapabilities, type GraphExporter, type LossNote } from "../../types.js";
|
|
28
31
|
import {
|
|
29
32
|
CY_NAMESPACE,
|
|
@@ -48,6 +51,10 @@ import {
|
|
|
48
51
|
Z_COLUMN,
|
|
49
52
|
} from "./constants.js";
|
|
50
53
|
import { aliasesOf } from "./emit.js";
|
|
54
|
+
import { styledGraphGraphics, styledGraphics, styledGraphicsNotes, XGMML_STYLE_CAPABILITIES } from "./styles.js";
|
|
55
|
+
|
|
56
|
+
/** What the writer takes: the format's options, the common ones and the styles. */
|
|
57
|
+
type XgmmlWriteOptions = XgmmlExportOptions & CommonExportOptions & ExporterStyleOptions;
|
|
51
58
|
|
|
52
59
|
/** The two escapes Cytoscape reads back as a newline and a tab, as a message writes them. */
|
|
53
60
|
const LITERAL_ESCAPES = String.raw`\n or \t`;
|
|
@@ -1089,6 +1096,7 @@ function* groupAttOf(
|
|
|
1089
1096
|
* @param plan - the plan
|
|
1090
1097
|
* @param node - the node
|
|
1091
1098
|
* @param indent - the indentation
|
|
1099
|
+
* @param styles - the styles being written, or undefined
|
|
1092
1100
|
* @yields the node element
|
|
1093
1101
|
* @returns nothing
|
|
1094
1102
|
*/
|
|
@@ -1097,6 +1105,7 @@ function* nodeOf(
|
|
|
1097
1105
|
plan: Plan,
|
|
1098
1106
|
node: number,
|
|
1099
1107
|
indent: string,
|
|
1108
|
+
styles: ExporterStyleInput | undefined,
|
|
1100
1109
|
): Generator<string, void, undefined> {
|
|
1101
1110
|
const labelCol = slot(plan.nodes, "label");
|
|
1102
1111
|
const label = cellOf(labelCol, node);
|
|
@@ -1115,7 +1124,8 @@ function* nodeOf(
|
|
|
1115
1124
|
} else if (typeof pointer === "string") {
|
|
1116
1125
|
yield `${inner}<att>\n${inner} <graph xlink:href="${escapeXmlAttribute(pointer)}"/>\n${inner}</att>\n`;
|
|
1117
1126
|
}
|
|
1118
|
-
const
|
|
1127
|
+
const kept = cellOf(slot(plan.nodes, "graphics"), node) as Record<string, unknown> | null;
|
|
1128
|
+
const graphics = styles === undefined ? kept : styledGraphics("node", styles, node, kept);
|
|
1119
1129
|
yield* graphicsOf(graphics, coordsOf(plan, slot(plan.nodes, "z"), node), inner);
|
|
1120
1130
|
yield `${indent}</node>\n`;
|
|
1121
1131
|
}
|
|
@@ -1128,11 +1138,9 @@ function* nodeOf(
|
|
|
1128
1138
|
* @yields the XML text
|
|
1129
1139
|
* @returns nothing
|
|
1130
1140
|
*/
|
|
1131
|
-
function* write(
|
|
1132
|
-
snapshot: GraphSnapshot,
|
|
1133
|
-
options: (XgmmlExportOptions & CommonExportOptions) | undefined,
|
|
1134
|
-
): Generator<string, void, undefined> {
|
|
1141
|
+
function* write(snapshot: GraphSnapshot, options: XgmmlWriteOptions | undefined): Generator<string, void, undefined> {
|
|
1135
1142
|
const plan = planFor(snapshot, options);
|
|
1143
|
+
const styles = options?.styles;
|
|
1136
1144
|
const meta = snapshot.meta.extra[META_KEY] as { graphId?: unknown; directed?: unknown } | undefined;
|
|
1137
1145
|
const graphId = typeof meta?.graphId === "string" ? ` id="${escapeXmlAttribute(meta.graphId)}"` : "";
|
|
1138
1146
|
// Every edge carries cy:directed, so when they all agree the root attribute does not decide
|
|
@@ -1150,12 +1158,13 @@ function* write(
|
|
|
1150
1158
|
yield `<graph${graphId}${name} directed="${directed}" cy:documentVersion="3.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xlink="${XLINK_NAMESPACE}" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cy="${CY_NAMESPACE}" xmlns="${XGMML_NAMESPACE}">\n`;
|
|
1151
1159
|
yield* metadataOf(snapshot);
|
|
1152
1160
|
yield* attsOf(plan.graph, 0, true, plan, " ");
|
|
1153
|
-
|
|
1161
|
+
const graphGraphics = cellOf(slot(plan.graph, "graphics"), 0) as Record<string, unknown> | null;
|
|
1162
|
+
yield* graphicsOf(styles === undefined ? graphGraphics : styledGraphGraphics(styles, graphGraphics), [], " ");
|
|
1154
1163
|
for (let u = 0; u < snapshot.nodeCount; u++) {
|
|
1155
|
-
yield* nodeOf(snapshot, plan, u, " ");
|
|
1164
|
+
yield* nodeOf(snapshot, plan, u, " ", styles);
|
|
1156
1165
|
}
|
|
1157
1166
|
yield* networksOf(snapshot, plan);
|
|
1158
|
-
yield* edgesOf(snapshot, plan);
|
|
1167
|
+
yield* edgesOf(snapshot, plan, styles);
|
|
1159
1168
|
yield "</graph>\n";
|
|
1160
1169
|
}
|
|
1161
1170
|
|
|
@@ -1216,10 +1225,15 @@ function* networksOf(snapshot: GraphSnapshot, plan: Plan): Generator<string, voi
|
|
|
1216
1225
|
* The edges: one per logical edge, expanded pairs folded.
|
|
1217
1226
|
* @param snapshot - the snapshot
|
|
1218
1227
|
* @param plan - the plan
|
|
1228
|
+
* @param styles - the styles being written, or undefined
|
|
1219
1229
|
* @yields the edge elements
|
|
1220
1230
|
* @returns nothing
|
|
1221
1231
|
*/
|
|
1222
|
-
function* edgesOf(
|
|
1232
|
+
function* edgesOf(
|
|
1233
|
+
snapshot: GraphSnapshot,
|
|
1234
|
+
plan: Plan,
|
|
1235
|
+
styles: ExporterStyleInput | undefined,
|
|
1236
|
+
): Generator<string, void, undefined> {
|
|
1223
1237
|
const { folding, weights } = plan;
|
|
1224
1238
|
const labelCol = slot(plan.edges, "label");
|
|
1225
1239
|
const graphicsCol = slot(plan.edges, "graphics");
|
|
@@ -1241,7 +1255,8 @@ function* edgesOf(snapshot: GraphSnapshot, plan: Plan): Generator<string, void,
|
|
|
1241
1255
|
const target = escapeXmlAttribute(idText(snapshot.ids.idOf(v)));
|
|
1242
1256
|
yield ` <edge${idAttr}${labelAttr} source="${source}" target="${target}" cy:directed="${directed ? "1" : "0"}"${optionalAttribute("weight", weight)}${xmlAttributesOf(plan.edges, e)}>\n`;
|
|
1243
1257
|
yield* attsOf(plan.edges, e, first, plan, " ");
|
|
1244
|
-
|
|
1258
|
+
const kept = cellOf(graphicsCol, e) as Record<string, unknown> | null;
|
|
1259
|
+
yield* graphicsOf(styles === undefined ? kept : styledGraphics("edge", styles, e, kept), [], " ");
|
|
1245
1260
|
yield " </edge>\n";
|
|
1246
1261
|
first = false;
|
|
1247
1262
|
}
|
|
@@ -1286,8 +1301,12 @@ export const xgmmlExporter: GraphExporter<XgmmlExportOptions> = Object.freeze({
|
|
|
1286
1301
|
format: FORMAT,
|
|
1287
1302
|
options: Object.freeze(["cytoscapeEscapes"]),
|
|
1288
1303
|
capabilities: CAPABILITIES,
|
|
1289
|
-
|
|
1290
|
-
|
|
1304
|
+
styles: Object.freeze({ capabilities: XGMML_STYLE_CAPABILITIES }),
|
|
1305
|
+
check: (snapshot: GraphSnapshot, options?: XgmmlWriteOptions): readonly LossNote[] =>
|
|
1306
|
+
Object.freeze([
|
|
1307
|
+
...planExport(snapshot, resolveExportOptions(options), resolveEscapes(options)).notes,
|
|
1308
|
+
...(options?.styles === undefined ? [] : styledGraphicsNotes(options.styles, snapshot)),
|
|
1309
|
+
]),
|
|
1291
1310
|
export: (snapshot: GraphSnapshot, options?: XgmmlExportOptions & CommonExportOptions): AsyncIterable<Uint8Array> =>
|
|
1292
1311
|
encodeChunks(write(snapshot, options)),
|
|
1293
1312
|
exportToString: (snapshot: GraphSnapshot, options?: XgmmlExportOptions & CommonExportOptions): Promise<string> =>
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* `defaultDirected` option), then `cy:directed` per edge, overruling Cytoscape, which ignores the
|
|
10
10
|
* root attribute. Ids are kept as written (`ids: "keep"`), so `"1"`, `"01"` and `" 1 "` stay three
|
|
11
11
|
* nodes. Positions are stored y-up (Cytoscape writes screen coordinates). Graphics values are kept
|
|
12
|
-
* as a json column,
|
|
12
|
+
* as a json column; asked for styles, the importer reads them as Cytoscape's resolved visual properties
|
|
13
|
+
* (styles.ts), with Cytoscape desktop's default style for what an element leaves unset.
|
|
13
14
|
*/
|
|
14
15
|
|
|
15
16
|
import { GraphFormatError, type GraphSink } from "@graphty/graph-format";
|
|
@@ -26,7 +27,14 @@ import {
|
|
|
26
27
|
} from "../../common/options.js";
|
|
27
28
|
import { agree, elementCount } from "../../common/plural.js";
|
|
28
29
|
import { ImportReportBuilder } from "../../common/report.js";
|
|
29
|
-
import {
|
|
30
|
+
import {
|
|
31
|
+
isWhitespace,
|
|
32
|
+
tokenizeXml,
|
|
33
|
+
xmlDeclaredEncoding,
|
|
34
|
+
XmlNestingError,
|
|
35
|
+
type XmlRepairs,
|
|
36
|
+
XmlSyntaxError,
|
|
37
|
+
} from "../../common/xml.js";
|
|
30
38
|
import {
|
|
31
39
|
type CommonImportOptions,
|
|
32
40
|
type GraphChoiceOptions,
|
|
@@ -35,7 +43,7 @@ import {
|
|
|
35
43
|
type ImportInput,
|
|
36
44
|
type ImportReport,
|
|
37
45
|
} from "../../types.js";
|
|
38
|
-
import { EXTENSIONS, FORMAT, MIME_TYPES, XGMML_ISSUE } from "./constants.js";
|
|
46
|
+
import { EXTENSIONS, FORMAT, MIME_TYPES, XGMML_ISSUE, XGMML_NAMESPACE } from "./constants.js";
|
|
39
47
|
import { type GraphRec, type XgmmlDocument, XgmmlParser } from "./document.js";
|
|
40
48
|
import {
|
|
41
49
|
type Dialect,
|
|
@@ -46,6 +54,7 @@ import {
|
|
|
46
54
|
XgmmlEmitter,
|
|
47
55
|
type XgmmlSettings,
|
|
48
56
|
} from "./emit.js";
|
|
57
|
+
import { readXgmmlFileStyles } from "./styles.js";
|
|
49
58
|
|
|
50
59
|
/**
|
|
51
60
|
* The format-specific options of the XGMML importer.
|
|
@@ -174,17 +183,18 @@ export async function parseXgmml(
|
|
|
174
183
|
common: ResolvedImportOptions,
|
|
175
184
|
options: XgmmlImportOptions | undefined,
|
|
176
185
|
): Promise<XgmmlDocument> {
|
|
177
|
-
const repairs = repairsOf(options, report);
|
|
178
186
|
const parser = new XgmmlParser(report);
|
|
179
187
|
const seen = { content: false };
|
|
180
188
|
try {
|
|
181
189
|
await tokenizeXml(
|
|
182
190
|
watch(textChunks(input, report, { ...common, declaredEncoding: xmlDeclaredEncoding, xml: true }), seen),
|
|
183
191
|
parser,
|
|
184
|
-
|
|
192
|
+
xmlRepairs(report, options),
|
|
185
193
|
);
|
|
186
194
|
} catch (err) {
|
|
187
|
-
|
|
195
|
+
if (err instanceof XmlSyntaxError) {
|
|
196
|
+
failSyntax(report, err, seen.content);
|
|
197
|
+
}
|
|
188
198
|
throw err;
|
|
189
199
|
}
|
|
190
200
|
const doc = parser.document();
|
|
@@ -201,45 +211,46 @@ export async function parseXgmml(
|
|
|
201
211
|
|
|
202
212
|
/**
|
|
203
213
|
* The XML repairs the options switch on, each reporting where it repaired.
|
|
204
|
-
* @param options - the XGMML options
|
|
205
214
|
* @param report - the report
|
|
215
|
+
* @param options - the XGMML options
|
|
206
216
|
* @returns the repairs
|
|
207
217
|
*/
|
|
208
|
-
function
|
|
218
|
+
function xmlRepairs(report: ImportReportBuilder, options: XgmmlImportOptions | undefined): XmlRepairs {
|
|
219
|
+
const ampersand = (line: number): void => {
|
|
220
|
+
report.warning("parse-error", XGMML_ISSUE.AMPERSAND_REPAIRED, "a bare & was read as &", { line });
|
|
221
|
+
};
|
|
222
|
+
const surrogate = (line: number): void => {
|
|
223
|
+
report.warning(
|
|
224
|
+
"parse-error",
|
|
225
|
+
XGMML_ISSUE.SURROGATE_PAIRED,
|
|
226
|
+
"two surrogate character references were joined into one character",
|
|
227
|
+
{ line },
|
|
228
|
+
);
|
|
229
|
+
};
|
|
209
230
|
return {
|
|
210
231
|
bareAmpersand: booleanOption("repairBareAmpersands", options?.repairBareAmpersands, false)
|
|
211
|
-
?
|
|
212
|
-
report.warning("parse-error", XGMML_ISSUE.AMPERSAND_REPAIRED, "a bare & was read as &", { line });
|
|
213
|
-
}
|
|
232
|
+
? ampersand
|
|
214
233
|
: undefined,
|
|
215
234
|
surrogatePair: booleanOption("pairSurrogateReferences", options?.pairSurrogateReferences, false)
|
|
216
|
-
?
|
|
217
|
-
report.warning(
|
|
218
|
-
"parse-error",
|
|
219
|
-
XGMML_ISSUE.SURROGATE_PAIRED,
|
|
220
|
-
"two surrogate character references were joined into one character",
|
|
221
|
-
{ line },
|
|
222
|
-
);
|
|
223
|
-
}
|
|
235
|
+
? surrogate
|
|
224
236
|
: undefined,
|
|
225
237
|
};
|
|
226
238
|
}
|
|
227
239
|
|
|
228
240
|
/**
|
|
229
|
-
*
|
|
230
|
-
* malformed. Any other error is left to the caller.
|
|
231
|
-
* @param err - the error the tokenizer threw
|
|
232
|
-
* @param content - whether non-whitespace text was seen
|
|
241
|
+
* Fails the report for an XML syntax error: an empty input, nesting too deep, or broken XML.
|
|
233
242
|
* @param report - the report
|
|
243
|
+
* @param err - the error
|
|
244
|
+
* @param content - whether the input held anything but white space
|
|
245
|
+
* @returns never: it throws the report's ImportError
|
|
234
246
|
*/
|
|
235
|
-
function
|
|
236
|
-
if (!(err instanceof XmlSyntaxError)) {
|
|
237
|
-
return;
|
|
238
|
-
}
|
|
247
|
+
function failSyntax(report: ImportReportBuilder, err: XmlSyntaxError, content: boolean): never {
|
|
239
248
|
if (!content) {
|
|
240
249
|
report.fail(XGMML_ISSUE.EMPTY_INPUT, "the input is empty");
|
|
241
250
|
}
|
|
242
|
-
report.fail(XGMML_ISSUE.XML_SYNTAX, err.message, {
|
|
251
|
+
return report.fail(err instanceof XmlNestingError ? XGMML_ISSUE.XML_NESTING : XGMML_ISSUE.XML_SYNTAX, err.message, {
|
|
252
|
+
line: err.line,
|
|
253
|
+
});
|
|
243
254
|
}
|
|
244
255
|
|
|
245
256
|
/**
|
|
@@ -466,7 +477,9 @@ function sniffXgmml(head: Uint8Array): number {
|
|
|
466
477
|
}
|
|
467
478
|
const tagEnd = text.indexOf(">", root.index);
|
|
468
479
|
const tag = text.slice(root.index, tagEnd < 0 ? undefined : tagEnd);
|
|
469
|
-
|
|
480
|
+
// the XGMML namespace declared on the root, as a whole attribute value
|
|
481
|
+
const namespaces = [...tag.matchAll(/\bxmlns(?::[\w.-]+)?\s*=\s*(["'])([^"']*)\1/g)].map((m) => m[2]);
|
|
482
|
+
return namespaces.includes(XGMML_NAMESPACE) ? 0.95 : 0.5;
|
|
470
483
|
}
|
|
471
484
|
|
|
472
485
|
/**
|
|
@@ -488,4 +501,5 @@ export const xgmmlImporter: GraphImporter<XgmmlImportOptions> = Object.freeze({
|
|
|
488
501
|
import: importXgmml,
|
|
489
502
|
importAll: importAllXgmml,
|
|
490
503
|
listGraphs: listXgmmlGraphs,
|
|
504
|
+
styles: readXgmmlFileStyles,
|
|
491
505
|
});
|