@graphty/graph-io 0.3.47 → 0.3.49
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-wWjCRzKj.js → approximations-Bzn3L-je.js} +2 -2
- package/dist/chunks/{approximations-wWjCRzKj.js.map → approximations-Bzn3L-je.js.map} +1 -1
- package/dist/chunks/bends-BGXjv_U4.js +129 -0
- package/dist/chunks/bends-BGXjv_U4.js.map +1 -0
- package/dist/chunks/{block-DiGq58c3.js → block-iptrlMBb.js} +947 -134
- package/dist/chunks/block-iptrlMBb.js.map +1 -0
- package/dist/chunks/choose-CczZJaX_.js +717 -0
- package/dist/chunks/choose-CczZJaX_.js.map +1 -0
- package/dist/chunks/codes-BE2xir2k.js +157 -0
- package/dist/chunks/codes-BE2xir2k.js.map +1 -0
- package/dist/chunks/{constants-BKwqelYD.js → constants-CKkYLPtt.js} +2 -2
- package/dist/chunks/{constants-BKwqelYD.js.map → constants-CKkYLPtt.js.map} +1 -1
- package/dist/chunks/context-C3p0RQxR.js +664 -0
- package/dist/chunks/context-C3p0RQxR.js.map +1 -0
- package/dist/chunks/{convert-BcQ8_jMo.js → convert-Ct2zelbQ.js} +7 -2
- package/dist/chunks/convert-Ct2zelbQ.js.map +1 -0
- package/dist/chunks/credentials-DXHx7nwR.js +349 -0
- package/dist/chunks/credentials-DXHx7nwR.js.map +1 -0
- package/dist/chunks/cx-export-Bt6NoqTQ.js +259 -0
- package/dist/chunks/cx-export-Bt6NoqTQ.js.map +1 -0
- package/dist/chunks/descriptor-B28U25x4.js +60 -0
- package/dist/chunks/descriptor-B28U25x4.js.map +1 -0
- package/dist/chunks/descriptor-C-YDhtsn.js +48 -0
- package/dist/chunks/descriptor-C-YDhtsn.js.map +1 -0
- package/dist/chunks/descriptor-DLA5kINx.js +142 -0
- package/dist/chunks/descriptor-DLA5kINx.js.map +1 -0
- package/dist/chunks/{emit-CwU8cUmG.js → emit-BwHQkZle.js} +1690 -103
- package/dist/chunks/emit-BwHQkZle.js.map +1 -0
- package/dist/chunks/{escape-CgzxiYPg.js → escape-CuCIzNMB.js} +12 -12
- package/dist/chunks/{escape-CgzxiYPg.js.map → escape-CuCIzNMB.js.map} +1 -1
- package/dist/chunks/{export-BvqAXCKh.js → export-Cha4dRFz.js} +48 -1780
- package/dist/chunks/export-Cha4dRFz.js.map +1 -0
- package/dist/chunks/{exporter--Mk9gXCJ.js → exporter-BP6otMO6.js} +6 -4
- package/dist/chunks/{exporter--Mk9gXCJ.js.map → exporter-BP6otMO6.js.map} +1 -1
- package/dist/chunks/{exporter-CrDWIyiq.js → exporter-D2CETOMK.js} +1222 -154
- package/dist/chunks/exporter-D2CETOMK.js.map +1 -0
- package/dist/chunks/{exporter-DndFlGSa.js → exporter-D9yMtocA.js} +7 -6
- package/dist/chunks/{exporter-DndFlGSa.js.map → exporter-D9yMtocA.js.map} +1 -1
- package/dist/chunks/exporter-_jrBTnos.js +1009 -0
- package/dist/chunks/exporter-_jrBTnos.js.map +1 -0
- package/dist/chunks/{exporter-CJgfhF-l.js → exporter-nDfxIK5D.js} +9 -7
- package/dist/chunks/{exporter-CJgfhF-l.js.map → exporter-nDfxIK5D.js.map} +1 -1
- package/dist/chunks/format-BXiAb-1h.js +408 -0
- package/dist/chunks/format-BXiAb-1h.js.map +1 -0
- package/dist/chunks/{generic-Dq1ntt9q.js → generic-ymWCETAJ.js} +387 -31
- package/dist/chunks/generic-ymWCETAJ.js.map +1 -0
- package/dist/chunks/{importer-CMmeMWlC.js → importer-B92x1xY5.js} +15 -263
- package/dist/chunks/importer-B92x1xY5.js.map +1 -0
- package/dist/chunks/{importer-DiZRmOQG.js → importer-CT9mJ1nn.js} +328 -90
- package/dist/chunks/importer-CT9mJ1nn.js.map +1 -0
- package/dist/chunks/{importer-COTK9Tsl.js → importer-DaLTjbds.js} +116 -1099
- package/dist/chunks/importer-DaLTjbds.js.map +1 -0
- package/dist/chunks/{importer-iFYPEKaJ.js → importer-GREKMdIf.js} +28 -16
- package/dist/chunks/importer-GREKMdIf.js.map +1 -0
- package/dist/chunks/{importer-BSvfrX_h.js → importer-PqaaKKnY.js} +23 -1016
- package/dist/chunks/importer-PqaaKKnY.js.map +1 -0
- package/dist/chunks/{importer-yh_aBCU6.js → importer-Vn5QvmmJ.js} +66 -12
- package/dist/chunks/importer-Vn5QvmmJ.js.map +1 -0
- package/dist/chunks/{importer-e6LGpqHB.js → importer-vRq4h3j5.js} +1470 -354
- package/dist/chunks/importer-vRq4h3j5.js.map +1 -0
- package/dist/chunks/input-CAxt_aV-.js +1397 -0
- package/dist/chunks/input-CAxt_aV-.js.map +1 -0
- package/dist/chunks/{json-elements-DJZRZ6jd.js → json-elements-Cq76WjnZ.js} +4 -4
- package/dist/chunks/{json-elements-DJZRZ6jd.js.map → json-elements-Cq76WjnZ.js.map} +1 -1
- package/dist/chunks/{lexicon-CT69Kd87.js → lexicon-Clf4QIyl.js} +299 -77
- package/dist/chunks/lexicon-Clf4QIyl.js.map +1 -0
- package/dist/chunks/{ontology-export-G4MqRdux.js → ontology-export-OMo91mb0.js} +4 -3
- package/dist/chunks/{ontology-export-G4MqRdux.js.map → ontology-export-OMo91mb0.js.map} +1 -1
- package/dist/chunks/{records-CiaWZrFH.js → records-NJiYvekn.js} +2 -2
- package/dist/chunks/{records-CiaWZrFH.js.map → records-NJiYvekn.js.map} +1 -1
- package/dist/chunks/{format-BpQBx8MZ.js → report-CwMfYa9J.js} +70 -127
- package/dist/chunks/report-CwMfYa9J.js.map +1 -0
- package/dist/chunks/round-trip-Zm3_ivgq.js +79 -0
- package/dist/chunks/round-trip-Zm3_ivgq.js.map +1 -0
- package/dist/chunks/sigv4-EokFic1V.js +247 -0
- package/dist/chunks/sigv4-EokFic1V.js.map +1 -0
- package/dist/chunks/{styles-BQnsga7p.js → styles-CCs214_3.js} +1300 -168
- package/dist/chunks/styles-CCs214_3.js.map +1 -0
- package/dist/chunks/styles-Cm62yyQX.js +2812 -0
- package/dist/chunks/styles-Cm62yyQX.js.map +1 -0
- package/dist/chunks/styles-DPQQIig4.js +1928 -0
- package/dist/chunks/styles-DPQQIig4.js.map +1 -0
- package/dist/chunks/styles-yed-UMFdNqze.js +1213 -0
- package/dist/chunks/styles-yed-UMFdNqze.js.map +1 -0
- package/dist/chunks/{text-CzJNFOS9.js → text-ystE2bYi.js} +2 -2
- package/dist/chunks/{text-CzJNFOS9.js.map → text-ystE2bYi.js.map} +1 -1
- package/dist/csv.js +7 -5
- package/dist/csv.js.map +1 -1
- package/dist/cx.js +5 -4
- package/dist/cx.js.map +1 -1
- package/dist/cx2.js +2 -2
- package/dist/cys.js +1 -1
- package/dist/dot.js +5 -4
- package/dist/dot.js.map +1 -1
- package/dist/gexf.js +42 -10
- package/dist/gexf.js.map +1 -1
- package/dist/gml.js +850 -193
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +1189 -220
- package/dist/graph-io.js.map +1 -1
- package/dist/graphml.js +3 -3
- package/dist/json.js +3 -2
- package/dist/neo4j.js +6 -4
- package/dist/neo4j.js.map +1 -1
- package/dist/obo.js +1 -1
- package/dist/pajek.js +1 -1
- package/dist/positions.js +45 -3
- package/dist/positions.js.map +1 -1
- package/dist/sources-cypher.d.ts +1 -0
- package/dist/sources-cypher.js +1351 -0
- package/dist/sources-cypher.js.map +1 -0
- package/dist/sources-ndex.d.ts +1 -0
- package/dist/sources-ndex.js +278 -0
- package/dist/sources-ndex.js.map +1 -0
- package/dist/sources-rest.d.ts +1 -0
- package/dist/sources-rest.js +1377 -0
- package/dist/sources-rest.js.map +1 -0
- package/dist/sources-sparql.d.ts +1 -0
- package/dist/sources-sparql.js +405 -0
- package/dist/sources-sparql.js.map +1 -0
- package/dist/src/common/report.d.ts +6 -3
- package/dist/src/common/report.d.ts.map +1 -1
- package/dist/src/common/report.js +15 -9
- package/dist/src/common/report.js.map +1 -1
- package/dist/src/formats/cx/importer.d.ts.map +1 -1
- package/dist/src/formats/cx/importer.js +5 -1
- package/dist/src/formats/cx/importer.js.map +1 -1
- package/dist/src/formats/cx/styles.d.ts +24 -1
- package/dist/src/formats/cx/styles.d.ts.map +1 -1
- package/dist/src/formats/cx/styles.js +118 -11
- package/dist/src/formats/cx/styles.js.map +1 -1
- package/dist/src/formats/cx2/importer.d.ts.map +1 -1
- package/dist/src/formats/cx2/importer.js +1 -0
- package/dist/src/formats/cx2/importer.js.map +1 -1
- package/dist/src/formats/cx2/styles.d.ts.map +1 -1
- package/dist/src/formats/cx2/styles.js +3 -1
- package/dist/src/formats/cx2/styles.js.map +1 -1
- package/dist/src/formats/cys/importer.d.ts.map +1 -1
- package/dist/src/formats/cys/importer.js +1 -0
- package/dist/src/formats/cys/importer.js.map +1 -1
- package/dist/src/formats/cys/styles.d.ts +2 -0
- package/dist/src/formats/cys/styles.d.ts.map +1 -1
- package/dist/src/formats/cys/styles.js +15 -7
- package/dist/src/formats/cys/styles.js.map +1 -1
- package/dist/src/formats/dot/drawing.d.ts +98 -0
- package/dist/src/formats/dot/drawing.d.ts.map +1 -0
- package/dist/src/formats/dot/drawing.js +734 -0
- package/dist/src/formats/dot/drawing.js.map +1 -0
- package/dist/src/formats/dot/importer.d.ts.map +1 -1
- package/dist/src/formats/dot/importer.js +108 -31
- package/dist/src/formats/dot/importer.js.map +1 -1
- package/dist/src/formats/dot/label-places.d.ts +34 -0
- package/dist/src/formats/dot/label-places.d.ts.map +1 -0
- package/dist/src/formats/dot/label-places.js +179 -0
- package/dist/src/formats/dot/label-places.js.map +1 -0
- package/dist/src/formats/dot/record.d.ts +50 -0
- package/dist/src/formats/dot/record.d.ts.map +1 -0
- package/dist/src/formats/dot/record.js +275 -0
- package/dist/src/formats/dot/record.js.map +1 -0
- package/dist/src/formats/dot/styles.d.ts +62 -2
- package/dist/src/formats/dot/styles.d.ts.map +1 -1
- package/dist/src/formats/dot/styles.js +1457 -120
- package/dist/src/formats/dot/styles.js.map +1 -1
- package/dist/src/formats/gexf/dialog-metrics.d.ts +15 -0
- package/dist/src/formats/gexf/dialog-metrics.d.ts.map +1 -0
- package/dist/src/formats/gexf/dialog-metrics.js +59 -0
- package/dist/src/formats/gexf/dialog-metrics.js.map +1 -0
- package/dist/src/formats/gexf/importer.d.ts +7 -0
- package/dist/src/formats/gexf/importer.d.ts.map +1 -1
- package/dist/src/formats/gexf/importer.js +41 -5
- package/dist/src/formats/gexf/importer.js.map +1 -1
- package/dist/src/formats/gexf/preview.d.ts +77 -0
- package/dist/src/formats/gexf/preview.d.ts.map +1 -0
- package/dist/src/formats/gexf/preview.js +191 -0
- package/dist/src/formats/gexf/preview.js.map +1 -0
- package/dist/src/formats/gexf/schema.d.ts.map +1 -1
- package/dist/src/formats/gexf/schema.js +2 -1
- package/dist/src/formats/gexf/schema.js.map +1 -1
- package/dist/src/formats/gexf/styles.d.ts +60 -16
- package/dist/src/formats/gexf/styles.d.ts.map +1 -1
- package/dist/src/formats/gexf/styles.js +883 -131
- package/dist/src/formats/gexf/styles.js.map +1 -1
- package/dist/src/formats/gml/importer.d.ts +5 -2
- package/dist/src/formats/gml/importer.d.ts.map +1 -1
- package/dist/src/formats/gml/importer.js +258 -71
- package/dist/src/formats/gml/importer.js.map +1 -1
- package/dist/src/formats/gml/index.d.ts +1 -1
- package/dist/src/formats/gml/index.d.ts.map +1 -1
- package/dist/src/formats/gml/index.js +1 -1
- package/dist/src/formats/gml/index.js.map +1 -1
- package/dist/src/formats/gml/positions.d.ts +7 -0
- package/dist/src/formats/gml/positions.d.ts.map +1 -1
- package/dist/src/formats/gml/positions.js +29 -7
- package/dist/src/formats/gml/positions.js.map +1 -1
- package/dist/src/formats/gml/styles.d.ts.map +1 -1
- package/dist/src/formats/gml/styles.js +756 -103
- package/dist/src/formats/gml/styles.js.map +1 -1
- package/dist/src/formats/graphml/styles-plain.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-plain.js +8 -12
- package/dist/src/formats/graphml/styles-plain.js.map +1 -1
- package/dist/src/formats/graphml/styles-yed.d.ts +21 -15
- package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-yed.js +749 -148
- package/dist/src/formats/graphml/styles-yed.js.map +1 -1
- package/dist/src/formats/graphml/styles-yfiles3.d.ts +1 -1
- package/dist/src/formats/graphml/styles-yfiles3.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-yfiles3.js +429 -64
- package/dist/src/formats/graphml/styles-yfiles3.js.map +1 -1
- package/dist/src/formats/graphml/yfiles.d.ts +3 -3
- package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
- package/dist/src/formats/graphml/yfiles.js +16 -6
- package/dist/src/formats/graphml/yfiles.js.map +1 -1
- package/dist/src/formats/json/dialect.d.ts +3 -2
- package/dist/src/formats/json/dialect.d.ts.map +1 -1
- package/dist/src/formats/json/dialect.js +39 -5
- package/dist/src/formats/json/dialect.js.map +1 -1
- package/dist/src/formats/json/importer.d.ts +13 -2
- package/dist/src/formats/json/importer.d.ts.map +1 -1
- package/dist/src/formats/json/importer.js +42 -6
- package/dist/src/formats/json/importer.js.map +1 -1
- package/dist/src/formats/json/index.d.ts +1 -1
- package/dist/src/formats/json/index.d.ts.map +1 -1
- package/dist/src/formats/json/index.js +1 -1
- package/dist/src/formats/json/index.js.map +1 -1
- package/dist/src/formats/json/positions.d.ts +5 -2
- package/dist/src/formats/json/positions.d.ts.map +1 -1
- package/dist/src/formats/json/positions.js +20 -4
- package/dist/src/formats/json/positions.js.map +1 -1
- package/dist/src/formats/json/styles.d.ts +12 -1
- package/dist/src/formats/json/styles.d.ts.map +1 -1
- package/dist/src/formats/json/styles.js +1755 -136
- package/dist/src/formats/json/styles.js.map +1 -1
- package/dist/src/formats/pajek/draw.d.ts +96 -0
- package/dist/src/formats/pajek/draw.d.ts.map +1 -0
- package/dist/src/formats/pajek/draw.js +372 -0
- package/dist/src/formats/pajek/draw.js.map +1 -0
- package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
- package/dist/src/formats/pajek/exporter.js +70 -51
- package/dist/src/formats/pajek/exporter.js.map +1 -1
- package/dist/src/formats/pajek/importer.d.ts +9 -0
- package/dist/src/formats/pajek/importer.d.ts.map +1 -1
- package/dist/src/formats/pajek/importer.js +233 -102
- package/dist/src/formats/pajek/importer.js.map +1 -1
- package/dist/src/formats/pajek/index.d.ts +1 -0
- package/dist/src/formats/pajek/index.d.ts.map +1 -1
- package/dist/src/formats/pajek/index.js.map +1 -1
- package/dist/src/formats/pajek/styles.d.ts +15 -7
- package/dist/src/formats/pajek/styles.d.ts.map +1 -1
- package/dist/src/formats/pajek/styles.js +1279 -114
- package/dist/src/formats/pajek/styles.js.map +1 -1
- package/dist/src/formats/pajek/syntax.d.ts +10 -1
- package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
- package/dist/src/formats/pajek/syntax.js +26 -2
- package/dist/src/formats/pajek/syntax.js.map +1 -1
- package/dist/src/formats/xgmml/emit.d.ts +1 -0
- package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
- package/dist/src/formats/xgmml/emit.js +65 -5
- package/dist/src/formats/xgmml/emit.js.map +1 -1
- package/dist/src/formats/xgmml/styles.d.ts +23 -3
- package/dist/src/formats/xgmml/styles.d.ts.map +1 -1
- package/dist/src/formats/xgmml/styles.js +278 -60
- package/dist/src/formats/xgmml/styles.js.map +1 -1
- package/dist/src/index.d.ts +10 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/positions/convert.d.ts.map +1 -1
- package/dist/src/positions/convert.js +11 -1
- package/dist/src/positions/convert.js.map +1 -1
- package/dist/src/positions/extract.d.ts.map +1 -1
- package/dist/src/positions/extract.js +53 -1
- package/dist/src/positions/extract.js.map +1 -1
- package/dist/src/positions/index.d.ts +1 -1
- package/dist/src/positions/index.d.ts.map +1 -1
- package/dist/src/positions/types.d.ts +59 -0
- package/dist/src/positions/types.d.ts.map +1 -1
- package/dist/src/registry.d.ts +173 -1
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +196 -1
- package/dist/src/registry.js.map +1 -1
- package/dist/src/sources/builtins.d.ts +11 -0
- package/dist/src/sources/builtins.d.ts.map +1 -0
- package/dist/src/sources/builtins.js +53 -0
- package/dist/src/sources/builtins.js.map +1 -0
- package/dist/src/sources/codes.d.ts +230 -0
- package/dist/src/sources/codes.d.ts.map +1 -0
- package/dist/src/sources/codes.js +58 -0
- package/dist/src/sources/codes.js.map +1 -0
- package/dist/src/sources/context.d.ts +112 -0
- package/dist/src/sources/context.d.ts.map +1 -0
- package/dist/src/sources/context.js +740 -0
- package/dist/src/sources/context.js.map +1 -0
- package/dist/src/sources/credentials.d.ts +179 -0
- package/dist/src/sources/credentials.d.ts.map +1 -0
- package/dist/src/sources/credentials.js +301 -0
- package/dist/src/sources/credentials.js.map +1 -0
- package/dist/src/sources/cypher/descriptor.d.ts +21 -0
- package/dist/src/sources/cypher/descriptor.d.ts.map +1 -0
- package/dist/src/sources/cypher/descriptor.js +124 -0
- package/dist/src/sources/cypher/descriptor.js.map +1 -0
- package/dist/src/sources/cypher/flatten.d.ts +72 -0
- package/dist/src/sources/cypher/flatten.d.ts.map +1 -0
- package/dist/src/sources/cypher/flatten.js +279 -0
- package/dist/src/sources/cypher/flatten.js.map +1 -0
- package/dist/src/sources/cypher/index.d.ts +33 -0
- package/dist/src/sources/cypher/index.d.ts.map +1 -0
- package/dist/src/sources/cypher/index.js +511 -0
- package/dist/src/sources/cypher/index.js.map +1 -0
- package/dist/src/sources/cypher/params.d.ts +40 -0
- package/dist/src/sources/cypher/params.d.ts.map +1 -0
- package/dist/src/sources/cypher/params.js +6 -0
- package/dist/src/sources/cypher/params.js.map +1 -0
- package/dist/src/sources/cypher/profiles.d.ts +44 -0
- package/dist/src/sources/cypher/profiles.d.ts.map +1 -0
- package/dist/src/sources/cypher/profiles.js +61 -0
- package/dist/src/sources/cypher/profiles.js.map +1 -0
- package/dist/src/sources/cypher/query-builder.d.ts +123 -0
- package/dist/src/sources/cypher/query-builder.d.ts.map +1 -0
- package/dist/src/sources/cypher/query-builder.js +267 -0
- package/dist/src/sources/cypher/query-builder.js.map +1 -0
- package/dist/src/sources/cypher/transports/bolt.d.ts +21 -0
- package/dist/src/sources/cypher/transports/bolt.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/bolt.js +185 -0
- package/dist/src/sources/cypher/transports/bolt.js.map +1 -0
- package/dist/src/sources/cypher/transports/neptune-analytics.d.ts +15 -0
- package/dist/src/sources/cypher/transports/neptune-analytics.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/neptune-analytics.js +38 -0
- package/dist/src/sources/cypher/transports/neptune-analytics.js.map +1 -0
- package/dist/src/sources/cypher/transports/neptune-https.d.ts +31 -0
- package/dist/src/sources/cypher/transports/neptune-https.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/neptune-https.js +104 -0
- package/dist/src/sources/cypher/transports/neptune-https.js.map +1 -0
- package/dist/src/sources/cypher/transports/query-api.d.ts +14 -0
- package/dist/src/sources/cypher/transports/query-api.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/query-api.js +80 -0
- package/dist/src/sources/cypher/transports/query-api.js.map +1 -0
- package/dist/src/sources/cypher/transports/transport.d.ts +78 -0
- package/dist/src/sources/cypher/transports/transport.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/transport.js +77 -0
- package/dist/src/sources/cypher/transports/transport.js.map +1 -0
- package/dist/src/sources/cypher/types-map.d.ts +91 -0
- package/dist/src/sources/cypher/types-map.d.ts.map +1 -0
- package/dist/src/sources/cypher/types-map.js +306 -0
- package/dist/src/sources/cypher/types-map.js.map +1 -0
- package/dist/src/sources/define.d.ts +47 -0
- package/dist/src/sources/define.d.ts.map +1 -0
- package/dist/src/sources/define.js +173 -0
- package/dist/src/sources/define.js.map +1 -0
- package/dist/src/sources/fail.d.ts +33 -0
- package/dist/src/sources/fail.d.ts.map +1 -0
- package/dist/src/sources/fail.js +49 -0
- package/dist/src/sources/fail.js.map +1 -0
- package/dist/src/sources/ids.d.ts +69 -0
- package/dist/src/sources/ids.d.ts.map +1 -0
- package/dist/src/sources/ids.js +69 -0
- package/dist/src/sources/ids.js.map +1 -0
- package/dist/src/sources/ndex/client.d.ts +31 -0
- package/dist/src/sources/ndex/client.d.ts.map +1 -0
- package/dist/src/sources/ndex/client.js +90 -0
- package/dist/src/sources/ndex/client.js.map +1 -0
- package/dist/src/sources/ndex/descriptor.d.ts +10 -0
- package/dist/src/sources/ndex/descriptor.d.ts.map +1 -0
- package/dist/src/sources/ndex/descriptor.js +55 -0
- package/dist/src/sources/ndex/descriptor.js.map +1 -0
- package/dist/src/sources/ndex/expand.d.ts +20 -0
- package/dist/src/sources/ndex/expand.d.ts.map +1 -0
- package/dist/src/sources/ndex/expand.js +87 -0
- package/dist/src/sources/ndex/expand.js.map +1 -0
- package/dist/src/sources/ndex/index.d.ts +25 -0
- package/dist/src/sources/ndex/index.d.ts.map +1 -0
- package/dist/src/sources/ndex/index.js +191 -0
- package/dist/src/sources/ndex/index.js.map +1 -0
- package/dist/src/sources/ndex/params.d.ts +17 -0
- package/dist/src/sources/ndex/params.d.ts.map +1 -0
- package/dist/src/sources/ndex/params.js +6 -0
- package/dist/src/sources/ndex/params.js.map +1 -0
- package/dist/src/sources/ndex/share-url.d.ts +40 -0
- package/dist/src/sources/ndex/share-url.d.ts.map +1 -0
- package/dist/src/sources/ndex/share-url.js +64 -0
- package/dist/src/sources/ndex/share-url.js.map +1 -0
- package/dist/src/sources/params.d.ts +31 -0
- package/dist/src/sources/params.d.ts.map +1 -0
- package/dist/src/sources/params.js +6 -0
- package/dist/src/sources/params.js.map +1 -0
- package/dist/src/sources/registry.d.ts +118 -0
- package/dist/src/sources/registry.d.ts.map +1 -0
- package/dist/src/sources/registry.js +193 -0
- package/dist/src/sources/registry.js.map +1 -0
- package/dist/src/sources/rest/descriptor.d.ts +16 -0
- package/dist/src/sources/rest/descriptor.d.ts.map +1 -0
- package/dist/src/sources/rest/descriptor.js +76 -0
- package/dist/src/sources/rest/descriptor.js.map +1 -0
- package/dist/src/sources/rest/index.d.ts +14 -0
- package/dist/src/sources/rest/index.d.ts.map +1 -0
- package/dist/src/sources/rest/index.js +13 -0
- package/dist/src/sources/rest/index.js.map +1 -0
- package/dist/src/sources/rest/mapping.d.ts +30 -0
- package/dist/src/sources/rest/mapping.d.ts.map +1 -0
- package/dist/src/sources/rest/mapping.js +362 -0
- package/dist/src/sources/rest/mapping.js.map +1 -0
- package/dist/src/sources/rest/openalex.d.ts +27 -0
- package/dist/src/sources/rest/openalex.d.ts.map +1 -0
- package/dist/src/sources/rest/openalex.js +269 -0
- package/dist/src/sources/rest/openalex.js.map +1 -0
- package/dist/src/sources/rest/paging.d.ts +53 -0
- package/dist/src/sources/rest/paging.d.ts.map +1 -0
- package/dist/src/sources/rest/paging.js +138 -0
- package/dist/src/sources/rest/paging.js.map +1 -0
- package/dist/src/sources/rest/params.d.ts +216 -0
- package/dist/src/sources/rest/params.d.ts.map +1 -0
- package/dist/src/sources/rest/params.js +7 -0
- package/dist/src/sources/rest/params.js.map +1 -0
- package/dist/src/sources/rest/records.d.ts +41 -0
- package/dist/src/sources/rest/records.d.ts.map +1 -0
- package/dist/src/sources/rest/records.js +240 -0
- package/dist/src/sources/rest/records.js.map +1 -0
- package/dist/src/sources/rest/samples/deps-dev.d.ts +10 -0
- package/dist/src/sources/rest/samples/deps-dev.d.ts.map +1 -0
- package/dist/src/sources/rest/samples/deps-dev.js +47 -0
- package/dist/src/sources/rest/samples/deps-dev.js.map +1 -0
- package/dist/src/sources/rest/samples/string.d.ts +9 -0
- package/dist/src/sources/rest/samples/string.d.ts.map +1 -0
- package/dist/src/sources/rest/samples/string.js +42 -0
- package/dist/src/sources/rest/samples/string.js.map +1 -0
- package/dist/src/sources/rest/selectors.d.ts +41 -0
- package/dist/src/sources/rest/selectors.d.ts.map +1 -0
- package/dist/src/sources/rest/selectors.js +81 -0
- package/dist/src/sources/rest/selectors.js.map +1 -0
- package/dist/src/sources/rest/source.d.ts +67 -0
- package/dist/src/sources/rest/source.d.ts.map +1 -0
- package/dist/src/sources/rest/source.js +650 -0
- package/dist/src/sources/rest/source.js.map +1 -0
- package/dist/src/sources/rest/templates.d.ts +38 -0
- package/dist/src/sources/rest/templates.d.ts.map +1 -0
- package/dist/src/sources/rest/templates.js +125 -0
- package/dist/src/sources/rest/templates.js.map +1 -0
- package/dist/src/sources/run.d.ts +93 -0
- package/dist/src/sources/run.d.ts.map +1 -0
- package/dist/src/sources/run.js +673 -0
- package/dist/src/sources/run.js.map +1 -0
- package/dist/src/sources/sha256.d.ts +12 -0
- package/dist/src/sources/sha256.d.ts.map +1 -0
- package/dist/src/sources/sha256.js +95 -0
- package/dist/src/sources/sha256.js.map +1 -0
- package/dist/src/sources/sigv4.d.ts +26 -0
- package/dist/src/sources/sigv4.d.ts.map +1 -0
- package/dist/src/sources/sigv4.js +184 -0
- package/dist/src/sources/sigv4.js.map +1 -0
- package/dist/src/sources/sparql/descriptor.d.ts +10 -0
- package/dist/src/sources/sparql/descriptor.d.ts.map +1 -0
- package/dist/src/sources/sparql/descriptor.js +64 -0
- package/dist/src/sources/sparql/descriptor.js.map +1 -0
- package/dist/src/sources/sparql/index.d.ts +28 -0
- package/dist/src/sources/sparql/index.d.ts.map +1 -0
- package/dist/src/sources/sparql/index.js +314 -0
- package/dist/src/sources/sparql/index.js.map +1 -0
- package/dist/src/sources/sparql/ntriples.d.ts +69 -0
- package/dist/src/sources/sparql/ntriples.d.ts.map +1 -0
- package/dist/src/sources/sparql/ntriples.js +180 -0
- package/dist/src/sources/sparql/ntriples.js.map +1 -0
- package/dist/src/sources/sparql/params.d.ts +27 -0
- package/dist/src/sources/sparql/params.d.ts.map +1 -0
- package/dist/src/sources/sparql/params.js +5 -0
- package/dist/src/sources/sparql/params.js.map +1 -0
- package/dist/src/sources/sparql/query.d.ts +72 -0
- package/dist/src/sources/sparql/query.d.ts.map +1 -0
- package/dist/src/sources/sparql/query.js +113 -0
- package/dist/src/sources/sparql/query.js.map +1 -0
- package/dist/src/sources/testing.d.ts +96 -0
- package/dist/src/sources/testing.d.ts.map +1 -0
- package/dist/src/sources/testing.js +138 -0
- package/dist/src/sources/testing.js.map +1 -0
- package/dist/src/sources/types.d.ts +696 -0
- package/dist/src/sources/types.d.ts.map +1 -0
- package/dist/src/sources/types.js +10 -0
- package/dist/src/sources/types.js.map +1 -0
- package/dist/src/styles/annotations.d.ts +61 -5
- package/dist/src/styles/annotations.d.ts.map +1 -1
- package/dist/src/styles/annotations.js +130 -22
- package/dist/src/styles/annotations.js.map +1 -1
- package/dist/src/styles/canon/bends.d.ts +46 -0
- package/dist/src/styles/canon/bends.d.ts.map +1 -1
- package/dist/src/styles/canon/bends.js +123 -0
- package/dist/src/styles/canon/bends.js.map +1 -1
- package/dist/src/styles/canon/color-tables.d.ts +6 -1
- package/dist/src/styles/canon/color-tables.d.ts.map +1 -1
- package/dist/src/styles/canon/color-tables.js +10 -4
- package/dist/src/styles/canon/color-tables.js.map +1 -1
- package/dist/src/styles/canon/color.d.ts +3 -1
- package/dist/src/styles/canon/color.d.ts.map +1 -1
- package/dist/src/styles/canon/color.js +103 -3
- package/dist/src/styles/canon/color.js.map +1 -1
- package/dist/src/styles/canon/enums.d.ts +2 -2
- package/dist/src/styles/canon/enums.d.ts.map +1 -1
- package/dist/src/styles/canon/enums.js +82 -7
- package/dist/src/styles/canon/enums.js.map +1 -1
- package/dist/src/styles/canon/graphviz.d.ts +12 -3
- package/dist/src/styles/canon/graphviz.d.ts.map +1 -1
- package/dist/src/styles/canon/graphviz.js +57 -9
- package/dist/src/styles/canon/graphviz.js.map +1 -1
- package/dist/src/styles/canon/number.d.ts +8 -0
- package/dist/src/styles/canon/number.d.ts.map +1 -1
- package/dist/src/styles/canon/number.js +18 -0
- package/dist/src/styles/canon/number.js.map +1 -1
- package/dist/src/styles/canon/text.d.ts +29 -2
- package/dist/src/styles/canon/text.d.ts.map +1 -1
- package/dist/src/styles/canon/text.js +156 -16
- package/dist/src/styles/canon/text.js.map +1 -1
- package/dist/src/styles/codes.d.ts +2 -0
- package/dist/src/styles/codes.d.ts.map +1 -1
- package/dist/src/styles/codes.js +2 -0
- package/dist/src/styles/codes.js.map +1 -1
- package/dist/src/styles/cyjs/cascade.d.ts.map +1 -1
- package/dist/src/styles/cyjs/cascade.js +1037 -35
- package/dist/src/styles/cyjs/cascade.js.map +1 -1
- package/dist/src/styles/cyjs/defaults-table.d.ts.map +1 -1
- package/dist/src/styles/cyjs/defaults-table.js +5 -0
- package/dist/src/styles/cyjs/defaults-table.js.map +1 -1
- package/dist/src/styles/cyjs/emit.d.ts.map +1 -1
- package/dist/src/styles/cyjs/emit.js +216 -12
- package/dist/src/styles/cyjs/emit.js.map +1 -1
- package/dist/src/styles/cyjs/face.d.ts +20 -0
- package/dist/src/styles/cyjs/face.d.ts.map +1 -0
- package/dist/src/styles/cyjs/face.js +332 -0
- package/dist/src/styles/cyjs/face.js.map +1 -0
- package/dist/src/styles/cyjs/mappers.d.ts +48 -2
- package/dist/src/styles/cyjs/mappers.d.ts.map +1 -1
- package/dist/src/styles/cyjs/mappers.js +463 -26
- package/dist/src/styles/cyjs/mappers.js.map +1 -1
- package/dist/src/styles/cyjs/routes.d.ts +53 -0
- package/dist/src/styles/cyjs/routes.d.ts.map +1 -0
- package/dist/src/styles/cyjs/routes.js +360 -0
- package/dist/src/styles/cyjs/routes.js.map +1 -0
- package/dist/src/styles/cytoscape/charts.d.ts +23 -0
- package/dist/src/styles/cytoscape/charts.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/charts.js +560 -0
- package/dist/src/styles/cytoscape/charts.js.map +1 -0
- package/dist/src/styles/cytoscape/emit.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/emit.js +204 -44
- package/dist/src/styles/cytoscape/emit.js.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.d.ts +97 -3
- package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.js +413 -79
- package/dist/src/styles/cytoscape/lexicon.js.map +1 -1
- package/dist/src/styles/cytoscape/mappings.d.ts +30 -0
- package/dist/src/styles/cytoscape/mappings.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/mappings.js +92 -0
- package/dist/src/styles/cytoscape/mappings.js.map +1 -1
- package/dist/src/styles/cytoscape/resolve.d.ts +46 -3
- package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/resolve.js +632 -22
- package/dist/src/styles/cytoscape/resolve.js.map +1 -1
- package/dist/src/styles/cytoscape/translate.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/translate.js +10 -10
- package/dist/src/styles/cytoscape/translate.js.map +1 -1
- package/dist/src/styles/defaults.d.ts +50 -0
- package/dist/src/styles/defaults.d.ts.map +1 -1
- package/dist/src/styles/defaults.js +315 -37
- package/dist/src/styles/defaults.js.map +1 -1
- package/dist/src/styles/index.d.ts +4 -3
- package/dist/src/styles/index.d.ts.map +1 -1
- package/dist/src/styles/index.js +3 -2
- package/dist/src/styles/index.js.map +1 -1
- package/dist/src/styles/internal.d.ts +1 -0
- package/dist/src/styles/internal.d.ts.map +1 -1
- package/dist/src/styles/internal.js +1 -0
- package/dist/src/styles/internal.js.map +1 -1
- package/dist/src/styles/io/block.d.ts.map +1 -1
- package/dist/src/styles/io/block.js +9 -0
- package/dist/src/styles/io/block.js.map +1 -1
- package/dist/src/styles/io/generic.d.ts.map +1 -1
- package/dist/src/styles/io/generic.js +56 -16
- package/dist/src/styles/io/generic.js.map +1 -1
- package/dist/src/styles/io/round-trip.d.ts +56 -0
- package/dist/src/styles/io/round-trip.d.ts.map +1 -0
- package/dist/src/styles/io/round-trip.js +138 -0
- package/dist/src/styles/io/round-trip.js.map +1 -0
- package/dist/src/styles/io/writer.d.ts.map +1 -1
- package/dist/src/styles/io/writer.js +13 -4
- package/dist/src/styles/io/writer.js.map +1 -1
- package/dist/src/styles/notes.d.ts.map +1 -1
- package/dist/src/styles/notes.js +1 -0
- package/dist/src/styles/notes.js.map +1 -1
- package/dist/src/styles/plan/features.d.ts +1 -1
- package/dist/src/styles/plan/features.d.ts.map +1 -1
- package/dist/src/styles/plan/features.js +22 -2
- package/dist/src/styles/plan/features.js.map +1 -1
- package/dist/src/styles/plan/index.d.ts +1 -1
- package/dist/src/styles/plan/index.d.ts.map +1 -1
- package/dist/src/styles/plan/index.js +1 -1
- package/dist/src/styles/plan/index.js.map +1 -1
- package/dist/src/styles/plan/plan.d.ts.map +1 -1
- package/dist/src/styles/plan/plan.js +61 -4
- package/dist/src/styles/plan/plan.js.map +1 -1
- package/dist/src/styles/plan/resolve.d.ts +13 -1
- package/dist/src/styles/plan/resolve.d.ts.map +1 -1
- package/dist/src/styles/plan/resolve.js +53 -6
- package/dist/src/styles/plan/resolve.js.map +1 -1
- package/dist/src/styles/slots.d.ts +14 -0
- package/dist/src/styles/slots.d.ts.map +1 -0
- package/dist/src/styles/slots.js +20 -0
- package/dist/src/styles/slots.js.map +1 -0
- package/dist/src/styles/types.d.ts +638 -5
- package/dist/src/styles/types.d.ts.map +1 -1
- package/dist/src/styles/vocabulary.d.ts +3 -2
- package/dist/src/styles/vocabulary.d.ts.map +1 -1
- package/dist/src/styles/vocabulary.js +218 -1
- package/dist/src/styles/vocabulary.js.map +1 -1
- package/dist/src/types.d.ts +19 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/styles.js +29 -238
- package/dist/styles.js.map +1 -1
- package/dist/xgmml.js +3 -3
- package/docs/samples/people.json +6 -0
- package/package.json +53 -8
- package/src/common/report.ts +27 -7
- package/src/formats/cx/importer.ts +6 -1
- package/src/formats/cx/styles.ts +144 -9
- package/src/formats/cx2/importer.ts +1 -0
- package/src/formats/cx2/styles.ts +3 -1
- package/src/formats/cys/importer.ts +1 -0
- package/src/formats/cys/styles.ts +27 -5
- package/src/formats/dot/drawing.ts +799 -0
- package/src/formats/dot/importer.ts +120 -35
- package/src/formats/dot/label-places.ts +228 -0
- package/src/formats/dot/record.ts +336 -0
- package/src/formats/dot/styles.ts +1657 -154
- package/src/formats/gexf/dialog-metrics.ts +61 -0
- package/src/formats/gexf/importer.ts +50 -5
- package/src/formats/gexf/preview.ts +217 -0
- package/src/formats/gexf/schema.ts +2 -1
- package/src/formats/gexf/styles.ts +1144 -142
- package/src/formats/gml/importer.ts +291 -76
- package/src/formats/gml/index.ts +1 -1
- package/src/formats/gml/positions.ts +29 -7
- package/src/formats/gml/styles.ts +854 -111
- package/src/formats/graphml/styles-plain.ts +8 -23
- package/src/formats/graphml/styles-yed.ts +821 -159
- package/src/formats/graphml/styles-yfiles3.ts +485 -63
- package/src/formats/graphml/yfiles.ts +19 -6
- package/src/formats/json/dialect.ts +41 -5
- package/src/formats/json/importer.ts +59 -7
- package/src/formats/json/index.ts +1 -0
- package/src/formats/json/positions.ts +22 -5
- package/src/formats/json/styles.ts +2041 -185
- package/src/formats/pajek/draw.ts +458 -0
- package/src/formats/pajek/exporter.ts +81 -49
- package/src/formats/pajek/importer.ts +278 -103
- package/src/formats/pajek/index.ts +1 -0
- package/src/formats/pajek/styles.ts +1382 -133
- package/src/formats/pajek/syntax.ts +27 -2
- package/src/formats/xgmml/emit.ts +73 -5
- package/src/formats/xgmml/styles.ts +331 -71
- package/src/index.ts +94 -0
- package/src/positions/convert.ts +12 -1
- package/src/positions/extract.ts +55 -1
- package/src/positions/index.ts +1 -0
- package/src/positions/types.ts +60 -0
- package/src/registry.ts +326 -1
- package/src/sources/builtins.ts +63 -0
- package/src/sources/codes.ts +235 -0
- package/src/sources/context.ts +894 -0
- package/src/sources/credentials.ts +409 -0
- package/src/sources/cypher/descriptor.ts +131 -0
- package/src/sources/cypher/flatten.ts +323 -0
- package/src/sources/cypher/index.ts +628 -0
- package/src/sources/cypher/params.ts +41 -0
- package/src/sources/cypher/profiles.ts +78 -0
- package/src/sources/cypher/query-builder.ts +327 -0
- package/src/sources/cypher/transports/bolt.ts +228 -0
- package/src/sources/cypher/transports/neptune-analytics.ts +41 -0
- package/src/sources/cypher/transports/neptune-https.ts +122 -0
- package/src/sources/cypher/transports/query-api.ts +100 -0
- package/src/sources/cypher/transports/transport.ts +139 -0
- package/src/sources/cypher/types-map.ts +418 -0
- package/src/sources/define.ts +195 -0
- package/src/sources/fail.ts +70 -0
- package/src/sources/ids.ts +80 -0
- package/src/sources/ndex/client.ts +102 -0
- package/src/sources/ndex/descriptor.ts +64 -0
- package/src/sources/ndex/expand.ts +100 -0
- package/src/sources/ndex/index.ts +235 -0
- package/src/sources/ndex/params.ts +17 -0
- package/src/sources/ndex/share-url.ts +84 -0
- package/src/sources/params.ts +32 -0
- package/src/sources/registry.ts +325 -0
- package/src/sources/rest/descriptor.ts +79 -0
- package/src/sources/rest/index.ts +22 -0
- package/src/sources/rest/mapping.ts +401 -0
- package/src/sources/rest/openalex.ts +288 -0
- package/src/sources/rest/paging.ts +180 -0
- package/src/sources/rest/params.ts +243 -0
- package/src/sources/rest/records.ts +289 -0
- package/src/sources/rest/samples/deps-dev.ts +49 -0
- package/src/sources/rest/samples/string.ts +44 -0
- package/src/sources/rest/selectors.ts +91 -0
- package/src/sources/rest/source.ts +776 -0
- package/src/sources/rest/templates.ts +151 -0
- package/src/sources/run.ts +793 -0
- package/src/sources/sha256.ts +99 -0
- package/src/sources/sigv4.ts +209 -0
- package/src/sources/sparql/descriptor.ts +67 -0
- package/src/sources/sparql/index.ts +356 -0
- package/src/sources/sparql/ntriples.ts +219 -0
- package/src/sources/sparql/params.ts +28 -0
- package/src/sources/sparql/query.ts +162 -0
- package/src/sources/testing.ts +210 -0
- package/src/sources/types.ts +776 -0
- package/src/styles/annotations.ts +201 -27
- package/src/styles/canon/bends.ts +137 -0
- package/src/styles/canon/color-tables.ts +10 -4
- package/src/styles/canon/color.ts +105 -3
- package/src/styles/canon/enums.ts +99 -8
- package/src/styles/canon/graphviz.ts +71 -10
- package/src/styles/canon/number.ts +19 -0
- package/src/styles/canon/text.ts +187 -16
- package/src/styles/codes.ts +2 -0
- package/src/styles/cyjs/cascade.ts +1193 -38
- package/src/styles/cyjs/defaults-table.ts +5 -0
- package/src/styles/cyjs/emit.ts +247 -16
- package/src/styles/cyjs/face.ts +372 -0
- package/src/styles/cyjs/mappers.ts +498 -28
- package/src/styles/cyjs/routes.ts +432 -0
- package/src/styles/cytoscape/charts.ts +684 -0
- package/src/styles/cytoscape/emit.ts +220 -44
- package/src/styles/cytoscape/lexicon.ts +459 -80
- package/src/styles/cytoscape/mappings.ts +108 -0
- package/src/styles/cytoscape/resolve.ts +763 -23
- package/src/styles/cytoscape/translate.ts +11 -11
- package/src/styles/defaults.ts +436 -38
- package/src/styles/index.ts +5 -0
- package/src/styles/internal.ts +1 -0
- package/src/styles/io/block.ts +10 -0
- package/src/styles/io/generic.ts +79 -23
- package/src/styles/io/round-trip.ts +202 -0
- package/src/styles/io/writer.ts +14 -4
- package/src/styles/notes.ts +1 -0
- package/src/styles/plan/features.ts +23 -2
- package/src/styles/plan/index.ts +1 -1
- package/src/styles/plan/plan.ts +69 -5
- package/src/styles/plan/resolve.ts +61 -6
- package/src/styles/slots.ts +25 -0
- package/src/styles/types.ts +658 -4
- package/src/styles/vocabulary.ts +226 -3
- package/src/types.ts +19 -5
- package/dist/chunks/block-DiGq58c3.js.map +0 -1
- package/dist/chunks/choose--jM0yYCo.js +0 -57
- package/dist/chunks/choose--jM0yYCo.js.map +0 -1
- package/dist/chunks/convert-BcQ8_jMo.js.map +0 -1
- package/dist/chunks/emit-CwU8cUmG.js.map +0 -1
- package/dist/chunks/export-BvqAXCKh.js.map +0 -1
- package/dist/chunks/exporter-CrDWIyiq.js.map +0 -1
- package/dist/chunks/format-BpQBx8MZ.js.map +0 -1
- package/dist/chunks/generic-Dq1ntt9q.js.map +0 -1
- package/dist/chunks/importer-BSvfrX_h.js.map +0 -1
- package/dist/chunks/importer-CMmeMWlC.js.map +0 -1
- package/dist/chunks/importer-COTK9Tsl.js.map +0 -1
- package/dist/chunks/importer-DiZRmOQG.js.map +0 -1
- package/dist/chunks/importer-e6LGpqHB.js.map +0 -1
- package/dist/chunks/importer-iFYPEKaJ.js.map +0 -1
- package/dist/chunks/importer-yh_aBCU6.js.map +0 -1
- package/dist/chunks/lexicon-CT69Kd87.js.map +0 -1
- package/dist/chunks/styles-BQnsga7p.js.map +0 -1
- package/dist/chunks/styles-D3fRphrO.js +0 -690
- package/dist/chunks/styles-D3fRphrO.js.map +0 -1
- package/dist/chunks/styles-yed-BF5x3_Y5.js +0 -842
- package/dist/chunks/styles-yed-BF5x3_Y5.js.map +0 -1
- package/dist/chunks/writer-DMKvthQE.js +0 -448
- package/dist/chunks/writer-DMKvthQE.js.map +0 -1
|
@@ -264,6 +264,29 @@ const CLUSTER_PREFIX = "cluster";
|
|
|
264
264
|
const CLUSTER_ATTRIBUTE = "cluster";
|
|
265
265
|
const STATEMENTS_PER_ABORT_CHECK = 64;
|
|
266
266
|
const MAX_ANCESTOR_WALK = 4096;
|
|
267
|
+
/**
|
|
268
|
+
* The graph attributes a cluster takes from the graphs around it when it sets none of its own: Graphviz gives a
|
|
269
|
+
* subgraph every graph attribute its enclosing graphs set before it opened (a root `label` set first labels every
|
|
270
|
+
* cluster). Only the attributes that decide how a cluster is drawn are copied.
|
|
271
|
+
*/
|
|
272
|
+
const INHERITED_GRAPH_ATTRIBUTES: ReadonlySet<string> = new Set([
|
|
273
|
+
"bgcolor",
|
|
274
|
+
"color",
|
|
275
|
+
"colorscheme",
|
|
276
|
+
"fillcolor",
|
|
277
|
+
"fontcolor",
|
|
278
|
+
"fontname",
|
|
279
|
+
"fontsize",
|
|
280
|
+
"gradientangle",
|
|
281
|
+
"label",
|
|
282
|
+
"labeljust",
|
|
283
|
+
"labelloc",
|
|
284
|
+
"pencolor",
|
|
285
|
+
"penwidth",
|
|
286
|
+
"peripheries",
|
|
287
|
+
"style",
|
|
288
|
+
"tooltip",
|
|
289
|
+
]);
|
|
267
290
|
|
|
268
291
|
/**
|
|
269
292
|
* The header keyword, ended by what may follow it in DOT: space, `{`, a quoted ID or a comment.
|
|
@@ -320,6 +343,8 @@ interface Scope {
|
|
|
320
343
|
readonly containers: number[];
|
|
321
344
|
/** Subgraph attributes buffered until the subgraph closes (the root applies them at once). */
|
|
322
345
|
readonly attributes: Map<string, DotAttribute>;
|
|
346
|
+
/** The drawing attributes a cluster opened in this scope inherits: the enclosing scopes' and this one's so far. */
|
|
347
|
+
readonly graphDefaults: Map<string, DotAttribute>;
|
|
323
348
|
/** Whether the subgraph is a cluster (by name or by `cluster=true`). */
|
|
324
349
|
cluster: boolean;
|
|
325
350
|
/** The container node index once created, or INVALID_INDEX. */
|
|
@@ -734,6 +759,12 @@ class DotParser {
|
|
|
734
759
|
/** The parent assigned to a node by this import. */
|
|
735
760
|
private readonly parentOf = new Map<number, number>();
|
|
736
761
|
|
|
762
|
+
/** Each cluster container's inherited drawing attributes, as its scope saw them when the cluster first opened. */
|
|
763
|
+
private readonly inherited = new Map<number, Map<string, DotAttribute>>();
|
|
764
|
+
|
|
765
|
+
/** The attributes each cluster container sets itself, which its inherited ones never replace. */
|
|
766
|
+
private readonly ownAttributes = new Map<number, Set<string>>();
|
|
767
|
+
|
|
737
768
|
/** Nodes already warned about a cluster conflict. */
|
|
738
769
|
private readonly conflictWarned = new Set<number>();
|
|
739
770
|
|
|
@@ -851,6 +882,7 @@ class DotParser {
|
|
|
851
882
|
});
|
|
852
883
|
const root = this.newScope(null, headerLine, true, null);
|
|
853
884
|
this.statementList(root);
|
|
885
|
+
this.applyInherited();
|
|
854
886
|
return lexer.next();
|
|
855
887
|
}
|
|
856
888
|
|
|
@@ -873,6 +905,7 @@ class DotParser {
|
|
|
873
905
|
memberSet: new Set(),
|
|
874
906
|
containers: [],
|
|
875
907
|
attributes: new Map(),
|
|
908
|
+
graphDefaults: new Map(parent?.graphDefaults),
|
|
876
909
|
cluster: false,
|
|
877
910
|
container: INVALID_INDEX,
|
|
878
911
|
};
|
|
@@ -1113,42 +1146,10 @@ class DotParser {
|
|
|
1113
1146
|
*/
|
|
1114
1147
|
private closeScope(scope: Scope, parent: Scope): void {
|
|
1115
1148
|
const { container } = scope;
|
|
1116
|
-
if (container
|
|
1117
|
-
|
|
1118
|
-
if (attribute.name !== CLUSTER_ATTRIBUTE) {
|
|
1119
|
-
this.setNodeAttribute(container, attribute.name, attribute.value, attribute.line);
|
|
1120
|
-
}
|
|
1121
|
-
}
|
|
1122
|
-
for (const nested of scope.containers) {
|
|
1123
|
-
if (nested !== container && !this.parentOf.has(nested)) {
|
|
1124
|
-
this.setParent(nested, container);
|
|
1125
|
-
}
|
|
1126
|
-
}
|
|
1127
|
-
for (const member of scope.members) {
|
|
1128
|
-
if (member === container) {
|
|
1129
|
-
continue;
|
|
1130
|
-
}
|
|
1131
|
-
const existing = this.parentOf.get(member);
|
|
1132
|
-
if (existing === undefined) {
|
|
1133
|
-
this.setParent(member, container);
|
|
1134
|
-
} else if (existing !== container && !this.isAncestor(container, existing)) {
|
|
1135
|
-
this.clusterConflict(member, existing, container, scope.line);
|
|
1136
|
-
}
|
|
1137
|
-
}
|
|
1138
|
-
parent.containers.push(container);
|
|
1149
|
+
if (container === INVALID_INDEX) {
|
|
1150
|
+
this.closePlainSubgraph(scope, parent);
|
|
1139
1151
|
} else {
|
|
1140
|
-
|
|
1141
|
-
const names = [...scope.attributes.keys()].join(", ");
|
|
1142
|
-
this.report.warning(
|
|
1143
|
-
"unsupported",
|
|
1144
|
-
DOT_ISSUE.SUBGRAPH_ATTRIBUTES_DROPPED,
|
|
1145
|
-
`subgraph ${scope.name === null ? "(anonymous)" : JSON.stringify(scope.name)} is not a cluster; its attributes (${names}) cannot be represented and were dropped`,
|
|
1146
|
-
{ line: scope.line, element: scope.name },
|
|
1147
|
-
);
|
|
1148
|
-
}
|
|
1149
|
-
for (const nested of scope.containers) {
|
|
1150
|
-
parent.containers.push(nested);
|
|
1151
|
-
}
|
|
1152
|
+
this.closeCluster(scope, parent, container);
|
|
1152
1153
|
}
|
|
1153
1154
|
if (!parent.root) {
|
|
1154
1155
|
for (const member of scope.members) {
|
|
@@ -1160,6 +1161,86 @@ class DotParser {
|
|
|
1160
1161
|
}
|
|
1161
1162
|
}
|
|
1162
1163
|
|
|
1164
|
+
/**
|
|
1165
|
+
* Finish a cluster: apply its attributes to its container node, assign parents to its nested
|
|
1166
|
+
* containers and its members, and hand the container to the enclosing scope.
|
|
1167
|
+
* @param scope - the closed scope
|
|
1168
|
+
* @param parent - the enclosing scope
|
|
1169
|
+
* @param container - the cluster's container node
|
|
1170
|
+
*/
|
|
1171
|
+
private closeCluster(scope: Scope, parent: Scope, container: number): void {
|
|
1172
|
+
const own = this.ownAttributes.get(container) ?? new Set<string>();
|
|
1173
|
+
this.ownAttributes.set(container, own);
|
|
1174
|
+
for (const attribute of scope.attributes.values()) {
|
|
1175
|
+
if (attribute.name !== CLUSTER_ATTRIBUTE) {
|
|
1176
|
+
own.add(attribute.name);
|
|
1177
|
+
this.setNodeAttribute(container, attribute.name, attribute.value, attribute.line);
|
|
1178
|
+
}
|
|
1179
|
+
}
|
|
1180
|
+
for (const nested of scope.containers) {
|
|
1181
|
+
if (nested !== container && !this.parentOf.has(nested)) {
|
|
1182
|
+
this.setParent(nested, container);
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
for (const member of scope.members) {
|
|
1186
|
+
if (member !== container) {
|
|
1187
|
+
this.adoptMember(member, container, scope.line);
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1190
|
+
parent.containers.push(container);
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
/**
|
|
1194
|
+
* Put a cluster's member in it, unless it is already in another cluster this one is not inside.
|
|
1195
|
+
* @param member - the member node
|
|
1196
|
+
* @param container - the cluster's container node
|
|
1197
|
+
* @param line - the cluster's line
|
|
1198
|
+
*/
|
|
1199
|
+
private adoptMember(member: number, container: number, line: number): void {
|
|
1200
|
+
const existing = this.parentOf.get(member);
|
|
1201
|
+
if (existing === undefined) {
|
|
1202
|
+
this.setParent(member, container);
|
|
1203
|
+
} else if (existing !== container && !this.isAncestor(container, existing)) {
|
|
1204
|
+
this.clusterConflict(member, existing, container, line);
|
|
1205
|
+
}
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
/**
|
|
1209
|
+
* Finish a subgraph that is not a cluster: report its attributes dropped, and hand its nested
|
|
1210
|
+
* containers to the enclosing scope.
|
|
1211
|
+
* @param scope - the closed scope
|
|
1212
|
+
* @param parent - the enclosing scope
|
|
1213
|
+
*/
|
|
1214
|
+
private closePlainSubgraph(scope: Scope, parent: Scope): void {
|
|
1215
|
+
if (scope.attributes.size > 0) {
|
|
1216
|
+
const names = [...scope.attributes.keys()].join(", ");
|
|
1217
|
+
this.report.warning(
|
|
1218
|
+
"unsupported",
|
|
1219
|
+
DOT_ISSUE.SUBGRAPH_ATTRIBUTES_DROPPED,
|
|
1220
|
+
`subgraph ${scope.name === null ? "(anonymous)" : JSON.stringify(scope.name)} is not a cluster; its attributes (${names}) cannot be represented and were dropped`,
|
|
1221
|
+
{ line: scope.line, element: scope.name },
|
|
1222
|
+
);
|
|
1223
|
+
}
|
|
1224
|
+
for (const nested of scope.containers) {
|
|
1225
|
+
parent.containers.push(nested);
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
|
|
1229
|
+
/**
|
|
1230
|
+
* Give every cluster the drawing attributes it inherits and does not set itself (Graphviz's subgraph attribute
|
|
1231
|
+
* inheritance), once the whole graph is read: a cluster reopened later can still set its own.
|
|
1232
|
+
*/
|
|
1233
|
+
private applyInherited(): void {
|
|
1234
|
+
for (const [container, attributes] of this.inherited) {
|
|
1235
|
+
const own = this.ownAttributes.get(container);
|
|
1236
|
+
for (const attribute of attributes.values()) {
|
|
1237
|
+
if (own?.has(attribute.name) !== true) {
|
|
1238
|
+
this.setNodeAttribute(container, attribute.name, attribute.value, attribute.line);
|
|
1239
|
+
}
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1163
1244
|
/**
|
|
1164
1245
|
* Whether `candidate` is an ancestor of `node` through the parents assigned so far.
|
|
1165
1246
|
* @param candidate - the possible ancestor
|
|
@@ -1244,6 +1325,7 @@ class DotParser {
|
|
|
1244
1325
|
if (!this.containers.has(index)) {
|
|
1245
1326
|
this.containers.add(index);
|
|
1246
1327
|
this.sink.setNodeValue(this.clusterColumn(), index, true);
|
|
1328
|
+
this.inherited.set(index, new Map(scope.graphDefaults));
|
|
1247
1329
|
}
|
|
1248
1330
|
scope.container = index;
|
|
1249
1331
|
} catch (err) {
|
|
@@ -1261,6 +1343,9 @@ class DotParser {
|
|
|
1261
1343
|
* @param attribute - the attribute
|
|
1262
1344
|
*/
|
|
1263
1345
|
private scopeAttribute(scope: Scope, attribute: DotAttribute): void {
|
|
1346
|
+
if (INHERITED_GRAPH_ATTRIBUTES.has(attribute.name)) {
|
|
1347
|
+
scope.graphDefaults.set(attribute.name, attribute);
|
|
1348
|
+
}
|
|
1264
1349
|
if (scope.root) {
|
|
1265
1350
|
this.setGraphAttribute(attribute);
|
|
1266
1351
|
return;
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where Graphviz puts an edge's labels: a stored `lp` (the label's center), and the head and tail labels at
|
|
3
|
+
* `head_lp` / `tail_lp` -- kept only with the edge's stored `pos` (`neato -n2` routes an edge without one again, and
|
|
4
|
+
* places its labels again) -- or where Graphviz's `place_portlabel` (lib/common/splines.c) puts them, when the edge's
|
|
5
|
+
* `labelangle` or `labeldistance` is not its default: `10 * labeldistance` points from the end of the line, turned
|
|
6
|
+
* `labelangle` degrees (default -25) from the line. With both at their defaults Graphviz places end labels as external
|
|
7
|
+
* labels, which graphty leaves to its own place beside the end. Read as offsets from where graphty puts each label:
|
|
8
|
+
* the edge label from the middle of its route, an end label from where the line meets its node.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { GraphSnapshot } from "@graphty/graph-format";
|
|
12
|
+
|
|
13
|
+
import { type BendPoint, flattenCubic } from "../../styles/canon/bends.js";
|
|
14
|
+
import { num6 } from "../../styles/canon/number.js";
|
|
15
|
+
import type { StyleValue } from "../../styles/types.js";
|
|
16
|
+
|
|
17
|
+
/** Graphviz's `PORT_LABEL_DISTANCE`, in points. */
|
|
18
|
+
const PORT_LABEL_DISTANCE = 10;
|
|
19
|
+
|
|
20
|
+
/** Graphviz's `PORT_LABEL_ANGLE`, in degrees. */
|
|
21
|
+
const PORT_LABEL_ANGLE = -25;
|
|
22
|
+
|
|
23
|
+
/** Graphviz's default node size, in inches. */
|
|
24
|
+
const DEFAULT_SIZE = { w: 0.75, h: 0.5 } as const;
|
|
25
|
+
|
|
26
|
+
/** One attribute of an element as text, or null when it is unset. */
|
|
27
|
+
type Attr = (name: string) => string | null;
|
|
28
|
+
|
|
29
|
+
/** Receives one property's value. */
|
|
30
|
+
type Put = (property: string, value: StyleValue | null) => void;
|
|
31
|
+
|
|
32
|
+
/** What the label places of one graph's edges are read against. */
|
|
33
|
+
export interface LabelPlaceContext {
|
|
34
|
+
/** A node's center from its position, in points, y up. */
|
|
35
|
+
readonly center: (n: number) => BendPoint | null;
|
|
36
|
+
/** A node's attribute. */
|
|
37
|
+
readonly node: (n: number, name: string) => string | null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Reads an edge's stored label places and its head and tail label places as offsets.
|
|
42
|
+
* @param snapshot - the graph
|
|
43
|
+
* @param cx - the graph's label place context
|
|
44
|
+
* @param e - the edge
|
|
45
|
+
* @param get - the edge's attributes
|
|
46
|
+
* @param put - receives the values
|
|
47
|
+
*/
|
|
48
|
+
export function readLabelPlaces(snapshot: GraphSnapshot, cx: LabelPlaceContext, e: number, get: Attr, put: Put): void {
|
|
49
|
+
const s = snapshot.edgeSource(e);
|
|
50
|
+
const t = snapshot.edgeTarget(e);
|
|
51
|
+
const [source, target] = [cx.center(s), cx.center(t)];
|
|
52
|
+
if (source === null || target === null || s === t) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const route = edgeRoute(source, target, get("pos"));
|
|
56
|
+
const lp = route.start === null ? null : point(get("lp"));
|
|
57
|
+
if (lp !== null && get("label") !== null) {
|
|
58
|
+
const mid = routeMiddle(route.points);
|
|
59
|
+
put("labelOffsetX", num6(lp[0] - mid[0]));
|
|
60
|
+
put("labelOffsetY", num6(mid[1] - lp[1]));
|
|
61
|
+
}
|
|
62
|
+
readEndLabel(cx, route, { node: t, at: target, other: source }, "head", get, put);
|
|
63
|
+
readEndLabel(cx, route, { node: s, at: source, other: target }, "tail", get, put);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** One end of an edge: its node, that node's center and the other end's center. */
|
|
67
|
+
interface EdgeEnd {
|
|
68
|
+
readonly node: number;
|
|
69
|
+
readonly at: BendPoint;
|
|
70
|
+
readonly other: BendPoint;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Reads one end's label place as an offset from where its line meets its node.
|
|
75
|
+
* @param cx - the graph's label place context
|
|
76
|
+
* @param route - the edge's route
|
|
77
|
+
* @param end - the end's node and the two centers
|
|
78
|
+
* @param which - which end
|
|
79
|
+
* @param get - the edge's attributes
|
|
80
|
+
* @param put - receives the values
|
|
81
|
+
*/
|
|
82
|
+
function readEndLabel(
|
|
83
|
+
cx: LabelPlaceContext,
|
|
84
|
+
route: EdgeRoute,
|
|
85
|
+
end: EdgeEnd,
|
|
86
|
+
which: "head" | "tail",
|
|
87
|
+
get: Attr,
|
|
88
|
+
put: Put,
|
|
89
|
+
): void {
|
|
90
|
+
if (get(`${which}label`) === null) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const head = which === "head";
|
|
94
|
+
const tip = (head ? route.end : route.start) ?? boundary(cx, end.node, end.at, end.other);
|
|
95
|
+
// the nearest route point back from the end that is not the end itself (a spline with no arrow ends at it);
|
|
96
|
+
// the route's last point is the node's center, past the end
|
|
97
|
+
const back = head ? route.points.slice(0, -1).reverse() : route.points.slice(1);
|
|
98
|
+
const toward = back.find((p) => Math.hypot(p[0] - tip[0], p[1] - tip[1]) > 1e-6) ?? end.other;
|
|
99
|
+
const stored = route.start === null ? null : point(get(`${which}_lp`));
|
|
100
|
+
const at = stored ?? portLabel(get, tip, toward);
|
|
101
|
+
if (at !== null) {
|
|
102
|
+
const prefix = head ? "target" : "source";
|
|
103
|
+
put(`${prefix}LabelOffset`, 0);
|
|
104
|
+
put(`${prefix}LabelOffsetX`, num6(at[0] - tip[0]));
|
|
105
|
+
put(`${prefix}LabelOffsetY`, num6(tip[1] - at[1]));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Where Graphviz's `place_portlabel` puts an end label's center: only when the edge's `labelangle` or
|
|
111
|
+
* `labeldistance` is not its default.
|
|
112
|
+
* @param get - the edge's attributes
|
|
113
|
+
* @param tip - the end of the line
|
|
114
|
+
* @param toward - a point back along the line from the end
|
|
115
|
+
* @returns the center, or null when Graphviz places the label as an external label
|
|
116
|
+
*/
|
|
117
|
+
function portLabel(get: Attr, tip: BendPoint, toward: BendPoint): BendPoint | null {
|
|
118
|
+
const turn = finite(get("labelangle"), PORT_LABEL_ANGLE, -180);
|
|
119
|
+
const distance = finite(get("labeldistance"), 1, 0);
|
|
120
|
+
if (turn === PORT_LABEL_ANGLE && distance === 1) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
const angle = Math.atan2(toward[1] - tip[1], toward[0] - tip[0]) + (turn * Math.PI) / 180;
|
|
124
|
+
const dist = PORT_LABEL_DISTANCE * distance;
|
|
125
|
+
return [tip[0] + dist * Math.cos(angle), tip[1] + dist * Math.sin(angle)];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* A number attribute as Graphviz's `late_double` reads it: the default when unset or not a number, at least `low`.
|
|
130
|
+
* @param raw - the value
|
|
131
|
+
* @param fallback - the default
|
|
132
|
+
* @param low - the least value
|
|
133
|
+
* @returns the number
|
|
134
|
+
*/
|
|
135
|
+
function finite(raw: string | null, fallback: number, low: number): number {
|
|
136
|
+
const v = raw === null || raw.trim() === "" ? Number.NaN : Number(raw);
|
|
137
|
+
return Number.isFinite(v) ? Math.max(low, v) : fallback;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* An "x,y" point (a trailing `!` allowed).
|
|
142
|
+
* @param raw - the text
|
|
143
|
+
* @returns the point, or null
|
|
144
|
+
*/
|
|
145
|
+
function point(raw: string | null): BendPoint | null {
|
|
146
|
+
const parts = (raw ?? "").replace(/!$/, "").split(",").map(Number);
|
|
147
|
+
return parts.length >= 2 && Number.isFinite(parts[0]) && Number.isFinite(parts[1]) ? [parts[0], parts[1]] : null;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/** An edge's route: its points from center to center, and the ends of its line when stored. */
|
|
151
|
+
interface EdgeRoute {
|
|
152
|
+
readonly points: BendPoint[];
|
|
153
|
+
readonly start: BendPoint | null;
|
|
154
|
+
readonly end: BendPoint | null;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* The route an edge is drawn along: its stored spline's points (flattened) between the two centers, and the ends of
|
|
159
|
+
* its line where `pos` gives arrow points (`s,` / `e,`) or its spline's own ends.
|
|
160
|
+
* @param source - the source's center
|
|
161
|
+
* @param target - the target's center
|
|
162
|
+
* @param pos - the edge's `pos`
|
|
163
|
+
* @returns the route
|
|
164
|
+
*/
|
|
165
|
+
function edgeRoute(source: BendPoint, target: BendPoint, pos: string | null): EdgeRoute {
|
|
166
|
+
const tokens = (pos ?? "").split(";")[0].trim().split(/\s+/).filter(Boolean);
|
|
167
|
+
const marked = (flag: string): BendPoint | null => {
|
|
168
|
+
const token = tokens.find((x) => x.startsWith(`${flag},`));
|
|
169
|
+
return token === undefined ? null : point(token.slice(2));
|
|
170
|
+
};
|
|
171
|
+
const controls = tokens.filter((x) => !/^[es],/.test(x)).map((x) => point(x));
|
|
172
|
+
const flat = controls.every((p) => p !== null) && controls.length >= 4 ? flattenCubic(controls) : null;
|
|
173
|
+
if (flat === null) {
|
|
174
|
+
return { points: [source, target], start: null, end: null };
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
points: [source, ...flat, target],
|
|
178
|
+
start: marked("s") ?? flat[0],
|
|
179
|
+
end: marked("e") ?? flat.at(-1) ?? null,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* The point halfway along a route.
|
|
185
|
+
* @param points - the route
|
|
186
|
+
* @returns the point
|
|
187
|
+
*/
|
|
188
|
+
function routeMiddle(points: readonly BendPoint[]): BendPoint {
|
|
189
|
+
// ponytail: halfway by length; graphty puts a bent edge's label at its middle segment, close to it
|
|
190
|
+
const lengths = points.slice(1).map((p, i) => Math.hypot(p[0] - points[i][0], p[1] - points[i][1]));
|
|
191
|
+
let left = lengths.reduce((a, b) => a + b, 0) / 2;
|
|
192
|
+
for (let i = 0; i < lengths.length; i++) {
|
|
193
|
+
if (left <= lengths[i] && lengths[i] > 0) {
|
|
194
|
+
const f = left / lengths[i];
|
|
195
|
+
return [
|
|
196
|
+
points[i][0] + f * (points[i + 1][0] - points[i][0]),
|
|
197
|
+
points[i][1] + f * (points[i + 1][1] - points[i][1]),
|
|
198
|
+
];
|
|
199
|
+
}
|
|
200
|
+
left -= lengths[i];
|
|
201
|
+
}
|
|
202
|
+
return points[0];
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Where the straight line from a node's center toward a point leaves the node, the node taken as the ellipse of its
|
|
207
|
+
* `width` and `height`.
|
|
208
|
+
* @param cx - the label place context
|
|
209
|
+
* @param n - the node
|
|
210
|
+
* @param center - its center
|
|
211
|
+
* @param toward - the point
|
|
212
|
+
* @returns the point on its outline
|
|
213
|
+
*/
|
|
214
|
+
function boundary(cx: LabelPlaceContext, n: number, center: BendPoint, toward: BendPoint): BendPoint {
|
|
215
|
+
// ponytail: every shape taken as its ellipse; exact for the circles and ellipses the end labels sit on
|
|
216
|
+
const inch = (name: "width" | "height", fallback: number): number => {
|
|
217
|
+
const v = Number(cx.node(n, name) ?? Number.NaN);
|
|
218
|
+
return (Number.isFinite(v) && v >= 0 ? v : fallback) * 72;
|
|
219
|
+
};
|
|
220
|
+
const [rx, ry] = [inch("width", DEFAULT_SIZE.w) / 2, inch("height", DEFAULT_SIZE.h) / 2];
|
|
221
|
+
const [dx, dy] = [toward[0] - center[0], toward[1] - center[1]];
|
|
222
|
+
const len = Math.hypot(dx, dy);
|
|
223
|
+
if (len === 0 || rx === 0 || ry === 0) {
|
|
224
|
+
return center;
|
|
225
|
+
}
|
|
226
|
+
const r = 1 / Math.hypot(dx / len / rx, dy / len / ry);
|
|
227
|
+
return [center[0] + (dx / len) * r, center[1] + (dy / len) * r];
|
|
228
|
+
}
|