| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | {{define "outModal"}}<a-modal id="out-modal" v-model="outModal.visible" :title="outModal.title" @ok="outModal.ok"         :confirm-loading="outModal.confirmLoading" :closable="true" :mask-closable="false"         :ok-button-props="{ props: { disabled: !outModal.isValid } }" style="overflow: hidden;"         :ok-text="outModal.okText" cancel-text='{{ i18n "close" }}' :class="themeSwitcher.currentTheme">         {{template "form/outbound"}}</a-modal><script>    const outModal = {        title: '',        visible: false,        confirmLoading: false,        okText: '{{ i18n "sure" }}',        isEdit: false,        confirm: null,        outbound: new Outbound(),        jsonMode: false,        link: '',        cm: null,        duplicateTag: false,        isValid: true,        activeKey: '1',        tags: [],        ok() {            ObjectUtil.execute(outModal.confirm, outModal.outbound.toJson());        },        show({ title='', okText='{{ i18n "sure" }}', outbound, confirm=(outbound)=>{}, isEdit=false, tags=[]  }) {            this.title = title;            this.okText = okText;            this.confirm = confirm;            this.jsonMode = false;            this.link = '';            this.activeKey = '1';            this.visible = true;            this.outbound = isEdit ? Outbound.fromJson(outbound) : new Outbound();            this.isEdit = isEdit;            this.tags = tags;            this.check()        },        close() {            outModal.visible = false;            outModal.loading(false);        },        loading(loading=true) {            outModal.confirmLoading = loading;        },        check(){            if(outModal.outbound.tag == '' || outModal.tags.includes(outModal.outbound.tag)){                this.duplicateTag = true;                this.isValid = false;            } else {                this.duplicateTag = false;                this.isValid = true;            }        },        toggleJson(jsonTab) {            textAreaObj = document.getElementById('outboundJson');            if(jsonTab){                if(this.cm != null) {                        this.cm.toTextArea();                        this.cm=null;                }                textAreaObj.value = JSON.stringify(this.outbound.toJson(), null, 2);                this.cm = CodeMirror.fromTextArea(textAreaObj, app.cmOptions);                this.cm.on('change',editor => {                    value = editor.getValue();                    if(this.isJsonString(value)){                        this.outbound = Outbound.fromJson(JSON.parse(value));                        this.check();                    }                });                this.activeKey = '2';            } else {                if(this.cm != null) {                        this.cm.toTextArea();                        this.cm=null;                }                this.activeKey = '1';            }        },        isJsonString(str) {            try {                JSON.parse(str);            } catch (e) {                return false;            }            return true;        },    };    new Vue({        delimiters: ['[[', ']]'],        el: '#out-modal',        data: {            outModal: outModal,            get outbound() {                return outModal.outbound;            },        },        methods: {            streamNetworkChange() {                if (this.outModal.outbound.protocol == Protocols.VLESS && !outModal.outbound.canEnableTlsFlow()) {                    delete this.outModal.outbound.settings.flow;                }            },            canEnableTls() {                return this.outModal.outbound.canEnableTls();            },            convertLink(){                newOutbound = Outbound.fromLink(outModal.link);                if(newOutbound){                    this.outModal.outbound = newOutbound;                    this.outModal.toggleJson(true);                    this.outModal.check();                    this.$message.success('Link imported successfully...');                          outModal.link = '';                } else {                    this.$message.error('Wrong Link!');                    outModal.link = '';                }            },        },    });</script>{{end}}
 |