import { __decorate } from "tslib";
import { Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing, EditorBase } from '@ibizstudio-ex/template-vue';
import { ModelTool } from '@ibizstudio-ex/runtime';
import { AppMavonEditor } from '../../components';
/**
 * MarkDown查看器插件类
 *
 * @export
 * @class MarkdownObserver
 * @extends {EditorBase}
 */
let MarkdownObserver = class MarkdownObserver extends EditorBase {
    /**
     * 编辑器初始化
     *
     * @memberof CustomStyleSelector
     */
    async initEditor() {
        var _a, _b;
        await super.initEditor();
        let unitName = (_a = this.parentItem) === null || _a === void 0 ? void 0 : _a.unitName;
        let appDeField = (_b = this.parentItem) === null || _b === void 0 ? void 0 : _b.getPSAppDEField();
        this.customProps.type = ModelTool.isNumberField(appDeField) ? 'number' : 'text';
        this.customProps.unit = unitName;
        this.customProps.precision = ModelTool.getPrecision(this.editorInstance, appDeField);
    }
    /**
     * 编辑器change事件
     *
     * @param {*} value
     * @memberof CustomStyleSelector
     */
    handleChange($event) {
        this.editorChange({ name: this.editorInstance.name, value: $event });
    }
    /**
     * 编辑器enter事件
     *
     * @param {*} value
     * @memberof CustomStyleSelector
     */
    handleEnter($event) {
        this.$emit('enter', arguments);
    }
    /**
     * 绘制默认内容
     *
     * @returns {*}
     * @memberof CustomStyleSelector
     */
    renderTextbox() {
        return this.$createElement('app-mavon-editor', {
            props: Object.assign({ name: this.editorInstance.name, itemValue: this.value, disabled: this.disabled }, this.customProps),
            on: {
                change: this.handleChange,
                enter: this.handleEnter,
            },
            style: this.customStyle,
        });
    }
    /**
     * 绘制内容
     *
     * @returns {*}
     * @memberof CustomStyleSelector
     */
    render() {
        if (!this.editorIsLoaded) {
            return null;
        }
        return this.renderTextbox();
    }
};
MarkdownObserver = __decorate([
    Component({
        components: {
            'app-mavon-editor': AppMavonEditor
        }
    }),
    VueLifeCycleProcessing()
], MarkdownObserver);
export { MarkdownObserver };
