@visx/vendor
Version:
vendored packages for visx
51 lines (49 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
exports.mercatorProjection = mercatorProjection;
exports.mercatorRaw = mercatorRaw;
var _math = require("../math.js");
var _rotation = _interopRequireDefault(require("../rotation.js"));
var _index = _interopRequireDefault(require("./index.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function mercatorRaw(lambda, phi) {
return [lambda, (0, _math.log)((0, _math.tan)((_math.halfPi + phi) / 2))];
}
mercatorRaw.invert = function (x, y) {
return [x, 2 * (0, _math.atan)((0, _math.exp)(y)) - _math.halfPi];
};
function _default() {
return mercatorProjection(mercatorRaw).scale(961 / _math.tau);
}
function mercatorProjection(project) {
var m = (0, _index.default)(project),
center = m.center,
scale = m.scale,
translate = m.translate,
clipExtent = m.clipExtent,
x0 = null,
y0,
x1,
y1; // clip extent
m.scale = function (_) {
return arguments.length ? (scale(_), reclip()) : scale();
};
m.translate = function (_) {
return arguments.length ? (translate(_), reclip()) : translate();
};
m.center = function (_) {
return arguments.length ? (center(_), reclip()) : center();
};
m.clipExtent = function (_) {
return arguments.length ? (_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];
};
function reclip() {
var k = _math.pi * scale(),
t = m((0, _rotation.default)(m.rotate()).invert([0, 0]));
return clipExtent(x0 == null ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);
}
return reclip();
}