@antv/g2
Version:
the Grammar of Graphics in Javascript
92 lines • 3.57 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTransformOptions = exports.angleOf = exports.radiusOf = exports.getRadius = exports.isNonCartesian = exports.isTheta = exports.isCircular = exports.isRadar = exports.isFisheye = exports.isParallel = exports.isHelix = exports.isRadial = exports.isPolar = exports.isTranspose = void 0;
function isTranspose(coordinate) {
const { transformations } = coordinate.getOptions();
const transposes = transformations
.map(([type]) => type)
.filter((type) => type === 'transpose');
return transposes.length % 2 !== 0;
}
exports.isTranspose = isTranspose;
function isPolar(coordinate) {
const { transformations } = coordinate.getOptions();
return transformations.some(([type]) => type === 'polar');
}
exports.isPolar = isPolar;
function isRadial(coordinate) {
const { transformations } = coordinate.getOptions();
return (
// distinguish radial from theta.
transformations.some(([type]) => type === 'reflect') &&
transformations.some(([type]) => type.startsWith('transpose')));
}
exports.isRadial = isRadial;
function isHelix(coordinate) {
const { transformations } = coordinate.getOptions();
return transformations.some(([type]) => type === 'helix');
}
exports.isHelix = isHelix;
function isParallel(coordinate) {
const { transformations } = coordinate.getOptions();
return transformations.some(([type]) => type === 'parallel');
}
exports.isParallel = isParallel;
function isFisheye(coordinate) {
const { transformations } = coordinate.getOptions();
return transformations.some(([type]) => type === 'fisheye');
}
exports.isFisheye = isFisheye;
function isRadar(coordinate) {
return isParallel(coordinate) && isPolar(coordinate);
}
exports.isRadar = isRadar;
function isCircular(coordinate) {
return isHelix(coordinate) || isPolar(coordinate);
}
exports.isCircular = isCircular;
function isTheta(coordinate) {
return isPolar(coordinate) && isTranspose(coordinate);
}
exports.isTheta = isTheta;
function isNonCartesian(coordinate) {
return (isPolar(coordinate) ||
isParallel(coordinate) ||
isRadial(coordinate) ||
isTheta(coordinate));
}
exports.isNonCartesian = isNonCartesian;
function getRadius(coordinate) {
if (isCircular(coordinate)) {
const [width, height] = coordinate.getSize();
const polar = coordinate
.getOptions()
.transformations.find((t) => t[0] === 'polar');
// coordinate.size * outerRadius.
if (polar)
return (Math.max(width, height) / 2) * polar[4];
}
return 0;
}
exports.getRadius = getRadius;
function radiusOf(coordinate) {
const { transformations } = coordinate.getOptions();
const [, , , innerRadius, outerRadius] = transformations.find((d) => d[0] === 'polar');
return [+innerRadius, +outerRadius];
}
exports.radiusOf = radiusOf;
function angleOf(coordinate, isRadius = true) {
const { transformations } = coordinate.getOptions();
const [, startAngle, endAngle] = transformations.find((d) => d[0] === 'polar');
return isRadius
? [(+startAngle * 180) / Math.PI, (+endAngle * 180) / Math.PI]
: [startAngle, endAngle];
}
exports.angleOf = angleOf;
function getTransformOptions(coordinate, type) {
const { transformations } = coordinate.getOptions();
const [, ...args] = transformations.find((d) => d[0] === type);
return args;
}
exports.getTransformOptions = getTransformOptions;
//# sourceMappingURL=coordinate.js.map
;