source: node_modules/d3-scale/src/radial.js@ e4c61dd

Last change on this file since e4c61dd was e4c61dd, checked in by istevanoska <ilinastevanoska@…>, 6 months ago

Prototype 1.1

  • Property mode set to 100644
File size: 1.4 KB
Line 
1import continuous from "./continuous.js";
2import {initRange} from "./init.js";
3import {linearish} from "./linear.js";
4import number from "./number.js";
5
6function square(x) {
7 return Math.sign(x) * x * x;
8}
9
10function unsquare(x) {
11 return Math.sign(x) * Math.sqrt(Math.abs(x));
12}
13
14export default function radial() {
15 var squared = continuous(),
16 range = [0, 1],
17 round = false,
18 unknown;
19
20 function scale(x) {
21 var y = unsquare(squared(x));
22 return isNaN(y) ? unknown : round ? Math.round(y) : y;
23 }
24
25 scale.invert = function(y) {
26 return squared.invert(square(y));
27 };
28
29 scale.domain = function(_) {
30 return arguments.length ? (squared.domain(_), scale) : squared.domain();
31 };
32
33 scale.range = function(_) {
34 return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();
35 };
36
37 scale.rangeRound = function(_) {
38 return scale.range(_).round(true);
39 };
40
41 scale.round = function(_) {
42 return arguments.length ? (round = !!_, scale) : round;
43 };
44
45 scale.clamp = function(_) {
46 return arguments.length ? (squared.clamp(_), scale) : squared.clamp();
47 };
48
49 scale.unknown = function(_) {
50 return arguments.length ? (unknown = _, scale) : unknown;
51 };
52
53 scale.copy = function() {
54 return radial(squared.domain(), range)
55 .round(round)
56 .clamp(squared.clamp())
57 .unknown(unknown);
58 };
59
60 initRange.apply(scale, arguments);
61
62 return linearish(scale);
63}
Note: See TracBrowser for help on using the repository browser.