@graphty/graph-io 0.3.47 → 0.3.48
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-C2riR4NT.js} +2 -2
- package/dist/chunks/{approximations-wWjCRzKj.js.map → approximations-C2riR4NT.js.map} +1 -1
- package/dist/chunks/{block-DiGq58c3.js → block-Cu22ewuS.js} +92 -21
- package/dist/chunks/block-Cu22ewuS.js.map +1 -0
- package/dist/chunks/{choose--jM0yYCo.js → choose-Cdx6Enl2.js} +3 -3
- package/dist/chunks/{choose--jM0yYCo.js.map → choose-Cdx6Enl2.js.map} +1 -1
- package/dist/chunks/codes-CV_Bhcyi.js +153 -0
- package/dist/chunks/codes-CV_Bhcyi.js.map +1 -0
- package/dist/chunks/{constants-BKwqelYD.js → constants-D0LqcsLJ.js} +2 -2
- package/dist/chunks/{constants-BKwqelYD.js.map → constants-D0LqcsLJ.js.map} +1 -1
- package/dist/chunks/context-cgmmOxZ2.js +663 -0
- package/dist/chunks/context-cgmmOxZ2.js.map +1 -0
- package/dist/chunks/credentials-BiQsnMTb.js +347 -0
- package/dist/chunks/credentials-BiQsnMTb.js.map +1 -0
- package/dist/chunks/cx-export-BEeF6ymo.js +259 -0
- package/dist/chunks/cx-export-BEeF6ymo.js.map +1 -0
- package/dist/chunks/descriptor-BJ-W0Jd-.js +137 -0
- package/dist/chunks/descriptor-BJ-W0Jd-.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/{emit-CwU8cUmG.js → emit-CD8xnY8s.js} +70 -10
- package/dist/chunks/emit-CD8xnY8s.js.map +1 -0
- package/dist/chunks/{escape-CgzxiYPg.js → escape-DH2Egt-l.js} +12 -12
- package/dist/chunks/{escape-CgzxiYPg.js.map → escape-DH2Egt-l.js.map} +1 -1
- package/dist/chunks/{export-BvqAXCKh.js → export-CZ7VRm4I.js} +53 -1443
- package/dist/chunks/export-CZ7VRm4I.js.map +1 -0
- package/dist/chunks/{exporter-DndFlGSa.js → exporter-BIdaoIgh.js} +7 -6
- package/dist/chunks/{exporter-DndFlGSa.js.map → exporter-BIdaoIgh.js.map} +1 -1
- package/dist/chunks/{exporter-CJgfhF-l.js → exporter-ChjL5fmP.js} +8 -7
- package/dist/chunks/{exporter-CJgfhF-l.js.map → exporter-ChjL5fmP.js.map} +1 -1
- package/dist/chunks/{exporter--Mk9gXCJ.js → exporter-Dcw7Ldtq.js} +6 -4
- package/dist/chunks/{exporter--Mk9gXCJ.js.map → exporter-Dcw7Ldtq.js.map} +1 -1
- package/dist/chunks/exporter-DtVU80Fa.js +1008 -0
- package/dist/chunks/exporter-DtVU80Fa.js.map +1 -0
- package/dist/chunks/{exporter-CrDWIyiq.js → exporter-bxxjOrDZ.js} +11 -9
- package/dist/chunks/{exporter-CrDWIyiq.js.map → exporter-bxxjOrDZ.js.map} +1 -1
- package/dist/chunks/format-BMS-1Nxb.js +64 -0
- package/dist/chunks/format-BMS-1Nxb.js.map +1 -0
- package/dist/chunks/{generic-Dq1ntt9q.js → generic-CP6YD34u.js} +4 -4
- package/dist/chunks/{generic-Dq1ntt9q.js.map → generic-CP6YD34u.js.map} +1 -1
- package/dist/chunks/{importer-DiZRmOQG.js → importer-B87_fmVx.js} +13 -17
- package/dist/chunks/importer-B87_fmVx.js.map +1 -0
- package/dist/chunks/{importer-BSvfrX_h.js → importer-Bji2MeWr.js} +18 -1014
- package/dist/chunks/importer-Bji2MeWr.js.map +1 -0
- package/dist/chunks/{importer-COTK9Tsl.js → importer-CB_zV5_L.js} +14 -11
- package/dist/chunks/importer-CB_zV5_L.js.map +1 -0
- package/dist/chunks/{importer-e6LGpqHB.js → importer-CVT-JyDE.js} +12 -9
- package/dist/chunks/importer-CVT-JyDE.js.map +1 -0
- package/dist/chunks/{importer-yh_aBCU6.js → importer-Cyy6UseH.js} +7 -6
- package/dist/chunks/{importer-yh_aBCU6.js.map → importer-Cyy6UseH.js.map} +1 -1
- package/dist/chunks/{importer-iFYPEKaJ.js → importer-DPZDN40-.js} +14 -10
- package/dist/chunks/{importer-iFYPEKaJ.js.map → importer-DPZDN40-.js.map} +1 -1
- package/dist/chunks/{importer-CMmeMWlC.js → importer-e3huMZbm.js} +8 -260
- package/dist/chunks/importer-e3huMZbm.js.map +1 -0
- package/dist/chunks/input-Ccg9I22A.js +1397 -0
- package/dist/chunks/input-Ccg9I22A.js.map +1 -0
- package/dist/chunks/{json-elements-DJZRZ6jd.js → json-elements-By172SVq.js} +4 -4
- package/dist/chunks/{json-elements-DJZRZ6jd.js.map → json-elements-By172SVq.js.map} +1 -1
- package/dist/chunks/{lexicon-CT69Kd87.js → lexicon-u2SI5xcx.js} +19 -5
- package/dist/chunks/lexicon-u2SI5xcx.js.map +1 -0
- package/dist/chunks/{ontology-export-G4MqRdux.js → ontology-export-BwgMyuF0.js} +4 -3
- package/dist/chunks/{ontology-export-G4MqRdux.js.map → ontology-export-BwgMyuF0.js.map} +1 -1
- package/dist/chunks/{records-CiaWZrFH.js → records-Cgvxz-Vx.js} +2 -2
- package/dist/chunks/{records-CiaWZrFH.js.map → records-Cgvxz-Vx.js.map} +1 -1
- package/dist/chunks/{format-BpQBx8MZ.js → report-CgdsL9Hb.js} +72 -129
- package/dist/chunks/report-CgdsL9Hb.js.map +1 -0
- package/dist/chunks/sigv4-LkAzsLAu.js +247 -0
- package/dist/chunks/sigv4-LkAzsLAu.js.map +1 -0
- package/dist/chunks/{styles-BQnsga7p.js → styles-CaABMoO1.js} +76 -43
- package/dist/chunks/styles-CaABMoO1.js.map +1 -0
- package/dist/chunks/{styles-D3fRphrO.js → styles-P_gmFAOi.js} +101 -21
- package/dist/chunks/styles-P_gmFAOi.js.map +1 -0
- package/dist/chunks/{styles-yed-BF5x3_Y5.js → styles-yed-Cs1nmrjn.js} +60 -20
- package/dist/chunks/styles-yed-Cs1nmrjn.js.map +1 -0
- package/dist/chunks/{text-CzJNFOS9.js → text-BuKQVMz2.js} +2 -2
- package/dist/chunks/{text-CzJNFOS9.js.map → text-BuKQVMz2.js.map} +1 -1
- package/dist/chunks/{writer-DMKvthQE.js → writer-DvHTl36J.js} +5 -4
- package/dist/chunks/writer-DvHTl36J.js.map +1 -0
- 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 +2 -2
- package/dist/gexf.js +7 -5
- package/dist/gexf.js.map +1 -1
- package/dist/gml.js +16 -13
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +1181 -224
- package/dist/graph-io.js.map +1 -1
- package/dist/graphml.js +3 -3
- package/dist/json.js +1 -1
- 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/sources-cypher.d.ts +1 -0
- package/dist/sources-cypher.js +1236 -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 +1367 -0
- package/dist/sources-rest.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/styles.d.ts.map +1 -1
- package/dist/src/formats/cx/styles.js +1 -0
- package/dist/src/formats/cx/styles.js.map +1 -1
- package/dist/src/formats/dot/styles.d.ts.map +1 -1
- package/dist/src/formats/dot/styles.js +3 -1
- package/dist/src/formats/dot/styles.js.map +1 -1
- package/dist/src/formats/gexf/styles.d.ts +29 -12
- package/dist/src/formats/gexf/styles.d.ts.map +1 -1
- package/dist/src/formats/gexf/styles.js +160 -31
- package/dist/src/formats/gexf/styles.js.map +1 -1
- package/dist/src/formats/gml/styles.d.ts.map +1 -1
- package/dist/src/formats/gml/styles.js +5 -4
- 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 +3 -3
- package/dist/src/formats/graphml/styles-plain.js.map +1 -1
- package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-yed.js +89 -19
- package/dist/src/formats/graphml/styles-yed.js.map +1 -1
- package/dist/src/formats/pajek/styles.d.ts.map +1 -1
- package/dist/src/formats/pajek/styles.js +1 -0
- package/dist/src/formats/pajek/styles.js.map +1 -1
- package/dist/src/formats/xgmml/styles.d.ts.map +1 -1
- package/dist/src/formats/xgmml/styles.js +1 -0
- package/dist/src/formats/xgmml/styles.js.map +1 -1
- package/dist/src/index.d.ts +8 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -1
- package/dist/src/index.js.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 +47 -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 +739 -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 +119 -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 +405 -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 +106 -0
- package/dist/src/sources/cypher/query-builder.d.ts.map +1 -0
- package/dist/src/sources/cypher/query-builder.js +236 -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 +64 -0
- package/dist/src/sources/ids.d.ts.map +1 -0
- package/dist/src/sources/ids.js +64 -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 +28 -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 +71 -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 +635 -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 +24 -0
- package/dist/src/sources/sigv4.d.ts.map +1 -0
- package/dist/src/sources/sigv4.js +182 -0
- package/dist/src/sources/sigv4.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 +665 -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/canon/enums.d.ts.map +1 -1
- package/dist/src/styles/canon/enums.js +1 -0
- package/dist/src/styles/canon/enums.js.map +1 -1
- package/dist/src/styles/cyjs/cascade.d.ts.map +1 -1
- package/dist/src/styles/cyjs/cascade.js +68 -2
- 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 +2 -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 +18 -7
- package/dist/src/styles/cyjs/emit.js.map +1 -1
- package/dist/src/styles/cyjs/mappers.d.ts +4 -1
- package/dist/src/styles/cyjs/mappers.d.ts.map +1 -1
- package/dist/src/styles/cyjs/mappers.js +2 -0
- package/dist/src/styles/cyjs/mappers.js.map +1 -1
- package/dist/src/styles/cytoscape/emit.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/emit.js +59 -7
- package/dist/src/styles/cytoscape/emit.js.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.d.ts +6 -0
- package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.js +26 -2
- package/dist/src/styles/cytoscape/lexicon.js.map +1 -1
- package/dist/src/styles/cytoscape/resolve.d.ts +4 -1
- package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/resolve.js +10 -6
- 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 +30 -0
- package/dist/src/styles/defaults.d.ts.map +1 -1
- package/dist/src/styles/defaults.js +45 -4
- package/dist/src/styles/defaults.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/writer.d.ts.map +1 -1
- package/dist/src/styles/io/writer.js +7 -3
- package/dist/src/styles/io/writer.js.map +1 -1
- package/dist/src/styles/plan/resolve.d.ts +2 -1
- package/dist/src/styles/plan/resolve.d.ts.map +1 -1
- package/dist/src/styles/plan/resolve.js +13 -2
- package/dist/src/styles/plan/resolve.js.map +1 -1
- package/dist/src/styles/types.d.ts +19 -2
- package/dist/src/styles/types.d.ts.map +1 -1
- package/dist/src/styles/vocabulary.d.ts.map +1 -1
- package/dist/src/styles/vocabulary.js +15 -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 +11 -11
- package/dist/xgmml.js +3 -3
- package/docs/samples/people.json +6 -0
- package/package.json +29 -4
- package/src/common/report.ts +27 -7
- package/src/formats/cx/styles.ts +1 -0
- package/src/formats/dot/styles.ts +3 -1
- package/src/formats/gexf/styles.ts +185 -37
- package/src/formats/gml/styles.ts +5 -4
- package/src/formats/graphml/styles-plain.ts +3 -9
- package/src/formats/graphml/styles-yed.ts +93 -20
- package/src/formats/pajek/styles.ts +1 -0
- package/src/formats/xgmml/styles.ts +1 -0
- package/src/index.ts +90 -0
- package/src/registry.ts +326 -1
- package/src/sources/builtins.ts +56 -0
- package/src/sources/codes.ts +235 -0
- package/src/sources/context.ts +893 -0
- package/src/sources/credentials.ts +409 -0
- package/src/sources/cypher/descriptor.ts +125 -0
- package/src/sources/cypher/flatten.ts +323 -0
- package/src/sources/cypher/index.ts +498 -0
- package/src/sources/cypher/params.ts +41 -0
- package/src/sources/cypher/profiles.ts +78 -0
- package/src/sources/cypher/query-builder.ts +294 -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 +74 -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 +29 -0
- package/src/sources/registry.ts +325 -0
- package/src/sources/rest/descriptor.ts +74 -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 +760 -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 +207 -0
- package/src/sources/testing.ts +210 -0
- package/src/sources/types.ts +741 -0
- package/src/styles/canon/enums.ts +1 -0
- package/src/styles/cyjs/cascade.ts +81 -2
- package/src/styles/cyjs/defaults-table.ts +2 -0
- package/src/styles/cyjs/emit.ts +18 -7
- package/src/styles/cyjs/mappers.ts +6 -1
- package/src/styles/cytoscape/emit.ts +61 -7
- package/src/styles/cytoscape/lexicon.ts +28 -2
- package/src/styles/cytoscape/resolve.ts +22 -6
- package/src/styles/cytoscape/translate.ts +11 -11
- package/src/styles/defaults.ts +93 -4
- package/src/styles/io/block.ts +10 -0
- package/src/styles/io/writer.ts +8 -3
- package/src/styles/plan/resolve.ts +14 -2
- package/src/styles/types.ts +28 -2
- package/src/styles/vocabulary.ts +15 -1
- package/src/types.ts +19 -5
- package/dist/chunks/block-DiGq58c3.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/format-BpQBx8MZ.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/lexicon-CT69Kd87.js.map +0 -1
- package/dist/chunks/styles-BQnsga7p.js.map +0 -1
- package/dist/chunks/styles-D3fRphrO.js.map +0 -1
- package/dist/chunks/styles-yed-BF5x3_Y5.js.map +0 -1
- package/dist/chunks/writer-DMKvthQE.js.map +0 -1
|
@@ -135,6 +135,7 @@ const POSITIONS: Aliases = {
|
|
|
135
135
|
"top-right": ["top-right", "north-east", "northeast"],
|
|
136
136
|
"bottom-left": ["bottom-left", "south-west", "southwest"],
|
|
137
137
|
"bottom-right": ["bottom-right", "south-east", "southeast"],
|
|
138
|
+
"inside-top": ["inside-top"],
|
|
138
139
|
};
|
|
139
140
|
|
|
140
141
|
/** vis-network draws these spellings differently from the common reading. */
|
|
@@ -1733,6 +1733,8 @@ const CYJS_EDGE_ONLY: ReadonlySet<string> = new Set([
|
|
|
1733
1733
|
"source-arrow-shape",
|
|
1734
1734
|
"target-arrow-color",
|
|
1735
1735
|
"source-arrow-color",
|
|
1736
|
+
"target-arrow-fill",
|
|
1737
|
+
"source-arrow-fill",
|
|
1736
1738
|
"curve-style",
|
|
1737
1739
|
"arrow-scale",
|
|
1738
1740
|
"source-label",
|
|
@@ -1897,6 +1899,75 @@ function combineParts(
|
|
|
1897
1899
|
}
|
|
1898
1900
|
values.visible = col;
|
|
1899
1901
|
}
|
|
1902
|
+
if (kind === "edge") {
|
|
1903
|
+
hollowArrows("target", words.get("_targetArrowFill"), values, notes);
|
|
1904
|
+
hollowArrows("source", words.get("_sourceArrowFill"), values, notes);
|
|
1905
|
+
}
|
|
1906
|
+
}
|
|
1907
|
+
|
|
1908
|
+
/**
|
|
1909
|
+
* An entry's arrows drawn open where the same entry sets them hollow. A fill set by another entry is left to the
|
|
1910
|
+
* per-element values the rules are checked against.
|
|
1911
|
+
* @param setting - the entry's constants; changed in place
|
|
1912
|
+
* @param parts - every property of the entry
|
|
1913
|
+
*/
|
|
1914
|
+
function openArrows(setting: Map<string, StyleValue>, parts: readonly EntryProperty[]): void {
|
|
1915
|
+
for (const end of ["target", "source"]) {
|
|
1916
|
+
// a later duplicate of a property replaces the earlier one
|
|
1917
|
+
let fill: CyjsParsed | undefined;
|
|
1918
|
+
for (const p of parts) {
|
|
1919
|
+
if (p.spec.property === `_${end}ArrowFill`) {
|
|
1920
|
+
fill = p.parsed;
|
|
1921
|
+
}
|
|
1922
|
+
}
|
|
1923
|
+
const shape = setting.get(`${end}Arrow`);
|
|
1924
|
+
const open = shape === undefined ? undefined : OPEN_ARROWS.get(shape);
|
|
1925
|
+
if (fill?.kind === "word" && fill.value === "hollow" && open !== undefined) {
|
|
1926
|
+
setting.set(`${end}Arrow`, open);
|
|
1927
|
+
}
|
|
1928
|
+
}
|
|
1929
|
+
}
|
|
1930
|
+
|
|
1931
|
+
/** The arrows the vocabulary has an open shape for, by their filled shape. */
|
|
1932
|
+
const OPEN_ARROWS: ReadonlyMap<StyleValue, StyleValue> = new Map([
|
|
1933
|
+
["triangle", "triangle-open"],
|
|
1934
|
+
["circle", "circle-open"],
|
|
1935
|
+
["diamond", "diamond-open"],
|
|
1936
|
+
]);
|
|
1937
|
+
|
|
1938
|
+
/**
|
|
1939
|
+
* Combines an end's arrow shape with its fill: a hollow arrow is the open shape. A hollow arrow the vocabulary has no
|
|
1940
|
+
* open shape for keeps its filled shape and is noted.
|
|
1941
|
+
* @param end - the edge end
|
|
1942
|
+
* @param fill - the fill per element, or undefined when no rule sets it
|
|
1943
|
+
* @param values - the values; changed in place
|
|
1944
|
+
* @param notes - where problems are noted
|
|
1945
|
+
*/
|
|
1946
|
+
function hollowArrows(
|
|
1947
|
+
end: "source" | "target",
|
|
1948
|
+
fill: readonly (string | null)[] | undefined,
|
|
1949
|
+
values: Record<string, (StyleValue | null)[]>,
|
|
1950
|
+
notes: StyleNotes,
|
|
1951
|
+
): void {
|
|
1952
|
+
const shapes = values[`${end}Arrow`] as (StyleValue | null)[] | undefined;
|
|
1953
|
+
if (fill === undefined || shapes === undefined) {
|
|
1954
|
+
return;
|
|
1955
|
+
}
|
|
1956
|
+
for (let i = 0; i < shapes.length; i++) {
|
|
1957
|
+
const shape = shapes[i];
|
|
1958
|
+
if (fill[i] !== "hollow" || shape === null || shape === "none") {
|
|
1959
|
+
continue;
|
|
1960
|
+
}
|
|
1961
|
+
const open = OPEN_ARROWS.get(shape);
|
|
1962
|
+
if (open === undefined) {
|
|
1963
|
+
notes.add(STYLE_ISSUE.NOT_CARRIED, "edge", `${end}-arrow-fill`, {
|
|
1964
|
+
sample: `hollow ${String(shape)}`,
|
|
1965
|
+
element: i,
|
|
1966
|
+
});
|
|
1967
|
+
} else {
|
|
1968
|
+
shapes[i] = open;
|
|
1969
|
+
}
|
|
1970
|
+
}
|
|
1900
1971
|
}
|
|
1901
1972
|
|
|
1902
1973
|
/**
|
|
@@ -1973,7 +2044,7 @@ function buildRules(
|
|
|
1973
2044
|
if (props.length === 0 || a.list.length === 0) {
|
|
1974
2045
|
continue;
|
|
1975
2046
|
}
|
|
1976
|
-
drafts.push(draftOf(ctx, a.entry, a.list, props));
|
|
2047
|
+
drafts.push(draftOf(ctx, a.entry, a.list, props, a.props));
|
|
1977
2048
|
}
|
|
1978
2049
|
const rules = collapse(ctx, drafts);
|
|
1979
2050
|
return { rules, columns, rawColumns: [...raw] };
|
|
@@ -2020,9 +2091,16 @@ interface Draft {
|
|
|
2020
2091
|
* @param entry - the entry
|
|
2021
2092
|
* @param list - the matched core elements
|
|
2022
2093
|
* @param props - the carried properties
|
|
2094
|
+
* @param parts - every property of the entry, the combined parts too: a hollow fill makes the entry's own arrow open
|
|
2023
2095
|
* @returns the draft
|
|
2024
2096
|
*/
|
|
2025
|
-
function draftOf(
|
|
2097
|
+
function draftOf(
|
|
2098
|
+
ctx: RuleContext,
|
|
2099
|
+
entry: Entry,
|
|
2100
|
+
list: readonly number[],
|
|
2101
|
+
props: readonly EntryProperty[],
|
|
2102
|
+
parts: readonly EntryProperty[],
|
|
2103
|
+
): Draft {
|
|
2026
2104
|
const setting = new Map<string, StyleValue>();
|
|
2027
2105
|
const mapping = new Map<string, Mapping>();
|
|
2028
2106
|
let flattened = false;
|
|
@@ -2053,6 +2131,7 @@ function draftOf(ctx: RuleContext, entry: Entry, list: readonly number[], props:
|
|
|
2053
2131
|
mapping.set(p.spec.property, mapperMapping(ctx, entry, list, p));
|
|
2054
2132
|
}
|
|
2055
2133
|
}
|
|
2134
|
+
openArrows(setting, parts);
|
|
2056
2135
|
const set = Object.fromEntries(setting);
|
|
2057
2136
|
const map = Object.fromEntries(mapping);
|
|
2058
2137
|
const hasMap = mapping.size > 0;
|
|
@@ -36,6 +36,8 @@ export const CYJS_PROPERTY_DEFAULTS: ReadonlyMap<string, string> = new Map([
|
|
|
36
36
|
["line-style", "solid"],
|
|
37
37
|
["target-arrow-shape", "none"],
|
|
38
38
|
["source-arrow-shape", "none"],
|
|
39
|
+
["target-arrow-fill", "filled"],
|
|
40
|
+
["source-arrow-fill", "filled"],
|
|
39
41
|
["target-arrow-color", "rgb(153,153,153)"],
|
|
40
42
|
["source-arrow-color", "rgb(153,153,153)"],
|
|
41
43
|
["curve-style", "haystack"],
|
package/src/styles/cyjs/emit.ts
CHANGED
|
@@ -121,10 +121,13 @@ const ARROWS_TO_CYJS: ReadonlyMap<string, string> = new Map([
|
|
|
121
121
|
["circle", "circle"],
|
|
122
122
|
["square", "square"],
|
|
123
123
|
]);
|
|
124
|
-
|
|
124
|
+
/** The open arrows: their shape, drawn hollow. */
|
|
125
|
+
const ARROWS_OPEN: ReadonlyMap<string, string> = new Map([
|
|
125
126
|
["triangle-open", "triangle"],
|
|
126
127
|
["diamond-open", "diamond"],
|
|
127
128
|
["circle-open", "circle"],
|
|
129
|
+
]);
|
|
130
|
+
const ARROWS_NEAREST: ReadonlyMap<string, string> = new Map([
|
|
128
131
|
["half", "triangle"],
|
|
129
132
|
["inverted", "triangle"],
|
|
130
133
|
["crow", "vee"],
|
|
@@ -193,6 +196,10 @@ function near(props: Record<string, string | number>): Written {
|
|
|
193
196
|
* @returns the written value
|
|
194
197
|
*/
|
|
195
198
|
function labelPositionToCyjs(text: string): Written {
|
|
199
|
+
if (text === "inside-top") {
|
|
200
|
+
// Cytoscape.js has no inside alignment but center.
|
|
201
|
+
return near({ "text-valign": "top", "text-halign": "center" });
|
|
202
|
+
}
|
|
196
203
|
const v = ["top", "bottom"].find((x) => text.startsWith(x)) ?? "center";
|
|
197
204
|
const h = ["left", "right"].find((x) => text.endsWith(x)) ?? "center";
|
|
198
205
|
return exact({ "text-valign": v, "text-halign": h });
|
|
@@ -221,19 +228,23 @@ function enumToCyjs(
|
|
|
221
228
|
}
|
|
222
229
|
|
|
223
230
|
/**
|
|
224
|
-
* An arrow, or the nearest arrow Cytoscape.js has
|
|
225
|
-
*
|
|
231
|
+
* An arrow, or the nearest arrow Cytoscape.js has, with its fill: an open arrow is its shape drawn hollow, and every
|
|
232
|
+
* other arrow is written filled, so a hollow fill an earlier rule set does not carry over to it.
|
|
233
|
+
* @param name - the Cytoscape.js shape property
|
|
226
234
|
* @param value - the neutral arrow
|
|
227
235
|
* @param specs - the target's properties
|
|
228
236
|
* @returns the written value, or null when Cytoscape.js has none near
|
|
229
237
|
*/
|
|
230
238
|
function arrowToCyjs(name: string, value: string, specs: ReadonlyMap<string, CyjsPropertySpec>): Written | null {
|
|
231
|
-
const
|
|
232
|
-
|
|
233
|
-
|
|
239
|
+
const fill = name.replace("-shape", "-fill");
|
|
240
|
+
const open = ARROWS_OPEN.get(value);
|
|
241
|
+
if (open !== undefined) {
|
|
242
|
+
return exact({ [name]: open, [fill]: "hollow" });
|
|
234
243
|
}
|
|
244
|
+
const own = enumToCyjs(name, value, ARROWS_TO_CYJS, specs);
|
|
235
245
|
const nearest = ARROWS_NEAREST.get(value);
|
|
236
|
-
|
|
246
|
+
const w = own ?? (nearest === undefined ? null : near({ [name]: nearest }));
|
|
247
|
+
return w === null || value === "none" ? w : { ...w, props: { ...w.props, [fill]: "filled" } };
|
|
237
248
|
}
|
|
238
249
|
|
|
239
250
|
/**
|
|
@@ -28,7 +28,10 @@ export type CyjsValueType =
|
|
|
28
28
|
|
|
29
29
|
/** One property graph-io carries: the neutral property it sets (or a part it combines) and how it is parsed. */
|
|
30
30
|
export interface CyjsPropertySpec {
|
|
31
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* The neutral property, or `_valign`, `_halign`, `_visibility`, `_display`, `_sourceArrowFill`, `_targetArrowFill`
|
|
33
|
+
* for the parts combined afterward.
|
|
34
|
+
*/
|
|
32
35
|
readonly property: string;
|
|
33
36
|
/** The value type. */
|
|
34
37
|
readonly type: CyjsValueType;
|
|
@@ -171,6 +174,8 @@ export const CYJS_EDGE_PROPERTIES: ReadonlyMap<string, CyjsPropertySpec> = new M
|
|
|
171
174
|
["source-arrow-shape", { property: "sourceArrow", type: "enum", enums: ARROWS }],
|
|
172
175
|
["target-arrow-color", { property: "targetArrowColor", type: "color" }],
|
|
173
176
|
["source-arrow-color", { property: "sourceArrowColor", type: "color" }],
|
|
177
|
+
["target-arrow-fill", { property: "_targetArrowFill", type: "enum", enums: ["filled", "hollow"] }],
|
|
178
|
+
["source-arrow-fill", { property: "_sourceArrowFill", type: "enum", enums: ["filled", "hollow"] }],
|
|
174
179
|
["curve-style", { property: "curved", type: "enum", enums: CURVES }],
|
|
175
180
|
["arrow-scale", { property: "arrowSize", type: "positive" }],
|
|
176
181
|
["source-label", { property: "sourceLabel", type: "text" }],
|
|
@@ -23,7 +23,7 @@ import type {
|
|
|
23
23
|
StyleValue,
|
|
24
24
|
} from "../types.js";
|
|
25
25
|
import { STYLE_PROPERTIES } from "../vocabulary.js";
|
|
26
|
-
import { JAVA_FONTS } from "./lexicon.js";
|
|
26
|
+
import { JAVA_FONTS, vpStep } from "./lexicon.js";
|
|
27
27
|
import {
|
|
28
28
|
type CytoscapeContinuousPoint,
|
|
29
29
|
type CytoscapeMapping,
|
|
@@ -220,6 +220,7 @@ const DESKTOP_POSITIONS = {
|
|
|
220
220
|
"top-right": "NE,SW,c,0.00,0.00",
|
|
221
221
|
"bottom-left": "SW,NE,c,0.00,0.00",
|
|
222
222
|
"bottom-right": "SE,NW,c,0.00,0.00",
|
|
223
|
+
"inside-top": "N,N,c,0.00,0.00",
|
|
223
224
|
};
|
|
224
225
|
const CX2_ANCHORS: Readonly<Record<string, readonly [string, string]>> = {
|
|
225
226
|
center: ["center", "center"],
|
|
@@ -235,6 +236,21 @@ const CX2_ANCHORS: Readonly<Record<string, readonly [string, string]>> = {
|
|
|
235
236
|
|
|
236
237
|
const desktopNumber: Write = String;
|
|
237
238
|
const cx2Number: Write = (v) => v;
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* A writer for a visual property Cytoscape holds as a whole number (a font size): the value is written as it is, and
|
|
242
|
+
* a fraction is noted, since Cytoscape draws it rounded.
|
|
243
|
+
* @param write - the dialect's number writer
|
|
244
|
+
* @returns the writer
|
|
245
|
+
*/
|
|
246
|
+
function whole(write: Write): Write {
|
|
247
|
+
return (v, approx) => {
|
|
248
|
+
if (typeof v === "number" && !Number.isInteger(v)) {
|
|
249
|
+
approx();
|
|
250
|
+
}
|
|
251
|
+
return write(v, approx);
|
|
252
|
+
};
|
|
253
|
+
}
|
|
238
254
|
const textOut: Write = String;
|
|
239
255
|
const desktopBool: Write = (v) => String(v === true);
|
|
240
256
|
const opacity255: Write = (v, approx) => {
|
|
@@ -265,7 +281,7 @@ const WRITERS: Readonly<Record<CytoscapeDialect, Readonly<Record<StyleTarget, Re
|
|
|
265
281
|
["height", { vp: "NODE_HEIGHT", write: desktopNumber }],
|
|
266
282
|
["label", { vp: "NODE_LABEL", write: textOut }],
|
|
267
283
|
["labelColor", { vp: "NODE_LABEL_COLOR", write: colorOut }],
|
|
268
|
-
["labelSize", { vp: "NODE_LABEL_FONT_SIZE", write: desktopNumber }],
|
|
284
|
+
["labelSize", { vp: "NODE_LABEL_FONT_SIZE", write: whole(desktopNumber) }],
|
|
269
285
|
["labelPosition", { vp: "NODE_LABEL_POSITION", write: enumOut(DESKTOP_POSITIONS, {}, false) }],
|
|
270
286
|
["tooltip", { vp: "NODE_TOOLTIP", write: textOut }],
|
|
271
287
|
["visible", { vp: "NODE_VISIBLE", write: desktopBool }],
|
|
@@ -300,7 +316,7 @@ const WRITERS: Readonly<Record<CytoscapeDialect, Readonly<Record<StyleTarget, Re
|
|
|
300
316
|
["curved", { vp: "EDGE_CURVED", write: desktopBool }],
|
|
301
317
|
["label", { vp: "EDGE_LABEL", write: textOut }],
|
|
302
318
|
["labelColor", { vp: "EDGE_LABEL_COLOR", write: colorOut }],
|
|
303
|
-
["labelSize", { vp: "EDGE_LABEL_FONT_SIZE", write: desktopNumber }],
|
|
319
|
+
["labelSize", { vp: "EDGE_LABEL_FONT_SIZE", write: whole(desktopNumber) }],
|
|
304
320
|
["tooltip", { vp: "EDGE_TOOLTIP", write: textOut }],
|
|
305
321
|
["visible", { vp: "EDGE_VISIBLE", write: desktopBool }],
|
|
306
322
|
]),
|
|
@@ -329,7 +345,7 @@ const WRITERS: Readonly<Record<CytoscapeDialect, Readonly<Record<StyleTarget, Re
|
|
|
329
345
|
["height", { vp: "NODE_HEIGHT", write: cx2Number }],
|
|
330
346
|
["label", { vp: "NODE_LABEL", write: textOut }],
|
|
331
347
|
["labelColor", { vp: "NODE_LABEL_COLOR", write: colorOut }],
|
|
332
|
-
["labelSize", { vp: "NODE_LABEL_FONT_SIZE", write: cx2Number }],
|
|
348
|
+
["labelSize", { vp: "NODE_LABEL_FONT_SIZE", write: whole(cx2Number) }],
|
|
333
349
|
["labelPosition", { vp: "NODE_LABEL_POSITION", write: cx2Position }],
|
|
334
350
|
["visible", { vp: "NODE_VISIBILITY", write: (v) => (v === true ? "element" : "none") }],
|
|
335
351
|
]),
|
|
@@ -363,18 +379,23 @@ const WRITERS: Readonly<Record<CytoscapeDialect, Readonly<Record<StyleTarget, Re
|
|
|
363
379
|
["curved", { vp: "EDGE_CURVED", write: (v) => v === true }],
|
|
364
380
|
["label", { vp: "EDGE_LABEL", write: textOut }],
|
|
365
381
|
["labelColor", { vp: "EDGE_LABEL_COLOR", write: colorOut }],
|
|
366
|
-
["labelSize", { vp: "EDGE_LABEL_FONT_SIZE", write: cx2Number }],
|
|
382
|
+
["labelSize", { vp: "EDGE_LABEL_FONT_SIZE", write: whole(cx2Number) }],
|
|
367
383
|
["visible", { vp: "EDGE_VISIBILITY", write: (v) => (v === true ? "element" : "none") }],
|
|
368
384
|
]),
|
|
369
385
|
},
|
|
370
386
|
};
|
|
371
387
|
|
|
372
388
|
/**
|
|
373
|
-
* CX2's label position object
|
|
389
|
+
* CX2's label position object; `inside-top`, which CX2's anchors cannot tell from `top`, is written as `top`.
|
|
374
390
|
* @param v - a canonical position
|
|
391
|
+
* @param approx - records the approximation
|
|
375
392
|
* @returns the object
|
|
376
393
|
*/
|
|
377
|
-
function cx2Position(v: StyleValue): unknown {
|
|
394
|
+
function cx2Position(v: StyleValue, approx: () => void): unknown {
|
|
395
|
+
if (v === "inside-top") {
|
|
396
|
+
approx();
|
|
397
|
+
v = "top";
|
|
398
|
+
}
|
|
378
399
|
const [h, vert] = Object.hasOwn(CX2_ANCHORS, String(v)) ? CX2_ANCHORS[String(v)] : ["center", "center"];
|
|
379
400
|
return {
|
|
380
401
|
HORIZONTAL_ALIGN: "center",
|
|
@@ -701,16 +722,49 @@ function addBypasses(
|
|
|
701
722
|
continue;
|
|
702
723
|
}
|
|
703
724
|
const drawn = resolveRules(modelRules, target, p, e.src);
|
|
725
|
+
const step = drawnStep(model.map.get(p), w.vp, STYLE_PROPERTIES[target].get(p));
|
|
726
|
+
let rounded = 0;
|
|
704
727
|
for (let i = 0; i < e.n; i++) {
|
|
705
728
|
const v = want[i];
|
|
706
729
|
if (v !== null && v !== drawn[i]) {
|
|
707
730
|
bypasses[i] ??= new Map();
|
|
708
731
|
bypasses[i]?.set(w.vp, w.write(v, e.approx(p)));
|
|
732
|
+
} else if (offStep(v, step)) {
|
|
733
|
+
rounded++;
|
|
709
734
|
}
|
|
710
735
|
}
|
|
736
|
+
if (rounded > 0) {
|
|
737
|
+
e.notes.add(STYLE_ISSUE.APPROXIMATED, target, p, { count: rounded });
|
|
738
|
+
}
|
|
711
739
|
}
|
|
712
740
|
}
|
|
713
741
|
|
|
742
|
+
/**
|
|
743
|
+
* The step Cytoscape rounds the values of a written mapping to: a continuous mapping, or a passthrough written as
|
|
744
|
+
* one, on a visual property that holds whole numbers (a font size, a 0..255 transparency) is drawn rounded, unless
|
|
745
|
+
* the mapping already rounds to it. A passthrough written as a table writes its values through the property's writer,
|
|
746
|
+
* which notes them itself.
|
|
747
|
+
* @param m - the mapping written, if any
|
|
748
|
+
* @param vp - the visual property it sets
|
|
749
|
+
* @param kind - the kind of value the property holds
|
|
750
|
+
* @returns the step, or undefined when Cytoscape draws the mapping's values as they are
|
|
751
|
+
*/
|
|
752
|
+
function drawnStep(m: Mapping | undefined, vp: string, kind: string | undefined): number | undefined {
|
|
753
|
+
const ramp = m?.kind === "continuous" && m.step === undefined;
|
|
754
|
+
const passthrough = m?.kind === "passthrough" && PASSTHROUGH_SAFE.has(kind ?? "");
|
|
755
|
+
return ramp || passthrough ? vpStep(vp) : undefined;
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
/**
|
|
759
|
+
* Whether a value is not a multiple of a step, so Cytoscape draws it rounded.
|
|
760
|
+
* @param v - the value
|
|
761
|
+
* @param step - the step, or undefined for none
|
|
762
|
+
* @returns true when the value changes on rounding
|
|
763
|
+
*/
|
|
764
|
+
function offStep(v: StyleValue | null | undefined, step: number | undefined): boolean {
|
|
765
|
+
return step !== undefined && typeof v === "number" && num6(Math.round(v / step) * step) !== v;
|
|
766
|
+
}
|
|
767
|
+
|
|
714
768
|
/**
|
|
715
769
|
* The defaults and mappings of one target: rules over every element, bottom to top. A constant over every element
|
|
716
770
|
* hides everything beneath it; of two mappings of one property only the topmost is kept. Every rule that cannot be
|
|
@@ -39,6 +39,11 @@ const opacity255: CytoscapeValueParser = (raw, site) => {
|
|
|
39
39
|
// CX2's 0..1 opacity.
|
|
40
40
|
const opacity01: CytoscapeValueParser = (raw, site) => canonOpacity(raw, "css", site);
|
|
41
41
|
const length: CytoscapeValueParser = (raw, site) => canonNumber(raw, site);
|
|
42
|
+
// Cytoscape desktop holds a font size as a whole number, so every value read for one is drawn rounded.
|
|
43
|
+
const fontSize: CytoscapeValueParser = (raw, site) => {
|
|
44
|
+
const v = canonNumber(raw, site);
|
|
45
|
+
return v === null ? null : Math.round(v);
|
|
46
|
+
};
|
|
42
47
|
const text: CytoscapeValueParser = (raw, site) => canonText(raw, site);
|
|
43
48
|
const bool: CytoscapeValueParser = (raw, site) => canonBoolean(raw, site);
|
|
44
49
|
|
|
@@ -397,7 +402,7 @@ export const CYTOSCAPE_LEXICON: Readonly<
|
|
|
397
402
|
["height", [["NODE_HEIGHT", length]]],
|
|
398
403
|
["label", [["NODE_LABEL", text]]],
|
|
399
404
|
["labelColor", [["NODE_LABEL_COLOR", color]]],
|
|
400
|
-
["labelSize", [["NODE_LABEL_FONT_SIZE",
|
|
405
|
+
["labelSize", [["NODE_LABEL_FONT_SIZE", fontSize]]],
|
|
401
406
|
["labelFont", [["NODE_LABEL_FONT_FACE", fontFamily]]],
|
|
402
407
|
["labelWeight", [["NODE_LABEL_FONT_FACE", fontWeight]]],
|
|
403
408
|
["labelItalic", [["NODE_LABEL_FONT_FACE", fontItalic]]],
|
|
@@ -455,7 +460,7 @@ export const CYTOSCAPE_LEXICON: Readonly<
|
|
|
455
460
|
["curved", [["EDGE_CURVED", bool]]],
|
|
456
461
|
["label", [["EDGE_LABEL", text]]],
|
|
457
462
|
["labelColor", [["EDGE_LABEL_COLOR", color]]],
|
|
458
|
-
["labelSize", [["EDGE_LABEL_FONT_SIZE",
|
|
463
|
+
["labelSize", [["EDGE_LABEL_FONT_SIZE", fontSize]]],
|
|
459
464
|
["labelFont", [["EDGE_LABEL_FONT_FACE", fontFamily]]],
|
|
460
465
|
["labelWeight", [["EDGE_LABEL_FONT_FACE", fontWeight]]],
|
|
461
466
|
["labelItalic", [["EDGE_LABEL_FONT_FACE", fontItalic]]],
|
|
@@ -656,3 +661,24 @@ export function normalizeVisualProperties(target: StyleTarget, raw: unknown, not
|
|
|
656
661
|
}
|
|
657
662
|
return out;
|
|
658
663
|
}
|
|
664
|
+
|
|
665
|
+
/**
|
|
666
|
+
* The step a continuous mapping's value is rounded to for the integer visual properties Cytoscape desktop rounds an
|
|
667
|
+
* interpolated value of (cytoscape-api BasicVisualLexicon: the font sizes and the 0..255 transparencies; the latter
|
|
668
|
+
* read as opacities, so 1/255).
|
|
669
|
+
*/
|
|
670
|
+
const INTEGER_VP_STEPS: ReadonlyMap<string, number> = new Map([
|
|
671
|
+
["NODE_LABEL_FONT_SIZE", 1],
|
|
672
|
+
["EDGE_LABEL_FONT_SIZE", 1],
|
|
673
|
+
["NODE_TRANSPARENCY", 1 / 255],
|
|
674
|
+
["EDGE_TRANSPARENCY", 1 / 255],
|
|
675
|
+
]);
|
|
676
|
+
|
|
677
|
+
/**
|
|
678
|
+
* The step Cytoscape rounds an interpolated value of a visual property to.
|
|
679
|
+
* @param vp - the visual property
|
|
680
|
+
* @returns the step, or undefined for a property that holds fractions
|
|
681
|
+
*/
|
|
682
|
+
export function vpStep(vp: string): number | undefined {
|
|
683
|
+
return INTEGER_VP_STEPS.get(vp);
|
|
684
|
+
}
|
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
isUncarriedVp,
|
|
29
29
|
NODE_SIZE_VP,
|
|
30
30
|
sizeParser,
|
|
31
|
+
vpStep,
|
|
31
32
|
} from "./lexicon.js";
|
|
32
33
|
import {
|
|
33
34
|
type CytoscapeContinuousPoint,
|
|
@@ -152,7 +153,13 @@ export function chooseVps(
|
|
|
152
153
|
export type ParsedMapping =
|
|
153
154
|
| { readonly kind: "passthrough"; readonly column: string }
|
|
154
155
|
| { readonly kind: "discrete"; readonly column: string; readonly table: readonly (readonly [Scalar, StyleValue])[] }
|
|
155
|
-
| {
|
|
156
|
+
| {
|
|
157
|
+
readonly kind: "continuous";
|
|
158
|
+
readonly column: string;
|
|
159
|
+
readonly points: readonly ContinuousPoint[];
|
|
160
|
+
/** The step Cytoscape rounds a value to, for an integer visual property. */
|
|
161
|
+
readonly step?: number;
|
|
162
|
+
};
|
|
156
163
|
|
|
157
164
|
/**
|
|
158
165
|
* Reads a mapping's raw values with a property's parser: table entries and points whose values do not parse are
|
|
@@ -160,9 +167,15 @@ export type ParsedMapping =
|
|
|
160
167
|
* @param m - the mapping
|
|
161
168
|
* @param parse - the property's parser
|
|
162
169
|
* @param site - where problems are noted
|
|
170
|
+
* @param vp - the visual property it sets, whose type decides whether an interpolated value is rounded
|
|
163
171
|
* @returns the mapping with canonical values
|
|
164
172
|
*/
|
|
165
|
-
export function parseMapping(
|
|
173
|
+
export function parseMapping(
|
|
174
|
+
m: CytoscapeMapping,
|
|
175
|
+
parse: CytoscapeValueParser,
|
|
176
|
+
site: CanonSite,
|
|
177
|
+
vp: string,
|
|
178
|
+
): ParsedMapping {
|
|
166
179
|
switch (m.kind) {
|
|
167
180
|
case "passthrough":
|
|
168
181
|
return { kind: "passthrough", column: m.column };
|
|
@@ -176,8 +189,11 @@ export function parseMapping(m: CytoscapeMapping, parse: CytoscapeValueParser, s
|
|
|
176
189
|
}
|
|
177
190
|
return { kind: "discrete", column: m.column, table };
|
|
178
191
|
}
|
|
179
|
-
default:
|
|
180
|
-
|
|
192
|
+
default: {
|
|
193
|
+
const step = vpStep(vp);
|
|
194
|
+
const points = parsePoints(m.points, parse, site);
|
|
195
|
+
return { kind: "continuous", column: m.column, points, ...(step === undefined ? {} : { step }) };
|
|
196
|
+
}
|
|
181
197
|
}
|
|
182
198
|
}
|
|
183
199
|
|
|
@@ -240,7 +256,7 @@ function evalMapping(
|
|
|
240
256
|
return j < 0 ? null : m.table[j][1];
|
|
241
257
|
}
|
|
242
258
|
default:
|
|
243
|
-
return evalContinuous(m.points, numberOf(value));
|
|
259
|
+
return evalContinuous(m.points, numberOf(value), m.step);
|
|
244
260
|
}
|
|
245
261
|
}
|
|
246
262
|
|
|
@@ -296,7 +312,7 @@ function resolver(
|
|
|
296
312
|
if (m === undefined) {
|
|
297
313
|
const entries = raw.kind === "discrete" ? raw.table.length : 0;
|
|
298
314
|
budget?.spend(target, 1 + entries + (raw.kind === "continuous" ? raw.points.length : 0));
|
|
299
|
-
m = parseMapping(raw, parse, ruleSite(property));
|
|
315
|
+
m = parseMapping(raw, parse, ruleSite(property), vp);
|
|
300
316
|
parsed.set(key, m);
|
|
301
317
|
}
|
|
302
318
|
return m;
|
|
@@ -9,7 +9,7 @@ import { StyleNotes } from "../notes.js";
|
|
|
9
9
|
import { canonicalFor } from "../plan/resolve.js";
|
|
10
10
|
import type { ColumnRef, Mapping, StyleColumn, StyleRule, StyleTarget, StyleValue, StyleWorkBudget } from "../types.js";
|
|
11
11
|
import { type CytoscapeValueParser, NODE_SIZE_VP, sizeParser } from "./lexicon.js";
|
|
12
|
-
import type {
|
|
12
|
+
import type { CytoscapeStyle } from "./mappings.js";
|
|
13
13
|
import {
|
|
14
14
|
bendParser,
|
|
15
15
|
chooseVps,
|
|
@@ -86,8 +86,12 @@ export function cytoscapeRules(
|
|
|
86
86
|
const columns = new Map<string, StyleColumn>();
|
|
87
87
|
const byColumn = new Map<string, MappingRule>();
|
|
88
88
|
const reading: MappingRead = { target, refOf, elements, columns, notes, budget: options.budget };
|
|
89
|
-
const add = (props: readonly string[],
|
|
90
|
-
const
|
|
89
|
+
const add = (props: readonly string[], vp: string, parse: CytoscapeValueParser): void => {
|
|
90
|
+
const raw = s.mappings.get(vp);
|
|
91
|
+
if (raw === undefined) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const parsed = parseMapping(raw, parse, site(props[0]), vp);
|
|
91
95
|
const mapping = neutralMapping(parsed, props[0], parse, reading);
|
|
92
96
|
const key = `${raw.kind}\u0000${raw.column}`;
|
|
93
97
|
let rule = byColumn.get(key);
|
|
@@ -100,14 +104,10 @@ export function cytoscapeRules(
|
|
|
100
104
|
}
|
|
101
105
|
};
|
|
102
106
|
for (const [prop, [vp, parse]] of chosen) {
|
|
103
|
-
|
|
104
|
-
if (raw !== undefined) {
|
|
105
|
-
add(matched && prop === "color" ? ["color", "sourceArrowColor", "targetArrowColor"] : [prop], raw, parse);
|
|
106
|
-
}
|
|
107
|
+
add(matched && prop === "color" ? ["color", "sourceArrowColor", "targetArrowColor"] : [prop], vp, parse);
|
|
107
108
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
add(["width", "height"], size, sizeParser);
|
|
109
|
+
if (locked) {
|
|
110
|
+
add(["width", "height"], NODE_SIZE_VP, sizeParser);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
const rules: StyleRule[] = [];
|
|
@@ -201,7 +201,7 @@ function neutralMapping(
|
|
|
201
201
|
return { kind: "discrete", by, table: m.table };
|
|
202
202
|
}
|
|
203
203
|
if (m.kind === "continuous") {
|
|
204
|
-
return { kind: "continuous", by, points: m.points };
|
|
204
|
+
return { kind: "continuous", by, points: m.points, ...(m.step === undefined ? {} : { step: m.step }) };
|
|
205
205
|
}
|
|
206
206
|
const plain = "style" in by ? styleCell : canonicalFor(target, property);
|
|
207
207
|
const n = elements.count;
|