@genome-spy/core 0.64.0 → 0.66.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/dist/bundle/{index-CCJIjehY.js → AbortablePromiseCache-CcuMrnn7.js} +22 -91
  2. package/dist/bundle/browser-BRemItdO.js +138 -0
  3. package/dist/bundle/index-BatuyGAI.js +271 -0
  4. package/dist/bundle/index-ByuE8dvu.js +332 -0
  5. package/dist/bundle/index-Cq3QFUxX.js +1781 -0
  6. package/dist/bundle/{index-C08YCM2T.js → index-D-w7Mmt9.js} +246 -126
  7. package/dist/bundle/index-D28m8tSW.js +1607 -0
  8. package/dist/bundle/index-D74H8TTz.js +508 -0
  9. package/dist/bundle/index-DbJ0oeYM.js +631 -0
  10. package/dist/bundle/index.es.js +15034 -13842
  11. package/dist/bundle/index.js +223 -237
  12. package/dist/bundle/inflate-GtwLkvSP.js +1048 -0
  13. package/dist/bundle/unzip-NywezaRR.js +1492 -0
  14. package/dist/schema.json +22 -4
  15. package/dist/src/config/scaleDefaults.d.ts +8 -0
  16. package/dist/src/config/scaleDefaults.d.ts.map +1 -0
  17. package/dist/src/config/scaleDefaults.js +45 -0
  18. package/dist/src/data/collector.d.ts +7 -2
  19. package/dist/src/data/collector.d.ts.map +1 -1
  20. package/dist/src/data/collector.js +13 -2
  21. package/dist/src/data/dataFlow.d.ts +20 -42
  22. package/dist/src/data/dataFlow.d.ts.map +1 -1
  23. package/dist/src/data/dataFlow.js +57 -80
  24. package/dist/src/data/flowHandle.d.ts +15 -0
  25. package/dist/src/data/flowHandle.d.ts.map +1 -0
  26. package/dist/src/data/flowHandle.js +13 -0
  27. package/dist/src/data/flowInit.d.ts +85 -0
  28. package/dist/src/data/flowInit.d.ts.map +1 -0
  29. package/dist/src/data/flowInit.js +238 -0
  30. package/dist/src/data/flowInit.test.d.ts +2 -0
  31. package/dist/src/data/flowInit.test.d.ts.map +1 -0
  32. package/dist/src/data/flowOptimizer.d.ts +6 -4
  33. package/dist/src/data/flowOptimizer.d.ts.map +1 -1
  34. package/dist/src/data/flowOptimizer.js +29 -14
  35. package/dist/src/data/sources/lazy/axisTickSource.js +1 -1
  36. package/dist/src/data/sources/lazy/bamSource.js +1 -1
  37. package/dist/src/data/sources/lazy/bigBedSource.js +1 -1
  38. package/dist/src/data/sources/lazy/bigWigSource.js +1 -1
  39. package/dist/src/data/sources/lazy/gff3Source.d.ts +2 -6
  40. package/dist/src/data/sources/lazy/gff3Source.d.ts.map +1 -1
  41. package/dist/src/data/sources/lazy/gff3Source.js +4 -8
  42. package/dist/src/data/sources/lazy/indexedFastaSource.d.ts.map +1 -1
  43. package/dist/src/data/sources/lazy/indexedFastaSource.js +17 -17
  44. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +1 -1
  45. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  46. package/dist/src/data/sources/lazy/singleAxisLazySource.js +10 -3
  47. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  48. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +5 -1
  49. package/dist/src/data/sources/lazy/tabixSource.js +1 -1
  50. package/dist/src/data/transforms/filterScoredLabels.d.ts +1 -1
  51. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  52. package/dist/src/data/transforms/filterScoredLabels.js +1 -1
  53. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts.map +1 -1
  54. package/dist/src/data/transforms/linearizeGenomicCoordinate.js +2 -1
  55. package/dist/src/encoder/encoder.d.ts +1 -1
  56. package/dist/src/encoder/encoder.d.ts.map +1 -1
  57. package/dist/src/encoder/encoder.js +1 -1
  58. package/dist/src/genome/scaleLocus.d.ts +39 -0
  59. package/dist/src/genome/scaleLocus.d.ts.map +1 -1
  60. package/dist/src/genome/scaleLocus.js +76 -0
  61. package/dist/src/genomeSpy/canvasExport.d.ts +19 -0
  62. package/dist/src/genomeSpy/canvasExport.d.ts.map +1 -0
  63. package/dist/src/genomeSpy/canvasExport.js +66 -0
  64. package/dist/src/genomeSpy/containerUi.d.ts +17 -0
  65. package/dist/src/genomeSpy/containerUi.d.ts.map +1 -0
  66. package/dist/src/genomeSpy/containerUi.js +78 -0
  67. package/dist/src/genomeSpy/eventListenerRegistry.d.ts +19 -0
  68. package/dist/src/genomeSpy/eventListenerRegistry.d.ts.map +1 -0
  69. package/dist/src/genomeSpy/eventListenerRegistry.js +38 -0
  70. package/dist/src/genomeSpy/inputBindingManager.d.ts +14 -0
  71. package/dist/src/genomeSpy/inputBindingManager.d.ts.map +1 -0
  72. package/dist/src/genomeSpy/inputBindingManager.js +63 -0
  73. package/dist/src/genomeSpy/interactionController.d.ts +40 -0
  74. package/dist/src/genomeSpy/interactionController.d.ts.map +1 -0
  75. package/dist/src/genomeSpy/interactionController.js +371 -0
  76. package/dist/src/genomeSpy/keyboardListenerManager.d.ts +10 -0
  77. package/dist/src/genomeSpy/keyboardListenerManager.d.ts.map +1 -0
  78. package/dist/src/genomeSpy/keyboardListenerManager.js +31 -0
  79. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts +15 -0
  80. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts.map +1 -0
  81. package/dist/src/genomeSpy/loadingIndicatorManager.js +92 -0
  82. package/dist/src/genomeSpy/renderCoordinator.d.ts +22 -0
  83. package/dist/src/genomeSpy/renderCoordinator.d.ts.map +1 -0
  84. package/dist/src/genomeSpy/renderCoordinator.js +118 -0
  85. package/dist/src/genomeSpy/viewContextFactory.d.ts +18 -0
  86. package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -0
  87. package/dist/src/genomeSpy/viewContextFactory.js +79 -0
  88. package/dist/src/genomeSpy/viewDataInit.d.ts +12 -0
  89. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -0
  90. package/dist/src/genomeSpy/viewDataInit.js +41 -0
  91. package/dist/src/genomeSpy/viewHierarchyConfig.d.ts +14 -0
  92. package/dist/src/genomeSpy/viewHierarchyConfig.d.ts.map +1 -0
  93. package/dist/src/genomeSpy/viewHierarchyConfig.js +24 -0
  94. package/dist/src/genomeSpy/viewHighlight.d.ts +5 -0
  95. package/dist/src/genomeSpy/viewHighlight.d.ts.map +1 -0
  96. package/dist/src/genomeSpy/viewHighlight.js +30 -0
  97. package/dist/src/genomeSpy.d.ts +17 -72
  98. package/dist/src/genomeSpy.d.ts.map +1 -1
  99. package/dist/src/genomeSpy.js +180 -789
  100. package/dist/src/gl/glslScaleGenerator.d.ts +1 -1
  101. package/dist/src/gl/webGLHelper.d.ts +2 -2
  102. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  103. package/dist/src/gl/webGLHelper.js +4 -4
  104. package/dist/src/index.d.ts.map +1 -1
  105. package/dist/src/index.js +2 -12
  106. package/dist/src/marks/mark.d.ts +1 -0
  107. package/dist/src/marks/mark.d.ts.map +1 -1
  108. package/dist/src/marks/mark.js +26 -3
  109. package/dist/src/{view → scales}/axisResolution.d.ts +12 -14
  110. package/dist/src/scales/axisResolution.d.ts.map +1 -0
  111. package/dist/src/{view → scales}/axisResolution.js +38 -12
  112. package/dist/src/scales/axisResolution.test.d.ts.map +1 -0
  113. package/dist/src/scales/scaleDomainAggregator.d.ts +57 -0
  114. package/dist/src/scales/scaleDomainAggregator.d.ts.map +1 -0
  115. package/dist/src/scales/scaleDomainAggregator.js +162 -0
  116. package/dist/src/scales/scaleDomainAggregator.test.d.ts +2 -0
  117. package/dist/src/scales/scaleDomainAggregator.test.d.ts.map +1 -0
  118. package/dist/src/scales/scaleInstanceManager.d.ts +40 -0
  119. package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -0
  120. package/dist/src/scales/scaleInstanceManager.js +313 -0
  121. package/dist/src/scales/scaleInstanceManager.test.d.ts +2 -0
  122. package/dist/src/scales/scaleInstanceManager.test.d.ts.map +1 -0
  123. package/dist/src/scales/scaleInteractionController.d.ts +73 -0
  124. package/dist/src/scales/scaleInteractionController.d.ts.map +1 -0
  125. package/dist/src/scales/scaleInteractionController.js +336 -0
  126. package/dist/src/scales/scaleInteractionController.test.d.ts +2 -0
  127. package/dist/src/scales/scaleInteractionController.test.d.ts.map +1 -0
  128. package/dist/src/scales/scalePropsResolver.d.ts +23 -0
  129. package/dist/src/scales/scalePropsResolver.d.ts.map +1 -0
  130. package/dist/src/scales/scalePropsResolver.js +74 -0
  131. package/dist/src/{view → scales}/scaleResolution.d.ts +53 -31
  132. package/dist/src/scales/scaleResolution.d.ts.map +1 -0
  133. package/dist/src/scales/scaleResolution.js +658 -0
  134. package/dist/src/scales/scaleResolution.test.d.ts.map +1 -0
  135. package/dist/src/scales/scaleResolutionConstants.d.ts +6 -0
  136. package/dist/src/scales/scaleResolutionConstants.d.ts.map +1 -0
  137. package/dist/src/scales/scaleResolutionConstants.js +5 -0
  138. package/dist/src/scales/scaleRules.d.ts +16 -0
  139. package/dist/src/scales/scaleRules.d.ts.map +1 -0
  140. package/dist/src/scales/scaleRules.js +103 -0
  141. package/dist/src/scales/scaleRules.test.d.ts +2 -0
  142. package/dist/src/scales/scaleRules.test.d.ts.map +1 -0
  143. package/dist/src/spec/channel.d.ts +13 -18
  144. package/dist/src/spec/sampleView.d.ts +3 -2
  145. package/dist/src/spec/scale.d.ts +6 -0
  146. package/dist/src/types/embedApi.d.ts +5 -0
  147. package/dist/src/types/scaleResolutionApi.d.ts +1 -1
  148. package/dist/src/types/viewContext.d.ts +1 -1
  149. package/dist/src/view/concatView.d.ts +18 -0
  150. package/dist/src/view/concatView.d.ts.map +1 -1
  151. package/dist/src/view/concatView.js +73 -0
  152. package/dist/src/view/concatView.test.d.ts +2 -0
  153. package/dist/src/view/concatView.test.d.ts.map +1 -0
  154. package/dist/src/view/containerMutationHelper.d.ts +74 -0
  155. package/dist/src/view/containerMutationHelper.d.ts.map +1 -0
  156. package/dist/src/view/containerMutationHelper.js +114 -0
  157. package/dist/src/view/containerView.d.ts +0 -7
  158. package/dist/src/view/containerView.d.ts.map +1 -1
  159. package/dist/src/view/containerView.js +0 -10
  160. package/dist/src/view/facetView.d.ts.map +1 -1
  161. package/dist/src/view/facetView.js +0 -14
  162. package/dist/src/view/flowBuilder.d.ts +2 -2
  163. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  164. package/dist/src/view/flowBuilder.js +21 -4
  165. package/dist/src/view/gridView/gridChild.d.ts +11 -0
  166. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  167. package/dist/src/view/gridView/gridChild.js +32 -6
  168. package/dist/src/view/gridView/gridView.d.ts +39 -1
  169. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  170. package/dist/src/view/gridView/gridView.js +113 -42
  171. package/dist/src/view/gridView/gridView.test.d.ts +2 -0
  172. package/dist/src/view/gridView/gridView.test.d.ts.map +1 -0
  173. package/dist/src/view/gridView/scrollbar.d.ts +39 -8
  174. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  175. package/dist/src/view/gridView/scrollbar.js +184 -69
  176. package/dist/src/view/gridView/selectionRect.d.ts +8 -4
  177. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  178. package/dist/src/view/gridView/selectionRect.js +28 -3
  179. package/dist/src/view/gridView/selectionRect.test.d.ts +2 -0
  180. package/dist/src/view/gridView/selectionRect.test.d.ts.map +1 -0
  181. package/dist/src/view/layerView.d.ts +14 -0
  182. package/dist/src/view/layerView.d.ts.map +1 -1
  183. package/dist/src/view/layerView.js +66 -0
  184. package/dist/src/view/layerView.test.d.ts +2 -0
  185. package/dist/src/view/layerView.test.d.ts.map +1 -0
  186. package/dist/src/view/paramMediator.d.ts +2 -1
  187. package/dist/src/view/paramMediator.d.ts.map +1 -1
  188. package/dist/src/view/paramMediator.js +13 -1
  189. package/dist/src/view/testUtils.d.ts.map +1 -1
  190. package/dist/src/view/testUtils.js +18 -5
  191. package/dist/src/view/unitView.d.ts.map +1 -1
  192. package/dist/src/view/unitView.js +52 -12
  193. package/dist/src/view/view.d.ts +23 -7
  194. package/dist/src/view/view.d.ts.map +1 -1
  195. package/dist/src/view/view.js +61 -5
  196. package/dist/src/view/viewDispose.test.d.ts +2 -0
  197. package/dist/src/view/viewDispose.test.d.ts.map +1 -0
  198. package/dist/src/view/viewUtils.d.ts +4 -4
  199. package/dist/src/view/viewUtils.d.ts.map +1 -1
  200. package/dist/src/view/viewUtils.js +19 -15
  201. package/dist/src/view/viewUtils.test.d.ts +2 -0
  202. package/dist/src/view/viewUtils.test.d.ts.map +1 -0
  203. package/package.json +10 -10
  204. package/dist/bundle/__vite-browser-external-C--ziKoh.js +0 -8
  205. package/dist/bundle/_commonjsHelpers-DjF3Plf2.js +0 -26
  206. package/dist/bundle/index-5ajWdKly.js +0 -1319
  207. package/dist/bundle/index-B03-Om4z.js +0 -274
  208. package/dist/bundle/index-BftNdA0O.js +0 -27
  209. package/dist/bundle/index-Bg7C4Xat.js +0 -2750
  210. package/dist/bundle/index-C3QR8Lv6.js +0 -2131
  211. package/dist/bundle/index-DTcHjAHp.js +0 -505
  212. package/dist/bundle/index-DnIkxb0L.js +0 -1025
  213. package/dist/bundle/index-Ww3TAo6_.js +0 -71
  214. package/dist/bundle/index-g8iXgW0W.js +0 -651
  215. package/dist/bundle/long-B-FASCSo.js +0 -2387
  216. package/dist/bundle/remoteFile-BuaqFGWk.js +0 -94
  217. package/dist/src/data/collector.test.js +0 -138
  218. package/dist/src/data/dataFlow.test.js +0 -5
  219. package/dist/src/data/flow.test.js +0 -81
  220. package/dist/src/data/flowNode.test.js +0 -50
  221. package/dist/src/data/flowOptimizer.test.js +0 -204
  222. package/dist/src/data/formats/fasta.test.js +0 -27
  223. package/dist/src/data/sources/inlineSource.test.js +0 -63
  224. package/dist/src/data/sources/sequenceSource.test.js +0 -81
  225. package/dist/src/data/transforms/aggregate.test.js +0 -134
  226. package/dist/src/data/transforms/clone.test.js +0 -11
  227. package/dist/src/data/transforms/coverage.test.js +0 -238
  228. package/dist/src/data/transforms/filter.test.js +0 -20
  229. package/dist/src/data/transforms/flatten.test.js +0 -96
  230. package/dist/src/data/transforms/flattenDelimited.test.js +0 -90
  231. package/dist/src/data/transforms/flattenSequence.test.js +0 -34
  232. package/dist/src/data/transforms/formula.test.js +0 -25
  233. package/dist/src/data/transforms/identifier.test.js +0 -92
  234. package/dist/src/data/transforms/pileup.test.js +0 -70
  235. package/dist/src/data/transforms/project.test.js +0 -32
  236. package/dist/src/data/transforms/regexExtract.test.js +0 -70
  237. package/dist/src/data/transforms/regexFold.test.js +0 -201
  238. package/dist/src/data/transforms/sample.test.js +0 -38
  239. package/dist/src/data/transforms/stack.test.js +0 -91
  240. package/dist/src/encoder/accessor.test.js +0 -162
  241. package/dist/src/encoder/encoder.test.js +0 -105
  242. package/dist/src/genome/genome.test.js +0 -268
  243. package/dist/src/genome/genomes.test.js +0 -8
  244. package/dist/src/genome/scaleIndex.test.js +0 -78
  245. package/dist/src/genome/scaleLocus.test.js +0 -4
  246. package/dist/src/scale/scale.test.js +0 -326
  247. package/dist/src/scale/ticks.test.js +0 -46
  248. package/dist/src/selection/selection.test.js +0 -14
  249. package/dist/src/utils/addBaseUrl.test.js +0 -30
  250. package/dist/src/utils/binnedIndex.test.js +0 -201
  251. package/dist/src/utils/cloner.test.js +0 -35
  252. package/dist/src/utils/coalesce.test.js +0 -16
  253. package/dist/src/utils/concatIterables.test.js +0 -8
  254. package/dist/src/utils/domainArray.test.js +0 -130
  255. package/dist/src/utils/indexer.test.js +0 -49
  256. package/dist/src/utils/interactionEvent.test.js +0 -35
  257. package/dist/src/utils/iterateNestedMaps.test.js +0 -33
  258. package/dist/src/utils/kWayMerge.test.js +0 -30
  259. package/dist/src/utils/mergeObjects.test.js +0 -42
  260. package/dist/src/utils/numberExtractor.test.js +0 -6
  261. package/dist/src/utils/propertyCacher.test.js +0 -89
  262. package/dist/src/utils/propertyCoalescer.test.js +0 -25
  263. package/dist/src/utils/radixSort.test.js +0 -51
  264. package/dist/src/utils/reservationMap.test.js +0 -20
  265. package/dist/src/utils/ringBuffer.test.js +0 -39
  266. package/dist/src/utils/topK.test.js +0 -54
  267. package/dist/src/utils/trees.test.js +0 -135
  268. package/dist/src/utils/url.test.js +0 -28
  269. package/dist/src/utils/variableTools.test.js +0 -13
  270. package/dist/src/view/axisResolution.d.ts.map +0 -1
  271. package/dist/src/view/axisResolution.test.d.ts.map +0 -1
  272. package/dist/src/view/axisResolution.test.js +0 -206
  273. package/dist/src/view/flowBuilder.test.js +0 -125
  274. package/dist/src/view/layout/flexLayout.test.js +0 -323
  275. package/dist/src/view/layout/grid.test.js +0 -71
  276. package/dist/src/view/layout/rectangle.test.js +0 -192
  277. package/dist/src/view/paramMediator.test.js +0 -260
  278. package/dist/src/view/scaleResolution.d.ts.map +0 -1
  279. package/dist/src/view/scaleResolution.js +0 -1049
  280. package/dist/src/view/scaleResolution.test.d.ts.map +0 -1
  281. package/dist/src/view/scaleResolution.test.js +0 -645
  282. package/dist/src/view/view.test.js +0 -245
  283. package/dist/src/view/viewFactory.test.js +0 -25
  284. /package/dist/src/{view → scales}/axisResolution.test.d.ts +0 -0
  285. /package/dist/src/{view → scales}/scaleResolution.test.d.ts +0 -0
@@ -0,0 +1,103 @@
1
+ import { isContinuous } from "vega-scale";
2
+
3
+ import {
4
+ isPositionalChannel,
5
+ isPrimaryPositionalChannel,
6
+ } from "../encoder/encoder.js";
7
+ import {
8
+ INDEX,
9
+ LOCUS,
10
+ NOMINAL,
11
+ ORDINAL,
12
+ QUANTITATIVE,
13
+ } from "./scaleResolutionConstants.js";
14
+
15
+ /**
16
+ * @typedef {import("../spec/channel.js").Channel} Channel
17
+ */
18
+
19
+ /**
20
+ * @param {Channel} channel
21
+ * @param {import("../spec/channel.js").Type} dataType
22
+ * @returns {import("../spec/scale.js").ScaleType}
23
+ */
24
+ export function getDefaultScaleType(channel, dataType) {
25
+ // TODO: Band scale, Bin-Quantitative
26
+
27
+ if (dataType == INDEX || dataType == LOCUS) {
28
+ if (isPrimaryPositionalChannel(channel)) {
29
+ return dataType;
30
+ } else {
31
+ // TODO: Also explicitly set scales should be validated
32
+ throw new Error(
33
+ channel +
34
+ " does not support " +
35
+ dataType +
36
+ " data type. Only positional channels do."
37
+ );
38
+ }
39
+ }
40
+
41
+ /**
42
+ * @type {Partial<Record<Channel, (import("../spec/scale.js").ScaleType | undefined)[]>>}
43
+ * Default types: nominal, ordinal, quantitative.
44
+ * undefined = incompatible, "null" = disabled (pass-thru)
45
+ */
46
+ const defaults = {
47
+ x: ["band", "band", "linear"],
48
+ y: ["band", "band", "linear"],
49
+ size: [undefined, "point", "linear"],
50
+ opacity: [undefined, "point", "linear"],
51
+ fillOpacity: [undefined, "point", "linear"],
52
+ strokeOpacity: [undefined, "point", "linear"],
53
+ color: ["ordinal", "ordinal", "linear"],
54
+ fill: ["ordinal", "ordinal", "linear"],
55
+ stroke: ["ordinal", "ordinal", "linear"],
56
+ strokeWidth: [undefined, undefined, "linear"],
57
+ shape: ["ordinal", "ordinal", undefined],
58
+ dx: [undefined, undefined, "null"],
59
+ dy: [undefined, undefined, "null"],
60
+ angle: [undefined, undefined, "linear"],
61
+ sample: ["null", undefined, undefined],
62
+ };
63
+
64
+ /** @type {Channel[]} */
65
+ const typelessChannels = ["sample"];
66
+
67
+ const type = typelessChannels.includes(channel)
68
+ ? "null"
69
+ : defaults[channel]
70
+ ? defaults[channel][
71
+ [NOMINAL, ORDINAL, QUANTITATIVE].indexOf(dataType)
72
+ ]
73
+ : dataType == QUANTITATIVE
74
+ ? "linear"
75
+ : "ordinal";
76
+
77
+ if (type === undefined) {
78
+ throw new Error(
79
+ 'Channel "' +
80
+ channel +
81
+ '" is not compatible with "' +
82
+ dataType +
83
+ '" data type. Use of a proper scale may be needed.'
84
+ );
85
+ }
86
+
87
+ return type;
88
+ }
89
+
90
+ /**
91
+ * @param {import("../spec/scale.js").Scale} props
92
+ * @param {Channel} channel
93
+ */
94
+ export function applyLockedProperties(props, channel) {
95
+ if (isPositionalChannel(channel) && props.type !== "ordinal") {
96
+ // Unit ranges are a temporary default until pixel ranges are adopted.
97
+ props.range = [0, 1];
98
+ }
99
+
100
+ if (channel == "opacity" && isContinuous(props.type)) {
101
+ props.clamp = true;
102
+ }
103
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scaleRules.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaleRules.test.d.ts","sourceRoot":"","sources":["../../../src/scales/scaleRules.test.js"],"names":[],"mappings":""}
@@ -166,19 +166,15 @@ export interface ValueDefBase<V extends Value = Scalar> {
166
166
  export type ValueDef<V extends Value = Scalar> = ValueDefBase<V> & TitleMixins;
167
167
 
168
168
  export interface DatumDef<V extends Scalar | ExprRef = Scalar | ExprRef>
169
- extends Partial<TypeMixins<Type>>,
170
- BandMixins,
171
- ScaleMixins,
172
- TitleMixins {
169
+ extends Partial<TypeMixins<Type>>, BandMixins, ScaleMixins, TitleMixins {
173
170
  /**
174
171
  * A constant value in data domain.
175
172
  */
176
173
  datum?: V;
177
174
  }
178
175
 
179
- export interface ExprDef<>extends Partial<TypeMixins<Type>>,
180
- BandMixins,
181
- TitleMixins {
176
+ export interface ExprDef
177
+ extends Partial<TypeMixins<Type>>, BandMixins, TitleMixins {
182
178
  /**
183
179
  * An expression. Properties of the data can be accessed through the `datum` object.
184
180
  */
@@ -200,17 +196,16 @@ export type MarkPropDatumDef<T extends Type> = LegendMixins &
200
196
  ScaleDatumDef &
201
197
  TypeMixins<T>;
202
198
 
203
- export interface LegendMixins {
204
- /**
205
- * An object defining properties of the legend.
206
- * If `null`, the legend for the encoding channel will be removed.
207
- *
208
- * __Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.
209
- *
210
- * __See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.
211
- */
212
- // TODO: legend?: Legend<ExprRef | SignalRef> | null;
213
- }
199
+ /**
200
+ * An object defining properties of the legend.
201
+ * If `null`, the legend for the encoding channel will be removed.
202
+ *
203
+ * __Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.
204
+ *
205
+ * __See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.
206
+ */
207
+ // TODO: legend?: Legend<ExprRef | SignalRef> | null;
208
+ export type LegendMixins = Record<string, never>;
214
209
 
215
210
  export type ConditionalTemplate =
216
211
  | FieldDef<any>
@@ -1,4 +1,3 @@
1
- import { Type } from "./channel.js";
2
1
  import { Data } from "./data.js";
3
2
  import { Align, FontStyle, FontWeight } from "./font.js";
4
3
  import { Scale } from "./scale.js";
@@ -31,11 +30,13 @@ export interface SampleSpec extends ViewSpecBase {
31
30
  stickySummaries?: boolean;
32
31
  }
33
32
 
33
+ export type SampleAttributeType = "nominal" | "ordinal" | "quantitative";
34
+
34
35
  export interface SampleAttributeDef {
35
36
  /**
36
37
  * The attribute type. One of `"nominal"`, `"ordinal"`, or `"quantitative"`.
37
38
  */
38
- type?: Type; // TODO: Omit index/locus from available types
39
+ type?: SampleAttributeType;
39
40
 
40
41
  /**
41
42
  * Scale definition for the (default) color channel
@@ -47,6 +47,12 @@ export interface Scale {
47
47
  */
48
48
  type?: ScaleType;
49
49
 
50
+ /**
51
+ * The genome assembly name for locus scales. If undefined, the default
52
+ * genome from the genome store is used.
53
+ */
54
+ assembly?: string;
55
+
50
56
  /**
51
57
  * Customized domain values.
52
58
  *
@@ -40,6 +40,11 @@ export interface EmbedOptions {
40
40
  * @genome-spy/app package.
41
41
  */
42
42
  powerPreference?: "default" | "high-performance" | "low-power";
43
+
44
+ /**
45
+ * Optional hook for handling launch errors. Return true to suppress default UI.
46
+ */
47
+ onError?: (error: unknown, container: HTMLElement) => boolean | void;
43
48
  }
44
49
 
45
50
  /**
@@ -1,5 +1,5 @@
1
1
  import { ComplexDomain, NumericDomain } from "../spec/scale.js";
2
- import ScaleResolution from "../view/scaleResolution.js";
2
+ import ScaleResolution from "../scales/scaleResolution.js";
3
3
 
4
4
  export type ScaleResolutionEventType = "domain" | "range";
5
5
  export interface ScaleResolutionEvent {
@@ -22,7 +22,7 @@ export type DataLoadingStatus = "loading" | "complete" | "error";
22
22
  * ViewContext provides essential data and interfaces to View classes.
23
23
  */
24
24
  export default interface ViewContext {
25
- dataFlow: DataFlow<View>;
25
+ dataFlow: DataFlow;
26
26
  glHelper: WebGLHelper;
27
27
  animator: Animator;
28
28
  genomeStore?: GenomeStore;
@@ -11,6 +11,24 @@ export default class ConcatView extends GridView {
11
11
  * @param {string} name
12
12
  */
13
13
  constructor(spec: import("../spec/view.js").AnyConcatSpec, context: import("../types/viewContext.js").default, layoutParent: import("./containerView.js").default, dataParent: import("./view.js").default, name: string);
14
+ /**
15
+ * Adds a child spec dynamically. Intended for post-initialization updates.
16
+ *
17
+ * Callers should prefer this over direct GridView insertion to ensure
18
+ * dataflow initialization, axis wiring, and layout reflow are handled.
19
+ *
20
+ * @param {import("../spec/view.js").ViewSpec} childSpec
21
+ * @param {number} [index]
22
+ * @returns {Promise<import("./view.js").default>}
23
+ */
24
+ addChildSpec(childSpec: import("../spec/view.js").ViewSpec, index?: number): Promise<import("./view.js").default>;
25
+ /**
26
+ * Removes a child by index. Intended for post-initialization updates.
27
+ *
28
+ * @param {number} index
29
+ */
30
+ removeChildAt(index: number): Promise<void>;
31
+ #private;
14
32
  }
15
33
  import GridView from "./gridView/gridView.js";
16
34
  //# sourceMappingURL=concatView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"concatView.d.ts","sourceRoot":"","sources":["../../../src/view/concatView.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IACI;;;;;;;OAOG;IACH,kBANW,OAAO,iBAAiB,EAAE,aAAa,WACvC,OAAO,yBAAyB,EAAE,OAAO,gBACzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,EAiBhB;CAqDJ;qBAlFoB,wBAAwB"}
1
+ {"version":3,"file":"concatView.d.ts","sourceRoot":"","sources":["../../../src/view/concatView.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IACI;;;;;;;OAOG;IACH,kBANW,OAAO,iBAAiB,EAAE,aAAa,WACvC,OAAO,yBAAyB,EAAE,OAAO,gBACzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,EAiBhB;IA6BD;;;;;;;;;OASG;IACH,wBAJW,OAAO,iBAAiB,EAAE,QAAQ,UAClC,MAAM,GACJ,OAAO,CAAC,OAAO,WAAW,EAAE,OAAO,CAAC,CAIhD;IAED;;;;OAIG;IACH,qBAFW,MAAM,iBAIhB;;CA2EJ;qBA3JoB,wBAAwB"}
@@ -1,5 +1,6 @@
1
1
  import { isConcatSpec, isHConcatSpec, isVConcatSpec } from "./viewFactory.js";
2
2
  import GridView from "./gridView/gridView.js";
3
+ import ContainerMutationHelper from "./containerMutationHelper.js";
3
4
 
4
5
  /**
5
6
  * Creates a vertically or horizontally concatenated layout for children.
@@ -57,6 +58,29 @@ export default class ConcatView extends GridView {
57
58
  await this.createAxes();
58
59
  }
59
60
 
61
+ /**
62
+ * Adds a child spec dynamically. Intended for post-initialization updates.
63
+ *
64
+ * Callers should prefer this over direct GridView insertion to ensure
65
+ * dataflow initialization, axis wiring, and layout reflow are handled.
66
+ *
67
+ * @param {import("../spec/view.js").ViewSpec} childSpec
68
+ * @param {number} [index]
69
+ * @returns {Promise<import("./view.js").default>}
70
+ */
71
+ async addChildSpec(childSpec, index) {
72
+ return this.#getMutationHelper().addChildSpec(childSpec, index);
73
+ }
74
+
75
+ /**
76
+ * Removes a child by index. Intended for post-initialization updates.
77
+ *
78
+ * @param {number} index
79
+ */
80
+ async removeChildAt(index) {
81
+ await this.#getMutationHelper().removeChildAt(index);
82
+ }
83
+
60
84
  /**
61
85
  * @param {import("../spec/channel.js").Channel} channel
62
86
  * @param {import("../spec/view.js").ResolutionTarget} resolutionType
@@ -81,4 +105,53 @@ export default class ConcatView extends GridView {
81
105
  return "independent";
82
106
  }
83
107
  }
108
+
109
+ /**
110
+ * @returns {{
111
+ * specs: (import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec)[],
112
+ * insertAt: (index: number, spec: import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec) => void,
113
+ * removeAt: (index: number) => void
114
+ * }}
115
+ */
116
+ #getChildSpecs() {
117
+ const spec = this.spec;
118
+ let specs;
119
+
120
+ if (isConcatSpec(spec)) {
121
+ specs = spec.concat;
122
+ } else if (isVConcatSpec(spec)) {
123
+ specs = spec.vconcat;
124
+ } else {
125
+ specs = spec.hconcat;
126
+ }
127
+
128
+ return {
129
+ specs,
130
+ insertAt: (index, childSpec) => {
131
+ specs.splice(index, 0, childSpec);
132
+ },
133
+ removeAt: (index) => {
134
+ specs.splice(index, 1);
135
+ },
136
+ };
137
+ }
138
+
139
+ /**
140
+ * @returns {ContainerMutationHelper}
141
+ */
142
+ #getMutationHelper() {
143
+ return new ContainerMutationHelper(this, {
144
+ getChildSpecs: this.#getChildSpecs.bind(this),
145
+ insertView: (view, index) => this.insertChildViewAt(view, index),
146
+ removeView: (index) => super.removeChildAt(index),
147
+ prepareView: async (view, _index, gridChild) => {
148
+ await gridChild.createAxes();
149
+ await this.syncSharedAxes();
150
+ },
151
+ afterRemove: async () => {
152
+ await this.syncSharedAxes();
153
+ },
154
+ defaultName: (_index) => "grid" + this.childCount,
155
+ });
156
+ }
84
157
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=concatView.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concatView.test.d.ts","sourceRoot":"","sources":["../../../src/view/concatView.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Shared helper for dynamic container mutations.
3
+ * Encapsulates the common lifecycle for adding/removing child views.
4
+ */
5
+ export default class ContainerMutationHelper {
6
+ /**
7
+ * @typedef {import("./view.js").default} View
8
+ * @typedef {import("../spec/view.js").ViewSpec} ViewSpec
9
+ * @typedef {import("../spec/view.js").ImportSpec} ImportSpec
10
+ *
11
+ * @typedef {{
12
+ * specs: (ViewSpec | ImportSpec)[],
13
+ * insertAt: (index: number, spec: ViewSpec | ImportSpec) => void,
14
+ * removeAt: (index: number) => void
15
+ * }} ChildSpecs
16
+ */
17
+ /**
18
+ * @typedef {{
19
+ * getChildSpecs: () => ChildSpecs,
20
+ * insertView: (view: View, index: number) => any,
21
+ * removeView: (index: number) => void,
22
+ * prepareView?: (view: View, index: number, insertionResult: any) => Promise<void>,
23
+ * afterRemove?: (index: number) => Promise<void>,
24
+ * defaultName?: (index: number, spec: ViewSpec | ImportSpec) => string,
25
+ * requestLayout?: boolean
26
+ * }} MutationOptions
27
+ */
28
+ /**
29
+ * @param {import("./containerView.js").default} container
30
+ * @param {MutationOptions} options
31
+ */
32
+ constructor(container: import("./containerView.js").default, options: {
33
+ getChildSpecs: () => {
34
+ specs: (import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec)[];
35
+ insertAt: (index: number, spec: import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec) => void;
36
+ removeAt: (index: number) => void;
37
+ };
38
+ insertView: (view: import("./view.js").default, index: number) => any;
39
+ removeView: (index: number) => void;
40
+ prepareView?: (view: import("./view.js").default, index: number, insertionResult: any) => Promise<void>;
41
+ afterRemove?: (index: number) => Promise<void>;
42
+ defaultName?: (index: number, spec: import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec) => string;
43
+ requestLayout?: boolean;
44
+ });
45
+ container: import("./containerView.js").default;
46
+ options: {
47
+ getChildSpecs: () => {
48
+ specs: (import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec)[];
49
+ insertAt: (index: number, spec: import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec) => void;
50
+ removeAt: (index: number) => void;
51
+ };
52
+ insertView: (view: import("./view.js").default, index: number) => any;
53
+ removeView: (index: number) => void;
54
+ prepareView?: (view: import("./view.js").default, index: number, insertionResult: any) => Promise<void>;
55
+ afterRemove?: (index: number) => Promise<void>;
56
+ defaultName?: (index: number, spec: import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec) => string;
57
+ requestLayout?: boolean;
58
+ };
59
+ /**
60
+ * Adds a child spec dynamically and initializes its subtree dataflow.
61
+ *
62
+ * @param {import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec} childSpec
63
+ * @param {number} [index]
64
+ * @returns {Promise<View>}
65
+ */
66
+ addChildSpec(childSpec: import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec, index?: number): Promise<import("./view.js").default>;
67
+ /**
68
+ * Removes a child by index and updates the backing spec list.
69
+ *
70
+ * @param {number} index
71
+ */
72
+ removeChildAt(index: number): Promise<void>;
73
+ }
74
+ //# sourceMappingURL=containerMutationHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerMutationHelper.d.ts","sourceRoot":"","sources":["../../../src/view/containerMutationHelper.js"],"names":[],"mappings":"AAOA;;;GAGG;AACH;IACI;;;;;;;;;;OAUG;IAEH;;;;;;;;;;OAUG;IAEH;;;OAGG;IACH,uBAHW,OAAO,oBAAoB,EAAE,OAAO;uBAX3B;mBARR,CAAC,yEAAqB,CAAC,EAAE;sBACtB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,yEAAqB,KAAK,IAAI;sBACpD,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;SAMF;oBACnB,CAAC,IAAI,6BAAM,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG;oBAClC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;sBACrB,CAAC,IAAI,6BAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC;sBAClE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;sBAChC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,yEAAqB,KAAK,MAAM;wBACpD,OAAO;OAW3B;IAFG,gDAA0B;IAC1B;uBAhBgB;mBARR,CAAC,yEAAqB,CAAC,EAAE;sBACtB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,yEAAqB,KAAK,IAAI;sBACpD,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;SAMF;oBACnB,CAAC,IAAI,6BAAM,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG;oBAClC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;sBACrB,CAAC,IAAI,6BAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC;sBAClE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;sBAChC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,yEAAqB,KAAK,MAAM;wBACpD,OAAO;MAUF;IAG1B;;;;;;OAMG;IACH,wBAJW,OAAO,iBAAiB,EAAE,QAAQ,GAAG,OAAO,iBAAiB,EAAE,UAAU,UACzE,MAAM,GACJ,OAAO,6BAAM,CA0CzB;IAED;;;;OAIG;IACH,qBAFW,MAAM,iBAehB;CACJ"}
@@ -0,0 +1,114 @@
1
+ import {
2
+ initializeViewSubtree,
3
+ loadViewSubtreeData,
4
+ } from "../data/flowInit.js";
5
+ import { configureViewOpacity } from "../genomeSpy/viewHierarchyConfig.js";
6
+ import { finalizeSubtreeGraphics } from "./viewUtils.js";
7
+
8
+ /**
9
+ * Shared helper for dynamic container mutations.
10
+ * Encapsulates the common lifecycle for adding/removing child views.
11
+ */
12
+ export default class ContainerMutationHelper {
13
+ /**
14
+ * @typedef {import("./view.js").default} View
15
+ * @typedef {import("../spec/view.js").ViewSpec} ViewSpec
16
+ * @typedef {import("../spec/view.js").ImportSpec} ImportSpec
17
+ *
18
+ * @typedef {{
19
+ * specs: (ViewSpec | ImportSpec)[],
20
+ * insertAt: (index: number, spec: ViewSpec | ImportSpec) => void,
21
+ * removeAt: (index: number) => void
22
+ * }} ChildSpecs
23
+ */
24
+
25
+ /**
26
+ * @typedef {{
27
+ * getChildSpecs: () => ChildSpecs,
28
+ * insertView: (view: View, index: number) => any,
29
+ * removeView: (index: number) => void,
30
+ * prepareView?: (view: View, index: number, insertionResult: any) => Promise<void>,
31
+ * afterRemove?: (index: number) => Promise<void>,
32
+ * defaultName?: (index: number, spec: ViewSpec | ImportSpec) => string,
33
+ * requestLayout?: boolean
34
+ * }} MutationOptions
35
+ */
36
+
37
+ /**
38
+ * @param {import("./containerView.js").default} container
39
+ * @param {MutationOptions} options
40
+ */
41
+ constructor(container, options) {
42
+ this.container = container;
43
+ this.options = options;
44
+ }
45
+
46
+ /**
47
+ * Adds a child spec dynamically and initializes its subtree dataflow.
48
+ *
49
+ * @param {import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec} childSpec
50
+ * @param {number} [index]
51
+ * @returns {Promise<View>}
52
+ */
53
+ async addChildSpec(childSpec, index) {
54
+ const { specs, insertAt } = this.options.getChildSpecs();
55
+ const insertIndex = index ?? specs.length;
56
+ const name =
57
+ this.options.defaultName?.(insertIndex, childSpec) ??
58
+ "child" + specs.length;
59
+
60
+ const childView = await this.container.context.createOrImportView(
61
+ childSpec,
62
+ this.container,
63
+ this.container,
64
+ name
65
+ );
66
+
67
+ insertAt(insertIndex, childSpec);
68
+ const insertionResult = this.options.insertView(childView, insertIndex);
69
+
70
+ if (this.options.prepareView) {
71
+ await this.options.prepareView(
72
+ childView,
73
+ insertIndex,
74
+ insertionResult
75
+ );
76
+ }
77
+
78
+ configureViewOpacity(childView);
79
+
80
+ const { dataSources, graphicsPromises } = initializeViewSubtree(
81
+ childView,
82
+ this.container.context.dataFlow
83
+ );
84
+ await loadViewSubtreeData(childView, dataSources);
85
+ await finalizeSubtreeGraphics(graphicsPromises);
86
+
87
+ if (this.options.requestLayout !== false) {
88
+ this.container.invalidateSizeCache();
89
+ this.container.context.requestLayoutReflow();
90
+ }
91
+
92
+ return childView;
93
+ }
94
+
95
+ /**
96
+ * Removes a child by index and updates the backing spec list.
97
+ *
98
+ * @param {number} index
99
+ */
100
+ async removeChildAt(index) {
101
+ const { removeAt } = this.options.getChildSpecs();
102
+ this.options.removeView(index);
103
+ removeAt(index);
104
+
105
+ if (this.options.afterRemove) {
106
+ await this.options.afterRemove(index);
107
+ }
108
+
109
+ if (this.options.requestLayout !== false) {
110
+ this.container.invalidateSizeCache();
111
+ this.container.context.requestLayoutReflow();
112
+ }
113
+ }
114
+ }
@@ -14,13 +14,6 @@ export default class ContainerView extends View {
14
14
  constructor(spec: import("../spec/view.js").ContainerSpec, context: import("../types/viewContext.js").default, layoutParent: ContainerView, dataParent: import("./view.js").default, name: string, options?: import("./view.js").ViewOptions);
15
15
  spec: import("../spec/view.js").ContainerSpec;
16
16
  initializeChildren(): Promise<void>;
17
- /**
18
- * Replaces a child view with another one. Does not alter the old or new child.
19
- *
20
- * @param {import("./view.js").default} child
21
- * @param {import("./view.js").default} replacement
22
- */
23
- replaceChild(child: import("./view.js").default, replacement: import("./view.js").default): void;
24
17
  /**
25
18
  * @param {string[]} path An array of view names
26
19
  * @returns {View}
@@ -1 +1 @@
1
- {"version":3,"file":"containerView.d.ts","sourceRoot":"","sources":["../../../src/view/containerView.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;IACI;;;;;;;;OAQG;IACH,kBAPW,OAAO,iBAAiB,EAAE,aAAa,WACvC,OAAO,yBAAyB,EAAE,OAAO,gBACzC,aAAa,cACb,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAMzC;IADG,8CAAgB;IAGpB,oCAEC;IASD;;;;;OAKG;IACH,oBAHW,OAAO,WAAW,EAAE,OAAO,eAC3B,OAAO,WAAW,EAAE,OAAO,QAIrC;IA+CD;;;OAGG;IACH,2BAHW,MAAM,EAAE,GACN,IAAI,CAYhB;IAED;;;OAGG;IACH,sBAFW,MAAM,QAQhB;IAED;;;OAGG;IACH,2BAFW,MAAM,QAchB;IA1GD;;OAEG;IACH,qBAFa,gBAAgB,CAAC,IAAI,CAAC,CAIlC;CA+GJ;iBA7I4C,WAAW"}
1
+ {"version":3,"file":"containerView.d.ts","sourceRoot":"","sources":["../../../src/view/containerView.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;IACI;;;;;;;;OAQG;IACH,kBAPW,OAAO,iBAAiB,EAAE,aAAa,WACvC,OAAO,yBAAyB,EAAE,OAAO,gBACzC,aAAa,cACb,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAMzC;IADG,8CAAgB;IAGpB,oCAEC;IAsDD;;;OAGG;IACH,2BAHW,MAAM,EAAE,GACN,IAAI,CAYhB;IAED;;;OAGG;IACH,sBAFW,MAAM,QAQhB;IAED;;;OAGG;IACH,2BAFW,MAAM,QAchB;IAhGD;;OAEG;IACH,qBAFa,gBAAgB,CAAC,IAAI,CAAC,CAIlC;CAqGJ;iBAnI4C,WAAW"}
@@ -30,16 +30,6 @@ export default class ContainerView extends View {
30
30
  // override
31
31
  }
32
32
 
33
- /**
34
- * Replaces a child view with another one. Does not alter the old or new child.
35
- *
36
- * @param {import("./view.js").default} child
37
- * @param {import("./view.js").default} replacement
38
- */
39
- replaceChild(child, replacement) {
40
- throw new Error("Not implemented");
41
- }
42
-
43
33
  /**
44
34
  * Visits child views in depth-first pre-order. Terminates the search and returns
45
35
  * the value if the visitor returns a defined value. The `afterChildren` callback
@@ -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,kBALW,OAAO,gBAAgB,EAAE,SAAS,WAClC,OAAO,gBAAgB,EAAE,WAAW,UACpC,aAAa,QACb,MAAM,EA8BhB;IAzBG,UAAgB;IAEhB,WAEC;IAED;;;;OAIG;IACH,aAFU,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAYvC;IAED,oDAAoD;IACpD,kBADY,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CACa;IA2BjE,sBAIC;IAED;;;OAGG;IACH,qBAFW,KAAK,GAAG,QAAQ,OAwB1B;IAED,qBAyCC;IAED,qBASC;IA6BD,kDAgBC;IAOD;;;;OAIG;IACH,gBAJW,OAAO,4CAA4C,EAAE,OAAO,UAC5D,OAAO,uBAAuB,EAAE,OAAO,YACvC,OAAO,WAAW,EAAE,gBAAgB,QA2L9C;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,kBALW,OAAO,gBAAgB,EAAE,SAAS,WAClC,OAAO,gBAAgB,EAAE,WAAW,UACpC,aAAa,QACb,MAAM,EA8BhB;IAzBG,UAAgB;IAEhB,WAEC;IAED;;;;OAIG;IACH,aAFU,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAYvC;IAED,oDAAoD;IACpD,kBADY,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CACa;IAajE,sBAIC;IAED;;;OAGG;IACH,qBAFW,KAAK,GAAG,QAAQ,OAwB1B;IAED,qBAyCC;IAED,qBASC;IA6BD,kDAgBC;IAOD;;;;OAIG;IACH,gBAJW,OAAO,4CAA4C,EAAE,OAAO,UAC5D,OAAO,uBAAuB,EAAE,OAAO,YACvC,OAAO,WAAW,EAAE,gBAAgB,QA2L9C;IA3KO,wBAA0B;CA4KrC;2BAjbY,QAAQ,GAAG,KAAK;;;;;;aA4CnB,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE;;;0BA1Df,oBAAoB;qBACzB,eAAe"}
@@ -120,20 +120,6 @@ export default class FacetView extends ContainerView {
120
120
  }
121
121
  }
122
122
 
123
- /**
124
- * @param {import("./view.js").default} child
125
- * @param {import("./view.js").default} replacement
126
- */
127
- replaceChild(child, replacement) {
128
- if (child !== this.child) {
129
- throw new Error("Not my child!");
130
- }
131
-
132
- this.child = /** @type {UnitView | LayerView | DecoratorView} */ (
133
- replacement
134
- );
135
- }
136
-
137
123
  transformData() {
138
124
  super.transformData();
139
125
  // A hacky solution for updating facets. TODO: Something more robust.
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * @param {View} root
3
- * @param {DataFlow<View>} [existingFlow] Add data flow
3
+ * @param {DataFlow} [existingFlow] Add data flow
4
4
  * graphs to an existing DataFlow object.
5
5
  */
6
- export function buildDataFlow(root: import("./view.js").default, existingFlow?: DataFlow<import("./view.js").default>): DataFlow<import("./view.js").default>;
6
+ export function buildDataFlow(root: import("./view.js").default, existingFlow?: DataFlow): DataFlow;
7
7
  /**
8
8
  * Changes the ChromPos channelDefs into FieldDefs and returns
9
9
  * LinearizeGenomicCoordinate transform(s) that should be inserted into
@@ -1 +1 @@
1
- {"version":3,"file":"flowBuilder.d.ts","sourceRoot":"","sources":["../../../src/view/flowBuilder.js"],"names":[],"mappings":"AAwBA;;;;GAIG;AACH,gFAHW,QAAQ,6BAAM,yCAkMxB;AAED;;;;;;GAMG;AACH;;;IAgGc;;;OAGG;;EAYhB;AAgCD;;;;;;GAMG;AACH,4BAFwB,CAAC,SAAZ,qCAAU,cAFZ,CAAC,iBACA,uCAAW;;;0BAwBG,OAAO,CAAC,QAAQ,CAAC,OAAO,qBAAqB,EAAE,KAAK,CAAC,CAAC;EAkB/E;qBA5ZoB,qBAAqB;sBANpB,sBAAsB"}
1
+ {"version":3,"file":"flowBuilder.d.ts","sourceRoot":"","sources":["../../../src/view/flowBuilder.js"],"names":[],"mappings":"AAwBA;;;;GAIG;AACH,gFAHW,QAAQ,YAmNlB;AAED;;;;;;GAMG;AACH;;;IAgGc;;;OAGG;;EAYhB;AAgCD;;;;;;GAMG;AACH,4BAFwB,CAAC,SAAZ,qCAAU,cAFZ,CAAC,iBACA,uCAAW;;;0BAwBG,OAAO,CAAC,QAAQ,CAAC,OAAO,qBAAqB,EAAE,KAAK,CAAC,CAAC;EAkB/E;qBA7aoB,qBAAqB;sBANpB,sBAAsB"}