@genome-spy/core 0.37.4 → 0.39.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 (360) hide show
  1. package/dist/bundle/__vite-browser-external-ENoMJThg.js +8 -0
  2. package/dist/bundle/_commonjsHelpers-QtkX90xp.js +30 -0
  3. package/dist/bundle/index-1QVesMzU.js +1074 -0
  4. package/dist/bundle/index-Cbz74kpR.js +638 -0
  5. package/dist/bundle/index-LD6yPc3X.js +515 -0
  6. package/dist/bundle/index-Pv3tKJ1W.js +2190 -0
  7. package/dist/bundle/index-UyrC0vvF.js +72 -0
  8. package/dist/bundle/index-Y-LdHNIz.js +501 -0
  9. package/dist/bundle/index-gn8bhQ8w.js +4050 -0
  10. package/dist/bundle/index-lmJu1tfP.js +1372 -0
  11. package/dist/bundle/index-z4Cs62EO.js +279 -0
  12. package/dist/bundle/index.es.js +6467 -20590
  13. package/dist/bundle/index.js +92 -123
  14. package/dist/bundle/long-Veu0zKh9.js +2382 -0
  15. package/dist/bundle/remoteFile-Ur-gRKsH.js +96 -0
  16. package/dist/schema.json +524 -122
  17. package/dist/src/data/collector.d.ts +11 -11
  18. package/dist/src/data/collector.d.ts.map +1 -1
  19. package/dist/src/data/collector.js +8 -8
  20. package/dist/src/data/dataFlow.d.ts +18 -18
  21. package/dist/src/data/dataFlow.d.ts.map +1 -1
  22. package/dist/src/data/dataFlow.js +7 -7
  23. package/dist/src/data/flowNode.d.ts +9 -9
  24. package/dist/src/data/flowNode.d.ts.map +1 -1
  25. package/dist/src/data/flowNode.js +5 -5
  26. package/dist/src/data/flowOptimizer.d.ts +11 -11
  27. package/dist/src/data/flowOptimizer.d.ts.map +1 -1
  28. package/dist/src/data/flowOptimizer.js +7 -7
  29. package/dist/src/data/flowTestUtils.d.ts +2 -2
  30. package/dist/src/data/flowTestUtils.d.ts.map +1 -1
  31. package/dist/src/data/flowTestUtils.js +1 -1
  32. package/dist/src/data/sources/dataSource.js +1 -1
  33. package/dist/src/data/sources/dataSourceFactory.d.ts +3 -3
  34. package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -1
  35. package/dist/src/data/sources/dataSourceFactory.js +20 -20
  36. package/dist/src/data/sources/dataUtils.d.ts +20 -20
  37. package/dist/src/data/sources/dataUtils.d.ts.map +1 -1
  38. package/dist/src/data/sources/dataUtils.js +11 -11
  39. package/dist/src/data/sources/dynamic/axisGenomeSource.d.ts +3 -3
  40. package/dist/src/data/sources/dynamic/axisGenomeSource.d.ts.map +1 -1
  41. package/dist/src/data/sources/dynamic/axisGenomeSource.js +2 -2
  42. package/dist/src/data/sources/dynamic/axisTickSource.d.ts +6 -6
  43. package/dist/src/data/sources/dynamic/axisTickSource.d.ts.map +1 -1
  44. package/dist/src/data/sources/dynamic/axisTickSource.js +4 -4
  45. package/dist/src/data/sources/dynamic/bamSource.d.ts +7 -13
  46. package/dist/src/data/sources/dynamic/bamSource.d.ts.map +1 -1
  47. package/dist/src/data/sources/dynamic/bamSource.js +35 -27
  48. package/dist/src/data/sources/dynamic/bigBedSource.d.ts +9 -9
  49. package/dist/src/data/sources/dynamic/bigBedSource.d.ts.map +1 -1
  50. package/dist/src/data/sources/dynamic/bigBedSource.js +31 -18
  51. package/dist/src/data/sources/dynamic/bigWigSource.d.ts +7 -7
  52. package/dist/src/data/sources/dynamic/bigWigSource.d.ts.map +1 -1
  53. package/dist/src/data/sources/dynamic/bigWigSource.js +33 -26
  54. package/dist/src/data/sources/dynamic/gff3Source.d.ts +9 -0
  55. package/dist/src/data/sources/dynamic/gff3Source.d.ts.map +1 -1
  56. package/dist/src/data/sources/dynamic/gff3Source.js +17 -2
  57. package/dist/src/data/sources/dynamic/indexedFastaSource.d.ts +6 -9
  58. package/dist/src/data/sources/dynamic/indexedFastaSource.d.ts.map +1 -1
  59. package/dist/src/data/sources/dynamic/indexedFastaSource.js +28 -18
  60. package/dist/src/data/sources/dynamic/singleAxisLazySource.d.ts +10 -10
  61. package/dist/src/data/sources/dynamic/singleAxisLazySource.d.ts.map +1 -1
  62. package/dist/src/data/sources/dynamic/singleAxisLazySource.js +6 -6
  63. package/dist/src/data/sources/dynamic/tabixSource.d.ts +11 -8
  64. package/dist/src/data/sources/dynamic/tabixSource.d.ts.map +1 -1
  65. package/dist/src/data/sources/dynamic/tabixSource.js +31 -17
  66. package/dist/src/data/sources/inlineSource.d.ts +7 -7
  67. package/dist/src/data/sources/inlineSource.d.ts.map +1 -1
  68. package/dist/src/data/sources/inlineSource.js +5 -5
  69. package/dist/src/data/sources/namedSource.d.ts +9 -9
  70. package/dist/src/data/sources/namedSource.d.ts.map +1 -1
  71. package/dist/src/data/sources/namedSource.js +6 -6
  72. package/dist/src/data/sources/sequenceSource.d.ts +7 -7
  73. package/dist/src/data/sources/sequenceSource.d.ts.map +1 -1
  74. package/dist/src/data/sources/sequenceSource.js +4 -4
  75. package/dist/src/data/sources/urlSource.d.ts +7 -7
  76. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  77. package/dist/src/data/sources/urlSource.js +4 -4
  78. package/dist/src/data/transforms/aggregate.d.ts +3 -3
  79. package/dist/src/data/transforms/aggregate.d.ts.map +1 -1
  80. package/dist/src/data/transforms/aggregate.js +2 -2
  81. package/dist/src/data/transforms/clone.d.ts +2 -2
  82. package/dist/src/data/transforms/clone.d.ts.map +1 -1
  83. package/dist/src/data/transforms/clone.js +1 -1
  84. package/dist/src/data/transforms/coverage.d.ts +3 -3
  85. package/dist/src/data/transforms/coverage.d.ts.map +1 -1
  86. package/dist/src/data/transforms/coverage.js +1 -1
  87. package/dist/src/data/transforms/coverage.test.js +1 -1
  88. package/dist/src/data/transforms/filter.d.ts +3 -3
  89. package/dist/src/data/transforms/filter.d.ts.map +1 -1
  90. package/dist/src/data/transforms/filter.js +2 -2
  91. package/dist/src/data/transforms/filter.test.js +1 -1
  92. package/dist/src/data/transforms/filterScoredLabels.d.ts +4 -4
  93. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  94. package/dist/src/data/transforms/filterScoredLabels.js +3 -3
  95. package/dist/src/data/transforms/flatten.d.ts +2 -2
  96. package/dist/src/data/transforms/flatten.d.ts.map +1 -1
  97. package/dist/src/data/transforms/flatten.js +3 -3
  98. package/dist/src/data/transforms/flatten.test.js +6 -6
  99. package/dist/src/data/transforms/flattenCompressedExons.d.ts +2 -2
  100. package/dist/src/data/transforms/flattenCompressedExons.d.ts.map +1 -1
  101. package/dist/src/data/transforms/flattenCompressedExons.js +1 -1
  102. package/dist/src/data/transforms/flattenDelimited.d.ts +2 -2
  103. package/dist/src/data/transforms/flattenDelimited.d.ts.map +1 -1
  104. package/dist/src/data/transforms/flattenDelimited.js +2 -2
  105. package/dist/src/data/transforms/flattenDelimited.test.js +5 -5
  106. package/dist/src/data/transforms/flattenSequence.d.ts +2 -2
  107. package/dist/src/data/transforms/flattenSequence.d.ts.map +1 -1
  108. package/dist/src/data/transforms/flattenSequence.js +1 -1
  109. package/dist/src/data/transforms/flattenSequence.test.js +1 -1
  110. package/dist/src/data/transforms/formula.d.ts +3 -3
  111. package/dist/src/data/transforms/formula.d.ts.map +1 -1
  112. package/dist/src/data/transforms/formula.js +2 -2
  113. package/dist/src/data/transforms/identifier.d.ts +3 -3
  114. package/dist/src/data/transforms/identifier.d.ts.map +1 -1
  115. package/dist/src/data/transforms/identifier.js +2 -2
  116. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts +3 -3
  117. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts.map +1 -1
  118. package/dist/src/data/transforms/linearizeGenomicCoordinate.js +2 -2
  119. package/dist/src/data/transforms/measureText.d.ts +2 -2
  120. package/dist/src/data/transforms/measureText.d.ts.map +1 -1
  121. package/dist/src/data/transforms/measureText.js +1 -1
  122. package/dist/src/data/transforms/pileup.d.ts +3 -3
  123. package/dist/src/data/transforms/pileup.d.ts.map +1 -1
  124. package/dist/src/data/transforms/pileup.js +1 -1
  125. package/dist/src/data/transforms/pileup.test.js +1 -1
  126. package/dist/src/data/transforms/project.d.ts +2 -2
  127. package/dist/src/data/transforms/project.d.ts.map +1 -1
  128. package/dist/src/data/transforms/project.js +1 -1
  129. package/dist/src/data/transforms/project.test.js +1 -1
  130. package/dist/src/data/transforms/regexExtract.d.ts +2 -2
  131. package/dist/src/data/transforms/regexExtract.d.ts.map +1 -1
  132. package/dist/src/data/transforms/regexExtract.js +1 -1
  133. package/dist/src/data/transforms/regexExtract.test.js +3 -3
  134. package/dist/src/data/transforms/regexFold.d.ts +2 -2
  135. package/dist/src/data/transforms/regexFold.d.ts.map +1 -1
  136. package/dist/src/data/transforms/regexFold.js +2 -2
  137. package/dist/src/data/transforms/regexFold.test.js +3 -3
  138. package/dist/src/data/transforms/sample.d.ts +2 -2
  139. package/dist/src/data/transforms/sample.d.ts.map +1 -1
  140. package/dist/src/data/transforms/sample.js +2 -2
  141. package/dist/src/data/transforms/stack.d.ts +3 -3
  142. package/dist/src/data/transforms/stack.d.ts.map +1 -1
  143. package/dist/src/data/transforms/stack.js +2 -2
  144. package/dist/src/data/transforms/stack.test.js +2 -2
  145. package/dist/src/data/transforms/transformFactory.d.ts +5 -5
  146. package/dist/src/data/transforms/transformFactory.d.ts.map +1 -1
  147. package/dist/src/data/transforms/transformFactory.js +3 -3
  148. package/dist/src/encoder/accessor.d.ts +6 -6
  149. package/dist/src/encoder/accessor.d.ts.map +1 -1
  150. package/dist/src/encoder/accessor.js +4 -4
  151. package/dist/src/encoder/encoder.d.ts +59 -59
  152. package/dist/src/encoder/encoder.d.ts.map +1 -1
  153. package/dist/src/encoder/encoder.js +47 -42
  154. package/dist/src/encoder/encoder.test.js +4 -4
  155. package/dist/src/fonts/bmFontManager.d.ts +7 -7
  156. package/dist/src/fonts/bmFontManager.d.ts.map +1 -1
  157. package/dist/src/fonts/bmFontManager.js +3 -3
  158. package/dist/src/fonts/bmFontMetrics.d.ts +6 -6
  159. package/dist/src/fonts/bmFontMetrics.d.ts.map +1 -1
  160. package/dist/src/fonts/bmFontMetrics.js +4 -4
  161. package/dist/src/genome/genome.d.ts +7 -7
  162. package/dist/src/genome/genome.d.ts.map +1 -1
  163. package/dist/src/genome/genome.js +2 -2
  164. package/dist/src/genome/genomeStore.d.ts +2 -2
  165. package/dist/src/genome/genomeStore.d.ts.map +1 -1
  166. package/dist/src/genome/genomeStore.js +1 -1
  167. package/dist/src/genome/locusFormat.d.ts +7 -7
  168. package/dist/src/genome/locusFormat.d.ts.map +1 -1
  169. package/dist/src/genome/locusFormat.js +4 -4
  170. package/dist/src/genome/scaleIndex.d.ts +1 -1
  171. package/dist/src/genome/scaleIndex.d.ts.map +1 -1
  172. package/dist/src/genome/scaleIndex.js +1 -1
  173. package/dist/src/genome/scaleLocus.d.ts +2 -2
  174. package/dist/src/genome/scaleLocus.d.ts.map +1 -1
  175. package/dist/src/genome/scaleLocus.js +3 -3
  176. package/dist/src/genomeSpy.d.ts +12 -12
  177. package/dist/src/genomeSpy.d.ts.map +1 -1
  178. package/dist/src/genomeSpy.js +51 -34
  179. package/dist/src/gl/arrayBuilder.d.ts.map +1 -1
  180. package/dist/src/gl/dataToVertices.d.ts +19 -19
  181. package/dist/src/gl/dataToVertices.d.ts.map +1 -1
  182. package/dist/src/gl/dataToVertices.js +11 -11
  183. package/dist/src/gl/link.vertex.glsl.js +1 -1
  184. package/dist/src/gl/point.fragment.glsl.js +1 -1
  185. package/dist/src/gl/point.vertex.glsl.js +1 -1
  186. package/dist/src/gl/webGLHelper.d.ts +4 -4
  187. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  188. package/dist/src/gl/webGLHelper.js +2 -2
  189. package/dist/src/index.d.ts.map +1 -1
  190. package/dist/src/index.js +1 -1
  191. package/dist/src/marks/link.d.ts.map +1 -1
  192. package/dist/src/marks/link.js +35 -14
  193. package/dist/src/marks/mark.d.ts +35 -32
  194. package/dist/src/marks/mark.d.ts.map +1 -1
  195. package/dist/src/marks/mark.js +26 -23
  196. package/dist/src/marks/markUtils.d.ts +10 -10
  197. package/dist/src/marks/markUtils.d.ts.map +1 -1
  198. package/dist/src/marks/markUtils.js +5 -5
  199. package/dist/src/marks/pointMark.d.ts +1 -1
  200. package/dist/src/marks/pointMark.d.ts.map +1 -1
  201. package/dist/src/marks/pointMark.js +7 -7
  202. package/dist/src/marks/rectMark.d.ts +2 -2
  203. package/dist/src/marks/rectMark.d.ts.map +1 -1
  204. package/dist/src/marks/rectMark.js +7 -7
  205. package/dist/src/marks/rule.js +6 -6
  206. package/dist/src/marks/text.d.ts +1 -1
  207. package/dist/src/marks/text.d.ts.map +1 -1
  208. package/dist/src/marks/text.js +6 -6
  209. package/dist/src/scale/colorUtils.d.ts +4 -4
  210. package/dist/src/scale/colorUtils.d.ts.map +1 -1
  211. package/dist/src/scale/colorUtils.js +2 -2
  212. package/dist/src/scale/glslScaleGenerator.d.ts +3 -3
  213. package/dist/src/scale/glslScaleGenerator.d.ts.map +1 -1
  214. package/dist/src/scale/glslScaleGenerator.js +2 -2
  215. package/dist/src/scale/scale.d.ts +3 -3
  216. package/dist/src/scale/scale.d.ts.map +1 -1
  217. package/dist/src/scale/scale.js +2 -2
  218. package/dist/src/scale/ticks.d.ts +4 -4
  219. package/dist/src/scale/ticks.js +4 -4
  220. package/dist/src/spec/axis.d.ts +1 -1
  221. package/dist/src/spec/channel.d.ts +2 -2
  222. package/dist/src/spec/data.d.ts +2 -2
  223. package/dist/src/spec/mark.d.ts +36 -14
  224. package/dist/src/spec/root.d.ts +2 -2
  225. package/dist/src/spec/sampleView.d.ts +5 -5
  226. package/dist/src/spec/scale.d.ts +1 -1
  227. package/dist/src/spec/title.d.ts +1 -1
  228. package/dist/src/spec/view.d.ts +36 -9
  229. package/dist/src/tooltip/dataTooltipHandler.js +1 -1
  230. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts.map +1 -1
  231. package/dist/src/tooltip/refseqGeneTooltipHandler.js +1 -1
  232. package/dist/src/tooltip/tooltipHandler.d.ts +1 -1
  233. package/dist/src/tooltip/tooltipHandler.d.ts.map +1 -1
  234. package/dist/src/tooltip/tooltipHandler.ts +1 -1
  235. package/dist/src/types/embedApi.d.ts +3 -3
  236. package/dist/src/types/encoder.d.ts +4 -4
  237. package/dist/src/types/flowBatch.d.ts +1 -1
  238. package/dist/src/types/rendering.d.ts +3 -3
  239. package/dist/src/types/scaleResolutionApi.d.ts +2 -2
  240. package/dist/src/types/viewContext.d.ts +41 -12
  241. package/dist/src/utils/animator.d.ts +2 -2
  242. package/dist/src/utils/animator.d.ts.map +1 -1
  243. package/dist/src/utils/animator.js +1 -1
  244. package/dist/src/utils/inertia.d.ts +3 -3
  245. package/dist/src/utils/inertia.d.ts.map +1 -1
  246. package/dist/src/utils/inertia.js +1 -1
  247. package/dist/src/utils/interactionEvent.d.ts +5 -5
  248. package/dist/src/utils/interactionEvent.d.ts.map +1 -1
  249. package/dist/src/utils/interactionEvent.js +2 -2
  250. package/dist/src/utils/trees.js +1 -1
  251. package/dist/src/view/axisGridView.d.ts +17 -16
  252. package/dist/src/view/axisGridView.d.ts.map +1 -1
  253. package/dist/src/view/axisGridView.js +24 -20
  254. package/dist/src/view/axisResolution.d.ts +10 -10
  255. package/dist/src/view/axisResolution.d.ts.map +1 -1
  256. package/dist/src/view/axisResolution.js +6 -6
  257. package/dist/src/view/axisResolution.test.js +1 -1
  258. package/dist/src/view/axisView.d.ts +18 -17
  259. package/dist/src/view/axisView.d.ts.map +1 -1
  260. package/dist/src/view/axisView.js +39 -35
  261. package/dist/src/view/concatView.d.ts +5 -5
  262. package/dist/src/view/concatView.d.ts.map +1 -1
  263. package/dist/src/view/concatView.js +23 -23
  264. package/dist/src/view/containerView.d.ts +10 -8
  265. package/dist/src/view/containerView.d.ts.map +1 -1
  266. package/dist/src/view/containerView.js +18 -13
  267. package/dist/src/view/facetView.d.ts +12 -12
  268. package/dist/src/view/facetView.d.ts.map +1 -1
  269. package/dist/src/view/facetView.js +19 -19
  270. package/dist/src/view/flowBuilder.d.ts +4 -4
  271. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  272. package/dist/src/view/flowBuilder.js +13 -13
  273. package/dist/src/view/flowBuilder.test.js +7 -7
  274. package/dist/src/view/gridView.d.ts +63 -35
  275. package/dist/src/view/gridView.d.ts.map +1 -1
  276. package/dist/src/view/gridView.js +400 -113
  277. package/dist/src/view/layerView.d.ts +12 -14
  278. package/dist/src/view/layerView.d.ts.map +1 -1
  279. package/dist/src/view/layerView.js +55 -26
  280. package/dist/src/{utils → view}/layout/flexLayout.d.ts +6 -6
  281. package/dist/src/view/layout/flexLayout.d.ts.map +1 -0
  282. package/dist/src/{utils → view}/layout/flexLayout.js +4 -4
  283. package/dist/src/view/layout/grid.d.ts.map +1 -0
  284. package/dist/src/{utils → view}/layout/padding.d.ts +4 -4
  285. package/dist/src/view/layout/padding.d.ts.map +1 -0
  286. package/dist/src/{utils → view}/layout/padding.js +2 -2
  287. package/dist/src/view/layout/point.d.ts.map +1 -0
  288. package/dist/src/{utils → view}/layout/rectangle.d.ts +8 -2
  289. package/dist/src/view/layout/rectangle.d.ts.map +1 -0
  290. package/dist/src/{utils → view}/layout/rectangle.js +22 -2
  291. package/dist/src/{utils → view}/layout/rectangle.test.js +8 -0
  292. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts +10 -10
  293. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -1
  294. package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +10 -10
  295. package/dist/src/view/renderingContext/compositeViewRenderingContext.d.ts +2 -2
  296. package/dist/src/view/renderingContext/compositeViewRenderingContext.d.ts.map +1 -1
  297. package/dist/src/view/renderingContext/compositeViewRenderingContext.js +4 -4
  298. package/dist/src/view/renderingContext/debuggingViewRenderingContext.d.ts +4 -4
  299. package/dist/src/view/renderingContext/debuggingViewRenderingContext.d.ts.map +1 -1
  300. package/dist/src/view/renderingContext/debuggingViewRenderingContext.js +3 -3
  301. package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.d.ts +8 -8
  302. package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.d.ts.map +1 -1
  303. package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.js +4 -4
  304. package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts +6 -6
  305. package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts.map +1 -1
  306. package/dist/src/view/renderingContext/simpleViewRenderingContext.js +7 -7
  307. package/dist/src/view/renderingContext/svgViewRenderingContext.d.ts +4 -4
  308. package/dist/src/view/renderingContext/svgViewRenderingContext.d.ts.map +1 -1
  309. package/dist/src/view/renderingContext/svgViewRenderingContext.js +6 -6
  310. package/dist/src/view/renderingContext/viewRenderingContext.d.ts +10 -10
  311. package/dist/src/view/renderingContext/viewRenderingContext.d.ts.map +1 -1
  312. package/dist/src/view/renderingContext/viewRenderingContext.js +5 -5
  313. package/dist/src/view/scaleResolution.d.ts +21 -17
  314. package/dist/src/view/scaleResolution.d.ts.map +1 -1
  315. package/dist/src/view/scaleResolution.js +33 -26
  316. package/dist/src/view/scaleResolution.test.js +57 -72
  317. package/dist/src/view/testUtils.d.ts +6 -15
  318. package/dist/src/view/testUtils.d.ts.map +1 -1
  319. package/dist/src/view/testUtils.js +40 -44
  320. package/dist/src/view/title.d.ts +3 -3
  321. package/dist/src/view/title.d.ts.map +1 -1
  322. package/dist/src/view/title.js +12 -12
  323. package/dist/src/view/unitView.d.ts +31 -30
  324. package/dist/src/view/unitView.d.ts.map +1 -1
  325. package/dist/src/view/unitView.js +30 -22
  326. package/dist/src/view/view.d.ts +86 -57
  327. package/dist/src/view/view.d.ts.map +1 -1
  328. package/dist/src/view/view.js +148 -103
  329. package/dist/src/view/view.test.js +9 -8
  330. package/dist/src/view/viewError.d.ts +9 -0
  331. package/dist/src/view/viewError.d.ts.map +1 -0
  332. package/dist/src/view/viewError.js +11 -0
  333. package/dist/src/view/viewFactory.d.ts +53 -20
  334. package/dist/src/view/viewFactory.d.ts.map +1 -1
  335. package/dist/src/view/viewFactory.js +148 -33
  336. package/dist/src/view/viewFactory.test.js +8 -0
  337. package/dist/src/view/viewUtils.d.ts +14 -12
  338. package/dist/src/view/viewUtils.d.ts.map +1 -1
  339. package/dist/src/view/viewUtils.js +10 -63
  340. package/dist/src/view/zoom.d.ts +4 -4
  341. package/dist/src/view/zoom.d.ts.map +1 -1
  342. package/dist/src/view/zoom.js +3 -3
  343. package/package.json +7 -5
  344. package/dist/src/utils/layout/flexLayout.d.ts.map +0 -1
  345. package/dist/src/utils/layout/grid.d.ts.map +0 -1
  346. package/dist/src/utils/layout/padding.d.ts.map +0 -1
  347. package/dist/src/utils/layout/point.d.ts.map +0 -1
  348. package/dist/src/utils/layout/rectangle.d.ts.map +0 -1
  349. package/dist/src/view/implicitRootView.d.ts +0 -9
  350. package/dist/src/view/implicitRootView.d.ts.map +0 -1
  351. package/dist/src/view/implicitRootView.js +0 -23
  352. package/dist/src/view/importView.d.ts +0 -17
  353. package/dist/src/view/importView.d.ts.map +0 -1
  354. package/dist/src/view/importView.js +0 -22
  355. /package/dist/src/{utils → view}/layout/flexLayout.test.js +0 -0
  356. /package/dist/src/{utils → view}/layout/grid.d.ts +0 -0
  357. /package/dist/src/{utils → view}/layout/grid.js +0 -0
  358. /package/dist/src/{utils → view}/layout/grid.test.js +0 -0
  359. /package/dist/src/{utils → view}/layout/point.d.ts +0 -0
  360. /package/dist/src/{utils → view}/layout/point.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"scaleLocus.d.ts","sourceRoot":"","sources":["../../../src/genome/scaleLocus.js"],"names":[],"mappings":"AAIA,wEAyFC;AAlFU,qFAEM"}
1
+ {"version":3,"file":"scaleLocus.d.ts","sourceRoot":"","sources":["../../../src/genome/scaleLocus.js"],"names":[],"mappings":"AAIA,2EAyFC;AAlFU,wFAEM"}
@@ -3,10 +3,10 @@ import { format as d3format } from "d3-format";
3
3
  import scaleIndex from "./scaleIndex.js";
4
4
 
5
5
  export default function scaleLocus() {
6
- /** @type {import("./scaleLocus").ScaleLocus} */
6
+ /** @type {import("./scaleLocus.js").ScaleLocus} */
7
7
  const scale = /** @type {any} */ (scaleIndex().numberingOffset(1));
8
8
 
9
- /** @type {import("./genome").default} */
9
+ /** @type {import("./genome.js").default} */
10
10
  let genome;
11
11
 
12
12
  // @ts-expect-error
@@ -94,7 +94,7 @@ export default function scaleLocus() {
94
94
  }
95
95
 
96
96
  /**
97
- * @type {import("./scaleLocus").isScaleLocus}
97
+ * @type {import("./scaleLocus.js").isScaleLocus}
98
98
  */
99
99
  export function isScaleLocus(scale) {
100
100
  return scale.type == "locus";
@@ -1,20 +1,20 @@
1
1
  export default class GenomeSpy {
2
2
  /**
3
- * @typedef {import("./view/view").default} View
4
- * @typedef {import("./spec/view").ViewSpec} ViewSpec
5
- * @typedef {import("./spec/root").RootSpec} RootSpec
6
- * @typedef {import("./spec/root").RootConfig} RootConfig
3
+ * @typedef {import("./view/view.js").default} View
4
+ * @typedef {import("./spec/view.js").ViewSpec} ViewSpec
5
+ * @typedef {import("./spec/root.js").RootSpec} RootSpec
6
+ * @typedef {import("./spec/root.js").RootConfig} RootConfig
7
7
  */
8
8
  /**
9
9
  *
10
10
  * @param {HTMLElement} container
11
11
  * @param {RootSpec} spec
12
- * @param {import("./types/embedApi").EmbedOptions} [options]
12
+ * @param {import("./types/embedApi.js").EmbedOptions} [options]
13
13
  */
14
- constructor(container: HTMLElement, spec: import("./spec/root").RootSpec, options?: import("./types/embedApi").EmbedOptions);
14
+ constructor(container: HTMLElement, spec: import("./spec/root.js").RootSpec, options?: import("./types/embedApi.js").EmbedOptions);
15
15
  container: HTMLElement;
16
16
  /** Root level configuration object */
17
- spec: import("./spec/root").RootSpec;
17
+ spec: import("./spec/root.js").RootSpec;
18
18
  accessorFactory: AccessorFactory;
19
19
  viewFactory: ViewFactory;
20
20
  /** @type {(function(string):object[])[]} */
@@ -37,11 +37,11 @@ export default class GenomeSpy {
37
37
  _dirtyPickingBuffer: boolean;
38
38
  /**
39
39
  * Currently hovered mark and datum
40
- * @type {{ mark: import("./marks/mark").default, datum: import("./data/flowNode").Datum, uniqueId: number }}
40
+ * @type {{ mark: import("./marks/mark.js").default, datum: import("./data/flowNode.js").Datum, uniqueId: number }}
41
41
  */
42
42
  _currentHover: {
43
- mark: import("./marks/mark").default;
44
- datum: import("./data/flowNode").Datum;
43
+ mark: import("./marks/mark.js").default;
44
+ datum: import("./data/flowNode.js").Datum;
45
45
  uniqueId: number;
46
46
  };
47
47
  _wheelInertia: Inertia;
@@ -63,8 +63,8 @@ export default class GenomeSpy {
63
63
  * @type {Map<string, Set<(event: any) => void>>}
64
64
  */
65
65
  _extraBroadcastListeners: Map<string, Set<(event: any) => void>>;
66
- /** @type {Record<string, import("./tooltip/tooltipHandler").TooltipHandler>}> */
67
- tooltipHandlers: Record<string, import("./tooltip/tooltipHandler").TooltipHandler>;
66
+ /** @type {Record<string, import("./tooltip/tooltipHandler.js").TooltipHandler>}> */
67
+ tooltipHandlers: Record<string, import("./tooltip/tooltipHandler.js").TooltipHandler>;
68
68
  /** @type {View} */
69
69
  viewRoot: import("./view/view.js").default;
70
70
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"genomeSpy.d.ts","sourceRoot":"","sources":["../../src/genomeSpy.js"],"names":[],"mappings":"AA2CA;IACI;;;;;OAKG;IAEH;;;;;OAKG;IACH,uBAJW,WAAW,kDAEX,OAAO,kBAAkB,EAAE,YAAY,EA6EjD;IA1EG,uBAA0B;IAM1B,sCAAsC;IACtC,qCAAgB;IAEhB,iCAA4C;IAC5C,yBAAoC;IAEpC,4CAA4C;IAC5C,4BADqB,MAAM,KAAE,MAAM,EAAE,IACT;IAE5B,mBAAoD;IAEpD,0BAA0B;IAC1B,aADW,WAAW,CACM;IAE5B;;;;;OAKG;IACH,qEAF0B,OAAO,CAE8B;IAE/D,2CAA2C;IAC3C,mBADW,4BAA4B,CACL;IAClC,2CAA2C;IAC3C,iBADW,4BAA4B,CACP;IAEhC,oDAAoD;IACpD,6BAAgC;IAEhC;;;OAGG;IACH;cAFkB,OAAO,cAAc,EAAE,OAAO;eAAS,OAAO,iBAAiB,EAAE,KAAK;kBAAY,MAAM;MAE5E;IAE9B,uBAA+C;IAE/C;;;OAGG;IACH,wCAFgC,aAAa,KAAE,IAAI,KAEhB;IAEnC;;;;;;OAMG;IACH,yCAFkC,GAAG,KAAK,IAAI,GAEd;IAEhC;;;OAGG;IACH,kDAFkC,GAAG,KAAK,IAAI,GAEL;IAEzC,iFAAiF;IACjF,iBADW,OAAO,MAAM,EAAE,OAAO,0BAA0B,EAAE,cAAc,CAAC,CAK3E;IAED,mBAAmB;IACnB,2CAAyB;IAG7B;;;OAGG;IACH,2CAFkB,MAAM,KAAK,GAAG,EAAE,QAIjC;IAED;;OAEG;IACH,+BAFW,MAAM,YAShB;IAED;;;;OAIG;IACH,sBAHW,MAAM,QACN,GAAG,EAAE,QAaf;IAED;;;;;OAKG;IACH,gBAHW,kBAAkB,YAClB,GAAG,QAQb;IAED,0BA2BC;IAvBG,uBAOC;IAED,sCAA0D;IAK1D,iBAA0C;IAW9C;;OAEG;IACH,gBAiBC;IAED,sCAoLC;IAED;;;OAGG;IACH,UAFa,QAAQ,OAAO,CAAC,CAqC5B;IAED,4BA6IC;IAjIe,iCAAoC;IAmIpD;;;OAGG;IACH,kBAHW,MAAM,KACN,MAAM,QAiEhB;IAED;;;;;;;OAOG;IACH,oDAHuB,QAAQ,MAAM,GAAG,WAAW,GAAG,OAAO,KAAK,EAAE,cAAc,CAAC,QAYlF;IAED,sBAyCC;IAED,kBAIC;IAED,iCAOC;IAED,iCASC;IAED,qFAWC;CACJ;;;;iCA9tBY,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,gBAAgB;4BAjC7C,uBAAuB;4BA2BvB,uBAAuB;qBAZ9B,qBAAqB;wBAIlB,yBAAyB;yCARR,yDAAyD;oBAYvD,oBAAoB;wBAdvC,qBAAqB;oBAXzB,uBAAuB;qBAStB,oBAAoB"}
1
+ {"version":3,"file":"genomeSpy.d.ts","sourceRoot":"","sources":["../../src/genomeSpy.js"],"names":[],"mappings":"AAyCA;IACI;;;;;OAKG;IAEH;;;;;OAKG;IACH,uBAJW,WAAW,qDAEX,OAAO,qBAAqB,EAAE,YAAY,EA6EpD;IA1EG,uBAA0B;IAM1B,sCAAsC;IACtC,wCAAgB;IAEhB,iCAA4C;IAC5C,yBAAoC;IAEpC,4CAA4C;IAC5C,oBADW,QAAU,MAAM,KAAE,MAAM,EAAE,CAAC,EAAE,CACZ;IAE5B,mBAAoD;IAEpD,0BAA0B;IAC1B,aADW,WAAW,CACM;IAE5B;;;;;OAKG;IACH,qEAF0B,OAAO,CAE8B;IAE/D,2CAA2C;IAC3C,mBADW,4BAA4B,CACL;IAClC,2CAA2C;IAC3C,iBADW,4BAA4B,CACP;IAEhC,oDAAoD;IACpD,6BAAgC;IAEhC;;;OAGG;IACH,eAFU;QAAE,IAAI,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,oBAAoB,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAEpF;IAE9B,uBAA+C;IAE/C;;;OAGG;IACH,oBAFU,IAAI,MAAM,EAAE,QAAU,aAAa,KAAE,IAAI,CAAC,EAAE,CAAC,CAEpB;IAEnC;;;;;;OAMG;IACH,yCAFkC,GAAG,KAAK,IAAI,GAEd;IAEhC;;;OAGG;IACH,kDAFkC,GAAG,KAAK,IAAI,GAEL;IAEzC,oFAAoF;IACpF,iBADW,OAAO,MAAM,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC,CAK9E;IAED,mBAAmB;IACnB,2CAAyB;IAG7B;;;OAGG;IACH,2CAFkB,MAAM,KAAK,GAAG,EAAE,QAIjC;IAED;;OAEG;IACH,+BAFW,MAAM,YAShB;IAED;;;;OAIG;IACH,sBAHW,MAAM,QACN,GAAG,EAAE,QAaf;IAED;;;;;OAKG;IACH,gBAHW,kBAAkB,YAClB,GAAG,QAQb;IAED,0BA2BC;IAvBG,uBAOC;IAED,sCAA0D;IAK1D,iBAA0C;IAW9C;;OAEG;IACH,gBAiBC;IAED,sCAuMC;IAED;;;OAGG;IACH,UAFa,QAAQ,OAAO,CAAC,CAqC5B;IAED,4BA6IC;IAjIe,iCAAoC;IAmIpD;;;OAGG;IACH,kBAHW,MAAM,KACN,MAAM,QAiEhB;IAED;;;;;;;OAOG;IACH,oDAHuB,QAAQ,MAAM,GAAG,WAAW,GAAG,OAAO,KAAK,EAAE,cAAc,CAAC,QAYlF;IAED,sBAyCC;IAED,kBAIC;IAED,iCAOC;IAED,iCASC;IAED,qFAWC;CACJ;;;;iCAjvBY,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,gBAAgB;4BA/B7C,uBAAuB;4BA0BP,uBAAuB;qBAZ9C,qBAAqB;wBAIlB,yBAAyB;yCARR,yDAAyD;oBAYvD,oBAAoB;wBAdvC,qBAAqB;oBAVzB,uBAAuB;qBAQtB,oBAAoB"}
@@ -5,19 +5,18 @@ import Tooltip from "./utils/ui/tooltip.js";
5
5
 
6
6
  import AccessorFactory from "./encoder/accessor.js";
7
7
  import {
8
- resolveScalesAndAxes,
9
- processImports,
8
+ checkForDuplicateScaleNames,
10
9
  setImplicitScaleNames,
11
10
  calculateCanvasSize,
12
11
  } from "./view/viewUtils.js";
13
12
  import UnitView from "./view/unitView.js";
14
13
 
15
14
  import WebGLHelper from "./gl/webGLHelper.js";
16
- import Rectangle from "./utils/layout/rectangle.js";
15
+ import Rectangle from "./view/layout/rectangle.js";
17
16
  import BufferedViewRenderingContext from "./view/renderingContext/bufferedViewRenderingContext.js";
18
17
  import CompositeViewRenderingContext from "./view/renderingContext/compositeViewRenderingContext.js";
19
18
  import InteractionEvent from "./utils/interactionEvent.js";
20
- import Point from "./utils/layout/point.js";
19
+ import Point from "./view/layout/point.js";
21
20
  import Animator from "./utils/animator.js";
22
21
  import DataFlow from "./data/dataFlow.js";
23
22
  import { buildDataFlow } from "./view/flowBuilder.js";
@@ -30,8 +29,7 @@ import Inertia, { makeEventTemplate } from "./utils/inertia.js";
30
29
  import refseqGeneTooltipHandler from "./tooltip/refseqGeneTooltipHandler.js";
31
30
  import dataTooltipHandler from "./tooltip/dataTooltipHandler.js";
32
31
  import { invalidatePrefix } from "./utils/propertyCacher.js";
33
- import { ViewFactory } from "./view/viewFactory.js";
34
- import ImplicitRootView from "./view/implicitRootView.js";
32
+ import { VIEW_ROOT_NAME, ViewFactory } from "./view/viewFactory.js";
35
33
  import { reconfigureScales } from "./view/scaleResolution.js";
36
34
 
37
35
  /**
@@ -43,17 +41,17 @@ vegaFormats("fasta", fasta);
43
41
 
44
42
  export default class GenomeSpy {
45
43
  /**
46
- * @typedef {import("./view/view").default} View
47
- * @typedef {import("./spec/view").ViewSpec} ViewSpec
48
- * @typedef {import("./spec/root").RootSpec} RootSpec
49
- * @typedef {import("./spec/root").RootConfig} RootConfig
44
+ * @typedef {import("./view/view.js").default} View
45
+ * @typedef {import("./spec/view.js").ViewSpec} ViewSpec
46
+ * @typedef {import("./spec/root.js").RootSpec} RootSpec
47
+ * @typedef {import("./spec/root.js").RootConfig} RootConfig
50
48
  */
51
49
 
52
50
  /**
53
51
  *
54
52
  * @param {HTMLElement} container
55
53
  * @param {RootSpec} spec
56
- * @param {import("./types/embedApi").EmbedOptions} [options]
54
+ * @param {import("./types/embedApi.js").EmbedOptions} [options]
57
55
  */
58
56
  constructor(container, spec, options = {}) {
59
57
  this.container = container;
@@ -94,7 +92,7 @@ export default class GenomeSpy {
94
92
 
95
93
  /**
96
94
  * Currently hovered mark and datum
97
- * @type {{ mark: import("./marks/mark").default, datum: import("./data/flowNode").Datum, uniqueId: number }}
95
+ * @type {{ mark: import("./marks/mark.js").default, datum: import("./data/flowNode.js").Datum, uniqueId: number }}
98
96
  */
99
97
  this._currentHover = undefined;
100
98
 
@@ -121,7 +119,7 @@ export default class GenomeSpy {
121
119
  */
122
120
  this._extraBroadcastListeners = new Map();
123
121
 
124
- /** @type {Record<string, import("./tooltip/tooltipHandler").TooltipHandler>}> */
122
+ /** @type {Record<string, import("./tooltip/tooltipHandler.js").TooltipHandler>}> */
125
123
  this.tooltipHandlers = {
126
124
  default: dataTooltipHandler,
127
125
  refseqgene: refseqGeneTooltipHandler,
@@ -244,7 +242,7 @@ export default class GenomeSpy {
244
242
  // eslint-disable-next-line consistent-this
245
243
  const self = this;
246
244
 
247
- /** @type {import("./types/viewContext").default} */
245
+ /** @type {import("./types/viewContext.js").default} */
248
246
  const context = {
249
247
  dataFlow: new DataFlow(),
250
248
  accessorFactory: this.accessorFactory,
@@ -299,6 +297,9 @@ export default class GenomeSpy {
299
297
 
300
298
  isViewSpec: (spec) => self.viewFactory.isViewSpec(spec),
301
299
 
300
+ /**
301
+ * @deprecated: TODO: Kill this
302
+ */
302
303
  createView: function (spec, layoutParent, dataParent, defaultName) {
303
304
  return self.viewFactory.createView(
304
305
  spec,
@@ -308,6 +309,23 @@ export default class GenomeSpy {
308
309
  defaultName
309
310
  );
310
311
  },
312
+
313
+ createOrImportView: async function (
314
+ spec,
315
+ layoutParent,
316
+ dataParent,
317
+ defaultName,
318
+ validator
319
+ ) {
320
+ return self.viewFactory.createOrImportView(
321
+ spec,
322
+ context,
323
+ layoutParent,
324
+ dataParent,
325
+ defaultName,
326
+ validator
327
+ );
328
+ },
311
329
  };
312
330
 
313
331
  /** @type {ViewSpec & RootConfig} */
@@ -317,35 +335,34 @@ export default class GenomeSpy {
317
335
  this.registerNamedDataProvider((name) => rootSpec.datasets[name]);
318
336
  }
319
337
 
320
- // Create the view hierarchy
321
- this.viewRoot = context.createView(rootSpec, null, null, "viewRoot");
322
-
323
- // Replace placeholder ImportViews with actual views.
324
- await processImports(this.viewRoot);
338
+ // Create the view hierarchy.
339
+ // This also resolves scales and axes.
340
+ this.viewRoot = await context.createOrImportView(
341
+ rootSpec,
342
+ null,
343
+ null,
344
+ VIEW_ROOT_NAME
345
+ );
325
346
 
326
- if (this.viewRoot.needsAxes.x || this.viewRoot.needsAxes.y) {
327
- this.viewRoot = new ImplicitRootView(context, this.viewRoot);
328
- }
347
+ checkForDuplicateScaleNames(this.viewRoot);
329
348
 
330
- // Resolve scales, i.e., if possible, pull them towards the root
331
- resolveScalesAndAxes(this.viewRoot);
332
349
  setImplicitScaleNames(this.viewRoot);
333
350
 
334
- // Wrap unit or layer views that need axes
335
- //this.viewRoot = addDecorators(this.viewRoot);
351
+ const views = this.viewRoot.getDescendants();
352
+
353
+ // View opacity should be configured after all scales have been resolved.
354
+ // Currently this doesn't work if new views are added dynamically.
355
+ // TODO: Figure out how to handle dynamic view addition/removal nicely.
356
+ views.forEach((view) => view.configureViewOpacity());
336
357
 
337
358
  // We should now have a complete view hierarchy. Let's update the canvas size
338
359
  // and ensure that the loading message is visible.
339
360
  this._glHelper.invalidateSize();
340
361
 
341
362
  // Collect all unit views to a list because they need plenty of initialization
342
- /** @type {UnitView[]} */
343
- const unitViews = [];
344
- this.viewRoot.visit((view) => {
345
- if (view instanceof UnitView) {
346
- unitViews.push(view);
347
- }
348
- });
363
+ const unitViews = /** @type {UnitView[]} */ (
364
+ views.filter((view) => view instanceof UnitView)
365
+ );
349
366
 
350
367
  // Build the data flow based on the view hierarchy
351
368
  const flow = buildDataFlow(this.viewRoot, context.dataFlow);
@@ -759,7 +776,7 @@ export default class GenomeSpy {
759
776
  }
760
777
 
761
778
  getNamedScaleResolutions() {
762
- /** @type {Map<string, import("./view/scaleResolution").default>} */
779
+ /** @type {Map<string, import("./view/scaleResolution.js").default>} */
763
780
  const resolutions = new Map();
764
781
  this.viewRoot.visit((view) => {
765
782
  for (const resolution of Object.values(view.resolutions.scale)) {
@@ -1 +1 @@
1
- {"version":3,"file":"arrayBuilder.d.ts","sourceRoot":"","sources":["../../../src/gl/arrayBuilder.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH;IAGI;;;OAGG;IACH,kBAFW,MAAM,EAehB;IAZG,aAAgB;IAEhB,wGAAwG;IACxG;YADmB,MAAM,GAAE;YAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAC;MACnF;IAEhB,kCAAkC;IAClC,gBADuB,IAAI,IACV;IAEjB,qCAAqC;IACrC,sBADqB,GAAG,KAAE,IAAI,IACR;IAEtB,oBAAoB;IAGxB;;;;OAIG;IACH,wBAHW,MAAM,YACN,iBAAiB,QAc3B;IAED;;;;;;OAMG;IACH,6BALW,MAAM,iBACN,MAAM,mBACN,MAAM,EAAE,UACE,MAAM,GAAC,MAAM,EAAE,SA8EnC;IAED,uBAsBC;IAED,gBAiBC;IAED;;;OAGG;IACH,uBAFW,MAAM,QAMhB;IAED;;;OAGG;IACH,qBAFW,MAAM,QAKhB;CACJ;;;;;;;;;cA/LkB,MAAM,KAAE,GAAG;;;;qBACpB,MAAM,EAAE;oBACR,MAAM"}
1
+ {"version":3,"file":"arrayBuilder.d.ts","sourceRoot":"","sources":["../../../src/gl/arrayBuilder.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH;IAGI;;;OAGG;IACH,kBAFW,MAAM,EAehB;IAZG,aAAgB;IAEhB,wGAAwG;IACxG;YADmB,MAAM,GAAE;YAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAC;MACnF;IAEhB,kCAAkC;IAClC,SADW,OAAY,IAAI,CAAC,EAAE,CACb;IAEjB,qCAAqC;IACrC,cADW,QAAU,GAAG,KAAE,IAAI,CAAC,EAAE,CACX;IAEtB,oBAAoB;IAGxB;;;;OAIG;IACH,wBAHW,MAAM,YACN,iBAAiB,QAc3B;IAED;;;;;;OAMG;IACH,6BALW,MAAM,iBACN,MAAM,mBACN,MAAM,EAAE,UACE,MAAM,GAAC,MAAM,EAAE,SA8EnC;IAED,uBAsBC;IAED,gBAiBC;IAED;;;OAGG;IACH,uBAFW,MAAM,QAMhB;IAED;;;OAGG;IACH,qBAFW,MAAM,QAKhB;CACJ;;;;;;;;;cA/LkB,MAAM,KAAE,GAAG;;;;qBACpB,MAAM,EAAE;oBACR,MAAM"}
@@ -2,12 +2,12 @@
2
2
  * @typedef {object} RangeEntry Represents a location of a vertex subset
3
3
  * @prop {number} offset in vertices
4
4
  * @prop {number} count in vertices
5
- * @prop {import("../utils/binnedIndex").Lookup} xIndex
5
+ * @prop {import("../utils/binnedIndex.js").Lookup} xIndex
6
6
  */
7
7
  export class GeometryBuilder {
8
8
  /**
9
- * @typedef {import("./arrayBuilder").ConverterMetadata} Converter
10
- * @typedef {import("../types/encoder").Encoder} Encoder
9
+ * @typedef {import("./arrayBuilder.js").ConverterMetadata} Converter
10
+ * @typedef {import("../types/encoder.js").Encoder} Encoder
11
11
  */
12
12
  /**
13
13
  * @param {object} object
@@ -17,13 +17,13 @@ export class GeometryBuilder {
17
17
  * preallocated TypedArray is used
18
18
  */
19
19
  constructor({ encoders, numVertices, attributes }: {
20
- encoders: Record<string, import("../types/encoder").Encoder>;
20
+ encoders: Record<string, import("../types/encoder.js").Encoder>;
21
21
  attributes?: string[];
22
22
  numVertices?: number;
23
23
  });
24
- encoders: Record<string, import("../types/encoder").Encoder>;
24
+ encoders: Record<string, import("../types/encoder.js").Encoder>;
25
25
  variableEncoders: {
26
- [k: string]: import("../types/encoder").Encoder;
26
+ [k: string]: import("../types/encoder.js").Encoder;
27
27
  };
28
28
  allocatedVertices: number;
29
29
  variableBuilder: ArrayBuilder;
@@ -46,18 +46,18 @@ export class GeometryBuilder {
46
46
  */
47
47
  addBatch(key: any, data: object[], lo?: number, hi?: number): void;
48
48
  /**
49
- * @param {import("../data/flowNode").Data} data Domain, but specified using datums
49
+ * @param {import("../data/flowNode.js").Data} data Domain, but specified using datums
50
50
  * @param {number} [lo]
51
51
  * @param {number} [hi]
52
52
  */
53
- prepareXIndexer(data: import("../data/flowNode").Data, lo?: number, hi?: number): void;
53
+ prepareXIndexer(data: import("../data/flowNode.js").Data, lo?: number, hi?: number): void;
54
54
  /**
55
55
  * Add the datum to an index, which allows for efficient rendering of ranges
56
56
  * on the x axis. Must be called after a datum has been pushed to the ArrayBuilder.
57
57
  *
58
- * @param {import("../data/flowNode").Datum} datum
58
+ * @param {import("../data/flowNode.js").Datum} datum
59
59
  */
60
- addToXIndex(datum: import("../data/flowNode").Datum): void;
60
+ addToXIndex(datum: import("../data/flowNode.js").Datum): void;
61
61
  xIndexer: {
62
62
  (datum: any, startVertexIndex: number, endVertexIndex: number): void;
63
63
  getIndex: () => import("../utils/binnedIndex.js").Lookup;
@@ -88,7 +88,7 @@ export class RectVertexBuilder extends GeometryBuilder {
88
88
  * @param {number} [object.numItems] Number of data items
89
89
  */
90
90
  constructor({ encoders, attributes, tessellationThreshold, visibleRange, numItems, }: {
91
- encoders: Record<string, import("../types/encoder").Encoder>;
91
+ encoders: Record<string, import("../types/encoder.js").Encoder>;
92
92
  attributes: string[];
93
93
  tessellationThreshold?: number;
94
94
  visibleRange?: number[];
@@ -110,7 +110,7 @@ export class RuleVertexBuilder extends GeometryBuilder {
110
110
  * @param {number} [object.numItems] Number of data items
111
111
  */
112
112
  constructor({ encoders, attributes, tessellationThreshold, visibleRange, numItems, }: {
113
- encoders: Record<string, import("../types/encoder").Encoder>;
113
+ encoders: Record<string, import("../types/encoder.js").Encoder>;
114
114
  attributes: string[];
115
115
  tessellationThreshold?: number;
116
116
  visibleRange?: number[];
@@ -130,12 +130,12 @@ export class PointVertexBuilder extends GeometryBuilder {
130
130
  * @param {number} [object.numItems] Number of points if known, uses TypedArray
131
131
  */
132
132
  constructor({ encoders, attributes, numItems }: {
133
- encoders: Record<string, import("../types/encoder").Encoder>;
133
+ encoders: Record<string, import("../types/encoder.js").Encoder>;
134
134
  attributes: string[];
135
135
  numItems?: number;
136
136
  });
137
137
  }
138
- export class ConnectionVertexBuilder extends GeometryBuilder {
138
+ export class LinkVertexBuilder extends GeometryBuilder {
139
139
  /**
140
140
  * @param {object} object
141
141
  * @param {Record<string, Encoder>} object.encoders
@@ -143,7 +143,7 @@ export class ConnectionVertexBuilder extends GeometryBuilder {
143
143
  * @param {number} [object.numItems ] Number of points if known, uses TypedArray
144
144
  */
145
145
  constructor({ encoders, attributes, numItems }: {
146
- encoders: Record<string, import("../types/encoder").Encoder>;
146
+ encoders: Record<string, import("../types/encoder.js").Encoder>;
147
147
  attributes: string[];
148
148
  numItems?: number;
149
149
  });
@@ -154,15 +154,15 @@ export class TextVertexBuilder extends GeometryBuilder {
154
154
  * @param {object} object
155
155
  * @param {Record<string, Encoder>} object.encoders
156
156
  * @param {string[]} object.attributes
157
- * @param {import("../fonts/bmFontMetrics").BMFontMetrics} object.fontMetrics
157
+ * @param {import("../fonts/bmFontMetrics.js").BMFontMetrics} object.fontMetrics
158
158
  * @param {Record<string, any>} object.properties
159
159
  * @param {number} [object.numCharacters] number of characters
160
160
  * @param {boolean} [object.logoLetters]
161
161
  */
162
162
  constructor({ encoders, attributes, fontMetrics, properties, numCharacters, }: {
163
- encoders: Record<string, import("../types/encoder").Encoder>;
163
+ encoders: Record<string, import("../types/encoder.js").Encoder>;
164
164
  attributes: string[];
165
- fontMetrics: import("../fonts/bmFontMetrics").BMFontMetrics;
165
+ fontMetrics: import("../fonts/bmFontMetrics.js").BMFontMetrics;
166
166
  properties: Record<string, any>;
167
167
  numCharacters?: number;
168
168
  logoLetters?: boolean;
@@ -188,7 +188,7 @@ export type RangeEntry = {
188
188
  * in vertices
189
189
  */
190
190
  count: number;
191
- xIndex: import("../utils/binnedIndex").Lookup;
191
+ xIndex: import("../utils/binnedIndex.js").Lookup;
192
192
  };
193
193
  import ArrayBuilder from "./arrayBuilder.js";
194
194
  //# sourceMappingURL=dataToVertices.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataToVertices.d.ts","sourceRoot":"","sources":["../../../src/gl/dataToVertices.js"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH;IACI;;;OAGG;IAEH;;;;;;OAMG;IACH;;qBAJW,MAAM,EAAE;sBACR,MAAM;OAqDhB;IAjDG,6DAAwB;IAGxB;;MAKC;IAED,0BAAoC;IAEpC,8BAAoD;IAiCpD,mBAAmB;IAEnB,yFAAyF;IACzF,UADW,IAAI,GAAG,EAAE,UAAU,CAAC,CACkB;IAGrD;;;;OAIG;IACH,mBAFW,GAAG,QAcb;IAED;;OAEG;IACH,oBAFW,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,QAM5B;IAED;;;OAGG;IACH,cAHW,GAAG,QACH,MAAM,EAAE,kCAYlB;IAED;;;;OAIG;IACH,sBAJW,OAAO,kBAAkB,EAAE,IAAI,OAC/B,MAAM,OACN,MAAM,QAyDhB;IAED;;;;;OAKG;IACH,mBAFW,OAAO,kBAAkB,EAAE,KAAK,QAI1C;IAzDO;;;MAAyB;IA2DjC;QAEQ,uGAAuG;;kBAAtE,MAAM,EAAE,GAAG,YAAY;2BAAiB,MAAM;sBAAY,MAAM;;QAEjG,8BAA8B;;QAE9B,8CAA8C;;;MAIrD;CACJ;AAED;IACI;;;;;;;;;OASG;IACH;;oBANW,MAAM,EAAE;gCACR,MAAM;uBAEN,MAAM,EAAE;mBACR,MAAM;OAqBhB;IALG,uBAAgC;IAEhC,8BAA8D;IAE9D,6CAA+D;CAiFtE;AAED;IACI;;;;;;;;;OASG;IACH;;oBANW,MAAM,EAAE;gCACR,MAAM;uBAEN,MAAM,EAAE;mBACR,MAAM;OAsBhB;IANG,uBAAgC;IAEhC,8BAA8D;IAE9D,6CAA+D;IAC/D,4CAA6D;CA2CpE;AAED;IACI;;;;;;OAMG;IACH;;oBAHW,MAAM,EAAE;mBACR,MAAM;OAQhB;CACJ;AAED;IACI;;;;;OAKG;IACH;;oBAHW,MAAM,EAAE;mBACR,MAAM;OAQhB;CAYJ;AAED;IACI;;;;;;;;;OASG;IACH;;oBANW,MAAM,EAAE;qBACR,OAAO,wBAAwB,EAAE,aAAa;oBAC9C,OAAO,MAAM,EAAE,GAAG,CAAC;wBACnB,MAAM;sBACN,OAAO;OA4CjB;IA7BG,4DAA2B;IAC3B,2DAA0B;IAE1B,gCAA4B;IAQ5B,qCAAqC;IACrC,sBADmB,GAAG,KAAK,MAAM,CAMf;IAElB,oDAGC;IACD,qDAGC;IAED,8CAAiE;CA8IxE;;;;;;;;YA/mBS,MAAM;;;;WACN,MAAM;YACN,OAAO,sBAAsB,EAAE,MAAM;;yBAdtB,mBAAmB"}
1
+ {"version":3,"file":"dataToVertices.d.ts","sourceRoot":"","sources":["../../../src/gl/dataToVertices.js"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH;IACI;;;OAGG;IAEH;;;;;;OAMG;IACH;;qBAJW,MAAM,EAAE;sBACR,MAAM;OAqDhB;IAjDG,gEAAwB;IAGxB;;MAKC;IAED,0BAAoC;IAEpC,8BAAoD;IAiCpD,mBAAmB;IAEnB,yFAAyF;IACzF,UADW,IAAI,GAAG,EAAE,UAAU,CAAC,CACkB;IAGrD;;;;OAIG;IACH,mBAFW,GAAG,QAcb;IAED;;OAEG;IACH,oBAFW,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,QAM5B;IAED;;;OAGG;IACH,cAHW,GAAG,QACH,MAAM,EAAE,kCAYlB;IAED;;;;OAIG;IACH,sBAJW,OAAO,qBAAqB,EAAE,IAAI,OAClC,MAAM,OACN,MAAM,QAyDhB;IAED;;;;;OAKG;IACH,mBAFW,OAAO,qBAAqB,EAAE,KAAK,QAI7C;IAzDO;;;MAAyB;IA2DjC;QAEQ,uGAAuG;gBAA5F,OAAO,MAAM,EAAE;YAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAC,CAAC;QAEnG,8BAA8B;;QAE9B,8CAA8C;;;MAIrD;CACJ;AAED;IACI;;;;;;;;;OASG;IACH;;oBANW,MAAM,EAAE;gCACR,MAAM;uBAEN,MAAM,EAAE;mBACR,MAAM;OAqBhB;IALG,uBAAgC;IAEhC,8BAA8D;IAE9D,6CAA+D;CAiFtE;AAED;IACI;;;;;;;;;OASG;IACH;;oBANW,MAAM,EAAE;gCACR,MAAM;uBAEN,MAAM,EAAE;mBACR,MAAM;OAsBhB;IANG,uBAAgC;IAEhC,8BAA8D;IAE9D,6CAA+D;IAC/D,4CAA6D;CA2CpE;AAED;IACI;;;;;;OAMG;IACH;;oBAHW,MAAM,EAAE;mBACR,MAAM;OAQhB;CACJ;AAED;IACI;;;;;OAKG;IACH;;oBAHW,MAAM,EAAE;mBACR,MAAM;OAQhB;CAYJ;AAED;IACI;;;;;;;;;OASG;IACH;;oBANW,MAAM,EAAE;qBACR,OAAO,2BAA2B,EAAE,aAAa;oBACjD,OAAO,MAAM,EAAE,GAAG,CAAC;wBACnB,MAAM;sBACN,OAAO;OA4CjB;IA7BG,4DAA2B;IAC3B,2DAA0B;IAE1B,gCAA4B;IAQ5B,qCAAqC;IACrC,sBADmB,GAAG,KAAK,MAAM,CAMf;IAElB,oDAGC;IACD,qDAGC;IAED,8CAAiE;CA8IxE;;;;;;;;YA/mBS,MAAM;;;;WACN,MAAM;YACN,OAAO,yBAAyB,EAAE,MAAM;;yBAdzB,mBAAmB"}
@@ -15,12 +15,12 @@ import { isContinuous } from "vega-scale";
15
15
  * @typedef {object} RangeEntry Represents a location of a vertex subset
16
16
  * @prop {number} offset in vertices
17
17
  * @prop {number} count in vertices
18
- * @prop {import("../utils/binnedIndex").Lookup} xIndex
18
+ * @prop {import("../utils/binnedIndex.js").Lookup} xIndex
19
19
  */
20
20
  export class GeometryBuilder {
21
21
  /**
22
- * @typedef {import("./arrayBuilder").ConverterMetadata} Converter
23
- * @typedef {import("../types/encoder").Encoder} Encoder
22
+ * @typedef {import("./arrayBuilder.js").ConverterMetadata} Converter
23
+ * @typedef {import("../types/encoder.js").Encoder} Encoder
24
24
  */
25
25
 
26
26
  /**
@@ -127,14 +127,14 @@ export class GeometryBuilder {
127
127
  }
128
128
 
129
129
  /**
130
- * @param {import("../data/flowNode").Data} data Domain, but specified using datums
130
+ * @param {import("../data/flowNode.js").Data} data Domain, but specified using datums
131
131
  * @param {number} [lo]
132
132
  * @param {number} [hi]
133
133
  */
134
134
  prepareXIndexer(data, lo = 0, hi = lo + data.length) {
135
135
  const disable = () => {
136
136
  /**
137
- * @param {import("../data/flowNode").Datum} datum
137
+ * @param {import("../data/flowNode.js").Datum} datum
138
138
  */
139
139
  this.addToXIndex = (datum) => {
140
140
  // nop
@@ -192,7 +192,7 @@ export class GeometryBuilder {
192
192
  * Add the datum to an index, which allows for efficient rendering of ranges
193
193
  * on the x axis. Must be called after a datum has been pushed to the ArrayBuilder.
194
194
  *
195
- * @param {import("../data/flowNode").Datum} datum
195
+ * @param {import("../data/flowNode.js").Datum} datum
196
196
  */
197
197
  addToXIndex(datum) {
198
198
  //
@@ -254,13 +254,13 @@ export class RectVertexBuilder extends GeometryBuilder {
254
254
  }
255
255
 
256
256
  const e =
257
- /** @type {Object.<string, import("../types/encoder").NumberEncoder>} */ (
257
+ /** @type {Object.<string, import("../types/encoder.js").NumberEncoder>} */ (
258
258
  this.encoders
259
259
  );
260
260
  const [lower, upper] = this.visibleRange;
261
261
 
262
262
  /**
263
- * @param {import("../types/encoder").Encoder} encoder
263
+ * @param {import("../types/encoder.js").Encoder} encoder
264
264
  */
265
265
  const a = (encoder) => encoder.accessor || ((x) => 0);
266
266
 
@@ -415,7 +415,7 @@ export class PointVertexBuilder extends GeometryBuilder {
415
415
  }
416
416
  }
417
417
 
418
- export class ConnectionVertexBuilder extends GeometryBuilder {
418
+ export class LinkVertexBuilder extends GeometryBuilder {
419
419
  /**
420
420
  * @param {object} object
421
421
  * @param {Record<string, Encoder>} object.encoders
@@ -448,7 +448,7 @@ export class TextVertexBuilder extends GeometryBuilder {
448
448
  * @param {object} object
449
449
  * @param {Record<string, Encoder>} object.encoders
450
450
  * @param {string[]} object.attributes
451
- * @param {import("../fonts/bmFontMetrics").BMFontMetrics} object.fontMetrics
451
+ * @param {import("../fonts/bmFontMetrics.js").BMFontMetrics} object.fontMetrics
452
452
  * @param {Record<string, any>} object.properties
453
453
  * @param {number} [object.numCharacters] number of characters
454
454
  * @param {boolean} [object.logoLetters]
@@ -474,7 +474,7 @@ export class TextVertexBuilder extends GeometryBuilder {
474
474
  const e = encoders;
475
475
 
476
476
  const channelDef =
477
- /** @type {import("../spec/channel").TextDef<string>} */ (
477
+ /** @type {import("../spec/channel.js").TextDef<string>} */ (
478
478
  e.text.channelDef
479
479
  );
480
480
  /** @type {(value: any) => string} */
@@ -1,2 +1,2 @@
1
- const shader = "uniform float uSagittaScaleFactor;uniform float uMinSagittaLength;in vec2 strip;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 a=vec2(getScaled_x(),getScaled_y())*uViewportSize;vec2 b=vec2(getScaled_x2(),getScaled_y2())*uViewportSize;vec2 chordVector=b-a;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float sagitta=max(length(chordVector)/2.0*uSagittaScaleFactor,uMinSagittaLength);bool compress=false;if(compress){float maxSagittaLen=length(chordNormal*uViewportSize);float maxChordLen=length(unitChordVector*uViewportSize);float threshold=maxSagittaLen*0.5;if(sagitta>threshold){float m=(maxSagittaLen-threshold)/(maxChordLen-threshold);sagitta=(sagitta-threshold)*m+threshold;}}vec2 controlOffset=chordNormal*sagitta/0.75;vec2 p1=a;vec2 p2=a+controlOffset;vec2 p3=b+controlOffset;vec2 p4=b;float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);\n#ifdef size2_DEFINED\nfloat mixedSize=mix(getScaled_size(),getScaled_size2(),t);\n#else\nfloat mixedSize=getScaled_size();\n#endif\nif(mixedSize<pixelSize){opacity*=mixedSize/pixelSize;mixedSize=pixelSize;}float paddedSize=mixedSize+pixelSize;vNormalLengthInPixels=strip.y*paddedSize;p+=normal*vNormalLengthInPixels;gl_Position=pixelsToNdc(p);\n#ifdef color2_DEFINED\nvec3 color=mix(getScaled_color(),getScaled_color2(),t);\n#else\nvec3 color=getScaled_color();\n#endif\nvColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}";
1
+ const shader = "uniform float uArcHeightFactor;uniform float uMinArcHeight;uniform float uMinPickingSize;uniform int uShape;uniform int uOrient;uniform bool uClampApex;in vec2 strip;out vec4 vColor;out float vSize;out float vNormalLengthInPixels;const int SHAPE_ARC=0;const int SHAPE_DOME=1;const int SHAPE_DIAGONAL=2;const int SHAPE_LINE=3;const int ORIENT_VERTICAL=0;const int ORIENT_HORIZONTAL=1;void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 p1,p2,p3,p4;vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()))*uViewportSize;vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()))*uViewportSize;if(uShape<=SHAPE_DOME){if(uShape==SHAPE_DOME){vec2 height=vec2(0.0);if(uOrient==ORIENT_VERTICAL){p1=vec2(min(a.x,b.x),b.y);p4=vec2(max(a.x,b.x),b.y);height=vec2(0.0,a.y-b.y);if(uClampApex){if(p4.x>0.0){p1.x=max(p1.x,-p4.x);}if(p1.x<uViewportSize.x){p4.x=min(p4.x,2.0*uViewportSize.x-p1.x);}}}else{p1=vec2(b.x,min(a.y,b.y));p4=vec2(b.x,max(a.y,b.y));height=vec2(a.x-b.x,0.0);if(uClampApex){if(p4.y>0.0){p1.y=max(p1.y,-p4.y);}if(p1.y<uViewportSize.y){p4.y=min(p4.y,2.0*uViewportSize.y-p1.y);}}}vec2 controlOffset=height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}if(uShape==SHAPE_ARC){p1=a;p4=b;vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float height=max(length(chordVector)/2.0*uArcHeightFactor,uMinArcHeight);vec2 controlOffset=chordNormal*height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}}else if(uShape==SHAPE_DIAGONAL){if(uOrient==ORIENT_VERTICAL){p1=a;p2=vec2(a.x,(a.y+b.y)/2.0);p3=vec2(b.x,(a.y+b.y)/2.0);p4=b;}else{p1=a;p2=vec2((a.x+b.x)/2.0,a.y);p3=vec2((a.x+b.x)/2.0,b.y);p4=b;}}else if(uShape==SHAPE_LINE){p1=a;p2=(a+b)/2.0;p3=p2;p4=b;}float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);float size=getScaled_size();if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}float paddedSize=uPickingEnabled? max(size,uMinPickingSize): size+pixelSize;vNormalLengthInPixels=strip.y*paddedSize;p+=normal*vNormalLengthInPixels;gl_Position=pixelsToNdc(p);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vSize=paddedSize;setupPicking();}";
2
2
  export default shader;
@@ -1,2 +1,2 @@
1
- const shader = "const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);uniform bool uInwardStroke;uniform float uGradientStrength;in float vRadius;in float vRadiusWithPadding;in lowp vec4 vFillColor;in lowp vec4 vStrokeColor;in lowp float vShape;in lowp float vHalfStrokeWidth;in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float TRIANGLE_UP=2.0;const float CROSS=3.0;const float DIAMOND=4.0;const float TRIANGLE_DOWN=5.0;const float TRIANGLE_RIGHT=6.0;const float TRIANGLE_LEFT=7.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float equilateralTriangle(vec2 p,float r,bool flip,bool swap){if(swap){p.xy=p.yx;}if(flip){p.y=-p.y;}float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r,true,false);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_DOWN){d=equilateralTriangle(p,r,false,false);}else if(vShape==TRIANGLE_RIGHT){d=equilateralTriangle(p,r,false,true);}else if(vShape==TRIANGLE_LEFT){d=equilateralTriangle(p,r,true,true);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}";
1
+ const shader = "const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);uniform bool uInwardStroke;uniform float uGradientStrength;in float vRadius;in float vRadiusWithPadding;in lowp vec4 vFillColor;in lowp vec4 vStrokeColor;in lowp float vShape;in lowp float vHalfStrokeWidth;in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TICK_UP=8.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float tickUp(vec2 p,float r){float halfR=r*0.5;p.y+=halfR;p=abs(p);return max(p.x-r*0.15,p.y-halfR);}float equilateralTriangle(vec2 p,float r){p.y=-p.y;float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r);}else if(vShape==TICK_UP){d=tickUp(p,r);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}";
2
2
  export default shader;
@@ -1,2 +1,2 @@
1
- const shader = "/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform lowp float uMaxRelativePointDiameter;uniform float uScaleFactor;uniform float uMaxPointSize;uniform float uZoomLevel;uniform float uSemanticThreshold;out float vRadius;out float vRadiusWithPadding;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out lowp float vShape;out lowp float vHalfStrokeWidth;out mat2 vRotationMatrix;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}/***Computes a scaling factor for the points in a sample-faceted view.*/float getDownscaleFactor(vec2 pos){if(!isFacetedSamples()){return 1.0;}float sampleFacetHeight=getSampleFacetHeight(pos);float maxPointDiameter=sqrt(uMaxPointSize);float factor=sampleFacetHeight*uViewportSize.y*uMaxRelativePointDiameter;return clamp(0.0,maxPointDiameter,factor)/maxPointDiameter;}vec2 getDxDy(){\n#if defined(dx_DEFINED) || defined(dy_DEFINED)\nreturn vec2(getScaled_dx(),getScaled_dy())/uViewportSize;\n#else\nreturn vec2(0.0,0.0);\n#endif\n}void main(void){float semanticThresholdFactor=computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor*getDownscaleFactor(pos);float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=(diameter+padding)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}";
1
+ const shader = "/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform lowp float uMaxRelativePointDiameter;uniform float uScaleFactor;uniform float uMaxPointSize;uniform float uZoomLevel;uniform float uSemanticThreshold;out float vRadius;out float vRadiusWithPadding;out lowp vec4 vFillColor;out lowp vec4 vStrokeColor;out lowp float vShape;out lowp float vHalfStrokeWidth;out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}/***Computes a scaling factor for the points in a sample-faceted view.*/float getDownscaleFactor(vec2 pos){if(!isFacetedSamples()){return 1.0;}float sampleFacetHeight=getSampleFacetHeight(pos);float maxPointDiameter=sqrt(uMaxPointSize);float factor=sampleFacetHeight*uViewportSize.y*uMaxRelativePointDiameter;return clamp(0.0,maxPointDiameter,factor)/maxPointDiameter;}vec2 getDxDy(){\n#if defined(dx_DEFINED) || defined(dy_DEFINED)\nreturn vec2(getScaled_dx(),getScaled_dy())/uViewportSize;\n#else\nreturn vec2(0.0,0.0);\n#endif\n}void main(void){float shapeAngle=0.0;float semanticThresholdFactor=computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor*getDownscaleFactor(pos);float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;if(vShape>TICK_UP&&vShape<=TICK_LEFT){shapeAngle=(vShape-TICK_UP)*90.0;vShape=TICK_UP;}else if(vShape>TRIANGLE_UP&&vShape<=TRIANGLE_LEFT){shapeAngle=(vShape-TRIANGLE_UP)*90.0;vShape=TRIANGLE_UP;}float angleInDegrees=getScaled_angle();float angle=-(shapeAngle+angleInDegrees)*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=(diameter+padding)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}";
2
2
  export default shader;
@@ -42,8 +42,8 @@ export default class WebGLHelper {
42
42
  type: string;
43
43
  listener: Function;
44
44
  }[];
45
- /** @type {WeakMap<import("../view/scaleResolution").default, WebGLTexture>} */
46
- rangeTextures: WeakMap<import("../view/scaleResolution").default, WebGLTexture>;
45
+ /** @type {WeakMap<import("../view/scaleResolution.js").default, WebGLTexture>} */
46
+ rangeTextures: WeakMap<import("../view/scaleResolution.js").default, WebGLTexture>;
47
47
  canvas: HTMLCanvasElement;
48
48
  gl: WebGL2RenderingContext;
49
49
  /** @type {import("twgl.js").AttachmentOptions[]} */
@@ -110,9 +110,9 @@ export default class WebGLHelper {
110
110
  *
111
111
  * TODO: This may be too specific to be included in WebGLHelper. Find a better place.
112
112
  *
113
- * @param {import("../view/scaleResolution").default} resolution
113
+ * @param {import("../view/scaleResolution.js").default} resolution
114
114
  * @param {boolean} update Update the texture if it exists already.
115
115
  */
116
- createRangeTexture(resolution: import("../view/scaleResolution").default, update?: boolean): void;
116
+ createRangeTexture(resolution: import("../view/scaleResolution.js").default, update?: boolean): void;
117
117
  }
118
118
  //# sourceMappingURL=webGLHelper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webGLHelper.d.ts","sourceRoot":"","sources":["../../../src/gl/webGLHelper.js"],"names":[],"mappings":"AA6bA;;;;GAIG;AACH,kCAJW,sBAAsB,gBACtB,WAAW,kBACX,WAAW;;;;;;EA8CrB;AAED;;;;;GAKG;AACH,0CALW,qBAAqB,WACrB,KAAK,OAAO,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,OAC7C,MAAM,EAAE,GAAG,eAAe,YAC1B,YAAY,gBAYtB;AAleD;IACI;;;;;;;OAOG;IACH,uBANW,WAAW,eACX,MAAM;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,eAGrC,MAAM,EA2FhB;IAxFG,wBAA2B;IAC3B,mBAPa;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAOf;IAE7B,uCAAuC;IACvC,cADW,IAAI,MAAM,EAAE,WAAW,CAAC,CACN;IAE7B,oDAAoD;IACpD;cADmB,MAAM;;QACL;IAEpB,+EAA+E;IAC/E,eADW,QAAQ,OAAO,yBAAyB,EAAE,OAAO,EAAE,YAAY,CAAC,CACzC;IAuClC,0BAAoB;IACpB,2BAAY;IAGZ,oDAAoD;IACpD,2BADW,OAAO,SAAS,EAAE,iBAAiB,EAAE,CAQ/C;IACD,sDAGC;IAMD,gCAGE;IAQF,+CAA+C;IAC/C,aADW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CACZ;IAOnC,uBAIC;IAHG;;;MAAmC;IAKvC,mBAEC;IADG,YAAkC;IAGtC;;;;;OAKG;IACH,oBAHW,MAAM,QACN,MAAM,GAAG,MAAM,EAAE,eA2B3B;IAED,iBAcC;IAED,iBAGC;IAED;;;;OAIG;IACH,oCAFW;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;;;MAQ3C;IAED;;OAEG;IACH;;;MA0BC;IAED;;;OAGG;IACH,4BAHW,QAAQ,GAAC,QAAQ,4BAK3B;IAED;;OAEG;IACH,iBAFW,MAAM,QAQhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,KACN,MAAM,cAwBhB;IAED,iBAOC;IAED;;;;;;;;;OASG;IACH,+BAHW,OAAO,yBAAyB,EAAE,OAAO,WACzC,OAAO,QA4GjB;CACJ"}
1
+ {"version":3,"file":"webGLHelper.d.ts","sourceRoot":"","sources":["../../../src/gl/webGLHelper.js"],"names":[],"mappings":"AA6bA;;;;GAIG;AACH,kCAJW,sBAAsB,gBACtB,WAAW,kBACX,WAAW;;;;;;EA8CrB;AAED;;;;;GAKG;AACH,0CALW,qBAAqB,WACrB,KAAK,OAAO,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,OAC7C,MAAM,EAAE,GAAG,eAAe,YAC1B,YAAY,gBAYtB;AAleD;IACI;;;;;;;OAOG;IACH,uBANW,WAAW,eACX,MAAM;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,eAGrC,MAAM,EA2FhB;IAxFG,wBAA2B;IAC3B,mBAPa;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAOf;IAE7B,uCAAuC;IACvC,cADW,IAAI,MAAM,EAAE,WAAW,CAAC,CACN;IAE7B,oDAAoD;IACpD,YADW;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,WAAU;KAAC,EAAE,CAC5B;IAEpB,kFAAkF;IAClF,eADW,QAAQ,OAAO,4BAA4B,EAAE,OAAO,EAAE,YAAY,CAAC,CAC5C;IAuClC,0BAAoB;IACpB,2BAAY;IAGZ,oDAAoD;IACpD,2BADW,OAAO,SAAS,EAAE,iBAAiB,EAAE,CAQ/C;IACD,sDAGC;IAMD,gCAGE;IAQF,+CAA+C;IAC/C,aADW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CACZ;IAOnC,uBAIC;IAHG;;;MAAmC;IAKvC,mBAEC;IADG,YAAkC;IAGtC;;;;;OAKG;IACH,oBAHW,MAAM,QACN,MAAM,GAAG,MAAM,EAAE,eA2B3B;IAED,iBAcC;IAED,iBAGC;IAED;;;;OAIG;IACH,oCAFW;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;;;MAQ3C;IAED;;OAEG;IACH;;;MA0BC;IAED;;;OAGG;IACH,4BAHW,QAAQ,GAAC,QAAQ,4BAK3B;IAED;;OAEG;IACH,iBAFW,MAAM,QAQhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,KACN,MAAM,cAwBhB;IAED,iBAOC;IAED;;;;;;;;;OASG;IACH,+BAHW,OAAO,4BAA4B,EAAE,OAAO,WAC5C,OAAO,QA4GjB;CACJ"}
@@ -47,7 +47,7 @@ export default class WebGLHelper {
47
47
  /** @type {{ type: string, listener: function}[]} */
48
48
  this._listeners = [];
49
49
 
50
- /** @type {WeakMap<import("../view/scaleResolution").default, WebGLTexture>} */
50
+ /** @type {WeakMap<import("../view/scaleResolution.js").default, WebGLTexture>} */
51
51
  this.rangeTextures = new WeakMap();
52
52
 
53
53
  // --------------------------------------------------------
@@ -300,7 +300,7 @@ export default class WebGLHelper {
300
300
  *
301
301
  * TODO: This may be too specific to be included in WebGLHelper. Find a better place.
302
302
  *
303
- * @param {import("../view/scaleResolution").default} resolution
303
+ * @param {import("../view/scaleResolution.js").default} resolution
304
304
  * @param {boolean} update Update the texture if it exists already.
305
305
  */
306
306
  createRangeTexture(resolution, update = false) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":";AAaU,mMACkD;AA2F5D;;;;;GAKG;AACH,8BAFW,MAAM,gBAmBhB;sBA5HqB,gBAAgB;qBAFjB,UAAU;iBAGd,kBAAkB;oBACf,6BAA6B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":";AAamB,mMAGnB;AAyFA;;;;;GAKG;AACH,8BAFW,MAAM,gBAmBhB;sBA5HqB,gBAAgB;qBAFjB,UAAU;iBAGd,kBAAkB;oBACf,6BAA6B"}
package/dist/src/index.js CHANGED
@@ -94,7 +94,7 @@ export async function embed(el, spec, options = {}) {
94
94
 
95
95
  /**
96
96
  *
97
- * @param {import("./genomeSpy").default} genomeSpy
97
+ * @param {import("./genomeSpy.js").default} genomeSpy
98
98
  * @param {import("./types/embedApi.js").EmbedOptions} options options
99
99
  */
100
100
  function applyOptions(genomeSpy, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/marks/link.js"],"names":[],"mappings":"AAOA;IAqGQ;;;;;;MAKC;CAkDR;iBA9JgB,WAAW"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/marks/link.js"],"names":[],"mappings":"AAWA;IAsHQ;;;;;;MAKC;CAkDR;iBAnLgB,WAAW"}