@genome-spy/core 0.36.1 → 0.37.0

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 (523) hide show
  1. package/README.md +1 -0
  2. package/dist/{index.es.js → bundled/index.es.js} +2253 -2115
  3. package/dist/{index.js → bundled/index.js} +180 -44
  4. package/dist/src/data/collector.d.ts +36 -0
  5. package/dist/src/data/collector.d.ts.map +1 -0
  6. package/dist/src/data/collector.js +184 -0
  7. package/dist/src/data/collector.test.js +84 -0
  8. package/dist/src/data/dataFlow.d.ts +65 -0
  9. package/dist/src/data/dataFlow.d.ts.map +1 -0
  10. package/dist/src/data/dataFlow.js +142 -0
  11. package/dist/src/data/dataFlow.test.js +5 -0
  12. package/dist/src/data/facetNode.d.ts +17 -0
  13. package/dist/src/data/facetNode.d.ts.map +1 -0
  14. package/dist/src/data/facetNode.js +17 -0
  15. package/dist/src/data/flow.test.js +72 -0
  16. package/dist/src/data/flowNode.d.ts +136 -0
  17. package/dist/src/data/flowNode.d.ts.map +1 -0
  18. package/dist/src/data/flowNode.js +286 -0
  19. package/dist/src/data/flowNode.test.js +50 -0
  20. package/dist/src/data/flowOptimizer.d.ts +27 -0
  21. package/dist/src/data/flowOptimizer.d.ts.map +1 -0
  22. package/dist/src/data/flowOptimizer.js +133 -0
  23. package/dist/src/data/flowOptimizer.test.js +193 -0
  24. package/dist/src/data/flowTestUtils.d.ts +30 -0
  25. package/dist/src/data/flowTestUtils.d.ts.map +1 -0
  26. package/dist/src/data/flowTestUtils.js +63 -0
  27. package/dist/src/data/formats/fasta.d.ts +20 -0
  28. package/dist/src/data/formats/fasta.d.ts.map +1 -0
  29. package/dist/src/data/formats/fasta.js +32 -0
  30. package/dist/src/data/formats/fasta.test.js +27 -0
  31. package/dist/src/data/sources/dataSource.d.ts +12 -0
  32. package/dist/src/data/sources/dataSource.d.ts.map +1 -0
  33. package/dist/src/data/sources/dataSource.js +25 -0
  34. package/dist/src/data/sources/dataSourceFactory.d.ts +16 -0
  35. package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -0
  36. package/dist/src/data/sources/dataSourceFactory.js +127 -0
  37. package/dist/src/data/sources/dataUtils.d.ts +50 -0
  38. package/dist/src/data/sources/dataUtils.d.ts.map +1 -0
  39. package/dist/src/data/sources/dataUtils.js +83 -0
  40. package/dist/src/data/sources/dynamic/README.md +3 -0
  41. package/dist/src/data/sources/dynamic/axisGenomeSource.d.ts +13 -0
  42. package/dist/src/data/sources/dynamic/axisGenomeSource.d.ts.map +1 -0
  43. package/dist/src/data/sources/dynamic/axisGenomeSource.js +19 -0
  44. package/dist/src/data/sources/dynamic/axisTickSource.d.ts +18 -0
  45. package/dist/src/data/sources/dynamic/axisTickSource.d.ts.map +1 -0
  46. package/dist/src/data/sources/dynamic/axisTickSource.js +73 -0
  47. package/dist/src/data/sources/dynamic/bamSource.d.ts +46 -0
  48. package/dist/src/data/sources/dynamic/bamSource.d.ts.map +1 -0
  49. package/dist/src/data/sources/dynamic/bamSource.js +115 -0
  50. package/dist/src/data/sources/dynamic/bigBedSource.d.ts +51 -0
  51. package/dist/src/data/sources/dynamic/bigBedSource.d.ts.map +1 -0
  52. package/dist/src/data/sources/dynamic/bigBedSource.js +128 -0
  53. package/dist/src/data/sources/dynamic/bigWigSource.d.ts +58 -0
  54. package/dist/src/data/sources/dynamic/bigWigSource.d.ts.map +1 -0
  55. package/dist/src/data/sources/dynamic/bigWigSource.js +166 -0
  56. package/dist/src/data/sources/dynamic/gff3Source.d.ts +8 -0
  57. package/dist/src/data/sources/dynamic/gff3Source.d.ts.map +1 -0
  58. package/dist/src/data/sources/dynamic/gff3Source.js +19 -0
  59. package/dist/src/data/sources/dynamic/indexedFastaSource.d.ts +30 -0
  60. package/dist/src/data/sources/dynamic/indexedFastaSource.d.ts.map +1 -0
  61. package/dist/src/data/sources/dynamic/indexedFastaSource.js +86 -0
  62. package/dist/src/data/sources/dynamic/singleAxisLazySource.d.ts +42 -0
  63. package/dist/src/data/sources/dynamic/singleAxisLazySource.d.ts.map +1 -0
  64. package/dist/src/data/sources/dynamic/singleAxisLazySource.js +129 -0
  65. package/dist/src/data/sources/dynamic/tabixSource.d.ts +54 -0
  66. package/dist/src/data/sources/dynamic/tabixSource.d.ts.map +1 -0
  67. package/dist/src/data/sources/dynamic/tabixSource.js +140 -0
  68. package/dist/src/data/sources/dynamic/windowedMixin.d.ts +32 -0
  69. package/dist/src/data/sources/dynamic/windowedMixin.d.ts.map +1 -0
  70. package/dist/src/data/sources/dynamic/windowedMixin.js +53 -0
  71. package/dist/src/data/sources/inlineSource.d.ts +16 -0
  72. package/dist/src/data/sources/inlineSource.d.ts.map +1 -0
  73. package/dist/src/data/sources/inlineSource.js +68 -0
  74. package/dist/src/data/sources/inlineSource.test.js +56 -0
  75. package/dist/src/data/sources/namedSource.d.ts +25 -0
  76. package/dist/src/data/sources/namedSource.d.ts.map +1 -0
  77. package/dist/src/data/sources/namedSource.js +80 -0
  78. package/dist/src/data/sources/sequenceSource.d.ts +17 -0
  79. package/dist/src/data/sources/sequenceSource.d.ts.map +1 -0
  80. package/dist/src/data/sources/sequenceSource.js +47 -0
  81. package/dist/src/data/sources/sequenceSource.test.js +46 -0
  82. package/dist/src/data/sources/urlSource.d.ts +16 -0
  83. package/dist/src/data/sources/urlSource.d.ts.map +1 -0
  84. package/dist/src/data/sources/urlSource.js +74 -0
  85. package/dist/src/data/transforms/aggregate.d.ts +18 -0
  86. package/dist/src/data/transforms/aggregate.d.ts.map +1 -0
  87. package/dist/src/data/transforms/aggregate.js +67 -0
  88. package/dist/src/data/transforms/clone.d.ts +15 -0
  89. package/dist/src/data/transforms/clone.d.ts.map +1 -0
  90. package/dist/src/data/transforms/clone.js +40 -0
  91. package/dist/src/data/transforms/clone.test.js +11 -0
  92. package/dist/src/data/transforms/coverage.d.ts +30 -0
  93. package/dist/src/data/transforms/coverage.d.ts.map +1 -0
  94. package/dist/src/data/transforms/coverage.js +183 -0
  95. package/dist/src/data/transforms/coverage.test.js +123 -0
  96. package/dist/src/data/transforms/filter.d.ts +12 -0
  97. package/dist/src/data/transforms/filter.d.ts.map +1 -0
  98. package/dist/src/data/transforms/filter.js +33 -0
  99. package/dist/src/data/transforms/filter.test.js +18 -0
  100. package/dist/src/data/transforms/filterScoredLabels.d.ts +29 -0
  101. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -0
  102. package/dist/src/data/transforms/filterScoredLabels.js +134 -0
  103. package/dist/src/data/transforms/flatten.d.ts +10 -0
  104. package/dist/src/data/transforms/flatten.d.ts.map +1 -0
  105. package/dist/src/data/transforms/flatten.js +68 -0
  106. package/dist/src/data/transforms/flatten.test.js +93 -0
  107. package/dist/src/data/transforms/flattenCompressedExons.d.ts +19 -0
  108. package/dist/src/data/transforms/flattenCompressedExons.d.ts.map +1 -0
  109. package/dist/src/data/transforms/flattenCompressedExons.js +53 -0
  110. package/dist/src/data/transforms/flattenDelimited.d.ts +10 -0
  111. package/dist/src/data/transforms/flattenDelimited.d.ts.map +1 -0
  112. package/dist/src/data/transforms/flattenDelimited.js +66 -0
  113. package/dist/src/data/transforms/flattenDelimited.test.js +87 -0
  114. package/dist/src/data/transforms/flattenSequence.d.ts +11 -0
  115. package/dist/src/data/transforms/flattenSequence.d.ts.map +1 -0
  116. package/dist/src/data/transforms/flattenSequence.js +35 -0
  117. package/dist/src/data/transforms/flattenSequence.test.js +34 -0
  118. package/dist/src/data/transforms/formula.d.ts +13 -0
  119. package/dist/src/data/transforms/formula.d.ts.map +1 -0
  120. package/dist/src/data/transforms/formula.js +35 -0
  121. package/dist/src/data/transforms/formula.test.js +19 -0
  122. package/dist/src/data/transforms/identifier.d.ts +40 -0
  123. package/dist/src/data/transforms/identifier.d.ts.map +1 -0
  124. package/dist/src/data/transforms/identifier.js +106 -0
  125. package/dist/src/data/transforms/identifier.test.js +83 -0
  126. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts +10 -0
  127. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts.map +1 -0
  128. package/dist/src/data/transforms/linearizeGenomicCoordinate.js +97 -0
  129. package/dist/src/data/transforms/measureText.d.ts +18 -0
  130. package/dist/src/data/transforms/measureText.d.ts.map +1 -0
  131. package/dist/src/data/transforms/measureText.js +42 -0
  132. package/dist/src/data/transforms/pileup.d.ts +10 -0
  133. package/dist/src/data/transforms/pileup.d.ts.map +1 -0
  134. package/dist/src/data/transforms/pileup.js +126 -0
  135. package/dist/src/data/transforms/pileup.test.js +70 -0
  136. package/dist/src/data/transforms/project.d.ts +13 -0
  137. package/dist/src/data/transforms/project.d.ts.map +1 -0
  138. package/dist/src/data/transforms/project.js +38 -0
  139. package/dist/src/data/transforms/project.test.js +32 -0
  140. package/dist/src/data/transforms/regexExtract.d.ts +13 -0
  141. package/dist/src/data/transforms/regexExtract.d.ts.map +1 -0
  142. package/dist/src/data/transforms/regexExtract.js +57 -0
  143. package/dist/src/data/transforms/regexExtract.test.js +67 -0
  144. package/dist/src/data/transforms/regexFold.d.ts +14 -0
  145. package/dist/src/data/transforms/regexFold.d.ts.map +1 -0
  146. package/dist/src/data/transforms/regexFold.js +139 -0
  147. package/dist/src/data/transforms/regexFold.test.js +160 -0
  148. package/dist/src/data/transforms/sample.d.ts +42 -0
  149. package/dist/src/data/transforms/sample.d.ts.map +1 -0
  150. package/dist/src/data/transforms/sample.js +99 -0
  151. package/dist/src/data/transforms/sample.test.js +38 -0
  152. package/dist/src/data/transforms/stack.d.ts +11 -0
  153. package/dist/src/data/transforms/stack.d.ts.map +1 -0
  154. package/dist/src/data/transforms/stack.js +134 -0
  155. package/dist/src/data/transforms/stack.test.js +91 -0
  156. package/dist/src/data/transforms/transformFactory.d.ts +12 -0
  157. package/dist/src/data/transforms/transformFactory.d.ts.map +1 -0
  158. package/dist/src/data/transforms/transformFactory.js +59 -0
  159. package/dist/src/encoder/accessor.d.ts +15 -0
  160. package/dist/src/encoder/accessor.d.ts.map +1 -0
  161. package/dist/src/encoder/accessor.js +76 -0
  162. package/dist/src/encoder/accessor.test.js +47 -0
  163. package/dist/src/encoder/encoder.d.ts +144 -0
  164. package/dist/src/encoder/encoder.d.ts.map +1 -0
  165. package/dist/src/encoder/encoder.js +400 -0
  166. package/dist/src/encoder/encoder.test.js +98 -0
  167. package/dist/src/fonts/Lato-Regular.json +1267 -0
  168. package/dist/src/fonts/Lato-Regular.png +0 -0
  169. package/dist/src/fonts/OFL.txt +93 -0
  170. package/dist/src/fonts/README.md +3 -0
  171. package/dist/src/fonts/bmFontManager.d.ts +182 -0
  172. package/dist/src/fonts/bmFontManager.d.ts.map +1 -0
  173. package/dist/src/fonts/bmFontManager.js +359 -0
  174. package/dist/src/fonts/bmFontMetrics.d.ts +45 -0
  175. package/dist/src/fonts/bmFontMetrics.d.ts.map +1 -0
  176. package/dist/src/fonts/bmFontMetrics.js +108 -0
  177. package/dist/src/genome/genome.d.ts +172 -0
  178. package/dist/src/genome/genome.d.ts.map +1 -0
  179. package/dist/src/genome/genome.js +379 -0
  180. package/dist/src/genome/genome.test.js +226 -0
  181. package/dist/src/genome/genomeStore.d.ts +20 -0
  182. package/dist/src/genome/genomeStore.d.ts.map +1 -0
  183. package/dist/src/genome/genomeStore.js +54 -0
  184. package/dist/src/genome/locusFormat.d.ts +14 -0
  185. package/dist/src/genome/locusFormat.d.ts.map +1 -0
  186. package/dist/src/genome/locusFormat.js +37 -0
  187. package/dist/src/genome/scaleIndex.d.ts +6 -0
  188. package/dist/src/genome/scaleIndex.d.ts.map +1 -0
  189. package/dist/src/genome/scaleIndex.js +165 -0
  190. package/dist/src/genome/scaleIndex.test.js +78 -0
  191. package/dist/src/genome/scaleLocus.d.ts +3 -0
  192. package/dist/src/genome/scaleLocus.d.ts.map +1 -0
  193. package/dist/src/genome/scaleLocus.js +101 -0
  194. package/dist/src/genome/scaleLocus.test.js +4 -0
  195. package/dist/src/genomeSpy.d.ts +141 -0
  196. package/dist/src/genomeSpy.d.ts.map +1 -0
  197. package/dist/src/genomeSpy.js +788 -0
  198. package/dist/src/gl/arrayBuilder.d.ts +71 -0
  199. package/dist/src/gl/arrayBuilder.d.ts.map +1 -0
  200. package/dist/src/gl/arrayBuilder.js +199 -0
  201. package/dist/src/gl/dataToVertices.d.ts +194 -0
  202. package/dist/src/gl/dataToVertices.d.ts.map +1 -0
  203. package/dist/src/gl/dataToVertices.js +639 -0
  204. package/dist/src/gl/includes/common.glsl.js +2 -0
  205. package/dist/src/gl/includes/picking.fragment.glsl.js +2 -0
  206. package/dist/src/gl/includes/picking.vertex.glsl.js +2 -0
  207. package/dist/src/gl/includes/sampleFacet.glsl.js +2 -0
  208. package/dist/src/gl/includes/scales.glsl.js +2 -0
  209. package/dist/src/gl/link.fragment.glsl.js +2 -0
  210. package/dist/src/gl/link.vertex.glsl.js +2 -0
  211. package/dist/src/gl/point.fragment.glsl.js +2 -0
  212. package/dist/src/gl/point.vertex.glsl.js +2 -0
  213. package/dist/src/gl/rect.fragment.glsl.js +2 -0
  214. package/dist/src/gl/rect.vertex.glsl.js +2 -0
  215. package/dist/src/gl/rule.fragment.glsl.js +2 -0
  216. package/dist/src/gl/rule.vertex.glsl.js +2 -0
  217. package/dist/src/gl/text.fragment.glsl.js +2 -0
  218. package/dist/src/gl/text.vertex.glsl.js +2 -0
  219. package/dist/src/gl/webGLHelper.d.ts +118 -0
  220. package/dist/src/gl/webGLHelper.d.ts.map +1 -0
  221. package/dist/src/gl/webGLHelper.js +513 -0
  222. package/dist/src/img/bowtie.svg +1 -0
  223. package/dist/src/img/genomespy-favicon.svg +34 -0
  224. package/dist/src/index.d.ts +15 -0
  225. package/dist/src/index.d.ts.map +1 -0
  226. package/dist/src/index.html +11 -0
  227. package/dist/src/index.js +129 -0
  228. package/dist/src/marks/link.d.ts +11 -0
  229. package/dist/src/marks/link.d.ts.map +1 -0
  230. package/dist/src/marks/link.js +175 -0
  231. package/dist/src/marks/mark.d.ts +226 -0
  232. package/dist/src/marks/mark.d.ts.map +1 -0
  233. package/dist/src/marks/mark.js +1004 -0
  234. package/dist/src/marks/markUtils.d.ts +23 -0
  235. package/dist/src/marks/markUtils.d.ts.map +1 -0
  236. package/dist/src/marks/markUtils.js +125 -0
  237. package/dist/src/marks/pointMark.d.ts +11 -0
  238. package/dist/src/marks/pointMark.d.ts.map +1 -0
  239. package/dist/src/marks/pointMark.js +251 -0
  240. package/dist/src/marks/rectMark.d.ts +18 -0
  241. package/dist/src/marks/rectMark.d.ts.map +1 -0
  242. package/dist/src/marks/rectMark.js +255 -0
  243. package/dist/src/marks/rule.d.ts +6 -0
  244. package/dist/src/marks/rule.d.ts.map +1 -0
  245. package/dist/src/marks/rule.js +250 -0
  246. package/dist/src/marks/text.d.ts +13 -0
  247. package/dist/src/marks/text.d.ts.map +1 -0
  248. package/dist/src/marks/text.js +279 -0
  249. package/dist/src/scale/colorUtils.d.ts +34 -0
  250. package/dist/src/scale/colorUtils.d.ts.map +1 -0
  251. package/dist/src/scale/colorUtils.js +184 -0
  252. package/dist/src/scale/glslScaleGenerator.d.ts +45 -0
  253. package/dist/src/scale/glslScaleGenerator.d.ts.map +1 -0
  254. package/dist/src/scale/glslScaleGenerator.js +506 -0
  255. package/dist/src/scale/scale.d.ts +10 -0
  256. package/dist/src/scale/scale.d.ts.map +1 -0
  257. package/dist/src/scale/scale.js +456 -0
  258. package/dist/src/scale/scale.test.js +324 -0
  259. package/dist/src/scale/ticks.d.ts +47 -0
  260. package/dist/src/scale/ticks.d.ts.map +1 -0
  261. package/dist/src/scale/ticks.js +203 -0
  262. package/dist/src/scale/ticks.test.js +40 -0
  263. package/dist/src/singlePageApp.d.ts +2 -0
  264. package/dist/src/singlePageApp.d.ts.map +1 -0
  265. package/dist/src/singlePageApp.js +13 -0
  266. package/dist/src/spec/axis.d.ts +402 -0
  267. package/dist/src/spec/channel.d.ts +440 -0
  268. package/dist/src/spec/data.d.ts +370 -0
  269. package/dist/src/spec/font.d.ts +15 -0
  270. package/dist/src/spec/genome.d.ts +35 -0
  271. package/dist/src/spec/mark.d.ts +435 -0
  272. package/dist/src/spec/root.d.ts +22 -0
  273. package/dist/src/spec/sampleView.d.ts +185 -0
  274. package/dist/src/spec/scale.d.ts +273 -0
  275. package/dist/src/spec/title.d.ts +102 -0
  276. package/dist/src/spec/tooltip.d.ts +9 -0
  277. package/dist/src/spec/transform.d.ts +504 -0
  278. package/dist/src/spec/view.d.ts +214 -0
  279. package/dist/src/styles/genome-spy.css.d.ts +3 -0
  280. package/dist/src/styles/genome-spy.css.d.ts.map +1 -0
  281. package/dist/src/styles/genome-spy.css.js +114 -0
  282. package/dist/src/styles/genome-spy.scss +153 -0
  283. package/dist/src/tooltip/dataTooltipHandler.d.ts +2 -0
  284. package/dist/src/tooltip/dataTooltipHandler.d.ts.map +1 -0
  285. package/dist/src/tooltip/dataTooltipHandler.js +64 -0
  286. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts +2 -0
  287. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts.map +1 -0
  288. package/dist/src/tooltip/refseqGeneTooltipHandler.js +78 -0
  289. package/dist/src/tooltip/tooltipHandler.d.ts +9 -0
  290. package/dist/src/tooltip/tooltipHandler.d.ts.map +1 -0
  291. package/dist/src/tooltip/tooltipHandler.ts +12 -0
  292. package/dist/src/types/bmFont.d.ts +58 -0
  293. package/dist/src/types/embedApi.d.ts +67 -0
  294. package/dist/src/types/encoder.d.ts +84 -0
  295. package/dist/src/types/flowBatch.d.ts +40 -0
  296. package/dist/src/types/rendering.d.ts +65 -0
  297. package/dist/src/types/scaleResolutionApi.d.ts +40 -0
  298. package/dist/src/types/viewContext.d.ts +85 -0
  299. package/dist/src/utils/addBaseUrl.d.ts +6 -0
  300. package/dist/src/utils/addBaseUrl.d.ts.map +1 -0
  301. package/dist/src/utils/addBaseUrl.js +19 -0
  302. package/dist/src/utils/addBaseUrl.test.js +22 -0
  303. package/dist/src/utils/animator.d.ts +41 -0
  304. package/dist/src/utils/animator.d.ts.map +1 -0
  305. package/dist/src/utils/animator.js +83 -0
  306. package/dist/src/utils/arrayUtils.d.ts +34 -0
  307. package/dist/src/utils/arrayUtils.d.ts.map +1 -0
  308. package/dist/src/utils/arrayUtils.js +61 -0
  309. package/dist/src/utils/binnedIndex.d.ts +23 -0
  310. package/dist/src/utils/binnedIndex.d.ts.map +1 -0
  311. package/dist/src/utils/binnedIndex.js +167 -0
  312. package/dist/src/utils/binnedIndex.test.js +155 -0
  313. package/dist/src/utils/clamp.d.ts +7 -0
  314. package/dist/src/utils/clamp.d.ts.map +1 -0
  315. package/dist/src/utils/clamp.js +8 -0
  316. package/dist/src/utils/cloner.d.ts +16 -0
  317. package/dist/src/utils/cloner.d.ts.map +1 -0
  318. package/dist/src/utils/cloner.js +34 -0
  319. package/dist/src/utils/cloner.test.js +24 -0
  320. package/dist/src/utils/coalesce.d.ts +6 -0
  321. package/dist/src/utils/coalesce.d.ts.map +1 -0
  322. package/dist/src/utils/coalesce.js +11 -0
  323. package/dist/src/utils/coalesce.test.js +16 -0
  324. package/dist/src/utils/concatIterables.d.ts +8 -0
  325. package/dist/src/utils/concatIterables.d.ts.map +1 -0
  326. package/dist/src/utils/concatIterables.js +26 -0
  327. package/dist/src/utils/concatIterables.test.js +8 -0
  328. package/dist/src/utils/debounce.d.ts +8 -0
  329. package/dist/src/utils/debounce.d.ts.map +1 -0
  330. package/dist/src/utils/debounce.js +37 -0
  331. package/dist/src/utils/domainArray.d.ts +61 -0
  332. package/dist/src/utils/domainArray.d.ts.map +1 -0
  333. package/dist/src/utils/domainArray.js +216 -0
  334. package/dist/src/utils/domainArray.test.js +130 -0
  335. package/dist/src/utils/eerp.d.ts +12 -0
  336. package/dist/src/utils/eerp.d.ts.map +1 -0
  337. package/dist/src/utils/eerp.js +13 -0
  338. package/dist/src/utils/expression.d.ts +9 -0
  339. package/dist/src/utils/expression.d.ts.map +1 -0
  340. package/dist/src/utils/expression.js +32 -0
  341. package/dist/src/utils/field.d.ts +17 -0
  342. package/dist/src/utils/field.d.ts.map +1 -0
  343. package/dist/src/utils/field.js +28 -0
  344. package/dist/src/utils/formatObject.d.ts +7 -0
  345. package/dist/src/utils/formatObject.d.ts.map +1 -0
  346. package/dist/src/utils/formatObject.js +37 -0
  347. package/dist/src/utils/indexer.d.ts +16 -0
  348. package/dist/src/utils/indexer.d.ts.map +1 -0
  349. package/dist/src/utils/indexer.js +43 -0
  350. package/dist/src/utils/indexer.test.js +47 -0
  351. package/dist/src/utils/inertia.d.ts +42 -0
  352. package/dist/src/utils/inertia.d.ts.map +1 -0
  353. package/dist/src/utils/inertia.js +124 -0
  354. package/dist/src/utils/interactionEvent.d.ts +26 -0
  355. package/dist/src/utils/interactionEvent.d.ts.map +1 -0
  356. package/dist/src/utils/interactionEvent.js +33 -0
  357. package/dist/src/utils/iterateNestedMaps.d.ts +11 -0
  358. package/dist/src/utils/iterateNestedMaps.d.ts.map +1 -0
  359. package/dist/src/utils/iterateNestedMaps.js +21 -0
  360. package/dist/src/utils/iterateNestedMaps.test.js +33 -0
  361. package/dist/src/utils/kWayMerge.d.ts +9 -0
  362. package/dist/src/utils/kWayMerge.d.ts.map +1 -0
  363. package/dist/src/utils/kWayMerge.js +42 -0
  364. package/dist/src/utils/kWayMerge.test.js +26 -0
  365. package/dist/src/utils/layout/flexLayout.d.ts +182 -0
  366. package/dist/src/utils/layout/flexLayout.d.ts.map +1 -0
  367. package/dist/src/utils/layout/flexLayout.js +381 -0
  368. package/dist/src/utils/layout/flexLayout.test.js +323 -0
  369. package/dist/src/utils/layout/grid.d.ts +29 -0
  370. package/dist/src/utils/layout/grid.d.ts.map +1 -0
  371. package/dist/src/utils/layout/grid.js +95 -0
  372. package/dist/src/utils/layout/grid.test.js +71 -0
  373. package/dist/src/utils/layout/padding.d.ts +83 -0
  374. package/dist/src/utils/layout/padding.d.ts.map +1 -0
  375. package/dist/src/utils/layout/padding.js +155 -0
  376. package/dist/src/utils/layout/point.d.ts +16 -0
  377. package/dist/src/utils/layout/point.d.ts.map +1 -0
  378. package/dist/src/utils/layout/point.js +23 -0
  379. package/dist/src/utils/layout/rectangle.d.ts +142 -0
  380. package/dist/src/utils/layout/rectangle.d.ts.map +1 -0
  381. package/dist/src/utils/layout/rectangle.js +296 -0
  382. package/dist/src/utils/layout/rectangle.test.js +172 -0
  383. package/dist/src/utils/mergeObjects.d.ts +15 -0
  384. package/dist/src/utils/mergeObjects.d.ts.map +1 -0
  385. package/dist/src/utils/mergeObjects.js +99 -0
  386. package/dist/src/utils/mergeObjects.test.js +42 -0
  387. package/dist/src/utils/numberExtractor.d.ts +9 -0
  388. package/dist/src/utils/numberExtractor.d.ts.map +1 -0
  389. package/dist/src/utils/numberExtractor.js +24 -0
  390. package/dist/src/utils/numberExtractor.test.js +6 -0
  391. package/dist/src/utils/point.d.ts +9 -0
  392. package/dist/src/utils/point.d.ts.map +1 -0
  393. package/dist/src/utils/point.js +14 -0
  394. package/dist/src/utils/propertyCacher.d.ts +30 -0
  395. package/dist/src/utils/propertyCacher.d.ts.map +1 -0
  396. package/dist/src/utils/propertyCacher.js +70 -0
  397. package/dist/src/utils/propertyCacher.test.js +85 -0
  398. package/dist/src/utils/propertyCoalescer.d.ts +15 -0
  399. package/dist/src/utils/propertyCoalescer.d.ts.map +1 -0
  400. package/dist/src/utils/propertyCoalescer.js +42 -0
  401. package/dist/src/utils/propertyCoalescer.test.js +22 -0
  402. package/dist/src/utils/reservationMap.d.ts +42 -0
  403. package/dist/src/utils/reservationMap.d.ts.map +1 -0
  404. package/dist/src/utils/reservationMap.js +103 -0
  405. package/dist/src/utils/reservationMap.test.js +20 -0
  406. package/dist/src/utils/scaleNull.d.ts +13 -0
  407. package/dist/src/utils/scaleNull.d.ts.map +1 -0
  408. package/dist/src/utils/scaleNull.js +21 -0
  409. package/dist/src/utils/setOperations.d.ts +31 -0
  410. package/dist/src/utils/setOperations.d.ts.map +1 -0
  411. package/dist/src/utils/setOperations.js +75 -0
  412. package/dist/src/utils/smoothstep.d.ts +7 -0
  413. package/dist/src/utils/smoothstep.d.ts.map +1 -0
  414. package/dist/src/utils/smoothstep.js +10 -0
  415. package/dist/src/utils/throttle.d.ts +8 -0
  416. package/dist/src/utils/throttle.d.ts.map +1 -0
  417. package/dist/src/utils/throttle.js +34 -0
  418. package/dist/src/utils/topK.d.ts +22 -0
  419. package/dist/src/utils/topK.d.ts.map +1 -0
  420. package/dist/src/utils/topK.js +76 -0
  421. package/dist/src/utils/topK.test.js +64 -0
  422. package/dist/src/utils/transition.d.ts +44 -0
  423. package/dist/src/utils/transition.d.ts.map +1 -0
  424. package/dist/src/utils/transition.js +74 -0
  425. package/dist/src/utils/trees.d.ts +56 -0
  426. package/dist/src/utils/trees.d.ts.map +1 -0
  427. package/dist/src/utils/trees.js +92 -0
  428. package/dist/src/utils/trees.test.js +130 -0
  429. package/dist/src/utils/ui/tooltip.d.ts +50 -0
  430. package/dist/src/utils/ui/tooltip.d.ts.map +1 -0
  431. package/dist/src/utils/ui/tooltip.js +189 -0
  432. package/dist/src/utils/url.d.ts +9 -0
  433. package/dist/src/utils/url.d.ts.map +1 -0
  434. package/dist/src/utils/url.js +22 -0
  435. package/dist/src/utils/variableTools.d.ts +14 -0
  436. package/dist/src/utils/variableTools.d.ts.map +1 -0
  437. package/dist/src/utils/variableTools.js +24 -0
  438. package/dist/src/utils/variableTools.test.js +13 -0
  439. package/dist/src/view/axisGridView.d.ts +39 -0
  440. package/dist/src/view/axisGridView.d.ts.map +1 -0
  441. package/dist/src/view/axisGridView.js +246 -0
  442. package/dist/src/view/axisResolution.d.ts +24 -0
  443. package/dist/src/view/axisResolution.d.ts.map +1 -0
  444. package/dist/src/view/axisResolution.js +141 -0
  445. package/dist/src/view/axisResolution.test.js +201 -0
  446. package/dist/src/view/axisView.d.ts +49 -0
  447. package/dist/src/view/axisView.d.ts.map +1 -0
  448. package/dist/src/view/axisView.js +629 -0
  449. package/dist/src/view/concatView.d.ts +16 -0
  450. package/dist/src/view/concatView.d.ts.map +1 -0
  451. package/dist/src/view/concatView.js +84 -0
  452. package/dist/src/view/containerView.d.ts +43 -0
  453. package/dist/src/view/containerView.d.ts.map +1 -0
  454. package/dist/src/view/containerView.js +137 -0
  455. package/dist/src/view/facetView.d.ts +71 -0
  456. package/dist/src/view/facetView.d.ts.map +1 -0
  457. package/dist/src/view/facetView.js +492 -0
  458. package/dist/src/view/flowBuilder.d.ts +37 -0
  459. package/dist/src/view/flowBuilder.d.ts.map +1 -0
  460. package/dist/src/view/flowBuilder.js +383 -0
  461. package/dist/src/view/flowBuilder.test.js +125 -0
  462. package/dist/src/view/gridView.d.ts +111 -0
  463. package/dist/src/view/gridView.d.ts.map +1 -0
  464. package/dist/src/view/gridView.js +1086 -0
  465. package/dist/src/view/implicitRootView.d.ts +9 -0
  466. package/dist/src/view/implicitRootView.d.ts.map +1 -0
  467. package/dist/src/view/implicitRootView.js +23 -0
  468. package/dist/src/view/importView.d.ts +17 -0
  469. package/dist/src/view/importView.d.ts.map +1 -0
  470. package/dist/src/view/importView.js +22 -0
  471. package/dist/src/view/layerView.d.ts +25 -0
  472. package/dist/src/view/layerView.d.ts.map +1 -0
  473. package/dist/src/view/layerView.js +77 -0
  474. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts +30 -0
  475. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -0
  476. package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +175 -0
  477. package/dist/src/view/renderingContext/compositeViewRenderingContext.d.ts +14 -0
  478. package/dist/src/view/renderingContext/compositeViewRenderingContext.d.ts.map +1 -0
  479. package/dist/src/view/renderingContext/compositeViewRenderingContext.js +51 -0
  480. package/dist/src/view/renderingContext/debuggingViewRenderingContext.d.ts +51 -0
  481. package/dist/src/view/renderingContext/debuggingViewRenderingContext.d.ts.map +1 -0
  482. package/dist/src/view/renderingContext/debuggingViewRenderingContext.js +94 -0
  483. package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.d.ts +60 -0
  484. package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.d.ts.map +1 -0
  485. package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.js +128 -0
  486. package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts +19 -0
  487. package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts.map +1 -0
  488. package/dist/src/view/renderingContext/simpleViewRenderingContext.js +64 -0
  489. package/dist/src/view/renderingContext/svgViewRenderingContext.d.ts +22 -0
  490. package/dist/src/view/renderingContext/svgViewRenderingContext.d.ts.map +1 -0
  491. package/dist/src/view/renderingContext/svgViewRenderingContext.js +125 -0
  492. package/dist/src/view/renderingContext/viewRenderingContext.d.ts +33 -0
  493. package/dist/src/view/renderingContext/viewRenderingContext.d.ts.map +1 -0
  494. package/dist/src/view/renderingContext/viewRenderingContext.js +41 -0
  495. package/dist/src/view/scaleResolution.d.ts +170 -0
  496. package/dist/src/view/scaleResolution.d.ts.map +1 -0
  497. package/dist/src/view/scaleResolution.js +874 -0
  498. package/dist/src/view/scaleResolution.test.js +658 -0
  499. package/dist/src/view/testUtils.d.ts +30 -0
  500. package/dist/src/view/testUtils.d.ts.map +1 -0
  501. package/dist/src/view/testUtils.js +101 -0
  502. package/dist/src/view/title.d.ts +6 -0
  503. package/dist/src/view/title.d.ts.map +1 -0
  504. package/dist/src/view/title.js +165 -0
  505. package/dist/src/view/unitView.d.ts +93 -0
  506. package/dist/src/view/unitView.d.ts.map +1 -0
  507. package/dist/src/view/unitView.js +345 -0
  508. package/dist/src/view/view.d.ts +291 -0
  509. package/dist/src/view/view.d.ts.map +1 -0
  510. package/dist/src/view/view.js +691 -0
  511. package/dist/src/view/view.test.js +214 -0
  512. package/dist/src/view/viewFactory.d.ts +76 -0
  513. package/dist/src/view/viewFactory.d.ts.map +1 -0
  514. package/dist/src/view/viewFactory.js +178 -0
  515. package/dist/src/view/viewFactory.test.js +17 -0
  516. package/dist/src/view/viewUtils.d.ts +90 -0
  517. package/dist/src/view/viewUtils.d.ts.map +1 -0
  518. package/dist/src/view/viewUtils.js +326 -0
  519. package/dist/src/view/zoom.d.ts +23 -0
  520. package/dist/src/view/zoom.d.ts.map +1 -0
  521. package/dist/src/view/zoom.js +89 -0
  522. package/package.json +15 -12
  523. package/dist/style.css +0 -1
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg width="100%" height="100%" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">
4
+ <g transform="matrix(0.10221,0.00683825,-0.0067136,0.100347,-8.03424,-13.2222)">
5
+ <path d="M208.629,548.17C208.629,548.17 219.768,594.389 239.814,619.222C259.86,644.055 319.119,680.831 319.119,680.831C319.119,680.831 385.557,622.915 437.87,498.346C437.87,498.346 456.021,499.236 473.808,486.446C491.594,473.656 490.239,478.534 494.883,461.62C494.883,461.62 551.848,467.937 625.826,451.863C667.634,442.778 710.238,425.649 747.382,393.142C747.382,393.142 721.992,360.244 689.422,291.45C677.029,265.275 647.518,257.098 590.747,203.309L438.083,391.273L208.629,548.17Z" style="fill-opacity:0.11;"/>
6
+ </g>
7
+ <g transform="matrix(0.081985,-0.0582493,0.0582493,0.081985,-40.4754,34.7668)">
8
+ <path d="M561.588,349.155C561.588,349.155 516.297,271.341 328.841,252.044C328.841,252.044 302.342,325.189 307.686,368.056C313.031,410.922 303.001,456.147 329.132,501.174C329.132,501.174 443.114,506.743 554.649,428.469L629.204,432.112C629.204,432.112 673.755,534.351 856.964,554.375C856.964,554.375 886.717,491.768 879.193,417.478C871.211,338.673 871.716,293.443 871.716,293.443C871.716,293.443 775.485,283.928 635.418,361.795L561.588,349.155Z" style="fill:rgb(127,187,221);"/>
9
+ <clipPath id="_clip1">
10
+ <path d="M561.588,349.155C561.588,349.155 516.297,271.341 328.841,252.044C328.841,252.044 302.342,325.189 307.686,368.056C313.031,410.922 303.001,456.147 329.132,501.174C329.132,501.174 443.114,506.743 554.649,428.469L629.204,432.112C629.204,432.112 673.755,534.351 856.964,554.375C856.964,554.375 886.717,491.768 879.193,417.478C871.211,338.673 871.716,293.443 871.716,293.443C871.716,293.443 775.485,283.928 635.418,361.795L561.588,349.155Z"/>
11
+ </clipPath>
12
+ <g clip-path="url(#_clip1)">
13
+ <g transform="matrix(0.758637,0.45892,-0.45892,0.758637,425.635,-121.213)">
14
+ <path d="M386.873,397.241C371.345,383.628 335.138,374.782 290.644,380.543C246.149,386.304 196.827,402.266 178.802,412.065C168.202,417.828 151.494,429.354 150.682,439.334C149.527,453.528 153.593,477.066 165.625,491.284C171.69,498.451 179.927,503.445 193.838,505.423C211.701,507.963 252.714,480.627 275.399,469.22C299.332,457.187 313.981,454.56 338.386,447.014C338.386,447.014 291.346,478.587 270.205,494.393C239.61,517.268 218.575,522.444 212.859,539.897C209.766,549.34 212.237,567.767 220.354,577.538C229.427,588.461 233.197,595.069 254.591,597.624C267.303,599.143 276.685,598.802 314.37,568.95C336.06,551.767 370.297,509.817 381.412,494.616C397.581,472.506 405.165,451.462 402.656,435.04C399.045,411.391 394.259,403.716 386.873,397.241Z" style="fill:white;"/>
15
+ </g>
16
+ <g transform="matrix(0.752145,0.454993,-0.454993,0.752145,468.36,-108.293)">
17
+ <path d="M484.733,378.934C479.33,367.886 467.092,350.452 483.886,325.205C502.172,297.717 514.898,280.938 528.117,264.632C541.335,248.326 574.793,218.447 587.739,212.53C600.684,206.613 621.026,203.852 631.889,212.841C642.874,221.93 648.416,233.377 654.92,245.478C662.331,259.267 667.318,274.808 656.518,288.278C641.093,307.515 622.242,305.294 594.912,319.844C567.244,334.573 552.644,342.943 539.244,355.703C539.244,355.703 591.431,334.114 621.229,324.474C651.027,314.833 680.952,304.461 695.995,315.975C711.038,327.49 710.631,331.463 714.425,347.187C719.107,366.59 707.231,385.165 694.294,395.838C681.356,406.51 659.958,411.756 636.875,416.852C606.42,423.576 540.278,431.917 512.819,419.366C485.361,406.815 488.488,386.613 484.733,378.934Z" style="fill:white;"/>
18
+ </g>
19
+ </g>
20
+ <path d="M561.588,349.155C561.588,349.155 516.297,271.341 328.841,252.044C328.841,252.044 302.342,325.189 307.686,368.056C313.031,410.922 303.001,456.147 329.132,501.174C329.132,501.174 443.114,506.743 554.649,428.469L629.204,432.112C629.204,432.112 673.755,534.351 856.964,554.375C856.964,554.375 886.717,491.768 879.193,417.478C871.211,338.673 871.716,293.443 871.716,293.443C871.716,293.443 775.485,283.928 635.418,361.795L561.588,349.155Z" style="fill:none;stroke:black;stroke-width:16.57px;"/>
21
+ </g>
22
+ <g transform="matrix(0.100298,-0.00740488,0.00740488,0.100298,-15.7457,-5.17528)">
23
+ <path d="M384.916,385.459C384.916,385.459 430.781,347.868 450.027,350.093C471.685,352.596 490.49,407.747 490.208,424.416C489.927,441.085 442.948,469.866 422.537,466.24C422.537,466.24 425.525,442.129 412.114,413.335C398.702,384.54 384.916,385.459 384.916,385.459Z" style="fill:rgb(127,187,221);"/>
24
+ <clipPath id="_clip2">
25
+ <path d="M384.916,385.459C384.916,385.459 430.781,347.868 450.027,350.093C471.685,352.596 490.49,407.747 490.208,424.416C489.927,441.085 442.948,469.866 422.537,466.24C422.537,466.24 425.525,442.129 412.114,413.335C398.702,384.54 384.916,385.459 384.916,385.459Z"/>
26
+ </clipPath>
27
+ <g clip-path="url(#_clip2)">
28
+ <g transform="matrix(0.909069,3.67641e-17,-3.79818e-17,0.85852,37.051,52.1829)">
29
+ <path d="M413.282,402.697C430.77,421.58 423.307,448.426 441.683,446.137C463.409,443.431 472.604,430.356 473.316,413.402C474.028,396.448 472.245,393.911 466.172,375.321C460.099,356.731 447.953,352.176 422.842,357.179C401.957,361.339 405.039,360.215 398.735,367.228C392.43,374.242 384.315,393.182 384.315,393.182C384.315,393.182 392.715,380.492 413.282,402.697Z" style="fill:white;"/>
30
+ </g>
31
+ </g>
32
+ <path d="M384.916,385.459C384.916,385.459 430.781,347.868 450.027,350.093C471.685,352.596 490.49,407.747 490.208,424.416C489.927,441.085 442.948,469.866 422.537,466.24C422.537,466.24 425.525,442.129 412.114,413.335C398.702,384.54 384.916,385.459 384.916,385.459Z" style="fill:none;stroke:black;stroke-width:16.57px;"/>
33
+ </g>
34
+ </svg>
@@ -0,0 +1,15 @@
1
+ /// <reference types="external-typings/filetypes.js" />
2
+ export function embed(el: string | HTMLElement, spec: string | import("./spec/root.js").RootSpec, options?: import("./types/embedApi.js").EmbedOptions): import("./types/embedApi.js").EmbedResult;
3
+ /**
4
+ * Loads the spec from the given url and sets the baseUrl if it is not
5
+ * defined in the spec.
6
+ *
7
+ * @param {string} url
8
+ */
9
+ export function loadSpec(url: string): Promise<any>;
10
+ import GenomeSpy from "./genomeSpy.js";
11
+ import { html } from "lit-html";
12
+ import icon from "./img/bowtie.svg";
13
+ import favIcon from "./img/genomespy-favicon.svg";
14
+ export { GenomeSpy, html, icon, favIcon };
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":";AAaU,mMACkD;AA2F5D;;;;;GAKG;AACH,8BAFW,MAAM,gBAmBhB;sBA5HqB,gBAAgB;qBAFjB,UAAU;iBAGd,kBAAkB;oBACf,6BAA6B"}
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>GenomeSpy</title>
7
+ </head>
8
+ <body>
9
+ <script type="module" src="/singlePageApp.js"></script>
10
+ </body>
11
+ </html>
@@ -0,0 +1,129 @@
1
+ import { isObject, isString } from "vega-util";
2
+ import { loader as vegaLoader } from "vega-loader";
3
+ import { html } from "lit-html";
4
+
5
+ import GenomeSpy from "./genomeSpy.js";
6
+ import icon from "./img/bowtie.svg";
7
+ import favIcon from "./img/genomespy-favicon.svg";
8
+
9
+ export { GenomeSpy, html, icon, favIcon };
10
+
11
+ /**
12
+ * Embeds GenomeSpy into the DOM
13
+ *
14
+ * @type {import("./types/embedApi.js").EmbedFunction}
15
+ * @returns {Promise<import("./types/embedApi.js").EmbedResult>}
16
+ */
17
+ export async function embed(el, spec, options = {}) {
18
+ /** @type {HTMLElement} */
19
+ let element;
20
+
21
+ if (isString(el)) {
22
+ element = document.querySelector(el);
23
+ if (!element) {
24
+ throw new Error(`No such element: ${el}`);
25
+ }
26
+ } else if (el instanceof HTMLElement) {
27
+ element = el;
28
+ } else {
29
+ throw new Error(`Invalid element: ${el}`);
30
+ }
31
+
32
+ /** @type {GenomeSpy} */
33
+ let genomeSpy;
34
+
35
+ try {
36
+ const specObject = isObject(spec) ? spec : await loadSpec(spec);
37
+
38
+ specObject.baseUrl ??= "";
39
+ specObject.width ??= "container";
40
+ specObject.padding ??= 10;
41
+
42
+ if (element == document.body) {
43
+ // Need to add a wrapper to make sizing behavior more stable
44
+ const wrapper = document.createElement("div");
45
+ wrapper.style.position = "fixed";
46
+ wrapper.style.inset = "0";
47
+ wrapper.style.overflow = "hidden";
48
+ element.appendChild(wrapper);
49
+ element = wrapper;
50
+ }
51
+
52
+ genomeSpy = new GenomeSpy(element, specObject, options);
53
+ applyOptions(genomeSpy, options);
54
+ await genomeSpy.launch();
55
+ } catch (e) {
56
+ // eslint-disable-next-line require-atomic-updates
57
+ element.innerText = e.toString();
58
+ console.error(e);
59
+ }
60
+
61
+ return {
62
+ finalize() {
63
+ genomeSpy.destroy();
64
+ while (element.firstChild) {
65
+ element.firstChild.remove();
66
+ }
67
+ },
68
+
69
+ addEventListener(type, listener) {
70
+ const listenersByType = genomeSpy._eventListeners;
71
+
72
+ let listeners = listenersByType.get(type);
73
+ if (!listeners) {
74
+ listeners = new Set();
75
+ listenersByType.set(type, listeners);
76
+ }
77
+
78
+ listeners.add(listener);
79
+ },
80
+
81
+ removeEventListener(type, listener) {
82
+ const listenersByType = genomeSpy._eventListeners;
83
+
84
+ listenersByType.get(type)?.delete(listener);
85
+ },
86
+
87
+ getScaleResolutionByName(name) {
88
+ return genomeSpy.getNamedScaleResolutions().get(name);
89
+ },
90
+
91
+ updateNamedData: genomeSpy.updateNamedData.bind(genomeSpy),
92
+ };
93
+ }
94
+
95
+ /**
96
+ *
97
+ * @param {import("./genomeSpy").default} genomeSpy
98
+ * @param {import("./types/embedApi.js").EmbedOptions} options options
99
+ */
100
+ function applyOptions(genomeSpy, options) {
101
+ if (options.namedDataProvider) {
102
+ genomeSpy.registerNamedDataProvider(options.namedDataProvider);
103
+ }
104
+ }
105
+
106
+ /**
107
+ * Loads the spec from the given url and sets the baseUrl if it is not
108
+ * defined in the spec.
109
+ *
110
+ * @param {string} url
111
+ */
112
+ export async function loadSpec(url) {
113
+ let spec;
114
+
115
+ try {
116
+ spec = JSON.parse(await vegaLoader().load(url));
117
+ } catch (e) {
118
+ throw new Error(
119
+ `Could not load or parse configuration: ${url}, reason: ${e.message}`
120
+ );
121
+ }
122
+
123
+ if (!spec.baseUrl) {
124
+ const m = url.match(/^[^?#]*\//);
125
+ spec.baseUrl = (m && m[0]) || "./";
126
+ }
127
+
128
+ return spec;
129
+ }
@@ -0,0 +1,11 @@
1
+ export default class LinkMark extends Mark {
2
+ arrays: {
3
+ [k: string]: {
4
+ data: any;
5
+ numComponents: number;
6
+ divisor?: number;
7
+ };
8
+ };
9
+ }
10
+ import Mark from "./mark";
11
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/marks/link.js"],"names":[],"mappings":"AAOA;IAqGQ;;;;;;MAKC;CAkDR;iBA9JgB,QAAQ"}
@@ -0,0 +1,175 @@
1
+ import { drawBufferInfo, setBuffersAndAttributes, setUniforms } from "twgl.js";
2
+ import VERTEX_SHADER from "../gl/link.vertex.glsl.js";
3
+ import FRAGMENT_SHADER from "../gl/link.fragment.glsl.js";
4
+ import { ConnectionVertexBuilder } from "../gl/dataToVertices";
5
+
6
+ import Mark from "./mark";
7
+
8
+ export default class LinkMark extends Mark {
9
+ /**
10
+ * @param {import("../view/unitView").default} unitView
11
+ */
12
+ constructor(unitView) {
13
+ super(unitView);
14
+
15
+ Object.defineProperties(
16
+ this.defaultProperties,
17
+ Object.getOwnPropertyDescriptors({
18
+ x: 0.0,
19
+ x2: undefined,
20
+ y: 0.0,
21
+ y2: undefined,
22
+ size: 1.0,
23
+ color: "black",
24
+ opacity: 1.0,
25
+
26
+ segments: 101, // Performance is affected more by the fill rate, i.e. number of pixels
27
+ sagittaScaleFactor: 1.0,
28
+ minSagittaLength: 1.5,
29
+ })
30
+ );
31
+ }
32
+
33
+ getAttributes() {
34
+ return [
35
+ "uniqueId",
36
+ "facetIndex",
37
+ "x",
38
+ "x2",
39
+ "y",
40
+ "y2",
41
+ "size",
42
+ "height",
43
+ "color",
44
+ "opacity",
45
+ ];
46
+ }
47
+
48
+ /** @return {import("../spec/channel").Channel[]} */
49
+ getSupportedChannels() {
50
+ return [...super.getSupportedChannels(), "x2", "y2", "size"];
51
+ }
52
+
53
+ /**
54
+ * @param {import("../spec/channel").Encoding} encoding
55
+ * @returns {import("../spec/channel").Encoding}
56
+ */
57
+ fixEncoding(encoding) {
58
+ if (!encoding.x) {
59
+ encoding.x2 = encoding.x;
60
+ }
61
+
62
+ if (!encoding.y2) {
63
+ encoding.y2 = encoding.y;
64
+ }
65
+
66
+ return encoding;
67
+ }
68
+
69
+ async initializeGraphics() {
70
+ await super.initializeGraphics();
71
+
72
+ this.createAndLinkShaders(VERTEX_SHADER, FRAGMENT_SHADER);
73
+ }
74
+
75
+ finalizeGraphicsInitialization() {
76
+ super.finalizeGraphicsInitialization();
77
+ this.gl.useProgram(this.programInfo.program);
78
+
79
+ const props = this.properties;
80
+
81
+ // TODO: Use uniform block.
82
+ setUniforms(this.programInfo, {
83
+ uSagittaScaleFactor: props.sagittaScaleFactor,
84
+ uMinSagittaLength: props.minSagittaLength,
85
+ });
86
+ }
87
+
88
+ updateGraphicsData() {
89
+ const collector = this.unitView.getCollector();
90
+ const itemCount = collector.getItemCount();
91
+
92
+ const builder = new ConnectionVertexBuilder({
93
+ encoders: this.encoders,
94
+ attributes: this.getAttributes(),
95
+ numItems: itemCount,
96
+ });
97
+
98
+ builder.addBatches(collector.facetBatches);
99
+
100
+ const vertexData = builder.toArrays();
101
+
102
+ vertexData.arrays.strip = {
103
+ data: createStrip(this.properties.segments),
104
+ numComponents: 2,
105
+ };
106
+
107
+ this.rangeMap.migrateEntries(vertexData.rangeMap);
108
+
109
+ this.arrays = Object.fromEntries(
110
+ Object.entries(vertexData.arrays).map(([k, v]) => [
111
+ k,
112
+ { ...v, data: undefined },
113
+ ])
114
+ );
115
+
116
+ this.updateBufferInfo(vertexData);
117
+ }
118
+
119
+ /**
120
+ * @param {import("./mark").MarkRenderingOptions} options
121
+ */
122
+ render(options) {
123
+ const gl = this.gl;
124
+
125
+ // TODO: Vertical clipping in faceted view
126
+
127
+ return this.createRenderCallback((offset, count) => {
128
+ // We are using instanced drawing here.
129
+ // However, WebGL does not provide glDrawArraysInstancedBaseInstance and thus,
130
+ // we have to hack with offsets in vertexAttribPointer
131
+ // TODO: Use VAOs more intelligently to reduce WebGL calls
132
+ // TODO: Explore multiDrawArraysInstancedWEBGL
133
+ // There's also a promising extension draft:
134
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_draw_instanced_base_vertex_base_instance/
135
+ // (and https://www.khronos.org/registry/webgl/extensions/WEBGL_multi_draw_instanced_base_vertex_base_instance/)
136
+
137
+ this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);
138
+
139
+ for (const attribInfoObject of Object.entries(
140
+ this.bufferInfo.attribs
141
+ )) {
142
+ const [attribute, attribInfo] = attribInfoObject;
143
+ if (
144
+ attribInfo.buffer &&
145
+ attribInfo.numComponents &&
146
+ attribInfo.divisor
147
+ ) {
148
+ attribInfo.offset =
149
+ offset * this.arrays[attribute].numComponents * 4; // gl.FLOAT in bytes
150
+ }
151
+ }
152
+ setBuffersAndAttributes(gl, this.programInfo, this.bufferInfo);
153
+
154
+ drawBufferInfo(
155
+ gl,
156
+ this.bufferInfo,
157
+ gl.TRIANGLE_STRIP,
158
+ (this.properties.segments + 1) * 2, // number of vertices in a triangle strip
159
+ 0,
160
+ count
161
+ );
162
+ }, options);
163
+ }
164
+ }
165
+
166
+ function createStrip(/** @type number */ segments) {
167
+ let i = 0;
168
+ const coords = [];
169
+
170
+ for (; i <= segments; i++) {
171
+ coords.push(i / segments, 0.5);
172
+ coords.push(i / segments, -0.5);
173
+ }
174
+ return coords;
175
+ }
@@ -0,0 +1,226 @@
1
+ /// <reference types="external-typings/internmap" />
2
+ export const SAMPLE_FACET_UNIFORM: "SAMPLE_FACET_UNIFORM";
3
+ export const SAMPLE_FACET_TEXTURE: "SAMPLE_FACET_TEXTURE";
4
+ /**
5
+ *
6
+ * @typedef {import("../types/rendering").RenderingOptions} RenderingOptions
7
+ * @typedef {object} _MarkRenderingOptions
8
+ * @prop {boolean} [skipViewportSetup] Don't configure viewport. Allows for
9
+ * optimized faceted rendering
10
+ * @typedef {RenderingOptions & _MarkRenderingOptions} MarkRenderingOptions
11
+ *
12
+ * @callback DrawFunction
13
+ * @param {number} offset
14
+ * @param {number} count
15
+ *
16
+ */
17
+ export default class Mark {
18
+ /**
19
+ * @typedef {import("../spec/mark").MarkConfig} MarkConfig
20
+ * @typedef {import("../spec/channel").Channel} Channel
21
+ * @typedef {import("../spec/channel").Encoding} Encoding
22
+ * @typedef {import("../spec/channel").ValueDef} ValueDef
23
+ */
24
+ /**
25
+ * @param {import("../view/unitView").default} unitView
26
+ */
27
+ constructor(unitView: import("../view/unitView").default);
28
+ unitView: import("../view/unitView").default;
29
+ /** @type {Record<string, import("../types/encoder").Encoder>} */
30
+ encoders: Record<string, import("../types/encoder").Encoder>;
31
+ /** @type {import("twgl.js").BufferInfo & { allocatedVertices?: number }} WebGL buffers */
32
+ bufferInfo: import("twgl.js").BufferInfo & {
33
+ allocatedVertices?: number;
34
+ };
35
+ /** @type {import("twgl.js").ProgramInfo} WebGL buffers */
36
+ programInfo: import("twgl.js").ProgramInfo;
37
+ /** @type {import("twgl.js").VertexArrayInfo} WebGL buffers */
38
+ vertexArrayInfo: import("twgl.js").VertexArrayInfo;
39
+ /** @type {import("twgl.js").UniformBlockInfo} WebGL buffers */
40
+ domainUniformInfo: import("twgl.js").UniformBlockInfo;
41
+ /** @type {import("twgl.js").UniformBlockInfo} WebGL buffers */
42
+ viewUniformInfo: import("twgl.js").UniformBlockInfo;
43
+ /** @type {RangeMap<any>} keep track of facet locations within the vertex array */
44
+ rangeMap: RangeMap<any>;
45
+ /** @type {MarkConfig} */
46
+ defaultProperties: import("../spec/mark").MarkConfig;
47
+ /**
48
+ * A properties object that contains the configured mark properties or
49
+ * default values as fallback.
50
+ *
51
+ * TODO: Proper and comprehensive typings for mark properties
52
+ *
53
+ * @type {Partial<MarkConfig>}
54
+ * @readonly
55
+ */
56
+ readonly properties: Partial<import("../spec/mark").MarkConfig>;
57
+ get opaque(): boolean;
58
+ /**
59
+ * Returns attribute info for WebGL attributes that match visual channels.
60
+ *
61
+ * Note: attributes and channels do not necessarily match.
62
+ * For example, rectangles have x, y, x2, and y2 channels but only x and y as attributes.
63
+ *
64
+ * @returns {string[]}
65
+ */
66
+ getAttributes(): string[];
67
+ /**
68
+ * @returns {Channel[]}
69
+ */
70
+ getSupportedChannels(): import("../spec/channel").Channel[];
71
+ /**
72
+ * @returns {Encoding}
73
+ */
74
+ getDefaultEncoding(): import("../spec/channel").Encoding<string>;
75
+ /**
76
+ * Adds intelligent defaults etc to the encoding.
77
+ *
78
+ * @param {Encoding} encoding
79
+ * @returns {Encoding}
80
+ */
81
+ fixEncoding(encoding: import("../spec/channel").Encoding<string>): import("../spec/channel").Encoding<string>;
82
+ /**
83
+ * Returns the encoding spec supplemented with mark's default encodings
84
+ *
85
+ * @returns {Encoding}
86
+ */
87
+ get encoding(): import("../spec/channel").Encoding<string>;
88
+ getContext(): import("../types/viewContext").default;
89
+ getType(): import("../spec/mark").MarkType;
90
+ initializeData(): void;
91
+ /**
92
+ * Initialize encoders that encode fields of the data (or constants) to
93
+ * the ranges of the visual channels.
94
+ */
95
+ initializeEncoders(): void;
96
+ /**
97
+ * Initialize shaders etc.
98
+ */
99
+ initializeGraphics(): Promise<void>;
100
+ /**
101
+ * Update WebGL buffers from the data
102
+ */
103
+ updateGraphicsData(): void;
104
+ getSampleFacetMode(): "SAMPLE_FACET_TEXTURE" | "SAMPLE_FACET_UNIFORM";
105
+ /**
106
+ *
107
+ * @param {string} vertexShader
108
+ * @param {string} fragmentShader
109
+ * @param {string[]} [extraHeaders]
110
+ */
111
+ createAndLinkShaders(vertexShader: string, fragmentShader: string, extraHeaders?: string[]): void;
112
+ /** @type {string[]} */
113
+ domainUniforms: string[];
114
+ programStatus: {
115
+ program: WebGLProgram;
116
+ getProgramErrors: () => {
117
+ message: string;
118
+ detail: string;
119
+ };
120
+ };
121
+ /**
122
+ * Check WebGL shader/program compilation/linking status and finalize
123
+ * initialization.
124
+ */
125
+ finalizeGraphicsInitialization(): void;
126
+ _setDatums(): void;
127
+ /**
128
+ * Delete WebGL buffers etc.
129
+ */
130
+ deleteGraphicsData(): void;
131
+ /**
132
+ *
133
+ * @param {any} vertexData TODO: Extract type from VertexBuilder
134
+ */
135
+ updateBufferInfo(vertexData: any): void;
136
+ /** Convenience method */
137
+ get glHelper(): import("../gl/webGLHelper").default;
138
+ /** Convenience method */
139
+ get gl(): WebGL2RenderingContext;
140
+ onBeforeSampleAnimation(): void;
141
+ onAfterSampleAnimation(): void;
142
+ isReady(): import("twgl.js").ProgramInfo;
143
+ /**
144
+ * Returns true if this mark instance participates in picking.
145
+ *
146
+ * TODO: Check if tooltip is enabled,
147
+ * TODO: Check if selection (when it's implemented) is enabled
148
+ */
149
+ isPickingParticipant(): boolean;
150
+ /**
151
+ * Configures the WebGL state for rendering the mark instances.
152
+ * A separate preparation stage allows for efficient rendering of faceted
153
+ * views, i.e., multiple views share the uniforms (such as mark properties
154
+ * and scales) and buffers.
155
+ *
156
+ * @param {import("../types/rendering").GlobalRenderingOptions} options
157
+ * @returns {(() => void)[]}
158
+ */
159
+ prepareRender(options: import("../types/rendering").GlobalRenderingOptions): (() => void)[];
160
+ /**
161
+ * Prepares rendering of a single sample facet.
162
+ *
163
+ * @param {MarkRenderingOptions} options
164
+ * @returns {boolean} true if rendering should proceed,
165
+ * false if it should be skipped
166
+ */
167
+ prepareSampleFacetRendering(options: MarkRenderingOptions): boolean;
168
+ /**
169
+ * Returns a callback function that the ViewRenderingContext calls to
170
+ * perform the actual rendering either immediately or at a later time.
171
+ *
172
+ * @param {MarkRenderingOptions} options
173
+ * @returns {function():void} A function that renderingContext calls to
174
+ * trigger the actual rendering
175
+ */
176
+ render(options: MarkRenderingOptions): () => void;
177
+ /**
178
+ * @param {DrawFunction} draw A function that draws a range of vertices
179
+ * @param {import("./mark").MarkRenderingOptions} options
180
+ */
181
+ createRenderCallback(draw: DrawFunction, options: import("./mark").MarkRenderingOptions): () => void;
182
+ /**
183
+ * Sets viewport, clipping, and uniforms related to scaling and translation
184
+ *
185
+ * @param {import("../utils/layout/rectangle").default} coords
186
+ * @param {import("../utils/layout/rectangle").default} [clipRect]
187
+ * @returns {boolean} true if the viewport is renderable (size > 0)
188
+ */
189
+ setViewport(coords: import("../utils/layout/rectangle").default, clipRect?: import("../utils/layout/rectangle").default): boolean;
190
+ /**
191
+ * Finds a datum that overlaps the given value on the x domain.
192
+ * The result is unspecified if multiple data are found.
193
+ *
194
+ * This is highly specific to SampleView and its sorting/filtering functionality.
195
+ *
196
+ * @param {string} facetId
197
+ * @param {import("../spec/channel").Scalar} x value on the x domain
198
+ * @returns {any}
199
+ */
200
+ findDatumAt(facetId: string, x: import("../spec/channel").Scalar): any;
201
+ }
202
+ export type RenderingOptions = import("../types/rendering").RenderingOptions;
203
+ export type _MarkRenderingOptions = {
204
+ /**
205
+ * Don't configure viewport. Allows for
206
+ * optimized faceted rendering
207
+ */
208
+ skipViewportSetup?: boolean;
209
+ };
210
+ export type MarkRenderingOptions = RenderingOptions & _MarkRenderingOptions;
211
+ export type DrawFunction = (offset: number, count: number) => any;
212
+ /**
213
+ * @augments {InternMap<K, import("../gl/dataToVertices").RangeEntry>}
214
+ * @template K
215
+ */
216
+ declare class RangeMap<K> extends InternMap<K, import("../gl/dataToVertices").RangeEntry> {
217
+ constructor();
218
+ /**
219
+ *
220
+ * @param {Map<K, import("../gl/dataToVertices").RangeEntry>} anotherMap
221
+ */
222
+ migrateEntries(anotherMap: Map<K, import("../gl/dataToVertices").RangeEntry>): void;
223
+ }
224
+ import { InternMap } from "internmap";
225
+ export {};
226
+ //# sourceMappingURL=mark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark.d.ts","sourceRoot":"","sources":["../../../src/marks/mark.js"],"names":[],"mappings":";AAuCA,0DAA2D;AAC3D,0DAA2D;AAE3D;;;;;;;;;;;;GAYG;AACH;IACI;;;;;OAKG;IAEH;;OAEG;IACH,sBAFW,OAAO,kBAAkB,EAAE,OAAO,EAoE5C;IAjEG,6CAAwB;IAExB,iEAAiE;IACjE,UADW,OAAO,MAAM,EAAE,OAAO,kBAAkB,EAAE,OAAO,CAAC,CACpC;IAIzB,0FAA0F;IAC1F;4BADgE,MAAM;MAC3C;IAE3B,0DAA0D;IAC1D,aADW,OAAO,SAAS,EAAE,WAAW,CACZ;IAE5B,8DAA8D;IAC9D,iBADW,OAAO,SAAS,EAAE,eAAe,CACZ;IAEhC,+DAA+D;IAC/D,mBADW,OAAO,SAAS,EAAE,gBAAgB,CACX;IAElC,+DAA+D;IAC/D,iBADW,OAAO,SAAS,EAAE,gBAAgB,CACb;IAEhC,kFAAkF;IAClF,UADW,SAAS,GAAG,CAAC,CACM;IAG9B,yBAAyB;IACzB,qDAqBC;IAED;;;;;;;;OAQG;IACH,gEAKC;IAGL,sBAEC;IAED;;;;;;;OAOG;IACH,iBAFa,MAAM,EAAE,CAKpB;IAED;;OAEG;IACH,4DAWC;IAED;;OAEG;IACH,iEAcC;IAED;;;;;OAKG;IACH,8GAEC;IAED;;;;OAIG;IACH,2DAyCC;IAED,qDAEC;IAED,2CAEC;IAED,uBAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;OAEG;IACH,oCAEC;IAED;;OAEG;IACH,2BAEC;IAED,sEAeC;IAED;;;;;OAKG;IACH,mCAJW,MAAM,kBACN,MAAM,iBACN,MAAM,EAAE,QA+FlB;IAtFG,uBAAuB;IACvB,gBADW,MAAM,EAAE,CACK;IAgFxB;;;;;;MAIC;IAGL;;;OAGG;IACH,uCA2CC;IAED,mBAgBC;IAED;;OAEG;IACH,2BAiBC;IAED;;;OAGG;IACH,6BAFW,GAAG,QAoCb;IAED,yBAAyB;IACzB,oDAEC;IAED,yBAAyB;IACzB,iCAEC;IAED,gCAEC;IAED,+BAEC;IAED,yCAEC;IAED;;;;;OAKG;IACH,gCAcC;IAED;;;;;;;;OAQG;IAEH,uBAJW,OAAO,oBAAoB,EAAE,sBAAsB,GACjD,CAAC,MAAM,IAAI,CAAC,EAAE,CA+H1B;IAED;;;;;;OAMG;IACH,qCAJW,oBAAoB,GAClB,OAAO,CAqCnB;IAED;;;;;;;OAOG;IACH,gBAJW,oBAAoB,SACP,IAAI,CAM3B;IAED;;;OAGG;IACH,2BAHW,YAAY,WACZ,OAAO,QAAQ,EAAE,oBAAoB,cAmE/C;IAED;;;;;;OAMG;IACH,oBAJW,OAAO,2BAA2B,EAAE,OAAO,aAC3C,OAAO,2BAA2B,EAAE,OAAO,GACzC,OAAO,CAmHnB;IAED;;;;;;;;;OASG;IACH,qBAJW,MAAM,KACN,OAAO,iBAAiB,EAAE,MAAM,GAC9B,GAAG,CAIf;CACJ;+BA35BY,OAAO,oBAAoB,EAAE,gBAAgB;;;;;;wBAEhD,OAAO;;mCAEJ,gBAAgB,GAAG,qBAAqB;oCAG1C,MAAM,SACN,MAAM;AAq5BjB;;;GAGG;AACH;IACI,cAEC;IAkBD;;;OAGG;IACH,2BAFW,IAAI,CAAC,EAAE,OAAO,sBAAsB,EAAE,UAAU,CAAC,QAM3D;CACJ;0BAv8ByB,WAAW"}