v-download
Version:
Vue.js directive to download (and optionally transform) data
1 lines • 5.28 kB
JavaScript
!function(e,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var t=n();for(var o in t)("object"==typeof exports?exports:e)[o]=t[o]}}(window,function(){return function(e){var n={};function t(o){if(n[o])return n[o].exports;var a=n[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,t),a.l=!0,a.exports}return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:o})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(t.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var a in e)t.d(o,a,function(n){return e[n]}.bind(null,a));return o},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=1)}([function(e,n,t){var o,a,r;a=[],void 0===(r="function"==typeof(o=function(){return function e(n,t,o){var a,r,d=window,i="application/octet-stream",l=o||i,u=n,c=!t&&!o&&u,f=document.createElement("a"),s=function(e){return String(e)},p=d.Blob||d.MozBlob||d.WebKitBlob||s,w=t||"download";if(p=p.call?p.bind(d):Blob,"true"===String(this)&&(l=(u=[u,l])[0],u=u[1]),c&&c.length<2048&&(w=c.split("/").pop().split("?")[0],f.href=c,-1!==f.href.indexOf(c))){var v=new XMLHttpRequest;return v.open("GET",c,!0),v.responseType="blob",v.onload=function(n){e(n.target.response,w,i)},setTimeout(function(){v.send()},0),v}if(/^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(u)){if(!(u.length>2096103.424&&p!==s))return navigator.msSaveBlob?navigator.msSaveBlob(g(u),w):$(u);u=g(u),l=u.type||i}else if(/([\x80-\xff])/.test(u)){for(var y=0,m=new Uint8Array(u.length),b=m.length;y<b;++y)m[y]=u.charCodeAt(y);u=new p([m],{type:l})}function g(e){for(var n=e.split(/[:;,]/),t=n[1],o="base64"==n[2]?atob:decodeURIComponent,a=o(n.pop()),r=a.length,d=0,i=new Uint8Array(r);d<r;++d)i[d]=a.charCodeAt(d);return new p([i],{type:t})}function $(e,n){if("download"in f)return f.href=e,f.setAttribute("download",w),f.className="download-js-link",f.innerHTML="downloading...",f.style.display="none",document.body.appendChild(f),setTimeout(function(){f.click(),document.body.removeChild(f),!0===n&&setTimeout(function(){d.URL.revokeObjectURL(f.href)},250)},66),!0;if(/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent))return/^data:/.test(e)&&(e="data:"+e.replace(/^data:([\w\/\-\+]+)/,i)),window.open(e)||confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")&&(location.href=e),!0;var t=document.createElement("iframe");document.body.appendChild(t),!n&&/^data:/.test(e)&&(e="data:"+e.replace(/^data:([\w\/\-\+]+)/,i)),t.src=e,setTimeout(function(){document.body.removeChild(t)},333)}if(a=u instanceof p?u:new p([u],{type:l}),navigator.msSaveBlob)return navigator.msSaveBlob(a,w);if(d.URL)$(d.URL.createObjectURL(a),!0);else{if("string"==typeof a||a.constructor===s)try{return $("data:"+l+";base64,"+d.btoa(a))}catch(e){return $("data:"+l+","+encodeURIComponent(a))}(r=new FileReader).onload=function(e){$(this.result)},r.readAsDataURL(a)}return!0}})?o.apply(n,a):o)||(e.exports=r)},function(e,n,t){"use strict";t.r(n),t.d(n,"downloadData",function(){return r});var o=t(0),a=t.n(o),r={bind:function(e,n){var t=n.value,o=n.arg;"type"===o?e.$downloadType=t:"filename"===o?e.$downloadFileName=t:(e.$downloadValue=t,e.addEventListener("click",function(){return d(e)}),e.$destroyDownload=function(){return e.removeEventListener("click",d)})},unbind:function(e){e.$destroyDownload()},componentUpdated:function(e,n){var t=n.value,o=n.arg;"type"===o?e.$downloadType=t:"filename"===o?e.$downloadFileName=t:e.$downloadValue=t}};function d(e){if(e.$downloadType)if("csv"===e.$downloadType.toLowerCase()){var n=e.$downloadFileName||"data.csv",t=i(e.$downloadValue)?e.$downloadValue:(f=e.$downloadValue,s=Object.keys(f[0]),p=s.join(",")+"\r\n",f.map(function(e){for(var n=0;n<s.length;n++){var t=e[s[n]]+"";t.match(/[,"\n]/)&&(t='"'+t.replace(/"/g,'""')+'"'),p+=t+","}p=p.slice(0,p.length-1),p+="\r\n"}),p);a()(t,n,"application/csv")}else if("tsv"===e.$downloadType.toLowerCase()){var o=e.$downloadFileName||"data.tsv",r=i(e.$downloadValue)?e.$downloadValue:function(e){var n=Object.keys(e[0]),t=n.join("\t")+"\r\n";return e.map(function(e){for(var o=0;o<n.length;o++){var a=e[n[o]]+"";t+="".concat(a,"\t")}t=t.slice(0,t.length-1),t+="\r\n"}),t}(e.$downloadValue);a()(r,o,"application/tsv")}else if("json"===e.$downloadType.toLowerCase()){var d=e.$downloadFileName||"data.json",l=i(e.$downloadValue)?e.$downloadValue:JSON.stringify(e.$downloadValue,null,2);a()(l,d,"application/json")}else{var u=e.$downloadFileName||"data";a()(e.$downloadValue,u,e.$downloadType)}else{var c=e.$downloadFileName||"data";a()(e.$downloadValue,c)}var f,s,p}function i(e){return"string"==typeof e}var l=function(e){e.directive("DownloadData",r)};n.default=l,"undefined"!=typeof window&&window.Vue&&l(window.Vue)}])});