@visactor/vgrammar-core
Version:
VGrammar is a visual grammar library
71 lines (63 loc) • 2.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: !0
}), exports.configureCoordinate = exports.parseCoordinate = exports.createCoordinate = void 0;
const vutils_1 = require("@visactor/vutils"), vgrammar_coordinate_1 = require("@visactor/vgrammar-coordinate"), util_1 = require("./util");
function createCoordinate(type) {
switch (type) {
case "cartesian":
default:
return new vgrammar_coordinate_1.CartesianCoordinate;
case "polar":
return new vgrammar_coordinate_1.PolarCoordinate;
}
}
function parseCoordinate(spec, view) {
let dependencies = [];
return [ "start", "end", "origin", "translate", "rotate", "scale", "transpose" ].forEach((key => {
dependencies = dependencies.concat((0, util_1.parseFunctionType)(spec[key], view));
})), dependencies;
}
function configureCoordinate(spec, coordinate, parameters) {
var _a, _b, _c, _d, _e, _f, _g;
!(0, vutils_1.isNil)(spec.start) && coordinate.start(null !== (_a = (0, util_1.invokeFunctionType)(spec.start, parameters)) && void 0 !== _a ? _a : [ 0, 0 ]),
!(0, vutils_1.isNil)(spec.end) && coordinate.end(null !== (_b = (0, util_1.invokeFunctionType)(spec.end, parameters)) && void 0 !== _b ? _b : [ 0, 0 ]),
!(0, vutils_1.isNil)(spec.origin) && coordinate.origin(null !== (_c = (0, util_1.invokeFunctionType)(spec.origin, parameters)) && void 0 !== _c ? _c : [ 0, 0 ]);
const transforms = [];
if (!(0, vutils_1.isNil)(spec.translate)) {
const translate = (0, util_1.invokeFunctionType)(spec.translate, parameters);
transforms.push({
type: "translate",
offset: {
x: null !== (_d = null == translate ? void 0 : translate[0]) && void 0 !== _d ? _d : 0,
y: null !== (_e = null == translate ? void 0 : translate[1]) && void 0 !== _e ? _e : 0
}
});
}
if (!(0, vutils_1.isNil)(spec.rotate)) {
const rotate = (0, util_1.invokeFunctionType)(spec.rotate, parameters);
transforms.push({
type: "rotate",
angle: null != rotate ? rotate : 0
});
}
if (!(0, vutils_1.isNil)(spec.scale)) {
const scale = (0, util_1.invokeFunctionType)(spec.scale, parameters);
transforms.push({
type: "scale",
scale: {
x: null !== (_f = null == scale ? void 0 : scale[0]) && void 0 !== _f ? _f : 1,
y: null !== (_g = null == scale ? void 0 : scale[1]) && void 0 !== _g ? _g : 1
}
});
}
if (!(0, vutils_1.isNil)(spec.transpose)) {
(0, util_1.invokeFunctionType)(spec.transpose, parameters) && transforms.push({
type: "transpose"
});
}
coordinate.applyTransforms(transforms);
}
exports.createCoordinate = createCoordinate, exports.parseCoordinate = parseCoordinate,
exports.configureCoordinate = configureCoordinate;
//# sourceMappingURL=coordinate.js.map