@genome-spy/core 0.50.1 → 0.51.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 +3435 -3407
- package/dist/bundle/index.js +93 -94
- package/dist/src/data/flowOptimizer.d.ts.map +1 -1
- package/dist/src/data/flowOptimizer.js +1 -2
- package/dist/src/data/sources/lazy/axisTickSource.d.ts.map +1 -1
- package/dist/src/data/sources/lazy/axisTickSource.js +8 -1
- package/dist/src/data/sources/urlSource.d.ts.map +1 -1
- package/dist/src/data/sources/urlSource.js +17 -13
- package/dist/src/genomeSpy.js +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -2
- package/dist/src/utils/url.d.ts +9 -2
- package/dist/src/utils/url.d.ts.map +1 -1
- package/dist/src/utils/url.js +29 -6
- package/dist/src/utils/url.test.d.ts +2 -0
- package/dist/src/utils/url.test.d.ts.map +1 -0
- package/dist/src/utils/url.test.js +28 -0
- package/dist/src/view/axisResolution.d.ts.map +1 -1
- package/dist/src/view/axisResolution.js +7 -1
- package/dist/src/view/view.d.ts.map +1 -1
- package/dist/src/view/view.js +2 -2
- package/dist/src/view/viewUtils.d.ts +2 -3
- package/dist/src/view/viewUtils.d.ts.map +1 -1
- package/dist/src/view/viewUtils.js +41 -31
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowOptimizer.d.ts","sourceRoot":"","sources":["../../../src/data/flowOptimizer.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,oCAHW,OAAO,eAAe,EAAE,OAAO,WAC/B,OAAO,eAAe,EAAE,OAAO,WAczC;AAED;;;;GAIG;AACH,qDAFW,OAAO,eAAe,EAAE,OAAO,iCAgCzC;AAED,kDAEC;AAED,mDAEC;AAmBD;;GAEG;AACH,sDAFW,OAAO,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,QAwB9C;AAED;;;GAGG;AACH,wCAFW,OAAO,eAAe,EAAE,OAAO,QASzC;AAED;;GAEG;AACH,2CAFW,OAAO,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"flowOptimizer.d.ts","sourceRoot":"","sources":["../../../src/data/flowOptimizer.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,oCAHW,OAAO,eAAe,EAAE,OAAO,WAC/B,OAAO,eAAe,EAAE,OAAO,WAczC;AAED;;;;GAIG;AACH,qDAFW,OAAO,eAAe,EAAE,OAAO,iCAgCzC;AAED,kDAEC;AAED,mDAEC;AAmBD;;GAEG;AACH,sDAFW,OAAO,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,QAwB9C;AAED;;;GAGG;AACH,wCAFW,OAAO,eAAe,EAAE,OAAO,QASzC;AAED;;GAEG;AACH,2CAFW,OAAO,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,QAO9C"}
|
|
@@ -125,9 +125,8 @@ export function optimizeFlowGraph(root) {
|
|
|
125
125
|
* @param {import("./dataFlow.js").default<any>} dataFlow
|
|
126
126
|
*/
|
|
127
127
|
export function optimizeDataFlow(dataFlow) {
|
|
128
|
+
combineIdenticalDataSources(dataFlow);
|
|
128
129
|
for (const dataSource of dataFlow.dataSources) {
|
|
129
130
|
optimizeFlowGraph(dataSource);
|
|
130
131
|
}
|
|
131
|
-
|
|
132
|
-
combineIdenticalDataSources(dataFlow);
|
|
133
132
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axisTickSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/axisTickSource.js"],"names":[],"mappings":"AAYA;;GAEG;AACH;IAMI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,aAAa,QAC7C,OAAO,uBAAuB,EAAE,OAAO,EAYjD;IAnBD;;OAEG;IACH,OAFU,OAAO,0BAA0B,EAAE,MAAM,EAAE,CAE1C;IAeP,sDAAoB;
|
|
1
|
+
{"version":3,"file":"axisTickSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/axisTickSource.js"],"names":[],"mappings":"AAYA;;GAEG;AACH;IAMI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,aAAa,QAC7C,OAAO,uBAAuB,EAAE,OAAO,EAYjD;IAnBD;;OAEG;IACH,OAFU,OAAO,0BAA0B,EAAE,MAAM,EAAE,CAE1C;IAeP,sDAAoB;IAUxB,wBAkCC;CACJ;iCArEgC,2BAA2B"}
|
|
@@ -35,6 +35,13 @@ export default class AxisTickSource extends SingleAxisLazySource {
|
|
|
35
35
|
this.params = params;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
async load() {
|
|
39
|
+
// Force the ticks to be recalculated. This is needed because the async
|
|
40
|
+
// initialization process and non-deterministic order of events.
|
|
41
|
+
this.ticks = null;
|
|
42
|
+
this.onDomainChanged();
|
|
43
|
+
}
|
|
44
|
+
|
|
38
45
|
onDomainChanged() {
|
|
39
46
|
// Note, although this function is async, it is not awaited. Data are updated
|
|
40
47
|
// synchronously to ensure that the new ticks are available before the next frame is drawn.
|
|
@@ -61,7 +68,7 @@ export default class AxisTickSource extends SingleAxisLazySource {
|
|
|
61
68
|
? validTicks(scale, axisParams.values, count)
|
|
62
69
|
: tickValues(scale, count);
|
|
63
70
|
|
|
64
|
-
if (!shallowArrayEquals(ticks, this.ticks)) {
|
|
71
|
+
if (this.ticks == null || !shallowArrayEquals(ticks, this.ticks)) {
|
|
65
72
|
this.ticks = ticks;
|
|
66
73
|
|
|
67
74
|
const format = tickFormat(scale, requestedCount, axisParams.format);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/urlSource.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"urlSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/urlSource.js"],"names":[],"mappings":"AASA;;;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;CAiExC;uBA5FsB,iBAAiB"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { read } from "vega-loader";
|
|
2
2
|
import { getFormat } from "./dataUtils.js";
|
|
3
3
|
import DataSource from "./dataSource.js";
|
|
4
4
|
import {
|
|
5
5
|
activateExprRefProps,
|
|
6
6
|
withoutExprRef,
|
|
7
7
|
} from "../../view/paramMediator.js";
|
|
8
|
+
import { concatUrl } from "../../utils/url.js";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* @param {Partial<import("../../spec/data.js").Data>} data
|
|
@@ -46,18 +47,21 @@ export default class UrlSource extends DataSource {
|
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
/** @param {string} url */
|
|
49
|
-
const load = async (url) =>
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
const load = async (url) => {
|
|
51
|
+
try {
|
|
52
|
+
const fullUrl = concatUrl(this.baseUrl, url);
|
|
53
|
+
const result = await fetch(fullUrl);
|
|
54
|
+
if (!result.ok) {
|
|
55
|
+
throw new Error(`${result.status} ${result.statusText}`);
|
|
56
|
+
}
|
|
57
|
+
// TODO: what about binary data (for arrow), etc?
|
|
58
|
+
return result.text();
|
|
59
|
+
} catch (e) {
|
|
60
|
+
throw new Error(
|
|
61
|
+
`Could not load data: ${url}. Reason: ${e.message}`
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
61
65
|
|
|
62
66
|
/**
|
|
63
67
|
* @param {string} text
|
package/dist/src/genomeSpy.js
CHANGED
|
@@ -366,7 +366,7 @@ export default class GenomeSpy {
|
|
|
366
366
|
canvasWrapper,
|
|
367
367
|
() =>
|
|
368
368
|
this.viewRoot
|
|
369
|
-
? calculateCanvasSize(this.viewRoot
|
|
369
|
+
? calculateCanvasSize(this.viewRoot)
|
|
370
370
|
: { width: undefined, height: undefined },
|
|
371
371
|
this.spec.background,
|
|
372
372
|
{ powerPreference: this.options.powerPreference ?? "default" }
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="external-typings/filetypes.js" />
|
|
2
|
-
export function embed(el: string | HTMLElement, spec: string | import("./spec/root.js").RootSpec, options?: import("./types/embedApi.js").EmbedOptions): import("./types/embedApi.js").EmbedResult;
|
|
2
|
+
export function embed(el: string | HTMLElement, spec: string | import("./spec/root.js").RootSpec, options?: import("./types/embedApi.js").EmbedOptions): import("./types/embedApi.js").EmbedResult; /** @type {HTMLElement} */
|
|
3
3
|
/**
|
|
4
4
|
* Loads the spec from the given url and sets the baseUrl if it is not
|
|
5
5
|
* defined in the spec.
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":";AAaqB,mMAGlB,CAAC,0BAA0B;AAwF9B;;;;;GAKG;AACH,8BAFW,MAAM,gBAuBhB;sBAhIqB,gBAAgB;qBAFjB,KAAK;iBAGT,kBAAkB;oBACf,6BAA6B"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { isObject, isString } from "vega-util";
|
|
2
|
-
import { loader as vegaLoader } from "vega-loader";
|
|
3
2
|
import { html } from "lit";
|
|
4
3
|
|
|
5
4
|
import GenomeSpy from "./genomeSpy.js";
|
|
@@ -113,7 +112,11 @@ export async function loadSpec(url) {
|
|
|
113
112
|
let spec;
|
|
114
113
|
|
|
115
114
|
try {
|
|
116
|
-
|
|
115
|
+
const response = await fetch(url);
|
|
116
|
+
if (!response.ok) {
|
|
117
|
+
throw new Error(`${response.status} ${response.statusText}`);
|
|
118
|
+
}
|
|
119
|
+
spec = await response.json();
|
|
117
120
|
} catch (e) {
|
|
118
121
|
throw new Error(
|
|
119
122
|
`Could not load or parse configuration: ${url}, reason: ${e.message}`
|
package/dist/src/utils/url.d.ts
CHANGED
|
@@ -2,8 +2,15 @@
|
|
|
2
2
|
* Append a relative or absolute url to a base url.
|
|
3
3
|
* The base part is omitted if the append part is absolute.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* If the base part has no trailing slash, it is assumed to be a file and
|
|
6
|
+
* only the directory part is used.
|
|
7
|
+
*
|
|
8
|
+
* @param {string | (() => string)} base
|
|
6
9
|
* @param {string} append
|
|
7
10
|
*/
|
|
8
|
-
export function
|
|
11
|
+
export function concatUrl(base: string | (() => string), append: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* @param {string} url
|
|
14
|
+
*/
|
|
15
|
+
export function getDirectory(url: string): string;
|
|
9
16
|
//# sourceMappingURL=url.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/utils/url.js"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/utils/url.js"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,gCAHW,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,UACvB,MAAM,UAsBhB;AAED;;GAEG;AACH,kCAFW,MAAM,UAShB"}
|
package/dist/src/utils/url.js
CHANGED
|
@@ -4,19 +4,42 @@ const protoRe = /^([A-Za-z]+:)?\/\//;
|
|
|
4
4
|
* Append a relative or absolute url to a base url.
|
|
5
5
|
* The base part is omitted if the append part is absolute.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* If the base part has no trailing slash, it is assumed to be a file and
|
|
8
|
+
* only the directory part is used.
|
|
9
|
+
*
|
|
10
|
+
* @param {string | (() => string)} base
|
|
8
11
|
* @param {string} append
|
|
9
12
|
*/
|
|
10
|
-
export function
|
|
13
|
+
export function concatUrl(base, append) {
|
|
11
14
|
if (append && protoRe.test(append)) {
|
|
12
15
|
return append;
|
|
13
16
|
}
|
|
14
17
|
|
|
15
|
-
const
|
|
18
|
+
const baseString = typeof base == "function" ? base() : base;
|
|
19
|
+
if (!baseString) {
|
|
20
|
+
return append;
|
|
21
|
+
}
|
|
22
|
+
if (!append) {
|
|
23
|
+
return baseString;
|
|
24
|
+
}
|
|
16
25
|
|
|
17
|
-
if (
|
|
18
|
-
|
|
26
|
+
if (/[#?]/.test(baseString)) {
|
|
27
|
+
throw new Error(
|
|
28
|
+
`Cannot append to a url with query or hash. Append: ${append}, base: ${baseString}`
|
|
29
|
+
);
|
|
19
30
|
}
|
|
20
31
|
|
|
21
|
-
return
|
|
32
|
+
return getDirectory(baseString) + append;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @param {string} url
|
|
37
|
+
*/
|
|
38
|
+
export function getDirectory(url) {
|
|
39
|
+
const directory = url.replace(/[^/]*$/, "");
|
|
40
|
+
return directory === ""
|
|
41
|
+
? undefined
|
|
42
|
+
: directory.endsWith("://")
|
|
43
|
+
? url + "/"
|
|
44
|
+
: directory;
|
|
22
45
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.test.d.ts","sourceRoot":"","sources":["../../../src/utils/url.test.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { expect, test } from "vitest";
|
|
2
|
+
import { concatUrl, getDirectory } from "./url.js";
|
|
3
|
+
|
|
4
|
+
test("getDirectory", () => {
|
|
5
|
+
expect(getDirectory("foo")).toBeUndefined();
|
|
6
|
+
expect(getDirectory("foo/")).toBe("foo/");
|
|
7
|
+
expect(getDirectory("foo/index")).toBe("foo/");
|
|
8
|
+
expect(getDirectory("http://example.com")).toBe("http://example.com/");
|
|
9
|
+
expect(getDirectory("http://example.com/")).toBe("http://example.com/");
|
|
10
|
+
expect(getDirectory("http://example.com/a")).toBe("http://example.com/");
|
|
11
|
+
expect(getDirectory("http://example.com/a/")).toBe("http://example.com/a/");
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test("concatUrl", () => {
|
|
15
|
+
expect(concatUrl("http://example.com", "foo")).toEqual(
|
|
16
|
+
"http://example.com/foo"
|
|
17
|
+
);
|
|
18
|
+
expect(concatUrl(() => "http://example.com", "foo")).toEqual(
|
|
19
|
+
"http://example.com/foo"
|
|
20
|
+
);
|
|
21
|
+
expect(concatUrl("http://example.com/", "http://genomespy.app/")).toEqual(
|
|
22
|
+
"http://genomespy.app/"
|
|
23
|
+
);
|
|
24
|
+
expect(concatUrl("foo/", "bar")).toEqual("foo/bar");
|
|
25
|
+
expect(concatUrl("foo/baz", "bar")).toEqual("foo/bar");
|
|
26
|
+
expect(concatUrl(undefined, "bar")).toEqual("bar");
|
|
27
|
+
expect(concatUrl("bar", undefined)).toEqual("bar");
|
|
28
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axisResolution.d.ts","sourceRoot":"","sources":["../../../src/view/axisResolution.js"],"names":[],"mappings":"AAeA;;;;;;;GAOG;AACH;IACI;;;OAGG;IAEH;;OAEG;IACH,qBAFW,OAAO,oBAAoB,EAAE,wBAAwB,EAM/D;IAHG,+DAAsB;IACtB,wDAAwD;IACxD,SADW,oBAAoB,EAAE,CAChB;IAGrB,8DAEC;IAED;;;;;OAKG;IACH,qBAFW,oBAAoB,
|
|
1
|
+
{"version":3,"file":"axisResolution.d.ts","sourceRoot":"","sources":["../../../src/view/axisResolution.js"],"names":[],"mappings":"AAeA;;;;;;;GAOG;AACH;IACI;;;OAGG;IAEH;;OAEG;IACH,qBAFW,OAAO,oBAAoB,EAAE,wBAAwB,EAM/D;IAHG,+DAAsB;IACtB,wDAAwD;IACxD,SADW,oBAAoB,EAAE,CAChB;IAGrB,8DAEC;IAED;;;;;OAKG;IACH,qBAFW,oBAAoB,QAwB9B;IAED,qDAuBC;IAED,mBAyDC;CACJ;;UAxIS,OAAO,eAAe,EAAE,OAAO;aAC/B,CAAC;gBACD,OAAO,oBAAoB,EAAE,mBAAmB"}
|
|
@@ -58,7 +58,13 @@ export default class AxisResolution {
|
|
|
58
58
|
this.scaleResolution &&
|
|
59
59
|
newScaleResolution !== this.scaleResolution
|
|
60
60
|
) {
|
|
61
|
-
throw new Error(
|
|
61
|
+
throw new Error(
|
|
62
|
+
`Shared axes must have a shared scale! Channel: ${
|
|
63
|
+
this.channel
|
|
64
|
+
}, existing views: [${this.members
|
|
65
|
+
.map((m) => m.view.getPathString())
|
|
66
|
+
.join(", ")}], new view: ${view.getPathString()}.`
|
|
67
|
+
);
|
|
62
68
|
}
|
|
63
69
|
|
|
64
70
|
this.members.push(newMember);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/view/view.js"],"names":[],"mappings":"AA0BA,oBAAoB;AACpB,sCAAuC;AACvC,0BAA0B;AAC1B,sCAAuC;AAKvC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;IAuBI;;;;;;;;;OASG;IACH,kBARW,OAAO,iBAAiB,EAAE,QAAQ,WAClC,OAAO,yBAAyB,EAAE,OAAO,gBACzC,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,YACN,WAAW,EAmDrB;IAvED;;OAEG;IACH,wBAFmB,MAAM,KAAE,MAAM,CAEQ;IAEzC;;;;;OAKG;IACH,aAFU,IAAI,GAAG,EAAE,OAAO,uBAAuB,EAAE,OAAO,CAAC,CAEX;IAiB5C,mDAAsB;IACtB,mDAAgC;IAChC,iBAA4B;IAC5B,aAA6B;IAC7B,yCAAgB;IAEhB;QACI;;;WAGG;eADO,QAAQ,OAAO,OAAO,oBAAoB,EAAE,gBAAgB,EAAE,OAAO,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAGhH;;;WAGG;cADO,QAAQ,OAAO,OAAO,oBAAoB,EAAE,wBAAwB,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAAC;MAG1H;IAID;;;;kCAhEE,OAAO;;;;kCAEP,OAAO;MAkER;IAED;;;OAGG;IACH,WAFU,OAAO,OAAO,oBAAoB,EAAE,wBAAwB,EAAE,OAAO,CAAC,CAEzC;IAEvC,4BAA4B;IAC5B,eADW,aAAa,CAGvB;IASL;;;;;OAKG;IACH,sDAEC;IAED,sBAIC;IAED;;;;OAIG;IACH,eAFa,OAAO,CAInB;IAED;;;;;OAKG;IACH,gBAFa,OAAO,CAMnB;IAED;;;;;OAKG;IACH,WAFa,cAAc,CAW1B;IAED;;OAEG;IACH,mBAFa,cAAc,CAkB1B;IAoED,+BAEC;IAED,2BAEC;IAED;;;;;;;;OAQG;IACH,aAFa,OAAO,CAMnB;IAED;;;;;;;OAOG;IACH,uBAFa,MAAM,CAMlB;IAED,wBAKC;IAkBD;;OAEG;IACH,6BAEC;IAED;;OAEG;IACH,2BAEC;IAED;;;;OAIG;IACH,yBAFW,gBAAgB,QAO1B;IAED;;;;OAIG;IACH,2BAHW,MAAM,kBACG,gBAAgB,KAAE,IAAI,QASzC;IAED;;;;;;;;OAQG;IACH,yCANW,OAAO,uBAAuB,EAAE,OAAO,SAEvC,OAAO,8BAA8B,EAAE,OAAO,aAC9C,OAAO,QAUjB;IAED;;;;;;;;;;OAUG;IACH,kCAJW,MAAM,YACN,wBAAwB,eACxB,OAAO,QAajB;IAED;;;;;;;OAOG;IACH,eAJW,OAAO,GACL,WAAW,CAmBvB;IAED;;OAEG;IACH,yBAOC;IAED;;OAEG;IACH,6BASC;IAED;;;OAGG;IACH,uBAEC;
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/view/view.js"],"names":[],"mappings":"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"}
|
package/dist/src/view/view.js
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
import { isNumber, isString, span } from "vega-util";
|
|
13
13
|
import { scaleLog } from "d3-scale";
|
|
14
14
|
import { isFieldDef, getPrimaryChannel } from "../encoder/encoder.js";
|
|
15
|
-
import {
|
|
15
|
+
import { concatUrl } from "../utils/url.js";
|
|
16
16
|
import { isDiscrete, bandSpace } from "vega-scale";
|
|
17
17
|
import { peek } from "../utils/arrayUtils.js";
|
|
18
18
|
import ViewError from "./viewError.js";
|
|
@@ -645,7 +645,7 @@ export default class View {
|
|
|
645
645
|
* @returns {string}
|
|
646
646
|
*/
|
|
647
647
|
getBaseUrl() {
|
|
648
|
-
return
|
|
648
|
+
return concatUrl(
|
|
649
649
|
() => this.dataParent?.getBaseUrl(),
|
|
650
650
|
this.spec.baseUrl
|
|
651
651
|
);
|
|
@@ -75,13 +75,12 @@ export function findDescendantsByPath(root: View, name: string): View[];
|
|
|
75
75
|
*/
|
|
76
76
|
export function findUniqueViewNames(root: View): Set<string>;
|
|
77
77
|
/**
|
|
78
|
-
* @param {import("./
|
|
78
|
+
* @param {import("./view.js").default} viewRoot
|
|
79
79
|
*/
|
|
80
|
-
export function calculateCanvasSize(
|
|
80
|
+
export function calculateCanvasSize(viewRoot: import("./view.js").default): {
|
|
81
81
|
width: number;
|
|
82
82
|
height: number;
|
|
83
83
|
};
|
|
84
|
-
export function isCustomViewName(name: string): boolean;
|
|
85
84
|
import View from "./view.js";
|
|
86
85
|
import UnitView from "./unitView.js";
|
|
87
86
|
//# sourceMappingURL=viewUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewUtils.d.ts","sourceRoot":"","sources":["../../../src/view/viewUtils.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,qCAHW,OAAO,oBAAoB,EAAE,UAAU,GAAG,OAAO,iBAAiB,EAAE,YAAY,yBAK1F;AAED;;;;GAIG;AACH,oCAHW,OAAO,oBAAoB,EAAE,aAAa,GAAG,OAAO,iBAAiB,EAAE,YAAY,wBAQ7F;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,qCAJW,IAAI,iBACJ,OAAO,qBAAqB,EAAE,OAAO,CAAC,IAAI,CAAC,wDAcrD;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,QAAQ,OAAO,iBAAiB,EAAE,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"viewUtils.d.ts","sourceRoot":"","sources":["../../../src/view/viewUtils.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,qCAHW,OAAO,oBAAoB,EAAE,UAAU,GAAG,OAAO,iBAAiB,EAAE,YAAY,yBAK1F;AAED;;;;GAIG;AACH,oCAHW,OAAO,oBAAoB,EAAE,aAAa,GAAG,OAAO,iBAAiB,EAAE,YAAY,wBAQ7F;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,qCAJW,IAAI,iBACJ,OAAO,qBAAqB,EAAE,OAAO,CAAC,IAAI,CAAC,wDAcrD;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,QAAQ,OAAO,iBAAiB,EAAE,QAAQ,CAAC,CAsCvD;AAED;;GAEG;AACH,gDAFoB,IAAI,QAAE,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;iBA3Q4C,WAAW;qBAFnC,eAAe"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { isObject, isString } from "vega-util";
|
|
2
|
-
import { loader as vegaLoader } from "vega-loader";
|
|
3
2
|
|
|
4
3
|
import UnitView from "./unitView.js";
|
|
5
4
|
// eslint-disable-next-line no-unused-vars
|
|
@@ -8,6 +7,7 @@ import { buildDataFlow } from "./flowBuilder.js";
|
|
|
8
7
|
import { optimizeDataFlow } from "../data/flowOptimizer.js";
|
|
9
8
|
import { isFieldDef, primaryPositionalChannels } from "../encoder/encoder.js";
|
|
10
9
|
import { rollup } from "d3-array";
|
|
10
|
+
import { concatUrl, getDirectory } from "../utils/url.js";
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
*
|
|
@@ -146,30 +146,39 @@ export function findEncodedFields(view) {
|
|
|
146
146
|
*/
|
|
147
147
|
export async function loadExternalViewSpec(spec, baseUrl, viewContext) {
|
|
148
148
|
const importParam = spec.import;
|
|
149
|
-
if ("url" in importParam) {
|
|
150
|
-
|
|
151
|
-
|
|
149
|
+
if (!("url" in importParam)) {
|
|
150
|
+
throw new Error("Not an url import: " + JSON.stringify(importParam));
|
|
151
|
+
}
|
|
152
152
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
);
|
|
158
|
-
})
|
|
159
|
-
);
|
|
153
|
+
const url = concatUrl(baseUrl, importParam.url);
|
|
154
|
+
|
|
155
|
+
/** @type {import("../spec/view.js").ViewSpec} */
|
|
156
|
+
let importedSpec;
|
|
160
157
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
throw new Error(
|
|
166
|
-
`The imported spec "${url}" is not a view spec: ${JSON.stringify(
|
|
167
|
-
spec
|
|
168
|
-
)}`
|
|
169
|
-
);
|
|
158
|
+
try {
|
|
159
|
+
const result = await fetch(url);
|
|
160
|
+
if (!result.ok) {
|
|
161
|
+
throw new Error(`${result.status} ${result.statusText}`);
|
|
170
162
|
}
|
|
163
|
+
importedSpec = await result.json();
|
|
164
|
+
} catch (e) {
|
|
165
|
+
throw new Error(
|
|
166
|
+
`Could not load imported view spec: ${url}. Reason: ${e.message}`
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (viewContext.isViewSpec(importedSpec)) {
|
|
171
|
+
importedSpec.baseUrl = concatUrl(
|
|
172
|
+
getDirectory(importParam.url),
|
|
173
|
+
importedSpec.baseUrl
|
|
174
|
+
);
|
|
175
|
+
return importedSpec;
|
|
171
176
|
} else {
|
|
172
|
-
throw new Error(
|
|
177
|
+
throw new Error(
|
|
178
|
+
`The imported spec "${url}" is not a view spec: ${JSON.stringify(
|
|
179
|
+
spec
|
|
180
|
+
)}`
|
|
181
|
+
);
|
|
173
182
|
}
|
|
174
183
|
}
|
|
175
184
|
|
|
@@ -240,23 +249,24 @@ export function findUniqueViewNames(root) {
|
|
|
240
249
|
}
|
|
241
250
|
|
|
242
251
|
/**
|
|
243
|
-
* @param {
|
|
252
|
+
* @param {import("./view.js").default} viewRoot
|
|
244
253
|
*/
|
|
245
|
-
export
|
|
254
|
+
export function calculateCanvasSize(viewRoot) {
|
|
255
|
+
const size = viewRoot.getSize();
|
|
256
|
+
const padding = viewRoot.getPadding();
|
|
246
257
|
|
|
247
|
-
/**
|
|
248
|
-
* @param {import("./layout/flexLayout.js").FlexDimensions} viewRootSize
|
|
249
|
-
*/
|
|
250
|
-
export function calculateCanvasSize(viewRootSize) {
|
|
251
258
|
// If a dimension has an absolutely specified size (in pixels), use it for the canvas size.
|
|
252
259
|
// However, if the dimension has a growing component, the canvas should be fit to the
|
|
253
260
|
// container.
|
|
254
261
|
// TODO: Enforce the minimum size (in case of both absolute and growing components).
|
|
255
262
|
|
|
256
|
-
/**
|
|
257
|
-
|
|
263
|
+
/**
|
|
264
|
+
* @param {import("./layout/flexLayout.js").SizeDef} dim
|
|
265
|
+
* @param {number} totalPad
|
|
266
|
+
*/
|
|
267
|
+
const f = (dim, totalPad) => (dim.grow > 0 ? undefined : dim.px + totalPad);
|
|
258
268
|
return {
|
|
259
|
-
width: f(
|
|
260
|
-
height: f(
|
|
269
|
+
width: f(size.width, padding.horizontalTotal),
|
|
270
|
+
height: f(size.height, padding.verticalTotal),
|
|
261
271
|
};
|
|
262
272
|
}
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
},
|
|
8
8
|
"contributors": [],
|
|
9
9
|
"license": "MIT",
|
|
10
|
-
"version": "0.
|
|
10
|
+
"version": "0.51.0",
|
|
11
11
|
"jsdelivr": "dist/bundle/index.js",
|
|
12
12
|
"unpkg": "dist/bundle/index.js",
|
|
13
13
|
"browser": "dist/bundle/index.js",
|
|
@@ -67,5 +67,5 @@
|
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@types/long": "^4.0.1"
|
|
69
69
|
},
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "c2522b73298c0cc4cf38cca795b35e97c5c292d4"
|
|
71
71
|
}
|