{"version":3,"file":"upload-dragger2.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 />\n  </div>\n</template>\n<script lang=\"ts\" setup>\nimport { inject, ref } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\n\nimport { uploadContextKey } from '@element-plus/tokens'\nimport { throwError } from '@element-plus/utils/error'\nimport { uploadDraggerEmits, uploadDraggerProps } from './upload-dragger'\n\nconst COMPONENT_NAME = 'ElUploadDrag'\n\ndefineOptions({\n  name: 'ElUploadDrag',\n})\n\nconst props = defineProps(uploadDraggerProps)\nconst emit = defineEmits(uploadDraggerEmits)\n\nconst uploaderContext = inject(uploadContextKey)\nif (!uploaderContext) {\n  throwError(\n    COMPONENT_NAME,\n    'usage: <el-upload><el-upload-dragger /></el-upload>'\n  )\n}\n\nconst ns = useNamespace('upload')\nconst dragover = ref(false)\n\nconst onDrop = (e: DragEvent) => {\n  if (props.disabled) return\n  dragover.value = false\n\n  const files = Array.from(e.dataTransfer!.files)\n  const accept = uploaderContext.accept.value\n  if (!accept) {\n    emit('file', files)\n    return\n  }\n\n  const filesFiltered = files.filter((file) => {\n    const { type, name } = file\n    const extension = name.includes('.') ? `.${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  emit('file', filesFiltered)\n}\n\nconst onDragover = () => {\n  if (!props.disabled) dragover.value = true\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,IAAA,MAAA,cAAA,GAAA,cAAA,CAAA;AASA,IAAA,MAAA,kBAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;AACA,IAAA,IAAA,CAAA,eAAA,EAAA;AACA,MAAA,UAAA,CACA,cACA,EAAA,qDAAA,CAAA,CAAA;AAAA,KAAA;AAIA,IAAA,MAAA,KAAA,YAAA,CAAA,QAAA,CAAA,CAAA;AACA,IAAA,MAAA,WAAA,GAAA,CAAA,KAAA,CAAA,CAAA;AAEA,IAAA,MAAA,MAAA,GAAA,CAAA,CAAA,KAAA;AACA,MAAA,IAAA,KAAA,CAAA,QAAA;AAAA,QAAA,OAAA;AACA,MAAA,QAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAEA,MAAA,MAAA,KAAA,GAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA;AACA,MAAA,MAAA,MAAA,GAAA,gBAAA,MAAA,CAAA,KAAA,CAAA;AACA,MAAA,IAAA,CAAA,MAAA,EAAA;AACA,QAAA,IAAA,CAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AACA,QAAA,OAAA;AAAA,OAAA;AAGA,MAAA,MAAA,aAAA,GAAA,KAAA,CAAA,MAAA,CAAA,CAAA,IAAA,KAAA;AACA,QAAA,MAAA,EAAA,MAAA,IAAA,EAAA,GAAA,IAAA,CAAA;AACA,QAAA,MAAA,SAAA,GAAA,KAAA,QAAA,CAAA,GAAA,CAAA,GAAA,IAAA,IAAA,CAAA,KAAA,CAAA,KAAA,GAAA,EAAA,CAAA,CAAA,GAAA,EAAA,CAAA;AACA,QAAA,MAAA,QAAA,GAAA,IAAA,CAAA,OAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA;AACA,QAAA,OAAA,MACA,CAAA,KAAA,CAAA,GACA,CAAA,CAAA,GAAA,CAAA,CAAA,KAAA,KAAA,KAAA,CAAA,IACA,EAAA,CAAA,CAAA,MAAA,CAAA,CAAA,KAAA,KAAA,KACA,CAAA,CAAA,IAAA,CAAA,CAAA,YAAA,KAAA;AACA,UAAA,IAAA,YAAA,CAAA,WAAA,GAAA,CAAA,EAAA;AACA,YAAA,OAAA,SAAA,KAAA,YAAA,CAAA;AAAA,WAAA;AAEA,UAAA,IAAA,OAAA,CAAA,KAAA,YAAA,CAAA,EAAA;AACA,YAAA,OAAA,QAAA,KAAA,YAAA,CAAA,OAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA;AAAA,WAAA;AAEA,UAAA,IAAA,gBAAA,CAAA,KAAA,YAAA,CAAA,EAAA;AACA,YAAA,OAAA,IAAA,KAAA,YAAA,CAAA;AAAA,WAAA;AAEA,UAAA,OAAA,KAAA,CAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAIA,MAAA,IAAA,CAAA,MAAA,EAAA,aAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAGA,IAAA,MAAA,aAAA,MAAA;AACA,MAAA,IAAA,CAAA,KAAA,CAAA,QAAA;AAAA,QAAA,QAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AAAA,KAAA,CAAA;;;;;;;;;;;;;;;;"}