{"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=d76a980e&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('pcMessage')\">{{ msg }}</Message>\n        <Button\n            :label=\"chooseButtonLabel\"\n            :class=\"chooseButtonClass\"\n            :style=\"style\"\n            :disabled=\"disabled\"\n            :unstyled=\"unstyled\"\n            @mouseup=\"onBasicUploaderClick\"\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        <slot v-if=\"!auto\" name=\"filelabel\" :class=\"cx('filelabel')\">\n            <span :class=\"cx('filelabel')\" :files=\"files\">\n                {{ basicFileChosenLabel }}\n            </span>\n        </slot>\n        <input 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.$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            if (this.isBasic && this.hasFiles) {\n                this.files = [];\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('pcMessage')\">{{ msg }}</Message>\n        <Button\n            :label=\"chooseButtonLabel\"\n            :class=\"chooseButtonClass\"\n            :style=\"style\"\n            :disabled=\"disabled\"\n            :unstyled=\"unstyled\"\n            @mouseup=\"onBasicUploaderClick\"\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        <slot v-if=\"!auto\" name=\"filelabel\" :class=\"cx('filelabel')\">\n            <span :class=\"cx('filelabel')\" :files=\"files\">\n                {{ basicFileChosenLabel }}\n            </span>\n        </slot>\n        <input 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.$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            if (this.isBasic && this.hasFiles) {\n                this.files = [];\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","isBasic","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","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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"}