{{define "modals/textModal"}}
<a-modal id="text-modal" v-model="txtModal.visible" :title="txtModal.title" :closable="true"
    :class="themeSwitcher.currentTheme">
    <a-input :style="{ overflowY: 'auto' }" type="textarea" v-model="txtModal.content"
        :autosize="{ minRows: 10, maxRows: 20}"></a-input>
    <template slot="footer">
        <a-button v-if="!ObjectUtil.isEmpty(txtModal.fileName)" icon="download"
            @click="txtModal.download(txtModal.content, txtModal.fileName)">
            <span>[[ txtModal.fileName ]]</span>
        </a-button>
        <a-button type="primary" icon="copy" @click="txtModal.copy(txtModal.content)">
            <span>{{ i18n "copy" }}</span>
        </a-button>
    </template>
</a-modal>

<script>
    const txtModal = {
        title: '',
        content: '',
        fileName: '',
        qrcode: null,
        visible: false,
        show: function (title = '', content = '', fileName = '') {
            this.title = title;
            this.content = content;
            this.fileName = fileName;
            this.visible = true;
        },
        copy: function (content = '') {
            ClipboardManager
                .copyText(content)
                .then(() => {
                    app.$message.success('{{ i18n "copied" }}')
                    this.close();
                })
        },
        download: function (content = '', fileName = '') {
            let link = document.createElement('a');

            link.download = fileName;
            link.href = URL.createObjectURL(new Blob([content], { type: 'text/plain' }));
            link.click();

            URL.revokeObjectURL(link.href);

            link.remove();
        },
        close: function () {
            this.visible = false;
        },
    };

    const textModalApp = new Vue({
        delimiters: ['[[', ']]'],
        el: '#text-modal',
        data: {
            txtModal: txtModal,
        },
    });
</script>
{{end}}