{"version":3,"sources":["webpack://window.csv2geojson/webpack/bootstrap","webpack://window.csv2geojson/./node_modules/d3-dsv/src/dsv.js","webpack://window.csv2geojson/./node_modules/d3-dsv/src/csv.js","webpack://window.csv2geojson/./node_modules/d3-dsv/src/tsv.js","webpack://window.csv2geojson/./node_modules/sexagesimal/index.js","webpack://window.csv2geojson/./node_modules/csv2geojson/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","objectConverter","columns","Function","map","JSON","stringify","join","dsv","delimiter","reFormat","RegExp","delimiterCode","charCodeAt","parseRows","text","f","t","eol","EOL","EOF","rows","N","length","I","token","j","slice","replace","k","a","push","formatRow","row","formatValue","test","parse","convert","customConverter","format","columnSet","create","forEach","column","inferColumns","concat","formatRows","csv_csv","csv_csvParse","csv_csvParseRows","csv_csvFormat","csv_csvFormatRows","tsv_tsv","tsv_tsvParse","tsv_tsvParseRows","tsv_tsvFormat","tsv_tsvFormatRows","x","dim","dms","coordToDMS","whole","minutes","seconds","dir","lat","lon","abs","Math","floor","fractionMinutes","search","dims","val","regex","exec","indexOf","parseFloat","raw","pair","one","trim","two","b","swapdim","formatPair","sexagesimal","latRegex","lonRegex","guessHeader","regexp","match","score","guessLatHeader","guessLonHeader","keyCount","keys","autoDelimiter","results","res","dsvFormat","count","arity","sort","isLon","isLat","csv","csvParse","tsv","tsvParse","auto","deleteColumns","csv2geojson","options","callback","latfield","lonfield","crs","features","featurecollection","type","properties","parsed","errors","undefined","lonf","latf","lonk","latk","isNaN","message","index","includeLatLon","geometry","coordinates","toLine","gj","line","reduce","aggregatedProperties","newFeature","key","toPolygon","poly"],"mappings":"+BACA,IAAAA,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,IACAG,EAAAH,EACAI,GAAA,EACAH,YAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QA2CA,OAtCAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GACAK,cAAA,EACAC,YAAA,EACAC,IAAAN,KAMAZ,EAAAmB,EAAA,SAAAjB,GACAY,OAAAC,eAAAb,EAAA,cAAiDkB,OAAA,KAIjDpB,EAAAqB,EAAA,SAAAlB,GACA,IAAAS,EAAAT,KAAAmB,WACA,WAA2B,OAAAnB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAU,EAAAC,GAAsD,OAAAV,OAAAW,UAAAC,eAAAnB,KAAAgB,EAAAC,IAGtDxB,EAAA2B,EAAA,GAIA3B,IAAA4B,EAAA,kCCnEA,SAAAC,EAAAC,GACA,WAAAC,SAAA,eAAoCD,EAAAE,IAAA,SAAArB,EAAAP,GACpC,OAAA6B,KAAAC,UAAAvB,GAAA,OAAAP,EAAA,MACG+B,KAAA,iBA0BH,IAAAC,EAAA,SAAAC,GACA,IAAAC,EAAA,IAAAC,OAAA,KAAAF,EAAA,OACAG,EAAAH,EAAAI,WAAA,GAWA,SAAAC,EAAAC,EAAAC,GACA,IAMAC,EACAC,EAPAC,KACAC,KACAC,KACAC,EAAAP,EAAAQ,OACAC,EAAA,EACA/B,EAAA,EAIA,SAAAgC,IACA,GAAAD,GAAAF,EAAA,OAAAF,EACA,GAAAF,EAAA,OAAAA,GAAA,EAAAC,EAGA,IAAAtC,EAAA6C,EAAAF,EACA,QAAAT,EAAAF,WAAAa,GAAA,CAEA,IADA,IAAAlD,EAAAkD,EACAlD,IAAA8C,GACA,QAAAP,EAAAF,WAAArC,GAAA,CACA,QAAAuC,EAAAF,WAAArC,EAAA,WACAA,EAWA,OARAgD,EAAAhD,EAAA,EAEA,MADAK,EAAAkC,EAAAF,WAAArC,EAAA,KAEA0C,GAAA,EACA,KAAAH,EAAAF,WAAArC,EAAA,MAAAgD,GACS,KAAA3C,IACTqC,GAAA,GAEAH,EAAAY,MAAAD,EAAA,EAAAlD,GAAAoD,QAAA,WAIA,KAAAJ,EAAAF,GAAA,CACA,IAAAO,EAAA,EAEA,SADAhD,EAAAkC,EAAAF,WAAAW,MACAN,GAAA,OACA,QAAArC,EAA4BqC,GAAA,EAAY,KAAAH,EAAAF,WAAAW,WAAAK,QACxC,GAAAhD,IAAA+B,EAAA,SACA,OAAAG,EAAAY,MAAAD,EAAAF,EAAAK,GAIA,OAAAd,EAAAY,MAAAD,GAGA,MAAAT,EAAAQ,OAAAL,GAAA,CAEA,IADA,IAAAU,KACAb,IAAAE,GAAAF,IAAAG,GACAU,EAAAC,KAAAd,GACAA,EAAAQ,IAEAT,GAAA,OAAAc,EAAAd,EAAAc,EAAArC,OACA4B,EAAAU,KAAAD,GAGA,OAAAT,EAgBA,SAAAW,EAAAC,GACA,OAAAA,EAAA7B,IAAA8B,GAAA3B,KAAAE,GAGA,SAAAyB,EAAAnB,GACA,aAAAA,EAAA,GACAL,EAAAyB,KAAApB,GAAA,QAAAA,EAAAa,QAAA,gBACAb,EAGA,OACAqB,MA/FA,SAAArB,EAAAC,GACA,IAAAqB,EAAAnC,EAAAmB,EAAAP,EAAAC,EAAA,SAAAkB,EAAAzD,GACA,GAAA6D,EAAA,OAAAA,EAAAJ,EAAAzD,EAAA,GACA0B,EAAA+B,EAAAI,EAAArB,EA9BA,SAAAd,EAAAc,GACA,IAAArB,EAAAM,EAAAC,GACA,gBAAA+B,EAAAzD,GACA,OAAAwC,EAAArB,EAAAsC,GAAAzD,EAAA0B,IA2BAoC,CAAAL,EAAAjB,GAAAf,EAAAgC,KAGA,OADAZ,EAAAnB,UACAmB,GA0FAP,YACAyB,OA1BA,SAAAlB,EAAAnB,GAEA,OADA,MAAAA,MA3FA,SAAAmB,GACA,IAAAmB,EAAAtD,OAAAuD,OAAA,MACAvC,KAUA,OARAmB,EAAAqB,QAAA,SAAAT,GACA,QAAAU,KAAAV,EACAU,KAAAH,GACAtC,EAAA6B,KAAAS,EAAAG,QAKAzC,EA+EA0C,CAAAvB,KACAnB,EAAAE,IAAA8B,GAAA3B,KAAAE,IAAAoC,OAAAxB,EAAAjB,IAAA,SAAA6B,GACA,OAAA/B,EAAAE,IAAA,SAAAuC,GACA,OAAAT,EAAAD,EAAAU,MACOpC,KAAAE,MACFF,KAAA,OAqBLuC,WAlBA,SAAAzB,GACA,OAAAA,EAAAjB,IAAA4B,GAAAzB,KAAA,SChHAwC,EAAAvC,EAAA,KAEAwC,EAAAD,EAAAX,MACAa,EAAAF,EAAAjC,UACAoC,EAAAH,EAAAR,OACAY,EAAAJ,EAAAD,WCLAM,EAAA5C,EAAA,MAEA6C,EAAAD,EAAAhB,MACAkB,EAAAF,EAAAtC,UACAyC,EAAAH,EAAAb,OACAiB,EAAAJ,EAAAN,8YCQA,SAAAP,EAAAkB,EAAAC,GACA,IAAAC,EAAAC,EAAAH,EAAAC,GACA,OAAAC,EAAAE,MAAA,MACAF,EAAAG,QAAAH,EAAAG,QAAA,UACAH,EAAAI,QAAAJ,EAAAI,QAAA,SAAAJ,EAAAK,IAGA,SAAAJ,EAAAH,EAAAC,GACA,IAIAM,IAHAC,KAAA,SACAC,KAAA,UACGR,IAAA,IACHD,GAAA,OACAU,EAAAC,KAAAD,IAAAV,GACAI,EAAAO,KAAAC,MAAAF,GAEAG,EAAA,IADAH,EAAAN,GAEAC,EAAAM,KAAAC,MAAAC,GAGA,OACAT,QACAC,UACAC,QALAK,KAAAC,MAAA,IAAAC,EAAAR,IAMAE,OAIA,SAAAO,EAAAd,EAAAe,EAAAjF,GAEA,GADAiF,MAAA,QACA,iBAAAf,EAAA,OAAqCgB,IAAA,KAAAC,MAAAnF,GAErC,IAAAX,GADAW,KAAA,gGACAoF,KAAAlB,GACA,OAAA7E,EACAA,EAAA,SAAA4F,EAAAI,QAAAhG,EAAA,KAAsD6F,IAAA,KAAAC,MAAAnF,IAEtDkF,MAAA7F,EAAA,GAAAiG,WAAAjG,EAAA,QACAA,EAAA,GAAAiG,WAAAjG,EAAA,WACAA,EAAA,GAAAiG,WAAAjG,EAAA,cACAA,EAAA,UAAAA,EAAA,UAAAA,EAAA,SACA8F,MAAAnF,EACAuF,IAAAlG,EAAA,GACA8E,IAAA9E,EAAA,KATkB6F,IAAA,KAAAC,MAAAnF,GAhDlBhB,EAAAD,QAMA,SAAAmF,EAAAe,GACA,OAAAD,EAAAd,EAAAe,GAAAC,KANAlG,EAAAD,QAAAyG,KA4DA,SAAAtB,EAAAe,GAEA,IAAAQ,EAAAT,EADAd,IAAAwB,OACAT,GACA,UAAAQ,EAAAP,IAAA,YACA,IAAAS,EAAAX,EAAAd,EAAAe,EAAAQ,EAAAN,OACA,UAAAQ,EAAAT,IAAA,YAEA,GAAAO,EAAAF,IAAAI,EAAAJ,MAAArB,EAAA,YACA,OAAAuB,EAAAtB,IAOA,SAAA5B,EAAAqD,EAAAzB,GACA,SAAAA,GAAA,MAAAA,EAAA,OAAA5B,EAAAqD,GACA,SAAAzB,GAAA,MAAAA,EAAA,OAAAyB,EAAArD,GARAsD,CAAAJ,EAAAP,IAAAS,EAAAT,IAAAO,EAAAtB,MAEAsB,EAAAP,IAAAS,EAAAT,MAtEAlG,EAAAD,QAAAiE,SACAhE,EAAAD,QAAA+G,WAOA,SAAA5B,GACA,OAAAlB,EAAAkB,EAAAQ,IAAA,WAAA1B,EAAAkB,EAAAS,IAAA,QAPA3F,EAAAD,QAAAsF,2CCFA,IAAApD,EAAApC,EAAA,GACAkH,EAAAlH,EAAA,GAEAmH,EAAA,kBACAC,EAAA,uBAEA,SAAAC,EAAAxD,EAAAyD,GACA,IAAA3G,EAAA4G,EAAAC,EACA,QAAA5E,KAAAiB,GACA0D,EAAA3E,EAAA2E,MAAAD,OACA3G,GAAA4G,EAAA,GAAApE,OAAAP,EAAAO,OAAAqE,KACAA,EAAAD,EAAA,GAAApE,OAAAP,EAAAO,OACAxC,EAAAiC,GAGA,OAAAjC,EAGA,SAAA8G,EAAA5D,GAA8B,OAAAwD,EAAAxD,EAAAsD,GAC9B,SAAAO,EAAA7D,GAA8B,OAAAwD,EAAAxD,EAAAuD,GAK9B,SAAAO,EAAA9G,GACA,uBAAAA,EAAAC,OAAA8G,KAAA/G,GAAAsC,OAAA,EAGA,SAAA0E,EAAAxC,GACA,IACAyC,KAgBA,OAjBA,QAA6B,UAG7BxD,QAAA,SAAAjC,GACA,IAAA0F,EAAA3F,EAAA4F,UAAA3F,GAAA2B,MAAAqB,GACA,GAAA0C,EAAA5E,QAAA,GAEA,IADA,IAAA8E,EAAAN,EAAAI,EAAA,IACA3H,EAAA,EAA2BA,EAAA2H,EAAA5E,OAAgB/C,IAC3C,GAAAuH,EAAAI,EAAA3H,MAAA6H,EAAA,OAEAH,EAAAnE,MACAtB,YACA6F,MAAApH,OAAA8G,KAAAG,EAAA,IAAA5E,YAKA2E,EAAA3E,OACA2E,EAAAK,KAAA,SAAAzE,EAAAqD,GACA,OAAAA,EAAAmB,MAAAxE,EAAAwE,QACS,GAAA7F,UAET,KAsLAlC,EAAAD,SACAkI,MApNA,SAAAxF,GAAmB,QAAAA,EAAA2E,MAAAH,IAqNnBiB,MAtNA,SAAAzF,GAAmB,QAAAA,EAAA2E,MAAAJ,IAuNnBM,iBACAC,iBACAY,IAAAlG,EAAAmG,SACAC,IAAApG,EAAAqG,SACArG,MACAsG,KA/KA,SAAArD,GACA,IAAAhD,EAAAwF,EAAAxC,GACA,OAAAhD,EAPA,SAAAgD,GAEA,cADAA,EAAAvD,QACAuD,EAMAsD,CAAAvG,EAAA4F,UAAA3F,GAAA2B,MAAAqB,IADA,MA8KAuD,YA1KA,SAAAvD,EAAAwD,EAAAC,GAEAA,IACAA,EAAAD,EACAA,MAGAA,EAAAxG,UAAAwG,EAAAxG,WAAA,IAEA,IAAA0G,EAAAF,EAAAE,UAAA,GACAC,EAAAH,EAAAG,UAAA,GACAC,EAAAJ,EAAAI,KAAA,GAEAC,KACAC,GAA6BC,KAAA,oBAAAF,YAM7B,GAJA,KAAAD,IACAE,EAAAF,KAAiCG,KAAA,OAAAC,YAA2B1I,KAAAsI,KAG5D,SAAAJ,EAAAxG,WAAA,iBAAAgD,IACAwD,EAAAxG,UAAAwF,EAAAxC,GACAwD,EAAAxG,WAFA,CAWA,IAAAiH,EAAA,iBAAAjE,EACAjD,EAAA4F,UAAAa,EAAAxG,WAAA2B,MAAAqB,KAEA,GAAAiE,EAAAnG,OAAA,CAKA,IACA/C,EADAmJ,KAQA,GAJAR,MAAAtB,EAAA6B,EAAA,KACAN,MAAAtB,EAAA4B,EAAA,KACAP,GAAAC,EAEA,CAYA,IAAA5I,EAAA,EAAeA,EAAAkJ,EAAAnG,OAAmB/C,IAClC,QAAAoJ,IAAAF,EAAAlJ,GAAA4I,SACAQ,IAAAF,EAAAlJ,GAAA2I,GAAA,CAEA,IAEAU,EAAAC,EACAhG,EAHAiG,EAAAL,EAAAlJ,GAAA4I,GACAY,EAAAN,EAAAlJ,GAAA2I,IAIArF,EAAAwD,EAAAyC,EAAA,SACAA,EAAAjG,IACAA,EAAAwD,EAAA0C,EAAA,SACAA,EAAAlG,GAEA+F,EAAAhD,WAAAkD,GACAD,EAAAjD,WAAAmD,GAEAC,MAAAJ,IACAI,MAAAH,GACAH,EAAA5F,MACAmG,QAAA,6DACAjG,IAAAyF,EAAAlJ,GACA2J,MAAA3J,KAGAyI,EAAAmB,uBACAV,EAAAlJ,GAAA4I,UACAM,EAAAlJ,GAAA2I,IAGAG,EAAAvF,MACAyF,KAAA,UACAC,WAAAC,EAAAlJ,GACA6J,UACAb,KAAA,QACAc,aACAzD,WAAAgD,GACAhD,WAAAiD,QAQAZ,EAAAS,EAAApG,OAAAoG,EAAA,KAAAJ,OAzDA,CACA,IAAA/I,EAAA,EAAmBA,EAAAkJ,EAAAnG,OAAmB/C,IACtC8I,EAAAvF,MACAyF,KAAA,UACAC,WAAAC,EAAAlJ,GACA6J,SAAA,OAGAnB,EAAAS,EAAApG,OAAAoG,EAAA,KAAAJ,SApBAL,EAAA,KAAAK,QAZAL,GACAM,KAAA,QACAU,QAAA,oCAkJAK,OAhEA,SAAAC,GASA,IARA,IAAAlB,EAAAkB,EAAAlB,SACAmB,GACAjB,KAAA,UACAa,UACAb,KAAA,aACAc,iBAGA9J,EAAA,EAAmBA,EAAA8I,EAAA/F,OAAqB/C,IACxCiK,EAAAJ,SAAAC,YAAAvG,KAAAuF,EAAA9I,GAAA6J,SAAAC,aAWA,OATAG,EAAAhB,WAAAH,EAAAoB,OAAA,SAAAC,EAAAC,GACA,QAAAC,KAAAD,EAAAnB,WACAkB,EAAAE,KACAF,EAAAE,OAEAF,EAAAE,GAAA9G,KAAA6G,EAAAnB,WAAAoB,IAEA,OAAAF,QAGAnB,KAAA,oBACAF,UAAAmB,KA0CAK,UAtCA,SAAAN,GASA,IARA,IAAAlB,EAAAkB,EAAAlB,SACAyB,GACAvB,KAAA,UACAa,UACAb,KAAA,UACAc,mBAGA9J,EAAA,EAAmBA,EAAA8I,EAAA/F,OAAqB/C,IACxCuK,EAAAV,SAAAC,YAAA,GAAAvG,KAAAuF,EAAA9I,GAAA6J,SAAAC,aAWA,OATAS,EAAAtB,WAAAH,EAAAoB,OAAA,SAAAC,EAAAC,GACA,QAAAC,KAAAD,EAAAnB,WACAkB,EAAAE,KACAF,EAAAE,OAEAF,EAAAE,GAAA9G,KAAA6G,EAAAnB,WAAAoB,IAEA,OAAAF,QAGAnB,KAAA,oBACAF,UAAAyB","file":"csv2geojson-prod.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","function objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n]\"),\n delimiterCode = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns;\n return rows;\n }\n\n function parseRows(text, f) {\n var EOL = {}, // sentinel value for end-of-line\n EOF = {}, // sentinel value for end-of-file\n rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // the current line number\n t, // the current token\n eol; // is the current token followed by EOL?\n\n function token() {\n if (I >= N) return EOF; // special case: end of file\n if (eol) return eol = false, EOL; // special case: end of line\n\n // special case: quotes\n var j = I, c;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, \"\\\"\");\n }\n\n // common case: find next delimiter or newline\n while (I < N) {\n var k = 1;\n c = text.charCodeAt(I++);\n if (c === 10) eol = true; // \\n\n else if (c === 13) { eol = true; if (text.charCodeAt(I) === 10) ++I, ++k; } // \\r|\\r\\n\n else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n\n // special case: last token before EOF\n return text.slice(j);\n }\n\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n\n return rows;\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n })).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(text) {\n return text == null ? \"\"\n : reFormat.test(text += \"\") ? \"\\\"\" + text.replace(/\\\"/g, \"\\\"\\\"\") + \"\\\"\"\n : text;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatRows: formatRows\n };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatRows = tsv.formatRows;\n","module.exports = element;\nmodule.exports.pair = pair;\nmodule.exports.format = format;\nmodule.exports.formatPair = formatPair;\nmodule.exports.coordToDMS = coordToDMS;\n\nfunction element(x, dims) {\n return search(x, dims).val;\n}\n\nfunction formatPair(x) {\n return format(x.lat, 'lat') + ' ' + format(x.lon, 'lon');\n}\n\n// Is 0 North or South?\nfunction format(x, dim) {\n var dms = coordToDMS(x,dim);\n return dms.whole + '° ' +\n (dms.minutes ? dms.minutes + '\\' ' : '') +\n (dms.seconds ? dms.seconds + '\" ' : '') + dms.dir;\n}\n\nfunction coordToDMS(x,dim) {\n var dirs = {\n lat: ['N', 'S'],\n lon: ['E', 'W']\n }[dim] || '',\n dir = dirs[x >= 0 ? 0 : 1],\n abs = Math.abs(x),\n whole = Math.floor(abs),\n fraction = abs - whole,\n fractionMinutes = fraction * 60,\n minutes = Math.floor(fractionMinutes),\n seconds = Math.floor((fractionMinutes - minutes) * 60);\n\n return {\n whole: whole,\n minutes: minutes,\n seconds: seconds,\n dir: dir\n };\n}\n\nfunction search(x, dims, r) {\n if (!dims) dims = 'NSEW';\n if (typeof x !== 'string') return { val: null, regex: r };\n r = r || /[\\s\\,]*([\\-|\\—|\\―]?[0-9.]+)°? *(?:([0-9.]+)['’′‘] *)?(?:([0-9.]+)(?:''|\"|â€|″) *)?([NSEW])?/gi;\n var m = r.exec(x);\n if (!m) return { val: null, regex: r };\n else if (m[4] && dims.indexOf(m[4]) === -1) return { val: null, regex: r };\n else return {\n val: (((m[1]) ? parseFloat(m[1]) : 0) +\n ((m[2] ? parseFloat(m[2]) / 60 : 0)) +\n ((m[3] ? parseFloat(m[3]) / 3600 : 0))) *\n ((m[4] && m[4] === 'S' || m[4] === 'W') ? -1 : 1),\n regex: r,\n raw: m[0],\n dim: m[4]\n };\n}\n\nfunction pair(x, dims) {\n x = x.trim();\n var one = search(x, dims);\n if (one.val === null) return null;\n var two = search(x, dims, one.regex);\n if (two.val === null) return null;\n // null if one/two are not contiguous.\n if (one.raw + two.raw !== x) return null;\n if (one.dim) {\n return swapdim(one.val, two.val, one.dim);\n } else {\n return [one.val, two.val];\n }\n}\n\nfunction swapdim(a, b, dim) {\n if (dim === 'N' || dim === 'S') return [a, b];\n if (dim === 'W' || dim === 'E') return [b, a];\n}\n","'use strict';\n\nvar dsv = require('d3-dsv'),\n sexagesimal = require('sexagesimal');\n\nvar latRegex = /(Lat)(itude)?/gi,\n lonRegex = /(L)(on|ng)(gitude)?/i;\n\nfunction guessHeader(row, regexp) {\n var name, match, score;\n for (var f in row) {\n match = f.match(regexp);\n if (match && (!name || match[0].length / f.length > score)) {\n score = match[0].length / f.length;\n name = f;\n }\n }\n return name;\n}\n\nfunction guessLatHeader(row) { return guessHeader(row, latRegex); }\nfunction guessLonHeader(row) { return guessHeader(row, lonRegex); }\n\nfunction isLat(f) { return !!f.match(latRegex); }\nfunction isLon(f) { return !!f.match(lonRegex); }\n\nfunction keyCount(o) {\n return (typeof o == 'object') ? Object.keys(o).length : 0;\n}\n\nfunction autoDelimiter(x) {\n var delimiters = [',', ';', '\\t', '|'];\n var results = [];\n\n delimiters.forEach(function (delimiter) {\n var res = dsv.dsvFormat(delimiter).parse(x);\n if (res.length >= 1) {\n var count = keyCount(res[0]);\n for (var i = 0; i < res.length; i++) {\n if (keyCount(res[i]) !== count) return;\n }\n results.push({\n delimiter: delimiter,\n arity: Object.keys(res[0]).length,\n });\n }\n });\n\n if (results.length) {\n return results.sort(function (a, b) {\n return b.arity - a.arity;\n })[0].delimiter;\n } else {\n return null;\n }\n}\n\n/**\n * Silly stopgap for dsv to d3-dsv upgrade\n *\n * @param {Array} x dsv output\n * @returns {Array} array without columns member\n */\nfunction deleteColumns(x) {\n delete x.columns;\n return x;\n}\n\nfunction auto(x) {\n var delimiter = autoDelimiter(x);\n if (!delimiter) return null;\n return deleteColumns(dsv.dsvFormat(delimiter).parse(x));\n}\n\nfunction csv2geojson(x, options, callback) {\n\n if (!callback) {\n callback = options;\n options = {};\n }\n\n options.delimiter = options.delimiter || ',';\n\n var latfield = options.latfield || '',\n lonfield = options.lonfield || '',\n crs = options.crs || '';\n\n var features = [],\n featurecollection = {type: 'FeatureCollection', features: features};\n\n if (crs !== '') {\n featurecollection.crs = {type: 'name', properties: {name: crs}};\n }\n\n if (options.delimiter === 'auto' && typeof x == 'string') {\n options.delimiter = autoDelimiter(x);\n if (!options.delimiter) {\n callback({\n type: 'Error',\n message: 'Could not autodetect delimiter'\n });\n return;\n }\n }\n\n var parsed = (typeof x == 'string') ?\n dsv.dsvFormat(options.delimiter).parse(x) : x;\n\n if (!parsed.length) {\n callback(null, featurecollection);\n return;\n }\n\n var errors = [];\n var i;\n\n\n if (!latfield) latfield = guessLatHeader(parsed[0]);\n if (!lonfield) lonfield = guessLonHeader(parsed[0]);\n var noGeometry = (!latfield || !lonfield);\n\n if (noGeometry) {\n for (i = 0; i < parsed.length; i++) {\n features.push({\n type: 'Feature',\n properties: parsed[i],\n geometry: null\n });\n }\n callback(errors.length ? errors : null, featurecollection);\n return;\n }\n\n for (i = 0; i < parsed.length; i++) {\n if (parsed[i][lonfield] !== undefined &&\n parsed[i][latfield] !== undefined) {\n\n var lonk = parsed[i][lonfield],\n latk = parsed[i][latfield],\n lonf, latf,\n a;\n\n a = sexagesimal(lonk, 'EW');\n if (a) lonk = a;\n a = sexagesimal(latk, 'NS');\n if (a) latk = a;\n\n lonf = parseFloat(lonk);\n latf = parseFloat(latk);\n\n if (isNaN(lonf) ||\n isNaN(latf)) {\n errors.push({\n message: 'A row contained an invalid value for latitude or longitude',\n row: parsed[i],\n index: i\n });\n } else {\n if (!options.includeLatLon) {\n delete parsed[i][lonfield];\n delete parsed[i][latfield];\n }\n\n features.push({\n type: 'Feature',\n properties: parsed[i],\n geometry: {\n type: 'Point',\n coordinates: [\n parseFloat(lonf),\n parseFloat(latf)\n ]\n }\n });\n }\n }\n }\n\n callback(errors.length ? errors : null, featurecollection);\n}\n\nfunction toLine(gj) {\n var features = gj.features;\n var line = {\n type: 'Feature',\n geometry: {\n type: 'LineString',\n coordinates: []\n }\n };\n for (var i = 0; i < features.length; i++) {\n line.geometry.coordinates.push(features[i].geometry.coordinates);\n }\n line.properties = features.reduce(function (aggregatedProperties, newFeature) {\n for (var key in newFeature.properties) {\n if (!aggregatedProperties[key]) {\n aggregatedProperties[key] = [];\n }\n aggregatedProperties[key].push(newFeature.properties[key]);\n }\n return aggregatedProperties;\n }, {});\n return {\n type: 'FeatureCollection',\n features: [line]\n };\n}\n\nfunction toPolygon(gj) {\n var features = gj.features;\n var poly = {\n type: 'Feature',\n geometry: {\n type: 'Polygon',\n coordinates: [[]]\n }\n };\n for (var i = 0; i < features.length; i++) {\n poly.geometry.coordinates[0].push(features[i].geometry.coordinates);\n }\n poly.properties = features.reduce(function (aggregatedProperties, newFeature) {\n for (var key in newFeature.properties) {\n if (!aggregatedProperties[key]) {\n aggregatedProperties[key] = [];\n }\n aggregatedProperties[key].push(newFeature.properties[key]);\n }\n return aggregatedProperties;\n }, {});\n return {\n type: 'FeatureCollection',\n features: [poly]\n };\n}\n\nmodule.exports = {\n isLon: isLon,\n isLat: isLat,\n guessLatHeader: guessLatHeader,\n guessLonHeader: guessLonHeader,\n csv: dsv.csvParse,\n tsv: dsv.tsvParse,\n dsv: dsv,\n auto: auto,\n csv2geojson: csv2geojson,\n toLine: toLine,\n toPolygon: toPolygon\n};\n"],"sourceRoot":""}