vue3-file-selector
Version:
A Vue 3 headless file selector component
2 lines • 4.78 kB
JavaScript
(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("vue")):"function"===typeof define&&define.amd?define([],t):"object"===typeof exports?exports["vue3-file-selector"]=t(require("vue")):e["vue3-file-selector"]=t(e["Vue"])})("undefined"!==typeof self?self:this,(function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s="fae3")}({8875:function(e,t,r){var n,o,u;(function(r,c){o=[],n=c,u="function"===typeof n?n.apply(t,o):n,void 0===u||(e.exports=u)})("undefined"!==typeof self&&self,(function(){function e(){var t=Object.getOwnPropertyDescriptor(document,"currentScript");if(!t&&"currentScript"in document&&document.currentScript)return document.currentScript;if(t&&t.get!==e&&document.currentScript)return document.currentScript;try{throw new Error}catch(s){var r,n,o,u=/.*at [^(]*\((.*):(.+):(.+)\)$/gi,c=/@([^@]*):(\d+):(\d+)\s*$/gi,l=u.exec(s.stack)||c.exec(s.stack),i=l&&l[1]||!1,a=l&&l[2]||!1,d=document.location.href.replace(document.location.hash,""),p=document.getElementsByTagName("script");i===d&&(r=document.documentElement.outerHTML,n=new RegExp("(?:[^\\n]+?\\n){0,"+(a-2)+"}[^<]*<script>([\\d\\D]*?)<\\/script>[\\d\\D]*","i"),o=r.replace(n,"$1").trim());for(var f=0;f<p.length;f++){if("interactive"===p[f].readyState)return p[f];if(p[f].src===i)return p[f];if(i===d&&p[f].innerHTML&&p[f].innerHTML.trim()===o)return p[f]}return null}}return e}))},"8bbf":function(t,r){t.exports=e},fae3:function(e,t,r){"use strict";if(r.r(t),r.d(t,"FileSelector",(function(){return a})),r.d(t,"Dropzone",(function(){return f})),r.d(t,"DialogButton",(function(){return m})),"undefined"!==typeof window){var n=window.document.currentScript,o=r("8875");n=o(),"currentScript"in document||Object.defineProperty(document,"currentScript",{get:o});var u=n&&n.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);u&&(r.p=u[1])}var c=r("8bbf");function l(e,t,r,n,o,u){return Object(c["openBlock"])(),Object(c["createBlock"])(c["Fragment"],null,[Object(c["createVNode"])("input",{style:{display:"none"},type:"file",ref:"inputRef",multiple:r.allowMultiple,accept:r.accept,onChange:t[1]||(t[1]=(...e)=>n.updateFiles&&n.updateFiles(...e))},null,40,["multiple","accept"]),Object(c["renderSlot"])(e.$slots,"default",{openDialog:n.openDialog})],64)}var i={emits:["update:modelValue"],props:{modelValue:{type:Array,required:!0},allowMultiple:{type:Boolean,default:!0},accept:{type:Array,default:void 0}},setup(e,{emit:t}){const r=Object(c["ref"])(null),n=()=>{r.value.click()};Object(c["provide"])("openDialog",n),Object(c["provide"])("addFiles",r=>{t("update:modelValue",[...e.modelValue,...r])});const o=()=>{t("update:modelValue",[...e.modelValue,...r.value.files])};return{inputRef:r,openDialog:n,updateFiles:o}}};i.render=l;var a=i;function d(e,t,r,n,o,u){return Object(c["openBlock"])(),Object(c["createBlock"])("div",{onDragover:t[1]||(t[1]=(...e)=>n.handleDragover&&n.handleDragover(...e)),onDrop:t[2]||(t[2]=Object(c["withModifiers"])((...e)=>n.handleDrop&&n.handleDrop(...e),["stop","prevent"])),onDragleave:t[3]||(t[3]=(...e)=>n.handleDragLeave&&n.handleDragLeave(...e))},[Object(c["renderSlot"])(e.$slots,"default",{hovered:n.hovered})],32)}var p={setup(){const e=Object(c["ref"])(!1),t=Object(c["inject"])("addFiles"),r=r=>{e.value=!1;const n=Array.from(r.dataTransfer.items).map(e=>"file"!==e.kind?null:e.getAsFile()).filter(Boolean);t(n)},n=t=>{t.preventDefault(),e.value=!0},o=()=>{e.value=!1};return{hovered:e,handleDragover:n,handleDragLeave:o,handleDrop:r}}};p.render=d;var f=p;function s(e,t,r,n,o,u){return Object(c["openBlock"])(),Object(c["createBlock"])("button",Object(c["mergeProps"])(e.$attrs,{onClick:t[1]||(t[1]=(...e)=>n.openDialog&&n.openDialog(...e))}),[Object(c["renderSlot"])(e.$slots,"default")],16)}var v={setup(){const e=Object(c["inject"])("openDialog");return{openDialog:e}}};v.render=s;var m=v}})}));
//# sourceMappingURL=vue3-file-selector.umd.min.js.map