{"version":3,"sources":["jsdelivr-header.js","/npm/artree-react-csv-creator@1.1.0/lib/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,SAAS,gBAAiB,GAAM,OAAQ,GAAqB,iBAAP,GAAoB,YAAa,EAAM,EAAY,QAAI,CAAI,CAEjH,IAAI,UAAY,gBAAgB,QAAQ,eACpC,MAAQ,gBAAgB,QAAQ,UAEpC,MAAM,WAAa,IACjB,MAAM,SACJ,EAAQ,SACR,EAAQ,QACR,EAAO,SACP,EAAQ,SACR,EAAQ,KACR,EAAI,KACJ,GACE,EACE,EAAU,GAAY,MAAM,cAChC,IACA,KACA,GAkFF,OAAO,MAAM,cACX,MACA,CAAE,QAAS,EAAW,KANxB,YArEA,SAAqB,EAAS,GAC5B,MAAM,EAAa,UAAU,GACvB,EAAoB,IAAe,IAAI,MAAO,cAC9C,EAAO,SAAS,cAAc,KAEpC,EAAK,aAAa,OAAQ,GAC1B,EAAK,aAAa,WAAY,GAAG,SAEjC,SAAS,KAAK,YAAY,GAE1B,EAAK,OACP,CA2DE,CAnDF,SAAoB,EAAY,GAC9B,IAAI,EAAU,+BACV,EAAe,GACnB,MAAM,EAAU,GAwChB,OArCA,EAAW,SAAQ,IACjB,EAAQ,KAAK,EAAO,GAAG,IAIzB,EAAQ,SAAQ,IACD,OAAO,KAAK,GAEpB,SAAQ,KACmB,IAA1B,EAAQ,QAAQ,IAClB,EAAQ,KAAK,EACf,GACA,IAIA,EAAW,OAAS,GACtB,EAAa,KAAK,EAAW,QAAO,CAAC,EAAQ,KAC3C,EAAO,KAAK,EAAO,SAAW,EAAO,IAAM,KAEpC,IACN,KAIL,EAAe,EAAa,OAAO,EAAQ,KAAI,GACtC,EAAQ,KAAI,GACV,IAAI,EAAI,OAAW,QAI9B,EAAa,SAAQ,CAAC,EAAW,KAC/B,MAAM,EAAa,EAAU,KAAK,KAElC,GAAW,EAAQ,EAAQ,OAAS,GAAG,MAAiB,CAAU,IAG7D,CACT,CAOc,CAAW,EAAW,GAAK,EAAS,GAAO,EACzD,GAKE,EACD,EAGH,WAAW,UAAY,CACrB,SAAU,UAAU,OACpB,SAAU,UAAU,KACpB,QAAS,UAAU,QAAQ,UAAU,QACrC,SAAU,UAAU,OACpB,SAAU,UAAU,KACpB,KAAM,UAAU,QAAQ,UAAU,QAAQ,WAC1C,KAAM,UAAU,QAGlB,WAAW,aAAe,CACxB,QAAS,GACT,KAAM,gBAGR,OAAO,QAAU","file":"/npm/artree-react-csv-creator@1.1.0/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/artree-react-csv-creator@1.1.0/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar PropTypes = _interopDefault(require('prop-types'));\nvar React = _interopDefault(require('react'));\n\nconst CsvCreator = props => {\n  const {\n    children,\n    disabled,\n    headers,\n    filename,\n    noHeader,\n    rows,\n    text\n  } = props;\n  const display = children || React.createElement(\n    'p',\n    null,\n    text\n  );\n\n  /**\n   * Download the csv\n   * @param {String} csvData the document's data\n   * @param {String} csvFileName the document's file name\n   * @return {Void} Returns nothing\n   */\n  function downloadCsv(csvData, csvFileName) {\n    const encodedUri = encodeURI(csvData);\n    const formattedFileName = csvFileName || new Date().toISOString();\n    const link = document.createElement('a');\n\n    link.setAttribute('href', encodedUri);\n    link.setAttribute('download', `${formattedFileName}.csv`);\n\n    document.body.appendChild(link);\n\n    link.click();\n  }\n\n  /**\n   * Format the data for the csv\n   * @param {[Object]} csvHeaders the document's headers\n   * @param {[Object]} csvRows the document's rows\n   * @return {String} Returns the csv data correctly formatted\n   */\n  function formatData(csvHeaders, csvRows) {\n    let csvData = 'data:text/csv;charset=utf-8,';\n    let csvDataArray = [];\n    const keyList = [];\n\n    // Insert the header ids into the key list\n    csvHeaders.forEach(header => {\n      keyList.push(header.id);\n    });\n\n    // Insert the row keys into the key list\n    csvRows.forEach(row => {\n      const keys = Object.keys(row);\n\n      keys.forEach(key => {\n        if (keyList.indexOf(key) === -1) {\n          keyList.push(key);\n        }\n      });\n    });\n\n    // Insert header ids into the csv\n    if (csvHeaders.length > 0) {\n      csvDataArray.push(csvHeaders.reduce((result, header) => {\n        result.push(header.display || header.id || ' ');\n\n        return result;\n      }, []));\n    }\n\n    // Insert row data into the csv\n    csvDataArray = csvDataArray.concat(csvRows.map(row => {\n      return keyList.map(key => {\n        return `\"${row[key]}\"` || '';\n      });\n    }));\n\n    csvDataArray.forEach((infoArray, index) => {\n      const dataString = infoArray.join(',');\n\n      csvData += index < csvRows.length ? `${dataString}\\n` : dataString;\n    });\n\n    return csvData;\n  }\n\n  /**\n   * Handles the click\n   * @return {Void} Returns nothing\n   */\n  function handleClick() {\n    downloadCsv(formatData(noHeader ? [] : headers, rows), filename);\n  }\n\n  return React.createElement(\n    'div',\n    { onClick: disabled ? null : handleClick },\n    display\n  );\n};\n\nCsvCreator.propTypes = {\n  children: PropTypes.object,\n  disabled: PropTypes.bool,\n  headers: PropTypes.arrayOf(PropTypes.object),\n  filename: PropTypes.string,\n  noHeader: PropTypes.bool,\n  rows: PropTypes.arrayOf(PropTypes.object).isRequired,\n  text: PropTypes.string\n};\n\nCsvCreator.defaultProps = {\n  headers: [],\n  text: 'Download CSV'\n};\n\nmodule.exports = CsvCreator;\n"]}