@genome-spy/core 0.48.2 → 0.50.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 (244) hide show
  1. package/dist/bundle/index.es.js +7434 -7107
  2. package/dist/bundle/index.js +116 -103
  3. package/dist/schema.json +3975 -2819
  4. package/dist/src/data/collector.test.d.ts +2 -0
  5. package/dist/src/data/collector.test.d.ts.map +1 -0
  6. package/dist/src/data/dataFlow.test.d.ts +2 -0
  7. package/dist/src/data/dataFlow.test.d.ts.map +1 -0
  8. package/dist/src/data/flow.test.d.ts +2 -0
  9. package/dist/src/data/flow.test.d.ts.map +1 -0
  10. package/dist/src/data/flow.test.js +19 -14
  11. package/dist/src/data/flowNode.test.d.ts +2 -0
  12. package/dist/src/data/flowNode.test.d.ts.map +1 -0
  13. package/dist/src/data/flowOptimizer.test.d.ts +2 -0
  14. package/dist/src/data/flowOptimizer.test.d.ts.map +1 -0
  15. package/dist/src/data/flowOptimizer.test.js +9 -10
  16. package/dist/src/data/formats/fasta.test.d.ts +2 -0
  17. package/dist/src/data/formats/fasta.test.d.ts.map +1 -0
  18. package/dist/src/data/sources/inlineSource.test.d.ts +2 -0
  19. package/dist/src/data/sources/inlineSource.test.d.ts.map +1 -0
  20. package/dist/src/data/sources/inlineSource.test.js +23 -16
  21. package/dist/src/data/sources/sequenceSource.test.d.ts +2 -0
  22. package/dist/src/data/sources/sequenceSource.test.d.ts.map +1 -0
  23. package/dist/src/data/sources/sequenceSource.test.js +59 -42
  24. package/dist/src/data/transforms/clone.test.d.ts +2 -0
  25. package/dist/src/data/transforms/clone.test.d.ts.map +1 -0
  26. package/dist/src/data/transforms/coverage.test.d.ts +2 -0
  27. package/dist/src/data/transforms/coverage.test.d.ts.map +1 -0
  28. package/dist/src/data/transforms/coverage.test.js +1 -1
  29. package/dist/src/data/transforms/filter.d.ts +10 -0
  30. package/dist/src/data/transforms/filter.d.ts.map +1 -1
  31. package/dist/src/data/transforms/filter.js +30 -1
  32. package/dist/src/data/transforms/filter.test.d.ts +2 -0
  33. package/dist/src/data/transforms/filter.test.d.ts.map +1 -0
  34. package/dist/src/data/transforms/flatten.test.d.ts +2 -0
  35. package/dist/src/data/transforms/flatten.test.d.ts.map +1 -0
  36. package/dist/src/data/transforms/flatten.test.js +10 -7
  37. package/dist/src/data/transforms/flattenDelimited.test.d.ts +2 -0
  38. package/dist/src/data/transforms/flattenDelimited.test.d.ts.map +1 -0
  39. package/dist/src/data/transforms/flattenDelimited.test.js +16 -13
  40. package/dist/src/data/transforms/flattenSequence.test.d.ts +2 -0
  41. package/dist/src/data/transforms/flattenSequence.test.d.ts.map +1 -0
  42. package/dist/src/data/transforms/flattenSequence.test.js +1 -1
  43. package/dist/src/data/transforms/formula.test.d.ts +2 -0
  44. package/dist/src/data/transforms/formula.test.d.ts.map +1 -0
  45. package/dist/src/data/transforms/formula.test.js +1 -1
  46. package/dist/src/data/transforms/identifier.test.d.ts +2 -0
  47. package/dist/src/data/transforms/identifier.test.d.ts.map +1 -0
  48. package/dist/src/data/transforms/pileup.test.d.ts +2 -0
  49. package/dist/src/data/transforms/pileup.test.d.ts.map +1 -0
  50. package/dist/src/data/transforms/project.test.d.ts +2 -0
  51. package/dist/src/data/transforms/project.test.d.ts.map +1 -0
  52. package/dist/src/data/transforms/project.test.js +1 -1
  53. package/dist/src/data/transforms/regexExtract.test.d.ts +2 -0
  54. package/dist/src/data/transforms/regexExtract.test.d.ts.map +1 -0
  55. package/dist/src/data/transforms/regexExtract.test.js +6 -3
  56. package/dist/src/data/transforms/regexFold.test.d.ts +2 -0
  57. package/dist/src/data/transforms/regexFold.test.d.ts.map +1 -0
  58. package/dist/src/data/transforms/sample.test.d.ts +2 -0
  59. package/dist/src/data/transforms/sample.test.d.ts.map +1 -0
  60. package/dist/src/data/transforms/stack.test.d.ts +2 -0
  61. package/dist/src/data/transforms/stack.test.d.ts.map +1 -0
  62. package/dist/src/data/transforms/stack.test.js +8 -8
  63. package/dist/src/encoder/accessor.d.ts +17 -14
  64. package/dist/src/encoder/accessor.d.ts.map +1 -1
  65. package/dist/src/encoder/accessor.js +127 -56
  66. package/dist/src/encoder/accessor.test.d.ts +2 -0
  67. package/dist/src/encoder/accessor.test.d.ts.map +1 -0
  68. package/dist/src/encoder/accessor.test.js +145 -31
  69. package/dist/src/encoder/encoder.d.ts +26 -13
  70. package/dist/src/encoder/encoder.d.ts.map +1 -1
  71. package/dist/src/encoder/encoder.js +98 -114
  72. package/dist/src/encoder/encoder.test.d.ts +2 -0
  73. package/dist/src/encoder/encoder.test.d.ts.map +1 -0
  74. package/dist/src/encoder/encoder.test.js +85 -82
  75. package/dist/src/fonts/bmFontManager.d.ts.map +1 -1
  76. package/dist/src/fonts/bmFontManager.js +10 -4
  77. package/dist/src/genome/genome.test.d.ts +2 -0
  78. package/dist/src/genome/genome.test.d.ts.map +1 -0
  79. package/dist/src/genome/scaleIndex.test.d.ts +2 -0
  80. package/dist/src/genome/scaleIndex.test.d.ts.map +1 -0
  81. package/dist/src/genome/scaleLocus.test.d.ts +2 -0
  82. package/dist/src/genome/scaleLocus.test.d.ts.map +1 -0
  83. package/dist/src/genomeSpy.d.ts +3 -2
  84. package/dist/src/genomeSpy.d.ts.map +1 -1
  85. package/dist/src/genomeSpy.js +15 -6
  86. package/dist/src/gl/dataToVertices.d.ts +6 -8
  87. package/dist/src/gl/dataToVertices.d.ts.map +1 -1
  88. package/dist/src/gl/dataToVertices.js +42 -33
  89. package/dist/src/gl/glslScaleGenerator.d.ts +84 -15
  90. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  91. package/dist/src/gl/glslScaleGenerator.js +260 -73
  92. package/dist/src/gl/includes/common.glsl.js +1 -1
  93. package/dist/src/marks/link.common.glsl.js +1 -1
  94. package/dist/src/marks/link.d.ts +8 -1
  95. package/dist/src/marks/link.d.ts.map +1 -1
  96. package/dist/src/marks/link.fragment.glsl.js +1 -1
  97. package/dist/src/marks/link.js +47 -31
  98. package/dist/src/marks/link.vertex.glsl.js +1 -1
  99. package/dist/src/marks/mark.d.ts +24 -25
  100. package/dist/src/marks/mark.d.ts.map +1 -1
  101. package/dist/src/marks/mark.js +246 -118
  102. package/dist/src/marks/markUtils.d.ts +25 -0
  103. package/dist/src/marks/markUtils.d.ts.map +1 -1
  104. package/dist/src/marks/markUtils.js +41 -1
  105. package/dist/src/marks/point.common.glsl.js +1 -1
  106. package/dist/src/marks/point.d.ts +8 -1
  107. package/dist/src/marks/point.d.ts.map +1 -1
  108. package/dist/src/marks/point.js +34 -25
  109. package/dist/src/marks/point.vertex.glsl.js +1 -1
  110. package/dist/src/marks/rect.d.ts +8 -1
  111. package/dist/src/marks/rect.d.ts.map +1 -1
  112. package/dist/src/marks/rect.js +28 -23
  113. package/dist/src/marks/rule.d.ts +8 -1
  114. package/dist/src/marks/rule.d.ts.map +1 -1
  115. package/dist/src/marks/rule.js +23 -16
  116. package/dist/src/marks/text.d.ts +10 -1
  117. package/dist/src/marks/text.d.ts.map +1 -1
  118. package/dist/src/marks/text.fragment.glsl.js +1 -1
  119. package/dist/src/marks/text.js +53 -47
  120. package/dist/src/marks/text.vertex.glsl.js +1 -1
  121. package/dist/src/scale/scale.test.d.ts +2 -0
  122. package/dist/src/scale/scale.test.d.ts.map +1 -0
  123. package/dist/src/scale/scale.test.js +2 -0
  124. package/dist/src/scale/ticks.test.d.ts +2 -0
  125. package/dist/src/scale/ticks.test.d.ts.map +1 -0
  126. package/dist/src/scale/ticks.test.js +6 -0
  127. package/dist/src/selection/selection.d.ts +39 -0
  128. package/dist/src/selection/selection.d.ts.map +1 -0
  129. package/dist/src/selection/selection.js +78 -0
  130. package/dist/src/spec/channel.d.ts +150 -83
  131. package/dist/src/spec/mark.d.ts +133 -78
  132. package/dist/src/spec/parameter.d.ts +112 -3
  133. package/dist/src/spec/root.d.ts +0 -1
  134. package/dist/src/spec/transform.d.ts +19 -1
  135. package/dist/src/spec/view.d.ts +5 -10
  136. package/dist/src/tooltip/dataTooltipHandler.d.ts +1 -1
  137. package/dist/src/tooltip/dataTooltipHandler.d.ts.map +1 -1
  138. package/dist/src/tooltip/dataTooltipHandler.js +1 -1
  139. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts +1 -1
  140. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts.map +1 -1
  141. package/dist/src/types/encoder.d.ts +80 -26
  142. package/dist/src/types/rendering.d.ts +1 -0
  143. package/dist/src/types/selectionTypes.d.ts +44 -0
  144. package/dist/src/types/viewContext.d.ts +1 -4
  145. package/dist/src/utils/addBaseUrl.test.d.ts +2 -0
  146. package/dist/src/utils/addBaseUrl.test.d.ts.map +1 -0
  147. package/dist/src/utils/binnedIndex.test.d.ts +2 -0
  148. package/dist/src/utils/binnedIndex.test.d.ts.map +1 -0
  149. package/dist/src/utils/cloner.test.d.ts +2 -0
  150. package/dist/src/utils/cloner.test.d.ts.map +1 -0
  151. package/dist/src/utils/coalesce.test.d.ts +2 -0
  152. package/dist/src/utils/coalesce.test.d.ts.map +1 -0
  153. package/dist/src/utils/concatIterables.test.d.ts +2 -0
  154. package/dist/src/utils/concatIterables.test.d.ts.map +1 -0
  155. package/dist/src/utils/domainArray.test.d.ts +2 -0
  156. package/dist/src/utils/domainArray.test.d.ts.map +1 -0
  157. package/dist/src/utils/expression.d.ts +2 -2
  158. package/dist/src/utils/expression.d.ts.map +1 -1
  159. package/dist/src/utils/expression.js +11 -2
  160. package/dist/src/utils/indexer.test.d.ts +2 -0
  161. package/dist/src/utils/indexer.test.d.ts.map +1 -0
  162. package/dist/src/utils/inputBinding.d.ts.map +1 -1
  163. package/dist/src/utils/inputBinding.js +4 -0
  164. package/dist/src/utils/iterateNestedMaps.test.d.ts +2 -0
  165. package/dist/src/utils/iterateNestedMaps.test.d.ts.map +1 -0
  166. package/dist/src/utils/kWayMerge.test.d.ts +2 -0
  167. package/dist/src/utils/kWayMerge.test.d.ts.map +1 -0
  168. package/dist/src/utils/mergeObjects.test.d.ts +2 -0
  169. package/dist/src/utils/mergeObjects.test.d.ts.map +1 -0
  170. package/dist/src/utils/numberExtractor.test.d.ts +2 -0
  171. package/dist/src/utils/numberExtractor.test.d.ts.map +1 -0
  172. package/dist/src/utils/propertyCacher.test.d.ts +2 -0
  173. package/dist/src/utils/propertyCacher.test.d.ts.map +1 -0
  174. package/dist/src/utils/propertyCoalescer.test.d.ts +2 -0
  175. package/dist/src/utils/propertyCoalescer.test.d.ts.map +1 -0
  176. package/dist/src/utils/propertyCoalescer.test.js +3 -0
  177. package/dist/src/utils/radixSort.test.d.ts +2 -0
  178. package/dist/src/utils/radixSort.test.d.ts.map +1 -0
  179. package/dist/src/utils/reservationMap.test.d.ts +2 -0
  180. package/dist/src/utils/reservationMap.test.d.ts.map +1 -0
  181. package/dist/src/utils/ringBuffer.test.d.ts +2 -0
  182. package/dist/src/utils/ringBuffer.test.d.ts.map +1 -0
  183. package/dist/src/utils/topK.test.d.ts +2 -0
  184. package/dist/src/utils/topK.test.d.ts.map +1 -0
  185. package/dist/src/utils/trees.test.d.ts +2 -0
  186. package/dist/src/utils/trees.test.d.ts.map +1 -0
  187. package/dist/src/utils/trees.test.js +8 -3
  188. package/dist/src/utils/variableTools.test.d.ts +2 -0
  189. package/dist/src/utils/variableTools.test.d.ts.map +1 -0
  190. package/dist/src/view/axisResolution.d.ts +19 -6
  191. package/dist/src/view/axisResolution.d.ts.map +1 -1
  192. package/dist/src/view/axisResolution.js +16 -7
  193. package/dist/src/view/axisResolution.test.d.ts +2 -0
  194. package/dist/src/view/axisResolution.test.d.ts.map +1 -0
  195. package/dist/src/view/axisResolution.test.js +16 -11
  196. package/dist/src/view/axisView.js +2 -2
  197. package/dist/src/view/facetView.d.ts +1 -1
  198. package/dist/src/view/facetView.d.ts.map +1 -1
  199. package/dist/src/view/flowBuilder.d.ts +1 -1
  200. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  201. package/dist/src/view/flowBuilder.js +34 -5
  202. package/dist/src/view/flowBuilder.test.d.ts +2 -0
  203. package/dist/src/view/flowBuilder.test.d.ts.map +1 -0
  204. package/dist/src/view/flowBuilder.test.js +1 -1
  205. package/dist/src/view/gridView.d.ts +0 -6
  206. package/dist/src/view/gridView.d.ts.map +1 -1
  207. package/dist/src/view/gridView.js +1 -1
  208. package/dist/src/view/layerView.d.ts +0 -6
  209. package/dist/src/view/layerView.d.ts.map +1 -1
  210. package/dist/src/view/layout/flexLayout.test.d.ts +2 -0
  211. package/dist/src/view/layout/flexLayout.test.d.ts.map +1 -0
  212. package/dist/src/view/layout/grid.test.d.ts +2 -0
  213. package/dist/src/view/layout/grid.test.d.ts.map +1 -0
  214. package/dist/src/view/layout/rectangle.test.d.ts +2 -0
  215. package/dist/src/view/layout/rectangle.test.d.ts.map +1 -0
  216. package/dist/src/view/paramMediator.d.ts +39 -5
  217. package/dist/src/view/paramMediator.d.ts.map +1 -1
  218. package/dist/src/view/paramMediator.js +120 -9
  219. package/dist/src/view/paramMediator.test.d.ts +2 -0
  220. package/dist/src/view/paramMediator.test.d.ts.map +1 -0
  221. package/dist/src/view/paramMediator.test.js +37 -1
  222. package/dist/src/view/scaleResolution.d.ts +17 -15
  223. package/dist/src/view/scaleResolution.d.ts.map +1 -1
  224. package/dist/src/view/scaleResolution.js +70 -68
  225. package/dist/src/view/scaleResolution.test.d.ts +2 -0
  226. package/dist/src/view/scaleResolution.test.d.ts.map +1 -0
  227. package/dist/src/view/scaleResolution.test.js +2 -0
  228. package/dist/src/view/testUtils.d.ts.map +1 -1
  229. package/dist/src/view/testUtils.js +15 -3
  230. package/dist/src/view/unitView.d.ts +8 -20
  231. package/dist/src/view/unitView.d.ts.map +1 -1
  232. package/dist/src/view/unitView.js +100 -102
  233. package/dist/src/view/view.d.ts +1 -1
  234. package/dist/src/view/view.d.ts.map +1 -1
  235. package/dist/src/view/view.test.d.ts +2 -0
  236. package/dist/src/view/view.test.d.ts.map +1 -0
  237. package/dist/src/view/view.test.js +73 -55
  238. package/dist/src/view/viewFactory.test.d.ts +2 -0
  239. package/dist/src/view/viewFactory.test.d.ts.map +1 -0
  240. package/dist/src/view/viewFactory.test.js +2 -2
  241. package/dist/src/view/viewUtils.d.ts +1 -1
  242. package/dist/src/view/viewUtils.d.ts.map +1 -1
  243. package/dist/src/view/zoom.js +2 -2
  244. package/package.json +5 -2
@@ -6,8 +6,6 @@ import TextMark from "../marks/text.js";
6
6
 
7
7
  import ScaleResolution from "./scaleResolution.js";
8
8
  import {
9
- isSecondaryChannel,
10
- secondaryChannels,
11
9
  isPositionalChannel,
12
10
  isChannelDefWithScale,
13
11
  primaryPositionalChannels,
@@ -18,17 +16,25 @@ import {
18
16
  import createDomain from "../utils/domainArray.js";
19
17
  import AxisResolution from "./axisResolution.js";
20
18
  import View from "./view.js";
19
+ import { createSinglePointSelection } from "../selection/selection.js";
20
+ import { isString } from "vega-util";
21
+ import { UNIQUE_ID_KEY } from "../data/transforms/identifier.js";
21
22
 
22
23
  /**
23
24
  *
24
- * @type {Object.<string, typeof import("../marks/mark.js").default>}
25
+ * @type {Record<import("../spec/mark.js").MarkType, typeof import("../marks/mark.js").default>}
25
26
  * TODO: Find a proper place, make extendible
26
27
  */
27
28
  export const markTypes = {
29
+ // @ts-ignore TODO: fix
28
30
  point: PointMark,
31
+ // @ts-ignore
29
32
  rect: RectMark,
33
+ // @ts-ignore
30
34
  rule: RuleMark,
35
+ // @ts-ignore
31
36
  link: LinkMark,
37
+ // @ts-ignore
32
38
  text: TextMark,
33
39
  };
34
40
 
@@ -37,6 +43,7 @@ export default class UnitView extends View {
37
43
  * @typedef {import("../spec/channel.js").Channel} Channel
38
44
  * @typedef {import("../utils/domainArray.js").DomainArray} DomainArray
39
45
  * @typedef {import("../spec/view.js").ResolutionTarget} ResolutionTarget
46
+ * @typedef {((datum: import("../data/flowNode.js").Datum) => import("../spec/channel.js").Scalar) & { fieldDef: import("../spec/channel.js").FieldDef}} FieldAccessor
40
47
  *
41
48
  */
42
49
 
@@ -84,6 +91,52 @@ export default class UnitView extends View {
84
91
  );
85
92
 
86
93
  this.needsAxes = { x: true, y: true };
94
+
95
+ this.#setupPointSelection();
96
+ }
97
+
98
+ #setupPointSelection() {
99
+ for (const [name, param] of this.paramMediator.paramConfigs) {
100
+ if (!("select" in param)) {
101
+ continue;
102
+ }
103
+
104
+ const select = param.select;
105
+ const type = isString(select) ? select : select.type;
106
+ if (type === "point") {
107
+ // Handle projection-free point selections
108
+
109
+ const none = -1;
110
+ let lastId = none;
111
+
112
+ const setter = this.paramMediator.getSetter(name);
113
+
114
+ const getHoveredDatum = () => {
115
+ const h = this.context.getCurrentHover();
116
+ return h?.mark?.unitView === this ? h.datum : null;
117
+ };
118
+
119
+ const on =
120
+ !isString(select) && "on" in select ? select.on : "click";
121
+
122
+ this.addInteractionEventListener(
123
+ ["mouseover", "pointerover"].includes(on)
124
+ ? "mousemove"
125
+ : "click",
126
+ (rect, event) => {
127
+ const datum = getHoveredDatum();
128
+ const id = datum ? datum[UNIQUE_ID_KEY] : none;
129
+ if (id != lastId) {
130
+ lastId = id;
131
+ const selection = createSinglePointSelection(
132
+ getHoveredDatum()
133
+ );
134
+ setter(selection);
135
+ }
136
+ }
137
+ );
138
+ }
139
+ }
87
140
  }
88
141
 
89
142
  /**
@@ -115,6 +168,7 @@ export default class UnitView extends View {
115
168
  *
116
169
  * @param {ResolutionTarget} [type] If not specified, both scales and axes are resolved.
117
170
  */
171
+ // eslint-disable-next-line complexity
118
172
  resolve(type) {
119
173
  if (!type) {
120
174
  this.resolve("scale");
@@ -172,10 +226,11 @@ export default class UnitView extends View {
172
226
  targetChannel
173
227
  );
174
228
  }
175
- view.resolutions[type][targetChannel].pushUnitView(
176
- this,
177
- channel
178
- );
229
+ view.resolutions[type][targetChannel].addMember({
230
+ view: this,
231
+ channel,
232
+ channelDef,
233
+ });
179
234
  } else if (type == "scale" && isChannelWithScale(channel)) {
180
235
  if (!view.resolutions[type][targetChannel]) {
181
236
  const resolution = new ScaleResolution(targetChannel);
@@ -189,27 +244,36 @@ export default class UnitView extends View {
189
244
  );
190
245
  });
191
246
  }
192
- view.resolutions[type][targetChannel].pushUnitView(
193
- this,
194
- channel
195
- );
247
+
248
+ const dataDomainSource =
249
+ this.getLayoutAncestors()
250
+ // TODO: Should check until the resolved scale resolution
251
+ .some(
252
+ (view) => !view.options.contributesToScaleDomain
253
+ ) ||
254
+ (isChannelDefWithScale(channelDef) &&
255
+ channelDef.contributesToScaleDomain === false)
256
+ ? undefined
257
+ : this.extractDataDomain.bind(this);
258
+
259
+ view.resolutions[type][targetChannel].addMember({
260
+ view: this,
261
+ channel,
262
+ channelDef,
263
+ dataDomainSource,
264
+ });
196
265
  }
197
266
  }
198
267
  }
199
268
 
200
269
  /**
270
+ * Returns an accessor that accesses a field or an evaluated expression,
271
+ * if there is one.
201
272
  *
202
273
  * @param {Channel} channel
203
274
  */
204
- getAccessor(channel) {
205
- return this._cache("accessor/" + channel, () => {
206
- const encoding = this.mark.encoding; // Mark provides encodings with defaults and possible modifications
207
- if (encoding && encoding[channel]) {
208
- return this.context.accessorFactory.createAccessor(
209
- encoding[channel]
210
- );
211
- }
212
- });
275
+ getDataAccessor(channel) {
276
+ return this.mark.encoders[channel]?.dataAccessor;
213
277
  }
214
278
 
215
279
  /**
@@ -220,7 +284,7 @@ export default class UnitView extends View {
220
284
  */
221
285
  getFacetAccessor(whoIsAsking) {
222
286
  // TODO: Rewrite, call getFacetFields
223
- const sampleAccessor = this.getAccessor("sample");
287
+ const sampleAccessor = this.getDataAccessor("sample");
224
288
  if (sampleAccessor) {
225
289
  return sampleAccessor;
226
290
  }
@@ -235,48 +299,6 @@ export default class UnitView extends View {
235
299
  return this.context.dataFlow.findCollectorByKey(this);
236
300
  }
237
301
 
238
- /**
239
- * @param {Channel} channel A primary channel
240
- */
241
- #validateDomainQuery(channel) {
242
- if (isSecondaryChannel(channel)) {
243
- throw new Error(
244
- `getDomain(${channel}), must only be called for primary channels!`
245
- );
246
- }
247
-
248
- const channelDef = this.mark.encoding[channel];
249
- // TODO: Broken. Fix.
250
- if (!isChannelDefWithScale(channelDef)) {
251
- throw new Error("The channel has no scale, cannot get domain!");
252
- }
253
-
254
- return channelDef;
255
- }
256
-
257
- /**
258
- * Returns the domain of the specified channel of this domain/mark.
259
- *
260
- * @param {import("../spec/channel.js").ChannelWithScale} channel A primary channel
261
- * @returns {DomainArray}
262
- */
263
- getConfiguredDomain(channel) {
264
- const channelDef = this.#validateDomainQuery(channel);
265
-
266
- const specDomain =
267
- channelDef && channelDef.scale && channelDef.scale.domain;
268
- if (specDomain) {
269
- const scaleResolution = this.getScaleResolution(
270
- channelDef.resolutionChannel ?? channel
271
- );
272
- return createDomain(
273
- channelDef.type ?? "nominal",
274
- // Chrom/pos must be linearized first
275
- scaleResolution.fromComplexInterval(specDomain)
276
- );
277
- }
278
- }
279
-
280
302
  /**
281
303
  * Extracts the domain from the data.
282
304
  *
@@ -288,49 +310,25 @@ export default class UnitView extends View {
288
310
  * (with aggregate and extent).
289
311
  *
290
312
  * @param {Channel} channel
313
+ * @param {import("../spec/channel.js").Type} type
291
314
  * @returns {DomainArray}
292
315
  */
293
- extractDataDomain(channel) {
294
- const channelDef = this.#validateDomainQuery(channel);
295
- const type = channelDef.type ?? "nominal"; // TODO: Should check that this is a channel without scale
296
-
297
- /** @param {Channel} channel */
298
- const extract = (channel) => {
299
- /** @type {DomainArray} */
300
- let domain;
301
-
302
- const encodingSpec = this.mark.encoding[channel];
303
-
304
- if (encodingSpec) {
305
- const accessor =
306
- this.context.accessorFactory.createAccessor(encodingSpec);
307
- if (accessor) {
308
- domain = createDomain(type);
309
-
310
- if (accessor.constant) {
311
- domain.extend(accessor({}));
312
- } else {
313
- const collector = this.getCollector();
314
- if (collector?.completed) {
315
- collector.visitData((d) =>
316
- domain.extend(accessor(d))
317
- );
318
- }
316
+ extractDataDomain(channel, type) {
317
+ /** @type {DomainArray} */
318
+ let domain = createDomain(type);
319
+
320
+ (this.mark.encoders[channel]?.accessors ?? [])
321
+ .filter((a) => a.scaleChannel)
322
+ .forEach((accessor) => {
323
+ if (accessor.constant) {
324
+ domain.extend(accessor({}));
325
+ } else {
326
+ const collector = this.getCollector();
327
+ if (collector?.completed) {
328
+ collector.visitData((d) => domain.extend(accessor(d)));
319
329
  }
320
330
  }
321
- }
322
- return domain;
323
- };
324
-
325
- let domain = extract(channel);
326
-
327
- const secondaryChannel = secondaryChannels[channel];
328
- if (secondaryChannel) {
329
- const secondaryDomain = extract(secondaryChannel);
330
- if (secondaryDomain) {
331
- domain.extendAll(secondaryDomain);
332
- }
333
- }
331
+ });
334
332
 
335
333
  return domain;
336
334
  }
@@ -205,7 +205,7 @@ export default class View {
205
205
  * pass. The order is depth first, pre order.
206
206
  */
207
207
  onBeforeRender(): void;
208
- render(context: ViewRenderingContext, coords: import("./layout/rectangle.js").default, options?: import("../types/rendering.js").RenderingOptions): void;
208
+ render(context: import("./renderingContext/viewRenderingContext.js").default, coords: import("./layout/rectangle.js").default, options?: import("../types/rendering.js").RenderingOptions): void;
209
209
  /**
210
210
  * Returns the encodings specified in this view combined with the inherited
211
211
  * encodings. However, this does not contain any defaults or inferred/adjusted/fixed
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/view/view.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/view/view.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=view.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.test.d.ts","sourceRoot":"","sources":["../../../src/view/view.test.js"],"names":[],"mappings":""}
@@ -10,6 +10,7 @@ import LayerView from "./layerView.js";
10
10
 
11
11
  describe("Trivial creations and initializations", () => {
12
12
  test("Fails on empty spec", async () => {
13
+ // @ts-expect-error
13
14
  expect(create({}, View)).rejects.toThrow();
14
15
  });
15
16
 
@@ -23,7 +24,7 @@ describe("Trivial creations and initializations", () => {
23
24
  test("Parses a more comples spec", async () => {
24
25
  const view = await create(
25
26
  {
26
- concat: [
27
+ hconcat: [
27
28
  {
28
29
  layer: [{ mark: "point" }, { mark: "rect" }],
29
30
  },
@@ -35,26 +36,28 @@ describe("Trivial creations and initializations", () => {
35
36
 
36
37
  expect(view).toBeInstanceOf(ConcatView);
37
38
  expect(view.children[0]).toBeInstanceOf(LayerView);
39
+ // @ts-ignore
38
40
  expect(view.children[0].children[0]).toBeInstanceOf(UnitView);
41
+ // @ts-ignore
39
42
  expect(view.children[0].children[0].mark).toBeInstanceOf(PointMark);
40
43
  expect(view.children[1]).toBeInstanceOf(UnitView);
41
44
  expect(view.children[2]).toBeUndefined();
42
45
  });
43
46
 
44
- test("Parses and initializes a trivial spec", async () => {
45
- const spec = {
46
- data: { values: [1] },
47
- mark: "point",
48
- encoding: {
49
- x: { field: "data", type: "quantitative" },
50
- y: { field: "data", type: "quantitative" },
51
- },
52
- };
53
-
54
- expect(createAndInitialize(spec, View)).resolves.toBeInstanceOf(
55
- UnitView
56
- );
57
- });
47
+ test("Parses and initializes a trivial spec", () =>
48
+ expect(
49
+ createAndInitialize(
50
+ {
51
+ data: { values: [1] },
52
+ mark: "point",
53
+ encoding: {
54
+ x: { field: "data", type: "quantitative" },
55
+ y: { field: "data", type: "quantitative" },
56
+ },
57
+ },
58
+ View
59
+ )
60
+ ).resolves.toBeInstanceOf(UnitView));
58
61
  });
59
62
 
60
63
  describe("Test domain handling", () => {
@@ -66,6 +69,7 @@ describe("Test domain handling", () => {
66
69
  ],
67
70
  };
68
71
 
72
+ /** -- This should be moved to ScaleResolution's test
69
73
  test("Uses domain from the scale properties", () => {
70
74
  const spec = {
71
75
  data: dataSpec,
@@ -84,52 +88,65 @@ describe("Test domain handling", () => {
84
88
  expect(r(view.getConfiguredDomain("y"))).toEqual([0, 1000])
85
89
  );
86
90
  });
91
+ */
87
92
 
88
- test("Includes a constant in the data domain", () => {
89
- const spec = {
90
- data: dataSpec,
91
- mark: "point",
92
- encoding: {
93
- x: { datum: 123, type: "quantitative" },
94
- y: { field: "a", type: "quantitative" },
93
+ test("Includes a constant in the data domain", () =>
94
+ createAndInitialize(
95
+ {
96
+ data: dataSpec,
97
+ mark: "point",
98
+ encoding: {
99
+ x: { datum: 123, type: "quantitative" },
100
+ y: { field: "a", type: "quantitative" },
101
+ },
95
102
  },
96
- };
97
-
98
- return createAndInitialize(spec, UnitView).then((view) =>
99
- expect(r(view.extractDataDomain("x"))).toEqual([123, 123])
100
- );
101
- });
103
+ UnitView
104
+ ).then((view) =>
105
+ expect(r(view.extractDataDomain("x", "quantitative"))).toEqual([
106
+ 123, 123,
107
+ ])
108
+ ));
102
109
 
103
- test("Extracts domain from the data", () => {
104
- const spec = {
105
- data: dataSpec,
106
- mark: "point",
107
- encoding: {
108
- x: { field: "a", type: "quantitative" },
109
- y: { field: "a", type: "quantitative" },
110
+ test("Extracts domain from the data", () =>
111
+ createAndInitialize(
112
+ {
113
+ data: dataSpec,
114
+ mark: "point",
115
+ encoding: {
116
+ x: { field: "a", type: "quantitative" },
117
+ y: { field: "a", type: "quantitative" },
118
+ },
110
119
  },
111
- };
112
-
113
- return createAndInitialize(spec, UnitView).then((view) =>
114
- expect(r(view.extractDataDomain("y"))).toEqual([1, 3])
115
- );
116
- });
120
+ UnitView
121
+ ).then((view) =>
122
+ expect(r(view.extractDataDomain("y", "quantitative"))).toEqual([
123
+ 1, 3,
124
+ ])
125
+ ));
117
126
 
118
- test("Extracts domain from the data when a secondary channel is being used", () => {
119
- const spec = {
120
- data: dataSpec,
121
- mark: "rect",
122
- encoding: {
123
- x: { field: "a", type: "quantitative" },
124
- y: { field: "a", type: "quantitative" },
125
- y2: { field: "b", type: "quantitative" },
127
+ test("Extracts domain from conditional encoding", () =>
128
+ createAndInitialize(
129
+ {
130
+ params: [{ name: "p" }],
131
+ data: dataSpec,
132
+ mark: "point",
133
+ encoding: {
134
+ size: {
135
+ field: "a",
136
+ type: "quantitative",
137
+ condition: {
138
+ param: "p",
139
+ datum: 123,
140
+ },
141
+ },
142
+ },
126
143
  },
127
- };
128
-
129
- return createAndInitialize(spec, UnitView).then((view) =>
130
- expect(r(view.extractDataDomain("y"))).toEqual([1, 5])
131
- );
132
- });
144
+ UnitView
145
+ ).then((view) =>
146
+ expect(r(view.extractDataDomain("size", "quantitative"))).toEqual([
147
+ 1, 123,
148
+ ])
149
+ ));
133
150
  });
134
151
 
135
152
  describe("Utility methods", () => {
@@ -207,6 +224,7 @@ describe("Utility methods", () => {
207
224
  },
208
225
  LayerView
209
226
  ).then((view) =>
227
+ // @ts-ignore
210
228
  expect(view.children[0].children[0].getBaseUrl()).toEqual(
211
229
  "https://site.com/blaa"
212
230
  )
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=viewFactory.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewFactory.test.d.ts","sourceRoot":"","sources":["../../../src/view/viewFactory.test.js"],"names":[],"mappings":""}
@@ -11,7 +11,7 @@ test("isViewSpec", () => {
11
11
  expect(factory.isViewSpec({ layer: [] })).toBeTruthy();
12
12
  expect(factory.isViewSpec({ hconcat: [] })).toBeTruthy();
13
13
  expect(factory.isViewSpec({ vconcat: [] })).toBeTruthy();
14
- expect(factory.isViewSpec({ concat: [] })).toBeTruthy();
14
+ expect(factory.isViewSpec({ concat: [], columns: 1 })).toBeTruthy();
15
15
 
16
16
  expect(() => factory.isViewSpec({ mark: "rect", layer: [] })).toThrow();
17
17
  });
@@ -20,6 +20,6 @@ test("Throws if importing is not allowed", () => {
20
20
  const factory = new ViewFactory({ allowImport: false });
21
21
 
22
22
  expect(() =>
23
- factory.createOrImportView({ import: { url: "" } })
23
+ factory.createOrImportView({ import: { url: "" } }, undefined)
24
24
  ).rejects.toThrow();
25
25
  });
@@ -14,7 +14,7 @@ export function isFacetMapping(def: import("../spec/channel.js").FacetFieldDef |
14
14
  * Returns all marks in the order (DFS) they are rendered
15
15
  * @param {View} root
16
16
  */
17
- export function getMarks(root: View): import("../marks/mark.js").default[];
17
+ export function getMarks(root: View): import("../marks/mark.js").default<import("../spec/mark.js").MarkProps>[];
18
18
  /**
19
19
  * Returns the nodes of the view hierarchy in depth-first order.
20
20
  *
@@ -1 +1 @@
1
- {"version":3,"file":"viewUtils.d.ts","sourceRoot":"","sources":["../../../src/view/viewUtils.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,qCAHW,OAAO,oBAAoB,EAAE,UAAU,GAAG,OAAO,iBAAiB,EAAE,YAAY,yBAK1F;AAED;;;;GAIG;AACH,oCAHW,OAAO,oBAAoB,EAAE,aAAa,GAAG,OAAO,iBAAiB,EAAE,YAAY,wBAQ7F;AAED;;;GAGG;AACH,+BAFW,IAAI,wCAMd;AAED;;;;GAIG;AACH,wCAFW,IAAI,UASd;AAED;;GAEG;AACH,kDAFW,IAAI,QAiBd;AAED;;;;;;;GAOG;AACH,4CAFW,IAAI,QAUd;AAED;;;;GAIG;AACH,qCAJW,IAAI,iBACJ,OAAO,qBAAqB,EAAE,OAAO,CAAC,IAAI,CAAC,wDAcrD;AAED;;;GAGG;AACH,wCAFW,IAAI;UAGO,QAAQ;aAAW,OAAO,oBAAoB,EAAE,OAAO;WAAS,OAAO,oBAAoB,EAAE,KAAK;UAAQ,OAAO,oBAAoB,EAAE,IAAI;IAqBhK;AAED;;;;;GAKG;AACH,2CALW,OAAO,iBAAiB,EAAE,UAAU,WACpC,MAAM,eACN,OAAO,yBAAyB,EAAE,OAAO,GACvC,QAAQ,OAAO,iBAAiB,EAAE,QAAQ,CAAC,CA6BvD;AAED;;GAEG;AACH,gDAFoB,IAAI,QAAE,IAAI,EAAE,KAAE,IAAI,+BAkBrC;AAED;;;;;;GAMG;AACH,4CAJW,IAAI,QACJ,MAAM,GACJ,IAAI,EAAE,CAalB;AAED;;;GAGG;AACH,0CAFW,IAAI,eAqBd;AAOD;;GAEG;AACH,gDAFW,IAAI,mDAId;AAED;;GAEG;AACH,kDAFW,OAAO,wBAAwB,EAAE,cAAc;;;EAczD;AAxBM,uCAFI,MAAM,WAE0D;iBA/O9B,WAAW;qBAFnC,eAAe"}
1
+ {"version":3,"file":"viewUtils.d.ts","sourceRoot":"","sources":["../../../src/view/viewUtils.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,qCAHW,OAAO,oBAAoB,EAAE,UAAU,GAAG,OAAO,iBAAiB,EAAE,YAAY,yBAK1F;AAED;;;;GAIG;AACH,oCAHW,OAAO,oBAAoB,EAAE,aAAa,GAAG,OAAO,iBAAiB,EAAE,YAAY,wBAQ7F;AAED;;;GAGG;AACH,+BAFW,IAAI,6EAMd;AAED;;;;GAIG;AACH,wCAFW,IAAI,UASd;AAED;;GAEG;AACH,kDAFW,IAAI,QAiBd;AAED;;;;;;;GAOG;AACH,4CAFW,IAAI,QAUd;AAED;;;;GAIG;AACH,qCAJW,IAAI,iBACJ,OAAO,qBAAqB,EAAE,OAAO,CAAC,IAAI,CAAC,wDAcrD;AAED;;;GAGG;AACH,wCAFW,IAAI;UAGO,QAAQ;aAAW,OAAO,oBAAoB,EAAE,OAAO;WAAS,OAAO,oBAAoB,EAAE,KAAK;UAAQ,OAAO,oBAAoB,EAAE,IAAI;IAqBhK;AAED;;;;;GAKG;AACH,2CALW,OAAO,iBAAiB,EAAE,UAAU,WACpC,MAAM,eACN,OAAO,yBAAyB,EAAE,OAAO,GACvC,QAAQ,OAAO,iBAAiB,EAAE,QAAQ,CAAC,CA6BvD;AAED;;GAEG;AACH,gDAFoB,IAAI,QAAE,IAAI,EAAE,KAAE,IAAI,+BAkBrC;AAED;;;;;;GAMG;AACH,4CAJW,IAAI,QACJ,MAAM,GACJ,IAAI,EAAE,CAalB;AAED;;;GAGG;AACH,0CAFW,IAAI,eAqBd;AAOD;;GAEG;AACH,gDAFW,IAAI,mDAId;AAED;;GAEG;AACH,kDAFW,OAAO,wBAAwB,EAAE,cAAc;;;EAczD;AAxBM,uCAFI,MAAM,WAE0D;iBA/O9B,WAAW;qBAFnC,eAAe"}
@@ -71,10 +71,10 @@ export function interactionToZoom(event, coords, handleZoom, hover, animator) {
71
71
 
72
72
  if (hover) {
73
73
  const e = hover.mark.encoders;
74
- if (e.x && !e.x2 && !e.x.constantValue) {
74
+ if (e.x && !e.x2 && !e.x.constant) {
75
75
  x = +e.x(hover.datum) * coords.width + coords.x;
76
76
  }
77
- if (e.y && !e.y2 && !e.y.constantValue) {
77
+ if (e.y && !e.y2 && !e.y.constant) {
78
78
  y = (1 - +e.y(hover.datum)) * coords.height + coords.y;
79
79
  }
80
80
  }
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "contributors": [],
9
9
  "license": "MIT",
10
- "version": "0.48.2",
10
+ "version": "0.50.0",
11
11
  "jsdelivr": "dist/bundle/index.js",
12
12
  "unpkg": "dist/bundle/index.js",
13
13
  "browser": "dist/bundle/index.js",
@@ -64,5 +64,8 @@
64
64
  "vega-scale": "^7.3.1",
65
65
  "vega-util": "^1.17.2"
66
66
  },
67
- "gitHead": "f2817f82263b92e453356083f2d770b8b236f77a"
67
+ "devDependencies": {
68
+ "@types/long": "^4.0.1"
69
+ },
70
+ "gitHead": "39de1ffdcfdaefe9f34a4d6e092378ccffd267c9"
68
71
  }