ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
33 lines • 4.02 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2dyYXBoL2NvcmUvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBSUg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsWUFBMkIsRUFDM0IsU0FBc0IsRUFDdEIsS0FBYyxFQUNVLEVBQUU7SUFDMUIsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUM5RCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7UUFDeEIsaUNBQWlDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPO0lBQ1AsaUNBQWlDO0lBQ2pDLE1BQU0sU0FBUyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQztJQUN6RSxNQUFNLENBQUMsR0FDTCxLQUFLO1FBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdkcsU0FBUyxDQUFDO0lBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkUsT0FBTztRQUNMLENBQUM7UUFDRCxDQUFDO1FBQ0QsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBOelpvb21UcmFuc2Zvcm0gfSBmcm9tICcuLi9pbnRlcmZhY2UnO1xuXG4vKipcbiAqIENhbGN1bGF0ZSBwb3NpdGlvbiBhbmQgc2NhbGVcbiAqXG4gKiBAcGFyYW0gY29udGFpbmVyRWxlXG4gKiBAcGFyYW0gdGFyZ2V0RWxlXG4gKiBAcGFyYW0gc2NhbGU6IGlmIHNjYWxlIGlzIHNldCwgc2tpcCBjYWxjdWxhdGUgc2NhbGUgdmFsdWVcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZVRyYW5zZm9ybSA9IChcbiAgY29udGFpbmVyRWxlOiBTVkdTVkdFbGVtZW50LFxuICB0YXJnZXRFbGU6IFNWR0dFbGVtZW50LFxuICBzY2FsZT86IG51bWJlclxuKTogTnpab29tVHJhbnNmb3JtIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNvbnRhaW5lckVsZVNpemUgPSBjb250YWluZXJFbGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHRhcmdldEVsZVNpemUgPSB0YXJnZXRFbGUuZ2V0QkJveCgpO1xuICBpZiAoIXRhcmdldEVsZVNpemUud2lkdGgpIHtcbiAgICAvLyBUaGVyZSBpcyBubyBnIGVsZW1lbnQgYW55bW9yZS5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFRPRE9cbiAgLy8gbGVhdmUgc29tZSBwbGFjZSB3aGVuIHJlLXNjYWxlXG4gIGNvbnN0IHNjYWxlVW5pdCA9IChjb250YWluZXJFbGVTaXplLndpZHRoIC0gNDgpIC8gY29udGFpbmVyRWxlU2l6ZS53aWR0aDtcbiAgY29uc3QgayA9XG4gICAgc2NhbGUgfHxcbiAgICBNYXRoLm1pbihjb250YWluZXJFbGVTaXplLndpZHRoIC8gdGFyZ2V0RWxlU2l6ZS53aWR0aCwgY29udGFpbmVyRWxlU2l6ZS5oZWlnaHQgLyB0YXJnZXRFbGVTaXplLmhlaWdodCwgMSkgKlxuICAgICAgc2NhbGVVbml0O1xuICBjb25zdCB4ID0gKGNvbnRhaW5lckVsZVNpemUud2lkdGggLSB0YXJnZXRFbGVTaXplLndpZHRoICogaykgLyAyO1xuICBjb25zdCB5ID0gKGNvbnRhaW5lckVsZVNpemUuaGVpZ2h0IC0gdGFyZ2V0RWxlU2l6ZS5oZWlnaHQgKiBrKSAvIDI7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIGtcbiAgfTtcbn07XG4iXX0=