@genome-spy/core 0.48.2 → 0.50.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 (244) hide show
  1. package/dist/bundle/index.es.js +7434 -7107
  2. package/dist/bundle/index.js +116 -103
  3. package/dist/schema.json +3975 -2819
  4. package/dist/src/data/collector.test.d.ts +2 -0
  5. package/dist/src/data/collector.test.d.ts.map +1 -0
  6. package/dist/src/data/dataFlow.test.d.ts +2 -0
  7. package/dist/src/data/dataFlow.test.d.ts.map +1 -0
  8. package/dist/src/data/flow.test.d.ts +2 -0
  9. package/dist/src/data/flow.test.d.ts.map +1 -0
  10. package/dist/src/data/flow.test.js +19 -14
  11. package/dist/src/data/flowNode.test.d.ts +2 -0
  12. package/dist/src/data/flowNode.test.d.ts.map +1 -0
  13. package/dist/src/data/flowOptimizer.test.d.ts +2 -0
  14. package/dist/src/data/flowOptimizer.test.d.ts.map +1 -0
  15. package/dist/src/data/flowOptimizer.test.js +9 -10
  16. package/dist/src/data/formats/fasta.test.d.ts +2 -0
  17. package/dist/src/data/formats/fasta.test.d.ts.map +1 -0
  18. package/dist/src/data/sources/inlineSource.test.d.ts +2 -0
  19. package/dist/src/data/sources/inlineSource.test.d.ts.map +1 -0
  20. package/dist/src/data/sources/inlineSource.test.js +23 -16
  21. package/dist/src/data/sources/sequenceSource.test.d.ts +2 -0
  22. package/dist/src/data/sources/sequenceSource.test.d.ts.map +1 -0
  23. package/dist/src/data/sources/sequenceSource.test.js +59 -42
  24. package/dist/src/data/transforms/clone.test.d.ts +2 -0
  25. package/dist/src/data/transforms/clone.test.d.ts.map +1 -0
  26. package/dist/src/data/transforms/coverage.test.d.ts +2 -0
  27. package/dist/src/data/transforms/coverage.test.d.ts.map +1 -0
  28. package/dist/src/data/transforms/coverage.test.js +1 -1
  29. package/dist/src/data/transforms/filter.d.ts +10 -0
  30. package/dist/src/data/transforms/filter.d.ts.map +1 -1
  31. package/dist/src/data/transforms/filter.js +30 -1
  32. package/dist/src/data/transforms/filter.test.d.ts +2 -0
  33. package/dist/src/data/transforms/filter.test.d.ts.map +1 -0
  34. package/dist/src/data/transforms/flatten.test.d.ts +2 -0
  35. package/dist/src/data/transforms/flatten.test.d.ts.map +1 -0
  36. package/dist/src/data/transforms/flatten.test.js +10 -7
  37. package/dist/src/data/transforms/flattenDelimited.test.d.ts +2 -0
  38. package/dist/src/data/transforms/flattenDelimited.test.d.ts.map +1 -0
  39. package/dist/src/data/transforms/flattenDelimited.test.js +16 -13
  40. package/dist/src/data/transforms/flattenSequence.test.d.ts +2 -0
  41. package/dist/src/data/transforms/flattenSequence.test.d.ts.map +1 -0
  42. package/dist/src/data/transforms/flattenSequence.test.js +1 -1
  43. package/dist/src/data/transforms/formula.test.d.ts +2 -0
  44. package/dist/src/data/transforms/formula.test.d.ts.map +1 -0
  45. package/dist/src/data/transforms/formula.test.js +1 -1
  46. package/dist/src/data/transforms/identifier.test.d.ts +2 -0
  47. package/dist/src/data/transforms/identifier.test.d.ts.map +1 -0
  48. package/dist/src/data/transforms/pileup.test.d.ts +2 -0
  49. package/dist/src/data/transforms/pileup.test.d.ts.map +1 -0
  50. package/dist/src/data/transforms/project.test.d.ts +2 -0
  51. package/dist/src/data/transforms/project.test.d.ts.map +1 -0
  52. package/dist/src/data/transforms/project.test.js +1 -1
  53. package/dist/src/data/transforms/regexExtract.test.d.ts +2 -0
  54. package/dist/src/data/transforms/regexExtract.test.d.ts.map +1 -0
  55. package/dist/src/data/transforms/regexExtract.test.js +6 -3
  56. package/dist/src/data/transforms/regexFold.test.d.ts +2 -0
  57. package/dist/src/data/transforms/regexFold.test.d.ts.map +1 -0
  58. package/dist/src/data/transforms/sample.test.d.ts +2 -0
  59. package/dist/src/data/transforms/sample.test.d.ts.map +1 -0
  60. package/dist/src/data/transforms/stack.test.d.ts +2 -0
  61. package/dist/src/data/transforms/stack.test.d.ts.map +1 -0
  62. package/dist/src/data/transforms/stack.test.js +8 -8
  63. package/dist/src/encoder/accessor.d.ts +17 -14
  64. package/dist/src/encoder/accessor.d.ts.map +1 -1
  65. package/dist/src/encoder/accessor.js +127 -56
  66. package/dist/src/encoder/accessor.test.d.ts +2 -0
  67. package/dist/src/encoder/accessor.test.d.ts.map +1 -0
  68. package/dist/src/encoder/accessor.test.js +145 -31
  69. package/dist/src/encoder/encoder.d.ts +26 -13
  70. package/dist/src/encoder/encoder.d.ts.map +1 -1
  71. package/dist/src/encoder/encoder.js +98 -114
  72. package/dist/src/encoder/encoder.test.d.ts +2 -0
  73. package/dist/src/encoder/encoder.test.d.ts.map +1 -0
  74. package/dist/src/encoder/encoder.test.js +85 -82
  75. package/dist/src/fonts/bmFontManager.d.ts.map +1 -1
  76. package/dist/src/fonts/bmFontManager.js +10 -4
  77. package/dist/src/genome/genome.test.d.ts +2 -0
  78. package/dist/src/genome/genome.test.d.ts.map +1 -0
  79. package/dist/src/genome/scaleIndex.test.d.ts +2 -0
  80. package/dist/src/genome/scaleIndex.test.d.ts.map +1 -0
  81. package/dist/src/genome/scaleLocus.test.d.ts +2 -0
  82. package/dist/src/genome/scaleLocus.test.d.ts.map +1 -0
  83. package/dist/src/genomeSpy.d.ts +3 -2
  84. package/dist/src/genomeSpy.d.ts.map +1 -1
  85. package/dist/src/genomeSpy.js +15 -6
  86. package/dist/src/gl/dataToVertices.d.ts +6 -8
  87. package/dist/src/gl/dataToVertices.d.ts.map +1 -1
  88. package/dist/src/gl/dataToVertices.js +42 -33
  89. package/dist/src/gl/glslScaleGenerator.d.ts +84 -15
  90. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  91. package/dist/src/gl/glslScaleGenerator.js +260 -73
  92. package/dist/src/gl/includes/common.glsl.js +1 -1
  93. package/dist/src/marks/link.common.glsl.js +1 -1
  94. package/dist/src/marks/link.d.ts +8 -1
  95. package/dist/src/marks/link.d.ts.map +1 -1
  96. package/dist/src/marks/link.fragment.glsl.js +1 -1
  97. package/dist/src/marks/link.js +47 -31
  98. package/dist/src/marks/link.vertex.glsl.js +1 -1
  99. package/dist/src/marks/mark.d.ts +24 -25
  100. package/dist/src/marks/mark.d.ts.map +1 -1
  101. package/dist/src/marks/mark.js +246 -118
  102. package/dist/src/marks/markUtils.d.ts +25 -0
  103. package/dist/src/marks/markUtils.d.ts.map +1 -1
  104. package/dist/src/marks/markUtils.js +41 -1
  105. package/dist/src/marks/point.common.glsl.js +1 -1
  106. package/dist/src/marks/point.d.ts +8 -1
  107. package/dist/src/marks/point.d.ts.map +1 -1
  108. package/dist/src/marks/point.js +34 -25
  109. package/dist/src/marks/point.vertex.glsl.js +1 -1
  110. package/dist/src/marks/rect.d.ts +8 -1
  111. package/dist/src/marks/rect.d.ts.map +1 -1
  112. package/dist/src/marks/rect.js +28 -23
  113. package/dist/src/marks/rule.d.ts +8 -1
  114. package/dist/src/marks/rule.d.ts.map +1 -1
  115. package/dist/src/marks/rule.js +23 -16
  116. package/dist/src/marks/text.d.ts +10 -1
  117. package/dist/src/marks/text.d.ts.map +1 -1
  118. package/dist/src/marks/text.fragment.glsl.js +1 -1
  119. package/dist/src/marks/text.js +53 -47
  120. package/dist/src/marks/text.vertex.glsl.js +1 -1
  121. package/dist/src/scale/scale.test.d.ts +2 -0
  122. package/dist/src/scale/scale.test.d.ts.map +1 -0
  123. package/dist/src/scale/scale.test.js +2 -0
  124. package/dist/src/scale/ticks.test.d.ts +2 -0
  125. package/dist/src/scale/ticks.test.d.ts.map +1 -0
  126. package/dist/src/scale/ticks.test.js +6 -0
  127. package/dist/src/selection/selection.d.ts +39 -0
  128. package/dist/src/selection/selection.d.ts.map +1 -0
  129. package/dist/src/selection/selection.js +78 -0
  130. package/dist/src/spec/channel.d.ts +150 -83
  131. package/dist/src/spec/mark.d.ts +133 -78
  132. package/dist/src/spec/parameter.d.ts +112 -3
  133. package/dist/src/spec/root.d.ts +0 -1
  134. package/dist/src/spec/transform.d.ts +19 -1
  135. package/dist/src/spec/view.d.ts +5 -10
  136. package/dist/src/tooltip/dataTooltipHandler.d.ts +1 -1
  137. package/dist/src/tooltip/dataTooltipHandler.d.ts.map +1 -1
  138. package/dist/src/tooltip/dataTooltipHandler.js +1 -1
  139. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts +1 -1
  140. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts.map +1 -1
  141. package/dist/src/types/encoder.d.ts +80 -26
  142. package/dist/src/types/rendering.d.ts +1 -0
  143. package/dist/src/types/selectionTypes.d.ts +44 -0
  144. package/dist/src/types/viewContext.d.ts +1 -4
  145. package/dist/src/utils/addBaseUrl.test.d.ts +2 -0
  146. package/dist/src/utils/addBaseUrl.test.d.ts.map +1 -0
  147. package/dist/src/utils/binnedIndex.test.d.ts +2 -0
  148. package/dist/src/utils/binnedIndex.test.d.ts.map +1 -0
  149. package/dist/src/utils/cloner.test.d.ts +2 -0
  150. package/dist/src/utils/cloner.test.d.ts.map +1 -0
  151. package/dist/src/utils/coalesce.test.d.ts +2 -0
  152. package/dist/src/utils/coalesce.test.d.ts.map +1 -0
  153. package/dist/src/utils/concatIterables.test.d.ts +2 -0
  154. package/dist/src/utils/concatIterables.test.d.ts.map +1 -0
  155. package/dist/src/utils/domainArray.test.d.ts +2 -0
  156. package/dist/src/utils/domainArray.test.d.ts.map +1 -0
  157. package/dist/src/utils/expression.d.ts +2 -2
  158. package/dist/src/utils/expression.d.ts.map +1 -1
  159. package/dist/src/utils/expression.js +11 -2
  160. package/dist/src/utils/indexer.test.d.ts +2 -0
  161. package/dist/src/utils/indexer.test.d.ts.map +1 -0
  162. package/dist/src/utils/inputBinding.d.ts.map +1 -1
  163. package/dist/src/utils/inputBinding.js +4 -0
  164. package/dist/src/utils/iterateNestedMaps.test.d.ts +2 -0
  165. package/dist/src/utils/iterateNestedMaps.test.d.ts.map +1 -0
  166. package/dist/src/utils/kWayMerge.test.d.ts +2 -0
  167. package/dist/src/utils/kWayMerge.test.d.ts.map +1 -0
  168. package/dist/src/utils/mergeObjects.test.d.ts +2 -0
  169. package/dist/src/utils/mergeObjects.test.d.ts.map +1 -0
  170. package/dist/src/utils/numberExtractor.test.d.ts +2 -0
  171. package/dist/src/utils/numberExtractor.test.d.ts.map +1 -0
  172. package/dist/src/utils/propertyCacher.test.d.ts +2 -0
  173. package/dist/src/utils/propertyCacher.test.d.ts.map +1 -0
  174. package/dist/src/utils/propertyCoalescer.test.d.ts +2 -0
  175. package/dist/src/utils/propertyCoalescer.test.d.ts.map +1 -0
  176. package/dist/src/utils/propertyCoalescer.test.js +3 -0
  177. package/dist/src/utils/radixSort.test.d.ts +2 -0
  178. package/dist/src/utils/radixSort.test.d.ts.map +1 -0
  179. package/dist/src/utils/reservationMap.test.d.ts +2 -0
  180. package/dist/src/utils/reservationMap.test.d.ts.map +1 -0
  181. package/dist/src/utils/ringBuffer.test.d.ts +2 -0
  182. package/dist/src/utils/ringBuffer.test.d.ts.map +1 -0
  183. package/dist/src/utils/topK.test.d.ts +2 -0
  184. package/dist/src/utils/topK.test.d.ts.map +1 -0
  185. package/dist/src/utils/trees.test.d.ts +2 -0
  186. package/dist/src/utils/trees.test.d.ts.map +1 -0
  187. package/dist/src/utils/trees.test.js +8 -3
  188. package/dist/src/utils/variableTools.test.d.ts +2 -0
  189. package/dist/src/utils/variableTools.test.d.ts.map +1 -0
  190. package/dist/src/view/axisResolution.d.ts +19 -6
  191. package/dist/src/view/axisResolution.d.ts.map +1 -1
  192. package/dist/src/view/axisResolution.js +16 -7
  193. package/dist/src/view/axisResolution.test.d.ts +2 -0
  194. package/dist/src/view/axisResolution.test.d.ts.map +1 -0
  195. package/dist/src/view/axisResolution.test.js +16 -11
  196. package/dist/src/view/axisView.js +2 -2
  197. package/dist/src/view/facetView.d.ts +1 -1
  198. package/dist/src/view/facetView.d.ts.map +1 -1
  199. package/dist/src/view/flowBuilder.d.ts +1 -1
  200. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  201. package/dist/src/view/flowBuilder.js +34 -5
  202. package/dist/src/view/flowBuilder.test.d.ts +2 -0
  203. package/dist/src/view/flowBuilder.test.d.ts.map +1 -0
  204. package/dist/src/view/flowBuilder.test.js +1 -1
  205. package/dist/src/view/gridView.d.ts +0 -6
  206. package/dist/src/view/gridView.d.ts.map +1 -1
  207. package/dist/src/view/gridView.js +1 -1
  208. package/dist/src/view/layerView.d.ts +0 -6
  209. package/dist/src/view/layerView.d.ts.map +1 -1
  210. package/dist/src/view/layout/flexLayout.test.d.ts +2 -0
  211. package/dist/src/view/layout/flexLayout.test.d.ts.map +1 -0
  212. package/dist/src/view/layout/grid.test.d.ts +2 -0
  213. package/dist/src/view/layout/grid.test.d.ts.map +1 -0
  214. package/dist/src/view/layout/rectangle.test.d.ts +2 -0
  215. package/dist/src/view/layout/rectangle.test.d.ts.map +1 -0
  216. package/dist/src/view/paramMediator.d.ts +39 -5
  217. package/dist/src/view/paramMediator.d.ts.map +1 -1
  218. package/dist/src/view/paramMediator.js +120 -9
  219. package/dist/src/view/paramMediator.test.d.ts +2 -0
  220. package/dist/src/view/paramMediator.test.d.ts.map +1 -0
  221. package/dist/src/view/paramMediator.test.js +37 -1
  222. package/dist/src/view/scaleResolution.d.ts +17 -15
  223. package/dist/src/view/scaleResolution.d.ts.map +1 -1
  224. package/dist/src/view/scaleResolution.js +70 -68
  225. package/dist/src/view/scaleResolution.test.d.ts +2 -0
  226. package/dist/src/view/scaleResolution.test.d.ts.map +1 -0
  227. package/dist/src/view/scaleResolution.test.js +2 -0
  228. package/dist/src/view/testUtils.d.ts.map +1 -1
  229. package/dist/src/view/testUtils.js +15 -3
  230. package/dist/src/view/unitView.d.ts +8 -20
  231. package/dist/src/view/unitView.d.ts.map +1 -1
  232. package/dist/src/view/unitView.js +100 -102
  233. package/dist/src/view/view.d.ts +1 -1
  234. package/dist/src/view/view.d.ts.map +1 -1
  235. package/dist/src/view/view.test.d.ts +2 -0
  236. package/dist/src/view/view.test.d.ts.map +1 -0
  237. package/dist/src/view/view.test.js +73 -55
  238. package/dist/src/view/viewFactory.test.d.ts +2 -0
  239. package/dist/src/view/viewFactory.test.d.ts.map +1 -0
  240. package/dist/src/view/viewFactory.test.js +2 -2
  241. package/dist/src/view/viewUtils.d.ts +1 -1
  242. package/dist/src/view/viewUtils.d.ts.map +1 -1
  243. package/dist/src/view/zoom.js +2 -2
  244. package/package.json +5 -2
@@ -0,0 +1,44 @@
1
+ import { Datum } from "../data/flowNode.js";
2
+ import { ChannelWithScale, Scalar } from "../spec/channel.js";
3
+
4
+ export interface SelectionBase {
5
+ type: string;
6
+ }
7
+
8
+ export interface RangeSelection extends SelectionBase {
9
+ type: "range";
10
+
11
+ fields?: string[];
12
+ channels?: ChannelWithScale[];
13
+
14
+ ranges: number[][];
15
+ }
16
+
17
+ export interface ProjectedSelection extends SelectionBase {
18
+ type: "projected";
19
+
20
+ fields?: string[];
21
+ channels?: ChannelWithScale[];
22
+
23
+ values: Scalar[][];
24
+ }
25
+
26
+ export interface SinglePointSelection extends SelectionBase {
27
+ type: "single";
28
+
29
+ datum: Datum;
30
+ uniqueId: number;
31
+ }
32
+
33
+ export interface MultiPointSelection extends SelectionBase {
34
+ type: "multi";
35
+
36
+ data: Datum[];
37
+ uniqueIds: Set<number>;
38
+ }
39
+
40
+ export type Selection =
41
+ | RangeSelection
42
+ | ProjectedSelection
43
+ | SinglePointSelection
44
+ | MultiPointSelection;
@@ -1,7 +1,6 @@
1
1
  import { TemplateResult } from "lit";
2
2
  import View, { BroadcastMessage } from "../view/view.js";
3
3
  import DataFlow from "../data/dataFlow.js";
4
- import AccessorFactory from "../encoder/accessor.js";
5
4
  import WebGLHelper from "../gl/webGLHelper.js";
6
5
  import Animator from "../utils/animator.js";
7
6
  import GenomeStore from "../genome/genomeStore.js";
@@ -9,9 +8,8 @@ import BmFontManager from "../fonts/bmFontManager.js";
9
8
  import Mark from "../marks/mark.js";
10
9
  import { Datum } from "../data/flowNode.js";
11
10
  import { ImportSpec, ViewSpec } from "../spec/view.js";
12
- import ContainerView from "./containerView.js";
11
+ import ContainerView from "../view/containerView.js";
13
12
  import { BroadcastEventType } from "../genomeSpy.js";
14
- import ParamMediator from "../view/paramMediator.js";
15
13
 
16
14
  export interface Hover {
17
15
  mark: Mark;
@@ -25,7 +23,6 @@ export type DataLoadingStatus = "loading" | "complete" | "error";
25
23
  */
26
24
  export default interface ViewContext {
27
25
  dataFlow: DataFlow<View>;
28
- accessorFactory: AccessorFactory;
29
26
  glHelper: WebGLHelper;
30
27
  animator: Animator;
31
28
  genomeStore?: GenomeStore;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=addBaseUrl.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addBaseUrl.test.d.ts","sourceRoot":"","sources":["../../../src/utils/addBaseUrl.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=binnedIndex.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binnedIndex.test.d.ts","sourceRoot":"","sources":["../../../src/utils/binnedIndex.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cloner.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloner.test.d.ts","sourceRoot":"","sources":["../../../src/utils/cloner.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=coalesce.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coalesce.test.d.ts","sourceRoot":"","sources":["../../../src/utils/coalesce.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=concatIterables.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concatIterables.test.d.ts","sourceRoot":"","sources":["../../../src/utils/concatIterables.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=domainArray.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domainArray.test.d.ts","sourceRoot":"","sources":["../../../src/utils/domainArray.test.js"],"names":[],"mappings":""}
@@ -4,7 +4,7 @@
4
4
  * @prop { string[] } globals
5
5
  * @prop { string } code
6
6
  *
7
- * @typedef { ((datum?: object) => any) & ExpressionProps } ExpressionFunction
7
+ * @typedef { ((datum?: import("../data/flowNode.js").Datum) => any) & ExpressionProps } ExpressionFunction
8
8
  *
9
9
  * @param {string} expr
10
10
  * @returns {ExpressionFunction}
@@ -15,5 +15,5 @@ export type ExpressionProps = {
15
15
  globals: string[];
16
16
  code: string;
17
17
  };
18
- export type ExpressionFunction = ((datum?: object) => any) & ExpressionProps;
18
+ export type ExpressionFunction = ((datum?: import("../data/flowNode.js").Datum) => any) & ExpressionProps;
19
19
  //# sourceMappingURL=expression.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/utils/expression.js"],"names":[],"mappings":"AAyDA;;;;;;;;;;GAUG;AACH,6CAHW,MAAM,sBACJ,kBAAkB,CAyB9B;;YAhCU,MAAM,EAAE;aACR,MAAM,EAAE;UACR,MAAM;;2CAEO,MAAM,KAAK,GAAG"}
1
+ {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/utils/expression.js"],"names":[],"mappings":"AA2DA;;;;;;;;;;GAUG;AACH,6CAHW,MAAM,sBACJ,kBAAkB,CAgC9B;;YAvCU,MAAM,EAAE;aACR,MAAM,EAAE;UACR,MAAM;;2CAEO,OAAO,qBAAqB,EAAE,KAAK,KAAK,GAAG"}
@@ -11,6 +11,7 @@ import {
11
11
  import smoothstep from "./smoothstep.js";
12
12
  import clamp from "./clamp.js";
13
13
  import linearstep from "./linearstep.js";
14
+ import { selectionTest } from "../selection/selection.js";
14
15
 
15
16
  /**
16
17
  * Some bits are adapted from https://github.com/vega/vega/blob/main/packages/vega-functions/src/codegen.js
@@ -33,6 +34,7 @@ const functionContext = {
33
34
  lerp,
34
35
  linearstep,
35
36
  smoothstep,
37
+ selectionTest,
36
38
  };
37
39
 
38
40
  /**
@@ -61,7 +63,7 @@ const cg = codegenExpression({
61
63
  * @prop { string[] } globals
62
64
  * @prop { string } code
63
65
  *
64
- * @typedef { ((datum?: object) => any) & ExpressionProps } ExpressionFunction
66
+ * @typedef { ((datum?: import("../data/flowNode.js").Datum) => any) & ExpressionProps } ExpressionFunction
65
67
  *
66
68
  * @param {string} expr
67
69
  * @returns {ExpressionFunction}
@@ -75,7 +77,14 @@ export default function createFunction(expr, globalObject = {}) {
75
77
  const fn = Function(
76
78
  "datum",
77
79
  "globalObject",
78
- `"use strict"; return (${generatedCode.code});`
80
+ `"use strict";
81
+ try {
82
+ return (${generatedCode.code});
83
+ } catch (e) {
84
+ throw new Error("Error evaluating expression: " + ${JSON.stringify(
85
+ expr
86
+ )} + ", " + e.message, e);
87
+ }`
79
88
  ).bind(functionContext);
80
89
 
81
90
  /** @type { ExpressionFunction } */
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=indexer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer.test.d.ts","sourceRoot":"","sources":["../../../src/utils/indexer.test.js"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"inputBinding.d.ts","sourceRoot":"","sources":["../../../src/utils/inputBinding.js"],"names":[],"mappings":"AAIA;;GAEG;AACH,sDAFW,OAAO,0BAA0B,EAAE,OAAO,8CAqIpD"}
1
+ {"version":3,"file":"inputBinding.d.ts","sourceRoot":"","sources":["../../../src/utils/inputBinding.js"],"names":[],"mappings":"AAKA;;GAEG;AACH,sDAFW,OAAO,0BAA0B,EAAE,OAAO,8CAwIpD"}
@@ -1,6 +1,7 @@
1
1
  import { html } from "lit";
2
2
  import { debounce } from "./debounce.js";
3
3
  import { tickStep } from "d3-array";
4
+ import { isVariableParameter } from "../view/paramMediator.js";
4
5
 
5
6
  /**
6
7
  * @param {import("../view/paramMediator.js").default} mediator
@@ -12,6 +13,9 @@ export default function createBindingInputs(mediator) {
12
13
  const inputs = [];
13
14
 
14
15
  for (const param of mediator.paramConfigs.values()) {
16
+ if (!isVariableParameter(param)) {
17
+ continue;
18
+ }
15
19
  const bind = param.bind;
16
20
  if (!bind || !("input" in bind)) {
17
21
  continue;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=iterateNestedMaps.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iterateNestedMaps.test.d.ts","sourceRoot":"","sources":["../../../src/utils/iterateNestedMaps.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=kWayMerge.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kWayMerge.test.d.ts","sourceRoot":"","sources":["../../../src/utils/kWayMerge.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mergeObjects.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeObjects.test.d.ts","sourceRoot":"","sources":["../../../src/utils/mergeObjects.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=numberExtractor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numberExtractor.test.d.ts","sourceRoot":"","sources":["../../../src/utils/numberExtractor.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=propertyCacher.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propertyCacher.test.d.ts","sourceRoot":"","sources":["../../../src/utils/propertyCacher.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=propertyCoalescer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propertyCoalescer.test.d.ts","sourceRoot":"","sources":["../../../src/utils/propertyCoalescer.test.js"],"names":[],"mappings":""}
@@ -7,12 +7,15 @@ test("CoalesceProperties works as expected", () => {
7
7
 
8
8
  const coalesced = coalesceProperties(
9
9
  () => props,
10
+ // @ts-expect-error
10
11
  () => defaults
11
12
  );
12
13
 
13
14
  expect(coalesced.a).toEqual(1);
15
+ // @ts-expect-error
14
16
  expect(coalesced.b).toEqual(11);
15
17
  expect(coalesced.c).toEqual(2);
18
+ // @ts-expect-error
16
19
  expect(coalesced.undef).toBeUndefined();
17
20
 
18
21
  expect("a" in coalesced).toBeTruthy();
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=radixSort.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radixSort.test.d.ts","sourceRoot":"","sources":["../../../src/utils/radixSort.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=reservationMap.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reservationMap.test.d.ts","sourceRoot":"","sources":["../../../src/utils/reservationMap.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ringBuffer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ringBuffer.test.d.ts","sourceRoot":"","sources":["../../../src/utils/ringBuffer.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=topK.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topK.test.d.ts","sourceRoot":"","sources":["../../../src/utils/topK.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=trees.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trees.test.d.ts","sourceRoot":"","sources":["../../../src/utils/trees.test.js"],"names":[],"mappings":""}
@@ -3,8 +3,10 @@ import { nodesToTrees, visitTree } from "./trees.js";
3
3
  import { describe } from "vitest";
4
4
 
5
5
  describe("NodesToTrees", () => {
6
+ const NULL = /** @type {any} */ (null);
7
+
6
8
  test("NodesToTrees converts an array of nodes to a tree", () => {
7
- const a = { parent: null };
9
+ const a = { parent: NULL };
8
10
  const b = { parent: a };
9
11
  const c = { parent: a };
10
12
  const d = { parent: b };
@@ -41,10 +43,10 @@ describe("NodesToTrees", () => {
41
43
  });
42
44
 
43
45
  test("NodesToTrees converts two disjoint node arrays to two trees", () => {
44
- const a = { parent: null };
46
+ const a = { parent: NULL };
45
47
  const b = { parent: a };
46
48
 
47
- const c = { parent: null };
49
+ const c = { parent: NULL };
48
50
  const d = { parent: c };
49
51
 
50
52
  const nodes = [a, b, c, d];
@@ -84,6 +86,7 @@ describe("VisitTree", () => {
84
86
  children: [
85
87
  {
86
88
  id: "d",
89
+ /** @type {any[]} */
87
90
  children: [],
88
91
  },
89
92
  {
@@ -99,7 +102,9 @@ describe("VisitTree", () => {
99
102
  ],
100
103
  };
101
104
 
105
+ /** @type {any[]} */
102
106
  const visitedPre = [];
107
+ /** @type {any[]} */
103
108
  const visitedPost = [];
104
109
 
105
110
  visitTree(tree, {
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=variableTools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variableTools.test.d.ts","sourceRoot":"","sources":["../../../src/utils/variableTools.test.js"],"names":[],"mappings":""}
@@ -1,24 +1,37 @@
1
+ /**
2
+ * @template {import("../spec/channel.js").PositionalChannel}[T=PositionalChannel]
3
+ *
4
+ * @typedef {object} AxisResolutionMember
5
+ * @prop {import("./unitView.js").default} view
6
+ * @prop {T} channel
7
+ * @prop {import("../spec/channel.js").ChannelDefWithScale} channelDef
8
+ */
1
9
  export default class AxisResolution {
2
10
  /**
3
- * @typedef { import("./unitView.js").default} UnitView
11
+ * @typedef {import("./unitView.js").default} UnitView
12
+ * @typedef {import("../spec/channel.js").PositionalChannel} PositionalChannel
4
13
  */
5
14
  /**
6
15
  * @param {import("../spec/channel.js").PrimaryPositionalChannel} channel
7
16
  */
8
17
  constructor(channel: import("../spec/channel.js").PrimaryPositionalChannel);
9
18
  channel: import("../spec/channel.js").PrimaryPositionalChannel;
10
- /** @type {import("./scaleResolution.js").ResolutionMember<import("../spec/channel.js").PositionalChannel>[]} The involved views */
11
- members: import("./scaleResolution.js").ResolutionMember<import("../spec/channel.js").PositionalChannel>[];
19
+ /** @type {AxisResolutionMember[]} The involved views */
20
+ members: AxisResolutionMember[];
12
21
  get scaleResolution(): import("./scaleResolution.js").default;
13
22
  /**
14
23
  * N.B. This is expected to be called in depth-first order, AFTER the
15
24
  * scales have been resolved.
16
25
  *
17
- * @param {UnitView} view
18
- * @param {import("../spec/channel.js").PositionalChannel} channel TODO: Do something for this
26
+ * @param {AxisResolutionMember} newMember
19
27
  */
20
- pushUnitView(view: import("./unitView.js").default, channel: import("../spec/channel.js").PositionalChannel): void;
28
+ addMember(newMember: AxisResolutionMember): void;
21
29
  getAxisProps(): import("../spec/axis.js").GenomeAxis;
22
30
  getTitle(): string;
23
31
  }
32
+ export type AxisResolutionMember<T extends import("../spec/channel.js").PositionalChannel = import("../spec/channel.js").PositionalChannel> = {
33
+ view: import("./unitView.js").default;
34
+ channel: T;
35
+ channelDef: import("../spec/channel.js").ChannelDefWithScale;
36
+ };
24
37
  //# sourceMappingURL=axisResolution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"axisResolution.d.ts","sourceRoot":"","sources":["../../../src/view/axisResolution.js"],"names":[],"mappings":"AAeA;IACI;;OAEG;IAEH;;OAEG;IACH,qBAFW,OAAO,oBAAoB,EAAE,wBAAwB,EAM/D;IAHG,+DAAsB;IACtB,mIAAmI;IACnI,SADW,OAAO,sBAAsB,EAAE,gBAAgB,CAAC,OAAO,oBAAoB,EAAE,iBAAiB,CAAC,EAAE,CAC3F;IAGrB,8DAEC;IAED;;;;;;OAMG;IACH,6DAFW,OAAO,oBAAoB,EAAE,iBAAiB,QAiBxD;IAED,qDAuBC;IAED,mBAyDC;CACJ"}
1
+ {"version":3,"file":"axisResolution.d.ts","sourceRoot":"","sources":["../../../src/view/axisResolution.js"],"names":[],"mappings":"AAeA;;;;;;;GAOG;AACH;IACI;;;OAGG;IAEH;;OAEG;IACH,qBAFW,OAAO,oBAAoB,EAAE,wBAAwB,EAM/D;IAHG,+DAAsB;IACtB,wDAAwD;IACxD,SADW,oBAAoB,EAAE,CAChB;IAGrB,8DAEC;IAED;;;;;OAKG;IACH,qBAFW,oBAAoB,QAkB9B;IAED,qDAuBC;IAED,mBAyDC;CACJ;;UAlIS,OAAO,eAAe,EAAE,OAAO;aAC/B,CAAC;gBACD,OAAO,oBAAoB,EAAE,mBAAmB"}
@@ -13,9 +13,18 @@ import coalesce from "../utils/coalesce.js";
13
13
  import mergeObjects from "../utils/mergeObjects.js";
14
14
  import { getCachedOrCall } from "../utils/propertyCacher.js";
15
15
 
16
+ /**
17
+ * @template {import("../spec/channel.js").PositionalChannel}[T=PositionalChannel]
18
+ *
19
+ * @typedef {object} AxisResolutionMember
20
+ * @prop {import("./unitView.js").default} view
21
+ * @prop {T} channel
22
+ * @prop {import("../spec/channel.js").ChannelDefWithScale} channelDef
23
+ */
16
24
  export default class AxisResolution {
17
25
  /**
18
- * @typedef { import("./unitView.js").default} UnitView
26
+ * @typedef {import("./unitView.js").default} UnitView
27
+ * @typedef {import("../spec/channel.js").PositionalChannel} PositionalChannel
19
28
  */
20
29
 
21
30
  /**
@@ -23,7 +32,7 @@ export default class AxisResolution {
23
32
  */
24
33
  constructor(channel) {
25
34
  this.channel = channel;
26
- /** @type {import("./scaleResolution.js").ResolutionMember<import("../spec/channel.js").PositionalChannel>[]} The involved views */
35
+ /** @type {AxisResolutionMember[]} The involved views */
27
36
  this.members = [];
28
37
  }
29
38
 
@@ -35,10 +44,10 @@ export default class AxisResolution {
35
44
  * N.B. This is expected to be called in depth-first order, AFTER the
36
45
  * scales have been resolved.
37
46
  *
38
- * @param {UnitView} view
39
- * @param {import("../spec/channel.js").PositionalChannel} channel TODO: Do something for this
47
+ * @param {AxisResolutionMember} newMember
40
48
  */
41
- pushUnitView(view, channel) {
49
+ addMember(newMember) {
50
+ const { view } = newMember;
42
51
  const newScaleResolution = view.getScaleResolution(this.channel);
43
52
 
44
53
  if (!newScaleResolution) {
@@ -52,7 +61,7 @@ export default class AxisResolution {
52
61
  throw new Error("Shared axes must have a shared scale!");
53
62
  }
54
63
 
55
- this.members.push({ view, channel });
64
+ this.members.push(newMember);
56
65
  }
57
66
 
58
67
  getAxisProps() {
@@ -81,7 +90,7 @@ export default class AxisResolution {
81
90
  }
82
91
 
83
92
  getTitle() {
84
- /** @param {import("./scaleResolution.js").ResolutionMember} member} */
93
+ /** @param {AxisResolutionMember} member} */
85
94
  const computeTitle = (member) => {
86
95
  const channelDef = getChannelDefWithScale(
87
96
  member.view,
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=axisResolution.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axisResolution.test.d.ts","sourceRoot":"","sources":["../../../src/view/axisResolution.test.js"],"names":[],"mappings":""}
@@ -35,19 +35,17 @@ const spec = {
35
35
  };
36
36
 
37
37
  describe("Axes resolve properly", () => {
38
- const sharedSpec = {
39
- ...spec,
40
- resolve: { scale: { y: "shared" }, axis: { y: "shared" } },
41
- };
42
-
43
38
  test("Independent axes are independent", async () => {
44
- const independentSpec = {
45
- ...spec,
46
- resolve: { scale: { y: "shared" }, axis: { y: "independent" } },
47
- };
39
+ const view = await createAndInitialize(
40
+ {
41
+ ...spec,
42
+ resolve: { scale: { y: "shared" }, axis: { y: "independent" } },
43
+ },
44
+ View
45
+ );
48
46
 
49
- const view = await createAndInitialize(independentSpec, View);
50
47
  const [r0, r1] = [0, 1].map((i) =>
48
+ // @ts-ignore
51
49
  view.children[i].getAxisResolution("y")
52
50
  );
53
51
 
@@ -57,7 +55,14 @@ describe("Axes resolve properly", () => {
57
55
  });
58
56
 
59
57
  test("Shared axes have joined titles", async () => {
60
- const view = await createAndInitialize(sharedSpec, View);
58
+ const view = await createAndInitialize(
59
+ {
60
+ ...spec,
61
+ resolve: { scale: { y: "shared" }, axis: { y: "shared" } },
62
+ },
63
+ View
64
+ );
65
+ // @ts-ignore
61
66
  expect(view.children[0].getAxisResolution("y").getTitle()).toEqual(
62
67
  "a, b"
63
68
  );
@@ -594,7 +594,7 @@ export function createGenomeAxis(axisProps, type) {
594
594
  if (axisProps.chromLabels) {
595
595
  chromLayerSpec.layer.push(createChromosomeLabels());
596
596
 
597
- /** @type {import("../spec/mark.js").MarkProps} */
597
+ /** @type {import("../spec/mark.js").TextProps} */
598
598
  let labelMarkSpec;
599
599
 
600
600
  // TODO: Simplify the following mess
@@ -608,7 +608,7 @@ export function createGenomeAxis(axisProps, type) {
608
608
  /** @type {import("../spec/view.js").UnitSpec} */ view
609
609
  ) => {
610
610
  labelMarkSpec =
611
- /** @type {import("../spec/mark.js").MarkProps} */ (
611
+ /** @type {import("../spec/mark.js").TextProps} */ (
612
612
  view.mark
613
613
  );
614
614
  }
@@ -45,7 +45,7 @@ export default class FacetView extends ContainerView {
45
45
  *
46
46
  * @param {"row" | "column"} channel
47
47
  */
48
- getAccessor(channel: "row" | "column"): import("../types/encoder.js").Accessor;
48
+ getAccessor(channel: "row" | "column"): any;
49
49
  updateFacets(): void;
50
50
  updateLabels(): void;
51
51
  getFacetGroups(): any[];
@@ -1 +1 @@
1
- {"version":3,"file":"facetView.d.ts","sourceRoot":"","sources":["../../../src/view/facetView.js"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;;GAcG;AACH;IACI;;;;;;;OAOG;IACH;;;;;;OAMG;IACH,6CAHW,aAAa,QACb,MAAM,EA8BhB;IAzBG,UAAgB;IAEhB,WAEC;IAED;;;;OAIG;IACH,aAFU,OAAO,YAAY,EAAE,QAAQ,CAAC,CAYvC;IAED,oDAAoD;IACpD,kBADY,OAAO,YAAY,EAAE,cAAc,CAAC,CACa;IA2BjE,sBAIC;IAED;;;OAGG;IACH,qBAFW,KAAK,GAAG,QAAQ,0CAwB1B;IAED,qBAyCC;IAED,qBASC;IA6BD,wBAgBC;IAOD;;;;OAIG;IACH,gBAJW,OAAO,4CAA4C,EAAE,OAAO,UAC5D,OAAO,uBAAuB,EAAE,OAAO,uBA4LjD;IA3KO,wBAA0B;CA4KrC;2BA/bY,QAAQ,GAAG,KAAK;;;;;;aA4CnB,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE;;;0BA1Df,oBAAoB;qBACzB,eAAe"}
1
+ {"version":3,"file":"facetView.d.ts","sourceRoot":"","sources":["../../../src/view/facetView.js"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;;GAcG;AACH;IACI;;;;;;;OAOG;IACH;;;;;;OAMG;IACH,6CAHW,aAAa,QACb,MAAM,EA8BhB;IAzBG,UAAgB;IAEhB,WAEC;IAED;;;;OAIG;IACH,aAFU,OAAO,YAAY,EAAE,QAAQ,CAAC,CAYvC;IAED,oDAAoD;IACpD,kBADY,OAAO,YAAY,EAAE,cAAc,CAAC,CACa;IA2BjE,sBAIC;IAED;;;OAGG;IACH,qBAFW,KAAK,GAAG,QAAQ,OAwB1B;IAED,qBAyCC;IAED,qBASC;IA6BD,wBAgBC;IAOD;;;;OAIG;IACH,gBAJW,OAAO,4CAA4C,EAAE,OAAO,UAC5D,OAAO,uBAAuB,EAAE,OAAO,uBA4LjD;IA3KO,wBAA0B;CA4KrC;2BA/bY,QAAQ,GAAG,KAAK;;;;;;aA4CnB,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE;;;0BA1Df,oBAAoB;qBACzB,eAAe"}
@@ -13,7 +13,7 @@ export function buildDataFlow(root: import("./view.js").default, existingFlow?:
13
13
  */
14
14
  export function linearizeLocusAccess(view: import("./view.js").default): {
15
15
  transforms: import("../data/flowNode.js").default[];
16
- rewrittenEncoding: import("../spec/channel.js").Encoding<string>;
16
+ rewrittenEncoding: import("../spec/channel.js").Encoding;
17
17
  /**
18
18
  * Should be called after the whole flow has been created in order to
19
19
  * not disrupt inheritance of encodings
@@ -1 +1 @@
1
- {"version":3,"file":"flowBuilder.d.ts","sourceRoot":"","sources":["../../../src/view/flowBuilder.js"],"names":[],"mappings":"AAwBA;;;;GAIG;AACH,8JAkKC;AAED;;;;;;GAMG;AACH;;;IAgGc;;;OAGG;;EAYhB;AAgCD;;;;;;GAMG;AACH;;;0BAqB0B,QAAQ,SAAS,OAAO,qBAAqB,EAAE,KAAK,CAAC,CAAC;EAkB/E;qBA/XoB,qBAAqB;sBANpB,sBAAsB"}
1
+ {"version":3,"file":"flowBuilder.d.ts","sourceRoot":"","sources":["../../../src/view/flowBuilder.js"],"names":[],"mappings":"AAwBA;;;;GAIG;AACH,8JA+LC;AAED;;;;;;GAMG;AACH;;;IAgGc;;;OAGG;;EAYhB;AAgCD;;;;;;GAMG;AACH;;;0BAqB0B,QAAQ,SAAS,OAAO,qBAAqB,EAAE,KAAK,CAAC,CAAC;EAkB/E;qBA5ZoB,qBAAqB;sBANpB,sBAAsB"}