@genome-spy/core 0.66.1 → 0.68.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 (191) hide show
  1. package/dist/bundle/index.es.js +7669 -6115
  2. package/dist/bundle/index.js +114 -133
  3. package/dist/schema.json +534 -132
  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 +10 -0
  10. package/dist/src/data/flowHandle.d.ts +2 -0
  11. package/dist/src/data/flowHandle.d.ts.map +1 -1
  12. package/dist/src/data/flowHandle.js +1 -0
  13. package/dist/src/data/flowInit.d.ts +12 -4
  14. package/dist/src/data/flowInit.d.ts.map +1 -1
  15. package/dist/src/data/flowInit.js +115 -17
  16. package/dist/src/data/flowNode.d.ts +8 -0
  17. package/dist/src/data/flowNode.d.ts.map +1 -1
  18. package/dist/src/data/flowNode.js +18 -0
  19. package/dist/src/data/keyIndex.d.ts +18 -0
  20. package/dist/src/data/keyIndex.d.ts.map +1 -0
  21. package/dist/src/data/keyIndex.js +241 -0
  22. package/dist/src/data/keyIndex.test.d.ts +2 -0
  23. package/dist/src/data/keyIndex.test.d.ts.map +1 -0
  24. package/dist/src/data/sources/dataSource.d.ts.map +1 -1
  25. package/dist/src/data/sources/dataSource.js +5 -1
  26. package/dist/src/data/sources/dataSourceFactory.d.ts +14 -12
  27. package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -1
  28. package/dist/src/data/sources/dataSourceFactory.js +52 -16
  29. package/dist/src/data/sources/lazy/mockLazySource.d.ts +29 -0
  30. package/dist/src/data/sources/lazy/mockLazySource.d.ts.map +1 -0
  31. package/dist/src/data/sources/lazy/mockLazySource.js +44 -0
  32. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +22 -1
  33. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  34. package/dist/src/data/sources/lazy/singleAxisLazySource.js +34 -2
  35. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  36. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +15 -0
  37. package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
  38. package/dist/src/data/sources/lazy/tabixSource.js +15 -5
  39. package/dist/src/data/transforms/stack.d.ts.map +1 -1
  40. package/dist/src/data/transforms/stack.js +1 -0
  41. package/dist/src/encoder/accessor.d.ts +43 -0
  42. package/dist/src/encoder/accessor.d.ts.map +1 -1
  43. package/dist/src/encoder/accessor.js +164 -0
  44. package/dist/src/encoder/encoder.d.ts +11 -2
  45. package/dist/src/encoder/encoder.d.ts.map +1 -1
  46. package/dist/src/encoder/encoder.js +24 -4
  47. package/dist/src/encoder/metadataChannels.d.ts +15 -0
  48. package/dist/src/encoder/metadataChannels.d.ts.map +1 -0
  49. package/dist/src/encoder/metadataChannels.js +65 -0
  50. package/dist/src/encoder/metadataChannels.test.d.ts +2 -0
  51. package/dist/src/encoder/metadataChannels.test.d.ts.map +1 -0
  52. package/dist/src/genome/scaleLocus.d.ts.map +1 -1
  53. package/dist/src/genome/scaleLocus.js +14 -1
  54. package/dist/src/genomeSpy/containerUi.d.ts +0 -1
  55. package/dist/src/genomeSpy/containerUi.d.ts.map +1 -1
  56. package/dist/src/genomeSpy/containerUi.js +0 -14
  57. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts +3 -7
  58. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts.map +1 -1
  59. package/dist/src/genomeSpy/loadingIndicatorManager.js +68 -20
  60. package/dist/src/genomeSpy/loadingStatusRegistry.d.ts +52 -0
  61. package/dist/src/genomeSpy/loadingStatusRegistry.d.ts.map +1 -0
  62. package/dist/src/genomeSpy/loadingStatusRegistry.js +86 -0
  63. package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -1
  64. package/dist/src/genomeSpy/viewContextFactory.js +0 -1
  65. package/dist/src/genomeSpy/viewDataInit.d.ts +10 -0
  66. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -1
  67. package/dist/src/genomeSpy/viewDataInit.js +166 -2
  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.d.ts +1 -2
  71. package/dist/src/genomeSpy.d.ts.map +1 -1
  72. package/dist/src/genomeSpy.js +69 -27
  73. package/dist/src/gl/dataToVertices.d.ts.map +1 -1
  74. package/dist/src/gl/dataToVertices.js +16 -4
  75. package/dist/src/marks/mark.d.ts.map +1 -1
  76. package/dist/src/marks/mark.js +18 -11
  77. package/dist/src/marks/markUtils.js +1 -1
  78. package/dist/src/scale/scale.d.ts +6 -1
  79. package/dist/src/scale/scale.d.ts.map +1 -1
  80. package/dist/src/scale/scale.js +83 -23
  81. package/dist/src/scales/axisResolution.d.ts.map +1 -1
  82. package/dist/src/scales/axisResolution.js +10 -0
  83. package/dist/src/scales/{scaleDomainAggregator.d.ts → domainPlanner.d.ts} +8 -5
  84. package/dist/src/scales/domainPlanner.d.ts.map +1 -0
  85. package/dist/src/scales/domainPlanner.js +285 -0
  86. package/dist/src/scales/domainPlanner.test.d.ts +2 -0
  87. package/dist/src/scales/domainPlanner.test.d.ts.map +1 -0
  88. package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -1
  89. package/dist/src/scales/scaleInstanceManager.js +8 -4
  90. package/dist/src/scales/scaleInteractionController.d.ts +6 -0
  91. package/dist/src/scales/scaleInteractionController.d.ts.map +1 -1
  92. package/dist/src/scales/scaleInteractionController.js +41 -3
  93. package/dist/src/scales/scaleResolution.d.ts +19 -16
  94. package/dist/src/scales/scaleResolution.d.ts.map +1 -1
  95. package/dist/src/scales/scaleResolution.js +255 -70
  96. package/dist/src/scales/scaleResolution.test.d.ts.map +1 -1
  97. package/dist/src/selection/selection.d.ts +21 -0
  98. package/dist/src/selection/selection.d.ts.map +1 -1
  99. package/dist/src/selection/selection.js +82 -0
  100. package/dist/src/spec/channel.d.ts +52 -15
  101. package/dist/src/spec/data.d.ts +4 -0
  102. package/dist/src/spec/parameter.d.ts +16 -11
  103. package/dist/src/spec/testing.d.ts +12 -0
  104. package/dist/src/spec/testing.d.ts.map +1 -0
  105. package/dist/src/spec/testing.js +20 -0
  106. package/dist/src/spec/view.d.ts +45 -10
  107. package/dist/src/styles/genome-spy.css +3 -31
  108. package/dist/src/styles/genome-spy.css.d.ts +1 -1
  109. package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
  110. package/dist/src/styles/genome-spy.css.js +0 -29
  111. package/dist/src/types/encoder.d.ts +37 -2
  112. package/dist/src/types/rendering.d.ts +4 -3
  113. package/dist/src/types/viewContext.d.ts +0 -14
  114. package/dist/src/utils/domainArray.d.ts.map +1 -1
  115. package/dist/src/utils/domainArray.js +3 -0
  116. package/dist/src/utils/indexer.d.ts +3 -0
  117. package/dist/src/utils/indexer.d.ts.map +1 -1
  118. package/dist/src/utils/indexer.js +3 -0
  119. package/dist/src/utils/throttle.d.ts +4 -1
  120. package/dist/src/utils/throttle.d.ts.map +1 -1
  121. package/dist/src/utils/throttle.js +54 -23
  122. package/dist/src/utils/throttle.test.d.ts +2 -0
  123. package/dist/src/utils/throttle.test.d.ts.map +1 -0
  124. package/dist/src/utils/transition.d.ts +21 -0
  125. package/dist/src/utils/transition.d.ts.map +1 -1
  126. package/dist/src/utils/transition.js +28 -0
  127. package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
  128. package/dist/src/utils/ui/tooltip.js +7 -1
  129. package/dist/src/utils/ui/tooltip.test.d.ts +2 -0
  130. package/dist/src/utils/ui/tooltip.test.d.ts.map +1 -0
  131. package/dist/src/view/axisGridView.d.ts.map +1 -1
  132. package/dist/src/view/axisGridView.js +22 -5
  133. package/dist/src/view/axisView.d.ts.map +1 -1
  134. package/dist/src/view/axisView.js +20 -5
  135. package/dist/src/view/concatView.js +3 -3
  136. package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
  137. package/dist/src/view/containerMutationHelper.js +6 -2
  138. package/dist/src/view/containerView.d.ts +9 -5
  139. package/dist/src/view/containerView.d.ts.map +1 -1
  140. package/dist/src/view/containerView.js +34 -9
  141. package/dist/src/view/dataReadiness.d.ts +46 -0
  142. package/dist/src/view/dataReadiness.d.ts.map +1 -0
  143. package/dist/src/view/dataReadiness.js +267 -0
  144. package/dist/src/view/dataReadiness.test.d.ts +2 -0
  145. package/dist/src/view/dataReadiness.test.d.ts.map +1 -0
  146. package/dist/src/view/facetView.d.ts.map +1 -1
  147. package/dist/src/view/facetView.js +7 -5
  148. package/dist/src/view/flowBuilder.d.ts +5 -3
  149. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  150. package/dist/src/view/flowBuilder.js +74 -7
  151. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  152. package/dist/src/view/gridView/gridChild.js +8 -0
  153. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  154. package/dist/src/view/gridView/gridView.js +119 -2
  155. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  156. package/dist/src/view/gridView/scrollbar.js +3 -0
  157. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  158. package/dist/src/view/gridView/selectionRect.js +20 -5
  159. package/dist/src/view/gridView/separatorView.d.ts +51 -0
  160. package/dist/src/view/gridView/separatorView.d.ts.map +1 -0
  161. package/dist/src/view/gridView/separatorView.js +275 -0
  162. package/dist/src/view/layerView.js +3 -3
  163. package/dist/src/view/layout/flexLayout.d.ts +0 -30
  164. package/dist/src/view/layout/flexLayout.d.ts.map +1 -1
  165. package/dist/src/view/layout/flexLayout.js +0 -86
  166. package/dist/src/view/paramMediator.d.ts +19 -0
  167. package/dist/src/view/paramMediator.d.ts.map +1 -1
  168. package/dist/src/view/paramMediator.js +86 -19
  169. package/dist/src/view/testUtils.d.ts.map +1 -1
  170. package/dist/src/view/testUtils.js +11 -1
  171. package/dist/src/view/unitView.d.ts +8 -13
  172. package/dist/src/view/unitView.d.ts.map +1 -1
  173. package/dist/src/view/unitView.js +127 -43
  174. package/dist/src/view/view.d.ts +34 -14
  175. package/dist/src/view/view.d.ts.map +1 -1
  176. package/dist/src/view/view.js +119 -9
  177. package/dist/src/view/viewFactory.d.ts.map +1 -1
  178. package/dist/src/view/viewFactory.js +20 -1
  179. package/dist/src/view/viewSelectors.d.ts +148 -0
  180. package/dist/src/view/viewSelectors.d.ts.map +1 -0
  181. package/dist/src/view/viewSelectors.js +773 -0
  182. package/dist/src/view/viewSelectors.test.d.ts +2 -0
  183. package/dist/src/view/viewSelectors.test.d.ts.map +1 -0
  184. package/dist/src/view/viewUtils.d.ts +0 -8
  185. package/dist/src/view/viewUtils.d.ts.map +1 -1
  186. package/dist/src/view/viewUtils.js +1 -21
  187. package/package.json +3 -3
  188. package/dist/src/scales/scaleDomainAggregator.d.ts.map +0 -1
  189. package/dist/src/scales/scaleDomainAggregator.js +0 -162
  190. package/dist/src/scales/scaleDomainAggregator.test.d.ts +0 -2
  191. package/dist/src/scales/scaleDomainAggregator.test.d.ts.map +0 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=viewSelectors.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewSelectors.test.d.ts","sourceRoot":"","sources":["../../../src/view/viewSelectors.test.js"],"names":[],"mappings":""}
@@ -61,14 +61,6 @@ export function loadExternalViewSpec(spec: import("../spec/view.js").ImportSpec,
61
61
  * @param {function(View, View[]):void} visitor
62
62
  */
63
63
  export function stackifyVisitor(visitor: (arg0: View, arg1: View[]) => void): import("./view.js").Visitor;
64
- /**
65
- * Finds the descendants having the given name. The root is included in the search.
66
- *
67
- * @param {View} root
68
- * @param {string} name View name
69
- * @returns {View[]}
70
- */
71
- export function findDescendantsByPath(root: View, name: string): View[];
72
64
  /**
73
65
  *
74
66
  * @param {View} root
@@ -1 +1 @@
1
- {"version":3,"file":"viewUtils.d.ts","sourceRoot":"","sources":["../../../src/view/viewUtils.js"],"names":[],"mappings":"AASA;;;;GAIG;AACH,qCAHW,OAAO,oBAAoB,EAAE,UAAU,GAAG,OAAO,iBAAiB,EAAE,YAAY,GAC9E,IAAI,IAAI,aAAa,CAIjC;AAED;;;;GAIG;AACH,oCAHW,OAAO,oBAAoB,EAAE,aAAa,GAAG,OAAO,iBAAiB,EAAE,YAAY,GACjF,IAAI,IAAI,YAAY,CAOhC;AAED;;;GAGG;AACH,+BAFW,IAAI,6EAMd;AAED;;;;GAIG;AACH,wCAFW,IAAI,UASd;AAED;;GAEG;AACH,kDAFW,IAAI,QAiBd;AAED;;;;;;;GAOG;AACH,4CAFW,IAAI,QAUd;AAED;;;;GAIG;AACH,0DAJW,OAAO,CAAC,OAAO,kBAAkB,EAAE,OAAO,CAAC,EAAE,mBAC7C,MAAM,OAAO,GACX,OAAO,CAAC,IAAI,CAAC,CAmBzB;AAED;;;GAGG;AACH,wCAFW,IAAI;UAGO,QAAQ;aAAW,OAAO,oBAAoB,EAAE,OAAO;WAAS,OAAO,oBAAoB,EAAE,KAAK;UAAQ,OAAO,oBAAoB,EAAE,IAAI;IAqBhK;AAED;;;;;GAKG;AACH,2CALW,OAAO,iBAAiB,EAAE,UAAU,WACpC,MAAM,eACN,OAAO,yBAAyB,EAAE,OAAO,GACvC,OAAO,CAAC,OAAO,iBAAiB,EAAE,QAAQ,CAAC,CAsCvD;AAED;;GAEG;AACH,yCAFW,CAAS,IAAI,EAAJ,IAAI,EAAE,IAAM,EAAN,IAAI,EAAE,KAAE,IAAI,+BAkBrC;AAED;;;;;;GAMG;AACH,4CAJW,IAAI,QACJ,MAAM,GACJ,IAAI,EAAE,CAalB;AAED;;;GAGG;AACH,0CAFW,IAAI,eAqBd;AAED;;GAEG;AACH,8CAFW,OAAO,WAAW,EAAE,OAAO;;;EAoBrC;iBA/Q4C,WAAW;qBAFnC,eAAe"}
1
+ {"version":3,"file":"viewUtils.d.ts","sourceRoot":"","sources":["../../../src/view/viewUtils.js"],"names":[],"mappings":"AASA;;;;GAIG;AACH,qCAHW,OAAO,oBAAoB,EAAE,UAAU,GAAG,OAAO,iBAAiB,EAAE,YAAY,GAC9E,IAAI,IAAI,aAAa,CAIjC;AAED;;;;GAIG;AACH,oCAHW,OAAO,oBAAoB,EAAE,aAAa,GAAG,OAAO,iBAAiB,EAAE,YAAY,GACjF,IAAI,IAAI,YAAY,CAOhC;AAED;;;GAGG;AACH,+BAFW,IAAI,6EAMd;AAED;;;;GAIG;AACH,wCAFW,IAAI,UASd;AAED;;GAEG;AACH,kDAFW,IAAI,QAiBd;AAED;;;;;;;GAOG;AACH,4CAFW,IAAI,QAUd;AAED;;;;GAIG;AACH,0DAJW,OAAO,CAAC,OAAO,kBAAkB,EAAE,OAAO,CAAC,EAAE,mBAC7C,MAAM,OAAO,GACX,OAAO,CAAC,IAAI,CAAC,CAmBzB;AAED;;;GAGG;AACH,wCAFW,IAAI;UAGO,QAAQ;aAAW,OAAO,oBAAoB,EAAE,OAAO;WAAS,OAAO,oBAAoB,EAAE,KAAK;UAAQ,OAAO,oBAAoB,EAAE,IAAI;IAqBhK;AAED;;;;;GAKG;AACH,2CALW,OAAO,iBAAiB,EAAE,UAAU,WACpC,MAAM,eACN,OAAO,yBAAyB,EAAE,OAAO,GACvC,OAAO,CAAC,OAAO,iBAAiB,EAAE,QAAQ,CAAC,CAsCvD;AAED;;GAEG;AACH,yCAFW,CAAS,IAAI,EAAJ,IAAI,EAAE,IAAM,EAAN,IAAI,EAAE,KAAE,IAAI,+BAkBrC;AAED;;;GAGG;AACH,0CAFW,IAAI,eAqBd;AAED;;GAEG;AACH,8CAFW,OAAO,WAAW,EAAE,OAAO;;;EAoBrC;iBA3P4C,WAAW;qBAFnC,eAAe"}
@@ -126,7 +126,7 @@ export function findEncodedFields(view) {
126
126
  if (view instanceof UnitView) {
127
127
  const encoding = view.getEncoding();
128
128
  for (const [channel, def] of Object.entries(encoding)) {
129
- if (isFieldDef(def) && "type" in def) {
129
+ if (!Array.isArray(def) && isFieldDef(def) && "type" in def) {
130
130
  fieldInfos.push({
131
131
  view,
132
132
  channel,
@@ -207,26 +207,6 @@ export function stackifyVisitor(visitor) {
207
207
  return stackified;
208
208
  }
209
209
 
210
- /**
211
- * Finds the descendants having the given name. The root is included in the search.
212
- *
213
- * @param {View} root
214
- * @param {string} name View name
215
- * @returns {View[]}
216
- */
217
- export function findDescendantsByPath(root, name) {
218
- /** @type {View[]} */
219
- const descendants = [];
220
-
221
- root.visit((view) => {
222
- if (view.name == name) {
223
- descendants.push(view);
224
- }
225
- });
226
-
227
- return descendants;
228
- }
229
-
230
210
  /**
231
211
  *
232
212
  * @param {View} root
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "contributors": [],
9
9
  "license": "MIT",
10
- "version": "0.66.1",
10
+ "version": "0.68.0",
11
11
  "jsdelivr": "dist/bundle/index.js",
12
12
  "unpkg": "dist/bundle/index.js",
13
13
  "browser": "dist/bundle/index.js",
@@ -53,7 +53,7 @@
53
53
  "d3-ease": "^3.0.1",
54
54
  "d3-format": "^3.1.0",
55
55
  "events": "^3.3.0",
56
- "flatqueue": "^2.0.3",
56
+ "flatqueue": "^3.0.0",
57
57
  "generic-filehandle2": "^2.0.14",
58
58
  "gff-nostream": "^2.0.0",
59
59
  "internmap": "^2.0.3",
@@ -67,5 +67,5 @@
67
67
  "devDependencies": {
68
68
  "@types/long": "^4.0.1"
69
69
  },
70
- "gitHead": "fa34fedd04f743754e79c0bcdcada56ba5846769"
70
+ "gitHead": "74e4d56c67c8aa0da1884b16ff29185b16d418c3"
71
71
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"scaleDomainAggregator.d.ts","sourceRoot":"","sources":["../../../src/scales/scaleDomainAggregator.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AAEH;IAgBI;;;;;;OAMG;IACH,0EALG;QAAkD,UAAU,EAApD,MAAM,GAAG,CAAC,qBAAqB,CAAC;QACiB,OAAO,EAAxD,MAAM,OAAO,oBAAoB,EAAE,IAAI;QACf,cAAc,EAAtC,MAAM,MAAM,EAAE;QACgD,mBAAmB,EAAjF,CAAC,QAAQ,EAAE,YAAY,GAAG,aAAa,KAAK,MAAM,EAAE;KAC9D,EAMA;IAED;;OAEG;IACH,6BAFa,GAAG,EAAE,CAIjB;IAED,+BAEC;IAED;;;;;OAKG;IACH,iDAHW,OAAO,GACL,GAAG,EAAE,CAYjB;IAED;;;;OAIG;IACH,uBAFY,WAAW,CAOtB;IAED;;;;OAIG;IACH,iBAFY,WAAW,CAItB;IAED;;;;OAIG;IACH,4BAJW,OAAO,qBAAqB,EAAE,SAAS,wBACvC,OAAO,GACL,OAAO,CAgBnB;;CACJ;0BA1GY,OAAO,yBAAyB,EAAE,WAAW;4BAC7C,OAAO,kBAAkB,EAAE,aAAa;2BACxC,OAAO,kBAAkB,EAAE,YAAY;oCACvC,OAAO,sBAAsB,EAAE,qBAAqB"}
@@ -1,162 +0,0 @@
1
- import { span } from "vega-util";
2
- import { isContinuous } from "vega-scale";
3
-
4
- import { LOCUS } from "./scaleResolutionConstants.js";
5
- import createDomain from "../utils/domainArray.js";
6
-
7
- /**
8
- * @typedef {import("../utils/domainArray.js").DomainArray} DomainArray
9
- * @typedef {import("../spec/scale.js").ComplexDomain} ComplexDomain
10
- * @typedef {import("../spec/scale.js").ScalarDomain} ScalarDomain
11
- * @typedef {import("./scaleResolution.js").ScaleResolutionMember} ScaleResolutionMember
12
- */
13
-
14
- export default class ScaleDomainAggregator {
15
- /** @type {Set<ScaleResolutionMember>} */
16
- #members;
17
-
18
- /** @type {() => import("../spec/channel.js").Type} */
19
- #getType;
20
-
21
- /** @type {() => number[]} */
22
- #getLocusExtent;
23
-
24
- /** @type {(interval: ScalarDomain | ComplexDomain) => number[]} */
25
- #fromComplexInterval;
26
-
27
- /** @type {any[]} */
28
- #initialDomain;
29
-
30
- /**
31
- * @param {object} options
32
- * @param {() => Set<ScaleResolutionMember>} options.getMembers
33
- * @param {() => import("../spec/channel.js").Type} options.getType
34
- * @param {() => number[]} options.getLocusExtent
35
- * @param {(interval: ScalarDomain | ComplexDomain) => number[]} options.fromComplexInterval
36
- */
37
- constructor({ getMembers, getType, getLocusExtent, fromComplexInterval }) {
38
- this.#members = getMembers();
39
- this.#getType = getType;
40
- this.#getLocusExtent = getLocusExtent;
41
- this.#fromComplexInterval = fromComplexInterval;
42
- }
43
-
44
- /**
45
- * @returns {any[]}
46
- */
47
- get initialDomainSnapshot() {
48
- return this.#initialDomain;
49
- }
50
-
51
- hasConfiguredDomain() {
52
- return !!this.getConfiguredDomain();
53
- }
54
-
55
- /**
56
- * Returns the configured domain or a data-derived/default domain.
57
- *
58
- * @param {boolean} [extractDataDomain]
59
- * @returns {any[]}
60
- */
61
- getConfiguredOrDefaultDomain(extractDataDomain = false) {
62
- // TODO: intersect the domain with zoom extent (if it's defined)
63
- return (
64
- this.getConfiguredDomain() ??
65
- resolveDefaultDomain(
66
- this.#getType(),
67
- this.#getLocusExtent,
68
- extractDataDomain ? this.getDataDomain() : undefined
69
- )
70
- );
71
- }
72
-
73
- /**
74
- * Unions the configured domains of all participating views.
75
- *
76
- * @return {DomainArray}
77
- */
78
- getConfiguredDomain() {
79
- return resolveConfiguredDomain(
80
- this.#members,
81
- this.#fromComplexInterval
82
- );
83
- }
84
-
85
- /**
86
- * Extracts and unions the data domains of all participating views.
87
- *
88
- * @return {DomainArray}
89
- */
90
- getDataDomain() {
91
- return resolveDataDomain(this.#members, this.#getType);
92
- }
93
-
94
- /**
95
- * @param {import("../types/encoder.js").VegaScale} scale
96
- * @param {boolean} domainWasInitialized
97
- * @returns {boolean} true if listeners should be notified immediately
98
- */
99
- captureInitialDomain(scale, domainWasInitialized) {
100
- if (!this.#initialDomain && isContinuous(scale.type)) {
101
- const domain = scale.domain();
102
- if (span(domain) > 0) {
103
- this.#initialDomain = domain;
104
- }
105
- }
106
-
107
- if (!domainWasInitialized) {
108
- this.#initialDomain = scale.domain();
109
- return true;
110
- }
111
-
112
- return false;
113
- }
114
- }
115
-
116
- /**
117
- * @param {Set<ScaleResolutionMember>} members
118
- * @param {(interval: ScalarDomain | ComplexDomain) => number[]} fromComplexInterval
119
- * @returns {DomainArray | undefined}
120
- */
121
- function resolveConfiguredDomain(members, fromComplexInterval) {
122
- const domains = Array.from(members)
123
- .map((member) => member.channelDef)
124
- .filter((channelDef) => channelDef.scale?.domain)
125
- .map((channelDef) =>
126
- // TODO: Handle ExprRefs and Param in domain
127
- createDomain(
128
- channelDef.type,
129
- // Chrom/pos must be linearized first
130
- fromComplexInterval(channelDef.scale.domain)
131
- )
132
- );
133
-
134
- if (domains.length > 0) {
135
- return domains.reduce((acc, curr) => acc.extendAll(curr));
136
- }
137
- }
138
-
139
- /**
140
- * @param {Set<ScaleResolutionMember>} members
141
- * @param {() => import("../spec/channel.js").Type} getType
142
- * @returns {DomainArray}
143
- */
144
- function resolveDataDomain(members, getType) {
145
- return Array.from(members)
146
- .map((member) => member.dataDomainSource?.(member.channel, getType()))
147
- .filter((domain) => !!domain)
148
- .reduce((acc, curr) => acc.extendAll(curr));
149
- }
150
-
151
- /**
152
- * @param {import("../spec/channel.js").Type} type
153
- * @param {() => number[]} getLocusExtent
154
- * @param {DomainArray | undefined} dataDomain
155
- * @returns {any[]}
156
- */
157
- function resolveDefaultDomain(type, getLocusExtent, dataDomain) {
158
- if (type == LOCUS) {
159
- return getLocusExtent();
160
- }
161
- return dataDomain ?? [];
162
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=scaleDomainAggregator.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scaleDomainAggregator.test.d.ts","sourceRoot":"","sources":["../../../src/scales/scaleDomainAggregator.test.js"],"names":[],"mappings":""}