@genome-spy/core 0.65.0 → 0.66.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 (232) hide show
  1. package/dist/bundle/browser-BRemItdO.js +138 -0
  2. package/dist/bundle/{index-CD7FLu9x.js → index-BatuyGAI.js} +23 -21
  3. package/dist/bundle/{index-C0llXMqm.js → index-ByuE8dvu.js} +140 -88
  4. package/dist/bundle/index-Cq3QFUxX.js +1781 -0
  5. package/dist/bundle/index-D28m8tSW.js +1607 -0
  6. package/dist/bundle/index-DbJ0oeYM.js +631 -0
  7. package/dist/bundle/index.es.js +17587 -16593
  8. package/dist/bundle/index.js +214 -212
  9. package/dist/bundle/{inflate-DRgHi_KK.js → inflate-GtwLkvSP.js} +222 -224
  10. package/dist/bundle/unzip-NywezaRR.js +1492 -0
  11. package/dist/schema.json +13 -3
  12. package/dist/src/config/scaleDefaults.d.ts +8 -0
  13. package/dist/src/config/scaleDefaults.d.ts.map +1 -0
  14. package/dist/src/config/scaleDefaults.js +45 -0
  15. package/dist/src/data/flowInit.js +2 -2
  16. package/dist/src/data/sources/lazy/axisTickSource.js +1 -1
  17. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +1 -1
  18. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  19. package/dist/src/data/sources/lazy/singleAxisLazySource.js +10 -3
  20. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  21. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +5 -1
  22. package/dist/src/data/transforms/filterScoredLabels.d.ts +1 -1
  23. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  24. package/dist/src/data/transforms/filterScoredLabels.js +1 -1
  25. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts.map +1 -1
  26. package/dist/src/data/transforms/linearizeGenomicCoordinate.js +2 -1
  27. package/dist/src/encoder/encoder.d.ts +1 -1
  28. package/dist/src/encoder/encoder.d.ts.map +1 -1
  29. package/dist/src/encoder/encoder.js +1 -1
  30. package/dist/src/genome/scaleLocus.d.ts +39 -0
  31. package/dist/src/genome/scaleLocus.d.ts.map +1 -1
  32. package/dist/src/genome/scaleLocus.js +76 -0
  33. package/dist/src/genomeSpy/canvasExport.d.ts +19 -0
  34. package/dist/src/genomeSpy/canvasExport.d.ts.map +1 -0
  35. package/dist/src/genomeSpy/canvasExport.js +66 -0
  36. package/dist/src/genomeSpy/containerUi.d.ts +17 -0
  37. package/dist/src/genomeSpy/containerUi.d.ts.map +1 -0
  38. package/dist/src/genomeSpy/containerUi.js +78 -0
  39. package/dist/src/genomeSpy/eventListenerRegistry.d.ts +19 -0
  40. package/dist/src/genomeSpy/eventListenerRegistry.d.ts.map +1 -0
  41. package/dist/src/genomeSpy/eventListenerRegistry.js +38 -0
  42. package/dist/src/genomeSpy/inputBindingManager.d.ts +14 -0
  43. package/dist/src/genomeSpy/inputBindingManager.d.ts.map +1 -0
  44. package/dist/src/genomeSpy/inputBindingManager.js +63 -0
  45. package/dist/src/genomeSpy/interactionController.d.ts +40 -0
  46. package/dist/src/genomeSpy/interactionController.d.ts.map +1 -0
  47. package/dist/src/genomeSpy/interactionController.js +371 -0
  48. package/dist/src/genomeSpy/keyboardListenerManager.d.ts +10 -0
  49. package/dist/src/genomeSpy/keyboardListenerManager.d.ts.map +1 -0
  50. package/dist/src/genomeSpy/keyboardListenerManager.js +31 -0
  51. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts +15 -0
  52. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts.map +1 -0
  53. package/dist/src/genomeSpy/loadingIndicatorManager.js +92 -0
  54. package/dist/src/genomeSpy/renderCoordinator.d.ts +22 -0
  55. package/dist/src/genomeSpy/renderCoordinator.d.ts.map +1 -0
  56. package/dist/src/genomeSpy/renderCoordinator.js +118 -0
  57. package/dist/src/genomeSpy/viewContextFactory.d.ts +18 -0
  58. package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -0
  59. package/dist/src/genomeSpy/viewContextFactory.js +79 -0
  60. package/dist/src/genomeSpy/viewDataInit.d.ts +12 -0
  61. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -0
  62. package/dist/src/genomeSpy/viewDataInit.js +41 -0
  63. package/dist/src/genomeSpy/viewHierarchyConfig.d.ts +14 -0
  64. package/dist/src/genomeSpy/viewHierarchyConfig.d.ts.map +1 -0
  65. package/dist/src/genomeSpy/viewHierarchyConfig.js +24 -0
  66. package/dist/src/genomeSpy/viewHighlight.d.ts +5 -0
  67. package/dist/src/genomeSpy/viewHighlight.d.ts.map +1 -0
  68. package/dist/src/genomeSpy/viewHighlight.js +30 -0
  69. package/dist/src/genomeSpy.d.ts +16 -71
  70. package/dist/src/genomeSpy.d.ts.map +1 -1
  71. package/dist/src/genomeSpy.js +179 -745
  72. package/dist/src/gl/glslScaleGenerator.d.ts +1 -1
  73. package/dist/src/gl/webGLHelper.d.ts +2 -2
  74. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  75. package/dist/src/gl/webGLHelper.js +4 -4
  76. package/dist/src/index.d.ts.map +1 -1
  77. package/dist/src/index.js +2 -12
  78. package/dist/src/marks/mark.d.ts.map +1 -1
  79. package/dist/src/marks/mark.js +4 -2
  80. package/dist/src/{view → scales}/axisResolution.d.ts +9 -16
  81. package/dist/src/scales/axisResolution.d.ts.map +1 -0
  82. package/dist/src/{view → scales}/axisResolution.js +29 -18
  83. package/dist/src/scales/axisResolution.test.d.ts.map +1 -0
  84. package/dist/src/scales/scaleDomainAggregator.d.ts +57 -0
  85. package/dist/src/scales/scaleDomainAggregator.d.ts.map +1 -0
  86. package/dist/src/scales/scaleDomainAggregator.js +162 -0
  87. package/dist/src/scales/scaleDomainAggregator.test.d.ts +2 -0
  88. package/dist/src/scales/scaleDomainAggregator.test.d.ts.map +1 -0
  89. package/dist/src/scales/scaleInstanceManager.d.ts +40 -0
  90. package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -0
  91. package/dist/src/scales/scaleInstanceManager.js +313 -0
  92. package/dist/src/scales/scaleInstanceManager.test.d.ts +2 -0
  93. package/dist/src/scales/scaleInstanceManager.test.d.ts.map +1 -0
  94. package/dist/src/scales/scaleInteractionController.d.ts +73 -0
  95. package/dist/src/scales/scaleInteractionController.d.ts.map +1 -0
  96. package/dist/src/scales/scaleInteractionController.js +336 -0
  97. package/dist/src/scales/scaleInteractionController.test.d.ts +2 -0
  98. package/dist/src/scales/scaleInteractionController.test.d.ts.map +1 -0
  99. package/dist/src/scales/scalePropsResolver.d.ts +23 -0
  100. package/dist/src/scales/scalePropsResolver.d.ts.map +1 -0
  101. package/dist/src/scales/scalePropsResolver.js +74 -0
  102. package/dist/src/{view → scales}/scaleResolution.d.ts +52 -35
  103. package/dist/src/scales/scaleResolution.d.ts.map +1 -0
  104. package/dist/src/scales/scaleResolution.js +658 -0
  105. package/dist/src/scales/scaleResolution.test.d.ts.map +1 -0
  106. package/dist/src/scales/scaleResolutionConstants.d.ts +6 -0
  107. package/dist/src/scales/scaleResolutionConstants.d.ts.map +1 -0
  108. package/dist/src/scales/scaleResolutionConstants.js +5 -0
  109. package/dist/src/scales/scaleRules.d.ts +16 -0
  110. package/dist/src/scales/scaleRules.d.ts.map +1 -0
  111. package/dist/src/scales/scaleRules.js +103 -0
  112. package/dist/src/scales/scaleRules.test.d.ts +2 -0
  113. package/dist/src/scales/scaleRules.test.d.ts.map +1 -0
  114. package/dist/src/spec/channel.d.ts +13 -18
  115. package/dist/src/spec/scale.d.ts +6 -0
  116. package/dist/src/types/embedApi.d.ts +5 -0
  117. package/dist/src/types/scaleResolutionApi.d.ts +1 -1
  118. package/dist/src/view/concatView.d.ts +18 -0
  119. package/dist/src/view/concatView.d.ts.map +1 -1
  120. package/dist/src/view/concatView.js +73 -0
  121. package/dist/src/view/concatView.test.d.ts +2 -0
  122. package/dist/src/view/concatView.test.d.ts.map +1 -0
  123. package/dist/src/view/containerMutationHelper.d.ts +74 -0
  124. package/dist/src/view/containerMutationHelper.d.ts.map +1 -0
  125. package/dist/src/view/containerMutationHelper.js +114 -0
  126. package/dist/src/view/containerView.d.ts +0 -7
  127. package/dist/src/view/containerView.d.ts.map +1 -1
  128. package/dist/src/view/containerView.js +0 -10
  129. package/dist/src/view/facetView.d.ts.map +1 -1
  130. package/dist/src/view/facetView.js +0 -15
  131. package/dist/src/view/gridView/gridChild.d.ts +11 -0
  132. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  133. package/dist/src/view/gridView/gridChild.js +32 -6
  134. package/dist/src/view/gridView/gridView.d.ts +39 -1
  135. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  136. package/dist/src/view/gridView/gridView.js +106 -48
  137. package/dist/src/view/gridView/gridView.test.d.ts +2 -0
  138. package/dist/src/view/gridView/gridView.test.d.ts.map +1 -0
  139. package/dist/src/view/gridView/scrollbar.d.ts +39 -8
  140. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  141. package/dist/src/view/gridView/scrollbar.js +184 -69
  142. package/dist/src/view/layerView.d.ts +14 -0
  143. package/dist/src/view/layerView.d.ts.map +1 -1
  144. package/dist/src/view/layerView.js +66 -0
  145. package/dist/src/view/layerView.test.d.ts +2 -0
  146. package/dist/src/view/layerView.test.d.ts.map +1 -0
  147. package/dist/src/view/testUtils.d.ts.map +1 -1
  148. package/dist/src/view/testUtils.js +2 -1
  149. package/dist/src/view/unitView.d.ts.map +1 -1
  150. package/dist/src/view/unitView.js +24 -34
  151. package/dist/src/view/view.d.ts +6 -6
  152. package/dist/src/view/view.d.ts.map +1 -1
  153. package/dist/src/view/view.js +4 -4
  154. package/package.json +2 -2
  155. package/dist/bundle/browser-txUcLy2H.js +0 -123
  156. package/dist/bundle/index-BQpbYrv4.js +0 -1712
  157. package/dist/bundle/index-BhtHKLUo.js +0 -73
  158. package/dist/bundle/index-CCe8rnZz.js +0 -716
  159. package/dist/bundle/index-DhcU-Gk-.js +0 -1487
  160. package/dist/src/data/collector.test.js +0 -138
  161. package/dist/src/data/dataFlow.test.js +0 -38
  162. package/dist/src/data/flow.test.js +0 -81
  163. package/dist/src/data/flowInit.test.js +0 -413
  164. package/dist/src/data/flowNode.test.js +0 -50
  165. package/dist/src/data/flowOptimizer.test.js +0 -209
  166. package/dist/src/data/formats/fasta.test.js +0 -27
  167. package/dist/src/data/sources/inlineSource.test.js +0 -63
  168. package/dist/src/data/sources/sequenceSource.test.js +0 -81
  169. package/dist/src/data/transforms/aggregate.test.js +0 -134
  170. package/dist/src/data/transforms/clone.test.js +0 -11
  171. package/dist/src/data/transforms/coverage.test.js +0 -238
  172. package/dist/src/data/transforms/filter.test.js +0 -20
  173. package/dist/src/data/transforms/flatten.test.js +0 -96
  174. package/dist/src/data/transforms/flattenDelimited.test.js +0 -90
  175. package/dist/src/data/transforms/flattenSequence.test.js +0 -34
  176. package/dist/src/data/transforms/formula.test.js +0 -25
  177. package/dist/src/data/transforms/identifier.test.js +0 -92
  178. package/dist/src/data/transforms/pileup.test.js +0 -70
  179. package/dist/src/data/transforms/project.test.js +0 -32
  180. package/dist/src/data/transforms/regexExtract.test.js +0 -70
  181. package/dist/src/data/transforms/regexFold.test.js +0 -201
  182. package/dist/src/data/transforms/sample.test.js +0 -38
  183. package/dist/src/data/transforms/stack.test.js +0 -91
  184. package/dist/src/encoder/accessor.test.js +0 -162
  185. package/dist/src/encoder/encoder.test.js +0 -105
  186. package/dist/src/genome/genome.test.js +0 -268
  187. package/dist/src/genome/genomes.test.js +0 -8
  188. package/dist/src/genome/scaleIndex.test.js +0 -78
  189. package/dist/src/genome/scaleLocus.test.js +0 -4
  190. package/dist/src/scale/scale.test.js +0 -326
  191. package/dist/src/scale/ticks.test.js +0 -46
  192. package/dist/src/selection/selection.test.js +0 -14
  193. package/dist/src/utils/addBaseUrl.test.js +0 -30
  194. package/dist/src/utils/binnedIndex.test.js +0 -201
  195. package/dist/src/utils/cloner.test.js +0 -35
  196. package/dist/src/utils/coalesce.test.js +0 -16
  197. package/dist/src/utils/concatIterables.test.js +0 -8
  198. package/dist/src/utils/domainArray.test.js +0 -130
  199. package/dist/src/utils/indexer.test.js +0 -49
  200. package/dist/src/utils/interactionEvent.test.js +0 -35
  201. package/dist/src/utils/iterateNestedMaps.test.js +0 -33
  202. package/dist/src/utils/kWayMerge.test.js +0 -30
  203. package/dist/src/utils/mergeObjects.test.js +0 -42
  204. package/dist/src/utils/numberExtractor.test.js +0 -6
  205. package/dist/src/utils/propertyCacher.test.js +0 -89
  206. package/dist/src/utils/propertyCoalescer.test.js +0 -25
  207. package/dist/src/utils/radixSort.test.js +0 -51
  208. package/dist/src/utils/reservationMap.test.js +0 -20
  209. package/dist/src/utils/ringBuffer.test.js +0 -39
  210. package/dist/src/utils/topK.test.js +0 -54
  211. package/dist/src/utils/trees.test.js +0 -135
  212. package/dist/src/utils/url.test.js +0 -28
  213. package/dist/src/utils/variableTools.test.js +0 -13
  214. package/dist/src/view/axisResolution.d.ts.map +0 -1
  215. package/dist/src/view/axisResolution.test.d.ts.map +0 -1
  216. package/dist/src/view/axisResolution.test.js +0 -206
  217. package/dist/src/view/flowBuilder.test.js +0 -125
  218. package/dist/src/view/gridView/selectionRect.test.js +0 -87
  219. package/dist/src/view/layout/flexLayout.test.js +0 -323
  220. package/dist/src/view/layout/grid.test.js +0 -71
  221. package/dist/src/view/layout/rectangle.test.js +0 -192
  222. package/dist/src/view/paramMediator.test.js +0 -282
  223. package/dist/src/view/scaleResolution.d.ts.map +0 -1
  224. package/dist/src/view/scaleResolution.js +0 -1059
  225. package/dist/src/view/scaleResolution.test.d.ts.map +0 -1
  226. package/dist/src/view/scaleResolution.test.js +0 -645
  227. package/dist/src/view/view.test.js +0 -245
  228. package/dist/src/view/viewDispose.test.js +0 -110
  229. package/dist/src/view/viewFactory.test.js +0 -25
  230. package/dist/src/view/viewUtils.test.js +0 -87
  231. /package/dist/src/{view → scales}/axisResolution.test.d.ts +0 -0
  232. /package/dist/src/{view → scales}/scaleResolution.test.d.ts +0 -0
@@ -1,245 +0,0 @@
1
- import { describe, expect, test } from "vitest";
2
- import UnitView from "./unitView.js";
3
-
4
- import { create, createAndInitialize } from "./testUtils.js";
5
- import { toRegularArray as r } from "../utils/domainArray.js";
6
- import ConcatView from "./concatView.js";
7
- import PointMark from "../marks/point.js";
8
- import View from "./view.js";
9
- import LayerView from "./layerView.js";
10
-
11
- describe("Trivial creations and initializations", () => {
12
- test("Fails on empty spec", async () => {
13
- // @ts-expect-error
14
- await expect(create({}, View)).rejects.toThrow();
15
- });
16
-
17
- test("Parses a trivial spec", async () => {
18
- await expect(create({ mark: "point" }, View)).resolves.toBeInstanceOf(
19
- UnitView
20
- );
21
- await expect(create({ layer: [] }, View)).resolves.toBeInstanceOf(
22
- LayerView
23
- );
24
- });
25
-
26
- test("Parses a more comples spec", async () => {
27
- const view = await create(
28
- {
29
- hconcat: [
30
- {
31
- layer: [{ mark: "point" }, { mark: "rect" }],
32
- },
33
- { mark: "rect" },
34
- ],
35
- },
36
- ConcatView
37
- );
38
-
39
- expect(view).toBeInstanceOf(ConcatView);
40
- expect(view.children[0]).toBeInstanceOf(LayerView);
41
- // @ts-ignore
42
- expect(view.children[0].children[0]).toBeInstanceOf(UnitView);
43
- // @ts-ignore
44
- expect(view.children[0].children[0].mark).toBeInstanceOf(PointMark);
45
- expect(view.children[1]).toBeInstanceOf(UnitView);
46
- expect(view.children[2]).toBeUndefined();
47
- });
48
-
49
- test("Parses and initializes a trivial spec", () =>
50
- expect(
51
- createAndInitialize(
52
- {
53
- data: { values: [1] },
54
- mark: "point",
55
- encoding: {
56
- x: { field: "data", type: "quantitative" },
57
- y: { field: "data", type: "quantitative" },
58
- },
59
- },
60
- View
61
- )
62
- ).resolves.toBeInstanceOf(UnitView));
63
- });
64
-
65
- describe("Test domain handling", () => {
66
- const dataSpec = {
67
- values: [
68
- { a: 1, b: 3 },
69
- { a: 2, b: 4 },
70
- { a: 3, b: 5 },
71
- ],
72
- };
73
-
74
- /** -- This should be moved to ScaleResolution's test
75
- test("Uses domain from the scale properties", () => {
76
- const spec = {
77
- data: dataSpec,
78
- mark: "point",
79
- encoding: {
80
- x: { field: "a", type: "quantitative" },
81
- y: {
82
- field: "a",
83
- type: "quantitative",
84
- scale: { domain: [0, 1000] },
85
- },
86
- },
87
- };
88
-
89
- return createAndInitialize(spec, UnitView).then((view) =>
90
- expect(r(view.getConfiguredDomain("y"))).toEqual([0, 1000])
91
- );
92
- });
93
- */
94
-
95
- test("Includes a constant in the data domain", () =>
96
- createAndInitialize(
97
- {
98
- data: dataSpec,
99
- mark: "point",
100
- encoding: {
101
- x: { datum: 123, type: "quantitative" },
102
- y: { field: "a", type: "quantitative" },
103
- },
104
- },
105
- UnitView
106
- ).then((view) =>
107
- expect(r(view.extractDataDomain("x", "quantitative"))).toEqual([
108
- 123, 123,
109
- ])
110
- ));
111
-
112
- test("Extracts domain from the data", () =>
113
- createAndInitialize(
114
- {
115
- data: dataSpec,
116
- mark: "point",
117
- encoding: {
118
- x: { field: "a", type: "quantitative" },
119
- y: { field: "a", type: "quantitative" },
120
- },
121
- },
122
- UnitView
123
- ).then((view) =>
124
- expect(r(view.extractDataDomain("y", "quantitative"))).toEqual([
125
- 1, 3,
126
- ])
127
- ));
128
-
129
- test("Extracts domain from conditional encoding", () =>
130
- createAndInitialize(
131
- {
132
- params: [{ name: "p" }],
133
- data: dataSpec,
134
- mark: "point",
135
- encoding: {
136
- size: {
137
- field: "a",
138
- type: "quantitative",
139
- condition: {
140
- param: "p",
141
- datum: 123,
142
- },
143
- },
144
- },
145
- },
146
- UnitView
147
- ).then((view) =>
148
- expect(r(view.extractDataDomain("size", "quantitative"))).toEqual([
149
- 1, 123,
150
- ])
151
- ));
152
- });
153
-
154
- describe("Utility methods", () => {
155
- test("BaseUrl is handled correctly", async () => {
156
- createAndInitialize(
157
- {
158
- layer: [],
159
- },
160
- LayerView
161
- ).then((view) => expect(view.getBaseUrl()).toBeUndefined());
162
-
163
- await createAndInitialize(
164
- {
165
- baseUrl: "blaa",
166
- layer: [],
167
- },
168
- LayerView
169
- ).then((view) => expect(view.getBaseUrl()).toEqual("blaa/"));
170
-
171
- await createAndInitialize(
172
- {
173
- baseUrl: "blaa/",
174
- layer: [],
175
- },
176
- LayerView
177
- ).then((view) => expect(view.getBaseUrl()).toEqual("blaa/"));
178
-
179
- await createAndInitialize(
180
- {
181
- baseUrl: "https://site.com",
182
- layer: [],
183
- },
184
- LayerView
185
- ).then((view) =>
186
- expect(view.getBaseUrl()).toEqual("https://site.com/")
187
- );
188
-
189
- await createAndInitialize(
190
- {
191
- baseUrl: "https://site.com",
192
- layer: [
193
- {
194
- baseUrl: "blaa",
195
- layer: [],
196
- },
197
- ],
198
- },
199
- LayerView
200
- ).then((view) =>
201
- expect(view.children[0].getBaseUrl()).toEqual(
202
- "https://site.com/blaa/"
203
- )
204
- );
205
-
206
- await createAndInitialize(
207
- {
208
- baseUrl: "https://site.com",
209
- layer: [
210
- {
211
- baseUrl: "https://another-site.com",
212
- layer: [],
213
- },
214
- ],
215
- },
216
- LayerView
217
- ).then((view) =>
218
- expect(view.children[0].getBaseUrl()).toEqual(
219
- "https://another-site.com/"
220
- )
221
- );
222
-
223
- await createAndInitialize(
224
- {
225
- baseUrl: "https://site.com",
226
- layer: [
227
- {
228
- layer: [
229
- {
230
- baseUrl: "blaa",
231
- layer: [],
232
- },
233
- ],
234
- },
235
- ],
236
- },
237
- LayerView
238
- ).then((view) =>
239
- // @ts-ignore
240
- expect(view.children[0].children[0].getBaseUrl()).toEqual(
241
- "https://site.com/blaa/"
242
- )
243
- );
244
- });
245
- });
@@ -1,110 +0,0 @@
1
- import { describe, expect, test } from "vitest";
2
-
3
- import ConcatView from "./concatView.js";
4
- import DataSource from "../data/sources/dataSource.js";
5
- import UnitView from "./unitView.js";
6
- import View from "./view.js";
7
- import { create, createTestViewContext } from "./testUtils.js";
8
-
9
- class DisposableView extends View {
10
- /** @type {boolean} */
11
- disposed = false;
12
-
13
- /**
14
- * @param {string} name
15
- * @param {import("../types/viewContext.js").default} context
16
- * @param {import("./containerView.js").default} layoutParent
17
- * @param {import("./view.js").default} dataParent
18
- */
19
- constructor(name, context, layoutParent, dataParent) {
20
- /** @type {import("../spec/view.js").LayerSpec} */
21
- const spec = { name, layer: [] };
22
- super(spec, context, layoutParent, dataParent, name);
23
- }
24
-
25
- dispose() {
26
- super.dispose();
27
- this.disposed = true;
28
- }
29
- }
30
-
31
- describe("View disposal", () => {
32
- test("removes scale and axis resolutions for disposed unit views", async () => {
33
- /** @type {import("../spec/view.js").UnitSpec} */
34
- const spec = {
35
- data: {
36
- values: [
37
- {
38
- x: 1,
39
- y: 2,
40
- },
41
- ],
42
- },
43
- mark: "point",
44
- encoding: {
45
- x: { field: "x", type: "quantitative" },
46
- y: { field: "y", type: "quantitative" },
47
- },
48
- };
49
-
50
- const view = await create(spec, UnitView);
51
-
52
- expect(view.getScaleResolution("x")).toBeDefined();
53
- expect(view.getAxisResolution("x")).toBeDefined();
54
-
55
- view.disposeSubtree();
56
-
57
- expect(view.getScaleResolution("x")).toBeUndefined();
58
- expect(view.getAxisResolution("x")).toBeUndefined();
59
- });
60
-
61
- test("disposes replaced grid children", () => {
62
- const context = createTestViewContext();
63
- const parent = new ConcatView(
64
- { hconcat: [] },
65
- context,
66
- null,
67
- null,
68
- "c"
69
- );
70
-
71
- const childA = new DisposableView("a", context, parent, parent);
72
- const childB = new DisposableView("b", context, parent, parent);
73
- parent.setChildren([childA, childB]);
74
-
75
- const childC = new DisposableView("c", context, parent, parent);
76
- parent.setChildren([childC]);
77
-
78
- expect(childA.disposed).toBe(true);
79
- expect(childB.disposed).toBe(true);
80
- expect(childC.disposed).toBe(false);
81
-
82
- const childD = new DisposableView("d", context, parent, parent);
83
- parent.replaceChild(childC, childD);
84
-
85
- expect(childC.disposed).toBe(true);
86
- expect(childD.disposed).toBe(false);
87
- });
88
-
89
- test("removes dataflow hosts on dispose", () => {
90
- const context = createTestViewContext();
91
- const parent = new ConcatView(
92
- { hconcat: [] },
93
- context,
94
- null,
95
- null,
96
- "c"
97
- );
98
- const child = new DisposableView("a", context, parent, parent);
99
-
100
- const dataSource = new DataSource(child);
101
- context.dataFlow.addDataSource(dataSource);
102
- child.flowHandle = { dataSource };
103
-
104
- expect(child.flowHandle.dataSource).toBe(dataSource);
105
-
106
- child.disposeSubtree();
107
-
108
- expect(child.flowHandle).toBeUndefined();
109
- });
110
- });
@@ -1,25 +0,0 @@
1
- import { expect, test } from "vitest";
2
- import { ViewFactory } from "./viewFactory.js";
3
-
4
- test("isViewSpec", () => {
5
- const factory = new ViewFactory();
6
-
7
- // @ts-ignore
8
- expect(factory.isViewSpec({})).toBeFalsy();
9
-
10
- expect(factory.isViewSpec({ mark: "rect" })).toBeTruthy();
11
- expect(factory.isViewSpec({ layer: [] })).toBeTruthy();
12
- expect(factory.isViewSpec({ hconcat: [] })).toBeTruthy();
13
- expect(factory.isViewSpec({ vconcat: [] })).toBeTruthy();
14
- expect(factory.isViewSpec({ concat: [], columns: 1 })).toBeTruthy();
15
-
16
- expect(() => factory.isViewSpec({ mark: "rect", layer: [] })).toThrow();
17
- });
18
-
19
- test("Throws if importing is not allowed", async () => {
20
- const factory = new ViewFactory({ allowImport: false });
21
-
22
- await expect(() =>
23
- factory.createOrImportView({ import: { url: "" } }, undefined)
24
- ).rejects.toThrow();
25
- });
@@ -1,87 +0,0 @@
1
- import { describe, expect, test, vi } from "vitest";
2
-
3
- import { createTestViewContext } from "./testUtils.js";
4
- import { finalizeSubtreeGraphics } from "./viewUtils.js";
5
- import { initializeViewSubtree } from "../data/flowInit.js";
6
-
7
- describe("initializeViewSubtree", () => {
8
- test("initializes data flow for a subtree only", async () => {
9
- const context = createTestViewContext();
10
-
11
- /** @type {import("../spec/view.js").HConcatSpec} */
12
- const spec = {
13
- hconcat: [
14
- {
15
- data: {
16
- values: [{ x: 1 }],
17
- },
18
- mark: "point",
19
- encoding: {
20
- x: { field: "x", type: "quantitative" },
21
- },
22
- },
23
- {
24
- data: {
25
- values: [{ x: 2 }],
26
- },
27
- mark: "point",
28
- encoding: {
29
- x: { field: "x", type: "quantitative" },
30
- },
31
- },
32
- ],
33
- };
34
-
35
- const root = await context.createOrImportView(spec, null, null, "root");
36
- const concatRoot = /** @type {import("./concatView.js").default} */ (
37
- root
38
- );
39
- const child = concatRoot.children[0];
40
- const otherChild = concatRoot.children[1];
41
-
42
- const { dataSources, graphicsPromises, unitViews } =
43
- initializeViewSubtree(child, context.dataFlow);
44
-
45
- expect(dataSources.size).toBe(1);
46
- expect(unitViews.length).toBe(1);
47
- expect(graphicsPromises.length).toBe(0);
48
-
49
- expect(child.flowHandle?.dataSource).toBeDefined();
50
- expect(otherChild.flowHandle?.dataSource).toBeUndefined();
51
- });
52
- });
53
-
54
- describe("finalizeSubtreeGraphics", () => {
55
- test("finalizes marks when allowed", async () => {
56
- const markA = /** @type {import("../marks/mark.js").default} */ (
57
- /** @type {unknown} */ ({
58
- finalizeGraphicsInitialization: vi.fn(),
59
- })
60
- );
61
- const markB = /** @type {import("../marks/mark.js").default} */ (
62
- /** @type {unknown} */ ({
63
- finalizeGraphicsInitialization: vi.fn(),
64
- })
65
- );
66
-
67
- await finalizeSubtreeGraphics([
68
- Promise.resolve(markA),
69
- Promise.resolve(markB),
70
- ]);
71
-
72
- expect(markA.finalizeGraphicsInitialization).toHaveBeenCalledTimes(1);
73
- expect(markB.finalizeGraphicsInitialization).toHaveBeenCalledTimes(1);
74
- });
75
-
76
- test("skips finalization when predicate is false", async () => {
77
- const mark = /** @type {import("../marks/mark.js").default} */ (
78
- /** @type {unknown} */ ({
79
- finalizeGraphicsInitialization: vi.fn(),
80
- })
81
- );
82
-
83
- await finalizeSubtreeGraphics([Promise.resolve(mark)], () => false);
84
-
85
- expect(mark.finalizeGraphicsInitialization).not.toHaveBeenCalled();
86
- });
87
- });