@genome-spy/core 0.36.1 → 0.37.1

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 → bundle/index.es.js} +2253 -2115
  3. package/dist/{index.js → bundle/index.js} +180 -44
  4. package/dist/src/data/collector.d.ts +36 -0
  5. package/dist/src/data/collector.d.ts.map +1 -0
  6. package/dist/src/data/collector.js +184 -0
  7. package/dist/src/data/collector.test.js +84 -0
  8. package/dist/src/data/dataFlow.d.ts +65 -0
  9. package/dist/src/data/dataFlow.d.ts.map +1 -0
  10. package/dist/src/data/dataFlow.js +142 -0
  11. package/dist/src/data/dataFlow.test.js +5 -0
  12. package/dist/src/data/facetNode.d.ts +17 -0
  13. package/dist/src/data/facetNode.d.ts.map +1 -0
  14. package/dist/src/data/facetNode.js +17 -0
  15. package/dist/src/data/flow.test.js +72 -0
  16. package/dist/src/data/flowNode.d.ts +136 -0
  17. package/dist/src/data/flowNode.d.ts.map +1 -0
  18. package/dist/src/data/flowNode.js +286 -0
  19. package/dist/src/data/flowNode.test.js +50 -0
  20. package/dist/src/data/flowOptimizer.d.ts +27 -0
  21. package/dist/src/data/flowOptimizer.d.ts.map +1 -0
  22. package/dist/src/data/flowOptimizer.js +133 -0
  23. package/dist/src/data/flowOptimizer.test.js +193 -0
  24. package/dist/src/data/flowTestUtils.d.ts +30 -0
  25. package/dist/src/data/flowTestUtils.d.ts.map +1 -0
  26. package/dist/src/data/flowTestUtils.js +63 -0
  27. package/dist/src/data/formats/fasta.d.ts +20 -0
  28. package/dist/src/data/formats/fasta.d.ts.map +1 -0
  29. package/dist/src/data/formats/fasta.js +32 -0
  30. package/dist/src/data/formats/fasta.test.js +27 -0
  31. package/dist/src/data/sources/dataSource.d.ts +12 -0
  32. package/dist/src/data/sources/dataSource.d.ts.map +1 -0
  33. package/dist/src/data/sources/dataSource.js +25 -0
  34. package/dist/src/data/sources/dataSourceFactory.d.ts +16 -0
  35. package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -0
  36. package/dist/src/data/sources/dataSourceFactory.js +127 -0
  37. package/dist/src/data/sources/dataUtils.d.ts +50 -0
  38. package/dist/src/data/sources/dataUtils.d.ts.map +1 -0
  39. package/dist/src/data/sources/dataUtils.js +83 -0
  40. package/dist/src/data/sources/dynamic/README.md +3 -0
  41. package/dist/src/data/sources/dynamic/axisGenomeSource.d.ts +13 -0
  42. package/dist/src/data/sources/dynamic/axisGenomeSource.d.ts.map +1 -0
  43. package/dist/src/data/sources/dynamic/axisGenomeSource.js +19 -0
  44. package/dist/src/data/sources/dynamic/axisTickSource.d.ts +18 -0
  45. package/dist/src/data/sources/dynamic/axisTickSource.d.ts.map +1 -0
  46. package/dist/src/data/sources/dynamic/axisTickSource.js +73 -0
  47. package/dist/src/data/sources/dynamic/bamSource.d.ts +46 -0
  48. package/dist/src/data/sources/dynamic/bamSource.d.ts.map +1 -0
  49. package/dist/src/data/sources/dynamic/bamSource.js +115 -0
  50. package/dist/src/data/sources/dynamic/bigBedSource.d.ts +51 -0
  51. package/dist/src/data/sources/dynamic/bigBedSource.d.ts.map +1 -0
  52. package/dist/src/data/sources/dynamic/bigBedSource.js +128 -0
  53. package/dist/src/data/sources/dynamic/bigWigSource.d.ts +58 -0
  54. package/dist/src/data/sources/dynamic/bigWigSource.d.ts.map +1 -0
  55. package/dist/src/data/sources/dynamic/bigWigSource.js +166 -0
  56. package/dist/src/data/sources/dynamic/gff3Source.d.ts +8 -0
  57. package/dist/src/data/sources/dynamic/gff3Source.d.ts.map +1 -0
  58. package/dist/src/data/sources/dynamic/gff3Source.js +19 -0
  59. package/dist/src/data/sources/dynamic/indexedFastaSource.d.ts +30 -0
  60. package/dist/src/data/sources/dynamic/indexedFastaSource.d.ts.map +1 -0
  61. package/dist/src/data/sources/dynamic/indexedFastaSource.js +86 -0
  62. package/dist/src/data/sources/dynamic/singleAxisLazySource.d.ts +42 -0
  63. package/dist/src/data/sources/dynamic/singleAxisLazySource.d.ts.map +1 -0
  64. package/dist/src/data/sources/dynamic/singleAxisLazySource.js +129 -0
  65. package/dist/src/data/sources/dynamic/tabixSource.d.ts +54 -0
  66. package/dist/src/data/sources/dynamic/tabixSource.d.ts.map +1 -0
  67. package/dist/src/data/sources/dynamic/tabixSource.js +140 -0
  68. package/dist/src/data/sources/dynamic/windowedMixin.d.ts +32 -0
  69. package/dist/src/data/sources/dynamic/windowedMixin.d.ts.map +1 -0
  70. package/dist/src/data/sources/dynamic/windowedMixin.js +53 -0
  71. package/dist/src/data/sources/inlineSource.d.ts +16 -0
  72. package/dist/src/data/sources/inlineSource.d.ts.map +1 -0
  73. package/dist/src/data/sources/inlineSource.js +68 -0
  74. package/dist/src/data/sources/inlineSource.test.js +56 -0
  75. package/dist/src/data/sources/namedSource.d.ts +25 -0
  76. package/dist/src/data/sources/namedSource.d.ts.map +1 -0
  77. package/dist/src/data/sources/namedSource.js +80 -0
  78. package/dist/src/data/sources/sequenceSource.d.ts +17 -0
  79. package/dist/src/data/sources/sequenceSource.d.ts.map +1 -0
  80. package/dist/src/data/sources/sequenceSource.js +47 -0
  81. package/dist/src/data/sources/sequenceSource.test.js +46 -0
  82. package/dist/src/data/sources/urlSource.d.ts +16 -0
  83. package/dist/src/data/sources/urlSource.d.ts.map +1 -0
  84. package/dist/src/data/sources/urlSource.js +74 -0
  85. package/dist/src/data/transforms/aggregate.d.ts +18 -0
  86. package/dist/src/data/transforms/aggregate.d.ts.map +1 -0
  87. package/dist/src/data/transforms/aggregate.js +67 -0
  88. package/dist/src/data/transforms/clone.d.ts +15 -0
  89. package/dist/src/data/transforms/clone.d.ts.map +1 -0
  90. package/dist/src/data/transforms/clone.js +40 -0
  91. package/dist/src/data/transforms/clone.test.js +11 -0
  92. package/dist/src/data/transforms/coverage.d.ts +30 -0
  93. package/dist/src/data/transforms/coverage.d.ts.map +1 -0
  94. package/dist/src/data/transforms/coverage.js +183 -0
  95. package/dist/src/data/transforms/coverage.test.js +123 -0
  96. package/dist/src/data/transforms/filter.d.ts +12 -0
  97. package/dist/src/data/transforms/filter.d.ts.map +1 -0
  98. package/dist/src/data/transforms/filter.js +33 -0
  99. package/dist/src/data/transforms/filter.test.js +18 -0
  100. package/dist/src/data/transforms/filterScoredLabels.d.ts +29 -0
  101. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -0
  102. package/dist/src/data/transforms/filterScoredLabels.js +134 -0
  103. package/dist/src/data/transforms/flatten.d.ts +10 -0
  104. package/dist/src/data/transforms/flatten.d.ts.map +1 -0
  105. package/dist/src/data/transforms/flatten.js +68 -0
  106. package/dist/src/data/transforms/flatten.test.js +93 -0
  107. package/dist/src/data/transforms/flattenCompressedExons.d.ts +19 -0
  108. package/dist/src/data/transforms/flattenCompressedExons.d.ts.map +1 -0
  109. package/dist/src/data/transforms/flattenCompressedExons.js +53 -0
  110. package/dist/src/data/transforms/flattenDelimited.d.ts +10 -0
  111. package/dist/src/data/transforms/flattenDelimited.d.ts.map +1 -0
  112. package/dist/src/data/transforms/flattenDelimited.js +66 -0
  113. package/dist/src/data/transforms/flattenDelimited.test.js +87 -0
  114. package/dist/src/data/transforms/flattenSequence.d.ts +11 -0
  115. package/dist/src/data/transforms/flattenSequence.d.ts.map +1 -0
  116. package/dist/src/data/transforms/flattenSequence.js +35 -0
  117. package/dist/src/data/transforms/flattenSequence.test.js +34 -0
  118. package/dist/src/data/transforms/formula.d.ts +13 -0
  119. package/dist/src/data/transforms/formula.d.ts.map +1 -0
  120. package/dist/src/data/transforms/formula.js +35 -0
  121. package/dist/src/data/transforms/formula.test.js +19 -0
  122. package/dist/src/data/transforms/identifier.d.ts +40 -0
  123. package/dist/src/data/transforms/identifier.d.ts.map +1 -0
  124. package/dist/src/data/transforms/identifier.js +106 -0
  125. package/dist/src/data/transforms/identifier.test.js +83 -0
  126. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts +10 -0
  127. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts.map +1 -0
  128. package/dist/src/data/transforms/linearizeGenomicCoordinate.js +97 -0
  129. package/dist/src/data/transforms/measureText.d.ts +18 -0
  130. package/dist/src/data/transforms/measureText.d.ts.map +1 -0
  131. package/dist/src/data/transforms/measureText.js +42 -0
  132. package/dist/src/data/transforms/pileup.d.ts +10 -0
  133. package/dist/src/data/transforms/pileup.d.ts.map +1 -0
  134. package/dist/src/data/transforms/pileup.js +126 -0
  135. package/dist/src/data/transforms/pileup.test.js +70 -0
  136. package/dist/src/data/transforms/project.d.ts +13 -0
  137. package/dist/src/data/transforms/project.d.ts.map +1 -0
  138. package/dist/src/data/transforms/project.js +38 -0
  139. package/dist/src/data/transforms/project.test.js +32 -0
  140. package/dist/src/data/transforms/regexExtract.d.ts +13 -0
  141. package/dist/src/data/transforms/regexExtract.d.ts.map +1 -0
  142. package/dist/src/data/transforms/regexExtract.js +57 -0
  143. package/dist/src/data/transforms/regexExtract.test.js +67 -0
  144. package/dist/src/data/transforms/regexFold.d.ts +14 -0
  145. package/dist/src/data/transforms/regexFold.d.ts.map +1 -0
  146. package/dist/src/data/transforms/regexFold.js +139 -0
  147. package/dist/src/data/transforms/regexFold.test.js +160 -0
  148. package/dist/src/data/transforms/sample.d.ts +42 -0
  149. package/dist/src/data/transforms/sample.d.ts.map +1 -0
  150. package/dist/src/data/transforms/sample.js +99 -0
  151. package/dist/src/data/transforms/sample.test.js +38 -0
  152. package/dist/src/data/transforms/stack.d.ts +11 -0
  153. package/dist/src/data/transforms/stack.d.ts.map +1 -0
  154. package/dist/src/data/transforms/stack.js +134 -0
  155. package/dist/src/data/transforms/stack.test.js +91 -0
  156. package/dist/src/data/transforms/transformFactory.d.ts +12 -0
  157. package/dist/src/data/transforms/transformFactory.d.ts.map +1 -0
  158. package/dist/src/data/transforms/transformFactory.js +59 -0
  159. package/dist/src/encoder/accessor.d.ts +15 -0
  160. package/dist/src/encoder/accessor.d.ts.map +1 -0
  161. package/dist/src/encoder/accessor.js +76 -0
  162. package/dist/src/encoder/accessor.test.js +47 -0
  163. package/dist/src/encoder/encoder.d.ts +144 -0
  164. package/dist/src/encoder/encoder.d.ts.map +1 -0
  165. package/dist/src/encoder/encoder.js +400 -0
  166. package/dist/src/encoder/encoder.test.js +98 -0
  167. package/dist/src/fonts/Lato-Regular.json +1267 -0
  168. package/dist/src/fonts/Lato-Regular.png +0 -0
  169. package/dist/src/fonts/OFL.txt +93 -0
  170. package/dist/src/fonts/README.md +3 -0
  171. package/dist/src/fonts/bmFontManager.d.ts +182 -0
  172. package/dist/src/fonts/bmFontManager.d.ts.map +1 -0
  173. package/dist/src/fonts/bmFontManager.js +359 -0
  174. package/dist/src/fonts/bmFontMetrics.d.ts +45 -0
  175. package/dist/src/fonts/bmFontMetrics.d.ts.map +1 -0
  176. package/dist/src/fonts/bmFontMetrics.js +108 -0
  177. package/dist/src/genome/genome.d.ts +172 -0
  178. package/dist/src/genome/genome.d.ts.map +1 -0
  179. package/dist/src/genome/genome.js +379 -0
  180. package/dist/src/genome/genome.test.js +226 -0
  181. package/dist/src/genome/genomeStore.d.ts +20 -0
  182. package/dist/src/genome/genomeStore.d.ts.map +1 -0
  183. package/dist/src/genome/genomeStore.js +54 -0
  184. package/dist/src/genome/locusFormat.d.ts +14 -0
  185. package/dist/src/genome/locusFormat.d.ts.map +1 -0
  186. package/dist/src/genome/locusFormat.js +37 -0
  187. package/dist/src/genome/scaleIndex.d.ts +6 -0
  188. package/dist/src/genome/scaleIndex.d.ts.map +1 -0
  189. package/dist/src/genome/scaleIndex.js +165 -0
  190. package/dist/src/genome/scaleIndex.test.js +78 -0
  191. package/dist/src/genome/scaleLocus.d.ts +3 -0
  192. package/dist/src/genome/scaleLocus.d.ts.map +1 -0
  193. package/dist/src/genome/scaleLocus.js +101 -0
  194. package/dist/src/genome/scaleLocus.test.js +4 -0
  195. package/dist/src/genomeSpy.d.ts +141 -0
  196. package/dist/src/genomeSpy.d.ts.map +1 -0
  197. package/dist/src/genomeSpy.js +788 -0
  198. package/dist/src/gl/arrayBuilder.d.ts +71 -0
  199. package/dist/src/gl/arrayBuilder.d.ts.map +1 -0
  200. package/dist/src/gl/arrayBuilder.js +199 -0
  201. package/dist/src/gl/dataToVertices.d.ts +194 -0
  202. package/dist/src/gl/dataToVertices.d.ts.map +1 -0
  203. package/dist/src/gl/dataToVertices.js +639 -0
  204. package/dist/src/gl/includes/common.glsl.js +2 -0
  205. package/dist/src/gl/includes/picking.fragment.glsl.js +2 -0
  206. package/dist/src/gl/includes/picking.vertex.glsl.js +2 -0
  207. package/dist/src/gl/includes/sampleFacet.glsl.js +2 -0
  208. package/dist/src/gl/includes/scales.glsl.js +2 -0
  209. package/dist/src/gl/link.fragment.glsl.js +2 -0
  210. package/dist/src/gl/link.vertex.glsl.js +2 -0
  211. package/dist/src/gl/point.fragment.glsl.js +2 -0
  212. package/dist/src/gl/point.vertex.glsl.js +2 -0
  213. package/dist/src/gl/rect.fragment.glsl.js +2 -0
  214. package/dist/src/gl/rect.vertex.glsl.js +2 -0
  215. package/dist/src/gl/rule.fragment.glsl.js +2 -0
  216. package/dist/src/gl/rule.vertex.glsl.js +2 -0
  217. package/dist/src/gl/text.fragment.glsl.js +2 -0
  218. package/dist/src/gl/text.vertex.glsl.js +2 -0
  219. package/dist/src/gl/webGLHelper.d.ts +118 -0
  220. package/dist/src/gl/webGLHelper.d.ts.map +1 -0
  221. package/dist/src/gl/webGLHelper.js +513 -0
  222. package/dist/src/img/bowtie.svg +1 -0
  223. package/dist/src/img/genomespy-favicon.svg +34 -0
  224. package/dist/src/index.d.ts +15 -0
  225. package/dist/src/index.d.ts.map +1 -0
  226. package/dist/src/index.html +11 -0
  227. package/dist/src/index.js +129 -0
  228. package/dist/src/marks/link.d.ts +11 -0
  229. package/dist/src/marks/link.d.ts.map +1 -0
  230. package/dist/src/marks/link.js +175 -0
  231. package/dist/src/marks/mark.d.ts +226 -0
  232. package/dist/src/marks/mark.d.ts.map +1 -0
  233. package/dist/src/marks/mark.js +1004 -0
  234. package/dist/src/marks/markUtils.d.ts +23 -0
  235. package/dist/src/marks/markUtils.d.ts.map +1 -0
  236. package/dist/src/marks/markUtils.js +125 -0
  237. package/dist/src/marks/pointMark.d.ts +11 -0
  238. package/dist/src/marks/pointMark.d.ts.map +1 -0
  239. package/dist/src/marks/pointMark.js +251 -0
  240. package/dist/src/marks/rectMark.d.ts +18 -0
  241. package/dist/src/marks/rectMark.d.ts.map +1 -0
  242. package/dist/src/marks/rectMark.js +255 -0
  243. package/dist/src/marks/rule.d.ts +6 -0
  244. package/dist/src/marks/rule.d.ts.map +1 -0
  245. package/dist/src/marks/rule.js +250 -0
  246. package/dist/src/marks/text.d.ts +13 -0
  247. package/dist/src/marks/text.d.ts.map +1 -0
  248. package/dist/src/marks/text.js +279 -0
  249. package/dist/src/scale/colorUtils.d.ts +34 -0
  250. package/dist/src/scale/colorUtils.d.ts.map +1 -0
  251. package/dist/src/scale/colorUtils.js +184 -0
  252. package/dist/src/scale/glslScaleGenerator.d.ts +45 -0
  253. package/dist/src/scale/glslScaleGenerator.d.ts.map +1 -0
  254. package/dist/src/scale/glslScaleGenerator.js +506 -0
  255. package/dist/src/scale/scale.d.ts +10 -0
  256. package/dist/src/scale/scale.d.ts.map +1 -0
  257. package/dist/src/scale/scale.js +456 -0
  258. package/dist/src/scale/scale.test.js +324 -0
  259. package/dist/src/scale/ticks.d.ts +47 -0
  260. package/dist/src/scale/ticks.d.ts.map +1 -0
  261. package/dist/src/scale/ticks.js +203 -0
  262. package/dist/src/scale/ticks.test.js +40 -0
  263. package/dist/src/singlePageApp.d.ts +2 -0
  264. package/dist/src/singlePageApp.d.ts.map +1 -0
  265. package/dist/src/singlePageApp.js +13 -0
  266. package/dist/src/spec/axis.d.ts +402 -0
  267. package/dist/src/spec/channel.d.ts +440 -0
  268. package/dist/src/spec/data.d.ts +370 -0
  269. package/dist/src/spec/font.d.ts +15 -0
  270. package/dist/src/spec/genome.d.ts +35 -0
  271. package/dist/src/spec/mark.d.ts +435 -0
  272. package/dist/src/spec/root.d.ts +22 -0
  273. package/dist/src/spec/sampleView.d.ts +185 -0
  274. package/dist/src/spec/scale.d.ts +273 -0
  275. package/dist/src/spec/title.d.ts +102 -0
  276. package/dist/src/spec/tooltip.d.ts +9 -0
  277. package/dist/src/spec/transform.d.ts +504 -0
  278. package/dist/src/spec/view.d.ts +214 -0
  279. package/dist/src/styles/genome-spy.css.d.ts +3 -0
  280. package/dist/src/styles/genome-spy.css.d.ts.map +1 -0
  281. package/dist/src/styles/genome-spy.css.js +114 -0
  282. package/dist/src/styles/genome-spy.scss +153 -0
  283. package/dist/src/tooltip/dataTooltipHandler.d.ts +2 -0
  284. package/dist/src/tooltip/dataTooltipHandler.d.ts.map +1 -0
  285. package/dist/src/tooltip/dataTooltipHandler.js +64 -0
  286. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts +2 -0
  287. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts.map +1 -0
  288. package/dist/src/tooltip/refseqGeneTooltipHandler.js +78 -0
  289. package/dist/src/tooltip/tooltipHandler.d.ts +9 -0
  290. package/dist/src/tooltip/tooltipHandler.d.ts.map +1 -0
  291. package/dist/src/tooltip/tooltipHandler.ts +12 -0
  292. package/dist/src/types/bmFont.d.ts +58 -0
  293. package/dist/src/types/embedApi.d.ts +67 -0
  294. package/dist/src/types/encoder.d.ts +84 -0
  295. package/dist/src/types/flowBatch.d.ts +40 -0
  296. package/dist/src/types/rendering.d.ts +65 -0
  297. package/dist/src/types/scaleResolutionApi.d.ts +40 -0
  298. package/dist/src/types/viewContext.d.ts +85 -0
  299. package/dist/src/utils/addBaseUrl.d.ts +6 -0
  300. package/dist/src/utils/addBaseUrl.d.ts.map +1 -0
  301. package/dist/src/utils/addBaseUrl.js +19 -0
  302. package/dist/src/utils/addBaseUrl.test.js +22 -0
  303. package/dist/src/utils/animator.d.ts +41 -0
  304. package/dist/src/utils/animator.d.ts.map +1 -0
  305. package/dist/src/utils/animator.js +83 -0
  306. package/dist/src/utils/arrayUtils.d.ts +34 -0
  307. package/dist/src/utils/arrayUtils.d.ts.map +1 -0
  308. package/dist/src/utils/arrayUtils.js +61 -0
  309. package/dist/src/utils/binnedIndex.d.ts +23 -0
  310. package/dist/src/utils/binnedIndex.d.ts.map +1 -0
  311. package/dist/src/utils/binnedIndex.js +167 -0
  312. package/dist/src/utils/binnedIndex.test.js +155 -0
  313. package/dist/src/utils/clamp.d.ts +7 -0
  314. package/dist/src/utils/clamp.d.ts.map +1 -0
  315. package/dist/src/utils/clamp.js +8 -0
  316. package/dist/src/utils/cloner.d.ts +16 -0
  317. package/dist/src/utils/cloner.d.ts.map +1 -0
  318. package/dist/src/utils/cloner.js +34 -0
  319. package/dist/src/utils/cloner.test.js +24 -0
  320. package/dist/src/utils/coalesce.d.ts +6 -0
  321. package/dist/src/utils/coalesce.d.ts.map +1 -0
  322. package/dist/src/utils/coalesce.js +11 -0
  323. package/dist/src/utils/coalesce.test.js +16 -0
  324. package/dist/src/utils/concatIterables.d.ts +8 -0
  325. package/dist/src/utils/concatIterables.d.ts.map +1 -0
  326. package/dist/src/utils/concatIterables.js +26 -0
  327. package/dist/src/utils/concatIterables.test.js +8 -0
  328. package/dist/src/utils/debounce.d.ts +8 -0
  329. package/dist/src/utils/debounce.d.ts.map +1 -0
  330. package/dist/src/utils/debounce.js +37 -0
  331. package/dist/src/utils/domainArray.d.ts +61 -0
  332. package/dist/src/utils/domainArray.d.ts.map +1 -0
  333. package/dist/src/utils/domainArray.js +216 -0
  334. package/dist/src/utils/domainArray.test.js +130 -0
  335. package/dist/src/utils/eerp.d.ts +12 -0
  336. package/dist/src/utils/eerp.d.ts.map +1 -0
  337. package/dist/src/utils/eerp.js +13 -0
  338. package/dist/src/utils/expression.d.ts +9 -0
  339. package/dist/src/utils/expression.d.ts.map +1 -0
  340. package/dist/src/utils/expression.js +32 -0
  341. package/dist/src/utils/field.d.ts +17 -0
  342. package/dist/src/utils/field.d.ts.map +1 -0
  343. package/dist/src/utils/field.js +28 -0
  344. package/dist/src/utils/formatObject.d.ts +7 -0
  345. package/dist/src/utils/formatObject.d.ts.map +1 -0
  346. package/dist/src/utils/formatObject.js +37 -0
  347. package/dist/src/utils/indexer.d.ts +16 -0
  348. package/dist/src/utils/indexer.d.ts.map +1 -0
  349. package/dist/src/utils/indexer.js +43 -0
  350. package/dist/src/utils/indexer.test.js +47 -0
  351. package/dist/src/utils/inertia.d.ts +42 -0
  352. package/dist/src/utils/inertia.d.ts.map +1 -0
  353. package/dist/src/utils/inertia.js +124 -0
  354. package/dist/src/utils/interactionEvent.d.ts +26 -0
  355. package/dist/src/utils/interactionEvent.d.ts.map +1 -0
  356. package/dist/src/utils/interactionEvent.js +33 -0
  357. package/dist/src/utils/iterateNestedMaps.d.ts +11 -0
  358. package/dist/src/utils/iterateNestedMaps.d.ts.map +1 -0
  359. package/dist/src/utils/iterateNestedMaps.js +21 -0
  360. package/dist/src/utils/iterateNestedMaps.test.js +33 -0
  361. package/dist/src/utils/kWayMerge.d.ts +9 -0
  362. package/dist/src/utils/kWayMerge.d.ts.map +1 -0
  363. package/dist/src/utils/kWayMerge.js +42 -0
  364. package/dist/src/utils/kWayMerge.test.js +26 -0
  365. package/dist/src/utils/layout/flexLayout.d.ts +182 -0
  366. package/dist/src/utils/layout/flexLayout.d.ts.map +1 -0
  367. package/dist/src/utils/layout/flexLayout.js +381 -0
  368. package/dist/src/utils/layout/flexLayout.test.js +323 -0
  369. package/dist/src/utils/layout/grid.d.ts +29 -0
  370. package/dist/src/utils/layout/grid.d.ts.map +1 -0
  371. package/dist/src/utils/layout/grid.js +95 -0
  372. package/dist/src/utils/layout/grid.test.js +71 -0
  373. package/dist/src/utils/layout/padding.d.ts +83 -0
  374. package/dist/src/utils/layout/padding.d.ts.map +1 -0
  375. package/dist/src/utils/layout/padding.js +155 -0
  376. package/dist/src/utils/layout/point.d.ts +16 -0
  377. package/dist/src/utils/layout/point.d.ts.map +1 -0
  378. package/dist/src/utils/layout/point.js +23 -0
  379. package/dist/src/utils/layout/rectangle.d.ts +142 -0
  380. package/dist/src/utils/layout/rectangle.d.ts.map +1 -0
  381. package/dist/src/utils/layout/rectangle.js +296 -0
  382. package/dist/src/utils/layout/rectangle.test.js +172 -0
  383. package/dist/src/utils/mergeObjects.d.ts +15 -0
  384. package/dist/src/utils/mergeObjects.d.ts.map +1 -0
  385. package/dist/src/utils/mergeObjects.js +99 -0
  386. package/dist/src/utils/mergeObjects.test.js +42 -0
  387. package/dist/src/utils/numberExtractor.d.ts +9 -0
  388. package/dist/src/utils/numberExtractor.d.ts.map +1 -0
  389. package/dist/src/utils/numberExtractor.js +24 -0
  390. package/dist/src/utils/numberExtractor.test.js +6 -0
  391. package/dist/src/utils/point.d.ts +9 -0
  392. package/dist/src/utils/point.d.ts.map +1 -0
  393. package/dist/src/utils/point.js +14 -0
  394. package/dist/src/utils/propertyCacher.d.ts +30 -0
  395. package/dist/src/utils/propertyCacher.d.ts.map +1 -0
  396. package/dist/src/utils/propertyCacher.js +70 -0
  397. package/dist/src/utils/propertyCacher.test.js +85 -0
  398. package/dist/src/utils/propertyCoalescer.d.ts +15 -0
  399. package/dist/src/utils/propertyCoalescer.d.ts.map +1 -0
  400. package/dist/src/utils/propertyCoalescer.js +42 -0
  401. package/dist/src/utils/propertyCoalescer.test.js +22 -0
  402. package/dist/src/utils/reservationMap.d.ts +42 -0
  403. package/dist/src/utils/reservationMap.d.ts.map +1 -0
  404. package/dist/src/utils/reservationMap.js +103 -0
  405. package/dist/src/utils/reservationMap.test.js +20 -0
  406. package/dist/src/utils/scaleNull.d.ts +13 -0
  407. package/dist/src/utils/scaleNull.d.ts.map +1 -0
  408. package/dist/src/utils/scaleNull.js +21 -0
  409. package/dist/src/utils/setOperations.d.ts +31 -0
  410. package/dist/src/utils/setOperations.d.ts.map +1 -0
  411. package/dist/src/utils/setOperations.js +75 -0
  412. package/dist/src/utils/smoothstep.d.ts +7 -0
  413. package/dist/src/utils/smoothstep.d.ts.map +1 -0
  414. package/dist/src/utils/smoothstep.js +10 -0
  415. package/dist/src/utils/throttle.d.ts +8 -0
  416. package/dist/src/utils/throttle.d.ts.map +1 -0
  417. package/dist/src/utils/throttle.js +34 -0
  418. package/dist/src/utils/topK.d.ts +22 -0
  419. package/dist/src/utils/topK.d.ts.map +1 -0
  420. package/dist/src/utils/topK.js +76 -0
  421. package/dist/src/utils/topK.test.js +64 -0
  422. package/dist/src/utils/transition.d.ts +44 -0
  423. package/dist/src/utils/transition.d.ts.map +1 -0
  424. package/dist/src/utils/transition.js +74 -0
  425. package/dist/src/utils/trees.d.ts +56 -0
  426. package/dist/src/utils/trees.d.ts.map +1 -0
  427. package/dist/src/utils/trees.js +92 -0
  428. package/dist/src/utils/trees.test.js +130 -0
  429. package/dist/src/utils/ui/tooltip.d.ts +50 -0
  430. package/dist/src/utils/ui/tooltip.d.ts.map +1 -0
  431. package/dist/src/utils/ui/tooltip.js +189 -0
  432. package/dist/src/utils/url.d.ts +9 -0
  433. package/dist/src/utils/url.d.ts.map +1 -0
  434. package/dist/src/utils/url.js +22 -0
  435. package/dist/src/utils/variableTools.d.ts +14 -0
  436. package/dist/src/utils/variableTools.d.ts.map +1 -0
  437. package/dist/src/utils/variableTools.js +24 -0
  438. package/dist/src/utils/variableTools.test.js +13 -0
  439. package/dist/src/view/axisGridView.d.ts +39 -0
  440. package/dist/src/view/axisGridView.d.ts.map +1 -0
  441. package/dist/src/view/axisGridView.js +246 -0
  442. package/dist/src/view/axisResolution.d.ts +24 -0
  443. package/dist/src/view/axisResolution.d.ts.map +1 -0
  444. package/dist/src/view/axisResolution.js +141 -0
  445. package/dist/src/view/axisResolution.test.js +201 -0
  446. package/dist/src/view/axisView.d.ts +49 -0
  447. package/dist/src/view/axisView.d.ts.map +1 -0
  448. package/dist/src/view/axisView.js +629 -0
  449. package/dist/src/view/concatView.d.ts +16 -0
  450. package/dist/src/view/concatView.d.ts.map +1 -0
  451. package/dist/src/view/concatView.js +84 -0
  452. package/dist/src/view/containerView.d.ts +43 -0
  453. package/dist/src/view/containerView.d.ts.map +1 -0
  454. package/dist/src/view/containerView.js +137 -0
  455. package/dist/src/view/facetView.d.ts +71 -0
  456. package/dist/src/view/facetView.d.ts.map +1 -0
  457. package/dist/src/view/facetView.js +492 -0
  458. package/dist/src/view/flowBuilder.d.ts +37 -0
  459. package/dist/src/view/flowBuilder.d.ts.map +1 -0
  460. package/dist/src/view/flowBuilder.js +383 -0
  461. package/dist/src/view/flowBuilder.test.js +125 -0
  462. package/dist/src/view/gridView.d.ts +111 -0
  463. package/dist/src/view/gridView.d.ts.map +1 -0
  464. package/dist/src/view/gridView.js +1086 -0
  465. package/dist/src/view/implicitRootView.d.ts +9 -0
  466. package/dist/src/view/implicitRootView.d.ts.map +1 -0
  467. package/dist/src/view/implicitRootView.js +23 -0
  468. package/dist/src/view/importView.d.ts +17 -0
  469. package/dist/src/view/importView.d.ts.map +1 -0
  470. package/dist/src/view/importView.js +22 -0
  471. package/dist/src/view/layerView.d.ts +25 -0
  472. package/dist/src/view/layerView.d.ts.map +1 -0
  473. package/dist/src/view/layerView.js +77 -0
  474. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts +30 -0
  475. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -0
  476. package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +175 -0
  477. package/dist/src/view/renderingContext/compositeViewRenderingContext.d.ts +14 -0
  478. package/dist/src/view/renderingContext/compositeViewRenderingContext.d.ts.map +1 -0
  479. package/dist/src/view/renderingContext/compositeViewRenderingContext.js +51 -0
  480. package/dist/src/view/renderingContext/debuggingViewRenderingContext.d.ts +51 -0
  481. package/dist/src/view/renderingContext/debuggingViewRenderingContext.d.ts.map +1 -0
  482. package/dist/src/view/renderingContext/debuggingViewRenderingContext.js +94 -0
  483. package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.d.ts +60 -0
  484. package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.d.ts.map +1 -0
  485. package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.js +128 -0
  486. package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts +19 -0
  487. package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts.map +1 -0
  488. package/dist/src/view/renderingContext/simpleViewRenderingContext.js +64 -0
  489. package/dist/src/view/renderingContext/svgViewRenderingContext.d.ts +22 -0
  490. package/dist/src/view/renderingContext/svgViewRenderingContext.d.ts.map +1 -0
  491. package/dist/src/view/renderingContext/svgViewRenderingContext.js +125 -0
  492. package/dist/src/view/renderingContext/viewRenderingContext.d.ts +33 -0
  493. package/dist/src/view/renderingContext/viewRenderingContext.d.ts.map +1 -0
  494. package/dist/src/view/renderingContext/viewRenderingContext.js +41 -0
  495. package/dist/src/view/scaleResolution.d.ts +170 -0
  496. package/dist/src/view/scaleResolution.d.ts.map +1 -0
  497. package/dist/src/view/scaleResolution.js +874 -0
  498. package/dist/src/view/scaleResolution.test.js +658 -0
  499. package/dist/src/view/testUtils.d.ts +30 -0
  500. package/dist/src/view/testUtils.d.ts.map +1 -0
  501. package/dist/src/view/testUtils.js +101 -0
  502. package/dist/src/view/title.d.ts +6 -0
  503. package/dist/src/view/title.d.ts.map +1 -0
  504. package/dist/src/view/title.js +165 -0
  505. package/dist/src/view/unitView.d.ts +93 -0
  506. package/dist/src/view/unitView.d.ts.map +1 -0
  507. package/dist/src/view/unitView.js +345 -0
  508. package/dist/src/view/view.d.ts +291 -0
  509. package/dist/src/view/view.d.ts.map +1 -0
  510. package/dist/src/view/view.js +691 -0
  511. package/dist/src/view/view.test.js +214 -0
  512. package/dist/src/view/viewFactory.d.ts +76 -0
  513. package/dist/src/view/viewFactory.d.ts.map +1 -0
  514. package/dist/src/view/viewFactory.js +178 -0
  515. package/dist/src/view/viewFactory.test.js +17 -0
  516. package/dist/src/view/viewUtils.d.ts +90 -0
  517. package/dist/src/view/viewUtils.d.ts.map +1 -0
  518. package/dist/src/view/viewUtils.js +326 -0
  519. package/dist/src/view/zoom.d.ts +23 -0
  520. package/dist/src/view/zoom.d.ts.map +1 -0
  521. package/dist/src/view/zoom.js +89 -0
  522. package/package.json +17 -12
  523. package/dist/style.css +0 -1
@@ -0,0 +1,324 @@
1
+ import { expect, test } from "vitest";
2
+ /*!
3
+ * Adapted from vega-encode:
4
+ * https://github.com/vega/vega/blob/master/packages/vega-encode/test/scale-test.js
5
+ *
6
+ * Copyright (c) 2015-2018, University of Washington Interactive Data Lab
7
+ * All rights reserved.
8
+ *
9
+ * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
10
+ */
11
+
12
+ /* eslint-disable */
13
+
14
+ import * as util from "vega-util";
15
+ import * as vs from "vega-scale";
16
+ import createScale from "./scale";
17
+
18
+ // Suppress warnings by default
19
+ const scale = (params, logger) =>
20
+ createScale(params, logger || { warn: () => {} });
21
+
22
+ test("Scale respects domain configuration", function () {
23
+ var s,
24
+ params = {
25
+ type: "linear",
26
+ domain: [1, 9.5],
27
+ };
28
+
29
+ // test zero inclusion
30
+ s = scale(params);
31
+ expect(s.domain()).toEqual([0, 9.5]);
32
+ s = scale(util.extend({ zero: true }, params));
33
+ expect(s.domain()).toEqual([0, 9.5]);
34
+ s = scale(util.extend({ zero: false }, params));
35
+ expect(s.domain()).toEqual([1, 9.5]);
36
+
37
+ // test nice domain
38
+ s = scale(util.extend({ nice: true }, params));
39
+ expect(s.domain()).toEqual([0, 10]);
40
+
41
+ // test domain min/max
42
+ s = scale(util.extend({ domainMin: -1, domainMax: 10 }, params));
43
+ expect(s.domain()).toEqual([-1, 10]);
44
+
45
+ // domain min overrides zero
46
+ s = scale(
47
+ util.extend({ zero: true, domainMin: 0.5, domainMax: 10 }, params)
48
+ );
49
+ expect(s.domain()).toEqual([0.5, 10]);
50
+
51
+ // test domain mid
52
+ s = scale(util.extend({ domainMid: 5 }, params));
53
+ expect(s.domain()).toEqual([0, 5, 9.5]);
54
+
55
+ // test domain raw
56
+ s = scale(util.extend({ domainRaw: [2, 11] }, params));
57
+ expect(s.domain()).toEqual([2, 11]);
58
+ });
59
+
60
+ test("Scale respects domain padding", function () {
61
+ var d;
62
+
63
+ // test linear scale padding
64
+ d = scale({
65
+ type: "linear",
66
+ domain: [5, 95],
67
+ range: [0, 100],
68
+ padding: 5,
69
+ zero: false,
70
+ }).domain();
71
+ expect(d).toEqual([0, 100]);
72
+
73
+ // test log scale padding
74
+ d = scale({
75
+ type: "log",
76
+ domain: [1, 10],
77
+ range: [0, 60],
78
+ padding: 20,
79
+ zero: false,
80
+ }).domain();
81
+ expect(Math.abs(d[0] - 0.1) < 1e-8).toBeTruthy();
82
+ expect(Math.abs(d[1] - 100) < 1e-8).toBeTruthy();
83
+
84
+ // test sqrt scale padding
85
+ d = scale({
86
+ type: "sqrt",
87
+ domain: [2 * 2, 3 * 3],
88
+ range: [0, 60],
89
+ padding: 20,
90
+ zero: false,
91
+ }).domain();
92
+ expect(Math.abs(d[0] - 1 * 1) < 1e-8).toBeTruthy();
93
+ expect(Math.abs(d[1] - 4 * 4) < 1e-8).toBeTruthy();
94
+
95
+ // test power scale padding
96
+ d = scale({
97
+ type: "pow",
98
+ exponent: 1 / 3,
99
+ domain: [2 * 2 * 2, 3 * 3 * 3],
100
+ range: [0, 60],
101
+ padding: 20,
102
+ zero: false,
103
+ }).domain();
104
+ expect(Math.abs(d[0] - 1 * 1 * 1) < 1e-8).toBeTruthy();
105
+ expect(Math.abs(d[1] - 4 * 4 * 4) < 1e-8).toBeTruthy();
106
+ });
107
+
108
+ test("Ordinal scale respects domainImplicit", function () {
109
+ var s,
110
+ params = {
111
+ type: "ordinal",
112
+ domain: [],
113
+ range: ["a", "b", "c"],
114
+ };
115
+
116
+ s = scale(params);
117
+ expect(s("foo")).toBe(undefined);
118
+ expect(s("bar")).toBe(undefined);
119
+ expect(s("foo")).toBe(undefined);
120
+
121
+ s = scale(util.extend({ domainImplicit: false }, params));
122
+ expect(s("foo")).toBe(undefined);
123
+ expect(s("bar")).toBe(undefined);
124
+ expect(s("foo")).toBe(undefined);
125
+
126
+ s = scale(util.extend({ domainImplicit: true }, params));
127
+ expect(s("foo")).toBe("a");
128
+ expect(s("bar")).toBe("b");
129
+ expect(s("foo")).toBe("a");
130
+ });
131
+
132
+ test("Scale respects range configuration", function () {
133
+ var s,
134
+ params = {
135
+ type: "linear",
136
+ domain: [0, 10],
137
+ range: [0, 10],
138
+ };
139
+
140
+ // round
141
+ s = scale(params);
142
+ expect(s(0.5)).toBe(0.5);
143
+ s = scale(util.extend({ round: true }, params));
144
+ expect(s(0.5)).toBe(1);
145
+
146
+ // reverse
147
+ s = scale(util.extend({ reverse: true }, params));
148
+ expect(s.range()).toEqual([10, 0]);
149
+
150
+ // rangeStep
151
+ params = {
152
+ type: "band",
153
+ domain: ["a", "b", "c"],
154
+ rangeStep: 20,
155
+ padding: 0,
156
+ };
157
+ s = scale(params);
158
+ expect(s.range()).toEqual([0, 60]);
159
+ expect(s.bandwidth()).toBe(20);
160
+
161
+ s = expect(function () {
162
+ scale(util.extend({}, params, { type: "linear" }));
163
+ }).toThrow();
164
+ });
165
+
166
+ test("Scale respects range color schemes", function () {
167
+ var s, u, v;
168
+
169
+ // performs scheme lookup
170
+ s = scale({ type: "ordinal", scheme: "category10" });
171
+ expect(s.range().length).toBe(10);
172
+
173
+ // throws on invalid scheme
174
+ expect(function () {
175
+ scale({ type: "ordinal", scheme: "foobarbaz" });
176
+ }).toThrow();
177
+ expect(function () {
178
+ scale({ type: "sequential", scheme: "foobarbaz" });
179
+ }).toThrow();
180
+
181
+ // handles interpolating schemes and extents
182
+ s = scale({ type: "sequential", scheme: "viridis" });
183
+ u = s.interpolator();
184
+ expect(typeof u).toBe("function");
185
+
186
+ s = scale({
187
+ type: "sequential",
188
+ scheme: "viridis",
189
+ schemeExtent: [0.2, 0.9],
190
+ });
191
+ v = s.interpolator();
192
+ expect(typeof v).toBe("function");
193
+ expect(v(0)).toBe(u(0.2));
194
+ expect(v(1)).toBe(u(0.9));
195
+
196
+ s = scale({
197
+ type: "sequential",
198
+ scheme: "viridis",
199
+ schemeExtent: [0.2, 0.9],
200
+ reverse: true,
201
+ });
202
+ v = s.interpolator();
203
+ expect(typeof v).toBe("function");
204
+ expect(v(0)).toBe(u(0.9));
205
+ expect(v(1)).toBe(u(0.2));
206
+
207
+ // generate interpolator as needed
208
+ s = scale({ type: "sequential", range: ["#000", "#f00"] });
209
+ v = s.interpolator();
210
+ expect(typeof v).toBe("function");
211
+ expect(v(0)).toBe("rgb(0, 0, 0)");
212
+ expect(v(1)).toBe("rgb(255, 0, 0)");
213
+
214
+ // quantize to provided scheme count
215
+ s = scale({ type: "quantize", scheme: "viridis", schemeCount: 3 });
216
+ v = s.range();
217
+ expect(v.length).toBe(3);
218
+ expect(v[0]).toBe(u(1 / 4));
219
+ expect(v[1]).toBe(u(2 / 4));
220
+ expect(v[2]).toBe(u(3 / 4));
221
+ });
222
+
223
+ test("Scale warns for zero in log domain", function () {
224
+ function logScale(domain) {
225
+ const logger = {
226
+ count: 0,
227
+ warn: function (msg) {
228
+ this.count++;
229
+ },
230
+ };
231
+
232
+ return function () {
233
+ scale({ type: "log", domain: domain }, logger);
234
+ if (logger.count) {
235
+ throw new Error();
236
+ }
237
+ };
238
+ }
239
+
240
+ expect(logScale([0, 1])).toThrow();
241
+ expect(logScale([-1, 0])).toThrow();
242
+ expect(logScale([-1, 1])).toThrow();
243
+ expect(logScale([1, 0, 2])).toThrow();
244
+ expect(logScale([1, 2])).not.toThrow();
245
+ expect(logScale([-2, -1])).not.toThrow();
246
+ });
247
+
248
+ test("Scale infers scale key from type, domain, and range", function () {
249
+ function key(params) {
250
+ return scale(params).type;
251
+ }
252
+
253
+ // numeric domain scales should adapt
254
+ [vs.Linear, vs.Log, vs.Pow, vs.Sqrt, vs.Symlog].forEach(function (st) {
255
+ expect(key({ type: st, domain: [0, 1], range: [0, 1] })).toBe(st);
256
+ expect(key({ type: st, domain: [0, 1], range: [true, false] })).toBe(
257
+ st
258
+ );
259
+
260
+ // direct color range specification
261
+ expect(key({ type: st, domain: [0, 1], range: ["blue", "red"] })).toBe(
262
+ `${vs.Sequential}-${st}`
263
+ );
264
+ expect(
265
+ key({ type: st, domain: [0, 1, 2], range: ["blue", "red"] })
266
+ ).toBe(`${vs.Diverging}-${st}`);
267
+ expect(
268
+ key({ type: st, domain: [0, 1, 2, 3], range: ["blue", "red"] })
269
+ ).toBe(st);
270
+
271
+ // color scheme range specification
272
+ expect(key({ type: st, domain: [0, 1], scheme: "blues" })).toBe(
273
+ `${vs.Sequential}-${st}`
274
+ );
275
+ expect(key({ type: st, domain: [0, 1, 2], scheme: "blues" })).toBe(
276
+ `${vs.Diverging}-${st}`
277
+ );
278
+ expect(key({ type: st, domain: [0, 1, 2, 3], scheme: "blues" })).toBe(
279
+ st
280
+ );
281
+ });
282
+
283
+ // temporal domain scales should not adapt
284
+ [vs.Time, vs.UTC].forEach(function (st) {
285
+ const t0 = new Date(2010, 0, 1),
286
+ t1 = new Date(2011, 0, 1),
287
+ t2 = new Date(2012, 0, 1),
288
+ t3 = new Date(2013, 0, 1);
289
+
290
+ expect(key({ type: st, domain: [t0, t1], range: [0, 1] })).toBe(st);
291
+ expect(key({ type: st, domain: [t0, t1], range: [true, false] })).toBe(
292
+ st
293
+ );
294
+
295
+ // direct color range specification
296
+ expect(
297
+ key({ type: st, domain: [t0, t1], range: ["blue", "red"] })
298
+ ).toBe(st);
299
+ expect(
300
+ key({ type: st, domain: [t0, t1, t2], range: ["blue", "red"] })
301
+ ).toBe(st);
302
+ expect(
303
+ key({ type: st, domain: [t0, t1, t2, t3], range: ["blue", "red"] })
304
+ ).toBe(st);
305
+
306
+ // color scheme range specification
307
+ expect(key({ type: st, domain: [t0, t1], scheme: "blues" })).toBe(st);
308
+ expect(key({ type: st, domain: [t0, t1, t2], scheme: "blues" })).toBe(
309
+ st
310
+ );
311
+ expect(
312
+ key({ type: st, domain: [t0, t1, t2, t3], scheme: "blues" })
313
+ ).toBe(st);
314
+ });
315
+
316
+ // sequential should work for backwards compatibility
317
+ const st = vs.Sequential;
318
+ expect(key({ type: st, domain: [0, 1], range: ["blue", "red"] })).toBe(
319
+ `${st}-${vs.Linear}`
320
+ );
321
+ expect(key({ type: st, domain: [0, 1], scheme: "blues" })).toBe(
322
+ `${st}-${vs.Linear}`
323
+ );
324
+ });
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Determine the tick count or interval function.
3
+ *
4
+ * @param {import("../encoder/encoder").VegaScale} scale - The scale for which to generate tick values.
5
+ * @param {number | {step: number, interval: number}} count - The desired tick count or interval specifier.
6
+ * @param {number} minStep - The desired minimum step between tick values.
7
+ * @return {*} - The tick count or interval function.
8
+ */
9
+ export function tickCount(scale: any, count: number | {
10
+ step: number;
11
+ interval: number;
12
+ }, minStep: number): any;
13
+ /**
14
+ * Filter a set of candidate tick values, ensuring that only tick values
15
+ * that lie within the scale range are included.
16
+ * @param {import("../encoder/encoder").VegaScale} scale - The scale for which to generate tick values.
17
+ * @param {Array<*>} ticks - The candidate tick values.
18
+ * @param {*} count - The tick count or interval function.
19
+ * @return {Array<*>} - The filtered tick values.
20
+ */
21
+ export function validTicks(scale: any, ticks: Array<any>, count: any): Array<any>;
22
+ /**
23
+ * Generate tick values for the given scale and approximate tick count or
24
+ * interval value. If the scale has a 'ticks' method, it will be used to
25
+ * generate the ticks, with the count argument passed as a parameter. If the
26
+ * scale lacks a 'ticks' method, the full scale domain will be returned.
27
+ * @param {import("../encoder/encoder").VegaScale} scale - The scale for which to generate tick values.
28
+ * @param {*} [count] - The approximate number of desired ticks.
29
+ * @return {any[]} - The generated tick values.
30
+ */
31
+ export function tickValues(scale: any, count?: any): any[];
32
+ /**
33
+ * Generate a label format function for a scale. If the scale has a
34
+ * 'tickFormat' method, it will be used to generate the formatter, with the
35
+ * count and specifier arguments passed as parameters. If the scale lacks a
36
+ * 'tickFormat' method, the returned formatter performs simple string coercion.
37
+ * If the input scale is a logarithmic scale and the format specifier does not
38
+ * indicate a desired decimal precision, a special variable precision formatter
39
+ * that automatically trims trailing zeroes will be generated.
40
+ * @param {import("../encoder/encoder").VegaScale} scale - The scale for which to generate the label formatter.
41
+ * @param {*} [count] - The approximate number of desired ticks.
42
+ * @param {string} [specifier] - The format specifier. Must be a legal d3
43
+ * specifier string (see https://github.com/d3/d3-format#formatSpecifier).
44
+ * @return {function(*):string} - The generated label formatter.
45
+ */
46
+ export function tickFormat(scale: any, count?: any, specifier?: string): (arg0: any) => string;
47
+ //# sourceMappingURL=ticks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticks.d.ts","sourceRoot":"","sources":["../../../src/scale/ticks.js"],"names":[],"mappings":"AAoBA;;;;;;;GAOG;AACH,6CAJW,MAAM,GAAG;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,WACzC,MAAM,OAgBhB;AAED;;;;;;;GAOG;AACH,8CAJW,UAAQ,eAEP,UAAQ,CA+BnB;AAED;;;;;;;;GAQG;AACH,qDAFY,GAAG,EAAE,CAQhB;AAmBD;;;;;;;;;;;;;GAaG;AACH,gEAJW,MAAM,kBAEO,MAAM,CAe7B"}
@@ -0,0 +1,203 @@
1
+ /*!
2
+ * Adapted from vega-encode:
3
+ * https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
4
+ *
5
+ * Copyright (c) 2015-2018, University of Washington Interactive Data Lab
6
+ * All rights reserved.
7
+ *
8
+ * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
9
+ */
10
+
11
+ /* eslint-disable */
12
+ // @ts-nocheck
13
+
14
+ // This file is a mess
15
+ // TODO: Fix types, etc.
16
+
17
+ import { isLogarithmic } from "vega-scale";
18
+ import { error, isNumber, isObject, isString, peek, span } from "vega-util";
19
+ import { format as numberFormat, formatSpecifier } from "d3-format";
20
+
21
+ /**
22
+ * Determine the tick count or interval function.
23
+ *
24
+ * @param {import("../encoder/encoder").VegaScale} scale - The scale for which to generate tick values.
25
+ * @param {number | {step: number, interval: number}} count - The desired tick count or interval specifier.
26
+ * @param {number} minStep - The desired minimum step between tick values.
27
+ * @return {*} - The tick count or interval function.
28
+ */
29
+ export function tickCount(scale, count, minStep) {
30
+ var step;
31
+
32
+ if (isNumber(count) && minStep != null) {
33
+ count = Math.min(count, ~~(span(scale.domain()) / minStep) || 1);
34
+ }
35
+
36
+ if (isObject(count)) {
37
+ step = count.step;
38
+ count = count.interval;
39
+ }
40
+
41
+ return count;
42
+ }
43
+
44
+ /**
45
+ * Filter a set of candidate tick values, ensuring that only tick values
46
+ * that lie within the scale range are included.
47
+ * @param {import("../encoder/encoder").VegaScale} scale - The scale for which to generate tick values.
48
+ * @param {Array<*>} ticks - The candidate tick values.
49
+ * @param {*} count - The tick count or interval function.
50
+ * @return {Array<*>} - The filtered tick values.
51
+ */
52
+ export function validTicks(scale, ticks, count) {
53
+ var range = scale.range(),
54
+ lo = Math.floor(range[0]),
55
+ hi = Math.ceil(peek(range));
56
+
57
+ if (lo > hi) {
58
+ range = hi;
59
+ hi = lo;
60
+ lo = range;
61
+ }
62
+
63
+ ticks = ticks.filter(function (v) {
64
+ v = scale(v);
65
+ return lo <= v && v <= hi;
66
+ });
67
+
68
+ if (count > 0 && ticks.length > 1) {
69
+ var endpoints = [ticks[0], peek(ticks)];
70
+ while (ticks.length > count && ticks.length >= 3) {
71
+ ticks = ticks.filter(function (_, i) {
72
+ return !(i % 2);
73
+ });
74
+ }
75
+ if (ticks.length < 3) {
76
+ ticks = endpoints;
77
+ }
78
+ }
79
+
80
+ return ticks;
81
+ }
82
+
83
+ /**
84
+ * Generate tick values for the given scale and approximate tick count or
85
+ * interval value. If the scale has a 'ticks' method, it will be used to
86
+ * generate the ticks, with the count argument passed as a parameter. If the
87
+ * scale lacks a 'ticks' method, the full scale domain will be returned.
88
+ * @param {import("../encoder/encoder").VegaScale} scale - The scale for which to generate tick values.
89
+ * @param {*} [count] - The approximate number of desired ticks.
90
+ * @return {any[]} - The generated tick values.
91
+ */
92
+ export function tickValues(scale, count) {
93
+ return scale.bins
94
+ ? validTicks(scale, binValues(scale.bins, count))
95
+ : scale.ticks
96
+ ? scale.ticks(count)
97
+ : scale.domain();
98
+ }
99
+
100
+ /**
101
+ * Generate tick values for an array of bin values.
102
+ * @param {Array<*>} bins - An array of bin boundaries.
103
+ * @param {Number} [count] - The approximate number of desired ticks.
104
+ * @return {Array<*>} - The generated tick values.
105
+ */
106
+ function binValues(bins, count) {
107
+ var n = bins.length,
108
+ stride = ~~(n / (count || n));
109
+
110
+ return stride < 2
111
+ ? bins.slice()
112
+ : bins.filter(function (x, i) {
113
+ return !(i % stride);
114
+ });
115
+ }
116
+
117
+ /**
118
+ * Generate a label format function for a scale. If the scale has a
119
+ * 'tickFormat' method, it will be used to generate the formatter, with the
120
+ * count and specifier arguments passed as parameters. If the scale lacks a
121
+ * 'tickFormat' method, the returned formatter performs simple string coercion.
122
+ * If the input scale is a logarithmic scale and the format specifier does not
123
+ * indicate a desired decimal precision, a special variable precision formatter
124
+ * that automatically trims trailing zeroes will be generated.
125
+ * @param {import("../encoder/encoder").VegaScale} scale - The scale for which to generate the label formatter.
126
+ * @param {*} [count] - The approximate number of desired ticks.
127
+ * @param {string} [specifier] - The format specifier. Must be a legal d3
128
+ * specifier string (see https://github.com/d3/d3-format#formatSpecifier).
129
+ * @return {function(*):string} - The generated label formatter.
130
+ */
131
+ export function tickFormat(scale, count, specifier) {
132
+ var format = scale.tickFormat
133
+ ? scale.tickFormat(count, specifier)
134
+ : specifier
135
+ ? numberFormat(specifier)
136
+ : String;
137
+
138
+ if (isLogarithmic(scale.type)) {
139
+ var logfmt = variablePrecision(specifier);
140
+ format = scale.bins ? logfmt : filter(format, logfmt);
141
+ }
142
+
143
+ return format;
144
+ }
145
+
146
+ function filter(sourceFormat, targetFormat) {
147
+ return function (_) {
148
+ return sourceFormat(_) ? targetFormat(_) : "";
149
+ };
150
+ }
151
+
152
+ function variablePrecision(specifier) {
153
+ var s = formatSpecifier(specifier || ",");
154
+
155
+ if (s.precision == null) {
156
+ s.precision = 12;
157
+ switch (s.type) {
158
+ case "%":
159
+ s.precision -= 2;
160
+ break;
161
+ case "e":
162
+ s.precision -= 1;
163
+ break;
164
+ }
165
+ return trimZeroes(
166
+ numberFormat(s), // number format
167
+ numberFormat(".1f")(1)[1] // decimal point character
168
+ );
169
+ } else {
170
+ return numberFormat(s);
171
+ }
172
+ }
173
+
174
+ function trimZeroes(format, decimalChar) {
175
+ return function (x) {
176
+ var str = format(x),
177
+ dec = str.indexOf(decimalChar),
178
+ idx,
179
+ end;
180
+
181
+ if (dec < 0) return str;
182
+
183
+ idx = rightmostDigit(str, dec);
184
+ end = idx < str.length ? str.slice(idx) : "";
185
+ while (--idx > dec)
186
+ if (str[idx] !== "0") {
187
+ ++idx;
188
+ break;
189
+ }
190
+
191
+ return str.slice(0, idx) + end;
192
+ };
193
+ }
194
+
195
+ function rightmostDigit(str, dec) {
196
+ var i = str.lastIndexOf("e"),
197
+ c;
198
+ if (i > 0) return i;
199
+ for (i = str.length; --i > dec; ) {
200
+ c = str.charCodeAt(i);
201
+ if (c >= 48 && c <= 57) return i + 1; // is digit
202
+ }
203
+ }
@@ -0,0 +1,40 @@
1
+ import { expect, test } from "vitest";
2
+ /*!
3
+ * Adapted from vega-encode:
4
+ * https://github.com/vega/vega/blob/master/packages/vega-encode/test/scale-test.js
5
+ *
6
+ * Copyright (c) 2015-2018, University of Washington Interactive Data Lab
7
+ * All rights reserved.
8
+ *
9
+ * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
10
+ */
11
+
12
+ /* eslint-disable */
13
+
14
+ import { validTicks } from "./ticks";
15
+
16
+ test("validTicks uses count correctly", function () {
17
+ var data = [0, 1, 2, 3, 4, 5, 6, 7];
18
+
19
+ var identity = function (x) {
20
+ return x;
21
+ };
22
+ identity.range = function () {
23
+ return [0, 10];
24
+ };
25
+
26
+ var t1 = validTicks(identity, data, 5);
27
+ expect(t1).toEqual([0, 2, 4, 6]);
28
+
29
+ // don't change ticks if count is large
30
+ var t2 = validTicks(identity, data, 100);
31
+ expect(t2).toEqual(data);
32
+
33
+ // special case for low number of ticks
34
+ var t3 = validTicks(identity, data, 3);
35
+ expect(t3).toEqual([0, 7]);
36
+
37
+ // single tick should pass through
38
+ var t5 = validTicks(identity, [1], 5);
39
+ expect(t5).toEqual([1]);
40
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=singlePageApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singlePageApp.d.ts","sourceRoot":"","sources":["../../src/singlePageApp.js"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { embed } from "./index";
2
+
3
+ // This is for development purposes. Use "npm start" to launch.
4
+
5
+ const specUrl = new URLSearchParams(window.location.search).get("spec");
6
+ if (specUrl) {
7
+ embed(document.body, specUrl);
8
+ } else {
9
+ document.body.innerHTML = `
10
+ <p style="color: firebrick">No 'spec' url parameter defined!</p>
11
+ <p>Try this one from the "static" folder, for example:
12
+ <a href="?spec=examples/first.json">examples/first.json</a></p>`;
13
+ }