{"version":3,"sources":["../js/modules/helpers.js","../src/yesno.js","../src/apmonth.js","../src/apdate.js","../src/utils.js","../src/apnumber.js","../src/aptime.js","../src/capfirst.js","../src/intcomma.js","../src/intword.js","../src/ordinal.js","../src/pluralize.js","../src/widont.js","../../node_modules/d3-fetch/src/blob.js","../../node_modules/d3-fetch/src/buffer.js","../../node_modules/d3-dsv/src/dsv.js","../../node_modules/d3-dsv/src/csv.js","../../node_modules/d3-dsv/src/tsv.js","../../node_modules/d3-dsv/src/index.js","../../node_modules/d3-fetch/src/text.js","../../node_modules/d3-fetch/src/dsv.js","../../node_modules/d3-fetch/src/image.js","../../node_modules/d3-fetch/src/json.js","../../node_modules/d3-fetch/src/xml.js","../../node_modules/d3-fetch/src/index.js","0","../js/main.js"],"names":["$1","selector","context","document","querySelector","$","querySelectorAll","enableShareButtons","shareLinks","i","length","href","encodeURIComponent","window","location","no","const","AP_MONTHS","apmonth","date","Date","getMonth","apdate","getDate","getFullYear","isNil","value","_isFinite","isFinite","isInteger","Math","floor","AP_NUMBERS","apnumber","val","convertedVal","aptime","period","hour","hours","getHours","minutes","getMinutes","minutesAreZero","capfirst","str","String","charAt","toUpperCase","slice","intcomma","parts","toString","split","replace","join","SUFFIXES","intword","numDigits","ceil","log","LN10","exponent","newVal","pow","round","ENGLISH_ORDINAL_EXCEPTIONS","ordinal","indexOf","pluralize","pluralSuffix","singularSuffix","parseFloat","Array","isArray","nbsp","widontRegex","RegExp","widont","replaceChar","yesno","yes","maybe","numberOfArguments","arguments","responseBlob","response","ok","Error","status","statusText","blob","input","init","fetch","then","responseArrayBuffer","arrayBuffer","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","Function","map","name","JSON","stringify","customConverter","f","object","row","inferColumns","rows","columnSet","Object","create","forEach","column","push","delimiter","reFormat","DELIMITER","charCodeAt","parseRows","text","t","N","I","n","eof","eol","token","c","j","formatRow","formatValue","test","parse","convert","format","concat","formatRows","csv","csvParse","csvParseRows","csvFormat","csvFormatRows","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatRows","responseText","dsvParse","undefined","dsv","Promise","resolve","reject","image","Image","key","onerror","onload","src","responseJson","json","parser","type","DOMParser","parseFromString","html","svg","module","exports","count","r","imgMax","sortToTop","market","links","match","readMore","createElement","className","innerText","el","hostName","hostMatch","stateCheck","parentElement","getAttribute","classList","add","appendChild","gridLinks","ledeClone","cloneNode","ledeCard","startHeaderFade","startPics","imgPlace","lastPlace","picsNames","keys","pics","picNum","getRandomInt","currentPics","lastPics","setInterval","headerImgs","includes","dataName","toSwitch","switchName","firstElementChild","newImg","setAttribute","setTimeout","remove","filter","startFadeAnimation","data","statOne","statTwo","dataInt","counter","showStat","whichStat","number","min","max","random","addEventListener","host","hostname","headImgs","picsNum","initialPics","img","totalNum","totalDate","clamp","d3","csvFile","d","index","total","fps","time","fpsInterval","performance","now","elapsed","startTime","requestAnimationFrame","requestID","sum","cancelAnimationFrame","deathTypes"],"mappings":"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","file":"main.7460b141.map","sourceRoot":"../src/html","sourcesContent":["/**\n * querySelector with optional context (defualt is document)\n */\n\nconst $1 = (selector, context = document) => context.querySelector(selector);\n\n/**\n * querySelectorAll with optional context (defualt is document)\n */\n\nconst $ = (selector, context = document) => context.querySelectorAll(selector);\n\n/**\n * Elenables share buttons by adding window location to href of each link.\n * @param {string} selector CSS selector string\n */\nconst enableShareButtons = selector => {\n let shareLinks = document.querySelectorAll('.'+selector);\n for (let i = 0; i < shareLinks.length; i++) {\n shareLinks[i].href =\n shareLinks[i].href + encodeURIComponent(window.location);\n }\n}\n\nexport { $, $1, enableShareButtons}","import { isNil } from './utils';\n\n/**\n * Given a mapping of arguments for `true`, `false`, and (optionally)\n * `null`/`undefined`, return a string according to the value. If `maybe` is not\n * provided, a `null` or `undefined` value will return the `no` argument.\n *\n * @param {boolean|Null|undefined} val\n * @param {string} [yes='yes']\n * @param {string} [no='no']\n * @param {string} [maybe='maybe']\n * @example\n *\n * var journalize = require('journalize');\n *\n * journalize.yesno(true);\n * // returns 'yes'\n * journalize.yesno(false);\n * // returns 'no'\n * journalize.yesno(null);\n * // returns 'maybe'\n *\n * journalize.yesno(true, 'yay', 'nay', 'shruggie');\n * // returns 'yay'\n * journalize.yesno(false, 'yay', 'nay', 'shruggie');\n * // returns 'nay'\n * journalize.yesno(null, 'yay', 'nay', 'shruggie');\n * // returns 'shruggie'\n */\nexport default function yesno(val, yes = 'yes', no = 'no', maybe = 'maybe') {\n const numberOfArguments = arguments.length;\n\n // if the user only passes the value and a `yes` argument that's too\n // ambiguous, so we give up\n if (numberOfArguments === 2) return val;\n // if the user passes the value, a `yes` and a `no` argument, don't assume\n // the default `maybe` is what they want and use `no` instead\n if (numberOfArguments === 3) maybe = no;\n\n // if null or undefined, use `maybe`\n if (isNil(val)) return maybe;\n\n // if true, use `yes`\n if (val) {\n return yes;\n }\n\n // otherwise, must be `no`\n return no;\n}\n","/**\n * Map of AP month abbreviations. Note that they are zero-indexed due to\n * JavaScript's life choices. Exported for testing purposes.\n *\n * @private\n * @type {Object}\n */\nexport const AP_MONTHS = {\n 0: 'Jan.',\n 1: 'Feb.',\n 2: 'March',\n 3: 'April',\n 4: 'May',\n 5: 'June',\n 6: 'July',\n 7: 'Aug.',\n 8: 'Sept.',\n 9: 'Oct.',\n 10: 'Nov.',\n 11: 'Dec.',\n};\n\n/**\n * Returns an AP-formatted month string that corresponds with the supplied\n * Date. If an `input` is not passed, it will use the result of `new Date();`.\n *\n * @param {Date} [date] JavaScript Date object, defaults to current date if\n * not passed\n * @return {string}\n * @example\n *\n * var journalize = require('journalize');\n *\n * // Remember that JavaScript zero-indexes months!\n * journalize.apmonth(new Date(2016, 10, 8));\n * // returns 'Nov.'\n *\n * // Uses the current date if no parameter is passed\n * journalize.apmonth();\n * // returns 'July' (pretend it is actually July)\n */\nexport default function apmonth(date = new Date()) {\n return AP_MONTHS[date.getMonth()];\n}\n","import apmonth from './apmonth';\n\n/**\n * Returns an AP-formatted date string that corresponds with the supplied\n * Date. If an `input` is not passed, it will use the result of `new Date();`.\n *\n * @param {Date} [date] JavaScript Date object, defaults to current date if\n * not passed\n * @return {string}\n * @example\n *\n * var journalize = require('journalize');\n *\n * // Remember that JavaScript zero-indexes months!\n * journalize.apdate(new Date(2016, 10, 8));\n * // returns 'Nov. 8, 2016'\n *\n * // Uses the current date if no parameter is passed\n * journalize.apdate();\n * // returns 'July 4, 2016' (pretend it is actually July 4, 2016)\n */\nexport default function apdate(date = new Date()) {\n const month = apmonth(date);\n const dayOfMonth = date.getDate();\n const year = date.getFullYear();\n\n return `${month} ${dayOfMonth}, ${year}`;\n}\n","/**\n * Returns true if `value` is null or undefined;\n *\n * @private\n * @param {*} value\n * @return {boolean}\n */\nexport function isNil(value) {\n return value == null;\n}\n\n/**\n * Returns true if `value` is a finite number.\n *\n * Based on: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite\n *\n * @private\n * @param {*} value\n * @return {boolean}\n */\nexport function _isFinite(value) {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Returns true if `value` is an integer.\n *\n * Based on: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n *\n * @private\n * @param {*} value\n * @return {boolean}\n */\nexport function isInteger(value) {\n return _isFinite(value) && Math.floor(value) === value;\n}\n","import { isInteger, isNil } from './utils';\n\n/**\n * List of spelled out numbers per AP style.\n * @private\n * @type {Array}\n */\nconst AP_NUMBERS = [\n 'one',\n 'two',\n 'three',\n 'four',\n 'five',\n 'six',\n 'seven',\n 'eight',\n 'nine',\n];\n\n/**\n * Converts an integer to string representation per AP style rules. If an\n * integer is not one that would be converted, it is returned in its original\n * form.\n *\n * If a non-integer is given, it will be returned in its original form as\n * well.\n *\n * @param {number} val\n * @return {string}\n * @example\n *\n * var journalize = require('journalize');\n *\n * journalize.apnumber(8);\n * // returns 'eight'\n *\n * journalize.apnumber(42);\n * // returns 42\n *\n */\nexport default function apnumber(val) {\n // if `val` is undefined or null, return an empty string\n if (isNil(val)) return '';\n\n const convertedVal = +val;\n\n // if `convertedVal` is not an integer, return `val`\n if (!isInteger(convertedVal)) return val;\n\n // if `convertedVal` is not between 0 and 10, return `val`\n if (convertedVal <= 0 || convertedVal >= 10) return val;\n\n return AP_NUMBERS[convertedVal - 1];\n}\n","/**\n * Returns an AP-formatted time string that corresponds with the supplied\n * Date. If an `input` is not passed, it will use the result of `new Date();`.\n *\n * @param {Date} [date] JavaScript Date object, defaults to current date if\n * not passed\n * @return {string}\n * @example\n *\n * var journalize = require('journalize');\n *\n * // Bright and early\n * journalize.aptime(new Date(2016, 10, 8, 6, 30));\n * // returns '6:30 a.m.'\n *\n * // It can handle `p.m.` too\n * journalize.aptime(new Date(2016, 10, 8, 16, 30));\n * // returns '4:30 p.m.'\n *\n * // Uses the current time if no parameter is passed\n * journalize.aptime();\n * // returns '6:45 p.m.' (pretend it is actually 6:45 p.m. right now)\n */\nexport default function aptime(date = new Date()) {\n const hours = date.getHours();\n const minutes = date.getMinutes();\n\n const minutesAreZero = minutes === 0;\n\n if (minutesAreZero) {\n if (hours === 0) return 'midnight';\n if (hours === 12) return 'noon';\n }\n\n let period, hour;\n\n if (hours < 12) {\n period = 'a.m.';\n // account for how Date() returns 12 a.m. as 0\n if (hours > 0) {\n hour = hours;\n } else {\n hour = 12;\n }\n } else {\n period = 'p.m.';\n\n if (hours === 12) {\n hour = hours;\n } else {\n hour = hours - 12;\n }\n }\n\n if (minutesAreZero) {\n return hour + ' ' + period;\n }\n\n const minute = minutes < 10 ? '0' + minutes : minutes;\n return hour + ':' + minute + ' ' + period;\n}\n","import { isNil } from './utils';\n\n/**\n * Capitalizes the first character of a value and returns it.\n *\n * @param {string} val\n * @returns {string}\n * @example\n *\n * var journalize = require('journalize');\n *\n * journalize.capfirst('hello world');\n * // returns 'Hello world'\n */\nexport default function capfirst(val) {\n // if `val` is undefined or null, return an empty string\n if (isNil(val)) return '';\n\n // coerce value to a String\n const str = String(val);\n\n return `${str.charAt(0).toUpperCase()}${str.slice(1)}`;\n}\n","import { _isFinite, isNil } from './utils';\n\n/**\n * Converts a number to include commas, if necessary.\n *\n * Source: http://stackoverflow.com/a/2901298\n *\n * @private\n * @param {number|string} n\n * @return {string}\n */\nfunction numberWithCommas(n) {\n const parts = n.toString().split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n return parts.join('.');\n}\n\n/**\n * Alters a string or number to include commas. If `val` is undefined or null,\n * an empty string is returned.\n *\n * @param {number|string} val\n * @return {string}\n * @example\n *\n * var journalize = require('journalize');\n *\n * journalize.intcomma(10311);\n * // returns '10,311'\n *\n * journalize.intcomma('1234567.1234567');\n * // returns '1,234,567.1234567'\n */\nexport default function intcomma(val) {\n // if `val` is undefined or null, return an empty string\n if (isNil(val)) return '';\n\n const convertedVal = +val;\n\n // if `convertedVal` is not a number, don't waste time converting it\n if (!_isFinite(convertedVal)) return val;\n\n return numberWithCommas(convertedVal);\n}\n","import { isInteger, isNil } from './utils';\n\n/**\n * Array of suffixes to be used by intword.\n * @private\n * @type {Array}\n */\nconst SUFFIXES = [\n 'million',\n 'billion',\n 'trillion',\n 'quadrillion',\n 'quintillion',\n 'sextillion',\n 'septillion',\n 'octillion',\n 'nonillion',\n 'decillion',\n];\n\n/**\n * Returns the number of digits found in a number. Accounts for exponents, too.\n *\n * @private\n * @param {number} n\n * @return {number}\n */\nfunction getLengthOfNumber(n) {\n return Math.ceil(Math.log(n + 1) / Math.LN10);\n}\n\n/**\n * Converts a large integer into a string representation. Only makes sense for\n * numbers at least 1 million or more.\n *\n * @param {number} val\n * @return {string}\n * @example\n *\n * var journalize = require('journalize');\n *\n * journalize.intword(1000000);\n * // returns '1 million'\n *\n * journalize.intword(6500000000000);\n * // returns '6.5 trillion'\n */\nexport default function intword(val) {\n // if `val` is undefined or null, return an empty string\n if (isNil(val)) return '';\n\n const convertedVal = +val;\n\n // if `convertedVal` is not an integer, return `val`\n if (!isInteger(convertedVal)) return val;\n\n // if `convertedVal` is less than 1 million, no conversion is needed\n if (convertedVal < 1000000) return val;\n\n // get the number of digits in the number, and substract remainder to get\n // exponent value\n const numDigits = getLengthOfNumber(convertedVal) - 1;\n const exponent = numDigits - (numDigits % 3);\n\n // calculate the rounded version of `convertedVal`\n let newVal = convertedVal / Math.pow(10, exponent);\n newVal = Math.round(newVal * 10) / 10;\n\n return newVal + ' ' + SUFFIXES[Math.floor(exponent / 3) - 2];\n}\n","import { isInteger, isNil } from './utils';\n\n/**\n * A list of suffixes for conversions.\n * @private\n * @type {Array}\n */\nconst SUFFIXES = ['th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th'];\n\n/**\n * A list of funky English ordinals.\n * @private\n * @type {Array}\n */\nconst ENGLISH_ORDINAL_EXCEPTIONS = [11, 12, 13];\n\n/**\n * Converts an integer into its ordinal form. Handles the special cases of 11,\n * 12 and 13, too. If a non-integer is submitted, it will be returned in its\n * original form.\n *\n * @param {number} val\n * @return {string}\n * @example\n *\n * var journalize = require('journalize');\n *\n * journalize.ordinal(5);\n * // returns '5th'\n *\n * journalize.ordinal(13);\n * // returns '13th'\n *\n * journalize.ordinal(103);\n * // returns '103rd'\n */\nexport default function ordinal(val) {\n // if `val` is undefined or null, return an empty string\n if (isNil(val)) return '';\n\n const convertedVal = +val;\n\n // if `convertedVal` is not an integer, return `val`\n if (!isInteger(convertedVal)) return val;\n\n // if `convertedVal` is 11, 12 or 13, English gets weird\n if (ENGLISH_ORDINAL_EXCEPTIONS.indexOf(convertedVal % 100) > -1)\n return convertedVal + SUFFIXES[0];\n\n return convertedVal + SUFFIXES[convertedVal % 10];\n}\n","/**\n * Returns a plural suffix if the value is not 1. By default, `pluralize`\n * uses \"s\" as the suffix. If a `String` is provided, `pluralize` will attempt\n * to convert it into a `Number`. If an `Array` is provided instead of a\n * number, the length of the `Array` is used to determine the suffix. An\n * alternative plural suffix can be provided as the second parameter, and if\n * necessary, an alternative singular suffix can be provided as the third.\n *\n * @param {number|string|Array} value\n * @param {string} [pluralSuffix='s']\n * @param {string} [singularSuffix='']\n * @return {string}\n * @example\n *\n * var journalize = require('journalize');\n *\n * // typical usage\n * 'vote' + journalize.pluralize(0); // votes\n * 'vote' + journalize.pluralize(1); // vote\n * 'vote' + journalize.pluralize(2); // votes\n *\n * // the plural suffix may be changed\n * 'class' + journalize.pluralize(0, 'es'); // classes\n * 'class' + journalize.pluralize(1, 'es'); // class\n * 'class' + journalize.pluralize(2, 'es'); // classes\n *\n * // some words also need a custom singular suffix\n * 'cand' + journalize.pluralize(0, 'ies', 'y'); // candies\n * 'cand' + journalize.pluralize(1, 'ies', 'y'); // candy\n * 'cand' + journalize.pluralize(2, 'ies', 'y'); // candies\n */\nexport default function pluralize(\n value,\n pluralSuffix = 's',\n singularSuffix = ''\n) {\n if (parseFloat(value) !== 1) {\n return pluralSuffix;\n }\n\n if (Array.isArray(value) && value.length !== 1) {\n return pluralSuffix;\n }\n\n return singularSuffix;\n}\n","import { isNil } from './utils';\n\n/**\n * The non-breaking space character added to the string passed to widont.\n * Exported for testing purposes.\n *\n * @private\n * @type {string}\n */\nexport const nbsp = '\\xA0';\n\n/**\n * The regular expression to find the final space in a string for widont.\n *\n * @private\n * @type {RegExp}\n */\nconst widontRegex = new RegExp(/\\s+([^\\s]*)\\s*$/);\n\n/**\n * Prevents \"widows\" - a word by itself on a line - from appearing in strings\n * by replacing the space between the last two words with a non-breaking space\n * character.\n *\n * @param {string} val\n * @param {string} [replaceChar='\\xA0'] The character to replace the space with\n * @returns {string}\n * @example\n *\n * var journalize = require('journalize');\n *\n * journalize.widont('this is a string');\n * // returns 'this is a string'\n *\n * journalize.widont('this is a string', 'HELLO');\n * // returns 'this is aHELLOstring'\n *\n */\nexport default function widont(val, replaceChar = nbsp) {\n // if `val` is undefined or null, return an empty string\n if (isNil(val)) return '';\n\n // coerce value to a String\n const str = String(val);\n\n return str.replace(widontRegex, `${replaceChar}$1`);\n}\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction 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\\r]\"),\n DELIMITER = 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 rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\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","export {default as dsvFormat} from \"./dsv\";\nexport {csvParse, csvParseRows, csvFormat, csvFormatRows} from \"./csv\";\nexport {tsvParse, tsvParseRows, tsvFormat, tsvFormatRows} from \"./tsv\";\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export {default as blob} from \"./blob\";\nexport {default as buffer} from \"./buffer\";\nexport {default as dsv, csv, tsv} from \"./dsv\";\nexport {default as image} from \"./image\";\nexport {default as json} from \"./json\";\nexport {default as text} from \"./text\";\nexport {default as xml, html, svg} from \"./xml\";\n",null,"import { $1 } from './modules/helpers';\nimport { apdate, intcomma } from 'journalize';\nimport * as d3 from 'd3-fetch';\nimport csvFile from '../assets/PerDate2-13-19.csv';\nimport deathTypes from './modules/deathTypes.json';\nimport pics from '../imgs/*.jpg';\n\nconst r = /[wamp]{3}.(\\S+).com/; // regex to extract market name\nconst imgMax = 29;\n\ndocument.addEventListener('DOMContentLoaded', function() {\n\n let host = location.hostname;\n if (host== 'localhost') host = 'www.miamiherald.com'\n let market = host.match(r)[1];\n\n switch (market) {\n case 'sacbee':\n case 'fresnobee':\n case 'mercedsunstar':\n market = 'modbee';\n break;\n case 'charlotteobserver':\n market = 'newsobserver';\n break;\n case 'bradenton':\n market = 'miamiherald';\n break;\n case 'macon':\n market = 'ledger-enquirer';\n }\n \n sortToTop(market); // Moves story to top based on market location\n\n // Loads initial set of images\n let headImgs = document.querySelectorAll('.header__img');\n\n let picsNames = Object.keys(pics);\n let picsNum = getRandomInt(0, imgMax);\n let initialPics = [];\n\n headImgs.forEach(el => {\n while (initialPics.includes(picsNames[picsNum])) {\n picsNum = getRandomInt(0, imgMax);\n }\n let img = document.createElement('img');\n let dataName = picsNames[picsNum];\n img.src = pics[dataName];\n img.setAttribute('data-name', dataName);\n el.appendChild(img);\n initialPics.push(dataName);\n \n });\n\n startHeaderFade(initialPics);\n\n let totalNum = $1('.total__num');\n let totalDate = $1('.total__date');\n\n d3.csv(csvFile, function(d) {\n return {\n date: new Date(d['date']),\n count: +d['count']\n };\n }).then(function(data) {\n let index = 0;\n let total = 0;\n let fps = 1;\n\n const stop = false;\n\n const time = {\n fpsInterval: 1000 / fps,\n then: performance.now(),\n now: null,\n elapsed: null\n };\n\n time.startTime = time.then;\n\n const increment = t => {\n if (t < 5) return 2;\n if (t / data.length > 0.96) return clamp(t * 0.02, 1, 60);\n if (t / data.length > 0.98) return clamp(t * 0.01, 1, 60);\n return clamp(t * 0.75, 1, 60);\n };\n\n const count = () => {\n if (stop) return;\n\n let requestID = requestAnimationFrame(count);\n\n time.now = performance.now();\n time.elapsed = time.now - time.then;\n\n let fpsInterval = 1000 / fps;\n\n if (time.elapsed > fpsInterval && index < data.length) {\n time.then = time.now - (time.elapsed % fpsInterval);\n\n let date = data[index].date;\n let count = data[index].count;\n\n // Current sum of deaths, adding to total;\n let sum = total + count;\n\n totalNum.innerText = intcomma(sum);\n totalDate.innerText = apdate(date);\n\n total = sum;\n\n index++;\n\n fps = increment(index);\n } else if (index >= data.length) {\n cancelAnimationFrame(requestID);\n startFadeAnimation(deathTypes);\n }\n };\n\n requestAnimationFrame(count);\n });\n\n function clamp(val, min, max) {\n return val > max ? max : val < min ? min : val;\n }\n});\n\nfunction sortToTop(market) {\n let links = document.querySelectorAll('.grid-link:not(.grid-link--org) > a');\n let match;\n\n let readMore = document.createElement('p');\n readMore.className = 'lead__more';\n readMore.innerText = \"Read More\";\n\n links.forEach(el => {\n let hostName = el.href;\n let hostMatch = hostName.match(r);\n\n let stateCheck = el.parentElement.parentElement.getAttribute('data-state');\n\n if (market === hostMatch[1] && stateCheck) {\n match = true;\n el.parentElement.classList.add('grid-link--lead');\n el.appendChild(readMore);\n \n let region = el.parentElement.parentElement;\n region.classList.add('grid__region--lead');\n }\n });\n\n if (!match) {\n let gridLinks = document.querySelector('.grid-links');\n let nationalLede = document.querySelector(\n '.grid__region[data-region=national] > .grid-link:first-of-type'\n );\n let ledeClone = nationalLede.cloneNode(true);\n ledeClone.className = 'grid-link grid-link--lead';\n\n let ledeCard = document.createElement('div');\n ledeCard.className = 'grid__region grid__region--lead';\n\n ledeCard.appendChild(ledeClone);\n gridLinks.appendChild(ledeCard);\n }\n}\n\nfunction startHeaderFade(startPics) {\n let imgPlace = 0;\n let lastPlace = imgPlace;\n\n let picsNames = Object.keys(pics);\n let picNum = getRandomInt(0, imgMax);\n\n let currentPics = startPics;\n let lastPics = currentPics;\n\n setInterval(() => {\n let headerImgs = document.querySelectorAll('.grid__header .header__img');\n\n // while for random placement\n while (imgPlace === lastPlace) {\n imgPlace = getRandomInt(0, 4);\n }\n lastPlace = imgPlace;\n\n while (\n currentPics.includes(picsNames[picNum]) ||\n lastPics.includes(picsNames[picNum])\n ) {\n picNum = getRandomInt(0, imgMax);\n }\n\n // New picture to insert\n let dataName = picsNames[picNum];\n\n // Pick random image from currently in header\n let toSwitch = headerImgs[imgPlace];\n let switchName = toSwitch.firstElementChild.getAttribute('data-name');\n\n // Create new image from randomly selected name\n let newImg = document.createElement('img');\n newImg.className = 'img-new fade-out';\n newImg.src = pics[dataName];\n newImg.setAttribute('data-name', dataName);\n toSwitch.appendChild(newImg);\n\n // Inset new image and remove the other\n setTimeout(() => {\n newImg.classList.remove('fade-out');\n }, 100);\n setTimeout(() => {\n newImg.classList.remove('img-new');\n toSwitch.firstElementChild.remove();\n }, 2000);\n\n lastPics = currentPics;\n\n // Removes old swapped pic from array and adds new one\n currentPics = currentPics.filter(name => name !== switchName);\n currentPics.push(dataName);\n }, 3500);\n}\n\nfunction startFadeAnimation(data) {\n let statOne = document.querySelector('.stats.stats-one');\n let statTwo = document.querySelector('.stats.stats-two');\n\n let length = data.length;\n let dataInt = 0;\n let counter = 0;\n\n setTimeout(() => {\n let number = statOne.querySelector('.stats__num');\n let type = statOne.querySelector('.stats__cat');\n number.innerText = data[dataInt].count;\n type.innerText = data[dataInt].type;\n statOne.classList.add('visible');\n dataInt = 1;\n counter = 2; // 2 to get next cat before others\n }, 2000);\n\n setInterval(() => {\n if (counter < length) {\n if (counter % 4 == 0) {\n statOne.classList.remove('visible');\n setTimeout(() => {\n showStat(statOne);\n }, 1000);\n } else if (counter % 4 == 2) {\n statTwo.classList.remove('visible');\n setTimeout(() => {\n showStat(statTwo);\n }, 1000);\n }\n counter++;\n } else {\n counter = 0;\n }\n }, 4000);\n\n function showStat(whichStat) {\n let number = whichStat.querySelector('.stats__num');\n let type = whichStat.querySelector('.stats__cat');\n number.innerText = data[dataInt].count;\n type.innerText = data[dataInt].type;\n whichStat.classList.add('visible');\n dataInt < data.length - 1 ? dataInt++ : (dataInt = 0);\n }\n}\n\nfunction getRandomInt(min, max) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n"]}