ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
30 lines • 3.95 kB
JavaScript
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
/**
* Calculate position and scale
* @param containerEle
* @param targetEle
* @param scale: if scale is set, skip calculate scale value
*/
export const calculateTransform = (containerEle, targetEle, scale) => {
const containerEleSize = containerEle.getBoundingClientRect();
const targetEleSize = targetEle.getBBox();
if (!targetEleSize.width) {
// There is no g element anymore.
return null;
}
// TODO
// leave some place when re-scale
const scaleUnit = (containerEleSize.width - 48) / containerEleSize.width;
const k = scale || Math.min(containerEleSize.width / targetEleSize.width, containerEleSize.height / targetEleSize.height, 1) * scaleUnit;
const x = (containerEleSize.width - targetEleSize.width * k) / 2;
const y = (containerEleSize.height - targetEleSize.height * k) / 2;
return {
x,
y,
k
};
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2dyYXBoL2NvcmUvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBSUg7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFlBQTJCLEVBQUUsU0FBc0IsRUFBRSxLQUFjLEVBQTBCLEVBQUU7SUFDaEksTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUM5RCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7UUFDeEIsaUNBQWlDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPO0lBQ1AsaUNBQWlDO0lBQ2pDLE1BQU0sU0FBUyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQztJQUN6RSxNQUFNLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDekksTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkUsT0FBTztRQUNMLENBQUM7UUFDRCxDQUFDO1FBQ0QsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBOelpvb21UcmFuc2Zvcm0gfSBmcm9tICcuLi9pbnRlcmZhY2UnO1xuXG4vKipcbiAqIENhbGN1bGF0ZSBwb3NpdGlvbiBhbmQgc2NhbGVcbiAqIEBwYXJhbSBjb250YWluZXJFbGVcbiAqIEBwYXJhbSB0YXJnZXRFbGVcbiAqIEBwYXJhbSBzY2FsZTogaWYgc2NhbGUgaXMgc2V0LCBza2lwIGNhbGN1bGF0ZSBzY2FsZSB2YWx1ZVxuICovXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlVHJhbnNmb3JtID0gKGNvbnRhaW5lckVsZTogU1ZHU1ZHRWxlbWVudCwgdGFyZ2V0RWxlOiBTVkdHRWxlbWVudCwgc2NhbGU/OiBudW1iZXIpOiBOelpvb21UcmFuc2Zvcm0gfCBudWxsID0+IHtcbiAgY29uc3QgY29udGFpbmVyRWxlU2l6ZSA9IGNvbnRhaW5lckVsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgdGFyZ2V0RWxlU2l6ZSA9IHRhcmdldEVsZS5nZXRCQm94KCk7XG4gIGlmICghdGFyZ2V0RWxlU2l6ZS53aWR0aCkge1xuICAgIC8vIFRoZXJlIGlzIG5vIGcgZWxlbWVudCBhbnltb3JlLlxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gVE9ET1xuICAvLyBsZWF2ZSBzb21lIHBsYWNlIHdoZW4gcmUtc2NhbGVcbiAgY29uc3Qgc2NhbGVVbml0ID0gKGNvbnRhaW5lckVsZVNpemUud2lkdGggLSA0OCkgLyBjb250YWluZXJFbGVTaXplLndpZHRoO1xuICBjb25zdCBrID0gc2NhbGUgfHwgTWF0aC5taW4oY29udGFpbmVyRWxlU2l6ZS53aWR0aCAvIHRhcmdldEVsZVNpemUud2lkdGgsIGNvbnRhaW5lckVsZVNpemUuaGVpZ2h0IC8gdGFyZ2V0RWxlU2l6ZS5oZWlnaHQsIDEpICogc2NhbGVVbml0O1xuICBjb25zdCB4ID0gKGNvbnRhaW5lckVsZVNpemUud2lkdGggLSB0YXJnZXRFbGVTaXplLndpZHRoICogaykgLyAyO1xuICBjb25zdCB5ID0gKGNvbnRhaW5lckVsZVNpemUuaGVpZ2h0IC0gdGFyZ2V0RWxlU2l6ZS5oZWlnaHQgKiBrKSAvIDI7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIGtcbiAgfTtcbn07XG4iXX0=