@genome-spy/core 0.65.0 → 0.67.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 (249) hide show
  1. package/dist/bundle/browser-BRemItdO.js +138 -0
  2. package/dist/bundle/{index-CD7FLu9x.js → index-BatuyGAI.js} +23 -21
  3. package/dist/bundle/{index-C0llXMqm.js → index-ByuE8dvu.js} +140 -88
  4. package/dist/bundle/index-Cq3QFUxX.js +1781 -0
  5. package/dist/bundle/index-D28m8tSW.js +1607 -0
  6. package/dist/bundle/index-DbJ0oeYM.js +631 -0
  7. package/dist/bundle/index.es.js +15821 -14601
  8. package/dist/bundle/index.js +214 -212
  9. package/dist/bundle/{inflate-DRgHi_KK.js → inflate-GtwLkvSP.js} +222 -224
  10. package/dist/bundle/unzip-NywezaRR.js +1492 -0
  11. package/dist/schema.json +13 -3
  12. package/dist/src/config/scaleDefaults.d.ts +8 -0
  13. package/dist/src/config/scaleDefaults.d.ts.map +1 -0
  14. package/dist/src/config/scaleDefaults.js +45 -0
  15. package/dist/src/data/flowHandle.d.ts +2 -0
  16. package/dist/src/data/flowHandle.d.ts.map +1 -1
  17. package/dist/src/data/flowHandle.js +1 -0
  18. package/dist/src/data/flowInit.d.ts +12 -4
  19. package/dist/src/data/flowInit.d.ts.map +1 -1
  20. package/dist/src/data/flowInit.js +115 -16
  21. package/dist/src/data/sources/lazy/axisTickSource.js +1 -1
  22. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +1 -1
  23. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  24. package/dist/src/data/sources/lazy/singleAxisLazySource.js +10 -3
  25. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  26. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +5 -1
  27. package/dist/src/data/transforms/filterScoredLabels.d.ts +1 -1
  28. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  29. package/dist/src/data/transforms/filterScoredLabels.js +1 -1
  30. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts.map +1 -1
  31. package/dist/src/data/transforms/linearizeGenomicCoordinate.js +2 -1
  32. package/dist/src/encoder/encoder.d.ts +1 -1
  33. package/dist/src/encoder/encoder.d.ts.map +1 -1
  34. package/dist/src/encoder/encoder.js +1 -1
  35. package/dist/src/genome/scaleLocus.d.ts +39 -0
  36. package/dist/src/genome/scaleLocus.d.ts.map +1 -1
  37. package/dist/src/genome/scaleLocus.js +76 -0
  38. package/dist/src/genomeSpy/canvasExport.d.ts +19 -0
  39. package/dist/src/genomeSpy/canvasExport.d.ts.map +1 -0
  40. package/dist/src/genomeSpy/canvasExport.js +66 -0
  41. package/dist/src/genomeSpy/containerUi.d.ts +17 -0
  42. package/dist/src/genomeSpy/containerUi.d.ts.map +1 -0
  43. package/dist/src/genomeSpy/containerUi.js +78 -0
  44. package/dist/src/genomeSpy/eventListenerRegistry.d.ts +19 -0
  45. package/dist/src/genomeSpy/eventListenerRegistry.d.ts.map +1 -0
  46. package/dist/src/genomeSpy/eventListenerRegistry.js +38 -0
  47. package/dist/src/genomeSpy/inputBindingManager.d.ts +14 -0
  48. package/dist/src/genomeSpy/inputBindingManager.d.ts.map +1 -0
  49. package/dist/src/genomeSpy/inputBindingManager.js +63 -0
  50. package/dist/src/genomeSpy/interactionController.d.ts +40 -0
  51. package/dist/src/genomeSpy/interactionController.d.ts.map +1 -0
  52. package/dist/src/genomeSpy/interactionController.js +371 -0
  53. package/dist/src/genomeSpy/keyboardListenerManager.d.ts +10 -0
  54. package/dist/src/genomeSpy/keyboardListenerManager.d.ts.map +1 -0
  55. package/dist/src/genomeSpy/keyboardListenerManager.js +31 -0
  56. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts +15 -0
  57. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts.map +1 -0
  58. package/dist/src/genomeSpy/loadingIndicatorManager.js +92 -0
  59. package/dist/src/genomeSpy/renderCoordinator.d.ts +22 -0
  60. package/dist/src/genomeSpy/renderCoordinator.d.ts.map +1 -0
  61. package/dist/src/genomeSpy/renderCoordinator.js +118 -0
  62. package/dist/src/genomeSpy/viewContextFactory.d.ts +18 -0
  63. package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -0
  64. package/dist/src/genomeSpy/viewContextFactory.js +79 -0
  65. package/dist/src/genomeSpy/viewDataInit.d.ts +22 -0
  66. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -0
  67. package/dist/src/genomeSpy/viewDataInit.js +160 -0
  68. package/dist/src/genomeSpy/viewDataInit.test.d.ts +2 -0
  69. package/dist/src/genomeSpy/viewDataInit.test.d.ts.map +1 -0
  70. package/dist/src/genomeSpy/viewHierarchyConfig.d.ts +14 -0
  71. package/dist/src/genomeSpy/viewHierarchyConfig.d.ts.map +1 -0
  72. package/dist/src/genomeSpy/viewHierarchyConfig.js +24 -0
  73. package/dist/src/genomeSpy/viewHighlight.d.ts +5 -0
  74. package/dist/src/genomeSpy/viewHighlight.d.ts.map +1 -0
  75. package/dist/src/genomeSpy/viewHighlight.js +30 -0
  76. package/dist/src/genomeSpy.d.ts +17 -71
  77. package/dist/src/genomeSpy.d.ts.map +1 -1
  78. package/dist/src/genomeSpy.js +197 -741
  79. package/dist/src/gl/dataToVertices.d.ts.map +1 -1
  80. package/dist/src/gl/dataToVertices.js +16 -4
  81. package/dist/src/gl/glslScaleGenerator.d.ts +1 -1
  82. package/dist/src/gl/webGLHelper.d.ts +2 -2
  83. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  84. package/dist/src/gl/webGLHelper.js +4 -4
  85. package/dist/src/index.d.ts.map +1 -1
  86. package/dist/src/index.js +2 -12
  87. package/dist/src/marks/mark.d.ts.map +1 -1
  88. package/dist/src/marks/mark.js +4 -2
  89. package/dist/src/{view → scales}/axisResolution.d.ts +9 -16
  90. package/dist/src/scales/axisResolution.d.ts.map +1 -0
  91. package/dist/src/{view → scales}/axisResolution.js +29 -18
  92. package/dist/src/scales/axisResolution.test.d.ts.map +1 -0
  93. package/dist/src/scales/scaleDomainAggregator.d.ts +57 -0
  94. package/dist/src/scales/scaleDomainAggregator.d.ts.map +1 -0
  95. package/dist/src/scales/scaleDomainAggregator.js +167 -0
  96. package/dist/src/scales/scaleDomainAggregator.test.d.ts +2 -0
  97. package/dist/src/scales/scaleDomainAggregator.test.d.ts.map +1 -0
  98. package/dist/src/scales/scaleInstanceManager.d.ts +40 -0
  99. package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -0
  100. package/dist/src/scales/scaleInstanceManager.js +317 -0
  101. package/dist/src/scales/scaleInstanceManager.test.d.ts +2 -0
  102. package/dist/src/scales/scaleInstanceManager.test.d.ts.map +1 -0
  103. package/dist/src/scales/scaleInteractionController.d.ts +73 -0
  104. package/dist/src/scales/scaleInteractionController.d.ts.map +1 -0
  105. package/dist/src/scales/scaleInteractionController.js +336 -0
  106. package/dist/src/scales/scaleInteractionController.test.d.ts +2 -0
  107. package/dist/src/scales/scaleInteractionController.test.d.ts.map +1 -0
  108. package/dist/src/scales/scalePropsResolver.d.ts +23 -0
  109. package/dist/src/scales/scalePropsResolver.d.ts.map +1 -0
  110. package/dist/src/scales/scalePropsResolver.js +74 -0
  111. package/dist/src/{view → scales}/scaleResolution.d.ts +53 -35
  112. package/dist/src/scales/scaleResolution.d.ts.map +1 -0
  113. package/dist/src/scales/scaleResolution.js +732 -0
  114. package/dist/src/scales/scaleResolution.test.d.ts.map +1 -0
  115. package/dist/src/scales/scaleResolutionConstants.d.ts +6 -0
  116. package/dist/src/scales/scaleResolutionConstants.d.ts.map +1 -0
  117. package/dist/src/scales/scaleResolutionConstants.js +5 -0
  118. package/dist/src/scales/scaleRules.d.ts +16 -0
  119. package/dist/src/scales/scaleRules.d.ts.map +1 -0
  120. package/dist/src/scales/scaleRules.js +103 -0
  121. package/dist/src/scales/scaleRules.test.d.ts +2 -0
  122. package/dist/src/scales/scaleRules.test.d.ts.map +1 -0
  123. package/dist/src/spec/channel.d.ts +13 -18
  124. package/dist/src/spec/scale.d.ts +6 -0
  125. package/dist/src/types/embedApi.d.ts +5 -0
  126. package/dist/src/types/scaleResolutionApi.d.ts +1 -1
  127. package/dist/src/utils/domainArray.d.ts.map +1 -1
  128. package/dist/src/utils/domainArray.js +3 -0
  129. package/dist/src/utils/indexer.d.ts +3 -0
  130. package/dist/src/utils/indexer.d.ts.map +1 -1
  131. package/dist/src/utils/indexer.js +3 -0
  132. package/dist/src/view/concatView.d.ts +18 -0
  133. package/dist/src/view/concatView.d.ts.map +1 -1
  134. package/dist/src/view/concatView.js +73 -0
  135. package/dist/src/view/concatView.test.d.ts +2 -0
  136. package/dist/src/view/concatView.test.d.ts.map +1 -0
  137. package/dist/src/view/containerMutationHelper.d.ts +74 -0
  138. package/dist/src/view/containerMutationHelper.d.ts.map +1 -0
  139. package/dist/src/view/containerMutationHelper.js +118 -0
  140. package/dist/src/view/containerView.d.ts +0 -7
  141. package/dist/src/view/containerView.d.ts.map +1 -1
  142. package/dist/src/view/containerView.js +0 -10
  143. package/dist/src/view/facetView.d.ts.map +1 -1
  144. package/dist/src/view/facetView.js +0 -15
  145. package/dist/src/view/flowBuilder.d.ts +5 -3
  146. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  147. package/dist/src/view/flowBuilder.js +69 -6
  148. package/dist/src/view/gridView/gridChild.d.ts +11 -0
  149. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  150. package/dist/src/view/gridView/gridChild.js +32 -6
  151. package/dist/src/view/gridView/gridView.d.ts +39 -1
  152. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  153. package/dist/src/view/gridView/gridView.js +106 -48
  154. package/dist/src/view/gridView/gridView.test.d.ts +2 -0
  155. package/dist/src/view/gridView/gridView.test.d.ts.map +1 -0
  156. package/dist/src/view/gridView/scrollbar.d.ts +39 -8
  157. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  158. package/dist/src/view/gridView/scrollbar.js +184 -69
  159. package/dist/src/view/layerView.d.ts +14 -0
  160. package/dist/src/view/layerView.d.ts.map +1 -1
  161. package/dist/src/view/layerView.js +66 -0
  162. package/dist/src/view/layerView.test.d.ts +2 -0
  163. package/dist/src/view/layerView.test.d.ts.map +1 -0
  164. package/dist/src/view/testUtils.d.ts.map +1 -1
  165. package/dist/src/view/testUtils.js +7 -1
  166. package/dist/src/view/unitView.d.ts.map +1 -1
  167. package/dist/src/view/unitView.js +41 -36
  168. package/dist/src/view/view.d.ts +18 -6
  169. package/dist/src/view/view.d.ts.map +1 -1
  170. package/dist/src/view/view.js +30 -4
  171. package/package.json +2 -2
  172. package/dist/bundle/browser-txUcLy2H.js +0 -123
  173. package/dist/bundle/index-BQpbYrv4.js +0 -1712
  174. package/dist/bundle/index-BhtHKLUo.js +0 -73
  175. package/dist/bundle/index-CCe8rnZz.js +0 -716
  176. package/dist/bundle/index-DhcU-Gk-.js +0 -1487
  177. package/dist/src/data/collector.test.js +0 -138
  178. package/dist/src/data/dataFlow.test.js +0 -38
  179. package/dist/src/data/flow.test.js +0 -81
  180. package/dist/src/data/flowInit.test.js +0 -413
  181. package/dist/src/data/flowNode.test.js +0 -50
  182. package/dist/src/data/flowOptimizer.test.js +0 -209
  183. package/dist/src/data/formats/fasta.test.js +0 -27
  184. package/dist/src/data/sources/inlineSource.test.js +0 -63
  185. package/dist/src/data/sources/sequenceSource.test.js +0 -81
  186. package/dist/src/data/transforms/aggregate.test.js +0 -134
  187. package/dist/src/data/transforms/clone.test.js +0 -11
  188. package/dist/src/data/transforms/coverage.test.js +0 -238
  189. package/dist/src/data/transforms/filter.test.js +0 -20
  190. package/dist/src/data/transforms/flatten.test.js +0 -96
  191. package/dist/src/data/transforms/flattenDelimited.test.js +0 -90
  192. package/dist/src/data/transforms/flattenSequence.test.js +0 -34
  193. package/dist/src/data/transforms/formula.test.js +0 -25
  194. package/dist/src/data/transforms/identifier.test.js +0 -92
  195. package/dist/src/data/transforms/pileup.test.js +0 -70
  196. package/dist/src/data/transforms/project.test.js +0 -32
  197. package/dist/src/data/transforms/regexExtract.test.js +0 -70
  198. package/dist/src/data/transforms/regexFold.test.js +0 -201
  199. package/dist/src/data/transforms/sample.test.js +0 -38
  200. package/dist/src/data/transforms/stack.test.js +0 -91
  201. package/dist/src/encoder/accessor.test.js +0 -162
  202. package/dist/src/encoder/encoder.test.js +0 -105
  203. package/dist/src/genome/genome.test.js +0 -268
  204. package/dist/src/genome/genomes.test.js +0 -8
  205. package/dist/src/genome/scaleIndex.test.js +0 -78
  206. package/dist/src/genome/scaleLocus.test.js +0 -4
  207. package/dist/src/scale/scale.test.js +0 -326
  208. package/dist/src/scale/ticks.test.js +0 -46
  209. package/dist/src/selection/selection.test.js +0 -14
  210. package/dist/src/utils/addBaseUrl.test.js +0 -30
  211. package/dist/src/utils/binnedIndex.test.js +0 -201
  212. package/dist/src/utils/cloner.test.js +0 -35
  213. package/dist/src/utils/coalesce.test.js +0 -16
  214. package/dist/src/utils/concatIterables.test.js +0 -8
  215. package/dist/src/utils/domainArray.test.js +0 -130
  216. package/dist/src/utils/indexer.test.js +0 -49
  217. package/dist/src/utils/interactionEvent.test.js +0 -35
  218. package/dist/src/utils/iterateNestedMaps.test.js +0 -33
  219. package/dist/src/utils/kWayMerge.test.js +0 -30
  220. package/dist/src/utils/mergeObjects.test.js +0 -42
  221. package/dist/src/utils/numberExtractor.test.js +0 -6
  222. package/dist/src/utils/propertyCacher.test.js +0 -89
  223. package/dist/src/utils/propertyCoalescer.test.js +0 -25
  224. package/dist/src/utils/radixSort.test.js +0 -51
  225. package/dist/src/utils/reservationMap.test.js +0 -20
  226. package/dist/src/utils/ringBuffer.test.js +0 -39
  227. package/dist/src/utils/topK.test.js +0 -54
  228. package/dist/src/utils/trees.test.js +0 -135
  229. package/dist/src/utils/url.test.js +0 -28
  230. package/dist/src/utils/variableTools.test.js +0 -13
  231. package/dist/src/view/axisResolution.d.ts.map +0 -1
  232. package/dist/src/view/axisResolution.test.d.ts.map +0 -1
  233. package/dist/src/view/axisResolution.test.js +0 -206
  234. package/dist/src/view/flowBuilder.test.js +0 -125
  235. package/dist/src/view/gridView/selectionRect.test.js +0 -87
  236. package/dist/src/view/layout/flexLayout.test.js +0 -323
  237. package/dist/src/view/layout/grid.test.js +0 -71
  238. package/dist/src/view/layout/rectangle.test.js +0 -192
  239. package/dist/src/view/paramMediator.test.js +0 -282
  240. package/dist/src/view/scaleResolution.d.ts.map +0 -1
  241. package/dist/src/view/scaleResolution.js +0 -1059
  242. package/dist/src/view/scaleResolution.test.d.ts.map +0 -1
  243. package/dist/src/view/scaleResolution.test.js +0 -645
  244. package/dist/src/view/view.test.js +0 -245
  245. package/dist/src/view/viewDispose.test.js +0 -110
  246. package/dist/src/view/viewFactory.test.js +0 -25
  247. package/dist/src/view/viewUtils.test.js +0 -87
  248. /package/dist/src/{view → scales}/axisResolution.test.d.ts +0 -0
  249. /package/dist/src/{view → scales}/scaleResolution.test.d.ts +0 -0
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @typedef {import("../types/viewContext.js").default} ViewContext
3
+ */
4
+ /**
5
+ * Creates a ViewContext from a partial input. Omitted fields default to
6
+ * "fail-fast" placeholders that throw when called. This lets tests supply only
7
+ * what they need while keeping production usage explicit.
8
+ *
9
+ * @param {Partial<ViewContext> & {
10
+ * createOrImportViewWithContext?: (context: ViewContext, spec: import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec, layoutParent?: import("../view/containerView.js").default, dataParent?: import("../view/view.js").default, defaultName?: string, validator?: (spec: import("../spec/view.js").ViewSpec) => void) => Promise<import("../view/view.js").default>
11
+ * }} options
12
+ * @returns {ViewContext}
13
+ */
14
+ export function createViewContext(options: Partial<ViewContext> & {
15
+ createOrImportViewWithContext?: (context: ViewContext, spec: import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec, layoutParent?: import("../view/containerView.js").default, dataParent?: import("../view/view.js").default, defaultName?: string, validator?: (spec: import("../spec/view.js").ViewSpec) => void) => Promise<import("../view/view.js").default>;
16
+ }): ViewContext;
17
+ export type ViewContext = import("../types/viewContext.js").default;
18
+ //# sourceMappingURL=viewContextFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewContextFactory.d.ts","sourceRoot":"","sources":["../../../src/genomeSpy/viewContextFactory.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;GASG;AACH,2CALW,OAAO,CAAC,WAAW,CAAC,GAAG;IAC7B,6BAA6B,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,iBAAiB,EAAE,QAAQ,GAAG,OAAO,iBAAiB,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,0BAA0B,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,iBAAiB,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,iBAAiB,EAAE,QAAQ,KAAK,IAAI,KAAK,OAAO,CAAC,OAAO,iBAAiB,EAAE,OAAO,CAAC,CAAA;CACvX,GACS,WAAW,CAkEvB;0BA7EY,OAAO,yBAAyB,EAAE,OAAO"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @typedef {import("../types/viewContext.js").default} ViewContext
3
+ */
4
+
5
+ /**
6
+ * Creates a ViewContext from a partial input. Omitted fields default to
7
+ * "fail-fast" placeholders that throw when called. This lets tests supply only
8
+ * what they need while keeping production usage explicit.
9
+ *
10
+ * @param {Partial<ViewContext> & {
11
+ * createOrImportViewWithContext?: (context: ViewContext, spec: import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec, layoutParent?: import("../view/containerView.js").default, dataParent?: import("../view/view.js").default, defaultName?: string, validator?: (spec: import("../spec/view.js").ViewSpec) => void) => Promise<import("../view/view.js").default>
12
+ * }} options
13
+ * @returns {ViewContext}
14
+ */
15
+ export function createViewContext(options) {
16
+ /** @param {string} name */
17
+ const missing = (name) => {
18
+ throw new Error("ViewContext." + name + " is not configured.");
19
+ };
20
+ /** @type {Partial<ViewContext>} */
21
+ const context = {
22
+ dataFlow: options.dataFlow ?? missing("dataFlow"),
23
+ glHelper: options.glHelper ?? missing("glHelper"),
24
+ animator: options.animator ?? missing("animator"),
25
+ genomeStore: options.genomeStore,
26
+ fontManager: options.fontManager ?? missing("fontManager"),
27
+ createOrImportView: async function (
28
+ spec,
29
+ layoutParent,
30
+ dataParent,
31
+ defaultName,
32
+ validator
33
+ ) {
34
+ const create = options.createOrImportViewWithContext;
35
+ if (!create) {
36
+ return Promise.reject(
37
+ new Error(
38
+ "ViewContext.createOrImportView is not configured."
39
+ )
40
+ );
41
+ }
42
+
43
+ // Needs the fully wired context for recursive view creation.
44
+ return create(
45
+ /** @type {ViewContext} */ (context),
46
+ spec,
47
+ layoutParent,
48
+ dataParent,
49
+ defaultName,
50
+ validator
51
+ );
52
+ },
53
+ };
54
+
55
+ /** @type {(keyof ViewContext)[]} */
56
+ const methodNames = [
57
+ "requestLayoutReflow",
58
+ "updateTooltip",
59
+ "getNamedDataFromProvider",
60
+ "getCurrentHover",
61
+ "setDataLoadingStatus",
62
+ "addKeyboardListener",
63
+ "addBroadcastListener",
64
+ "removeBroadcastListener",
65
+ "highlightView",
66
+ "isViewConfiguredVisible",
67
+ "isViewSpec",
68
+ ];
69
+
70
+ /** @type {Partial<ViewContext>} */
71
+ const optionValues = options;
72
+ const contextAny = /** @type {any} */ (context);
73
+
74
+ for (const name of methodNames) {
75
+ contextAny[name] = optionValues[name] ?? (() => missing(name));
76
+ }
77
+
78
+ return /** @type {ViewContext} */ (context);
79
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Initializes the view data pipeline: builds the flow graph, awaits fonts,
3
+ * loads sources, and finalizes graphics for rendering.
4
+ *
5
+ * @param {import("../view/view.js").default} viewRoot
6
+ * @param {import("../data/dataFlow.js").default} dataFlow
7
+ * @param {import("../fonts/bmFontManager.js").default} fontManager
8
+ * @param {(dataFlow: import("../data/dataFlow.js").default) => void} onDataFlowBuilt
9
+ * @returns {Promise<import("../data/dataFlow.js").default>}
10
+ */
11
+ export function initializeViewData(viewRoot: import("../view/view.js").default, dataFlow: import("../data/dataFlow.js").default, fontManager: import("../fonts/bmFontManager.js").default, onDataFlowBuilt: (dataFlow: import("../data/dataFlow.js").default) => void): Promise<import("../data/dataFlow.js").default>;
12
+ /**
13
+ * Initializes data flow and graphics for visible views that were previously
14
+ * skipped. Intended for view-visibility toggles.
15
+ *
16
+ * @param {import("../view/view.js").default} viewRoot
17
+ * @param {import("../data/dataFlow.js").default} dataFlow
18
+ * @param {import("../fonts/bmFontManager.js").default} fontManager
19
+ * @returns {Promise<import("../data/dataFlow.js").default>}
20
+ */
21
+ export function initializeVisibleViewData(viewRoot: import("../view/view.js").default, dataFlow: import("../data/dataFlow.js").default, fontManager: import("../fonts/bmFontManager.js").default): Promise<import("../data/dataFlow.js").default>;
22
+ //# sourceMappingURL=viewDataInit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewDataInit.d.ts","sourceRoot":"","sources":["../../../src/genomeSpy/viewDataInit.js"],"names":[],"mappings":"AAOA;;;;;;;;;GASG;AACH,6CANW,OAAO,iBAAiB,EAAE,OAAO,YACjC,OAAO,qBAAqB,EAAE,OAAO,eACrC,OAAO,2BAA2B,EAAE,OAAO,mBAC3C,CAAC,QAAQ,EAAE,OAAO,qBAAqB,EAAE,OAAO,KAAK,IAAI,GACvD,OAAO,CAAC,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAkC1D;AAED;;;;;;;;GAQG;AACH,oDALW,OAAO,iBAAiB,EAAE,OAAO,YACjC,OAAO,qBAAqB,EAAE,OAAO,eACrC,OAAO,2BAA2B,EAAE,OAAO,GACzC,OAAO,CAAC,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAgD1D"}
@@ -0,0 +1,160 @@
1
+ import {
2
+ initializeViewSubtree,
3
+ loadViewSubtreeData,
4
+ } from "../data/flowInit.js";
5
+ import { finalizeSubtreeGraphics } from "../view/viewUtils.js";
6
+ import { VISIT_SKIP } from "../view/view.js";
7
+
8
+ /**
9
+ * Initializes the view data pipeline: builds the flow graph, awaits fonts,
10
+ * loads sources, and finalizes graphics for rendering.
11
+ *
12
+ * @param {import("../view/view.js").default} viewRoot
13
+ * @param {import("../data/dataFlow.js").default} dataFlow
14
+ * @param {import("../fonts/bmFontManager.js").default} fontManager
15
+ * @param {(dataFlow: import("../data/dataFlow.js").default) => void} onDataFlowBuilt
16
+ * @returns {Promise<import("../data/dataFlow.js").default>}
17
+ */
18
+ export async function initializeViewData(
19
+ viewRoot,
20
+ dataFlow,
21
+ fontManager,
22
+ onDataFlowBuilt
23
+ ) {
24
+ const visibilityPredicate = (
25
+ /** @type {import("../view/view.js").default} */ view
26
+ ) => view.isConfiguredVisible();
27
+ const { dataFlow: builtDataFlow, graphicsPromises } = initializeViewSubtree(
28
+ viewRoot,
29
+ dataFlow,
30
+ visibilityPredicate
31
+ );
32
+ onDataFlowBuilt(builtDataFlow);
33
+
34
+ // Have to wait until asynchronous font loading is complete.
35
+ // Text mark's geometry builder needs font metrics before data can be
36
+ // converted into geometries.
37
+ // TODO: Make updateGraphicsData async and await font loading there.
38
+ await fontManager.waitUntilReady();
39
+
40
+ // Find all data sources and initiate loading.
41
+ await loadViewSubtreeData(
42
+ viewRoot,
43
+ new Set(builtDataFlow.dataSources),
44
+ visibilityPredicate
45
+ );
46
+
47
+ await finalizeSubtreeGraphics(graphicsPromises);
48
+
49
+ return builtDataFlow;
50
+ }
51
+
52
+ /**
53
+ * Initializes data flow and graphics for visible views that were previously
54
+ * skipped. Intended for view-visibility toggles.
55
+ *
56
+ * @param {import("../view/view.js").default} viewRoot
57
+ * @param {import("../data/dataFlow.js").default} dataFlow
58
+ * @param {import("../fonts/bmFontManager.js").default} fontManager
59
+ * @returns {Promise<import("../data/dataFlow.js").default>}
60
+ */
61
+ export async function initializeVisibleViewData(
62
+ viewRoot,
63
+ dataFlow,
64
+ fontManager
65
+ ) {
66
+ const visibilityPredicate = (
67
+ /** @type {import("../view/view.js").default} */ view
68
+ ) => view.isConfiguredVisible();
69
+ const visibleViews = collectVisibleViews(viewRoot, visibilityPredicate);
70
+ const viewsToInitialize = visibleViews.filter(
71
+ (view) => view.getDataInitializationState() === "none"
72
+ );
73
+
74
+ if (viewsToInitialize.length === 0) {
75
+ return dataFlow;
76
+ }
77
+
78
+ const viewsToInitializeSet = new Set(viewsToInitialize);
79
+ const viewInitializationPredicate = (
80
+ /** @type {import("../view/view.js").default} */ view
81
+ ) => viewsToInitializeSet.has(view);
82
+
83
+ const { dataFlow: builtDataFlow, graphicsPromises } = initializeViewSubtree(
84
+ viewRoot,
85
+ dataFlow,
86
+ visibilityPredicate,
87
+ viewInitializationPredicate
88
+ );
89
+
90
+ await fontManager.waitUntilReady();
91
+
92
+ const dataSourceRoots = collectDataSourceRoots(viewsToInitialize);
93
+ await Promise.all(
94
+ Array.from(dataSourceRoots.entries()).map(
95
+ ([subtreeRoot, dataSources]) =>
96
+ loadViewSubtreeData(subtreeRoot, dataSources, undefined, {
97
+ // If a source is already loading, schedule a reload so new branches
98
+ // added during lazy init receive a complete data propagation.
99
+ queueReload: true,
100
+ })
101
+ )
102
+ );
103
+
104
+ await finalizeSubtreeGraphics(graphicsPromises);
105
+
106
+ return builtDataFlow;
107
+ }
108
+
109
+ /**
110
+ * @param {import("../view/view.js").default} viewRoot
111
+ * @param {(view: import("../view/view.js").default) => boolean} viewFilter
112
+ * @returns {import("../view/view.js").default[]}
113
+ */
114
+ function collectVisibleViews(viewRoot, viewFilter) {
115
+ /** @type {import("../view/view.js").default[]} */
116
+ const views = [];
117
+ viewRoot.visit((view) => {
118
+ if (!viewFilter(view)) {
119
+ return VISIT_SKIP;
120
+ }
121
+ views.push(view);
122
+ });
123
+ return views;
124
+ }
125
+
126
+ /**
127
+ * @param {import("../view/view.js").default[]} views
128
+ * @returns {Map<import("../view/view.js").default, Set<import("../data/sources/dataSource.js").default>>}
129
+ */
130
+ function collectDataSourceRoots(views) {
131
+ /** @type {Map<import("../view/view.js").default, Set<import("../data/sources/dataSource.js").default>>} */
132
+ const roots = new Map();
133
+
134
+ for (const view of views) {
135
+ let current = view;
136
+ while (current && !current.flowHandle?.dataSource) {
137
+ current = current.dataParent;
138
+ }
139
+
140
+ if (!current?.flowHandle?.dataSource) {
141
+ if (view.spec.data) {
142
+ throw new Error(
143
+ "No data source found for view " + view.getPathString()
144
+ );
145
+ }
146
+ // Some views are data-less (constants or references); they don't
147
+ // participate in data loading but still need graphics init.
148
+ continue;
149
+ }
150
+
151
+ let dataSources = roots.get(current);
152
+ if (!dataSources) {
153
+ dataSources = new Set();
154
+ roots.set(current, dataSources);
155
+ }
156
+ dataSources.add(current.flowHandle.dataSource);
157
+ }
158
+
159
+ return roots;
160
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=viewDataInit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewDataInit.test.d.ts","sourceRoot":"","sources":["../../../src/genomeSpy/viewDataInit.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @param {import("../view/view.js").default} viewRoot
3
+ */
4
+ export function configureViewHierarchy(viewRoot: import("../view/view.js").default): void;
5
+ /**
6
+ * Configures view opacity after scale/axis resolution has stabilized.
7
+ *
8
+ * NOTE: This is a separate pass because dynamic opacity needs resolved scales.
9
+ * If we end up with more post-resolve work, consider a post-resolve thunk queue.
10
+ *
11
+ * @param {import("../view/view.js").default} viewRoot
12
+ */
13
+ export function configureViewOpacity(viewRoot: import("../view/view.js").default): void;
14
+ //# sourceMappingURL=viewHierarchyConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewHierarchyConfig.d.ts","sourceRoot":"","sources":["../../../src/genomeSpy/viewHierarchyConfig.js"],"names":[],"mappings":"AAKA;;GAEG;AACH,iDAFW,OAAO,iBAAiB,EAAE,OAAO,QAK3C;AAED;;;;;;;GAOG;AACH,+CAFW,OAAO,iBAAiB,EAAE,OAAO,QAI3C"}
@@ -0,0 +1,24 @@
1
+ import {
2
+ checkForDuplicateScaleNames,
3
+ setImplicitScaleNames,
4
+ } from "../view/viewUtils.js";
5
+
6
+ /**
7
+ * @param {import("../view/view.js").default} viewRoot
8
+ */
9
+ export function configureViewHierarchy(viewRoot) {
10
+ checkForDuplicateScaleNames(viewRoot);
11
+ setImplicitScaleNames(viewRoot);
12
+ }
13
+
14
+ /**
15
+ * Configures view opacity after scale/axis resolution has stabilized.
16
+ *
17
+ * NOTE: This is a separate pass because dynamic opacity needs resolved scales.
18
+ * If we end up with more post-resolve work, consider a post-resolve thunk queue.
19
+ *
20
+ * @param {import("../view/view.js").default} viewRoot
21
+ */
22
+ export function configureViewOpacity(viewRoot) {
23
+ viewRoot.getDescendants().forEach((view) => view.configureViewOpacity());
24
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @param {HTMLElement} container
3
+ */
4
+ export function createViewHighlighter(container: HTMLElement): (view: import("../view/view.js").default | null) => void;
5
+ //# sourceMappingURL=viewHighlight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewHighlight.d.ts","sourceRoot":"","sources":["../../../src/genomeSpy/viewHighlight.js"],"names":[],"mappings":"AAAA;;GAEG;AACH,iDAFW,WAAW,IAMV,MAFG,OAAO,iBAAiB,EAAE,OAAO,GAAG,IAEnC,UAsBf"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @param {HTMLElement} container
3
+ */
4
+ export function createViewHighlighter(container) {
5
+ /**
6
+ * @param {import("../view/view.js").default | null} view
7
+ */
8
+ return (view) => {
9
+ container.querySelector(".view-highlight")?.remove();
10
+ if (view) {
11
+ if (!view.isConfiguredVisible()) {
12
+ return;
13
+ }
14
+ const coords = view.coords;
15
+ if (coords) {
16
+ const div = document.createElement("div");
17
+ div.className = "view-highlight";
18
+ div.style.position = "absolute";
19
+ div.style.left = coords.x + "px";
20
+ div.style.top = coords.y + "px";
21
+ div.style.width = coords.width + "px";
22
+ div.style.height = coords.height + "px";
23
+ div.style.border = "1px solid green";
24
+ div.style.backgroundColor = "rgba(0, 255, 0, 0.1)";
25
+ div.style.pointerEvents = "none";
26
+ container.appendChild(div);
27
+ }
28
+ }
29
+ };
30
+ }
@@ -14,8 +14,6 @@ export default class GenomeSpy {
14
14
  constructor(container: HTMLElement, spec: import("./spec/root.js").RootSpec, options?: import("./types/embedApi.js").EmbedOptions);
15
15
  container: HTMLElement;
16
16
  options: import("./types/embedApi.js").EmbedOptions;
17
- /** @type {(() => void)[]} */
18
- _destructionCallbacks: (() => void)[];
19
17
  /** Root level configuration object */
20
18
  spec: import("./spec/root.js").RootSpec;
21
19
  viewFactory: ViewFactory;
@@ -31,59 +29,10 @@ export default class GenomeSpy {
31
29
  * @type {(view: View) => boolean}
32
30
  */
33
31
  viewVisibilityPredicate: (view: import("./view/view.js").default) => boolean;
34
- /** @type {BufferedViewRenderingContext} */
35
- _renderingContext: BufferedViewRenderingContext;
36
- /** @type {BufferedViewRenderingContext} */
37
- _pickingContext: BufferedViewRenderingContext;
38
- /** Does picking buffer need to be rendered again */
39
- _dirtyPickingBuffer: boolean;
40
- /**
41
- * Currently hovered mark and datum
42
- * @type {{ mark: import("./marks/mark.js").default, datum: import("./data/flowNode.js").Datum, uniqueId: number }}
43
- */
44
- _currentHover: {
45
- mark: import("./marks/mark.js").default;
46
- datum: import("./data/flowNode.js").Datum;
47
- uniqueId: number;
48
- };
49
- _wheelInertia: Inertia;
50
- /**
51
- * Keeping track so that these can be cleaned up upon finalization.
52
- * @type {Map<string, (function(KeyboardEvent):void)[]>}
53
- */
54
- _keyboardListeners: Map<string, ((arg0: KeyboardEvent) => void)[]>;
55
- /**
56
- * Listers for exposed high-level events such as click on a mark instance.
57
- * These should probably be in the View class and support bubbling through
58
- * the hierarchy.
59
- *
60
- * @type {Map<string, Set<(event: any) => void>>}
61
- */
62
- _eventListeners: Map<string, Set<(event: any) => void>>;
63
- /**
64
- *
65
- * @type {Map<string, Set<(event: any) => void>>}
66
- */
67
- _extraBroadcastListeners: Map<string, Set<(event: any) => void>>;
68
32
  /** @type {Record<string, import("./tooltip/tooltipHandler.js").TooltipHandler>}> */
69
33
  tooltipHandlers: Record<string, import("./tooltip/tooltipHandler.js").TooltipHandler>;
70
34
  /** @type {View} */
71
35
  viewRoot: import("./view/view.js").default;
72
- /**
73
- * Views that are currently loading data using lazy sources.
74
- *
75
- * @type {Map<View, { status: import("./types/viewContext.js").DataLoadingStatus, detail?: string }>}
76
- */
77
- _loadingViews: Map<import("./view/view.js").default, {
78
- status: import("./types/viewContext.js").DataLoadingStatus;
79
- detail?: string;
80
- }>;
81
- /**
82
- * @type {HTMLElement}
83
- */
84
- _inputBindingContainer: HTMLElement;
85
- /** @type {Point} */
86
- _mouseDownCoords: Point;
87
36
  dpr: number;
88
37
  /**
89
38
  *
@@ -100,6 +49,16 @@ export default class GenomeSpy {
100
49
  * @param {any[]} data
101
50
  */
102
51
  updateNamedData(name: string, data: any[]): void;
52
+ /**
53
+ * @param {string} type
54
+ * @param {(event: any) => void} listener
55
+ */
56
+ addEventListener(type: string, listener: (event: any) => void): void;
57
+ /**
58
+ * @param {string} type
59
+ * @param {(event: any) => void} listener
60
+ */
61
+ removeEventListener(type: string, listener: (event: any) => void): void;
103
62
  /**
104
63
  * Broadcast a message to all views
105
64
 
@@ -107,32 +66,20 @@ export default class GenomeSpy {
107
66
  * @param {any} [payload]
108
67
  */
109
68
  broadcast(type: BroadcastEventType, payload?: any): void;
110
- /**
111
- * Draw some layers on top of the canvas. It's easier to do fancy spinning
112
- * animations with html elements than with WebGL.
113
- */
114
- _updateLoadingIndicators(): void;
115
- _glHelper: WebGLHelper;
116
69
  loadingMessageElement: HTMLElement;
117
70
  loadingIndicatorsElement: HTMLElement;
118
- tooltip: Tooltip;
71
+ tooltip: import("./utils/ui/tooltip.js").default;
119
72
  /**
120
73
  * Unregisters all listeners, removes all created dom elements, removes all css classes from the container
121
74
  */
122
75
  destroy(): void;
123
- _prepareViewsAndData(): Promise<void>;
124
76
  /**
125
77
  * TODO: Come up with a sensible name. And maybe this should be called at the end of the constructor.
126
78
  * @returns {Promise<boolean>} true if the launch was successful
127
79
  */
128
80
  launch(): Promise<boolean>;
81
+ initializeVisibleViewData(): Promise<void>;
129
82
  registerMouseEvents(): void;
130
- _tooltipUpdateRequested: boolean;
131
- /**
132
- * @param {number} x
133
- * @param {number} y
134
- */
135
- _handlePicking(x: number, y: number): void;
136
83
  /**
137
84
  * This method should be called in a mouseMove handler. If not called, the
138
85
  * tooltip will be hidden.
@@ -152,11 +99,15 @@ export default class GenomeSpy {
152
99
  * @returns A PNG data Url
153
100
  */
154
101
  exportCanvas(logicalWidth?: number, logicalHeight?: number, devicePixelRatio?: number, clearColor?: string): string;
102
+ getLogicalCanvasSize(): {
103
+ width: any;
104
+ height: any;
105
+ };
155
106
  computeLayout(): void;
156
107
  renderAll(): void;
157
108
  renderPickingFramebuffer(): void;
158
109
  getSearchableViews(): UnitView[];
159
- getNamedScaleResolutions(): Map<string, import("./view/scaleResolution.js").default>;
110
+ getNamedScaleResolutions(): Map<string, import("./scales/scaleResolution.js").default>;
160
111
  #private;
161
112
  }
162
113
  /**
@@ -166,10 +117,5 @@ export type BroadcastEventType = "dataFlowBuilt" | "layout" | "layoutComputed" |
166
117
  import { ViewFactory } from "./view/viewFactory.js";
167
118
  import Animator from "./utils/animator.js";
168
119
  import GenomeStore from "./genome/genomeStore.js";
169
- import BufferedViewRenderingContext from "./view/renderingContext/bufferedViewRenderingContext.js";
170
- import Inertia from "./utils/inertia.js";
171
- import Point from "./view/layout/point.js";
172
- import WebGLHelper from "./gl/webGLHelper.js";
173
- import Tooltip from "./utils/ui/tooltip.js";
174
120
  import UnitView from "./view/unitView.js";
175
121
  //# sourceMappingURL=genomeSpy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"genomeSpy.d.ts","sourceRoot":"","sources":["../../src/genomeSpy.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"genomeSpy.d.ts","sourceRoot":"","sources":["../../src/genomeSpy.js"],"names":[],"mappings":"AA6CA;IAkBI;;;;;OAKG;IAEH;;;;;OAKG;IACH,uBAJW,WAAW,qDAEX,OAAO,qBAAqB,EAAE,YAAY,EA0CpD;IAvCG,uBAA0B;IAC1B,oDAAsB;IAItB,sCAAsC;IACtC,wCAAgB;IAEhB,yBAAoC;IAEpC,4CAA4C;IAC5C,oBADW,CAAC,CAAS,IAAM,EAAN,MAAM,KAAE,MAAM,EAAE,CAAC,EAAE,CACZ;IAE5B,mBAAoD;IAEpD,0BAA0B;IAC1B,aADW,WAAW,CACM;IAE5B;;;;;OAKG;IACH,yBAFU,CAAC,IAAI,kCAAM,KAAK,OAAO,CAE8B;IAE/D,oFAAoF;IACpF,iBADW,MAAM,CAAC,MAAM,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC,CAK9E;IAED,mBAAmB;IACnB,2CAAyB;IAIzB,YAAkC;IAatC;;;OAGG;IACH,oCAFW,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,EAAE,QAIjC;IAED;;OAEG;IACH,+BAFW,MAAM,YAShB;IAED;;;;OAIG;IACH,sBAHW,MAAM,QACN,GAAG,EAAE,QAYf;IAED;;;OAGG;IACH,uBAHW,MAAM,YACN,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,QAI9B;IAED;;;OAGG;IACH,0BAHW,MAAM,YACN,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,QAI9B;IAED;;;;;OAKG;IACH,gBAHW,kBAAkB,YAClB,GAAG,QAMb;IAiEG,mCAAkD;IAKlD,sCAAwD;IACxD,iDAAsB;IAM1B;;OAEG;IACH,gBAmBC;IA8ID;;;OAGG;IACH,UAFa,OAAO,CAAC,OAAO,CAAC,CAgC5B;IAED,2CAiBC;IAED,4BAEC;IAED;;;;;;;OAOG;IACH,cAFa,CAAC,SAFH,CAAC,cACD,CAAS,IAAC,EAAD,CAAC,KAAE,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,OAAO,KAAK,EAAE,cAAc,CAAC,QAKlF;IAED;;;;;;;;OAQG;IACH,4BANW,MAAM,kBACN,MAAM,qBACN,MAAM,eACN,MAAM,UAuBhB;IAED;;;MAEC;IAED,sBAEC;IAED,kBAEC;IAED,iCAEC;IAED,iCASC;IAED,uFAWC;;CACJ;;;;iCArhBY,eAAe,GAAG,QAAQ,GAAG,gBAAgB,GAAG,kBAAkB;4BAZnC,uBAAuB;qBAR9C,qBAAqB;wBAElB,yBAAyB;qBAL5B,oBAAoB"}