-
Notifications
You must be signed in to change notification settings - Fork 0
/
b4f28b8dde38944e0d9167a2fa550033034c9e0b-dbd76728b1cf7ab54b01.js.map
1 lines (1 loc) · 34.1 KB
/
b4f28b8dde38944e0d9167a2fa550033034c9e0b-dbd76728b1cf7ab54b01.js.map
1
{"version":3,"sources":["webpack:///./node_modules/jsonp/index.js","webpack:///./src/components/layout.js","webpack:///./node_modules/ms/index.js","webpack:///./node_modules/gatsby-plugin-mailchimp/index.js","webpack:///./node_modules/email-validator/index.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./node_modules/debug/src/debug.js","webpack:///./src/components/subscribe-email/index.js"],"names":["debug","module","exports","url","opts","fn","script","timer","prefix","id","name","count","param","timeout","enc","encodeURIComponent","target","document","getElementsByTagName","head","setTimeout","cleanup","Error","parentNode","removeChild","window","noop","clearTimeout","data","indexOf","replace","createElement","src","insertBefore","Layout","location","title","children","style","marginLeft","marginRight","maxWidth","rhythm","padding","menuLinks","site","siteMetadata","s","m","h","d","plural","ms","n","Math","floor","ceil","val","options","type","length","str","String","match","exec","parseFloat","toLowerCase","parse","isNaN","round","fmtShort","JSON","stringify","Object","defineProperty","value","obj","_jsonp","require","_jsonp2","__esModule","default","_emailValidator","subscribeEmailToMailchimp","Promise","resolve","reject","err","convertListFields","fields","queryParams","field","prototype","hasOwnProperty","call","fieldTransformed","substring","toUpperCase","concat","email","endpointOverride","isEmailValid","validate","emailEncoded","result","msg","endpoint","__GATSBY_PLUGIN_MAILCHIMP_ADDRESS__","arguments","tester","test","parts","split","some","part","load","r","storage","e","process","DEBUG","log","console","Function","apply","formatArgs","args","useColors","this","namespace","humanize","diff","c","color","splice","index","lastC","save","namespaces","removeItem","documentElement","WebkitAppearance","firebug","exception","table","navigator","userAgent","parseInt","RegExp","$1","chrome","local","localStorage","localstorage","colors","formatters","j","v","message","enable","prevTime","createDebug","enabled","self","curr","Date","prev","Array","i","coerce","unshift","format","formatter","logFn","bind","hash","charCodeAt","abs","selectColor","init","stack","disable","names","skips","len","push","substr","SubscribeEmail","useState","hasSubscribed","setHasSubscribed","hasError","setHasError","setEmail","_handleSubmit","a","preventDefault","addToMailchimp","className","marginBottom","fontWeight","onSubmit","margin","display","justifyContent","onChange","placeholder","border","borderRight","borderRadius","fontSize","minWidth","background","borderLeft","cursor","role","aria-label","textAlign"],"mappings":"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","file":"b4f28b8dde38944e0d9167a2fa550033034c9e0b-dbd76728b1cf7ab54b01.js","sourcesContent":["require(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\n/**\n * Module dependencies\n */\nvar debug = require('debug')('jsonp');\n/**\n * Module exports.\n */\n\n\nmodule.exports = jsonp;\n/**\n * Callback index.\n */\n\nvar count = 0;\n/**\n * Noop function.\n */\n\nfunction noop() {}\n/**\n * JSONP handler\n *\n * Options:\n * - param {String} qs parameter (`callback`)\n * - prefix {String} qs parameter (`__jp`)\n * - name {String} qs parameter (`prefix` + incr)\n * - timeout {Number} how long after a timeout error is emitted (`60000`)\n *\n * @param {String} url\n * @param {Object|Function} optional options / callback\n * @param {Function} optional callback\n */\n\n\nfunction jsonp(url, opts, fn) {\n if ('function' == typeof opts) {\n fn = opts;\n opts = {};\n }\n\n if (!opts) opts = {};\n var prefix = opts.prefix || '__jp'; // use the callback name that was passed if one was provided.\n // otherwise generate a unique name by incrementing our counter.\n\n var id = opts.name || prefix + count++;\n var param = opts.param || 'callback';\n var timeout = null != opts.timeout ? opts.timeout : 60000;\n var enc = encodeURIComponent;\n var target = document.getElementsByTagName('script')[0] || document.head;\n var script;\n var timer;\n\n if (timeout) {\n timer = setTimeout(function () {\n cleanup();\n if (fn) fn(new Error('Timeout'));\n }, timeout);\n }\n\n function cleanup() {\n if (script.parentNode) script.parentNode.removeChild(script);\n window[id] = noop;\n if (timer) clearTimeout(timer);\n }\n\n function cancel() {\n if (window[id]) {\n cleanup();\n }\n }\n\n window[id] = function (data) {\n debug('jsonp got', data);\n cleanup();\n if (fn) fn(null, data);\n }; // add qs component\n\n\n url += (~url.indexOf('?') ? '&' : '?') + param + '=' + enc(id);\n url = url.replace('?&', '?');\n debug('jsonp req \"%s\"', url); // create script\n\n script = document.createElement('script');\n script.src = url;\n target.parentNode.insertBefore(script, target);\n return cancel;\n}","import React from \"react\"\nimport { useStaticQuery, graphql } from \"gatsby\"\n\nimport { rhythm } from \"../utils/typography\"\nimport Header from \"./header\";\nimport Footer from \"./footer\";\n\nimport './global.css';\n\nconst Layout = ({ location, title, children }) => {\n const data = useStaticQuery(graphql`\n query SiteQuery {\n site {\n siteMetadata {\n title\n menuLinks {\n name\n link\n }\n }\n }\n }\n `)\n\n return (\n <div\n style={{\n marginLeft: `auto`,\n marginRight: `auto`,\n maxWidth: rhythm(28),\n padding: `${rhythm(1.5)} ${rhythm(3 / 4)}`,\n }}\n >\n <Header location={location} title={title} menuLinks={data.site.siteMetadata.menuLinks} />\n <main>{children}</main>\n <Footer />\n </div>\n )\n}\n\nexport default Layout\n","/**\n * Helpers.\n */\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options[\"long\"] ? fmtLong(val) : fmtShort(val);\n }\n\n throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));\n};\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\n\nfunction parse(str) {\n str = String(str);\n\n if (str.length > 100) {\n return;\n }\n\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);\n\n if (!match) {\n return;\n }\n\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n\n default:\n return undefined;\n }\n}\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n\n return ms + 'ms';\n}\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') || plural(ms, h, 'hour') || plural(ms, m, 'minute') || plural(ms, s, 'second') || ms + ' ms';\n}\n/**\n * Pluralization helper.\n */\n\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n\n return Math.ceil(ms / n) + ' ' + name + 's';\n}","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\n\nvar _jsonp = require('jsonp');\n\nvar _jsonp2 = _interopRequireDefault(_jsonp);\n\nvar _emailValidator = require('email-validator');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\n/**\n * Make a jsonp request to user's mailchimp list\n * `param` object avoids CORS issues\n * timeout to 3.5s so user isn't waiting forever\n * usually occurs w/ privacy plugins enabled\n * 3.5s is a bit longer than the time it would take on a Slow 3G connection\n *\n * @param {String} url - concatenated string of user's gatsby-config.js\n * options, along with any MC list fields as query params.\n *\n * @return {Promise} - a promise that resolves a data object\n * or rejects an error object\n */\n\nvar subscribeEmailToMailchimp = function subscribeEmailToMailchimp(url) {\n return new Promise(function(resolve, reject) {\n return (0, _jsonp2.default)(url, { param: 'c', timeout: 3500 }, function(err, data) {\n if (err) reject(err);\n if (data) resolve(data);\n });\n });\n};\n\n/**\n * Build a query string of MC list fields\n *\n * @param {Object} fields - a list of mailchimp audience field labels\n * and their values. We uppercase because that's what MC requires.\n * NOTE: GROUPS stay as lowercase (ex: MC uses group field names as `group[21269]`)\n *\n * @return {String} - `&FIELD1=value1&FIELD2=value2&group[21265][2]=group1`\n */\nvar convertListFields = function convertListFields(fields) {\n var queryParams = '';\n for (var field in fields) {\n if (Object.prototype.hasOwnProperty.call(fields, field)) {\n // If this is a list group, not user field then keep lowercase, as per MC reqs\n // https://github.com/benjaminhoffman/gatsby-plugin-mailchimp/blob/master/README.md#groups\n var fieldTransformed = field.substring(0, 6) ? field : field.toUpperCase();\n queryParams = queryParams.concat('&' + fieldTransformed + '=' + fields[field]);\n }\n }\n return queryParams;\n};\n\n/**\n * Subscribe an email address to a Mailchimp email list.\n * We use ES5 function syntax (instead of arrow) because we need `arguments.length`\n *\n * @param {String} email - required; the email address you want to subscribe\n * @param {Object} fields - optional; add'l info (columns) you want included w/ this subscriber\n * @param {String} endpointOverride - optional; if you want to override the default MC mailing list\n * that's listed in your gatsby-config, pass the list in here\n *\n * @return {Object} -\n * {\n * result: <String>(`success` || `error`)\n * msg: <String>(`Thank you for subscribing!` || `The email you entered is not valid.`),\n * }\n */\nvar addToMailchimp = function addToMailchimp(email, fields, endpointOverride) {\n var isEmailValid = (0, _emailValidator.validate)(email);\n var emailEncoded = encodeURIComponent(email);\n if (!isEmailValid) {\n return Promise.resolve({\n result: 'error',\n msg: 'The email you entered is not valid.',\n });\n }\n\n // eslint-disable-next-line no-undef\n var endpoint = __GATSBY_PLUGIN_MAILCHIMP_ADDRESS__;\n\n // The following tests for whether you passed in a `fields` object. If\n // there are only two params and the second is a string, then we can safely\n // assume the second param is a MC mailing list, and not a fields object.\n if (arguments.length < 3 && typeof fields === 'string') {\n endpoint = fields;\n } else if (typeof endpointOverride === 'string') {\n endpoint = endpointOverride;\n }\n\n // Generates MC endpoint for our jsonp request. We have to\n // change `/post` to `/post-json` otherwise, MC returns an error\n endpoint = endpoint.replace(/\\/post/g, '/post-json');\n var queryParams = '&EMAIL=' + emailEncoded + convertListFields(fields);\n var url = '' + endpoint + queryParams;\n\n return subscribeEmailToMailchimp(url);\n};\n\nexports.default = addToMailchimp;\n","\"use strict\";\n\nrequire(\"core-js/modules/es6.array.some\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nvar tester = /^[-!#$%&'*+\\/0-9=?A-Z^_a-z{|}~](\\.?[-!#$%&'*+\\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/; // Thanks to:\n// http://fightingforalostcause.net/misc/2006/compare-email-regex.php\n// http://thedailywtf.com/Articles/Validating_Email_Addresses.aspx\n// http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378\n\nexports.validate = function (email) {\n if (!email) return false;\n if (email.length > 254) return false;\n var valid = tester.test(email);\n if (!valid) return false; // Further checking of some things regex can't handle\n\n var parts = email.split(\"@\");\n if (parts[0].length > 64) return false;\n var domainParts = parts[1].split(\".\");\n if (domainParts.some(function (part) {\n return part.length > 63;\n })) return false;\n return true;\n};","require(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/es6.regexp.match\");\n\n/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome && 'undefined' != typeof chrome.storage ? chrome.storage.local : localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['lightseagreen', 'forestgreen', 'goldenrod', 'dodgerblue', 'darkorchid', 'crimson'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n } // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\n\nexports.formatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n args[0] = (useColors ? '%c' : '') + this.namespace + (useColors ? ' %c' : ' ') + args[0] + (useColors ? '%c ' : ' ') + '+' + exports.humanize(this.diff);\n if (!useColors) return;\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if ('%%' === match) return;\n index++;\n\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch (e) {}\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.debug;\n } catch (e) {} // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\n\nexports.enable(load());\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}","require(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0,\n i;\n\n for (i in namespace) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n\nfunction createDebug(namespace) {\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n var self = debug; // set `diff` timestamp\n\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr; // turn the `arguments` into a proper Array\n\n var args = new Array(arguments.length);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n } // apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val); // now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // apply env-specific formatting (colors, etc.)\n\n exports.formatArgs.call(self, args);\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace); // env-specific initialization logic for debug instances\n\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n exports.names = [];\n exports.skips = [];\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n/**\n * Disable debug output.\n *\n * @api public\n */\n\n\nfunction disable() {\n exports.enable('');\n}\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\nfunction enabled(name) {\n var i, len;\n\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n}\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}","import React, { useState } from 'react';\nimport addToMailchimp from 'gatsby-plugin-mailchimp';\nimport { rhythm } from '../../utils/typography';\n\nimport './subscribe-email.css';\n\nconst SubscribeEmail = ({\n title = 'Enjoyed this post? Receive the next one in your inbox!'\n}) => {\n const [ hasSubscribed, setHasSubscribed ] = useState(false);\n const [ hasError, setHasError ] = useState(false);\n const [ email, setEmail ] = useState('');\n\n const _handleSubmit = async (e) => {\n e.preventDefault();\n setHasError(false);\n const data = await addToMailchimp(email);\n console.log(data);\n if (data.result === 'error') {\n setHasError(true);\n } else if (data.result === 'success') {\n setHasSubscribed(true);\n }\n };\n\n return (\n <div\n className='subscribe-box'\n style={{\n padding: rhythm(2),\n marginBottom: rhythm(1),\n }}\n >\n <div style={{ fontWeight: 700, marginBottom: '10px' }}>{title}</div>\n <form\n onSubmit={_handleSubmit}\n style={{\n margin: 0\n }}\n >\n { !hasSubscribed && (\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <input\n type='email'\n value={email}\n onChange={e => setEmail(e.target.value)}\n placeholder='Your email address'\n style={{\n border: '1px solid var(--text-normal)',\n borderRight: 0,\n borderRadius: '5px 0 0 5px',\n padding: '5px 10px',\n fontSize: '14px',\n minWidth: '200px',\n background: 'var(--bg)',\n color: 'inherit',\n }}\n />\n <button\n type='submit'\n style={{\n border: '1px solid var(--text-normal)',\n borderLeft: 0,\n borderRadius: '0 5px 5px 0',\n padding: '5px 10px',\n background: 'var(--bg)',\n WebkitAppearance: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n color: 'inherit',\n }}\n >\n Subscribe\n </button>\n </div>\n ) }\n { hasSubscribed && (\n <div>\n Hooray! You're now subscribed! <span role='img' aria-label='tada'>🎉</span>\n </div>\n ) }\n { hasError && (\n <div\n style={{\n color: 'red',\n fontSize: '12px',\n textAlign: 'center',\n }}\n >\n There's an issue subscribing this email. Could you try another one? Or try later.\n </div>\n ) }\n </form>\n </div>\n );\n};\n\nexport default SubscribeEmail;\n"],"sourceRoot":""}