1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var vue = require('vue');
- require('../../../hooks/index.js');
- require('../../../tokens/index.js');
- var error = require('../../../utils/error.js');
- var uploadDragger = require('./upload-dragger.js');
- var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
- var upload = require('../../../tokens/upload.js');
- var index = require('../../../hooks/use-namespace/index.js');
- var index$1 = require('../../../hooks/use-common-props/index.js');
- const _hoisted_1 = ["onDrop", "onDragover"];
- const COMPONENT_NAME = "ElUploadDrag";
- const __default__ = vue.defineComponent({
- name: COMPONENT_NAME
- });
- const _sfc_main = /* @__PURE__ */ vue.defineComponent({
- ...__default__,
- props: uploadDragger.uploadDraggerProps,
- emits: uploadDragger.uploadDraggerEmits,
- setup(__props, { emit }) {
- const uploaderContext = vue.inject(upload.uploadContextKey);
- if (!uploaderContext) {
- error.throwError(COMPONENT_NAME, "usage: <el-upload><el-upload-dragger /></el-upload>");
- }
- const ns = index.useNamespace("upload");
- const dragover = vue.ref(false);
- const disabled = index$1.useDisabled();
- const onDrop = (e) => {
- if (disabled.value)
- return;
- dragover.value = false;
- const files = Array.from(e.dataTransfer.files);
- const accept = uploaderContext.accept.value;
- if (!accept) {
- emit("file", files);
- return;
- }
- const filesFiltered = files.filter((file) => {
- const { type, name } = file;
- const extension = name.includes(".") ? `.${name.split(".").pop()}` : "";
- const baseType = type.replace(/\/.*$/, "");
- return accept.split(",").map((type2) => type2.trim()).filter((type2) => type2).some((acceptedType) => {
- if (acceptedType.startsWith(".")) {
- return extension === acceptedType;
- }
- if (/\/\*$/.test(acceptedType)) {
- return baseType === acceptedType.replace(/\/\*$/, "");
- }
- if (/^[^/]+\/[^/]+$/.test(acceptedType)) {
- return type === acceptedType;
- }
- return false;
- });
- });
- emit("file", filesFiltered);
- };
- const onDragover = () => {
- if (!disabled.value)
- dragover.value = true;
- };
- return (_ctx, _cache) => {
- return vue.openBlock(), vue.createElementBlock("div", {
- class: vue.normalizeClass([vue.unref(ns).b("dragger"), vue.unref(ns).is("dragover", dragover.value)]),
- onDrop: vue.withModifiers(onDrop, ["prevent"]),
- onDragover: vue.withModifiers(onDragover, ["prevent"]),
- onDragleave: _cache[0] || (_cache[0] = vue.withModifiers(($event) => dragover.value = false, ["prevent"]))
- }, [
- vue.renderSlot(_ctx.$slots, "default")
- ], 42, _hoisted_1);
- };
- }
- });
- var UploadDragger = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-dragger.vue"]]);
- exports["default"] = UploadDragger;
- //# sourceMappingURL=upload-dragger2.js.map
|