{"version":3,"file":"upload-dragger.vue2.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":["type"],"mappings":";;;;AAgBA,gBAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,cAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,QAAU,EAAA;AAAA,MACR,IAAM,EAAA,OAAA;AAAA,MACN,OAAS,EAAA,KAAA;AAAA,KACX;AAAA,GACF;AAAA,EACA,KAAA,EAAO,CAAC,MAAM,CAAA;AAAA,EACd,KAAM,CAAA,KAAA,EAAO,EAAE,IAAA,EAAQ,EAAA;AACrB,IAAA,MAAM,QAAW,GAAA,MAAA,CAAO,UAAY,EAAA,EAAc,CAAA,CAAA;AAClD,IAAM,MAAA,EAAA,GAAK,aAAa,QAAQ,CAAA,CAAA;AAChC,IAAM,MAAA,QAAA,GAAW,IAAI,KAAK,CAAA,CAAA;AAE1B,IAAA,SAAS,OAAO,CAAc,EAAA;AAC5B,MAAI,IAAA,KAAA,CAAM,YAAY,CAAC,QAAA;AAAU,QAAA,OAAA;AACjC,MAAA,MAAM,SAAS,QAAS,CAAA,MAAA,CAAA;AACxB,MAAA,QAAA,CAAS,KAAQ,GAAA,KAAA,CAAA;AACjB,MAAA,IAAI,CAAC,MAAQ,EAAA;AACX,QAAK,IAAA,CAAA,MAAA,EAAQ,CAAE,CAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AACjC,QAAA,OAAA;AAAA,OACF;AACA,MAAA,IAAA;AAAA,QACE,MAAA;AAAA,QACA,KAAA,CAAM,KAAK,CAAE,CAAA,YAAA,CAAa,KAAK,CAAE,CAAA,MAAA,CAAO,CAAC,IAAS,KAAA;AAChD,UAAM,MAAA,EAAE,IAAM,EAAA,IAAA,EAAS,GAAA,IAAA,CAAA;AACvB,UAAA,MAAM,SACJ,GAAA,IAAA,CAAK,OAAQ,CAAA,GAAG,CAAI,GAAA,CAAA,CAAA,GAAK,CAAI,CAAA,EAAA,IAAA,CAAK,KAAM,CAAA,GAAG,CAAE,CAAA,GAAA,EAAU,CAAA,CAAA,GAAA,EAAA,CAAA;AACzD,UAAA,MAAM,QAAW,GAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,EAAS,EAAE,CAAA,CAAA;AACzC,UAAA,OAAO,OACJ,KAAM,CAAA,GAAG,EACT,GAAI,CAAA,CAACA,UAASA,KAAK,CAAA,IAAA,EAAM,CAAA,CACzB,OAAO,CAACA,KAAAA,KAASA,KAAI,CACrB,CAAA,IAAA,CAAK,CAAC,YAAiB,KAAA;AACtB,YAAI,IAAA,YAAA,CAAa,UAAW,CAAA,GAAG,CAAG,EAAA;AAChC,cAAA,OAAO,SAAc,KAAA,YAAA,CAAA;AAAA,aACvB;AACA,YAAI,IAAA,OAAA,CAAQ,IAAK,CAAA,YAAY,CAAG,EAAA;AAC9B,cAAA,OAAO,QAAa,KAAA,YAAA,CAAa,OAAQ,CAAA,OAAA,EAAS,EAAE,CAAA,CAAA;AAAA,aACtD;AACA,YAAI,IAAA,gBAAA,CAAiB,IAAK,CAAA,YAAY,CAAG,EAAA;AACvC,cAAA,OAAO,IAAS,KAAA,YAAA,CAAA;AAAA,aAClB;AACA,YAAO,OAAA,KAAA,CAAA;AAAA,WACR,CAAA,CAAA;AAAA,SACJ,CAAA;AAAA,OACH,CAAA;AAAA,KACF;AAEA,IAAA,SAAS,UAAa,GAAA;AACpB,MAAA,IAAI,CAAC,KAAM,CAAA,QAAA;AAAU,QAAA,QAAA,CAAS,KAAQ,GAAA,IAAA,CAAA;AAAA,KACxC;AAEA,IAAO,OAAA;AAAA,MACL,EAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}