{"version":3,"file":"index.mjs","sources":["../../src/fileupload/BaseFileUpload.vue","../../src/fileupload/FileContent.vue","../../src/fileupload/FileContent.vue?vue&type=template&id=4b9f1ffb&lang.js","../../src/fileupload/FileUpload.vue","../../src/fileupload/FileUpload.vue?vue&type=template&id=1a3b40d8&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport FileUploadStyle from 'primevue/fileupload/style';\n\nexport default {\n    name: 'BaseFileUpload',\n    extends: BaseComponent,\n    props: {\n        name: {\n            type: String,\n            default: null\n        },\n        url: {\n            type: String,\n            default: null\n        },\n        mode: {\n            type: String,\n            default: 'advanced'\n        },\n        multiple: {\n            type: Boolean,\n            default: false\n        },\n        accept: {\n            type: String,\n            default: null\n        },\n        disabled: {\n            type: Boolean,\n            default: false\n        },\n        auto: {\n            type: Boolean,\n            default: false\n        },\n        maxFileSize: {\n            type: Number,\n            default: null\n        },\n        invalidFileSizeMessage: {\n            type: String,\n            default: '{0}: Invalid file size, file size should be smaller than {1}.'\n        },\n        invalidFileTypeMessage: {\n            type: String,\n            default: '{0}: Invalid file type, allowed file types: {1}.'\n        },\n        fileLimit: {\n            type: Number,\n            default: null\n        },\n        invalidFileLimitMessage: {\n            type: String,\n            default: 'Maximum number of files exceeded, limit is {0} at most.'\n        },\n        withCredentials: {\n            type: Boolean,\n            default: false\n        },\n        previewWidth: {\n            type: Number,\n            default: 50\n        },\n        chooseLabel: {\n            type: String,\n            default: null\n        },\n        uploadLabel: {\n            type: String,\n            default: null\n        },\n        cancelLabel: {\n            type: String,\n            default: null\n        },\n        customUpload: {\n            type: Boolean,\n            default: false\n        },\n        showUploadButton: {\n            type: Boolean,\n            default: true\n        },\n        showCancelButton: {\n            type: Boolean,\n            default: true\n        },\n        chooseIcon: {\n            type: String,\n            default: undefined\n        },\n        uploadIcon: {\n            type: String,\n            default: undefined\n        },\n        cancelIcon: {\n            type: String,\n            default: undefined\n        },\n        style: null,\n        class: null,\n        chooseButtonProps: {\n            type: null,\n            default: null\n        },\n        uploadButtonProps: {\n            type: Object,\n            default() {\n                return { severity: 'secondary' };\n            }\n        },\n        cancelButtonProps: {\n            type: Object,\n            default() {\n                return { severity: 'secondary' };\n            }\n        }\n    },\n    style: FileUploadStyle,\n    provide() {\n        return {\n            $pcFileUpload: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <div v-for=\"(file, index) of files\" :key=\"file.name + file.type + file.size\" :class=\"cx('file')\" v-bind=\"ptm('file')\">\n        <img role=\"presentation\" :class=\"cx('fileThumbnail')\" :alt=\"file.name\" :src=\"file.objectURL\" :width=\"previewWidth\" v-bind=\"ptm('fileThumbnail')\" />\n        <div :class=\"cx('fileInfo')\" v-bind=\"ptm('fileInfo')\">\n            <div :class=\"cx('fileName')\" v-bind=\"ptm('fileName')\">{{ file.name }}</div>\n            <span :class=\"cx('fileSize')\" v-bind=\"ptm('fileSize')\">{{ formatSize(file.size) }}</span>\n        </div>\n        <Badge :value=\"badgeValue\" :class=\"cx('pcFileBadge')\" :severity=\"badgeSeverity\" :unstyled=\"unstyled\" :pt=\"ptm('pcFileBadge')\" />\n        <div :class=\"cx('fileActions')\" v-bind=\"ptm('fileActions')\">\n            <Button @click=\"$emit('remove', index)\" text rounded severity=\"danger\" :class=\"cx('pcFileRemoveButton')\" :unstyled=\"unstyled\" :pt=\"ptm('pcFileRemoveButton')\">\n                <template #icon=\"iconProps\">\n                    <component v-if=\"templates.fileremoveicon\" :is=\"templates.fileremoveicon\" :class=\"iconProps.class\" :file=\"file\" :index=\"index\" />\n                    <TimesIcon v-else :class=\"iconProps.class\" aria-hidden=\"true\" v-bind=\"ptm('pcFileRemoveButton')['icon']\" />\n                </template>\n            </Button>\n        </div>\n    </div>\n</template>\n\n<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport TimesIcon from '@primevue/icons/times';\nimport Badge from 'primevue/badge';\nimport Button from 'primevue/button';\n\nexport default {\n    name: 'FileContent',\n    hostName: 'FileUpload',\n    extends: BaseComponent,\n    emits: ['remove'],\n    props: {\n        files: {\n            type: Array,\n            default: () => []\n        },\n        badgeSeverity: {\n            type: String,\n            default: 'warn'\n        },\n        badgeValue: {\n            type: String,\n            default: null\n        },\n        previewWidth: {\n            type: Number,\n            default: 50\n        },\n        templates: {\n            type: null,\n            default: null\n        }\n    },\n    methods: {\n        formatSize(bytes) {\n            const k = 1024;\n            const dm = 3;\n            const sizes = this.$primevue.config.locale?.fileSizeTypes || ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n            if (bytes === 0) {\n                return `0 ${sizes[0]}`;\n            }\n\n            const i = Math.floor(Math.log(bytes) / Math.log(k));\n            const formattedSize = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n\n            return `${formattedSize} ${sizes[i]}`;\n        }\n    },\n    components: {\n        Button,\n        Badge,\n        TimesIcon\n    }\n};\n</script>\n","<template>\n    <div v-for=\"(file, index) of files\" :key=\"file.name + file.type + file.size\" :class=\"cx('file')\" v-bind=\"ptm('file')\">\n        <img role=\"presentation\" :class=\"cx('fileThumbnail')\" :alt=\"file.name\" :src=\"file.objectURL\" :width=\"previewWidth\" v-bind=\"ptm('fileThumbnail')\" />\n        <div :class=\"cx('fileInfo')\" v-bind=\"ptm('fileInfo')\">\n            <div :class=\"cx('fileName')\" v-bind=\"ptm('fileName')\">{{ file.name }}</div>\n            <span :class=\"cx('fileSize')\" v-bind=\"ptm('fileSize')\">{{ formatSize(file.size) }}</span>\n        </div>\n        <Badge :value=\"badgeValue\" :class=\"cx('pcFileBadge')\" :severity=\"badgeSeverity\" :unstyled=\"unstyled\" :pt=\"ptm('pcFileBadge')\" />\n        <div :class=\"cx('fileActions')\" v-bind=\"ptm('fileActions')\">\n            <Button @click=\"$emit('remove', index)\" text rounded severity=\"danger\" :class=\"cx('pcFileRemoveButton')\" :unstyled=\"unstyled\" :pt=\"ptm('pcFileRemoveButton')\">\n                <template #icon=\"iconProps\">\n                    <component v-if=\"templates.fileremoveicon\" :is=\"templates.fileremoveicon\" :class=\"iconProps.class\" :file=\"file\" :index=\"index\" />\n                    <TimesIcon v-else :class=\"iconProps.class\" aria-hidden=\"true\" v-bind=\"ptm('pcFileRemoveButton')['icon']\" />\n                </template>\n            </Button>\n        </div>\n    </div>\n</template>\n\n<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport TimesIcon from '@primevue/icons/times';\nimport Badge from 'primevue/badge';\nimport Button from 'primevue/button';\n\nexport default {\n    name: 'FileContent',\n    hostName: 'FileUpload',\n    extends: BaseComponent,\n    emits: ['remove'],\n    props: {\n        files: {\n            type: Array,\n            default: () => []\n        },\n        badgeSeverity: {\n            type: String,\n            default: 'warn'\n        },\n        badgeValue: {\n            type: String,\n            default: null\n        },\n        previewWidth: {\n            type: Number,\n            default: 50\n        },\n        templates: {\n            type: null,\n            default: null\n        }\n    },\n    methods: {\n        formatSize(bytes) {\n            const k = 1024;\n            const dm = 3;\n            const sizes = this.$primevue.config.locale?.fileSizeTypes || ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n            if (bytes === 0) {\n                return `0 ${sizes[0]}`;\n            }\n\n            const i = Math.floor(Math.log(bytes) / Math.log(k));\n            const formattedSize = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n\n            return `${formattedSize} ${sizes[i]}`;\n        }\n    },\n    components: {\n        Button,\n        Badge,\n        TimesIcon\n    }\n};\n</script>\n","<template>\n    <div v-if=\"isAdvanced\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n        <input ref=\"fileInput\" type=\"file\" @change=\"onFileSelect\" :multiple=\"multiple\" :accept=\"accept\" :disabled=\"chooseDisabled\" v-bind=\"ptm('input')\" />\n        <div :class=\"cx('header')\" v-bind=\"ptm('header')\">\n            <slot name=\"header\" :files=\"files\" :uploadedFiles=\"uploadedFiles\" :chooseCallback=\"choose\" :uploadCallback=\"uploader\" :clearCallback=\"clear\">\n                <Button\n                    :label=\"chooseButtonLabel\"\n                    :class=\"chooseButtonClass\"\n                    :style=\"style\"\n                    :disabled=\"disabled\"\n                    :unstyled=\"unstyled\"\n                    @click=\"choose\"\n                    @keydown.enter=\"choose\"\n                    @focus=\"onFocus\"\n                    @blur=\"onBlur\"\n                    v-bind=\"chooseButtonProps\"\n                    :pt=\"ptm('pcChooseButton')\"\n                >\n                    <template #icon=\"iconProps\">\n                        <slot name=\"chooseicon\">\n                            <component :is=\"chooseIcon ? 'span' : 'PlusIcon'\" :class=\"[iconProps.class, chooseIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcChooseButton')['icon']\" />\n                        </slot>\n                    </template>\n                </Button>\n                <Button v-if=\"showUploadButton\" :class=\"cx('pcUploadButton')\" :label=\"uploadButtonLabel\" @click=\"uploader\" :disabled=\"uploadDisabled\" :unstyled=\"unstyled\" v-bind=\"uploadButtonProps\" :pt=\"ptm('pcUploadButton')\">\n                    <template #icon=\"iconProps\">\n                        <slot name=\"uploadicon\">\n                            <component :is=\"uploadIcon ? 'span' : 'UploadIcon'\" :class=\"[iconProps.class, uploadIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcUploadButton')['icon']\" data-pc-section=\"uploadbuttonicon\" />\n                        </slot>\n                    </template>\n                </Button>\n                <Button v-if=\"showCancelButton\" :class=\"cx('pcCancelButton')\" :label=\"cancelButtonLabel\" @click=\"clear\" :disabled=\"cancelDisabled\" :unstyled=\"unstyled\" v-bind=\"cancelButtonProps\" :pt=\"ptm('pcCancelButton')\">\n                    <template #icon=\"iconProps\">\n                        <slot name=\"cancelicon\">\n                            <component :is=\"cancelIcon ? 'span' : 'TimesIcon'\" :class=\"[iconProps.class, cancelIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcCancelButton')['icon']\" data-pc-section=\"cancelbuttonicon\" />\n                        </slot>\n                    </template>\n                </Button>\n            </slot>\n        </div>\n        <div ref=\"content\" :class=\"cx('content')\" @dragenter=\"onDragEnter\" @dragover=\"onDragOver\" @dragleave=\"onDragLeave\" @drop=\"onDrop\" v-bind=\"ptm('content')\" :data-p-highlight=\"false\">\n            <slot name=\"content\" :files=\"files\" :uploadedFiles=\"uploadedFiles\" :removeUploadedFileCallback=\"removeUploadedFile\" :removeFileCallback=\"remove\" :progress=\"progress\" :messages=\"messages\">\n                <ProgressBar v-if=\"hasFiles\" :value=\"progress\" :showValue=\"false\" :unstyled=\"unstyled\" :pt=\"ptm('pcProgressbar')\" />\n                <Message v-for=\"msg of messages\" :key=\"msg\" severity=\"error\" @close=\"onMessageClose\" :unstyled=\"unstyled\" :pt=\"ptm('pcMessage')\">{{ msg }}</Message>\n                <div v-if=\"hasFiles\" :class=\"cx('fileList')\">\n                    <FileContent :files=\"files\" @remove=\"remove\" :badgeValue=\"pendingLabel\" :previewWidth=\"previewWidth\" :templates=\"$slots\" :unstyled=\"unstyled\" :pt=\"pt\" />\n                </div>\n                <div v-if=\"hasUploadedFiles\" :class=\"cx('fileList')\">\n                    <FileContent :files=\"uploadedFiles\" @remove=\"removeUploadedFile\" :badgeValue=\"completedLabel\" badgeSeverity=\"success\" :previewWidth=\"previewWidth\" :templates=\"$slots\" :unstyled=\"unstyled\" :pt=\"pt\" />\n                </div>\n            </slot>\n            <div v-if=\"$slots.empty && !hasFiles && !hasUploadedFiles\" v-bind=\"ptm('empty')\">\n                <slot name=\"empty\"></slot>\n            </div>\n        </div>\n    </div>\n    <div v-else-if=\"isBasic\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n        <Message v-for=\"msg of messages\" :key=\"msg\" severity=\"error\" @close=\"onMessageClose\" :unstyled=\"unstyled\" :pt=\"ptm('pcMessages')\">{{ msg }}</Message>\n        <Button :label=\"chooseButtonLabel\" :class=\"chooseButtonClass\" :style=\"style\" :disabled=\"disabled\" :unstyled=\"unstyled\" @mouseup=\"onBasicUploaderClick\" @keydown.enter=\"choose\" @focus=\"onFocus\" @blur=\"onBlur\" v-bind=\"ptm('pcButton')\">\n            <template #icon=\"iconProps\">\n                <slot v-if=\"!hasFiles || auto\" name=\"uploadicon\">\n                    <component :is=\"uploadIcon ? 'span' : 'UploadIcon'\" :class=\"[iconProps.class, uploadIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcButton')['icon']\" />\n                </slot>\n                <slot v-else name=\"chooseicon\">\n                    <component :is=\"chooseIcon ? 'span' : 'PlusIcon'\" :class=\"[iconProps.class, chooseIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcButton')['icon']\" />\n                </slot>\n            </template>\n        </Button>\n        <slot v-if=\"!auto\" name=\"filelabel\" :class=\"cx('filelabel')\">\n            <span :class=\"cx('filelabel')\" :files=\"files\">\n                {{ basicFileChosenLabel }}\n            </span>\n        </slot>\n        <input v-if=\"!hasFiles\" ref=\"fileInput\" type=\"file\" :accept=\"accept\" :disabled=\"disabled\" :multiple=\"multiple\" @change=\"onFileSelect\" @focus=\"onFocus\" @blur=\"onBlur\" v-bind=\"ptm('input')\" />\n    </div>\n</template>\n\n<script>\nimport { addClass, removeClass } from '@primeuix/utils/dom';\nimport PlusIcon from '@primevue/icons/plus';\nimport TimesIcon from '@primevue/icons/times';\nimport UploadIcon from '@primevue/icons/upload';\nimport Button from 'primevue/button';\nimport Message from 'primevue/message';\nimport ProgressBar from 'primevue/progressbar';\nimport Ripple from 'primevue/ripple';\nimport BaseFileUpload from './BaseFileUpload.vue';\nimport FileContent from './FileContent.vue';\n\nexport default {\n    name: 'FileUpload',\n    extends: BaseFileUpload,\n    inheritAttrs: false,\n    emits: ['select', 'uploader', 'before-upload', 'progress', 'upload', 'error', 'before-send', 'clear', 'remove', 'remove-uploaded-file'],\n    duplicateIEEvent: false,\n    data() {\n        return {\n            uploadedFileCount: 0,\n            files: [],\n            messages: [],\n            focused: false,\n            progress: null,\n            uploadedFiles: []\n        };\n    },\n    methods: {\n        upload() {\n            if (this.hasFiles) this.uploader();\n        },\n        onBasicUploaderClick(event) {\n            if (event.button === 0 && !this.hasFiles) this.$refs.fileInput.click();\n        },\n        onFileSelect(event) {\n            if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {\n                this.duplicateIEEvent = false;\n\n                return;\n            }\n\n            this.messages = [];\n            this.files = this.files || [];\n            let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n\n            for (let file of files) {\n                if (!this.isFileSelected(file)) {\n                    if (this.validate(file)) {\n                        if (this.isImage(file)) {\n                            file.objectURL = window.URL.createObjectURL(file);\n                        }\n\n                        this.files.push(file);\n                    }\n                }\n            }\n\n            this.$emit('select', { originalEvent: event, files: this.files });\n\n            if (this.fileLimit) {\n                this.checkFileLimit();\n            }\n\n            if (this.auto && this.hasFiles && !this.isFileLimitExceeded()) {\n                this.uploader();\n            }\n\n            if (event.type !== 'drop' && this.isIE11()) {\n                this.clearIEInput();\n            } else {\n                this.clearInputElement();\n            }\n        },\n        choose() {\n            this.$refs.fileInput.click();\n        },\n        uploader() {\n            if (this.customUpload) {\n                if (this.fileLimit) {\n                    this.uploadedFileCount += this.files.length;\n                }\n\n                this.$emit('uploader', { files: this.files });\n                this.clear();\n            } else {\n                let xhr = new XMLHttpRequest();\n                let formData = new FormData();\n\n                this.$emit('before-upload', {\n                    xhr: xhr,\n                    formData: formData\n                });\n\n                for (let file of this.files) {\n                    formData.append(this.name, file, file.name);\n                }\n\n                xhr.upload.addEventListener('progress', (event) => {\n                    if (event.lengthComputable) {\n                        this.progress = Math.round((event.loaded * 100) / event.total);\n                    }\n\n                    this.$emit('progress', {\n                        originalEvent: event,\n                        progress: this.progress\n                    });\n                });\n\n                xhr.onreadystatechange = () => {\n                    if (xhr.readyState === 4) {\n                        this.progress = 0;\n\n                        if (xhr.status >= 200 && xhr.status < 300) {\n                            if (this.fileLimit) {\n                                this.uploadedFileCount += this.files.length;\n                            }\n\n                            this.$emit('upload', {\n                                xhr: xhr,\n                                files: this.files\n                            });\n                        } else {\n                            this.$emit('error', {\n                                xhr: xhr,\n                                files: this.files\n                            });\n                        }\n\n                        this.uploadedFiles.push(...this.files);\n                        this.clear();\n                    }\n                };\n\n                xhr.open('POST', this.url, true);\n\n                this.$emit('before-send', {\n                    xhr: xhr,\n                    formData: formData\n                });\n\n                xhr.withCredentials = this.withCredentials;\n\n                xhr.send(formData);\n            }\n        },\n        clear() {\n            this.files = [];\n            this.messages = null;\n            this.$emit('clear');\n\n            if (this.isAdvanced) {\n                this.clearInputElement();\n            }\n        },\n        onFocus() {\n            this.focused = true;\n        },\n        onBlur() {\n            this.focused = false;\n        },\n        isFileSelected(file) {\n            if (this.files && this.files.length) {\n                for (let sFile of this.files) {\n                    if (sFile.name + sFile.type + sFile.size === file.name + file.type + file.size) return true;\n                }\n            }\n\n            return false;\n        },\n        isIE11() {\n            return !!window['MSInputMethodContext'] && !!document['documentMode'];\n        },\n        validate(file) {\n            if (this.accept && !this.isFileTypeValid(file)) {\n                this.messages.push(this.invalidFileTypeMessage.replace('{0}', file.name).replace('{1}', this.accept));\n\n                return false;\n            }\n\n            if (this.maxFileSize && file.size > this.maxFileSize) {\n                this.messages.push(this.invalidFileSizeMessage.replace('{0}', file.name).replace('{1}', this.formatSize(this.maxFileSize)));\n\n                return false;\n            }\n\n            return true;\n        },\n        isFileTypeValid(file) {\n            let acceptableTypes = this.accept.split(',').map((type) => type.trim());\n\n            for (let type of acceptableTypes) {\n                let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type) : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();\n\n                if (acceptable) {\n                    return true;\n                }\n            }\n\n            return false;\n        },\n        getTypeClass(fileType) {\n            return fileType.substring(0, fileType.indexOf('/'));\n        },\n        isWildcard(fileType) {\n            return fileType.indexOf('*') !== -1;\n        },\n        getFileExtension(file) {\n            return '.' + file.name.split('.').pop();\n        },\n        isImage(file) {\n            return /^image\\//.test(file.type);\n        },\n        onDragEnter(event) {\n            if (!this.disabled) {\n                event.stopPropagation();\n                event.preventDefault();\n            }\n        },\n        onDragOver(event) {\n            if (!this.disabled) {\n                !this.isUnstyled && addClass(this.$refs.content, 'p-fileupload-highlight');\n                this.$refs.content.setAttribute('data-p-highlight', true);\n                event.stopPropagation();\n                event.preventDefault();\n            }\n        },\n        onDragLeave() {\n            if (!this.disabled) {\n                !this.isUnstyled && removeClass(this.$refs.content, 'p-fileupload-highlight');\n                this.$refs.content.setAttribute('data-p-highlight', false);\n            }\n        },\n        onDrop(event) {\n            if (!this.disabled) {\n                !this.isUnstyled && removeClass(this.$refs.content, 'p-fileupload-highlight');\n                this.$refs.content.setAttribute('data-p-highlight', false);\n                event.stopPropagation();\n                event.preventDefault();\n\n                const files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n                const allowDrop = this.multiple || (files && files.length === 1);\n\n                if (allowDrop) {\n                    this.onFileSelect(event);\n                }\n            }\n        },\n        remove(index) {\n            this.clearInputElement();\n            let removedFile = this.files.splice(index, 1)[0];\n\n            this.files = [...this.files];\n            this.$emit('remove', {\n                file: removedFile,\n                files: this.files\n            });\n        },\n        removeUploadedFile(index) {\n            let removedFile = this.uploadedFiles.splice(index, 1)[0];\n\n            this.uploadedFiles = [...this.uploadedFiles];\n            this.$emit('remove-uploaded-file', {\n                file: removedFile,\n                files: this.uploadedFiles\n            });\n        },\n        clearInputElement() {\n            this.$refs.fileInput.value = '';\n        },\n        clearIEInput() {\n            if (this.$refs.fileInput) {\n                this.duplicateIEEvent = true; //IE11 fix to prevent onFileChange trigger again\n                this.$refs.fileInput.value = '';\n            }\n        },\n        formatSize(bytes) {\n            const k = 1024;\n            const dm = 3;\n            const sizes = this.$primevue.config.locale?.fileSizeTypes || ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n            if (bytes === 0) {\n                return `0 ${sizes[0]}`;\n            }\n\n            const i = Math.floor(Math.log(bytes) / Math.log(k));\n            const formattedSize = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n\n            return `${formattedSize} ${sizes[i]}`;\n        },\n        isFileLimitExceeded() {\n            if (this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount && this.focused) {\n                this.focused = false;\n            }\n\n            return this.fileLimit && this.fileLimit < this.files.length + this.uploadedFileCount;\n        },\n        checkFileLimit() {\n            if (this.isFileLimitExceeded()) {\n                this.messages.push(this.invalidFileLimitMessage.replace('{0}', this.fileLimit.toString()));\n            }\n        },\n        onMessageClose() {\n            this.messages = null;\n        }\n    },\n    computed: {\n        isAdvanced() {\n            return this.mode === 'advanced';\n        },\n        isBasic() {\n            return this.mode === 'basic';\n        },\n        chooseButtonClass() {\n            return [this.cx('pcChooseButton'), this.class];\n        },\n        basicFileChosenLabel() {\n            if (this.auto) return this.chooseButtonLabel;\n            else if (this.hasFiles) {\n                if (this.files && this.files.length === 1) return this.files[0].name;\n\n                return this.$primevue.config.locale?.fileChosenMessage?.replace('{0}', this.files.length);\n            }\n\n            return this.$primevue.config.locale?.noFileChosenMessage || '';\n        },\n        hasFiles() {\n            return this.files && this.files.length > 0;\n        },\n        hasUploadedFiles() {\n            return this.uploadedFiles && this.uploadedFiles.length > 0;\n        },\n        chooseDisabled() {\n            return this.disabled || (this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount);\n        },\n        uploadDisabled() {\n            return this.disabled || !this.hasFiles || (this.fileLimit && this.fileLimit < this.files.length);\n        },\n        cancelDisabled() {\n            return this.disabled || !this.hasFiles;\n        },\n        chooseButtonLabel() {\n            return this.chooseLabel || this.$primevue.config.locale.choose;\n        },\n        uploadButtonLabel() {\n            return this.uploadLabel || this.$primevue.config.locale.upload;\n        },\n        cancelButtonLabel() {\n            return this.cancelLabel || this.$primevue.config.locale.cancel;\n        },\n        completedLabel() {\n            return this.$primevue.config.locale.completed;\n        },\n        pendingLabel() {\n            return this.$primevue.config.locale.pending;\n        }\n    },\n    components: {\n        Button,\n        ProgressBar,\n        Message,\n        FileContent,\n        PlusIcon,\n        UploadIcon,\n        TimesIcon\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n","<template>\n    <div v-if=\"isAdvanced\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n        <input ref=\"fileInput\" type=\"file\" @change=\"onFileSelect\" :multiple=\"multiple\" :accept=\"accept\" :disabled=\"chooseDisabled\" v-bind=\"ptm('input')\" />\n        <div :class=\"cx('header')\" v-bind=\"ptm('header')\">\n            <slot name=\"header\" :files=\"files\" :uploadedFiles=\"uploadedFiles\" :chooseCallback=\"choose\" :uploadCallback=\"uploader\" :clearCallback=\"clear\">\n                <Button\n                    :label=\"chooseButtonLabel\"\n                    :class=\"chooseButtonClass\"\n                    :style=\"style\"\n                    :disabled=\"disabled\"\n                    :unstyled=\"unstyled\"\n                    @click=\"choose\"\n                    @keydown.enter=\"choose\"\n                    @focus=\"onFocus\"\n                    @blur=\"onBlur\"\n                    v-bind=\"chooseButtonProps\"\n                    :pt=\"ptm('pcChooseButton')\"\n                >\n                    <template #icon=\"iconProps\">\n                        <slot name=\"chooseicon\">\n                            <component :is=\"chooseIcon ? 'span' : 'PlusIcon'\" :class=\"[iconProps.class, chooseIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcChooseButton')['icon']\" />\n                        </slot>\n                    </template>\n                </Button>\n                <Button v-if=\"showUploadButton\" :class=\"cx('pcUploadButton')\" :label=\"uploadButtonLabel\" @click=\"uploader\" :disabled=\"uploadDisabled\" :unstyled=\"unstyled\" v-bind=\"uploadButtonProps\" :pt=\"ptm('pcUploadButton')\">\n                    <template #icon=\"iconProps\">\n                        <slot name=\"uploadicon\">\n                            <component :is=\"uploadIcon ? 'span' : 'UploadIcon'\" :class=\"[iconProps.class, uploadIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcUploadButton')['icon']\" data-pc-section=\"uploadbuttonicon\" />\n                        </slot>\n                    </template>\n                </Button>\n                <Button v-if=\"showCancelButton\" :class=\"cx('pcCancelButton')\" :label=\"cancelButtonLabel\" @click=\"clear\" :disabled=\"cancelDisabled\" :unstyled=\"unstyled\" v-bind=\"cancelButtonProps\" :pt=\"ptm('pcCancelButton')\">\n                    <template #icon=\"iconProps\">\n                        <slot name=\"cancelicon\">\n                            <component :is=\"cancelIcon ? 'span' : 'TimesIcon'\" :class=\"[iconProps.class, cancelIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcCancelButton')['icon']\" data-pc-section=\"cancelbuttonicon\" />\n                        </slot>\n                    </template>\n                </Button>\n            </slot>\n        </div>\n        <div ref=\"content\" :class=\"cx('content')\" @dragenter=\"onDragEnter\" @dragover=\"onDragOver\" @dragleave=\"onDragLeave\" @drop=\"onDrop\" v-bind=\"ptm('content')\" :data-p-highlight=\"false\">\n            <slot name=\"content\" :files=\"files\" :uploadedFiles=\"uploadedFiles\" :removeUploadedFileCallback=\"removeUploadedFile\" :removeFileCallback=\"remove\" :progress=\"progress\" :messages=\"messages\">\n                <ProgressBar v-if=\"hasFiles\" :value=\"progress\" :showValue=\"false\" :unstyled=\"unstyled\" :pt=\"ptm('pcProgressbar')\" />\n                <Message v-for=\"msg of messages\" :key=\"msg\" severity=\"error\" @close=\"onMessageClose\" :unstyled=\"unstyled\" :pt=\"ptm('pcMessage')\">{{ msg }}</Message>\n                <div v-if=\"hasFiles\" :class=\"cx('fileList')\">\n                    <FileContent :files=\"files\" @remove=\"remove\" :badgeValue=\"pendingLabel\" :previewWidth=\"previewWidth\" :templates=\"$slots\" :unstyled=\"unstyled\" :pt=\"pt\" />\n                </div>\n                <div v-if=\"hasUploadedFiles\" :class=\"cx('fileList')\">\n                    <FileContent :files=\"uploadedFiles\" @remove=\"removeUploadedFile\" :badgeValue=\"completedLabel\" badgeSeverity=\"success\" :previewWidth=\"previewWidth\" :templates=\"$slots\" :unstyled=\"unstyled\" :pt=\"pt\" />\n                </div>\n            </slot>\n            <div v-if=\"$slots.empty && !hasFiles && !hasUploadedFiles\" v-bind=\"ptm('empty')\">\n                <slot name=\"empty\"></slot>\n            </div>\n        </div>\n    </div>\n    <div v-else-if=\"isBasic\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n        <Message v-for=\"msg of messages\" :key=\"msg\" severity=\"error\" @close=\"onMessageClose\" :unstyled=\"unstyled\" :pt=\"ptm('pcMessages')\">{{ msg }}</Message>\n        <Button :label=\"chooseButtonLabel\" :class=\"chooseButtonClass\" :style=\"style\" :disabled=\"disabled\" :unstyled=\"unstyled\" @mouseup=\"onBasicUploaderClick\" @keydown.enter=\"choose\" @focus=\"onFocus\" @blur=\"onBlur\" v-bind=\"ptm('pcButton')\">\n            <template #icon=\"iconProps\">\n                <slot v-if=\"!hasFiles || auto\" name=\"uploadicon\">\n                    <component :is=\"uploadIcon ? 'span' : 'UploadIcon'\" :class=\"[iconProps.class, uploadIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcButton')['icon']\" />\n                </slot>\n                <slot v-else name=\"chooseicon\">\n                    <component :is=\"chooseIcon ? 'span' : 'PlusIcon'\" :class=\"[iconProps.class, chooseIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcButton')['icon']\" />\n                </slot>\n            </template>\n        </Button>\n        <slot v-if=\"!auto\" name=\"filelabel\" :class=\"cx('filelabel')\">\n            <span :class=\"cx('filelabel')\" :files=\"files\">\n                {{ basicFileChosenLabel }}\n            </span>\n        </slot>\n        <input v-if=\"!hasFiles\" ref=\"fileInput\" type=\"file\" :accept=\"accept\" :disabled=\"disabled\" :multiple=\"multiple\" @change=\"onFileSelect\" @focus=\"onFocus\" @blur=\"onBlur\" v-bind=\"ptm('input')\" />\n    </div>\n</template>\n\n<script>\nimport { addClass, removeClass } from '@primeuix/utils/dom';\nimport PlusIcon from '@primevue/icons/plus';\nimport TimesIcon from '@primevue/icons/times';\nimport UploadIcon from '@primevue/icons/upload';\nimport Button from 'primevue/button';\nimport Message from 'primevue/message';\nimport ProgressBar from 'primevue/progressbar';\nimport Ripple from 'primevue/ripple';\nimport BaseFileUpload from './BaseFileUpload.vue';\nimport FileContent from './FileContent.vue';\n\nexport default {\n    name: 'FileUpload',\n    extends: BaseFileUpload,\n    inheritAttrs: false,\n    emits: ['select', 'uploader', 'before-upload', 'progress', 'upload', 'error', 'before-send', 'clear', 'remove', 'remove-uploaded-file'],\n    duplicateIEEvent: false,\n    data() {\n        return {\n            uploadedFileCount: 0,\n            files: [],\n            messages: [],\n            focused: false,\n            progress: null,\n            uploadedFiles: []\n        };\n    },\n    methods: {\n        upload() {\n            if (this.hasFiles) this.uploader();\n        },\n        onBasicUploaderClick(event) {\n            if (event.button === 0 && !this.hasFiles) this.$refs.fileInput.click();\n        },\n        onFileSelect(event) {\n            if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {\n                this.duplicateIEEvent = false;\n\n                return;\n            }\n\n            this.messages = [];\n            this.files = this.files || [];\n            let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n\n            for (let file of files) {\n                if (!this.isFileSelected(file)) {\n                    if (this.validate(file)) {\n                        if (this.isImage(file)) {\n                            file.objectURL = window.URL.createObjectURL(file);\n                        }\n\n                        this.files.push(file);\n                    }\n                }\n            }\n\n            this.$emit('select', { originalEvent: event, files: this.files });\n\n            if (this.fileLimit) {\n                this.checkFileLimit();\n            }\n\n            if (this.auto && this.hasFiles && !this.isFileLimitExceeded()) {\n                this.uploader();\n            }\n\n            if (event.type !== 'drop' && this.isIE11()) {\n                this.clearIEInput();\n            } else {\n                this.clearInputElement();\n            }\n        },\n        choose() {\n            this.$refs.fileInput.click();\n        },\n        uploader() {\n            if (this.customUpload) {\n                if (this.fileLimit) {\n                    this.uploadedFileCount += this.files.length;\n                }\n\n                this.$emit('uploader', { files: this.files });\n                this.clear();\n            } else {\n                let xhr = new XMLHttpRequest();\n                let formData = new FormData();\n\n                this.$emit('before-upload', {\n                    xhr: xhr,\n                    formData: formData\n                });\n\n                for (let file of this.files) {\n                    formData.append(this.name, file, file.name);\n                }\n\n                xhr.upload.addEventListener('progress', (event) => {\n                    if (event.lengthComputable) {\n                        this.progress = Math.round((event.loaded * 100) / event.total);\n                    }\n\n                    this.$emit('progress', {\n                        originalEvent: event,\n                        progress: this.progress\n                    });\n                });\n\n                xhr.onreadystatechange = () => {\n                    if (xhr.readyState === 4) {\n                        this.progress = 0;\n\n                        if (xhr.status >= 200 && xhr.status < 300) {\n                            if (this.fileLimit) {\n                                this.uploadedFileCount += this.files.length;\n                            }\n\n                            this.$emit('upload', {\n                                xhr: xhr,\n                                files: this.files\n                            });\n                        } else {\n                            this.$emit('error', {\n                                xhr: xhr,\n                                files: this.files\n                            });\n                        }\n\n                        this.uploadedFiles.push(...this.files);\n                        this.clear();\n                    }\n                };\n\n                xhr.open('POST', this.url, true);\n\n                this.$emit('before-send', {\n                    xhr: xhr,\n                    formData: formData\n                });\n\n                xhr.withCredentials = this.withCredentials;\n\n                xhr.send(formData);\n            }\n        },\n        clear() {\n            this.files = [];\n            this.messages = null;\n            this.$emit('clear');\n\n            if (this.isAdvanced) {\n                this.clearInputElement();\n            }\n        },\n        onFocus() {\n            this.focused = true;\n        },\n        onBlur() {\n            this.focused = false;\n        },\n        isFileSelected(file) {\n            if (this.files && this.files.length) {\n                for (let sFile of this.files) {\n                    if (sFile.name + sFile.type + sFile.size === file.name + file.type + file.size) return true;\n                }\n            }\n\n            return false;\n        },\n        isIE11() {\n            return !!window['MSInputMethodContext'] && !!document['documentMode'];\n        },\n        validate(file) {\n            if (this.accept && !this.isFileTypeValid(file)) {\n                this.messages.push(this.invalidFileTypeMessage.replace('{0}', file.name).replace('{1}', this.accept));\n\n                return false;\n            }\n\n            if (this.maxFileSize && file.size > this.maxFileSize) {\n                this.messages.push(this.invalidFileSizeMessage.replace('{0}', file.name).replace('{1}', this.formatSize(this.maxFileSize)));\n\n                return false;\n            }\n\n            return true;\n        },\n        isFileTypeValid(file) {\n            let acceptableTypes = this.accept.split(',').map((type) => type.trim());\n\n            for (let type of acceptableTypes) {\n                let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type) : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();\n\n                if (acceptable) {\n                    return true;\n                }\n            }\n\n            return false;\n        },\n        getTypeClass(fileType) {\n            return fileType.substring(0, fileType.indexOf('/'));\n        },\n        isWildcard(fileType) {\n            return fileType.indexOf('*') !== -1;\n        },\n        getFileExtension(file) {\n            return '.' + file.name.split('.').pop();\n        },\n        isImage(file) {\n            return /^image\\//.test(file.type);\n        },\n        onDragEnter(event) {\n            if (!this.disabled) {\n                event.stopPropagation();\n                event.preventDefault();\n            }\n        },\n        onDragOver(event) {\n            if (!this.disabled) {\n                !this.isUnstyled && addClass(this.$refs.content, 'p-fileupload-highlight');\n                this.$refs.content.setAttribute('data-p-highlight', true);\n                event.stopPropagation();\n                event.preventDefault();\n            }\n        },\n        onDragLeave() {\n            if (!this.disabled) {\n                !this.isUnstyled && removeClass(this.$refs.content, 'p-fileupload-highlight');\n                this.$refs.content.setAttribute('data-p-highlight', false);\n            }\n        },\n        onDrop(event) {\n            if (!this.disabled) {\n                !this.isUnstyled && removeClass(this.$refs.content, 'p-fileupload-highlight');\n                this.$refs.content.setAttribute('data-p-highlight', false);\n                event.stopPropagation();\n                event.preventDefault();\n\n                const files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n                const allowDrop = this.multiple || (files && files.length === 1);\n\n                if (allowDrop) {\n                    this.onFileSelect(event);\n                }\n            }\n        },\n        remove(index) {\n            this.clearInputElement();\n            let removedFile = this.files.splice(index, 1)[0];\n\n            this.files = [...this.files];\n            this.$emit('remove', {\n                file: removedFile,\n                files: this.files\n            });\n        },\n        removeUploadedFile(index) {\n            let removedFile = this.uploadedFiles.splice(index, 1)[0];\n\n            this.uploadedFiles = [...this.uploadedFiles];\n            this.$emit('remove-uploaded-file', {\n                file: removedFile,\n                files: this.uploadedFiles\n            });\n        },\n        clearInputElement() {\n            this.$refs.fileInput.value = '';\n        },\n        clearIEInput() {\n            if (this.$refs.fileInput) {\n                this.duplicateIEEvent = true; //IE11 fix to prevent onFileChange trigger again\n                this.$refs.fileInput.value = '';\n            }\n        },\n        formatSize(bytes) {\n            const k = 1024;\n            const dm = 3;\n            const sizes = this.$primevue.config.locale?.fileSizeTypes || ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n            if (bytes === 0) {\n                return `0 ${sizes[0]}`;\n            }\n\n            const i = Math.floor(Math.log(bytes) / Math.log(k));\n            const formattedSize = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n\n            return `${formattedSize} ${sizes[i]}`;\n        },\n        isFileLimitExceeded() {\n            if (this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount && this.focused) {\n                this.focused = false;\n            }\n\n            return this.fileLimit && this.fileLimit < this.files.length + this.uploadedFileCount;\n        },\n        checkFileLimit() {\n            if (this.isFileLimitExceeded()) {\n                this.messages.push(this.invalidFileLimitMessage.replace('{0}', this.fileLimit.toString()));\n            }\n        },\n        onMessageClose() {\n            this.messages = null;\n        }\n    },\n    computed: {\n        isAdvanced() {\n            return this.mode === 'advanced';\n        },\n        isBasic() {\n            return this.mode === 'basic';\n        },\n        chooseButtonClass() {\n            return [this.cx('pcChooseButton'), this.class];\n        },\n        basicFileChosenLabel() {\n            if (this.auto) return this.chooseButtonLabel;\n            else if (this.hasFiles) {\n                if (this.files && this.files.length === 1) return this.files[0].name;\n\n                return this.$primevue.config.locale?.fileChosenMessage?.replace('{0}', this.files.length);\n            }\n\n            return this.$primevue.config.locale?.noFileChosenMessage || '';\n        },\n        hasFiles() {\n            return this.files && this.files.length > 0;\n        },\n        hasUploadedFiles() {\n            return this.uploadedFiles && this.uploadedFiles.length > 0;\n        },\n        chooseDisabled() {\n            return this.disabled || (this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount);\n        },\n        uploadDisabled() {\n            return this.disabled || !this.hasFiles || (this.fileLimit && this.fileLimit < this.files.length);\n        },\n        cancelDisabled() {\n            return this.disabled || !this.hasFiles;\n        },\n        chooseButtonLabel() {\n            return this.chooseLabel || this.$primevue.config.locale.choose;\n        },\n        uploadButtonLabel() {\n            return this.uploadLabel || this.$primevue.config.locale.upload;\n        },\n        cancelButtonLabel() {\n            return this.cancelLabel || this.$primevue.config.locale.cancel;\n        },\n        completedLabel() {\n            return this.$primevue.config.locale.completed;\n        },\n        pendingLabel() {\n            return this.$primevue.config.locale.pending;\n        }\n    },\n    components: {\n        Button,\n        ProgressBar,\n        Message,\n        FileContent,\n        PlusIcon,\n        UploadIcon,\n        TimesIcon\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n"],"names":["name","BaseComponent","props","type","String","url","mode","multiple","Boolean","accept","disabled","auto","maxFileSize","Number","invalidFileSizeMessage","invalidFileTypeMessage","fileLimit","invalidFileLimitMessage","withCredentials","previewWidth","chooseLabel","uploadLabel","cancelLabel","customUpload","showUploadButton","showCancelButton","chooseIcon","undefined","uploadIcon","cancelIcon","style","chooseButtonProps","uploadButtonProps","Object","default","severity","cancelButtonProps","FileUploadStyle","provide","$pcFileUpload","$parentInstance","hostName","emits","files","Array","badgeSeverity","badgeValue","templates","methods","formatSize","bytes","_this$$primevue$confi","k","dm","sizes","$primevue","config","locale","fileSizeTypes","concat","i","Math","floor","log","formattedSize","parseFloat","pow","toFixed","components","Button","Badge","TimesIcon","_openBlock","_createElementBlock","_Fragment","_renderList","$props","file","index","_mergeProps","key","size","_ctx","cx","ptm","_createElementVNode","role","alt","src","objectURL","width","_hoisted_1","_toDisplayString","$options","_createVNode","_component_Badge","value","unstyled","pt","_component_Button","onClick","$event","$emit","text","rounded","icon","_withCtx","iconProps","fileremoveicon","_createBlock","_resolveDynamicComponent","_normalizeClass","_component_TimesIcon","BaseFileUpload","inheritAttrs","duplicateIEEvent","data","uploadedFileCount","messages","focused","progress","uploadedFiles","upload","hasFiles","uploader","onBasicUploaderClick","event","button","$refs","fileInput","click","onFileSelect","isIE11","dataTransfer","target","_iterator","_createForOfIteratorHelper","_step","s","n","done","isFileSelected","validate","isImage","window","URL","createObjectURL","push","err","e","f","originalEvent","checkFileLimit","isFileLimitExceeded","clearIEInput","clearInputElement","choose","_this","length","clear","xhr","XMLHttpRequest","formData","FormData","_iterator2","_step2","append","addEventListener","lengthComputable","round","loaded","total","onreadystatechange","readyState","_this$uploadedFiles","status","apply","_toConsumableArray","open","send","isAdvanced","onFocus","onBlur","_iterator3","_step3","sFile","document","isFileTypeValid","replace","acceptableTypes","split","map","trim","_iterator4","_step4","acceptable","isWildcard","getTypeClass","getFileExtension","toLowerCase","fileType","substring","indexOf","pop","test","onDragEnter","stopPropagation","preventDefault","onDragOver","isUnstyled","addClass","content","setAttribute","onDragLeave","removeClass","onDrop","allowDrop","remove","removedFile","splice","removeUploadedFile","toString","onMessageClose","computed","isBasic","chooseButtonClass","basicFileChosenLabel","_this$$primevue$confi3","chooseButtonLabel","_this$$primevue$confi2","fileChosenMessage","noFileChosenMessage","hasUploadedFiles","chooseDisabled","uploadDisabled","cancelDisabled","uploadButtonLabel","cancelButtonLabel","cancel","completedLabel","completed","pendingLabel","pending","ProgressBar","Message","FileContent","PlusIcon","UploadIcon","directives","ripple","Ripple","ptmi","ref","onChange","arguments","_renderSlot","$slots","$data","chooseCallback","uploadCallback","clearCallback","label","onKeydown","onDragenter","onDragover","onDragleave","removeUploadedFileCallback","removeFileCallback","_component_ProgressBar","showValue","msg","_component_Message","onClose","_component_FileContent","onRemove","empty","onMouseup","_hoisted_2","_hoisted_3"],"mappings":"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"}