@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.
- package/dist/bundle/index.es.js +7485 -7097
- package/dist/bundle/index.js +124 -111
- package/dist/schema.json +838 -344
- package/dist/src/data/collector.d.ts +10 -8
- package/dist/src/data/collector.d.ts.map +1 -1
- package/dist/src/data/collector.js +131 -33
- package/dist/src/data/collector.test.d.ts +2 -0
- package/dist/src/data/collector.test.d.ts.map +1 -0
- package/dist/src/data/collector.test.js +55 -1
- package/dist/src/data/dataFlow.test.d.ts +2 -0
- package/dist/src/data/dataFlow.test.d.ts.map +1 -0
- package/dist/src/data/flow.test.d.ts +2 -0
- package/dist/src/data/flow.test.d.ts.map +1 -0
- package/dist/src/data/flow.test.js +19 -14
- package/dist/src/data/flowNode.test.d.ts +2 -0
- package/dist/src/data/flowNode.test.d.ts.map +1 -0
- package/dist/src/data/flowOptimizer.test.d.ts +2 -0
- package/dist/src/data/flowOptimizer.test.d.ts.map +1 -0
- package/dist/src/data/flowOptimizer.test.js +9 -10
- package/dist/src/data/formats/fasta.test.d.ts +2 -0
- package/dist/src/data/formats/fasta.test.d.ts.map +1 -0
- package/dist/src/data/sources/inlineSource.test.d.ts +2 -0
- package/dist/src/data/sources/inlineSource.test.d.ts.map +1 -0
- package/dist/src/data/sources/inlineSource.test.js +23 -16
- package/dist/src/data/sources/sequenceSource.test.d.ts +2 -0
- package/dist/src/data/sources/sequenceSource.test.d.ts.map +1 -0
- package/dist/src/data/sources/sequenceSource.test.js +59 -42
- package/dist/src/data/transforms/clone.test.d.ts +2 -0
- package/dist/src/data/transforms/clone.test.d.ts.map +1 -0
- package/dist/src/data/transforms/coverage.test.d.ts +2 -0
- package/dist/src/data/transforms/coverage.test.d.ts.map +1 -0
- package/dist/src/data/transforms/coverage.test.js +1 -1
- package/dist/src/data/transforms/filter.d.ts +10 -0
- package/dist/src/data/transforms/filter.d.ts.map +1 -1
- package/dist/src/data/transforms/filter.js +30 -1
- package/dist/src/data/transforms/filter.test.d.ts +2 -0
- package/dist/src/data/transforms/filter.test.d.ts.map +1 -0
- package/dist/src/data/transforms/flatten.test.d.ts +2 -0
- package/dist/src/data/transforms/flatten.test.d.ts.map +1 -0
- package/dist/src/data/transforms/flatten.test.js +10 -7
- package/dist/src/data/transforms/flattenDelimited.test.d.ts +2 -0
- package/dist/src/data/transforms/flattenDelimited.test.d.ts.map +1 -0
- package/dist/src/data/transforms/flattenDelimited.test.js +16 -13
- package/dist/src/data/transforms/flattenSequence.test.d.ts +2 -0
- package/dist/src/data/transforms/flattenSequence.test.d.ts.map +1 -0
- package/dist/src/data/transforms/flattenSequence.test.js +1 -1
- package/dist/src/data/transforms/formula.test.d.ts +2 -0
- package/dist/src/data/transforms/formula.test.d.ts.map +1 -0
- package/dist/src/data/transforms/formula.test.js +1 -1
- package/dist/src/data/transforms/identifier.d.ts +1 -1
- package/dist/src/data/transforms/identifier.d.ts.map +1 -1
- package/dist/src/data/transforms/identifier.js +2 -2
- package/dist/src/data/transforms/identifier.test.d.ts +2 -0
- package/dist/src/data/transforms/identifier.test.d.ts.map +1 -0
- package/dist/src/data/transforms/identifier.test.js +23 -14
- package/dist/src/data/transforms/pileup.test.d.ts +2 -0
- package/dist/src/data/transforms/pileup.test.d.ts.map +1 -0
- package/dist/src/data/transforms/project.test.d.ts +2 -0
- package/dist/src/data/transforms/project.test.d.ts.map +1 -0
- package/dist/src/data/transforms/project.test.js +1 -1
- package/dist/src/data/transforms/regexExtract.test.d.ts +2 -0
- package/dist/src/data/transforms/regexExtract.test.d.ts.map +1 -0
- package/dist/src/data/transforms/regexExtract.test.js +6 -3
- package/dist/src/data/transforms/regexFold.test.d.ts +2 -0
- package/dist/src/data/transforms/regexFold.test.d.ts.map +1 -0
- package/dist/src/data/transforms/sample.test.d.ts +2 -0
- package/dist/src/data/transforms/sample.test.d.ts.map +1 -0
- package/dist/src/data/transforms/stack.test.d.ts +2 -0
- package/dist/src/data/transforms/stack.test.d.ts.map +1 -0
- package/dist/src/data/transforms/stack.test.js +8 -8
- package/dist/src/encoder/accessor.d.ts +17 -14
- package/dist/src/encoder/accessor.d.ts.map +1 -1
- package/dist/src/encoder/accessor.js +127 -56
- package/dist/src/encoder/accessor.test.d.ts +2 -0
- package/dist/src/encoder/accessor.test.d.ts.map +1 -0
- package/dist/src/encoder/accessor.test.js +145 -31
- package/dist/src/encoder/encoder.d.ts +26 -13
- package/dist/src/encoder/encoder.d.ts.map +1 -1
- package/dist/src/encoder/encoder.js +98 -114
- package/dist/src/encoder/encoder.test.d.ts +2 -0
- package/dist/src/encoder/encoder.test.d.ts.map +1 -0
- package/dist/src/encoder/encoder.test.js +85 -82
- package/dist/src/fonts/bmFontManager.d.ts.map +1 -1
- package/dist/src/fonts/bmFontManager.js +10 -4
- package/dist/src/genome/genome.test.d.ts +2 -0
- package/dist/src/genome/genome.test.d.ts.map +1 -0
- package/dist/src/genome/scaleIndex.test.d.ts +2 -0
- package/dist/src/genome/scaleIndex.test.d.ts.map +1 -0
- package/dist/src/genome/scaleLocus.test.d.ts +2 -0
- package/dist/src/genome/scaleLocus.test.d.ts.map +1 -0
- package/dist/src/genomeSpy.d.ts +3 -2
- package/dist/src/genomeSpy.d.ts.map +1 -1
- package/dist/src/genomeSpy.js +29 -21
- package/dist/src/gl/dataToVertices.d.ts +5 -7
- package/dist/src/gl/dataToVertices.d.ts.map +1 -1
- package/dist/src/gl/dataToVertices.js +42 -30
- package/dist/src/gl/glslScaleGenerator.d.ts +84 -15
- package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
- package/dist/src/gl/glslScaleGenerator.js +260 -73
- package/dist/src/gl/includes/picking.vertex.glsl.js +1 -1
- package/dist/src/marks/link.common.glsl.js +1 -1
- package/dist/src/marks/link.d.ts.map +1 -1
- package/dist/src/marks/link.js +10 -0
- package/dist/src/marks/link.vertex.glsl.js +1 -1
- package/dist/src/marks/mark.d.ts +6 -9
- package/dist/src/marks/mark.d.ts.map +1 -1
- package/dist/src/marks/mark.js +212 -95
- package/dist/src/marks/point.d.ts.map +1 -1
- package/dist/src/marks/point.js +5 -1
- package/dist/src/marks/rect.d.ts.map +1 -1
- package/dist/src/marks/rect.js +9 -4
- package/dist/src/marks/rule.d.ts.map +1 -1
- package/dist/src/marks/rule.js +4 -0
- package/dist/src/marks/text.d.ts.map +1 -1
- package/dist/src/marks/text.js +5 -1
- package/dist/src/scale/scale.test.d.ts +2 -0
- package/dist/src/scale/scale.test.d.ts.map +1 -0
- package/dist/src/scale/scale.test.js +2 -0
- package/dist/src/scale/ticks.test.d.ts +2 -0
- package/dist/src/scale/ticks.test.d.ts.map +1 -0
- package/dist/src/scale/ticks.test.js +6 -0
- package/dist/src/selection/selection.d.ts +39 -0
- package/dist/src/selection/selection.d.ts.map +1 -0
- package/dist/src/selection/selection.js +78 -0
- package/dist/src/spec/channel.d.ts +137 -83
- package/dist/src/spec/mark.d.ts +9 -0
- package/dist/src/spec/parameter.d.ts +112 -3
- package/dist/src/spec/root.d.ts +0 -1
- package/dist/src/spec/transform.d.ts +19 -1
- package/dist/src/spec/view.d.ts +3 -3
- package/dist/src/tooltip/dataTooltipHandler.js +1 -1
- package/dist/src/types/encoder.d.ts +80 -26
- package/dist/src/types/rendering.d.ts +1 -0
- package/dist/src/types/selectionTypes.d.ts +44 -0
- package/dist/src/types/viewContext.d.ts +1 -4
- package/dist/src/utils/addBaseUrl.test.d.ts +2 -0
- package/dist/src/utils/addBaseUrl.test.d.ts.map +1 -0
- package/dist/src/utils/animator.d.ts.map +1 -1
- package/dist/src/utils/animator.js +3 -1
- package/dist/src/utils/binnedIndex.test.d.ts +2 -0
- package/dist/src/utils/binnedIndex.test.d.ts.map +1 -0
- package/dist/src/utils/cloner.test.d.ts +2 -0
- package/dist/src/utils/cloner.test.d.ts.map +1 -0
- package/dist/src/utils/coalesce.test.d.ts +2 -0
- package/dist/src/utils/coalesce.test.d.ts.map +1 -0
- package/dist/src/utils/concatIterables.test.d.ts +2 -0
- package/dist/src/utils/concatIterables.test.d.ts.map +1 -0
- package/dist/src/utils/domainArray.test.d.ts +2 -0
- package/dist/src/utils/domainArray.test.d.ts.map +1 -0
- package/dist/src/utils/expression.d.ts +2 -2
- package/dist/src/utils/expression.d.ts.map +1 -1
- package/dist/src/utils/expression.js +11 -2
- package/dist/src/utils/indexer.test.d.ts +2 -0
- package/dist/src/utils/indexer.test.d.ts.map +1 -0
- package/dist/src/utils/inertia.d.ts.map +1 -1
- package/dist/src/utils/inertia.js +4 -0
- package/dist/src/utils/inputBinding.d.ts.map +1 -1
- package/dist/src/utils/inputBinding.js +4 -0
- package/dist/src/utils/iterateNestedMaps.d.ts +4 -3
- package/dist/src/utils/iterateNestedMaps.d.ts.map +1 -1
- package/dist/src/utils/iterateNestedMaps.js +3 -2
- package/dist/src/utils/iterateNestedMaps.test.d.ts +2 -0
- package/dist/src/utils/iterateNestedMaps.test.d.ts.map +1 -0
- package/dist/src/utils/kWayMerge.test.d.ts +2 -0
- package/dist/src/utils/kWayMerge.test.d.ts.map +1 -0
- package/dist/src/utils/mergeObjects.test.d.ts +2 -0
- package/dist/src/utils/mergeObjects.test.d.ts.map +1 -0
- package/dist/src/utils/numberExtractor.test.d.ts +2 -0
- package/dist/src/utils/numberExtractor.test.d.ts.map +1 -0
- package/dist/src/utils/propertyCacher.test.d.ts +2 -0
- package/dist/src/utils/propertyCacher.test.d.ts.map +1 -0
- package/dist/src/utils/propertyCoalescer.test.d.ts +2 -0
- package/dist/src/utils/propertyCoalescer.test.d.ts.map +1 -0
- package/dist/src/utils/propertyCoalescer.test.js +3 -0
- package/dist/src/utils/radixSort.d.ts +9 -0
- package/dist/src/utils/radixSort.d.ts.map +1 -0
- package/dist/src/utils/radixSort.js +130 -0
- package/dist/src/utils/radixSort.test.d.ts +2 -0
- package/dist/src/utils/radixSort.test.d.ts.map +1 -0
- package/dist/src/utils/radixSort.test.js +51 -0
- package/dist/src/utils/reservationMap.test.d.ts +2 -0
- package/dist/src/utils/reservationMap.test.d.ts.map +1 -0
- package/dist/src/utils/ringBuffer.test.d.ts +2 -0
- package/dist/src/utils/ringBuffer.test.d.ts.map +1 -0
- package/dist/src/utils/topK.test.d.ts +2 -0
- package/dist/src/utils/topK.test.d.ts.map +1 -0
- package/dist/src/utils/trees.test.d.ts +2 -0
- package/dist/src/utils/trees.test.d.ts.map +1 -0
- package/dist/src/utils/trees.test.js +8 -3
- package/dist/src/utils/variableTools.test.d.ts +2 -0
- package/dist/src/utils/variableTools.test.d.ts.map +1 -0
- package/dist/src/view/axisResolution.d.ts +19 -6
- package/dist/src/view/axisResolution.d.ts.map +1 -1
- package/dist/src/view/axisResolution.js +16 -7
- package/dist/src/view/axisResolution.test.d.ts +2 -0
- package/dist/src/view/axisResolution.test.d.ts.map +1 -0
- package/dist/src/view/axisResolution.test.js +16 -11
- package/dist/src/view/facetView.d.ts +1 -1
- package/dist/src/view/facetView.d.ts.map +1 -1
- package/dist/src/view/flowBuilder.d.ts +1 -1
- package/dist/src/view/flowBuilder.d.ts.map +1 -1
- package/dist/src/view/flowBuilder.js +34 -5
- package/dist/src/view/flowBuilder.test.d.ts +2 -0
- package/dist/src/view/flowBuilder.test.d.ts.map +1 -0
- package/dist/src/view/gridView.d.ts +0 -6
- package/dist/src/view/gridView.d.ts.map +1 -1
- package/dist/src/view/layerView.d.ts +0 -6
- package/dist/src/view/layerView.d.ts.map +1 -1
- package/dist/src/view/layout/flexLayout.test.d.ts +2 -0
- package/dist/src/view/layout/flexLayout.test.d.ts.map +1 -0
- package/dist/src/view/layout/grid.test.d.ts +2 -0
- package/dist/src/view/layout/grid.test.d.ts.map +1 -0
- package/dist/src/view/layout/rectangle.test.d.ts +2 -0
- package/dist/src/view/layout/rectangle.test.d.ts.map +1 -0
- package/dist/src/view/paramMediator.d.ts +32 -5
- package/dist/src/view/paramMediator.d.ts.map +1 -1
- package/dist/src/view/paramMediator.js +97 -9
- package/dist/src/view/paramMediator.test.d.ts +2 -0
- package/dist/src/view/paramMediator.test.d.ts.map +1 -0
- package/dist/src/view/paramMediator.test.js +17 -1
- package/dist/src/view/scaleResolution.d.ts +17 -9
- package/dist/src/view/scaleResolution.d.ts.map +1 -1
- package/dist/src/view/scaleResolution.js +51 -34
- package/dist/src/view/scaleResolution.test.d.ts +2 -0
- package/dist/src/view/scaleResolution.test.d.ts.map +1 -0
- package/dist/src/view/scaleResolution.test.js +2 -0
- package/dist/src/view/testUtils.d.ts.map +1 -1
- package/dist/src/view/testUtils.js +15 -3
- package/dist/src/view/unitView.d.ts +5 -15
- package/dist/src/view/unitView.d.ts.map +1 -1
- package/dist/src/view/unitView.js +81 -101
- package/dist/src/view/view.d.ts +1 -1
- package/dist/src/view/view.d.ts.map +1 -1
- package/dist/src/view/view.test.d.ts +2 -0
- package/dist/src/view/view.test.d.ts.map +1 -0
- package/dist/src/view/view.test.js +73 -55
- package/dist/src/view/viewFactory.test.d.ts +2 -0
- package/dist/src/view/viewFactory.test.d.ts.map +1 -0
- package/dist/src/view/viewFactory.test.js +2 -2
- package/dist/src/view/zoom.js +2 -2
- 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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"reservationMap.test.d.ts","sourceRoot":"","sources":["../../../src/utils/reservationMap.test.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ringBuffer.test.d.ts","sourceRoot":"","sources":["../../../src/utils/ringBuffer.test.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topK.test.d.ts","sourceRoot":"","sources":["../../../src/utils/topK.test.js"],"names":[],"mappings":""}
|
|
@@ -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:
|
|
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:
|
|
46
|
+
const a = { parent: NULL };
|
|
45
47
|
const b = { parent: a };
|
|
46
48
|
|
|
47
|
-
const c = { parent:
|
|
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 @@
|
|
|
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 {
|
|
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 {
|
|
11
|
-
members:
|
|
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 {
|
|
18
|
-
* @param {import("../spec/channel.js").PositionalChannel} channel TODO: Do something for this
|
|
26
|
+
* @param {AxisResolutionMember} newMember
|
|
19
27
|
*/
|
|
20
|
-
pushUnitView(
|
|
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
|
|
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 {
|
|
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 {
|
|
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 {
|
|
39
|
-
* @param {import("../spec/channel.js").PositionalChannel} channel TODO: Do something for this
|
|
47
|
+
* @param {AxisResolutionMember} newMember
|
|
40
48
|
*/
|
|
41
|
-
pushUnitView(
|
|
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(
|
|
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 {
|
|
93
|
+
/** @param {AxisResolutionMember} member} */
|
|
85
94
|
const computeTitle = (member) => {
|
|
86
95
|
const channelDef = getChannelDefWithScale(
|
|
87
96
|
member.view,
|
|
@@ -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
|
|
45
|
-
|
|
46
|
-
|
|
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(
|
|
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"):
|
|
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,
|
|
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
|
|
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,
|
|
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 (
|
|
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) =>
|
|
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
|
-
|
|
211
|
+
const { nodeStackDepth } = viewStack.pop();
|
|
212
|
+
nodeStack.length = nodeStackDepth;
|
|
213
|
+
currentNode = nodeStack.at(-1);
|
|
185
214
|
},
|
|
186
215
|
});
|
|
187
216
|
}
|
|
@@ -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
|
|
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
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"flexLayout.test.d.ts","sourceRoot":"","sources":["../../../../src/view/layout/flexLayout.test.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.test.d.ts","sourceRoot":"","sources":["../../../../src/view/layout/grid.test.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rectangle.test.d.ts","sourceRoot":"","sources":["../../../../src/view/layout/rectangle.test.js"],"names":[],"mappings":""}
|