source: node_modules/victory-vendor/lib-vendor/d3-scale/src/continuous.js

Last change on this file was a762898, checked in by istevanoska <ilinastevanoska@…>, 5 months ago

Added visualizations

  • Property mode set to 100644
File size: 3.7 KB
Line 
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.copy = copy;
7exports.default = continuous;
8exports.identity = identity;
9exports.transformer = transformer;
10var _index = require("../../../lib-vendor/d3-array/src/index.js");
11var _index2 = require("../../../lib-vendor/d3-interpolate/src/index.js");
12var _constant = _interopRequireDefault(require("./constant.js"));
13var _number = _interopRequireDefault(require("./number.js"));
14function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15var unit = [0, 1];
16function identity(x) {
17 return x;
18}
19function normalize(a, b) {
20 return (b -= a = +a) ? function (x) {
21 return (x - a) / b;
22 } : (0, _constant.default)(isNaN(b) ? NaN : 0.5);
23}
24function clamper(a, b) {
25 var t;
26 if (a > b) t = a, a = b, b = t;
27 return function (x) {
28 return Math.max(a, Math.min(b, x));
29 };
30}
31
32// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].
33// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].
34function bimap(domain, range, interpolate) {
35 var d0 = domain[0],
36 d1 = domain[1],
37 r0 = range[0],
38 r1 = range[1];
39 if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);
40 return function (x) {
41 return r0(d0(x));
42 };
43}
44function polymap(domain, range, interpolate) {
45 var j = Math.min(domain.length, range.length) - 1,
46 d = new Array(j),
47 r = new Array(j),
48 i = -1;
49
50 // Reverse descending domains.
51 if (domain[j] < domain[0]) {
52 domain = domain.slice().reverse();
53 range = range.slice().reverse();
54 }
55 while (++i < j) {
56 d[i] = normalize(domain[i], domain[i + 1]);
57 r[i] = interpolate(range[i], range[i + 1]);
58 }
59 return function (x) {
60 var i = (0, _index.bisect)(domain, x, 1, j) - 1;
61 return r[i](d[i](x));
62 };
63}
64function copy(source, target) {
65 return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown());
66}
67function transformer() {
68 var domain = unit,
69 range = unit,
70 interpolate = _index2.interpolate,
71 transform,
72 untransform,
73 unknown,
74 clamp = identity,
75 piecewise,
76 output,
77 input;
78 function rescale() {
79 var n = Math.min(domain.length, range.length);
80 if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);
81 piecewise = n > 2 ? polymap : bimap;
82 output = input = null;
83 return scale;
84 }
85 function scale(x) {
86 return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));
87 }
88 scale.invert = function (y) {
89 return clamp(untransform((input || (input = piecewise(range, domain.map(transform), _index2.interpolateNumber)))(y)));
90 };
91 scale.domain = function (_) {
92 return arguments.length ? (domain = Array.from(_, _number.default), rescale()) : domain.slice();
93 };
94 scale.range = function (_) {
95 return arguments.length ? (range = Array.from(_), rescale()) : range.slice();
96 };
97 scale.rangeRound = function (_) {
98 return range = Array.from(_), interpolate = _index2.interpolateRound, rescale();
99 };
100 scale.clamp = function (_) {
101 return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;
102 };
103 scale.interpolate = function (_) {
104 return arguments.length ? (interpolate = _, rescale()) : interpolate;
105 };
106 scale.unknown = function (_) {
107 return arguments.length ? (unknown = _, scale) : unknown;
108 };
109 return function (t, u) {
110 transform = t, untransform = u;
111 return rescale();
112 };
113}
114function continuous() {
115 return transformer()(identity, identity);
116}
Note: See TracBrowser for help on using the repository browser.