@graphty/graph-io 0.3.48 → 0.3.50

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.
Files changed (600) hide show
  1. package/dist/chunks/{approximations-C2riR4NT.js → approximations-BRXsll0T.js} +2 -2
  2. package/dist/chunks/{approximations-C2riR4NT.js.map → approximations-BRXsll0T.js.map} +1 -1
  3. package/dist/chunks/bends-BGXjv_U4.js +129 -0
  4. package/dist/chunks/bends-BGXjv_U4.js.map +1 -0
  5. package/dist/chunks/{block-Cu22ewuS.js → block-yl0f_qLO.js} +931 -164
  6. package/dist/chunks/block-yl0f_qLO.js.map +1 -0
  7. package/dist/chunks/choose-CczZJaX_.js +717 -0
  8. package/dist/chunks/choose-CczZJaX_.js.map +1 -0
  9. package/dist/chunks/{codes-CV_Bhcyi.js → codes-BE2xir2k.js} +6 -2
  10. package/dist/chunks/codes-BE2xir2k.js.map +1 -0
  11. package/dist/chunks/{constants-D0LqcsLJ.js → constants-CKkYLPtt.js} +2 -2
  12. package/dist/chunks/{constants-D0LqcsLJ.js.map → constants-CKkYLPtt.js.map} +1 -1
  13. package/dist/chunks/{context-cgmmOxZ2.js → context-DizmppHy.js} +5 -4
  14. package/dist/chunks/{context-cgmmOxZ2.js.map → context-DizmppHy.js.map} +1 -1
  15. package/dist/chunks/{convert-BcQ8_jMo.js → convert-Ct2zelbQ.js} +7 -2
  16. package/dist/chunks/convert-Ct2zelbQ.js.map +1 -0
  17. package/dist/chunks/{credentials-BiQsnMTb.js → credentials-CmvJXYeH.js} +67 -16
  18. package/dist/chunks/credentials-CmvJXYeH.js.map +1 -0
  19. package/dist/chunks/{cx-export-BEeF6ymo.js → cx-export-Bt6NoqTQ.js} +3 -3
  20. package/dist/chunks/{cx-export-BEeF6ymo.js.map → cx-export-Bt6NoqTQ.js.map} +1 -1
  21. package/dist/chunks/descriptor-B28U25x4.js +60 -0
  22. package/dist/chunks/descriptor-B28U25x4.js.map +1 -0
  23. package/dist/chunks/{descriptor-BJ-W0Jd-.js → descriptor-Dhez_Cew.js} +11 -2
  24. package/dist/chunks/descriptor-Dhez_Cew.js.map +1 -0
  25. package/dist/chunks/{emit-CD8xnY8s.js → emit-7Jkpg0yd.js} +1788 -133
  26. package/dist/chunks/emit-7Jkpg0yd.js.map +1 -0
  27. package/dist/chunks/{escape-DH2Egt-l.js → escape-CuCIzNMB.js} +8 -8
  28. package/dist/chunks/{escape-DH2Egt-l.js.map → escape-CuCIzNMB.js.map} +1 -1
  29. package/dist/chunks/{export-CZ7VRm4I.js → export-Cha4dRFz.js} +45 -387
  30. package/dist/chunks/export-Cha4dRFz.js.map +1 -0
  31. package/dist/chunks/{exporter-ChjL5fmP.js → exporter-1Ajud15J.js} +9 -8
  32. package/dist/chunks/{exporter-ChjL5fmP.js.map → exporter-1Ajud15J.js.map} +1 -1
  33. package/dist/chunks/{exporter-BIdaoIgh.js → exporter-B6yvL3wy.js} +7 -7
  34. package/dist/chunks/{exporter-BIdaoIgh.js.map → exporter-B6yvL3wy.js.map} +1 -1
  35. package/dist/chunks/{exporter-Dcw7Ldtq.js → exporter-BP6otMO6.js} +6 -6
  36. package/dist/chunks/{exporter-Dcw7Ldtq.js.map → exporter-BP6otMO6.js.map} +1 -1
  37. package/dist/chunks/{exporter-DtVU80Fa.js → exporter-CA5q8ROP.js} +9 -8
  38. package/dist/chunks/{exporter-DtVU80Fa.js.map → exporter-CA5q8ROP.js.map} +1 -1
  39. package/dist/chunks/{exporter-bxxjOrDZ.js → exporter-CQQZFJ2v.js} +1284 -156
  40. package/dist/chunks/exporter-CQQZFJ2v.js.map +1 -0
  41. package/dist/chunks/format-BXiAb-1h.js +408 -0
  42. package/dist/chunks/format-BXiAb-1h.js.map +1 -0
  43. package/dist/chunks/{generic-CP6YD34u.js → generic-Dc21MAdg.js} +387 -31
  44. package/dist/chunks/generic-Dc21MAdg.js.map +1 -0
  45. package/dist/chunks/{importer-B87_fmVx.js → importer-C6NVpCXp.js} +327 -84
  46. package/dist/chunks/importer-C6NVpCXp.js.map +1 -0
  47. package/dist/chunks/{importer-DPZDN40-.js → importer-CKFe4q54.js} +25 -17
  48. package/dist/chunks/importer-CKFe4q54.js.map +1 -0
  49. package/dist/chunks/{importer-Bji2MeWr.js → importer-CKbUbsJA.js} +13 -10
  50. package/dist/chunks/{importer-Bji2MeWr.js.map → importer-CKbUbsJA.js.map} +1 -1
  51. package/dist/chunks/{importer-CB_zV5_L.js → importer-ClCsdgTJ.js} +208 -1104
  52. package/dist/chunks/importer-ClCsdgTJ.js.map +1 -0
  53. package/dist/chunks/{importer-e3huMZbm.js → importer-CyVZTrf0.js} +14 -10
  54. package/dist/chunks/importer-CyVZTrf0.js.map +1 -0
  55. package/dist/chunks/{importer-CVT-JyDE.js → importer-DgG4v1Ms.js} +1537 -355
  56. package/dist/chunks/importer-DgG4v1Ms.js.map +1 -0
  57. package/dist/chunks/{importer-Cyy6UseH.js → importer-asFUrIsj.js} +66 -13
  58. package/dist/chunks/importer-asFUrIsj.js.map +1 -0
  59. package/dist/chunks/{input-Ccg9I22A.js → input-CAxt_aV-.js} +4 -4
  60. package/dist/chunks/{input-Ccg9I22A.js.map → input-CAxt_aV-.js.map} +1 -1
  61. package/dist/chunks/{json-elements-By172SVq.js → json-elements-Cq76WjnZ.js} +4 -4
  62. package/dist/chunks/{json-elements-By172SVq.js.map → json-elements-Cq76WjnZ.js.map} +1 -1
  63. package/dist/chunks/{lexicon-u2SI5xcx.js → lexicon-IVRq2Uoo.js} +282 -74
  64. package/dist/chunks/lexicon-IVRq2Uoo.js.map +1 -0
  65. package/dist/chunks/{ontology-export-BwgMyuF0.js → ontology-export-OMo91mb0.js} +4 -4
  66. package/dist/chunks/{ontology-export-BwgMyuF0.js.map → ontology-export-OMo91mb0.js.map} +1 -1
  67. package/dist/chunks/{records-Cgvxz-Vx.js → records-NJiYvekn.js} +2 -2
  68. package/dist/chunks/{records-Cgvxz-Vx.js.map → records-NJiYvekn.js.map} +1 -1
  69. package/dist/chunks/{report-CgdsL9Hb.js → report-CwMfYa9J.js} +23 -23
  70. package/dist/chunks/{report-CgdsL9Hb.js.map → report-CwMfYa9J.js.map} +1 -1
  71. package/dist/chunks/round-trip-Cy3_SHRZ.js +79 -0
  72. package/dist/chunks/round-trip-Cy3_SHRZ.js.map +1 -0
  73. package/dist/chunks/{sigv4-LkAzsLAu.js → sigv4-BXwVbza3.js} +5 -5
  74. package/dist/chunks/sigv4-BXwVbza3.js.map +1 -0
  75. package/dist/chunks/{styles-CaABMoO1.js → styles-CAVmBLgp.js} +1237 -138
  76. package/dist/chunks/styles-CAVmBLgp.js.map +1 -0
  77. package/dist/chunks/styles-CPczw1Jz.js +1928 -0
  78. package/dist/chunks/styles-CPczw1Jz.js.map +1 -0
  79. package/dist/chunks/styles-boK6Ln54.js +2847 -0
  80. package/dist/chunks/styles-boK6Ln54.js.map +1 -0
  81. package/dist/chunks/{styles-yed-Cs1nmrjn.js → styles-yed-XeFBQ6VS.js} +506 -175
  82. package/dist/chunks/styles-yed-XeFBQ6VS.js.map +1 -0
  83. package/dist/chunks/{text-BuKQVMz2.js → text-ystE2bYi.js} +2 -2
  84. package/dist/chunks/{text-BuKQVMz2.js.map → text-ystE2bYi.js.map} +1 -1
  85. package/dist/csv.js +7 -7
  86. package/dist/cx.js +2 -2
  87. package/dist/cx2.js +2 -2
  88. package/dist/cys.js +1 -1
  89. package/dist/dot.js +8 -4
  90. package/dist/dot.js.map +1 -1
  91. package/dist/gexf.js +42 -12
  92. package/dist/gexf.js.map +1 -1
  93. package/dist/gml.js +848 -194
  94. package/dist/gml.js.map +1 -1
  95. package/dist/graph-io.js +230 -193
  96. package/dist/graph-io.js.map +1 -1
  97. package/dist/graphml.js +3 -3
  98. package/dist/json.js +3 -2
  99. package/dist/neo4j.js +6 -6
  100. package/dist/obo.js +1 -1
  101. package/dist/pajek.js +1 -1
  102. package/dist/positions.js +45 -3
  103. package/dist/positions.js.map +1 -1
  104. package/dist/sources-cypher.js +141 -23
  105. package/dist/sources-cypher.js.map +1 -1
  106. package/dist/sources-ndex.js +2 -2
  107. package/dist/sources-rest.js +32 -6
  108. package/dist/sources-rest.js.map +1 -1
  109. package/dist/sources-sparql.d.ts +1 -0
  110. package/dist/sources-sparql.js +439 -0
  111. package/dist/sources-sparql.js.map +1 -0
  112. package/dist/src/formats/cx/importer.d.ts.map +1 -1
  113. package/dist/src/formats/cx/importer.js +5 -1
  114. package/dist/src/formats/cx/importer.js.map +1 -1
  115. package/dist/src/formats/cx/styles.d.ts +24 -1
  116. package/dist/src/formats/cx/styles.d.ts.map +1 -1
  117. package/dist/src/formats/cx/styles.js +117 -11
  118. package/dist/src/formats/cx/styles.js.map +1 -1
  119. package/dist/src/formats/cx2/importer.d.ts.map +1 -1
  120. package/dist/src/formats/cx2/importer.js +1 -0
  121. package/dist/src/formats/cx2/importer.js.map +1 -1
  122. package/dist/src/formats/cx2/styles.d.ts.map +1 -1
  123. package/dist/src/formats/cx2/styles.js +3 -1
  124. package/dist/src/formats/cx2/styles.js.map +1 -1
  125. package/dist/src/formats/cys/importer.d.ts.map +1 -1
  126. package/dist/src/formats/cys/importer.js +1 -0
  127. package/dist/src/formats/cys/importer.js.map +1 -1
  128. package/dist/src/formats/cys/styles.d.ts +2 -0
  129. package/dist/src/formats/cys/styles.d.ts.map +1 -1
  130. package/dist/src/formats/cys/styles.js +15 -7
  131. package/dist/src/formats/cys/styles.js.map +1 -1
  132. package/dist/src/formats/dot/drawing.d.ts +98 -0
  133. package/dist/src/formats/dot/drawing.d.ts.map +1 -0
  134. package/dist/src/formats/dot/drawing.js +734 -0
  135. package/dist/src/formats/dot/drawing.js.map +1 -0
  136. package/dist/src/formats/dot/exporter.d.ts.map +1 -1
  137. package/dist/src/formats/dot/exporter.js +34 -2
  138. package/dist/src/formats/dot/exporter.js.map +1 -1
  139. package/dist/src/formats/dot/importer.d.ts +6 -1
  140. package/dist/src/formats/dot/importer.d.ts.map +1 -1
  141. package/dist/src/formats/dot/importer.js +170 -33
  142. package/dist/src/formats/dot/importer.js.map +1 -1
  143. package/dist/src/formats/dot/index.d.ts +3 -1
  144. package/dist/src/formats/dot/index.d.ts.map +1 -1
  145. package/dist/src/formats/dot/index.js +2 -1
  146. package/dist/src/formats/dot/index.js.map +1 -1
  147. package/dist/src/formats/dot/label-places.d.ts +41 -0
  148. package/dist/src/formats/dot/label-places.d.ts.map +1 -0
  149. package/dist/src/formats/dot/label-places.js +185 -0
  150. package/dist/src/formats/dot/label-places.js.map +1 -0
  151. package/dist/src/formats/dot/names.d.ts +13 -0
  152. package/dist/src/formats/dot/names.d.ts.map +1 -1
  153. package/dist/src/formats/dot/names.js +13 -0
  154. package/dist/src/formats/dot/names.js.map +1 -1
  155. package/dist/src/formats/dot/record.d.ts +50 -0
  156. package/dist/src/formats/dot/record.d.ts.map +1 -0
  157. package/dist/src/formats/dot/record.js +275 -0
  158. package/dist/src/formats/dot/record.js.map +1 -0
  159. package/dist/src/formats/dot/styles.d.ts +72 -2
  160. package/dist/src/formats/dot/styles.d.ts.map +1 -1
  161. package/dist/src/formats/dot/styles.js +1500 -119
  162. package/dist/src/formats/dot/styles.js.map +1 -1
  163. package/dist/src/formats/gexf/dialog-metrics.d.ts +15 -0
  164. package/dist/src/formats/gexf/dialog-metrics.d.ts.map +1 -0
  165. package/dist/src/formats/gexf/dialog-metrics.js +59 -0
  166. package/dist/src/formats/gexf/dialog-metrics.js.map +1 -0
  167. package/dist/src/formats/gexf/importer.d.ts +7 -0
  168. package/dist/src/formats/gexf/importer.d.ts.map +1 -1
  169. package/dist/src/formats/gexf/importer.js +41 -5
  170. package/dist/src/formats/gexf/importer.js.map +1 -1
  171. package/dist/src/formats/gexf/preview.d.ts +77 -0
  172. package/dist/src/formats/gexf/preview.d.ts.map +1 -0
  173. package/dist/src/formats/gexf/preview.js +191 -0
  174. package/dist/src/formats/gexf/preview.js.map +1 -0
  175. package/dist/src/formats/gexf/schema.d.ts.map +1 -1
  176. package/dist/src/formats/gexf/schema.js +2 -1
  177. package/dist/src/formats/gexf/schema.js.map +1 -1
  178. package/dist/src/formats/gexf/styles.d.ts +58 -31
  179. package/dist/src/formats/gexf/styles.d.ts.map +1 -1
  180. package/dist/src/formats/gexf/styles.js +848 -225
  181. package/dist/src/formats/gexf/styles.js.map +1 -1
  182. package/dist/src/formats/gml/importer.d.ts +5 -2
  183. package/dist/src/formats/gml/importer.d.ts.map +1 -1
  184. package/dist/src/formats/gml/importer.js +258 -71
  185. package/dist/src/formats/gml/importer.js.map +1 -1
  186. package/dist/src/formats/gml/index.d.ts +1 -1
  187. package/dist/src/formats/gml/index.d.ts.map +1 -1
  188. package/dist/src/formats/gml/index.js +1 -1
  189. package/dist/src/formats/gml/index.js.map +1 -1
  190. package/dist/src/formats/gml/positions.d.ts +7 -0
  191. package/dist/src/formats/gml/positions.d.ts.map +1 -1
  192. package/dist/src/formats/gml/positions.js +29 -7
  193. package/dist/src/formats/gml/positions.js.map +1 -1
  194. package/dist/src/formats/gml/styles.d.ts.map +1 -1
  195. package/dist/src/formats/gml/styles.js +754 -102
  196. package/dist/src/formats/gml/styles.js.map +1 -1
  197. package/dist/src/formats/graphml/styles-plain.d.ts.map +1 -1
  198. package/dist/src/formats/graphml/styles-plain.js +6 -10
  199. package/dist/src/formats/graphml/styles-plain.js.map +1 -1
  200. package/dist/src/formats/graphml/styles-yed.d.ts +21 -15
  201. package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -1
  202. package/dist/src/formats/graphml/styles-yed.js +695 -164
  203. package/dist/src/formats/graphml/styles-yed.js.map +1 -1
  204. package/dist/src/formats/graphml/styles-yfiles3.d.ts +1 -1
  205. package/dist/src/formats/graphml/styles-yfiles3.d.ts.map +1 -1
  206. package/dist/src/formats/graphml/styles-yfiles3.js +431 -64
  207. package/dist/src/formats/graphml/styles-yfiles3.js.map +1 -1
  208. package/dist/src/formats/graphml/yfiles.d.ts +3 -3
  209. package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
  210. package/dist/src/formats/graphml/yfiles.js +16 -6
  211. package/dist/src/formats/graphml/yfiles.js.map +1 -1
  212. package/dist/src/formats/json/dialect.d.ts +3 -2
  213. package/dist/src/formats/json/dialect.d.ts.map +1 -1
  214. package/dist/src/formats/json/dialect.js +39 -5
  215. package/dist/src/formats/json/dialect.js.map +1 -1
  216. package/dist/src/formats/json/importer.d.ts +13 -2
  217. package/dist/src/formats/json/importer.d.ts.map +1 -1
  218. package/dist/src/formats/json/importer.js +42 -6
  219. package/dist/src/formats/json/importer.js.map +1 -1
  220. package/dist/src/formats/json/index.d.ts +1 -1
  221. package/dist/src/formats/json/index.d.ts.map +1 -1
  222. package/dist/src/formats/json/index.js +1 -1
  223. package/dist/src/formats/json/index.js.map +1 -1
  224. package/dist/src/formats/json/positions.d.ts +5 -2
  225. package/dist/src/formats/json/positions.d.ts.map +1 -1
  226. package/dist/src/formats/json/positions.js +20 -4
  227. package/dist/src/formats/json/positions.js.map +1 -1
  228. package/dist/src/formats/json/styles.d.ts +12 -1
  229. package/dist/src/formats/json/styles.d.ts.map +1 -1
  230. package/dist/src/formats/json/styles.js +1843 -136
  231. package/dist/src/formats/json/styles.js.map +1 -1
  232. package/dist/src/formats/pajek/draw.d.ts +104 -0
  233. package/dist/src/formats/pajek/draw.d.ts.map +1 -0
  234. package/dist/src/formats/pajek/draw.js +382 -0
  235. package/dist/src/formats/pajek/draw.js.map +1 -0
  236. package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
  237. package/dist/src/formats/pajek/exporter.js +70 -51
  238. package/dist/src/formats/pajek/exporter.js.map +1 -1
  239. package/dist/src/formats/pajek/importer.d.ts +9 -0
  240. package/dist/src/formats/pajek/importer.d.ts.map +1 -1
  241. package/dist/src/formats/pajek/importer.js +233 -102
  242. package/dist/src/formats/pajek/importer.js.map +1 -1
  243. package/dist/src/formats/pajek/index.d.ts +1 -0
  244. package/dist/src/formats/pajek/index.d.ts.map +1 -1
  245. package/dist/src/formats/pajek/index.js.map +1 -1
  246. package/dist/src/formats/pajek/styles.d.ts +15 -7
  247. package/dist/src/formats/pajek/styles.d.ts.map +1 -1
  248. package/dist/src/formats/pajek/styles.js +1395 -114
  249. package/dist/src/formats/pajek/styles.js.map +1 -1
  250. package/dist/src/formats/pajek/syntax.d.ts +10 -1
  251. package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
  252. package/dist/src/formats/pajek/syntax.js +26 -2
  253. package/dist/src/formats/pajek/syntax.js.map +1 -1
  254. package/dist/src/formats/xgmml/emit.d.ts +1 -0
  255. package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
  256. package/dist/src/formats/xgmml/emit.js +65 -5
  257. package/dist/src/formats/xgmml/emit.js.map +1 -1
  258. package/dist/src/formats/xgmml/styles.d.ts +23 -3
  259. package/dist/src/formats/xgmml/styles.d.ts.map +1 -1
  260. package/dist/src/formats/xgmml/styles.js +277 -60
  261. package/dist/src/formats/xgmml/styles.js.map +1 -1
  262. package/dist/src/index.d.ts +6 -5
  263. package/dist/src/index.d.ts.map +1 -1
  264. package/dist/src/index.js +6 -5
  265. package/dist/src/index.js.map +1 -1
  266. package/dist/src/positions/convert.d.ts.map +1 -1
  267. package/dist/src/positions/convert.js +11 -1
  268. package/dist/src/positions/convert.js.map +1 -1
  269. package/dist/src/positions/extract.d.ts.map +1 -1
  270. package/dist/src/positions/extract.js +53 -1
  271. package/dist/src/positions/extract.js.map +1 -1
  272. package/dist/src/positions/index.d.ts +1 -1
  273. package/dist/src/positions/index.d.ts.map +1 -1
  274. package/dist/src/positions/types.d.ts +59 -0
  275. package/dist/src/positions/types.d.ts.map +1 -1
  276. package/dist/src/sources/builtins.d.ts +1 -1
  277. package/dist/src/sources/builtins.d.ts.map +1 -1
  278. package/dist/src/sources/builtins.js +8 -2
  279. package/dist/src/sources/builtins.js.map +1 -1
  280. package/dist/src/sources/context.d.ts.map +1 -1
  281. package/dist/src/sources/context.js +1 -0
  282. package/dist/src/sources/context.js.map +1 -1
  283. package/dist/src/sources/credentials.d.ts +50 -1
  284. package/dist/src/sources/credentials.d.ts.map +1 -1
  285. package/dist/src/sources/credentials.js +69 -0
  286. package/dist/src/sources/credentials.js.map +1 -1
  287. package/dist/src/sources/cypher/descriptor.d.ts.map +1 -1
  288. package/dist/src/sources/cypher/descriptor.js +5 -0
  289. package/dist/src/sources/cypher/descriptor.js.map +1 -1
  290. package/dist/src/sources/cypher/index.d.ts.map +1 -1
  291. package/dist/src/sources/cypher/index.js +125 -18
  292. package/dist/src/sources/cypher/index.js.map +1 -1
  293. package/dist/src/sources/cypher/params.d.ts +1 -1
  294. package/dist/src/sources/cypher/params.d.ts.map +1 -1
  295. package/dist/src/sources/cypher/query-builder.d.ts +17 -0
  296. package/dist/src/sources/cypher/query-builder.d.ts.map +1 -1
  297. package/dist/src/sources/cypher/query-builder.js +31 -0
  298. package/dist/src/sources/cypher/query-builder.js.map +1 -1
  299. package/dist/src/sources/ids.d.ts +5 -0
  300. package/dist/src/sources/ids.d.ts.map +1 -1
  301. package/dist/src/sources/ids.js +5 -0
  302. package/dist/src/sources/ids.js.map +1 -1
  303. package/dist/src/sources/params.d.ts +3 -0
  304. package/dist/src/sources/params.d.ts.map +1 -1
  305. package/dist/src/sources/rest/descriptor.d.ts.map +1 -1
  306. package/dist/src/sources/rest/descriptor.js +9 -0
  307. package/dist/src/sources/rest/descriptor.js.map +1 -1
  308. package/dist/src/sources/rest/openalex.d.ts +4 -2
  309. package/dist/src/sources/rest/openalex.d.ts.map +1 -1
  310. package/dist/src/sources/rest/openalex.js +4 -2
  311. package/dist/src/sources/rest/openalex.js.map +1 -1
  312. package/dist/src/sources/rest/source.d.ts.map +1 -1
  313. package/dist/src/sources/rest/source.js +38 -0
  314. package/dist/src/sources/rest/source.js.map +1 -1
  315. package/dist/src/sources/run.d.ts +2 -0
  316. package/dist/src/sources/run.d.ts.map +1 -1
  317. package/dist/src/sources/run.js +30 -3
  318. package/dist/src/sources/run.js.map +1 -1
  319. package/dist/src/sources/sigv4.d.ts +5 -3
  320. package/dist/src/sources/sigv4.d.ts.map +1 -1
  321. package/dist/src/sources/sigv4.js +6 -4
  322. package/dist/src/sources/sigv4.js.map +1 -1
  323. package/dist/src/sources/sparql/descriptor.d.ts +10 -0
  324. package/dist/src/sources/sparql/descriptor.d.ts.map +1 -0
  325. package/dist/src/sources/sparql/descriptor.js +64 -0
  326. package/dist/src/sources/sparql/descriptor.js.map +1 -0
  327. package/dist/src/sources/sparql/index.d.ts +28 -0
  328. package/dist/src/sources/sparql/index.d.ts.map +1 -0
  329. package/dist/src/sources/sparql/index.js +327 -0
  330. package/dist/src/sources/sparql/index.js.map +1 -0
  331. package/dist/src/sources/sparql/ntriples.d.ts +69 -0
  332. package/dist/src/sources/sparql/ntriples.d.ts.map +1 -0
  333. package/dist/src/sources/sparql/ntriples.js +180 -0
  334. package/dist/src/sources/sparql/ntriples.js.map +1 -0
  335. package/dist/src/sources/sparql/params.d.ts +27 -0
  336. package/dist/src/sources/sparql/params.d.ts.map +1 -0
  337. package/dist/src/sources/sparql/params.js +5 -0
  338. package/dist/src/sources/sparql/params.js.map +1 -0
  339. package/dist/src/sources/sparql/query.d.ts +73 -0
  340. package/dist/src/sources/sparql/query.d.ts.map +1 -0
  341. package/dist/src/sources/sparql/query.js +164 -0
  342. package/dist/src/sources/sparql/query.js.map +1 -0
  343. package/dist/src/sources/types.d.ts +60 -0
  344. package/dist/src/sources/types.d.ts.map +1 -1
  345. package/dist/src/styles/annotations.d.ts +61 -5
  346. package/dist/src/styles/annotations.d.ts.map +1 -1
  347. package/dist/src/styles/annotations.js +130 -22
  348. package/dist/src/styles/annotations.js.map +1 -1
  349. package/dist/src/styles/canon/bends.d.ts +46 -0
  350. package/dist/src/styles/canon/bends.d.ts.map +1 -1
  351. package/dist/src/styles/canon/bends.js +123 -0
  352. package/dist/src/styles/canon/bends.js.map +1 -1
  353. package/dist/src/styles/canon/color-tables.d.ts +6 -1
  354. package/dist/src/styles/canon/color-tables.d.ts.map +1 -1
  355. package/dist/src/styles/canon/color-tables.js +10 -4
  356. package/dist/src/styles/canon/color-tables.js.map +1 -1
  357. package/dist/src/styles/canon/color.d.ts +3 -1
  358. package/dist/src/styles/canon/color.d.ts.map +1 -1
  359. package/dist/src/styles/canon/color.js +103 -3
  360. package/dist/src/styles/canon/color.js.map +1 -1
  361. package/dist/src/styles/canon/enums.d.ts +2 -2
  362. package/dist/src/styles/canon/enums.d.ts.map +1 -1
  363. package/dist/src/styles/canon/enums.js +89 -7
  364. package/dist/src/styles/canon/enums.js.map +1 -1
  365. package/dist/src/styles/canon/graphviz.d.ts +12 -3
  366. package/dist/src/styles/canon/graphviz.d.ts.map +1 -1
  367. package/dist/src/styles/canon/graphviz.js +57 -9
  368. package/dist/src/styles/canon/graphviz.js.map +1 -1
  369. package/dist/src/styles/canon/number.d.ts +8 -0
  370. package/dist/src/styles/canon/number.d.ts.map +1 -1
  371. package/dist/src/styles/canon/number.js +18 -0
  372. package/dist/src/styles/canon/number.js.map +1 -1
  373. package/dist/src/styles/canon/text.d.ts +29 -2
  374. package/dist/src/styles/canon/text.d.ts.map +1 -1
  375. package/dist/src/styles/canon/text.js +156 -16
  376. package/dist/src/styles/canon/text.js.map +1 -1
  377. package/dist/src/styles/codes.d.ts +2 -0
  378. package/dist/src/styles/codes.d.ts.map +1 -1
  379. package/dist/src/styles/codes.js +2 -0
  380. package/dist/src/styles/codes.js.map +1 -1
  381. package/dist/src/styles/cyjs/cascade.d.ts.map +1 -1
  382. package/dist/src/styles/cyjs/cascade.js +1139 -79
  383. package/dist/src/styles/cyjs/cascade.js.map +1 -1
  384. package/dist/src/styles/cyjs/defaults-table.d.ts.map +1 -1
  385. package/dist/src/styles/cyjs/defaults-table.js +4 -0
  386. package/dist/src/styles/cyjs/defaults-table.js.map +1 -1
  387. package/dist/src/styles/cyjs/emit.d.ts.map +1 -1
  388. package/dist/src/styles/cyjs/emit.js +232 -10
  389. package/dist/src/styles/cyjs/emit.js.map +1 -1
  390. package/dist/src/styles/cyjs/face.d.ts +20 -0
  391. package/dist/src/styles/cyjs/face.d.ts.map +1 -0
  392. package/dist/src/styles/cyjs/face.js +332 -0
  393. package/dist/src/styles/cyjs/face.js.map +1 -0
  394. package/dist/src/styles/cyjs/mappers.d.ts +44 -1
  395. package/dist/src/styles/cyjs/mappers.d.ts.map +1 -1
  396. package/dist/src/styles/cyjs/mappers.js +475 -26
  397. package/dist/src/styles/cyjs/mappers.js.map +1 -1
  398. package/dist/src/styles/cyjs/routes.d.ts +53 -0
  399. package/dist/src/styles/cyjs/routes.d.ts.map +1 -0
  400. package/dist/src/styles/cyjs/routes.js +360 -0
  401. package/dist/src/styles/cyjs/routes.js.map +1 -0
  402. package/dist/src/styles/cytoscape/charts.d.ts +23 -0
  403. package/dist/src/styles/cytoscape/charts.d.ts.map +1 -0
  404. package/dist/src/styles/cytoscape/charts.js +560 -0
  405. package/dist/src/styles/cytoscape/charts.js.map +1 -0
  406. package/dist/src/styles/cytoscape/emit.d.ts.map +1 -1
  407. package/dist/src/styles/cytoscape/emit.js +156 -48
  408. package/dist/src/styles/cytoscape/emit.js.map +1 -1
  409. package/dist/src/styles/cytoscape/lexicon.d.ts +91 -3
  410. package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -1
  411. package/dist/src/styles/cytoscape/lexicon.js +387 -77
  412. package/dist/src/styles/cytoscape/lexicon.js.map +1 -1
  413. package/dist/src/styles/cytoscape/mappings.d.ts +30 -0
  414. package/dist/src/styles/cytoscape/mappings.d.ts.map +1 -1
  415. package/dist/src/styles/cytoscape/mappings.js +92 -0
  416. package/dist/src/styles/cytoscape/mappings.js.map +1 -1
  417. package/dist/src/styles/cytoscape/resolve.d.ts +42 -2
  418. package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -1
  419. package/dist/src/styles/cytoscape/resolve.js +623 -17
  420. package/dist/src/styles/cytoscape/resolve.js.map +1 -1
  421. package/dist/src/styles/defaults.d.ts +46 -26
  422. package/dist/src/styles/defaults.d.ts.map +1 -1
  423. package/dist/src/styles/defaults.js +308 -71
  424. package/dist/src/styles/defaults.js.map +1 -1
  425. package/dist/src/styles/index.d.ts +4 -3
  426. package/dist/src/styles/index.d.ts.map +1 -1
  427. package/dist/src/styles/index.js +3 -2
  428. package/dist/src/styles/index.js.map +1 -1
  429. package/dist/src/styles/internal.d.ts +1 -0
  430. package/dist/src/styles/internal.d.ts.map +1 -1
  431. package/dist/src/styles/internal.js +1 -0
  432. package/dist/src/styles/internal.js.map +1 -1
  433. package/dist/src/styles/io/generic.d.ts.map +1 -1
  434. package/dist/src/styles/io/generic.js +56 -16
  435. package/dist/src/styles/io/generic.js.map +1 -1
  436. package/dist/src/styles/io/round-trip.d.ts +56 -0
  437. package/dist/src/styles/io/round-trip.d.ts.map +1 -0
  438. package/dist/src/styles/io/round-trip.js +138 -0
  439. package/dist/src/styles/io/round-trip.js.map +1 -0
  440. package/dist/src/styles/io/writer.d.ts.map +1 -1
  441. package/dist/src/styles/io/writer.js +6 -1
  442. package/dist/src/styles/io/writer.js.map +1 -1
  443. package/dist/src/styles/notes.d.ts.map +1 -1
  444. package/dist/src/styles/notes.js +1 -0
  445. package/dist/src/styles/notes.js.map +1 -1
  446. package/dist/src/styles/plan/features.d.ts +1 -1
  447. package/dist/src/styles/plan/features.d.ts.map +1 -1
  448. package/dist/src/styles/plan/features.js +22 -2
  449. package/dist/src/styles/plan/features.js.map +1 -1
  450. package/dist/src/styles/plan/index.d.ts +1 -1
  451. package/dist/src/styles/plan/index.d.ts.map +1 -1
  452. package/dist/src/styles/plan/index.js +1 -1
  453. package/dist/src/styles/plan/index.js.map +1 -1
  454. package/dist/src/styles/plan/plan.d.ts.map +1 -1
  455. package/dist/src/styles/plan/plan.js +61 -4
  456. package/dist/src/styles/plan/plan.js.map +1 -1
  457. package/dist/src/styles/plan/resolve.d.ts +11 -0
  458. package/dist/src/styles/plan/resolve.d.ts.map +1 -1
  459. package/dist/src/styles/plan/resolve.js +40 -4
  460. package/dist/src/styles/plan/resolve.js.map +1 -1
  461. package/dist/src/styles/slots.d.ts +14 -0
  462. package/dist/src/styles/slots.d.ts.map +1 -0
  463. package/dist/src/styles/slots.js +20 -0
  464. package/dist/src/styles/slots.js.map +1 -0
  465. package/dist/src/styles/types.d.ts +687 -6
  466. package/dist/src/styles/types.d.ts.map +1 -1
  467. package/dist/src/styles/vocabulary.d.ts +3 -2
  468. package/dist/src/styles/vocabulary.d.ts.map +1 -1
  469. package/dist/src/styles/vocabulary.js +224 -0
  470. package/dist/src/styles/vocabulary.js.map +1 -1
  471. package/dist/styles.js +30 -239
  472. package/dist/styles.js.map +1 -1
  473. package/dist/xgmml.js +3 -3
  474. package/package.json +27 -7
  475. package/src/formats/cx/importer.ts +6 -1
  476. package/src/formats/cx/styles.ts +143 -9
  477. package/src/formats/cx2/importer.ts +1 -0
  478. package/src/formats/cx2/styles.ts +3 -1
  479. package/src/formats/cys/importer.ts +1 -0
  480. package/src/formats/cys/styles.ts +27 -5
  481. package/src/formats/dot/drawing.ts +799 -0
  482. package/src/formats/dot/exporter.ts +37 -1
  483. package/src/formats/dot/importer.ts +192 -36
  484. package/src/formats/dot/index.ts +3 -1
  485. package/src/formats/dot/label-places.ts +241 -0
  486. package/src/formats/dot/names.ts +15 -0
  487. package/src/formats/dot/record.ts +336 -0
  488. package/src/formats/dot/styles.ts +1702 -149
  489. package/src/formats/gexf/dialog-metrics.ts +61 -0
  490. package/src/formats/gexf/importer.ts +50 -5
  491. package/src/formats/gexf/preview.ts +217 -0
  492. package/src/formats/gexf/schema.ts +2 -1
  493. package/src/formats/gexf/styles.ts +1099 -245
  494. package/src/formats/gml/importer.ts +291 -76
  495. package/src/formats/gml/index.ts +1 -1
  496. package/src/formats/gml/positions.ts +29 -7
  497. package/src/formats/gml/styles.ts +852 -110
  498. package/src/formats/graphml/styles-plain.ts +6 -15
  499. package/src/formats/graphml/styles-yed.ts +765 -176
  500. package/src/formats/graphml/styles-yfiles3.ts +487 -63
  501. package/src/formats/graphml/yfiles.ts +19 -6
  502. package/src/formats/json/dialect.ts +41 -5
  503. package/src/formats/json/importer.ts +59 -7
  504. package/src/formats/json/index.ts +1 -0
  505. package/src/formats/json/positions.ts +22 -5
  506. package/src/formats/json/styles.ts +2123 -171
  507. package/src/formats/pajek/draw.ts +469 -0
  508. package/src/formats/pajek/exporter.ts +81 -49
  509. package/src/formats/pajek/importer.ts +278 -103
  510. package/src/formats/pajek/index.ts +1 -0
  511. package/src/formats/pajek/styles.ts +1506 -133
  512. package/src/formats/pajek/syntax.ts +27 -2
  513. package/src/formats/xgmml/emit.ts +73 -5
  514. package/src/formats/xgmml/styles.ts +330 -71
  515. package/src/index.ts +12 -1
  516. package/src/positions/convert.ts +12 -1
  517. package/src/positions/extract.ts +55 -1
  518. package/src/positions/index.ts +1 -0
  519. package/src/positions/types.ts +60 -0
  520. package/src/sources/builtins.ts +8 -1
  521. package/src/sources/context.ts +1 -0
  522. package/src/sources/credentials.ts +90 -1
  523. package/src/sources/cypher/descriptor.ts +7 -1
  524. package/src/sources/cypher/index.ts +149 -18
  525. package/src/sources/cypher/params.ts +1 -1
  526. package/src/sources/cypher/query-builder.ts +33 -0
  527. package/src/sources/ids.ts +6 -0
  528. package/src/sources/params.ts +3 -0
  529. package/src/sources/rest/descriptor.ts +9 -0
  530. package/src/sources/rest/openalex.ts +4 -2
  531. package/src/sources/rest/source.ts +41 -0
  532. package/src/sources/run.ts +35 -3
  533. package/src/sources/sigv4.ts +6 -4
  534. package/src/sources/sparql/descriptor.ts +67 -0
  535. package/src/sources/sparql/index.ts +371 -0
  536. package/src/sources/sparql/ntriples.ts +219 -0
  537. package/src/sources/sparql/params.ts +28 -0
  538. package/src/sources/sparql/query.ts +216 -0
  539. package/src/sources/types.ts +68 -0
  540. package/src/styles/annotations.ts +201 -27
  541. package/src/styles/canon/bends.ts +137 -0
  542. package/src/styles/canon/color-tables.ts +10 -4
  543. package/src/styles/canon/color.ts +105 -3
  544. package/src/styles/canon/enums.ts +107 -8
  545. package/src/styles/canon/graphviz.ts +71 -10
  546. package/src/styles/canon/number.ts +19 -0
  547. package/src/styles/canon/text.ts +187 -16
  548. package/src/styles/codes.ts +2 -0
  549. package/src/styles/cyjs/cascade.ts +1303 -84
  550. package/src/styles/cyjs/defaults-table.ts +4 -0
  551. package/src/styles/cyjs/emit.ts +268 -14
  552. package/src/styles/cyjs/face.ts +372 -0
  553. package/src/styles/cyjs/mappers.ts +506 -27
  554. package/src/styles/cyjs/routes.ts +432 -0
  555. package/src/styles/cytoscape/charts.ts +684 -0
  556. package/src/styles/cytoscape/emit.ts +170 -48
  557. package/src/styles/cytoscape/lexicon.ts +431 -78
  558. package/src/styles/cytoscape/mappings.ts +108 -0
  559. package/src/styles/cytoscape/resolve.ts +741 -17
  560. package/src/styles/defaults.ts +417 -108
  561. package/src/styles/index.ts +5 -0
  562. package/src/styles/internal.ts +1 -0
  563. package/src/styles/io/generic.ts +79 -23
  564. package/src/styles/io/round-trip.ts +202 -0
  565. package/src/styles/io/writer.ts +6 -1
  566. package/src/styles/notes.ts +1 -0
  567. package/src/styles/plan/features.ts +23 -2
  568. package/src/styles/plan/index.ts +1 -1
  569. package/src/styles/plan/plan.ts +69 -5
  570. package/src/styles/plan/resolve.ts +47 -4
  571. package/src/styles/slots.ts +25 -0
  572. package/src/styles/types.ts +698 -5
  573. package/src/styles/vocabulary.ts +232 -2
  574. package/dist/chunks/block-Cu22ewuS.js.map +0 -1
  575. package/dist/chunks/choose-Cdx6Enl2.js +0 -57
  576. package/dist/chunks/choose-Cdx6Enl2.js.map +0 -1
  577. package/dist/chunks/codes-CV_Bhcyi.js.map +0 -1
  578. package/dist/chunks/convert-BcQ8_jMo.js.map +0 -1
  579. package/dist/chunks/credentials-BiQsnMTb.js.map +0 -1
  580. package/dist/chunks/descriptor-BJ-W0Jd-.js.map +0 -1
  581. package/dist/chunks/emit-CD8xnY8s.js.map +0 -1
  582. package/dist/chunks/export-CZ7VRm4I.js.map +0 -1
  583. package/dist/chunks/exporter-bxxjOrDZ.js.map +0 -1
  584. package/dist/chunks/format-BMS-1Nxb.js +0 -64
  585. package/dist/chunks/format-BMS-1Nxb.js.map +0 -1
  586. package/dist/chunks/generic-CP6YD34u.js.map +0 -1
  587. package/dist/chunks/importer-B87_fmVx.js.map +0 -1
  588. package/dist/chunks/importer-CB_zV5_L.js.map +0 -1
  589. package/dist/chunks/importer-CVT-JyDE.js.map +0 -1
  590. package/dist/chunks/importer-Cyy6UseH.js.map +0 -1
  591. package/dist/chunks/importer-DPZDN40-.js.map +0 -1
  592. package/dist/chunks/importer-e3huMZbm.js.map +0 -1
  593. package/dist/chunks/lexicon-u2SI5xcx.js.map +0 -1
  594. package/dist/chunks/sigv4-LkAzsLAu.js.map +0 -1
  595. package/dist/chunks/styles-CaABMoO1.js.map +0 -1
  596. package/dist/chunks/styles-P_gmFAOi.js +0 -770
  597. package/dist/chunks/styles-P_gmFAOi.js.map +0 -1
  598. package/dist/chunks/styles-yed-Cs1nmrjn.js.map +0 -1
  599. package/dist/chunks/writer-DvHTl36J.js +0 -449
  600. package/dist/chunks/writer-DvHTl36J.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { a as STYLE_ISSUE } from "./block-Cu22ewuS.js";
1
+ import { b as STYLE_ISSUE } from "./block-yl0f_qLO.js";
2
2
  class StyleApproximations {
3
3
  #seen = /* @__PURE__ */ new Map();
4
4
  /**
@@ -37,4 +37,4 @@ class StyleApproximations {
37
37
  export {
38
38
  StyleApproximations as S
39
39
  };
40
- //# sourceMappingURL=approximations-C2riR4NT.js.map
40
+ //# sourceMappingURL=approximations-BRXsll0T.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"approximations-C2riR4NT.js","sources":["../../src/styles/io/approximations.ts"],"sourcesContent":["/**\n * Counting the values a style writer writes as the nearest value its format holds, for the W_STYLE_APPROXIMATED\n * notes every writer reports.\n */\n\nimport type { LossNote } from \"../../types.js\";\nimport { STYLE_ISSUE } from \"../codes.js\";\nimport type { StyleTarget } from \"../types.js\";\n\n/** Counts the values written as the nearest value a format holds, per target and property. */\nexport class StyleApproximations {\n readonly #seen = new Map<string, { count: number; samples: Set<string> }>();\n\n /**\n * Records one value written approximately.\n * @param target - nodes or edges\n * @param property - the property\n * @param value - the exact value\n */\n add(target: StyleTarget, property: string, value: unknown): void {\n const key = `${target}.${property}`;\n const a = this.#seen.get(key) ?? { count: 0, samples: new Set<string>() };\n a.count++;\n if (a.samples.size < 8) {\n a.samples.add(String(value));\n }\n this.#seen.set(key, a);\n }\n\n /**\n * The W_STYLE_APPROXIMATED notes, one per target and property.\n * @param holder - what holds the values, for the message (\"Graphviz\", \"the d3 dialect of JSON\")\n * @returns the notes\n */\n notes(holder: string): LossNote[] {\n return Array.from(this.#seen, ([key, a]) => {\n const [target, property] = key.split(\".\") as [StyleTarget, string];\n return Object.freeze({\n code: STYLE_ISSUE.APPROXIMATED,\n message: `${target} ${property} is written as the nearest value ${holder} has for ${String(a.count)} ${target}${a.count === 1 ? \"\" : \"s\"} (${[...a.samples].join(\", \")}); the graphty.styles block keeps the exact value`,\n column: null,\n count: a.count,\n style: Object.freeze({ target, property: property as never }),\n });\n });\n }\n}\n"],"names":[],"mappings":";AAUO,MAAM,oBAAoB;AAAA,EACpB,4BAAY,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrB,IAAI,QAAqB,UAAkB,OAAsB;AAC7D,UAAM,MAAM,GAAG,MAAM,IAAI,QAAQ;AACjC,UAAM,IAAI,KAAK,MAAM,IAAI,GAAG,KAAK,EAAE,OAAO,GAAG,SAAS,oBAAI,IAAA,EAAY;AACtE,MAAE;AACF,QAAI,EAAE,QAAQ,OAAO,GAAG;AACpB,QAAE,QAAQ,IAAI,OAAO,KAAK,CAAC;AAAA,IAC/B;AACA,SAAK,MAAM,IAAI,KAAK,CAAC;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,QAA4B;AAC9B,WAAO,MAAM,KAAK,KAAK,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM;AACxC,YAAM,CAAC,QAAQ,QAAQ,IAAI,IAAI,MAAM,GAAG;AACxC,aAAO,OAAO,OAAO;AAAA,QACjB,MAAM,YAAY;AAAA,QAClB,SAAS,GAAG,MAAM,IAAI,QAAQ,oCAAoC,MAAM,YAAY,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,GAAG,EAAE,UAAU,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,QACtK,QAAQ;AAAA,QACR,OAAO,EAAE;AAAA,QACT,OAAO,OAAO,OAAO,EAAE,QAAQ,UAA6B;AAAA,MAAA,CAC/D;AAAA,IACL,CAAC;AAAA,EACL;AACJ;"}
1
+ {"version":3,"file":"approximations-BRXsll0T.js","sources":["../../src/styles/io/approximations.ts"],"sourcesContent":["/**\n * Counting the values a style writer writes as the nearest value its format holds, for the W_STYLE_APPROXIMATED\n * notes every writer reports.\n */\n\nimport type { LossNote } from \"../../types.js\";\nimport { STYLE_ISSUE } from \"../codes.js\";\nimport type { StyleTarget } from \"../types.js\";\n\n/** Counts the values written as the nearest value a format holds, per target and property. */\nexport class StyleApproximations {\n readonly #seen = new Map<string, { count: number; samples: Set<string> }>();\n\n /**\n * Records one value written approximately.\n * @param target - nodes or edges\n * @param property - the property\n * @param value - the exact value\n */\n add(target: StyleTarget, property: string, value: unknown): void {\n const key = `${target}.${property}`;\n const a = this.#seen.get(key) ?? { count: 0, samples: new Set<string>() };\n a.count++;\n if (a.samples.size < 8) {\n a.samples.add(String(value));\n }\n this.#seen.set(key, a);\n }\n\n /**\n * The W_STYLE_APPROXIMATED notes, one per target and property.\n * @param holder - what holds the values, for the message (\"Graphviz\", \"the d3 dialect of JSON\")\n * @returns the notes\n */\n notes(holder: string): LossNote[] {\n return Array.from(this.#seen, ([key, a]) => {\n const [target, property] = key.split(\".\") as [StyleTarget, string];\n return Object.freeze({\n code: STYLE_ISSUE.APPROXIMATED,\n message: `${target} ${property} is written as the nearest value ${holder} has for ${String(a.count)} ${target}${a.count === 1 ? \"\" : \"s\"} (${[...a.samples].join(\", \")}); the graphty.styles block keeps the exact value`,\n column: null,\n count: a.count,\n style: Object.freeze({ target, property: property as never }),\n });\n });\n }\n}\n"],"names":[],"mappings":";AAUO,MAAM,oBAAoB;AAAA,EACpB,4BAAY,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrB,IAAI,QAAqB,UAAkB,OAAsB;AAC7D,UAAM,MAAM,GAAG,MAAM,IAAI,QAAQ;AACjC,UAAM,IAAI,KAAK,MAAM,IAAI,GAAG,KAAK,EAAE,OAAO,GAAG,SAAS,oBAAI,IAAA,EAAY;AACtE,MAAE;AACF,QAAI,EAAE,QAAQ,OAAO,GAAG;AACpB,QAAE,QAAQ,IAAI,OAAO,KAAK,CAAC;AAAA,IAC/B;AACA,SAAK,MAAM,IAAI,KAAK,CAAC;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,QAA4B;AAC9B,WAAO,MAAM,KAAK,KAAK,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM;AACxC,YAAM,CAAC,QAAQ,QAAQ,IAAI,IAAI,MAAM,GAAG;AACxC,aAAO,OAAO,OAAO;AAAA,QACjB,MAAM,YAAY;AAAA,QAClB,SAAS,GAAG,MAAM,IAAI,QAAQ,oCAAoC,MAAM,YAAY,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,GAAG,EAAE,UAAU,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,QACtK,QAAQ;AAAA,QACR,OAAO,EAAE;AAAA,QACT,OAAO,OAAO,OAAO,EAAE,QAAQ,UAA6B;AAAA,MAAA,CAC/D;AAAA,IACL,CAAC;AAAA,EACL;AACJ;"}
@@ -0,0 +1,129 @@
1
+ const fraction = (v) => String(Math.round(v * 1e4) / 1e4);
2
+ function canonBends(source, target, points, yDown) {
3
+ const flip = yDown ? -1 : 1;
4
+ const dx = target[0] - source[0];
5
+ const dy = (target[1] - source[1]) * flip;
6
+ const length2 = dx * dx + dy * dy;
7
+ if (points.length === 0 || length2 <= 0 || !Number.isFinite(length2)) {
8
+ return null;
9
+ }
10
+ const out = [];
11
+ for (const [px, py] of points) {
12
+ const rx = px - source[0];
13
+ const ry = (py - source[1]) * flip;
14
+ const along = (rx * dx + ry * dy) / length2;
15
+ const across = (dx * ry - dy * rx) / length2;
16
+ if (!Number.isFinite(along) || !Number.isFinite(across)) {
17
+ return null;
18
+ }
19
+ out.push(`${fraction(along)},${fraction(across)}`);
20
+ }
21
+ return out.join(" ");
22
+ }
23
+ function bendsToPoints(source, target, value, yDown) {
24
+ const flip = -1;
25
+ const dx = target[0] - source[0];
26
+ const dy = (target[1] - source[1]) * flip;
27
+ const out = [];
28
+ for (const pair of value.trim().split(/\s+/)) {
29
+ const [a, c, extra] = pair.split(",").map(Number);
30
+ if (extra !== void 0 || !Number.isFinite(a) || !Number.isFinite(c)) {
31
+ return null;
32
+ }
33
+ const x = source[0] + a * dx - c * dy;
34
+ const y = source[1] + (a * dy + c * dx) * flip;
35
+ if (!Number.isFinite(x) || !Number.isFinite(y)) {
36
+ return null;
37
+ }
38
+ out.push([x, y]);
39
+ }
40
+ return out.length === 0 ? null : out;
41
+ }
42
+ function flattenCubic(controls, steps = 8) {
43
+ if (controls.length < 4 || (controls.length - 1) % 3 !== 0) {
44
+ return null;
45
+ }
46
+ const out = [controls[0]];
47
+ for (let s = 0; s + 3 < controls.length; s += 3) {
48
+ const [p0, p1, p2, p3] = controls.slice(s, s + 4);
49
+ for (let k = 1; k <= steps; k++) {
50
+ const t = k / steps;
51
+ const u = 1 - t;
52
+ const w = [u * u * u, 3 * u * u * t, 3 * u * t * t, t * t * t];
53
+ out.push([
54
+ w[0] * p0[0] + w[1] * p1[0] + w[2] * p2[0] + w[3] * p3[0],
55
+ w[0] * p0[1] + w[1] * p1[1] + w[2] * p2[1] + w[3] * p3[1]
56
+ ]);
57
+ }
58
+ }
59
+ return out;
60
+ }
61
+ function canonNodeOffsets(center, size, points, yDown) {
62
+ const [hw, hh] = [size[0] / 2, size[1] / 2];
63
+ if (points.length === 0 || Number.isNaN(hw + hh) || hw <= 0 || hh <= 0) {
64
+ return null;
65
+ }
66
+ const flip = yDown ? -1 : 1;
67
+ const out = [];
68
+ for (const [px, py] of points) {
69
+ const x = (px - center[0]) / hw;
70
+ const y = (py - center[1]) * flip / hh;
71
+ if (!Number.isFinite(x) || !Number.isFinite(y)) {
72
+ return null;
73
+ }
74
+ out.push(`${fraction(x)},${fraction(y)}`);
75
+ }
76
+ return out.join(" ");
77
+ }
78
+ function nodeOffsetsToPoints(center, size, value, yDown) {
79
+ const flip = -1;
80
+ const out = [];
81
+ for (const pair of value.trim().split(/\s+/)) {
82
+ const [a, b, extra] = pair.split(",").map(Number);
83
+ const x = center[0] + a * size[0] / 2;
84
+ const y = center[1] + b * size[1] * flip / 2;
85
+ if (extra !== void 0 || !Number.isFinite(x) || !Number.isFinite(y)) {
86
+ return null;
87
+ }
88
+ out.push([x, y]);
89
+ }
90
+ return out.length === 0 ? null : out;
91
+ }
92
+ function flattenQuadSpline(controls, straightness, steps = 8) {
93
+ if (controls.length < 3) {
94
+ return [...controls];
95
+ }
96
+ const s = Math.min(1, Math.max(0, Number.isFinite(straightness) ? straightness : 0));
97
+ const lerp = (a, b, t) => [
98
+ a[0] + (b[0] - a[0]) * t,
99
+ a[1] + (b[1] - a[1]) * t
100
+ ];
101
+ const last = controls.length - 1;
102
+ const out = [controls[0]];
103
+ for (let i = 1; i < last; i++) {
104
+ const c = controls[i];
105
+ const before = i === 1 ? controls[0] : lerp(controls[i - 1], c, 0.5);
106
+ const after = i === last - 1 ? controls[last] : lerp(c, controls[i + 1], 0.5);
107
+ const from = lerp(c, before, 1 - s);
108
+ const to = lerp(c, after, 1 - s);
109
+ for (let k = 0; k <= steps; k++) {
110
+ const t = k / steps;
111
+ const u = 1 - t;
112
+ out.push([
113
+ u * u * from[0] + 2 * u * t * c[0] + t * t * to[0],
114
+ u * u * from[1] + 2 * u * t * c[1] + t * t * to[1]
115
+ ]);
116
+ }
117
+ }
118
+ out.push(controls[last]);
119
+ return out.filter((p, k) => k === 0 || p[0] !== out[k - 1][0] || p[1] !== out[k - 1][1]);
120
+ }
121
+ export {
122
+ flattenQuadSpline as a,
123
+ bendsToPoints as b,
124
+ canonNodeOffsets as c,
125
+ canonBends as d,
126
+ flattenCubic as f,
127
+ nodeOffsetsToPoints as n
128
+ };
129
+ //# sourceMappingURL=bends-BGXjv_U4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bends-BGXjv_U4.js","sources":["../../src/styles/canon/bends.ts"],"sourcesContent":["/**\n * The neutral `bends` value of an edge: the points its route passes through between its two nodes, each relative to\n * the straight line from the source node's center to the target node's center. `along` is how far along that line\n * the point lies (0 at the source center, 1 at the target center) and `across` how far to its left, y up, both as\n * fractions of the line's length. Written `along,across` per point, in order from the source, separated by spaces:\n * `\"0,-0.5 1,-0.5\"` is a route that leaves the source, runs parallel to the line half its length to the right, and\n * comes back to the target. Relative, so a drawing that moves or scales the nodes keeps the route's shape and its\n * right angles.\n */\n\n/** A point in the file's own coordinates. */\nexport type BendPoint = readonly [x: number, y: number];\n\n/**\n * Rounds a fraction to 4 decimals, so a value spells the same whatever float noise the file's numbers carry.\n * @param v - the fraction\n * @returns its spelling\n */\nconst fraction = (v: number): string => String(Math.round(v * 1e4) / 1e4);\n\n/**\n * The `bends` value of an edge whose route passes through `points`.\n * @param source - the source node's center\n * @param target - the target node's center\n * @param points - the bend points, from the source end\n * @param yDown - true when the file's y axis points down (the value is always y up)\n * @returns the value, or null with no bends, no line between distinct centers, or a coordinate that is not finite\n * @category Styles\n */\nexport function canonBends(\n source: BendPoint,\n target: BendPoint,\n points: readonly BendPoint[],\n yDown: boolean,\n): string | null {\n const flip = yDown ? -1 : 1;\n const dx = target[0] - source[0];\n const dy = (target[1] - source[1]) * flip;\n const length2 = dx * dx + dy * dy;\n if (points.length === 0 || length2 <= 0 || !Number.isFinite(length2)) {\n return null;\n }\n const out: string[] = [];\n for (const [px, py] of points) {\n const rx = px - source[0];\n const ry = (py - source[1]) * flip;\n const along = (rx * dx + ry * dy) / length2;\n const across = (dx * ry - dy * rx) / length2;\n if (!Number.isFinite(along) || !Number.isFinite(across)) {\n return null;\n }\n out.push(`${fraction(along)},${fraction(across)}`);\n }\n return out.join(\" \");\n}\n\n/**\n * The bend points a `bends` value places between two node centers: the inverse of {@link canonBends}.\n * @param source - the source node's center\n * @param target - the target node's center\n * @param value - the `bends` value\n * @param yDown - true when the points are wanted in a y-down file's coordinates\n * @returns the points, or null when the value is not `along,across` pairs or a coordinate is not finite\n * @category Styles\n */\nexport function bendsToPoints(source: BendPoint, target: BendPoint, value: string, yDown: boolean): BendPoint[] | null {\n const flip = yDown ? -1 : 1;\n const dx = target[0] - source[0];\n const dy = (target[1] - source[1]) * flip;\n const out: BendPoint[] = [];\n for (const pair of value.trim().split(/\\s+/)) {\n const [a, c, extra] = pair.split(\",\").map(Number);\n if (extra !== undefined || !Number.isFinite(a) || !Number.isFinite(c)) {\n return null;\n }\n const x = source[0] + a * dx - c * dy;\n const y = source[1] + (a * dy + c * dx) * flip;\n if (!Number.isFinite(x) || !Number.isFinite(y)) {\n return null;\n }\n out.push([x, y]);\n }\n return out.length === 0 ? null : out;\n}\n\n/**\n * The points a piecewise cubic Bezier curve passes through, sampled evenly in its parameter: the first control point,\n * then `steps` points along each segment, its last control point included. The input is `3n + 1` control points\n * (a Graphviz spline, a cubic path), each segment sharing its first point with the one before.\n * @param controls - the control points\n * @param steps - how many points each segment is sampled at\n * @returns the points, or null when the count is not `3n + 1` for some n >= 1\n * @category Styles\n */\nexport function flattenCubic(controls: readonly BendPoint[], steps = 8): BendPoint[] | null {\n if (controls.length < 4 || (controls.length - 1) % 3 !== 0) {\n return null;\n }\n const out: BendPoint[] = [controls[0]];\n for (let s = 0; s + 3 < controls.length; s += 3) {\n const [p0, p1, p2, p3] = controls.slice(s, s + 4);\n for (let k = 1; k <= steps; k++) {\n const t = k / steps;\n const u = 1 - t;\n const w = [u * u * u, 3 * u * u * t, 3 * u * t * t, t * t * t];\n out.push([\n w[0] * p0[0] + w[1] * p1[0] + w[2] * p2[0] + w[3] * p3[0],\n w[0] * p0[1] + w[1] * p1[1] + w[2] * p2[1] + w[3] * p3[1],\n ]);\n }\n }\n return out;\n}\n\n/**\n * Points placed on and around one node, each relative to its center as fractions of its half width and half height,\n * y up: `\"1,0\"` is the middle of its right side, `\"0,1\"` the middle of its top. The value of an edge end's port\n * (`sourcePort`, `targetPort`) and of a self-loop's `bends`, which have no line between two centers to be relative\n * to. Relative to the node's size, so a drawing that draws the node larger keeps the point on the same spot.\n * @param center - the node's center\n * @param size - its width and height\n * @param points - the points\n * @param yDown - true when the file's y axis points down (the value is always y up)\n * @returns the value, or null with no points, a size that is not positive, or a coordinate that is not finite\n * @category Styles\n */\nexport function canonNodeOffsets(\n center: BendPoint,\n size: BendPoint,\n points: readonly BendPoint[],\n yDown: boolean,\n): string | null {\n const [hw, hh] = [size[0] / 2, size[1] / 2];\n if (points.length === 0 || Number.isNaN(hw + hh) || hw <= 0 || hh <= 0) {\n return null;\n }\n const flip = yDown ? -1 : 1;\n const out: string[] = [];\n for (const [px, py] of points) {\n const x = (px - center[0]) / hw;\n const y = ((py - center[1]) * flip) / hh;\n if (!Number.isFinite(x) || !Number.isFinite(y)) {\n return null;\n }\n out.push(`${fraction(x)},${fraction(y)}`);\n }\n return out.join(\" \");\n}\n\n/**\n * The points a node-relative value places around a node: the inverse of {@link canonNodeOffsets}.\n * @param center - the node's center\n * @param size - its width and height\n * @param value - the value\n * @param yDown - true when the points are wanted in a y-down file's coordinates\n * @returns the points, or null when the value is not `x,y` pairs or a coordinate is not finite\n * @category Styles\n */\nexport function nodeOffsetsToPoints(\n center: BendPoint,\n size: BendPoint,\n value: string,\n yDown: boolean,\n): BendPoint[] | null {\n const flip = yDown ? -1 : 1;\n const out: BendPoint[] = [];\n for (const pair of value.trim().split(/\\s+/)) {\n const [a, b, extra] = pair.split(\",\").map(Number);\n const x = center[0] + (a * size[0]) / 2;\n const y = center[1] + (b * size[1] * flip) / 2;\n if (extra !== undefined || !Number.isFinite(x) || !Number.isFinite(y)) {\n return null;\n }\n out.push([x, y]);\n }\n return out.length === 0 ? null : out;\n}\n\n/**\n * The points a quadratic spline passes through, as yEd draws a quad curve edge: its first and last control points are\n * the ends, every control point between them pulls the curve without lying on it, and the curve runs from the middle\n * of the leg before such a point to the middle of the leg after it (from the end itself on the first and last legs).\n * `straightness` (0..1) keeps that share of every leg straight, so each curved piece covers only the part of its two\n * legs nearest its control point: 0 is the smooth spline, 1 the control polygon.\n * @param controls - the control points, ends included\n * @param straightness - how straight the legs stay, 0..1\n * @param steps - how many points each curved piece is sampled at\n * @returns the points, ends included; the controls themselves with fewer than three\n * @category Styles\n */\nexport function flattenQuadSpline(controls: readonly BendPoint[], straightness: number, steps = 8): BendPoint[] {\n if (controls.length < 3) {\n return [...controls];\n }\n const s = Math.min(1, Math.max(0, Number.isFinite(straightness) ? straightness : 0));\n const lerp = (a: BendPoint, b: BendPoint, t: number): BendPoint => [\n a[0] + (b[0] - a[0]) * t,\n a[1] + (b[1] - a[1]) * t,\n ];\n const last = controls.length - 1;\n const out: BendPoint[] = [controls[0]];\n for (let i = 1; i < last; i++) {\n const c = controls[i];\n // the joins either side: the middle of each leg, or the end itself on the first and last\n const before = i === 1 ? controls[0] : lerp(controls[i - 1], c, 0.5);\n const after = i === last - 1 ? controls[last] : lerp(c, controls[i + 1], 0.5);\n const from = lerp(c, before, 1 - s);\n const to = lerp(c, after, 1 - s);\n for (let k = 0; k <= steps; k++) {\n const t = k / steps;\n const u = 1 - t;\n out.push([\n u * u * from[0] + 2 * u * t * c[0] + t * t * to[0],\n u * u * from[1] + 2 * u * t * c[1] + t * t * to[1],\n ]);\n }\n }\n out.push(controls[last]);\n // a piece that starts where the one before ends (straightness 0) repeats the join\n return out.filter((p, k) => k === 0 || p[0] !== out[k - 1][0] || p[1] !== out[k - 1][1]);\n}\n"],"names":[],"mappings":"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"}