@deck.gl/aggregation-layers 8.6.2 → 8.6.3
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/dist.dev.js +264 -264
- package/dist/es5/aggregation-layer.js +109 -163
- package/dist/es5/aggregation-layer.js.map +1 -1
- package/dist/es5/contour-layer/contour-layer.js +240 -260
- package/dist/es5/contour-layer/contour-layer.js.map +1 -1
- package/dist/es5/contour-layer/contour-utils.js +65 -86
- package/dist/es5/contour-layer/contour-utils.js.map +1 -1
- package/dist/es5/contour-layer/marching-squares-codes.js +181 -106
- package/dist/es5/contour-layer/marching-squares-codes.js.map +1 -1
- package/dist/es5/contour-layer/marching-squares.js +56 -59
- package/dist/es5/contour-layer/marching-squares.js.map +1 -1
- package/dist/es5/cpu-grid-layer/cpu-grid-layer.js +85 -121
- package/dist/es5/cpu-grid-layer/cpu-grid-layer.js.map +1 -1
- package/dist/es5/cpu-grid-layer/grid-aggregator.js +93 -119
- package/dist/es5/cpu-grid-layer/grid-aggregator.js.map +1 -1
- package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer.js +131 -167
- package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer.js.map +1 -1
- package/dist/es5/gpu-grid-layer/gpu-grid-layer.js +319 -322
- package/dist/es5/gpu-grid-layer/gpu-grid-layer.js.map +1 -1
- package/dist/es5/grid-aggregation-layer.js +202 -230
- package/dist/es5/grid-aggregation-layer.js.map +1 -1
- package/dist/es5/grid-layer/grid-layer.js +61 -91
- package/dist/es5/grid-layer/grid-layer.js.map +1 -1
- package/dist/es5/heatmap-layer/heatmap-layer-utils.js +24 -59
- package/dist/es5/heatmap-layer/heatmap-layer-utils.js.map +1 -1
- package/dist/es5/heatmap-layer/heatmap-layer.js +515 -533
- package/dist/es5/heatmap-layer/heatmap-layer.js.map +1 -1
- package/dist/es5/heatmap-layer/triangle-layer.js +64 -91
- package/dist/es5/heatmap-layer/triangle-layer.js.map +1 -1
- package/dist/es5/hexagon-layer/hexagon-aggregator.js +59 -77
- package/dist/es5/hexagon-layer/hexagon-aggregator.js.map +1 -1
- package/dist/es5/hexagon-layer/hexagon-layer.js +121 -164
- package/dist/es5/hexagon-layer/hexagon-layer.js.map +1 -1
- package/dist/es5/index.js +12 -12
- package/dist/es5/screen-grid-layer/screen-grid-cell-layer.js +168 -193
- package/dist/es5/screen-grid-layer/screen-grid-cell-layer.js.map +1 -1
- package/dist/es5/screen-grid-layer/screen-grid-layer.js +235 -250
- package/dist/es5/screen-grid-layer/screen-grid-layer.js.map +1 -1
- package/dist/es5/utils/aggregation-operation-utils.js +16 -31
- package/dist/es5/utils/aggregation-operation-utils.js.map +1 -1
- package/dist/es5/utils/bin-sorter.js +118 -198
- package/dist/es5/utils/bin-sorter.js.map +1 -1
- package/dist/es5/utils/color-utils.js +8 -10
- package/dist/es5/utils/color-utils.js.map +1 -1
- package/dist/es5/utils/cpu-aggregator.js +323 -342
- package/dist/es5/utils/cpu-aggregator.js.map +1 -1
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.js +20 -18
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.js.map +1 -1
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator.js +545 -545
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator.js.map +1 -1
- package/dist/es5/utils/grid-aggregation-utils.js +50 -44
- package/dist/es5/utils/grid-aggregation-utils.js.map +1 -1
- package/dist/es5/utils/prop-utils.js +2 -2
- package/dist/es5/utils/prop-utils.js.map +1 -1
- package/dist/es5/utils/resource-utils.js +32 -39
- package/dist/es5/utils/resource-utils.js.map +1 -1
- package/dist/es5/utils/scale-utils.js +36 -66
- package/dist/es5/utils/scale-utils.js.map +1 -1
- package/package.json +2 -2
|
@@ -20,59 +20,41 @@ exports.getScaleFunctionByScaleType = getScaleFunctionByScaleType;
|
|
|
20
20
|
|
|
21
21
|
var _core = require("@deck.gl/core");
|
|
22
22
|
|
|
23
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
24
|
-
|
|
25
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
26
|
-
|
|
27
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
28
|
-
|
|
29
23
|
function getScale(domain, range, scaleFunction) {
|
|
30
|
-
|
|
24
|
+
const scale = scaleFunction;
|
|
31
25
|
|
|
32
|
-
scale.domain =
|
|
33
|
-
return domain;
|
|
34
|
-
};
|
|
26
|
+
scale.domain = () => domain;
|
|
35
27
|
|
|
36
|
-
scale.range =
|
|
37
|
-
return range;
|
|
38
|
-
};
|
|
28
|
+
scale.range = () => range;
|
|
39
29
|
|
|
40
30
|
return scale;
|
|
41
31
|
}
|
|
42
32
|
|
|
43
33
|
function getQuantizeScale(domain, range) {
|
|
44
|
-
|
|
45
|
-
return quantizeScale(domain, range, value);
|
|
46
|
-
};
|
|
34
|
+
const scaleFunction = value => quantizeScale(domain, range, value);
|
|
47
35
|
|
|
48
36
|
return getScale(domain, range, scaleFunction);
|
|
49
37
|
}
|
|
50
38
|
|
|
51
39
|
function getLinearScale(domain, range) {
|
|
52
|
-
|
|
53
|
-
return linearScale(domain, range, value);
|
|
54
|
-
};
|
|
40
|
+
const scaleFunction = value => linearScale(domain, range, value);
|
|
55
41
|
|
|
56
42
|
return getScale(domain, range, scaleFunction);
|
|
57
43
|
}
|
|
58
44
|
|
|
59
45
|
function getQuantileScale(domain, range) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
46
|
+
const sortedDomain = domain.sort(ascending);
|
|
47
|
+
let i = 0;
|
|
48
|
+
const n = Math.max(1, range.length);
|
|
49
|
+
const thresholds = new Array(n - 1);
|
|
64
50
|
|
|
65
51
|
while (++i < n) {
|
|
66
52
|
thresholds[i - 1] = threshold(sortedDomain, i / n);
|
|
67
53
|
}
|
|
68
54
|
|
|
69
|
-
|
|
70
|
-
return thresholdsScale(thresholds, range, value);
|
|
71
|
-
};
|
|
55
|
+
const scaleFunction = value => thresholdsScale(thresholds, range, value);
|
|
72
56
|
|
|
73
|
-
scaleFunction.thresholds =
|
|
74
|
-
return thresholds;
|
|
75
|
-
};
|
|
57
|
+
scaleFunction.thresholds = () => thresholds;
|
|
76
58
|
|
|
77
59
|
return getScale(domain, range, scaleFunction);
|
|
78
60
|
}
|
|
@@ -82,7 +64,7 @@ function ascending(a, b) {
|
|
|
82
64
|
}
|
|
83
65
|
|
|
84
66
|
function threshold(domain, fraction) {
|
|
85
|
-
|
|
67
|
+
const domainLength = domain.length;
|
|
86
68
|
|
|
87
69
|
if (fraction <= 0 || domainLength < 2) {
|
|
88
70
|
return domain[0];
|
|
@@ -92,19 +74,19 @@ function threshold(domain, fraction) {
|
|
|
92
74
|
return domain[domainLength - 1];
|
|
93
75
|
}
|
|
94
76
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
77
|
+
const domainFraction = (domainLength - 1) * fraction;
|
|
78
|
+
const lowIndex = Math.floor(domainFraction);
|
|
79
|
+
const low = domain[lowIndex];
|
|
80
|
+
const high = domain[lowIndex + 1];
|
|
99
81
|
return low + (high - low) * (domainFraction - lowIndex);
|
|
100
82
|
}
|
|
101
83
|
|
|
102
84
|
function bisectRight(a, x) {
|
|
103
|
-
|
|
104
|
-
|
|
85
|
+
let lo = 0;
|
|
86
|
+
let hi = a.length;
|
|
105
87
|
|
|
106
88
|
while (lo < hi) {
|
|
107
|
-
|
|
89
|
+
const mid = lo + hi >>> 1;
|
|
108
90
|
|
|
109
91
|
if (ascending(a[mid], x) > 0) {
|
|
110
92
|
hi = mid;
|
|
@@ -121,8 +103,8 @@ function thresholdsScale(thresholds, range, value) {
|
|
|
121
103
|
}
|
|
122
104
|
|
|
123
105
|
function ordinalScale(domain, domainMap, range, value) {
|
|
124
|
-
|
|
125
|
-
|
|
106
|
+
const key = "".concat(value);
|
|
107
|
+
let d = domainMap.get(key);
|
|
126
108
|
|
|
127
109
|
if (d === undefined) {
|
|
128
110
|
d = domain.push(value);
|
|
@@ -133,36 +115,24 @@ function ordinalScale(domain, domainMap, range, value) {
|
|
|
133
115
|
}
|
|
134
116
|
|
|
135
117
|
function getOrdinalScale(domain, range) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
var _iterator = _createForOfIteratorHelper(domain),
|
|
140
|
-
_step;
|
|
118
|
+
const domainMap = new Map();
|
|
119
|
+
const uniqueDomain = [];
|
|
141
120
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
var d = _step.value;
|
|
145
|
-
var key = "".concat(d);
|
|
121
|
+
for (const d of domain) {
|
|
122
|
+
const key = "".concat(d);
|
|
146
123
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}
|
|
124
|
+
if (!domainMap.has(key)) {
|
|
125
|
+
domainMap.set(key, uniqueDomain.push(d));
|
|
150
126
|
}
|
|
151
|
-
} catch (err) {
|
|
152
|
-
_iterator.e(err);
|
|
153
|
-
} finally {
|
|
154
|
-
_iterator.f();
|
|
155
127
|
}
|
|
156
128
|
|
|
157
|
-
|
|
158
|
-
return ordinalScale(uniqueDomain, domainMap, range, value);
|
|
159
|
-
};
|
|
129
|
+
const scaleFunction = value => ordinalScale(uniqueDomain, domainMap, range, value);
|
|
160
130
|
|
|
161
131
|
return getScale(domain, range, scaleFunction);
|
|
162
132
|
}
|
|
163
133
|
|
|
164
134
|
function quantizeScale(domain, range, value) {
|
|
165
|
-
|
|
135
|
+
const domainRange = domain[1] - domain[0];
|
|
166
136
|
|
|
167
137
|
if (domainRange <= 0) {
|
|
168
138
|
_core.log.warn('quantizeScale: invalid domain, returning range[0]')();
|
|
@@ -170,9 +140,9 @@ function quantizeScale(domain, range, value) {
|
|
|
170
140
|
return range[0];
|
|
171
141
|
}
|
|
172
142
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
143
|
+
const step = domainRange / range.length;
|
|
144
|
+
const idx = Math.floor((value - domain[0]) / step);
|
|
145
|
+
const clampIdx = Math.max(Math.min(idx, range.length - 1), 0);
|
|
176
146
|
return range[clampIdx];
|
|
177
147
|
}
|
|
178
148
|
|
|
@@ -185,8 +155,8 @@ function notNullOrUndefined(d) {
|
|
|
185
155
|
}
|
|
186
156
|
|
|
187
157
|
function unique(values) {
|
|
188
|
-
|
|
189
|
-
values.forEach(
|
|
158
|
+
const results = [];
|
|
159
|
+
values.forEach(v => {
|
|
190
160
|
if (!results.includes(v) && notNullOrUndefined(v)) {
|
|
191
161
|
results.push(v);
|
|
192
162
|
}
|
|
@@ -195,12 +165,12 @@ function unique(values) {
|
|
|
195
165
|
}
|
|
196
166
|
|
|
197
167
|
function getTruthyValues(data, valueAccessor) {
|
|
198
|
-
|
|
168
|
+
const values = typeof valueAccessor === 'function' ? data.map(valueAccessor) : data;
|
|
199
169
|
return values.filter(notNullOrUndefined);
|
|
200
170
|
}
|
|
201
171
|
|
|
202
172
|
function getLinearDomain(data, valueAccessor) {
|
|
203
|
-
|
|
173
|
+
const sorted = getTruthyValues(data, valueAccessor).sort();
|
|
204
174
|
return sorted.length ? [sorted[0], sorted[sorted.length - 1]] : [0, 0];
|
|
205
175
|
}
|
|
206
176
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/scale-utils.js"],"names":["getScale","domain","range","scaleFunction","scale","getQuantizeScale","value","quantizeScale","getLinearScale","linearScale","getQuantileScale","sortedDomain","sort","ascending","i","n","Math","max","length","thresholds","Array","threshold","thresholdsScale","a","b","fraction","domainLength","domainFraction","lowIndex","floor","low","high","bisectRight","x","lo","hi","mid","ordinalScale","domainMap","key","d","get","undefined","push","set","getOrdinalScale","Map","uniqueDomain","has","domainRange","log","warn","step","idx","clampIdx","min","notNullOrUndefined","unique","values","results","forEach","v","includes","getTruthyValues","data","valueAccessor","map","filter","getLinearDomain","sorted","getQuantileDomain","getOrdinalDomain","getScaleDomain","scaleType","clamp","getScaleFunctionByScaleType"],"mappings":"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","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {log} from '@deck.gl/core';\n\n// a scale function wrapper just like d3-scales\nexport function getScale(domain, range, scaleFunction) {\n const scale = scaleFunction;\n scale.domain = () => domain;\n scale.range = () => range;\n\n return scale;\n}\n\n// Quantize scale is similar to linear scales,\n// except it uses a discrete rather than continuous range\n// return a quantize scale function\nexport function getQuantizeScale(domain, range) {\n const scaleFunction = value => quantizeScale(domain, range, value);\n\n return getScale(domain, range, scaleFunction);\n}\n\n// return a linear scale function\nexport function getLinearScale(domain, range) {\n const scaleFunction = value => linearScale(domain, range, value);\n\n return getScale(domain, range, scaleFunction);\n}\n\nexport function getQuantileScale(domain, range) {\n // calculate threshold\n const sortedDomain = domain.sort(ascending);\n let i = 0;\n const n = Math.max(1, range.length);\n const thresholds = new Array(n - 1);\n while (++i < n) {\n thresholds[i - 1] = threshold(sortedDomain, i / n);\n }\n\n const scaleFunction = value => thresholdsScale(thresholds, range, value);\n scaleFunction.thresholds = () => thresholds;\n\n return getScale(domain, range, scaleFunction);\n}\n\nfunction ascending(a, b) {\n return a - b;\n}\n\nfunction threshold(domain, fraction) {\n const domainLength = domain.length;\n if (fraction <= 0 || domainLength < 2) {\n return domain[0];\n }\n if (fraction >= 1) {\n return domain[domainLength - 1];\n }\n\n const domainFraction = (domainLength - 1) * fraction;\n const lowIndex = Math.floor(domainFraction);\n const low = domain[lowIndex];\n const high = domain[lowIndex + 1];\n return low + (high - low) * (domainFraction - lowIndex);\n}\n\nfunction bisectRight(a, x) {\n let lo = 0;\n let hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (ascending(a[mid], x) > 0) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return lo;\n}\n\n// return a quantize scale function\nfunction thresholdsScale(thresholds, range, value) {\n return range[bisectRight(thresholds, value)];\n}\n\n// ordinal Scale\nfunction ordinalScale(domain, domainMap, range, value) {\n const key = `${value}`;\n let d = domainMap.get(key);\n if (d === undefined) {\n // update the domain\n d = domain.push(value);\n domainMap.set(key, d);\n }\n return range[(d - 1) % range.length];\n}\n\nexport function getOrdinalScale(domain, range) {\n const domainMap = new Map();\n const uniqueDomain = [];\n for (const d of domain) {\n const key = `${d}`;\n if (!domainMap.has(key)) {\n domainMap.set(key, uniqueDomain.push(d));\n }\n }\n\n const scaleFunction = value => ordinalScale(uniqueDomain, domainMap, range, value);\n\n return getScale(domain, range, scaleFunction);\n}\n\n// Quantize scale is similar to linear scales,\n// except it uses a discrete rather than continuous range\nexport function quantizeScale(domain, range, value) {\n const domainRange = domain[1] - domain[0];\n if (domainRange <= 0) {\n log.warn('quantizeScale: invalid domain, returning range[0]')();\n return range[0];\n }\n const step = domainRange / range.length;\n const idx = Math.floor((value - domain[0]) / step);\n const clampIdx = Math.max(Math.min(idx, range.length - 1), 0);\n\n return range[clampIdx];\n}\n\n// Linear scale maps continuous domain to continuous range\nexport function linearScale(domain, range, value) {\n return ((value - domain[0]) / (domain[1] - domain[0])) * (range[1] - range[0]) + range[0];\n}\n\n// get scale domains\nfunction notNullOrUndefined(d) {\n return d !== undefined && d !== null;\n}\n\nexport function unique(values) {\n const results = [];\n values.forEach(v => {\n if (!results.includes(v) && notNullOrUndefined(v)) {\n results.push(v);\n }\n });\n\n return results;\n}\n\nfunction getTruthyValues(data, valueAccessor) {\n const values = typeof valueAccessor === 'function' ? data.map(valueAccessor) : data;\n return values.filter(notNullOrUndefined);\n}\n\nexport function getLinearDomain(data, valueAccessor) {\n const sorted = getTruthyValues(data, valueAccessor).sort();\n return sorted.length ? [sorted[0], sorted[sorted.length - 1]] : [0, 0];\n}\n\nexport function getQuantileDomain(data, valueAccessor) {\n return getTruthyValues(data, valueAccessor);\n}\n\nexport function getOrdinalDomain(data, valueAccessor) {\n return unique(getTruthyValues(data, valueAccessor));\n}\n\nexport function getScaleDomain(scaleType, data, valueAccessor) {\n switch (scaleType) {\n case 'quantize':\n case 'linear':\n return getLinearDomain(data, valueAccessor);\n\n case 'quantile':\n return getQuantileDomain(data, valueAccessor);\n\n case 'ordinal':\n return getOrdinalDomain(data, valueAccessor);\n\n default:\n return getLinearDomain(data, valueAccessor);\n }\n}\n\nexport function clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n\nexport function getScaleFunctionByScaleType(scaleType) {\n switch (scaleType) {\n case 'quantize':\n return getQuantizeScale;\n case 'linear':\n return getLinearScale;\n case 'quantile':\n return getQuantileScale;\n case 'ordinal':\n return getOrdinalScale;\n\n default:\n return getQuantizeScale;\n }\n}\n"],"file":"scale-utils.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/scale-utils.js"],"names":["getScale","domain","range","scaleFunction","scale","getQuantizeScale","value","quantizeScale","getLinearScale","linearScale","getQuantileScale","sortedDomain","sort","ascending","i","n","Math","max","length","thresholds","Array","threshold","thresholdsScale","a","b","fraction","domainLength","domainFraction","lowIndex","floor","low","high","bisectRight","x","lo","hi","mid","ordinalScale","domainMap","key","d","get","undefined","push","set","getOrdinalScale","Map","uniqueDomain","has","domainRange","log","warn","step","idx","clampIdx","min","notNullOrUndefined","unique","values","results","forEach","v","includes","getTruthyValues","data","valueAccessor","map","filter","getLinearDomain","sorted","getQuantileDomain","getOrdinalDomain","getScaleDomain","scaleType","clamp","getScaleFunctionByScaleType"],"mappings":"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","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {log} from '@deck.gl/core';\n\n// a scale function wrapper just like d3-scales\nexport function getScale(domain, range, scaleFunction) {\n const scale = scaleFunction;\n scale.domain = () => domain;\n scale.range = () => range;\n\n return scale;\n}\n\n// Quantize scale is similar to linear scales,\n// except it uses a discrete rather than continuous range\n// return a quantize scale function\nexport function getQuantizeScale(domain, range) {\n const scaleFunction = value => quantizeScale(domain, range, value);\n\n return getScale(domain, range, scaleFunction);\n}\n\n// return a linear scale function\nexport function getLinearScale(domain, range) {\n const scaleFunction = value => linearScale(domain, range, value);\n\n return getScale(domain, range, scaleFunction);\n}\n\nexport function getQuantileScale(domain, range) {\n // calculate threshold\n const sortedDomain = domain.sort(ascending);\n let i = 0;\n const n = Math.max(1, range.length);\n const thresholds = new Array(n - 1);\n while (++i < n) {\n thresholds[i - 1] = threshold(sortedDomain, i / n);\n }\n\n const scaleFunction = value => thresholdsScale(thresholds, range, value);\n scaleFunction.thresholds = () => thresholds;\n\n return getScale(domain, range, scaleFunction);\n}\n\nfunction ascending(a, b) {\n return a - b;\n}\n\nfunction threshold(domain, fraction) {\n const domainLength = domain.length;\n if (fraction <= 0 || domainLength < 2) {\n return domain[0];\n }\n if (fraction >= 1) {\n return domain[domainLength - 1];\n }\n\n const domainFraction = (domainLength - 1) * fraction;\n const lowIndex = Math.floor(domainFraction);\n const low = domain[lowIndex];\n const high = domain[lowIndex + 1];\n return low + (high - low) * (domainFraction - lowIndex);\n}\n\nfunction bisectRight(a, x) {\n let lo = 0;\n let hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (ascending(a[mid], x) > 0) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return lo;\n}\n\n// return a quantize scale function\nfunction thresholdsScale(thresholds, range, value) {\n return range[bisectRight(thresholds, value)];\n}\n\n// ordinal Scale\nfunction ordinalScale(domain, domainMap, range, value) {\n const key = `${value}`;\n let d = domainMap.get(key);\n if (d === undefined) {\n // update the domain\n d = domain.push(value);\n domainMap.set(key, d);\n }\n return range[(d - 1) % range.length];\n}\n\nexport function getOrdinalScale(domain, range) {\n const domainMap = new Map();\n const uniqueDomain = [];\n for (const d of domain) {\n const key = `${d}`;\n if (!domainMap.has(key)) {\n domainMap.set(key, uniqueDomain.push(d));\n }\n }\n\n const scaleFunction = value => ordinalScale(uniqueDomain, domainMap, range, value);\n\n return getScale(domain, range, scaleFunction);\n}\n\n// Quantize scale is similar to linear scales,\n// except it uses a discrete rather than continuous range\nexport function quantizeScale(domain, range, value) {\n const domainRange = domain[1] - domain[0];\n if (domainRange <= 0) {\n log.warn('quantizeScale: invalid domain, returning range[0]')();\n return range[0];\n }\n const step = domainRange / range.length;\n const idx = Math.floor((value - domain[0]) / step);\n const clampIdx = Math.max(Math.min(idx, range.length - 1), 0);\n\n return range[clampIdx];\n}\n\n// Linear scale maps continuous domain to continuous range\nexport function linearScale(domain, range, value) {\n return ((value - domain[0]) / (domain[1] - domain[0])) * (range[1] - range[0]) + range[0];\n}\n\n// get scale domains\nfunction notNullOrUndefined(d) {\n return d !== undefined && d !== null;\n}\n\nexport function unique(values) {\n const results = [];\n values.forEach(v => {\n if (!results.includes(v) && notNullOrUndefined(v)) {\n results.push(v);\n }\n });\n\n return results;\n}\n\nfunction getTruthyValues(data, valueAccessor) {\n const values = typeof valueAccessor === 'function' ? data.map(valueAccessor) : data;\n return values.filter(notNullOrUndefined);\n}\n\nexport function getLinearDomain(data, valueAccessor) {\n const sorted = getTruthyValues(data, valueAccessor).sort();\n return sorted.length ? [sorted[0], sorted[sorted.length - 1]] : [0, 0];\n}\n\nexport function getQuantileDomain(data, valueAccessor) {\n return getTruthyValues(data, valueAccessor);\n}\n\nexport function getOrdinalDomain(data, valueAccessor) {\n return unique(getTruthyValues(data, valueAccessor));\n}\n\nexport function getScaleDomain(scaleType, data, valueAccessor) {\n switch (scaleType) {\n case 'quantize':\n case 'linear':\n return getLinearDomain(data, valueAccessor);\n\n case 'quantile':\n return getQuantileDomain(data, valueAccessor);\n\n case 'ordinal':\n return getOrdinalDomain(data, valueAccessor);\n\n default:\n return getLinearDomain(data, valueAccessor);\n }\n}\n\nexport function clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n\nexport function getScaleFunctionByScaleType(scaleType) {\n switch (scaleType) {\n case 'quantize':\n return getQuantizeScale;\n case 'linear':\n return getLinearScale;\n case 'quantile':\n return getQuantileScale;\n case 'ordinal':\n return getOrdinalScale;\n\n default:\n return getQuantizeScale;\n }\n}\n"],"file":"scale-utils.js"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@deck.gl/aggregation-layers",
|
|
3
3
|
"description": "deck.gl layers that aggregate the input data into alternative representations",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "8.6.
|
|
5
|
+
"version": "8.6.3",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -37,5 +37,5 @@
|
|
|
37
37
|
"@deck.gl/core": "^8.0.0",
|
|
38
38
|
"@deck.gl/layers": "^8.0.0"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "938ee03697eecbaced24c9df637d53ab42375df1"
|
|
41
41
|
}
|