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
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
|