@genome-spy/core 0.68.0 → 0.69.1

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 (163) hide show
  1. package/dist/bundle/index.es.js +12119 -10681
  2. package/dist/bundle/index.js +119 -119
  3. package/dist/schema.json +6224 -6319
  4. package/dist/src/data/dataFlow.d.ts.map +1 -1
  5. package/dist/src/data/dataFlow.js +10 -0
  6. package/dist/src/data/flowNode.d.ts +25 -10
  7. package/dist/src/data/flowNode.d.ts.map +1 -1
  8. package/dist/src/data/flowNode.js +66 -13
  9. package/dist/src/data/flowTestUtils.d.ts +2 -2
  10. package/dist/src/data/flowTestUtils.d.ts.map +1 -1
  11. package/dist/src/data/flowTestUtils.js +5 -4
  12. package/dist/src/data/sources/dataSource.js +2 -2
  13. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  14. package/dist/src/data/sources/lazy/bigBedSource.js +11 -10
  15. package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
  16. package/dist/src/data/sources/lazy/bigWigSource.js +11 -10
  17. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +1 -1
  18. package/dist/src/data/sources/lazy/tabixSource.d.ts +0 -1
  19. package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
  20. package/dist/src/data/sources/lazy/tabixSource.js +41 -11
  21. package/dist/src/data/sources/sequenceSource.d.ts.map +1 -1
  22. package/dist/src/data/sources/sequenceSource.js +5 -3
  23. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  24. package/dist/src/data/sources/urlSource.js +7 -3
  25. package/dist/src/data/transforms/filter.d.ts +4 -4
  26. package/dist/src/data/transforms/filter.d.ts.map +1 -1
  27. package/dist/src/data/transforms/filter.js +13 -7
  28. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  29. package/dist/src/data/transforms/filterScoredLabels.js +11 -6
  30. package/dist/src/data/transforms/filterScoredLabels.test.d.ts +2 -0
  31. package/dist/src/data/transforms/filterScoredLabels.test.d.ts.map +1 -0
  32. package/dist/src/data/transforms/formula.d.ts +4 -4
  33. package/dist/src/data/transforms/formula.d.ts.map +1 -1
  34. package/dist/src/data/transforms/formula.js +12 -6
  35. package/dist/src/data/transforms/measureText.d.ts +2 -2
  36. package/dist/src/data/transforms/measureText.d.ts.map +1 -1
  37. package/dist/src/data/transforms/measureText.js +16 -12
  38. package/dist/src/data/transforms/transform.d.ts +2 -2
  39. package/dist/src/data/transforms/transform.d.ts.map +1 -1
  40. package/dist/src/data/transforms/transform.js +3 -3
  41. package/dist/src/encoder/accessor.d.ts +8 -4
  42. package/dist/src/encoder/accessor.d.ts.map +1 -1
  43. package/dist/src/encoder/accessor.js +10 -10
  44. package/dist/src/encoder/encoder.js +5 -5
  45. package/dist/src/genome/genome.d.ts +8 -0
  46. package/dist/src/genome/genome.d.ts.map +1 -1
  47. package/dist/src/genome/genome.js +16 -1
  48. package/dist/src/genomeSpy/inputBindingManager.js +1 -1
  49. package/dist/src/genomeSpy/interactionController.d.ts.map +1 -1
  50. package/dist/src/genomeSpy/interactionController.js +7 -1
  51. package/dist/src/genomeSpy.js +1 -1
  52. package/dist/src/gl/glslScaleGenerator.js +1 -1
  53. package/dist/src/marks/mark.d.ts.map +1 -1
  54. package/dist/src/marks/mark.js +22 -30
  55. package/dist/src/marks/point.d.ts.map +1 -1
  56. package/dist/src/marks/point.js +4 -6
  57. package/dist/src/paramRuntime/expressionCompiler.d.ts +7 -0
  58. package/dist/src/paramRuntime/expressionCompiler.d.ts.map +1 -0
  59. package/dist/src/paramRuntime/expressionCompiler.js +10 -0
  60. package/dist/src/paramRuntime/expressionRef.d.ts +20 -0
  61. package/dist/src/paramRuntime/expressionRef.d.ts.map +1 -0
  62. package/dist/src/paramRuntime/expressionRef.js +95 -0
  63. package/dist/src/paramRuntime/expressionRef.test.d.ts +2 -0
  64. package/dist/src/paramRuntime/expressionRef.test.d.ts.map +1 -0
  65. package/dist/src/paramRuntime/graphRuntime.d.ts +176 -0
  66. package/dist/src/paramRuntime/graphRuntime.d.ts.map +1 -0
  67. package/dist/src/paramRuntime/graphRuntime.js +628 -0
  68. package/dist/src/paramRuntime/graphRuntime.test.d.ts +2 -0
  69. package/dist/src/paramRuntime/graphRuntime.test.d.ts.map +1 -0
  70. package/dist/src/paramRuntime/index.d.ts +9 -0
  71. package/dist/src/paramRuntime/index.d.ts.map +1 -0
  72. package/dist/src/paramRuntime/index.js +8 -0
  73. package/dist/src/paramRuntime/lifecycleRegistry.d.ts +27 -0
  74. package/dist/src/paramRuntime/lifecycleRegistry.d.ts.map +1 -0
  75. package/dist/src/paramRuntime/lifecycleRegistry.js +54 -0
  76. package/dist/src/paramRuntime/paramRuntime.d.ts +165 -0
  77. package/dist/src/paramRuntime/paramRuntime.d.ts.map +1 -0
  78. package/dist/src/paramRuntime/paramRuntime.js +222 -0
  79. package/dist/src/paramRuntime/paramRuntime.test.d.ts +2 -0
  80. package/dist/src/paramRuntime/paramRuntime.test.d.ts.map +1 -0
  81. package/dist/src/paramRuntime/paramStore.d.ts +68 -0
  82. package/dist/src/paramRuntime/paramStore.d.ts.map +1 -0
  83. package/dist/src/paramRuntime/paramStore.js +148 -0
  84. package/dist/src/paramRuntime/paramStore.test.d.ts +2 -0
  85. package/dist/src/paramRuntime/paramStore.test.d.ts.map +1 -0
  86. package/dist/src/paramRuntime/paramUtils.d.ts +86 -0
  87. package/dist/src/paramRuntime/paramUtils.d.ts.map +1 -0
  88. package/dist/src/paramRuntime/paramUtils.js +272 -0
  89. package/dist/src/paramRuntime/selectionStore.d.ts +6 -0
  90. package/dist/src/paramRuntime/selectionStore.d.ts.map +1 -0
  91. package/dist/src/paramRuntime/selectionStore.js +13 -0
  92. package/dist/src/paramRuntime/types.d.ts +16 -0
  93. package/dist/src/paramRuntime/types.d.ts.map +1 -0
  94. package/dist/src/paramRuntime/types.js +25 -0
  95. package/dist/src/paramRuntime/viewParamRuntime.d.ts +164 -0
  96. package/dist/src/paramRuntime/viewParamRuntime.d.ts.map +1 -0
  97. package/dist/src/paramRuntime/viewParamRuntime.js +443 -0
  98. package/dist/src/scales/scaleInstanceManager.d.ts +6 -3
  99. package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -1
  100. package/dist/src/scales/scaleInstanceManager.js +17 -11
  101. package/dist/src/scales/scaleResolution.d.ts +1 -0
  102. package/dist/src/scales/scaleResolution.d.ts.map +1 -1
  103. package/dist/src/scales/scaleResolution.js +7 -1
  104. package/dist/src/selection/selection.js +1 -1
  105. package/dist/src/spec/coreSchemaRoot.d.ts +53 -0
  106. package/dist/src/spec/root.d.ts +1 -1
  107. package/dist/src/spec/view.d.ts +114 -33
  108. package/dist/src/tooltip/dataTooltipHandler.d.ts +1 -1
  109. package/dist/src/tooltip/dataTooltipHandler.js +23 -32
  110. package/dist/src/tooltip/dataTooltipHandler.test.d.ts +2 -0
  111. package/dist/src/tooltip/dataTooltipHandler.test.d.ts.map +1 -0
  112. package/dist/src/tooltip/flattenDatumRows.d.ts +13 -0
  113. package/dist/src/tooltip/flattenDatumRows.d.ts.map +1 -0
  114. package/dist/src/tooltip/flattenDatumRows.js +47 -0
  115. package/dist/src/tooltip/flattenDatumRows.test.d.ts +2 -0
  116. package/dist/src/tooltip/flattenDatumRows.test.d.ts.map +1 -0
  117. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts +1 -1
  118. package/dist/src/tooltip/refseqGeneTooltipHandler.js +7 -1
  119. package/dist/src/tooltip/tooltipContext.d.ts +13 -0
  120. package/dist/src/tooltip/tooltipContext.d.ts.map +1 -0
  121. package/dist/src/tooltip/tooltipContext.js +543 -0
  122. package/dist/src/tooltip/tooltipContext.test.d.ts +2 -0
  123. package/dist/src/tooltip/tooltipContext.test.d.ts.map +1 -0
  124. package/dist/src/tooltip/tooltipHandler.d.ts +40 -1
  125. package/dist/src/tooltip/tooltipHandler.d.ts.map +1 -1
  126. package/dist/src/tooltip/tooltipHandler.ts +62 -1
  127. package/dist/src/types/encoder.d.ts +1 -1
  128. package/dist/src/utils/inputBinding.d.ts +10 -2
  129. package/dist/src/utils/inputBinding.d.ts.map +1 -1
  130. package/dist/src/utils/inputBinding.js +12 -3
  131. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  132. package/dist/src/view/flowBuilder.js +12 -3
  133. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  134. package/dist/src/view/gridView/gridChild.js +8 -3
  135. package/dist/src/view/gridView/selectionRect.d.ts +6 -10
  136. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  137. package/dist/src/view/gridView/selectionRect.js +3 -20
  138. package/dist/src/view/layerView.d.ts.map +1 -1
  139. package/dist/src/view/layerView.js +4 -2
  140. package/dist/src/view/multiscale.d.ts +35 -0
  141. package/dist/src/view/multiscale.d.ts.map +1 -0
  142. package/dist/src/view/multiscale.js +233 -0
  143. package/dist/src/view/multiscale.test.d.ts +2 -0
  144. package/dist/src/view/multiscale.test.d.ts.map +1 -0
  145. package/dist/src/view/unitView.d.ts.map +1 -1
  146. package/dist/src/view/unitView.js +10 -4
  147. package/dist/src/view/view.d.ts +5 -4
  148. package/dist/src/view/view.d.ts.map +1 -1
  149. package/dist/src/view/view.js +223 -28
  150. package/dist/src/view/viewFactory.d.ts +0 -12
  151. package/dist/src/view/viewFactory.d.ts.map +1 -1
  152. package/dist/src/view/viewFactory.js +35 -24
  153. package/dist/src/view/viewParamRuntime.test.d.ts +2 -0
  154. package/dist/src/view/viewParamRuntime.test.d.ts.map +1 -0
  155. package/dist/src/view/viewSelectors.d.ts.map +1 -1
  156. package/dist/src/view/viewSelectors.js +8 -5
  157. package/package.json +3 -3
  158. package/dist/src/spec/sampleView.d.ts +0 -197
  159. package/dist/src/view/paramMediator.d.ts +0 -168
  160. package/dist/src/view/paramMediator.d.ts.map +0 -1
  161. package/dist/src/view/paramMediator.js +0 -545
  162. package/dist/src/view/paramMediator.test.d.ts +0 -2
  163. package/dist/src/view/paramMediator.test.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dataFlow.d.ts","sourceRoot":"","sources":["../../../src/data/dataFlow.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IAOI;;;;OAIG;IACH,uBAFU,OAAO,uCAAuC,EAAE,OAAO,CAE3C;IAYtB,gCAEC;IAED,qDAEC;IAED;;OAEG;IACH,gCAFW,QAAQ,CAAC,OAAO,yBAAyB,EAAE,OAAO,CAAC,QAI7D;IAED;;OAEG;IACH,0BAFW,OAAO,yBAAyB,EAAE,OAAO,QAInD;IAED;;OAEG;IACH,6BAFW,OAAO,yBAAyB,EAAE,OAAO,QAInD;IAED;;OAEG;IACH,wBAFW,OAAO,gBAAgB,EAAE,OAAO,QAI1C;IAED;;OAEG;IACH,2BAFW,OAAO,gBAAgB,EAAE,OAAO,QAK1C;IAED;;;;OAIG;IACH,gCAFW,OAAO,gBAAgB,EAAE,OAAO,QAiB1C;IAED;;OAEG;IACH,0BAFW,MAAM;;MA2BhB;;CAGJ;uBA/HsB,yBAAyB;wBACxB,0BAA0B"}
1
+ {"version":3,"file":"dataFlow.d.ts","sourceRoot":"","sources":["../../../src/data/dataFlow.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IAOI;;;;OAIG;IACH,uBAFU,OAAO,uCAAuC,EAAE,OAAO,CAE3C;IAYtB,gCAEC;IAED,qDAEC;IAED;;OAEG;IACH,gCAFW,QAAQ,CAAC,OAAO,yBAAyB,EAAE,OAAO,CAAC,QAI7D;IAED;;OAEG;IACH,0BAFW,OAAO,yBAAyB,EAAE,OAAO,QAInD;IAED;;OAEG;IACH,6BAFW,OAAO,yBAAyB,EAAE,OAAO,QAKnD;IAED;;OAEG;IACH,wBAFW,OAAO,gBAAgB,EAAE,OAAO,QAI1C;IAED;;OAEG;IACH,2BAFW,OAAO,gBAAgB,EAAE,OAAO,QAS1C;IAED;;;;OAIG;IACH,gCAFW,OAAO,gBAAgB,EAAE,OAAO,QAsB1C;IAED;;OAEG;IACH,0BAFW,MAAM;;MA2BhB;;CAGJ;uBAzIsB,yBAAyB;wBACxB,0BAA0B"}
@@ -55,6 +55,7 @@ export default class DataFlow {
55
55
  * @param {import("./sources/dataSource.js").default} dataSource
56
56
  */
57
57
  removeDataSource(dataSource) {
58
+ dataSource.disposeSubtree();
58
59
  this.#dataSources.delete(dataSource);
59
60
  }
60
61
 
@@ -69,6 +70,10 @@ export default class DataFlow {
69
70
  * @param {import("./collector.js").default} collector
70
71
  */
71
72
  removeCollector(collector) {
73
+ if (collector.parent) {
74
+ collector.parent.removeChild(collector);
75
+ }
76
+ collector.disposeSubtree();
72
77
  collector.observers.clear();
73
78
  this.#collectors.delete(collector);
74
79
  }
@@ -84,13 +89,18 @@ export default class DataFlow {
84
89
  parent.removeChild(collector);
85
90
  }
86
91
 
92
+ collector.disposeSubtree();
93
+
87
94
  while (parent && parent.children.length === 0) {
88
95
  const current = parent;
89
96
  parent = current.parent;
90
97
  if (parent) {
91
98
  parent.removeChild(current);
99
+ current.dispose();
92
100
  } else if (current instanceof DataSource) {
93
101
  this.removeDataSource(current);
102
+ } else {
103
+ current.dispose();
94
104
  }
95
105
  }
96
106
  }
@@ -24,7 +24,7 @@ export const BEHAVIOR_MODIFIES: number;
24
24
  */
25
25
  export const BEHAVIOR_COLLECTS: number;
26
26
  /**
27
- * @typedef {{paramMediator: import("../view/paramMediator.js").default}} ParamMediatorProvider
27
+ * @typedef {{paramRuntime?: import("../paramRuntime/viewParamRuntime.js").default}} ParamRuntimeProvider
28
28
  */
29
29
  /**
30
30
  * This is heavily inspired by Vega's and Vega-Lite's data flow system.
@@ -34,20 +34,20 @@ export const BEHAVIOR_COLLECTS: number;
34
34
  */
35
35
  export default class FlowNode {
36
36
  /**
37
- * @param {ParamMediatorProvider} [paramMediatorProvider]
37
+ * @param {ParamRuntimeProvider} [paramRuntimeProvider]
38
38
  */
39
- constructor(paramMediatorProvider?: ParamMediatorProvider);
39
+ constructor(paramRuntimeProvider?: ParamRuntimeProvider);
40
40
  stats: {
41
41
  count: number;
42
42
  /** @type {Datum} */
43
43
  first: Datum;
44
44
  };
45
45
  /**
46
- * An object that provides a paramMediator. (Most likely a View)
46
+ * An object that provides a paramRuntime. (Most likely a View)
47
47
  *
48
- * @type {ParamMediatorProvider}
48
+ * @type {ParamRuntimeProvider}
49
49
  */
50
- paramMediatorProvider: ParamMediatorProvider;
50
+ paramRuntimeProvider: ParamRuntimeProvider;
51
51
  get behavior(): number;
52
52
  /**
53
53
  * A human-readable label for the node. Used for debugging and logging.
@@ -61,6 +61,7 @@ export default class FlowNode {
61
61
  parent: FlowNode;
62
62
  /** True if all data have been processed */
63
63
  completed: boolean;
64
+ get disposed(): boolean;
64
65
  /**
65
66
  * Resets the node and all its descendants to their initial state, i.e., preparing
66
67
  * for a new batch of data.
@@ -137,6 +138,20 @@ export default class FlowNode {
137
138
  */
138
139
  handle(datum: Datum): void;
139
140
  complete(): void;
141
+ /**
142
+ * Register a disposer to be executed when this node is disposed.
143
+ *
144
+ * @param {() => void} disposer
145
+ */
146
+ registerDisposer(disposer: () => void): void;
147
+ /**
148
+ * Release resources owned by this flow node.
149
+ */
150
+ dispose(): void;
151
+ /**
152
+ * Dispose this flow node and all descendants in post-order.
153
+ */
154
+ disposeSubtree(): void;
140
155
  /**
141
156
  * Signals that a new batch of data will be propagated.
142
157
  *
@@ -144,10 +159,10 @@ export default class FlowNode {
144
159
  */
145
160
  beginBatch(flowBatch: import("../types/flowBatch.js").FlowBatch): void;
146
161
  /**
147
- * @returns {import("../view/paramMediator.js").default}
162
+ * @returns {import("../paramRuntime/viewParamRuntime.js").default}
148
163
  * @protected
149
164
  */
150
- protected get paramMediator(): import("../view/paramMediator.js").default;
165
+ protected get paramRuntime(): import("../paramRuntime/viewParamRuntime.js").default;
151
166
  /**
152
167
  * Repropagates the stored data. If this node has no stored data,
153
168
  * find the nearest ancestor that has and repropagate from there.
@@ -156,8 +171,8 @@ export default class FlowNode {
156
171
  protected repropagate(): void;
157
172
  #private;
158
173
  }
159
- export type ParamMediatorProvider = {
160
- paramMediator: import("../view/paramMediator.js").default;
174
+ export type ParamRuntimeProvider = {
175
+ paramRuntime?: import("../paramRuntime/viewParamRuntime.js").default;
161
176
  };
162
177
  /**
163
178
  * This is heavily inspired by Vega's and Vega-Lite's data flow system.
@@ -1 +1 @@
1
- {"version":3,"file":"flowNode.d.ts","sourceRoot":"","sources":["../../../src/data/flowNode.js"],"names":[],"mappings":"AAyVA;;;GAGG;AACH,uCAHW,OAAO,uBAAuB,EAAE,SAAS,GACvC,SAAS,IAAI,OAAO,uBAAuB,EAAE,SAAS,CAIlE;AAED;;;GAGG;AACH,wCAHW,OAAO,uBAAuB,EAAE,SAAS,GACvC,SAAS,IAAI,OAAO,uBAAuB,EAAE,UAAU,CAInE;AArWD;;;GAGG;AACH,qCAAsC;AAEtC;;;GAGG;AACH,uCAAwC;AAExC;;;GAGG;AACH,uCAAwC;AAExC;;GAEG;AAEH;;;;;GAKG;AACH;IA8BI;;OAEG;IACH,oCAFW,qBAAqB,EAa/B;IA3CD;;QAEI,oBAAoB;eAAT,KAAK;MAElB;IAKF;;;;OAIG;IACH,uBAFU,qBAAqB,CAEF;IAE7B,uBAEC;IAED;;;;OAIG;IACH,aAFa,MAAM,CAIlB;IAQG,yBAAyB;IACzB,UADW,QAAQ,EAAE,CACH;IAElB,uBAAuB;IACvB,QADW,QAAQ,CACI;IAEvB,2CAA2C;IAC3C,mBAAsB;IAG1B;;;OAGG;IACH,cASC;IAED;;;;;;OAMG;IACH,mBAEC;IAED;;;OAGG;IACH,uBAMC;IAgOD;;;OAGG;IACH,4BAHW,KAAK,QAKf;IA7MD;;;OAGG;IACH,kBAFW,QAAQ,QAIlB;IAED;;;OAGG;IACH,gBAFW,QAAQ,QAUlB;IAED;;OAEG;IACH,YAFW,QAAQ,QAQlB;IAED;;OAEG;IACH,6BAFW,QAAQ,QAMlB;IAED;;OAEG;IACH,0BAFW,QAAQ,QAalB;IAED;;;OAGG;IACH,mBAFW,QAAQ,QAWlB;IAED;;OAEG;IACH,eAiBC;IAED,kBAEC;IAED,uBAEC;IAED,sBAEC;IAED;;;;OAIG;IACH,eAFW,CAAC,CAAS,IAAQ,EAAR,QAAQ,KAAE,IAAI,CAAC,GAAG;QAAE,aAAa,CAAC,EAAE,CAAS,IAAQ,EAAR,QAAQ,KAAE,IAAI,CAAA;KAAC,QAchF;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,MAAM,CAWlB;IAED;;;OAGG;IACH,cAFW,KAAK,QAKf;IAED,iBAMC;IAED;;;;OAIG;IACH,sBAFW,OAAO,uBAAuB,EAAE,SAAS,QAMnD;IAED;;;OAGG;IACH,+BAHa,OAAO,0BAA0B,EAAE,OAAO,CAYtD;IAED;;;;OAIG;IACH,8BAQC;;CASJ;oCAlUY;IAAC,aAAa,EAAE,OAAO,0BAA0B,EAAE,OAAO,CAAA;CAAC;;;;oBAM3D,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;mBACnB,KAAK,EAAE"}
1
+ {"version":3,"file":"flowNode.d.ts","sourceRoot":"","sources":["../../../src/data/flowNode.js"],"names":[],"mappings":"AA8YA;;;GAGG;AACH,uCAHW,OAAO,uBAAuB,EAAE,SAAS,GACvC,SAAS,IAAI,OAAO,uBAAuB,EAAE,SAAS,CAIlE;AAED;;;GAGG;AACH,wCAHW,OAAO,uBAAuB,EAAE,SAAS,GACvC,SAAS,IAAI,OAAO,uBAAuB,EAAE,UAAU,CAInE;AA1ZD;;;GAGG;AACH,qCAAsC;AAEtC;;;GAGG;AACH,uCAAwC;AAExC;;;GAGG;AACH,uCAAwC;AAExC;;GAEG;AAEH;;;;;GAKG;AACH;IAoCI;;OAEG;IACH,mCAFW,oBAAoB,EAa9B;IAjDD;;QAEI,oBAAoB;eAAT,KAAK;MAElB;IAWF;;;;OAIG;IACH,sBAFU,oBAAoB,CAEF;IAE5B,uBAEC;IAED;;;;OAIG;IACH,aAFa,MAAM,CAIlB;IAQG,yBAAyB;IACzB,UADW,QAAQ,EAAE,CACH;IAElB,uBAAuB;IACvB,QADW,QAAQ,CACI;IAEvB,2CAA2C;IAC3C,mBAAsB;IAG1B,wBAEC;IAED;;;OAGG;IACH,cASC;IAED;;;;;;OAMG;IACH,mBAEC;IAED;;;OAGG;IACH,uBAMC;IA2QD;;;OAGG;IACH,4BAHW,KAAK,QAKf;IAxPD;;;OAGG;IACH,kBAFW,QAAQ,QAIlB;IAED;;;OAGG;IACH,gBAFW,QAAQ,QAUlB;IAED;;OAEG;IACH,YAFW,QAAQ,QAQlB;IAED;;OAEG;IACH,6BAFW,QAAQ,QAMlB;IAED;;OAEG;IACH,0BAFW,QAAQ,QAalB;IAED;;;OAGG;IACH,mBAFW,QAAQ,QAWlB;IAED;;OAEG;IACH,eAiBC;IAED,kBAEC;IAED,uBAEC;IAED,sBAEC;IAED;;;;OAIG;IACH,eAFW,CAAC,CAAS,IAAQ,EAAR,QAAQ,KAAE,IAAI,CAAC,GAAG;QAAE,aAAa,CAAC,EAAE,CAAS,IAAQ,EAAR,QAAQ,KAAE,IAAI,CAAA;KAAC,QAchF;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,MAAM,CAWlB;IAED;;;OAGG;IACH,cAFW,KAAK,QAKf;IAED,iBAMC;IAED;;;;OAIG;IACH,2BAFW,MAAM,IAAI,QAQpB;IAED;;OAEG;IACH,gBAWC;IAED;;OAEG;IACH,uBAOC;IAED;;;;OAIG;IACH,sBAFW,OAAO,uBAAuB,EAAE,SAAS,QAMnD;IAED;;;OAGG;IACH,8BAHa,OAAO,qCAAqC,EAAE,OAAO,CAcjE;IAED;;;;OAIG;IACH,8BAQC;;CASJ;mCAvXY;IAAC,YAAY,CAAC,EAAE,OAAO,qCAAqC,EAAE,OAAO,CAAA;CAAC;;;;oBAMtE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;mBACnB,KAAK,EAAE"}
@@ -19,7 +19,7 @@ export const BEHAVIOR_MODIFIES = 1 << 1;
19
19
  export const BEHAVIOR_COLLECTS = 1 << 2;
20
20
 
21
21
  /**
22
- * @typedef {{paramMediator: import("../view/paramMediator.js").default}} ParamMediatorProvider
22
+ * @typedef {{paramRuntime?: import("../paramRuntime/viewParamRuntime.js").default}} ParamRuntimeProvider
23
23
  */
24
24
 
25
25
  /**
@@ -38,12 +38,18 @@ export default class FlowNode {
38
38
  /** @type {boolean} */
39
39
  #initialized = false;
40
40
 
41
+ /** @type {boolean} */
42
+ #disposed = false;
43
+
44
+ /** @type {(() => void)[]} */
45
+ #disposers = [];
46
+
41
47
  /**
42
- * An object that provides a paramMediator. (Most likely a View)
48
+ * An object that provides a paramRuntime. (Most likely a View)
43
49
  *
44
- * @type {ParamMediatorProvider}
50
+ * @type {ParamRuntimeProvider}
45
51
  */
46
- paramMediatorProvider = null;
52
+ paramRuntimeProvider = null;
47
53
 
48
54
  get behavior() {
49
55
  return 0;
@@ -59,10 +65,10 @@ export default class FlowNode {
59
65
  }
60
66
 
61
67
  /**
62
- * @param {ParamMediatorProvider} [paramMediatorProvider]
68
+ * @param {ParamRuntimeProvider} [paramRuntimeProvider]
63
69
  */
64
- constructor(paramMediatorProvider) {
65
- this.paramMediatorProvider = paramMediatorProvider;
70
+ constructor(paramRuntimeProvider) {
71
+ this.paramRuntimeProvider = paramRuntimeProvider;
66
72
 
67
73
  /** @type {FlowNode[]} */
68
74
  this.children = [];
@@ -74,6 +80,10 @@ export default class FlowNode {
74
80
  this.completed = false;
75
81
  }
76
82
 
83
+ get disposed() {
84
+ return this.#disposed;
85
+ }
86
+
77
87
  /**
78
88
  * Resets the node and all its descendants to their initial state, i.e., preparing
79
89
  * for a new batch of data.
@@ -293,6 +303,47 @@ export default class FlowNode {
293
303
  }
294
304
  }
295
305
 
306
+ /**
307
+ * Register a disposer to be executed when this node is disposed.
308
+ *
309
+ * @param {() => void} disposer
310
+ */
311
+ registerDisposer(disposer) {
312
+ if (this.#disposed) {
313
+ disposer();
314
+ } else {
315
+ this.#disposers.push(disposer);
316
+ }
317
+ }
318
+
319
+ /**
320
+ * Release resources owned by this flow node.
321
+ */
322
+ dispose() {
323
+ if (this.#disposed) {
324
+ return;
325
+ }
326
+
327
+ this.#disposed = true;
328
+
329
+ for (const disposer of this.#disposers) {
330
+ disposer();
331
+ }
332
+ this.#disposers.length = 0;
333
+ }
334
+
335
+ /**
336
+ * Dispose this flow node and all descendants in post-order.
337
+ */
338
+ disposeSubtree() {
339
+ /** @type {(function(FlowNode): void) & { afterChildren?: (node: FlowNode) => void }} */
340
+ const visitor = () => undefined;
341
+ visitor.afterChildren = (node) => {
342
+ node.dispose();
343
+ };
344
+ this.visit(visitor);
345
+ }
346
+
296
347
  /**
297
348
  * Signals that a new batch of data will be propagated.
298
349
  *
@@ -305,18 +356,20 @@ export default class FlowNode {
305
356
  }
306
357
 
307
358
  /**
308
- * @returns {import("../view/paramMediator.js").default}
359
+ * @returns {import("../paramRuntime/viewParamRuntime.js").default}
309
360
  * @protected
310
361
  */
311
- get paramMediator() {
312
- if (this.paramMediatorProvider) {
313
- return this.paramMediatorProvider.paramMediator;
362
+ get paramRuntime() {
363
+ if (this.paramRuntimeProvider) {
364
+ if (this.paramRuntimeProvider.paramRuntime) {
365
+ return this.paramRuntimeProvider.paramRuntime;
366
+ }
314
367
  }
315
368
 
316
369
  if (!this.parent) {
317
- throw new Error("Cannot find paramMediator!");
370
+ throw new Error("Cannot find paramRuntime!");
318
371
  }
319
- return this.parent.paramMediator;
372
+ return this.parent.paramRuntime;
320
373
  }
321
374
 
322
375
  /**
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  *
3
- * @returns {import("./flowNode.js").ParamMediatorProvider}
3
+ * @returns {import("./flowNode.js").ParamRuntimeProvider}
4
4
  */
5
- export function makeParamMediatorProvider(): import("./flowNode.js").ParamMediatorProvider;
5
+ export function makeParamRuntimeProvider(): import("./flowNode.js").ParamRuntimeProvider;
6
6
  /**
7
7
  *
8
8
  * @param {import("./flowNode.js").default} flowNode
@@ -1 +1 @@
1
- {"version":3,"file":"flowTestUtils.d.ts","sourceRoot":"","sources":["../../../src/data/flowTestUtils.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH,6CAFa,OAAO,eAAe,EAAE,qBAAqB,CAMzD;AAED;;;;GAIG;AACH,sCAHW,OAAO,eAAe,EAAE,OAAO,QAC/B,GAAG,EAAE,mCAcf;AAED;;GAEG;AACH;IACI;;;OAGG;IACH,kBAFW,GAAG,EAAE,EAKf;IADG,YAAgB;IAGpB,iBAMC;CACJ;AAED;;GAEG;AACH;IACI;;;OAGG;IACH,eAFW,MAAM,EAWhB;CACJ;qBAvEoB,eAAe"}
1
+ {"version":3,"file":"flowTestUtils.d.ts","sourceRoot":"","sources":["../../../src/data/flowTestUtils.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH,4CAFa,OAAO,eAAe,EAAE,oBAAoB,CAOxD;AAED;;;;GAIG;AACH,sCAHW,OAAO,eAAe,EAAE,OAAO,QAC/B,GAAG,EAAE,mCAcf;AAED;;GAEG;AACH;IACI;;;OAGG;IACH,kBAFW,GAAG,EAAE,EAKf;IADG,YAAgB;IAGpB,iBAMC;CACJ;AAED;;GAEG;AACH;IACI;;;OAGG;IACH,eAFW,MAAM,EAWhB;CACJ;qBAxEoB,eAAe"}
@@ -1,14 +1,15 @@
1
- import ParamMediator from "../view/paramMediator.js";
1
+ import ViewParamRuntime from "../paramRuntime/viewParamRuntime.js";
2
2
  import Collector from "./collector.js";
3
3
  import FlowNode from "./flowNode.js";
4
4
 
5
5
  /**
6
6
  *
7
- * @returns {import("./flowNode.js").ParamMediatorProvider}
7
+ * @returns {import("./flowNode.js").ParamRuntimeProvider}
8
8
  */
9
- export function makeParamMediatorProvider() {
9
+ export function makeParamRuntimeProvider() {
10
+ const runtime = new ViewParamRuntime();
10
11
  return {
11
- paramMediator: new ParamMediator(),
12
+ paramRuntime: runtime,
12
13
  };
13
14
  }
14
15
 
@@ -40,8 +40,8 @@ export default class DataSource extends FlowNode {
40
40
  );
41
41
  }
42
42
 
43
- get paramMediator() {
44
- return this.view.paramMediator;
43
+ get paramRuntime() {
44
+ return this.view.paramRuntime;
45
45
  }
46
46
 
47
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"bigBedSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigBedSource.js"],"names":[],"mappings":"AAOA;IAUI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAmCjD;IA9CD,0CAA0C;IAC1C,QADW,OAAO,WAAW,EAAE,OAAO,CAC/B;IAEP,yCAAyC;IACzC,KADW,OAAO,WAAW,EAAE,MAAM,CACjC;IAEJ,4GAA4G;IAC5G,WADW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAC9F;IA8BN,mDAA6B;;CAwFpC;qCAhIoC,+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,EAoCjD;IA/CD,0CAA0C;IAC1C,QADW,OAAO,WAAW,EAAE,OAAO,CAC/B;IAEP,yCAAyC;IACzC,KADW,OAAO,WAAW,EAAE,MAAM,CACjC;IAEJ,4GAA4G;IAC5G,WADW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAC9F;IAmBN,mDAYC;;CAwFR;qCAjIoC,+BAA+B"}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  activateExprRefProps,
3
3
  withoutExprRef,
4
- } from "../../../view/paramMediator.js";
4
+ } from "../../../paramRuntime/paramUtils.js";
5
5
  import addBaseUrl from "../../../utils/addBaseUrl.js";
6
6
  import SingleAxisWindowedSource from "./singleAxisWindowedSource.js";
7
7
 
@@ -29,22 +29,23 @@ export default class BigBedSource extends SingleAxisWindowedSource {
29
29
  ...params,
30
30
  };
31
31
 
32
- const activatedParams = activateExprRefProps(
33
- view.paramMediator,
32
+ const channel = withoutExprRef(paramsWithDefaults.channel);
33
+ super(view, channel);
34
+
35
+ this.params = activateExprRefProps(
36
+ view.paramRuntime,
34
37
  paramsWithDefaults,
35
38
  (props) => {
36
- if (props.includes("url")) {
39
+ if (props.has("url")) {
37
40
  this.#initialize().then(() => this.reloadLastDomain());
38
- } else if (props.includes("windowSize")) {
41
+ } else if (props.has("windowSize")) {
39
42
  this.reloadLastDomain();
40
43
  }
41
- }
44
+ },
45
+ (disposer) => this.registerDisposer(disposer),
46
+ { batchMode: "whenPropagated" }
42
47
  );
43
48
 
44
- super(view, activatedParams.channel);
45
-
46
- this.params = activatedParams;
47
-
48
49
  if (!this.params.url) {
49
50
  throw new Error("No URL provided for BigBedSource");
50
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bigWigSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigWigSource.js"],"names":[],"mappings":"AAOA;;GAEG;AACH;IAOI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAmCjD;IATG,mDAA6B;IA+DjC;;;;OAIG;IACH,wBAFW,MAAM,EAAE,iBAqBlB;IAED;;;OAGG;IAEH,uBAJW,MAAM,EAAE,kBACR,MAAM,iBA2BhB;;CACJ;qCA/JoC,+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,EAoCjD;IArBG,mDAYC;IA+DL;;;;OAIG;IACH,wBAFW,MAAM,EAAE,iBAqBlB;IAED;;;OAGG;IAEH,uBAJW,MAAM,EAAE,kBACR,MAAM,iBA2BhB;;CACJ;qCAhKoC,+BAA+B"}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  activateExprRefProps,
3
3
  withoutExprRef,
4
- } from "../../../view/paramMediator.js";
4
+ } from "../../../paramRuntime/paramUtils.js";
5
5
  import addBaseUrl from "../../../utils/addBaseUrl.js";
6
6
  import SingleAxisWindowedSource from "./singleAxisWindowedSource.js";
7
7
 
@@ -29,22 +29,23 @@ export default class BigWigSource extends SingleAxisWindowedSource {
29
29
  ...params,
30
30
  };
31
31
 
32
- const activatedParams = activateExprRefProps(
33
- view.paramMediator,
32
+ const channel = withoutExprRef(paramsWithDefaults.channel);
33
+ super(view, channel);
34
+
35
+ this.params = activateExprRefProps(
36
+ view.paramRuntime,
34
37
  paramsWithDefaults,
35
38
  (props) => {
36
- if (props.includes("url")) {
39
+ if (props.has("url")) {
37
40
  this.#initialize().then(() => this.reloadLastDomain());
38
- } else if (props.includes("pixelsPerBin")) {
41
+ } else if (props.has("pixelsPerBin")) {
39
42
  this.reloadLastDomain();
40
43
  }
41
- }
44
+ },
45
+ (disposer) => this.registerDisposer(disposer),
46
+ { batchMode: "whenPropagated" }
42
47
  );
43
48
 
44
- super(view, activatedParams.channel);
45
-
46
- this.params = activatedParams;
47
-
48
49
  if (!this.params.url) {
49
50
  throw new Error("No URL provided for BigWigSource");
50
51
  }
@@ -1,4 +1,4 @@
1
- import { withoutExprRef } from "../../../view/paramMediator.js";
1
+ import { withoutExprRef } from "../../../paramRuntime/paramUtils.js";
2
2
  import { debounce } from "../../../utils/debounce.js";
3
3
  import SingleAxisLazySource from "./singleAxisLazySource.js";
4
4
 
@@ -9,7 +9,6 @@ export default class TabixSource<T> extends SingleAxisWindowedSource {
9
9
  */
10
10
  constructor(params: import("../../../spec/data.js").TabixData, view: import("../../../view/view.js").default);
11
11
  params: import("../../../spec/data.js").TabixData;
12
- initializedPromise: Promise<any>;
13
12
  /**
14
13
  * @param {string} header
15
14
  * @protected
@@ -1 +1 @@
1
- {"version":3,"file":"tabixSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/tabixSource.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,iCAHa,CAAC;IAOV;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,SAAS,QACzC,OAAO,uBAAuB,EAAE,OAAO,EA4DjD;IA7CG,kDAAgC;IAQhC,iCAoCE;IAqCN;;;OAGG;IACH,gCAHW,MAAM,iBAKhB;IAED;;;;;OAKG;IACH,gCAHW,MAAM,EAAE,GACN,CAAC,EAAE,CAKf;;CACJ;qCA9HoC,+BAA+B"}
1
+ {"version":3,"file":"tabixSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/tabixSource.js"],"names":[],"mappings":"AAOA;;;GAGG;AACH,iCAHa,CAAC;IAOV;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,SAAS,QACzC,OAAO,uBAAuB,EAAE,OAAO,EAyCjD;IAzBG,kDAgBC;IA0FL;;;OAGG;IACH,gCAHW,MAAM,iBAKhB;IAED;;;;;OAKG;IACH,gCAHW,MAAM,EAAE,GACN,CAAC,EAAE,CAKf;;CACJ;qCAxJoC,+BAA+B"}
@@ -1,3 +1,7 @@
1
+ import {
2
+ activateExprRefProps,
3
+ withoutExprRef,
4
+ } from "../../../paramRuntime/paramUtils.js";
1
5
  import addBaseUrl from "../../../utils/addBaseUrl.js";
2
6
  import SingleAxisWindowedSource from "./singleAxisWindowedSource.js";
3
7
 
@@ -24,16 +28,37 @@ export default class TabixSource extends SingleAxisWindowedSource {
24
28
  ...params,
25
29
  };
26
30
 
27
- super(view, paramsWithDefaults.channel);
31
+ const channel = withoutExprRef(paramsWithDefaults.channel);
32
+ super(view, channel);
28
33
 
29
- this.params = paramsWithDefaults;
34
+ this.params = activateExprRefProps(
35
+ view.paramRuntime,
36
+ paramsWithDefaults,
37
+ (props) => {
38
+ if (
39
+ props.has("url") ||
40
+ props.has("indexUrl") ||
41
+ props.has("addChrPrefix")
42
+ ) {
43
+ this.#initialize().then(() => this.reloadLastDomain());
44
+ } else if (props.has("windowSize")) {
45
+ this.reloadLastDomain();
46
+ }
47
+ },
48
+ (disposer) => this.registerDisposer(disposer),
49
+ { batchMode: "whenPropagated" }
50
+ );
30
51
 
31
- if (!this.params.url) {
52
+ if (!withoutExprRef(this.params.url)) {
32
53
  throw new Error("No URL provided for TabixSource");
33
54
  }
34
55
 
35
56
  this.setupDebouncing(this.params);
36
57
 
58
+ this.#initialize();
59
+ }
60
+
61
+ #initialize() {
37
62
  this.initializedPromise = new Promise((resolve, reject) => {
38
63
  Promise.all([
39
64
  import("@gmod/tabix"),
@@ -42,16 +67,19 @@ export default class TabixSource extends SingleAxisWindowedSource {
42
67
  const withBase = (/** @type {string} */ uri) =>
43
68
  new RemoteFile(addBaseUrl(uri, this.view.getBaseUrl()));
44
69
 
70
+ const url = withoutExprRef(this.params.url);
71
+ const indexUrl =
72
+ withoutExprRef(this.params.indexUrl) ?? url + ".tbi";
73
+ const addChrPrefix = withoutExprRef(this.params.addChrPrefix);
74
+
45
75
  this.#tbiIndex = new TabixIndexedFile({
46
- filehandle: withBase(this.params.url),
47
- tbiFilehandle: withBase(
48
- this.params.indexUrl ?? this.params.url + ".tbi"
49
- ),
76
+ filehandle: withBase(url),
77
+ tbiFilehandle: withBase(indexUrl),
50
78
  renameRefSeqs:
51
- this.params.addChrPrefix === true
79
+ addChrPrefix === true
52
80
  ? (refSeq) => "chr" + refSeq
53
- : this.params.addChrPrefix
54
- ? (refSeq) => this.params.addChrPrefix + refSeq
81
+ : addChrPrefix
82
+ ? (refSeq) => addChrPrefix + refSeq
55
83
  : undefined,
56
84
  });
57
85
 
@@ -65,12 +93,14 @@ export default class TabixSource extends SingleAxisWindowedSource {
65
93
  this.load();
66
94
  this.setLoadingStatus(
67
95
  "error",
68
- `${this.params.url}: ${e.message}`
96
+ `${withoutExprRef(this.params.url)}: ${e.message}`
69
97
  );
70
98
  reject(e);
71
99
  }
72
100
  });
73
101
  });
102
+
103
+ return this.initializedPromise;
74
104
  }
75
105
 
76
106
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sequenceSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/sequenceSource.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,0CAHW,OAAO,CAAC,OAAO,oBAAoB,EAAE,IAAI,CAAC,GACxC,IAAI,IAAI,OAAO,oBAAoB,EAAE,iBAAiB,CAIlE;AAED;IACI;;;;OAIG;IACH,oBAHW,OAAO,oBAAoB,EAAE,iBAAiB,QAC9C,OAAO,oBAAoB,EAAE,OAAO,EAiB9C;IAZG,sDAIC;IAcL,0BAcC;CAKJ;uBAxDsB,iBAAiB"}
1
+ {"version":3,"file":"sequenceSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/sequenceSource.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,0CAHW,OAAO,CAAC,OAAO,oBAAoB,EAAE,IAAI,CAAC,GACxC,IAAI,IAAI,OAAO,oBAAoB,EAAE,iBAAiB,CAIlE;AAED;IACI;;;;OAIG;IACH,oBAHW,OAAO,oBAAoB,EAAE,iBAAiB,QAC9C,OAAO,oBAAoB,EAAE,OAAO,EAmB9C;IAdG,sDAMC;IAcL,0BAcC;CAKJ;uBA1DsB,iBAAiB"}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  activateExprRefProps,
3
3
  withoutExprRef,
4
- } from "../../view/paramMediator.js";
4
+ } from "../../paramRuntime/paramUtils.js";
5
5
  import DataSource from "./dataSource.js";
6
6
 
7
7
  /**
@@ -22,9 +22,11 @@ export default class SequenceSource extends DataSource {
22
22
  super(view);
23
23
 
24
24
  this.sequence = activateExprRefProps(
25
- view.paramMediator,
25
+ view.paramRuntime,
26
26
  params.sequence,
27
- () => this.loadSynchronously()
27
+ () => this.loadSynchronously(),
28
+ (disposer) => this.registerDisposer(disposer),
29
+ { batchMode: "whenPropagated" }
28
30
  );
29
31
 
30
32
  if (!("start" in this.sequence)) {
@@ -1 +1 @@
1
- {"version":3,"file":"urlSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/urlSource.js"],"names":[],"mappings":"AASA;;;GAGG;AACH,gCAHW,OAAO,CAAC,OAAO,oBAAoB,EAAE,IAAI,CAAC,GACxC,IAAI,IAAI,OAAO,oBAAoB,EAAE,OAAO,CAIxD;AAED;IACI;;;OAGG;IACH,oBAHW,OAAO,oBAAoB,EAAE,OAAO,QACpC,OAAO,oBAAoB,EAAE,OAAO,EAU9C;IALG,6CAEC;IAED,gBAAiC;;CAuGxC;uBAlIsB,iBAAiB"}
1
+ {"version":3,"file":"urlSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/urlSource.js"],"names":[],"mappings":"AASA;;;GAGG;AACH,gCAHW,OAAO,CAAC,OAAO,oBAAoB,EAAE,IAAI,CAAC,GACxC,IAAI,IAAI,OAAO,oBAAoB,EAAE,OAAO,CAIxD;AAED;IACI;;;OAGG;IACH,oBAHW,OAAO,oBAAoB,EAAE,OAAO,QACpC,OAAO,oBAAoB,EAAE,OAAO,EAc9C;IATG,6CAMC;IAED,gBAAiC;;CAuGxC;uBAtIsB,iBAAiB"}
@@ -4,7 +4,7 @@ import DataSource from "./dataSource.js";
4
4
  import {
5
5
  activateExprRefProps,
6
6
  withoutExprRef,
7
- } from "../../view/paramMediator.js";
7
+ } from "../../paramRuntime/paramUtils.js";
8
8
  import { concatUrl } from "../../utils/url.js";
9
9
 
10
10
  /**
@@ -23,8 +23,12 @@ export default class UrlSource extends DataSource {
23
23
  constructor(params, view) {
24
24
  super(view);
25
25
 
26
- this.params = activateExprRefProps(view.paramMediator, params, () =>
27
- this.load()
26
+ this.params = activateExprRefProps(
27
+ view.paramRuntime,
28
+ params,
29
+ () => this.load(),
30
+ (disposer) => this.registerDisposer(disposer),
31
+ { batchMode: "whenPropagated" }
28
32
  );
29
33
 
30
34
  this.baseUrl = view?.getBaseUrl();
@@ -12,12 +12,12 @@ export default class FilterTransform extends Transform {
12
12
  /**
13
13
  *
14
14
  * @param {import("../../spec/transform.js").FilterParams} params
15
- * @param {import("../flowNode.js").ParamMediatorProvider} paramMediatorProvider
15
+ * @param {import("../flowNode.js").ParamRuntimeProvider} paramRuntimeProvider
16
16
  */
17
- constructor(params: import("../../spec/transform.js").FilterParams, paramMediatorProvider: import("../flowNode.js").ParamMediatorProvider);
17
+ constructor(params: import("../../spec/transform.js").FilterParams, paramRuntimeProvider: import("../flowNode.js").ParamRuntimeProvider);
18
18
  params: import("../../spec/transform.js").FilterParams;
19
- /** @type {import("../../view/paramMediator.js").ExprRefFunction} */
20
- predicate: import("../../view/paramMediator.js").ExprRefFunction;
19
+ /** @type {import("../../paramRuntime/types.js").ExprRefFunction} */
20
+ predicate: import("../../paramRuntime/types.js").ExprRefFunction;
21
21
  }
22
22
  import Transform from "./transform.js";
23
23
  //# sourceMappingURL=filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/filter.js"],"names":[],"mappings":"AAoDA;;;GAGG;AACH,2CAHW,OAAO,yBAAyB,EAAE,YAAY,GAC5C,MAAM,IAAI,OAAO,yBAAyB,EAAE,gBAAgB,CAIxE;AAED;;;GAGG;AACH,gDAHW,OAAO,yBAAyB,EAAE,YAAY,GAC5C,MAAM,IAAI,OAAO,yBAAyB,EAAE,qBAAqB,CAI7E;AA/DD;IACI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,YAAY,yBAC9C,OAAO,gBAAgB,EAAE,qBAAqB,EASxD;IAJG,uDAAoB;IAEpB,oEAAoE;IACpE,WADW,OAAO,6BAA6B,EAAE,eAAe,CACtC;CAmCjC;sBAjDqB,gBAAgB"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/filter.js"],"names":[],"mappings":"AA0DA;;;GAGG;AACH,2CAHW,OAAO,yBAAyB,EAAE,YAAY,GAC5C,MAAM,IAAI,OAAO,yBAAyB,EAAE,gBAAgB,CAIxE;AAED;;;GAGG;AACH,gDAHW,OAAO,yBAAyB,EAAE,YAAY,GAC5C,MAAM,IAAI,OAAO,yBAAyB,EAAE,qBAAqB,CAI7E;AArED;IACI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,YAAY,wBAC9C,OAAO,gBAAgB,EAAE,oBAAoB,EASvD;IAJG,uDAAoB;IAEpB,oEAAoE;IACpE,WADW,OAAO,6BAA6B,EAAE,eAAe,CACtC;CAyCjC;sBAvDqB,gBAAgB"}