'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});

var _commonUtil = require('../utils/commonUtil');

var _relation = require('../mixins/relation');

exports['default'] = {
    name: 'SnTab',

    mixins: [(0, _relation.ChildrenMixin)('snTabs')],

    props: {
        dot: Boolean,
        info: [Number, String],
        name: [Number, String],
        title: String,
        titleStyle: null,
        disabled: Boolean
    },

    data: function data() {
        return {
            inited: false
        };
    },


    computed: {
        computedName: function computedName() {
            return (0, _commonUtil.isDef)(this.name) ? this.name : this.index;
        },
        isActive: function isActive() {
            return this.computedName === this.parent.currentName;
        }
    },

    watch: {
        // eslint-disable-next-line object-shorthand
        'parent.currentIndex': function parentCurrentIndex() {
            this.inited = this.inited || this.isActive;
        },
        title: function title() {
            this.parent.setLine();
        },
        inited: function inited(val) {
            var _this = this;

            if (this.parent.lazyRender && val) {
                this.$nextTick(function () {
                    _this.parent.$emit('rendered', _this.computedName, _this.title);
                });
            }
        }
    },

    render: function render(h) {
        var $slots = this.$slots,
            parent = this.parent,
            isActive = this.isActive;

        var shouldRender = this.inited || parent.scrollspy || !parent.lazyRender;
        var show = parent.scrollspy || isActive;
        var Content = shouldRender ? $slots['default'] : h();

        if (parent.animated) {
            return h(
                'div',
                {
                    attrs: {
                        role: 'tabpanel',
                        'aria-hidden': !isActive
                    },
                    'class': {
                        'sn-tab-panel-wrapper': true,
                        'sn-tab-panel-wrapper-inactive': !isActive
                    }
                },
                [h(
                    'div',
                    { 'class': 'sn-tab-panel' },
                    [Content]
                )]
            );
        }

        return h(
            'div',
            {
                directives: [{
                    name: 'show',
                    value: show
                }],
                attrs: { role: 'tabpanel' },
                'class': 'sn-tab-panel' },
            [Content]
        );
    }
};
module.exports = exports.default;