@genome-spy/core 0.67.0 → 0.69.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 (290) hide show
  1. package/dist/bundle/index.es.js +15884 -13130
  2. package/dist/bundle/index.js +130 -149
  3. package/dist/schema.json +6498 -6191
  4. package/dist/src/data/collector.d.ts +20 -0
  5. package/dist/src/data/collector.d.ts.map +1 -1
  6. package/dist/src/data/collector.js +148 -0
  7. package/dist/src/data/dataFlow.d.ts +6 -0
  8. package/dist/src/data/dataFlow.d.ts.map +1 -1
  9. package/dist/src/data/dataFlow.js +20 -0
  10. package/dist/src/data/flowInit.d.ts.map +1 -1
  11. package/dist/src/data/flowInit.js +2 -3
  12. package/dist/src/data/flowNode.d.ts +33 -10
  13. package/dist/src/data/flowNode.d.ts.map +1 -1
  14. package/dist/src/data/flowNode.js +84 -13
  15. package/dist/src/data/flowTestUtils.d.ts +2 -2
  16. package/dist/src/data/flowTestUtils.d.ts.map +1 -1
  17. package/dist/src/data/flowTestUtils.js +5 -4
  18. package/dist/src/data/keyIndex.d.ts +18 -0
  19. package/dist/src/data/keyIndex.d.ts.map +1 -0
  20. package/dist/src/data/keyIndex.js +241 -0
  21. package/dist/src/data/keyIndex.test.d.ts +2 -0
  22. package/dist/src/data/keyIndex.test.d.ts.map +1 -0
  23. package/dist/src/data/sources/dataSource.d.ts.map +1 -1
  24. package/dist/src/data/sources/dataSource.js +7 -3
  25. package/dist/src/data/sources/dataSourceFactory.d.ts +14 -12
  26. package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -1
  27. package/dist/src/data/sources/dataSourceFactory.js +52 -16
  28. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  29. package/dist/src/data/sources/lazy/bigBedSource.js +11 -10
  30. package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
  31. package/dist/src/data/sources/lazy/bigWigSource.js +11 -10
  32. package/dist/src/data/sources/lazy/mockLazySource.d.ts +29 -0
  33. package/dist/src/data/sources/lazy/mockLazySource.d.ts.map +1 -0
  34. package/dist/src/data/sources/lazy/mockLazySource.js +44 -0
  35. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +22 -1
  36. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  37. package/dist/src/data/sources/lazy/singleAxisLazySource.js +34 -2
  38. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  39. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +16 -1
  40. package/dist/src/data/sources/lazy/tabixSource.d.ts +0 -1
  41. package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
  42. package/dist/src/data/sources/lazy/tabixSource.js +56 -16
  43. package/dist/src/data/sources/sequenceSource.d.ts.map +1 -1
  44. package/dist/src/data/sources/sequenceSource.js +5 -3
  45. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  46. package/dist/src/data/sources/urlSource.js +7 -3
  47. package/dist/src/data/transforms/filter.d.ts +4 -4
  48. package/dist/src/data/transforms/filter.d.ts.map +1 -1
  49. package/dist/src/data/transforms/filter.js +13 -7
  50. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  51. package/dist/src/data/transforms/filterScoredLabels.js +11 -6
  52. package/dist/src/data/transforms/filterScoredLabels.test.d.ts +2 -0
  53. package/dist/src/data/transforms/filterScoredLabels.test.d.ts.map +1 -0
  54. package/dist/src/data/transforms/formula.d.ts +4 -4
  55. package/dist/src/data/transforms/formula.d.ts.map +1 -1
  56. package/dist/src/data/transforms/formula.js +12 -6
  57. package/dist/src/data/transforms/measureText.d.ts +2 -2
  58. package/dist/src/data/transforms/measureText.d.ts.map +1 -1
  59. package/dist/src/data/transforms/measureText.js +16 -12
  60. package/dist/src/data/transforms/stack.d.ts.map +1 -1
  61. package/dist/src/data/transforms/stack.js +1 -0
  62. package/dist/src/data/transforms/transform.d.ts +2 -2
  63. package/dist/src/data/transforms/transform.d.ts.map +1 -1
  64. package/dist/src/data/transforms/transform.js +3 -3
  65. package/dist/src/encoder/accessor.d.ts +51 -4
  66. package/dist/src/encoder/accessor.d.ts.map +1 -1
  67. package/dist/src/encoder/accessor.js +174 -10
  68. package/dist/src/encoder/encoder.d.ts +11 -2
  69. package/dist/src/encoder/encoder.d.ts.map +1 -1
  70. package/dist/src/encoder/encoder.js +29 -9
  71. package/dist/src/encoder/metadataChannels.d.ts +15 -0
  72. package/dist/src/encoder/metadataChannels.d.ts.map +1 -0
  73. package/dist/src/encoder/metadataChannels.js +65 -0
  74. package/dist/src/encoder/metadataChannels.test.d.ts +2 -0
  75. package/dist/src/encoder/metadataChannels.test.d.ts.map +1 -0
  76. package/dist/src/genome/genome.d.ts +8 -0
  77. package/dist/src/genome/genome.d.ts.map +1 -1
  78. package/dist/src/genome/genome.js +16 -1
  79. package/dist/src/genome/scaleLocus.d.ts.map +1 -1
  80. package/dist/src/genome/scaleLocus.js +14 -1
  81. package/dist/src/genomeSpy/containerUi.d.ts +0 -1
  82. package/dist/src/genomeSpy/containerUi.d.ts.map +1 -1
  83. package/dist/src/genomeSpy/containerUi.js +0 -14
  84. package/dist/src/genomeSpy/inputBindingManager.js +1 -1
  85. package/dist/src/genomeSpy/interactionController.d.ts.map +1 -1
  86. package/dist/src/genomeSpy/interactionController.js +7 -1
  87. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts +3 -7
  88. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts.map +1 -1
  89. package/dist/src/genomeSpy/loadingIndicatorManager.js +68 -20
  90. package/dist/src/genomeSpy/loadingStatusRegistry.d.ts +52 -0
  91. package/dist/src/genomeSpy/loadingStatusRegistry.d.ts.map +1 -0
  92. package/dist/src/genomeSpy/loadingStatusRegistry.js +86 -0
  93. package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -1
  94. package/dist/src/genomeSpy/viewContextFactory.js +0 -1
  95. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -1
  96. package/dist/src/genomeSpy/viewDataInit.js +56 -11
  97. package/dist/src/genomeSpy.d.ts +0 -2
  98. package/dist/src/genomeSpy.d.ts.map +1 -1
  99. package/dist/src/genomeSpy.js +47 -27
  100. package/dist/src/gl/glslScaleGenerator.js +1 -1
  101. package/dist/src/marks/mark.d.ts.map +1 -1
  102. package/dist/src/marks/mark.js +40 -41
  103. package/dist/src/marks/markUtils.js +1 -1
  104. package/dist/src/marks/point.d.ts.map +1 -1
  105. package/dist/src/marks/point.js +4 -6
  106. package/dist/src/paramRuntime/expressionCompiler.d.ts +7 -0
  107. package/dist/src/paramRuntime/expressionCompiler.d.ts.map +1 -0
  108. package/dist/src/paramRuntime/expressionCompiler.js +10 -0
  109. package/dist/src/paramRuntime/expressionRef.d.ts +20 -0
  110. package/dist/src/paramRuntime/expressionRef.d.ts.map +1 -0
  111. package/dist/src/paramRuntime/expressionRef.js +95 -0
  112. package/dist/src/paramRuntime/expressionRef.test.d.ts +2 -0
  113. package/dist/src/paramRuntime/expressionRef.test.d.ts.map +1 -0
  114. package/dist/src/paramRuntime/graphRuntime.d.ts +176 -0
  115. package/dist/src/paramRuntime/graphRuntime.d.ts.map +1 -0
  116. package/dist/src/paramRuntime/graphRuntime.js +628 -0
  117. package/dist/src/paramRuntime/graphRuntime.test.d.ts +2 -0
  118. package/dist/src/paramRuntime/graphRuntime.test.d.ts.map +1 -0
  119. package/dist/src/paramRuntime/index.d.ts +9 -0
  120. package/dist/src/paramRuntime/index.d.ts.map +1 -0
  121. package/dist/src/paramRuntime/index.js +8 -0
  122. package/dist/src/paramRuntime/lifecycleRegistry.d.ts +27 -0
  123. package/dist/src/paramRuntime/lifecycleRegistry.d.ts.map +1 -0
  124. package/dist/src/paramRuntime/lifecycleRegistry.js +54 -0
  125. package/dist/src/paramRuntime/paramRuntime.d.ts +165 -0
  126. package/dist/src/paramRuntime/paramRuntime.d.ts.map +1 -0
  127. package/dist/src/paramRuntime/paramRuntime.js +222 -0
  128. package/dist/src/paramRuntime/paramRuntime.test.d.ts +2 -0
  129. package/dist/src/paramRuntime/paramRuntime.test.d.ts.map +1 -0
  130. package/dist/src/paramRuntime/paramStore.d.ts +68 -0
  131. package/dist/src/paramRuntime/paramStore.d.ts.map +1 -0
  132. package/dist/src/paramRuntime/paramStore.js +148 -0
  133. package/dist/src/paramRuntime/paramStore.test.d.ts +2 -0
  134. package/dist/src/paramRuntime/paramStore.test.d.ts.map +1 -0
  135. package/dist/src/paramRuntime/paramUtils.d.ts +86 -0
  136. package/dist/src/paramRuntime/paramUtils.d.ts.map +1 -0
  137. package/dist/src/paramRuntime/paramUtils.js +272 -0
  138. package/dist/src/paramRuntime/selectionStore.d.ts +6 -0
  139. package/dist/src/paramRuntime/selectionStore.d.ts.map +1 -0
  140. package/dist/src/paramRuntime/selectionStore.js +13 -0
  141. package/dist/src/paramRuntime/types.d.ts +16 -0
  142. package/dist/src/paramRuntime/types.d.ts.map +1 -0
  143. package/dist/src/paramRuntime/types.js +25 -0
  144. package/dist/src/paramRuntime/viewParamRuntime.d.ts +164 -0
  145. package/dist/src/paramRuntime/viewParamRuntime.d.ts.map +1 -0
  146. package/dist/src/paramRuntime/viewParamRuntime.js +443 -0
  147. package/dist/src/scale/scale.d.ts +6 -1
  148. package/dist/src/scale/scale.d.ts.map +1 -1
  149. package/dist/src/scale/scale.js +83 -23
  150. package/dist/src/scales/axisResolution.d.ts.map +1 -1
  151. package/dist/src/scales/axisResolution.js +10 -0
  152. package/dist/src/scales/{scaleDomainAggregator.d.ts → domainPlanner.d.ts} +6 -3
  153. package/dist/src/scales/domainPlanner.d.ts.map +1 -0
  154. package/dist/src/scales/{scaleDomainAggregator.js → domainPlanner.js} +128 -10
  155. package/dist/src/scales/domainPlanner.test.d.ts +2 -0
  156. package/dist/src/scales/domainPlanner.test.d.ts.map +1 -0
  157. package/dist/src/scales/scaleInstanceManager.d.ts +6 -3
  158. package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -1
  159. package/dist/src/scales/scaleInstanceManager.js +17 -11
  160. package/dist/src/scales/scaleInteractionController.d.ts +6 -0
  161. package/dist/src/scales/scaleInteractionController.d.ts.map +1 -1
  162. package/dist/src/scales/scaleInteractionController.js +41 -3
  163. package/dist/src/scales/scaleResolution.d.ts +20 -17
  164. package/dist/src/scales/scaleResolution.d.ts.map +1 -1
  165. package/dist/src/scales/scaleResolution.js +188 -71
  166. package/dist/src/scales/scaleResolution.test.d.ts.map +1 -1
  167. package/dist/src/selection/selection.d.ts +21 -0
  168. package/dist/src/selection/selection.d.ts.map +1 -1
  169. package/dist/src/selection/selection.js +83 -1
  170. package/dist/src/spec/channel.d.ts +52 -15
  171. package/dist/src/spec/coreSchemaRoot.d.ts +53 -0
  172. package/dist/src/spec/data.d.ts +4 -0
  173. package/dist/src/spec/parameter.d.ts +16 -11
  174. package/dist/src/spec/root.d.ts +1 -1
  175. package/dist/src/spec/testing.d.ts +12 -0
  176. package/dist/src/spec/testing.d.ts.map +1 -0
  177. package/dist/src/spec/testing.js +20 -0
  178. package/dist/src/spec/view.d.ts +157 -41
  179. package/dist/src/styles/genome-spy.css +3 -31
  180. package/dist/src/styles/genome-spy.css.d.ts +1 -1
  181. package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
  182. package/dist/src/styles/genome-spy.css.js +0 -29
  183. package/dist/src/tooltip/dataTooltipHandler.d.ts +1 -1
  184. package/dist/src/tooltip/dataTooltipHandler.js +23 -32
  185. package/dist/src/tooltip/dataTooltipHandler.test.d.ts +2 -0
  186. package/dist/src/tooltip/dataTooltipHandler.test.d.ts.map +1 -0
  187. package/dist/src/tooltip/flattenDatumRows.d.ts +13 -0
  188. package/dist/src/tooltip/flattenDatumRows.d.ts.map +1 -0
  189. package/dist/src/tooltip/flattenDatumRows.js +47 -0
  190. package/dist/src/tooltip/flattenDatumRows.test.d.ts +2 -0
  191. package/dist/src/tooltip/flattenDatumRows.test.d.ts.map +1 -0
  192. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts +1 -1
  193. package/dist/src/tooltip/refseqGeneTooltipHandler.js +7 -1
  194. package/dist/src/tooltip/tooltipContext.d.ts +13 -0
  195. package/dist/src/tooltip/tooltipContext.d.ts.map +1 -0
  196. package/dist/src/tooltip/tooltipContext.js +543 -0
  197. package/dist/src/tooltip/tooltipContext.test.d.ts +2 -0
  198. package/dist/src/tooltip/tooltipContext.test.d.ts.map +1 -0
  199. package/dist/src/tooltip/tooltipHandler.d.ts +40 -1
  200. package/dist/src/tooltip/tooltipHandler.d.ts.map +1 -1
  201. package/dist/src/tooltip/tooltipHandler.ts +62 -1
  202. package/dist/src/types/encoder.d.ts +38 -3
  203. package/dist/src/types/rendering.d.ts +4 -3
  204. package/dist/src/types/viewContext.d.ts +0 -14
  205. package/dist/src/utils/inputBinding.d.ts +10 -2
  206. package/dist/src/utils/inputBinding.d.ts.map +1 -1
  207. package/dist/src/utils/inputBinding.js +12 -3
  208. package/dist/src/utils/throttle.d.ts +4 -1
  209. package/dist/src/utils/throttle.d.ts.map +1 -1
  210. package/dist/src/utils/throttle.js +54 -23
  211. package/dist/src/utils/throttle.test.d.ts +2 -0
  212. package/dist/src/utils/throttle.test.d.ts.map +1 -0
  213. package/dist/src/utils/transition.d.ts +21 -0
  214. package/dist/src/utils/transition.d.ts.map +1 -1
  215. package/dist/src/utils/transition.js +28 -0
  216. package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
  217. package/dist/src/utils/ui/tooltip.js +7 -1
  218. package/dist/src/utils/ui/tooltip.test.d.ts +2 -0
  219. package/dist/src/utils/ui/tooltip.test.d.ts.map +1 -0
  220. package/dist/src/view/axisGridView.d.ts.map +1 -1
  221. package/dist/src/view/axisGridView.js +22 -5
  222. package/dist/src/view/axisView.d.ts.map +1 -1
  223. package/dist/src/view/axisView.js +20 -5
  224. package/dist/src/view/concatView.js +3 -3
  225. package/dist/src/view/containerMutationHelper.js +1 -1
  226. package/dist/src/view/containerView.d.ts +9 -5
  227. package/dist/src/view/containerView.d.ts.map +1 -1
  228. package/dist/src/view/containerView.js +34 -9
  229. package/dist/src/view/dataReadiness.d.ts +46 -0
  230. package/dist/src/view/dataReadiness.d.ts.map +1 -0
  231. package/dist/src/view/dataReadiness.js +267 -0
  232. package/dist/src/view/dataReadiness.test.d.ts +2 -0
  233. package/dist/src/view/dataReadiness.test.d.ts.map +1 -0
  234. package/dist/src/view/facetView.d.ts.map +1 -1
  235. package/dist/src/view/facetView.js +7 -5
  236. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  237. package/dist/src/view/flowBuilder.js +17 -4
  238. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  239. package/dist/src/view/gridView/gridChild.js +16 -3
  240. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  241. package/dist/src/view/gridView/gridView.js +119 -2
  242. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  243. package/dist/src/view/gridView/scrollbar.js +3 -0
  244. package/dist/src/view/gridView/selectionRect.d.ts +6 -10
  245. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  246. package/dist/src/view/gridView/selectionRect.js +22 -24
  247. package/dist/src/view/gridView/separatorView.d.ts +51 -0
  248. package/dist/src/view/gridView/separatorView.d.ts.map +1 -0
  249. package/dist/src/view/gridView/separatorView.js +275 -0
  250. package/dist/src/view/layerView.d.ts.map +1 -1
  251. package/dist/src/view/layerView.js +7 -5
  252. package/dist/src/view/layout/flexLayout.d.ts +0 -30
  253. package/dist/src/view/layout/flexLayout.d.ts.map +1 -1
  254. package/dist/src/view/layout/flexLayout.js +0 -86
  255. package/dist/src/view/multiscale.d.ts +35 -0
  256. package/dist/src/view/multiscale.d.ts.map +1 -0
  257. package/dist/src/view/multiscale.js +233 -0
  258. package/dist/src/view/multiscale.test.d.ts +2 -0
  259. package/dist/src/view/multiscale.test.d.ts.map +1 -0
  260. package/dist/src/view/testUtils.d.ts.map +1 -1
  261. package/dist/src/view/testUtils.js +6 -1
  262. package/dist/src/view/unitView.d.ts +8 -13
  263. package/dist/src/view/unitView.d.ts.map +1 -1
  264. package/dist/src/view/unitView.js +120 -45
  265. package/dist/src/view/view.d.ts +27 -18
  266. package/dist/src/view/view.d.ts.map +1 -1
  267. package/dist/src/view/view.js +298 -37
  268. package/dist/src/view/viewFactory.d.ts +0 -12
  269. package/dist/src/view/viewFactory.d.ts.map +1 -1
  270. package/dist/src/view/viewFactory.js +55 -25
  271. package/dist/src/view/viewParamRuntime.test.d.ts +2 -0
  272. package/dist/src/view/viewParamRuntime.test.d.ts.map +1 -0
  273. package/dist/src/view/viewSelectors.d.ts +148 -0
  274. package/dist/src/view/viewSelectors.d.ts.map +1 -0
  275. package/dist/src/view/viewSelectors.js +776 -0
  276. package/dist/src/view/viewSelectors.test.d.ts +2 -0
  277. package/dist/src/view/viewSelectors.test.d.ts.map +1 -0
  278. package/dist/src/view/viewUtils.d.ts +0 -8
  279. package/dist/src/view/viewUtils.d.ts.map +1 -1
  280. package/dist/src/view/viewUtils.js +1 -21
  281. package/package.json +4 -4
  282. package/dist/src/scales/scaleDomainAggregator.d.ts.map +0 -1
  283. package/dist/src/scales/scaleDomainAggregator.test.d.ts +0 -2
  284. package/dist/src/scales/scaleDomainAggregator.test.d.ts.map +0 -1
  285. package/dist/src/spec/sampleView.d.ts +0 -197
  286. package/dist/src/view/paramMediator.d.ts +0 -149
  287. package/dist/src/view/paramMediator.d.ts.map +0 -1
  288. package/dist/src/view/paramMediator.js +0 -478
  289. package/dist/src/view/paramMediator.test.d.ts +0 -2
  290. package/dist/src/view/paramMediator.test.d.ts.map +0 -1
@@ -1,9 +1,48 @@
1
1
  import { TemplateResult } from "lit";
2
2
  import Mark from "../marks/mark.js";
3
+ export type TooltipGenomicDisplayMode = "auto" | "locus" | "interval" | "endpoints" | "disabled";
4
+ export interface TooltipGenomicAxisConfig {
5
+ mode?: TooltipGenomicDisplayMode;
6
+ }
7
+ export interface TooltipHandlerParams {
8
+ genomicCoordinates?: Partial<Record<"x" | "y", TooltipGenomicAxisConfig | TooltipGenomicDisplayMode>>;
9
+ [key: string]: any;
10
+ }
11
+ export interface TooltipRow {
12
+ key: string;
13
+ value: any;
14
+ }
15
+ export interface TooltipContext {
16
+ /**
17
+ * A list of row keys that should be hidden from the default tooltip table.
18
+ */
19
+ hiddenRowKeys?: string[];
20
+ /**
21
+ * Derived genomic rows to render before raw data rows.
22
+ */
23
+ genomicRows?: TooltipRow[];
24
+ /**
25
+ * Utility for flattening datum fields into tooltip rows.
26
+ */
27
+ flattenDatumRows?: () => TooltipRow[];
28
+ /**
29
+ * Utility for formatting a continuous genomic position.
30
+ */
31
+ formatGenomicLocus?: (axis: "x" | "y", continuousPos: number) => string | undefined;
32
+ /**
33
+ * Utility for formatting a continuous genomic interval.
34
+ */
35
+ formatGenomicInterval?: (axis: "x" | "y", interval: [number, number]) => string | undefined;
36
+ }
3
37
  /**
4
38
  * Converts a datum to tooltip (HTMLElement or lit's TemplateResult).
39
+ *
40
+ * TODO: `mark` leaks internals. Keep it for compatibility in this major
41
+ * version and replace with a stable tooltip context in the next major.
5
42
  */
6
43
  export type TooltipHandler = (datum: Record<string, any>, mark: Mark,
7
44
  /** Optional parameters from the view specification */
8
- params?: Record<string, any>) => Promise<string | TemplateResult | HTMLElement>;
45
+ params?: TooltipHandlerParams,
46
+ /** Optional precomputed context from GenomeSpy internals */
47
+ context?: TooltipContext) => Promise<string | TemplateResult | HTMLElement>;
9
48
  //# sourceMappingURL=tooltipHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltipHandler.d.ts","sourceRoot":"","sources":["../../../src/tooltip/tooltipHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAEpC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,IAAI,EAAE,IAAI;AACV,sDAAsD;AACtD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC3B,OAAO,CAAC,MAAM,GAAG,cAAc,GAAG,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"tooltipHandler.d.ts","sourceRoot":"","sources":["../../../src/tooltip/tooltipHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAEpC,MAAM,MAAM,yBAAyB,GAC/B,MAAM,GACN,OAAO,GACP,UAAU,GACV,WAAW,GACX,UAAU,CAAC;AAEjB,MAAM,WAAW,wBAAwB;IACrC,IAAI,CAAC,EAAE,yBAAyB,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACjC,kBAAkB,CAAC,EAAE,OAAO,CACxB,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,wBAAwB,GAAG,yBAAyB,CAAC,CAC1E,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,GAAG,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAE3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,UAAU,EAAE,CAAC;IAEtC;;OAEG;IACH,kBAAkB,CAAC,EAAE,CACjB,IAAI,EAAE,GAAG,GAAG,GAAG,EACf,aAAa,EAAE,MAAM,KACpB,MAAM,GAAG,SAAS,CAAC;IAExB;;OAEG;IACH,qBAAqB,CAAC,EAAE,CACpB,IAAI,EAAE,GAAG,GAAG,GAAG,EACf,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KACzB,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,IAAI,EAAE,IAAI;AACV,sDAAsD;AACtD,MAAM,CAAC,EAAE,oBAAoB;AAC7B,4DAA4D;AAC5D,OAAO,CAAC,EAAE,cAAc,KACvB,OAAO,CAAC,MAAM,GAAG,cAAc,GAAG,WAAW,CAAC,CAAC"}
@@ -1,12 +1,73 @@
1
1
  import { TemplateResult } from "lit";
2
2
  import Mark from "../marks/mark.js";
3
3
 
4
+ export type TooltipGenomicDisplayMode =
5
+ | "auto"
6
+ | "locus"
7
+ | "interval"
8
+ | "endpoints"
9
+ | "disabled";
10
+
11
+ export interface TooltipGenomicAxisConfig {
12
+ mode?: TooltipGenomicDisplayMode;
13
+ }
14
+
15
+ export interface TooltipHandlerParams {
16
+ genomicCoordinates?: Partial<
17
+ Record<"x" | "y", TooltipGenomicAxisConfig | TooltipGenomicDisplayMode>
18
+ >;
19
+ [key: string]: any;
20
+ }
21
+
22
+ export interface TooltipRow {
23
+ key: string;
24
+ value: any;
25
+ }
26
+
27
+ export interface TooltipContext {
28
+ /**
29
+ * A list of row keys that should be hidden from the default tooltip table.
30
+ */
31
+ hiddenRowKeys?: string[];
32
+
33
+ /**
34
+ * Derived genomic rows to render before raw data rows.
35
+ */
36
+ genomicRows?: TooltipRow[];
37
+
38
+ /**
39
+ * Utility for flattening datum fields into tooltip rows.
40
+ */
41
+ flattenDatumRows?: () => TooltipRow[];
42
+
43
+ /**
44
+ * Utility for formatting a continuous genomic position.
45
+ */
46
+ formatGenomicLocus?: (
47
+ axis: "x" | "y",
48
+ continuousPos: number
49
+ ) => string | undefined;
50
+
51
+ /**
52
+ * Utility for formatting a continuous genomic interval.
53
+ */
54
+ formatGenomicInterval?: (
55
+ axis: "x" | "y",
56
+ interval: [number, number]
57
+ ) => string | undefined;
58
+ }
59
+
4
60
  /**
5
61
  * Converts a datum to tooltip (HTMLElement or lit's TemplateResult).
62
+ *
63
+ * TODO: `mark` leaks internals. Keep it for compatibility in this major
64
+ * version and replace with a stable tooltip context in the next major.
6
65
  */
7
66
  export type TooltipHandler = (
8
67
  datum: Record<string, any>,
9
68
  mark: Mark,
10
69
  /** Optional parameters from the view specification */
11
- params?: Record<string, any>
70
+ params?: TooltipHandlerParams,
71
+ /** Optional precomputed context from GenomeSpy internals */
72
+ context?: TooltipContext
12
73
  ) => Promise<string | TemplateResult | HTMLElement>;
@@ -15,12 +15,17 @@ import {
15
15
  ScaleDiverging,
16
16
  ScaleContinuousNumeric,
17
17
  } from "d3-scale";
18
- import { Channel, ChannelDef, ChannelWithScale } from "../spec/channel.js";
18
+ import {
19
+ Channel,
20
+ ChannelDef,
21
+ ChannelDefWithScale,
22
+ ChannelWithScale,
23
+ } from "../spec/channel.js";
19
24
  import { ScaleLocus } from "../genome/scaleLocus.js";
20
25
  import { ScaleIndex } from "../genome/scaleIndex.js";
21
26
  import { Scalar } from "../spec/channel.js";
22
27
  import { Datum } from "../data/flowNode.js";
23
- import { ExprRefFunction } from "../view/paramMediator.js";
28
+ import { ExprRefFunction } from "../paramRuntime/types.js";
24
29
 
25
30
  export interface Accessor<T = Scalar> {
26
31
  (datum: Datum): T;
@@ -31,6 +36,13 @@ export interface Accessor<T = Scalar> {
31
36
  */
32
37
  asNumberAccessor(): Accessor<number>;
33
38
 
39
+ /**
40
+ * Returns true if this accessor appears to return the same value as the
41
+ * other accessor for the same datum. Structural comparison based on the
42
+ * data source (ignores channel/predicate/scale).
43
+ */
44
+ equals(other: Accessor): boolean;
45
+
34
46
  /**
35
47
  * True if the accessor returns the same value for all objects
36
48
  */
@@ -51,19 +63,42 @@ export interface Accessor<T = Scalar> {
51
63
  * before visual encoding, indicates with channel has the scale.
52
64
  * If no scale is needed, this is undefined.
53
65
  */
54
- scaleChannel: ChannelWithScale;
66
+ scaleChannel?: ChannelWithScale;
55
67
 
56
68
  /**
57
69
  * The ChannelDef that the accessor is based on
58
70
  */
59
71
  channelDef: ChannelDef;
60
72
 
73
+ /**
74
+ * A stable key derived from the accessor's data source. Used for equality.
75
+ */
76
+ sourceKey?: string;
77
+
78
+ /**
79
+ * A domain key base derived from the channel definition and scale channel.
80
+ * Format: <scaleChannel>|<kind>|<value>
81
+ */
82
+ domainKeyBase?: string;
83
+
84
+ /**
85
+ * A domain key finalized with the resolved data type.
86
+ * Format: <type>|<domainKeyBase>
87
+ */
88
+ domainKey?: string;
89
+
61
90
  /**
62
91
  * This accessor should be used when the predicate is true
63
92
  */
64
93
  predicate: Predicate;
65
94
  }
66
95
 
96
+ export interface ScaleAccessor<T = Scalar> extends Accessor<T> {
97
+ scaleChannel: ChannelWithScale;
98
+ channelDef: ChannelDefWithScale;
99
+ domainKeyBase: string;
100
+ }
101
+
67
102
  export interface Predicate extends ExprRefFunction {
68
103
  /**
69
104
  * The parameter the predicate is based on
@@ -9,14 +9,15 @@ import ViewRenderingContext from "../view/renderingContext/viewRenderingContext.
9
9
  */
10
10
  export interface SampleFacetRenderingOptions {
11
11
  /**
12
- * Location and height on unit scale, zero at top
12
+ * Location and height. Use unit scale by default; when `pixelToUnit` is
13
+ * provided, interpret values as pixels and scale them.
13
14
  */
14
15
  locSize: LocSize;
15
16
 
16
17
  /**
17
- * Target (during transition)
18
+ * Multiply pixel-based locSize values to unit scale.
18
19
  */
19
- targetLocSize?: LocSize;
20
+ pixelToUnit: number;
20
21
  }
21
22
 
22
23
  export interface RenderingOptions {
@@ -66,20 +66,6 @@ export default interface ViewContext {
66
66
 
67
67
  getNamedDataFromProvider: (name: string) => any[];
68
68
 
69
- /**
70
- * Allows lazy data sources to signal that they are loading data.
71
- * The status is shown in the UI somewhere within or near the view.
72
- *
73
- * @param view The view where the data source is located.
74
- * @param status
75
- * @param detail Details about the error, if any.
76
- */
77
- setDataLoadingStatus: (
78
- view: View,
79
- status: DataLoadingStatus,
80
- detail?: string
81
- ) => void;
82
-
83
69
  /**
84
70
  * Highlights a view by adding a border around it. This is useful for debugging.
85
71
  *
@@ -1,5 +1,13 @@
1
1
  /**
2
- * @param {import("../view/paramMediator.js").default} mediator
2
+ * @param {{
3
+ * paramConfigs: ReadonlyMap<string, import("../spec/parameter.js").Parameter>,
4
+ * setValue: (name: string, value: any) => void,
5
+ * getValue: (name: string) => any
6
+ * }} mediator
3
7
  */
4
- export default function createBindingInputs(mediator: import("../view/paramMediator.js").default): import("lit-html").TemplateResult<2 | 1 | 3>[];
8
+ export default function createBindingInputs(mediator: {
9
+ paramConfigs: ReadonlyMap<string, import("../spec/parameter.js").Parameter>;
10
+ setValue: (name: string, value: any) => void;
11
+ getValue: (name: string) => any;
12
+ }): import("lit-html").TemplateResult<2 | 1 | 3>[];
5
13
  //# sourceMappingURL=inputBinding.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inputBinding.d.ts","sourceRoot":"","sources":["../../../src/utils/inputBinding.js"],"names":[],"mappings":"AAKA;;GAEG;AACH,sDAFW,OAAO,0BAA0B,EAAE,OAAO,kDA0IpD"}
1
+ {"version":3,"file":"inputBinding.d.ts","sourceRoot":"","sources":["../../../src/utils/inputBinding.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,sDANW;IACN,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAC5E,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAA;CAChC,kDA+IH"}
@@ -1,10 +1,14 @@
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
+ import { isVariableParameter } from "../paramRuntime/paramUtils.js";
5
5
 
6
6
  /**
7
- * @param {import("../view/paramMediator.js").default} mediator
7
+ * @param {{
8
+ * paramConfigs: ReadonlyMap<string, import("../spec/parameter.js").Parameter>,
9
+ * setValue: (name: string, value: any) => void,
10
+ * getValue: (name: string) => any
11
+ * }} mediator
8
12
  */
9
13
  export default function createBindingInputs(mediator) {
10
14
  const random = Math.floor(Math.random() * 0xffffff).toString(16);
@@ -22,7 +26,12 @@ export default function createBindingInputs(mediator) {
22
26
  }
23
27
 
24
28
  const name = param.name;
25
- const setter = mediator.getSetter(name);
29
+ const setter = (
30
+ /** @type {any} */
31
+ value
32
+ ) => {
33
+ mediator.setValue(name, value);
34
+ };
26
35
  const value = mediator.getValue(name);
27
36
  const label = bind.name ?? name;
28
37
 
@@ -3,6 +3,9 @@
3
3
  *
4
4
  * @param {function} func
5
5
  * @param {number} limit
6
+ * @returns {((...args: any[]) => void) & { cancel: () => void }}
6
7
  */
7
- export default function throttle(func: Function, limit: number): () => void;
8
+ export default function throttle(func: Function, limit: number): ((...args: any[]) => void) & {
9
+ cancel: () => void;
10
+ };
8
11
  //# sourceMappingURL=throttle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../../src/utils/throttle.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wDAFW,MAAM,cA8BhB"}
1
+ {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../../src/utils/throttle.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wDAHW,MAAM,GACJ,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CA8D/D"}
@@ -1,37 +1,68 @@
1
- /* eslint-disable consistent-this */
2
-
3
1
  /**
4
2
  * https://codeburst.io/throttling-and-debouncing-in-javascript-b01cad5c8edf
5
3
  *
6
4
  * @param {function} func
7
5
  * @param {number} limit
6
+ * @returns {((...args: any[]) => void) & { cancel: () => void }}
8
7
  */
9
8
  export default function throttle(func, limit) {
10
- /** @type {number} */
11
- let lastFunc;
9
+ /** @type {ReturnType<typeof setTimeout> | null} */
10
+ let timeoutId = null;
11
+
12
+ /** @type {number | null} */
13
+ let lastRan = null;
14
+
15
+ /** @type {IArguments | null} */
16
+ let lastArgs = null;
12
17
 
13
- /** @type {number} */
14
- let lastRan;
18
+ /** @type {any} */
19
+ let lastContext = null;
15
20
 
16
- return function () {
21
+ const throttled = function () {
17
22
  // eslint-disable-next-line no-invalid-this
18
- const context = this;
23
+ lastContext = this;
19
24
  // eslint-disable-next-line prefer-rest-params
20
- const args = arguments;
21
- if (!lastRan) {
22
- func.apply(context, args);
23
- lastRan = Date.now();
24
- } else {
25
- clearTimeout(lastFunc);
26
- lastFunc = window.setTimeout(
27
- function () {
28
- if (Date.now() - lastRan >= limit) {
29
- func.apply(context, args);
30
- lastRan = Date.now();
31
- }
32
- },
33
- limit - (Date.now() - lastRan)
34
- );
25
+ lastArgs = arguments;
26
+
27
+ const now = Date.now();
28
+ if (lastRan === null) {
29
+ func.apply(lastContext, lastArgs);
30
+ lastRan = now;
31
+ return;
32
+ }
33
+
34
+ const remaining = limit - (now - lastRan);
35
+ if (remaining <= 0) {
36
+ if (timeoutId) {
37
+ clearTimeout(timeoutId);
38
+ timeoutId = null;
39
+ }
40
+ func.apply(lastContext, lastArgs);
41
+ lastRan = now;
42
+ return;
35
43
  }
44
+
45
+ if (timeoutId) {
46
+ clearTimeout(timeoutId);
47
+ }
48
+ timeoutId = setTimeout(() => {
49
+ timeoutId = null;
50
+ if (lastRan !== null && Date.now() - lastRan >= limit) {
51
+ func.apply(lastContext, lastArgs);
52
+ lastRan = Date.now();
53
+ }
54
+ }, remaining);
55
+ };
56
+
57
+ throttled.cancel = () => {
58
+ if (timeoutId) {
59
+ clearTimeout(timeoutId);
60
+ timeoutId = null;
61
+ }
62
+ lastArgs = null;
63
+ lastContext = null;
64
+ lastRan = null;
36
65
  };
66
+
67
+ return throttled;
37
68
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=throttle.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throttle.test.d.ts","sourceRoot":"","sources":["../../../src/utils/throttle.test.js"],"names":[],"mappings":""}
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Lightweight cancellation token for transitions.
3
+ * Use this when you want a cheap, synchronous cancel path without errors.
4
+ *
5
+ * @returns {{ canceled: boolean }}
6
+ */
7
+ export function createCancelToken(): {
8
+ canceled: boolean;
9
+ };
1
10
  /**
2
11
  * @param {TransitionOptions} options
3
12
  *
@@ -11,6 +20,10 @@
11
20
  * @prop {function(function(number):void):void} [requestAnimationFrame]
12
21
  * default: window.requestAnimationFrame
13
22
  * @prop {AbortSignal} [signal]
23
+ * @prop {{ canceled: boolean }} [cancelToken]
24
+ * Prefer this for internal transitions where cancellation is expected and should be cheap.
25
+ * The transition resolves immediately when canceled and does not throw or reject.
26
+ * Use AbortSignal when you need external orchestration or standardized cancellation.
14
27
  */
15
28
  export default function transition(options: TransitionOptions): Promise<any>;
16
29
  export type TransitionOptions = {
@@ -40,5 +53,13 @@ export type TransitionOptions = {
40
53
  */
41
54
  requestAnimationFrame?: (arg0: (arg0: number) => void) => void;
42
55
  signal?: AbortSignal;
56
+ /**
57
+ * Prefer this for internal transitions where cancellation is expected and should be cheap.
58
+ * The transition resolves immediately when canceled and does not throw or reject.
59
+ * Use AbortSignal when you need external orchestration or standardized cancellation.
60
+ */
61
+ cancelToken?: {
62
+ canceled: boolean;
63
+ };
43
64
  };
44
65
  //# sourceMappingURL=transition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../../src/utils/transition.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,4CAbW,iBAAiB,gBAqE3B;;;;;WAlES,MAAM;;;;SACN,MAAM;;;;eACN,MAAM;;;;YACN,MAAM;cACN,CAAS,IAAM,EAAN,MAAM,KAAE,IAAI;;;;qBACrB,CAAS,IAAM,EAAN,MAAM,KAAE,MAAM;;;;4BACvB,CAAS,IAAqB,EAArB,CAAS,IAAM,EAAN,MAAM,KAAE,IAAI,KAAE,IAAI;aAEpC,WAAW"}
1
+ {"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../../src/utils/transition.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,qCAFa;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAIjC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,4CAjBW,iBAAiB,gBAuF3B;;;;;WApFS,MAAM;;;;SACN,MAAM;;;;eACN,MAAM;;;;YACN,MAAM;cACN,CAAS,IAAM,EAAN,MAAM,KAAE,IAAI;;;;qBACrB,CAAS,IAAM,EAAN,MAAM,KAAE,MAAM;;;;4BACvB,CAAS,IAAqB,EAArB,CAAS,IAAM,EAAN,MAAM,KAAE,IAAI,KAAE,IAAI;aAEpC,WAAW;;;;;;kBACX;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE"}
@@ -1,6 +1,16 @@
1
1
  /** @param {number} ms */
2
2
  const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
3
3
 
4
+ /**
5
+ * Lightweight cancellation token for transitions.
6
+ * Use this when you want a cheap, synchronous cancel path without errors.
7
+ *
8
+ * @returns {{ canceled: boolean }}
9
+ */
10
+ export function createCancelToken() {
11
+ return { canceled: false };
12
+ }
13
+
4
14
  /**
5
15
  * @param {TransitionOptions} options
6
16
  *
@@ -14,15 +24,24 @@ const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
14
24
  * @prop {function(function(number):void):void} [requestAnimationFrame]
15
25
  * default: window.requestAnimationFrame
16
26
  * @prop {AbortSignal} [signal]
27
+ * @prop {{ canceled: boolean }} [cancelToken]
28
+ * Prefer this for internal transitions where cancellation is expected and should be cheap.
29
+ * The transition resolves immediately when canceled and does not throw or reject.
30
+ * Use AbortSignal when you need external orchestration or standardized cancellation.
17
31
  */
18
32
  export default function transition(options) {
19
33
  const requestAnimationFrame =
20
34
  options.requestAnimationFrame || window.requestAnimationFrame;
21
35
 
22
36
  const signal = options.signal;
37
+ const cancelToken = options.cancelToken;
23
38
 
24
39
  const makePromise = () =>
25
40
  new Promise((resolve, reject) => {
41
+ if (cancelToken?.canceled) {
42
+ return resolve();
43
+ }
44
+
26
45
  if (signal?.aborted) {
27
46
  return reject("aborted");
28
47
  }
@@ -46,6 +65,11 @@ export default function transition(options) {
46
65
 
47
66
  /** @param {number} stamp */
48
67
  const step = (stamp) => {
68
+ if (cancelToken?.canceled) {
69
+ resolve();
70
+ return;
71
+ }
72
+
49
73
  if (signal?.aborted) {
50
74
  reject("aborted");
51
75
  } else {
@@ -63,6 +87,10 @@ export default function transition(options) {
63
87
  });
64
88
 
65
89
  if (options.delay) {
90
+ if (cancelToken?.canceled) {
91
+ return Promise.resolve();
92
+ }
93
+
66
94
  if (signal?.aborted) {
67
95
  return Promise.reject("aborted");
68
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../../src/utils/ui/tooltip.js"],"names":[],"mappings":"AAIA,0CAA2C,qBAAqB,CAAC;AAEjE;IAsBI;;OAEG;IACH,uBAFW,WAAW,EAUrB;IAED;;OAEG;IACH,mBAFW,OAAO,EAQjB;IAED,cAVW,OAAO,CAYjB;IAED;;OAEG;IACH,qBAFW,OAAO,EAOjB;IAED,eATW,OAAO,CAWjB;IAED,uBAEC;IAED;;OAEG;IACH,0BAFW,OAAO,QAOjB;IAED,wBAEC;IAED;;OAEG;IACH,4BAFW,UAAU,QAsCpB;IA/BG,8BAA2D;IAiC/D,wBAiBC;IAED;;OAEG;IACH,oBAFW,MAAM,GAAG,OAAO,KAAK,EAAE,cAAc,GAAG,WAAW,QAqB7D;IAED,cAGC;IAED;;;;;;;OAOG;IACH,gBAFa,CAAC,SAFH,CAAC,cACD,CAAS,IAAC,EAAD,CAAC,KAAE,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,OAAO,KAAK,EAAE,cAAc,CAAC,QAmBlF;IAED,sBAEC;;CACJ"}
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../../src/utils/ui/tooltip.js"],"names":[],"mappings":"AAIA,0CAA2C,qBAAqB,CAAC;AAEjE;IAsBI;;OAEG;IACH,uBAFW,WAAW,EAUrB;IAED;;OAEG;IACH,mBAFW,OAAO,EAQjB;IAED,cAVW,OAAO,CAYjB;IAED;;OAEG;IACH,qBAFW,OAAO,EAOjB;IAED,eATW,OAAO,CAWjB;IAED,uBAEC;IAED;;OAEG;IACH,0BAFW,OAAO,QAOjB;IAED,wBAEC;IAED;;OAEG;IACH,4BAFW,UAAU,QAsCpB;IA/BG,8BAA2D;IAiC/D,wBAiBC;IAED;;OAEG;IACH,oBAFW,MAAM,GAAG,OAAO,KAAK,EAAE,cAAc,GAAG,WAAW,QAqB7D;IAED,cAGC;IAED;;;;;;;OAOG;IACH,gBAFa,CAAC,SAFH,CAAC,cACD,CAAS,IAAC,EAAD,CAAC,KAAE,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,OAAO,KAAK,EAAE,cAAc,CAAC,QAyBlF;IAED,sBAEC;;CACJ"}
@@ -191,8 +191,14 @@ export default class Tooltip {
191
191
  Promise.resolve(html` ${JSON.stringify(d)} `);
192
192
  }
193
193
 
194
+ const requestedDatum = datum;
194
195
  converter(datum)
195
- .then((result) => this.setContent(result))
196
+ .then((result) => {
197
+ if (this.#previousTooltipDatum !== requestedDatum) {
198
+ return;
199
+ }
200
+ this.setContent(result);
201
+ })
196
202
  .catch((error) => {
197
203
  if (error !== "debounced") {
198
204
  throw error;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tooltip.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/ui/tooltip.test.js"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"axisGridView.d.ts","sourceRoot":"","sources":["../../../src/view/axisGridView.js"],"names":[],"mappings":"AAGA;;;GAGG;AAEH;;;;;;GAMG;AACH;IACI;;;;;;;OAOG;IACH,uBAPW,IAAI,QAEJ,MAAM,WADN,OAAO,yBAAyB,EAAE,OAAO,gBAEzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,YAC3B,OAAO,WAAW,EAAE,WAAW,EA4BzC;IADG,iFAA8B;IAGlC,kDAEC;CAKJ;gCAvDY,OAAO,oBAAoB,EAAE,wBAAwB;iCACrD,OAAO,iBAAiB,EAAE,kBAAkB;;;;mBAM5C,OAAO,WAAW,EAAE,OAAO;;;;mBAC3B,OAAO,iBAAiB,EAAE,IAAI;;;;yBAC9B,OAAO,iBAAiB,EAAE,UAAU;sBAb3B,gBAAgB"}
1
+ {"version":3,"file":"axisGridView.d.ts","sourceRoot":"","sources":["../../../src/view/axisGridView.js"],"names":[],"mappings":"AAIA;;;GAGG;AAEH;;;;;;GAMG;AACH;IACI;;;;;;;OAOG;IACH,uBAPW,IAAI,QAEJ,MAAM,WADN,OAAO,yBAAyB,EAAE,OAAO,gBAEzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,YAC3B,OAAO,WAAW,EAAE,WAAW,EA6BzC;IAHG,iFAA8B;IAKlC,kDAEC;CAKJ;gCAxDY,OAAO,oBAAoB,EAAE,wBAAwB;iCACrD,OAAO,iBAAiB,EAAE,kBAAkB;;;;mBAM5C,OAAO,WAAW,EAAE,OAAO;;;;mBAC3B,OAAO,iBAAiB,EAAE,IAAI;;;;yBAC9B,OAAO,iBAAiB,EAAE,UAAU;sBAd3B,gBAAgB"}
@@ -1,5 +1,6 @@
1
1
  import LayerView from "./layerView.js";
2
2
  import { orient2channel } from "./axisView.js";
3
+ import { markViewAsNonAddressable } from "./viewSelectors.js";
3
4
 
4
5
  /**
5
6
  * @typedef {import("../spec/channel.js").PrimaryPositionalChannel} PositionalChannel
@@ -42,12 +43,13 @@ export default class AxisGridView extends LayerView {
42
43
  `axisGrid_${axisProps.orient}`,
43
44
  {
44
45
  blockEncodingInheritance: true,
45
- contributesToScaleDomain: false,
46
46
  ...options,
47
47
  }
48
48
  );
49
49
 
50
50
  this.axisProps = fullAxisProps;
51
+
52
+ markViewAsNonAddressable(this, { skipSubtree: true });
51
53
  }
52
54
 
53
55
  getOrient() {
@@ -121,7 +123,10 @@ function createRegularAxisGrid(axisProps, type) {
121
123
  minBufferSize: 300,
122
124
  },
123
125
  encoding: {
124
- [channel]: { field: "value", type },
126
+ [channel]: {
127
+ field: "value",
128
+ type,
129
+ },
125
130
  },
126
131
  };
127
132
  }
@@ -153,7 +158,11 @@ function createChromAxisGrid(axisProps, type) {
153
158
  },
154
159
  encoding: {
155
160
  // TODO: { chrom: "name", type: "locus" } // without pos = pos is 0
156
- [channel]: { field: "continuousStart", type, band: 0 },
161
+ [channel]: {
162
+ field: "continuousStart",
163
+ type,
164
+ band: 0,
165
+ },
157
166
  },
158
167
  };
159
168
  }
@@ -180,8 +189,15 @@ function createChromAxisFill(axisProps, type) {
180
189
  },
181
190
  encoding: {
182
191
  // TODO: { chrom: "name", type: "locus" } // without pos = pos is 0
183
- [channel]: { field: "continuousStart", type, band: 0 },
184
- [channel + "2"]: { field: "continuousEnd", band: 0 },
192
+ [channel]: {
193
+ field: "continuousStart",
194
+ type,
195
+ band: 0,
196
+ },
197
+ [channel + "2"]: {
198
+ field: "continuousEnd",
199
+ band: 0,
200
+ },
185
201
  fill: {
186
202
  field: "odd",
187
203
  type: "nominal",
@@ -245,6 +261,7 @@ function createAxisGrid(axisProps, type) {
245
261
  opacity: "independent",
246
262
  },
247
263
  },
264
+ domainInert: true,
248
265
  layer: layers,
249
266
  };
250
267
  }
@@ -1 +1 @@
1
- {"version":3,"file":"axisView.d.ts","sourceRoot":"","sources":["../../../src/view/axisView.js"],"names":[],"mappings":"AAoCA;;GAEG;AACH,kIAEC;AAkYD;;;;GAIG;AACH,wFAHW,MAAM,uCA2MhB;AArmBD;;GAEG;AACH,8BAFU,MAAM,CAAC,OAAO,oBAAoB,EAAE,wBAAwB,EAAE,sCAAY,CAAC,CAKnF;AAEF;;GAEG;AACH,8BAFU,MAAM,uCAAa,OAAO,oBAAoB,EAAE,wBAAwB,CAAC,CAMjF;AASF;;;;;GAKG;AACH;IACI;;;;;;;;;;OAUG;IAEH;;;;;;;OAOG;IACH,6DALW,MAAM,WADN,OAAO,yBAAyB,EAAE,OAAO,gBAEzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,YAC3B,OAAO,WAAW,EAAE,WAAW,EAiCzC;IADG,iFAA8B;IAiBlC,+BAEC;CAKJ;sBA5HqB,gBAAgB"}
1
+ {"version":3,"file":"axisView.d.ts","sourceRoot":"","sources":["../../../src/view/axisView.js"],"names":[],"mappings":"AAqCA;;GAEG;AACH,kIAEC;AAyYD;;;;GAIG;AACH,wFAHW,MAAM,uCAkNhB;AAnnBD;;GAEG;AACH,8BAFU,MAAM,CAAC,OAAO,oBAAoB,EAAE,wBAAwB,EAAE,sCAAY,CAAC,CAKnF;AAEF;;GAEG;AACH,8BAFU,MAAM,uCAAa,OAAO,oBAAoB,EAAE,wBAAwB,CAAC,CAMjF;AASF;;;;;GAKG;AACH;IACI;;;;;;;;;;OAUG;IAEH;;;;;;;OAOG;IACH,6DALW,MAAM,WADN,OAAO,yBAAyB,EAAE,OAAO,gBAEzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,YAC3B,OAAO,WAAW,EAAE,WAAW,EAkCzC;IAHG,iFAA8B;IAmBlC,+BAEC;CAKJ;sBA9HqB,gBAAgB"}