@graphty/graph-io 0.3.43 → 0.3.44

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 (674) hide show
  1. package/dist/chunks/approximations-3Q4TsdTh.js +40 -0
  2. package/dist/chunks/approximations-3Q4TsdTh.js.map +1 -0
  3. package/dist/chunks/block-JQiwViEt.js +2777 -0
  4. package/dist/chunks/block-JQiwViEt.js.map +1 -0
  5. package/dist/chunks/{choose-DvpbdRuz.js → choose-BemygfH8.js} +3 -2
  6. package/dist/chunks/{choose-DvpbdRuz.js.map → choose-BemygfH8.js.map} +1 -1
  7. package/dist/chunks/{constants-fT3E8JYY.js → constants-BFUR_CtU.js} +6 -2
  8. package/dist/chunks/constants-BFUR_CtU.js.map +1 -0
  9. package/dist/chunks/convert-BcQ8_jMo.js +59 -0
  10. package/dist/chunks/convert-BcQ8_jMo.js.map +1 -0
  11. package/dist/chunks/emit-DCwFLts5.js +3456 -0
  12. package/dist/chunks/emit-DCwFLts5.js.map +1 -0
  13. package/dist/chunks/{escape-B62ZGM_a.js → escape-B1rMftd9.js} +43 -20
  14. package/dist/chunks/escape-B1rMftd9.js.map +1 -0
  15. package/dist/chunks/{export-rKLeGQMo.js → export-D7IGzTG4.js} +196 -792
  16. package/dist/chunks/export-D7IGzTG4.js.map +1 -0
  17. package/dist/chunks/{exporter-BWwEuOPT.js → exporter-BtnqYuuj.js} +22 -12
  18. package/dist/chunks/exporter-BtnqYuuj.js.map +1 -0
  19. package/dist/chunks/{exporter-yLxKBvLE.js → exporter-ChPyhBOv.js} +4 -3
  20. package/dist/chunks/{exporter-yLxKBvLE.js.map → exporter-ChPyhBOv.js.map} +1 -1
  21. package/dist/chunks/{exporter-8hLNemFk.js → exporter-KEPxYUXD.js} +133 -74
  22. package/dist/chunks/exporter-KEPxYUXD.js.map +1 -0
  23. package/dist/chunks/{exporter-RVtXVetw.js → exporter-quPUCBiC.js} +1805 -287
  24. package/dist/chunks/exporter-quPUCBiC.js.map +1 -0
  25. package/dist/chunks/format-GDmO6m6Q.js +676 -0
  26. package/dist/chunks/format-GDmO6m6Q.js.map +1 -0
  27. package/dist/chunks/generic-BL06jrJf.js +1347 -0
  28. package/dist/chunks/generic-BL06jrJf.js.map +1 -0
  29. package/dist/chunks/{importer-WrGRZb0N.js → importer-B7r2owVf.js} +449 -102
  30. package/dist/chunks/importer-B7r2owVf.js.map +1 -0
  31. package/dist/chunks/{importer-Ht7LNg8L.js → importer-BFmOP96W.js} +116 -296
  32. package/dist/chunks/importer-BFmOP96W.js.map +1 -0
  33. package/dist/chunks/{importer-BbNb7eNg.js → importer-C2nzGhdV.js} +1390 -129
  34. package/dist/chunks/importer-C2nzGhdV.js.map +1 -0
  35. package/dist/chunks/{importer-Dz7tI8Sa.js → importer-CbX2_rNF.js} +617 -115
  36. package/dist/chunks/importer-CbX2_rNF.js.map +1 -0
  37. package/dist/chunks/{importer-D794XUTe.js → importer-CdzeN6X4.js} +31 -8
  38. package/dist/chunks/importer-CdzeN6X4.js.map +1 -0
  39. package/dist/chunks/{importer-xZ-3suY1.js → importer-ChKNC_GN.js} +791 -135
  40. package/dist/chunks/importer-ChKNC_GN.js.map +1 -0
  41. package/dist/chunks/{importer-C98dpSH4.js → importer-dwoYpSqb.js} +141 -82
  42. package/dist/chunks/importer-dwoYpSqb.js.map +1 -0
  43. package/dist/chunks/index-B9fdNpTA.js +4310 -0
  44. package/dist/chunks/index-B9fdNpTA.js.map +1 -0
  45. package/dist/chunks/{json-elements-DKSqpNW1.js → json-elements-C4FwgnH5.js} +123 -32
  46. package/dist/chunks/json-elements-C4FwgnH5.js.map +1 -0
  47. package/dist/chunks/lexicon-B-knUi-l.js +508 -0
  48. package/dist/chunks/lexicon-B-knUi-l.js.map +1 -0
  49. package/dist/chunks/{ontology-export-CtRXjg_i.js → ontology-export-BSpbY5FL.js} +3 -2
  50. package/dist/chunks/{ontology-export-CtRXjg_i.js.map → ontology-export-BSpbY5FL.js.map} +1 -1
  51. package/dist/chunks/{records-Cu4bxYOm.js → records-Nwz_rbNt.js} +2 -2
  52. package/dist/chunks/{records-Cu4bxYOm.js.map → records-Nwz_rbNt.js.map} +1 -1
  53. package/dist/chunks/styles-Brt9JMfs.js +690 -0
  54. package/dist/chunks/styles-Brt9JMfs.js.map +1 -0
  55. package/dist/chunks/styles-_N-C8S-U.js +2102 -0
  56. package/dist/chunks/styles-_N-C8S-U.js.map +1 -0
  57. package/dist/chunks/styles-yed-DAfcIkf7.js +842 -0
  58. package/dist/chunks/styles-yed-DAfcIkf7.js.map +1 -0
  59. package/dist/chunks/{text-DHOJXnED.js → text-CgzMqHQb.js} +2 -2
  60. package/dist/chunks/{text-DHOJXnED.js.map → text-CgzMqHQb.js.map} +1 -1
  61. package/dist/chunks/units-XMZFIFe1.js +19 -0
  62. package/dist/chunks/units-XMZFIFe1.js.map +1 -0
  63. package/dist/csv.js +5 -4
  64. package/dist/csv.js.map +1 -1
  65. package/dist/cx.js +1 -1
  66. package/dist/cx2.js +2 -2
  67. package/dist/cys.js +1 -1
  68. package/dist/dot.js +5 -2
  69. package/dist/dot.js.map +1 -1
  70. package/dist/gexf.js +292 -412
  71. package/dist/gexf.js.map +1 -1
  72. package/dist/gml.js +8 -3031
  73. package/dist/gml.js.map +1 -1
  74. package/dist/graph-io.js +354 -240
  75. package/dist/graph-io.js.map +1 -1
  76. package/dist/graphml.js +4 -2
  77. package/dist/graphml.js.map +1 -1
  78. package/dist/json.js +1 -1
  79. package/dist/neo4j.js +4 -3
  80. package/dist/neo4j.js.map +1 -1
  81. package/dist/obo.js +1 -1
  82. package/dist/pajek.js +4 -2
  83. package/dist/positions.d.ts +1 -0
  84. package/dist/positions.js +427 -0
  85. package/dist/positions.js.map +1 -0
  86. package/dist/src/common/codes.d.ts +6 -0
  87. package/dist/src/common/codes.d.ts.map +1 -1
  88. package/dist/src/common/codes.js +6 -0
  89. package/dist/src/common/codes.js.map +1 -1
  90. package/dist/src/common/escape.d.ts.map +1 -1
  91. package/dist/src/common/escape.js +4 -2
  92. package/dist/src/common/escape.js.map +1 -1
  93. package/dist/src/common/export.d.ts +10 -0
  94. package/dist/src/common/export.d.ts.map +1 -1
  95. package/dist/src/common/export.js +123 -100
  96. package/dist/src/common/export.js.map +1 -1
  97. package/dist/src/common/input.d.ts.map +1 -1
  98. package/dist/src/common/input.js +8 -1
  99. package/dist/src/common/input.js.map +1 -1
  100. package/dist/src/common/json-elements.d.ts +12 -9
  101. package/dist/src/common/json-elements.d.ts.map +1 -1
  102. package/dist/src/common/json-elements.js +160 -37
  103. package/dist/src/common/json-elements.js.map +1 -1
  104. package/dist/src/common/notes.d.ts +42 -0
  105. package/dist/src/common/notes.d.ts.map +1 -0
  106. package/dist/src/common/notes.js +72 -0
  107. package/dist/src/common/notes.js.map +1 -0
  108. package/dist/src/common/report.d.ts +18 -0
  109. package/dist/src/common/report.d.ts.map +1 -1
  110. package/dist/src/common/report.js +36 -1
  111. package/dist/src/common/report.js.map +1 -1
  112. package/dist/src/common/units.d.ts +24 -0
  113. package/dist/src/common/units.d.ts.map +1 -0
  114. package/dist/src/common/units.js +26 -0
  115. package/dist/src/common/units.js.map +1 -0
  116. package/dist/src/common/xml.d.ts +18 -0
  117. package/dist/src/common/xml.d.ts.map +1 -1
  118. package/dist/src/common/xml.js +42 -5
  119. package/dist/src/common/xml.js.map +1 -1
  120. package/dist/src/formats/cx/exporter.d.ts +6 -0
  121. package/dist/src/formats/cx/exporter.d.ts.map +1 -1
  122. package/dist/src/formats/cx/exporter.js +71 -8
  123. package/dist/src/formats/cx/exporter.js.map +1 -1
  124. package/dist/src/formats/cx/importer.d.ts +5 -2
  125. package/dist/src/formats/cx/importer.d.ts.map +1 -1
  126. package/dist/src/formats/cx/importer.js +102 -72
  127. package/dist/src/formats/cx/importer.js.map +1 -1
  128. package/dist/src/formats/cx/styles.d.ts +102 -0
  129. package/dist/src/formats/cx/styles.d.ts.map +1 -0
  130. package/dist/src/formats/cx/styles.js +225 -0
  131. package/dist/src/formats/cx/styles.js.map +1 -0
  132. package/dist/src/formats/cx2/exporter.d.ts +5 -0
  133. package/dist/src/formats/cx2/exporter.d.ts.map +1 -1
  134. package/dist/src/formats/cx2/exporter.js +181 -71
  135. package/dist/src/formats/cx2/exporter.js.map +1 -1
  136. package/dist/src/formats/cx2/importer.d.ts +4 -1
  137. package/dist/src/formats/cx2/importer.d.ts.map +1 -1
  138. package/dist/src/formats/cx2/importer.js +19 -1
  139. package/dist/src/formats/cx2/importer.js.map +1 -1
  140. package/dist/src/formats/cx2/styles.d.ts +18 -0
  141. package/dist/src/formats/cx2/styles.d.ts.map +1 -0
  142. package/dist/src/formats/cx2/styles.js +24 -0
  143. package/dist/src/formats/cx2/styles.js.map +1 -0
  144. package/dist/src/formats/cys/constants.d.ts +2 -0
  145. package/dist/src/formats/cys/constants.d.ts.map +1 -1
  146. package/dist/src/formats/cys/constants.js +2 -0
  147. package/dist/src/formats/cys/constants.js.map +1 -1
  148. package/dist/src/formats/cys/exporter.d.ts +6 -2
  149. package/dist/src/formats/cys/exporter.d.ts.map +1 -1
  150. package/dist/src/formats/cys/exporter.js +215 -53
  151. package/dist/src/formats/cys/exporter.js.map +1 -1
  152. package/dist/src/formats/cys/importer.d.ts +2 -1
  153. package/dist/src/formats/cys/importer.d.ts.map +1 -1
  154. package/dist/src/formats/cys/importer.js +119 -6
  155. package/dist/src/formats/cys/importer.js.map +1 -1
  156. package/dist/src/formats/cys/session.d.ts +2 -0
  157. package/dist/src/formats/cys/session.d.ts.map +1 -1
  158. package/dist/src/formats/cys/session.js +5 -0
  159. package/dist/src/formats/cys/session.js.map +1 -1
  160. package/dist/src/formats/cys/styles.d.ts +38 -0
  161. package/dist/src/formats/cys/styles.d.ts.map +1 -0
  162. package/dist/src/formats/cys/styles.js +213 -0
  163. package/dist/src/formats/cys/styles.js.map +1 -0
  164. package/dist/src/formats/cys/tables.d.ts +8 -3
  165. package/dist/src/formats/cys/tables.d.ts.map +1 -1
  166. package/dist/src/formats/cys/tables.js +88 -34
  167. package/dist/src/formats/cys/tables.js.map +1 -1
  168. package/dist/src/formats/dot/exporter.d.ts +2 -0
  169. package/dist/src/formats/dot/exporter.d.ts.map +1 -1
  170. package/dist/src/formats/dot/exporter.js +195 -81
  171. package/dist/src/formats/dot/exporter.js.map +1 -1
  172. package/dist/src/formats/dot/importer.d.ts.map +1 -1
  173. package/dist/src/formats/dot/importer.js +100 -20
  174. package/dist/src/formats/dot/importer.js.map +1 -1
  175. package/dist/src/formats/dot/index.d.ts +1 -0
  176. package/dist/src/formats/dot/index.d.ts.map +1 -1
  177. package/dist/src/formats/dot/index.js +1 -0
  178. package/dist/src/formats/dot/index.js.map +1 -1
  179. package/dist/src/formats/dot/positions.d.ts +14 -0
  180. package/dist/src/formats/dot/positions.d.ts.map +1 -0
  181. package/dist/src/formats/dot/positions.js +70 -0
  182. package/dist/src/formats/dot/positions.js.map +1 -0
  183. package/dist/src/formats/dot/styles.d.ts +82 -0
  184. package/dist/src/formats/dot/styles.d.ts.map +1 -0
  185. package/dist/src/formats/dot/styles.js +1484 -0
  186. package/dist/src/formats/dot/styles.js.map +1 -0
  187. package/dist/src/formats/gexf/exporter.d.ts.map +1 -1
  188. package/dist/src/formats/gexf/exporter.js +20 -5
  189. package/dist/src/formats/gexf/exporter.js.map +1 -1
  190. package/dist/src/formats/gexf/importer.d.ts +8 -1
  191. package/dist/src/formats/gexf/importer.d.ts.map +1 -1
  192. package/dist/src/formats/gexf/importer.js +251 -131
  193. package/dist/src/formats/gexf/importer.js.map +1 -1
  194. package/dist/src/formats/gexf/index.d.ts +8 -0
  195. package/dist/src/formats/gexf/index.d.ts.map +1 -1
  196. package/dist/src/formats/gexf/index.js +10 -2
  197. package/dist/src/formats/gexf/index.js.map +1 -1
  198. package/dist/src/formats/gexf/schema.d.ts +5 -0
  199. package/dist/src/formats/gexf/schema.d.ts.map +1 -1
  200. package/dist/src/formats/gexf/schema.js +5 -0
  201. package/dist/src/formats/gexf/schema.js.map +1 -1
  202. package/dist/src/formats/gexf/styles.d.ts +74 -0
  203. package/dist/src/formats/gexf/styles.d.ts.map +1 -0
  204. package/dist/src/formats/gexf/styles.js +604 -0
  205. package/dist/src/formats/gexf/styles.js.map +1 -0
  206. package/dist/src/formats/gml/exporter.d.ts +1 -5
  207. package/dist/src/formats/gml/exporter.d.ts.map +1 -1
  208. package/dist/src/formats/gml/exporter.js +19 -8
  209. package/dist/src/formats/gml/exporter.js.map +1 -1
  210. package/dist/src/formats/gml/importer.d.ts.map +1 -1
  211. package/dist/src/formats/gml/importer.js +4 -0
  212. package/dist/src/formats/gml/importer.js.map +1 -1
  213. package/dist/src/formats/gml/index.d.ts +2 -1
  214. package/dist/src/formats/gml/index.d.ts.map +1 -1
  215. package/dist/src/formats/gml/index.js +2 -1
  216. package/dist/src/formats/gml/index.js.map +1 -1
  217. package/dist/src/formats/gml/positions.d.ts +14 -0
  218. package/dist/src/formats/gml/positions.d.ts.map +1 -0
  219. package/dist/src/formats/gml/positions.js +46 -0
  220. package/dist/src/formats/gml/positions.js.map +1 -0
  221. package/dist/src/formats/gml/styles.d.ts +59 -0
  222. package/dist/src/formats/gml/styles.d.ts.map +1 -0
  223. package/dist/src/formats/gml/styles.js +1056 -0
  224. package/dist/src/formats/gml/styles.js.map +1 -0
  225. package/dist/src/formats/gml/syntax.d.ts +11 -0
  226. package/dist/src/formats/gml/syntax.d.ts.map +1 -1
  227. package/dist/src/formats/gml/syntax.js +151 -62
  228. package/dist/src/formats/gml/syntax.js.map +1 -1
  229. package/dist/src/formats/graphml/constants.d.ts +4 -0
  230. package/dist/src/formats/graphml/constants.d.ts.map +1 -1
  231. package/dist/src/formats/graphml/constants.js +5 -1
  232. package/dist/src/formats/graphml/constants.js.map +1 -1
  233. package/dist/src/formats/graphml/exporter.d.ts.map +1 -1
  234. package/dist/src/formats/graphml/exporter.js +133 -65
  235. package/dist/src/formats/graphml/exporter.js.map +1 -1
  236. package/dist/src/formats/graphml/importer.d.ts +4 -1
  237. package/dist/src/formats/graphml/importer.d.ts.map +1 -1
  238. package/dist/src/formats/graphml/importer.js +100 -44
  239. package/dist/src/formats/graphml/importer.js.map +1 -1
  240. package/dist/src/formats/graphml/index.d.ts +1 -0
  241. package/dist/src/formats/graphml/index.d.ts.map +1 -1
  242. package/dist/src/formats/graphml/index.js +1 -0
  243. package/dist/src/formats/graphml/index.js.map +1 -1
  244. package/dist/src/formats/graphml/styles-plain.d.ts +19 -0
  245. package/dist/src/formats/graphml/styles-plain.d.ts.map +1 -0
  246. package/dist/src/formats/graphml/styles-plain.js +187 -0
  247. package/dist/src/formats/graphml/styles-plain.js.map +1 -0
  248. package/dist/src/formats/graphml/styles-yed.d.ts +179 -0
  249. package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -0
  250. package/dist/src/formats/graphml/styles-yed.js +1086 -0
  251. package/dist/src/formats/graphml/styles-yed.js.map +1 -0
  252. package/dist/src/formats/graphml/styles-yfiles3.d.ts +19 -0
  253. package/dist/src/formats/graphml/styles-yfiles3.d.ts.map +1 -0
  254. package/dist/src/formats/graphml/styles-yfiles3.js +508 -0
  255. package/dist/src/formats/graphml/styles-yfiles3.js.map +1 -0
  256. package/dist/src/formats/graphml/tree.d.ts.map +1 -1
  257. package/dist/src/formats/graphml/tree.js +34 -19
  258. package/dist/src/formats/graphml/tree.js.map +1 -1
  259. package/dist/src/formats/graphml/yfiles.d.ts +16 -2
  260. package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
  261. package/dist/src/formats/graphml/yfiles.js +83 -12
  262. package/dist/src/formats/graphml/yfiles.js.map +1 -1
  263. package/dist/src/formats/json/exporter.d.ts +5 -0
  264. package/dist/src/formats/json/exporter.d.ts.map +1 -1
  265. package/dist/src/formats/json/exporter.js +68 -25
  266. package/dist/src/formats/json/exporter.js.map +1 -1
  267. package/dist/src/formats/json/importer.d.ts +22 -3
  268. package/dist/src/formats/json/importer.d.ts.map +1 -1
  269. package/dist/src/formats/json/importer.js +439 -264
  270. package/dist/src/formats/json/importer.js.map +1 -1
  271. package/dist/src/formats/json/positions.d.ts +16 -0
  272. package/dist/src/formats/json/positions.d.ts.map +1 -0
  273. package/dist/src/formats/json/positions.js +44 -0
  274. package/dist/src/formats/json/positions.js.map +1 -0
  275. package/dist/src/formats/json/styles.d.ts +102 -0
  276. package/dist/src/formats/json/styles.d.ts.map +1 -0
  277. package/dist/src/formats/json/styles.js +1753 -0
  278. package/dist/src/formats/json/styles.js.map +1 -0
  279. package/dist/src/formats/neo4j/exporter.d.ts.map +1 -1
  280. package/dist/src/formats/neo4j/exporter.js +2 -1
  281. package/dist/src/formats/neo4j/exporter.js.map +1 -1
  282. package/dist/src/formats/pajek/exporter.d.ts +2 -0
  283. package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
  284. package/dist/src/formats/pajek/exporter.js +142 -76
  285. package/dist/src/formats/pajek/exporter.js.map +1 -1
  286. package/dist/src/formats/pajek/importer.d.ts +4 -0
  287. package/dist/src/formats/pajek/importer.d.ts.map +1 -1
  288. package/dist/src/formats/pajek/importer.js +60 -6
  289. package/dist/src/formats/pajek/importer.js.map +1 -1
  290. package/dist/src/formats/pajek/index.d.ts +2 -0
  291. package/dist/src/formats/pajek/index.d.ts.map +1 -1
  292. package/dist/src/formats/pajek/index.js +2 -0
  293. package/dist/src/formats/pajek/index.js.map +1 -1
  294. package/dist/src/formats/pajek/styles.d.ts +50 -0
  295. package/dist/src/formats/pajek/styles.d.ts.map +1 -0
  296. package/dist/src/formats/pajek/styles.js +569 -0
  297. package/dist/src/formats/pajek/styles.js.map +1 -0
  298. package/dist/src/formats/pajek/syntax.d.ts +6 -0
  299. package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
  300. package/dist/src/formats/pajek/syntax.js +6 -0
  301. package/dist/src/formats/pajek/syntax.js.map +1 -1
  302. package/dist/src/formats/xgmml/columns.d.ts.map +1 -1
  303. package/dist/src/formats/xgmml/columns.js +34 -9
  304. package/dist/src/formats/xgmml/columns.js.map +1 -1
  305. package/dist/src/formats/xgmml/constants.d.ts +2 -0
  306. package/dist/src/formats/xgmml/constants.d.ts.map +1 -1
  307. package/dist/src/formats/xgmml/constants.js +3 -1
  308. package/dist/src/formats/xgmml/constants.js.map +1 -1
  309. package/dist/src/formats/xgmml/document.d.ts +12 -8
  310. package/dist/src/formats/xgmml/document.d.ts.map +1 -1
  311. package/dist/src/formats/xgmml/document.js +56 -13
  312. package/dist/src/formats/xgmml/document.js.map +1 -1
  313. package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
  314. package/dist/src/formats/xgmml/emit.js +12 -6
  315. package/dist/src/formats/xgmml/emit.js.map +1 -1
  316. package/dist/src/formats/xgmml/exporter.d.ts +3 -1
  317. package/dist/src/formats/xgmml/exporter.d.ts.map +1 -1
  318. package/dist/src/formats/xgmml/exporter.js +22 -9
  319. package/dist/src/formats/xgmml/exporter.js.map +1 -1
  320. package/dist/src/formats/xgmml/importer.d.ts +2 -1
  321. package/dist/src/formats/xgmml/importer.d.ts.map +1 -1
  322. package/dist/src/formats/xgmml/importer.js +31 -24
  323. package/dist/src/formats/xgmml/importer.js.map +1 -1
  324. package/dist/src/formats/xgmml/styles.d.ts +104 -0
  325. package/dist/src/formats/xgmml/styles.d.ts.map +1 -0
  326. package/dist/src/formats/xgmml/styles.js +310 -0
  327. package/dist/src/formats/xgmml/styles.js.map +1 -0
  328. package/dist/src/index.d.ts +9 -7
  329. package/dist/src/index.d.ts.map +1 -1
  330. package/dist/src/index.js +7 -7
  331. package/dist/src/index.js.map +1 -1
  332. package/dist/src/positions/codes.d.ts +31 -0
  333. package/dist/src/positions/codes.d.ts.map +1 -0
  334. package/dist/src/positions/codes.js +26 -0
  335. package/dist/src/positions/codes.js.map +1 -0
  336. package/dist/src/positions/convert.d.ts +58 -0
  337. package/dist/src/positions/convert.d.ts.map +1 -0
  338. package/dist/src/positions/convert.js +107 -0
  339. package/dist/src/positions/convert.js.map +1 -0
  340. package/dist/src/positions/extract.d.ts +27 -0
  341. package/dist/src/positions/extract.d.ts.map +1 -0
  342. package/dist/src/positions/extract.js +526 -0
  343. package/dist/src/positions/extract.js.map +1 -0
  344. package/dist/src/positions/index.d.ts +10 -0
  345. package/dist/src/positions/index.d.ts.map +1 -0
  346. package/dist/src/positions/index.js +9 -0
  347. package/dist/src/positions/index.js.map +1 -0
  348. package/dist/src/positions/types.d.ts +208 -0
  349. package/dist/src/positions/types.d.ts.map +1 -0
  350. package/dist/src/positions/types.js +10 -0
  351. package/dist/src/positions/types.js.map +1 -0
  352. package/dist/src/registry.d.ts +30 -0
  353. package/dist/src/registry.d.ts.map +1 -1
  354. package/dist/src/registry.js +130 -9
  355. package/dist/src/registry.js.map +1 -1
  356. package/dist/src/styles/annotations.d.ts +132 -0
  357. package/dist/src/styles/annotations.d.ts.map +1 -0
  358. package/dist/src/styles/annotations.js +320 -0
  359. package/dist/src/styles/annotations.js.map +1 -0
  360. package/dist/src/styles/budget.d.ts +45 -0
  361. package/dist/src/styles/budget.d.ts.map +1 -0
  362. package/dist/src/styles/budget.js +58 -0
  363. package/dist/src/styles/budget.js.map +1 -0
  364. package/dist/src/styles/canon/bends.d.ts +32 -0
  365. package/dist/src/styles/canon/bends.d.ts.map +1 -0
  366. package/dist/src/styles/canon/bends.js +74 -0
  367. package/dist/src/styles/canon/bends.js.map +1 -0
  368. package/dist/src/styles/canon/color-tables.d.ts +22 -0
  369. package/dist/src/styles/canon/color-tables.d.ts.map +1 -0
  370. package/dist/src/styles/canon/color-tables.js +369 -0
  371. package/dist/src/styles/canon/color-tables.js.map +1 -0
  372. package/dist/src/styles/canon/color.d.ts +66 -0
  373. package/dist/src/styles/canon/color.d.ts.map +1 -0
  374. package/dist/src/styles/canon/color.js +548 -0
  375. package/dist/src/styles/canon/color.js.map +1 -0
  376. package/dist/src/styles/canon/enums.d.ts +25 -0
  377. package/dist/src/styles/canon/enums.d.ts.map +1 -0
  378. package/dist/src/styles/canon/enums.js +187 -0
  379. package/dist/src/styles/canon/enums.js.map +1 -0
  380. package/dist/src/styles/canon/graphviz.d.ts +48 -0
  381. package/dist/src/styles/canon/graphviz.d.ts.map +1 -0
  382. package/dist/src/styles/canon/graphviz.js +160 -0
  383. package/dist/src/styles/canon/graphviz.js.map +1 -0
  384. package/dist/src/styles/canon/index.d.ts +13 -0
  385. package/dist/src/styles/canon/index.d.ts.map +1 -0
  386. package/dist/src/styles/canon/index.js +13 -0
  387. package/dist/src/styles/canon/index.js.map +1 -0
  388. package/dist/src/styles/canon/number.d.ts +59 -0
  389. package/dist/src/styles/canon/number.d.ts.map +1 -0
  390. package/dist/src/styles/canon/number.js +142 -0
  391. package/dist/src/styles/canon/number.js.map +1 -0
  392. package/dist/src/styles/canon/site.d.ts +51 -0
  393. package/dist/src/styles/canon/site.d.ts.map +1 -0
  394. package/dist/src/styles/canon/site.js +63 -0
  395. package/dist/src/styles/canon/site.js.map +1 -0
  396. package/dist/src/styles/canon/text.d.ts +61 -0
  397. package/dist/src/styles/canon/text.d.ts.map +1 -0
  398. package/dist/src/styles/canon/text.js +199 -0
  399. package/dist/src/styles/canon/text.js.map +1 -0
  400. package/dist/src/styles/codes.d.ts +95 -0
  401. package/dist/src/styles/codes.d.ts.map +1 -0
  402. package/dist/src/styles/codes.js +97 -0
  403. package/dist/src/styles/codes.js.map +1 -0
  404. package/dist/src/styles/cyjs/cascade.d.ts +134 -0
  405. package/dist/src/styles/cyjs/cascade.d.ts.map +1 -0
  406. package/dist/src/styles/cyjs/cascade.js +2252 -0
  407. package/dist/src/styles/cyjs/cascade.js.map +1 -0
  408. package/dist/src/styles/cyjs/defaults-table.d.ts +25 -0
  409. package/dist/src/styles/cyjs/defaults-table.d.ts.map +1 -0
  410. package/dist/src/styles/cyjs/defaults-table.js +76 -0
  411. package/dist/src/styles/cyjs/defaults-table.js.map +1 -0
  412. package/dist/src/styles/cyjs/emit.d.ts +82 -0
  413. package/dist/src/styles/cyjs/emit.d.ts.map +1 -0
  414. package/dist/src/styles/cyjs/emit.js +790 -0
  415. package/dist/src/styles/cyjs/emit.js.map +1 -0
  416. package/dist/src/styles/cyjs/index.d.ts +13 -0
  417. package/dist/src/styles/cyjs/index.d.ts.map +1 -0
  418. package/dist/src/styles/cyjs/index.js +13 -0
  419. package/dist/src/styles/cyjs/index.js.map +1 -0
  420. package/dist/src/styles/cyjs/live.d.ts +46 -0
  421. package/dist/src/styles/cyjs/live.d.ts.map +1 -0
  422. package/dist/src/styles/cyjs/live.js +108 -0
  423. package/dist/src/styles/cyjs/live.js.map +1 -0
  424. package/dist/src/styles/cyjs/mappers.d.ts +147 -0
  425. package/dist/src/styles/cyjs/mappers.d.ts.map +1 -0
  426. package/dist/src/styles/cyjs/mappers.js +744 -0
  427. package/dist/src/styles/cyjs/mappers.js.map +1 -0
  428. package/dist/src/styles/cyjs/selector.d.ts +113 -0
  429. package/dist/src/styles/cyjs/selector.d.ts.map +1 -0
  430. package/dist/src/styles/cyjs/selector.js +611 -0
  431. package/dist/src/styles/cyjs/selector.js.map +1 -0
  432. package/dist/src/styles/cyjs/stylesheet-text.d.ts +37 -0
  433. package/dist/src/styles/cyjs/stylesheet-text.d.ts.map +1 -0
  434. package/dist/src/styles/cyjs/stylesheet-text.js +181 -0
  435. package/dist/src/styles/cyjs/stylesheet-text.js.map +1 -0
  436. package/dist/src/styles/cytoscape/emit.d.ts +125 -0
  437. package/dist/src/styles/cytoscape/emit.d.ts.map +1 -0
  438. package/dist/src/styles/cytoscape/emit.js +1025 -0
  439. package/dist/src/styles/cytoscape/emit.js.map +1 -0
  440. package/dist/src/styles/cytoscape/index.d.ts +10 -0
  441. package/dist/src/styles/cytoscape/index.d.ts.map +1 -0
  442. package/dist/src/styles/cytoscape/index.js +10 -0
  443. package/dist/src/styles/cytoscape/index.js.map +1 -0
  444. package/dist/src/styles/cytoscape/lexicon.d.ts +49 -0
  445. package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -0
  446. package/dist/src/styles/cytoscape/lexicon.js +603 -0
  447. package/dist/src/styles/cytoscape/lexicon.js.map +1 -0
  448. package/dist/src/styles/cytoscape/mappings.d.ts +171 -0
  449. package/dist/src/styles/cytoscape/mappings.d.ts.map +1 -0
  450. package/dist/src/styles/cytoscape/mappings.js +460 -0
  451. package/dist/src/styles/cytoscape/mappings.js.map +1 -0
  452. package/dist/src/styles/cytoscape/resolve.d.ts +137 -0
  453. package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -0
  454. package/dist/src/styles/cytoscape/resolve.js +381 -0
  455. package/dist/src/styles/cytoscape/resolve.js.map +1 -0
  456. package/dist/src/styles/cytoscape/translate.d.ts +50 -0
  457. package/dist/src/styles/cytoscape/translate.d.ts.map +1 -0
  458. package/dist/src/styles/cytoscape/translate.js +156 -0
  459. package/dist/src/styles/cytoscape/translate.js.map +1 -0
  460. package/dist/src/styles/defaults.d.ts +90 -0
  461. package/dist/src/styles/defaults.d.ts.map +1 -0
  462. package/dist/src/styles/defaults.js +414 -0
  463. package/dist/src/styles/defaults.js.map +1 -0
  464. package/dist/src/styles/index.d.ts +15 -0
  465. package/dist/src/styles/index.d.ts.map +1 -0
  466. package/dist/src/styles/index.js +14 -0
  467. package/dist/src/styles/index.js.map +1 -0
  468. package/dist/src/styles/internal.d.ts +17 -0
  469. package/dist/src/styles/internal.d.ts.map +1 -0
  470. package/dist/src/styles/internal.js +16 -0
  471. package/dist/src/styles/internal.js.map +1 -0
  472. package/dist/src/styles/io/approximations.d.ts +24 -0
  473. package/dist/src/styles/io/approximations.d.ts.map +1 -0
  474. package/dist/src/styles/io/approximations.js +51 -0
  475. package/dist/src/styles/io/approximations.js.map +1 -0
  476. package/dist/src/styles/io/block.d.ts +166 -0
  477. package/dist/src/styles/io/block.d.ts.map +1 -0
  478. package/dist/src/styles/io/block.js +930 -0
  479. package/dist/src/styles/io/block.js.map +1 -0
  480. package/dist/src/styles/io/generic.d.ts +88 -0
  481. package/dist/src/styles/io/generic.d.ts.map +1 -0
  482. package/dist/src/styles/io/generic.js +516 -0
  483. package/dist/src/styles/io/generic.js.map +1 -0
  484. package/dist/src/styles/io/index.d.ts +8 -0
  485. package/dist/src/styles/io/index.d.ts.map +1 -0
  486. package/dist/src/styles/io/index.js +7 -0
  487. package/dist/src/styles/io/index.js.map +1 -0
  488. package/dist/src/styles/io/writer.d.ts +80 -0
  489. package/dist/src/styles/io/writer.d.ts.map +1 -0
  490. package/dist/src/styles/io/writer.js +596 -0
  491. package/dist/src/styles/io/writer.js.map +1 -0
  492. package/dist/src/styles/notes.d.ts +47 -0
  493. package/dist/src/styles/notes.d.ts.map +1 -0
  494. package/dist/src/styles/notes.js +140 -0
  495. package/dist/src/styles/notes.js.map +1 -0
  496. package/dist/src/styles/plan/classes.d.ts +31 -0
  497. package/dist/src/styles/plan/classes.d.ts.map +1 -0
  498. package/dist/src/styles/plan/classes.js +139 -0
  499. package/dist/src/styles/plan/classes.js.map +1 -0
  500. package/dist/src/styles/plan/continuous.d.ts +32 -0
  501. package/dist/src/styles/plan/continuous.d.ts.map +1 -0
  502. package/dist/src/styles/plan/continuous.js +165 -0
  503. package/dist/src/styles/plan/continuous.js.map +1 -0
  504. package/dist/src/styles/plan/discrete.d.ts +39 -0
  505. package/dist/src/styles/plan/discrete.d.ts.map +1 -0
  506. package/dist/src/styles/plan/discrete.js +127 -0
  507. package/dist/src/styles/plan/discrete.js.map +1 -0
  508. package/dist/src/styles/plan/families.d.ts +31 -0
  509. package/dist/src/styles/plan/families.d.ts.map +1 -0
  510. package/dist/src/styles/plan/families.js +95 -0
  511. package/dist/src/styles/plan/families.js.map +1 -0
  512. package/dist/src/styles/plan/features.d.ts +58 -0
  513. package/dist/src/styles/plan/features.d.ts.map +1 -0
  514. package/dist/src/styles/plan/features.js +185 -0
  515. package/dist/src/styles/plan/features.js.map +1 -0
  516. package/dist/src/styles/plan/index.d.ts +7 -0
  517. package/dist/src/styles/plan/index.d.ts.map +1 -0
  518. package/dist/src/styles/plan/index.js +7 -0
  519. package/dist/src/styles/plan/index.js.map +1 -0
  520. package/dist/src/styles/plan/plan.d.ts +71 -0
  521. package/dist/src/styles/plan/plan.d.ts.map +1 -0
  522. package/dist/src/styles/plan/plan.js +893 -0
  523. package/dist/src/styles/plan/plan.js.map +1 -0
  524. package/dist/src/styles/plan/resolve.d.ts +137 -0
  525. package/dist/src/styles/plan/resolve.d.ts.map +1 -0
  526. package/dist/src/styles/plan/resolve.js +587 -0
  527. package/dist/src/styles/plan/resolve.js.map +1 -0
  528. package/dist/src/styles/types.d.ts +702 -0
  529. package/dist/src/styles/types.d.ts.map +1 -0
  530. package/dist/src/styles/types.js +10 -0
  531. package/dist/src/styles/types.js.map +1 -0
  532. package/dist/src/styles/vocabulary.d.ts +41 -0
  533. package/dist/src/styles/vocabulary.d.ts.map +1 -0
  534. package/dist/src/styles/vocabulary.js +140 -0
  535. package/dist/src/styles/vocabulary.js.map +1 -0
  536. package/dist/src/types.d.ts +64 -1
  537. package/dist/src/types.d.ts.map +1 -1
  538. package/dist/src/types.js.map +1 -1
  539. package/dist/styles.d.ts +1 -0
  540. package/dist/styles.js +322 -0
  541. package/dist/styles.js.map +1 -0
  542. package/dist/xgmml.js +5 -4
  543. package/dist/xgmml.js.map +1 -1
  544. package/package.json +13 -2
  545. package/src/common/codes.ts +7 -0
  546. package/src/common/escape.ts +5 -2
  547. package/src/common/export.ts +179 -140
  548. package/src/common/input.ts +8 -4
  549. package/src/common/json-elements.ts +169 -38
  550. package/src/common/notes.ts +94 -0
  551. package/src/common/report.ts +41 -1
  552. package/src/common/units.ts +42 -0
  553. package/src/common/xml.ts +45 -5
  554. package/src/formats/cx/exporter.ts +95 -11
  555. package/src/formats/cx/importer.ts +126 -90
  556. package/src/formats/cx/styles.ts +304 -0
  557. package/src/formats/cx2/exporter.ts +234 -77
  558. package/src/formats/cx2/importer.ts +19 -1
  559. package/src/formats/cx2/styles.ts +29 -0
  560. package/src/formats/cys/constants.ts +3 -0
  561. package/src/formats/cys/exporter.ts +246 -60
  562. package/src/formats/cys/importer.ts +125 -9
  563. package/src/formats/cys/session.ts +6 -0
  564. package/src/formats/cys/styles.ts +254 -0
  565. package/src/formats/cys/tables.ts +117 -48
  566. package/src/formats/dot/exporter.ts +262 -126
  567. package/src/formats/dot/importer.ts +111 -20
  568. package/src/formats/dot/index.ts +1 -0
  569. package/src/formats/dot/positions.ts +77 -0
  570. package/src/formats/dot/styles.ts +1741 -0
  571. package/src/formats/gexf/exporter.ts +27 -11
  572. package/src/formats/gexf/importer.ts +308 -158
  573. package/src/formats/gexf/index.ts +10 -0
  574. package/src/formats/gexf/schema.ts +5 -0
  575. package/src/formats/gexf/styles.ts +719 -0
  576. package/src/formats/gml/exporter.ts +33 -14
  577. package/src/formats/gml/importer.ts +4 -0
  578. package/src/formats/gml/index.ts +2 -1
  579. package/src/formats/gml/positions.ts +52 -0
  580. package/src/formats/gml/styles.ts +1248 -0
  581. package/src/formats/gml/syntax.ts +173 -62
  582. package/src/formats/graphml/constants.ts +5 -0
  583. package/src/formats/graphml/exporter.ts +163 -71
  584. package/src/formats/graphml/importer.ts +119 -45
  585. package/src/formats/graphml/index.ts +1 -0
  586. package/src/formats/graphml/styles-plain.ts +236 -0
  587. package/src/formats/graphml/styles-yed.ts +1221 -0
  588. package/src/formats/graphml/styles-yfiles3.ts +573 -0
  589. package/src/formats/graphml/tree.ts +36 -20
  590. package/src/formats/graphml/yfiles.ts +89 -13
  591. package/src/formats/json/exporter.ts +76 -26
  592. package/src/formats/json/importer.ts +541 -322
  593. package/src/formats/json/positions.ts +50 -0
  594. package/src/formats/json/styles.ts +2082 -0
  595. package/src/formats/neo4j/exporter.ts +2 -1
  596. package/src/formats/pajek/exporter.ts +195 -106
  597. package/src/formats/pajek/importer.ts +78 -9
  598. package/src/formats/pajek/index.ts +2 -0
  599. package/src/formats/pajek/styles.ts +685 -0
  600. package/src/formats/pajek/syntax.ts +7 -0
  601. package/src/formats/xgmml/columns.ts +39 -9
  602. package/src/formats/xgmml/constants.ts +3 -0
  603. package/src/formats/xgmml/document.ts +54 -12
  604. package/src/formats/xgmml/emit.ts +11 -6
  605. package/src/formats/xgmml/exporter.ts +32 -13
  606. package/src/formats/xgmml/importer.ts +43 -29
  607. package/src/formats/xgmml/styles.ts +400 -0
  608. package/src/index.ts +16 -0
  609. package/src/positions/codes.ts +32 -0
  610. package/src/positions/convert.ts +123 -0
  611. package/src/positions/extract.ts +619 -0
  612. package/src/positions/index.ts +23 -0
  613. package/src/positions/types.ts +221 -0
  614. package/src/registry.ts +179 -8
  615. package/src/styles/annotations.ts +478 -0
  616. package/src/styles/budget.ts +60 -0
  617. package/src/styles/canon/bends.ts +84 -0
  618. package/src/styles/canon/color-tables.ts +386 -0
  619. package/src/styles/canon/color.ts +624 -0
  620. package/src/styles/canon/enums.ts +211 -0
  621. package/src/styles/canon/graphviz.ts +189 -0
  622. package/src/styles/canon/index.ts +13 -0
  623. package/src/styles/canon/number.ts +152 -0
  624. package/src/styles/canon/site.ts +87 -0
  625. package/src/styles/canon/text.ts +221 -0
  626. package/src/styles/codes.ts +104 -0
  627. package/src/styles/cyjs/cascade.ts +2670 -0
  628. package/src/styles/cyjs/defaults-table.ts +82 -0
  629. package/src/styles/cyjs/emit.ts +951 -0
  630. package/src/styles/cyjs/index.ts +37 -0
  631. package/src/styles/cyjs/live.ts +147 -0
  632. package/src/styles/cyjs/mappers.ts +879 -0
  633. package/src/styles/cyjs/selector.ts +778 -0
  634. package/src/styles/cyjs/stylesheet-text.ts +214 -0
  635. package/src/styles/cytoscape/emit.ts +1264 -0
  636. package/src/styles/cytoscape/index.ts +40 -0
  637. package/src/styles/cytoscape/lexicon.ts +656 -0
  638. package/src/styles/cytoscape/mappings.ts +603 -0
  639. package/src/styles/cytoscape/resolve.ts +521 -0
  640. package/src/styles/cytoscape/translate.ts +237 -0
  641. package/src/styles/defaults.ts +504 -0
  642. package/src/styles/index.ts +57 -0
  643. package/src/styles/internal.ts +17 -0
  644. package/src/styles/io/approximations.ts +47 -0
  645. package/src/styles/io/block.ts +1138 -0
  646. package/src/styles/io/generic.ts +687 -0
  647. package/src/styles/io/index.ts +18 -0
  648. package/src/styles/io/writer.ts +745 -0
  649. package/src/styles/notes.ts +165 -0
  650. package/src/styles/plan/classes.ts +166 -0
  651. package/src/styles/plan/continuous.ts +218 -0
  652. package/src/styles/plan/discrete.ts +165 -0
  653. package/src/styles/plan/families.ts +115 -0
  654. package/src/styles/plan/features.ts +234 -0
  655. package/src/styles/plan/index.ts +7 -0
  656. package/src/styles/plan/plan.ts +1129 -0
  657. package/src/styles/plan/resolve.ts +685 -0
  658. package/src/styles/types.ts +814 -0
  659. package/src/styles/vocabulary.ts +172 -0
  660. package/src/types.ts +76 -1
  661. package/dist/chunks/constants-fT3E8JYY.js.map +0 -1
  662. package/dist/chunks/escape-B62ZGM_a.js.map +0 -1
  663. package/dist/chunks/export-rKLeGQMo.js.map +0 -1
  664. package/dist/chunks/exporter-8hLNemFk.js.map +0 -1
  665. package/dist/chunks/exporter-BWwEuOPT.js.map +0 -1
  666. package/dist/chunks/exporter-RVtXVetw.js.map +0 -1
  667. package/dist/chunks/importer-BbNb7eNg.js.map +0 -1
  668. package/dist/chunks/importer-C98dpSH4.js.map +0 -1
  669. package/dist/chunks/importer-D794XUTe.js.map +0 -1
  670. package/dist/chunks/importer-Dz7tI8Sa.js.map +0 -1
  671. package/dist/chunks/importer-Ht7LNg8L.js.map +0 -1
  672. package/dist/chunks/importer-WrGRZb0N.js.map +0 -1
  673. package/dist/chunks/importer-xZ-3suY1.js.map +0 -1
  674. package/dist/chunks/json-elements-DKSqpNW1.js.map +0 -1
@@ -0,0 +1,814 @@
1
+ /**
2
+ * The common style format: the neutral description of how a graph file draws its nodes and edges, shared by every
3
+ * format's style reader and writer and by the applications that draw it. Everything here is a type; the runtime
4
+ * vocabulary is in `vocabulary.ts`.
5
+ *
6
+ * Every union below is OPEN: a later version may add members, and a consumer skips a member it does not know
7
+ * (with a note of its own) instead of throwing.
8
+ */
9
+
10
+ import type { StyleIssueCode } from "./codes.js";
11
+
12
+ // ============================================================ values
13
+
14
+ /**
15
+ * A plain value a predicate or a mapping table compares with: a string, a number or a boolean.
16
+ * @category Styles
17
+ */
18
+ export type Scalar = string | number | boolean;
19
+
20
+ /**
21
+ * A canonical color: lowercase `#rrggbb`. Alpha never appears here; it is moved to the property's opacity.
22
+ * @category Styles
23
+ */
24
+ export type StyleColor = `#${string}`;
25
+
26
+ /**
27
+ * Node shapes. A shape the vocabulary has no name for is kept as `other:<the file's spelling>`.
28
+ * @category Styles
29
+ */
30
+ export type StyleNodeShape =
31
+ | "ellipse"
32
+ | "rectangle"
33
+ | "round-rectangle"
34
+ | "triangle"
35
+ | "diamond"
36
+ | "pentagon"
37
+ | "hexagon"
38
+ | "octagon"
39
+ | "parallelogram"
40
+ | "trapezoid"
41
+ | "star"
42
+ | "vee"
43
+ | "none"
44
+ | `other:${string}`;
45
+
46
+ /**
47
+ * Node border styles; unknown spellings are kept as `other:<raw>`.
48
+ * @category Styles
49
+ */
50
+ export type StyleBorderStyle = "solid" | "dashed" | "dotted" | "dash-dot" | "double" | `other:${string}`;
51
+
52
+ /**
53
+ * Edge line styles; unknown spellings are kept as `other:<raw>`.
54
+ * @category Styles
55
+ */
56
+ export type StyleLineStyle =
57
+ "solid" | "dashed" | "dotted" | "dash-dot" | "long-dash" | "double" | "zigzag" | "sinewave" | `other:${string}`;
58
+
59
+ /**
60
+ * Arrow shapes at either end of an edge; unknown spellings are kept as `other:<raw>`.
61
+ * @category Styles
62
+ */
63
+ export type StyleArrowShape =
64
+ | "none"
65
+ | "triangle"
66
+ | "triangle-open"
67
+ | "vee"
68
+ | "tee"
69
+ | "diamond"
70
+ | "diamond-open"
71
+ | "circle"
72
+ | "circle-open"
73
+ | "square"
74
+ | "crow"
75
+ | "half"
76
+ | "inverted"
77
+ | `other:${string}`;
78
+
79
+ /**
80
+ * Label font weights.
81
+ * @category Styles
82
+ */
83
+ export type StyleLabelWeight = "normal" | "bold";
84
+
85
+ /**
86
+ * Where a node's label sits relative to the node.
87
+ * @category Styles
88
+ */
89
+ export type StyleLabelPosition =
90
+ "center" | "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right";
91
+
92
+ /**
93
+ * The neutral node properties and the type of each value. Lengths are in the unit `FileStyles.units.length`
94
+ * names; opacities are 0..1.
95
+ * @category Styles
96
+ */
97
+ export interface NodeStyleValues {
98
+ /** The fill color. */
99
+ readonly fill: StyleColor;
100
+ /** The border (outline) color. */
101
+ readonly borderColor: StyleColor;
102
+ /** The label's text color. */
103
+ readonly labelColor: StyleColor;
104
+ /** The opacity of the fill alone, 0..1 (0 is an unfilled node). */
105
+ readonly fillOpacity: number;
106
+ /** The opacity of the whole node, 0..1. */
107
+ readonly opacity: number;
108
+ /** The width. */
109
+ readonly width: number;
110
+ /** The height. */
111
+ readonly height: number;
112
+ /** The border width (0 is no border). */
113
+ readonly borderWidth: number;
114
+ /** A rounded rectangle's corner radius, in the units of `width` and `height`. */
115
+ readonly cornerRadius: number;
116
+ /** The label's font size. */
117
+ readonly labelSize: number;
118
+ /** The shape. */
119
+ readonly shape: StyleNodeShape;
120
+ /** The border's line style. */
121
+ readonly borderStyle: StyleBorderStyle;
122
+ /** The label text, as the tool draws it. */
123
+ readonly label: string;
124
+ /** The tooltip text. */
125
+ readonly tooltip: string;
126
+ /** The label's font family, as the file names it. */
127
+ readonly labelFont: string;
128
+ /** The label's font weight. */
129
+ readonly labelWeight: StyleLabelWeight;
130
+ /** Whether the label is italic. */
131
+ readonly labelItalic: boolean;
132
+ /** Where the label sits relative to the node. */
133
+ readonly labelPosition: StyleLabelPosition;
134
+ /** The URI of an image drawn on the node. */
135
+ readonly image: string;
136
+ /** Whether the node is drawn at all. */
137
+ readonly visible: boolean;
138
+ }
139
+
140
+ /**
141
+ * The neutral edge properties and the type of each value.
142
+ * @category Styles
143
+ */
144
+ export interface EdgeStyleValues {
145
+ /** The line color. */
146
+ readonly color: StyleColor;
147
+ /** The color of the arrow at the source end. */
148
+ readonly sourceArrowColor: StyleColor;
149
+ /** The color of the arrow at the target end. */
150
+ readonly targetArrowColor: StyleColor;
151
+ /** The label's text color. */
152
+ readonly labelColor: StyleColor;
153
+ /** The opacity of the whole edge, 0..1. */
154
+ readonly opacity: number;
155
+ /** The line width. */
156
+ readonly width: number;
157
+ /** The label's font size. */
158
+ readonly labelSize: number;
159
+ /** The arrow size as a factor: 1 is the writing tool's normal size. */
160
+ readonly arrowSize: number;
161
+ /** The line style. */
162
+ readonly lineStyle: StyleLineStyle;
163
+ /** The arrow at the source end. */
164
+ readonly sourceArrow: StyleArrowShape;
165
+ /** The arrow at the target end. */
166
+ readonly targetArrow: StyleArrowShape;
167
+ /** Whether the edge is drawn curved. */
168
+ readonly curved: boolean;
169
+ /**
170
+ * The points the edge's route passes through between its two nodes, each as `along,across` relative to the line
171
+ * from the source node's center to the target's (`along` the fraction of the way along it, `across` the distance
172
+ * to its left, y up, as a fraction of its length), separated by spaces: `"0,-0.5 1,-0.5"`. Drawn as straight
173
+ * segments through them, with rounded corners when `curved`.
174
+ */
175
+ readonly bends: string;
176
+ /** The label text. */
177
+ readonly label: string;
178
+ /** The tooltip text. */
179
+ readonly tooltip: string;
180
+ /** The label's font family. */
181
+ readonly labelFont: string;
182
+ /** The label's font weight. */
183
+ readonly labelWeight: StyleLabelWeight;
184
+ /** Whether the label is italic. */
185
+ readonly labelItalic: boolean;
186
+ /** The label text at the source end. */
187
+ readonly sourceLabel: string;
188
+ /** The label text at the target end. */
189
+ readonly targetLabel: string;
190
+ /** Whether the edge is drawn at all. */
191
+ readonly visible: boolean;
192
+ }
193
+
194
+ /**
195
+ * The neutral properties of the graph as a whole.
196
+ * @category Styles
197
+ */
198
+ export interface GraphStyleValues {
199
+ /** The background color. */
200
+ readonly background: StyleColor;
201
+ }
202
+
203
+ /**
204
+ * A property only graphty draws, carried as `graphty:<channel>` so a file graphty wrote keeps it; other programs
205
+ * never see it.
206
+ * @category Styles
207
+ */
208
+ export type GraphtyStyleProperty = `graphty:${string}`;
209
+
210
+ /**
211
+ * A node property name.
212
+ * @category Styles
213
+ */
214
+ export type NodeStyleProperty = keyof NodeStyleValues | GraphtyStyleProperty;
215
+
216
+ /**
217
+ * An edge property name.
218
+ * @category Styles
219
+ */
220
+ export type EdgeStyleProperty = keyof EdgeStyleValues | GraphtyStyleProperty;
221
+
222
+ /**
223
+ * A node or edge property name.
224
+ * @category Styles
225
+ */
226
+ export type StyleProperty = NodeStyleProperty | EdgeStyleProperty;
227
+
228
+ /**
229
+ * A graph property name.
230
+ * @category Styles
231
+ */
232
+ export type GraphStyleProperty = keyof GraphStyleValues;
233
+
234
+ /**
235
+ * One canonical style value: a color, a number, an enumeration value, a text or a boolean.
236
+ * @category Styles
237
+ */
238
+ export type StyleValue = string | number | boolean;
239
+
240
+ /**
241
+ * Which part of the graph a rule or a note is about.
242
+ * @category Styles
243
+ */
244
+ export type StyleTarget = "node" | "edge";
245
+
246
+ /**
247
+ * The graph's own style values.
248
+ * @category Styles
249
+ */
250
+ export type GraphStyle = Partial<GraphStyleValues>;
251
+
252
+ // ============================================================ dialects and tools
253
+
254
+ /**
255
+ * How a file spells its style values, which decides how a color name, a number or a shape is read. One line per
256
+ * value; the union is open.
257
+ * @category Styles
258
+ */
259
+ export type StyleDialect =
260
+ /** CSS colors (names, `#rgb`, `rgb()`, `hsl()`) and CSS-like lengths: vis.js, sigma, most hand-made JSON. */
261
+ | "css"
262
+ /** X11 color names (`gray` is `#bebebe`). */
263
+ | "x11"
264
+ /** Graphviz: X11 and SVG names, color schemes and `/scheme/name`, `#rrggbbaa`, HSV triples, inches. */
265
+ | "graphviz"
266
+ /** Java's `java.awt.Color` names and `#rrggbb`. */
267
+ | "java"
268
+ /** The dvips CMYK color names Pajek uses (`Red`, `CadetBlue`). */
269
+ | "dvips"
270
+ /** yEd and yFiles for Java 2.x (`y:` GraphML and yEd GML): `#RRGGBBAA` with the alpha last. */
271
+ | "yed"
272
+ /** yFiles 3 and yFiles for HTML: named color constants and `#AARRGGBB` with the alpha first. */
273
+ | "yfiles3"
274
+ /** GEXF `viz:` values: separate r, g, b, a numbers and size factors. */
275
+ | "gexf"
276
+ /** Gephi's GraphML and GML keys (`r`, `g`, `b`, `size`). */
277
+ | "gephi"
278
+ /** Cytoscape desktop's visual property values (CX, CX2, XGMML, sessions). */
279
+ | "cytoscape"
280
+ /** Cytoscape.js stylesheet values. */
281
+ | "cytoscape-js"
282
+ /** vis-network options. */
283
+ | "vis"
284
+ /** graphology attributes as sigma draws them. */
285
+ | "graphology"
286
+ /** A `graphty.styles` block written by graphty: already canonical. */
287
+ | "graphty"
288
+ | (string & {}); // NOSONAR(S4335): an open union, so editors still offer its literal values
289
+
290
+ /**
291
+ * The program whose defaults fill in what a file leaves unset, by id: the keys of the tool defaults table.
292
+ * @category Styles
293
+ */
294
+ export type StyleTool =
295
+ /** Cytoscape desktop's "default" visual style. */
296
+ | "cytoscape"
297
+ /** Cytoscape desktop's renderer fallbacks, used for sessions. */
298
+ | "cytoscape-fallbacks"
299
+ /** Cytoscape.js 3.x. */
300
+ | "cytoscape-js"
301
+ /** Graphviz. */
302
+ | "graphviz"
303
+ /** yEd and yFiles for Java 2.x. */
304
+ | "yed"
305
+ /** yFiles 3 and yFiles for HTML. */
306
+ | "yfiles3"
307
+ /** Gephi. */
308
+ | "gephi"
309
+ /** vis-network. */
310
+ | "vis-network"
311
+ /** sigma.js, which draws graphology files. */
312
+ | "sigma"
313
+ /** Pajek. */
314
+ | "pajek"
315
+ /** OGDF. */
316
+ | "ogdf"
317
+ /** NetworkX's matplotlib drawing (`draw_networkx`). */
318
+ | "networkx"
319
+ /** graphty itself, for a file holding a `graphty.styles` block. */
320
+ | "graphty"
321
+ | (string & {}); // NOSONAR(S4335): an open union, so editors still offer its literal values
322
+
323
+ // ============================================================ rules
324
+
325
+ /**
326
+ * A reference to the per-element values a predicate or a mapping reads. Open union.
327
+ * @category Styles
328
+ */
329
+ export type ColumnRef =
330
+ | {
331
+ /** An attribute column of the snapshot, by name. */
332
+ readonly data: string;
333
+ }
334
+ | {
335
+ /** A column of `ExtractedStyles.columns`, by its generated key. */
336
+ readonly style: string;
337
+ }
338
+ | {
339
+ /** A value computed from the graph itself, live: it follows later edits. */
340
+ readonly computed: "degree" | "indegree" | "outdegree";
341
+ };
342
+
343
+ /**
344
+ * Which elements a rule applies to. Readers and the planner emit only `all`, `has`, `not` over `has`, `eq` and `in`
345
+ * (at most 8 values), with at most one `and`; a wider group is written onto the elements as a style column and
346
+ * selected with `has`. Open union.
347
+ * @category Styles
348
+ */
349
+ export type Predicate =
350
+ | {
351
+ /** Every element. */
352
+ readonly all: true;
353
+ }
354
+ | {
355
+ /** The elements whose column holds a value (not null, not false). */
356
+ readonly has: ColumnRef;
357
+ }
358
+ | {
359
+ /** The elements whose column equals the value. */
360
+ readonly eq: readonly [ColumnRef, Scalar];
361
+ }
362
+ | {
363
+ /** The elements whose column equals one of the values. */
364
+ readonly in: readonly [ColumnRef, readonly Scalar[]];
365
+ }
366
+ | {
367
+ /** The elements every predicate matches. */
368
+ readonly and: readonly Predicate[];
369
+ }
370
+ | {
371
+ /** The elements any predicate matches. */
372
+ readonly or: readonly Predicate[];
373
+ }
374
+ | {
375
+ /** The elements the predicate does not match. */
376
+ readonly not: Predicate;
377
+ };
378
+
379
+ /**
380
+ * One point of a continuous mapping, in Cytoscape's model: exactly at `at` the value is `value`; between two points
381
+ * `above` of the left one interpolates to `below` of the right one (numbers linearly, colors per sRGB channel);
382
+ * below the first point the value is its `below`, above the last its `above`.
383
+ * @category Styles
384
+ */
385
+ export interface ContinuousPoint {
386
+ /** The input value. */
387
+ readonly at: number;
388
+ /** The value just below `at`. */
389
+ readonly below: StyleValue;
390
+ /** The value exactly at `at`. */
391
+ readonly value: StyleValue;
392
+ /** The value just above `at`. */
393
+ readonly above: StyleValue;
394
+ }
395
+
396
+ /**
397
+ * How a rule turns an element's value into a style value. A discrete table's absent key, a passthrough's null and
398
+ * a continuous mapping over a missing or non-numeric value give no result, and the rules beneath decide.
399
+ * Open union.
400
+ * @category Styles
401
+ */
402
+ export type Mapping =
403
+ | {
404
+ /** The column's value is the style value. */
405
+ readonly kind: "passthrough";
406
+ /** The column read. */
407
+ readonly by: ColumnRef;
408
+ }
409
+ | {
410
+ /** A table from the column's value to the style value. */
411
+ readonly kind: "discrete";
412
+ /** The column read. */
413
+ readonly by: ColumnRef;
414
+ /** `[key, style value]` pairs; a list value matches by its first item that has an entry. */
415
+ readonly table: readonly (readonly [Scalar, StyleValue])[];
416
+ }
417
+ | {
418
+ /** Points between which numbers and colors are interpolated. */
419
+ readonly kind: "continuous";
420
+ /** The column read; it must hold numbers. */
421
+ readonly by: ColumnRef;
422
+ /** The points, in increasing `at`. */
423
+ readonly points: readonly ContinuousPoint[];
424
+ };
425
+
426
+ /**
427
+ * What a rule is: the defaults, a group, a data mapping, per-element copies or the exceptions on top. Open union.
428
+ * @category Styles
429
+ */
430
+ export type StyleRuleRole = "defaults" | "group" | "mapping" | "passthrough" | "exceptions" | (string & {}); // NOSONAR(S4335): an open union, so editors still offer its literal values
431
+
432
+ /**
433
+ * Where a rule came from: written by the file, recovered from its values, or the writing tool's default. Open union.
434
+ * @category Styles
435
+ */
436
+ export type StyleRuleOrigin = "declared" | "inferred" | "tool" | (string & {}); // NOSONAR(S4335): an open union, so editors still offer its literal values
437
+
438
+ /**
439
+ * Why a rule copies values instead of explaining them, or how it was built. Open union.
440
+ * @category Styles
441
+ */
442
+ export type StyleRuleReason =
443
+ /** No attribute, degree or class explains the values: they are copied per element. */
444
+ | "NO_EXPLANATION"
445
+ /** The values are explained by classes of elements that share a combination of styles. */
446
+ | "STYLE_CLASS"
447
+ /** The rule was folded into a copy to keep the number of rules per kind bounded. */
448
+ | "LAYER_CAP"
449
+ /** Edges with no color of their own take their source node's color, as the writing tool draws them. */
450
+ | "SOURCE_NODE_COLOR"
451
+ /** Edges with no width of their own are as thick as their weight, as the writing tool draws them. */
452
+ | "EDGE_WEIGHT"
453
+ /** Nodes with no label of their own show their name, as the writing tool draws them (Graphviz's `\N`). */
454
+ | "NODE_NAME"
455
+ /** The file computes the value with a function; the drawn values are copied. */
456
+ | "FUNCTION"
457
+ /** The work budget ran out before the values were explained; they are copied. */
458
+ | "BUDGET"
459
+ /** The file's selector is too wide for a short predicate; its members are marked on the elements. */
460
+ | "SELECTOR"
461
+ /** A mapping table too large to keep as a table; its results are precomputed per element. */
462
+ | "TABLE_SIZE"
463
+ /** A scale the format cannot express (a palette, a logarithmic or quantile scale); values are copied. */
464
+ | "SCALE"
465
+ /** A calculated value; the computed values are copied. */
466
+ | "CALCULATED"
467
+ /** A value read from a path the file does not hold (an algorithm result); values are copied. */
468
+ | "RESULT_PATH"
469
+ | (string & {}); // NOSONAR(S4335): an open union, so editors still offer its literal values
470
+
471
+ /**
472
+ * Facts about a rule an application may show; never sentences.
473
+ * @category Styles
474
+ */
475
+ export interface StyleRuleFacts {
476
+ /** How many elements the rule applies to. */
477
+ readonly elements?: number;
478
+ /** How many classes a class rule holds. */
479
+ readonly classes?: number;
480
+ /** How many distinct values a copied column has. */
481
+ readonly distinctValues?: number;
482
+ /** Why the rule copies values or how it was built. */
483
+ readonly reason?: StyleRuleReason;
484
+ /** The file's own name for each generated value: `[generated key or class number, the file's name]`. */
485
+ readonly names?: readonly (readonly [Scalar, string])[];
486
+ }
487
+
488
+ /**
489
+ * One rule of a file's styles. Rules are ordered bottom to top; per property the topmost matching rule that gives a
490
+ * value wins. A property is written by `set` or by `map`, never both, within one rule.
491
+ * @category Styles
492
+ */
493
+ export interface StyleRule {
494
+ /** Stable within one extraction (`node.defaults`, `node.by.Modularity Class`). */
495
+ readonly id: string;
496
+ /** Nodes or edges. */
497
+ readonly target: StyleTarget;
498
+ /** What the rule is. */
499
+ readonly role: StyleRuleRole;
500
+ /** Written by the file, recovered from its values, or the writing tool's default. */
501
+ readonly origin: StyleRuleOrigin;
502
+ /** Which elements the rule applies to. */
503
+ readonly where: Predicate;
504
+ /** Constant values. */
505
+ readonly set?: Partial<Record<StyleProperty, StyleValue>>;
506
+ /** Values computed per element. */
507
+ readonly map?: Partial<Record<StyleProperty, Mapping>>;
508
+ /** Facts an application may show. */
509
+ readonly facts?: StyleRuleFacts;
510
+ /**
511
+ * JSON a consumer attaches for its own round trip, keyed by the consumer's package name; carried untouched and
512
+ * never interpreted.
513
+ */
514
+ readonly ext?: Readonly<Record<string, unknown>>;
515
+ }
516
+
517
+ // ============================================================ notes
518
+
519
+ /**
520
+ * The code of a style note: every `W_STYLE_` code of `STYLE_ISSUE`.
521
+ * @category Styles
522
+ */
523
+ export type StyleNoteCode = Extract<StyleIssueCode, `W_STYLE_${string}`>;
524
+
525
+ /**
526
+ * One aggregated note: everything approximated, dropped or malformed for one code, target and property.
527
+ * @category Styles
528
+ */
529
+ export interface StyleNote {
530
+ /** The condition. */
531
+ readonly code: StyleNoteCode;
532
+ /** The facts. */
533
+ readonly params: {
534
+ /** The property (or the file's own name for the construct) the note is about, or null. */
535
+ readonly property: string | null;
536
+ /** Nodes, edges, the graph, or null for the file as a whole. */
537
+ readonly target: StyleTarget | "graph" | null;
538
+ /** How many times the condition occurred. */
539
+ readonly count: number;
540
+ /** Up to 8 distinct examples, each at most 80 characters. */
541
+ readonly samples: readonly string[];
542
+ };
543
+ /**
544
+ * The element indexes the note covers, sorted, when every occurrence named one; otherwise only how many
545
+ * occurrences there were.
546
+ */
547
+ readonly elements?:
548
+ | readonly number[]
549
+ | {
550
+ /** How many occurrences there were. */
551
+ readonly count: number;
552
+ };
553
+ /** English for graph-io's own report; an application writes its own words from the code and params. */
554
+ readonly message: string;
555
+ }
556
+
557
+ // ============================================================ the description
558
+
559
+ /**
560
+ * The small, JSON-serializable description of a file's styles.
561
+ * @category Styles
562
+ */
563
+ export interface FileStyles {
564
+ /** Changes only when the meaning of an existing construct changes. */
565
+ readonly version: 1;
566
+ /** The format, the dialect of its values, and the program whose defaults were applied (null when unknown). */
567
+ readonly source: {
568
+ /** The graph-io format id. */
569
+ readonly format: string;
570
+ /** How the file spells its values. */
571
+ readonly dialect: StyleDialect | null;
572
+ /** The program whose defaults were applied, or null when the writer is not identified. */
573
+ readonly tool: StyleTool | null;
574
+ };
575
+ /** The unit of every length: pixels, or the writing tool's relative size factor. */
576
+ readonly units: {
577
+ /** Pixels, or the writing tool's relative size factor. */
578
+ readonly length: "px" | "relative";
579
+ };
580
+ /** The graph's own style. */
581
+ readonly graph: GraphStyle;
582
+ /** Bottom to top. */
583
+ readonly rules: readonly StyleRule[];
584
+ /** Everything approximated, dropped or malformed. */
585
+ readonly notes: readonly StyleNote[];
586
+ }
587
+
588
+ /**
589
+ * One column of per-element style values, by element index; null where the column has no value.
590
+ * @category Styles
591
+ */
592
+ export type StyleColumn = readonly (StyleValue | null)[];
593
+
594
+ /**
595
+ * The per-element style columns a description's rules read through `{ style: key }`, per target. Keys are generated
596
+ * by graph-io (`class`, `member.3`, `exceptions.fill`, `copy.fill`), never taken from file text.
597
+ * @category Styles
598
+ */
599
+ export interface StyleColumns {
600
+ /** Node columns by key. */
601
+ readonly node: ReadonlyMap<string, StyleColumn>;
602
+ /** Edge columns by key. */
603
+ readonly edge: ReadonlyMap<string, StyleColumn>;
604
+ }
605
+
606
+ /**
607
+ * One candidate column that may explain style values: an attribute, a computed degree or a style column.
608
+ * @category Styles
609
+ */
610
+ export interface StyleFeature {
611
+ /** Where the values come from. */
612
+ readonly ref: ColumnRef;
613
+ /** The values, by element index. */
614
+ readonly values: readonly (Scalar | null)[];
615
+ }
616
+
617
+ /**
618
+ * The candidate explaining columns per target, kept so a consumer can plan again with the same inputs.
619
+ * @category Styles
620
+ */
621
+ export interface StyleFeatures {
622
+ /** Node features. */
623
+ readonly node: readonly StyleFeature[];
624
+ /** Edge features. */
625
+ readonly edge: readonly StyleFeature[];
626
+ }
627
+
628
+ /**
629
+ * Which graph a set of styles belongs to: style values are indexed by element, so they are never written onto a
630
+ * different graph.
631
+ * @category Styles
632
+ */
633
+ export interface StyleFingerprint {
634
+ /** The node count. */
635
+ readonly nodes: number;
636
+ /** The edge count. */
637
+ readonly edges: number;
638
+ /**
639
+ * The edges a file holds: an undirected edge of a directed graph, which the graph holds as two halves, counted
640
+ * once. Absent in a fingerprint made before it was recorded, which then means `edges`.
641
+ */
642
+ readonly heldEdges?: number;
643
+ /** A hash of the node ids, whatever their order. */
644
+ readonly ids: string;
645
+ }
646
+
647
+ /**
648
+ * A file's styles: the description, the per-element values it reads, the candidate features and the graph it
649
+ * belongs to.
650
+ * @category Styles
651
+ */
652
+ export interface ExtractedStyles {
653
+ /** The JSON-serializable description. */
654
+ readonly styles: FileStyles;
655
+ /** The per-element values the description refers to. */
656
+ readonly columns: StyleColumns;
657
+ /** Candidate explaining columns, for planning again. */
658
+ readonly features: StyleFeatures;
659
+ /** The graph the styles were read from or built for. */
660
+ readonly fingerprint: StyleFingerprint;
661
+ }
662
+
663
+ // ============================================================ reading styles (the importer contract)
664
+
665
+ /**
666
+ * One counted work budget, shared by everything that reads, plans or replays one import's styles.
667
+ * @category Styles
668
+ */
669
+ export interface StyleWorkBudget {
670
+ /** Spends `operations` for a target; false once that target's budget is exhausted. */
671
+ spend(target: StyleTarget, operations: number): boolean;
672
+ /** Whether the target's budget is exhausted. */
673
+ exhausted(target: StyleTarget): boolean;
674
+ }
675
+
676
+ /**
677
+ * What an importer's `styles()` receives.
678
+ * @category Styles
679
+ */
680
+ export interface StyleReadContext {
681
+ /** Cancels the extraction. */
682
+ readonly signal?: AbortSignal;
683
+ /** The counted work budget. */
684
+ readonly budget: StyleWorkBudget;
685
+ /**
686
+ * What this import's `import()` passed to `report.keepForStyles(value)`: a stylesheet, a groups object, a legend;
687
+ * undefined when it kept nothing. Per import, so imports running at once never mix.
688
+ */
689
+ readonly kept: unknown;
690
+ }
691
+
692
+ /**
693
+ * The simple path's raw values: per property, either a snapshot column by name (`{ data: "color" }`, read by
694
+ * graph-io, list values flattened) or an array of raw values by element index.
695
+ * @category Styles
696
+ */
697
+ export type RawStyleValues = Partial<Record<StyleProperty, RawStyleColumn | readonly unknown[]>>;
698
+
699
+ /**
700
+ * A snapshot column named as the source of raw style values.
701
+ * @category Styles
702
+ */
703
+ export interface RawStyleColumn {
704
+ /** The column's name. */
705
+ readonly data: string;
706
+ }
707
+
708
+ /**
709
+ * The advanced path's per-target output: canonical values, the rules the file declares, and the reader's own
710
+ * style columns and features.
711
+ * @category Styles
712
+ */
713
+ export interface ReaderOutput {
714
+ /** Canonical values per property, by element index: what the writing tool draws. */
715
+ readonly values: Partial<Record<StyleProperty, StyleColumn>>;
716
+ /** Rules the file declares, bottom to top. */
717
+ readonly rules?: readonly StyleRule[];
718
+ /** The reader's own style columns (memberships, cascade winners). */
719
+ readonly columns?: ReadonlyMap<string, StyleColumn>;
720
+ /** Extra candidate features. */
721
+ readonly features?: readonly StyleFeature[];
722
+ }
723
+
724
+ /**
725
+ * What an importer's `styles()` returns: the simple path (a dialect and raw values; graph-io does the rest) or the
726
+ * advanced path (canonical values and declared rules).
727
+ * @category Styles
728
+ */
729
+ export type ImporterStyles =
730
+ | {
731
+ /** How the raw values are spelled. */
732
+ readonly dialect: StyleDialect;
733
+ /** Raw node values. */
734
+ readonly node?: RawStyleValues;
735
+ /** Raw edge values. */
736
+ readonly edge?: RawStyleValues;
737
+ }
738
+ | {
739
+ /** Marks the advanced path. */
740
+ readonly canonical: true;
741
+ /** How the file spelled its values. */
742
+ readonly dialect?: StyleDialect | null;
743
+ /** The program whose defaults apply, or null. */
744
+ readonly tool?: StyleTool | null;
745
+ /** The unit of every length. */
746
+ readonly units?: "px" | "relative";
747
+ /** Node output. */
748
+ readonly node?: ReaderOutput;
749
+ /** Edge output. */
750
+ readonly edge?: ReaderOutput;
751
+ /** The graph's own style. */
752
+ readonly graph?: GraphStyle;
753
+ /** The reader's notes. */
754
+ readonly notes?: readonly StyleNote[];
755
+ /**
756
+ * Whether the format writes a node's fill opacity and an edge's opacity as the alpha of its color (`rgba()`,
757
+ * `#RRGGBBAA`), so the reader gives an opacity only below 1. In a file graphty wrote, an opaque color then
758
+ * states opacity 1, which overrides a translucent value of the `graphty.styles` block (another program
759
+ * made the element opaque).
760
+ */
761
+ readonly opacityInColor?: boolean;
762
+ /**
763
+ * The text of a `graphty.styles` block the file holds in a place of its own (an XML element, an aspect, a
764
+ * comment) rather than as a graph attribute; graph-io reads it exactly as it reads a block carried as a
765
+ * graph attribute.
766
+ */
767
+ readonly block?: string | null;
768
+ /**
769
+ * The data columns the values were read from (a format's own style columns), per target: they hold the
770
+ * styles themselves, so they are not offered to the planner as columns that explain them.
771
+ */
772
+ readonly readFrom?: {
773
+ /** Node columns. */
774
+ readonly node?: readonly string[];
775
+ /** Edge columns. */
776
+ readonly edge?: readonly string[];
777
+ };
778
+ };
779
+
780
+ // ============================================================ writing styles (the exporter contract)
781
+
782
+ /**
783
+ * What a format's writer can hold: per target, the properties it writes natively, and where the `graphty.styles`
784
+ * block and the tagged per-element values go: `"native"` (the exporter places them itself), `"attributes"`
785
+ * (graph-io adds them to the snapshot as a graph attribute and element attributes) or `"none"`.
786
+ * @category Styles
787
+ */
788
+ export interface StyleWriteCapabilities {
789
+ /** Node properties written natively. */
790
+ readonly node: readonly NodeStyleProperty[];
791
+ /** Edge properties written natively. */
792
+ readonly edge: readonly EdgeStyleProperty[];
793
+ /** Graph properties written natively. */
794
+ readonly graph?: readonly GraphStyleProperty[];
795
+ /** Where the block and the tagged values go. */
796
+ readonly block: "native" | "attributes" | "none";
797
+ }
798
+
799
+ /**
800
+ * Why a `graphty.styles` block was ignored. Open union.
801
+ * @category Styles
802
+ */
803
+ export type StyleBlockIgnoredReason =
804
+ /** The block is not valid JSON. */
805
+ | "NOT_JSON"
806
+ /** The block is larger than graph-io reads. */
807
+ | "TOO_LARGE"
808
+ /** The block's version is one this graph-io does not read. */
809
+ | "VERSION"
810
+ /** The block describes a different graph: elements were added or removed since it was written. */
811
+ | "FINGERPRINT"
812
+ /** The block's content does not have the expected shape. */
813
+ | "INVALID"
814
+ | (string & {}); // NOSONAR(S4335): an open union, so editors still offer its literal values