@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.
- package/dist/bundle/index.es.js +7669 -6115
- package/dist/bundle/index.js +114 -133
- package/dist/schema.json +534 -132
- package/dist/src/data/collector.d.ts +20 -0
- package/dist/src/data/collector.d.ts.map +1 -1
- package/dist/src/data/collector.js +148 -0
- package/dist/src/data/dataFlow.d.ts +6 -0
- package/dist/src/data/dataFlow.d.ts.map +1 -1
- package/dist/src/data/dataFlow.js +10 -0
- package/dist/src/data/flowHandle.d.ts +2 -0
- package/dist/src/data/flowHandle.d.ts.map +1 -1
- package/dist/src/data/flowHandle.js +1 -0
- package/dist/src/data/flowInit.d.ts +12 -4
- package/dist/src/data/flowInit.d.ts.map +1 -1
- package/dist/src/data/flowInit.js +115 -17
- package/dist/src/data/flowNode.d.ts +8 -0
- package/dist/src/data/flowNode.d.ts.map +1 -1
- package/dist/src/data/flowNode.js +18 -0
- package/dist/src/data/keyIndex.d.ts +18 -0
- package/dist/src/data/keyIndex.d.ts.map +1 -0
- package/dist/src/data/keyIndex.js +241 -0
- package/dist/src/data/keyIndex.test.d.ts +2 -0
- package/dist/src/data/keyIndex.test.d.ts.map +1 -0
- package/dist/src/data/sources/dataSource.d.ts.map +1 -1
- package/dist/src/data/sources/dataSource.js +5 -1
- package/dist/src/data/sources/dataSourceFactory.d.ts +14 -12
- package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -1
- package/dist/src/data/sources/dataSourceFactory.js +52 -16
- package/dist/src/data/sources/lazy/mockLazySource.d.ts +29 -0
- package/dist/src/data/sources/lazy/mockLazySource.d.ts.map +1 -0
- package/dist/src/data/sources/lazy/mockLazySource.js +44 -0
- package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +22 -1
- package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/singleAxisLazySource.js +34 -2
- package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +15 -0
- package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/tabixSource.js +15 -5
- package/dist/src/data/transforms/stack.d.ts.map +1 -1
- package/dist/src/data/transforms/stack.js +1 -0
- package/dist/src/encoder/accessor.d.ts +43 -0
- package/dist/src/encoder/accessor.d.ts.map +1 -1
- package/dist/src/encoder/accessor.js +164 -0
- package/dist/src/encoder/encoder.d.ts +11 -2
- package/dist/src/encoder/encoder.d.ts.map +1 -1
- package/dist/src/encoder/encoder.js +24 -4
- package/dist/src/encoder/metadataChannels.d.ts +15 -0
- package/dist/src/encoder/metadataChannels.d.ts.map +1 -0
- package/dist/src/encoder/metadataChannels.js +65 -0
- package/dist/src/encoder/metadataChannels.test.d.ts +2 -0
- package/dist/src/encoder/metadataChannels.test.d.ts.map +1 -0
- package/dist/src/genome/scaleLocus.d.ts.map +1 -1
- package/dist/src/genome/scaleLocus.js +14 -1
- package/dist/src/genomeSpy/containerUi.d.ts +0 -1
- package/dist/src/genomeSpy/containerUi.d.ts.map +1 -1
- package/dist/src/genomeSpy/containerUi.js +0 -14
- package/dist/src/genomeSpy/loadingIndicatorManager.d.ts +3 -7
- package/dist/src/genomeSpy/loadingIndicatorManager.d.ts.map +1 -1
- package/dist/src/genomeSpy/loadingIndicatorManager.js +68 -20
- package/dist/src/genomeSpy/loadingStatusRegistry.d.ts +52 -0
- package/dist/src/genomeSpy/loadingStatusRegistry.d.ts.map +1 -0
- package/dist/src/genomeSpy/loadingStatusRegistry.js +86 -0
- package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -1
- package/dist/src/genomeSpy/viewContextFactory.js +0 -1
- package/dist/src/genomeSpy/viewDataInit.d.ts +10 -0
- package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -1
- package/dist/src/genomeSpy/viewDataInit.js +166 -2
- package/dist/src/genomeSpy/viewDataInit.test.d.ts +2 -0
- package/dist/src/genomeSpy/viewDataInit.test.d.ts.map +1 -0
- package/dist/src/genomeSpy.d.ts +1 -2
- package/dist/src/genomeSpy.d.ts.map +1 -1
- package/dist/src/genomeSpy.js +69 -27
- package/dist/src/gl/dataToVertices.d.ts.map +1 -1
- package/dist/src/gl/dataToVertices.js +16 -4
- package/dist/src/marks/mark.d.ts.map +1 -1
- package/dist/src/marks/mark.js +18 -11
- package/dist/src/marks/markUtils.js +1 -1
- package/dist/src/scale/scale.d.ts +6 -1
- package/dist/src/scale/scale.d.ts.map +1 -1
- package/dist/src/scale/scale.js +83 -23
- package/dist/src/scales/axisResolution.d.ts.map +1 -1
- package/dist/src/scales/axisResolution.js +10 -0
- package/dist/src/scales/{scaleDomainAggregator.d.ts → domainPlanner.d.ts} +8 -5
- package/dist/src/scales/domainPlanner.d.ts.map +1 -0
- package/dist/src/scales/domainPlanner.js +285 -0
- package/dist/src/scales/domainPlanner.test.d.ts +2 -0
- package/dist/src/scales/domainPlanner.test.d.ts.map +1 -0
- package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -1
- package/dist/src/scales/scaleInstanceManager.js +8 -4
- package/dist/src/scales/scaleInteractionController.d.ts +6 -0
- package/dist/src/scales/scaleInteractionController.d.ts.map +1 -1
- package/dist/src/scales/scaleInteractionController.js +41 -3
- package/dist/src/scales/scaleResolution.d.ts +19 -16
- package/dist/src/scales/scaleResolution.d.ts.map +1 -1
- package/dist/src/scales/scaleResolution.js +255 -70
- package/dist/src/scales/scaleResolution.test.d.ts.map +1 -1
- package/dist/src/selection/selection.d.ts +21 -0
- package/dist/src/selection/selection.d.ts.map +1 -1
- package/dist/src/selection/selection.js +82 -0
- package/dist/src/spec/channel.d.ts +52 -15
- package/dist/src/spec/data.d.ts +4 -0
- package/dist/src/spec/parameter.d.ts +16 -11
- package/dist/src/spec/testing.d.ts +12 -0
- package/dist/src/spec/testing.d.ts.map +1 -0
- package/dist/src/spec/testing.js +20 -0
- package/dist/src/spec/view.d.ts +45 -10
- package/dist/src/styles/genome-spy.css +3 -31
- package/dist/src/styles/genome-spy.css.d.ts +1 -1
- package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
- package/dist/src/styles/genome-spy.css.js +0 -29
- package/dist/src/types/encoder.d.ts +37 -2
- package/dist/src/types/rendering.d.ts +4 -3
- package/dist/src/types/viewContext.d.ts +0 -14
- package/dist/src/utils/domainArray.d.ts.map +1 -1
- package/dist/src/utils/domainArray.js +3 -0
- package/dist/src/utils/indexer.d.ts +3 -0
- package/dist/src/utils/indexer.d.ts.map +1 -1
- package/dist/src/utils/indexer.js +3 -0
- package/dist/src/utils/throttle.d.ts +4 -1
- package/dist/src/utils/throttle.d.ts.map +1 -1
- package/dist/src/utils/throttle.js +54 -23
- package/dist/src/utils/throttle.test.d.ts +2 -0
- package/dist/src/utils/throttle.test.d.ts.map +1 -0
- package/dist/src/utils/transition.d.ts +21 -0
- package/dist/src/utils/transition.d.ts.map +1 -1
- package/dist/src/utils/transition.js +28 -0
- package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
- package/dist/src/utils/ui/tooltip.js +7 -1
- package/dist/src/utils/ui/tooltip.test.d.ts +2 -0
- package/dist/src/utils/ui/tooltip.test.d.ts.map +1 -0
- package/dist/src/view/axisGridView.d.ts.map +1 -1
- package/dist/src/view/axisGridView.js +22 -5
- package/dist/src/view/axisView.d.ts.map +1 -1
- package/dist/src/view/axisView.js +20 -5
- package/dist/src/view/concatView.js +3 -3
- package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
- package/dist/src/view/containerMutationHelper.js +6 -2
- package/dist/src/view/containerView.d.ts +9 -5
- package/dist/src/view/containerView.d.ts.map +1 -1
- package/dist/src/view/containerView.js +34 -9
- package/dist/src/view/dataReadiness.d.ts +46 -0
- package/dist/src/view/dataReadiness.d.ts.map +1 -0
- package/dist/src/view/dataReadiness.js +267 -0
- package/dist/src/view/dataReadiness.test.d.ts +2 -0
- package/dist/src/view/dataReadiness.test.d.ts.map +1 -0
- package/dist/src/view/facetView.d.ts.map +1 -1
- package/dist/src/view/facetView.js +7 -5
- package/dist/src/view/flowBuilder.d.ts +5 -3
- package/dist/src/view/flowBuilder.d.ts.map +1 -1
- package/dist/src/view/flowBuilder.js +74 -7
- package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
- package/dist/src/view/gridView/gridChild.js +8 -0
- package/dist/src/view/gridView/gridView.d.ts.map +1 -1
- package/dist/src/view/gridView/gridView.js +119 -2
- package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
- package/dist/src/view/gridView/scrollbar.js +3 -0
- package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
- package/dist/src/view/gridView/selectionRect.js +20 -5
- package/dist/src/view/gridView/separatorView.d.ts +51 -0
- package/dist/src/view/gridView/separatorView.d.ts.map +1 -0
- package/dist/src/view/gridView/separatorView.js +275 -0
- package/dist/src/view/layerView.js +3 -3
- package/dist/src/view/layout/flexLayout.d.ts +0 -30
- package/dist/src/view/layout/flexLayout.d.ts.map +1 -1
- package/dist/src/view/layout/flexLayout.js +0 -86
- package/dist/src/view/paramMediator.d.ts +19 -0
- package/dist/src/view/paramMediator.d.ts.map +1 -1
- package/dist/src/view/paramMediator.js +86 -19
- package/dist/src/view/testUtils.d.ts.map +1 -1
- package/dist/src/view/testUtils.js +11 -1
- package/dist/src/view/unitView.d.ts +8 -13
- package/dist/src/view/unitView.d.ts.map +1 -1
- package/dist/src/view/unitView.js +127 -43
- package/dist/src/view/view.d.ts +34 -14
- package/dist/src/view/view.d.ts.map +1 -1
- package/dist/src/view/view.js +119 -9
- package/dist/src/view/viewFactory.d.ts.map +1 -1
- package/dist/src/view/viewFactory.js +20 -1
- package/dist/src/view/viewSelectors.d.ts +148 -0
- package/dist/src/view/viewSelectors.d.ts.map +1 -0
- package/dist/src/view/viewSelectors.js +773 -0
- package/dist/src/view/viewSelectors.test.d.ts +2 -0
- package/dist/src/view/viewSelectors.test.d.ts.map +1 -0
- package/dist/src/view/viewUtils.d.ts +0 -8
- package/dist/src/view/viewUtils.d.ts.map +1 -1
- package/dist/src/view/viewUtils.js +1 -21
- package/package.json +3 -3
- package/dist/src/scales/scaleDomainAggregator.d.ts.map +0 -1
- package/dist/src/scales/scaleDomainAggregator.js +0 -162
- package/dist/src/scales/scaleDomainAggregator.test.d.ts +0 -2
- package/dist/src/scales/scaleDomainAggregator.test.d.ts.map +0 -1
|
@@ -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
|
|
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.
|
|
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": "^
|
|
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": "
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scaleDomainAggregator.test.d.ts","sourceRoot":"","sources":["../../../src/scales/scaleDomainAggregator.test.js"],"names":[],"mappings":""}
|