{"version":3,"file":"export.vue2.mjs","sources":["../../../../../../packages/components/export/src/export.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToExport'\n});\n</script>\n<template>\n\t<span :key=\"langKey\" :flex=\"flex ? flex : null\" class=\"to-export\" :class=\"setClass\">\n\t\t<to-button v-if=\"props.type === 'button'\" ref=\"buttonEl\" class=\"to-export-button\" :disabled=\"props.disabled\" icon=\"export\" expand @click.stop=\"handleFloat(buttonEl)\">{{ props.buttonText || t('to.export.button') }}</to-button>\n\t\t<to-icon v-else ref=\"iconEl\" link class=\"to-export-icon\" value=\"export\" @click.stop=\"handleFloat(iconEl)\"></to-icon>\n\t\t<to-float ref=\"floatEl\" class=\"to-export-layer\" width=\"30\" lazy :before-open=\"props.beforeOpen\" :before-close=\"props.beforeClose\" @opened=\"props.opened\" @closed=\"props.closed\">\n\t\t\t<to-input v-model=\"_fileName\" class=\"to-export-input\">\n\t\t\t\t<template #prefix>\n\t\t\t\t\t<to-select v-model=\"_fileType\" option-width=\"7\" :clearable=\"false\" class=\"to-export-select\" :data=\"props.fileTypes\"></to-select>\n\t\t\t\t</template>\n\t\t\t\t<to-button class=\"to-export-confirm\" icon=\"ok\" @click=\"handleExport\">{{ t('to.export.confirm') }}</to-button>\n\t\t\t</to-input>\n\t\t</to-float>\n\t</span>\n</template>\n<script lang=\"ts\" setup>\nimport { ToButton, ToIcon, ToFloat, ToInput, ToSelect } from '@touchvue/components'\nimport { ajax, AjaxOptions } from '@touchvue/utils'\nimport { ref, watch, computed } from 'vue'\nimport { t, langKey } from '@touchvue/locale'\n\nexport interface ExportProps {\n\tflex?: boolean\n\tmode?: string\n\tbuttonText?: string\n\ttype?: string\n\tfileTypes?: string\n\tfileType?: string\n\tfileName?: string\n\taction?: string\n\theaders?: object | null\n\twithCredentials?: boolean\n\tdata?: object | null\n\tbeforeStart?: () => boolean | Promise<boolean>\n\thttpRequest?: (option: AjaxOptions) => XMLHttpRequest\n\tinputProps?: object\n\tdisabled?: boolean\n\tclosed?: () => any\n\tbeforeClose?: () => boolean | Promise<boolean>\n\topened?: () => any\n\tbeforeOpen?: () => boolean | Promise<boolean>\n}\nconst props = withDefaults(defineProps<ExportProps>(), {\n\tflex: false,\n\tmode: 'default',\n\tbuttonText: '',\n\ttype: 'button',\n\tfileTypes: '.xlsx,.xls',\n\tfileType: '.xls',\n\tfileName: '',\n\taction: '',\n\theaders: () => null,\n\twithCredentials: false,\n\tdata: () => null,\n\tbeforeStart: () => true,\n\thttpRequest: ajax,\n\tinputProps: () => ({}),\n\tdisabled: false,\n\tbeforeOpen: () => true,\n\topened: () => true,\n\tbeforeClose: () => true,\n\tclosed: () => true\n})\n\nconst floatEl = ref(null)\nconst buttonEl = ref(null)\nconst iconEl = ref(null)\nconst _fileName = ref(props.fileName)\nconst _fileType = ref(props.fileType)\nconst btnIcon = ref('export|left')\nconst setClass = computed(() => {\n\tlet arr: string[] = []\n\tif (props.mode) {\n\t\tarr.push(`mode-${props.mode}`)\n\t}\n\treturn arr\n})\n\nconst emit = defineEmits(['success', 'error', 'progress'])\n\nwatch(\n\t() => props.fileName,\n\tval => {\n\t\t_fileName.value = val\n\t}\n)\n\nwatch(\n\t() => props.fileType,\n\tval => {\n\t\t_fileType.value = val\n\t}\n)\n\nconst handleFloat = el => {\n\tif (props.disabled) {\n\t\treturn\n\t}\n\tfloatEl.value.toggle(el)\n}\n\nasync function handleExport() {\n\tconst fn = props.beforeStart()\n\tlet flag = true\n\tif (fn && typeof (fn as any).then === 'function') {\n\t\tflag = await fn\n\t} else {\n\t\tflag = !!fn\n\t}\n\tif (!flag) {\n\t\treturn false\n\t}\n\tbtnIcon.value = 'loading|left'\n\tprops.httpRequest({\n\t\taction: props.action,\n\t\tdata: props.data || {},\n\t\theaders: props.headers,\n\t\tfilename: _fileName.value,\n\t\twithCredentials: props.withCredentials,\n\t\tonError: err => {\n\t\t\temit('error', err)\n\t\t},\n\t\tonSuccess: res => {\n\t\t\tconst reader = new FileReader()\n\t\t\treader.onload = () => {\n\t\t\t\tif ((window.navigator as any).msSaveOrOpenBlob) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst blobObject = new Blob([res])\n\t\t\t\t\t\t;(window.navigator as any).msSaveOrOpenBlob(blobObject, _fileName.value)\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error('msSaveOrOpenBlob error:', e)\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst url = window.URL.createObjectURL(new Blob([res]))\n\t\t\t\tconst link = document.createElement('a')\n\t\t\t\tlink.style.display = 'none'\n\t\t\t\tlink.href = url\n\t\t\t\tlink.setAttribute('download', _fileName.value + _fileType.value)\n\t\t\t\tdocument.body.appendChild(link)\n\t\t\t\tlink.click()\n\t\t\t}\n\t\t\treader.readAsText(res)\n\t\t\tbtnIcon.value = 'export|left'\n\t\t\temit('success', res)\n\t\t},\n\t\tonProgress: obj => {\n\t\t\temit('progress', obj.percent, obj.loaded, obj.total)\n\t\t}\n\t})\n}\n</script>\n"],"names":["DO_defineComponent","_createElementBlock","_unref","flex","_normalizeClass","_createBlock","_withModifiers","_createVNode"],"mappings":"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"}