@graphty/graph-io 0.3.48 → 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-C2riR4NT.js → approximations-Bzn3L-je.js} +2 -2
- package/dist/chunks/{approximations-C2riR4NT.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-Cu22ewuS.js → block-iptrlMBb.js} +906 -164
- 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-CV_Bhcyi.js → codes-BE2xir2k.js} +6 -2
- package/dist/chunks/codes-BE2xir2k.js.map +1 -0
- package/dist/chunks/{constants-D0LqcsLJ.js → constants-CKkYLPtt.js} +2 -2
- package/dist/chunks/{constants-D0LqcsLJ.js.map → constants-CKkYLPtt.js.map} +1 -1
- package/dist/chunks/{context-cgmmOxZ2.js → context-C3p0RQxR.js} +5 -4
- package/dist/chunks/{context-cgmmOxZ2.js.map → context-C3p0RQxR.js.map} +1 -1
- 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-BiQsnMTb.js → credentials-DXHx7nwR.js} +16 -14
- package/dist/chunks/credentials-DXHx7nwR.js.map +1 -0
- package/dist/chunks/{cx-export-BEeF6ymo.js → cx-export-Bt6NoqTQ.js} +3 -3
- package/dist/chunks/{cx-export-BEeF6ymo.js.map → cx-export-Bt6NoqTQ.js.map} +1 -1
- package/dist/chunks/descriptor-B28U25x4.js +60 -0
- package/dist/chunks/descriptor-B28U25x4.js.map +1 -0
- package/dist/chunks/{descriptor-BJ-W0Jd-.js → descriptor-DLA5kINx.js} +7 -2
- package/dist/chunks/descriptor-DLA5kINx.js.map +1 -0
- package/dist/chunks/{emit-CD8xnY8s.js → emit-BwHQkZle.js} +1660 -133
- package/dist/chunks/emit-BwHQkZle.js.map +1 -0
- package/dist/chunks/{escape-DH2Egt-l.js → escape-CuCIzNMB.js} +8 -8
- package/dist/chunks/{escape-DH2Egt-l.js.map → escape-CuCIzNMB.js.map} +1 -1
- package/dist/chunks/{export-CZ7VRm4I.js → export-Cha4dRFz.js} +45 -387
- package/dist/chunks/export-Cha4dRFz.js.map +1 -0
- package/dist/chunks/{exporter-Dcw7Ldtq.js → exporter-BP6otMO6.js} +6 -6
- package/dist/chunks/{exporter-Dcw7Ldtq.js.map → exporter-BP6otMO6.js.map} +1 -1
- package/dist/chunks/{exporter-bxxjOrDZ.js → exporter-D2CETOMK.js} +1222 -156
- package/dist/chunks/exporter-D2CETOMK.js.map +1 -0
- package/dist/chunks/{exporter-BIdaoIgh.js → exporter-D9yMtocA.js} +7 -7
- package/dist/chunks/{exporter-BIdaoIgh.js.map → exporter-D9yMtocA.js.map} +1 -1
- package/dist/chunks/{exporter-DtVU80Fa.js → exporter-_jrBTnos.js} +9 -8
- package/dist/chunks/{exporter-DtVU80Fa.js.map → exporter-_jrBTnos.js.map} +1 -1
- package/dist/chunks/{exporter-ChjL5fmP.js → exporter-nDfxIK5D.js} +9 -8
- package/dist/chunks/{exporter-ChjL5fmP.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-CP6YD34u.js → generic-ymWCETAJ.js} +387 -31
- package/dist/chunks/generic-ymWCETAJ.js.map +1 -0
- package/dist/chunks/{importer-e3huMZbm.js → importer-B92x1xY5.js} +14 -10
- package/dist/chunks/importer-B92x1xY5.js.map +1 -0
- package/dist/chunks/{importer-B87_fmVx.js → importer-CT9mJ1nn.js} +326 -84
- package/dist/chunks/importer-CT9mJ1nn.js.map +1 -0
- package/dist/chunks/{importer-CB_zV5_L.js → importer-DaLTjbds.js} +116 -1102
- package/dist/chunks/importer-DaLTjbds.js.map +1 -0
- package/dist/chunks/{importer-DPZDN40-.js → importer-GREKMdIf.js} +25 -17
- package/dist/chunks/importer-GREKMdIf.js.map +1 -0
- package/dist/chunks/{importer-Bji2MeWr.js → importer-PqaaKKnY.js} +13 -10
- package/dist/chunks/{importer-Bji2MeWr.js.map → importer-PqaaKKnY.js.map} +1 -1
- package/dist/chunks/{importer-Cyy6UseH.js → importer-Vn5QvmmJ.js} +66 -13
- package/dist/chunks/importer-Vn5QvmmJ.js.map +1 -0
- package/dist/chunks/{importer-CVT-JyDE.js → importer-vRq4h3j5.js} +1469 -356
- package/dist/chunks/importer-vRq4h3j5.js.map +1 -0
- package/dist/chunks/{input-Ccg9I22A.js → input-CAxt_aV-.js} +4 -4
- package/dist/chunks/{input-Ccg9I22A.js.map → input-CAxt_aV-.js.map} +1 -1
- package/dist/chunks/{json-elements-By172SVq.js → json-elements-Cq76WjnZ.js} +4 -4
- package/dist/chunks/{json-elements-By172SVq.js.map → json-elements-Cq76WjnZ.js.map} +1 -1
- package/dist/chunks/{lexicon-u2SI5xcx.js → lexicon-Clf4QIyl.js} +282 -74
- package/dist/chunks/lexicon-Clf4QIyl.js.map +1 -0
- package/dist/chunks/{ontology-export-BwgMyuF0.js → ontology-export-OMo91mb0.js} +4 -4
- package/dist/chunks/{ontology-export-BwgMyuF0.js.map → ontology-export-OMo91mb0.js.map} +1 -1
- package/dist/chunks/{records-Cgvxz-Vx.js → records-NJiYvekn.js} +2 -2
- package/dist/chunks/{records-Cgvxz-Vx.js.map → records-NJiYvekn.js.map} +1 -1
- package/dist/chunks/{report-CgdsL9Hb.js → report-CwMfYa9J.js} +23 -23
- package/dist/chunks/{report-CgdsL9Hb.js.map → report-CwMfYa9J.js.map} +1 -1
- 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-LkAzsLAu.js → sigv4-EokFic1V.js} +5 -5
- package/dist/chunks/sigv4-EokFic1V.js.map +1 -0
- package/dist/chunks/{styles-CaABMoO1.js → styles-CCs214_3.js} +1237 -138
- 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-Cs1nmrjn.js → styles-yed-UMFdNqze.js} +503 -172
- package/dist/chunks/styles-yed-UMFdNqze.js.map +1 -0
- package/dist/chunks/{text-BuKQVMz2.js → text-ystE2bYi.js} +2 -2
- package/dist/chunks/{text-BuKQVMz2.js.map → text-ystE2bYi.js.map} +1 -1
- package/dist/csv.js +7 -7
- package/dist/cx.js +2 -2
- 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 -12
- package/dist/gexf.js.map +1 -1
- package/dist/gml.js +847 -193
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +232 -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 -6
- 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.js +138 -23
- package/dist/sources-cypher.js.map +1 -1
- package/dist/sources-ndex.js +2 -2
- package/dist/sources-rest.js +16 -6
- package/dist/sources-rest.js.map +1 -1
- 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/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 +117 -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 +1454 -119
- 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 +58 -31
- package/dist/src/formats/gexf/styles.d.ts.map +1 -1
- package/dist/src/formats/gexf/styles.js +848 -225
- 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 +753 -101
- 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 +6 -10
- 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 +692 -161
- 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 +1278 -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 +277 -60
- package/dist/src/formats/xgmml/styles.js.map +1 -1
- package/dist/src/index.d.ts +4 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -3
- 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/sources/builtins.d.ts +1 -1
- package/dist/src/sources/builtins.d.ts.map +1 -1
- package/dist/src/sources/builtins.js +8 -2
- package/dist/src/sources/builtins.js.map +1 -1
- package/dist/src/sources/context.d.ts.map +1 -1
- package/dist/src/sources/context.js +1 -0
- package/dist/src/sources/context.js.map +1 -1
- package/dist/src/sources/cypher/descriptor.d.ts.map +1 -1
- package/dist/src/sources/cypher/descriptor.js +5 -0
- package/dist/src/sources/cypher/descriptor.js.map +1 -1
- package/dist/src/sources/cypher/index.d.ts.map +1 -1
- package/dist/src/sources/cypher/index.js +124 -18
- package/dist/src/sources/cypher/index.js.map +1 -1
- package/dist/src/sources/cypher/params.d.ts +1 -1
- package/dist/src/sources/cypher/params.d.ts.map +1 -1
- package/dist/src/sources/cypher/query-builder.d.ts +17 -0
- package/dist/src/sources/cypher/query-builder.d.ts.map +1 -1
- package/dist/src/sources/cypher/query-builder.js +31 -0
- package/dist/src/sources/cypher/query-builder.js.map +1 -1
- package/dist/src/sources/ids.d.ts +5 -0
- package/dist/src/sources/ids.d.ts.map +1 -1
- package/dist/src/sources/ids.js +5 -0
- package/dist/src/sources/ids.js.map +1 -1
- package/dist/src/sources/params.d.ts +3 -0
- package/dist/src/sources/params.d.ts.map +1 -1
- package/dist/src/sources/rest/descriptor.d.ts.map +1 -1
- package/dist/src/sources/rest/descriptor.js +5 -0
- package/dist/src/sources/rest/descriptor.js.map +1 -1
- package/dist/src/sources/rest/source.d.ts.map +1 -1
- package/dist/src/sources/rest/source.js +15 -0
- package/dist/src/sources/rest/source.js.map +1 -1
- package/dist/src/sources/sigv4.d.ts +5 -3
- package/dist/src/sources/sigv4.d.ts.map +1 -1
- package/dist/src/sources/sigv4.js +6 -4
- package/dist/src/sources/sigv4.js.map +1 -1
- 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/types.d.ts +31 -0
- package/dist/src/sources/types.d.ts.map +1 -1
- 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 +81 -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 +1015 -79
- 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 +3 -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 +202 -9
- 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 +44 -1
- package/dist/src/styles/cyjs/mappers.d.ts.map +1 -1
- package/dist/src/styles/cyjs/mappers.js +461 -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 +156 -48
- package/dist/src/styles/cytoscape/emit.js.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.d.ts +91 -3
- package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.js +387 -77
- 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 +42 -2
- package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/resolve.js +623 -17
- package/dist/src/styles/cytoscape/resolve.js.map +1 -1
- package/dist/src/styles/defaults.d.ts +46 -26
- package/dist/src/styles/defaults.d.ts.map +1 -1
- package/dist/src/styles/defaults.js +308 -71
- 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/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 +6 -1
- 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 +11 -0
- package/dist/src/styles/plan/resolve.d.ts.map +1 -1
- package/dist/src/styles/plan/resolve.js +40 -4
- 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 +622 -6
- 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 +203 -0
- package/dist/src/styles/vocabulary.js.map +1 -1
- package/dist/styles.js +30 -239
- package/dist/styles.js.map +1 -1
- package/dist/xgmml.js +3 -3
- package/package.json +27 -7
- package/src/formats/cx/importer.ts +6 -1
- package/src/formats/cx/styles.ts +143 -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 +1654 -153
- 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 +1099 -245
- 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 +851 -109
- package/src/formats/graphml/styles-plain.ts +6 -15
- package/src/formats/graphml/styles-yed.ts +762 -173
- 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 +1381 -133
- package/src/formats/pajek/syntax.ts +27 -2
- package/src/formats/xgmml/emit.ts +73 -5
- package/src/formats/xgmml/styles.ts +330 -71
- package/src/index.ts +5 -1
- 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/sources/builtins.ts +8 -1
- package/src/sources/context.ts +1 -0
- package/src/sources/cypher/descriptor.ts +7 -1
- package/src/sources/cypher/index.ts +148 -18
- package/src/sources/cypher/params.ts +1 -1
- package/src/sources/cypher/query-builder.ts +33 -0
- package/src/sources/ids.ts +6 -0
- package/src/sources/params.ts +3 -0
- package/src/sources/rest/descriptor.ts +5 -0
- package/src/sources/rest/source.ts +16 -0
- package/src/sources/sigv4.ts +6 -4
- 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/types.ts +35 -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 +98 -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 +1160 -84
- package/src/styles/cyjs/defaults-table.ts +3 -0
- package/src/styles/cyjs/emit.ts +233 -13
- package/src/styles/cyjs/face.ts +372 -0
- package/src/styles/cyjs/mappers.ts +492 -27
- package/src/styles/cyjs/routes.ts +432 -0
- package/src/styles/cytoscape/charts.ts +684 -0
- package/src/styles/cytoscape/emit.ts +170 -48
- package/src/styles/cytoscape/lexicon.ts +431 -78
- package/src/styles/cytoscape/mappings.ts +108 -0
- package/src/styles/cytoscape/resolve.ts +741 -17
- package/src/styles/defaults.ts +417 -108
- package/src/styles/index.ts +5 -0
- package/src/styles/internal.ts +1 -0
- package/src/styles/io/generic.ts +79 -23
- package/src/styles/io/round-trip.ts +202 -0
- package/src/styles/io/writer.ts +6 -1
- 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 +47 -4
- package/src/styles/slots.ts +25 -0
- package/src/styles/types.ts +633 -5
- package/src/styles/vocabulary.ts +211 -2
- package/dist/chunks/block-Cu22ewuS.js.map +0 -1
- package/dist/chunks/choose-Cdx6Enl2.js +0 -57
- package/dist/chunks/choose-Cdx6Enl2.js.map +0 -1
- package/dist/chunks/codes-CV_Bhcyi.js.map +0 -1
- package/dist/chunks/convert-BcQ8_jMo.js.map +0 -1
- package/dist/chunks/credentials-BiQsnMTb.js.map +0 -1
- package/dist/chunks/descriptor-BJ-W0Jd-.js.map +0 -1
- package/dist/chunks/emit-CD8xnY8s.js.map +0 -1
- package/dist/chunks/export-CZ7VRm4I.js.map +0 -1
- package/dist/chunks/exporter-bxxjOrDZ.js.map +0 -1
- package/dist/chunks/format-BMS-1Nxb.js +0 -64
- package/dist/chunks/format-BMS-1Nxb.js.map +0 -1
- package/dist/chunks/generic-CP6YD34u.js.map +0 -1
- package/dist/chunks/importer-B87_fmVx.js.map +0 -1
- package/dist/chunks/importer-CB_zV5_L.js.map +0 -1
- package/dist/chunks/importer-CVT-JyDE.js.map +0 -1
- package/dist/chunks/importer-Cyy6UseH.js.map +0 -1
- package/dist/chunks/importer-DPZDN40-.js.map +0 -1
- package/dist/chunks/importer-e3huMZbm.js.map +0 -1
- package/dist/chunks/lexicon-u2SI5xcx.js.map +0 -1
- package/dist/chunks/sigv4-LkAzsLAu.js.map +0 -1
- package/dist/chunks/styles-CaABMoO1.js.map +0 -1
- package/dist/chunks/styles-P_gmFAOi.js +0 -770
- package/dist/chunks/styles-P_gmFAOi.js.map +0 -1
- package/dist/chunks/styles-yed-Cs1nmrjn.js.map +0 -1
- package/dist/chunks/writer-DvHTl36J.js +0 -449
- package/dist/chunks/writer-DvHTl36J.js.map +0 -1
|
@@ -0,0 +1,179 @@
|
|
|
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
|
+
import { flattenCubic } from "../../styles/canon/bends.js";
|
|
11
|
+
import { num6 } from "../../styles/canon/number.js";
|
|
12
|
+
/** Graphviz's `PORT_LABEL_DISTANCE`, in points. */
|
|
13
|
+
const PORT_LABEL_DISTANCE = 10;
|
|
14
|
+
/** Graphviz's `PORT_LABEL_ANGLE`, in degrees. */
|
|
15
|
+
const PORT_LABEL_ANGLE = -25;
|
|
16
|
+
/** Graphviz's default node size, in inches. */
|
|
17
|
+
const DEFAULT_SIZE = { w: 0.75, h: 0.5 };
|
|
18
|
+
/**
|
|
19
|
+
* Reads an edge's stored label places and its head and tail label places as offsets.
|
|
20
|
+
* @param snapshot - the graph
|
|
21
|
+
* @param cx - the graph's label place context
|
|
22
|
+
* @param e - the edge
|
|
23
|
+
* @param get - the edge's attributes
|
|
24
|
+
* @param put - receives the values
|
|
25
|
+
*/
|
|
26
|
+
export function readLabelPlaces(snapshot, cx, e, get, put) {
|
|
27
|
+
const s = snapshot.edgeSource(e);
|
|
28
|
+
const t = snapshot.edgeTarget(e);
|
|
29
|
+
const [source, target] = [cx.center(s), cx.center(t)];
|
|
30
|
+
if (source === null || target === null || s === t) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const route = edgeRoute(source, target, get("pos"));
|
|
34
|
+
const lp = route.start === null ? null : point(get("lp"));
|
|
35
|
+
if (lp !== null && get("label") !== null) {
|
|
36
|
+
const mid = routeMiddle(route.points);
|
|
37
|
+
put("labelOffsetX", num6(lp[0] - mid[0]));
|
|
38
|
+
put("labelOffsetY", num6(mid[1] - lp[1]));
|
|
39
|
+
}
|
|
40
|
+
readEndLabel(cx, route, { node: t, at: target, other: source }, "head", get, put);
|
|
41
|
+
readEndLabel(cx, route, { node: s, at: source, other: target }, "tail", get, put);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Reads one end's label place as an offset from where its line meets its node.
|
|
45
|
+
* @param cx - the graph's label place context
|
|
46
|
+
* @param route - the edge's route
|
|
47
|
+
* @param end - the end's node and the two centers
|
|
48
|
+
* @param which - which end
|
|
49
|
+
* @param get - the edge's attributes
|
|
50
|
+
* @param put - receives the values
|
|
51
|
+
*/
|
|
52
|
+
function readEndLabel(cx, route, end, which, get, put) {
|
|
53
|
+
if (get(`${which}label`) === null) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const head = which === "head";
|
|
57
|
+
const tip = (head ? route.end : route.start) ?? boundary(cx, end.node, end.at, end.other);
|
|
58
|
+
// the nearest route point back from the end that is not the end itself (a spline with no arrow ends at it);
|
|
59
|
+
// the route's last point is the node's center, past the end
|
|
60
|
+
const back = head ? route.points.slice(0, -1).reverse() : route.points.slice(1);
|
|
61
|
+
const toward = back.find((p) => Math.hypot(p[0] - tip[0], p[1] - tip[1]) > 1e-6) ?? end.other;
|
|
62
|
+
const stored = route.start === null ? null : point(get(`${which}_lp`));
|
|
63
|
+
const at = stored ?? portLabel(get, tip, toward);
|
|
64
|
+
if (at !== null) {
|
|
65
|
+
const prefix = head ? "target" : "source";
|
|
66
|
+
put(`${prefix}LabelOffset`, 0);
|
|
67
|
+
put(`${prefix}LabelOffsetX`, num6(at[0] - tip[0]));
|
|
68
|
+
put(`${prefix}LabelOffsetY`, num6(tip[1] - at[1]));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Where Graphviz's `place_portlabel` puts an end label's center: only when the edge's `labelangle` or
|
|
73
|
+
* `labeldistance` is not its default.
|
|
74
|
+
* @param get - the edge's attributes
|
|
75
|
+
* @param tip - the end of the line
|
|
76
|
+
* @param toward - a point back along the line from the end
|
|
77
|
+
* @returns the center, or null when Graphviz places the label as an external label
|
|
78
|
+
*/
|
|
79
|
+
function portLabel(get, tip, toward) {
|
|
80
|
+
const turn = finite(get("labelangle"), PORT_LABEL_ANGLE, -180);
|
|
81
|
+
const distance = finite(get("labeldistance"), 1, 0);
|
|
82
|
+
if (turn === PORT_LABEL_ANGLE && distance === 1) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
const angle = Math.atan2(toward[1] - tip[1], toward[0] - tip[0]) + (turn * Math.PI) / 180;
|
|
86
|
+
const dist = PORT_LABEL_DISTANCE * distance;
|
|
87
|
+
return [tip[0] + dist * Math.cos(angle), tip[1] + dist * Math.sin(angle)];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* A number attribute as Graphviz's `late_double` reads it: the default when unset or not a number, at least `low`.
|
|
91
|
+
* @param raw - the value
|
|
92
|
+
* @param fallback - the default
|
|
93
|
+
* @param low - the least value
|
|
94
|
+
* @returns the number
|
|
95
|
+
*/
|
|
96
|
+
function finite(raw, fallback, low) {
|
|
97
|
+
const v = raw === null || raw.trim() === "" ? Number.NaN : Number(raw);
|
|
98
|
+
return Number.isFinite(v) ? Math.max(low, v) : fallback;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* An "x,y" point (a trailing `!` allowed).
|
|
102
|
+
* @param raw - the text
|
|
103
|
+
* @returns the point, or null
|
|
104
|
+
*/
|
|
105
|
+
function point(raw) {
|
|
106
|
+
const parts = (raw ?? "").replace(/!$/, "").split(",").map(Number);
|
|
107
|
+
return parts.length >= 2 && Number.isFinite(parts[0]) && Number.isFinite(parts[1]) ? [parts[0], parts[1]] : null;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The route an edge is drawn along: its stored spline's points (flattened) between the two centers, and the ends of
|
|
111
|
+
* its line where `pos` gives arrow points (`s,` / `e,`) or its spline's own ends.
|
|
112
|
+
* @param source - the source's center
|
|
113
|
+
* @param target - the target's center
|
|
114
|
+
* @param pos - the edge's `pos`
|
|
115
|
+
* @returns the route
|
|
116
|
+
*/
|
|
117
|
+
function edgeRoute(source, target, pos) {
|
|
118
|
+
const tokens = (pos ?? "").split(";")[0].trim().split(/\s+/).filter(Boolean);
|
|
119
|
+
const marked = (flag) => {
|
|
120
|
+
const token = tokens.find((x) => x.startsWith(`${flag},`));
|
|
121
|
+
return token === undefined ? null : point(token.slice(2));
|
|
122
|
+
};
|
|
123
|
+
const controls = tokens.filter((x) => !/^[es],/.test(x)).map((x) => point(x));
|
|
124
|
+
const flat = controls.every((p) => p !== null) && controls.length >= 4 ? flattenCubic(controls) : null;
|
|
125
|
+
if (flat === null) {
|
|
126
|
+
return { points: [source, target], start: null, end: null };
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
points: [source, ...flat, target],
|
|
130
|
+
start: marked("s") ?? flat[0],
|
|
131
|
+
end: marked("e") ?? flat.at(-1) ?? null,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* The point halfway along a route.
|
|
136
|
+
* @param points - the route
|
|
137
|
+
* @returns the point
|
|
138
|
+
*/
|
|
139
|
+
function routeMiddle(points) {
|
|
140
|
+
// ponytail: halfway by length; graphty puts a bent edge's label at its middle segment, close to it
|
|
141
|
+
const lengths = points.slice(1).map((p, i) => Math.hypot(p[0] - points[i][0], p[1] - points[i][1]));
|
|
142
|
+
let left = lengths.reduce((a, b) => a + b, 0) / 2;
|
|
143
|
+
for (let i = 0; i < lengths.length; i++) {
|
|
144
|
+
if (left <= lengths[i] && lengths[i] > 0) {
|
|
145
|
+
const f = left / lengths[i];
|
|
146
|
+
return [
|
|
147
|
+
points[i][0] + f * (points[i + 1][0] - points[i][0]),
|
|
148
|
+
points[i][1] + f * (points[i + 1][1] - points[i][1]),
|
|
149
|
+
];
|
|
150
|
+
}
|
|
151
|
+
left -= lengths[i];
|
|
152
|
+
}
|
|
153
|
+
return points[0];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Where the straight line from a node's center toward a point leaves the node, the node taken as the ellipse of its
|
|
157
|
+
* `width` and `height`.
|
|
158
|
+
* @param cx - the label place context
|
|
159
|
+
* @param n - the node
|
|
160
|
+
* @param center - its center
|
|
161
|
+
* @param toward - the point
|
|
162
|
+
* @returns the point on its outline
|
|
163
|
+
*/
|
|
164
|
+
function boundary(cx, n, center, toward) {
|
|
165
|
+
// ponytail: every shape taken as its ellipse; exact for the circles and ellipses the end labels sit on
|
|
166
|
+
const inch = (name, fallback) => {
|
|
167
|
+
const v = Number(cx.node(n, name) ?? Number.NaN);
|
|
168
|
+
return (Number.isFinite(v) && v >= 0 ? v : fallback) * 72;
|
|
169
|
+
};
|
|
170
|
+
const [rx, ry] = [inch("width", DEFAULT_SIZE.w) / 2, inch("height", DEFAULT_SIZE.h) / 2];
|
|
171
|
+
const [dx, dy] = [toward[0] - center[0], toward[1] - center[1]];
|
|
172
|
+
const len = Math.hypot(dx, dy);
|
|
173
|
+
if (len === 0 || rx === 0 || ry === 0) {
|
|
174
|
+
return center;
|
|
175
|
+
}
|
|
176
|
+
const r = 1 / Math.hypot(dx / len / rx, dy / len / ry);
|
|
177
|
+
return [center[0] + (dx / len) * r, center[1] + (dy / len) * r];
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=label-places.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label-places.js","sourceRoot":"","sources":["../../../../src/formats/dot/label-places.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Graphviz record shapes (`record`, `Mrecord`): the field tree a record label describes and where Graphviz lays
|
|
3
|
+
* each field, its dividers and its text lines out inside the node (lib/common/shapes.c `parse_reclbl`,
|
|
4
|
+
* `size_reclbl`, `resize_reclbl`, `pos_reclbl`, `gen_fields`). Text widths are estimated from DejaVu Sans's advance
|
|
5
|
+
* widths, which the specimen sheets pin; another font is measured as if it were DejaVu Sans.
|
|
6
|
+
*/
|
|
7
|
+
/** Where a record's dividers and text lines go, in points from the node's center, y up. */
|
|
8
|
+
interface RecordLayout {
|
|
9
|
+
/** The node's width and height in points. */
|
|
10
|
+
readonly width: number;
|
|
11
|
+
readonly height: number;
|
|
12
|
+
/** Each divider, from one point to the other. */
|
|
13
|
+
readonly dividers: readonly (readonly [number, number, number, number])[];
|
|
14
|
+
/** Each text line, centered on its point. */
|
|
15
|
+
readonly texts: readonly {
|
|
16
|
+
readonly x: number;
|
|
17
|
+
readonly y: number;
|
|
18
|
+
readonly text: string;
|
|
19
|
+
}[];
|
|
20
|
+
/** Each named field's box center and half size, by port name. */
|
|
21
|
+
readonly ports: ReadonlyMap<string, {
|
|
22
|
+
readonly x: number;
|
|
23
|
+
readonly y: number;
|
|
24
|
+
readonly hw: number;
|
|
25
|
+
readonly hh: number;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A text's width in points at a font size, from DejaVu Sans's advances (any other character: 0.6 em).
|
|
30
|
+
* @param text - the text
|
|
31
|
+
* @param size - the font size
|
|
32
|
+
* @returns the width
|
|
33
|
+
*/
|
|
34
|
+
export declare function textWidth(text: string, size: number): number;
|
|
35
|
+
/**
|
|
36
|
+
* Lays a record out in a node as Graphviz does: the fields at their natural sizes, the node at least that big unless
|
|
37
|
+
* it is `fixedsize`, every field then grown to share the node, its dividers between neighbors and its lines centered,
|
|
38
|
+
* or set in from its side by 8 points when justified left or right.
|
|
39
|
+
* @param label - the record label, before its escapes are applied
|
|
40
|
+
* @param lr - whether the top level lays its fields left to right (true unless `rankdir` is LR or RL)
|
|
41
|
+
* @param width - the node's width in points
|
|
42
|
+
* @param height - its height in points
|
|
43
|
+
* @param fixed - whether the node keeps its size (`fixedsize`)
|
|
44
|
+
* @param fontSize - the font size in points
|
|
45
|
+
* @param text - applies the label escapes to one line
|
|
46
|
+
* @returns the layout
|
|
47
|
+
*/
|
|
48
|
+
export declare function layoutRecord(label: string, lr: boolean, width: number, height: number, fixed: boolean, fontSize: number, text: (line: string) => string): RecordLayout;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../../src/formats/dot/record.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,2FAA2F;AAC3F,UAAU,YAAY;IAClB,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IAC1E,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7F,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,WAAW,CACvB,MAAM,EACN;QAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CACvF,CAAC;CACL;AAmBD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAO5D;AAmMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAC/B,YAAY,CAgDd"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Graphviz record shapes (`record`, `Mrecord`): the field tree a record label describes and where Graphviz lays
|
|
3
|
+
* each field, its dividers and its text lines out inside the node (lib/common/shapes.c `parse_reclbl`,
|
|
4
|
+
* `size_reclbl`, `resize_reclbl`, `pos_reclbl`, `gen_fields`). Text widths are estimated from DejaVu Sans's advance
|
|
5
|
+
* widths, which the specimen sheets pin; another font is measured as if it were DejaVu Sans.
|
|
6
|
+
*/
|
|
7
|
+
/** Graphviz's padding of a field's text: 4 GAP across (8 a side), 2 GAP down (4 above and below). */
|
|
8
|
+
const PAD = { x: 16, y: 8 };
|
|
9
|
+
/** Graphviz's line height as a multiple of the font size. */
|
|
10
|
+
const LINE_SPACING = 1.2;
|
|
11
|
+
/** DejaVu Sans advance widths of the printable ASCII characters, in 1/2048 em, from space (32) to tilde (126). */
|
|
12
|
+
// prettier-ignore
|
|
13
|
+
const DEJAVU_SANS = [
|
|
14
|
+
651, 821, 942, 1716, 1303, 1946, 1597, 563, 799, 799, 1024, 1716, 651, 739, 651, 690,
|
|
15
|
+
1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 690, 690, 1716, 1716, 1716, 1087,
|
|
16
|
+
2048, 1401, 1405, 1430, 1577, 1294, 1178, 1587, 1540, 604, 604, 1343, 1141, 1767, 1532, 1612,
|
|
17
|
+
1235, 1612, 1423, 1300, 1251, 1499, 1401, 2025, 1403, 1251, 1403, 799, 690, 799, 1716, 1024,
|
|
18
|
+
1024, 1255, 1300, 1126, 1300, 1260, 721, 1300, 1298, 569, 569, 1186, 569, 1995, 1298, 1253,
|
|
19
|
+
1300, 1300, 842, 1067, 803, 1298, 1212, 1675, 1212, 1212, 1075, 1303, 690, 1303, 1716,
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* A text's width in points at a font size, from DejaVu Sans's advances (any other character: 0.6 em).
|
|
23
|
+
* @param text - the text
|
|
24
|
+
* @param size - the font size
|
|
25
|
+
* @returns the width
|
|
26
|
+
*/
|
|
27
|
+
export function textWidth(text, size) {
|
|
28
|
+
let units = 0;
|
|
29
|
+
for (const ch of text) {
|
|
30
|
+
const code = ch.codePointAt(0) ?? 0;
|
|
31
|
+
units += code >= 32 && code <= 126 ? DEJAVU_SANS[code - 32] : 1229;
|
|
32
|
+
}
|
|
33
|
+
return (units / 2048) * size;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Splits a field's text into lines at `\n`, `\l` and `\r`, each line justified by the escape that ends it; a last
|
|
37
|
+
* line with no escape is centered. Other escapes are kept for the caller.
|
|
38
|
+
* @param text - the field's text, record escapes already removed
|
|
39
|
+
* @returns the lines
|
|
40
|
+
*/
|
|
41
|
+
function splitLines(text) {
|
|
42
|
+
const lines = [];
|
|
43
|
+
let line = "";
|
|
44
|
+
let i = 0;
|
|
45
|
+
while (i < text.length) {
|
|
46
|
+
const c = text[i];
|
|
47
|
+
const next = text[i + 1];
|
|
48
|
+
if (c === "\\" && (next === "n" || next === "l" || next === "r")) {
|
|
49
|
+
lines.push({ text: line, justify: next === "n" ? "c" : next });
|
|
50
|
+
line = "";
|
|
51
|
+
i += 2;
|
|
52
|
+
}
|
|
53
|
+
else if (c === "\\" && next !== undefined) {
|
|
54
|
+
line += c + next;
|
|
55
|
+
i += 2;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
line += c;
|
|
59
|
+
i++;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (line !== "" || lines.length === 0) {
|
|
63
|
+
lines.push({ text: line, justify: "c" });
|
|
64
|
+
}
|
|
65
|
+
return lines;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Parses a record label into its field tree, as `parse_reclbl` does: `|` parts fields, `{ }` opens a sub-record laid
|
|
69
|
+
* the other way, `<name>` names a field's port, and `\{ \} \| \< \>` and `\ ` stand for themselves.
|
|
70
|
+
* @param label - the label
|
|
71
|
+
* @param lr - whether the top level lays its fields left to right
|
|
72
|
+
* @returns the root field
|
|
73
|
+
*/
|
|
74
|
+
function parseRecord(label, lr) {
|
|
75
|
+
return parseFields(label, { i: 0 }, lr, true);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* A parent field holding its children.
|
|
79
|
+
* @param children - the children
|
|
80
|
+
* @param across - whether they lay left to right
|
|
81
|
+
* @returns the field
|
|
82
|
+
*/
|
|
83
|
+
function parentField(children, across) {
|
|
84
|
+
return { lines: null, port: null, children, lr: across, w: 0, h: 0, x: 0, y: 0 };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Parses the fields of one (sub-)record from the cursor up to its closing `}` (or the label's end).
|
|
88
|
+
* @param label - the label
|
|
89
|
+
* @param cursor - where reading is, moved past what is read
|
|
90
|
+
* @param across - whether these fields lay left to right
|
|
91
|
+
* @param top - whether this is the top level, where a stray `}` is skipped
|
|
92
|
+
* @returns the field holding them
|
|
93
|
+
*/
|
|
94
|
+
function parseFields(label, cursor, across, top) {
|
|
95
|
+
const children = [];
|
|
96
|
+
const pending = { text: "", port: null, sub: null };
|
|
97
|
+
while (cursor.i < label.length) {
|
|
98
|
+
const c = label[cursor.i];
|
|
99
|
+
if (c === "{") {
|
|
100
|
+
cursor.i++;
|
|
101
|
+
pending.sub = parseFields(label, cursor, !across, false);
|
|
102
|
+
}
|
|
103
|
+
else if (c === "}") {
|
|
104
|
+
cursor.i++;
|
|
105
|
+
if (!top) {
|
|
106
|
+
flushField(children, pending, across);
|
|
107
|
+
return parentField(children, across);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else if (c === "|") {
|
|
111
|
+
cursor.i++;
|
|
112
|
+
flushField(children, pending, across);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
readFieldText(label, cursor, pending);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
flushField(children, pending, across);
|
|
119
|
+
return parentField(children, across);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Reads one escape, port name or character of a field's text at the cursor.
|
|
123
|
+
* @param label - the label
|
|
124
|
+
* @param cursor - where reading is, moved past what is read
|
|
125
|
+
* @param pending - the field being read
|
|
126
|
+
*/
|
|
127
|
+
function readFieldText(label, cursor, pending) {
|
|
128
|
+
const c = label[cursor.i];
|
|
129
|
+
const next = label.at(cursor.i + 1);
|
|
130
|
+
if (c === "\\" && next !== undefined) {
|
|
131
|
+
pending.text += "{}|<> ".includes(next) ? next : c + next;
|
|
132
|
+
cursor.i += 2;
|
|
133
|
+
}
|
|
134
|
+
else if (c === "<") {
|
|
135
|
+
const close = label.indexOf(">", cursor.i + 1);
|
|
136
|
+
const end = close < 0 ? label.length : close;
|
|
137
|
+
pending.port = label.slice(cursor.i + 1, end).trim();
|
|
138
|
+
cursor.i = close < 0 ? label.length : close + 1;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
pending.text += c;
|
|
142
|
+
cursor.i++;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Ends the field being read: adds it (its sub-record, or a leaf of its text) to the children and starts the next.
|
|
147
|
+
* @param children - the children so far
|
|
148
|
+
* @param pending - the field being read, cleared
|
|
149
|
+
* @param across - whether the children lay left to right
|
|
150
|
+
*/
|
|
151
|
+
function flushField(children, pending, across) {
|
|
152
|
+
const { sub, port } = pending;
|
|
153
|
+
children.push(sub ?? { lines: splitLines(pending.text.trim()), port, children: [], lr: !across, w: 0, h: 0, x: 0, y: 0 });
|
|
154
|
+
if (sub !== null && port !== null) {
|
|
155
|
+
sub.port = port;
|
|
156
|
+
}
|
|
157
|
+
pending.text = "";
|
|
158
|
+
pending.port = null;
|
|
159
|
+
pending.sub = null;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Each field's natural size (`size_reclbl`): a leaf's text padded, a parent's children side by side along its way.
|
|
163
|
+
* @param f - the field
|
|
164
|
+
* @param size - the font size
|
|
165
|
+
*/
|
|
166
|
+
function sizeField(f, size) {
|
|
167
|
+
if (f.lines !== null) {
|
|
168
|
+
const w = Math.max(...f.lines.map((l) => textWidth(l.text, size)));
|
|
169
|
+
const h = f.lines.length * size * LINE_SPACING;
|
|
170
|
+
[f.w, f.h] = w > 0 || h > 0 ? [w + PAD.x, h + PAD.y] : [0, 0];
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
f.w = 0;
|
|
174
|
+
f.h = 0;
|
|
175
|
+
for (const c of f.children) {
|
|
176
|
+
sizeField(c, size);
|
|
177
|
+
f.w = f.lr ? f.w + c.w : Math.max(f.w, c.w);
|
|
178
|
+
f.h = f.lr ? Math.max(f.h, c.h) : f.h + c.h;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Grows or shrinks each field to its share of a new size (`resize_reclbl`): the difference is shared evenly along
|
|
183
|
+
* the field's way, in whole points.
|
|
184
|
+
* @param f - the field
|
|
185
|
+
* @param w - its new width
|
|
186
|
+
* @param h - its new height
|
|
187
|
+
*/
|
|
188
|
+
function resizeField(f, w, h) {
|
|
189
|
+
const inc = (f.lr ? w - f.w : h - f.h) / Math.max(1, f.children.length);
|
|
190
|
+
f.w = w;
|
|
191
|
+
f.h = h;
|
|
192
|
+
f.children.forEach((c, k) => {
|
|
193
|
+
const amt = Math.trunc((k + 1) * inc) - Math.trunc(k * inc);
|
|
194
|
+
resizeField(c, f.lr ? c.w + amt : w, f.lr ? h : c.h + amt);
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Places each field from its upper left corner (`pos_reclbl`), y up.
|
|
199
|
+
* @param f - the field
|
|
200
|
+
* @param x - its left side
|
|
201
|
+
* @param y - its top
|
|
202
|
+
*/
|
|
203
|
+
function placeField(f, x, y) {
|
|
204
|
+
f.x = x;
|
|
205
|
+
f.y = y;
|
|
206
|
+
let at = f.lr ? x : y;
|
|
207
|
+
for (const c of f.children) {
|
|
208
|
+
placeField(c, f.lr ? at : x, f.lr ? y : at);
|
|
209
|
+
at += f.lr ? c.w : -c.h;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Lays a record out in a node as Graphviz does: the fields at their natural sizes, the node at least that big unless
|
|
214
|
+
* it is `fixedsize`, every field then grown to share the node, its dividers between neighbors and its lines centered,
|
|
215
|
+
* or set in from its side by 8 points when justified left or right.
|
|
216
|
+
* @param label - the record label, before its escapes are applied
|
|
217
|
+
* @param lr - whether the top level lays its fields left to right (true unless `rankdir` is LR or RL)
|
|
218
|
+
* @param width - the node's width in points
|
|
219
|
+
* @param height - its height in points
|
|
220
|
+
* @param fixed - whether the node keeps its size (`fixedsize`)
|
|
221
|
+
* @param fontSize - the font size in points
|
|
222
|
+
* @param text - applies the label escapes to one line
|
|
223
|
+
* @returns the layout
|
|
224
|
+
*/
|
|
225
|
+
export function layoutRecord(label, lr, width, height, fixed, fontSize, text) {
|
|
226
|
+
const root = parseRecord(label, lr);
|
|
227
|
+
const leaves = (f) => {
|
|
228
|
+
if (f.lines !== null) {
|
|
229
|
+
f.lines = f.lines.map((l) => ({ ...l, text: text(l.text) }));
|
|
230
|
+
}
|
|
231
|
+
f.children.forEach(leaves);
|
|
232
|
+
};
|
|
233
|
+
leaves(root);
|
|
234
|
+
sizeField(root, fontSize);
|
|
235
|
+
const w = fixed ? width : Math.max(width, root.w);
|
|
236
|
+
const h = fixed ? height : Math.max(height, root.h);
|
|
237
|
+
resizeField(root, w, h);
|
|
238
|
+
placeField(root, -w / 2, h / 2);
|
|
239
|
+
const dividers = [];
|
|
240
|
+
const texts = [];
|
|
241
|
+
const ports = new Map();
|
|
242
|
+
const lineHeight = fontSize * LINE_SPACING;
|
|
243
|
+
const visit = (f) => {
|
|
244
|
+
if (f.port !== null && f.port !== "") {
|
|
245
|
+
ports.set(f.port, { x: f.x + f.w / 2, y: f.y - f.h / 2, hw: f.w / 2, hh: f.h / 2 });
|
|
246
|
+
}
|
|
247
|
+
f.children.forEach((c, k) => {
|
|
248
|
+
if (k > 0) {
|
|
249
|
+
dividers.push(f.lr ? [c.x, c.y, c.x, c.y - c.h] : [c.x, c.y, c.x + c.w, c.y]);
|
|
250
|
+
}
|
|
251
|
+
visit(c);
|
|
252
|
+
});
|
|
253
|
+
if (f.lines === null) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
const n = f.lines.length;
|
|
257
|
+
f.lines.forEach((l, k) => {
|
|
258
|
+
if (l.text === "") {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
const half = textWidth(l.text, fontSize) / 2;
|
|
262
|
+
let x = f.x + f.w / 2;
|
|
263
|
+
if (l.justify === "l") {
|
|
264
|
+
x = f.x + PAD.x / 2 + half;
|
|
265
|
+
}
|
|
266
|
+
else if (l.justify === "r") {
|
|
267
|
+
x = f.x + f.w - PAD.x / 2 - half;
|
|
268
|
+
}
|
|
269
|
+
texts.push({ x, y: f.y - f.h / 2 + ((n - 1) / 2 - k) * lineHeight, text: l.text });
|
|
270
|
+
});
|
|
271
|
+
};
|
|
272
|
+
visit(root);
|
|
273
|
+
return { width: w, height: h, dividers, texts, ports };
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../../src/formats/dot/record.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoCH,qGAAqG;AACrG,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAW,CAAC;AAErC,6DAA6D;AAC7D,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,kHAAkH;AAClH,kBAAkB;AAClB,MAAM,WAAW,GAAG;IAChB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACpF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;IAC3F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1F,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;CACxF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAY;IAChD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,CAAC;IACD,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,IAAY;IAC5B,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/D,IAAI,GAAG,EAAE,CAAC;YACV,CAAC,IAAI,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;YACjB,CAAC,IAAI,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACJ,IAAI,IAAI,CAAC,CAAC;YACV,CAAC,EAAE,CAAC;QACR,CAAC;IACL,CAAC;IACD,IAAI,IAAI,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,KAAa,EAAE,EAAW;IAC3C,OAAO,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAcD;;;;;GAKG;AACH,SAAS,WAAW,CAAC,QAAiB,EAAE,MAAe;IACnD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACrF,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,KAAa,EAAE,MAAc,EAAE,MAAe,EAAE,GAAY;IAC7E,MAAM,QAAQ,GAAY,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAClE,OAAO,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACZ,MAAM,CAAC,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM,CAAC,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBACtC,OAAO,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM,CAAC,CAAC,EAAE,CAAC;YACX,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACJ,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IACD,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,KAAa,EAAE,MAAc,EAAE,OAAqB;IACvE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAC1D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;SAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7C,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;QAClB,MAAM,CAAC,CAAC,EAAE,CAAC;IACf,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,QAAiB,EAAE,OAAqB,EAAE,MAAe;IACzE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,IAAI,CACT,GAAG,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAC7G,CAAC;IACF,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;IAClB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IACpB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,CAAQ,EAAE,IAAY;IACrC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,YAAY,CAAC;QAC/C,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,OAAO;IACX,CAAC;IACD,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACR,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACR,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzB,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,CAAQ,EAAE,CAAS,EAAE,CAAS;IAC/C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACR,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACR,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC5D,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,CAAQ,EAAE,CAAS,EAAE,CAAS;IAC9C,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACR,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACR,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzB,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5C,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CACxB,KAAa,EACb,EAAW,EACX,KAAa,EACb,MAAc,EACd,KAAc,EACd,QAAgB,EAChB,IAA8B;IAE9B,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,CAAC,CAAQ,EAAQ,EAAE;QAC9B,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,CAAC;IACb,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAuC,EAAE,CAAC;IACxD,MAAM,KAAK,GAA6C,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4D,CAAC;IAClF,MAAM,UAAU,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC3C,MAAM,KAAK,GAAG,CAAC,CAAQ,EAAQ,EAAE;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACnC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACR,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF,CAAC;YACD,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrB,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;gBAChB,OAAO;YACX,CAAC;YACD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;gBACpB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAC/B,CAAC;iBAAM,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;gBAC3B,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACrC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,CAAC;IACZ,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC3D,CAAC"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* `none` and `invis` are transparent, and a color list is read as Graphviz draws it for that use.
|
|
14
14
|
* - Outlines: `plain`, `plaintext` and `none` draw none. `setlinewidth(n)` is a pen width, `bold` a width of 2.
|
|
15
15
|
* - Sizes: exact with `fixedsize`, an empty label or a `point`; otherwise minimums Graphviz grows to fit the label,
|
|
16
|
-
* carried
|
|
16
|
+
* carried as `labelFit: "inside"` with the label's padding (`margin`, else 8 by 4 points).
|
|
17
17
|
* - Arrows per `dir`, `arrowhead` and `arrowtail`, with the graph's kind deciding the default: a target arrow on
|
|
18
18
|
* directed edges, as one tool-default rule.
|
|
19
19
|
* - A cluster's container node holds the cluster's attributes: its fill (`bgcolor`, or the fill when `filled`) and
|
|
@@ -26,8 +26,10 @@
|
|
|
26
26
|
* per-element values its rules read are quoted `"graphty.style.<target>.<key>"` attributes.
|
|
27
27
|
*/
|
|
28
28
|
import type { GraphSnapshot } from "@graphty/graph-format";
|
|
29
|
+
import { type BendPoint } from "../../styles/canon/bends.js";
|
|
30
|
+
import { type CanonSite } from "../../styles/canon/site.js";
|
|
29
31
|
import { type ExporterStyleInput } from "../../styles/io/writer.js";
|
|
30
|
-
import type { ImporterStyles, StyleReadContext, StyleWriteCapabilities } from "../../styles/types.js";
|
|
32
|
+
import type { ImporterStyles, StyleReadContext, StyleValue, StyleWriteCapabilities } from "../../styles/types.js";
|
|
31
33
|
import type { LossNote } from "../../types.js";
|
|
32
34
|
/**
|
|
33
35
|
* The graph attribute holding the `graphty.styles` block of a DOT file graphty wrote.
|
|
@@ -47,6 +49,64 @@ export declare const DOT_STYLE_CAPABILITIES: StyleWriteCapabilities;
|
|
|
47
49
|
* @returns true for an HTML string
|
|
48
50
|
*/
|
|
49
51
|
export declare function isHtmlString(text: string): boolean;
|
|
52
|
+
/** The outlines Graphviz draws round a node of these shapes when `peripheries` is not set. */
|
|
53
|
+
export declare const SHAPE_PERIPHERIES: ReadonlyMap<string, number>;
|
|
54
|
+
/** How far apart Graphviz draws a node's outlines, center to center (`GAP`, lib/common/shapes.c). */
|
|
55
|
+
export declare const PERIPHERY_GAP = 4;
|
|
56
|
+
/**
|
|
57
|
+
* A Graphviz shape drawn as pieces of its own (`graphvizGlyph`) at a node's size, as the neutral values that draw it:
|
|
58
|
+
* a polygon of its outline drawn where it says, its further pieces (`shapeParts`) and lines (`shapeLines`), each as
|
|
59
|
+
* fractions of the node's half width and half height. An `underline` is filled with no line round it, its line alone
|
|
60
|
+
* drawn in the pen's width.
|
|
61
|
+
* @param shape - the shape name, lowercase
|
|
62
|
+
* @param width - the node's width in points, or null for Graphviz's default
|
|
63
|
+
* @param height - its height, or null
|
|
64
|
+
* @param put - receives the values
|
|
65
|
+
* @param pen - the node's pen width, for an outline drawn as a line alone and a ring
|
|
66
|
+
* @param color - the node's pen color, for a ring
|
|
67
|
+
*/
|
|
68
|
+
export declare function putGlyph(shape: string, width: number | null, height: number | null, put: (property: string, value: StyleValue | null) => void, pen: () => number, color: () => string | null): void;
|
|
69
|
+
/**
|
|
70
|
+
* The corners of a Graphviz shape graphty draws as a polygon (`house`, `cylinder`, `note` ...), as a `shapePoints`
|
|
71
|
+
* value, or undefined for a shape graphty draws by name.
|
|
72
|
+
* @param shape - the shape name, lowercase
|
|
73
|
+
* @returns the corners, or undefined
|
|
74
|
+
*/
|
|
75
|
+
export declare function graphvizOutline(shape: string): string | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Whether Graphviz draws a shape with no outline (`plain`, `plaintext`, `none`).
|
|
78
|
+
* @param shape - the shape name, lowercase
|
|
79
|
+
* @returns true for a shape with no outline
|
|
80
|
+
*/
|
|
81
|
+
export declare function graphvizHasNoOutline(shape: string): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* The bends of a route Graphviz laid: B-splines of `3n + 1` control points each (y up), flattened into bends between
|
|
84
|
+
* the two nodes' centers. Null for a route on the line between the centers, which is the straight edge it looks like,
|
|
85
|
+
* or for control points that are not a spline. Also reads the `Line` of a GML file Graphviz's gv2gml wrote.
|
|
86
|
+
* @param source - the source node's center
|
|
87
|
+
* @param target - the target node's center
|
|
88
|
+
* @param splines - the control points of each spline, joined end to end
|
|
89
|
+
* @param tips - the arrow tips `pos` stores (`s,x,y` and `e,x,y`): the line runs on to each, along its arrow
|
|
90
|
+
* @param tips.start - the tail arrow's tip, or null
|
|
91
|
+
* @param tips.end - the head arrow's tip, or null
|
|
92
|
+
* @returns the `bends` value, or null
|
|
93
|
+
*/
|
|
94
|
+
export declare function graphvizRouteBends(source: BendPoint, target: BendPoint, splines: readonly (readonly BendPoint[])[], tips?: {
|
|
95
|
+
readonly start: BendPoint | null;
|
|
96
|
+
readonly end: BendPoint | null;
|
|
97
|
+
}): string | null;
|
|
98
|
+
/**
|
|
99
|
+
* The neutral arrow value Graphviz draws for an arrow name (`onormal`, `lbox`, `invempty`), with an open shape the
|
|
100
|
+
* neutral vocabulary has no name for (`obox`, `oinv`) as the value graphty draws it as, and the side an `l` or `r`
|
|
101
|
+
* keeps. Read so by the DOT reader and by the GML reader for gv2gml's `targetArrow` / `sourceArrow`.
|
|
102
|
+
* @param raw - the arrow name
|
|
103
|
+
* @param site - where it was read
|
|
104
|
+
* @returns the value and its side (null for the whole shape)
|
|
105
|
+
*/
|
|
106
|
+
export declare function graphvizArrowValue(raw: string, site: CanonSite): {
|
|
107
|
+
readonly value: string | null;
|
|
108
|
+
readonly side: "left" | "right" | null;
|
|
109
|
+
};
|
|
50
110
|
/**
|
|
51
111
|
* The styles of a DOT file, read the way Graphviz draws it, with Graphviz's defaults beneath: an unfilled black
|
|
52
112
|
* ellipse 54 x 36 labeled with its name, black edges with a target arrow in a directed graph. A file graphty wrote
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/formats/dot/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/formats/dot/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI3D,OAAO,EAAE,KAAK,SAAS,EAA8C,MAAM,6BAA6B,CAAC;AAIzG,OAAO,EAAE,KAAK,SAAS,EAAkC,MAAM,4BAA4B,CAAC;AAc5F,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,2BAA2B,CAAC;AAGxF,OAAO,KAAK,EACR,cAAc,EAGd,gBAAgB,EAGhB,UAAU,EACV,sBAAsB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgB/C;;;GAGG;AACH,OAAO,EAAE,gBAAgB,IAAI,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAEzF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,sBAiDnC,CAAC;AA4GH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAiBlD;AAq5BD,8FAA8F;AAC9F,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAIxD,CAAC;AAEH,qGAAqG;AACrG,eAAO,MAAM,aAAa,IAAI,CAAC;AAuL/B;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,EACzD,GAAG,EAAE,MAAM,MAAM,EACjB,KAAK,EAAE,MAAM,MAAM,GAAG,IAAI,GAC3B,IAAI,CAoBN;AAmCD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE3D;AAqWD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,SAAS,CAAC,SAAS,SAAS,EAAE,CAAC,EAAE,EAC1C,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,GAC5E,MAAM,GAAG,IAAI,CAyBf;AAmFD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,GAChB;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;CAAE,CAO3E;AAoMD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAgH5F;AA8nBD,2CAA2C;AAC3C,UAAU,eAAe;IACrB,mHAAmH;IACnH,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,oFAAoF;IACpF,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;CACvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,gBAAgB,CAAC,EAAE,OAAO,GAC3B,eAAe,GAAG,IAAI,CAQxB;AAmRD;;GAEG;AACH,eAAO,MAAM,wBAAwB,0BAA0B,CAAC"}
|