react-async-csv-downloader
Version:
A small hook to enable asynchronous downloading of csv files
2 lines (1 loc) • 905 B
JavaScript
(function(t,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],e):(t=typeof globalThis<"u"?globalThis:t||self,e(t["react-csv-download"]={},t.React))})(this,function(t,e){"use strict";const r=({asyncResolver:l,onStart:c,onSuccess:d,onError:s})=>{const u=e.useRef(null),a=e.useCallback((i,o)=>{const n=document.createElement("a");document.body.appendChild(n),n.setAttribute("style","display: none"),n.href=URL.createObjectURL(new Blob([i.file],{type:i.type})),n.download=o,n.click(),URL.revokeObjectURL(n.href),n.remove()},[]),f=e.useCallback(async i=>{if(c?.(),l){i.preventDefault();try{const o=await l();d?.(),a(o,u.current?.download)}catch(o){s?.(o)}}},[l,a,s,c,d]);return{getProps:e.useCallback(()=>({linkRef:u,onClick:f}),[f])}};t.useDownloadLink=r,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});