@genome-spy/core 0.54.0 → 0.56.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 (120) hide show
  1. package/dist/bundle/index.es.js +3867 -3671
  2. package/dist/bundle/index.js +99 -86
  3. package/dist/schema.json +4 -0
  4. package/dist/src/data/collector.d.ts.map +1 -1
  5. package/dist/src/data/collector.js +4 -0
  6. package/dist/src/data/flowNode.d.ts +14 -5
  7. package/dist/src/data/flowNode.d.ts.map +1 -1
  8. package/dist/src/data/flowNode.js +30 -7
  9. package/dist/src/data/sources/dataSource.d.ts +1 -2
  10. package/dist/src/data/sources/dataSource.d.ts.map +1 -1
  11. package/dist/src/data/sources/dataSource.js +0 -1
  12. package/dist/src/data/sources/inlineSource.d.ts +4 -0
  13. package/dist/src/data/sources/inlineSource.d.ts.map +1 -1
  14. package/dist/src/data/sources/inlineSource.js +18 -0
  15. package/dist/src/data/sources/lazy/axisGenomeSource.d.ts.map +1 -1
  16. package/dist/src/data/sources/lazy/axisGenomeSource.js +4 -0
  17. package/dist/src/data/sources/lazy/axisTickSource.d.ts.map +1 -1
  18. package/dist/src/data/sources/lazy/axisTickSource.js +4 -0
  19. package/dist/src/data/sources/lazy/bamSource.d.ts.map +1 -1
  20. package/dist/src/data/sources/lazy/bamSource.js +4 -0
  21. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  22. package/dist/src/data/sources/lazy/bigBedSource.js +4 -0
  23. package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
  24. package/dist/src/data/sources/lazy/bigWigSource.js +4 -0
  25. package/dist/src/data/sources/lazy/gff3Source.d.ts.map +1 -1
  26. package/dist/src/data/sources/lazy/gff3Source.js +4 -0
  27. package/dist/src/data/sources/lazy/indexedFastaSource.d.ts.map +1 -1
  28. package/dist/src/data/sources/lazy/indexedFastaSource.js +4 -0
  29. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +2 -0
  30. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  31. package/dist/src/data/sources/lazy/singleAxisLazySource.js +2 -0
  32. package/dist/src/data/sources/namedSource.d.ts.map +1 -1
  33. package/dist/src/data/sources/namedSource.js +4 -0
  34. package/dist/src/data/sources/sequenceSource.d.ts.map +1 -1
  35. package/dist/src/data/sources/sequenceSource.js +4 -0
  36. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  37. package/dist/src/data/sources/urlSource.js +4 -0
  38. package/dist/src/data/transforms/aggregate.d.ts +2 -2
  39. package/dist/src/data/transforms/aggregate.d.ts.map +1 -1
  40. package/dist/src/data/transforms/aggregate.js +4 -3
  41. package/dist/src/data/transforms/clone.d.ts +2 -2
  42. package/dist/src/data/transforms/clone.d.ts.map +1 -1
  43. package/dist/src/data/transforms/clone.js +4 -3
  44. package/dist/src/data/transforms/coverage.d.ts +2 -2
  45. package/dist/src/data/transforms/coverage.d.ts.map +1 -1
  46. package/dist/src/data/transforms/coverage.js +4 -3
  47. package/dist/src/data/transforms/filter.d.ts +2 -2
  48. package/dist/src/data/transforms/filter.d.ts.map +1 -1
  49. package/dist/src/data/transforms/filter.js +3 -3
  50. package/dist/src/data/transforms/filterScoredLabels.d.ts +2 -2
  51. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  52. package/dist/src/data/transforms/filterScoredLabels.js +4 -3
  53. package/dist/src/data/transforms/flatten.d.ts +3 -2
  54. package/dist/src/data/transforms/flatten.d.ts.map +1 -1
  55. package/dist/src/data/transforms/flatten.js +6 -3
  56. package/dist/src/data/transforms/flattenCompressedExons.d.ts +2 -2
  57. package/dist/src/data/transforms/flattenCompressedExons.d.ts.map +1 -1
  58. package/dist/src/data/transforms/flattenCompressedExons.js +4 -3
  59. package/dist/src/data/transforms/flattenDelimited.d.ts +2 -2
  60. package/dist/src/data/transforms/flattenDelimited.d.ts.map +1 -1
  61. package/dist/src/data/transforms/flattenDelimited.js +4 -3
  62. package/dist/src/data/transforms/flattenSequence.d.ts +3 -2
  63. package/dist/src/data/transforms/flattenSequence.d.ts.map +1 -1
  64. package/dist/src/data/transforms/flattenSequence.js +6 -3
  65. package/dist/src/data/transforms/formula.d.ts +2 -2
  66. package/dist/src/data/transforms/formula.d.ts.map +1 -1
  67. package/dist/src/data/transforms/formula.js +4 -3
  68. package/dist/src/data/transforms/identifier.d.ts +2 -2
  69. package/dist/src/data/transforms/identifier.d.ts.map +1 -1
  70. package/dist/src/data/transforms/identifier.js +4 -3
  71. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts +3 -2
  72. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts.map +1 -1
  73. package/dist/src/data/transforms/linearizeGenomicCoordinate.js +11 -4
  74. package/dist/src/data/transforms/measureText.d.ts +5 -4
  75. package/dist/src/data/transforms/measureText.d.ts.map +1 -1
  76. package/dist/src/data/transforms/measureText.js +11 -8
  77. package/dist/src/data/transforms/pileup.d.ts +2 -2
  78. package/dist/src/data/transforms/pileup.d.ts.map +1 -1
  79. package/dist/src/data/transforms/pileup.js +4 -3
  80. package/dist/src/data/transforms/project.d.ts +3 -2
  81. package/dist/src/data/transforms/project.d.ts.map +1 -1
  82. package/dist/src/data/transforms/project.js +6 -3
  83. package/dist/src/data/transforms/regexExtract.d.ts +3 -2
  84. package/dist/src/data/transforms/regexExtract.d.ts.map +1 -1
  85. package/dist/src/data/transforms/regexExtract.js +6 -3
  86. package/dist/src/data/transforms/regexFold.d.ts +3 -2
  87. package/dist/src/data/transforms/regexFold.d.ts.map +1 -1
  88. package/dist/src/data/transforms/regexFold.js +6 -3
  89. package/dist/src/data/transforms/sample.d.ts +3 -2
  90. package/dist/src/data/transforms/sample.d.ts.map +1 -1
  91. package/dist/src/data/transforms/sample.js +5 -3
  92. package/dist/src/data/transforms/stack.d.ts +2 -2
  93. package/dist/src/data/transforms/stack.d.ts.map +1 -1
  94. package/dist/src/data/transforms/stack.js +4 -3
  95. package/dist/src/data/transforms/transform.d.ts +10 -0
  96. package/dist/src/data/transforms/transform.d.ts.map +1 -0
  97. package/dist/src/data/transforms/transform.js +22 -0
  98. package/dist/src/gl/glslScaleGenerator.d.ts +1 -0
  99. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  100. package/dist/src/gl/glslScaleGenerator.js +3 -10
  101. package/dist/src/gl/includes/common.glsl.js +1 -1
  102. package/dist/src/gl/webGLHelper.d.ts +8 -0
  103. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  104. package/dist/src/gl/webGLHelper.js +40 -0
  105. package/dist/src/marks/mark.d.ts +8 -0
  106. package/dist/src/marks/mark.d.ts.map +1 -1
  107. package/dist/src/marks/mark.js +86 -19
  108. package/dist/src/marks/rule.d.ts.map +1 -1
  109. package/dist/src/marks/rule.js +23 -22
  110. package/dist/src/selection/selection.d.ts +24 -0
  111. package/dist/src/selection/selection.d.ts.map +1 -1
  112. package/dist/src/selection/selection.js +73 -2
  113. package/dist/src/spec/parameter.d.ts +3 -2
  114. package/dist/src/types/selectionTypes.d.ts +2 -2
  115. package/dist/src/view/axisView.js +2 -2
  116. package/dist/src/view/paramMediator.d.ts.map +1 -1
  117. package/dist/src/view/paramMediator.js +14 -8
  118. package/dist/src/view/unitView.d.ts.map +1 -1
  119. package/dist/src/view/unitView.js +46 -10
  120. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- export default class FilterScoredLabelsTransform extends FlowNode {
1
+ export default class FilterScoredLabelsTransform extends Transform {
2
2
  /**
3
3
  *
4
4
  * @param {import("../../spec/transform.js").FilterScoredLabelsParams} params
@@ -24,6 +24,6 @@ export default class FilterScoredLabelsTransform extends FlowNode {
24
24
  _filterAndPropagate(): void;
25
25
  groups: Map<any, any>;
26
26
  }
27
- import FlowNode from "../flowNode.js";
27
+ import Transform from "./transform.js";
28
28
  import ReservationMap from "../../utils/reservationMap.js";
29
29
  //# sourceMappingURL=filterScoredLabels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterScoredLabels.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/filterScoredLabels.js"],"names":[],"mappings":"AAMA;IAKI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,wBAAwB,QAC1D,OAAO,oBAAoB,EAAE,OAAO,EA2C9C;IAtCG,mEAAoB;IAEpB,oBAAoB;IACpB,OADW,GAAG,EAAE,CACD;IAEf,mBAAoC;IAMpC,iDAAyC;IACzC,mDAA6C;IAC7C,mDAA6C;IAC7C,mDAA6C;IAC7C,gCAAgC;IAChC,qBADoB,GAAG,KAAE,GAAG,CAGd;IACd,gBAAuC;IAEvC,uCAAuC;IACvC,iBADW,IAAI,GAAG,EAAE,cAAc,CAAC,CACH;IAEhC,4DAAuD;IAIvD,qBAAuE;IAgBvE,eAAiD;IAWrD,4BAyCC;IAKG,sBAAuB;CAU9B;qBAjI2C,gBAAgB;2BAEjC,+BAA+B"}
1
+ {"version":3,"file":"filterScoredLabels.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/filterScoredLabels.js"],"names":[],"mappings":"AAOA;IAKI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,wBAAwB,QAC1D,OAAO,oBAAoB,EAAE,OAAO,EA2C9C;IAtCG,mEAAoB;IAEpB,oBAAoB;IACpB,OADW,GAAG,EAAE,CACD;IAEf,mBAAoC;IAMpC,iDAAyC;IACzC,mDAA6C;IAC7C,mDAA6C;IAC7C,mDAA6C;IAC7C,gCAAgC;IAChC,qBADoB,GAAG,KAAE,GAAG,CAGd;IACd,gBAAuC;IAEvC,uCAAuC;IACvC,iBADW,IAAI,GAAG,EAAE,cAAc,CAAC,CACH;IAEhC,4DAAuD;IAIvD,qBAAuE;IAgBvE,eAAiD;IAWrD,4BAyCC;IAKG,sBAAuB;CAU9B;sBA9HqB,gBAAgB;2BAFX,+BAA+B"}
@@ -1,10 +1,11 @@
1
1
  import { bisector } from "d3-array";
2
- import FlowNode, { BEHAVIOR_COLLECTS } from "../flowNode.js";
2
+ import { BEHAVIOR_COLLECTS } from "../flowNode.js";
3
3
  import { topKSlice } from "../../utils/topK.js";
4
4
  import ReservationMap from "../../utils/reservationMap.js";
5
5
  import { field } from "../../utils/field.js";
6
+ import Transform from "./transform.js";
6
7
 
7
- export default class FilterScoredLabelsTransform extends FlowNode {
8
+ export default class FilterScoredLabelsTransform extends Transform {
8
9
  get behavior() {
9
10
  return BEHAVIOR_COLLECTS;
10
11
  }
@@ -15,7 +16,7 @@ export default class FilterScoredLabelsTransform extends FlowNode {
15
16
  * @param {import("../../view/view.js").default} view
16
17
  */
17
18
  constructor(params, view) {
18
- super();
19
+ super(params);
19
20
 
20
21
  this.params = params;
21
22
 
@@ -1,10 +1,11 @@
1
- export default class FlattenTransform extends FlowNode {
1
+ export default class FlattenTransform extends Transform {
2
2
  /**
3
3
  * @param {import("../../spec/transform.js").FlattenParams} params
4
4
  */
5
5
  constructor(params: import("../../spec/transform.js").FlattenParams);
6
+ params: import("../../spec/transform.js").FlattenParams;
6
7
  /** @param {any[]} datum */
7
8
  handle: (datum: any[]) => void;
8
9
  }
9
- import FlowNode from "../flowNode.js";
10
+ import Transform from "./transform.js";
10
11
  //# sourceMappingURL=flatten.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/flatten.js"],"names":[],"mappings":"AAIA;IAKI;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,aAAa,EAwDzD;IAvCO,2BAA2B;IAC3B,gBADY,GAAG,EAAE,UAwBhB;CAgBZ;qBAjEyC,gBAAgB"}
1
+ {"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/flatten.js"],"names":[],"mappings":"AAKA;IAKI;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,aAAa,EA0DzD;IArDG,wDAAoB;IAchB,2BAA2B;IAC3B,gBADY,GAAG,EAAE,UAwBhB;CAgBZ;sBAnEqB,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_CLONES } from "../flowNode.js";
3
+ import { BEHAVIOR_CLONES } from "../flowNode.js";
4
+ import Transform from "./transform.js";
4
5
 
5
- export default class FlattenTransform extends FlowNode {
6
+ export default class FlattenTransform extends Transform {
6
7
  get behavior() {
7
8
  return BEHAVIOR_CLONES;
8
9
  }
@@ -11,7 +12,9 @@ export default class FlattenTransform extends FlowNode {
11
12
  * @param {import("../../spec/transform.js").FlattenParams} params
12
13
  */
13
14
  constructor(params) {
14
- super();
15
+ super(params);
16
+
17
+ this.params = params;
15
18
 
16
19
  const indexField = params.index;
17
20
 
@@ -3,7 +3,7 @@
3
3
  * coordinate of the gene body and a comma-delimited string of alternating
4
4
  * intron and exon lengths. A new datum is created for each exon.
5
5
  */
6
- export default class FlattenCompressedExonsTransform extends FlowNode {
6
+ export default class FlattenCompressedExonsTransform extends Transform {
7
7
  /**
8
8
  *
9
9
  * @param {import("../../spec/transform.js").FlattenCompressedExonsParams} params
@@ -15,5 +15,5 @@ export default class FlattenCompressedExonsTransform extends FlowNode {
15
15
  */
16
16
  handle: (datum: any) => void;
17
17
  }
18
- import FlowNode from "../flowNode.js";
18
+ import Transform from "./transform.js";
19
19
  //# sourceMappingURL=flattenCompressedExons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flattenCompressedExons.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/flattenCompressedExons.js"],"names":[],"mappings":"AAIA;;;;GAIG;AACH;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,4BAA4B,EAmCxE;IA1BG;;;OAGG;IACH,gBAFW,GAAG,UAuBb;CAER;qBAlDyC,gBAAgB"}
1
+ {"version":3,"file":"flattenCompressedExons.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/flattenCompressedExons.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,4BAA4B,EAmCxE;IA1BG;;;OAGG;IACH,gBAFW,GAAG,UAuBb;CAER;sBAlDqB,gBAAgB"}
@@ -1,13 +1,14 @@
1
1
  import { field } from "../../utils/field.js";
2
2
  import numberExtractor from "../../utils/numberExtractor.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
6
  /**
6
7
  * Flattens "run-length encoded" exons. The transforms inputs the start
7
8
  * coordinate of the gene body and a comma-delimited string of alternating
8
9
  * intron and exon lengths. A new datum is created for each exon.
9
10
  */
10
- export default class FlattenCompressedExonsTransform extends FlowNode {
11
+ export default class FlattenCompressedExonsTransform extends Transform {
11
12
  get behavior() {
12
13
  return BEHAVIOR_CLONES;
13
14
  }
@@ -17,7 +18,7 @@ export default class FlattenCompressedExonsTransform extends FlowNode {
17
18
  * @param {import("../../spec/transform.js").FlattenCompressedExonsParams} params
18
19
  */
19
20
  constructor(params) {
20
- super();
21
+ super(params);
21
22
 
22
23
  const exonsAccessor = field(params.exons ?? "exons");
23
24
  const startAccessor = field(params.start ?? "start");
@@ -1,4 +1,4 @@
1
- export default class FlattenDelimitedTransform extends FlowNode {
1
+ export default class FlattenDelimitedTransform extends Transform {
2
2
  /**
3
3
  * @param {import("../../spec/transform.js").FlattenDelimitedParams} params
4
4
  */
@@ -6,5 +6,5 @@ export default class FlattenDelimitedTransform extends FlowNode {
6
6
  /** @param {any[]} datum */
7
7
  handle: (datum: any[]) => void;
8
8
  }
9
- import FlowNode from "../flowNode.js";
9
+ import Transform from "./transform.js";
10
10
  //# sourceMappingURL=flattenDelimited.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flattenDelimited.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/flattenDelimited.js"],"names":[],"mappings":"AAIA;IAKI;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,sBAAsB,EAuClE;IAnBG,2BAA2B;IAC3B,gBADY,GAAG,EAAE,UAkBhB;CAER;qBAhDyC,gBAAgB"}
1
+ {"version":3,"file":"flattenDelimited.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/flattenDelimited.js"],"names":[],"mappings":"AAKA;IAKI;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,sBAAsB,EAuClE;IAnBG,2BAA2B;IAC3B,gBADY,GAAG,EAAE,UAkBhB;CAER;sBAhDqB,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_CLONES } from "../flowNode.js";
3
+ import { BEHAVIOR_CLONES } from "../flowNode.js";
4
+ import Transform from "./transform.js";
4
5
 
5
- export default class FlattenDelimitedTransform extends FlowNode {
6
+ export default class FlattenDelimitedTransform extends Transform {
6
7
  get behavior() {
7
8
  return BEHAVIOR_CLONES;
8
9
  }
@@ -11,7 +12,7 @@ export default class FlattenDelimitedTransform extends FlowNode {
11
12
  * @param {import("../../spec/transform.js").FlattenDelimitedParams} params
12
13
  */
13
14
  constructor(params) {
14
- super();
15
+ super(params);
15
16
 
16
17
  // TODO: Validate config. string elements, etc...
17
18
 
@@ -1,11 +1,12 @@
1
- export default class FlattenSequenceTransform extends FlowNode {
1
+ export default class FlattenSequenceTransform extends Transform {
2
2
  /**
3
3
  *
4
4
  * @param {import("../../spec/transform.js").FlattenSequenceParams} params
5
5
  */
6
6
  constructor(params: import("../../spec/transform.js").FlattenSequenceParams);
7
+ params: import("../../spec/transform.js").FlattenSequenceParams;
7
8
  /** @param {any[]} datum */
8
9
  handle: (datum: any[]) => void;
9
10
  }
10
- import FlowNode from "../flowNode.js";
11
+ import Transform from "./transform.js";
11
12
  //# sourceMappingURL=flattenSequence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flattenSequence.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/flattenSequence.js"],"names":[],"mappings":"AAGA;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,qBAAqB,EAuBjE;IAfG,2BAA2B;IAC3B,gBADY,GAAG,EAAE,UAchB;CAER;qBAjCyC,gBAAgB"}
1
+ {"version":3,"file":"flattenSequence.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/flattenSequence.js"],"names":[],"mappings":"AAIA;IAKI;;;OAGG;IACH,oBAFW,OAAO,yBAAyB,EAAE,qBAAqB,EAyBjE;IApBG,gEAAoB;IAKpB,2BAA2B;IAC3B,gBADY,GAAG,EAAE,UAchB;CAER;sBAnCqB,gBAAgB"}
@@ -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)