You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

27 lines
953 B

import { __read } from "tslib";
export function getTranslate(node, x, y) {
var _a = node.getBBox(), width = _a.width, height = _a.height;
var _b = __read([x, y].map(function (v, i) {
var _a;
return v.includes('%')
? (parseFloat(((_a = v.match(/[+-]?([0-9]*[.])?[0-9]+/)) === null || _a === void 0 ? void 0 : _a[0]) || '0') / 100) * (i === 0 ? width : height)
: v;
}), 2), tx = _b[0], ty = _b[1];
return [tx, ty];
}
/**
* transform that support translate percent value
*/
export function percentTransform(node, val) {
if (!val)
return;
try {
var reg = /translate\(([+-]*[\d]+[%]*),[ ]*([+-]*[\d]+[%]*)\)/g;
var computedVal = val.replace(reg, function (match, x, y) { return "translate(".concat(getTranslate(node, x, y), ")"); });
node.attr('transform', computedVal);
}
catch (e) {
// do nothing
}
}
//# sourceMappingURL=transform.js.map