@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Canonical enumeration values: each dialect's spellings matched against an alias table without regard to case,
|
|
3
3
|
* spaces or underscores. An unknown value of an open enumeration (shapes, border and line styles, arrows) is kept as
|
|
4
|
-
* `other:<raw>` and noted; an unknown value of a closed one (weights, positions) gives no value and is noted.
|
|
4
|
+
* `other:<raw>` and noted; an unknown value of a closed one (weights, positions, label fits) gives no value and is noted.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { STYLE_ISSUE } from "../codes.js";
|
|
@@ -12,7 +12,17 @@ import { type CanonSite, noteAt, scalarText } from "./site.js";
|
|
|
12
12
|
* The enumerations a style value can belong to.
|
|
13
13
|
* @category Styles
|
|
14
14
|
*/
|
|
15
|
-
export type StyleEnumKind =
|
|
15
|
+
export type StyleEnumKind =
|
|
16
|
+
| "shape"
|
|
17
|
+
| "borderStyle"
|
|
18
|
+
| "borderPosition"
|
|
19
|
+
| "lineStyle"
|
|
20
|
+
| "arrow"
|
|
21
|
+
| "arrowSide"
|
|
22
|
+
| "weight"
|
|
23
|
+
| "position"
|
|
24
|
+
| "labelFit"
|
|
25
|
+
| "textAlign";
|
|
16
26
|
|
|
17
27
|
type Aliases = Readonly<Record<string, readonly string[]>>;
|
|
18
28
|
|
|
@@ -55,16 +65,34 @@ const SHAPES: Aliases = {
|
|
|
55
65
|
"roundedrectangle",
|
|
56
66
|
"round-rect",
|
|
57
67
|
"mrecord",
|
|
58
|
-
"cut-rectangle",
|
|
59
68
|
"round-tag",
|
|
60
69
|
"bottom-round-rectangle",
|
|
70
|
+
"bottomroundrectangle",
|
|
61
71
|
],
|
|
62
72
|
triangle: ["triangle", "invtriangle", "round-triangle", "tag"],
|
|
63
73
|
diamond: ["diamond", "rhombus", "mdiamond", "round-diamond"],
|
|
64
74
|
pentagon: ["pentagon", "round-pentagon"],
|
|
65
|
-
hexagon: [
|
|
66
|
-
|
|
67
|
-
|
|
75
|
+
hexagon: [
|
|
76
|
+
"hexagon",
|
|
77
|
+
"hexagon2",
|
|
78
|
+
"round-hexagon",
|
|
79
|
+
"concave-hexagon",
|
|
80
|
+
"concavehexagon",
|
|
81
|
+
"septagon",
|
|
82
|
+
"heptagon",
|
|
83
|
+
"round-heptagon",
|
|
84
|
+
],
|
|
85
|
+
// a cut rectangle is a rectangle with its four corners cut off: eight sides
|
|
86
|
+
octagon: [
|
|
87
|
+
"octagon",
|
|
88
|
+
"doubleoctagon",
|
|
89
|
+
"tripleoctagon",
|
|
90
|
+
"round-octagon",
|
|
91
|
+
"octagon2",
|
|
92
|
+
"cut-rectangle",
|
|
93
|
+
"cutrectangle",
|
|
94
|
+
],
|
|
95
|
+
parallelogram: ["parallelogram", "parallelogram2", "rhomboid", "right-rhomboid", "fat-arrow", "fatarrow"],
|
|
68
96
|
trapezoid: ["trapezoid", "trapezoid2", "invtrapezoid", "trapezium", "round-trapezoid"],
|
|
69
97
|
star: ["star", "star5", "star6", "star8", "polygon"],
|
|
70
98
|
vee: ["vee", "v"],
|
|
@@ -135,6 +163,36 @@ const POSITIONS: Aliases = {
|
|
|
135
163
|
"top-right": ["top-right", "north-east", "northeast"],
|
|
136
164
|
"bottom-left": ["bottom-left", "south-west", "southwest"],
|
|
137
165
|
"bottom-right": ["bottom-right", "south-east", "southeast"],
|
|
166
|
+
"inside-top": ["inside-top"],
|
|
167
|
+
"inside-bottom": ["inside-bottom"],
|
|
168
|
+
"inside-left": ["inside-left"],
|
|
169
|
+
"inside-right": ["inside-right"],
|
|
170
|
+
"inside-top-left": ["inside-top-left"],
|
|
171
|
+
"inside-top-right": ["inside-top-right"],
|
|
172
|
+
"inside-bottom-left": ["inside-bottom-left"],
|
|
173
|
+
"inside-bottom-right": ["inside-bottom-right"],
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
const BORDER_POSITIONS: Aliases = {
|
|
177
|
+
inside: ["inside"],
|
|
178
|
+
center: ["center", "centre", "middle"],
|
|
179
|
+
outside: ["outside"],
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
const ARROW_SIDES: Aliases = {
|
|
183
|
+
left: ["left"],
|
|
184
|
+
right: ["right"],
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
const TEXT_ALIGNS: Aliases = {
|
|
188
|
+
left: ["left", "start"],
|
|
189
|
+
center: ["center", "centre", "middle"],
|
|
190
|
+
right: ["right", "end"],
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
const LABEL_FITS: Aliases = {
|
|
194
|
+
inside: ["inside"],
|
|
195
|
+
bounds: ["bounds"],
|
|
138
196
|
};
|
|
139
197
|
|
|
140
198
|
/** vis-network draws these spellings differently from the common reading. */
|
|
@@ -145,11 +203,40 @@ const VIS: Partial<Record<StyleEnumKind, Aliases>> = {
|
|
|
145
203
|
triangle: ["triangledown"],
|
|
146
204
|
none: ["text"],
|
|
147
205
|
},
|
|
148
|
-
|
|
206
|
+
// curve and inv_curve: an arc at the end, bulging toward the node and away from it
|
|
207
|
+
arrow: { inverted: ["inv-triangle"], square: ["box"], "other:curve": ["curve"], "other:inv-curve": ["inv-curve"] },
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Cytoscape.js's compound arrows (https://js.cytoscape.org/#style/edge-arrow): a triangle with a bar behind it, with a
|
|
212
|
+
* thin bar across the line behind it, a dot with a triangle behind it and its short chevron each keep their own name;
|
|
213
|
+
* its triangle-backcurve is a triangle whose back is hollowed out, which is how a vee is drawn.
|
|
214
|
+
*/
|
|
215
|
+
const CYJS: Partial<Record<StyleEnumKind, Aliases>> = {
|
|
216
|
+
arrow: {
|
|
217
|
+
"other:triangle-tee": ["triangle-tee"],
|
|
218
|
+
"other:triangle-cross": ["triangle-cross"],
|
|
219
|
+
"other:circle-triangle": ["circle-triangle"],
|
|
220
|
+
// a vee two thirds as long as its triangle (0.2 of the arrow width against 0.3)
|
|
221
|
+
"other:chevron": ["chevron"],
|
|
222
|
+
vee: ["triangle-backcurve"],
|
|
223
|
+
},
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Graphviz's curve and icurve (lib/common/arrows.c arrow_type_curve): a stem to the tip with an arc across it, bulging
|
|
228
|
+
* toward the tip and, inverted, away from it -- vis-network's curve and inv_curve.
|
|
229
|
+
*/
|
|
230
|
+
const GRAPHVIZ: Partial<Record<StyleEnumKind, Aliases>> = {
|
|
231
|
+
arrow: { "other:curve": ["curve"], "other:inv-curve": ["icurve"] },
|
|
149
232
|
};
|
|
150
233
|
|
|
151
234
|
/** Per-dialect overrides; a dialect not listed reads the common table alone. */
|
|
152
|
-
const OVERRIDES: ReadonlyMap<string, Partial<Record<StyleEnumKind, Aliases>>> = new Map([
|
|
235
|
+
const OVERRIDES: ReadonlyMap<string, Partial<Record<StyleEnumKind, Aliases>>> = new Map([
|
|
236
|
+
["vis", VIS],
|
|
237
|
+
["graphviz", GRAPHVIZ],
|
|
238
|
+
["cytoscape-js", CYJS],
|
|
239
|
+
]);
|
|
153
240
|
|
|
154
241
|
const OPEN: ReadonlySet<StyleEnumKind> = new Set<StyleEnumKind>(["shape", "borderStyle", "lineStyle", "arrow"]);
|
|
155
242
|
|
|
@@ -173,8 +260,12 @@ const COMMON: ReadonlyMap<StyleEnumKind, ReadonlyMap<string, string>> = new Map(
|
|
|
173
260
|
["borderStyle", lookup(BORDER_STYLES)],
|
|
174
261
|
["lineStyle", lookup(LINE_STYLES)],
|
|
175
262
|
["arrow", lookup(ARROWS)],
|
|
263
|
+
["arrowSide", lookup(ARROW_SIDES)],
|
|
176
264
|
["weight", lookup(WEIGHTS)],
|
|
177
265
|
["position", lookup(POSITIONS)],
|
|
266
|
+
["labelFit", lookup(LABEL_FITS)],
|
|
267
|
+
["borderPosition", lookup(BORDER_POSITIONS)],
|
|
268
|
+
["textAlign", lookup(TEXT_ALIGNS)],
|
|
178
269
|
]);
|
|
179
270
|
|
|
180
271
|
const DIALECT: ReadonlyMap<string, ReadonlyMap<StyleEnumKind, ReadonlyMap<string, string>>> = new Map(
|
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
* scheme knows no names at all.
|
|
13
13
|
* - `transparent`, `none` and `invis` are `#fffffe` with alpha 0, whatever the scheme.
|
|
14
14
|
* - An unknown color is drawn BLACK.
|
|
15
|
+
* - A bare name SVG knows (`gray`, `purple`, `green`, `maroon`, `crimson` ...), not in a `/scheme/` and with no
|
|
16
|
+
* leading blanks, is drawn as the SVG color, whatever the scheme: Graphviz's SVG output writes such a name as it is
|
|
17
|
+
* (`fill="gray"`, gvrender_resolve_color) and every SVG reader draws it as CSS does, so `gray` is #808080 there,
|
|
18
|
+
* not X11's #c0c0c0. The SVG drawing is the one we read Graphviz by.
|
|
19
|
+
* - An outline or font color list whose first entry is such a name is written whole (`stroke="red:blue"`: Graphviz
|
|
20
|
+
* resolves the first entry in place and puts the `:` back), which no SVG reader can draw: an outline is not drawn
|
|
21
|
+
* and a text is black, SVG's own default.
|
|
15
22
|
* - A color list (`red:blue`, `red;0.3:blue`): an outline or a font color draws the text before the first `:` as one
|
|
16
23
|
* color, so `red:blue` is red and `red;0.3:blue` is black (`red;0.3` is not a color). A fill draws a gradient and
|
|
17
24
|
* an edge draws one line per color; both start with the first entry's color, its `;fraction` dropped. A value
|
|
@@ -24,7 +31,7 @@ import { BREWER_SCHEMES, CSS_COLORS, X11_COLORS } from "./color-tables.js";
|
|
|
24
31
|
* How Graphviz draws a color value, which decides how a color list is read.
|
|
25
32
|
* @category Styles
|
|
26
33
|
*/
|
|
27
|
-
export type GraphvizColorUse = "line" | "fill" | "edge";
|
|
34
|
+
export type GraphvizColorUse = "line" | "text" | "fill" | "edge";
|
|
28
35
|
|
|
29
36
|
/**
|
|
30
37
|
* A resolved Graphviz color, with how it was read.
|
|
@@ -159,30 +166,84 @@ function schemeColor(name: string, scheme: string): string | undefined {
|
|
|
159
166
|
return colors !== undefined && index >= 1 ? colors[index - 1] : undefined;
|
|
160
167
|
}
|
|
161
168
|
|
|
169
|
+
/**
|
|
170
|
+
* A color list whose first color is a bare SVG name, as Graphviz's SVG output draws it for a pen: no outline, black
|
|
171
|
+
* text.
|
|
172
|
+
* @param use - `line` or `text`
|
|
173
|
+
* @returns the color
|
|
174
|
+
*/
|
|
175
|
+
function svgPenList(use: GraphvizColorUse): GraphvizColor {
|
|
176
|
+
return use === "line"
|
|
177
|
+
? { hex: "#fffffe", alpha: 0, unknown: false, list: null }
|
|
178
|
+
: { hex: "#000000", alpha: 1, unknown: false, list: null };
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* A color list entry without its `;fraction`.
|
|
183
|
+
* @param text - the entry
|
|
184
|
+
* @returns the color part
|
|
185
|
+
*/
|
|
186
|
+
function beforeSemicolon(text: string): string {
|
|
187
|
+
const semi = text.indexOf(";");
|
|
188
|
+
return semi >= 0 ? text.slice(0, semi) : text;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* One Graphviz color, read from its scheme (X11 when none), a bare SVG name first when `svgNames` says so.
|
|
193
|
+
* @param raw - the whole value
|
|
194
|
+
* @param text - the color, without the list after it
|
|
195
|
+
* @param scheme - the object's `colorscheme`, or null
|
|
196
|
+
* @param svgNames - whether a bare SVG name is drawn as SVG's color
|
|
197
|
+
* @returns the color, or null when it is unknown
|
|
198
|
+
*/
|
|
199
|
+
function resolveColorText(
|
|
200
|
+
raw: string,
|
|
201
|
+
text: string,
|
|
202
|
+
scheme: string | null,
|
|
203
|
+
svgNames: boolean,
|
|
204
|
+
): { hex: string; alpha: number } | null {
|
|
205
|
+
const svgName = svgNames && raw.startsWith(text) ? CSS_COLORS.get(text.toLowerCase()) : undefined;
|
|
206
|
+
if (svgName !== undefined) {
|
|
207
|
+
return { hex: svgName, alpha: 1 };
|
|
208
|
+
}
|
|
209
|
+
if (text === "") {
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
const sc = scheme === null || scheme.trim() === "" ? "x11" : scheme.toLowerCase();
|
|
213
|
+
return resolveOne(text, sc);
|
|
214
|
+
}
|
|
215
|
+
|
|
162
216
|
/**
|
|
163
217
|
* Resolves a Graphviz color value the way Graphviz draws it for a use; an unknown color is black.
|
|
164
218
|
* @param raw - the value, at most 256 characters
|
|
165
219
|
* @param scheme - the object's `colorscheme`, or null
|
|
166
|
-
* @param use - an outline
|
|
220
|
+
* @param use - an outline color (`line`), a font color (`text`), a fill, or an edge's line color
|
|
221
|
+
* @param svgNames - whether a bare SVG name is drawn as SVG's color, as Graphviz's SVG output draws it (false: as
|
|
222
|
+
* every other Graphviz output draws it)
|
|
167
223
|
* @returns the color and how it was read
|
|
168
224
|
* @category Styles
|
|
169
225
|
*/
|
|
170
|
-
export function graphvizColor(
|
|
226
|
+
export function graphvizColor(
|
|
227
|
+
raw: string,
|
|
228
|
+
scheme: string | null,
|
|
229
|
+
use: GraphvizColorUse,
|
|
230
|
+
svgNames = true,
|
|
231
|
+
): GraphvizColor {
|
|
171
232
|
let text = raw.replace(/^[ \t\r\n]+/, "");
|
|
172
233
|
let list: GraphvizColor["list"] = null;
|
|
173
234
|
const colon = text.indexOf(":");
|
|
235
|
+
const pen = use === "line" || use === "text";
|
|
174
236
|
if (colon >= 0) {
|
|
175
237
|
text = text.slice(0, colon);
|
|
176
|
-
if (
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
238
|
+
if (svgNames && pen && raw.startsWith(text) && CSS_COLORS.has(text.toLowerCase())) {
|
|
239
|
+
return svgPenList(use);
|
|
240
|
+
}
|
|
241
|
+
if (!pen) {
|
|
242
|
+
text = beforeSemicolon(text);
|
|
181
243
|
list = use === "fill" ? "gradient" : "lines";
|
|
182
244
|
}
|
|
183
245
|
}
|
|
184
|
-
const
|
|
185
|
-
const resolved = text === "" ? null : resolveOne(text, sc);
|
|
246
|
+
const resolved = resolveColorText(raw, text, scheme, svgNames);
|
|
186
247
|
return resolved === null
|
|
187
248
|
? { hex: "#000000", alpha: 1, unknown: true, list }
|
|
188
249
|
: { hex: resolved.hex, alpha: resolved.alpha, unknown: false, list };
|
|
@@ -82,6 +82,25 @@ export function canonNumber(raw: unknown, site: CanonSite, factor = 1): number |
|
|
|
82
82
|
return num6(scaled);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
/**
|
|
86
|
+
* A signed number (an offset): any finite value within the largest a style number may be, either way.
|
|
87
|
+
* @param raw - the file's value
|
|
88
|
+
* @param site - where it was read
|
|
89
|
+
* @returns the canonical number, or null (noted)
|
|
90
|
+
* @category Styles
|
|
91
|
+
*/
|
|
92
|
+
export function canonSigned(raw: unknown, site: CanonSite): number | null {
|
|
93
|
+
const value = finite(raw, site);
|
|
94
|
+
if (value === null) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
if (Math.abs(value) > MAX_STYLE_NUMBER) {
|
|
98
|
+
noteAt(site, STYLE_ISSUE.BAD_VALUE, typeof raw === "string" ? raw : String(raw));
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
return num6(value);
|
|
102
|
+
}
|
|
103
|
+
|
|
85
104
|
/**
|
|
86
105
|
* An opacity from 0 to 1. Cytoscape desktop states opacities from 0 to 255 and is divided by 255; every other
|
|
87
106
|
* dialect states 0 to 1. A value outside the dialect's range is null with a `W_STYLE_BAD_VALUE` note.
|
package/src/styles/canon/text.ts
CHANGED
|
@@ -51,7 +51,8 @@ export interface DotEscapeNames {
|
|
|
51
51
|
/**
|
|
52
52
|
* The text a DOT label draws, in Graphviz's two passes: first `\N`, `\G`, `\E`, `\T` and `\H` are replaced by the
|
|
53
53
|
* names and every other backslash pair is kept; then `\n`, `\l` and `\r` end a line (a final one adds no empty line)
|
|
54
|
-
* and any other escaped character stands for itself. So a node name holding `\n` breaks the line.
|
|
54
|
+
* and any other escaped character stands for itself. So a node name holding `\n` breaks the line. Between the
|
|
55
|
+
* two, HTML entities (`&`, `β`) are decoded, as Graphviz's `htmlEntityUTF8` does for a plain label.
|
|
55
56
|
* @param text - the label as the file gives it
|
|
56
57
|
* @param names - the names to substitute
|
|
57
58
|
* @param site - where it was read, for the budget
|
|
@@ -62,6 +63,20 @@ export function dotLabelText(text: string, names: DotEscapeNames, site?: CanonSi
|
|
|
62
63
|
if (site !== undefined) {
|
|
63
64
|
spendAt(site, text.length);
|
|
64
65
|
}
|
|
66
|
+
const out = replaceEscapes(decodeEntities(substituteNames(text, names)), (e) =>
|
|
67
|
+
e === "n" || e === "l" || e === "r" ? "\n" : e,
|
|
68
|
+
);
|
|
69
|
+
return out.endsWith("\n") ? out.slice(0, -1) : out;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Graphviz's first pass over a label: `\N`, `\G`, `\E`, `\T` and `\H` replaced by the names, every other
|
|
74
|
+
* backslash pair kept.
|
|
75
|
+
* @param text - the label as the file gives it
|
|
76
|
+
* @param names - the names to substitute
|
|
77
|
+
* @returns the text
|
|
78
|
+
*/
|
|
79
|
+
function substituteNames(text: string, names: DotEscapeNames): string {
|
|
65
80
|
const subs: Readonly<Record<string, string | undefined>> = {
|
|
66
81
|
N: names.node,
|
|
67
82
|
G: names.graph,
|
|
@@ -69,9 +84,34 @@ export function dotLabelText(text: string, names: DotEscapeNames, site?: CanonSi
|
|
|
69
84
|
T: names.tail,
|
|
70
85
|
H: names.head,
|
|
71
86
|
};
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
87
|
+
return replaceEscapes(text, (e) => (Object.hasOwn(subs, e) ? subs[e] : undefined) ?? `\\${e}`);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* How a DOT label's lines line up: each line ended by `\l` is drawn against the left, by `\r` against the right, and
|
|
92
|
+
* any other line centered (Graphviz's second pass, after `\N` and the other names are substituted). graphty lines
|
|
93
|
+
* up a label's lines one way, so the way most of its lines take wins, the first line's on a tie.
|
|
94
|
+
* @param text - the label as the file gives it
|
|
95
|
+
* @param names - the names to substitute
|
|
96
|
+
* @returns `left` or `right`, or null for a centered label
|
|
97
|
+
* @category Styles
|
|
98
|
+
*/
|
|
99
|
+
export function dotLabelAlign(text: string, names: DotEscapeNames): "left" | "right" | null {
|
|
100
|
+
// each line's end, in order: "n" centered, "l" left, "r" right; text after the last end is a centered line
|
|
101
|
+
const parts = replaceEscapes(substituteNames(text, names), (e) =>
|
|
102
|
+
e === "n" || e === "l" || e === "r" ? `\u0000${e}\u0000` : "x",
|
|
103
|
+
).split("\u0000");
|
|
104
|
+
const ends = parts.filter((_, i) => i % 2 === 1);
|
|
105
|
+
if (parts.at(-1) !== "") {
|
|
106
|
+
ends.push("n");
|
|
107
|
+
}
|
|
108
|
+
const count = (end: string): number => ends.filter((e) => e === end).length;
|
|
109
|
+
const best = ["l", "r", "n"].filter((end) => count(end) === Math.max(count("l"), count("r"), count("n")));
|
|
110
|
+
const winner = best.length > 1 ? (ends.find((e) => best.includes(e)) ?? "n") : best[0];
|
|
111
|
+
if (winner === "l") {
|
|
112
|
+
return "left";
|
|
113
|
+
}
|
|
114
|
+
return winner === "r" ? "right" : null;
|
|
75
115
|
}
|
|
76
116
|
|
|
77
117
|
/**
|
|
@@ -126,7 +166,8 @@ function entity(body: string): string | undefined {
|
|
|
126
166
|
|
|
127
167
|
/**
|
|
128
168
|
* The text an HTML-like label shows: tags dropped, `<br/>` as a line break, entities decoded, outer blanks trimmed.
|
|
129
|
-
*
|
|
169
|
+
* A table's rows are lines and the cells of a row are parted by a space, as Graphviz lays them out; text in a table
|
|
170
|
+
* outside its cells is not drawn. Notes `W_STYLE_HTML_LABEL` at the site, since the markup is lost.
|
|
130
171
|
* @param html - the label, with or without its outer `<` and `>`
|
|
131
172
|
* @param site - where it was read
|
|
132
173
|
* @returns the label's text
|
|
@@ -135,8 +176,33 @@ function entity(body: string): string | undefined {
|
|
|
135
176
|
export function htmlLabelText(html: string, site: CanonSite): string {
|
|
136
177
|
spendAt(site, html.length);
|
|
137
178
|
noteAt(site, STYLE_ISSUE.HTML_LABEL, html);
|
|
179
|
+
return htmlLabelSpans(html)
|
|
180
|
+
.map((s) => s.text)
|
|
181
|
+
.join("")
|
|
182
|
+
.trim();
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/** A piece of an HTML-like label's text with the font tags open around it, outermost first. */
|
|
186
|
+
export interface HtmlLabelSpan {
|
|
187
|
+
/** The text, entities decoded. */
|
|
188
|
+
readonly text: string;
|
|
189
|
+
/** The open font tags (`<B>`, `<FONT COLOR="red">`, ...) as written, outermost first. */
|
|
190
|
+
readonly tags: readonly string[];
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/** The tags that change the font of the text inside them. */
|
|
194
|
+
const FONT_TAGS = /^<(\/?)(b|i|u|o|s|sub|sup|font)\b/i;
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* The pieces of text an HTML-like label shows, untrimmed, each with the font tags around it (the text
|
|
198
|
+
* {@link htmlLabelText} joins and trims).
|
|
199
|
+
* @param html - the label, with or without its outer `<` and `>`
|
|
200
|
+
* @returns the pieces in order
|
|
201
|
+
* @category Styles
|
|
202
|
+
*/
|
|
203
|
+
export function htmlLabelSpans(html: string): HtmlLabelSpan[] {
|
|
138
204
|
const body = html.startsWith("<") && html.endsWith(">") ? html.slice(1, -1) : html;
|
|
139
|
-
|
|
205
|
+
const s: SpanState = { spans: [], tags: [], out: "", open: [] };
|
|
140
206
|
let i = 0;
|
|
141
207
|
while (i < body.length) {
|
|
142
208
|
const c = body[i];
|
|
@@ -145,20 +211,125 @@ export function htmlLabelText(html: string, site: CanonSite): string {
|
|
|
145
211
|
if (close < 0) {
|
|
146
212
|
break;
|
|
147
213
|
}
|
|
148
|
-
|
|
149
|
-
out += "\n";
|
|
150
|
-
}
|
|
214
|
+
readTag(s, body, i, close);
|
|
151
215
|
i = close + 1;
|
|
152
|
-
} else if (c === "&") {
|
|
153
|
-
const [text, next] = entityAt(body, i);
|
|
154
|
-
out += text;
|
|
155
|
-
i = next;
|
|
156
216
|
} else {
|
|
157
|
-
|
|
158
|
-
|
|
217
|
+
const [text, next]: [string, number] = c === "&" ? entityAt(body, i) : [c, i + 1];
|
|
218
|
+
emitSpan(s, s.open.at(-1) === "table" ? "" : text);
|
|
219
|
+
i = next;
|
|
159
220
|
}
|
|
160
221
|
}
|
|
161
|
-
return
|
|
222
|
+
return s.spans;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/** What {@link htmlLabelSpans} has read so far. */
|
|
226
|
+
interface SpanState {
|
|
227
|
+
/** the pieces so far */
|
|
228
|
+
spans: HtmlLabelSpan[];
|
|
229
|
+
/** the font tags open now; a new array whenever they change, so a piece's tags are compared by identity */
|
|
230
|
+
tags: string[];
|
|
231
|
+
/** the text so far */
|
|
232
|
+
out: string;
|
|
233
|
+
/** the open tables and cells, innermost last: text is drawn outside every table or inside a cell */
|
|
234
|
+
open: ("table" | "td")[];
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Adds text to the last piece when its tags are the ones open, else as a new piece.
|
|
239
|
+
* @param s - the reading so far, changed in place
|
|
240
|
+
* @param text - the text
|
|
241
|
+
*/
|
|
242
|
+
function emitSpan(s: SpanState, text: string): void {
|
|
243
|
+
s.out += text;
|
|
244
|
+
const last = s.spans.at(-1);
|
|
245
|
+
if (last?.tags === s.tags) {
|
|
246
|
+
s.spans[s.spans.length - 1] = { text: last.text + text, tags: s.tags };
|
|
247
|
+
} else if (text !== "") {
|
|
248
|
+
s.spans.push({ text, tags: s.tags });
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Whether the line being read has text on it.
|
|
254
|
+
* @param s - the reading so far
|
|
255
|
+
* @returns whether it has
|
|
256
|
+
*/
|
|
257
|
+
function lineHasText(s: SpanState): boolean {
|
|
258
|
+
return s.out.slice(s.out.lastIndexOf("\n") + 1).trim() !== "";
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* One tag of an HTML-like label: a line break, a table, row or cell, or a font tag.
|
|
263
|
+
* @param s - the reading so far, changed in place
|
|
264
|
+
* @param body - the label
|
|
265
|
+
* @param i - the offset of the tag's `<`
|
|
266
|
+
* @param close - the offset of its `>`
|
|
267
|
+
*/
|
|
268
|
+
function readTag(s: SpanState, body: string, i: number, close: number): void {
|
|
269
|
+
const tag = /^<(\/?)(br|table|tr|td)\b/i.exec(body.slice(i, i + 7));
|
|
270
|
+
if (tag !== null) {
|
|
271
|
+
layoutTag(s, tag[2].toLowerCase(), tag[1] === "/");
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const font = FONT_TAGS.exec(body.slice(i, i + 6));
|
|
275
|
+
if (font !== null && font[1] === "/") {
|
|
276
|
+
s.tags = withoutLastTag(s.tags, font[2]);
|
|
277
|
+
} else if (font !== null && body[close - 1] !== "/") {
|
|
278
|
+
s.tags = [...s.tags, body.slice(i, close + 1)];
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* A line break, table, row or cell tag: a break and a row with text before it start a line, a cell with text before
|
|
284
|
+
* it on its line a space.
|
|
285
|
+
* @param s - the reading so far, changed in place
|
|
286
|
+
* @param name - `br`, `table`, `tr` or `td`, in lower case
|
|
287
|
+
* @param closing - whether it is a closing tag
|
|
288
|
+
*/
|
|
289
|
+
function layoutTag(s: SpanState, name: string, closing: boolean): void {
|
|
290
|
+
if (name === "br" || name === "tr") {
|
|
291
|
+
if (name === "br" || (!closing && lineHasText(s))) {
|
|
292
|
+
emitSpan(s, "\n");
|
|
293
|
+
}
|
|
294
|
+
} else if (closing) {
|
|
295
|
+
s.open.pop();
|
|
296
|
+
} else {
|
|
297
|
+
if (name === "td" && lineHasText(s)) {
|
|
298
|
+
emitSpan(s, " ");
|
|
299
|
+
}
|
|
300
|
+
s.open.push(name === "td" ? "td" : "table");
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* The open font tags without the innermost one a closing tag closes.
|
|
306
|
+
* @param tags - the open tags
|
|
307
|
+
* @param name - the closing tag's name
|
|
308
|
+
* @returns the tags left open (the same array when none matched)
|
|
309
|
+
*/
|
|
310
|
+
function withoutLastTag(tags: string[], name: string): string[] {
|
|
311
|
+
const lower = name.toLowerCase();
|
|
312
|
+
let at = tags.length - 1;
|
|
313
|
+
while (at >= 0 && /^<(\w+)/.exec(tags[at])?.[1].toLowerCase() !== lower) {
|
|
314
|
+
at--;
|
|
315
|
+
}
|
|
316
|
+
return at < 0 ? tags : [...tags.slice(0, at), ...tags.slice(at + 1)];
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Every entity of a text decoded; an `&` that starts none is itself.
|
|
321
|
+
* @param text - the text
|
|
322
|
+
* @returns the decoded text
|
|
323
|
+
*/
|
|
324
|
+
function decodeEntities(text: string): string {
|
|
325
|
+
let out = "";
|
|
326
|
+
let i = 0;
|
|
327
|
+
for (let amp = text.indexOf("&"); amp >= 0; amp = text.indexOf("&", i)) {
|
|
328
|
+
const [decoded, next] = entityAt(text, amp);
|
|
329
|
+
out += text.slice(i, amp) + decoded;
|
|
330
|
+
i = next;
|
|
331
|
+
}
|
|
332
|
+
return out + text.slice(i);
|
|
162
333
|
}
|
|
163
334
|
|
|
164
335
|
/**
|
package/src/styles/codes.ts
CHANGED
|
@@ -42,6 +42,8 @@ export const STYLE_ISSUE = Object.freeze({
|
|
|
42
42
|
INHERIT_COLOR: "W_STYLE_INHERIT_COLOR",
|
|
43
43
|
/** A style property the vocabulary has no counterpart for was not carried. */
|
|
44
44
|
NOT_CARRIED: "W_STYLE_NOT_CARRIED",
|
|
45
|
+
/** An annotation of a kind graph-io does not read (a group of annotations); its kinds are the samples. */
|
|
46
|
+
ANNOTATION_SKIPPED: "W_STYLE_ANNOTATION_SKIPPED",
|
|
45
47
|
// ------------------------------------------------ reading declared styles
|
|
46
48
|
/** A declared mapping that cannot be read. */
|
|
47
49
|
BAD_MAPPING: "W_STYLE_BAD_MAPPING",
|