@antv/g2
Version:
the Grammar of Graphics in Javascript
44 lines • 1.56 kB
JavaScript
import { each } from '@antv/util';
import { translate } from '../../../util/transform';
/**
* @ignore
* 将 label 限制在画布范围内,简单得将超出画布的 label 往画布内调整
* @param labels
* @param cfg
*/
export function limitInCanvas(items, labels, shapes, region) {
each(labels, function (label) {
var regionMinX = region.minX, regionMinY = region.minY, regionMaxX = region.maxX, regionMaxY = region.maxY;
var _a = label.getCanvasBBox(), minX = _a.minX, minY = _a.minY, maxX = _a.maxX, maxY = _a.maxY, x = _a.x, y = _a.y, width = _a.width, height = _a.height;
var finalX = x;
var finalY = y;
if (minX < regionMinX || maxX < regionMinX) {
// 超出左侧
finalX = regionMinX;
}
if (minY < regionMinY || maxY < regionMinY) {
// 超出顶部
finalY = regionMinY;
}
if (minX > regionMaxX) {
// 整体超出右侧
finalX = regionMaxX - width;
}
else if (maxX > regionMaxX) {
// 超出右侧
finalX = finalX - (maxX - regionMaxX);
}
if (minY > regionMaxY) {
// 整体超出顶部
finalY = regionMaxY - height;
}
else if (maxY > regionMaxY) {
// 超出底部
finalY = finalY - (maxY - regionMaxY);
}
if (finalX !== x || finalY !== y) {
translate(label, finalX - x, finalY - y);
}
});
}
//# sourceMappingURL=limit-in-canvas.js.map