forked from koff75/myGatsbyBlog
-
Notifications
You must be signed in to change notification settings - Fork 0
/
component---packages-blog-core-src-templates-posts-js-7c2a56ae5f9c6b70fd86.js.map
1 lines (1 loc) · 116 KB
/
component---packages-blog-core-src-templates-posts-js-7c2a56ae5f9c6b70fd86.js.map
1
{"version":3,"sources":["webpack:https:///../node_modules/jsonp/index.js","webpack:https:///../packages/flow-ui/components/src/Sticky/Sticky.jsx","webpack:https:///../node_modules/process/browser.js","webpack:https:///../node_modules/debug/src/debug.js","webpack:https:///../node_modules/gatsby-plugin-mailchimp/index.js","webpack:https:///../node_modules/debug/src/browser.js","webpack:https:///../node_modules/email-validator/index.js","webpack:https:///../node_modules/@babel/runtime/regenerator/index.js","webpack:https:///../packages/blog/helpers/src/useBlogCategories.jsx","webpack:https:///../packages/blog/helpers/src/useBlogAuthors.jsx","webpack:https:///../packages/blog/helpers/src/useBlogTags.jsx","webpack:https:///../node_modules/debug/node_modules/ms/index.js","webpack:https:///../packages/flow-ui/components/src/IconButton/IconButton.jsx","webpack:https:///../packages/flow-ui/widgets/src/Categories/Categories.jsx","webpack:https:///../packages/flow-ui/components/src/CardList/CardList.Slider.Styles.js","webpack:https:///../packages/flow-ui/components/src/CardList/CardList.Slider.jsx","webpack:https:///../packages/flow-ui/components/src/CardList/CardList.jsx","webpack:https:///../packages/flow-ui/components/src/utils/normalizeSlug.js","webpack:https:///../packages/flow-ui/components/src/Pagination/Pagination.jsx","webpack:https:///../node_modules/regenerator-runtime/runtime.js","webpack:https:///../packages/flow-ui/widgets/src/Tags/Tags.jsx","webpack:https:///../packages/flow-ui/components/src/NewsletterForm/NewsletterForm.jsx","webpack:https:///../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:https:///../packages/common/helpers/src/useMailChimp.jsx","webpack:https:///../packages/flow-ui/widgets/src/NewsletterCompact/NewsletterCompact.jsx","webpack:https:///../packages/flow-ui/widgets/src/Social/Social.jsx","webpack:https:///../packages/flow-ui/widgets/src/HeroWide/HeroWide.jsx","webpack:https:///../packages/themes/gatsby-theme-flexiblog-personal/src/components/Hero/Hero.Content.jsx","webpack:https:///../packages/themes/gatsby-theme-flexiblog-personal/src/components/Hero/Hero.Photo.jsx","webpack:https:///../packages/themes/gatsby-theme-flexiblog-personal/src/components/Hero/Hero.jsx","webpack:https:///../packages/themes/gatsby-theme-flexiblog-personal/src/containers/Posts.jsx","webpack:https:///../packages/blog/core/src/templates/posts.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","Sticky","children","variant","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","e","call","this","currentQueue","queue","draining","queueIndex","cleanUpNextTick","length","concat","drainQueue","len","run","marker","runClearTimeout","Item","array","nextTick","args","Array","arguments","i","push","prototype","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","prevTime","createDebug","namespace","enabled","self","curr","Date","ms","diff","prev","coerce","unshift","index","match","format","formatter","formatters","val","splice","formatArgs","logFn","log","console","bind","useColors","color","hash","charCodeAt","colors","Math","abs","selectColor","init","stack","message","disable","enable","namespaces","save","names","skips","split","RegExp","substr","test","humanize","Object","defineProperty","value","obj","_jsonp","require","__esModule","default","_emailValidator","subscribeEmailToMailchimp","_ref","Promise","resolve","reject","err","convertListFields","fields","queryParams","field","hasOwnProperty","fieldTransformed","substring","toUpperCase","_default","email","endpointOverride","isEmailValid","validate","emailEncoded","result","msg","endpoint","__GATSBY_PLUGIN_MAILCHIMP_ADDRESS__","__GATSBY_PLUGIN_MAILCHIMP_TIMEOUT__","load","r","storage","DEBUG","Function","c","lastC","removeItem","type","documentElement","style","WebkitAppearance","firebug","exception","table","navigator","userAgent","toLowerCase","parseInt","$1","chrome","local","localStorage","localstorage","j","v","JSON","stringify","tester","parts","some","part","useBlogCategories","allArticleCategory","useStaticQuery","categoriesQuery","nodes","dedupe","node","slug","useBlogAuthors","allArticleAuthor","authorsQuery","useBlogTags","tagsQuery","allArticleTag","s","m","h","d","plural","n","floor","ceil","options","str","String","exec","parseFloat","parse","isNaN","long","round","fmtShort","styles","button","vertical","display","alignItems","textAlign","overflow","mb","p","pr","svg","verticalAlign","size","bg","horizontal","icon","transition","justifyContent","alignSelf","width","boxSizing","borderRadius","height","mx","pt","text","flex","whiteSpace","IconButton","Icon","iconPath","iconColor","to","as","Link","sx","defaultProps","number","undefined","flexWrap","overflowX","scrollBehavior","a","minWidth","Categories","categories","props","Section","aside","map","totalCount","buttonProps","key","FaArchive","slide","opacity","transform","transformOrigin","fade","left","controlBottom","top","bottom","ml","controlCenter","right","controlOver","Slider","loadable","CardListSlider","React","forwardRef","ref","columns","slidesToScroll","smoothAutoScroll","autoPlay","autoplaySpeed","dots","arrows","centerMode","centerPadding","controlPosition","beforeChange","context","useThemeUI","animationSettings","autoplay","cssEase","mobileSettings","swipeToSlide","responsiveSettings","theme","breakpoints","breakpoint","rSlidesToShow","rSlidesToScroll","settings","slidesToShow","speed","infinite","responsive","css","prevArrow","arrowPrev","nextArrow","arrowNext","loadableFallback","slice","fallback","rows","CardList","withTitleLink","limit","skip","distinct","slider","asNavFor","loading","rest","reducedNodes","reduceArray","titleLink","category","sectionKey","hashCode","join","cardListVariant","buildResponsiveVariant","changeSlide","current","slickPause","slickGoTo","cards","Card","onMouseOver","onFocus","wrapper","maxWidth","item","py","Pagination","currentPage","pageCount","hasPreviousPage","hasNextPage","basePath","prefixPath","normalizeSlug","pagingPath","prevLink","nextLink","runtime","Op","hasOwn","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","Context","_invoke","state","method","arg","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","done","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","then","unwrapped","error","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","constructor","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","toString","keys","object","reverse","pop","skipTempReset","charAt","stop","rootRecord","rval","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Tags","tags","NewsletterForm","handleSubmit","canSubmit","submitting","success","onSubmit","dangerouslySetInnerHTML","__html","placeholder","aria-label","required","disabled","asyncGeneratorStep","gen","_next","_throw","useMailChimp","useState","setResult","setSubmitting","preventDefault","FormData","get","addToMailchimp","NewsletterCompact","Social","social","useSiteMetadata","Navigation","items","attachSocialIcons","iconOnly","position","zIndex","pb","flexBasis","Overlay","childrenArray","Children","toArray","OverlayContent","filter","heroContent","author","occupation","specialty","pattern","file","heroQuery","Avatar","avatar","withPattern","patternStyles","Hero","location","pathname","pageContext","HeroWide","Posts","paginatedPosts","services","Seo","Divider","mailchimp","pageInfo","PostsPage"],"mappings":"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","file":"component---packages-blog-core-src-templates-posts-js-7c2a56ae5f9c6b70fd86.js","sourcesContent":["/**\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'\r\nimport { Container } from 'theme-ui'\r\n\r\nconst Sticky = ({ children }) => (\r\n <Container variant='sticky'>{children}</Container>\r\n)\r\n\r\nexport default Sticky\r\n","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\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}","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nexports['default'] = void 0;\n\nvar _jsonp = _interopRequireDefault(require('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 */\nvar subscribeEmailToMailchimp = function subscribeEmailToMailchimp(_ref) {\n var url = _ref.url,\n timeout = _ref.timeout;\n return new Promise(function(resolve, reject) {\n return (0, _jsonp['default'])(\n url,\n {\n param: 'c',\n timeout: timeout,\n },\n 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 */\n\nvar convertListFields = function convertListFields(fields) {\n var queryParams = '';\n\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) === 'group[' ? field : field.toUpperCase();\n queryParams = queryParams.concat(\n '&'.concat(fieldTransformed, '=').concat(fields[field]),\n );\n }\n }\n\n return queryParams;\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 */\n\nvar addToMailchimp = function addToMailchimp(email, fields, endpointOverride) {\n var isEmailValid = (0, _emailValidator.validate)(email);\n var emailEncoded = encodeURIComponent(email);\n\n if (!isEmailValid) {\n return Promise.resolve({\n result: 'error',\n msg: 'The email you entered is not valid.',\n });\n }\n\n var endpoint = __GATSBY_PLUGIN_MAILCHIMP_ADDRESS__; // eslint-disable-line no-undef\n\n var timeout = __GATSBY_PLUGIN_MAILCHIMP_TIMEOUT__; // eslint-disable-line no-undef\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\n if (arguments.length < 3 && typeof fields === 'string') {\n endpoint = fields;\n } else if (typeof endpointOverride === 'string') {\n endpoint = endpointOverride;\n } // Generates MC endpoint for our jsonp request. We have to\n // change `/post` to `/post-json` otherwise, MC returns an error\n\n endpoint = endpoint.replace(/\\/post/g, '/post-json');\n var queryParams = '&EMAIL='.concat(emailEncoded).concat(convertListFields(fields));\n var url = ''.concat(endpoint).concat(queryParams);\n return subscribeEmailToMailchimp({\n url: url,\n timeout: timeout,\n });\n};\n\nvar _default = addToMailchimp;\nexports['default'] = _default;\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? https://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? https://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}","\"use strict\";\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// https://fightingforalostcause.net/misc/2006/compare-email-regex.php\n// https://thedailywtf.com/Articles/Validating_Email_Addresses.aspx\n// https://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};","module.exports = require(\"regenerator-runtime\");\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport dedupe from 'dedupe'\r\n\r\nexport const useBlogCategories = () => {\r\n const { allArticleCategory } = useStaticQuery(categoriesQuery)\r\n return allArticleCategory.nodes\r\n ? dedupe(allArticleCategory.nodes, node => node.slug)\r\n : null\r\n}\r\n\r\nconst categoriesQuery = graphql`\r\n query allArticleCategoryQuery {\r\n allArticleCategory {\r\n nodes {\r\n ...ArticleCategory\r\n }\r\n }\r\n }\r\n`\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport dedupe from 'dedupe'\r\n\r\nexport const useBlogAuthors = () => {\r\n const { allArticleAuthor } = useStaticQuery(authorsQuery)\r\n return allArticleAuthor.nodes\r\n ? dedupe(allArticleAuthor.nodes, node => node.slug)\r\n : null\r\n}\r\n\r\nconst authorsQuery = graphql`\r\n query allArticleAuthorQuery {\r\n allArticleAuthor {\r\n nodes {\r\n ...ArticleAuthor\r\n }\r\n }\r\n }\r\n`\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\n\r\nexport const useBlogTags = () => {\r\n const { allArticleTag } = useStaticQuery(tagsQuery)\r\n return allArticleTag.nodes || []\r\n}\r\n\r\nconst tagsQuery = graphql`\r\n query allArticleTagQuery {\r\n allArticleTag {\r\n nodes {\r\n ...ArticleTag\r\n }\r\n }\r\n }\r\n`\r\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}","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Link } from 'gatsby'\r\nimport SVG from 'react-inlinesvg'\r\nimport { Button, Box, Heading } from 'theme-ui'\r\n\r\nconst styles = {\r\n button: {\r\n vertical: {\r\n variant: `cards.primary`,\r\n display: `flex`,\r\n alignItems: `center`,\r\n textAlign: `initial`,\r\n overflow: `hidden`,\r\n mb: 3,\r\n p: 0,\r\n pr: 2,\r\n svg: {\r\n color: `omegaDark`,\r\n verticalAlign: `middle`,\r\n size: `icon.xs`\r\n },\r\n ':hover': {\r\n svg: {\r\n color: `white`\r\n },\r\n 'div:first-of-type': {\r\n bg: `alpha`\r\n }\r\n }\r\n },\r\n horizontal: {\r\n variant: `cards.interactive`,\r\n p: 0,\r\n svg: {\r\n color: `alpha`,\r\n size: `icon.sm`\r\n },\r\n ':hover': {\r\n svg: {\r\n color: `omegaDark`\r\n }\r\n }\r\n }\r\n },\r\n icon: {\r\n vertical: {\r\n display: [`flex`, `none`, `flex`],\r\n transition: `all 250ms ease`,\r\n alignItems: `center`,\r\n justifyContent: `center`,\r\n alignSelf: `stretch`,\r\n bg: `omegaLight`,\r\n width: 70\r\n },\r\n horizontal: {\r\n display: [`block`, `none`, `block`],\r\n boxSizing: `content-box`,\r\n transition: `all 250ms ease`,\r\n borderRadius: `bottom`,\r\n width: `1/3`,\r\n height: `icon.sm`,\r\n mx: `auto`,\r\n pt: 3\r\n }\r\n },\r\n text: {\r\n flex: `auto`,\r\n color: `omegaDark`,\r\n whiteSpace: `nowrap`,\r\n p: 3,\r\n m: 0\r\n }\r\n}\r\n\r\nexport const IconButton = ({\r\n variant,\r\n name,\r\n Icon,\r\n iconPath,\r\n iconColor,\r\n to\r\n}) => (\r\n <Button variant='none' as={to && Link} to={to} sx={styles.button[variant]}>\r\n {(Icon || iconPath) && (\r\n <Box sx={styles.icon[variant]}>\r\n {iconPath && <SVG src={iconPath} />}\r\n {Icon && <Icon color={iconColor} />}\r\n </Box>\r\n )}\r\n <Heading variant='h4' as='span' sx={styles.text}>\r\n {name}\r\n </Heading>\r\n </Button>\r\n)\r\n\r\nexport default IconButton\r\n\r\nIconButton.defaultProps = {\r\n variant: 'horizontal',\r\n number: undefined\r\n}\r\n\r\nIconButton.propTypes = {\r\n variant: PropTypes.oneOf(['horizontal', 'vertical']),\r\n name: PropTypes.string,\r\n number: PropTypes.number,\r\n Icon: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\r\n iconPath: PropTypes.string,\r\n to: PropTypes.string\r\n}\r\n","import React from 'react'\r\nimport { Box } from 'theme-ui'\r\nimport { FaArchive } from 'react-icons/fa'\r\nimport IconButton from '@components/IconButton'\r\nimport Section from '@components/Section'\r\n\r\nconst styles = {\r\n horizontal: {\r\n display: `flex`,\r\n justifyContent: [`flex-start`, `space-evenly`],\r\n flexWrap: `nowrap`,\r\n overflowX: `auto`,\r\n width: `auto`,\r\n scrollBehavior: `smooth`,\r\n m: -2,\r\n a: {\r\n flex: 1,\r\n minWidth: [`1/3`, `auto`],\r\n m: [3, 2]\r\n }\r\n }\r\n}\r\n\r\nconst Categories = ({ variant, categories, ...props }) => (\r\n <Section aside={variant === 'vertical'} title='Topics' {...props}>\r\n <Box sx={styles[variant]}>\r\n {categories &&\r\n categories.map(({ id, name, slug, totalCount, icon }) => {\r\n const buttonProps = {\r\n key: id,\r\n name,\r\n number: totalCount,\r\n to: slug,\r\n iconPath: icon,\r\n Icon: !icon && FaArchive,\r\n variant\r\n }\r\n\r\n return totalCount !== 0 && <IconButton {...buttonProps} />\r\n })}\r\n </Box>\r\n </Section>\r\n)\r\n\r\nexport default Categories\r\n\r\nCategories.defaultProps = {\r\n variant: 'vertical'\r\n}\r\n","export default {\r\n slide: {\r\n width: `full`,\r\n '.slick-slide': {\r\n transition: `all 600ms ease`,\r\n opacity: 1,\r\n transform: [null, `scale(1)`],\r\n transformOrigin: `left`\r\n },\r\n '.slick-slide.slick-active + :not(.slick-active)': {\r\n opacity: [null, 0],\r\n transform: [null, `scale(0.7)`]\r\n }\r\n },\r\n fade: {\r\n width: `full`,\r\n '.slick-slide:not(.slick-active)': {\r\n left: `-9999px !important` //fix overlapping slides in fade mode\r\n },\r\n '.slick-track': {\r\n display: `flex`,\r\n alignItems: `center`\r\n }\r\n },\r\n controlBottom: {\r\n '.slick-prev, .slick-next': {\r\n top: `auto`,\r\n bottom: 3,\r\n left: `50%`,\r\n transform: `translate(-125%, 0)`\r\n },\r\n '.slick-next': {\r\n ml: 5\r\n },\r\n '.slick-dots': {\r\n textAlign: `center`,\r\n width: [`full`, `auto`],\r\n top: [`100%`, `auto`],\r\n bottom: 0\r\n },\r\n '.slick-dots li': {\r\n verticalAlign: `middle`\r\n }\r\n },\r\n controlCenter: {\r\n '.slick-prev, .slick-next': {\r\n top: `50%`,\r\n left: `50%`,\r\n transform: `translate(-125%, -50%)`\r\n },\r\n '.slick-next': {\r\n ml: 5\r\n },\r\n '.slick-dots': {\r\n textAlign: `center`,\r\n width: [`full`, `auto`],\r\n top: [`100%`, `auto`],\r\n bottom: 4,\r\n right: 4\r\n }\r\n },\r\n controlOver: {\r\n width: `full`,\r\n '.slick-prev, .slick-next': {\r\n top: `auto`,\r\n bottom: [-2, 3],\r\n left: [4, 6]\r\n },\r\n '.slick-next': {\r\n ml: 5\r\n },\r\n '.slick-dots': {\r\n display: [`none`, `block`],\r\n textAlign: `center`,\r\n width: `auto`,\r\n top: 5,\r\n left: 4,\r\n p: 0,\r\n ml: 3\r\n },\r\n '.slick-dots li': {\r\n display: [`inline-block`, `block`]\r\n },\r\n '.slick-dots li.slick-active button': {\r\n bg: `alpha`\r\n }\r\n }\r\n}\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { IconButton, css, useThemeUI } from 'theme-ui'\r\nimport { FaChevronLeft, FaChevronRight } from 'react-icons/fa'\r\nimport 'slick-carousel/slick/slick.css'\r\nimport './CardList.Slider.css'\r\nimport styles from './CardList.Slider.Styles'\r\n\r\nimport loadable from '@loadable/component'\r\nconst Slider = loadable(() => import('react-slick'))\r\n\r\nconst CardListSlider = React.forwardRef((props, ref) => {\r\n const {\r\n columns,\r\n slidesToScroll,\r\n smoothAutoScroll,\r\n autoPlay,\r\n autoplaySpeed,\r\n fade,\r\n dots,\r\n arrows,\r\n centerMode,\r\n centerPadding,\r\n controlPosition,\r\n beforeChange,\r\n children\r\n } = props\r\n\r\n const context = useThemeUI()\r\n\r\n const animationSettings = {\r\n slidesToScroll: 1,\r\n autoplay: true,\r\n cssEase: 'linear'\r\n }\r\n\r\n const mobileSettings = {\r\n centerMode: fade ? false : true,\r\n centerPadding: '40px',\r\n swipeToSlide: true,\r\n arrows: false,\r\n dots: dots && fade ? true : false\r\n }\r\n\r\n const responsiveSettings = context.theme.breakpoints.map(\r\n (breakpoint, index) => {\r\n const rSlidesToShow =\r\n columns[index >= columns.length ? columns.length - 1 : index]\r\n const rSlidesToScroll =\r\n slidesToScroll[\r\n index >= slidesToScroll.length ? slidesToScroll.length - 1 : index\r\n ]\r\n return {\r\n breakpoint: parseInt(breakpoint),\r\n settings: {\r\n slidesToShow: rSlidesToShow,\r\n slidesToScroll: rSlidesToScroll,\r\n ...(index === 0 ? mobileSettings : {})\r\n }\r\n }\r\n }\r\n )\r\n let settings = {\r\n ref,\r\n beforeChange,\r\n slidesToShow: columns[columns.length - 1],\r\n slidesToScroll: slidesToScroll[slidesToScroll.length - 1],\r\n speed: 800,\r\n dots,\r\n arrows,\r\n centerMode,\r\n centerPadding,\r\n infinite: true,\r\n cssEase: fade ? 'ease-out' : 'cubic-bezier(0.23, 1, 0.32, 1)',\r\n fade,\r\n responsive: responsiveSettings,\r\n css: css({\r\n ...(fade ? styles.fade : styles.slide),\r\n ...(controlPosition === 'bottom' && styles.controlBottom),\r\n ...(controlPosition === 'center' && styles.controlCenter),\r\n ...(controlPosition === 'over' && styles.controlOver)\r\n }),\r\n prevArrow: (\r\n <IconButton sx={styles.arrowPrev}>\r\n <FaChevronLeft />\r\n </IconButton>\r\n ),\r\n nextArrow: (\r\n <IconButton sx={styles.arrowNext}>\r\n <FaChevronRight />\r\n </IconButton>\r\n )\r\n }\r\n\r\n if (smoothAutoScroll) {\r\n settings = {\r\n ...settings,\r\n ...animationSettings,\r\n speed: 10000,\r\n autoplaySpeed: 0,\r\n arrows: false,\r\n dots: false\r\n }\r\n }\r\n\r\n if (!smoothAutoScroll && autoPlay) {\r\n settings = {\r\n ...settings,\r\n ...animationSettings,\r\n speed: 300,\r\n autoplaySpeed\r\n }\r\n }\r\n\r\n const loadableFallback = children.slice(0, columns[columns.length - 1])\r\n\r\n return (\r\n <Slider {...settings} fallback={loadableFallback}>\r\n {children}\r\n </Slider>\r\n )\r\n})\r\n\r\nexport default CardListSlider\r\n\r\nCardListSlider.defaultProps = {\r\n fade: false,\r\n dots: true,\r\n arrows: true,\r\n centerMode: false,\r\n centerPadding: '50px',\r\n autoPlay: false,\r\n autoplaySpeed: 3000,\r\n smoothAutoScroll: false,\r\n slidesToScroll: [1],\r\n rows: 1,\r\n controlPosition: 'sides'\r\n}\r\n\r\nCardListSlider.propTypes = {\r\n fade: PropTypes.bool,\r\n dots: PropTypes.bool,\r\n arrows: PropTypes.bool,\r\n centerMode: PropTypes.bool,\r\n centerPadding: PropTypes.string,\r\n autoPlay: PropTypes.bool,\r\n autoplaySpeed: PropTypes.number,\r\n smoothAutoScroll: PropTypes.bool,\r\n columns: PropTypes.arrayOf(PropTypes.number),\r\n slidesToScroll: PropTypes.arrayOf(PropTypes.number),\r\n controlPosition: PropTypes.oneOf(['bottom', 'over', 'sides', 'center'])\r\n}\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Box } from 'theme-ui'\r\nimport { reduceArray, hashCode, buildResponsiveVariant } from '../utils/'\r\nimport Section from '@components/Section'\r\nimport CardListSlider from './CardList.Slider'\r\nimport Card from '@components/Card'\r\n\r\nconst SLIDER_VARIANT_GROUP = 'lists.cards.slider'\r\nconst FIXED_VARIANT_GROUP = 'lists.cards.fixed'\r\n\r\nconst CardList = React.forwardRef((props, ref) => {\r\n const {\r\n nodes,\r\n variant,\r\n title,\r\n withTitleLink,\r\n limit,\r\n skip,\r\n distinct,\r\n slider,\r\n aside,\r\n asNavFor,\r\n loading,\r\n ...rest\r\n } = props\r\n\r\n const reducedNodes = reduceArray(nodes, { distinct, limit, skip })\r\n if (!reducedNodes || !reducedNodes.length) return null\r\n\r\n //Section title link for viewing more posts from same category\r\n const titleLink = withTitleLink\r\n ? reducedNodes[0].category && reducedNodes[0].category.slug\r\n : ''\r\n\r\n //Unique key for section\r\n const sectionKey =\r\n title && `${hashCode(reducedNodes.map(node => node.id).join())}`\r\n\r\n //Build responsive variant for card list\r\n const cardListVariant = buildResponsiveVariant(\r\n slider ? SLIDER_VARIANT_GROUP : FIXED_VARIANT_GROUP,\r\n variant\r\n )\r\n\r\n const changeSlide = index => {\r\n if (asNavFor && asNavFor.current) {\r\n asNavFor.current.slickPause()\r\n asNavFor.current.slickGoTo(index)\r\n }\r\n }\r\n\r\n //Array of cards\r\n const cards = reducedNodes.map((node, index) => (\r\n <Card\r\n key={node.id}\r\n variant={variant}\r\n onMouseOver={() => changeSlide(index)}\r\n onFocus={() => changeSlide(index)}\r\n //In sliders with fade effect apply loading to the first card only\r\n loading={props.fade ? (index === 0 ? loading : undefined) : loading}\r\n {...node}\r\n {...rest}\r\n />\r\n ))\r\n\r\n //Cards List (Fixed or Slider)\r\n const CardList = () => (\r\n <Box sx={{ variant: cardListVariant }}>\r\n {slider ? (\r\n <CardListSlider\r\n ref={ref}\r\n // beforeChange={index => changeSlide(index)}\r\n {...rest}\r\n >\r\n {cards}\r\n </CardListSlider>\r\n ) : (\r\n cards\r\n )}\r\n </Box>\r\n )\r\n\r\n return title ? (\r\n <Section title={title} titleLink={titleLink} key={sectionKey} aside={aside}>\r\n <CardList />\r\n </Section>\r\n ) : (\r\n <CardList />\r\n )\r\n})\r\n\r\nexport default CardList\r\n\r\nCardList.defaultProps = {\r\n variant: 'vertical',\r\n columns: [1],\r\n aside: false\r\n}\r\n\r\nCardList.propTypes = {\r\n variant: PropTypes.oneOfType([\r\n PropTypes.array,\r\n PropTypes.oneOf([\r\n 'horizontal',\r\n 'horizontal-aside',\r\n 'horizontal-md',\r\n 'horizontal-lg',\r\n 'horizontal-cover',\r\n 'horizontal-cover-hero',\r\n 'horizontal-cover-wide',\r\n 'horizontal-hero',\r\n 'vertical-cover',\r\n 'vertical',\r\n 'search'\r\n ])\r\n ]),\r\n loading: PropTypes.oneOf(['lazy', 'auto', 'eager']),\r\n columns: PropTypes.array,\r\n title: PropTypes.string,\r\n withTitleLink: PropTypes.bool,\r\n nodes: PropTypes.array,\r\n distinct: PropTypes.bool,\r\n limit: PropTypes.number,\r\n skip: PropTypes.number,\r\n aside: PropTypes.bool\r\n}\r\n","// normalize use of trailing slash\r\nexport default slug => slug.replace(/\\/*$/, `/`)\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Link } from 'gatsby'\r\nimport { Button, Flex, Box } from 'theme-ui'\r\nimport { FaChevronLeft, FaChevronRight } from 'react-icons/fa'\r\nimport normalizeSlug from '../utils/normalizeSlug'\r\n\r\nconst pagingParam = 'page'\r\n\r\nconst styles = {\r\n wrapper: {\r\n justifyContent: `space-between`,\r\n alignItems: `center`,\r\n textAlign: `center`,\r\n borderRadius: `full`,\r\n bg: `contentBg`,\r\n maxWidth: [`none`, 500],\r\n mx: `auto`,\r\n p: 1\r\n },\r\n item: {\r\n width: `1/3`\r\n },\r\n number: {\r\n py: 2\r\n },\r\n button: {\r\n minWidth: `full`\r\n }\r\n}\r\n\r\nconst Pagination = ({\r\n currentPage,\r\n pageCount,\r\n hasPreviousPage,\r\n hasNextPage,\r\n basePath = '',\r\n slug = ''\r\n}) => {\r\n if (!hasNextPage && !hasPreviousPage) return ''\r\n let prefixPath = normalizeSlug(basePath + slug)\r\n let pagingPath = normalizeSlug(prefixPath + pagingParam)\r\n\r\n const prevLink =\r\n currentPage >= 3 ? `${pagingPath}${currentPage - 1}` : prefixPath\r\n const nextLink = `${pagingPath}${currentPage + 1}`\r\n\r\n return (\r\n <Flex sx={styles.wrapper}>\r\n <Box sx={styles.item}>\r\n {hasPreviousPage && (\r\n <Button variant='mute' as={Link} to={prevLink} sx={styles.button}>\r\n <FaChevronLeft />\r\n Previous\r\n </Button>\r\n )}\r\n </Box>\r\n <Box sx={{ ...styles.item, ...styles.number }}>\r\n Page <strong>{currentPage}</strong> of <strong>{pageCount}</strong>\r\n </Box>\r\n <Box sx={styles.item}>\r\n {hasNextPage && (\r\n <Button variant='dark' as={Link} to={nextLink} sx={styles.button}>\r\n Next\r\n <FaChevronRight />\r\n </Button>\r\n )}\r\n </Box>\r\n </Flex>\r\n )\r\n}\r\n\r\nexport default Pagination\r\n\r\nPagination.propTypes = {\r\n currentPage: PropTypes.number,\r\n pageCount: PropTypes.number,\r\n hasPreviousPage: PropTypes.bool,\r\n hasNextPage: PropTypes.bool,\r\n slug: PropTypes.string,\r\n pagingParam: PropTypes.string\r\n}\r\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","import React from 'react'\r\nimport { Link } from 'gatsby'\r\nimport { Card, Badge, Box } from 'theme-ui'\r\nimport Section from '@components/Section'\r\n\r\nconst Tags = ({ tags, ...props }) => (\r\n <Section aside title='Tags' {...props}>\r\n <Card variant='paper'>\r\n <Box variant='lists.badges'>\r\n {tags &&\r\n tags.map(({ id, name, slug }) => (\r\n <Badge variant='tag' key={id} as={Link} to={slug}>\r\n {name}\r\n </Badge>\r\n ))}\r\n </Box>\r\n </Card>\r\n </Section>\r\n)\r\n\r\nexport default Tags\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Box, Input, Button, Message, Spinner } from 'theme-ui'\r\n\r\nconst styles = {\r\n msg: {\r\n mb: 0\r\n },\r\n button: {\r\n display: `block`,\r\n mx: `auto`\r\n }\r\n}\r\n\r\nconst NewsletterForm = ({\r\n handleSubmit,\r\n canSubmit,\r\n submitting,\r\n message,\r\n success\r\n}) => (\r\n <form onSubmit={handleSubmit}>\r\n {message && (\r\n <Message\r\n variant={success ? 'success' : 'error'}\r\n sx={styles.msg}\r\n dangerouslySetInnerHTML={{ __html: message }}\r\n />\r\n )}\r\n {canSubmit && (\r\n <>\r\n <Box variant='forms.row'>\r\n <Input\r\n name='email'\r\n type='email'\r\n placeholder='Email Address'\r\n aria-label='Email Address'\r\n required\r\n />\r\n </Box>\r\n <Button\r\n type='submit'\r\n variant={success || submitting ? 'disabled' : 'primary'}\r\n disabled={success || submitting}\r\n sx={styles.button}\r\n >\r\n Subscribe {submitting && <Spinner size='20' />}\r\n </Button>\r\n </>\r\n )}\r\n </form>\r\n)\r\n\r\nexport default NewsletterForm\r\n\r\nNewsletterForm.propTypes = {\r\n handleSubmit: PropTypes.func,\r\n canSubmit: PropTypes.bool,\r\n submitting: PropTypes.bool,\r\n message: PropTypes.string,\r\n success: PropTypes.bool\r\n}\r\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import { useState } from 'react'\r\nimport addToMailchimp from 'gatsby-plugin-mailchimp'\r\n\r\nconst useMailChimp = () => {\r\n const [result, setResult] = useState()\r\n const [submitting, setSubmitting] = useState(false)\r\n\r\n const handleSubmit = async e => {\r\n e.preventDefault()\r\n setSubmitting(true)\r\n const data = new FormData(e.target)\r\n const email = data.get('email')\r\n const result = await addToMailchimp(email)\r\n setResult(result)\r\n setSubmitting(false)\r\n }\r\n\r\n const success = result && result.result === 'success'\r\n const error = result && result.result !== 'success'\r\n const canSubmit = !result || error\r\n const message = result && result.msg\r\n\r\n return {\r\n handleSubmit,\r\n canSubmit,\r\n submitting,\r\n message,\r\n success,\r\n error\r\n }\r\n}\r\n\r\nexport default useMailChimp\r\n","import React from 'react'\r\nimport { Card, Text } from 'theme-ui'\r\nimport NewsletterForm from '@components/NewsletterForm'\r\nimport Section from '@components/Section'\r\nimport useMailChimp from '@helpers/useMailChimp'\r\n\r\nconst NewsletterCompact = props => {\r\n const {\r\n handleSubmit,\r\n canSubmit,\r\n submitting,\r\n message,\r\n success\r\n } = useMailChimp()\r\n\r\n return (\r\n <Section aside title='Newsletter' {...props}>\r\n <Card variant='paper'>\r\n <Text variant='p'>\r\n Make sure to subscribe to our newsletter and be the first to know the\r\n news.\r\n </Text>\r\n <NewsletterForm\r\n {...{ handleSubmit, canSubmit, submitting, message, success }}\r\n />\r\n </Card>\r\n </Section>\r\n )\r\n}\r\n\r\nexport default NewsletterCompact\r\n","import React from 'react'\r\nimport { Card, Text } from 'theme-ui'\r\nimport Section from '@components/Section'\r\nimport Navigation from '@components/Navigation'\r\nimport useSiteMetadata from '@helpers/useSiteMetadata'\r\nimport attachSocialIcons from '@helpers/attachSocialIcons'\r\n\r\nconst Social = () => {\r\n const { social } = useSiteMetadata()\r\n\r\n return (\r\n <Section aside title=\"Check this out\">\r\n <Card variant='paper'>\r\n <Text variant='p'>\r\n Other website I've made: https://rendrelajustice.com\r\n </Text>\r\n <Text variant='p'>\r\n Want to find out how I can solve problems specific to your business?\r\n Let's talk.\r\n </Text>\r\n <Navigation items={attachSocialIcons(social)} iconOnly />\r\n </Card>\r\n </Section>\r\n )\r\n}\r\n\r\nexport default Social\r\n","import React, { Children } from 'react'\r\nimport { Flex, Box } from 'theme-ui'\r\n\r\nconst styles = {\r\n wrapper: {\r\n alignItems: `center`,\r\n justifyContent: `space-between`,\r\n position: `relative`,\r\n zIndex: 2,\r\n pt: 4,\r\n pb: 5\r\n },\r\n leftColumn: {\r\n flexBasis: `2/3`,\r\n flex: 1,\r\n textAlign: [`center`, `center`, `left`]\r\n },\r\n rightColumn: {\r\n display: [`none`, `none`, `block`],\r\n flexBasis: `1/2`\r\n }\r\n}\r\n\r\nconst LeftColumn = ({ children, sx, ...props }) => (\r\n <Box sx={{ ...styles.leftColumn, ...sx }} {...props}>\r\n {children}\r\n </Box>\r\n)\r\n\r\nconst RightColumn = ({ children, sx, ...props }) => (\r\n <Box sx={{ ...styles.rightColumn, ...sx }} {...props}>\r\n {children}\r\n </Box>\r\n)\r\n\r\nconst Overlay = ({ children }) => children\r\n\r\nconst Wrapper = ({ children, ...props }) => {\r\n const childrenArray = Children.toArray(children)\r\n\r\n const OverlayContent = childrenArray.filter(\r\n ({ type }) =>\r\n type.displayName === Overlay.name || type.name === Overlay.name\r\n )\r\n\r\n const heroContent = childrenArray.filter(\r\n ({ type }) =>\r\n type.displayName !== Overlay.name && type.name !== Overlay.name\r\n )\r\n return (\r\n <>\r\n <Flex sx={{ ...styles.wrapper, ...props.sx }}>{heroContent}</Flex>\r\n {OverlayContent}\r\n </>\r\n )\r\n}\r\n\r\nexport default {\r\n Wrapper,\r\n LeftColumn,\r\n RightColumn,\r\n Overlay\r\n}\r\n","import React from 'react'\r\nimport { Link } from 'gatsby'\r\nimport { Button, Box, Heading, Text } from 'theme-ui'\r\n\r\n/**\r\n * Shadow me to add your own content\r\n */\r\n\r\nconst styles = {\r\n author: {\r\n display: `inline-block`,\r\n color: `alpha`\r\n },\r\n occupation: {\r\n mb: 4\r\n },\r\n specialty: {\r\n color: `text`,\r\n mb: 4\r\n }\r\n}\r\n\r\nexport default () => (\r\n <>\r\n <Heading variant='h1'>\r\n Welcome, I'm <Text sx={styles.author}>Nicolas</Text>.\r\n </Heading>\r\n <Heading variant='h1' sx={styles.occupation}>\r\n my blog talks about\r\n </Heading>\r\n <Heading variant='h3' sx={styles.specialty}>\r\n Geopolitic, books I've read, computer science and cybersecurity...\r\n More articles coming soon...\r\n </Heading>\r\n <Box variant='buttons.group'>\r\n <Button as={Link} to='/contact'>\r\n Contact Me\r\n </Button>\r\n <Button variant='white' as={Link} to='/about'>\r\n About Me\r\n </Button>\r\n </Box>\r\n </>\r\n)\r\n","import React from 'react'\r\nimport { useStaticQuery, graphql } from 'gatsby'\r\nimport { Box } from 'theme-ui'\r\nimport Avatar from '@components/Avatar'\r\n\r\nconst styles = {\r\n wrapper: {\r\n display: [`none`, `none`, `block`],\r\n position: `relative`,\r\n textAlign: `center`\r\n },\r\n pattern: {\r\n height: `1/2`,\r\n transform: `translate(0, 50%)`\r\n }\r\n}\r\n\r\nexport default () => {\r\n const data = useStaticQuery(heroQuery)\r\n const { file } = data\r\n\r\n return (\r\n <Box sx={styles.wrapper}>\r\n <Avatar avatar={file.avatar} withPattern patternStyles={styles.pattern} />\r\n </Box>\r\n )\r\n}\r\n\r\nconst heroQuery = graphql`\r\n query HeroQuery {\r\n file(absolutePath: { regex: \"/hero.(jpeg|jpg|gif|png)/\" }) {\r\n avatar: childImageSharp {\r\n regular: fluid(maxWidth: 320, maxHeight: 320, cropFocus: NORTH) {\r\n ...GatsbyImageSharpFluid_noBase64\r\n width: presentationWidth\r\n height: presentationWidth\r\n }\r\n }\r\n }\r\n }\r\n`\r\n","import React from 'react'\r\nimport HeroWide from '@widgets/HeroWide'\r\nimport Content from './Hero.Content'\r\nimport Photo from './Hero.Photo'\r\n\r\nconst Hero = props => {\r\n const {\r\n location: { pathname },\r\n pageContext: { basePath }\r\n } = props\r\n\r\n if (pathname !== basePath) return null\r\n\r\n return (\r\n <HeroWide.Wrapper>\r\n <HeroWide.LeftColumn>\r\n <Content />\r\n </HeroWide.LeftColumn>\r\n <HeroWide.RightColumn>\r\n <Photo />\r\n </HeroWide.RightColumn>\r\n </HeroWide.Wrapper>\r\n )\r\n}\r\n\r\nexport default Hero\r\n","import React from 'react'\r\nimport { Stack, Hero, Main, Sidebar, PreFooter } from '@layout'\r\nimport CardList from '@components/CardList'\r\nimport Sticky from '@components/Sticky'\r\nimport Divider from '@components/Divider'\r\nimport Pagination from '@components/Pagination'\r\nimport Seo from '@widgets/Seo'\r\nimport Categories from '@widgets/Categories'\r\nimport Tags from '@widgets/Tags'\r\nimport NewsletterCompact from '@widgets/NewsletterCompact'\r\nimport Social from '@widgets/Social'\r\nimport HeroComponent from '../components/Hero/Hero'\r\nimport { useBlogTags, useBlogCategories } from '@helpers-blog'\r\n\r\nconst Posts = ({ data: { paginatedPosts = {} }, ...props }) => {\r\n const { pageContext: { services = {}, basePath } = {} } = props\r\n const tags = useBlogTags()\r\n const categories = useBlogCategories()\r\n\r\n return (\r\n <>\r\n <Seo title='Home' />\r\n <Hero sx={{ bg: `contentBg` }}>\r\n <HeroComponent {...props} />\r\n </Hero>\r\n <Divider />\r\n <Stack>\r\n <Main>\r\n <CardList\r\n variant={['horizontal-md', 'horizontal']}\r\n title='Recently Published'\r\n nodes={paginatedPosts.nodes}\r\n columns={[1]}\r\n />\r\n </Main>\r\n <Sidebar>\r\n <Categories categories={categories} />\r\n <Divider />\r\n <Tags tags={tags} />\r\n <Divider />\r\n <Social />\r\n <Sticky>\r\n {services.mailchimp && (\r\n <>\r\n <Divider />\r\n <NewsletterCompact />\r\n </>\r\n )}\r\n </Sticky>\r\n </Sidebar>\r\n </Stack>\r\n <Divider />\r\n <PreFooter>\r\n <Pagination {...paginatedPosts.pageInfo} basePath={basePath} />\r\n </PreFooter>\r\n </>\r\n )\r\n}\r\n\r\nexport default Posts\r\n","import { graphql } from 'gatsby'\r\nimport PostsPage from '../containers/Posts'\r\n\r\nexport default PostsPage\r\n\r\nexport const pageQuery = graphql`\r\n query PostsPageQuery($paginatePostsPage: Boolean!, $skip: Int, $limit: Int) {\r\n featuredPosts: allArticle(\r\n filter: { private: { ne: true }, featured: { eq: true } }\r\n sort: { fields: [date], order: DESC }\r\n limit: 10\r\n ) {\r\n nodes {\r\n ...ArticlePreview\r\n ...ArticleThumbnailFeatured\r\n }\r\n }\r\n\r\n recentPosts: allArticle(\r\n filter: { private: { ne: true } }\r\n sort: { fields: [date], order: DESC }\r\n limit: 6\r\n ) {\r\n nodes {\r\n ...ArticlePreview\r\n ...ArticleThumbnailRegular\r\n }\r\n }\r\n\r\n posts: allArticle(\r\n filter: { private: { ne: true } }\r\n sort: { fields: [date], order: DESC }\r\n limit: 1000\r\n ) @skip(if: $paginatePostsPage) {\r\n group(field: category___name, limit: 10) {\r\n categoryName: fieldValue\r\n nodes {\r\n ...ArticlePreview\r\n ...ArticleThumbnailRegular\r\n }\r\n }\r\n }\r\n\r\n paginatedPosts: allArticle(\r\n filter: { private: { ne: true } }\r\n sort: { fields: [date], order: DESC }\r\n limit: $limit\r\n skip: $skip\r\n ) @include(if: $paginatePostsPage) {\r\n nodes {\r\n ...ArticlePreview\r\n ...ArticleThumbnailRegular\r\n }\r\n ...ArticlePagination\r\n }\r\n }\r\n`\r\n"],"sourceRoot":""}