@genome-spy/core 0.30.0 → 0.30.2
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/index.es.js +16373 -0
- package/dist/index.js +43 -43
- package/package.json +10 -7
- package/src/data/collector.js +0 -183
- package/src/data/collector.test.js +0 -84
- package/src/data/dataFlow.js +0 -148
- package/src/data/dataFlow.test.js +0 -5
- package/src/data/facetNode.js +0 -17
- package/src/data/flow.test.js +0 -72
- package/src/data/flowBatch.d.ts +0 -40
- package/src/data/flowNode.js +0 -283
- package/src/data/flowNode.test.js +0 -50
- package/src/data/flowOptimizer.js +0 -123
- package/src/data/flowOptimizer.test.js +0 -193
- package/src/data/flowTestUtils.js +0 -63
- package/src/data/formats/fasta.js +0 -32
- package/src/data/formats/fasta.test.js +0 -27
- package/src/data/sources/dataSource.js +0 -22
- package/src/data/sources/dataSourceFactory.js +0 -24
- package/src/data/sources/dataUtils.js +0 -78
- package/src/data/sources/dynamicCallbackSource.js +0 -57
- package/src/data/sources/dynamicSource.js +0 -37
- package/src/data/sources/inlineSource.js +0 -67
- package/src/data/sources/inlineSource.test.js +0 -56
- package/src/data/sources/namedSource.js +0 -79
- package/src/data/sources/sequenceSource.js +0 -46
- package/src/data/sources/sequenceSource.test.js +0 -46
- package/src/data/sources/urlSource.js +0 -74
- package/src/data/transforms/aggregate.js +0 -70
- package/src/data/transforms/clone.js +0 -40
- package/src/data/transforms/clone.test.js +0 -11
- package/src/data/transforms/coverage.js +0 -187
- package/src/data/transforms/coverage.test.js +0 -123
- package/src/data/transforms/filter.js +0 -37
- package/src/data/transforms/filter.test.js +0 -18
- package/src/data/transforms/filterScoredLabels.js +0 -134
- package/src/data/transforms/flattenCompressedExons.js +0 -57
- package/src/data/transforms/flattenDelimited.js +0 -74
- package/src/data/transforms/flattenDelimited.test.js +0 -87
- package/src/data/transforms/flattenSequence.js +0 -39
- package/src/data/transforms/flattenSequence.test.js +0 -34
- package/src/data/transforms/formula.js +0 -39
- package/src/data/transforms/formula.test.js +0 -19
- package/src/data/transforms/identifier.js +0 -108
- package/src/data/transforms/identifier.test.js +0 -83
- package/src/data/transforms/linearizeGenomicCoordinate.js +0 -101
- package/src/data/transforms/measureText.js +0 -44
- package/src/data/transforms/pileup.js +0 -128
- package/src/data/transforms/pileup.test.js +0 -70
- package/src/data/transforms/project.js +0 -41
- package/src/data/transforms/project.test.js +0 -32
- package/src/data/transforms/regexExtract.js +0 -61
- package/src/data/transforms/regexExtract.test.js +0 -67
- package/src/data/transforms/regexFold.js +0 -141
- package/src/data/transforms/regexFold.test.js +0 -160
- package/src/data/transforms/sample.js +0 -101
- package/src/data/transforms/sample.test.js +0 -38
- package/src/data/transforms/stack.js +0 -137
- package/src/data/transforms/stack.test.js +0 -91
- package/src/data/transforms/transformFactory.js +0 -60
- package/src/embedApi.d.ts +0 -67
- package/src/encoder/accessor.js +0 -82
- package/src/encoder/accessor.test.js +0 -47
- package/src/encoder/encoder.js +0 -394
- package/src/encoder/encoder.test.js +0 -98
- package/src/fonts/Lato-Regular.json +0 -1267
- package/src/fonts/Lato-Regular.png +0 -0
- package/src/fonts/OFL.txt +0 -93
- package/src/fonts/README.md +0 -3
- package/src/fonts/bmFont.d.ts +0 -58
- package/src/fonts/bmFontManager.js +0 -357
- package/src/fonts/bmFontMetrics.js +0 -108
- package/src/genome/genome.js +0 -317
- package/src/genome/genome.test.js +0 -188
- package/src/genome/genomeStore.js +0 -54
- package/src/genome/locusFormat.js +0 -31
- package/src/genome/scaleIndex.d.ts +0 -38
- package/src/genome/scaleIndex.js +0 -166
- package/src/genome/scaleIndex.test.js +0 -78
- package/src/genome/scaleLocus.d.ts +0 -11
- package/src/genome/scaleLocus.js +0 -108
- package/src/genome/scaleLocus.test.js +0 -4
- package/src/genomeSpy.js +0 -785
- package/src/gl/arrayBuilder.js +0 -199
- package/src/gl/dataToVertices.js +0 -636
- package/src/gl/includes/common.glsl +0 -63
- package/src/gl/includes/picking.fragment.glsl +0 -1
- package/src/gl/includes/picking.vertex.glsl +0 -27
- package/src/gl/includes/sampleFacet.glsl +0 -107
- package/src/gl/includes/scales.glsl +0 -112
- package/src/gl/link.fragment.glsl +0 -18
- package/src/gl/link.vertex.glsl +0 -111
- package/src/gl/point.fragment.glsl +0 -123
- package/src/gl/point.vertex.glsl +0 -129
- package/src/gl/rect.fragment.glsl +0 -51
- package/src/gl/rect.vertex.glsl +0 -114
- package/src/gl/rule.fragment.glsl +0 -52
- package/src/gl/rule.vertex.glsl +0 -89
- package/src/gl/text.fragment.glsl +0 -31
- package/src/gl/text.vertex.glsl +0 -246
- package/src/gl/webGLHelper.js +0 -504
- package/src/img/bowtie.svg +0 -1
- package/src/img/genomespy-favicon.svg +0 -34
- package/src/index.html +0 -11
- package/src/index.js +0 -128
- package/src/marks/link.js +0 -175
- package/src/marks/mark.js +0 -975
- package/src/marks/markUtils.js +0 -125
- package/src/marks/pointMark.js +0 -251
- package/src/marks/rectMark.js +0 -241
- package/src/marks/rule.js +0 -250
- package/src/marks/text.js +0 -278
- package/src/node_modules/.vitest/results.json +0 -1
- package/src/scale/colorUtils.js +0 -184
- package/src/scale/glslScaleGenerator.js +0 -502
- package/src/scale/scale.js +0 -451
- package/src/scale/scale.test.js +0 -324
- package/src/scale/ticks.js +0 -203
- package/src/scale/ticks.test.js +0 -40
- package/src/singlePageApp.js +0 -13
- package/src/spec/axis.d.ts +0 -296
- package/src/spec/channel.d.ts +0 -430
- package/src/spec/data.d.ts +0 -196
- package/src/spec/font.d.ts +0 -15
- package/src/spec/genome.d.ts +0 -35
- package/src/spec/mark.d.ts +0 -429
- package/src/spec/root.d.ts +0 -17
- package/src/spec/sampleView.d.ts +0 -180
- package/src/spec/scale.d.ts +0 -273
- package/src/spec/title.d.ts +0 -102
- package/src/spec/tooltip.d.ts +0 -9
- package/src/spec/transform.d.ts +0 -479
- package/src/spec/view.d.ts +0 -201
- package/src/styles/genome-spy.scss +0 -153
- package/src/tooltip/dataTooltipHandler.js +0 -64
- package/src/tooltip/refseqGeneTooltipHandler.js +0 -78
- package/src/tooltip/tooltipHandler.ts +0 -12
- package/src/types/filetypes.d.ts +0 -14
- package/src/types/flatqueue.d.ts +0 -53
- package/src/types/glsl.d.ts +0 -4
- package/src/types/internmap.d.ts +0 -22
- package/src/types/object.d.ts +0 -21
- package/src/types/vega-loader.d.ts +0 -1
- package/src/types/vega-scale.d.ts +0 -60
- package/src/utils/addBaseUrl.js +0 -19
- package/src/utils/addBaseUrl.test.js +0 -22
- package/src/utils/animator.js +0 -83
- package/src/utils/arrayUtils.js +0 -61
- package/src/utils/binnedIndex.js +0 -167
- package/src/utils/binnedIndex.test.js +0 -155
- package/src/utils/clamp.js +0 -8
- package/src/utils/cloner.js +0 -34
- package/src/utils/cloner.test.js +0 -24
- package/src/utils/coalesce.js +0 -11
- package/src/utils/coalesce.test.js +0 -16
- package/src/utils/concatIterables.js +0 -26
- package/src/utils/concatIterables.test.js +0 -8
- package/src/utils/debounce.js +0 -37
- package/src/utils/domainArray.js +0 -216
- package/src/utils/domainArray.test.js +0 -130
- package/src/utils/eerp.js +0 -13
- package/src/utils/expression.js +0 -32
- package/src/utils/field.js +0 -28
- package/src/utils/formatObject.js +0 -31
- package/src/utils/indexer.js +0 -43
- package/src/utils/indexer.test.js +0 -47
- package/src/utils/inertia.js +0 -124
- package/src/utils/interactionEvent.js +0 -33
- package/src/utils/iterateNestedMaps.js +0 -21
- package/src/utils/iterateNestedMaps.test.js +0 -33
- package/src/utils/kWayMerge.js +0 -42
- package/src/utils/kWayMerge.test.js +0 -26
- package/src/utils/layout/flexLayout.js +0 -368
- package/src/utils/layout/flexLayout.test.js +0 -311
- package/src/utils/layout/grid.js +0 -95
- package/src/utils/layout/grid.test.js +0 -71
- package/src/utils/layout/padding.js +0 -120
- package/src/utils/layout/point.js +0 -23
- package/src/utils/layout/rectangle.js +0 -288
- package/src/utils/layout/rectangle.test.js +0 -172
- package/src/utils/mergeObjects.js +0 -99
- package/src/utils/mergeObjects.test.js +0 -42
- package/src/utils/numberExtractor.js +0 -24
- package/src/utils/numberExtractor.test.js +0 -6
- package/src/utils/point.js +0 -14
- package/src/utils/propertyCacher.js +0 -70
- package/src/utils/propertyCacher.test.js +0 -85
- package/src/utils/propertyCoalescer.js +0 -42
- package/src/utils/propertyCoalescer.test.js +0 -22
- package/src/utils/reservationMap.js +0 -103
- package/src/utils/reservationMap.test.js +0 -20
- package/src/utils/scaleNull.js +0 -19
- package/src/utils/setOperations.js +0 -75
- package/src/utils/smoothstep.js +0 -10
- package/src/utils/throttle.js +0 -34
- package/src/utils/topK.js +0 -76
- package/src/utils/topK.test.js +0 -64
- package/src/utils/transition.js +0 -74
- package/src/utils/ui/tooltip.js +0 -189
- package/src/utils/url.js +0 -22
- package/src/utils/variableTools.js +0 -24
- package/src/utils/variableTools.test.js +0 -13
- package/src/view/axisResolution.js +0 -140
- package/src/view/axisResolution.test.js +0 -201
- package/src/view/axisView.js +0 -747
- package/src/view/concatView.js +0 -45
- package/src/view/containerView.js +0 -159
- package/src/view/facetView.js +0 -491
- package/src/view/flowBuilder.js +0 -367
- package/src/view/flowBuilder.test.js +0 -125
- package/src/view/gridView.js +0 -786
- package/src/view/implicitRootView.js +0 -14
- package/src/view/importView.js +0 -19
- package/src/view/layerView.js +0 -74
- package/src/view/rendering.d.ts +0 -44
- package/src/view/renderingContext/compositeViewRenderingContext.js +0 -51
- package/src/view/renderingContext/deferredViewRenderingContext.js +0 -176
- package/src/view/renderingContext/layoutRecorderViewRenderingContext.js +0 -128
- package/src/view/renderingContext/simpleViewRenderingContext.js +0 -64
- package/src/view/renderingContext/svgViewRenderingContext.js +0 -125
- package/src/view/renderingContext/viewRenderingContext.js +0 -41
- package/src/view/scaleResolution.js +0 -797
- package/src/view/scaleResolution.test.js +0 -572
- package/src/view/scaleResolutionApi.d.ts +0 -40
- package/src/view/testUtils.js +0 -51
- package/src/view/title.js +0 -165
- package/src/view/unitView.js +0 -382
- package/src/view/view.js +0 -612
- package/src/view/view.test.js +0 -214
- package/src/view/viewContext.d.ts +0 -62
- package/src/view/viewFactory.js +0 -181
- package/src/view/viewFactory.test.js +0 -17
- package/src/view/viewUtils.js +0 -327
- package/src/view/zoom.js +0 -89
package/src/scale/scale.js
DELETED
|
@@ -1,451 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Adapted from vega-encode:
|
|
3
|
-
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
|
|
4
|
-
*
|
|
5
|
-
* Copyright (c) 2015-2018, University of Washington Interactive Data Lab
|
|
6
|
-
* All rights reserved.
|
|
7
|
-
*
|
|
8
|
-
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/* eslint-disable */
|
|
12
|
-
// @ts-nocheck
|
|
13
|
-
|
|
14
|
-
// This file is a mess
|
|
15
|
-
// TODO: Fix types, etc.
|
|
16
|
-
|
|
17
|
-
import { tickCount } from "./ticks";
|
|
18
|
-
import {
|
|
19
|
-
error,
|
|
20
|
-
inherits,
|
|
21
|
-
isArray,
|
|
22
|
-
isFunction,
|
|
23
|
-
isString,
|
|
24
|
-
peek,
|
|
25
|
-
stringValue,
|
|
26
|
-
toSet,
|
|
27
|
-
zoomLinear,
|
|
28
|
-
zoomLog,
|
|
29
|
-
zoomPow,
|
|
30
|
-
zoomSymlog,
|
|
31
|
-
} from "vega-util";
|
|
32
|
-
|
|
33
|
-
import {
|
|
34
|
-
Ordinal,
|
|
35
|
-
Band,
|
|
36
|
-
Point,
|
|
37
|
-
Sequential,
|
|
38
|
-
Diverging,
|
|
39
|
-
Linear,
|
|
40
|
-
Log,
|
|
41
|
-
Pow,
|
|
42
|
-
Sqrt,
|
|
43
|
-
Symlog,
|
|
44
|
-
Time,
|
|
45
|
-
UTC,
|
|
46
|
-
Quantile,
|
|
47
|
-
Quantize,
|
|
48
|
-
Threshold,
|
|
49
|
-
BinOrdinal,
|
|
50
|
-
isContinuous,
|
|
51
|
-
isInterpolating,
|
|
52
|
-
isLogarithmic,
|
|
53
|
-
bandSpace,
|
|
54
|
-
interpolateColors,
|
|
55
|
-
interpolateRange,
|
|
56
|
-
interpolate as getInterpolate,
|
|
57
|
-
scale as getScale,
|
|
58
|
-
scheme as getScheme,
|
|
59
|
-
scaleImplicit,
|
|
60
|
-
quantizeInterpolator,
|
|
61
|
-
} from "vega-scale";
|
|
62
|
-
|
|
63
|
-
import { range as sequence } from "d3-array";
|
|
64
|
-
|
|
65
|
-
import { interpolate, interpolateRound } from "d3-interpolate";
|
|
66
|
-
|
|
67
|
-
const Locus = "locus";
|
|
68
|
-
const Index = "index";
|
|
69
|
-
|
|
70
|
-
var DEFAULT_COUNT = 5;
|
|
71
|
-
|
|
72
|
-
function includeZero(scale) {
|
|
73
|
-
const type = scale.type;
|
|
74
|
-
return !scale.bins && (type === Linear || type === Pow || type === Sqrt);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
function includePad(type) {
|
|
78
|
-
return isContinuous(type) && ![Sequential, Index, Locus].includes(type);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
function ensureLogger(logger) {
|
|
82
|
-
return (
|
|
83
|
-
logger || {
|
|
84
|
-
warn: (msg, ...rest) => console.warn(msg, ...rest),
|
|
85
|
-
}
|
|
86
|
-
);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
var SKIP = toSet([
|
|
90
|
-
"set",
|
|
91
|
-
"modified",
|
|
92
|
-
"clear",
|
|
93
|
-
"type",
|
|
94
|
-
"scheme",
|
|
95
|
-
"schemeExtent",
|
|
96
|
-
"schemeCount",
|
|
97
|
-
"domain",
|
|
98
|
-
"domainMin",
|
|
99
|
-
"domainMid",
|
|
100
|
-
"domainMax",
|
|
101
|
-
"domainRaw",
|
|
102
|
-
"domainImplicit",
|
|
103
|
-
"nice",
|
|
104
|
-
"zero",
|
|
105
|
-
"bins",
|
|
106
|
-
"range",
|
|
107
|
-
"rangeStep",
|
|
108
|
-
"round",
|
|
109
|
-
"reverse",
|
|
110
|
-
"interpolate",
|
|
111
|
-
"interpolateGamma",
|
|
112
|
-
"zoom",
|
|
113
|
-
"fp64",
|
|
114
|
-
"name",
|
|
115
|
-
]);
|
|
116
|
-
|
|
117
|
-
export function configureScale(_, scale, logger) {
|
|
118
|
-
logger = ensureLogger(logger);
|
|
119
|
-
|
|
120
|
-
for (const key in _) {
|
|
121
|
-
if (!SKIP[key]) {
|
|
122
|
-
// padding is a scale property for band/point but not others
|
|
123
|
-
if (key === "padding" && includePad(scale.type)) continue;
|
|
124
|
-
// invoke scale property setter, raise warning if not found
|
|
125
|
-
isFunction(scale[key])
|
|
126
|
-
? scale[key](_[key])
|
|
127
|
-
: logger.warn("Unsupported scale property: " + key);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
configureRange(
|
|
132
|
-
scale,
|
|
133
|
-
_,
|
|
134
|
-
configureBins(scale, _, configureDomain(scale, _, logger))
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
*
|
|
140
|
-
* @param {import("../spec/scale").Scale} _
|
|
141
|
-
* @param {*} logger
|
|
142
|
-
* @returns {import("../encoder/encoder").VegaScale}
|
|
143
|
-
*/
|
|
144
|
-
export default function createScale(_, logger) {
|
|
145
|
-
const key = scaleKey(_);
|
|
146
|
-
const scale = getScale(key);
|
|
147
|
-
|
|
148
|
-
if (!scale) {
|
|
149
|
-
throw new Error("Unknown scale type: " + key);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
const scaleInstance = scale();
|
|
153
|
-
|
|
154
|
-
configureScale(_, scaleInstance, logger);
|
|
155
|
-
|
|
156
|
-
return scaleInstance;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
function scaleKey(_) {
|
|
160
|
-
var t = _.type,
|
|
161
|
-
d = "",
|
|
162
|
-
n;
|
|
163
|
-
|
|
164
|
-
// backwards compatibility pre Vega 5.
|
|
165
|
-
if (t === Sequential) return Sequential + "-" + Linear;
|
|
166
|
-
|
|
167
|
-
if (isContinuousColor(_)) {
|
|
168
|
-
n = _.rawDomain
|
|
169
|
-
? _.rawDomain.length
|
|
170
|
-
: _.domain
|
|
171
|
-
? _.domain.length + +(_.domainMid != null)
|
|
172
|
-
: 0;
|
|
173
|
-
d = n === 2 ? Sequential + "-" : n === 3 ? Diverging + "-" : "";
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
return (d + t || Linear).toLowerCase();
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
function isContinuousColor(_) {
|
|
180
|
-
const t = _.type;
|
|
181
|
-
return (
|
|
182
|
-
isContinuous(t) &&
|
|
183
|
-
t !== Time &&
|
|
184
|
-
t !== UTC &&
|
|
185
|
-
(_.scheme || (_.range && _.range.length && _.range.every(isString)))
|
|
186
|
-
);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
export function configureDomain(scale, _, logger) {
|
|
190
|
-
if (!scale.domain) {
|
|
191
|
-
return 0;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
logger = ensureLogger(logger);
|
|
195
|
-
|
|
196
|
-
// check raw domain, if provided use that and exit early
|
|
197
|
-
var raw = rawDomain(scale, _.domainRaw, logger);
|
|
198
|
-
if (raw > -1) return raw;
|
|
199
|
-
|
|
200
|
-
var domain = _.domain,
|
|
201
|
-
type = scale.type,
|
|
202
|
-
zero = _.zero || (_.zero === undefined && includeZero(scale)),
|
|
203
|
-
n,
|
|
204
|
-
mid;
|
|
205
|
-
|
|
206
|
-
if (!domain) return 0;
|
|
207
|
-
|
|
208
|
-
// adjust continuous domain for minimum pixel padding
|
|
209
|
-
if (includePad(type) && _.padding && domain[0] !== peek(domain)) {
|
|
210
|
-
domain = padDomain(
|
|
211
|
-
type,
|
|
212
|
-
domain,
|
|
213
|
-
_.range,
|
|
214
|
-
_.padding,
|
|
215
|
-
_.exponent,
|
|
216
|
-
_.constant
|
|
217
|
-
);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
// adjust domain based on zero, min, max settings
|
|
221
|
-
if (
|
|
222
|
-
zero ||
|
|
223
|
-
_.domainMin != null ||
|
|
224
|
-
_.domainMax != null ||
|
|
225
|
-
_.domainMid != null
|
|
226
|
-
) {
|
|
227
|
-
n = (domain = domain.slice()).length - 1 || 1;
|
|
228
|
-
if (zero) {
|
|
229
|
-
if (domain[0] > 0) domain[0] = 0;
|
|
230
|
-
if (domain[n] < 0) domain[n] = 0;
|
|
231
|
-
}
|
|
232
|
-
if (_.domainMin != null) domain[0] = _.domainMin;
|
|
233
|
-
if (_.domainMax != null) domain[n] = _.domainMax;
|
|
234
|
-
|
|
235
|
-
if (_.domainMid != null) {
|
|
236
|
-
mid = _.domainMid;
|
|
237
|
-
if (mid < domain[0] || mid > domain[n]) {
|
|
238
|
-
logger.warn("Scale domainMid exceeds domain min or max.", mid);
|
|
239
|
-
}
|
|
240
|
-
domain.splice(n, 0, mid);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// set the scale domain
|
|
245
|
-
scale.domain(domainCheck(type, domain, logger));
|
|
246
|
-
|
|
247
|
-
// if ordinal scale domain is defined, prevent implicit
|
|
248
|
-
// domain construction as side-effect of scale lookup
|
|
249
|
-
if (type === Ordinal) {
|
|
250
|
-
scale.unknown(_.domainImplicit ? scaleImplicit : undefined);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
// perform 'nice' adjustment as requested
|
|
254
|
-
if (_.nice && scale.nice) {
|
|
255
|
-
scale.nice((_.nice !== true && tickCount(scale, _.nice)) || null);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
// return the cardinality of the domain
|
|
259
|
-
return domain.length;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
function rawDomain(scale, raw, logger) {
|
|
263
|
-
if (raw) {
|
|
264
|
-
scale.domain(domainCheck(scale.type, raw, logger));
|
|
265
|
-
return raw.length;
|
|
266
|
-
} else {
|
|
267
|
-
return -1;
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
function padDomain(type, domain, range, pad, exponent, constant) {
|
|
272
|
-
var span = Math.abs(peek(range) - range[0]),
|
|
273
|
-
frac = span / (span - 2 * pad),
|
|
274
|
-
d =
|
|
275
|
-
type === Log
|
|
276
|
-
? zoomLog(domain, null, frac)
|
|
277
|
-
: type === Sqrt
|
|
278
|
-
? zoomPow(domain, null, frac, 0.5)
|
|
279
|
-
: type === Pow
|
|
280
|
-
? zoomPow(domain, null, frac, exponent || 1)
|
|
281
|
-
: type === Symlog
|
|
282
|
-
? zoomSymlog(domain, null, frac, constant || 1)
|
|
283
|
-
: zoomLinear(domain, null, frac);
|
|
284
|
-
|
|
285
|
-
domain = domain.slice();
|
|
286
|
-
domain[0] = d[0];
|
|
287
|
-
domain[domain.length - 1] = d[1];
|
|
288
|
-
return domain;
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
function domainCheck(type, domain, logger) {
|
|
292
|
-
if (isLogarithmic(type)) {
|
|
293
|
-
// sum signs of domain values
|
|
294
|
-
// if all pos or all neg, abs(sum) === domain.length
|
|
295
|
-
var s = Math.abs(
|
|
296
|
-
domain.reduce(function (s, v) {
|
|
297
|
-
return s + (v < 0 ? -1 : v > 0 ? 1 : 0);
|
|
298
|
-
}, 0)
|
|
299
|
-
);
|
|
300
|
-
|
|
301
|
-
if (s !== domain.length) {
|
|
302
|
-
logger.warn(
|
|
303
|
-
"Log scale domain includes zero: " + stringValue(domain)
|
|
304
|
-
);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
return domain;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
function configureBins(scale, _, count) {
|
|
311
|
-
let bins = _.bins;
|
|
312
|
-
|
|
313
|
-
if (bins && !isArray(bins)) {
|
|
314
|
-
// generate bin boundary array
|
|
315
|
-
const domain =
|
|
316
|
-
(bins.start == null || bins.stop == null) && scale.domain(),
|
|
317
|
-
start = bins.start == null ? domain[0] : bins.start,
|
|
318
|
-
stop = bins.stop == null ? peek(domain) : bins.stop,
|
|
319
|
-
step = bins.step;
|
|
320
|
-
|
|
321
|
-
if (!step) error("Scale bins parameter missing step property.");
|
|
322
|
-
bins = sequence(start, stop + step, step);
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
if (bins) {
|
|
326
|
-
// assign bin boundaries to scale instance
|
|
327
|
-
scale.bins = bins;
|
|
328
|
-
} else if (scale.bins) {
|
|
329
|
-
// no current bins, remove bins if previously set
|
|
330
|
-
delete scale.bins;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
// special handling for bin-ordinal scales
|
|
334
|
-
if (scale.type === BinOrdinal) {
|
|
335
|
-
if (!bins) {
|
|
336
|
-
// the domain specifies the bins
|
|
337
|
-
scale.bins = scale.domain();
|
|
338
|
-
} else if (!_.domain && !_.domainRaw) {
|
|
339
|
-
// the bins specify the domain
|
|
340
|
-
scale.domain(bins);
|
|
341
|
-
count = bins.length;
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
// return domain cardinality
|
|
346
|
-
return count;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
function configureRange(scale, _, count) {
|
|
350
|
-
var type = scale.type,
|
|
351
|
-
round = _.round || false,
|
|
352
|
-
range = _.range;
|
|
353
|
-
|
|
354
|
-
// if range step specified, calculate full range extent
|
|
355
|
-
if (_.rangeStep != null) {
|
|
356
|
-
range = configureRangeStep(type, _, count);
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
// else if a range scheme is defined, use that
|
|
360
|
-
else if (_.scheme) {
|
|
361
|
-
range = configureScheme(type, _, count);
|
|
362
|
-
if (isFunction(range)) {
|
|
363
|
-
if (scale.interpolator) {
|
|
364
|
-
return scale.interpolator(range);
|
|
365
|
-
} else {
|
|
366
|
-
error(
|
|
367
|
-
`Scale type ${type} does not support interpolating color schemes.`
|
|
368
|
-
);
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
// given a range array for an interpolating scale, convert to interpolator
|
|
374
|
-
if (range && isInterpolating(type)) {
|
|
375
|
-
return scale.interpolator(
|
|
376
|
-
interpolateColors(
|
|
377
|
-
flip(range, _.reverse),
|
|
378
|
-
_.interpolate,
|
|
379
|
-
_.interpolateGamma
|
|
380
|
-
)
|
|
381
|
-
);
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
// configure rounding / interpolation
|
|
385
|
-
if (range && _.interpolate && scale.interpolate) {
|
|
386
|
-
scale.interpolate(getInterpolate(_.interpolate, _.interpolateGamma));
|
|
387
|
-
} else if (isFunction(scale.round)) {
|
|
388
|
-
scale.round(round);
|
|
389
|
-
} else if (isFunction(scale.rangeRound)) {
|
|
390
|
-
scale.interpolate(round ? interpolateRound : interpolate);
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
if (range) scale.range(flip(range, _.reverse));
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
function configureRangeStep(type, _, count) {
|
|
397
|
-
if (type !== Band && type !== Point) {
|
|
398
|
-
error("Only band and point scales support rangeStep.");
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
// calculate full range based on requested step size and padding
|
|
402
|
-
var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,
|
|
403
|
-
inner =
|
|
404
|
-
type === Point
|
|
405
|
-
? 1
|
|
406
|
-
: (_.paddingInner != null ? _.paddingInner : _.padding) || 0;
|
|
407
|
-
return [0, _.rangeStep * bandSpace(count, inner, outer)];
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
function configureScheme(type, _, count) {
|
|
411
|
-
var extent = _.schemeExtent,
|
|
412
|
-
name,
|
|
413
|
-
scheme;
|
|
414
|
-
|
|
415
|
-
if (isArray(_.scheme)) {
|
|
416
|
-
scheme = interpolateColors(_.scheme, _.interpolate, _.interpolateGamma);
|
|
417
|
-
} else {
|
|
418
|
-
name = _.scheme.toLowerCase();
|
|
419
|
-
scheme = getScheme(name);
|
|
420
|
-
if (!scheme) error(`Unrecognized scheme name: ${_.scheme}`);
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
// determine size for potential discrete range
|
|
424
|
-
count =
|
|
425
|
-
type === Threshold
|
|
426
|
-
? count + 1
|
|
427
|
-
: type === BinOrdinal
|
|
428
|
-
? count - 1
|
|
429
|
-
: type === Quantile || type === Quantize
|
|
430
|
-
? +_.schemeCount || DEFAULT_COUNT
|
|
431
|
-
: count;
|
|
432
|
-
|
|
433
|
-
// adjust and/or quantize scheme as appropriate
|
|
434
|
-
return isInterpolating(type)
|
|
435
|
-
? adjustScheme(scheme, extent, _.reverse)
|
|
436
|
-
: isFunction(scheme)
|
|
437
|
-
? quantizeInterpolator(adjustScheme(scheme, extent), count)
|
|
438
|
-
: type === Ordinal
|
|
439
|
-
? scheme
|
|
440
|
-
: scheme.slice(0, count);
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
function adjustScheme(scheme, extent, reverse) {
|
|
444
|
-
return isFunction(scheme) && (extent || reverse)
|
|
445
|
-
? interpolateRange(scheme, flip(extent || [0, 1], reverse))
|
|
446
|
-
: scheme;
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
function flip(array, reverse) {
|
|
450
|
-
return reverse ? array.slice().reverse() : array;
|
|
451
|
-
}
|