28 lines
654 B
JavaScript
28 lines
654 B
JavaScript
import {linearish} from "./linear.js";
|
|
import number from "./number.js";
|
|
|
|
export default function identity(domain) {
|
|
var unknown;
|
|
|
|
function scale(x) {
|
|
return x == null || isNaN(x = +x) ? unknown : x;
|
|
}
|
|
|
|
scale.invert = scale;
|
|
|
|
scale.domain = scale.range = function(_) {
|
|
return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();
|
|
};
|
|
|
|
scale.unknown = function(_) {
|
|
return arguments.length ? (unknown = _, scale) : unknown;
|
|
};
|
|
|
|
scale.copy = function() {
|
|
return identity(domain).unknown(unknown);
|
|
};
|
|
|
|
domain = arguments.length ? Array.from(domain, number) : [0, 1];
|
|
|
|
return linearish(scale);
|
|
}
|