@genome-spy/core 0.45.0 → 0.46.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-lmJu1tfP.js → index-BtRKzKhM.js} +6 -6
- package/dist/bundle/{index--cKb-dKG.js → index-BwFvhduA.js} +5 -5
- package/dist/bundle/{index-1QVesMzU.js → index-C8lYPtq_.js} +1 -1
- package/dist/bundle/{index-Pv3tKJ1W.js → index-CkI3Kd2P.js} +3 -3
- package/dist/bundle/{index-Y-LdHNIz.js → index-CmBp-spD.js} +1 -1
- package/dist/bundle/{index-z4Cs62EO.js → index-Dixm7K89.js} +4 -4
- package/dist/bundle/{index-noY1e-G6.js → index-Sk-Wtwdn.js} +5 -5
- package/dist/bundle/{index-UyrC0vvF.js → index-Z7JiNsFI.js} +4 -4
- package/dist/bundle/{index-LD6yPc3X.js → index-mihmTLo-.js} +1 -1
- package/dist/bundle/index.es.js +2698 -2615
- package/dist/bundle/index.js +93 -84
- package/dist/bundle/{long-Veu0zKh9.js → long-CYrAUkxh.js} +2 -2
- package/dist/bundle/{remoteFile-Ur-gRKsH.js → remoteFile-1_eCK3VV.js} +1 -1
- package/dist/schema.json +156 -15
- package/dist/src/data/collector.d.ts +1 -0
- package/dist/src/data/collector.d.ts.map +1 -1
- package/dist/src/data/collector.js +19 -3
- package/dist/src/data/flow.test.js +4 -0
- package/dist/src/data/flowNode.d.ts +10 -8
- package/dist/src/data/flowNode.d.ts.map +1 -1
- package/dist/src/data/flowNode.js +25 -15
- package/dist/src/data/sources/dataSource.d.ts +17 -0
- package/dist/src/data/sources/dataSource.d.ts.map +1 -1
- package/dist/src/data/sources/dataSource.js +34 -0
- package/dist/src/data/sources/inlineSource.js +1 -1
- package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/bigBedSource.js +6 -0
- package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/bigWigSource.js +28 -15
- package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +0 -8
- package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/singleAxisLazySource.js +1 -13
- package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +3 -3
- package/dist/src/data/sources/namedSource.js +1 -1
- package/dist/src/data/sources/sequenceSource.d.ts.map +1 -1
- package/dist/src/data/sources/sequenceSource.js +2 -1
- package/dist/src/data/sources/urlSource.d.ts.map +1 -1
- package/dist/src/data/sources/urlSource.js +9 -5
- package/dist/src/data/transforms/filter.d.ts +2 -2
- package/dist/src/data/transforms/filter.d.ts.map +1 -1
- package/dist/src/data/transforms/filter.js +3 -6
- package/dist/src/data/transforms/filter.test.js +6 -0
- package/dist/src/data/transforms/formula.d.ts +2 -2
- package/dist/src/data/transforms/formula.d.ts.map +1 -1
- package/dist/src/data/transforms/formula.js +3 -3
- package/dist/src/data/transforms/formula.test.js +7 -1
- package/dist/src/genomeSpy.d.ts +5 -2
- package/dist/src/genomeSpy.d.ts.map +1 -1
- package/dist/src/genomeSpy.js +24 -8
- package/dist/src/marks/mark.d.ts.map +1 -1
- package/dist/src/marks/mark.js +11 -0
- package/dist/src/spec/view.d.ts +52 -9
- 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 +4 -0
- package/dist/src/styles/genome-spy.scss +5 -0
- package/dist/src/types/viewContext.d.ts +9 -2
- package/dist/src/utils/expression.js +1 -1
- package/dist/src/view/paramMediator.d.ts +2 -1
- package/dist/src/view/paramMediator.d.ts.map +1 -1
- package/dist/src/view/paramMediator.js +3 -2
- package/dist/src/view/paramMediator.test.js +13 -0
- package/dist/src/view/viewFactory.d.ts +4 -1
- package/dist/src/view/viewFactory.d.ts.map +1 -1
- package/dist/src/view/viewFactory.js +52 -24
- package/dist/src/view/viewUtils.d.ts +2 -7
- package/dist/src/view/viewUtils.d.ts.map +1 -1
- package/dist/src/view/viewUtils.js +21 -30
- package/package.json +2 -2
- /package/dist/bundle/{__vite-browser-external-ENoMJThg.js → __vite-browser-external-C--ziKoh.js} +0 -0
- /package/dist/bundle/{_commonjsHelpers-QtkX90xp.js → _commonjsHelpers-BIiJCwQW.js} +0 -0
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import FlowNode from "../flowNode.js";
|
|
2
2
|
|
|
3
3
|
export default class DataSource extends FlowNode {
|
|
4
|
+
/**
|
|
5
|
+
* @type {import("../../view/view.js").default}
|
|
6
|
+
* @protected
|
|
7
|
+
*/
|
|
8
|
+
view;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @param {import("../../view/view.js").default} view
|
|
12
|
+
*/
|
|
13
|
+
constructor(view) {
|
|
14
|
+
super();
|
|
15
|
+
|
|
16
|
+
this.view = view;
|
|
17
|
+
}
|
|
18
|
+
|
|
4
19
|
/**
|
|
5
20
|
* Returns a string that identifies a data source. Data sources with the
|
|
6
21
|
* same identifier can be merged.
|
|
@@ -11,6 +26,21 @@ export default class DataSource extends FlowNode {
|
|
|
11
26
|
return undefined;
|
|
12
27
|
}
|
|
13
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Sets the loading status of the data source. The status is shown in the UI.
|
|
31
|
+
*
|
|
32
|
+
* @param {import("../../types/viewContext.js").DataLoadingStatus} status
|
|
33
|
+
* @param {string} [detail] The error message
|
|
34
|
+
* @protected
|
|
35
|
+
*/
|
|
36
|
+
setLoadingStatus(status, detail) {
|
|
37
|
+
this.view.context.setDataLoadingStatus(this.view, status, detail);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
get paramMediator() {
|
|
41
|
+
return this.view.paramMediator;
|
|
42
|
+
}
|
|
43
|
+
|
|
14
44
|
/**
|
|
15
45
|
*
|
|
16
46
|
* @param {import("../flowNode.js").Datum} datum
|
|
@@ -22,4 +52,8 @@ export default class DataSource extends FlowNode {
|
|
|
22
52
|
async load() {
|
|
23
53
|
// override
|
|
24
54
|
}
|
|
55
|
+
|
|
56
|
+
repropagate() {
|
|
57
|
+
this.load();
|
|
58
|
+
}
|
|
25
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigBedSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigBedSource.js"],"names":[],"mappings":"AAOA;IAUI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAmCjD;IA9CD,0CAA0C;IAC1C,QADW,OAAO,WAAW,EAAE,OAAO,CAC/B;IAEP,yCAAyC;IACzC,KADW,OAAO,WAAW,EAAE,MAAM,CACjC;IAEJ,4GAA4G;IAC5G,mBADmB,MAAM,UAAU;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,MAAM,EAAE,GAAG,CAAC,CAC9F;IA8BN,mDAA6B;;
|
|
1
|
+
{"version":3,"file":"bigBedSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigBedSource.js"],"names":[],"mappings":"AAOA;IAUI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAmCjD;IA9CD,0CAA0C;IAC1C,QADW,OAAO,WAAW,EAAE,OAAO,CAC/B;IAEP,yCAAyC;IACzC,KADW,OAAO,WAAW,EAAE,MAAM,CACjC;IAEJ,4GAA4G;IAC5G,mBADmB,MAAM,UAAU;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,MAAM,EAAE,GAAG,CAAC,CAC9F;IA8BN,mDAA6B;;CAoFpC;qCA5HoC,+BAA+B"}
|
|
@@ -72,6 +72,7 @@ export default class BigBedSource extends SingleAxisWindowedSource {
|
|
|
72
72
|
),
|
|
73
73
|
});
|
|
74
74
|
|
|
75
|
+
this.setLoadingStatus("loading");
|
|
75
76
|
this.bbi
|
|
76
77
|
.getHeader()
|
|
77
78
|
.then(async (header) => {
|
|
@@ -88,11 +89,16 @@ export default class BigBedSource extends SingleAxisWindowedSource {
|
|
|
88
89
|
);
|
|
89
90
|
}
|
|
90
91
|
|
|
92
|
+
this.setLoadingStatus("complete");
|
|
91
93
|
resolve();
|
|
92
94
|
})
|
|
93
95
|
.catch((e) => {
|
|
94
96
|
// Load empty data
|
|
95
97
|
this.load();
|
|
98
|
+
this.setLoadingStatus(
|
|
99
|
+
"error",
|
|
100
|
+
`${withoutExprRef(this.params.url)}: ${e.message}`
|
|
101
|
+
);
|
|
96
102
|
reject(e);
|
|
97
103
|
});
|
|
98
104
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigWigSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigWigSource.js"],"names":[],"mappings":"AAOA;;GAEG;AACH;IAOI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAmCjD;IATG,mDAA6B;
|
|
1
|
+
{"version":3,"file":"bigWigSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigWigSource.js"],"names":[],"mappings":"AAOA;;GAEG;AACH;IAOI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAmCjD;IATG,mDAA6B;IA2DjC;;;;OAIG;IACH,wBAFW,MAAM,EAAE,iBAqBlB;IAED;;;OAGG;IAEH,uBAJW,MAAM,EAAE,kBACR,MAAM,iBA2BhB;;CACJ;qCA3JoC,+BAA+B"}
|
|
@@ -55,7 +55,7 @@ export default class BigWigSource extends SingleAxisWindowedSource {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
#initialize() {
|
|
58
|
-
this.initializedPromise = new Promise((resolve) => {
|
|
58
|
+
this.initializedPromise = new Promise((resolve, reject) => {
|
|
59
59
|
Promise.all([
|
|
60
60
|
import("@gmod/bbi"),
|
|
61
61
|
import("generic-filehandle"),
|
|
@@ -69,20 +69,33 @@ export default class BigWigSource extends SingleAxisWindowedSource {
|
|
|
69
69
|
),
|
|
70
70
|
});
|
|
71
71
|
|
|
72
|
-
this
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
72
|
+
this.setLoadingStatus("loading");
|
|
73
|
+
this.#bbi
|
|
74
|
+
.getHeader()
|
|
75
|
+
.then((header) => {
|
|
76
|
+
this.#reductionLevels =
|
|
77
|
+
/** @type {{reductionLevel: number}[]} */ (
|
|
78
|
+
header.zoomLevels
|
|
79
|
+
)
|
|
80
|
+
.map((z) => z.reductionLevel)
|
|
81
|
+
.reverse();
|
|
82
|
+
|
|
83
|
+
// Add the non-reduced level. Not sure if this is the best way to do it.
|
|
84
|
+
// Afaik, the non-reduced bin size is not available in the header.
|
|
85
|
+
this.#reductionLevels.push(1);
|
|
86
|
+
|
|
87
|
+
this.setLoadingStatus("complete");
|
|
88
|
+
resolve();
|
|
89
|
+
})
|
|
90
|
+
.catch((e) => {
|
|
91
|
+
// Load empty data
|
|
92
|
+
this.load();
|
|
93
|
+
this.setLoadingStatus(
|
|
94
|
+
"error",
|
|
95
|
+
`${withoutExprRef(this.params.url)}: ${e.message}`
|
|
96
|
+
);
|
|
97
|
+
reject(e);
|
|
98
|
+
});
|
|
86
99
|
});
|
|
87
100
|
});
|
|
88
101
|
|
|
@@ -12,7 +12,6 @@ export default class SingleAxisLazySource extends DataSource {
|
|
|
12
12
|
* @protected
|
|
13
13
|
*/
|
|
14
14
|
protected initializedPromise: Promise<void>;
|
|
15
|
-
view: import("../../../view/view.js").default;
|
|
16
15
|
/** @type {import("../../../spec/channel.js").PrimaryPositionalChannel} */
|
|
17
16
|
channel: import("../../../spec/channel.js").PrimaryPositionalChannel;
|
|
18
17
|
scaleResolution: import("../../../view/scaleResolution.js").default;
|
|
@@ -35,13 +34,6 @@ export default class SingleAxisLazySource extends DataSource {
|
|
|
35
34
|
* @abstract
|
|
36
35
|
*/
|
|
37
36
|
onDomainChanged(domain: number[], complexDomain: import("../../../spec/genome.js").ChromosomalLocus[]): void;
|
|
38
|
-
/**
|
|
39
|
-
* Sets the loading status of the data source. The status is shown in the UI.
|
|
40
|
-
*
|
|
41
|
-
* @param {boolean} status true if loading, false otherwise
|
|
42
|
-
* @protected
|
|
43
|
-
*/
|
|
44
|
-
protected setLoadingStatus(status: boolean): void;
|
|
45
37
|
/**
|
|
46
38
|
* TODO: Get rid of this method.
|
|
47
39
|
* Rendering should be requested by the collector.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singleAxisLazySource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/singleAxisLazySource.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IAOI;;;OAGG;IACH,kBAHW,OAAO,uBAAuB,EAAE,OAAO,WACvC,OAAO,0BAA0B,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"singleAxisLazySource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/singleAxisLazySource.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IAOI;;;OAGG;IACH,kBAHW,OAAO,uBAAuB,EAAE,OAAO,WACvC,OAAO,0BAA0B,EAAE,wBAAwB,EA+CrE;IAvDD;;;OAGG;IACH,4CAAuC;IAmBnC,2EAA2E;IAC3E,SADW,OAAO,0BAA0B,EAAE,wBAAwB,CAChD;IAEtB,oEAA4D;IA+BhE;;;OAGG;IACH,wBAWC;IAED;;;;OAIG;IACH,oEAEC;IAED;;;;;;OAMG;IACH,wBAJW,MAAM,EAAE,iBACR,OAAO,yBAAyB,EAAE,gBAAgB,EAAE,QAK9D;IAED;;;;;OAKG;IACH,gCAGC;IAQD;;;;;OAKG;IACH,8BAHW,OAAO,mBAAmB,EAAE,KAAK,EAAE,EAAE,QAgB/C;CACJ;uBA1IsB,kBAAkB"}
|
|
@@ -17,9 +17,7 @@ export default class SingleAxisLazySource extends DataSource {
|
|
|
17
17
|
* @param {import("../../../spec/channel.js").PrimaryPositionalChannel} channel
|
|
18
18
|
*/
|
|
19
19
|
constructor(view, channel) {
|
|
20
|
-
super();
|
|
21
|
-
|
|
22
|
-
this.view = view;
|
|
20
|
+
super(view);
|
|
23
21
|
|
|
24
22
|
if (!channel) {
|
|
25
23
|
throw new Error(
|
|
@@ -102,16 +100,6 @@ export default class SingleAxisLazySource extends DataSource {
|
|
|
102
100
|
// Override me
|
|
103
101
|
}
|
|
104
102
|
|
|
105
|
-
/**
|
|
106
|
-
* Sets the loading status of the data source. The status is shown in the UI.
|
|
107
|
-
*
|
|
108
|
-
* @param {boolean} status true if loading, false otherwise
|
|
109
|
-
* @protected
|
|
110
|
-
*/
|
|
111
|
-
setLoadingStatus(status) {
|
|
112
|
-
this.view.context.setDataLoadingStatus(this.view, status);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
103
|
/**
|
|
116
104
|
* TODO: Get rid of this method.
|
|
117
105
|
* Rendering should be requested by the collector.
|
|
@@ -111,7 +111,7 @@ export default class SingleAxisWindowedSource extends SingleAxisLazySource {
|
|
|
111
111
|
// Abort previous requests
|
|
112
112
|
this.#abortController.abort();
|
|
113
113
|
|
|
114
|
-
this.setLoadingStatus(
|
|
114
|
+
this.setLoadingStatus("loading");
|
|
115
115
|
|
|
116
116
|
this.#abortController = new AbortController();
|
|
117
117
|
const signal = this.#abortController.signal;
|
|
@@ -129,13 +129,13 @@ export default class SingleAxisWindowedSource extends SingleAxisLazySource {
|
|
|
129
129
|
);
|
|
130
130
|
|
|
131
131
|
if (!signal.aborted) {
|
|
132
|
-
this.setLoadingStatus(
|
|
132
|
+
this.setLoadingStatus("complete");
|
|
133
133
|
return resultByChrom;
|
|
134
134
|
}
|
|
135
135
|
} catch (e) {
|
|
136
136
|
if (!signal.aborted) {
|
|
137
137
|
// TODO: Nice reporting of errors
|
|
138
|
-
this.setLoadingStatus(
|
|
138
|
+
this.setLoadingStatus("error", e.message);
|
|
139
139
|
throw e;
|
|
140
140
|
}
|
|
141
141
|
}
|
|
@@ -22,7 +22,7 @@ export default class NamedSource extends DataSource {
|
|
|
22
22
|
* @param {function(string):any[]} provider Function that retrieves a dataset using a name
|
|
23
23
|
*/
|
|
24
24
|
constructor(params, view, provider) {
|
|
25
|
-
super();
|
|
25
|
+
super(view);
|
|
26
26
|
|
|
27
27
|
this.provider = provider;
|
|
28
28
|
this.params = params;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequenceSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/sequenceSource.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,0CAHW,QAAQ,OAAO,oBAAoB,EAAE,IAAI,CAAC,0DAKpD;AAED;IACI;;;;OAIG;IACH,oBAHW,OAAO,oBAAoB,EAAE,iBAAiB,QAC9C,OAAO,oBAAoB,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"sequenceSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/sequenceSource.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,0CAHW,QAAQ,OAAO,oBAAoB,EAAE,IAAI,CAAC,0DAKpD;AAED;IACI;;;;OAIG;IACH,oBAHW,OAAO,oBAAoB,EAAE,iBAAiB,QAC9C,OAAO,oBAAoB,EAAE,OAAO,EAiB9C;IAZG,sDAIC;IAUL,0BAcC;CAKJ;uBApDsB,iBAAiB"}
|
|
@@ -19,7 +19,8 @@ export default class SequenceSource extends DataSource {
|
|
|
19
19
|
* @param {import("../../view/view.js").default} view
|
|
20
20
|
*/
|
|
21
21
|
constructor(params, view) {
|
|
22
|
-
super();
|
|
22
|
+
super(view);
|
|
23
|
+
|
|
23
24
|
this.sequence = activateExprRefProps(
|
|
24
25
|
view.paramMediator,
|
|
25
26
|
params.sequence,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/urlSource.js"],"names":[],"mappings":"AAQA;;;GAGG;AACH,gCAHW,QAAQ,OAAO,oBAAoB,EAAE,IAAI,CAAC,gDAKpD;AAED;IACI;;;OAGG;IACH,oBAHW,OAAO,oBAAoB,EAAE,OAAO,QACpC,OAAO,oBAAoB,EAAE,OAAO,EAU9C;IALG,6CAEC;IAED,gBAAiC;
|
|
1
|
+
{"version":3,"file":"urlSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/urlSource.js"],"names":[],"mappings":"AAQA;;;GAGG;AACH,gCAHW,QAAQ,OAAO,oBAAoB,EAAE,IAAI,CAAC,gDAKpD;AAED;IACI;;;OAGG;IACH,oBAHW,OAAO,oBAAoB,EAAE,OAAO,QACpC,OAAO,oBAAoB,EAAE,OAAO,EAU9C;IALG,6CAEC;IAED,gBAAiC;CA8DxC;uBAxFsB,iBAAiB"}
|
|
@@ -20,7 +20,7 @@ export default class UrlSource extends DataSource {
|
|
|
20
20
|
* @param {import("../../view/view.js").default} view
|
|
21
21
|
*/
|
|
22
22
|
constructor(params, view) {
|
|
23
|
-
super();
|
|
23
|
+
super(view);
|
|
24
24
|
|
|
25
25
|
this.params = activateExprRefProps(view.paramMediator, params, () =>
|
|
26
26
|
this.load()
|
|
@@ -55,9 +55,7 @@ export default class UrlSource extends DataSource {
|
|
|
55
55
|
.load(url)
|
|
56
56
|
.catch((/** @type {Error} */ e) => {
|
|
57
57
|
// TODO: Include baseurl in the error message. Should be normalized, however.
|
|
58
|
-
throw new Error(
|
|
59
|
-
`Cannot fetch: ${this.baseUrl}${url}: ${e.message}`
|
|
60
|
-
);
|
|
58
|
+
throw new Error(`${url}: ${e.message}`);
|
|
61
59
|
})
|
|
62
60
|
);
|
|
63
61
|
|
|
@@ -78,9 +76,15 @@ export default class UrlSource extends DataSource {
|
|
|
78
76
|
}
|
|
79
77
|
};
|
|
80
78
|
|
|
79
|
+
this.setLoadingStatus("loading");
|
|
81
80
|
this.reset();
|
|
82
81
|
|
|
83
|
-
|
|
82
|
+
try {
|
|
83
|
+
await Promise.all(urls.map((url) => load(url).then(readAndParse)));
|
|
84
|
+
this.setLoadingStatus("complete");
|
|
85
|
+
} catch (e) {
|
|
86
|
+
this.setLoadingStatus("error", e.message);
|
|
87
|
+
}
|
|
84
88
|
|
|
85
89
|
this.complete();
|
|
86
90
|
}
|
|
@@ -5,8 +5,8 @@ export default class FilterTransform extends FlowNode {
|
|
|
5
5
|
*/
|
|
6
6
|
constructor(params: import("../../spec/transform.js").FilterParams);
|
|
7
7
|
params: import("../../spec/transform.js").FilterParams;
|
|
8
|
-
/** @type {(
|
|
9
|
-
predicate: (
|
|
8
|
+
/** @type {import("../../view/paramMediator.js").ExprRefFunction} */
|
|
9
|
+
predicate: import("../../view/paramMediator.js").ExprRefFunction;
|
|
10
10
|
}
|
|
11
11
|
import FlowNode from "../flowNode.js";
|
|
12
12
|
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/filter.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/filter.js"],"names":[],"mappings":"AAEA;IACI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,YAAY,EAQxD;IAJG,uDAAoB;IAEpB,oEAAoE;IACpE,WADW,OAAO,6BAA6B,EAAE,eAAe,CACtC;CAiBjC;qBA7BoB,gBAAgB"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import createFunction from "../../utils/expression.js";
|
|
2
1
|
import FlowNode from "../flowNode.js";
|
|
3
2
|
|
|
4
3
|
export default class FilterTransform extends FlowNode {
|
|
@@ -10,15 +9,13 @@ export default class FilterTransform extends FlowNode {
|
|
|
10
9
|
super();
|
|
11
10
|
this.params = params;
|
|
12
11
|
|
|
13
|
-
/** @type {(
|
|
12
|
+
/** @type {import("../../view/paramMediator.js").ExprRefFunction} */
|
|
14
13
|
this.predicate = undefined;
|
|
15
14
|
}
|
|
16
15
|
|
|
17
16
|
initialize() {
|
|
18
|
-
this.predicate =
|
|
19
|
-
|
|
20
|
-
this.getGlobalObject()
|
|
21
|
-
);
|
|
17
|
+
this.predicate = this.paramMediator.createExpression(this.params.expr);
|
|
18
|
+
this.predicate.addListener(() => this.repropagate());
|
|
22
19
|
}
|
|
23
20
|
|
|
24
21
|
/**
|
|
@@ -2,6 +2,8 @@ import { expect, test } from "vitest";
|
|
|
2
2
|
import { processData } from "../flowTestUtils.js";
|
|
3
3
|
import FilterTransform from "./filter.js";
|
|
4
4
|
|
|
5
|
+
test.todo("Implement stub for ParamMediator");
|
|
6
|
+
|
|
5
7
|
test("FilterTransform filter rows", () => {
|
|
6
8
|
const data = [1, 2, 3, 4, 5, 6].map((x) => ({ x }));
|
|
7
9
|
|
|
@@ -11,8 +13,12 @@ test("FilterTransform filter rows", () => {
|
|
|
11
13
|
expr: "datum.x > 3 && datum.x != 5",
|
|
12
14
|
};
|
|
13
15
|
|
|
16
|
+
/* TODO: Enable this test, implement stub for ParamMediator
|
|
17
|
+
|
|
14
18
|
const t = new FilterTransform(filterParams);
|
|
15
19
|
t.initialize();
|
|
16
20
|
|
|
17
21
|
expect(processData(t, data)).toEqual([4, 6].map((x) => ({ x })));
|
|
22
|
+
|
|
23
|
+
*/
|
|
18
24
|
});
|
|
@@ -6,8 +6,8 @@ export default class FormulaTransform extends FlowNode {
|
|
|
6
6
|
constructor(params: import("../../spec/transform.js").FormulaParams);
|
|
7
7
|
params: import("../../spec/transform.js").FormulaParams;
|
|
8
8
|
as: string;
|
|
9
|
-
/** @type {(
|
|
10
|
-
fn: (
|
|
9
|
+
/** @type {import("../../view/paramMediator.js").ExprRefFunction} */
|
|
10
|
+
fn: import("../../view/paramMediator.js").ExprRefFunction;
|
|
11
11
|
}
|
|
12
12
|
import FlowNode from "../flowNode.js";
|
|
13
13
|
//# sourceMappingURL=formula.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/formula.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"formula.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/formula.js"],"names":[],"mappings":"AAEA;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,aAAa,EAUzD;IANG,wDAAoB;IAEpB,WAAmB;IAEnB,oEAAoE;IACpE,IADW,OAAO,6BAA6B,EAAE,eAAe,CAC7C;CAgB1B;qBAlC2C,gBAAgB"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import createFunction from "../../utils/expression.js";
|
|
2
1
|
import FlowNode, { BEHAVIOR_MODIFIES } from "../flowNode.js";
|
|
3
2
|
|
|
4
3
|
export default class FormulaTransform extends FlowNode {
|
|
@@ -16,12 +15,13 @@ export default class FormulaTransform extends FlowNode {
|
|
|
16
15
|
|
|
17
16
|
this.as = params.as;
|
|
18
17
|
|
|
19
|
-
/** @type {(
|
|
18
|
+
/** @type {import("../../view/paramMediator.js").ExprRefFunction} */
|
|
20
19
|
this.fn = undefined;
|
|
21
20
|
}
|
|
22
21
|
|
|
23
22
|
initialize() {
|
|
24
|
-
this.fn =
|
|
23
|
+
this.fn = this.paramMediator.createExpression(this.params.expr);
|
|
24
|
+
this.fn.addListener(() => this.repropagate());
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
/**
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import { expect, test } from "vitest";
|
|
1
|
+
import { expect, test, test } from "vitest";
|
|
2
2
|
import { processData } from "../flowTestUtils.js";
|
|
3
3
|
import FormulaTransform from "./formula.js";
|
|
4
4
|
|
|
5
|
+
test.todo("Implement stub for ParamMediator");
|
|
6
|
+
|
|
5
7
|
test("FormulaTransform", () => {
|
|
6
8
|
const data = [{ a: 2 }, { a: 3 }];
|
|
7
9
|
|
|
10
|
+
/* TODO: Enable this test, implement stub for ParamMediator
|
|
11
|
+
|
|
8
12
|
const t = new FormulaTransform({
|
|
9
13
|
type: "formula",
|
|
10
14
|
expr: "datum.a * 2",
|
|
@@ -16,4 +20,6 @@ test("FormulaTransform", () => {
|
|
|
16
20
|
{ a: 2, b: 4 },
|
|
17
21
|
{ a: 3, b: 6 },
|
|
18
22
|
]);
|
|
23
|
+
|
|
24
|
+
*/
|
|
19
25
|
});
|
package/dist/src/genomeSpy.d.ts
CHANGED
|
@@ -73,9 +73,12 @@ export default class GenomeSpy {
|
|
|
73
73
|
/**
|
|
74
74
|
* Views that are currently loading data using lazy sources.
|
|
75
75
|
*
|
|
76
|
-
* @type {Map<View,
|
|
76
|
+
* @type {Map<View, { status: import("./types/viewContext.js").DataLoadingStatus, detail?: string }>}
|
|
77
77
|
*/
|
|
78
|
-
_loadingViews: Map<import("./view/view.js").default,
|
|
78
|
+
_loadingViews: Map<import("./view/view.js").default, {
|
|
79
|
+
status: import("./types/viewContext.js").DataLoadingStatus;
|
|
80
|
+
detail?: string;
|
|
81
|
+
}>;
|
|
79
82
|
/**
|
|
80
83
|
* @type {HTMLElement}
|
|
81
84
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"genomeSpy.d.ts","sourceRoot":"","sources":["../../src/genomeSpy.js"],"names":[],"mappings":"AA8CA;IACI;;;;;OAKG;IAEH;;;;;OAKG;IACH,uBAJW,WAAW,qDAEX,OAAO,qBAAqB,EAAE,YAAY,EA2FpD;IAxFG,uBAA0B;IAC1B,oDAAsB;IAItB,6BAA6B;IAC7B,uBADW,CAAC,MAAM,IAAI,CAAC,EAAE,CACM;IAE/B,sCAAsC;IACtC,wCAAgB;IAEhB,iCAA4C;IAC5C,yBAAoC;IAEpC,4CAA4C;IAC5C,oBADW,QAAU,MAAM,KAAE,MAAM,EAAE,CAAC,EAAE,CACZ;IAE5B,mBAAoD;IAEpD,0BAA0B;IAC1B,aADW,WAAW,CACM;IAE5B;;;;;OAKG;IACH,qEAF0B,OAAO,CAE8B;IAE/D,2CAA2C;IAC3C,mBADW,4BAA4B,CACL;IAClC,2CAA2C;IAC3C,iBADW,4BAA4B,CACP;IAEhC,oDAAoD;IACpD,6BAAgC;IAEhC;;;OAGG;IACH,eAFU;QAAE,IAAI,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,oBAAoB,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAEpF;IAE9B,uBAA+C;IAE/C;;;OAGG;IACH,oBAFU,IAAI,MAAM,EAAE,QAAU,aAAa,KAAE,IAAI,CAAC,EAAE,CAAC,CAEpB;IAEnC;;;;;;OAMG;IACH,yCAFkC,GAAG,KAAK,IAAI,GAEd;IAEhC;;;OAGG;IACH,kDAFkC,GAAG,KAAK,IAAI,GAEL;IAEzC,oFAAoF;IACpF,iBADW,OAAO,MAAM,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC,CAK9E;IAED,mBAAmB;IACnB,2CAAyB;IAEzB;;;;OAIG;IACH,
|
|
1
|
+
{"version":3,"file":"genomeSpy.d.ts","sourceRoot":"","sources":["../../src/genomeSpy.js"],"names":[],"mappings":"AA8CA;IACI;;;;;OAKG;IAEH;;;;;OAKG;IACH,uBAJW,WAAW,qDAEX,OAAO,qBAAqB,EAAE,YAAY,EA2FpD;IAxFG,uBAA0B;IAC1B,oDAAsB;IAItB,6BAA6B;IAC7B,uBADW,CAAC,MAAM,IAAI,CAAC,EAAE,CACM;IAE/B,sCAAsC;IACtC,wCAAgB;IAEhB,iCAA4C;IAC5C,yBAAoC;IAEpC,4CAA4C;IAC5C,oBADW,QAAU,MAAM,KAAE,MAAM,EAAE,CAAC,EAAE,CACZ;IAE5B,mBAAoD;IAEpD,0BAA0B;IAC1B,aADW,WAAW,CACM;IAE5B;;;;;OAKG;IACH,qEAF0B,OAAO,CAE8B;IAE/D,2CAA2C;IAC3C,mBADW,4BAA4B,CACL;IAClC,2CAA2C;IAC3C,iBADW,4BAA4B,CACP;IAEhC,oDAAoD;IACpD,6BAAgC;IAEhC;;;OAGG;IACH,eAFU;QAAE,IAAI,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,oBAAoB,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAEpF;IAE9B,uBAA+C;IAE/C;;;OAGG;IACH,oBAFU,IAAI,MAAM,EAAE,QAAU,aAAa,KAAE,IAAI,CAAC,EAAE,CAAC,CAEpB;IAEnC;;;;;;OAMG;IACH,yCAFkC,GAAG,KAAK,IAAI,GAEd;IAEhC;;;OAGG;IACH,kDAFkC,GAAG,KAAK,IAAI,GAEL;IAEzC,oFAAoF;IACpF,iBADW,OAAO,MAAM,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC,CAK9E;IAED,mBAAmB;IACnB,2CAAyB;IAEzB;;;;OAIG;IACH;gBAF8B,OAAO,wBAAwB,EAAE,iBAAiB;iBAAW,MAAM;OAEnE;IAE9B;;OAEG;IACH,wBAFU,WAAW,CAEkB;IA2C3C;;;OAGG;IACH,2CAFkB,MAAM,KAAK,GAAG,EAAE,QAIjC;IAED;;OAEG;IACH,+BAFW,MAAM,YAShB;IAED;;;;OAIG;IACH,sBAHW,MAAM,QACN,GAAG,EAAE,QAaf;IAED;;;;;OAKG;IACH,gBAHW,kBAAkB,YAClB,GAAG,QAQb;IAED;;;OAGG;IACH,iCAqDC;IA0DG,uBAOC;IAGD,mCAGE;IAOF,sCAEE;IAGF,iBAAyC;IAW7C;;OAEG;IACH,gBAuBC;IAED,sCA8MC;IAED;;;OAGG;IACH,UAFa,QAAQ,OAAO,CAAC,CA6B5B;IAED,4BA6IC;IAjIe,iCAAoC;IAmIpD;;;OAGG;IACH,kBAHW,MAAM,KACN,MAAM,QAiEhB;IAED;;;;;;;OAOG;IACH,oDAHuB,QAAQ,MAAM,GAAG,WAAW,GAAG,OAAO,KAAK,EAAE,cAAc,CAAC,QAYlF;IAED,sBA6CC;IAED,kBAIC;IAED,iCAOC;IAED,iCASC;IAED,qFAWC;;CACJ;;;;iCA16BY,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,gBAAgB;4BAjC7C,uBAAuB;4BA2BP,uBAAuB;qBAZ9C,qBAAqB;wBAIlB,yBAAyB;yCARR,yDAAyD;oBAYvD,oBAAoB;wBAdvC,qBAAqB;oBAXzB,uBAAuB;qBAStB,oBAAoB"}
|
package/dist/src/genomeSpy.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { formats as vegaFormats } from "vega-loader";
|
|
2
|
-
import { html, render } from "lit";
|
|
2
|
+
import { html, nothing, render } from "lit";
|
|
3
3
|
import { styleMap } from "lit/directives/style-map.js";
|
|
4
4
|
import SPINNER from "./img/90-ring-with-bg.svg";
|
|
5
5
|
|
|
@@ -139,7 +139,7 @@ export default class GenomeSpy {
|
|
|
139
139
|
/**
|
|
140
140
|
* Views that are currently loading data using lazy sources.
|
|
141
141
|
*
|
|
142
|
-
* @type {Map<View,
|
|
142
|
+
* @type {Map<View, { status: import("./types/viewContext.js").DataLoadingStatus, detail?: string }>}
|
|
143
143
|
*/
|
|
144
144
|
this._loadingViews = new Map();
|
|
145
145
|
|
|
@@ -250,7 +250,9 @@ export default class GenomeSpy {
|
|
|
250
250
|
const indicators = [];
|
|
251
251
|
|
|
252
252
|
const isSomethingVisible = () =>
|
|
253
|
-
[...this._loadingViews.values()].some(
|
|
253
|
+
[...this._loadingViews.values()].some(
|
|
254
|
+
(v) => v.status == "loading" || v.status == "error"
|
|
255
|
+
);
|
|
254
256
|
|
|
255
257
|
for (const [view, status] of this._loadingViews) {
|
|
256
258
|
const c = view.coords;
|
|
@@ -263,9 +265,18 @@ export default class GenomeSpy {
|
|
|
263
265
|
};
|
|
264
266
|
indicators.push(
|
|
265
267
|
html`<div style=${styleMap(style)}>
|
|
266
|
-
<div class=${status
|
|
267
|
-
|
|
268
|
-
|
|
268
|
+
<div class=${status.status}>
|
|
269
|
+
${status.status == "error"
|
|
270
|
+
? html`<span
|
|
271
|
+
>Loading
|
|
272
|
+
failed${status.detail
|
|
273
|
+
? html`: ${status.detail}`
|
|
274
|
+
: nothing}</span
|
|
275
|
+
>`
|
|
276
|
+
: html`
|
|
277
|
+
<img src="${SPINNER}" alt="" />
|
|
278
|
+
<span>Loading...</span>
|
|
279
|
+
`}
|
|
269
280
|
</div>
|
|
270
281
|
</div>`
|
|
271
282
|
);
|
|
@@ -274,6 +285,7 @@ export default class GenomeSpy {
|
|
|
274
285
|
|
|
275
286
|
// Do some hacks to stop css animations of the loading indicators.
|
|
276
287
|
// Otherwise they fire animation frames even when their opacity is zero.
|
|
288
|
+
// TODO: Instead of this, replace the animated spinners with static images.
|
|
277
289
|
if (isSomethingVisible()) {
|
|
278
290
|
this.loadingIndicatorsElement.style.display = "block";
|
|
279
291
|
} else {
|
|
@@ -437,8 +449,8 @@ export default class GenomeSpy {
|
|
|
437
449
|
getNamedDataFromProvider: this.getNamedDataFromProvider.bind(this),
|
|
438
450
|
getCurrentHover: () => this._currentHover,
|
|
439
451
|
|
|
440
|
-
setDataLoadingStatus: (view, status) => {
|
|
441
|
-
this._loadingViews.set(view, status);
|
|
452
|
+
setDataLoadingStatus: (view, status, detail) => {
|
|
453
|
+
this._loadingViews.set(view, { status, detail });
|
|
442
454
|
this._updateLoadingIndicators();
|
|
443
455
|
},
|
|
444
456
|
|
|
@@ -920,6 +932,10 @@ export default class GenomeSpy {
|
|
|
920
932
|
Rectangle.create(0, 0, canvasSize.width, canvasSize.height)
|
|
921
933
|
);
|
|
922
934
|
|
|
935
|
+
// The view coordinates may have not been known during the initial data loading.
|
|
936
|
+
// Thus, update them so that possible error messages are shown in the correct place.
|
|
937
|
+
this._updateLoadingIndicators();
|
|
938
|
+
|
|
923
939
|
this.broadcast("layoutComputed");
|
|
924
940
|
}
|
|
925
941
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mark.d.ts","sourceRoot":"","sources":["../../../src/marks/mark.js"],"names":[],"mappings":";AA4CA,0DAA2D;AAC3D,0DAA2D;AAE3D;;;;;;;;;;;;GAYG;AACH;IAgBI;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAkF/C;IA/EG,gDAAwB;IAExB,oEAAoE;IACpE,UADW,OAAO,MAAM,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC,CACvC;IAIzB,0FAA0F;IAC1F,YADW,OAAO,SAAS,EAAE,UAAU,GAAG;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,CAC7C;IAE3B,0DAA0D;IAC1D,aADW,OAAO,SAAS,EAAE,WAAW,CACZ;IAE5B,8DAA8D;IAC9D,iBADW,OAAO,SAAS,EAAE,eAAe,CACZ;IAEhC,+DAA+D;IAC/D,mBADW,OAAO,SAAS,EAAE,gBAAgB,CACX;IAElC,+DAA+D;IAC/D,iBADW,OAAO,SAAS,EAAE,gBAAgB,CACb;IAEhC;;;OAGG;IACH,iBAFU,OAAO,SAAS,EAAE,gBAAgB,CAEZ;IAEhC;;;;;OAKG;IACH,uCAA+B;IAE/B,kFAAkF;IAClF,UADW,SAAS,GAAG,CAAC,CACM;IAG9B,wBAAwB;IACxB,uDAqBC;IAED;;;;;;;;OAQG;IACH,kEAKC;IAGL,sBAEC;IAED;;;;;;;OAOG;IACH,iBAFa,MAAM,EAAE,CAKpB;IAED;;OAEG;IACH,+DAWC;IAED;;OAEG;IACH,oEAcC;IAED;;;;;OAKG;IACH,oHAEC;IAED;;;;;;OAMG;IACH,yGAkCC;IAED;;;;OAIG;IACH,8DAiDC;IAED,wDAEC;IAED,8CAEC;IAED,uBAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;OAEG;IACH,oCAEC;IAED;;OAEG;IACH,2BAEC;IAED,sEAeC;IAED;;;;;;OAMG;IAEH,6CANW,MAAM,kBACN,MAAM,iBACN,MAAM,EAAE,QA8NlB;IALG;;;;;;MAIC;IAGL;;;;;;OAMG;IACH,uCA6CC;IAED;;;;;;OAMG;IACH,+CAHW,MAAM,UACK,GAAG,KAAE,IAAI,CAe9B;IAED;;;;;;;;;;OAUG;IACH,mDAJW,MAAM,sFAEsB,GAAG,QA6BzC;IAED;;OAEG;IACH,2BAiBC;IAED;;;OAGG;IACH,6BAFW,GAAG,QAoCb;IAED,yBAAyB;IACzB,uDAEC;IAED,yBAAyB;IACzB,iCAEC;IAED,gCAEC;IAED,+BAEC;IAED,yCAEC;IAED;;;;;OAKG;IACH,gCAcC;IAED;;OAEG;IACH,4CAOC;IAED;;;;;;;;OAQG;IAEH,uBAJW,OAAO,uBAAuB,EAAE,sBAAsB,GACpD,CAAC,MAAM,IAAI,CAAC,EAAE,CAsF1B;IAED;;;;;;OAMG;IACH,qCAJW,oBAAoB,GAClB,OAAO,CAqCnB;IAED;;;;;;;OAOG;IACH,gBAJW,oBAAoB,SACP,IAAI,CAM3B;IAED;;;OAGG;IACH,2BAHW,YAAY,WACZ,OAAO,WAAW,EAAE,oBAAoB,cAiElD;IAED;;;;;;OAMG;IACH,oBAJW,OAAO,6BAA6B,EAAE,OAAO,aAC7C,OAAO,6BAA6B,EAAE,OAAO,GAC3C,OAAO,CAuHnB;IAED;;;;;;;;;OASG;IACH,qBAJW,MAAM,KACN,OAAO,oBAAoB,EAAE,MAAM,GACjC,GAAG,CAIf;;CACJ;+BAznCY,OAAO,uBAAuB,EAAE,gBAAgB;;;;;;wBAEnD,OAAO;;mCAEJ,gBAAgB,GAAG,qBAAqB;oCAG1C,MAAM,SACN,MAAM;AAmnCjB;;;GAGG;AACH;IACI,cAEC;IAkBD;;;OAGG;IACH,2BAFW,IAAI,CAAC,EAAE,OAAO,yBAAyB,EAAE,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"mark.d.ts","sourceRoot":"","sources":["../../../src/marks/mark.js"],"names":[],"mappings":";AA4CA,0DAA2D;AAC3D,0DAA2D;AAE3D;;;;;;;;;;;;GAYG;AACH;IAgBI;;OAEG;IACH,sBAFW,OAAO,qBAAqB,EAAE,OAAO,EAkF/C;IA/EG,gDAAwB;IAExB,oEAAoE;IACpE,UADW,OAAO,MAAM,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC,CACvC;IAIzB,0FAA0F;IAC1F,YADW,OAAO,SAAS,EAAE,UAAU,GAAG;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,CAC7C;IAE3B,0DAA0D;IAC1D,aADW,OAAO,SAAS,EAAE,WAAW,CACZ;IAE5B,8DAA8D;IAC9D,iBADW,OAAO,SAAS,EAAE,eAAe,CACZ;IAEhC,+DAA+D;IAC/D,mBADW,OAAO,SAAS,EAAE,gBAAgB,CACX;IAElC,+DAA+D;IAC/D,iBADW,OAAO,SAAS,EAAE,gBAAgB,CACb;IAEhC;;;OAGG;IACH,iBAFU,OAAO,SAAS,EAAE,gBAAgB,CAEZ;IAEhC;;;;;OAKG;IACH,uCAA+B;IAE/B,kFAAkF;IAClF,UADW,SAAS,GAAG,CAAC,CACM;IAG9B,wBAAwB;IACxB,uDAqBC;IAED;;;;;;;;OAQG;IACH,kEAKC;IAGL,sBAEC;IAED;;;;;;;OAOG;IACH,iBAFa,MAAM,EAAE,CAKpB;IAED;;OAEG;IACH,+DAWC;IAED;;OAEG;IACH,oEAcC;IAED;;;;;OAKG;IACH,oHAEC;IAED;;;;;;OAMG;IACH,yGAkCC;IAED;;;;OAIG;IACH,8DAiDC;IAED,wDAEC;IAED,8CAEC;IAED,uBAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;OAEG;IACH,oCAEC;IAED;;OAEG;IACH,2BAEC;IAED,sEAeC;IAED;;;;;;OAMG;IAEH,6CANW,MAAM,kBACN,MAAM,iBACN,MAAM,EAAE,QA8NlB;IALG;;;;;;MAIC;IAGL;;;;;;OAMG;IACH,uCA6CC;IAED;;;;;;OAMG;IACH,+CAHW,MAAM,UACK,GAAG,KAAE,IAAI,CAe9B;IAED;;;;;;;;;;OAUG;IACH,mDAJW,MAAM,sFAEsB,GAAG,QA6BzC;IAED;;OAEG;IACH,2BAiBC;IAED;;;OAGG;IACH,6BAFW,GAAG,QAoCb;IAED,yBAAyB;IACzB,uDAEC;IAED,yBAAyB;IACzB,iCAEC;IAED,gCAEC;IAED,+BAEC;IAED,yCAEC;IAED;;;;;OAKG;IACH,gCAcC;IAED;;OAEG;IACH,4CAOC;IAED;;;;;;;;OAQG;IAEH,uBAJW,OAAO,uBAAuB,EAAE,sBAAsB,GACpD,CAAC,MAAM,IAAI,CAAC,EAAE,CAsF1B;IAED;;;;;;OAMG;IACH,qCAJW,oBAAoB,GAClB,OAAO,CAqCnB;IAED;;;;;;;OAOG;IACH,gBAJW,oBAAoB,SACP,IAAI,CAM3B;IAED;;;OAGG;IACH,2BAHW,YAAY,WACZ,OAAO,WAAW,EAAE,oBAAoB,cAiElD;IAED;;;;;;OAMG;IACH,oBAJW,OAAO,6BAA6B,EAAE,OAAO,aAC7C,OAAO,6BAA6B,EAAE,OAAO,GAC3C,OAAO,CAuHnB;IAED;;;;;;;;;OASG;IACH,qBAJW,MAAM,KACN,OAAO,oBAAoB,EAAE,MAAM,GACjC,GAAG,CAIf;;CACJ;+BAznCY,OAAO,uBAAuB,EAAE,gBAAgB;;;;;;wBAEnD,OAAO;;mCAEJ,gBAAgB,GAAG,qBAAqB;oCAG1C,MAAM,SACN,MAAM;AAmnCjB;;;GAGG;AACH;IACI,cAEC;IAkBD;;;OAGG;IACH,2BAFW,IAAI,CAAC,EAAE,OAAO,yBAAyB,EAAE,UAAU,CAAC,QAiB9D;CACJ;0BAjrCyB,WAAW"}
|
package/dist/src/marks/mark.js
CHANGED
|
@@ -1224,6 +1224,17 @@ class RangeMap extends InternMap {
|
|
|
1224
1224
|
* @param {Map<K, import("../gl/dataToVertices.js").RangeEntry>} anotherMap
|
|
1225
1225
|
*/
|
|
1226
1226
|
migrateEntries(anotherMap) {
|
|
1227
|
+
for (const [key, value] of this.entries()) {
|
|
1228
|
+
// Buffered draw calls maintain direct references to the range entries.
|
|
1229
|
+
// Thus, they cannot just be deleted, but instead, their counts and offsets
|
|
1230
|
+
// must be zeroed.
|
|
1231
|
+
if (!anotherMap.has(key)) {
|
|
1232
|
+
value.offset = 0;
|
|
1233
|
+
value.count = 0;
|
|
1234
|
+
value.xIndex = undefined;
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1227
1238
|
for (const [key, value] of anotherMap.entries()) {
|
|
1228
1239
|
Object.assign(this.get(key), value);
|
|
1229
1240
|
}
|