@genome-spy/core 0.44.0 → 0.45.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 (96) hide show
  1. package/dist/bundle/index.es.js +6123 -5482
  2. package/dist/bundle/index.js +211 -148
  3. package/dist/schema.json +329 -79
  4. package/dist/src/data/collector.d.ts.map +1 -1
  5. package/dist/src/data/collector.js +4 -2
  6. package/dist/src/data/flowOptimizer.test.js +12 -3
  7. package/dist/src/data/sources/dataUtils.d.ts.map +1 -1
  8. package/dist/src/data/sources/dataUtils.js +3 -1
  9. package/dist/src/data/sources/lazy/bigBedSource.d.ts +1 -1
  10. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  11. package/dist/src/data/sources/lazy/bigBedSource.js +52 -20
  12. package/dist/src/data/sources/lazy/bigWigSource.d.ts +0 -1
  13. package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
  14. package/dist/src/data/sources/lazy/bigWigSource.js +30 -4
  15. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  16. package/dist/src/data/sources/lazy/singleAxisLazySource.js +0 -2
  17. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts +6 -2
  18. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  19. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +38 -20
  20. package/dist/src/data/sources/sequenceSource.d.ts.map +1 -1
  21. package/dist/src/data/sources/sequenceSource.js +14 -5
  22. package/dist/src/data/sources/sequenceSource.test.js +23 -5
  23. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  24. package/dist/src/data/sources/urlSource.js +15 -2
  25. package/dist/src/data/transforms/aggregate.d.ts.map +1 -1
  26. package/dist/src/data/transforms/aggregate.js +5 -2
  27. package/dist/src/encoder/encoder.d.ts +2 -4
  28. package/dist/src/encoder/encoder.d.ts.map +1 -1
  29. package/dist/src/encoder/encoder.js +8 -8
  30. package/dist/src/encoder/encoder.test.js +3 -0
  31. package/dist/src/genomeSpy.d.ts +7 -5
  32. package/dist/src/genomeSpy.d.ts.map +1 -1
  33. package/dist/src/genomeSpy.js +109 -132
  34. package/dist/src/gl/glslScaleGenerator.js +1 -1
  35. package/dist/src/index.d.ts +1 -1
  36. package/dist/src/index.d.ts.map +1 -1
  37. package/dist/src/index.js +1 -1
  38. package/dist/src/marks/mark.d.ts +8 -5
  39. package/dist/src/marks/mark.d.ts.map +1 -1
  40. package/dist/src/marks/mark.js +56 -12
  41. package/dist/src/marks/point.common.glsl.js +1 -1
  42. package/dist/src/marks/point.d.ts +1 -4
  43. package/dist/src/marks/point.d.ts.map +1 -1
  44. package/dist/src/marks/point.js +31 -23
  45. package/dist/src/marks/point.vertex.glsl.js +1 -1
  46. package/dist/src/marks/text.d.ts.map +1 -1
  47. package/dist/src/marks/text.js +15 -7
  48. package/dist/src/spec/data.d.ts +11 -10
  49. package/dist/src/spec/mark.d.ts +11 -21
  50. package/dist/src/spec/parameter.d.ts +11 -7
  51. package/dist/src/spec/root.d.ts +0 -8
  52. package/dist/src/spec/title.d.ts +5 -4
  53. package/dist/src/spec/view.d.ts +19 -4
  54. package/dist/src/styles/genome-spy.css.d.ts +1 -1
  55. package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
  56. package/dist/src/styles/genome-spy.css.js +52 -5
  57. package/dist/src/styles/genome-spy.scss +63 -10
  58. package/dist/src/styles/update.sh +6 -0
  59. package/dist/src/tooltip/dataTooltipHandler.js +1 -1
  60. package/dist/src/tooltip/refseqGeneTooltipHandler.js +1 -1
  61. package/dist/src/tooltip/tooltipHandler.d.ts +1 -1
  62. package/dist/src/tooltip/tooltipHandler.d.ts.map +1 -1
  63. package/dist/src/tooltip/tooltipHandler.ts +1 -1
  64. package/dist/src/types/embedApi.d.ts +6 -0
  65. package/dist/src/types/viewContext.d.ts +2 -3
  66. package/dist/src/utils/debounce.d.ts +2 -2
  67. package/dist/src/utils/debounce.d.ts.map +1 -1
  68. package/dist/src/utils/debounce.js +5 -2
  69. package/dist/src/utils/expression.d.ts +2 -2
  70. package/dist/src/utils/expression.d.ts.map +1 -1
  71. package/dist/src/utils/expression.js +1 -1
  72. package/dist/src/utils/formatObject.d.ts +2 -2
  73. package/dist/src/utils/formatObject.d.ts.map +1 -1
  74. package/dist/src/utils/formatObject.js +2 -2
  75. package/dist/src/utils/inputBinding.d.ts +5 -0
  76. package/dist/src/utils/inputBinding.d.ts.map +1 -0
  77. package/dist/src/utils/inputBinding.js +115 -0
  78. package/dist/src/utils/ui/tooltip.js +1 -1
  79. package/dist/src/view/paramMediator.d.ts +108 -0
  80. package/dist/src/view/paramMediator.d.ts.map +1 -0
  81. package/dist/src/view/paramMediator.js +337 -0
  82. package/dist/src/view/paramMediator.test.js +211 -0
  83. package/dist/src/view/scaleResolution.d.ts.map +1 -1
  84. package/dist/src/view/scaleResolution.js +11 -6
  85. package/dist/src/view/view.d.ts +4 -1
  86. package/dist/src/view/view.d.ts.map +1 -1
  87. package/dist/src/view/view.js +19 -5
  88. package/dist/src/view/viewFactory.d.ts.map +1 -1
  89. package/dist/src/view/viewFactory.js +45 -0
  90. package/dist/src/view/viewUtils.d.ts +5 -1
  91. package/dist/src/view/viewUtils.d.ts.map +1 -1
  92. package/dist/src/view/viewUtils.js +9 -4
  93. package/package.json +16 -17
  94. package/dist/src/paramBroker.d.ts +0 -46
  95. package/dist/src/paramBroker.d.ts.map +0 -1
  96. package/dist/src/paramBroker.js +0 -118
@@ -1 +1 @@
1
- {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/data/collector.js"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH;IAKI;;OAEG;IACH,qBAFW,OAAO,sBAAsB,EAAE,aAAa,EActD;IATG,qDAA2C;IAE3C,2CAA2C;IAC3C,WADW,QAAU,SAAS,KAAE,IAAI,CAAC,EAAE,CACpB;IAEnB,uFAAuF;IACvF,cADW,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,OAAO,eAAe,EAAE,IAAI,CAAC,CAC5B;IAKjC,cAOC;IANG,2CAA2C;IAC3C,OADW,OAAO,eAAe,EAAE,IAAI,CACxB;IA2FnB;;OAEG;IACH,WAFa,SAAS,OAAO,eAAe,EAAE,KAAK,CAAC,CAuBnD;IAED;;;OAGG;IACH,2BAFmB,OAAO,eAAe,EAAE,KAAK,KAAK,IAAI,QAUxD;IAED;;OAEG;IACH,uBAMC;IAED,qBAMC;CACJ;qBAvLyD,eAAe"}
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/data/collector.js"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH;IAKI;;OAEG;IACH,qBAFW,OAAO,sBAAsB,EAAE,aAAa,EActD;IATG,qDAA2C;IAE3C,2CAA2C;IAC3C,WADW,QAAU,SAAS,KAAE,IAAI,CAAC,EAAE,CACpB;IAEnB,uFAAuF;IACvF,cADW,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,OAAO,eAAe,EAAE,IAAI,CAAC,CAC5B;IAKjC,cAOC;IANG,2CAA2C;IAC3C,OADW,OAAO,eAAe,EAAE,IAAI,CACxB;IA6FnB;;OAEG;IACH,WAFa,SAAS,OAAO,eAAe,EAAE,KAAK,CAAC,CAuBnD;IAED;;;OAGG;IACH,2BAFmB,OAAO,eAAe,EAAE,KAAK,KAAK,IAAI,QAUxD;IAED;;OAEG;IACH,uBAMC;IAED,qBAMC;CACJ;qBAzLyD,eAAe"}
@@ -89,8 +89,10 @@ export default class Collector extends FlowNode {
89
89
  );
90
90
  const groups =
91
91
  accessors.length > 1
92
- ? // @ts-ignore
93
- group(this._data, ...accessors)
92
+ ? // There's something strange in d3-array's typings
93
+ /** @type {Map<any, any>} */ /** @type {any} */ (
94
+ group(this._data, ...accessors)
95
+ )
94
96
  : // D3's group is SLOW!
95
97
  groupBy(this._data, accessors[0]);
96
98
 
@@ -132,20 +132,29 @@ describe("removeRedundantCloneTransforms", () => {
132
132
  });
133
133
  });
134
134
 
135
+ const viewStub = {
136
+ paramMediator: {
137
+ registerParam: () => {},
138
+ allocateSetter: () => {},
139
+ createExpression: () => {},
140
+ },
141
+ getBaseUrl: () => "",
142
+ };
143
+
135
144
  describe("Merge indentical data sources", () => {
136
145
  test("Merges correctly", () => {
137
146
  /** @type {DataFlow<string>} */
138
147
  const dataFlow = new DataFlow();
139
148
 
140
- const a = new UrlSource({ url: "http://genomespy.app/" });
149
+ const a = new UrlSource({ url: "http://genomespy.app/" }, viewStub);
141
150
  const ac = new Collector();
142
151
  a.addChild(ac);
143
152
 
144
- const b = new UrlSource({ url: "http://genomespy.app/" });
153
+ const b = new UrlSource({ url: "http://genomespy.app/" }, viewStub);
145
154
  const bc = new Collector();
146
155
  b.addChild(bc);
147
156
 
148
- const c = new UrlSource({ url: "http://helsinki.fi/" });
157
+ const c = new UrlSource({ url: "http://helsinki.fi/" }, viewStub);
149
158
  const cc = new Collector();
150
159
  c.addChild(cc);
151
160
 
@@ -1 +1 @@
1
- {"version":3,"file":"dataUtils.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/dataUtils.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,kCAHW,OAAO,oBAAoB,EAAE,UAAU;;;;;;;;;;;;;EAqBjD;AAED;;GAEG;AACH,wCAFW,MAAM,GAAG,MAAM,EAAE,UAU3B;AAWD;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,UAAU,4DAKjD;AAED;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,UAAU,4DAKjD;AAED;;;GAGG;AACH,6CAHW,OAAO,oBAAoB,EAAE,UAAU,6DAKjD;AAED;;;;GAIG;AACH,sCAHW,OAAO,oBAAoB,EAAE,UAAU,sDAKjD;AAxCM,+BAAgC,GAAG,QAI3B,OAAO,uBAAuB,EAAE,MAAM;;UAGtB,OAAO,gBAAgB,EAAE,KAAK,qCANR"}
1
+ {"version":3,"file":"dataUtils.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/dataUtils.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,kCAHW,OAAO,oBAAoB,EAAE,UAAU;;;;;;;;;;;;;EAsBjD;AAED;;GAEG;AACH,wCAFW,MAAM,GAAG,MAAM,EAAE,UAU3B;AAWD;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,UAAU,4DAKjD;AAED;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,UAAU,4DAKjD;AAED;;;GAGG;AACH,6CAHW,OAAO,oBAAoB,EAAE,UAAU,6DAKjD;AAED;;;;GAIG;AACH,sCAHW,OAAO,oBAAoB,EAAE,UAAU,sDAKjD;AAxCM,+BAAgC,GAAG,QAI3B,OAAO,uBAAuB,EAAE,MAAM;;UAGtB,OAAO,gBAAgB,EAAE,KAAK,qCANR"}
@@ -1,3 +1,4 @@
1
+ import { withoutExprRef } from "../../view/paramMediator.js";
1
2
  import { isInlineData } from "./inlineSource.js";
2
3
 
3
4
  /**
@@ -13,7 +14,8 @@ export function getFormat(params) {
13
14
  }
14
15
  const format = { ...params.format };
15
16
 
16
- format.type ??= isUrlData(params) && extractTypeFromUrl(params.url);
17
+ format.type ??=
18
+ isUrlData(params) && extractTypeFromUrl(withoutExprRef(params.url));
17
19
  // @ts-ignore TODO: Fix typing
18
20
  format.parse ??= "auto";
19
21
 
@@ -15,7 +15,7 @@ export default class BigBedSource extends SingleAxisWindowedSource {
15
15
  rest?: string;
16
16
  }) => Record<string, any>;
17
17
  params: import("../../../spec/data.js").BigBedData;
18
- initializedPromise: Promise<any>;
18
+ #private;
19
19
  }
20
20
  import SingleAxisWindowedSource from "./singleAxisWindowedSource.js";
21
21
  //# sourceMappingURL=bigBedSource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bigBedSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigBedSource.js"],"names":[],"mappings":"AAGA;IAUI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAsDjD;IAjED,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;IAkBN,mDAAgC;IAQhC,iCA+BE;CAuBT;qCA1FoC,+BAA+B"}
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;;CA8EpC;qCAtHoC,+BAA+B"}
@@ -1,3 +1,7 @@
1
+ import {
2
+ activateExprRefProps,
3
+ withoutExprRef,
4
+ } from "../../../view/paramMediator.js";
1
5
  import addBaseUrl from "../../../utils/addBaseUrl.js";
2
6
  import SingleAxisWindowedSource from "./singleAxisWindowedSource.js";
3
7
 
@@ -25,9 +29,21 @@ export default class BigBedSource extends SingleAxisWindowedSource {
25
29
  ...params,
26
30
  };
27
31
 
28
- super(view, paramsWithDefaults.channel);
32
+ const activatedParams = activateExprRefProps(
33
+ view.paramMediator,
34
+ paramsWithDefaults,
35
+ (props) => {
36
+ if (props.includes("url")) {
37
+ this.#initialize().then(() => this.reloadLastDomain());
38
+ } else if (props.includes("windowSize")) {
39
+ this.reloadLastDomain();
40
+ }
41
+ }
42
+ );
43
+
44
+ super(view, activatedParams.channel);
29
45
 
30
- this.params = paramsWithDefaults;
46
+ this.params = activatedParams;
31
47
 
32
48
  if (!this.params.url) {
33
49
  throw new Error("No URL provided for BigBedSource");
@@ -35,7 +51,11 @@ export default class BigBedSource extends SingleAxisWindowedSource {
35
51
 
36
52
  this.setupDebouncing(this.params);
37
53
 
38
- this.initializedPromise = new Promise((resolve) => {
54
+ this.#initialize();
55
+ }
56
+
57
+ #initialize() {
58
+ this.initializedPromise = new Promise((resolve, reject) => {
39
59
  Promise.all([
40
60
  import("@gmod/bed"),
41
61
  import("@gmod/bbi"),
@@ -45,28 +65,40 @@ export default class BigBedSource extends SingleAxisWindowedSource {
45
65
 
46
66
  this.bbi = new BigBed({
47
67
  filehandle: new RemoteFile(
48
- addBaseUrl(this.params.url, this.view.getBaseUrl())
68
+ addBaseUrl(
69
+ withoutExprRef(this.params.url),
70
+ this.view.getBaseUrl()
71
+ )
49
72
  ),
50
73
  });
51
74
 
52
- this.bbi.getHeader().then(async (header) => {
53
- // @ts-ignore TODO: Fix
54
- this.parser = new BED({ autoSql: header.autoSql });
55
- try {
56
- const fastParser = makeFastParser(this.parser);
57
- this.parseLine = (chrom, f) =>
58
- fastParser(chrom, f.start, f.end, f.rest);
59
- } catch (e) {
60
- this.parseLine = (chrom, f) =>
61
- this.parser.parseLine(
62
- `${chrom}\t${f.start}\t${f.end}\t${f.rest}`
63
- );
64
- }
65
-
66
- resolve();
67
- });
75
+ this.bbi
76
+ .getHeader()
77
+ .then(async (header) => {
78
+ // @ts-ignore TODO: Fix
79
+ this.parser = new BED({ autoSql: header.autoSql });
80
+ try {
81
+ const fastParser = makeFastParser(this.parser);
82
+ this.parseLine = (chrom, f) =>
83
+ fastParser(chrom, f.start, f.end, f.rest);
84
+ } catch (e) {
85
+ this.parseLine = (chrom, f) =>
86
+ this.parser.parseLine(
87
+ `${chrom}\t${f.start}\t${f.end}\t${f.rest}`
88
+ );
89
+ }
90
+
91
+ resolve();
92
+ })
93
+ .catch((e) => {
94
+ // Load empty data
95
+ this.load();
96
+ reject(e);
97
+ });
68
98
  });
69
99
  });
100
+
101
+ return this.initializedPromise;
70
102
  }
71
103
 
72
104
  /**
@@ -8,7 +8,6 @@ export default class BigWigSource extends SingleAxisWindowedSource {
8
8
  */
9
9
  constructor(params: import("../../../spec/data.js").BigWigData, view: import("../../../view/view.js").default);
10
10
  params: import("../../../spec/data.js").BigWigData;
11
- initializedPromise: Promise<any>;
12
11
  /**
13
12
  * Listen to the domain change event and update data when the covered windows change.
14
13
  *
@@ -1 +1 @@
1
- {"version":3,"file":"bigWigSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigWigSource.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IAOI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAiDjD;IAnCG,mDAAgC;IAQhC,iCA0BE;IAGN;;;;OAIG;IACH,wBAFW,MAAM,EAAE,iBAqBlB;IAED;;;OAGG;IAEH,uBAJW,MAAM,EAAE,kBACR,MAAM,iBA0BhB;;CACJ;qCAxHoC,+BAA+B"}
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;IA8CjC;;;;OAIG;IACH,wBAFW,MAAM,EAAE,iBAqBlB;IAED;;;OAGG;IAEH,uBAJW,MAAM,EAAE,kBACR,MAAM,iBA2BhB;;CACJ;qCA9IoC,+BAA+B"}
@@ -1,3 +1,7 @@
1
+ import {
2
+ activateExprRefProps,
3
+ withoutExprRef,
4
+ } from "../../../view/paramMediator.js";
1
5
  import addBaseUrl from "../../../utils/addBaseUrl.js";
2
6
  import SingleAxisWindowedSource from "./singleAxisWindowedSource.js";
3
7
 
@@ -25,9 +29,21 @@ export default class BigWigSource extends SingleAxisWindowedSource {
25
29
  ...params,
26
30
  };
27
31
 
28
- super(view, paramsWithDefaults.channel);
32
+ const activatedParams = activateExprRefProps(
33
+ view.paramMediator,
34
+ paramsWithDefaults,
35
+ (props) => {
36
+ if (props.includes("url")) {
37
+ this.#initialize().then(() => this.reloadLastDomain());
38
+ } else if (props.includes("pixelsPerBin")) {
39
+ this.reloadLastDomain();
40
+ }
41
+ }
42
+ );
43
+
44
+ super(view, activatedParams.channel);
29
45
 
30
- this.params = paramsWithDefaults;
46
+ this.params = activatedParams;
31
47
 
32
48
  if (!this.params.url) {
33
49
  throw new Error("No URL provided for BigWigSource");
@@ -35,6 +51,10 @@ export default class BigWigSource extends SingleAxisWindowedSource {
35
51
 
36
52
  this.setupDebouncing(this.params);
37
53
 
54
+ this.#initialize();
55
+ }
56
+
57
+ #initialize() {
38
58
  this.initializedPromise = new Promise((resolve) => {
39
59
  Promise.all([
40
60
  import("@gmod/bbi"),
@@ -42,7 +62,10 @@ export default class BigWigSource extends SingleAxisWindowedSource {
42
62
  ]).then(([{ BigWig }, { RemoteFile }]) => {
43
63
  this.#bbi = new BigWig({
44
64
  filehandle: new RemoteFile(
45
- addBaseUrl(this.params.url, this.view.getBaseUrl())
65
+ addBaseUrl(
66
+ withoutExprRef(this.params.url),
67
+ this.view.getBaseUrl()
68
+ )
46
69
  ),
47
70
  });
48
71
 
@@ -62,6 +85,8 @@ export default class BigWigSource extends SingleAxisWindowedSource {
62
85
  });
63
86
  });
64
87
  });
88
+
89
+ return this.initializedPromise;
65
90
  }
66
91
 
67
92
  /**
@@ -96,7 +121,8 @@ export default class BigWigSource extends SingleAxisWindowedSource {
96
121
  */
97
122
  // @ts-expect-error
98
123
  async loadInterval(interval, reductionLevel) {
99
- const scale = 1 / 2 / reductionLevel / this.params.pixelsPerBin;
124
+ const scale =
125
+ 1 / 2 / reductionLevel / withoutExprRef(this.params.pixelsPerBin);
100
126
  const featureChunks = await this.discretizeAndLoad(
101
127
  interval,
102
128
  (d, signal) =>
@@ -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,EAiDrE;IAzDD;;;OAGG;IACH,4CAAuC;IASnC,8CAAgB;IAYhB,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,mCAHW,OAAO,QAKjB;IAED;;;;;OAKG;IACH,gCAGC;IAQD;;;;;OAKG;IACH,8BAHW,OAAO,mBAAmB,EAAE,KAAK,EAAE,EAAE,QAkB/C;CACJ;uBAxJsB,kBAAkB"}
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,EAiDrE;IAzDD;;;OAGG;IACH,4CAAuC;IASnC,8CAAgB;IAYhB,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,mCAHW,OAAO,QAKjB;IAED;;;;;OAKG;IACH,gCAGC;IAQD;;;;;OAKG;IACH,8BAHW,OAAO,mBAAmB,EAAE,KAAK,EAAE,EAAE,QAgB/C;CACJ;uBAtJsB,kBAAkB"}
@@ -148,7 +148,5 @@ export default class SingleAxisLazySource extends DataSource {
148
148
  this.complete();
149
149
 
150
150
  reconfigureScales(this.view);
151
-
152
- this.requestRender();
153
151
  }
154
152
  }
@@ -6,11 +6,11 @@
6
6
  */
7
7
  export default class SingleAxisWindowedSource extends SingleAxisLazySource {
8
8
  /**
9
- * @type {{windowSize?: number}}
9
+ * @type {{windowSize?: number | import("../../../spec/parameter.js").ExprRef}}
10
10
  * @protected
11
11
  */
12
12
  protected params: {
13
- windowSize?: number;
13
+ windowSize?: number | import("../../../spec/parameter.js").ExprRef;
14
14
  };
15
15
  /**
16
16
  * @param {import("../../../spec/data.js").DebouncedData} debounceParams
@@ -30,6 +30,10 @@ export default class SingleAxisWindowedSource extends SingleAxisLazySource {
30
30
  * @protected
31
31
  */
32
32
  protected loadInterval(interval: number[]): Promise<void>;
33
+ /**
34
+ * @protected
35
+ */
36
+ protected reloadLastDomain(): void;
33
37
  /**
34
38
  * Splits the interval into discrete chromosomal intervals – one for each chromosome –
35
39
  * and loads the data for each of them. Handles abort signals and errors.
@@ -1 +1 @@
1
- {"version":3,"file":"singleAxisWindowedSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/singleAxisWindowedSource.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH;IAUI;;;OAGG;IACH,kBAHU;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAC,CAGxB;IAEP;;;OAGG;IACH,0CAHW,OAAO,uBAAuB,EAAE,aAAa,QAmBvD;IAED;;;;OAIG;IACH,wBAFW,MAAM,EAAE,QAmBlB;IAED;;;;;OAKG;IACH,iCAHW,MAAM,EAAE,iBAKlB;IAED;;;;;;;;;OASG;IACH,yCANW,MAAM,EAAE,4BACU,OAAO,mCAAmC,EAAE,0BAA0B,UAAU,WAAW,+BAqCvH;IAED;;;;;;OAMG;IACH,yCALW,MAAM,EAAE,cACR,MAAM,mBACG,MAAM,EAAE,KAAE,IAAI,QAyBjC;;CACJ;iCA3JgC,2BAA2B"}
1
+ {"version":3,"file":"singleAxisWindowedSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/singleAxisWindowedSource.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH;IAWI;;;OAGG;IACH,kBAHU;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,4BAA4B,EAAE,OAAO,CAAA;KAAC,CAGvE;IAEP;;;OAGG;IACH,0CAHW,OAAO,uBAAuB,EAAE,aAAa,QAqBvD;IAED;;;;OAIG;IACH,wBAFW,MAAM,EAAE,QAqBlB;IAcD;;;;;OAKG;IACH,iCAHW,MAAM,EAAE,iBAKlB;IApBD;;OAEG;IACH,mCAOC;IAYD;;;;;;;;;OASG;IACH,yCANW,MAAM,EAAE,4BACU,OAAO,mCAAmC,EAAE,0BAA0B,UAAU,WAAW,+BAqCvH;IAED;;;;;;OAMG;IACH,yCALW,MAAM,EAAE,cACR,MAAM,mBACG,MAAM,EAAE,KAAE,IAAI,QAyBjC;;CACJ;iCA3KgC,2BAA2B"}
@@ -1,5 +1,6 @@
1
+ import { withoutExprRef } from "../../../view/paramMediator.js";
2
+ import { debounce } from "../../../utils/debounce.js";
1
3
  import SingleAxisLazySource from "./singleAxisLazySource.js";
2
- import { debounce } from "@genome-spy/core/utils/debounce.js";
3
4
 
4
5
  /**
5
6
  * Divides the domain into windows and loads the data for one or two consecutive windows
@@ -10,15 +11,16 @@ import { debounce } from "@genome-spy/core/utils/debounce.js";
10
11
  export default class SingleAxisWindowedSource extends SingleAxisLazySource {
11
12
  #abortController = new AbortController();
12
13
 
13
- /**
14
- * @type {number[]}
15
- */
14
+ /** @type {number[]} */
16
15
  #lastQuantizedInterval = [0, 0];
17
16
 
17
+ /** @type {number[]} */
18
+ #lastDomain = [0, 0];
19
+
18
20
  #lastWindowSize = 0;
19
21
 
20
22
  /**
21
- * @type {{windowSize?: number}}
23
+ * @type {{windowSize?: number | import("../../../spec/parameter.js").ExprRef}}
22
24
  * @protected
23
25
  */
24
26
  params;
@@ -28,20 +30,22 @@ export default class SingleAxisWindowedSource extends SingleAxisLazySource {
28
30
  * @protected
29
31
  */
30
32
  setupDebouncing(debounceParams) {
31
- if (debounceParams.debounce > 0) {
32
- if (debounceParams.debounceMode == "domain") {
33
- this.onDomainChanged = debounce(
34
- this.onDomainChanged.bind(this),
35
- debounceParams.debounce,
36
- false
37
- );
38
- } else if (debounceParams.debounceMode == "window") {
39
- this.loadInterval = debounce(
40
- this.loadInterval.bind(this),
41
- debounceParams.debounce,
42
- false
43
- );
44
- }
33
+ const wait = () => withoutExprRef(debounceParams.debounce);
34
+ const debounceMode = debounceParams.debounceMode;
35
+ if (debounceMode == "domain") {
36
+ this.onDomainChanged = debounce(
37
+ this.onDomainChanged.bind(this),
38
+ wait,
39
+ false
40
+ );
41
+ } else if (debounceMode == "window") {
42
+ this.loadInterval = debounce(
43
+ this.loadInterval.bind(this),
44
+ wait,
45
+ false
46
+ );
47
+ } else {
48
+ throw new Error("Invalid debounceMode: " + debounceMode);
45
49
  }
46
50
  }
47
51
 
@@ -51,7 +55,9 @@ export default class SingleAxisWindowedSource extends SingleAxisLazySource {
51
55
  * @param {number[]} domain Linearized domain
52
56
  */
53
57
  onDomainChanged(domain) {
54
- const windowSize = this.params?.windowSize ?? -1;
58
+ this.#lastDomain = domain;
59
+
60
+ const windowSize = withoutExprRef(this.params?.windowSize) ?? -1;
55
61
 
56
62
  if (domain[1] - domain[0] > windowSize) {
57
63
  return;
@@ -69,6 +75,18 @@ export default class SingleAxisWindowedSource extends SingleAxisLazySource {
69
75
  );
70
76
  }
71
77
 
78
+ /**
79
+ * @protected
80
+ */
81
+ reloadLastDomain() {
82
+ const domain = this.#lastDomain;
83
+
84
+ this.#lastDomain = [0, 0];
85
+ this.#lastQuantizedInterval = [0, 0];
86
+
87
+ this.onDomainChanged(domain);
88
+ }
89
+
72
90
  /**
73
91
  * Listen to the domain change event and update data when the covered windows change.
74
92
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sequenceSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/sequenceSource.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,0CAHW,QAAQ,OAAO,oBAAoB,EAAE,IAAI,CAAC,0DAKpD;AAED;IACI;;;;OAIG;IACH,oBAHW,OAAO,oBAAoB,EAAE,iBAAiB,QAC9C,OAAO,oBAAoB,EAAE,OAAO,EAY9C;IARG,sDAA+B;IAUnC,0BAaC;CAKJ;uBA9CsB,iBAAiB"}
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,EAgB9C;IAZG,sDAIC;IAUL,0BAcC;CAKJ;uBAnDsB,iBAAiB"}
@@ -1,3 +1,7 @@
1
+ import {
2
+ activateExprRefProps,
3
+ withoutExprRef,
4
+ } from "../../view/paramMediator.js";
1
5
  import DataSource from "./dataSource.js";
2
6
 
3
7
  /**
@@ -16,7 +20,11 @@ export default class SequenceSource extends DataSource {
16
20
  */
17
21
  constructor(params, view) {
18
22
  super();
19
- this.sequence = params.sequence;
23
+ this.sequence = activateExprRefProps(
24
+ view.paramMediator,
25
+ params.sequence,
26
+ () => this.loadSynchronously()
27
+ );
20
28
 
21
29
  if (!("start" in this.sequence)) {
22
30
  throw new Error("'start' is missing from sequence parameters!");
@@ -27,14 +35,15 @@ export default class SequenceSource extends DataSource {
27
35
  }
28
36
 
29
37
  loadSynchronously() {
30
- const as = this.sequence.as || "data";
31
- const step = this.sequence.step || 1;
32
- const stop = this.sequence.stop;
38
+ const as = withoutExprRef(this.sequence.as) ?? "data";
39
+ const start = withoutExprRef(this.sequence.start) ?? 0;
40
+ const step = withoutExprRef(this.sequence.step) ?? 1;
41
+ const stop = withoutExprRef(this.sequence.stop);
33
42
 
34
43
  this.reset();
35
44
  this.beginBatch({ type: "file" });
36
45
 
37
- for (let x = this.sequence.start; x < stop; x += step) {
46
+ for (let x = start; x < stop; x += step) {
38
47
  this._propagate({ [as]: x });
39
48
  }
40
49
 
@@ -14,10 +14,18 @@ async function collectSource(source) {
14
14
  return [...collector.getData()];
15
15
  }
16
16
 
17
+ const viewStub = {
18
+ paramMediator: {
19
+ registerParam: () => {},
20
+ allocateSetter: () => {},
21
+ createExpression: () => {},
22
+ },
23
+ };
24
+
17
25
  test("SequenceSource generates a sequence", async () => {
18
26
  expect(
19
27
  await collectSource(
20
- new SequenceSource({ sequence: { start: 0, stop: 3 } })
28
+ new SequenceSource({ sequence: { start: 0, stop: 3 } }, viewStub)
21
29
  )
22
30
  ).toEqual([{ data: 0 }, { data: 1 }, { data: 2 }]);
23
31
  });
@@ -25,7 +33,10 @@ test("SequenceSource generates a sequence", async () => {
25
33
  test("SequenceSource generates a sequence with a custom step", async () => {
26
34
  expect(
27
35
  await collectSource(
28
- new SequenceSource({ sequence: { start: 0, stop: 5, step: 2 } })
36
+ new SequenceSource(
37
+ { sequence: { start: 0, stop: 5, step: 2 } },
38
+ viewStub
39
+ )
29
40
  )
30
41
  ).toEqual([{ data: 0 }, { data: 2 }, { data: 4 }]);
31
42
  });
@@ -33,14 +44,21 @@ test("SequenceSource generates a sequence with a custom step", async () => {
33
44
  test("SequenceSource generates a sequence with a custom field name", async () => {
34
45
  expect(
35
46
  await collectSource(
36
- new SequenceSource({ sequence: { start: 0, stop: 3, as: "x" } })
47
+ new SequenceSource(
48
+ { sequence: { start: 0, stop: 3, as: "x" } },
49
+ viewStub
50
+ )
37
51
  )
38
52
  ).toEqual([{ x: 0 }, { x: 1 }, { x: 2 }]);
39
53
  });
40
54
 
41
55
  test("SequenceSource throws on missing 'start' parameter", () => {
42
- expect(() => new SequenceSource({ sequence: { stop: 3 } })).toThrow();
56
+ expect(
57
+ () => new SequenceSource({ sequence: { stop: 3 } }, viewStub)
58
+ ).toThrow();
43
59
  });
44
60
  test("SequenceSource throws on missing 'stop' parameter", () => {
45
- expect(() => new SequenceSource({ sequence: { start: 0 } })).toThrow();
61
+ expect(
62
+ () => new SequenceSource({ sequence: { start: 0 } }, viewStub)
63
+ ).toThrow();
46
64
  });
@@ -1 +1 @@
1
- {"version":3,"file":"urlSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/urlSource.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH,gCAHW,QAAQ,OAAO,oBAAoB,EAAE,IAAI,CAAC,gDAKpD;AAED;IACI;;;OAGG;IACH,oBAHW,OAAO,oBAAoB,EAAE,OAAO,QACpC,OAAO,oBAAoB,EAAE,OAAO,EAO9C;IAFG,6CAAoB;IACpB,gBAAiC;CAoDxC;uBAvEsB,iBAAiB"}
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;CA0DxC;uBApFsB,iBAAiB"}
@@ -1,6 +1,10 @@
1
1
  import { loader as vegaLoader, read } from "vega-loader";
2
2
  import { getFormat } from "./dataUtils.js";
3
3
  import DataSource from "./dataSource.js";
4
+ import {
5
+ activateExprRefProps,
6
+ withoutExprRef,
7
+ } from "../../view/paramMediator.js";
4
8
 
5
9
  /**
6
10
  * @param {Partial<import("../../spec/data.js").Data>} data
@@ -18,7 +22,10 @@ export default class UrlSource extends DataSource {
18
22
  constructor(params, view) {
19
23
  super();
20
24
 
21
- this.params = params;
25
+ this.params = activateExprRefProps(view.paramMediator, params, () =>
26
+ this.load()
27
+ );
28
+
22
29
  this.baseUrl = view?.getBaseUrl();
23
30
  }
24
31
 
@@ -27,11 +34,17 @@ export default class UrlSource extends DataSource {
27
34
  }
28
35
 
29
36
  async load() {
30
- const url = this.params.url;
37
+ const url = withoutExprRef(this.params.url);
31
38
 
32
39
  /** @type {string[]} */
33
40
  const urls = Array.isArray(url) ? url : [url];
34
41
 
42
+ if (urls.length === 0 || !urls[0]) {
43
+ this.reset();
44
+ this.complete();
45
+ return;
46
+ }
47
+
35
48
  /** @param {string} url */
36
49
  const load = async (url) =>
37
50
  // TODO: Support chunked loading
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/aggregate.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH;IAKI;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,eAAe,EAQ3D;IAJG,0DAAoB;IAEpB,oBAAoB;IACpB,QADW,GAAG,EAAE,CACA;CAyCvB;qBAjEyC,gBAAgB"}
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/aggregate.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH;IAKI;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,eAAe,EAQ3D;IAJG,0DAAoB;IAEpB,oBAAoB;IACpB,QADW,GAAG,EAAE,CACA;CA4CvB;qBApEyC,gBAAgB"}
@@ -46,8 +46,11 @@ export default class AggregateTransform extends FlowNode {
46
46
  const groupFieldAccessors = groupby.map((f) => field(f));
47
47
 
48
48
  // TODO: Fix case where no group fields are specified
49
- // @ts-expect-error
50
- const groups = d3group(this.buffer, ...groupFieldAccessors);
49
+
50
+ // There's something strange in d3-array's typings
51
+ const groups = /** @type {Map<any, any>} */ /** @type {any} */ (
52
+ d3group(this.buffer, ...groupFieldAccessors)
53
+ );
51
54
 
52
55
  for (const [group, data] of iterateNestedMaps(groups)) {
53
56
  /** @type {any} */
@@ -1,8 +1,6 @@
1
1
  /**
2
2
  * Creates an object that contains encoders for every channel of a mark
3
3
  *
4
- * TODO: This should actually receive the mark as parameter
5
- *
6
4
  * TODO: This method should have a test. But how to mock Mark...
7
5
  *
8
6
  * @param {import("../marks/mark.js").default} mark
@@ -11,14 +9,14 @@
11
9
  */
12
10
  export default function createEncoders(mark: import("../marks/mark.js").default, encoding?: import("../spec/channel.js").Encoding): Partial<Record<import("../spec/channel.js").Channel, import("../types/encoder.js").Encoder>>;
13
11
  /**
14
- *
12
+ * @param {import("../marks/mark.js").default} mark
15
13
  * @param {import("../spec/channel.js").ChannelDef} channelDef
16
14
  * @param {any} scale
17
15
  * @param {Accessor} accessor
18
16
  * @param {Channel} channel
19
17
  * @returns {Encoder}
20
18
  */
21
- export function createEncoder(channelDef: import("../spec/channel.js").ChannelDef, scale: any, accessor: import("../types/encoder.js").Accessor, channel: import("../spec/channel.js").Channel): import("../types/encoder.js").Encoder;
19
+ export function createEncoder(mark: import("../marks/mark.js").default, channelDef: import("../spec/channel.js").ChannelDef, scale: any, accessor: import("../types/encoder.js").Accessor, channel: import("../spec/channel.js").Channel): import("../types/encoder.js").Encoder;
22
20
  /**
23
21
  * TODO: Move to a more generic place
24
22
  *
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../src/encoder/encoder.js"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,6CAJW,OAAO,kBAAkB,EAAE,OAAO,aAClC,OAAO,oBAAoB,EAAE,QAAQ,gGAsC/C;AAED;;;;;;;GAOG;AACH,0CANW,OAAO,oBAAoB,EAAE,UAAU,SACvC,GAAG,0IAoGb;AAED;;;;;GAKG;AACH,uCAHW,OAAO,oBAAoB,EAAE,UAAU,4FAKjD;AAED;;;GAGG;AACH,uCAHW,OAAO,oBAAoB,EAAE,UAAU,mEAKjD;AAED;;;GAGG;AACH,uCAHW,OAAO,oBAAoB,EAAE,UAAU,uDAKjD;AAED;;;GAGG;AACH,kDAHW,OAAO,oBAAoB,EAAE,UAAU,kEAWjD;AAED;;;GAGG;AACH,6CAHW,OAAO,qBAAqB,EAAE,OAAO,WACrC,OAAO,oBAAoB,EAAE,OAAO,27CAS9C;AAED;;;GAGG;AACH,iDAHW,OAAO,oBAAoB,EAAE,UAAU,4FAKjD;AAED;;;GAGG;AACH,0CAHW,OAAO,oBAAoB,EAAE,UAAU,0DAKjD;AAED;;;GAGG;AACH,sCAHW,OAAO,oBAAoB,EAAE,UAAU,sDAKjD;AAoBD;;;GAGG;AACH,oDAHW,OAAO,oBAAoB,EAAE,OAAO,oEAM9C;AAED;;;GAGG;AACH,6CAHW,OAAO,oBAAoB,EAAE,OAAO,6DAM9C;AAqBD;;;GAGG;AACH,4CAFW,MAAM,WAIhB;AAED;;;;GAIG;AACH,oDAFW,OAAO,oBAAoB,EAAE,OAAO,2DAS9C;AAED;;;;;GAKG;AACH,2CAFW,OAAO,oBAAoB,EAAE,OAAO,wCAI9C;AAED;;;;GAIG;AACH,kDAFW,OAAO,oBAAoB,EAAE,OAAO,0CAM9C;AAED;;GAEG;AACH,wCAFW,OAAO,oBAAoB,EAAE,OAAO,WAI9C;AAED;;;;GAIG;AACH,2CAFW,OAAO,oBAAoB,EAAE,OAAO,WAI9C;AAED;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,OAAO,4DAuB9C;AAED;;;;;GAKG;AACH,0CAHW,OAAO,oBAAoB,EAAE,OAAO,GAClC,GAAG,EAAE,CAsBjB;AAED;;;GAGG;AACH,gDAHW,OAAO,oBAAoB,EAAE,OAAO,UACzB,GAAG,KAAE,MAAM,CAmBhC;AA7LD;;GAEG;AACH,wCAFU,OAAO,oBAAoB,EAAE,wBAAwB,EAAE,CAEb;AAEpD;;GAEG;AACH,0CAFU,OAAO,oBAAoB,EAAE,0BAA0B,EAAE,CAEX;AAExD;;GAEG;AACH,iCAFU,OAAO,oBAAoB,EAAE,iBAAiB,EAAE,CAKxD;AAoBF;;;;GAIG;AACH,gCAFU,QAAQ,OAAO,OAAO,oBAAoB,EAAE,OAAO,EAAE,OAAO,oBAAoB,EAAE,0BAA0B,CAAC,CAAC,CAKtH;AAEF;;;;GAIG;AACH,8BAFU,QAAQ,OAAO,OAAO,oBAAoB,EAAE,OAAO,EAAE,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAInG"}
1
+ {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../src/encoder/encoder.js"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,6CAJW,OAAO,kBAAkB,EAAE,OAAO,aAClC,OAAO,oBAAoB,EAAE,QAAQ,gGAuC/C;AAED;;;;;;;GAOG;AACH,oCAPW,OAAO,kBAAkB,EAAE,OAAO,cAClC,OAAO,oBAAoB,EAAE,UAAU,SACvC,GAAG,0IAqGb;AAED;;;;;GAKG;AACH,uCAHW,OAAO,oBAAoB,EAAE,UAAU,4FAKjD;AAED;;;GAGG;AACH,uCAHW,OAAO,oBAAoB,EAAE,UAAU,mEAKjD;AAED;;;GAGG;AACH,uCAHW,OAAO,oBAAoB,EAAE,UAAU,uDAKjD;AAED;;;GAGG;AACH,kDAHW,OAAO,oBAAoB,EAAE,UAAU,kEAWjD;AAED;;;GAGG;AACH,6CAHW,OAAO,qBAAqB,EAAE,OAAO,WACrC,OAAO,oBAAoB,EAAE,OAAO,27CAS9C;AAED;;;GAGG;AACH,iDAHW,OAAO,oBAAoB,EAAE,UAAU,4FAKjD;AAED;;;GAGG;AACH,0CAHW,OAAO,oBAAoB,EAAE,UAAU,0DAKjD;AAED;;;GAGG;AACH,sCAHW,OAAO,oBAAoB,EAAE,UAAU,sDAKjD;AAoBD;;;GAGG;AACH,oDAHW,OAAO,oBAAoB,EAAE,OAAO,oEAM9C;AAED;;;GAGG;AACH,6CAHW,OAAO,oBAAoB,EAAE,OAAO,6DAM9C;AAqBD;;;GAGG;AACH,4CAFW,MAAM,WAIhB;AAED;;;;GAIG;AACH,oDAFW,OAAO,oBAAoB,EAAE,OAAO,2DAS9C;AAED;;;;;GAKG;AACH,2CAFW,OAAO,oBAAoB,EAAE,OAAO,wCAI9C;AAED;;;;GAIG;AACH,kDAFW,OAAO,oBAAoB,EAAE,OAAO,0CAM9C;AAED;;GAEG;AACH,wCAFW,OAAO,oBAAoB,EAAE,OAAO,WAI9C;AAED;;;;GAIG;AACH,2CAFW,OAAO,oBAAoB,EAAE,OAAO,WAI9C;AAED;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,OAAO,4DAuB9C;AAED;;;;;GAKG;AACH,0CAHW,OAAO,oBAAoB,EAAE,OAAO,GAClC,GAAG,EAAE,CAsBjB;AAED;;;GAGG;AACH,gDAHW,OAAO,oBAAoB,EAAE,OAAO,UACzB,GAAG,KAAE,MAAM,CAmBhC;AA7LD;;GAEG;AACH,wCAFU,OAAO,oBAAoB,EAAE,wBAAwB,EAAE,CAEb;AAEpD;;GAEG;AACH,0CAFU,OAAO,oBAAoB,EAAE,0BAA0B,EAAE,CAEX;AAExD;;GAEG;AACH,iCAFU,OAAO,oBAAoB,EAAE,iBAAiB,EAAE,CAKxD;AAoBF;;;;GAIG;AACH,gCAFU,QAAQ,OAAO,OAAO,oBAAoB,EAAE,OAAO,EAAE,OAAO,oBAAoB,EAAE,0BAA0B,CAAC,CAAC,CAKtH;AAEF;;;;GAIG;AACH,8BAFU,QAAQ,OAAO,OAAO,oBAAoB,EAAE,OAAO,EAAE,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAInG"}