@genome-spy/core 0.48.1 → 0.49.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 (241) hide show
  1. package/dist/bundle/index.es.js +7485 -7097
  2. package/dist/bundle/index.js +124 -111
  3. package/dist/schema.json +838 -344
  4. package/dist/src/data/collector.d.ts +10 -8
  5. package/dist/src/data/collector.d.ts.map +1 -1
  6. package/dist/src/data/collector.js +131 -33
  7. package/dist/src/data/collector.test.d.ts +2 -0
  8. package/dist/src/data/collector.test.d.ts.map +1 -0
  9. package/dist/src/data/collector.test.js +55 -1
  10. package/dist/src/data/dataFlow.test.d.ts +2 -0
  11. package/dist/src/data/dataFlow.test.d.ts.map +1 -0
  12. package/dist/src/data/flow.test.d.ts +2 -0
  13. package/dist/src/data/flow.test.d.ts.map +1 -0
  14. package/dist/src/data/flow.test.js +19 -14
  15. package/dist/src/data/flowNode.test.d.ts +2 -0
  16. package/dist/src/data/flowNode.test.d.ts.map +1 -0
  17. package/dist/src/data/flowOptimizer.test.d.ts +2 -0
  18. package/dist/src/data/flowOptimizer.test.d.ts.map +1 -0
  19. package/dist/src/data/flowOptimizer.test.js +9 -10
  20. package/dist/src/data/formats/fasta.test.d.ts +2 -0
  21. package/dist/src/data/formats/fasta.test.d.ts.map +1 -0
  22. package/dist/src/data/sources/inlineSource.test.d.ts +2 -0
  23. package/dist/src/data/sources/inlineSource.test.d.ts.map +1 -0
  24. package/dist/src/data/sources/inlineSource.test.js +23 -16
  25. package/dist/src/data/sources/sequenceSource.test.d.ts +2 -0
  26. package/dist/src/data/sources/sequenceSource.test.d.ts.map +1 -0
  27. package/dist/src/data/sources/sequenceSource.test.js +59 -42
  28. package/dist/src/data/transforms/clone.test.d.ts +2 -0
  29. package/dist/src/data/transforms/clone.test.d.ts.map +1 -0
  30. package/dist/src/data/transforms/coverage.test.d.ts +2 -0
  31. package/dist/src/data/transforms/coverage.test.d.ts.map +1 -0
  32. package/dist/src/data/transforms/coverage.test.js +1 -1
  33. package/dist/src/data/transforms/filter.d.ts +10 -0
  34. package/dist/src/data/transforms/filter.d.ts.map +1 -1
  35. package/dist/src/data/transforms/filter.js +30 -1
  36. package/dist/src/data/transforms/filter.test.d.ts +2 -0
  37. package/dist/src/data/transforms/filter.test.d.ts.map +1 -0
  38. package/dist/src/data/transforms/flatten.test.d.ts +2 -0
  39. package/dist/src/data/transforms/flatten.test.d.ts.map +1 -0
  40. package/dist/src/data/transforms/flatten.test.js +10 -7
  41. package/dist/src/data/transforms/flattenDelimited.test.d.ts +2 -0
  42. package/dist/src/data/transforms/flattenDelimited.test.d.ts.map +1 -0
  43. package/dist/src/data/transforms/flattenDelimited.test.js +16 -13
  44. package/dist/src/data/transforms/flattenSequence.test.d.ts +2 -0
  45. package/dist/src/data/transforms/flattenSequence.test.d.ts.map +1 -0
  46. package/dist/src/data/transforms/flattenSequence.test.js +1 -1
  47. package/dist/src/data/transforms/formula.test.d.ts +2 -0
  48. package/dist/src/data/transforms/formula.test.d.ts.map +1 -0
  49. package/dist/src/data/transforms/formula.test.js +1 -1
  50. package/dist/src/data/transforms/identifier.d.ts +1 -1
  51. package/dist/src/data/transforms/identifier.d.ts.map +1 -1
  52. package/dist/src/data/transforms/identifier.js +2 -2
  53. package/dist/src/data/transforms/identifier.test.d.ts +2 -0
  54. package/dist/src/data/transforms/identifier.test.d.ts.map +1 -0
  55. package/dist/src/data/transforms/identifier.test.js +23 -14
  56. package/dist/src/data/transforms/pileup.test.d.ts +2 -0
  57. package/dist/src/data/transforms/pileup.test.d.ts.map +1 -0
  58. package/dist/src/data/transforms/project.test.d.ts +2 -0
  59. package/dist/src/data/transforms/project.test.d.ts.map +1 -0
  60. package/dist/src/data/transforms/project.test.js +1 -1
  61. package/dist/src/data/transforms/regexExtract.test.d.ts +2 -0
  62. package/dist/src/data/transforms/regexExtract.test.d.ts.map +1 -0
  63. package/dist/src/data/transforms/regexExtract.test.js +6 -3
  64. package/dist/src/data/transforms/regexFold.test.d.ts +2 -0
  65. package/dist/src/data/transforms/regexFold.test.d.ts.map +1 -0
  66. package/dist/src/data/transforms/sample.test.d.ts +2 -0
  67. package/dist/src/data/transforms/sample.test.d.ts.map +1 -0
  68. package/dist/src/data/transforms/stack.test.d.ts +2 -0
  69. package/dist/src/data/transforms/stack.test.d.ts.map +1 -0
  70. package/dist/src/data/transforms/stack.test.js +8 -8
  71. package/dist/src/encoder/accessor.d.ts +17 -14
  72. package/dist/src/encoder/accessor.d.ts.map +1 -1
  73. package/dist/src/encoder/accessor.js +127 -56
  74. package/dist/src/encoder/accessor.test.d.ts +2 -0
  75. package/dist/src/encoder/accessor.test.d.ts.map +1 -0
  76. package/dist/src/encoder/accessor.test.js +145 -31
  77. package/dist/src/encoder/encoder.d.ts +26 -13
  78. package/dist/src/encoder/encoder.d.ts.map +1 -1
  79. package/dist/src/encoder/encoder.js +98 -114
  80. package/dist/src/encoder/encoder.test.d.ts +2 -0
  81. package/dist/src/encoder/encoder.test.d.ts.map +1 -0
  82. package/dist/src/encoder/encoder.test.js +85 -82
  83. package/dist/src/fonts/bmFontManager.d.ts.map +1 -1
  84. package/dist/src/fonts/bmFontManager.js +10 -4
  85. package/dist/src/genome/genome.test.d.ts +2 -0
  86. package/dist/src/genome/genome.test.d.ts.map +1 -0
  87. package/dist/src/genome/scaleIndex.test.d.ts +2 -0
  88. package/dist/src/genome/scaleIndex.test.d.ts.map +1 -0
  89. package/dist/src/genome/scaleLocus.test.d.ts +2 -0
  90. package/dist/src/genome/scaleLocus.test.d.ts.map +1 -0
  91. package/dist/src/genomeSpy.d.ts +3 -2
  92. package/dist/src/genomeSpy.d.ts.map +1 -1
  93. package/dist/src/genomeSpy.js +29 -21
  94. package/dist/src/gl/dataToVertices.d.ts +5 -7
  95. package/dist/src/gl/dataToVertices.d.ts.map +1 -1
  96. package/dist/src/gl/dataToVertices.js +42 -30
  97. package/dist/src/gl/glslScaleGenerator.d.ts +84 -15
  98. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  99. package/dist/src/gl/glslScaleGenerator.js +260 -73
  100. package/dist/src/gl/includes/picking.vertex.glsl.js +1 -1
  101. package/dist/src/marks/link.common.glsl.js +1 -1
  102. package/dist/src/marks/link.d.ts.map +1 -1
  103. package/dist/src/marks/link.js +10 -0
  104. package/dist/src/marks/link.vertex.glsl.js +1 -1
  105. package/dist/src/marks/mark.d.ts +6 -9
  106. package/dist/src/marks/mark.d.ts.map +1 -1
  107. package/dist/src/marks/mark.js +212 -95
  108. package/dist/src/marks/point.d.ts.map +1 -1
  109. package/dist/src/marks/point.js +5 -1
  110. package/dist/src/marks/rect.d.ts.map +1 -1
  111. package/dist/src/marks/rect.js +9 -4
  112. package/dist/src/marks/rule.d.ts.map +1 -1
  113. package/dist/src/marks/rule.js +4 -0
  114. package/dist/src/marks/text.d.ts.map +1 -1
  115. package/dist/src/marks/text.js +5 -1
  116. package/dist/src/scale/scale.test.d.ts +2 -0
  117. package/dist/src/scale/scale.test.d.ts.map +1 -0
  118. package/dist/src/scale/scale.test.js +2 -0
  119. package/dist/src/scale/ticks.test.d.ts +2 -0
  120. package/dist/src/scale/ticks.test.d.ts.map +1 -0
  121. package/dist/src/scale/ticks.test.js +6 -0
  122. package/dist/src/selection/selection.d.ts +39 -0
  123. package/dist/src/selection/selection.d.ts.map +1 -0
  124. package/dist/src/selection/selection.js +78 -0
  125. package/dist/src/spec/channel.d.ts +137 -83
  126. package/dist/src/spec/mark.d.ts +9 -0
  127. package/dist/src/spec/parameter.d.ts +112 -3
  128. package/dist/src/spec/root.d.ts +0 -1
  129. package/dist/src/spec/transform.d.ts +19 -1
  130. package/dist/src/spec/view.d.ts +3 -3
  131. package/dist/src/tooltip/dataTooltipHandler.js +1 -1
  132. package/dist/src/types/encoder.d.ts +80 -26
  133. package/dist/src/types/rendering.d.ts +1 -0
  134. package/dist/src/types/selectionTypes.d.ts +44 -0
  135. package/dist/src/types/viewContext.d.ts +1 -4
  136. package/dist/src/utils/addBaseUrl.test.d.ts +2 -0
  137. package/dist/src/utils/addBaseUrl.test.d.ts.map +1 -0
  138. package/dist/src/utils/animator.d.ts.map +1 -1
  139. package/dist/src/utils/animator.js +3 -1
  140. package/dist/src/utils/binnedIndex.test.d.ts +2 -0
  141. package/dist/src/utils/binnedIndex.test.d.ts.map +1 -0
  142. package/dist/src/utils/cloner.test.d.ts +2 -0
  143. package/dist/src/utils/cloner.test.d.ts.map +1 -0
  144. package/dist/src/utils/coalesce.test.d.ts +2 -0
  145. package/dist/src/utils/coalesce.test.d.ts.map +1 -0
  146. package/dist/src/utils/concatIterables.test.d.ts +2 -0
  147. package/dist/src/utils/concatIterables.test.d.ts.map +1 -0
  148. package/dist/src/utils/domainArray.test.d.ts +2 -0
  149. package/dist/src/utils/domainArray.test.d.ts.map +1 -0
  150. package/dist/src/utils/expression.d.ts +2 -2
  151. package/dist/src/utils/expression.d.ts.map +1 -1
  152. package/dist/src/utils/expression.js +11 -2
  153. package/dist/src/utils/indexer.test.d.ts +2 -0
  154. package/dist/src/utils/indexer.test.d.ts.map +1 -0
  155. package/dist/src/utils/inertia.d.ts.map +1 -1
  156. package/dist/src/utils/inertia.js +4 -0
  157. package/dist/src/utils/inputBinding.d.ts.map +1 -1
  158. package/dist/src/utils/inputBinding.js +4 -0
  159. package/dist/src/utils/iterateNestedMaps.d.ts +4 -3
  160. package/dist/src/utils/iterateNestedMaps.d.ts.map +1 -1
  161. package/dist/src/utils/iterateNestedMaps.js +3 -2
  162. package/dist/src/utils/iterateNestedMaps.test.d.ts +2 -0
  163. package/dist/src/utils/iterateNestedMaps.test.d.ts.map +1 -0
  164. package/dist/src/utils/kWayMerge.test.d.ts +2 -0
  165. package/dist/src/utils/kWayMerge.test.d.ts.map +1 -0
  166. package/dist/src/utils/mergeObjects.test.d.ts +2 -0
  167. package/dist/src/utils/mergeObjects.test.d.ts.map +1 -0
  168. package/dist/src/utils/numberExtractor.test.d.ts +2 -0
  169. package/dist/src/utils/numberExtractor.test.d.ts.map +1 -0
  170. package/dist/src/utils/propertyCacher.test.d.ts +2 -0
  171. package/dist/src/utils/propertyCacher.test.d.ts.map +1 -0
  172. package/dist/src/utils/propertyCoalescer.test.d.ts +2 -0
  173. package/dist/src/utils/propertyCoalescer.test.d.ts.map +1 -0
  174. package/dist/src/utils/propertyCoalescer.test.js +3 -0
  175. package/dist/src/utils/radixSort.d.ts +9 -0
  176. package/dist/src/utils/radixSort.d.ts.map +1 -0
  177. package/dist/src/utils/radixSort.js +130 -0
  178. package/dist/src/utils/radixSort.test.d.ts +2 -0
  179. package/dist/src/utils/radixSort.test.d.ts.map +1 -0
  180. package/dist/src/utils/radixSort.test.js +51 -0
  181. package/dist/src/utils/reservationMap.test.d.ts +2 -0
  182. package/dist/src/utils/reservationMap.test.d.ts.map +1 -0
  183. package/dist/src/utils/ringBuffer.test.d.ts +2 -0
  184. package/dist/src/utils/ringBuffer.test.d.ts.map +1 -0
  185. package/dist/src/utils/topK.test.d.ts +2 -0
  186. package/dist/src/utils/topK.test.d.ts.map +1 -0
  187. package/dist/src/utils/trees.test.d.ts +2 -0
  188. package/dist/src/utils/trees.test.d.ts.map +1 -0
  189. package/dist/src/utils/trees.test.js +8 -3
  190. package/dist/src/utils/variableTools.test.d.ts +2 -0
  191. package/dist/src/utils/variableTools.test.d.ts.map +1 -0
  192. package/dist/src/view/axisResolution.d.ts +19 -6
  193. package/dist/src/view/axisResolution.d.ts.map +1 -1
  194. package/dist/src/view/axisResolution.js +16 -7
  195. package/dist/src/view/axisResolution.test.d.ts +2 -0
  196. package/dist/src/view/axisResolution.test.d.ts.map +1 -0
  197. package/dist/src/view/axisResolution.test.js +16 -11
  198. package/dist/src/view/facetView.d.ts +1 -1
  199. package/dist/src/view/facetView.d.ts.map +1 -1
  200. package/dist/src/view/flowBuilder.d.ts +1 -1
  201. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  202. package/dist/src/view/flowBuilder.js +34 -5
  203. package/dist/src/view/flowBuilder.test.d.ts +2 -0
  204. package/dist/src/view/flowBuilder.test.d.ts.map +1 -0
  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/layerView.d.ts +0 -6
  208. package/dist/src/view/layerView.d.ts.map +1 -1
  209. package/dist/src/view/layout/flexLayout.test.d.ts +2 -0
  210. package/dist/src/view/layout/flexLayout.test.d.ts.map +1 -0
  211. package/dist/src/view/layout/grid.test.d.ts +2 -0
  212. package/dist/src/view/layout/grid.test.d.ts.map +1 -0
  213. package/dist/src/view/layout/rectangle.test.d.ts +2 -0
  214. package/dist/src/view/layout/rectangle.test.d.ts.map +1 -0
  215. package/dist/src/view/paramMediator.d.ts +32 -5
  216. package/dist/src/view/paramMediator.d.ts.map +1 -1
  217. package/dist/src/view/paramMediator.js +97 -9
  218. package/dist/src/view/paramMediator.test.d.ts +2 -0
  219. package/dist/src/view/paramMediator.test.d.ts.map +1 -0
  220. package/dist/src/view/paramMediator.test.js +17 -1
  221. package/dist/src/view/scaleResolution.d.ts +17 -9
  222. package/dist/src/view/scaleResolution.d.ts.map +1 -1
  223. package/dist/src/view/scaleResolution.js +51 -34
  224. package/dist/src/view/scaleResolution.test.d.ts +2 -0
  225. package/dist/src/view/scaleResolution.test.d.ts.map +1 -0
  226. package/dist/src/view/scaleResolution.test.js +2 -0
  227. package/dist/src/view/testUtils.d.ts.map +1 -1
  228. package/dist/src/view/testUtils.js +15 -3
  229. package/dist/src/view/unitView.d.ts +5 -15
  230. package/dist/src/view/unitView.d.ts.map +1 -1
  231. package/dist/src/view/unitView.js +81 -101
  232. package/dist/src/view/view.d.ts +1 -1
  233. package/dist/src/view/view.d.ts.map +1 -1
  234. package/dist/src/view/view.test.d.ts +2 -0
  235. package/dist/src/view/view.test.d.ts.map +1 -0
  236. package/dist/src/view/view.test.js +73 -55
  237. package/dist/src/view/viewFactory.test.d.ts +2 -0
  238. package/dist/src/view/viewFactory.test.d.ts.map +1 -0
  239. package/dist/src/view/viewFactory.test.js +2 -2
  240. package/dist/src/view/zoom.js +2 -2
  241. package/package.json +5 -2
@@ -0,0 +1,130 @@
1
+ const MAX_INTEGER = 2147483647;
2
+ const MAX_INTEGER_DIGIT = getDigits([MAX_INTEGER]);
3
+
4
+ // TODO: Optimize more! Some ideas: https://travisdowns.github.io/blog/2019/05/22/sorting.html
5
+
6
+ /**
7
+ * @param {number[]} arr An array of unsigned integers
8
+ */
9
+ export default function radixSort(arr) {
10
+ const maxDigits = getDigits(arr);
11
+
12
+ let buffer = new Array(arr.length);
13
+ let bufferPtr = buffer;
14
+ const counts = new Array(16);
15
+
16
+ for (let digitIndex = 0; digitIndex < maxDigits; digitIndex++) {
17
+ counts.fill(0);
18
+
19
+ const shift = digitIndex * 4;
20
+ const pow = Math.pow(16, digitIndex);
21
+
22
+ /**
23
+ * @param {*} i number
24
+ */
25
+ // eslint-disable-next-line no-loop-func
26
+ const getDigit = (/** @type {number} */ i) => {
27
+ const value = arr[i];
28
+
29
+ // Need hacks for large numbers because JS bitwise operators only work
30
+ // with 32-bit integers.
31
+ // TODO: This could be implemented in WASM for better performance as
32
+ // it would be able to use 64-bit integers.
33
+ if (digitIndex >= MAX_INTEGER_DIGIT) {
34
+ if (value > MAX_INTEGER) {
35
+ return Math.floor(value / pow) % 16;
36
+ } else {
37
+ return 0;
38
+ }
39
+ } else {
40
+ return (value >> shift) & 0xf;
41
+ }
42
+ };
43
+
44
+ // Count occurrences of each digit
45
+ for (let i = 0, n = arr.length; i < n; i++) {
46
+ counts[getDigit(i)]++;
47
+ }
48
+
49
+ // Prefix sum to get starting indexes
50
+ for (let i = 1; i < 16; i++) {
51
+ counts[i] += counts[i - 1];
52
+ }
53
+
54
+ // Sort based on current digit
55
+ for (let i = arr.length - 1; i >= 0; i--) {
56
+ bufferPtr[--counts[getDigit(i)]] = arr[i];
57
+ }
58
+
59
+ // Swap buffer and arr for next iteration
60
+ [arr, bufferPtr] = [bufferPtr, arr];
61
+ }
62
+
63
+ return arr;
64
+ }
65
+
66
+ /**
67
+ * @param {number[]} arr An array of unsigned integers
68
+ */
69
+ function getDigits(arr) {
70
+ let max = 0;
71
+ for (let i = 0, n = arr.length; i < n; i++) {
72
+ max = Math.max(max, arr[i]);
73
+ }
74
+ return Math.floor(Math.log2(max) / 4) + 1;
75
+ }
76
+
77
+ /**
78
+ * @param {number[]} arr An array of unsigned integers
79
+ */
80
+ export function radixSortIntoLookupArray(arr) {
81
+ const maxDigits = getDigits(arr);
82
+ let indexes = Array.from({ length: arr.length }, (_, i) => i);
83
+ let buffer = new Array(arr.length);
84
+ const counts = new Array(16);
85
+
86
+ for (let digitIndex = 0; digitIndex < maxDigits; digitIndex++) {
87
+ counts.fill(0);
88
+
89
+ const shift = digitIndex * 4;
90
+ const pow = Math.pow(16, digitIndex);
91
+
92
+ /**
93
+ * @param {*} i number
94
+ */
95
+ // eslint-disable-next-line no-loop-func
96
+ const getDigit = (i) => {
97
+ const value = arr[indexes[i]]; // Use index to access array value
98
+
99
+ if (digitIndex >= MAX_INTEGER_DIGIT) {
100
+ if (value > MAX_INTEGER) {
101
+ return Math.floor(value / pow) % 16;
102
+ } else {
103
+ return 0;
104
+ }
105
+ } else {
106
+ return (value >> shift) & 0xf;
107
+ }
108
+ };
109
+
110
+ // Count occurrences of each digit
111
+ for (let i = 0; i < arr.length; i++) {
112
+ counts[getDigit(i)]++;
113
+ }
114
+
115
+ // Prefix sum to get starting indexes
116
+ for (let i = 1; i < 16; i++) {
117
+ counts[i] += counts[i - 1];
118
+ }
119
+
120
+ // Sort indexes based on current digit
121
+ for (let i = arr.length - 1; i >= 0; i--) {
122
+ buffer[--counts[getDigit(i)]] = indexes[i];
123
+ }
124
+
125
+ // Swap buffer and indexes for next iteration
126
+ [indexes, buffer] = [buffer, indexes];
127
+ }
128
+
129
+ return indexes; // Return the sorted index array
130
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=radixSort.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radixSort.test.d.ts","sourceRoot":"","sources":["../../../src/utils/radixSort.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ import { expect, test } from "vitest";
2
+ import radixSort, { radixSortIntoLookupArray } from "./radixSort.js";
3
+
4
+ /**
5
+ * Checks that numbers in an array are in ascending order.
6
+
7
+ * @param {number[]} arr An array of unsigned integers
8
+ */
9
+ function isSorted(arr) {
10
+ for (let i = 1; i < arr.length; i++) {
11
+ if (arr[i - 1] > arr[i]) {
12
+ return false;
13
+ }
14
+ }
15
+
16
+ return true;
17
+ }
18
+
19
+ /**
20
+ * Generates a random array of unsigned integers.
21
+ *
22
+ * @param {number} length
23
+ */
24
+ function generateArray(length) {
25
+ const arr = new Array(length);
26
+
27
+ for (let i = 0; i < length; i++) {
28
+ arr[i] = Math.floor(Math.random() * 10_000_000_000);
29
+ }
30
+
31
+ return arr;
32
+ }
33
+
34
+ test("Radix Sort correctly sorts numbers", () => {
35
+ expect(isSorted(radixSort([1, 2, 3]))).toBeTruthy();
36
+ expect(isSorted(radixSort([3, 2, 1]))).toBeTruthy();
37
+ expect(isSorted(radixSort([123, 1234567, 12, 1, 1234]))).toBeTruthy();
38
+ expect(isSorted(radixSort(generateArray(1_000_000)))).toBeTruthy();
39
+ });
40
+
41
+ test("Lookup", () => {
42
+ expect(radixSortIntoLookupArray([1, 2, 3])).toEqual([0, 1, 2]);
43
+ expect(radixSortIntoLookupArray([3, 2, 1])).toEqual([2, 1, 0]);
44
+ expect(radixSortIntoLookupArray([10000, 100, 1000, 10, 1])).toEqual([
45
+ 4, 3, 1, 2, 0,
46
+ ]);
47
+
48
+ const arr = generateArray(1_000_000);
49
+ const lookup = radixSortIntoLookupArray(arr);
50
+ expect(isSorted(arr.map((_, i) => arr[lookup[i]]))).toBeTruthy();
51
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=reservationMap.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reservationMap.test.d.ts","sourceRoot":"","sources":["../../../src/utils/reservationMap.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ringBuffer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ringBuffer.test.d.ts","sourceRoot":"","sources":["../../../src/utils/ringBuffer.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=topK.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topK.test.d.ts","sourceRoot":"","sources":["../../../src/utils/topK.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=trees.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trees.test.d.ts","sourceRoot":"","sources":["../../../src/utils/trees.test.js"],"names":[],"mappings":""}
@@ -3,8 +3,10 @@ import { nodesToTrees, visitTree } from "./trees.js";
3
3
  import { describe } from "vitest";
4
4
 
5
5
  describe("NodesToTrees", () => {
6
+ const NULL = /** @type {any} */ (null);
7
+
6
8
  test("NodesToTrees converts an array of nodes to a tree", () => {
7
- const a = { parent: null };
9
+ const a = { parent: NULL };
8
10
  const b = { parent: a };
9
11
  const c = { parent: a };
10
12
  const d = { parent: b };
@@ -41,10 +43,10 @@ describe("NodesToTrees", () => {
41
43
  });
42
44
 
43
45
  test("NodesToTrees converts two disjoint node arrays to two trees", () => {
44
- const a = { parent: null };
46
+ const a = { parent: NULL };
45
47
  const b = { parent: a };
46
48
 
47
- const c = { parent: null };
49
+ const c = { parent: NULL };
48
50
  const d = { parent: c };
49
51
 
50
52
  const nodes = [a, b, c, d];
@@ -84,6 +86,7 @@ describe("VisitTree", () => {
84
86
  children: [
85
87
  {
86
88
  id: "d",
89
+ /** @type {any[]} */
87
90
  children: [],
88
91
  },
89
92
  {
@@ -99,7 +102,9 @@ describe("VisitTree", () => {
99
102
  ],
100
103
  };
101
104
 
105
+ /** @type {any[]} */
102
106
  const visitedPre = [];
107
+ /** @type {any[]} */
103
108
  const visitedPost = [];
104
109
 
105
110
  visitTree(tree, {
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=variableTools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variableTools.test.d.ts","sourceRoot":"","sources":["../../../src/utils/variableTools.test.js"],"names":[],"mappings":""}
@@ -1,24 +1,37 @@
1
+ /**
2
+ * @template {import("../spec/channel.js").PositionalChannel}[T=PositionalChannel]
3
+ *
4
+ * @typedef {object} AxisResolutionMember
5
+ * @prop {import("./unitView.js").default} view
6
+ * @prop {T} channel
7
+ * @prop {import("../spec/channel.js").ChannelDefWithScale} channelDef
8
+ */
1
9
  export default class AxisResolution {
2
10
  /**
3
- * @typedef { import("./unitView.js").default} UnitView
11
+ * @typedef {import("./unitView.js").default} UnitView
12
+ * @typedef {import("../spec/channel.js").PositionalChannel} PositionalChannel
4
13
  */
5
14
  /**
6
15
  * @param {import("../spec/channel.js").PrimaryPositionalChannel} channel
7
16
  */
8
17
  constructor(channel: import("../spec/channel.js").PrimaryPositionalChannel);
9
18
  channel: import("../spec/channel.js").PrimaryPositionalChannel;
10
- /** @type {import("./scaleResolution.js").ResolutionMember<import("../spec/channel.js").PositionalChannel>[]} The involved views */
11
- members: import("./scaleResolution.js").ResolutionMember<import("../spec/channel.js").PositionalChannel>[];
19
+ /** @type {AxisResolutionMember[]} The involved views */
20
+ members: AxisResolutionMember[];
12
21
  get scaleResolution(): import("./scaleResolution.js").default;
13
22
  /**
14
23
  * N.B. This is expected to be called in depth-first order, AFTER the
15
24
  * scales have been resolved.
16
25
  *
17
- * @param {UnitView} view
18
- * @param {import("../spec/channel.js").PositionalChannel} channel TODO: Do something for this
26
+ * @param {AxisResolutionMember} newMember
19
27
  */
20
- pushUnitView(view: import("./unitView.js").default, channel: import("../spec/channel.js").PositionalChannel): void;
28
+ pushUnitView(newMember: AxisResolutionMember): void;
21
29
  getAxisProps(): import("../spec/axis.js").GenomeAxis;
22
30
  getTitle(): string;
23
31
  }
32
+ export type AxisResolutionMember<T extends import("../spec/channel.js").PositionalChannel = import("../spec/channel.js").PositionalChannel> = {
33
+ view: import("./unitView.js").default;
34
+ channel: T;
35
+ channelDef: import("../spec/channel.js").ChannelDefWithScale;
36
+ };
24
37
  //# sourceMappingURL=axisResolution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"axisResolution.d.ts","sourceRoot":"","sources":["../../../src/view/axisResolution.js"],"names":[],"mappings":"AAeA;IACI;;OAEG;IAEH;;OAEG;IACH,qBAFW,OAAO,oBAAoB,EAAE,wBAAwB,EAM/D;IAHG,+DAAsB;IACtB,mIAAmI;IACnI,SADW,OAAO,sBAAsB,EAAE,gBAAgB,CAAC,OAAO,oBAAoB,EAAE,iBAAiB,CAAC,EAAE,CAC3F;IAGrB,8DAEC;IAED;;;;;;OAMG;IACH,6DAFW,OAAO,oBAAoB,EAAE,iBAAiB,QAiBxD;IAED,qDAuBC;IAED,mBAyDC;CACJ"}
1
+ {"version":3,"file":"axisResolution.d.ts","sourceRoot":"","sources":["../../../src/view/axisResolution.js"],"names":[],"mappings":"AAeA;;;;;;;GAOG;AACH;IACI;;;OAGG;IAEH;;OAEG;IACH,qBAFW,OAAO,oBAAoB,EAAE,wBAAwB,EAM/D;IAHG,+DAAsB;IACtB,wDAAwD;IACxD,SADW,oBAAoB,EAAE,CAChB;IAGrB,8DAEC;IAED;;;;;OAKG;IACH,wBAFW,oBAAoB,QAkB9B;IAED,qDAuBC;IAED,mBAyDC;CACJ;;UAlIS,OAAO,eAAe,EAAE,OAAO;aAC/B,CAAC;gBACD,OAAO,oBAAoB,EAAE,mBAAmB"}
@@ -13,9 +13,18 @@ import coalesce from "../utils/coalesce.js";
13
13
  import mergeObjects from "../utils/mergeObjects.js";
14
14
  import { getCachedOrCall } from "../utils/propertyCacher.js";
15
15
 
16
+ /**
17
+ * @template {import("../spec/channel.js").PositionalChannel}[T=PositionalChannel]
18
+ *
19
+ * @typedef {object} AxisResolutionMember
20
+ * @prop {import("./unitView.js").default} view
21
+ * @prop {T} channel
22
+ * @prop {import("../spec/channel.js").ChannelDefWithScale} channelDef
23
+ */
16
24
  export default class AxisResolution {
17
25
  /**
18
- * @typedef { import("./unitView.js").default} UnitView
26
+ * @typedef {import("./unitView.js").default} UnitView
27
+ * @typedef {import("../spec/channel.js").PositionalChannel} PositionalChannel
19
28
  */
20
29
 
21
30
  /**
@@ -23,7 +32,7 @@ export default class AxisResolution {
23
32
  */
24
33
  constructor(channel) {
25
34
  this.channel = channel;
26
- /** @type {import("./scaleResolution.js").ResolutionMember<import("../spec/channel.js").PositionalChannel>[]} The involved views */
35
+ /** @type {AxisResolutionMember[]} The involved views */
27
36
  this.members = [];
28
37
  }
29
38
 
@@ -35,10 +44,10 @@ export default class AxisResolution {
35
44
  * N.B. This is expected to be called in depth-first order, AFTER the
36
45
  * scales have been resolved.
37
46
  *
38
- * @param {UnitView} view
39
- * @param {import("../spec/channel.js").PositionalChannel} channel TODO: Do something for this
47
+ * @param {AxisResolutionMember} newMember
40
48
  */
41
- pushUnitView(view, channel) {
49
+ pushUnitView(newMember) {
50
+ const { view } = newMember;
42
51
  const newScaleResolution = view.getScaleResolution(this.channel);
43
52
 
44
53
  if (!newScaleResolution) {
@@ -52,7 +61,7 @@ export default class AxisResolution {
52
61
  throw new Error("Shared axes must have a shared scale!");
53
62
  }
54
63
 
55
- this.members.push({ view, channel });
64
+ this.members.push(newMember);
56
65
  }
57
66
 
58
67
  getAxisProps() {
@@ -81,7 +90,7 @@ export default class AxisResolution {
81
90
  }
82
91
 
83
92
  getTitle() {
84
- /** @param {import("./scaleResolution.js").ResolutionMember} member} */
93
+ /** @param {AxisResolutionMember} member} */
85
94
  const computeTitle = (member) => {
86
95
  const channelDef = getChannelDefWithScale(
87
96
  member.view,
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=axisResolution.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axisResolution.test.d.ts","sourceRoot":"","sources":["../../../src/view/axisResolution.test.js"],"names":[],"mappings":""}
@@ -35,19 +35,17 @@ const spec = {
35
35
  };
36
36
 
37
37
  describe("Axes resolve properly", () => {
38
- const sharedSpec = {
39
- ...spec,
40
- resolve: { scale: { y: "shared" }, axis: { y: "shared" } },
41
- };
42
-
43
38
  test("Independent axes are independent", async () => {
44
- const independentSpec = {
45
- ...spec,
46
- resolve: { scale: { y: "shared" }, axis: { y: "independent" } },
47
- };
39
+ const view = await createAndInitialize(
40
+ {
41
+ ...spec,
42
+ resolve: { scale: { y: "shared" }, axis: { y: "independent" } },
43
+ },
44
+ View
45
+ );
48
46
 
49
- const view = await createAndInitialize(independentSpec, View);
50
47
  const [r0, r1] = [0, 1].map((i) =>
48
+ // @ts-ignore
51
49
  view.children[i].getAxisResolution("y")
52
50
  );
53
51
 
@@ -57,7 +55,14 @@ describe("Axes resolve properly", () => {
57
55
  });
58
56
 
59
57
  test("Shared axes have joined titles", async () => {
60
- const view = await createAndInitialize(sharedSpec, View);
58
+ const view = await createAndInitialize(
59
+ {
60
+ ...spec,
61
+ resolve: { scale: { y: "shared" }, axis: { y: "shared" } },
62
+ },
63
+ View
64
+ );
65
+ // @ts-ignore
61
66
  expect(view.children[0].getAxisResolution("y").getTitle()).toEqual(
62
67
  "a, b"
63
68
  );
@@ -45,7 +45,7 @@ export default class FacetView extends ContainerView {
45
45
  *
46
46
  * @param {"row" | "column"} channel
47
47
  */
48
- getAccessor(channel: "row" | "column"): import("../types/encoder.js").Accessor;
48
+ getAccessor(channel: "row" | "column"): any;
49
49
  updateFacets(): void;
50
50
  updateLabels(): void;
51
51
  getFacetGroups(): any[];
@@ -1 +1 @@
1
- {"version":3,"file":"facetView.d.ts","sourceRoot":"","sources":["../../../src/view/facetView.js"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;;GAcG;AACH;IACI;;;;;;;OAOG;IACH;;;;;;OAMG;IACH,6CAHW,aAAa,QACb,MAAM,EA8BhB;IAzBG,UAAgB;IAEhB,WAEC;IAED;;;;OAIG;IACH,aAFU,OAAO,YAAY,EAAE,QAAQ,CAAC,CAYvC;IAED,oDAAoD;IACpD,kBADY,OAAO,YAAY,EAAE,cAAc,CAAC,CACa;IA2BjE,sBAIC;IAED;;;OAGG;IACH,qBAFW,KAAK,GAAG,QAAQ,0CAwB1B;IAED,qBAyCC;IAED,qBASC;IA6BD,wBAgBC;IAOD;;;;OAIG;IACH,gBAJW,OAAO,4CAA4C,EAAE,OAAO,UAC5D,OAAO,uBAAuB,EAAE,OAAO,uBA4LjD;IA3KO,wBAA0B;CA4KrC;2BA/bY,QAAQ,GAAG,KAAK;;;;;;aA4CnB,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE;;;0BA1Df,oBAAoB;qBACzB,eAAe"}
1
+ {"version":3,"file":"facetView.d.ts","sourceRoot":"","sources":["../../../src/view/facetView.js"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;;GAcG;AACH;IACI;;;;;;;OAOG;IACH;;;;;;OAMG;IACH,6CAHW,aAAa,QACb,MAAM,EA8BhB;IAzBG,UAAgB;IAEhB,WAEC;IAED;;;;OAIG;IACH,aAFU,OAAO,YAAY,EAAE,QAAQ,CAAC,CAYvC;IAED,oDAAoD;IACpD,kBADY,OAAO,YAAY,EAAE,cAAc,CAAC,CACa;IA2BjE,sBAIC;IAED;;;OAGG;IACH,qBAFW,KAAK,GAAG,QAAQ,OAwB1B;IAED,qBAyCC;IAED,qBASC;IA6BD,wBAgBC;IAOD;;;;OAIG;IACH,gBAJW,OAAO,4CAA4C,EAAE,OAAO,UAC5D,OAAO,uBAAuB,EAAE,OAAO,uBA4LjD;IA3KO,wBAA0B;CA4KrC;2BA/bY,QAAQ,GAAG,KAAK;;;;;;aA4CnB,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE;;;0BA1Df,oBAAoB;qBACzB,eAAe"}
@@ -13,7 +13,7 @@ export function buildDataFlow(root: import("./view.js").default, existingFlow?:
13
13
  */
14
14
  export function linearizeLocusAccess(view: import("./view.js").default): {
15
15
  transforms: import("../data/flowNode.js").default[];
16
- rewrittenEncoding: import("../spec/channel.js").Encoding<string>;
16
+ rewrittenEncoding: import("../spec/channel.js").Encoding;
17
17
  /**
18
18
  * Should be called after the whole flow has been created in order to
19
19
  * not disrupt inheritance of encodings
@@ -1 +1 @@
1
- {"version":3,"file":"flowBuilder.d.ts","sourceRoot":"","sources":["../../../src/view/flowBuilder.js"],"names":[],"mappings":"AAwBA;;;;GAIG;AACH,8JAkKC;AAED;;;;;;GAMG;AACH;;;IAgGc;;;OAGG;;EAYhB;AAgCD;;;;;;GAMG;AACH;;;0BAqB0B,QAAQ,SAAS,OAAO,qBAAqB,EAAE,KAAK,CAAC,CAAC;EAkB/E;qBA/XoB,qBAAqB;sBANpB,sBAAsB"}
1
+ {"version":3,"file":"flowBuilder.d.ts","sourceRoot":"","sources":["../../../src/view/flowBuilder.js"],"names":[],"mappings":"AAwBA;;;;GAIG;AACH,8JA+LC;AAED;;;;;;GAMG;AACH;;;IAgGc;;;OAGG;;EAYhB;AAgCD;;;;;;GAMG;AACH;;;0BAqB0B,QAAQ,SAAS,OAAO,qBAAqB,EAAE,KAAK,CAAC,CAAC;EAkB/E;qBA5ZoB,qBAAqB;sBANpB,sBAAsB"}
@@ -35,6 +35,8 @@ export function buildDataFlow(root, existingFlow) {
35
35
 
36
36
  /** @type {FlowNode[]} "Current nodes" on the path from view root to the current view */
37
37
  const nodeStack = [];
38
+ /** @type {{view: View, nodeStackDepth: number}[]} */
39
+ const viewStack = [];
38
40
 
39
41
  /** @type {FlowNode} */
40
42
  let currentNode;
@@ -59,6 +61,7 @@ export function buildDataFlow(root, existingFlow) {
59
61
  }
60
62
  currentNode.addChild(node);
61
63
  currentNode = node;
64
+ nodeStack.push(node);
62
65
  return node;
63
66
  }
64
67
 
@@ -108,10 +111,16 @@ export function buildDataFlow(root, existingFlow) {
108
111
  }
109
112
  }
110
113
 
114
+ function isInBranchWithIdentifier() {
115
+ return (
116
+ nodeStack.findLastIndex(
117
+ (node) => node instanceof IdentifierTransform
118
+ ) > nodeStack.findLastIndex((node) => node instanceof DataSource)
119
+ );
120
+ }
121
+
111
122
  /** @param {View} view */
112
123
  const processView = (view) => {
113
- nodeStack.push(currentNode);
114
-
115
124
  if (view.spec.data) {
116
125
  const dataSource = isNamedData(view.spec.data)
117
126
  ? new NamedSource(
@@ -122,6 +131,7 @@ export function buildDataFlow(root, existingFlow) {
122
131
  : createDataSource(view.spec.data, view);
123
132
 
124
133
  currentNode = dataSource;
134
+ nodeStack.push(dataSource);
125
135
  dataFlow.addDataSource(dataSource, view);
126
136
  }
127
137
 
@@ -148,13 +158,24 @@ export function buildDataFlow(root, existingFlow) {
148
158
  }
149
159
  }
150
160
 
151
- if (view.mark.isPickingParticipant()) {
161
+ if (
162
+ view.mark.isPickingParticipant() &&
163
+ !isInBranchWithIdentifier()
164
+ ) {
165
+ // TODO: If two branches receive the same data, they should have
166
+ // a shared identifier transform. However, unique ids cannot be
167
+ // assigned right after the data source, because some transforms,
168
+ // (e.g, RegexFold) may generate new tuples.
169
+ //
152
170
  appendTransform(new CloneTransform());
153
171
  appendTransform(
154
172
  new IdentifierTransform({ type: "identifier" })
155
173
  );
156
174
  }
157
175
 
176
+ // TODO: Handle cases where the spec contains terminal collector nodes
177
+ // (with custom sort configuration, for example). Now a new collector
178
+ // is always appended to the end of the current branch.
158
179
  const collector = new Collector({
159
180
  type: "collect",
160
181
  groupby: view.getFacetFields(),
@@ -178,10 +199,18 @@ export function buildDataFlow(root, existingFlow) {
178
199
 
179
200
  for (const dataTree of dataTrees) {
180
201
  visitTree(dataTree, {
181
- preOrder: (node) => processView(node.ref),
202
+ preOrder: (node) => {
203
+ viewStack.push({
204
+ view: node.ref,
205
+ nodeStackDepth: nodeStack.length,
206
+ });
207
+ processView(node.ref);
208
+ },
182
209
  // eslint-disable-next-line no-loop-func
183
210
  postOrder: () => {
184
- currentNode = nodeStack.pop();
211
+ const { nodeStackDepth } = viewStack.pop();
212
+ nodeStack.length = nodeStackDepth;
213
+ currentNode = nodeStack.at(-1);
185
214
  },
186
215
  });
187
216
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=flowBuilder.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowBuilder.test.d.ts","sourceRoot":"","sources":["../../../src/view/flowBuilder.test.js"],"names":[],"mappings":""}
@@ -66,12 +66,6 @@ export default class GridView extends ContainerView {
66
66
  * @protected
67
67
  */
68
68
  protected createAxes(): Promise<void[]>;
69
- /**
70
- * @param {import("./renderingContext/viewRenderingContext.js").default} context
71
- * @param {import("./layout/rectangle.js").default} coords
72
- * @param {import("../types/rendering.js").RenderingOptions} [options]
73
- */
74
- render(context: import("./renderingContext/viewRenderingContext.js").default, coords: import("./layout/rectangle.js").default, options?: import("../types/rendering.js").RenderingOptions): void;
75
69
  #private;
76
70
  }
77
71
  export class GridChild {
@@ -1 +1 @@
1
- {"version":3,"file":"gridView.d.ts","sourceRoot":"","sources":["../../../src/view/gridView.js"],"names":[],"mappings":"AAswBA;;;GAGG;AACH,iDAHW,OAAO,iBAAiB,EAAE,cAAc,GACtC,OAAO,iBAAiB,EAAE,QAAQ,CAwB9C;AAED;;;GAGG;AACH,uDAHW,OAAO,iBAAiB,EAAE,cAAc,GACtC,OAAO,iBAAiB,EAAE,QAAQ,CA6C9C;AA2BD;;GAEG;AACH,8EAUC;AAED;;;;;GAKG;AACH,4CAJW,OAAO,uBAAuB,EAAE,OAAO,UACvC,OAAO,iBAAiB,EAAE,UAAU,YACpC,QAAQ,aAmBlB;AA53BD;;;;;;;;;;;;;;;GAeG;AACH;IA6BI;;;;;;;;;OASG;IACH,kBARW,OAAO,iBAAiB,EAAE,aAAa,WACvC,OAAO,yBAAyB,EAAE,OAAO,gBACzC,aAAa,iDAEb,MAAM,WACN,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAoBzC;IARG,8CAAgB;IAOhB,uBAA0B;IAG9B;;OAEG;IACH,qDAIC;IAeD;;OAEG;IACH,wDAKC;IAqBD;;OAEG;IACH,8CAEC;IAED,yBAEC;IAED;;OAEG;IACH,wCAmCC;IA2OD;;;;OAIG;IAEH,gBALW,OAAO,4CAA4C,EAAE,OAAO,UAC5D,OAAO,uBAAuB,EAAE,OAAO,YACvC,OAAO,uBAAuB,EAAE,gBAAgB,QA6O1D;;CAoGJ;AAgJD;IACI;;;;OAIG;IACH,6DAHW,aAAa,UACb,MAAM,EAoFhB;IAjFG,4BAAgC;IAChC,kCAAgB;IAChB,eAAoB;IAEpB,uBAAuB;IACvB,YADW,QAAQ,CACQ;IAE3B,uBAAuB;IACvB,kBADW,QAAQ,CACc;IAEjC,mFAAmF;IACnF,MADW,QAAQ,OAAO,OAAO,iBAAiB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAC5D;IAEd,4FAA4F;IAC5F,WADW,QAAQ,OAAO,OAAO,iBAAiB,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAC3D;IAEnB,0DAA0D;IAC1D,kEAAoB;IAEpB,uBAAuB;IACvB,OADW,QAAQ,CACG;IAEtB,wBAAwB;IACxB,QADW,SAAS,CACQ;IA4DhC,uEAcC;IAED;;OAEG;IACH,4BAkKC;IAED,uBAqBC;IAED,iCAEC;CACJ;qBAlrC0D,eAAe;sBAFpD,uBAAuB;0BAGnB,oBAAoB;qBAGzB,eAAe;yBALX,mBAAmB;AAqrC5C;IAeI;;;OAGG;IACH,uBAHW,SAAS,8CA6FnB;IAhGD,uBAAmB;IAsCf;;;MAAoB;IAIpB;;;;MAQC;IAgDL,2BAKC;IAWD;;;;OAIG;IACH,gCAHW,SAAS,UACT,SAAS,QA8CnB;;CACJ;oBAx2CmB,qBAAqB"}
1
+ {"version":3,"file":"gridView.d.ts","sourceRoot":"","sources":["../../../src/view/gridView.js"],"names":[],"mappings":"AAswBA;;;GAGG;AACH,iDAHW,OAAO,iBAAiB,EAAE,cAAc,GACtC,OAAO,iBAAiB,EAAE,QAAQ,CAwB9C;AAED;;;GAGG;AACH,uDAHW,OAAO,iBAAiB,EAAE,cAAc,GACtC,OAAO,iBAAiB,EAAE,QAAQ,CA6C9C;AA2BD;;GAEG;AACH,8EAUC;AAED;;;;;GAKG;AACH,4CAJW,OAAO,uBAAuB,EAAE,OAAO,UACvC,OAAO,iBAAiB,EAAE,UAAU,YACpC,QAAQ,aAmBlB;AA53BD;;;;;;;;;;;;;;;GAeG;AACH;IA6BI;;;;;;;;;OASG;IACH,kBARW,OAAO,iBAAiB,EAAE,aAAa,WACvC,OAAO,yBAAyB,EAAE,OAAO,gBACzC,aAAa,iDAEb,MAAM,WACN,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAoBzC;IARG,8CAAgB;IAOhB,uBAA0B;IAG9B;;OAEG;IACH,qDAIC;IAeD;;OAEG;IACH,wDAKC;IAqBD;;OAEG;IACH,8CAEC;IAED,yBAEC;IAED;;OAEG;IACH,wCAmCC;;CA+jBJ;AAgJD;IACI;;;;OAIG;IACH,6DAHW,aAAa,UACb,MAAM,EAoFhB;IAjFG,4BAAgC;IAChC,kCAAgB;IAChB,eAAoB;IAEpB,uBAAuB;IACvB,YADW,QAAQ,CACQ;IAE3B,uBAAuB;IACvB,kBADW,QAAQ,CACc;IAEjC,mFAAmF;IACnF,MADW,QAAQ,OAAO,OAAO,iBAAiB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAC5D;IAEd,4FAA4F;IAC5F,WADW,QAAQ,OAAO,OAAO,iBAAiB,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAC3D;IAEnB,0DAA0D;IAC1D,kEAAoB;IAEpB,uBAAuB;IACvB,OADW,QAAQ,CACG;IAEtB,wBAAwB;IACxB,QADW,SAAS,CACQ;IA4DhC,uEAcC;IAED;;OAEG;IACH,4BAkKC;IAED,uBAqBC;IAED,iCAEC;CACJ;qBAlrC0D,eAAe;sBAFpD,uBAAuB;0BAGnB,oBAAoB;qBAGzB,eAAe;yBALX,mBAAmB;AAqrC5C;IAeI;;;OAGG;IACH,uBAHW,SAAS,8CA6FnB;IAhGD,uBAAmB;IAsCf;;;MAAoB;IAIpB;;;;MAQC;IAgDL,2BAKC;IAWD;;;;OAIG;IACH,gCAHW,SAAS,UACT,SAAS,QA8CnB;;CACJ;oBAx2CmB,qBAAqB"}
@@ -11,12 +11,6 @@ export default class LayerView extends ContainerView {
11
11
  constructor(spec: import("../spec/view.js").LayerSpec, context: import("../types/viewContext.js").default, layoutParent: ContainerView, dataParent: import("./view.js").default, name: string, options?: import("./view.js").ViewOptions);
12
12
  spec: import("../spec/view.js").LayerSpec;
13
13
  get children(): (import("./unitView.js").default | LayerView)[];
14
- /**
15
- * @param {import("./renderingContext/viewRenderingContext.js").default} context
16
- * @param {import("./layout/rectangle.js").default} coords
17
- * @param {import("../types/rendering.js").RenderingOptions} [options]
18
- */
19
- render(context: import("./renderingContext/viewRenderingContext.js").default, coords: import("./layout/rectangle.js").default, options?: import("../types/rendering.js").RenderingOptions): void;
20
14
  #private;
21
15
  }
22
16
  import ContainerView from "./containerView.js";
@@ -1 +1 @@
1
- {"version":3,"file":"layerView.d.ts","sourceRoot":"","sources":["../../../src/view/layerView.js"],"names":[],"mappings":"AAIA;IAQI;;;;;;;;OAQG;IACH,kBAPW,OAAO,iBAAiB,EAAE,SAAS,WACnC,OAAO,yBAAyB,EAAE,OAAO,gBACzC,aAAa,cACb,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAQzC;IAHG,0CAAgB;IAoCpB,gEAEC;IAWD;;;;OAIG;IACH,gBAJW,OAAO,4CAA4C,EAAE,OAAO,UAC5D,OAAO,uBAAuB,EAAE,OAAO,YACvC,OAAO,uBAAuB,EAAE,gBAAgB,QAgB1D;;CAeJ;0BA1GyB,oBAAoB"}
1
+ {"version":3,"file":"layerView.d.ts","sourceRoot":"","sources":["../../../src/view/layerView.js"],"names":[],"mappings":"AAIA;IAQI;;;;;;;;OAQG;IACH,kBAPW,OAAO,iBAAiB,EAAE,SAAS,WACnC,OAAO,yBAAyB,EAAE,OAAO,gBACzC,aAAa,cACb,OAAO,WAAW,EAAE,OAAO,QAC3B,MAAM,YACN,OAAO,WAAW,EAAE,WAAW,EAQzC;IAHG,0CAAgB;IAoCpB,gEAEC;;CA6CJ;0BA1GyB,oBAAoB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=flexLayout.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flexLayout.test.d.ts","sourceRoot":"","sources":["../../../../src/view/layout/flexLayout.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=grid.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.test.d.ts","sourceRoot":"","sources":["../../../../src/view/layout/grid.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rectangle.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rectangle.test.d.ts","sourceRoot":"","sources":["../../../../src/view/layout/rectangle.test.js"],"names":[],"mappings":""}