@antv/g2plot
Version:
G2 Plot, a market of plots built with the Grammar of Graphics'
43 lines • 1.77 kB
JavaScript
import { BBox } from '@antv/g';
import * as _ from '@antv/util';
import { getGlobalTheme } from '../../theme/global';
export function getOverlappingPadding(layer, components) {
var bleeding = getGlobalTheme().bleeding;
if (_.isArray(bleeding)) {
_.each(bleeding, function (it, index) {
if (typeof bleeding[index] === 'function') {
bleeding[index] = bleeding[index]({});
}
});
}
var viewMinX = layer.layerBBox.minX;
var viewMaxX = layer.layerBBox.maxX;
var viewMinY = _.clone(layer.layerBBox.minY);
var viewMaxY = layer.layerBBox.maxY;
_.each(components, function (component) {
var position = component.position;
var _a = component.getBBox(), minX = _a.minX, maxX = _a.maxX, minY = _a.minY, maxY = _a.maxY;
if (maxY > viewMinY && maxY < viewMaxY && position === 'top') {
viewMinY = maxY;
}
if (minY > viewMinY && minY < viewMaxY && position === 'bottom') {
viewMaxY = minY;
}
if (maxX > viewMinX && maxX < viewMaxX && position === 'left') {
viewMinX = maxX;
}
if (minX > viewMinX && maxX < viewMaxX && position === 'right') {
viewMaxX = minX;
}
});
var range = new BBox(viewMinX, viewMinY, viewMaxX - viewMinX, viewMaxY - viewMinY);
var top_padding = range.minY - layer.layerBBox.minY;
if (top_padding === 0) {
top_padding = bleeding[0];
}
var right_padding = layer.layerBBox.maxX - range.maxX;
var bottom_padding = layer.layerBBox.maxY - range.maxY;
var left_padding = range.minX - layer.layerBBox.minX;
return [top_padding, right_padding, bottom_padding, left_padding];
}
//# sourceMappingURL=padding.js.map