@genome-spy/core 0.36.0 → 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} +4227 -4085
  3. package/dist/{index.js → bundled/index.js} +191 -55
  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,40 @@
1
+ import { Field } from "../spec/transform";
2
+
3
+ export interface FlowBatchBase {
4
+ type: string;
5
+ }
6
+
7
+ /**
8
+ * Indicates that the contents of a new file will be propagated. The fields of
9
+ * the file may or may not differ from the previous file. The data items within
10
+ * a single batch must have homogenous fields.
11
+ *
12
+ * FlowNodes can react to FileBatches and, for example, clear their internal
13
+ * states that expect specific fields in a specific layout.
14
+ */
15
+ export interface FileBatch {
16
+ type: "file";
17
+
18
+ /**
19
+ * An absolute or relative url where the file was loaded from.
20
+ */
21
+ url?: string;
22
+ }
23
+
24
+ /**
25
+ * Indicates that a new group/facet will be propagated. All data items that
26
+ * belong to a specific facet must be propagated within a single batch.
27
+ */
28
+ export interface FacetBatch {
29
+ type: "facet";
30
+
31
+ facetId: any | any[];
32
+
33
+ /**
34
+ * The field or fields that were used for partitioning the data.
35
+ * May be missing if partitioning is not based on the fields.
36
+ */
37
+ facetField?: Field | Field[];
38
+ }
39
+
40
+ export type FlowBatch = FileBatch | FacetBatch;
@@ -0,0 +1,65 @@
1
+ import Mark from "../marks/mark";
2
+ import { LocSize } from "../utils/layout/flexLayout";
3
+ import Rectangle from "../utils/layout/rectangle";
4
+
5
+ /**
6
+ * Describes the location of a sample facet. Left is the primary pos, right is for
7
+ * transitioning between two sets of samples.
8
+ */
9
+ export interface SampleFacetRenderingOptions {
10
+ /**
11
+ * Location and height on unit scale, zero at top
12
+ */
13
+ locSize: LocSize;
14
+
15
+ /**
16
+ * Target (during transition)
17
+ */
18
+ targetLocSize?: LocSize;
19
+ }
20
+
21
+ export interface RenderingOptions {
22
+ /**
23
+ * Which facet to render (if faceting is being used)
24
+ */
25
+ facetId?: any;
26
+
27
+ sampleFacetRenderingOptions?: SampleFacetRenderingOptions;
28
+
29
+ /**
30
+ * Clip rendering using the given rectangle.
31
+ * Mainly intended for clipping scrollable views.
32
+ */
33
+ clipRect?: Rectangle;
34
+ }
35
+
36
+ /**
37
+ * Options that affect the whole rendering pass.
38
+ */
39
+ export interface GlobalRenderingOptions {
40
+ /**
41
+ * Replace colors with unique ids for picking.
42
+ * Views that haven't enabled picking can be skipped.
43
+ */
44
+ picking?: boolean;
45
+ }
46
+
47
+ /**
48
+ * Allows for collecting marks for optimized rendering order.
49
+ */
50
+
51
+ export interface BufferedRenderingRequest {
52
+ mark: Mark;
53
+ callback: () => void;
54
+ coords: Rectangle;
55
+ clipRect?: Rectangle;
56
+ }
57
+
58
+ /**
59
+ * Method signature for View.render(). Reduces the amount of JSDoc needed.
60
+ */
61
+ export type RenderMethod = (
62
+ context: ViewRenderingContext,
63
+ coords: Rectangle,
64
+ options?: RenderingOptions
65
+ ) => void;
@@ -0,0 +1,40 @@
1
+ import { ComplexDomain, NumericDomain } from "../spec/scale";
2
+ import ScaleResolution from "../view/scaleResolution";
3
+
4
+ export interface ScaleResolutionEvent {
5
+ type: "domain";
6
+
7
+ scaleResolution: ScaleResolution;
8
+ }
9
+
10
+ export type ScaleResolutionListener = (event: ScaleResolutionEvent) => void;
11
+
12
+ /**
13
+ * A public API for ScaleResolution
14
+ */
15
+ export interface ScaleResolutionApi {
16
+ addEventListener(type: "domain", listener: ScaleResolutionListener): void;
17
+
18
+ removeEventListener(
19
+ type: "domain",
20
+ listener: ScaleResolutionListener
21
+ ): void;
22
+
23
+ /**
24
+ * Returns the current, possible zoomed domain.
25
+ */
26
+ getDomain(): any[];
27
+
28
+ /**
29
+ * Returns the current, possible zoomed domain converted into complex objects
30
+ * such as genomic coordinates.
31
+ */
32
+ getComplexDomain(): NumericDomain | ComplexDomain;
33
+
34
+ isZoomable(): boolean;
35
+
36
+ zoomTo(
37
+ domain: number[] | ComplexDomain,
38
+ duration?: boolean | number
39
+ ): Promise<void>;
40
+ }
@@ -0,0 +1,85 @@
1
+ import { TemplateResult } from "lit-html";
2
+ import View, { BroadcastMessage } from "../view/view";
3
+ import DataFlow from "../data/dataFlow";
4
+ import AccessorFactory from "../encoder/accessor";
5
+ import WebGLHelper from "../gl/webGLHelper";
6
+ import Animator from "../utils/animator";
7
+ import GenomeStore from "../genome/genomeStore";
8
+ import BmFontManager from "../fonts/bmFontManager";
9
+ import Mark from "../marks/mark";
10
+ import { Datum } from "../data/flowNode";
11
+ import { ViewSpec } from "../spec/view";
12
+ import ContainerView from "./containerView";
13
+ import { BroadcastEventType } from "../genomeSpy";
14
+
15
+ export interface Hover {
16
+ mark: Mark;
17
+ datum: Datum;
18
+ }
19
+
20
+ /**
21
+ * ViewContext provides essential data and interfaces to View classes.
22
+ */
23
+ export default interface ViewContext {
24
+ dataFlow: DataFlow<View>;
25
+ accessorFactory: AccessorFactory;
26
+ glHelper: WebGLHelper;
27
+ animator: Animator;
28
+ genomeStore?: GenomeStore;
29
+ fontManager: BmFontManager;
30
+
31
+ devicePixelRatio: number;
32
+
33
+ requestLayoutReflow: () => void;
34
+
35
+ updateTooltip: <T>(
36
+ datum: T,
37
+ converter?: (datum: T) => Promise<TemplateResult>
38
+ ) => void;
39
+
40
+ getCurrentHover: () => Hover;
41
+
42
+ /**
43
+ * Adds a keyboard event listener to the document. Cleanup is performed automatically
44
+ * when GenomeSpy is finalized.
45
+ *
46
+ * TODO: Listeners should be called only when the mouse pointer is inside the
47
+ * container or the app covers the full document.
48
+ */
49
+ addKeyboardListener: (
50
+ type: "keydown" | "keyup",
51
+ listener: (event: KeyboardEvent) => void
52
+ ) => void;
53
+
54
+ /**
55
+ * Registers a listener for broadcast messages.
56
+ * Typically broadcast messages are automatically broadcasted to all views.
57
+ * However, in some cases non-view components may be interested in these messages.
58
+ */
59
+ addBroadcastListener: (
60
+ type: BroadcastEventType,
61
+ listener: (message: BroadcastMessage) => void
62
+ ) => void;
63
+
64
+ removeBroadcastListener: (
65
+ type: BroadcastEventType,
66
+ listener: (message: BroadcastMessage) => void
67
+ ) => void;
68
+
69
+ getNamedDataFromProvider: (name: string) => any[];
70
+
71
+ /**
72
+ * Returns true if the view is configured to be visible.
73
+ * N.B. This does NOT consider ancestors' visibility.
74
+ */
75
+ isViewConfiguredVisible: (view: View) => boolean;
76
+
77
+ isViewSpec: (spec: any) => boolean;
78
+
79
+ createView: (
80
+ spec: ViewSpec,
81
+ layoutParent?: ContainerView,
82
+ dataParent?: View,
83
+ defaultName?: string
84
+ ) => View;
85
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @param {string} url
3
+ * @param {string} baseUrl
4
+ */
5
+ export default function addBaseUrl(url: string, baseUrl: string): string;
6
+ //# sourceMappingURL=addBaseUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addBaseUrl.d.ts","sourceRoot":"","sources":["../../../src/utils/addBaseUrl.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wCAHW,MAAM,WACN,MAAM,UAgBhB"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @param {string} url
3
+ * @param {string} baseUrl
4
+ */
5
+ export default function addBaseUrl(url, baseUrl) {
6
+ // Regex copied from vega-loader
7
+ if (!baseUrl || /^(data:|([A-Za-z]+:)?\/\/)/.test(url)) {
8
+ return url;
9
+ }
10
+
11
+ if (!url.startsWith("/")) {
12
+ if (!baseUrl.endsWith("/")) {
13
+ baseUrl += "/";
14
+ }
15
+ return baseUrl + url;
16
+ }
17
+
18
+ return url;
19
+ }
@@ -0,0 +1,22 @@
1
+ import { expect, test } from "vitest";
2
+ import addBaseUrl from "./addBaseUrl";
3
+
4
+ test("addBaseUrl adds baseUrl when needed", () => {
5
+ expect(addBaseUrl("foo.html", "https://site.com/")).toEqual(
6
+ "https://site.com/foo.html"
7
+ );
8
+ expect(addBaseUrl("foo.html", "https://site.com")).toEqual(
9
+ "https://site.com/foo.html"
10
+ );
11
+ expect(addBaseUrl("bar/foo.html", "https://site.com/")).toEqual(
12
+ "https://site.com/bar/foo.html"
13
+ );
14
+ expect(addBaseUrl("../foo.html", "https://site.com/bar/")).toEqual(
15
+ "https://site.com/bar/../foo.html"
16
+ );
17
+ });
18
+
19
+ test("addBaseUrl doesn't add baseUrl when not needed", () => {
20
+ expect(addBaseUrl("/foo.html", "https://site.com/")).toEqual("/foo.html");
21
+ expect(addBaseUrl("foo.html", undefined)).toEqual("foo.html");
22
+ });
@@ -0,0 +1,41 @@
1
+ export default class Animator {
2
+ /**
3
+ *
4
+ * @param {function(number):void} renderCallback
5
+ */
6
+ constructor(renderCallback: (arg0: number) => void);
7
+ _renderCallback: (arg0: number) => void;
8
+ _renderRequested: boolean;
9
+ _warn: boolean;
10
+ /** @type {(function(number):void)[]} */
11
+ transitions: ((arg0: number) => void)[];
12
+ /**
13
+ * Schedules a "transition" to be called before the actual rendering
14
+ * is preformed. The transition could adjust the layout, for example.
15
+ * This method also requests rendering to be performed.
16
+ *
17
+ * If the callback has already been requested (compared by identity),
18
+ * it is removed from the queue and added to the end.
19
+ *
20
+ * @param {function(number):void} callback
21
+ */
22
+ requestTransition(callback: (arg0: number) => void): void;
23
+ /**
24
+ * @param {function(number):void} callback
25
+ */
26
+ cancelTransition(callback: (arg0: number) => void): void;
27
+ /**
28
+ * Requests the request transitions and rendering callback to be called
29
+ * during the next animation frame. Redundant calls to this method are safe,
30
+ * they have no effect.
31
+ */
32
+ requestRender(): void;
33
+ /**
34
+ * Initiates a transition with a `requestAnimationFrame` that is synced
35
+ * with this Animator instance.
36
+ *
37
+ * @param {import("./transition").TransitionOptions} options
38
+ */
39
+ transition(options: import("./transition").TransitionOptions): Promise<any>;
40
+ }
41
+ //# sourceMappingURL=animator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animator.d.ts","sourceRoot":"","sources":["../../../src/utils/animator.js"],"names":[],"mappings":"AAEA;IACI;;;OAGG;IACH,mCAFoB,MAAM,KAAE,IAAI,EAS/B;IANG,wBAHgB,MAAM,KAAE,IAAI,CAGS;IACrC,0BAA6B;IAC7B,eAAkB;IAElB,wCAAwC;IACxC,qBADqB,MAAM,KAAE,IAAI,IACZ;IAGzB;;;;;;;;;OASG;IACH,mCAFoB,MAAM,KAAE,IAAI,QAM/B;IAED;;OAEG;IACH,kCAFoB,MAAM,KAAE,IAAI,QAO/B;IAED;;;;OAIG;IACH,sBAoBC;IAED;;;;;OAKG;IACH,oBAFW,OAAO,cAAc,EAAE,iBAAiB,gBAQlD;CACJ"}
@@ -0,0 +1,83 @@
1
+ import doTransition from "./transition";
2
+
3
+ export default class Animator {
4
+ /**
5
+ *
6
+ * @param {function(number):void} renderCallback
7
+ */
8
+ constructor(renderCallback) {
9
+ this._renderCallback = renderCallback;
10
+ this._renderRequested = false;
11
+ this._warn = false;
12
+
13
+ /** @type {(function(number):void)[]} */
14
+ this.transitions = [];
15
+ }
16
+
17
+ /**
18
+ * Schedules a "transition" to be called before the actual rendering
19
+ * is preformed. The transition could adjust the layout, for example.
20
+ * This method also requests rendering to be performed.
21
+ *
22
+ * If the callback has already been requested (compared by identity),
23
+ * it is removed from the queue and added to the end.
24
+ *
25
+ * @param {function(number):void} callback
26
+ */
27
+ requestTransition(callback) {
28
+ this.cancelTransition(callback);
29
+ this.transitions.push(callback);
30
+ this.requestRender();
31
+ }
32
+
33
+ /**
34
+ * @param {function(number):void} callback
35
+ */
36
+ cancelTransition(callback) {
37
+ const existingIndex = this.transitions.indexOf(callback);
38
+ if (existingIndex >= 0) {
39
+ this.transitions.splice(existingIndex, 1);
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Requests the request transitions and rendering callback to be called
45
+ * during the next animation frame. Redundant calls to this method are safe,
46
+ * they have no effect.
47
+ */
48
+ requestRender() {
49
+ if (!this._renderRequested) {
50
+ this._renderRequested = true;
51
+ window.requestAnimationFrame((timestamp) => {
52
+ this._renderRequested = false;
53
+
54
+ const transitions = this.transitions;
55
+ this.transitions = [];
56
+
57
+ /** @type {function} */
58
+ let transitionCallback;
59
+ while ((transitionCallback = transitions.shift())) {
60
+ transitionCallback(timestamp);
61
+ }
62
+
63
+ this._renderCallback(timestamp);
64
+ });
65
+ } else if (this._warn) {
66
+ console.warn("Render already requested!");
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Initiates a transition with a `requestAnimationFrame` that is synced
72
+ * with this Animator instance.
73
+ *
74
+ * @param {import("./transition").TransitionOptions} options
75
+ */
76
+ transition(options) {
77
+ return doTransition({
78
+ requestAnimationFrame: (callback) =>
79
+ this.requestTransition(callback),
80
+ ...options,
81
+ });
82
+ }
83
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @param {T[]} a
3
+ * @param {T[]} b
4
+ * @template T
5
+ */
6
+ export function shallowArrayEquals<T>(a: T[], b: T[]): boolean;
7
+ /**
8
+ * @param {A[]} a
9
+ * @param {B[]} b
10
+ * @param {function(A):T} aAccessor
11
+ * @param {function(B):T} bAccessor
12
+ * @template A, B, T
13
+ */
14
+ export function shallowArrayEqualsWithAccessors<A, B, T>(a: A[], b: B[], aAccessor: (arg0: A) => T, bAccessor: (arg0: B) => T): boolean;
15
+ /**
16
+ *
17
+ * @param {any[]} a
18
+ */
19
+ export function isHomogeneous(a: any[]): boolean;
20
+ /**
21
+ * @param {T[] | T} obj
22
+ * @returns {T[]}
23
+ * @template T
24
+ */
25
+ export function asArray<T>(obj: T | T[]): T[];
26
+ /**
27
+ * Returns the last element of an array.
28
+ * Like vega-util's peek but with stricter typings
29
+ *
30
+ * @param {T[]} arr
31
+ * @template T
32
+ */
33
+ export function peek<T>(arr: T[]): T;
34
+ //# sourceMappingURL=arrayUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrayUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/arrayUtils.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,+DAEC;AAED;;;;;;GAMG;AACH,wIAKC;AAED;;;GAGG;AACH,iCAFW,GAAG,EAAE,WASf;AAED;;;;GAIG;AACH,8CAQC;AAED;;;;;;GAMG;AACH,qCAEC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @param {T[]} a
3
+ * @param {T[]} b
4
+ * @template T
5
+ */
6
+ export function shallowArrayEquals(a, b) {
7
+ return a.length == b.length && a.every((s, i) => a[i] === b[i]);
8
+ }
9
+
10
+ /**
11
+ * @param {A[]} a
12
+ * @param {B[]} b
13
+ * @param {function(A):T} aAccessor
14
+ * @param {function(B):T} bAccessor
15
+ * @template A, B, T
16
+ */
17
+ export function shallowArrayEqualsWithAccessors(a, b, aAccessor, bAccessor) {
18
+ return (
19
+ a.length == b.length &&
20
+ a.every((s, i) => aAccessor(a[i]) === bAccessor(b[i]))
21
+ );
22
+ }
23
+
24
+ /**
25
+ *
26
+ * @param {any[]} a
27
+ */
28
+ export function isHomogeneous(a) {
29
+ if (a.length <= 1) {
30
+ return true;
31
+ }
32
+
33
+ const first = a[0];
34
+ return a.every((x) => x === first);
35
+ }
36
+
37
+ /**
38
+ * @param {T[] | T} obj
39
+ * @returns {T[]}
40
+ * @template T
41
+ */
42
+ export function asArray(obj) {
43
+ if (Array.isArray(obj)) {
44
+ return obj;
45
+ } else if (typeof obj != "undefined") {
46
+ return [obj];
47
+ } else {
48
+ return [];
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Returns the last element of an array.
54
+ * Like vega-util's peek but with stricter typings
55
+ *
56
+ * @param {T[]} arr
57
+ * @template T
58
+ */
59
+ export function peek(arr) {
60
+ return arr[arr.length - 1];
61
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @callback Lookup
3
+ * @param {number} start
4
+ * @param {number} end
5
+ * @param {[number, number]} [arr] Store the result into this array (and return it)
6
+ * @returns {[number, number]}
7
+ */
8
+ /**
9
+ * A binned index for (overlapping) ranges that are sorted by their start position.
10
+ * Each indexed range is associated with respective vertex indices.
11
+ *
12
+ * @param {number} size Number of bins
13
+ * @param {[number, number]} domain Domain of positions
14
+ * @param {(datum: T) => number} accessor Accessor for range's start position
15
+ * @param {(datum: T) => number} [accessor2] Accessor for range's end position
16
+ * @template T
17
+ */
18
+ export function createBinningRangeIndexer<T>(size: number, domain: [number, number], accessor: (datum: T) => number, accessor2?: (datum: T) => number): {
19
+ (datum: T, startVertexIndex: number, endVertexIndex: number): void;
20
+ getIndex: () => Lookup;
21
+ };
22
+ export type Lookup = (start: number, end: number, arr?: [number, number]) => [number, number];
23
+ //# sourceMappingURL=binnedIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binnedIndex.d.ts","sourceRoot":"","sources":["../../../src/utils/binnedIndex.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AAEH;;;;;;;;;GASG;AACH,mDANW,MAAM,UACN,CAAC,MAAM,EAAE,MAAM,CAAC,0BACF,MAAM,4BACN,MAAM;iCAyChB,MAAM,kBACN,MAAM;;EAwGpB;6BA/JU,MAAM,OACN,MAAM,QACN,CAAC,MAAM,EAAE,MAAM,CAAC,KACd,CAAC,MAAM,EAAE,MAAM,CAAC"}