{"version":3,"file":"upload-dragger.vue.mjs","sources":["../../../../../packages/components/upload/src/upload-dragger.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"[ns.b('dragger'), ns.is('dragover', dragover)]\"\n    @drop.prevent=\"onDrop\"\n    @dragover.prevent=\"onDragover\"\n    @dragleave.prevent=\"dragover = false\"\n  >\n    <slot></slot>\n  </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, ref, inject } from 'vue'\nimport { useNamespace } from '@element-ultra/hooks'\n\nimport type { ElUpload } from './upload.type'\n\nexport default defineComponent({\n  name: 'ElUploadDrag',\n  props: {\n    disabled: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  emits: ['file'],\n  setup(props, { emit }) {\n    const uploader = inject('uploader', {} as ElUpload)\n    const ns = useNamespace('upload')\n    const dragover = ref(false)\n\n    function onDrop(e: DragEvent) {\n      if (props.disabled || !uploader) return\n      const accept = uploader.accept\n      dragover.value = false\n      if (!accept) {\n        emit('file', e.dataTransfer.files)\n        return\n      }\n      emit(\n        'file',\n        Array.from(e.dataTransfer.files).filter((file) => {\n          const { type, name } = file\n          const extension =\n            name.indexOf('.') > -1 ? `.${name.split('.').pop()}` : ''\n          const baseType = type.replace(/\\/.*$/, '')\n          return accept\n            .split(',')\n            .map((type) => type.trim())\n            .filter((type) => type)\n            .some((acceptedType) => {\n              if (acceptedType.startsWith('.')) {\n                return extension === acceptedType\n              }\n              if (/\\/\\*$/.test(acceptedType)) {\n                return baseType === acceptedType.replace(/\\/\\*$/, '')\n              }\n              if (/^[^/]+\\/[^/]+$/.test(acceptedType)) {\n                return type === acceptedType\n              }\n              return false\n            })\n        })\n      )\n    }\n\n    function onDragover() {\n      if (!props.disabled) dragover.value = true\n    }\n\n    return {\n      ns,\n      dragover,\n      onDrop,\n      onDragover,\n    }\n  },\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_withModifiers"],"mappings":";;;;SAEU,YAAK,IAAA,EAAA,MAAA,EAAA,MAAE,EAAA,MAAA,EAAa,OAAG,QAAE,EAAA;AAC1B,EAAA,OAAAA,WAAA,EAAAC,kBAAA;AAAA,IAAA,KAAA;AAAA,IAAA;AAAA,MACJ,sBAAQ,CAAU,IAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,EAAA,IAAA,CAAA,GAAA,EAAA,CAAA,UAAA,EAAA,IAAA,CAAA,QAAA,CAAA,CAAA,CAAA;AAAA,MAClB,QAAA,MAAS,CAAA,kDAAU,CAAA,MAAA,IAAQ,KAAA,MAAA,CAAA,GAAA,IAAA,CAAA,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA;AAAA,MAAA,YAAA,MAAA,CAAA,CAAA,MAAA,MAAA,CAAA,CAAA,IAAAC,aAAA,CAAA,CAAA,GAAA,SAAA,IAAA,CAAA,UAAA,IAAA,KAAA,UAAA,CAAA,GAAA,IAAA,CAAA,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA;AAAA,MAE5B,WAAa,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,OAAA,CAAA,CAAA,GAAAA,aAAA,CAAA,CAAA,WAAA,IAAA,CAAA,QAAA,GAAA,KAAA,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA;;;;;;;;;;;"}