import { __decorate } from "tslib";
import { Vue, Component, Prop, Model } from 'vue-property-decorator';
import MavonEditor from 'mavon-editor';
import 'mavon-editor/dist/css/index.css';
import './app-markdown-editor.less';
let AppMarkdownEditor = class AppMarkdownEditor extends Vue {
    constructor() {
        super(...arguments);
        /**
         * 国际化
         *
         * @type {boolean}
         * @memberof AppMarkdownEditor
         */
        this.locale = 'zh-CN';
        /**
         * 工具栏
         *
         * @private
         * @type {*}
         * @memberof AppMarkdownEditor
         */
        this.toolbars = {};
    }
    /**
     * 当前值
     *
     * @memberof AppMarkdownEditor
     */
    get curVal() {
        return this.itemValue ? this.itemValue : '';
    }
    /**
     * 当前值
     *
     * @memberof AppMarkdownEditor
     */
    set curVal(val) {
        this.$emit('change', val);
    }
    /**
     * Vue生命周期 -- Created
     *
     * @memberof AppMarkdownEditor
     */
    created() {
        const _this = this;
        const locale = _this.$i18n.locale;
        if (locale == 'en-US') {
            _this.locale = 'en';
        }
        else {
            _this.locale = 'zh_CN';
        }
        this.initToolbar();
    }
    /**
     * 初始化工具栏按钮
     *
     * @memberof AppMarkdownEditor
     */
    initToolbar() {
        if (!this.showToolbar) {
            return;
        }
        let toolbar = {
            bold: true,
            italic: true,
            header: true,
            underline: true,
            strikethrough: true,
            mark: true,
            superscript: true,
            subscript: true,
            quote: true,
            ol: true,
            ul: true,
            link: true,
            imagelink: false,
            code: true,
            table: true,
            fullscreen: false,
            readmodel: true,
            htmlcode: true,
            help: true,
            undo: true,
            redo: true,
            trash: true,
            save: false,
            navigation: true,
            alignleft: true,
            aligncenter: true,
            alignright: true,
            subfield: this.subfield,
            preview: true, // 预览
        };
        Object.assign(this.toolbars, toolbar);
    }
    /**
     * 绘制内容
     *
     * @returns
     * @memberof AppMarkdownEditor
     */
    render() {
        return (<mavon-editor class="app-mavon-editor" v-model={this.curVal} defaultOpen={this.mode != 'EDIT' ? 'preview' : this.defaultOpen} subfield={this.mode == 'SUBFIELD' && this.subfield} autofocus={false} toolbarsFlag={this.mode != 'PREVIEWONLY' && this.showToolbar} navigation={this.mode != 'PREVIEW' && this.showCatalog} shortCut={this.mode != 'PREVIEW' && this.shortCut} fontSize={`${this.fontSize}px`} placeholder={this.placeholder} toolbars={this.toolbars} language={this.locale} editable={this.mode == 'PREVIEWONLY' ? false : !this.disabled} ishljs={this.highLight} boxShadow={this.boxShadow}/>);
    }
};
__decorate([
    Model('change')
], AppMarkdownEditor.prototype, "itemValue", void 0);
__decorate([
    Prop()
], AppMarkdownEditor.prototype, "name", void 0);
__decorate([
    Prop()
], AppMarkdownEditor.prototype, "disabled", void 0);
__decorate([
    Prop({ default: 'EDIT' })
], AppMarkdownEditor.prototype, "mode", void 0);
__decorate([
    Prop({ default: true })
], AppMarkdownEditor.prototype, "showToolbar", void 0);
__decorate([
    Prop({ default: false })
], AppMarkdownEditor.prototype, "showCatalog", void 0);
__decorate([
    Prop({ default: true })
], AppMarkdownEditor.prototype, "shortCut", void 0);
__decorate([
    Prop({ default: false })
], AppMarkdownEditor.prototype, "boxShadow", void 0);
__decorate([
    Prop({ default: true })
], AppMarkdownEditor.prototype, "highLight", void 0);
__decorate([
    Prop({ default: true })
], AppMarkdownEditor.prototype, "subfield", void 0);
__decorate([
    Prop({ default: 'edit' })
], AppMarkdownEditor.prototype, "defaultOpen", void 0);
__decorate([
    Prop({ default: 14 })
], AppMarkdownEditor.prototype, "fontSize", void 0);
__decorate([
    Prop()
], AppMarkdownEditor.prototype, "placeholder", void 0);
AppMarkdownEditor = __decorate([
    Component({
        components: {
            "mavon-editor": MavonEditor.mavonEditor
        }
    })
], AppMarkdownEditor);
export default AppMarkdownEditor;
