@visactor/vchart
Version:
charts lib based @visactor/VGrammar
89 lines (81 loc) • 5.83 kB
JavaScript
;
var __rest = this && this.__rest || function(s, e) {
var t = {};
for (var p in s) Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0 && (t[p] = s[p]);
if (null != s && "function" == typeof Object.getOwnPropertySymbols) {
var i = 0;
for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]) && (t[p[i]] = s[p[i]]);
}
return t;
};
Object.defineProperty(exports, "__esModule", {
value: !0
}), exports.getLegendAttributes = void 0;
const vutils_1 = require("@visactor/vutils"), space_1 = require("../../../util/space"), vutils_extension_1 = require("@visactor/vutils-extension"), style_1 = require("../../../util/style"), util_1 = require("../util");
function normalizeLegendShapeTextureStyle(style) {
return (0, vutils_1.isValid)(null == style ? void 0 : style.texture) ? Object.assign(Object.assign({}, style), {
texturePadding: (0, vutils_1.isValid)(style.texturePadding) ? style.texturePadding : 1,
textureSize: (0, vutils_1.isValid)(style.textureSize) ? style.textureSize : 4
}) : style;
}
function normalizeLegendShapeTextureConfig(shape) {
const normalizeStyle = style => normalizeLegendShapeTextureStyle(style);
if ((0, vutils_1.isFunction)(shape.style)) {
const style = shape.style;
shape.style = (...args) => normalizeStyle(style(...args));
} else (0, vutils_1.isEmpty)(shape.style) || (shape.style = normalizeStyle(shape.style));
return (0, vutils_1.isEmpty)(shape.state) || Object.keys(shape.state).forEach((key => {
if ((0, vutils_1.isFunction)(shape.state[key])) {
const stateStyle = shape.state[key];
shape.state[key] = (...args) => normalizeStyle(stateStyle(...args));
} else (0, vutils_1.isEmpty)(shape.state[key]) || (shape.state[key] = normalizeStyle(shape.state[key]));
})), shape;
}
function getLegendAttributes(spec, rect, layoutOrient) {
const {title: titleSpec = {}, item: itemSpec = {}, pager: pagerSpec = {}, background: backgroundSpec = {}, type: type, id: id, visible: visible, orient: orient, position: position, data: data, filter: filter, regionId: regionId, regionIndex: regionIndex, seriesIndex: seriesIndex, seriesId: seriesId, padding: padding} = spec, restSpec = __rest(spec, [ "title", "item", "pager", "background", "type", "id", "visible", "orient", "position", "data", "filter", "regionId", "regionIndex", "seriesIndex", "seriesId", "padding" ]);
let {title: title = {}, item: item = {}, pager: pager = {}, background: background = {}} = spec;
title = (0, vutils_1.cloneDeep)(title), item = (0, vutils_1.cloneDeep)(item), pager = (0,
vutils_1.cloneDeep)(pager), background = (0, vutils_1.cloneDeep)(background);
const attrs = restSpec, pagerLayout = pager.layout, pagerPosition = pager.position;
if ((0, vutils_1.isFunction)(attrs.maxRow) || (0, vutils_1.isFunction)(attrs.maxCol) || (0,
vutils_1.isFunction)(pagerLayout) || (0, vutils_1.isFunction)(pagerPosition)) {
const resolvedOrient = (0, space_1.isValidOrient)(layoutOrient) ? layoutOrient : (0,
space_1.isValidOrient)(orient) ? orient : "left";
(0, vutils_1.isFunction)(attrs.maxRow) && (attrs.maxRow = attrs.maxRow({
rect: rect,
orient: resolvedOrient,
id: id
})), (0, vutils_1.isFunction)(attrs.maxCol) && (attrs.maxCol = attrs.maxCol({
rect: rect,
orient: resolvedOrient,
id: id
}));
const isArrowPager = "scrollbar" !== pager.type, pagerContext = {
rect: rect,
orient: resolvedOrient,
id: id,
maxRow: attrs.maxRow,
maxCol: attrs.maxCol
};
isArrowPager && (0, vutils_1.isFunction)(pagerLayout) && (pager.layout = pagerLayout(pagerContext)),
isArrowPager && (0, vutils_1.isFunction)(pagerPosition) && (pager.position = pagerPosition(pagerContext));
}
return title.visible ? attrs.title = (0, util_1.transformLegendTitleAttributes)(title) : attrs.title = {
visible: !1
}, (0, vutils_1.isEmpty)(item.focusIconStyle) || (0, style_1.transformToGraphic)(item.focusIconStyle),
item.shape && (item.shape = normalizeLegendShapeTextureConfig((0, style_1.transformComponentStyle)(item.shape))),
item.label && (item.label = (0, style_1.transformComponentStyle)(item.label)), item.value && (item.value = (0,
style_1.transformComponentStyle)(item.value)), item.background && (item.background = (0,
style_1.transformComponentStyle)(item.background)), (0, space_1.isPercent)(item.maxWidth) && (item.maxWidth = Number(item.maxWidth.substring(0, item.maxWidth.length - 1)) * rect.width / 100),
(0, space_1.isPercent)(item.width) && (item.width = Number(item.width.substring(0, item.width.length - 1)) * rect.width / 100),
(0, space_1.isPercent)(item.height) && (item.height = Number(item.height.substring(0, item.height.length - 1)) * rect.width / 100),
attrs.item = item, "scrollbar" === pager.type ? ((0, vutils_1.isEmpty)(pager.railStyle) || (0,
style_1.transformToGraphic)(pager.railStyle), (0, vutils_1.isEmpty)(pager.sliderStyle) || (0,
style_1.transformToGraphic)(pager.sliderStyle)) : ((0, vutils_1.isEmpty)(pager.textStyle) || (0,
style_1.transformToGraphic)(pager.textStyle), pager.handler && (0, style_1.transformComponentStyle)(pager.handler)),
attrs.pager = pager, background.visible && !(0, vutils_1.isEmpty)(background.style) && ((0,
vutils_extension_1.mergeSpec)(attrs, background.style), (0, vutils_1.isValid)(background.padding) && (attrs.padding = background.padding)),
attrs;
}
exports.getLegendAttributes = getLegendAttributes;
//# sourceMappingURL=util.js.map