var e = require("../common/component"), t = require("../mixins/safe-area");

(0, e.VantComponent)({
    mixins: [ (0, t.safeArea)() ],
    relation: {
        name: "tabbar-item",
        type: "descendant",
        linked: function(e) {
            this.children = this.children || [], this.children.push(e), this.setActiveItem();
        },
        unlinked: function(e) {
            this.children = this.children || [], this.children = this.children.filter(function(t) {
                return t !== e;
            }), this.setActiveItem();
        }
    },
    props: {
        active: Number,
        activeColor: String,
        fixed: {
            type: Boolean,
            value: !0
        },
        border: {
            type: Boolean,
            value: !0
        },
        zIndex: {
            type: Number,
            value: 1
        }
    },
    watch: {
        active: function(e) {
            this.currentActive = e, this.setActiveItem();
        }
    },
    created: function() {
        this.currentActive = this.data.active;
    },
    methods: {
        setActiveItem: function() {
            var e = this;
            return Array.isArray(this.children) && this.children.length ? Promise.all(this.children.map(function(t, i) {
                return t.setActive({
                    active: i === e.currentActive,
                    color: e.data.activeColor
                });
            })) : Promise.resolve();
        },
        onChange: function(e) {
            var t = this, i = (this.children || []).indexOf(e);
            i !== this.currentActive && -1 !== i && (this.currentActive = i, this.setActiveItem().then(function() {
                t.$emit("change", i);
            }));
        }
    }
});