@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,124 @@
1
+ import { lerp } from "vega-util";
2
+
3
+ /**
4
+ * Creates some inertia, mainly for zooming with a mechanical mouse wheel
5
+ */
6
+ export default class Inertia {
7
+ /**
8
+ * @param {import("./animator").default} animator
9
+ * @param {boolean} [disabled] Just call the callback directly
10
+ */
11
+ constructor(animator, disabled) {
12
+ this.animator = animator;
13
+ this.disabled = !!disabled;
14
+ this.damping = 0.015;
15
+ this.acceleration = 0.3; // per event
16
+ /** Use acceleration if the momentum step is greater than X */
17
+ this.accelerationThreshold = 100;
18
+ this.lowerLimit = 0.5; // When to stop updating
19
+ this.loop = false;
20
+
21
+ this.momentum = 0;
22
+ this.timestamp = 0;
23
+ /** @type {function(number):void} */
24
+ this.callback = null;
25
+
26
+ this._transitionCallback = this.animate.bind(this);
27
+ this.clear();
28
+ }
29
+
30
+ clear() {
31
+ /** @type {number} */
32
+ this.momentum = 0;
33
+ this.timestamp = null;
34
+ this.loop = null;
35
+ this.callback = null;
36
+ }
37
+
38
+ cancel() {
39
+ if (this.loop) {
40
+ this.animator.cancelTransition(this._transitionCallback);
41
+ this.clear();
42
+ }
43
+ }
44
+
45
+ /**
46
+ *
47
+ * @param {number} value
48
+ * @param {function(number):void} callback
49
+ */
50
+ setMomentum(value, callback) {
51
+ if (this.disabled) {
52
+ callback(value);
53
+ return;
54
+ }
55
+
56
+ // This may have some use in the future to improve the behavior of
57
+ // a mechanical mouse wheel:
58
+ // https://github.com/w3c/uievents/issues/181
59
+
60
+ if (value * this.momentum < 0) {
61
+ this.momentum = 0; // Stop if the direction changes
62
+ } else if (Math.abs(value) > this.accelerationThreshold) {
63
+ this.momentum = lerp([this.momentum, value], this.acceleration);
64
+ } else {
65
+ this.momentum = value;
66
+ }
67
+
68
+ this.callback = callback;
69
+
70
+ if (!this.loop) {
71
+ this.animate();
72
+ }
73
+ }
74
+
75
+ /**
76
+ *
77
+ * @param {number} [timestamp]
78
+ */
79
+ animate(timestamp) {
80
+ this.callback(this.momentum); // TODO: This is actually a delta, should take the elapsed time into account
81
+
82
+ const timeDelta = timestamp - this.timestamp || 0;
83
+ this.timestamp = timestamp;
84
+
85
+ const velocity = Math.abs(this.momentum);
86
+
87
+ this.momentum =
88
+ Math.sign(this.momentum) *
89
+ Math.max(
90
+ 0,
91
+ velocity - ((velocity * this.damping) ** 1.5 + 0.04) * timeDelta
92
+ );
93
+
94
+ if (Math.abs(this.momentum) > this.lowerLimit) {
95
+ this.loop = true;
96
+ this.animator.requestTransition(this._transitionCallback);
97
+ } else {
98
+ this.clear();
99
+ }
100
+ }
101
+ }
102
+
103
+ /**
104
+ * @param {T} event
105
+ * @template T
106
+ */
107
+ export function makeEventTemplate(event) {
108
+ /** @type {Partial<Record<keyof T, any>>} */
109
+ const template = {};
110
+ const acceptedTypes = ["string", "number", "boolean"];
111
+ const rejectedProps = ["wheelDelta", "wheelDeltaX", "wheelDeltaY"];
112
+
113
+ // eslint-disable-next-line guard-for-in
114
+ for (const key in event) {
115
+ const k = /** @type {keyof T} */ (key);
116
+ if (
117
+ !rejectedProps.includes(key) &&
118
+ acceptedTypes.includes(typeof event[k])
119
+ ) {
120
+ template[k] = /** @type {any} */ (event[k]);
121
+ }
122
+ }
123
+ return template;
124
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * This class wraps a MouseEvent (or similar) and allows for
3
+ * its propagation through the view hierarchy in a similar manner
4
+ * as in the DOM.
5
+ */
6
+ export default class InteractionEvent {
7
+ /**
8
+ *
9
+ * @param {import("./layout/point").default} point Event coordinates
10
+ * inside the visualization canvas.
11
+ * @param {UIEvent} uiEvent The event to be wrapped
12
+ */
13
+ constructor(point: import("./layout/point").default, uiEvent: UIEvent);
14
+ point: import("./layout/point").default;
15
+ uiEvent: UIEvent;
16
+ stopped: boolean;
17
+ /**
18
+ * The target is known only in the bubbling phase
19
+ *
20
+ * @type {import("../view/view").default}
21
+ */
22
+ target: import("../view/view").default;
23
+ stopPropagation(): void;
24
+ get type(): string;
25
+ }
26
+ //# sourceMappingURL=interactionEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionEvent.d.ts","sourceRoot":"","sources":["../../../src/utils/interactionEvent.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;IACI;;;;;OAKG;IACH,mBAJW,OAAO,gBAAgB,EAAE,OAAO,WAEhC,OAAO,EAajB;IAVG,wCAAkB;IAClB,iBAAsB;IACtB,iBAAoB;IAEpB;;;;OAIG;IACH,QAFU,OAAO,cAAc,EAAE,OAAO,CAEjB;IAG3B,wBAEC;IAED,mBAEC;CACJ"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * This class wraps a MouseEvent (or similar) and allows for
3
+ * its propagation through the view hierarchy in a similar manner
4
+ * as in the DOM.
5
+ */
6
+ export default class InteractionEvent {
7
+ /**
8
+ *
9
+ * @param {import("./layout/point").default} point Event coordinates
10
+ * inside the visualization canvas.
11
+ * @param {UIEvent} uiEvent The event to be wrapped
12
+ */
13
+ constructor(point, uiEvent) {
14
+ this.point = point;
15
+ this.uiEvent = uiEvent;
16
+ this.stopped = false;
17
+
18
+ /**
19
+ * The target is known only in the bubbling phase
20
+ *
21
+ * @type {import("../view/view").default}
22
+ */
23
+ this.target = undefined;
24
+ }
25
+
26
+ stopPropagation() {
27
+ this.stopped = true;
28
+ }
29
+
30
+ get type() {
31
+ return this.uiEvent.type;
32
+ }
33
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Iterates a nested Map structure created by d3-array's group() function.
3
+ *
4
+ * Yields arrays that contain the compound key and the grouped data items.
5
+ *
6
+ * @param {Map<any, any>} map The root
7
+ * @param {any[]} [path] The path so far.
8
+ * @returns {Generator<[any[], any[]]>}
9
+ */
10
+ export default function iterateNestedMaps(map: Map<any, any>, path?: any[]): Generator<[any[], any[]]>;
11
+ //# sourceMappingURL=iterateNestedMaps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iterateNestedMaps.d.ts","sourceRoot":"","sources":["../../../src/utils/iterateNestedMaps.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,+CAJW,IAAI,GAAG,EAAE,GAAG,CAAC,SACb,GAAG,EAAE,GACH,UAAU,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAarC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Iterates a nested Map structure created by d3-array's group() function.
3
+ *
4
+ * Yields arrays that contain the compound key and the grouped data items.
5
+ *
6
+ * @param {Map<any, any>} map The root
7
+ * @param {any[]} [path] The path so far.
8
+ * @returns {Generator<[any[], any[]]>}
9
+ */
10
+ export default function* iterateNestedMaps(map, path = []) {
11
+ for (const [key, value] of map.entries()) {
12
+ if (value instanceof Map) {
13
+ for (const m of iterateNestedMaps(value, [...path, key])) {
14
+ yield m;
15
+ }
16
+ } else {
17
+ // TODO: Could recycle compound key arrays for better performance
18
+ yield [[...path, key], value];
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,33 @@
1
+ import { expect, test } from "vitest";
2
+ import { group } from "d3-array";
3
+ import iterateNestedMaps from "./iterateNestedMaps";
4
+
5
+ const data = [
6
+ { name: "jim", amount: "34.0", date: "11/12/2015" },
7
+ { name: "carl", amount: "120.11", date: "11/12/2015" },
8
+ { name: "stacy", amount: "12.01", date: "01/04/2016" },
9
+ { name: "stacy", amount: "34.05", date: "01/04/2016" },
10
+ { name: "stacy", amount: "1.5", date: "02/04/2016" },
11
+ ];
12
+
13
+ const groups = group(
14
+ data,
15
+ (d) => d.name,
16
+ (d) => d.date
17
+ );
18
+
19
+ test("iterateNestedMaps iterates correctly", () => {
20
+ const expected = [
21
+ [["jim", "11/12/2015"], [data[0]]],
22
+ [["carl", "11/12/2015"], [data[1]]],
23
+ [
24
+ ["stacy", "01/04/2016"],
25
+ [data[2], data[3]],
26
+ ],
27
+ [["stacy", "02/04/2016"], [data[4]]],
28
+ ];
29
+
30
+ const result = [...iterateNestedMaps(groups)];
31
+
32
+ expect(result).toEqual(expected);
33
+ });
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Returns an iterator that merges multiple sorted arrays.
3
+ *
4
+ * @param {T[][]} arrays
5
+ * @param {function(T):number} [accessor]
6
+ * @template T
7
+ */
8
+ export default function kWayMerge<T>(arrays: T[][], accessor?: (arg0: T) => number): Generator<T, void, unknown>;
9
+ //# sourceMappingURL=kWayMerge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kWayMerge.d.ts","sourceRoot":"","sources":["../../../src/utils/kWayMerge.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,4EAHuB,MAAM,+BAmC5B"}
@@ -0,0 +1,42 @@
1
+ import FlatQueue from "flatqueue";
2
+
3
+ /**
4
+ * Returns an iterator that merges multiple sorted arrays.
5
+ *
6
+ * @param {T[][]} arrays
7
+ * @param {function(T):number} [accessor]
8
+ * @template T
9
+ */
10
+ export default function* kWayMerge(arrays, accessor = (x) => +x) {
11
+ // https://www.wikiwand.com/en/K-way_merge_algorithm
12
+
13
+ // This could be optimized by implementing a tournament tree or
14
+ // by adding replaceTop to the Heap.
15
+ // https://docs.python.org/2/library/heapq.html#heapq.heapreplace
16
+
17
+ const k = arrays.length;
18
+
19
+ const heap = new FlatQueue();
20
+ const pointers = new Array(k).fill(0);
21
+
22
+ for (const [i, array] of arrays.entries()) {
23
+ if (array.length) {
24
+ heap.push(i, accessor(array[0]));
25
+ }
26
+ }
27
+
28
+ let i = 0;
29
+ while ((i = heap.pop()) !== undefined) {
30
+ const array = arrays[i];
31
+ let pointer = pointers[i];
32
+ const element = array[pointer++];
33
+
34
+ yield element;
35
+
36
+ if (pointer < array.length) {
37
+ const newValue = accessor(array[pointer]);
38
+ heap.push(i, newValue);
39
+ pointers[i] = pointer;
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,26 @@
1
+ import { expect, test } from "vitest";
2
+ import kWayMerge from "./kWayMerge";
3
+
4
+ test("k-way merge merges multiple sorted arrays", () => {
5
+ /** @type {{a: number}[][]} */
6
+ const arrays = [];
7
+
8
+ for (let a = 0; a < 20; a++) {
9
+ /** @type {{a: number}[]} */
10
+ const array = [];
11
+ arrays.push(array);
12
+
13
+ let x = 0;
14
+ for (let i = 0; i < a; i++) {
15
+ x += Math.floor(Math.random() * 10);
16
+ array.push({ a: x });
17
+ }
18
+ }
19
+
20
+ const sorted = arrays.flat().sort((a, b) => a.a - b.a);
21
+
22
+ /** @type {function(any):number} */
23
+ const accessor = (d) => d.a;
24
+
25
+ expect([...kWayMerge(arrays, accessor)]).toEqual(sorted);
26
+ });
@@ -0,0 +1,182 @@
1
+ /**
2
+ *
3
+ * Layout calculation inspired by flexbox. The elements may have an
4
+ * absolute size (in pixels) and a growth component for filling the
5
+ * remaining space. Spacing around zero-sized items are collapsed.
6
+ *
7
+ * Read more at https://css-tricks.com/flex-grow-is-weird/
8
+ *
9
+ * @typedef {object} SizeDef Size definition inspired by CSS flexbox
10
+ * @prop {number} [px] Size in pixels
11
+ * @prop {number} [grow] Share of remaining space
12
+ *
13
+ * @typedef {object} LocSize One-dimensional location and size
14
+ * @prop {number} location
15
+ * @prop {number} size
16
+ *
17
+ * @typedef {object} FlexOptions
18
+ * @prop {number} [spacing] gap between items in pixels
19
+ * @prop {number} [devicePixelRatio] allows for snapping to "retina" pixels.
20
+ * Default: `undefined`, which disables the snapping.
21
+ * @prop {number} [offset] add the offset to all locations. Default: `0`.
22
+ * @prop {boolean} [reverse] fill from "right to left".
23
+ *
24
+ * @param {SizeDef[]} items
25
+ * @param {number} containerSize in pixels
26
+ * @param {FlexOptions} [options]
27
+ * @returns {LocSize[]}
28
+ */
29
+ export function mapToPixelCoords(items: SizeDef[], containerSize: number, { spacing, devicePixelRatio, offset, reverse }?: FlexOptions): LocSize[];
30
+ /**
31
+ * Returns the minimum size (the sum of pixels sizes) for the flex items
32
+ *
33
+ * @param {Iterable<SizeDef>} items
34
+ * @param {FlexOptions} [options]
35
+ */
36
+ export function getMinimumSize(items: Iterable<SizeDef>, { spacing }?: FlexOptions): number;
37
+ /**
38
+ * @param {Iterable<SizeDef>} items
39
+ * @returns {SizeDef}
40
+ */
41
+ export function getLargestSize(items: Iterable<SizeDef>): SizeDef;
42
+ /**
43
+ * Returns true if relative (stretching) elements are present
44
+ * @param {SizeDef[]} items
45
+ */
46
+ export function isStretching(items: SizeDef[]): boolean;
47
+ /**
48
+ *
49
+ * @param {SizeDef[]} sizeDefs
50
+ */
51
+ export function sumSizeDefs(sizeDefs: SizeDef[]): {
52
+ px: number;
53
+ grow: number;
54
+ };
55
+ /**
56
+ * Is the sizeDef taking no space at all
57
+ *
58
+ * @param {SizeDef} sizeDef
59
+ */
60
+ export function isZeroSizeDef(sizeDef: SizeDef): boolean;
61
+ /**
62
+ *
63
+ * @param {*} spec
64
+ * @returns {spec is SizeDef}
65
+ */
66
+ export function isSizeDef(spec: any): spec is SizeDef;
67
+ /**
68
+ *
69
+ * @param {"container" | number | SizeDef | import("../../spec/view").Step} size
70
+ * @returns {SizeDef}
71
+ */
72
+ export function parseSizeDef(size: "container" | number | SizeDef | import("../../spec/view").Step): SizeDef;
73
+ /**
74
+ * Interpolates between two LocSizes
75
+ *
76
+ * @param {LocSize} from
77
+ * @param {LocSize} to
78
+ * @param {function():number} ratio
79
+ * @returns {LocSize}
80
+ */
81
+ export function interpolateLocSizes(from: LocSize, to: LocSize, ratio: () => number): LocSize;
82
+ /**
83
+ * Wraps a LocSize and allows scrolling.
84
+ *
85
+ * @param {LocSize} locSize
86
+ * @param {number | function():number} offset
87
+ * @returns {LocSize}
88
+ */
89
+ export function translateLocSize(locSize: LocSize, offset: number | (() => number)): LocSize;
90
+ /**
91
+ * Wraps a LocSize and allows scaling.
92
+ *
93
+ * @param {LocSize} locSize
94
+ * @param {number | function():number} factor
95
+ * @returns {LocSize}
96
+ */
97
+ export function scaleLocSize(locSize: LocSize, factor: number | (() => number)): LocSize;
98
+ /**
99
+ * @param {LocSize} locSize
100
+ * @param {number} value
101
+ */
102
+ export function locSizeEncloses(locSize: LocSize, value: number): boolean;
103
+ export class FlexDimensions {
104
+ /**
105
+ *
106
+ * @param {SizeDef} width
107
+ * @param {SizeDef} height
108
+ */
109
+ constructor(width: SizeDef, height: SizeDef);
110
+ /** @readonly */
111
+ readonly width: SizeDef;
112
+ /** @readonly */
113
+ readonly height: SizeDef;
114
+ /**
115
+ * Adds padding to absolute (px) dimensions
116
+ *
117
+ * @param {import("./padding").default} padding
118
+ */
119
+ addPadding(padding: import("./padding").default): FlexDimensions;
120
+ /**
121
+ * Subtracts padding from absolute (px) dimensions
122
+ *
123
+ * @param {import("./padding").default} padding
124
+ */
125
+ subtractPadding(padding: import("./padding").default): FlexDimensions;
126
+ #private;
127
+ }
128
+ /**
129
+ * A sizedef that takes no space at all.
130
+ *
131
+ * @type {SizeDef}
132
+ */
133
+ export const ZERO_SIZEDEF: SizeDef;
134
+ export const ZERO_FLEXDIMENSIONS: FlexDimensions;
135
+ /**
136
+ * Size definition inspired by CSS flexbox
137
+ */
138
+ export type SizeDef = {
139
+ /**
140
+ * Size in pixels
141
+ */
142
+ px?: number;
143
+ /**
144
+ * Share of remaining space
145
+ */
146
+ grow?: number;
147
+ };
148
+ /**
149
+ * One-dimensional location and size
150
+ */
151
+ export type LocSize = {
152
+ location: number;
153
+ size: number;
154
+ };
155
+ /**
156
+ *
157
+ * Layout calculation inspired by flexbox. The elements may have an
158
+ * absolute size (in pixels) and a growth component for filling the
159
+ * remaining space. Spacing around zero-sized items are collapsed.
160
+ *
161
+ * Read more at https://css-tricks.com/flex-grow-is-weird/
162
+ */
163
+ export type FlexOptions = {
164
+ /**
165
+ * gap between items in pixels
166
+ */
167
+ spacing?: number;
168
+ /**
169
+ * allows for snapping to "retina" pixels.
170
+ * Default: `undefined`, which disables the snapping.
171
+ */
172
+ devicePixelRatio?: number;
173
+ /**
174
+ * add the offset to all locations. Default: `0`.
175
+ */
176
+ offset?: number;
177
+ /**
178
+ * fill from "right to left".
179
+ */
180
+ reverse?: boolean;
181
+ };
182
+ //# sourceMappingURL=flexLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flexLayout.d.ts","sourceRoot":"","sources":["../../../../src/utils/layout/flexLayout.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wCALW,OAAO,EAAE,iBACT,MAAM,mDACN,WAAW,GACT,OAAO,EAAE,CAqGrB;AAED;;;;;GAKG;AACH,sCAHW,SAAS,OAAO,CAAC,gBACjB,WAAW,UAQrB;AAED;;;GAGG;AACH,sCAHW,SAAS,OAAO,CAAC,GACf,OAAO,CAWnB;AAED;;;GAGG;AACH,oCAFW,OAAO,EAAE,WAInB;AAED;;;GAGG;AACH,sCAFW,OAAO,EAAE;;;EASnB;AAmED;;;;GAIG;AACH,uCAFW,OAAO,WAIjB;AAWD;;;;GAIG;AACH,sDAEC;AAED;;;;GAIG;AACH,mCAHW,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,iBAAiB,EAAE,IAAI,GAC7D,OAAO,CAiBnB;AAID;;;;;;;GAOG;AACH,0CALW,OAAO,MACP,OAAO,eACI,MAAM,GACf,OAAO,CA4BnB;AAED;;;;;;GAMG;AACH,0CAJW,OAAO,UACP,MAAM,UAAc,MAAM,CAAA,GACxB,OAAO,CAanB;AAED;;;;;;GAMG;AACH,sCAJW,OAAO,UACP,MAAM,UAAc,MAAM,CAAA,GACxB,OAAO,CAanB;AAED;;;GAGG;AACH,yCAHW,OAAO,SACP,MAAM,WAIhB;AAtMD;IACI;;;;OAIG;IACH,mBAHW,OAAO,UACP,OAAO,EAQjB;IAJG,gBAAgB;IAChB,wBAAkB;IAClB,gBAAgB;IAChB,yBAAoB;IAGxB;;;;OAIG;IACH,oBAFW,OAAO,WAAW,EAAE,OAAO,kBAIrC;IAED;;;;OAIG;IACH,yBAFW,OAAO,WAAW,EAAE,OAAO,kBAIrC;;CAkBJ;AAED;;;;GAIG;AACH,2BAFU,OAAO,CAKd;AAEH,iDAGE;;;;;;;;SAzOQ,MAAM;;;;WACN,MAAM;;;;;;cAGN,MAAM;UACN,MAAM;;;;;;;;;;;;;;cAGN,MAAM;;;;;uBACN,MAAM;;;;aAEN,MAAM;;;;cACN,OAAO"}