"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var g2_1 = require("@antv-source/g2");
var util_1 = require("@antv/util");
var utils_1 = require("../../utils");
/**
 * 获取柱子 path
 * @param points
 */
function getRectPath(points) {
    var path = [];
    for (var i = 0; i < points.length; i++) {
        var point = points[i];
        if (point) {
            var action = i === 0 ? 'M' : 'L';
            path.push([action, point.x, point.y]);
        }
    }
    var first = points[0];
    path.push(['L', first.x, first.y]);
    path.push(['z']);
    return path;
}
/**
 * 获取填充属性
 * @param cfg 图形绘制数据
 */
function getFillAttrs(cfg) {
    return (0, utils_1.deepAssign)({}, cfg.defaultStyle, cfg.style, { fill: cfg.color });
}
(0, g2_1.registerShape)('interval', 'waterfall', {
    draw: function (cfg, container) {
        var customInfo = cfg.customInfo, points = cfg.points, nextPoints = cfg.nextPoints;
        var group = container.addGroup();
        // ① 绘制柱体
        var rectPath = this.parsePath(getRectPath(points));
        var fillAttrs = getFillAttrs(cfg);
        group.addShape('path', {
            attrs: tslib_1.__assign(tslib_1.__assign({}, fillAttrs), { path: rectPath }),
        });
        // ② 绘制连接线
        var leaderLineCfg = (0, util_1.get)(customInfo, 'leaderLine');
        if (leaderLineCfg && nextPoints) {
            var linkPath = [
                ['M', points[2].x, points[2].y],
                ['L', nextPoints[0].x, nextPoints[0].y],
            ];
            if (points[2].y === nextPoints[1].y) {
                linkPath[1] = ['L', nextPoints[1].x, nextPoints[1].y];
            }
            linkPath = this.parsePath(linkPath);
            group.addShape('path', {
                attrs: tslib_1.__assign({ path: linkPath }, (leaderLineCfg.style || {})),
            });
        }
        return group;
    },
});
//# sourceMappingURL=shape.js.map