@genome-spy/core 0.53.1 → 0.55.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 (121) hide show
  1. package/dist/bundle/{_commonjsHelpers-BIiJCwQW.js → _commonjsHelpers-DSebQMb9.js} +2 -4
  2. package/dist/bundle/{index-B5cesONJ.js → index-B6haPltu.js} +33 -65
  3. package/dist/bundle/{index-uO0O4Uv-.js → index-BhtH2nrr.js} +3 -5
  4. package/dist/bundle/{index-_tI-fMQF.js → index-BpoXW6_f.js} +5 -6
  5. package/dist/bundle/{index-BywMLhhd.js → index-COovE1Oo.js} +75 -105
  6. package/dist/bundle/{index-BJLu48Hz.js → index-CjesiOz_.js} +2 -2
  7. package/dist/bundle/{index-oqw_s02W.js → index-HGQZ77IK.js} +2 -2
  8. package/dist/bundle/{index-DAJ8JQLE.js → index-WACuLhO6.js} +64 -119
  9. package/dist/bundle/{index-e0oKgZbZ.js → index-_ftu0t0z.js} +2 -3
  10. package/dist/bundle/{index-CSayoXbw.js → index-nCZhu2o-.js} +3 -3
  11. package/dist/bundle/index.es.js +4363 -4313
  12. package/dist/bundle/index.js +105 -99
  13. package/dist/bundle/{long-D4tVjLLz.js → long-BXK3UEks.js} +9 -16
  14. package/dist/bundle/{remoteFile-BkTxwFub.js → remoteFile-DuIsnepi.js} +1 -1
  15. package/dist/schema.json +36 -2
  16. package/dist/src/data/collector.d.ts.map +1 -1
  17. package/dist/src/data/collector.js +4 -0
  18. package/dist/src/data/flowNode.d.ts +14 -5
  19. package/dist/src/data/flowNode.d.ts.map +1 -1
  20. package/dist/src/data/flowNode.js +30 -7
  21. package/dist/src/data/sources/dataSource.d.ts +1 -2
  22. package/dist/src/data/sources/dataSource.d.ts.map +1 -1
  23. package/dist/src/data/sources/dataSource.js +0 -1
  24. package/dist/src/data/sources/inlineSource.d.ts +4 -0
  25. package/dist/src/data/sources/inlineSource.d.ts.map +1 -1
  26. package/dist/src/data/sources/inlineSource.js +18 -0
  27. package/dist/src/data/sources/lazy/axisGenomeSource.d.ts.map +1 -1
  28. package/dist/src/data/sources/lazy/axisGenomeSource.js +4 -0
  29. package/dist/src/data/sources/lazy/axisTickSource.d.ts.map +1 -1
  30. package/dist/src/data/sources/lazy/axisTickSource.js +4 -0
  31. package/dist/src/data/sources/lazy/bamSource.d.ts.map +1 -1
  32. package/dist/src/data/sources/lazy/bamSource.js +4 -0
  33. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  34. package/dist/src/data/sources/lazy/bigBedSource.js +4 -0
  35. package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
  36. package/dist/src/data/sources/lazy/bigWigSource.js +4 -0
  37. package/dist/src/data/sources/lazy/gff3Source.d.ts.map +1 -1
  38. package/dist/src/data/sources/lazy/gff3Source.js +4 -0
  39. package/dist/src/data/sources/lazy/indexedFastaSource.d.ts.map +1 -1
  40. package/dist/src/data/sources/lazy/indexedFastaSource.js +4 -0
  41. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +2 -0
  42. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  43. package/dist/src/data/sources/lazy/singleAxisLazySource.js +2 -0
  44. package/dist/src/data/sources/namedSource.d.ts.map +1 -1
  45. package/dist/src/data/sources/namedSource.js +4 -0
  46. package/dist/src/data/sources/sequenceSource.d.ts.map +1 -1
  47. package/dist/src/data/sources/sequenceSource.js +4 -0
  48. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  49. package/dist/src/data/sources/urlSource.js +4 -0
  50. package/dist/src/data/transforms/aggregate.d.ts +12 -9
  51. package/dist/src/data/transforms/aggregate.d.ts.map +1 -1
  52. package/dist/src/data/transforms/aggregate.js +67 -24
  53. package/dist/src/data/transforms/aggregate.test.d.ts +2 -0
  54. package/dist/src/data/transforms/aggregate.test.d.ts.map +1 -0
  55. package/dist/src/data/transforms/aggregate.test.js +134 -0
  56. package/dist/src/data/transforms/aggregateOps.d.ts +6 -0
  57. package/dist/src/data/transforms/aggregateOps.d.ts.map +1 -0
  58. package/dist/src/data/transforms/aggregateOps.js +17 -0
  59. package/dist/src/data/transforms/clone.d.ts +2 -2
  60. package/dist/src/data/transforms/clone.d.ts.map +1 -1
  61. package/dist/src/data/transforms/clone.js +4 -3
  62. package/dist/src/data/transforms/coverage.d.ts +2 -2
  63. package/dist/src/data/transforms/coverage.d.ts.map +1 -1
  64. package/dist/src/data/transforms/coverage.js +4 -3
  65. package/dist/src/data/transforms/filter.d.ts +2 -2
  66. package/dist/src/data/transforms/filter.d.ts.map +1 -1
  67. package/dist/src/data/transforms/filter.js +3 -3
  68. package/dist/src/data/transforms/filterScoredLabels.d.ts +2 -2
  69. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  70. package/dist/src/data/transforms/filterScoredLabels.js +4 -3
  71. package/dist/src/data/transforms/flatten.d.ts +3 -2
  72. package/dist/src/data/transforms/flatten.d.ts.map +1 -1
  73. package/dist/src/data/transforms/flatten.js +6 -3
  74. package/dist/src/data/transforms/flattenCompressedExons.d.ts +2 -2
  75. package/dist/src/data/transforms/flattenCompressedExons.d.ts.map +1 -1
  76. package/dist/src/data/transforms/flattenCompressedExons.js +4 -3
  77. package/dist/src/data/transforms/flattenDelimited.d.ts +2 -2
  78. package/dist/src/data/transforms/flattenDelimited.d.ts.map +1 -1
  79. package/dist/src/data/transforms/flattenDelimited.js +4 -3
  80. package/dist/src/data/transforms/flattenSequence.d.ts +3 -2
  81. package/dist/src/data/transforms/flattenSequence.d.ts.map +1 -1
  82. package/dist/src/data/transforms/flattenSequence.js +6 -3
  83. package/dist/src/data/transforms/formula.d.ts +2 -2
  84. package/dist/src/data/transforms/formula.d.ts.map +1 -1
  85. package/dist/src/data/transforms/formula.js +4 -3
  86. package/dist/src/data/transforms/identifier.d.ts +2 -2
  87. package/dist/src/data/transforms/identifier.d.ts.map +1 -1
  88. package/dist/src/data/transforms/identifier.js +4 -3
  89. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts +3 -2
  90. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts.map +1 -1
  91. package/dist/src/data/transforms/linearizeGenomicCoordinate.js +11 -4
  92. package/dist/src/data/transforms/measureText.d.ts +5 -4
  93. package/dist/src/data/transforms/measureText.d.ts.map +1 -1
  94. package/dist/src/data/transforms/measureText.js +11 -8
  95. package/dist/src/data/transforms/pileup.d.ts +2 -2
  96. package/dist/src/data/transforms/pileup.d.ts.map +1 -1
  97. package/dist/src/data/transforms/pileup.js +4 -3
  98. package/dist/src/data/transforms/project.d.ts +3 -2
  99. package/dist/src/data/transforms/project.d.ts.map +1 -1
  100. package/dist/src/data/transforms/project.js +6 -3
  101. package/dist/src/data/transforms/regexExtract.d.ts +3 -2
  102. package/dist/src/data/transforms/regexExtract.d.ts.map +1 -1
  103. package/dist/src/data/transforms/regexExtract.js +6 -3
  104. package/dist/src/data/transforms/regexFold.d.ts +3 -2
  105. package/dist/src/data/transforms/regexFold.d.ts.map +1 -1
  106. package/dist/src/data/transforms/regexFold.js +6 -3
  107. package/dist/src/data/transforms/sample.d.ts +3 -2
  108. package/dist/src/data/transforms/sample.d.ts.map +1 -1
  109. package/dist/src/data/transforms/sample.js +5 -3
  110. package/dist/src/data/transforms/stack.d.ts +2 -2
  111. package/dist/src/data/transforms/stack.d.ts.map +1 -1
  112. package/dist/src/data/transforms/stack.js +4 -3
  113. package/dist/src/data/transforms/transform.d.ts +10 -0
  114. package/dist/src/data/transforms/transform.d.ts.map +1 -0
  115. package/dist/src/data/transforms/transform.js +22 -0
  116. package/dist/src/spec/title.d.ts +1 -1
  117. package/dist/src/spec/transform.d.ts +32 -2
  118. package/dist/src/view/axisView.js +2 -2
  119. package/dist/src/view/gridView.d.ts.map +1 -1
  120. package/dist/src/view/gridView.js +7 -3
  121. package/package.json +2 -2
@@ -1,7 +1,8 @@
1
1
  import { field } from "../../utils/field.js";
2
- import FlowNode, { BEHAVIOR_CLONES } from "../flowNode.js";
2
+ import { BEHAVIOR_CLONES } from "../flowNode.js";
3
+ import Transform from "./transform.js";
3
4
 
4
- export default class FlattenSequenceTransform extends FlowNode {
5
+ export default class FlattenSequenceTransform extends Transform {
5
6
  get behavior() {
6
7
  return BEHAVIOR_CLONES;
7
8
  }
@@ -11,7 +12,9 @@ export default class FlattenSequenceTransform extends FlowNode {
11
12
  * @param {import("../../spec/transform.js").FlattenSequenceParams} params
12
13
  */
13
14
  constructor(params) {
14
- super();
15
+ super(params);
16
+
17
+ this.params = params;
15
18
 
16
19
  const accessor = field(params.field ?? "sequence");
17
20
  const [asPos, asSequence] = params.as ?? ["pos", "sequence"];
@@ -1,4 +1,4 @@
1
- export default class FormulaTransform extends FlowNode {
1
+ export default class FormulaTransform extends Transform {
2
2
  /**
3
3
  *
4
4
  * @param {import("../../spec/transform.js").FormulaParams} params
@@ -10,5 +10,5 @@ export default class FormulaTransform extends FlowNode {
10
10
  /** @type {import("../../view/paramMediator.js").ExprRefFunction} */
11
11
  fn: import("../../view/paramMediator.js").ExprRefFunction;
12
12
  }
13
- import FlowNode from "../flowNode.js";
13
+ import Transform from "./transform.js";
14
14
  //# sourceMappingURL=formula.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formula.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/formula.js"],"names":[],"mappings":"AAEA;IAKI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,aAAa,yBAC/C,OAAO,gBAAgB,EAAE,qBAAqB,EAWxD;IANG,wDAAoB;IAEpB,WAAmB;IAEnB,oEAAoE;IACpE,IADW,OAAO,6BAA6B,EAAE,eAAe,CAC7C;CAgB1B;qBApC2C,gBAAgB"}
1
+ {"version":3,"file":"formula.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/formula.js"],"names":[],"mappings":"AAGA;IAKI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,aAAa,yBAC/C,OAAO,gBAAgB,EAAE,qBAAqB,EAWxD;IANG,wDAAoB;IAEpB,WAAmB;IAEnB,oEAAoE;IACpE,IADW,OAAO,6BAA6B,EAAE,eAAe,CAC7C;CAgB1B;sBApCqB,gBAAgB"}
@@ -1,6 +1,7 @@
1
- import FlowNode, { BEHAVIOR_MODIFIES } from "../flowNode.js";
1
+ import { BEHAVIOR_MODIFIES } from "../flowNode.js";
2
+ import Transform from "./transform.js";
2
3
 
3
- export default class FormulaTransform extends FlowNode {
4
+ export default class FormulaTransform extends Transform {
4
5
  get behavior() {
5
6
  return BEHAVIOR_MODIFIES;
6
7
  }
@@ -11,7 +12,7 @@ export default class FormulaTransform extends FlowNode {
11
12
  * @param {import("../flowNode.js").ParamMediatorProvider} paramMediatorProvider
12
13
  */
13
14
  constructor(params, paramMediatorProvider) {
14
- super(paramMediatorProvider);
15
+ super(params, paramMediatorProvider);
15
16
 
16
17
  this.params = params;
17
18
 
@@ -8,7 +8,7 @@ export const BLOCK_SIZE: 10000;
8
8
  * This is mainly used for creating ids that can be used for picking, i.e.,
9
9
  * selecting rendered data items by hovering or clicking.
10
10
  */
11
- export default class IdentifierTransform extends FlowNode {
11
+ export default class IdentifierTransform extends Transform {
12
12
  /**
13
13
  *
14
14
  * @param {import("../../spec/transform.js").IdentifierParams} params
@@ -36,5 +36,5 @@ export default class IdentifierTransform extends FlowNode {
36
36
  _getBlock(): number;
37
37
  _reserveBlock(): number;
38
38
  }
39
- import FlowNode from "../flowNode.js";
39
+ import Transform from "./transform.js";
40
40
  //# sourceMappingURL=identifier.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"identifier.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/identifier.js"],"names":[],"mappings":"AAEA,wCAAyC;AAEzC,+BAAgC;AAehC;;;;;;;GAOG;AACH;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,gBAAgB,EAuB5D;IAnBG,2DAAoB;IAEpB,WAAoC;IAEpC;;;OAGG;IACH,SAFU,MAAM,EAAE,CAED;IAEjB;;OAEG;IACH,oBAAoB;IAEpB;;OAEG;IACH,YAAa;IAuBjB;;OAEG;IACH,WAFa,MAAM,CAOlB;IAED,oBAMC;IAED,wBAOC;CACJ;qBAzG2C,gBAAgB"}
1
+ {"version":3,"file":"identifier.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/identifier.js"],"names":[],"mappings":"AAGA,wCAAyC;AAEzC,+BAAgC;AAehC;;;;;;;GAOG;AACH;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,gBAAgB,EAuB5D;IAnBG,2DAAoB;IAEpB,WAAoC;IAEpC;;;OAGG;IACH,SAFU,MAAM,EAAE,CAED;IAEjB;;OAEG;IACH,oBAAoB;IAEpB;;OAEG;IACH,YAAa;IAuBjB;;OAEG;IACH,WAFa,MAAM,CAOlB;IAED,oBAMC;IAED,wBAOC;CACJ;sBAzGqB,gBAAgB"}
@@ -1,4 +1,5 @@
1
- import FlowNode, { BEHAVIOR_MODIFIES } from "../flowNode.js";
1
+ import { BEHAVIOR_MODIFIES } from "../flowNode.js";
2
+ import Transform from "./transform.js";
2
3
 
3
4
  export const UNIQUE_ID_KEY = "_uniqueId";
4
5
 
@@ -25,7 +26,7 @@ const reservationMap = [null];
25
26
  * This is mainly used for creating ids that can be used for picking, i.e.,
26
27
  * selecting rendered data items by hovering or clicking.
27
28
  */
28
- export default class IdentifierTransform extends FlowNode {
29
+ export default class IdentifierTransform extends Transform {
29
30
  get behavior() {
30
31
  return BEHAVIOR_MODIFIES;
31
32
  }
@@ -35,7 +36,7 @@ export default class IdentifierTransform extends FlowNode {
35
36
  * @param {import("../../spec/transform.js").IdentifierParams} params
36
37
  */
37
38
  constructor(params) {
38
- super();
39
+ super(params);
39
40
  this.params = params;
40
41
 
41
42
  this.as = params.as ?? UNIQUE_ID_KEY;
@@ -1,10 +1,11 @@
1
- export default class LinearizeGenomicCoordinate extends FlowNode {
1
+ export default class LinearizeGenomicCoordinate extends Transform {
2
2
  /**
3
3
  *
4
4
  * @param {import("../../spec/transform.js").LinearizeGenomicCoordinateParams} params
5
5
  * @param {import("../../view/view.js").default} view
6
6
  */
7
7
  constructor(params: import("../../spec/transform.js").LinearizeGenomicCoordinateParams, view: import("../../view/view.js").default);
8
+ params: import("../../spec/transform.js").LinearizeGenomicCoordinateParams;
8
9
  }
9
- import FlowNode from "../flowNode.js";
10
+ import Transform from "./transform.js";
10
11
  //# sourceMappingURL=linearizeGenomicCoordinate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"linearizeGenomicCoordinate.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/linearizeGenomicCoordinate.js"],"names":[],"mappings":"AAIA;IAKI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,gCAAgC,QAClE,OAAO,oBAAoB,EAAE,OAAO,EAmF9C;CACJ;qBA9F2C,gBAAgB"}
1
+ {"version":3,"file":"linearizeGenomicCoordinate.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/linearizeGenomicCoordinate.js"],"names":[],"mappings":"AAKA;IAKI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,gCAAgC,QAClE,OAAO,oBAAoB,EAAE,OAAO,EAyF9C;IAhFG,2EAAoB;CAiF3B;sBApGqB,gBAAgB"}
@@ -1,8 +1,9 @@
1
1
  import { asArray } from "../../utils/arrayUtils.js";
2
2
  import { field } from "../../utils/field.js";
3
- import FlowNode, { BEHAVIOR_MODIFIES } from "../flowNode.js";
3
+ import { BEHAVIOR_MODIFIES } from "../flowNode.js";
4
+ import Transform from "./transform.js";
4
5
 
5
- export default class LinearizeGenomicCoordinate extends FlowNode {
6
+ export default class LinearizeGenomicCoordinate extends Transform {
6
7
  get behavior() {
7
8
  return BEHAVIOR_MODIFIES;
8
9
  }
@@ -13,9 +14,15 @@ export default class LinearizeGenomicCoordinate extends FlowNode {
13
14
  * @param {import("../../view/view.js").default} view
14
15
  */
15
16
  constructor(params, view) {
16
- super();
17
+ params = {
18
+ channel: "x",
19
+ ...params,
20
+ };
21
+
22
+ super(params);
23
+ this.params = params;
17
24
 
18
- const channel = params.channel ?? "x";
25
+ const channel = params.channel;
19
26
 
20
27
  if (!["x", "y"].includes(channel)) {
21
28
  throw new Error("Invalid channel: " + channel);
@@ -2,17 +2,18 @@
2
2
  * Measures text length. This is mainly intended for reading-direction arrows
3
3
  * in gene annotations.
4
4
  */
5
- export default class MeasureTextTransform extends FlowNode {
5
+ export default class MeasureTextTransform extends Transform {
6
6
  /**
7
7
  *
8
- * @param {import("../../spec/transform.js").MeasureTextParams} config
8
+ * @param {import("../../spec/transform.js").MeasureTextParams} params
9
9
  */
10
- constructor(config: import("../../spec/transform.js").MeasureTextParams);
10
+ constructor(params: import("../../spec/transform.js").MeasureTextParams);
11
+ params: import("../../spec/transform.js").MeasureTextParams;
11
12
  /**
12
13
  *
13
14
  * @param {any} datum
14
15
  */
15
16
  handle: (datum: any) => void;
16
17
  }
17
- import FlowNode from "../flowNode.js";
18
+ import Transform from "./transform.js";
18
19
  //# sourceMappingURL=measureText.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"measureText.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/measureText.js"],"names":[],"mappings":"AAKA;;;GAGG;AACH;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,iBAAiB,EAwB7D;IAbG;;;OAGG;IACH,gBAFW,GAAG,UAUb;CAER;qBAzC2C,gBAAgB"}
1
+ {"version":3,"file":"measureText.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/measureText.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,iBAAiB,EA0B7D;IArBG,4DAAoB;IAQpB;;;OAGG;IACH,gBAFW,GAAG,UAUb;CAER;sBAxCqB,gBAAgB"}
@@ -1,29 +1,32 @@
1
- import FlowNode, { BEHAVIOR_MODIFIES } from "../flowNode.js";
1
+ import { BEHAVIOR_MODIFIES } from "../flowNode.js";
2
2
  import fontMetadata from "../../fonts/Lato-Regular.json";
3
3
  import getMetrics from "../../fonts/bmFontMetrics.js";
4
4
  import { field } from "../../utils/field.js";
5
+ import Transform from "./transform.js";
5
6
 
6
7
  /**
7
8
  * Measures text length. This is mainly intended for reading-direction arrows
8
9
  * in gene annotations.
9
10
  */
10
- export default class MeasureTextTransform extends FlowNode {
11
+ export default class MeasureTextTransform extends Transform {
11
12
  get behavior() {
12
13
  return BEHAVIOR_MODIFIES;
13
14
  }
14
15
 
15
16
  /**
16
17
  *
17
- * @param {import("../../spec/transform.js").MeasureTextParams} config
18
+ * @param {import("../../spec/transform.js").MeasureTextParams} params
18
19
  */
19
- constructor(config) {
20
- super();
20
+ constructor(params) {
21
+ super(params);
22
+
23
+ this.params = params;
21
24
 
22
25
  const metrics = getMetrics(fontMetadata);
23
- const accessor = field(config.field);
24
- const as = config.as;
26
+ const accessor = field(params.field);
27
+ const as = params.as;
25
28
  // TODO: Support custom fonts.
26
- const size = config.fontSize;
29
+ const size = params.fontSize;
27
30
 
28
31
  /**
29
32
  *
@@ -1,4 +1,4 @@
1
- export default class PileupTransform extends FlowNode {
1
+ export default class PileupTransform extends Transform {
2
2
  /**
3
3
  *
4
4
  * @param {import("../../spec/transform.js").PileupParams} params
@@ -6,5 +6,5 @@ export default class PileupTransform extends FlowNode {
6
6
  constructor(params: import("../../spec/transform.js").PileupParams);
7
7
  params: import("../../spec/transform.js").PileupParams;
8
8
  }
9
- import FlowNode from "../flowNode.js";
9
+ import Transform from "./transform.js";
10
10
  //# sourceMappingURL=pileup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pileup.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/pileup.js"],"names":[],"mappings":"AAQA;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,YAAY,EAMxD;IADG,uDAAoB;CAyG3B;qBAzH2C,gBAAgB"}
1
+ {"version":3,"file":"pileup.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/pileup.js"],"names":[],"mappings":"AASA;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,YAAY,EAMxD;IADG,uDAAoB;CAyG3B;sBAzHqB,gBAAgB"}
@@ -2,11 +2,12 @@
2
2
  import FlatQueue from "flatqueue";
3
3
  import { isNumber } from "vega-util";
4
4
  import { field } from "../../utils/field.js";
5
- import FlowNode, { BEHAVIOR_MODIFIES } from "../flowNode.js";
5
+ import { BEHAVIOR_MODIFIES } from "../flowNode.js";
6
+ import Transform from "./transform.js";
6
7
 
7
8
  const maxDepth = 65536;
8
9
 
9
- export default class PileupTransform extends FlowNode {
10
+ export default class PileupTransform extends Transform {
10
11
  get behavior() {
11
12
  return BEHAVIOR_MODIFIES;
12
13
  }
@@ -16,7 +17,7 @@ export default class PileupTransform extends FlowNode {
16
17
  * @param {import("../../spec/transform.js").PileupParams} params
17
18
  */
18
19
  constructor(params) {
19
- super();
20
+ super(params);
20
21
 
21
22
  this.params = params;
22
23
  }
@@ -1,13 +1,14 @@
1
- export default class ProjectTransform extends FlowNode {
1
+ export default class ProjectTransform extends Transform {
2
2
  /**
3
3
  *
4
4
  * @param {import("../../spec/transform.js").ProjectParams} params
5
5
  */
6
6
  constructor(params: import("../../spec/transform.js").ProjectParams);
7
+ params: import("../../spec/transform.js").ProjectParams;
7
8
  /**
8
9
  * @param {any} datum
9
10
  */
10
11
  handle: (datum: any) => void;
11
12
  }
12
- import FlowNode from "../flowNode.js";
13
+ import Transform from "./transform.js";
13
14
  //# sourceMappingURL=project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/project.js"],"names":[],"mappings":"AAIA;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,aAAa,EAyBzD;IAXG;;OAEG;IACH,gBAFW,GAAG,UASb;CAER;qBAnCyC,gBAAgB"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/project.js"],"names":[],"mappings":"AAKA;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,aAAa,EA2BzD;IAtBG,wDAAoB;IAWpB;;OAEG;IACH,gBAFW,GAAG,UASb;CAER;sBArCqB,gBAAgB"}
@@ -1,8 +1,9 @@
1
1
  import { accessorName } from "vega-util";
2
2
  import { field } from "../../utils/field.js";
3
- import FlowNode, { BEHAVIOR_CLONES } from "../flowNode.js";
3
+ import { BEHAVIOR_CLONES } from "../flowNode.js";
4
+ import Transform from "./transform.js";
4
5
 
5
- export default class ProjectTransform extends FlowNode {
6
+ export default class ProjectTransform extends Transform {
6
7
  get behavior() {
7
8
  return BEHAVIOR_CLONES;
8
9
  }
@@ -12,7 +13,9 @@ export default class ProjectTransform extends FlowNode {
12
13
  * @param {import("../../spec/transform.js").ProjectParams} params
13
14
  */
14
15
  constructor(params) {
15
- super();
16
+ super(params);
17
+
18
+ this.params = params;
16
19
 
17
20
  if (params.as && params.as.length != params.fields.length) {
18
21
  throw new Error(`"fields" and "as" have unequal lengths!`);
@@ -1,13 +1,14 @@
1
- export default class RegexExtractTransform extends FlowNode {
1
+ export default class RegexExtractTransform extends Transform {
2
2
  /**
3
3
  * @param {import("../../spec/transform.js").RegexExtractParams} params
4
4
  */
5
5
  constructor(params: import("../../spec/transform.js").RegexExtractParams);
6
+ params: import("../../spec/transform.js").RegexExtractParams;
6
7
  /**
7
8
  *
8
9
  * @param {any} datum
9
10
  */
10
11
  handle: (datum: any) => void;
11
12
  }
12
- import FlowNode from "../flowNode.js";
13
+ import Transform from "./transform.js";
13
14
  //# sourceMappingURL=regexExtract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"regexExtract.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/regexExtract.js"],"names":[],"mappings":"AAIA;IAKI;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,kBAAkB,EA6C9D;IApCG;;;OAGG;IACH,gBAFW,GAAG,UAiCb;CAER;qBAtD2C,gBAAgB"}
1
+ {"version":3,"file":"regexExtract.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/regexExtract.js"],"names":[],"mappings":"AAKA;IAKI;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,kBAAkB,EA+C9D;IA1CG,6DAAoB;IAMpB;;;OAGG;IACH,gBAFW,GAAG,UAiCb;CAER;sBAxDqB,gBAAgB"}
@@ -1,8 +1,9 @@
1
1
  import { isString } from "vega-util";
2
2
  import { field } from "../../utils/field.js";
3
- import FlowNode, { BEHAVIOR_MODIFIES } from "../flowNode.js";
3
+ import { BEHAVIOR_MODIFIES } from "../flowNode.js";
4
+ import Transform from "./transform.js";
4
5
 
5
- export default class RegexExtractTransform extends FlowNode {
6
+ export default class RegexExtractTransform extends Transform {
6
7
  get behavior() {
7
8
  return BEHAVIOR_MODIFIES;
8
9
  }
@@ -11,7 +12,9 @@ export default class RegexExtractTransform extends FlowNode {
11
12
  * @param {import("../../spec/transform.js").RegexExtractParams} params
12
13
  */
13
14
  constructor(params) {
14
- super();
15
+ super(params);
16
+
17
+ this.params = params;
15
18
 
16
19
  const re = new RegExp(params.regex);
17
20
  const as = typeof params.as == "string" ? [params.as] : params.as;
@@ -3,12 +3,13 @@
3
3
  *
4
4
  * See: https://vega.github.io/vega/docs/transforms/fold/
5
5
  */
6
- export default class RegexFoldTransform extends FlowNode {
6
+ export default class RegexFoldTransform extends Transform {
7
7
  /**
8
8
  * @param {import("../../spec/transform.js").RegexFoldParams} params
9
9
  */
10
10
  constructor(params: import("../../spec/transform.js").RegexFoldParams);
11
+ params: import("../../spec/transform.js").RegexFoldParams;
11
12
  handle: (datum: any) => void;
12
13
  }
13
- import FlowNode from "../flowNode.js";
14
+ import Transform from "./transform.js";
14
15
  //# sourceMappingURL=regexFold.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"regexFold.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/regexFold.js"],"names":[],"mappings":"AAGA;;;;GAIG;AACH;IAKI;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,eAAe,EAiI3D;IAfO,gBALO,GAAG,UAKe;CAgBpC;qBA/IsD,gBAAgB"}
1
+ {"version":3,"file":"regexFold.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/regexFold.js"],"names":[],"mappings":"AAIA;;;;GAIG;AACH;IAKI;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,eAAe,EAmI3D;IA9HG,0DAAoB;IA+GhB,gBALO,GAAG,UAKe;CAgBpC;sBAjJqB,gBAAgB"}
@@ -1,12 +1,13 @@
1
1
  import { asArray } from "../../utils/arrayUtils.js";
2
- import FlowNode, { BEHAVIOR_CLONES, isFileBatch } from "../flowNode.js";
2
+ import { BEHAVIOR_CLONES, isFileBatch } from "../flowNode.js";
3
+ import Transform from "./transform.js";
3
4
 
4
5
  /**
5
6
  * Folds fields using a regex
6
7
  *
7
8
  * See: https://vega.github.io/vega/docs/transforms/fold/
8
9
  */
9
- export default class RegexFoldTransform extends FlowNode {
10
+ export default class RegexFoldTransform extends Transform {
10
11
  get behavior() {
11
12
  return BEHAVIOR_CLONES;
12
13
  }
@@ -15,7 +16,9 @@ export default class RegexFoldTransform extends FlowNode {
15
16
  * @param {import("../../spec/transform.js").RegexFoldParams} params
16
17
  */
17
18
  constructor(params) {
18
- super();
19
+ super(params);
20
+
21
+ this.params = params;
19
22
 
20
23
  const columnRegex = asArray(params.columnRegex).map(
21
24
  (re) => new RegExp(re)
@@ -12,12 +12,13 @@ export function sampleIterable<T, R>(n: number, iterable: Iterable<T>, accessor:
12
12
  /**
13
13
  * A reservoir sampler, based on: https://www.wikiwand.com/en/Reservoir_sampling
14
14
  */
15
- export default class SampleTransform extends FlowNode {
15
+ export default class SampleTransform extends Transform {
16
16
  /**
17
17
  *
18
18
  * @param {import("../../spec/transform.js").SampleParams} params
19
19
  */
20
20
  constructor(params: import("../../spec/transform.js").SampleParams);
21
+ params: import("../../spec/transform.js").SampleParams;
21
22
  k: number;
22
23
  /** @type {any[]} */
23
24
  reservoir: any[];
@@ -38,5 +39,5 @@ export default class SampleTransform extends FlowNode {
38
39
  _finalIngester(item: any): void;
39
40
  _setNextStop(): void;
40
41
  }
41
- import FlowNode from "../flowNode.js";
42
+ import Transform from "./transform.js";
42
43
  //# sourceMappingURL=sample.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sample.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/sample.js"],"names":[],"mappings":"AA6EA;;;;;;;;;GASG;AACH,wCAPW,MAAM,wDAkBhB;AAhGD;;GAEG;AACH;IACI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,YAAY,EAOxD;IAFG,UAA2B;IAO3B,oBAAoB;IACpB,WADW,GAAG,EAAE,CACG;IACnB,qBAAqB;IACrB,GADW,MAAM,CACC;IAClB,kBAKO,GAAG,qBAgBH,GAAG,WArB2B;IAGzC;;;OAGG;IACH,uBAFW,GAAG,QAYb;IALO,UAAe;IACf,aAAkB;IAM1B;;;OAGG;IACH,qBAFW,GAAG,QAQb;IAED,qBAGC;CAiBJ;qBA3EoB,gBAAgB"}
1
+ {"version":3,"file":"sample.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/sample.js"],"names":[],"mappings":"AA+EA;;;;;;;;;GASG;AACH,wCAPW,MAAM,wDAkBhB;AAlGD;;GAEG;AACH;IACI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,YAAY,EASxD;IAJG,uDAAoB;IAEpB,UAA2B;IAO3B,oBAAoB;IACpB,WADW,GAAG,EAAE,CACG;IACnB,qBAAqB;IACrB,GADW,MAAM,CACC;IAClB,kBAKO,GAAG,qBAgBH,GAAG,WArB2B;IAGzC;;;OAGG;IACH,uBAFW,GAAG,QAYb;IALO,UAAe;IACf,aAAkB;IAM1B;;;OAGG;IACH,qBAFW,GAAG,QAQb;IAED,qBAGC;CAiBJ;sBA7EqB,gBAAgB"}
@@ -1,15 +1,17 @@
1
- import FlowNode from "../flowNode.js";
1
+ import Transform from "./transform.js";
2
2
 
3
3
  /**
4
4
  * A reservoir sampler, based on: https://www.wikiwand.com/en/Reservoir_sampling
5
5
  */
6
- export default class SampleTransform extends FlowNode {
6
+ export default class SampleTransform extends Transform {
7
7
  /**
8
8
  *
9
9
  * @param {import("../../spec/transform.js").SampleParams} params
10
10
  */
11
11
  constructor(params) {
12
- super();
12
+ super(params);
13
+
14
+ this.params = params;
13
15
 
14
16
  this.k = params.size || 500;
15
17
  this.reset();
@@ -1,4 +1,4 @@
1
- export default class StackTransform extends FlowNode {
1
+ export default class StackTransform extends Transform {
2
2
  /**
3
3
  * @param {import("../../spec/transform.js").StackParams} params
4
4
  */
@@ -7,5 +7,5 @@ export default class StackTransform extends FlowNode {
7
7
  /** @type {any[]} */
8
8
  buffer: any[];
9
9
  }
10
- import FlowNode from "../flowNode.js";
10
+ import Transform from "./transform.js";
11
11
  //# sourceMappingURL=stack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/stack.js"],"names":[],"mappings":"AAKA;IAKI;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,WAAW,EAQvD;IAJG,sDAAoB;IAEpB,oBAAoB;IACpB,QADW,GAAG,EAAE,CACA;CAmHvB;qBAnI2C,gBAAgB"}
1
+ {"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/stack.js"],"names":[],"mappings":"AAMA;IAKI;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,WAAW,EAQvD;IAJG,sDAAoB;IAEpB,oBAAoB;IACpB,QADW,GAAG,EAAE,CACA;CAmHvB;sBAlIqB,gBAAgB"}
@@ -1,9 +1,10 @@
1
1
  import { compare } from "vega-util";
2
2
  import { groups as d3groups, sum as d3sum } from "d3-array";
3
- import FlowNode, { BEHAVIOR_MODIFIES } from "../flowNode.js";
3
+ import { BEHAVIOR_MODIFIES } from "../flowNode.js";
4
4
  import { field } from "../../utils/field.js";
5
+ import Transform from "./transform.js";
5
6
 
6
- export default class StackTransform extends FlowNode {
7
+ export default class StackTransform extends Transform {
7
8
  get behavior() {
8
9
  return BEHAVIOR_MODIFIES;
9
10
  }
@@ -12,7 +13,7 @@ export default class StackTransform extends FlowNode {
12
13
  * @param {import("../../spec/transform.js").StackParams} params
13
14
  */
14
15
  constructor(params) {
15
- super();
16
+ super(params);
16
17
  this.params = params;
17
18
 
18
19
  /** @type {any[]} */
@@ -0,0 +1,10 @@
1
+ export default class Transform extends FlowNode {
2
+ /**
3
+ * @param {import("../../spec/transform.js").TransformParamsBase} params
4
+ * @param {import("../flowNode.js").ParamMediatorProvider} [paramMediatorProvider]
5
+ */
6
+ constructor(params: import("../../spec/transform.js").TransformParamsBase, paramMediatorProvider?: import("../flowNode.js").ParamMediatorProvider);
7
+ #private;
8
+ }
9
+ import FlowNode from "../flowNode.js";
10
+ //# sourceMappingURL=transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/transform.js"],"names":[],"mappings":"AAEA;IAII;;;OAGG;IACH,oBAHW,OAAO,yBAAyB,EAAE,mBAAmB,0BACrD,OAAO,gBAAgB,EAAE,qBAAqB,EAKxD;;CAQJ;qBArBoB,gBAAgB"}
@@ -0,0 +1,22 @@
1
+ import FlowNode from "../flowNode.js";
2
+
3
+ export default class Transform extends FlowNode {
4
+ /** @type {string} */
5
+ #label;
6
+
7
+ /**
8
+ * @param {import("../../spec/transform.js").TransformParamsBase} params
9
+ * @param {import("../flowNode.js").ParamMediatorProvider} [paramMediatorProvider]
10
+ */
11
+ constructor(params, paramMediatorProvider) {
12
+ super(paramMediatorProvider);
13
+ this.#label = params.type;
14
+ }
15
+
16
+ /**
17
+ * @returns {string}
18
+ */
19
+ get label() {
20
+ return this.#label;
21
+ }
22
+ }
@@ -42,7 +42,7 @@ export interface Title {
42
42
  offset?: number;
43
43
 
44
44
  /**
45
- * Default title orientation (`"top"`, `"bottom"`, `"left"`, or `"right"`)
45
+ * Default title orientation (`"none"`, `"top"`, `"bottom"`, `"left"`, or `"right"`)
46
46
  */
47
47
  orient?: TitleOrient;
48
48
 
@@ -188,14 +188,44 @@ export interface StackParams extends TransformParamsBase {
188
188
  baseField?: Field;
189
189
  }
190
190
 
191
+ export type AggregateOp =
192
+ | "count"
193
+ | "valid"
194
+ | "sum"
195
+ | "min"
196
+ | "max"
197
+ | "mean"
198
+ | "median"
199
+ | "variance";
200
+
191
201
  export interface AggregateParams extends TransformParamsBase {
192
202
  type: "aggregate";
193
203
 
194
204
  /**
195
- * Which fields to use for grouping. Missing `groupby` results in a single
196
- * group that includes all the data items.
205
+ * The fields by which to group the data. If these are not defined, all data
206
+ * objects will be grouped into a single category.
197
207
  */
198
208
  groupby?: Field[];
209
+
210
+ /**
211
+ * The data fields to apply aggregate functions to. This array should
212
+ * correspond with the `ops` and `as` arrays. If no fields or operations
213
+ * are specified, a count aggregation will be applied by default.
214
+ */
215
+ fields?: Field[];
216
+
217
+ /**
218
+ * The aggregation operations to be performed on the fields, such as `"sum"`,
219
+ * `"average"`, or `"count"`.
220
+ */
221
+ ops?: AggregateOp[];
222
+
223
+ /**
224
+ * The names for the output fields corresponding to each aggregated field.
225
+ * If not provided, names will be automatically created using the operation
226
+ * and field names (e.g., `sum_field`, `average_field`).
227
+ */
228
+ as?: string[];
199
229
  }
200
230
 
201
231
  export interface FlattenParams extends TransformParamsBase {
@@ -271,7 +271,7 @@ function createAxis(axisProps, type) {
271
271
  */
272
272
  const createDomain = () => ({
273
273
  name: "domain",
274
- data: { values: [0] },
274
+ data: { values: [{}] },
275
275
  mark: {
276
276
  type: "rule",
277
277
  clip: false,
@@ -334,7 +334,7 @@ function createAxis(axisProps, type) {
334
334
  */
335
335
  const createTitle = () => ({
336
336
  name: "title",
337
- data: { values: [0] },
337
+ data: { values: [{}] },
338
338
  mark: {
339
339
  type: "text",
340
340
  clip: false,
@@ -1 +1 @@
1
- {"version":3,"file":"gridView.d.ts","sourceRoot":"","sources":["../../../src/view/gridView.js"],"names":[],"mappings":"AAswBA;;;GAGG;AACH,iDAHW,OAAO,iBAAiB,EAAE,cAAc,GACtC,OAAO,iBAAiB,EAAE,QAAQ,CAwB9C;AAED;;;GAGG;AACH,uDAHW,OAAO,iBAAiB,EAAE,cAAc,GACtC,OAAO,iBAAiB,EAAE,QAAQ,CA6C9C;AA2BD;;GAEG;AACH,8EAUC;AAED;;;;;GAKG;AACH,4CAJW,OAAO,uBAAuB,EAAE,OAAO,UACvC,OAAO,iBAAiB,EAAE,UAAU,YACpC,QAAQ,aAmBlB;AA53BD;;;;;;;;;;;;;;;GAeG;AACH;IA6BI;;;;;;;;;OASG;IACH,kBARW,OAAO,iBAAiB,EAAE,aAAa,WACvC,OAAO,yBAAyB,EAAE,OAAO,gBACzC,aAAa,iDAEb,MAAM,WACN,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAoBzC;IARG,8CAAgB;IAOhB,uBAA0B;IAG9B;;OAEG;IACH,qDAIC;IAeD;;OAEG;IACH,wDAKC;IAqBD;;OAEG;IACH,8CAEC;IAED,yBAEC;IAED;;OAEG;IACH,wCAmCC;;CA+jBJ;AAgJD;IACI;;;;OAIG;IACH,6DAHW,aAAa,UACb,MAAM,EAoFhB;IAjFG,4BAAgC;IAChC,kCAAgB;IAChB,eAAoB;IAEpB,uBAAuB;IACvB,YADW,QAAQ,CACQ;IAE3B,uBAAuB;IACvB,kBADW,QAAQ,CACc;IAEjC,mFAAmF;IACnF,MADW,QAAQ,OAAO,OAAO,iBAAiB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAC5D;IAEd,4FAA4F;IAC5F,WADW,QAAQ,OAAO,OAAO,iBAAiB,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAC3D;IAEnB,0DAA0D;IAC1D,kEAAoB;IAEpB,uBAAuB;IACvB,OADW,QAAQ,CACG;IAEtB,wBAAwB;IACxB,QADW,SAAS,CACQ;IA4DhC,uEAcC;IAED;;OAEG;IACH,4BAkKC;IAED,uBAqBC;IAED,iCAEC;CACJ;qBAlrC0D,eAAe;sBAFpD,uBAAuB;0BAGnB,oBAAoB;qBAGzB,eAAe;yBALX,mBAAmB;AAqrC5C;IAeI;;;OAGG;IACH,uBAHW,SAAS,8CA6FnB;IAhGD,uBAAmB;IAsCf;;;MAAoB;IAIpB;;;;MAQC;IAgDL,2BAKC;IAWD;;;;OAIG;IACH,gCAHW,SAAS,UACT,SAAS,QA8CnB;;CACJ;oBAx2CmB,qBAAqB"}
1
+ {"version":3,"file":"gridView.d.ts","sourceRoot":"","sources":["../../../src/view/gridView.js"],"names":[],"mappings":"AAswBA;;;GAGG;AACH,iDAHW,OAAO,iBAAiB,EAAE,cAAc,GACtC,OAAO,iBAAiB,EAAE,QAAQ,CAwB9C;AAED;;;GAGG;AACH,uDAHW,OAAO,iBAAiB,EAAE,cAAc,GACtC,OAAO,iBAAiB,EAAE,QAAQ,CA6C9C;AA2BD;;GAEG;AACH,8EAUC;AAED;;;;;GAKG;AACH,4CAJW,OAAO,uBAAuB,EAAE,OAAO,UACvC,OAAO,iBAAiB,EAAE,UAAU,YACpC,QAAQ,aAmBlB;AA53BD;;;;;;;;;;;;;;;GAeG;AACH;IA6BI;;;;;;;;;OASG;IACH,kBARW,OAAO,iBAAiB,EAAE,aAAa,WACvC,OAAO,yBAAyB,EAAE,OAAO,gBACzC,aAAa,iDAEb,MAAM,WACN,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAoBzC;IARG,8CAAgB;IAOhB,uBAA0B;IAG9B;;OAEG;IACH,qDAIC;IAeD;;OAEG;IACH,wDAKC;IAqBD;;OAEG;IACH,8CAEC;IAED,yBAEC;IAED;;OAEG;IACH,wCAmCC;;CA+jBJ;AAgJD;IACI;;;;OAIG;IACH,6DAHW,aAAa,UACb,MAAM,EAoFhB;IAjFG,4BAAgC;IAChC,kCAAgB;IAChB,eAAoB;IAEpB,uBAAuB;IACvB,YADW,QAAQ,CACQ;IAE3B,uBAAuB;IACvB,kBADW,QAAQ,CACc;IAEjC,mFAAmF;IACnF,MADW,QAAQ,OAAO,OAAO,iBAAiB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAC5D;IAEd,4FAA4F;IAC5F,WADW,QAAQ,OAAO,OAAO,iBAAiB,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAC3D;IAEnB,0DAA0D;IAC1D,kEAAoB;IAEpB,uBAAuB;IACvB,OADW,QAAQ,CACG;IAEtB,wBAAwB;IACxB,QADW,SAAS,CACQ;IA4DhC,uEAcC;IAED;;OAEG;IACH,4BAsKC;IAED,uBAqBC;IAED,iCAEC;CACJ;qBAtrC0D,eAAe;sBAFpD,uBAAuB;0BAGnB,oBAAoB;qBAGzB,eAAe;yBALX,mBAAmB;AAyrC5C;IAeI;;;OAGG;IACH,uBAHW,SAAS,8CA6FnB;IAhGD,uBAAmB;IAsCf;;;MAAoB;IAIpB;;;;MAQC;IAgDL,2BAKC;IAWD;;;;OAIG;IACH,gCAHW,SAAS,UACT,SAAS,QA8CnB;;CACJ;oBA52CmB,qBAAqB"}