{"version":3,"file":"app-da36e32f6f59882e5c78.js","mappings":"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","sources":["webpack://gatsby-starter-blog/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://gatsby-starter-blog/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://gatsby-starter-blog/./node_modules/@mdx-js/react/dist/esm.js","webpack://gatsby-starter-blog/./node_modules/css-in-js-utils/lib/hyphenateProperty.js","webpack://gatsby-starter-blog/./node_modules/css-in-js-utils/lib/isPrefixedValue.js","webpack://gatsby-starter-blog/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://gatsby-starter-blog/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://gatsby-starter-blog/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://gatsby-starter-blog/./node_modules/hyphenate-style-name/index.js","webpack://gatsby-starter-blog/./node_modules/gatsby-link/parse-path.js","webpack://gatsby-starter-blog/./node_modules/gatsby-link/is-local-link.js","webpack://gatsby-starter-blog/./node_modules/gatsby-link/rewrite-link-path.js","webpack://gatsby-starter-blog/./node_modules/gatsby-link/index.js","webpack://gatsby-starter-blog/./node_modules/gatsby-react-router-scroll/index.js","webpack://gatsby-starter-blog/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://gatsby-starter-blog/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://gatsby-starter-blog/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://gatsby-starter-blog/./node_modules/gatsby-script/dist/partytown-context.js","webpack://gatsby-starter-blog/./node_modules/gatsby-script/dist/request-idle-callback-shim.js","webpack://gatsby-starter-blog/./node_modules/gatsby-script/dist/gatsby-script.js","webpack://gatsby-starter-blog/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://gatsby-starter-blog/./.cache/api-runner-browser-plugins.js","webpack://gatsby-starter-blog/./.cache/api-runner-browser.js","webpack://gatsby-starter-blog/./node_modules/mitt/dist/mitt.es.js","webpack://gatsby-starter-blog/./.cache/emitter.js","webpack://gatsby-starter-blog/./.cache/normalize-page-path.js","webpack://gatsby-starter-blog/./.cache/find-path.js","webpack://gatsby-starter-blog/./.cache/gatsby-browser-entry.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://gatsby-starter-blog/./.cache/prefetch.js","webpack://gatsby-starter-blog/./.cache/loader.js","webpack://gatsby-starter-blog/./.cache/page-renderer.js","webpack://gatsby-starter-blog/./.cache/route-announcer-props.js","webpack://gatsby-starter-blog/./.cache/navigation.js","webpack://gatsby-starter-blog/./node_modules/shallow-compare/es/index.js","webpack://gatsby-starter-blog/./.cache/production-app.js","webpack://gatsby-starter-blog/./.cache/ensure-resources.js","webpack://gatsby-starter-blog/./.cache/public-page-renderer-prod.js","webpack://gatsby-starter-blog/./.cache/public-page-renderer.js","webpack://gatsby-starter-blog/./.cache/react-lifecycles-compat.js","webpack://gatsby-starter-blog/./.cache/redirect-utils.js","webpack://gatsby-starter-blog/./.cache/register-service-worker.js","webpack://gatsby-starter-blog/./.cache/strip-prefix.js","webpack://gatsby-starter-blog/./node_modules/gatsby-plugin-google-analytics/gatsby-browser.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/utils/capitalizeString.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/utils/prefixProperty.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/utils/prefixValue.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/utils/addNewValuesOnly.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/utils/isObject.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/data.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/cursor.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/crossFade.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/filter.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/flex.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/flexboxOld.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/gradient.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/grid.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/imageSet.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/logical.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/sizing.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/transition.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/index.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/backgroundClip.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/plugins/position.js","webpack://gatsby-starter-blog/./node_modules/inline-style-prefixer/es/createPrefixer.js","webpack://gatsby-starter-blog/./node_modules/styletron-engine-atomic/dist/browser.es5.es.js","webpack://gatsby-starter-blog/./node_modules/styletron-standard/dist/browser.es5.es.js","webpack://gatsby-starter-blog/./node_modules/styletron-react/dist/browser.es5.es.js","webpack://gatsby-starter-blog/./node_modules/gatsby-plugin-styletron/gatsby-browser.js","webpack://gatsby-starter-blog/./node_modules/gatsby-remark-images/constants.js","webpack://gatsby-starter-blog/./node_modules/gatsby-remark-images/gatsby-browser.js","webpack://gatsby-starter-blog/./.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/e92f8988d65cf25c087d226e6c0ef06f.js","webpack://gatsby-starter-blog/./node_modules/gatsby-plugin-mdx/context.js","webpack://gatsby-starter-blog/./node_modules/gatsby-plugin-mdx/loaders/mdx-scopes.js","webpack://gatsby-starter-blog/./node_modules/gatsby-plugin-mdx/wrap-root-element.js","webpack://gatsby-starter-blog/./node_modules/gatsby-plugin-mdx/gatsby-browser.js","webpack://gatsby-starter-blog/./node_modules/gatsby-plugin-mdx/loaders/mdx-components.js","webpack://gatsby-starter-blog/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://gatsby-starter-blog/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://gatsby-starter-blog/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://gatsby-starter-blog/./node_modules/invariant/browser.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/extends.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://gatsby-starter-blog/./node_modules/@builder.io/partytown/integration/index.cjs","webpack://gatsby-starter-blog/./node_modules/@builder.io/partytown/react/index.cjs","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://gatsby-starter-blog/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"],"sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n }); // try...catch iOS Safari limits to 100 pushState calls\n\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n}; ////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\n\n\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n return {\n get location() {\n return stack[index];\n },\n\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n\n get index() {\n return index;\n },\n\n get state() {\n return states[index];\n },\n\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = {\n pathname: pathname,\n search: search\n };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n}; ////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\n\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate; ////////////////////////////////////////////////////////////////////////////////\n\nexports.globalHistory = globalHistory;\nexports.navigate = navigate;\nexports.createHistory = createHistory;\nexports.createMemorySource = createMemorySource;","\"use strict\";\n\nexports.__esModule = true;\nexports.shallowCompare = exports.validateRedirect = exports.insertParams = exports.resolve = exports.match = exports.pick = exports.startsWith = undefined;\n\nvar _invariant = require(\"invariant\");\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n} ////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\n\n\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n}; ////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\n\n\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? (0, _invariant2.default)(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : (0, _invariant2.default)(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\n\n\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\n}; ////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\n\n\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname); // ?a=b, /users?b=c => /users?a=b\n\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n } // profile, /users/789 => /users/789/profile\n\n\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n } // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n\n\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n}; ////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\n\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\n\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return {\n route: route,\n score: score,\n index: index\n };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\n\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n}; ////////////////////////////////////////////////////////////////////////////////\n\n\nexports.startsWith = startsWith;\nexports.pick = pick;\nexports.match = match;\nexports.resolve = resolve;\nexports.insertParams = insertParams;\nexports.validateRedirect = validateRedirect;\nexports.shallowCompare = shallowCompare;","import React from 'react';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar isFunction = function isFunction(obj) {\n return typeof obj === 'function';\n};\n\nvar MDXContext = /*#__PURE__*/React.createContext({});\n\nvar withMDXComponents = function withMDXComponents(Component) {\n return function (props) {\n var allComponents = useMDXComponents(props.components);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n components: allComponents\n }));\n };\n};\n\nvar useMDXComponents = function useMDXComponents(components) {\n var contextComponents = React.useContext(MDXContext);\n var allComponents = contextComponents;\n\n if (components) {\n allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2(_objectSpread2({}, contextComponents), components);\n }\n\n return allComponents;\n};\n\nvar MDXProvider = function MDXProvider(props) {\n var allComponents = useMDXComponents(props.components);\n return /*#__PURE__*/React.createElement(MDXContext.Provider, {\n value: allComponents\n }, props.children);\n};\n\nvar TYPE_PROP_NAME = 'mdxType';\nvar DEFAULTS = {\n inlineCode: 'code',\n wrapper: function wrapper(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(React.Fragment, {}, children);\n }\n};\nvar MDXCreateElement = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var propComponents = props.components,\n mdxType = props.mdxType,\n originalType = props.originalType,\n parentName = props.parentName,\n etc = _objectWithoutProperties(props, [\"components\", \"mdxType\", \"originalType\", \"parentName\"]);\n\n var components = useMDXComponents(propComponents);\n var type = mdxType;\n var Component = components[\"\".concat(parentName, \".\").concat(type)] || components[type] || DEFAULTS[type] || originalType;\n\n if (propComponents) {\n return /*#__PURE__*/React.createElement(Component, _objectSpread2(_objectSpread2({\n ref: ref\n }, etc), {}, {\n components: propComponents\n }));\n }\n\n return /*#__PURE__*/React.createElement(Component, _objectSpread2({\n ref: ref\n }, etc));\n});\nMDXCreateElement.displayName = 'MDXCreateElement';\n\nfunction createElement(type, props) {\n var args = arguments;\n var mdxType = props && props.mdxType;\n\n if (typeof type === 'string' || mdxType) {\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = MDXCreateElement;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.originalType = type;\n newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType;\n createElementArgArray[1] = newProps;\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n }\n\n return React.createElement.apply(null, args);\n}\n\nexport { MDXContext, MDXProvider, createElement as mdx, useMDXComponents, withMDXComponents };","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hyphenateProperty;\n\nvar _hyphenateStyleName = require('hyphenate-style-name');\n\nvar _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction hyphenateProperty(property) {\n return (0, _hyphenateStyleName2.default)(property);\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPrefixedValue;\nvar regex = /-webkit-|-moz-|-ms-/;\n\nfunction isPrefixedValue(value) {\n return typeof value === 'string' && regex.test(value);\n}\n\nmodule.exports = exports['default'];","\"use strict\";\n\nexports.__esModule = true;\nexports.applyTrailingSlashOption = void 0; // TODO(v5): Remove legacy setting and default to \"always\"\n\nvar applyTrailingSlashOption = function applyTrailingSlashOption(input) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"legacy\";\n var hasHtmlSuffix = input.endsWith(\".html\");\n var hasXmlSuffix = input.endsWith(\".xml\");\n var hasPdfSuffix = input.endsWith(\".pdf\");\n if (input === \"/\") return input;\n\n if (hasHtmlSuffix || hasXmlSuffix || hasPdfSuffix) {\n option = \"never\";\n }\n\n if (option === \"always\") {\n return input.endsWith(\"/\") ? input : \"\".concat(input, \"/\");\n }\n\n if (option === \"never\") {\n return input.endsWith(\"/\") ? input.slice(0, -1) : input;\n }\n\n return input;\n};\n\nexports.applyTrailingSlashOption = applyTrailingSlashOption;","\"use strict\";\n\nmodule.exports = Object.assign;","\"use strict\";\n\nvar _slicedToArray = require(\"/Users/matt/Projects/Blog/node_modules/@babel/runtime/helpers/slicedToArray.js\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nexports.__esModule = true;\nexports.wrapRootElement = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _react2 = require(\"@builder.io/partytown/react\");\n\nvar _gatsbyScript = require(\"gatsby-script\");\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction PartytownProvider(_ref) {\n var children = _ref.children;\n\n var _ref2 = (0, _react.useState)({\n collectedForwards: new Set(),\n collectedAnyScript: false\n }),\n _ref3 = _slicedToArray(_ref2, 2),\n _ref3$ = _ref3[0],\n collectedForwards = _ref3$.collectedForwards,\n collectedAnyScript = _ref3$.collectedAnyScript,\n setState = _ref3[1];\n\n return /*#__PURE__*/_react.default.createElement(_gatsbyScript.PartytownContext.Provider, {\n value: {\n collectScript: function collectScript(newScript) {\n var stateShouldChange = false;\n var potentialNewState = {\n collectedAnyScript: collectedAnyScript,\n collectedForwards: collectedForwards\n };\n\n if (!collectedAnyScript) {\n potentialNewState.collectedAnyScript = true;\n stateShouldChange = true;\n }\n\n if (newScript !== null && newScript !== void 0 && newScript.forward) {\n if (Array.isArray(newScript.forward)) {\n var _iterator = _createForOfIteratorHelper(newScript.forward),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var singleForward = _step.value;\n\n if (!potentialNewState.collectedForwards.has(singleForward)) {\n potentialNewState.collectedForwards.add(singleForward);\n stateShouldChange = true;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n if (process.env.NODE_ENV === \"development\") {\n console.log(\"unexpected shape of forward\", newScript);\n }\n }\n }\n\n if (stateShouldChange) {\n setState(potentialNewState);\n }\n }\n }\n }, children, collectedAnyScript && /*#__PURE__*/_react.default.createElement(_react2.Partytown, {\n key: \"partytown\",\n forward: Array.from(collectedForwards)\n }));\n}\n\nvar wrapRootElement = function wrapRootElement(_ref4) {\n var element = _ref4.element;\n return /*#__PURE__*/_react.default.createElement(PartytownProvider, null, element);\n};\n\nexports.wrapRootElement = wrapRootElement;","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g;\nvar msPattern = /^ms-/;\nvar cache = {};\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase();\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name];\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower);\n return cache[name] = msPattern.test(hName) ? '-' + hName : hName;\n}\n\nexport default hyphenateStyleName;","export function parsePath(path) {\n let pathname = path || `/`;\n let search = ``;\n let hash = ``;\n const hashIndex = pathname.indexOf(`#`);\n\n if (hashIndex !== -1) {\n hash = pathname.slice(hashIndex);\n pathname = pathname.slice(0, hashIndex);\n }\n\n const searchIndex = pathname.indexOf(`?`);\n\n if (searchIndex !== -1) {\n search = pathname.slice(searchIndex);\n pathname = pathname.slice(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === `?` ? `` : search,\n hash: hash === `#` ? `` : hash\n };\n}","// Copied from https://github.com/sindresorhus/is-absolute-url/blob/3ab19cc2e599a03ea691bcb8a4c09fa3ebb5da4f/index.js\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\n\nconst isAbsolute = path => ABSOLUTE_URL_REGEX.test(path);\n\nexport const isLocalLink = path => {\n if (typeof path !== `string`) {\n return undefined; // TODO(v5): Re-Add TypeError\n // throw new TypeError(`Expected a \\`string\\`, got \\`${typeof path}\\``)\n }\n\n return !isAbsolute(path);\n};","import { resolve } from \"@gatsbyjs/reach-router/lib/utils\"; // Specific import to treeshake Node.js stuff\n\nimport { applyTrailingSlashOption } from \"gatsby-page-utils/apply-trailing-slash-option\";\nimport { parsePath } from \"./parse-path\";\nimport { isLocalLink } from \"./is-local-link\";\nimport { withPrefix } from \".\";\n\nconst isAbsolutePath = path => path === null || path === void 0 ? void 0 : path.startsWith(`/`);\n\nconst getGlobalTrailingSlash = () => typeof __TRAILING_SLASH__ !== `undefined` ? __TRAILING_SLASH__ : undefined;\n\nfunction absolutify(path, current) {\n // If it's already absolute, return as-is\n if (isAbsolutePath(path)) {\n return path;\n }\n\n const option = getGlobalTrailingSlash();\n const absolutePath = resolve(path, current);\n\n if (option === `always` || option === `never`) {\n return applyTrailingSlashOption(absolutePath, option);\n }\n\n return absolutePath;\n}\n\nexport const rewriteLinkPath = (path, relativeTo) => {\n if (typeof path === `number`) {\n return path;\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n const {\n pathname,\n search,\n hash\n } = parsePath(path);\n const option = getGlobalTrailingSlash();\n let adjustedPath = path;\n\n if (option === `always` || option === `never`) {\n const output = applyTrailingSlashOption(pathname, option);\n adjustedPath = `${output}${search}${hash}`;\n }\n\n return isAbsolutePath(adjustedPath) ? withPrefix(adjustedPath) : absolutify(adjustedPath, relativeTo);\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nconst _excluded = [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\", \"_location\"];\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Link, Location } from \"@gatsbyjs/reach-router\";\nimport { parsePath } from \"./parse-path\";\nimport { isLocalLink } from \"./is-local-link\";\nimport { rewriteLinkPath } from \"./rewrite-link-path\";\nexport { parsePath };\nexport function withPrefix(path, prefix = getGlobalBasePrefix()) {\n var _ref;\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n if (path.startsWith(`./`) || path.startsWith(`../`)) {\n return path;\n }\n\n const base = (_ref = prefix !== null && prefix !== void 0 ? prefix : getGlobalPathPrefix()) !== null && _ref !== void 0 ? _ref : `/`;\n return `${base !== null && base !== void 0 && base.endsWith(`/`) ? base.slice(0, -1) : base}${path.startsWith(`/`) ? path : `/${path}`}`;\n} // These global values are wrapped in typeof clauses to ensure the values exist.\n// This is especially problematic in unit testing of this component.\n\nconst getGlobalPathPrefix = () => process.env.NODE_ENV !== `production` ? typeof __PATH_PREFIX__ !== `undefined` ? __PATH_PREFIX__ : undefined : __PATH_PREFIX__;\n\nconst getGlobalBasePrefix = () => process.env.NODE_ENV !== `production` ? typeof __BASE_PATH__ !== `undefined` ? __BASE_PATH__ : undefined : __BASE_PATH__;\n\nexport function withAssetPrefix(path) {\n return withPrefix(path, getGlobalPathPrefix());\n}\nconst NavLinkPropTypes = {\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n partiallyActive: PropTypes.bool\n}; // Set up IntersectionObserver\n\nconst createIntersectionObserver = (el, cb) => {\n const io = new window.IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (el === entry.target) {\n // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n // MSEdge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n cb(entry.isIntersecting || entry.intersectionRatio > 0);\n }\n });\n }); // Add element to the observer\n\n io.observe(el);\n return {\n instance: io,\n el\n };\n};\n\nfunction GatsbyLinkLocationWrapper(props) {\n return /*#__PURE__*/React.createElement(Location, null, ({\n location\n }) => /*#__PURE__*/React.createElement(GatsbyLink, _extends({}, props, {\n _location: location\n })));\n}\n\nclass GatsbyLink extends React.Component {\n constructor(props) {\n super(props); // Default to no support for IntersectionObserver\n\n this.defaultGetProps = ({\n isPartiallyCurrent,\n isCurrent\n }) => {\n if (this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n return {\n className: [this.props.className, this.props.activeClassName].filter(Boolean).join(` `),\n style: _extends({}, this.props.style, this.props.activeStyle)\n };\n }\n\n return null;\n };\n\n let IOSupported = false;\n\n if (typeof window !== `undefined` && window.IntersectionObserver) {\n IOSupported = true;\n }\n\n this.state = {\n IOSupported\n };\n this.abortPrefetch = null;\n this.handleRef = this.handleRef.bind(this);\n }\n\n _prefetch() {\n let currentPath = window.location.pathname + window.location.search; // reach router should have the correct state\n\n if (this.props._location && this.props._location.pathname) {\n currentPath = this.props._location.pathname + this.props._location.search;\n }\n\n const rewrittenPath = rewriteLinkPath(this.props.to, currentPath);\n const parsed = parsePath(rewrittenPath);\n const newPathName = parsed.pathname + parsed.search; // Prefetch is used to speed up next navigations. When you use it on the current navigation,\n // there could be a race-condition where Chrome uses the stale data instead of waiting for the network to complete\n\n if (currentPath !== newPathName) {\n return ___loader.enqueue(newPathName);\n }\n\n return undefined;\n }\n\n componentWillUnmount() {\n if (!this.io) {\n return;\n }\n\n const {\n instance,\n el\n } = this.io;\n\n if (this.abortPrefetch) {\n this.abortPrefetch.abort();\n }\n\n instance.unobserve(el);\n instance.disconnect();\n }\n\n handleRef(ref) {\n if (this.props.innerRef && Object.prototype.hasOwnProperty.call(this.props.innerRef, `current`)) {\n this.props.innerRef.current = ref;\n } else if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n if (this.state.IOSupported && ref) {\n // If IO supported and element reference found, setup Observer functionality\n this.io = createIntersectionObserver(ref, inViewPort => {\n if (inViewPort) {\n this.abortPrefetch = this._prefetch();\n } else {\n if (this.abortPrefetch) {\n this.abortPrefetch.abort();\n }\n }\n });\n }\n }\n\n render() {\n const _this$props = this.props,\n {\n to,\n getProps = this.defaultGetProps,\n onClick,\n onMouseEnter,\n state,\n replace,\n _location\n } = _this$props,\n rest = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n if (process.env.NODE_ENV !== `production` && !isLocalLink(to)) {\n console.warn(`External link ${to} was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links`);\n }\n\n const prefixedTo = rewriteLinkPath(to, _location.pathname);\n\n if (!isLocalLink(prefixedTo)) {\n return /*#__PURE__*/React.createElement(\"a\", _extends({\n href: prefixedTo\n }, rest));\n }\n\n return /*#__PURE__*/React.createElement(Link, _extends({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.handleRef,\n onMouseEnter: e => {\n if (onMouseEnter) {\n onMouseEnter(e);\n }\n\n const parsed = parsePath(prefixedTo);\n\n ___loader.hovering(parsed.pathname + parsed.search);\n },\n onClick: e => {\n if (onClick) {\n onClick(e);\n }\n\n if (e.button === 0 && // ignore right clicks\n !this.props.target && // let browser handle \"target=_blank\"\n !e.defaultPrevented && // onClick prevented default\n !e.metaKey && // ignore clicks with modifier keys...\n !e.altKey && !e.ctrlKey && !e.shiftKey) {\n e.preventDefault();\n let shouldReplace = replace;\n\n const isCurrent = encodeURI(prefixedTo) === _location.pathname;\n\n if (typeof replace !== `boolean` && isCurrent) {\n shouldReplace = true;\n } // Make sure the necessary scripts and data are\n // loaded before continuing.\n\n\n window.___navigate(prefixedTo, {\n state,\n replace: shouldReplace\n });\n }\n\n return true;\n }\n }, rest));\n }\n\n}\n\nGatsbyLink.propTypes = _extends({}, NavLinkPropTypes, {\n onClick: PropTypes.func,\n to: PropTypes.string.isRequired,\n replace: PropTypes.bool,\n state: PropTypes.object\n});\nexport default /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(GatsbyLinkLocationWrapper, _extends({\n innerRef: ref\n}, props)));\nexport const navigate = (to, options) => {\n window.___navigate(rewriteLinkPath(to, window.location.pathname), options);\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n function ScrollHandler() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n } // Hack to allow accessing this._stateStorage.\n\n\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n\n return _this;\n }\n\n var _proto = ScrollHandler.prototype;\n\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n\n this._isTicking = false;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n } else if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n\n return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n\n var _proto = SessionStorage.prototype;\n\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n\n return 0;\n }\n };\n\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n\n return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","import { createContext } from \"react\";\nconst PartytownContext = /*#__PURE__*/createContext({});\nexport { PartytownContext };","// https://developer.chrome.com/blog/using-requestidlecallback/#checking-for-requestidlecallback\n// https://github.com/vercel/next.js/blob/canary/packages/next/client/request-idle-callback.ts\nexport const requestIdleCallback = typeof self !== `undefined` && self.requestIdleCallback && self.requestIdleCallback.bind(window) || function (cb) {\n const start = Date.now();\n return setTimeout(function () {\n cb({\n didTimeout: false,\n timeRemaining: function () {\n return Math.max(0, 50 - (Date.now() - start));\n }\n });\n }, 1);\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport React, { useEffect, useContext } from \"react\";\nimport { PartytownContext } from \"./partytown-context\";\nimport { requestIdleCallback } from \"./request-idle-callback-shim\";\nexport let ScriptStrategy; // eslint-disable-next-line @typescript-eslint/naming-convention\n\n(function (ScriptStrategy) {\n ScriptStrategy[\"postHydrate\"] = \"post-hydrate\";\n ScriptStrategy[\"idle\"] = \"idle\";\n ScriptStrategy[\"offMainThread\"] = \"off-main-thread\";\n})(ScriptStrategy || (ScriptStrategy = {}));\n\nconst handledProps = new Set([`src`, `strategy`, `dangerouslySetInnerHTML`, `children`, `onLoad`, `onError`]);\nexport const scriptCache = new Set();\nexport const scriptCallbackCache = new Map();\nexport function Script(props) {\n const {\n id,\n src,\n strategy = ScriptStrategy.postHydrate\n } = props || {};\n const {\n collectScript\n } = useContext(PartytownContext);\n useEffect(() => {\n let details;\n\n switch (strategy) {\n case ScriptStrategy.postHydrate:\n details = injectScript(props);\n break;\n\n case ScriptStrategy.idle:\n requestIdleCallback(() => {\n details = injectScript(props);\n });\n break;\n\n case ScriptStrategy.offMainThread:\n if (collectScript) {\n const attributes = resolveAttributes(props);\n collectScript(attributes);\n }\n\n break;\n }\n\n return () => {\n const {\n script,\n loadCallback,\n errorCallback\n } = details || {};\n\n if (loadCallback) {\n script === null || script === void 0 ? void 0 : script.removeEventListener(`load`, loadCallback);\n }\n\n if (errorCallback) {\n script === null || script === void 0 ? void 0 : script.removeEventListener(`error`, errorCallback);\n }\n\n script === null || script === void 0 ? void 0 : script.remove();\n };\n }, []);\n\n if (strategy === ScriptStrategy.offMainThread) {\n const inlineScript = resolveInlineScript(props);\n const attributes = resolveAttributes(props);\n\n if (typeof window === `undefined`) {\n if (collectScript) {\n collectScript(attributes);\n } else {\n console.warn(`Unable to collect off-main-thread script '${id || src || `no-id-or-src`}' for configuration with Partytown.\\nGatsby script components must be used either as a child of your page, in wrapPageElement, or wrapRootElement.\\nSee https://gatsby.dev/gatsby-script for more information.`);\n }\n }\n\n if (inlineScript) {\n return /*#__PURE__*/React.createElement(\"script\", _extends({\n type: \"text/partytown\",\n \"data-strategy\": strategy,\n crossOrigin: \"anonymous\"\n }, attributes, {\n dangerouslySetInnerHTML: {\n __html: resolveInlineScript(props)\n }\n }));\n }\n\n return /*#__PURE__*/React.createElement(\"script\", _extends({\n type: \"text/partytown\",\n src: proxyPartytownUrl(src),\n \"data-strategy\": strategy,\n crossOrigin: \"anonymous\"\n }, attributes));\n }\n\n return null;\n}\n\nfunction injectScript(props) {\n const {\n id,\n src,\n strategy = ScriptStrategy.postHydrate,\n onLoad,\n onError\n } = props || {};\n const scriptKey = id || src;\n const callbackNames = [`load`, `error`];\n const currentCallbacks = {\n load: onLoad,\n error: onError\n };\n\n if (scriptKey) {\n /**\n * If a duplicate script is already loaded/errored, we replay load/error callbacks with the original event.\n * If it's not yet loaded/errored, keep track of callbacks so we can call load/error callbacks for each when the event occurs.\n */\n for (const name of callbackNames) {\n if (currentCallbacks !== null && currentCallbacks !== void 0 && currentCallbacks[name]) {\n var _cachedCallbacks$name;\n\n const cachedCallbacks = scriptCallbackCache.get(scriptKey) || {};\n const {\n callbacks = []\n } = (cachedCallbacks === null || cachedCallbacks === void 0 ? void 0 : cachedCallbacks[name]) || {};\n callbacks.push(currentCallbacks === null || currentCallbacks === void 0 ? void 0 : currentCallbacks[name]);\n\n if (cachedCallbacks !== null && cachedCallbacks !== void 0 && (_cachedCallbacks$name = cachedCallbacks[name]) !== null && _cachedCallbacks$name !== void 0 && _cachedCallbacks$name.event) {\n var _currentCallbacks$nam, _cachedCallbacks$name2;\n\n currentCallbacks === null || currentCallbacks === void 0 ? void 0 : (_currentCallbacks$nam = currentCallbacks[name]) === null || _currentCallbacks$nam === void 0 ? void 0 : _currentCallbacks$nam.call(currentCallbacks, cachedCallbacks === null || cachedCallbacks === void 0 ? void 0 : (_cachedCallbacks$name2 = cachedCallbacks[name]) === null || _cachedCallbacks$name2 === void 0 ? void 0 : _cachedCallbacks$name2.event);\n } else {\n scriptCallbackCache.set(scriptKey, _extends({}, cachedCallbacks, {\n [name]: {\n callbacks\n }\n }));\n }\n }\n } // Avoid injecting duplicate scripts into the DOM\n\n\n if (scriptCache.has(scriptKey)) {\n return null;\n }\n }\n\n const inlineScript = resolveInlineScript(props);\n const attributes = resolveAttributes(props);\n const script = document.createElement(`script`);\n\n if (id) {\n script.id = id;\n }\n\n script.dataset.strategy = strategy;\n\n for (const [key, value] of Object.entries(attributes)) {\n script.setAttribute(key, value);\n }\n\n if (inlineScript) {\n script.textContent = inlineScript;\n }\n\n if (src) {\n script.src = src;\n }\n\n const wrappedCallbacks = {};\n\n if (scriptKey) {\n // Add listeners on injected scripts so events are cached for use in de-duplicated script callbacks\n for (const name of callbackNames) {\n const wrappedEventCallback = event => onEventCallback(event, scriptKey, name);\n\n script.addEventListener(name, wrappedEventCallback);\n wrappedCallbacks[`${name}Callback`] = wrappedEventCallback;\n }\n\n scriptCache.add(scriptKey);\n }\n\n document.body.appendChild(script);\n return {\n script,\n loadCallback: wrappedCallbacks.loadCallback,\n errorCallback: wrappedCallbacks.errorCallback\n };\n}\n\nfunction resolveInlineScript(props) {\n const {\n dangerouslySetInnerHTML,\n children = ``\n } = props || {};\n const {\n __html: dangerousHTML = ``\n } = dangerouslySetInnerHTML || {};\n return dangerousHTML || children;\n}\n\nfunction resolveAttributes(props) {\n const attributes = {};\n\n for (const [key, value] of Object.entries(props)) {\n if (handledProps.has(key)) {\n continue;\n }\n\n attributes[key] = value;\n }\n\n return attributes;\n}\n\nfunction proxyPartytownUrl(url) {\n if (!url) {\n return undefined;\n }\n\n return `/__third-party-proxy?url=${encodeURIComponent(url)}`;\n}\n\nfunction onEventCallback(event, scriptKey, eventName) {\n const cachedCallbacks = scriptCallbackCache.get(scriptKey) || {};\n\n for (const callback of (cachedCallbacks === null || cachedCallbacks === void 0 ? void 0 : (_cachedCallbacks$even = cachedCallbacks[eventName]) === null || _cachedCallbacks$even === void 0 ? void 0 : _cachedCallbacks$even.callbacks) || []) {\n var _cachedCallbacks$even;\n\n callback(event);\n }\n\n scriptCallbackCache.set(scriptKey, {\n [eventName]: {\n event\n }\n });\n}","exports.components = {\n \"component---src-pages-404-js\": () => import(\"./../../../src/pages/404.js\" /* webpackChunkName: \"component---src-pages-404-js\" */),\n \"component---src-pages-index-js\": () => import(\"./../../../src/pages/index.js\" /* webpackChunkName: \"component---src-pages-index-js\" */),\n \"component---src-templates-blog-post-js\": () => import(\"./../../../src/templates/blog-post.js\" /* webpackChunkName: \"component---src-templates-blog-post-js\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-styletron/gatsby-browser.js'),\n options: {\"plugins\":[],\"prefix\":\"_\",\"debug\":true},\n },{\n plugin: require('../node_modules/gatsby-remark-images/gatsby-browser.js'),\n options: {\"plugins\":[],\"maxWidth\":650,\"linkImagesToOriginal\":true,\"showCaptions\":false,\"markdownCaptions\":false,\"backgroundColor\":\"white\",\"quality\":50,\"withWebp\":false,\"withAvif\":false,\"tracedSVG\":false,\"loading\":\"lazy\",\"decoding\":\"async\",\"disableBgImageOnAlpha\":false,\"disableBgImage\":false},\n },{\n plugin: require('../node_modules/gatsby-plugin-mdx/gatsby-browser.js'),\n options: {\"plugins\":[],\"defaultLayouts\":{\"blog\":\"/Users/matt/Projects/Blog/src/templates/blog-post.js\"},\"extensions\":[\".mdx\",\".md\"],\"gatsbyRemarkPlugins\":[{\"resolve\":\"/Users/matt/Projects/Blog/node_modules/gatsby-remark-images\",\"id\":\"9538893d-d613-5b58-9363-b20025c6a326\",\"name\":\"gatsby-remark-images\",\"version\":\"6.18.0\",\"modulePath\":\"/Users/matt/Projects/Blog/node_modules/gatsby-remark-images/index.js\",\"pluginOptions\":{\"plugins\":[],\"maxWidth\":600},\"nodeAPIs\":[\"pluginOptionsSchema\"],\"browserAPIs\":[\"onRouteUpdate\"],\"ssrAPIs\":[]},{\"resolve\":\"/Users/matt/Projects/Blog/node_modules/gatsby-remark-prismjs\",\"id\":\"96900835-4b61-53a8-8a41-f46b0b717fb0\",\"name\":\"gatsby-remark-prismjs\",\"version\":\"6.18.0\",\"modulePath\":\"/Users/matt/Projects/Blog/node_modules/gatsby-remark-prismjs/index.js\",\"pluginOptions\":{\"plugins\":[]},\"nodeAPIs\":[],\"browserAPIs\":[],\"ssrAPIs\":[]}],\"lessBabel\":false,\"remarkPlugins\":[],\"rehypePlugins\":[],\"mediaTypes\":[\"text/markdown\",\"text/x-markdown\"],\"root\":\"/Users/matt/Projects/Blog\",\"commonmark\":false,\"JSFrontmatterEngine\":false,\"engines\":{}},\n },{\n plugin: require('../node_modules/gatsby-remark-images/gatsby-browser.js'),\n options: {\"plugins\":[],\"maxWidth\":600},\n },{\n plugin: require('../node_modules/gatsby-plugin-google-analytics/gatsby-browser.js'),\n options: {\"plugins\":[],\"trackingId\":\"UA-101857198-1\",\"head\":false,\"anonymize\":false,\"respectDNT\":false,\"exclude\":[],\"pageTransitionDelay\":0,\"enableWebVitalsTracking\":false},\n },{\n plugin: require('../gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","export default pathAndSearch => {\n if (pathAndSearch === undefined) {\n return pathAndSearch\n }\n let [path, search = ``] = pathAndSearch.split(`?`)\n if (search) {\n search = `?` + search\n }\n\n if (path === `/`) {\n return `/` + search\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1) + search\n }\n return path + search\n}\n","import { pick } from \"@gatsbyjs/reach-router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n let newRawPathname = rawPathname\n const queryIndex = rawPathname.indexOf(`?`)\n\n if (queryIndex !== -1) {\n const [path, qs] = rawPathname.split(`?`)\n newRawPathname = `${path}?${encodeURIComponent(qs)}`\n }\n\n const pathname = decodeURIComponent(newRawPathname)\n\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n withPrefix,\n withAssetPrefix,\n navigate,\n push,\n replace,\n navigateTo,\n parsePath,\n} from \"gatsby-link\"\nimport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport {\n Link,\n withAssetPrefix,\n withPrefix,\n graphql,\n parsePath,\n navigate,\n useScrollRestoration,\n StaticQueryContext,\n StaticQuery,\n PageRenderer,\n useStaticQuery,\n prefetchPathname,\n}\n\nexport * from \"gatsby-script\"\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = rawPath => {\n const [path, maybeSearch] = rawPath.split(`?`)\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json${\n maybeSearch ? `?${maybeSearch}` : ``\n }`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise(resolve => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\n// Regex that matches common search crawlers\nconst BOT_REGEX = /bot|crawler|spider|crawling/i\n\nconst toPageResources = (pageData, component = null) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n getServerDataError: pageData.getServerDataError,\n }\n\n return {\n component,\n json: pageData.result,\n page,\n }\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.isPrefetchQueueRunning = false\n this.prefetchQueued = []\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n const maybeSearch = pagePath.split(`?`)[1]\n if (maybeSearch && !jsonPayload.path.includes(maybeSearch)) {\n jsonPayload.path += `?${maybeSearch}`\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return {\n error: page.error,\n status: page.status,\n }\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]).then(allData => {\n const result = allData[1]\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = result.payload\n const { componentChunkName, staticQueryHashes = [] } = pageData\n\n const finalResult = {}\n\n const componentChunkPromise = this.loadComponent(componentChunkName).then(\n component => {\n finalResult.createdAt = new Date()\n let pageResources\n if (!component || component instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = component\n } else {\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: allData[0]\n ? allData[0].webpackCompilationHash\n : ``,\n })\n pageResources = toPageResources(pageData, component)\n }\n // undefined if final result is an error\n return pageResources\n }\n )\n\n const staticQueryBatchPromise = Promise.all(\n staticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Don't prefetch if this is a crawler bot\n if (navigator.userAgent && BOT_REGEX.test(navigator.userAgent)) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return {\n then: resolve => resolve(false),\n abort: () => {},\n }\n }\n if (this.prefetchTriggered.has(pagePath)) {\n return {\n then: resolve => resolve(true),\n abort: () => {},\n }\n }\n\n const defer = {\n resolve: null,\n reject: null,\n promise: null,\n }\n defer.promise = new Promise((resolve, reject) => {\n defer.resolve = resolve\n defer.reject = reject\n })\n this.prefetchQueued.push([pagePath, defer])\n const abortC = new AbortController()\n abortC.signal.addEventListener(`abort`, () => {\n const index = this.prefetchQueued.findIndex(([p]) => p === pagePath)\n // remove from the queue\n if (index !== -1) {\n this.prefetchQueued.splice(index, 1)\n }\n })\n\n if (!this.isPrefetchQueueRunning) {\n this.isPrefetchQueueRunning = true\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n }\n\n return {\n then: (resolve, reject) => defer.promise.then(resolve, reject),\n abort: abortC.abort.bind(abortC),\n }\n }\n\n _processNextPrefetchBatch() {\n const idleCallback = window.requestIdleCallback || (cb => setTimeout(cb, 0))\n\n idleCallback(() => {\n const toPrefetch = this.prefetchQueued.splice(0, 4)\n const prefetches = Promise.all(\n toPrefetch.map(([pagePath, dPromise]) => {\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return dPromise.resolve(false)\n }\n\n return this.doPrefetch(findPath(pagePath)).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n\n dPromise.resolve(true)\n })\n })\n )\n\n if (this.prefetchQueued.length) {\n prefetches.then(() => {\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n })\n } else {\n this.isPrefetchQueueRunning = false\n }\n })\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths, pageData) {\n const loadComponent = chunkName => {\n if (!asyncRequires.components[chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name ${chunkName}`\n )\n }\n\n return (\n asyncRequires.components[chunkName]()\n .then(preferDefault)\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n\n if (pageData) {\n this.pageDataDb.set(findPath(pageData.path), {\n pagePath: pageData.path,\n payload: pageData,\n status: `success`,\n })\n }\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n","import React, { createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\n\n// Renders page\nclass PageRenderer extends React.Component {\n render() {\n const props = {\n ...this.props,\n params: {\n ...grabMatchParams(this.props.location.pathname),\n ...this.props.pageResources.json.pageContext.__params,\n },\n }\n\n const pageElement = createElement(this.props.pageResources.component, {\n ...props,\n key: this.props.path || this.props.pageResources.page.path,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n { element: pageElement, props },\n pageElement,\n ({ result }) => {\n return { element: result, props }\n }\n ).pop()\n\n return wrappedPage\n }\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@gatsbyjs/reach-router\"\nimport { globalHistory } from \"@gatsbyjs/reach-router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname + search).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","/* global HAS_REACT_18 */\nimport { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nlet reactHydrate\nlet reactRender\nif (HAS_REACT_18) {\n const reactDomClient = require(`react-dom/client`)\n reactRender = (Component, el) =>\n reactDomClient.createRoot(el).render(Component)\n reactHydrate = (Component, el) => reactDomClient.hydrateRoot(el, Component)\n} else {\n const reactDomClient = require(`react-dom`)\n reactRender = reactDomClient.render\n reactHydrate = reactDomClient.hydrate\n}\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\nconst reloadStorageKey = `gatsby-reload-compilation-hash-match`\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n return (\n \n \n {children}\n \n \n )\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n
\n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). SSR\n // page paths might include search params, while SSG and DSG won't.\n // If page path include search params we also compare query params.\n // But only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !==\n browserLoc.pathname + (pagePath.includes(`?`) ? browserLoc.search : ``) &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath.match(/^\\/(404|500)(\\/?|.html)$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(\n __BASE_PATH__ +\n pagePath +\n (!pagePath.includes(`?`) ? browserLoc.search : ``) +\n browserLoc.hash,\n {\n replace: true,\n }\n )\n }\n\n // It's possible that sessionStorage can throw an exception if access is not granted, see https://github.com/gatsbyjs/gatsby/issues/34512\n const getSessionStorage = () => {\n try {\n return sessionStorage\n } catch {\n return null\n }\n }\n\n publicLoader.loadPage(browserLoc.pathname + browserLoc.search).then(page => {\n const sessionStorage = getSessionStorage()\n\n if (\n page?.page?.webpackCompilationHash &&\n page.page.webpackCompilationHash !== window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n // We have not matching html + js (inlined `window.___webpackCompilationHash`)\n // with our data (coming from `app-data.json` file). This can cause issues such as\n // errors trying to load static queries (as list of static queries is inside `page-data`\n // which might not match to currently loaded `.js` scripts).\n // We are making attempt to reload if hashes don't match, but we also have to handle case\n // when reload doesn't fix it (possibly broken deploy) so we don't end up in infinite reload loop\n if (sessionStorage) {\n const isReloaded = sessionStorage.getItem(reloadStorageKey) === `1`\n\n if (!isReloaded) {\n sessionStorage.setItem(reloadStorageKey, `1`)\n window.location.reload(true)\n return\n }\n }\n }\n\n if (sessionStorage) {\n sessionStorage.removeItem(reloadStorageKey)\n }\n\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return {SiteRoot}\n }\n\n const focusEl = document.getElementById(`gatsby-focus-wrapper`)\n\n // Client only pages have any empty body so we just do a normal\n // render to avoid React complaining about hydration mis-matches.\n let defaultRenderer = reactRender\n if (focusEl && focusEl.children.length) {\n defaultRenderer = reactHydrate\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n defaultRenderer\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n renderer(, rootElement)\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n })\n})\n","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname + location.search, {\n withErrorDetails: true,\n }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(\n location.pathname + location.search,\n {\n withErrorDetails: true,\n }\n )\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","exports.polyfill = Component => Component\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","const listOfMetricsSend = new Set();\n\nfunction debounce(fn, timeout) {\n let timer = null;\n return function (...args) {\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(fn, timeout, ...args);\n };\n}\n\nfunction sendWebVitals() {\n function sendData(data) {\n if (listOfMetricsSend.has(data.name)) {\n return;\n }\n\n listOfMetricsSend.add(data.name);\n sendToGoogleAnalytics(data);\n }\n\n return import(`web-vitals/base`).then(({\n getLCP,\n getFID,\n getCLS\n }) => {\n const debouncedCLS = debounce(sendData, 3000); // we don't need to debounce FID - we send it when it happens\n\n const debouncedFID = sendData; // LCP can occur multiple times so we debounce it\n\n const debouncedLCP = debounce(sendData, 3000); // With the true flag, we measure all previous occurences too, in case we start listening to late.\n\n getCLS(debouncedCLS, true);\n getFID(debouncedFID, true);\n getLCP(debouncedLCP, true);\n });\n}\n\nfunction sendToGoogleAnalytics({\n name,\n value,\n id\n}) {\n window.ga(`send`, `event`, {\n eventCategory: `Web Vitals`,\n eventAction: name,\n // The `id` value will be unique to the current page load. When sending\n // multiple values from the same page (e.g. for CLS), Google Analytics can\n // compute a total by grouping on this ID (note: requires `eventLabel` to\n // be a dimension in your report).\n eventLabel: id,\n // Google Analytics metrics must be integers, so the value is rounded.\n // For CLS the value is first multiplied by 1000 for greater precision\n // (note: increase the multiplier for greater precision if needed).\n eventValue: Math.round(name === `CLS` ? value * 1000 : value),\n // Use a non-interaction event to avoid affecting bounce rate.\n nonInteraction: true,\n // Use `sendBeacon()` if the browser supports it.\n transport: `beacon`\n });\n}\n\nexport const onRouteUpdate = ({\n location\n}, pluginOptions = {}) => {\n const ga = window.ga;\n\n if (process.env.NODE_ENV !== `production` || typeof ga !== `function`) {\n return null;\n }\n\n const pathIsExcluded = location && typeof window.excludeGAPaths !== `undefined` && window.excludeGAPaths.some(rx => rx.test(location.pathname));\n if (pathIsExcluded) return null; // wrap inside a timeout to make sure react-helmet is done with it's changes (https://github.com/gatsbyjs/gatsby/issues/9139)\n // reactHelmet is using requestAnimationFrame: https://github.com/nfl/react-helmet/blob/5.2.0/src/HelmetUtils.js#L296-L299\n\n const sendPageView = () => {\n const pagePath = location ? location.pathname + location.search + location.hash : undefined;\n ga(`set`, `page`, pagePath);\n ga(`send`, `pageview`);\n }; // Minimum delay for reactHelmet's requestAnimationFrame\n\n\n const delay = Math.max(32, pluginOptions.pageTransitionDelay || 0);\n setTimeout(sendPageView, delay);\n return null;\n};\nexport function onInitialClientRender(_, pluginOptions) {\n if (process.env.NODE_ENV === `production` && typeof ga === `function` && pluginOptions.enableWebVitalsTracking) {\n sendWebVitals();\n }\n}","export default function capitalizeString(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}","import capitalizeString from './capitalizeString';\nexport default function prefixProperty(prefixProperties, property, style) {\n if (prefixProperties.hasOwnProperty(property)) {\n var newStyle = {};\n var requiredPrefixes = prefixProperties[property];\n var capitalizedProperty = capitalizeString(property);\n var keys = Object.keys(style);\n\n for (var i = 0; i < keys.length; i++) {\n var styleProperty = keys[i];\n\n if (styleProperty === property) {\n for (var j = 0; j < requiredPrefixes.length; j++) {\n newStyle[requiredPrefixes[j] + capitalizedProperty] = style[property];\n }\n }\n\n newStyle[styleProperty] = style[styleProperty];\n }\n\n return newStyle;\n }\n\n return style;\n}","export default function prefixValue(plugins, property, value, style, metaData) {\n for (var i = 0, len = plugins.length; i < len; ++i) {\n var processedValue = plugins[i](property, value, style, metaData); // we can stop processing if a value is returned\n // as all plugin criteria are unique\n\n if (processedValue) {\n return processedValue;\n }\n }\n}","function addIfNew(list, value) {\n if (list.indexOf(value) === -1) {\n list.push(value);\n }\n}\n\nexport default function addNewValuesOnly(list, values) {\n if (Array.isArray(values)) {\n for (var i = 0, len = values.length; i < len; ++i) {\n addIfNew(list, values[i]);\n }\n } else {\n addIfNew(list, values);\n }\n}","export default function isObject(value) {\n return value instanceof Object && !Array.isArray(value);\n}","var w = [\"Webkit\"];\nvar m = [\"Moz\"];\nvar ms = [\"ms\"];\nvar wm = [\"Webkit\", \"Moz\"];\nvar wms = [\"Webkit\", \"ms\"];\nvar wmms = [\"Webkit\", \"Moz\", \"ms\"];\nexport default {\n plugins: [],\n prefixMap: {\n \"appearance\": wm,\n \"textEmphasisPosition\": w,\n \"textEmphasis\": w,\n \"textEmphasisStyle\": w,\n \"textEmphasisColor\": w,\n \"boxDecorationBreak\": w,\n \"maskImage\": w,\n \"maskMode\": w,\n \"maskRepeat\": w,\n \"maskPosition\": w,\n \"maskClip\": w,\n \"maskOrigin\": w,\n \"maskSize\": w,\n \"maskComposite\": w,\n \"mask\": w,\n \"maskBorderSource\": w,\n \"maskBorderMode\": w,\n \"maskBorderSlice\": w,\n \"maskBorderWidth\": w,\n \"maskBorderOutset\": w,\n \"maskBorderRepeat\": w,\n \"maskBorder\": w,\n \"maskType\": w,\n \"textDecorationStyle\": w,\n \"textDecorationSkip\": w,\n \"textDecorationLine\": w,\n \"textDecorationColor\": w,\n \"userSelect\": wmms,\n \"backdropFilter\": w,\n \"fontKerning\": w,\n \"scrollSnapType\": wms,\n \"scrollSnapPointsX\": wms,\n \"scrollSnapPointsY\": wms,\n \"scrollSnapDestination\": wms,\n \"scrollSnapCoordinate\": wms,\n \"clipPath\": w,\n \"shapeImageThreshold\": w,\n \"shapeImageMargin\": w,\n \"shapeImageOutside\": w,\n \"filter\": w,\n \"hyphens\": wms,\n \"flowInto\": wms,\n \"flowFrom\": wms,\n \"breakBefore\": wms,\n \"breakAfter\": wms,\n \"breakInside\": wms,\n \"regionFragment\": wms,\n \"writingMode\": wms,\n \"textOrientation\": w,\n \"tabSize\": m,\n \"fontFeatureSettings\": w,\n \"columnCount\": w,\n \"columnFill\": w,\n \"columnGap\": w,\n \"columnRule\": w,\n \"columnRuleColor\": w,\n \"columnRuleStyle\": w,\n \"columnRuleWidth\": w,\n \"columns\": w,\n \"columnSpan\": w,\n \"columnWidth\": w,\n \"wrapFlow\": ms,\n \"wrapThrough\": ms,\n \"wrapMargin\": ms,\n \"textSizeAdjust\": wms\n }\n};","var prefixes = ['-webkit-', '-moz-', ''];\nvar values = {\n 'zoom-in': true,\n 'zoom-out': true,\n grab: true,\n grabbing: true\n};\nexport default function cursor(property, value) {\n if (property === 'cursor' && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue'; // http://caniuse.com/#search=cross-fade\n\nvar prefixes = ['-webkit-', ''];\nexport default function crossFade(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && value.indexOf('cross-fade(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/cross-fade\\(/g, prefix + 'cross-fade(');\n });\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue'; // http://caniuse.com/#feat=css-filter-function\n\nvar prefixes = ['-webkit-', ''];\nexport default function filter(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && value.indexOf('filter(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/filter\\(/g, prefix + 'filter(');\n });\n }\n}","var values = {\n flex: ['-webkit-box', '-moz-box', '-ms-flexbox', '-webkit-flex', 'flex'],\n 'inline-flex': ['-webkit-inline-box', '-moz-inline-box', '-ms-inline-flexbox', '-webkit-inline-flex', 'inline-flex']\n};\nexport default function flex(property, value) {\n if (property === 'display' && values.hasOwnProperty(value)) {\n return values[value];\n }\n}","var alternativeValues = {\n 'space-around': 'justify',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end',\n 'wrap-reverse': 'multiple',\n wrap: 'multiple'\n};\nvar alternativeProps = {\n alignItems: 'WebkitBoxAlign',\n justifyContent: 'WebkitBoxPack',\n flexWrap: 'WebkitBoxLines',\n flexGrow: 'WebkitBoxFlex'\n};\nexport default function flexboxOld(property, value, style) {\n if (property === 'flexDirection' && typeof value === 'string') {\n if (value.indexOf('column') > -1) {\n style.WebkitBoxOrient = 'vertical';\n } else {\n style.WebkitBoxOrient = 'horizontal';\n }\n\n if (value.indexOf('reverse') > -1) {\n style.WebkitBoxDirection = 'reverse';\n } else {\n style.WebkitBoxDirection = 'normal';\n }\n }\n\n if (alternativeProps.hasOwnProperty(property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\nvar prefixes = ['-webkit-', '-moz-', ''];\nvar values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/gi;\nexport default function gradient(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && values.test(value)) {\n return prefixes.map(function (prefix) {\n return value.replace(values, function (grad) {\n return prefix + grad;\n });\n });\n }\n}","var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nfunction isSimplePositionValue(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nfunction isComplexSpanValue(value) {\n return typeof value === 'string' && value.includes('/');\n}\n\nvar alignmentValues = ['center', 'end', 'start', 'stretch'];\nvar displayValues = {\n 'inline-grid': ['-ms-inline-grid', 'inline-grid'],\n grid: ['-ms-grid', 'grid']\n};\nvar propertyConverters = {\n alignSelf: function alignSelf(value, style) {\n if (alignmentValues.indexOf(value) > -1) {\n style.msGridRowAlign = value;\n }\n },\n gridColumn: function gridColumn(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridColumn = value;\n } else if (isComplexSpanValue(value)) {\n var _value$split = value.split('/'),\n _value$split2 = _slicedToArray(_value$split, 2),\n start = _value$split2[0],\n end = _value$split2[1];\n\n propertyConverters.gridColumnStart(+start, style);\n\n var _end$split = end.split(/ ?span /),\n _end$split2 = _slicedToArray(_end$split, 2),\n maybeSpan = _end$split2[0],\n maybeNumber = _end$split2[1];\n\n if (maybeSpan === '') {\n propertyConverters.gridColumnEnd(+start + +maybeNumber, style);\n } else {\n propertyConverters.gridColumnEnd(+end, style);\n }\n } else {\n propertyConverters.gridColumnStart(value, style);\n }\n },\n gridColumnEnd: function gridColumnEnd(value, style) {\n var msGridColumn = style.msGridColumn;\n\n if (isSimplePositionValue(value) && isSimplePositionValue(msGridColumn)) {\n style.msGridColumnSpan = value - msGridColumn;\n }\n },\n gridColumnStart: function gridColumnStart(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridColumn = value;\n }\n },\n gridRow: function gridRow(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridRow = value;\n } else if (isComplexSpanValue(value)) {\n var _value$split3 = value.split('/'),\n _value$split4 = _slicedToArray(_value$split3, 2),\n start = _value$split4[0],\n end = _value$split4[1];\n\n propertyConverters.gridRowStart(+start, style);\n\n var _end$split3 = end.split(/ ?span /),\n _end$split4 = _slicedToArray(_end$split3, 2),\n maybeSpan = _end$split4[0],\n maybeNumber = _end$split4[1];\n\n if (maybeSpan === '') {\n propertyConverters.gridRowEnd(+start + +maybeNumber, style);\n } else {\n propertyConverters.gridRowEnd(+end, style);\n }\n } else {\n propertyConverters.gridRowStart(value, style);\n }\n },\n gridRowEnd: function gridRowEnd(value, style) {\n var msGridRow = style.msGridRow;\n\n if (isSimplePositionValue(value) && isSimplePositionValue(msGridRow)) {\n style.msGridRowSpan = value - msGridRow;\n }\n },\n gridRowStart: function gridRowStart(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridRow = value;\n }\n },\n gridTemplateColumns: function gridTemplateColumns(value, style) {\n style.msGridColumns = value;\n },\n gridTemplateRows: function gridTemplateRows(value, style) {\n style.msGridRows = value;\n },\n justifySelf: function justifySelf(value, style) {\n if (alignmentValues.indexOf(value) > -1) {\n style.msGridColumnAlign = value;\n }\n }\n};\nexport default function grid(property, value, style) {\n if (property === 'display' && value in displayValues) {\n return displayValues[value];\n }\n\n if (property in propertyConverters) {\n var propertyConverter = propertyConverters[property];\n propertyConverter(value, style);\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue'; // http://caniuse.com/#feat=css-image-set\n\nvar prefixes = ['-webkit-', ''];\nexport default function imageSet(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && value.indexOf('image-set(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/image-set\\(/g, prefix + 'image-set(');\n });\n }\n}","var alternativeProps = {\n marginBlockStart: ['WebkitMarginBefore'],\n marginBlockEnd: ['WebkitMarginAfter'],\n marginInlineStart: ['WebkitMarginStart', 'MozMarginStart'],\n marginInlineEnd: ['WebkitMarginEnd', 'MozMarginEnd'],\n paddingBlockStart: ['WebkitPaddingBefore'],\n paddingBlockEnd: ['WebkitPaddingAfter'],\n paddingInlineStart: ['WebkitPaddingStart', 'MozPaddingStart'],\n paddingInlineEnd: ['WebkitPaddingEnd', 'MozPaddingEnd'],\n borderBlockStart: ['WebkitBorderBefore'],\n borderBlockStartColor: ['WebkitBorderBeforeColor'],\n borderBlockStartStyle: ['WebkitBorderBeforeStyle'],\n borderBlockStartWidth: ['WebkitBorderBeforeWidth'],\n borderBlockEnd: ['WebkitBorderAfter'],\n borderBlockEndColor: ['WebkitBorderAfterColor'],\n borderBlockEndStyle: ['WebkitBorderAfterStyle'],\n borderBlockEndWidth: ['WebkitBorderAfterWidth'],\n borderInlineStart: ['WebkitBorderStart', 'MozBorderStart'],\n borderInlineStartColor: ['WebkitBorderStartColor', 'MozBorderStartColor'],\n borderInlineStartStyle: ['WebkitBorderStartStyle', 'MozBorderStartStyle'],\n borderInlineStartWidth: ['WebkitBorderStartWidth', 'MozBorderStartWidth'],\n borderInlineEnd: ['WebkitBorderEnd', 'MozBorderEnd'],\n borderInlineEndColor: ['WebkitBorderEndColor', 'MozBorderEndColor'],\n borderInlineEndStyle: ['WebkitBorderEndStyle', 'MozBorderEndStyle'],\n borderInlineEndWidth: ['WebkitBorderEndWidth', 'MozBorderEndWidth']\n};\nexport default function logical(property, value, style) {\n if (Object.prototype.hasOwnProperty.call(alternativeProps, property)) {\n var alternativePropList = alternativeProps[property];\n\n for (var i = 0, len = alternativePropList.length; i < len; ++i) {\n style[alternativePropList[i]] = value;\n }\n }\n}","var prefixes = ['-webkit-', '-moz-', ''];\nvar properties = {\n maxHeight: true,\n maxWidth: true,\n width: true,\n height: true,\n columnWidth: true,\n minWidth: true,\n minHeight: true\n};\nvar values = {\n 'min-content': true,\n 'max-content': true,\n 'fill-available': true,\n 'fit-content': true,\n 'contain-floats': true\n};\nexport default function sizing(property, value) {\n if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}","import hyphenateProperty from 'css-in-js-utils/lib/hyphenateProperty';\nimport isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\nimport capitalizeString from '../utils/capitalizeString';\nvar properties = {\n transition: true,\n transitionProperty: true,\n WebkitTransition: true,\n WebkitTransitionProperty: true,\n MozTransition: true,\n MozTransitionProperty: true\n};\nvar prefixMapping = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n ms: '-ms-'\n};\n\nfunction prefixValue(value, propertyPrefixMap) {\n if (isPrefixedValue(value)) {\n return value;\n } // only split multi values, not cubic beziers\n\n\n var multipleValues = value.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g);\n\n for (var i = 0, len = multipleValues.length; i < len; ++i) {\n var singleValue = multipleValues[i];\n var values = [singleValue];\n\n for (var property in propertyPrefixMap) {\n var dashCaseProperty = hyphenateProperty(property);\n\n if (singleValue.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== 'order') {\n var prefixes = propertyPrefixMap[property];\n\n for (var j = 0, pLen = prefixes.length; j < pLen; ++j) {\n // join all prefixes and create a new value\n values.unshift(singleValue.replace(dashCaseProperty, prefixMapping[prefixes[j]] + dashCaseProperty));\n }\n }\n }\n\n multipleValues[i] = values.join(',');\n }\n\n return multipleValues.join(',');\n}\n\nexport default function transition(property, value, style, propertyPrefixMap) {\n // also check for already prefixed transitions\n if (typeof value === 'string' && properties.hasOwnProperty(property)) {\n var outputValue = prefixValue(value, propertyPrefixMap); // if the property is already prefixed\n\n var webkitOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-moz-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Webkit') > -1) {\n return webkitOutput;\n }\n\n var mozOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-webkit-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Moz') > -1) {\n return mozOutput;\n }\n\n style['Webkit' + capitalizeString(property)] = webkitOutput;\n style['Moz' + capitalizeString(property)] = mozOutput;\n return outputValue;\n }\n}","import createPrefixer from './createPrefixer';\nimport data from './data';\nimport backgroundClip from './plugins/backgroundClip';\nimport cursor from './plugins/cursor';\nimport crossFade from './plugins/crossFade';\nimport filter from './plugins/filter';\nimport flex from './plugins/flex';\nimport flexboxOld from './plugins/flexboxOld';\nimport gradient from './plugins/gradient';\nimport grid from './plugins/grid';\nimport imageSet from './plugins/imageSet';\nimport logical from './plugins/logical';\nimport position from './plugins/position';\nimport sizing from './plugins/sizing';\nimport transition from './plugins/transition';\nvar plugins = [backgroundClip, crossFade, cursor, filter, flexboxOld, gradient, grid, imageSet, logical, position, sizing, transition, flex];\nvar prefix = createPrefixer({\n prefixMap: data.prefixMap,\n plugins: plugins\n});\nexport { createPrefixer, prefix };","// https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip#Browser_compatibility\nexport default function backgroundClip(property, value) {\n if (typeof value === 'string' && value === 'text') {\n return ['-webkit-text', 'text'];\n }\n}","export default function position(property, value) {\n if (property === 'position' && value === 'sticky') {\n return ['-webkit-sticky', 'sticky'];\n }\n}","import prefixProperty from './utils/prefixProperty';\nimport prefixValue from './utils/prefixValue';\nimport addNewValuesOnly from './utils/addNewValuesOnly';\nimport isObject from './utils/isObject';\nexport default function createPrefixer(_ref) {\n var prefixMap = _ref.prefixMap,\n plugins = _ref.plugins;\n return function prefix(style) {\n for (var property in style) {\n var value = style[property]; // handle nested objects\n\n if (isObject(value)) {\n style[property] = prefix(value); // handle array values\n } else if (Array.isArray(value)) {\n var combinedValue = [];\n\n for (var i = 0, len = value.length; i < len; ++i) {\n var processedValue = prefixValue(plugins, property, value[i], style, prefixMap);\n addNewValuesOnly(combinedValue, processedValue || value[i]);\n } // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n\n\n if (combinedValue.length > 0) {\n style[property] = combinedValue;\n }\n } else {\n var _processedValue = prefixValue(plugins, property, value, style, prefixMap); // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n\n\n if (_processedValue) {\n style[property] = _processedValue;\n }\n\n style = prefixProperty(prefixMap, property, style);\n }\n }\n\n return style;\n };\n}","import { prefix } from 'inline-style-prefixer';\n\nvar SequentialIDGenerator = /*#__PURE__*/function () {\n function SequentialIDGenerator(prefix$$1) {\n if (prefix$$1 === void 0) {\n prefix$$1 = \"\";\n } // ensure start with \"ae\" so \"ad\" is never produced\n\n\n this.prefix = prefix$$1;\n this.count = 0;\n this.offset = 374;\n this.msb = 1295;\n this.power = 2;\n }\n\n var _proto = SequentialIDGenerator.prototype;\n\n _proto.next = function next() {\n var id = this.increment().toString(36);\n return this.prefix ? \"\" + this.prefix + id : id;\n };\n\n _proto.increment = function increment() {\n var id = this.count + this.offset;\n\n if (id === this.msb) {\n this.offset += (this.msb + 1) * 9;\n this.msb = Math.pow(36, ++this.power) - 1;\n }\n\n this.count++;\n return id;\n };\n\n return SequentialIDGenerator;\n}(); // adapted from https://github.com/dutchenkoOleg/sort-css-media-queries\n\n\nvar minMaxWidth = /(!?\\(\\s*min(-device-)?-width).+\\(\\s*max(-device)?-width/i;\nvar minWidth = /\\(\\s*min(-device)?-width/i;\nvar maxMinWidth = /(!?\\(\\s*max(-device)?-width).+\\(\\s*min(-device)?-width/i;\nvar maxWidth = /\\(\\s*max(-device)?-width/i;\n\nvar isMinWidth = _testQuery(minMaxWidth, maxMinWidth, minWidth);\n\nvar isMaxWidth = _testQuery(maxMinWidth, minMaxWidth, maxWidth);\n\nvar minMaxHeight = /(!?\\(\\s*min(-device)?-height).+\\(\\s*max(-device)?-height/i;\nvar minHeight = /\\(\\s*min(-device)?-height/i;\nvar maxMinHeight = /(!?\\(\\s*max(-device)?-height).+\\(\\s*min(-device)?-height/i;\nvar maxHeight = /\\(\\s*max(-device)?-height/i;\n\nvar isMinHeight = _testQuery(minMaxHeight, maxMinHeight, minHeight);\n\nvar isMaxHeight = _testQuery(maxMinHeight, minMaxHeight, maxHeight);\n\nvar isPrint = /print/i;\nvar isPrintOnly = /^print$/i;\nvar maxValue = Number.MAX_VALUE;\n\nfunction _getQueryLength(length) {\n var matches = /(-?\\d*\\.?\\d+)(ch|em|ex|px|rem)/.exec(length);\n\n if (matches === null) {\n return maxValue;\n }\n\n var number = matches[1];\n var unit = matches[2];\n\n switch (unit) {\n case \"ch\":\n number = parseFloat(number) * 8.8984375;\n break;\n\n case \"em\":\n case \"rem\":\n number = parseFloat(number) * 16;\n break;\n\n case \"ex\":\n number = parseFloat(number) * 8.296875;\n break;\n\n case \"px\":\n number = parseFloat(number);\n break;\n }\n\n return +number;\n}\n\nfunction _testQuery(doubleTestTrue, doubleTestFalse, singleTest) {\n return function (query) {\n if (doubleTestTrue.test(query)) {\n return true;\n } else if (doubleTestFalse.test(query)) {\n return false;\n }\n\n return singleTest.test(query);\n };\n}\n\nfunction _testIsPrint(a, b) {\n var isPrintA = isPrint.test(a);\n var isPrintOnlyA = isPrintOnly.test(a);\n var isPrintB = isPrint.test(b);\n var isPrintOnlyB = isPrintOnly.test(b);\n\n if (isPrintA && isPrintB) {\n if (!isPrintOnlyA && isPrintOnlyB) {\n return 1;\n }\n\n if (isPrintOnlyA && !isPrintOnlyB) {\n return -1;\n }\n\n return a.localeCompare(b);\n }\n\n if (isPrintA) {\n return 1;\n }\n\n if (isPrintB) {\n return -1;\n }\n\n return null;\n}\n\nfunction sortCSSmq(a, b) {\n if (a === \"\") {\n return -1;\n }\n\n if (b === \"\") {\n return 1;\n }\n\n var testIsPrint = _testIsPrint(a, b);\n\n if (testIsPrint !== null) {\n return testIsPrint;\n }\n\n var minA = isMinWidth(a) || isMinHeight(a);\n var maxA = isMaxWidth(a) || isMaxHeight(a);\n var minB = isMinWidth(b) || isMinHeight(b);\n var maxB = isMaxWidth(b) || isMaxHeight(b);\n\n if (minA && maxB) {\n return -1;\n }\n\n if (maxA && minB) {\n return 1;\n }\n\n var lengthA = _getQueryLength(a);\n\n var lengthB = _getQueryLength(b);\n\n if (lengthA === maxValue && lengthB === maxValue) {\n return a.localeCompare(b);\n } else if (lengthA === maxValue) {\n return 1;\n } else if (lengthB === maxValue) {\n return -1;\n }\n\n if (lengthA > lengthB) {\n if (maxA) {\n return -1;\n }\n\n return 1;\n }\n\n if (lengthA < lengthB) {\n if (maxA) {\n return 1;\n }\n\n return -1;\n }\n\n return a.localeCompare(b);\n}\n\nvar MultiCache = /*#__PURE__*/function () {\n function MultiCache(idGenerator, onNewCache, onNewValue) {\n this.idGenerator = idGenerator;\n this.onNewCache = onNewCache;\n this.onNewValue = onNewValue;\n this.sortedCacheKeys = [];\n this.caches = {};\n }\n\n var _proto = MultiCache.prototype;\n\n _proto.getCache = function getCache(key) {\n if (!this.caches[key]) {\n var _cache = new Cache(this.idGenerator, this.onNewValue);\n\n _cache.key = key;\n this.sortedCacheKeys.push(key);\n this.sortedCacheKeys.sort(sortCSSmq);\n var keyIndex = this.sortedCacheKeys.indexOf(key);\n var insertBeforeMedia = keyIndex < this.sortedCacheKeys.length - 1 ? this.sortedCacheKeys[keyIndex + 1] : void 0;\n this.caches[key] = _cache;\n this.onNewCache(key, _cache, insertBeforeMedia);\n }\n\n return this.caches[key];\n };\n\n _proto.getSortedCacheKeys = function getSortedCacheKeys() {\n return this.sortedCacheKeys;\n };\n\n return MultiCache;\n}();\n\nvar Cache = /*#__PURE__*/function () {\n function Cache(idGenerator, onNewValue) {\n this.cache = {};\n this.idGenerator = idGenerator;\n this.onNewValue = onNewValue;\n }\n\n var _proto2 = Cache.prototype;\n\n _proto2.addValue = function addValue(key, value) {\n var cached = this.cache[key];\n\n if (cached) {\n return cached;\n }\n\n var id = this.idGenerator.next();\n this.cache[key] = id;\n this.onNewValue(this, id, value);\n return id;\n };\n\n return Cache;\n}();\n\nvar uppercasePattern = /[A-Z]/g;\nvar msPattern = /^ms-/;\nvar cache = {};\n\nfunction hyphenateStyleName(prop) {\n return prop in cache ? cache[prop] : cache[prop] = prop.replace(uppercasePattern, \"-$&\").toLowerCase().replace(msPattern, \"-ms-\");\n}\n/**\n * Adapted from https://github.com/gilmoreorless/css-shorthand-properties\n */\n\n\nvar shorthandMap = {\n // CSS 2.1: https://www.w3.org/TR/CSS2/propidx.html\n \"list-style\": [\"list-style-type\", \"list-style-position\", \"list-style-image\"],\n margin: [\"margin-top\", \"margin-right\", \"margin-bottom\", \"margin-left\"],\n outline: [\"outline-width\", \"outline-style\", \"outline-color\"],\n padding: [\"padding-top\", \"padding-right\", \"padding-bottom\", \"padding-left\"],\n // CSS Backgrounds and Borders Module Level 3: https://www.w3.org/TR/css3-background/\n background: [\"background-image\", \"background-position\", \"background-size\", \"background-repeat\", \"background-origin\", \"background-clip\", \"background-attachment\", \"background-color\"],\n border: [\"border-top-width\", \"border-right-width\", \"border-bottom-width\", \"border-left-width\", \"border-width\", \"border-top-style\", \"border-right-style\", \"border-bottom-style\", \"border-left-style\", \"border-style\", \"border-top-color\", \"border-right-color\", \"border-bottom-color\", \"border-left-color\", \"border-color\"],\n \"border-color\": [\"border-top-color\", \"border-right-color\", \"border-bottom-color\", \"border-left-color\"],\n \"border-style\": [\"border-top-style\", \"border-right-style\", \"border-bottom-style\", \"border-left-style\"],\n \"border-width\": [\"border-top-width\", \"border-right-width\", \"border-bottom-width\", \"border-left-width\"],\n \"border-top\": [\"border-top-width\", \"border-top-style\", \"border-top-color\"],\n \"border-right\": [\"border-right-width\", \"border-right-style\", \"border-right-color\"],\n \"border-bottom\": [\"border-bottom-width\", \"border-bottom-style\", \"border-bottom-color\"],\n \"border-left\": [\"border-left-width\", \"border-left-style\", \"border-left-color\"],\n \"border-radius\": [\"border-top-left-radius\", \"border-top-right-radius\", \"border-bottom-right-radius\", \"border-bottom-left-radius\"],\n \"border-image\": [\"border-image-source\", \"border-image-slice\", \"border-image-width\", \"border-image-outset\", \"border-image-repeat\"],\n // CSS Fonts Module Level 3: https://www.w3.org/TR/css3-fonts/\n font: [\"font-style\", \"font-variant-ligatures\", \"font-variant-alternates\", \"font-variant-caps\", \"font-variant-numeric\", \"font-variant-east-asian\", \"font-variant\", \"font-weight\", \"font-stretch\", \"font-size\", \"line-height\", \"font-family\"],\n \"font-variant\": [\"font-variant-ligatures\", \"font-variant-alternates\", \"font-variant-caps\", \"font-variant-numeric\", \"font-variant-east-asian\"],\n // CSS Flexible Box Layout Module Level 1: https://www.w3.org/TR/css3-flexbox-1/\n flex: [\"flex-grow\", \"flex-shrink\", \"flex-basis\"],\n \"flex-flow\": [\"flex-direction\", \"flex-wrap\"],\n // CSS Grid Layout Module Level 1: https://www.w3.org/TR/css-grid-1/\n grid: [\"grid-template-rows\", \"grid-template-columns\", \"grid-template-areas\", \"grid-auto-rows\", \"grid-auto-columns\", \"grid-auto-flow\"],\n \"grid-template\": [\"grid-template-rows\", \"grid-template-columns\", \"grid-template-areas\"],\n \"grid-row\": [\"grid-row-start\", \"grid-row-end\"],\n \"grid-column\": [\"grid-column-start\", \"grid-column-end\"],\n \"grid-area\": [\"grid-row-start\", \"grid-column-start\", \"grid-row-end\", \"grid-column-end\"],\n \"grid-gap\": [\"grid-row-gap\", \"grid-column-gap\"],\n // CSS Masking Module Level 1: https://www.w3.org/TR/css-masking/\n mask: [\"mask-image\", \"mask-mode\", \"mask-position\", \"mask-size\", \"mask-repeat\", \"mask-origin\", \"mask-clip\"],\n \"mask-border\": [\"mask-border-source\", \"mask-border-slice\", \"mask-border-width\", \"mask-border-outset\", \"mask-border-repeat\", \"mask-border-mode\"],\n // CSS Multi-column Layout Module: https://www.w3.org/TR/css3-multicol/\n columns: [\"column-width\", \"column-count\"],\n \"column-rule\": [\"column-rule-width\", \"column-rule-style\", \"column-rule-color\"],\n // CSS Scroll Snap Module Level 1: https://www.w3.org/TR/css-scroll-snap-1/\n \"scroll-padding\": [\"scroll-padding-top\", \"scroll-padding-right\", \"scroll-padding-bottom\", \"scroll-padding-left\"],\n \"scroll-padding-block\": [\"scroll-padding-block-start\", \"scroll-padding-block-end\"],\n \"scroll-padding-inline\": [\"scroll-padding-inline-start\", \"scroll-padding-inline-end\"],\n \"scroll-snap-margin\": [\"scroll-snap-margin-top\", \"scroll-snap-margin-right\", \"scroll-snap-margin-bottom\", \"scroll-snap-margin-left\"],\n \"scroll-snap-margin-block\": [\"scroll-snap-margin-block-start\", \"scroll-snap-margin-block-end\"],\n \"scroll-snap-margin-inline\": [\"scroll-snap-margin-inline-start\", \"scroll-snap-margin-inline-end\"],\n // CSS Speech Module: https://www.w3.org/TR/css3-speech/\n cue: [\"cue-before\", \"cue-after\"],\n pause: [\"pause-before\", \"pause-after\"],\n rest: [\"rest-before\", \"rest-after\"],\n // CSS Text Decoration Module Level 3: https://www.w3.org/TR/css-text-decor-3/\n \"text-decoration\": [\"text-decoration-line\", \"text-decoration-style\", \"text-decoration-color\"],\n \"text-emphasis\": [\"text-emphasis-style\", \"text-emphasis-color\"],\n // CSS Animations (WD): https://www.w3.org/TR/css3-animations\n animation: [\"animation-name\", \"animation-duration\", \"animation-timing-function\", \"animation-delay\", \"animation-iteration-count\", \"animation-direction\", \"animation-fill-mode\", \"animation-play-state\"],\n // CSS Transitions (WD): https://www.w3.org/TR/css3-transitions/\n transition: [\"transition-property\", \"transition-duration\", \"transition-timing-function\", \"transition-delay\"]\n};\n\nfunction validateNoMixedHand(style) {\n var hyphenatedProperties = Object.keys(style).reduce(function (acc, property) {\n acc[hyphenateStyleName(property)] = property;\n return acc;\n }, {});\n var mixed = [];\n\n for (var property in hyphenatedProperties) {\n if (property in shorthandMap) {\n for (var _iterator = shorthandMap[property], _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var _longhand = _ref;\n\n if (_longhand in hyphenatedProperties) {\n var long = hyphenatedProperties[_longhand];\n var short = hyphenatedProperties[property];\n mixed.push({\n shorthand: {\n property: short,\n value: style[short]\n },\n longhand: {\n property: long,\n value: style[long]\n }\n });\n }\n }\n }\n }\n\n return mixed;\n}\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction injectStylePrefixed(styleCache, styles, media, pseudo) {\n var cache = styleCache.getCache(media);\n var classString = \"\";\n\n for (var originalKey in styles) {\n var originalVal = styles[originalKey];\n\n if (originalVal === void 0 || originalVal === null) {\n continue;\n }\n\n if (_typeof(originalVal) !== \"object\") {\n // Non-null and non-undefined primitive value\n if (process.env.NODE_ENV !== \"production\") {\n validateValueType(originalVal, originalKey);\n }\n\n var propValPair = hyphenateStyleName(originalKey) + \":\" + originalVal;\n var key = \"\" + pseudo + propValPair;\n var cachedId = cache.cache[key];\n\n if (cachedId !== void 0) {\n // cache hit\n classString += \" \" + cachedId;\n continue;\n } else {\n var _prefix; // cache miss\n\n\n var block = \"\";\n var prefixed = prefix((_prefix = {}, _prefix[originalKey] = originalVal, _prefix));\n\n for (var prefixedKey in prefixed) {\n var prefixedVal = prefixed[prefixedKey];\n\n var prefixedValType = _typeof(prefixedVal);\n\n if (prefixedValType === \"string\" || prefixedValType === \"number\") {\n var prefixedPair = hyphenateStyleName(prefixedKey) + \":\" + prefixedVal;\n\n if (prefixedPair !== propValPair) {\n block += prefixedPair + \";\";\n }\n } else if (Array.isArray(prefixedVal)) {\n var hyphenated = hyphenateStyleName(prefixedKey);\n\n for (var i = 0; i < prefixedVal.length; i++) {\n var _prefixedPair = hyphenated + \":\" + prefixedVal[i];\n\n if (_prefixedPair !== propValPair) {\n block += _prefixedPair + \";\";\n }\n }\n }\n }\n\n block += propValPair; // ensure original prop/val is last (for hydration)\n\n var id = cache.addValue(key, {\n pseudo: pseudo,\n block: block\n });\n classString += \" \" + id;\n }\n } else {\n // Non-null object value\n if (originalKey[0] === \":\") {\n classString += \" \" + injectStylePrefixed(styleCache, originalVal, media, pseudo + originalKey);\n } else if (originalKey.substring(0, 6) === \"@media\") {\n classString += \" \" + injectStylePrefixed(styleCache, originalVal, originalKey.substr(7), pseudo);\n }\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n var conflicts = validateNoMixedHand(styles);\n\n if (conflicts.length) {\n conflicts.forEach(function (_ref) {\n var _JSON$stringify, _JSON$stringify2;\n\n var shorthand = _ref.shorthand,\n longhand = _ref.longhand;\n var short = JSON.stringify((_JSON$stringify = {}, _JSON$stringify[shorthand.property] = shorthand.value, _JSON$stringify));\n var long = JSON.stringify((_JSON$stringify2 = {}, _JSON$stringify2[longhand.property] = longhand.value, _JSON$stringify2)); // eslint-disable-next-line no-console\n\n console.warn(\"Styles `\" + short + \"` and `\" + long + \"` in object yielding class \\\"\" + classString.slice(1) + \"\\\" may result in unexpected behavior. Mixing shorthand and longhand properties within the same style object is unsupported with atomic rendering.\");\n });\n }\n } // remove leading space\n\n\n return classString.slice(1);\n}\n\nfunction validateValueType(value, key) {\n if (value === null || Array.isArray(value) || typeof value !== \"number\" && typeof value !== \"string\") {\n throw new Error(\"Unsupported style value: \" + JSON.stringify(value) + \" used in property \" + JSON.stringify(key));\n }\n}\n\nfunction _typeof$1(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof$1 = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof$1 = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof$1(obj);\n}\n/* eslint-disable no-console */\n\n\nvar validAnimationState = /^(from|to|\\+?(\\d*\\.)?\\d+%)(\\s*,\\s*(from|to|\\+?(\\d*\\.)?\\d+%))*$/;\n\nfunction validateKeyframesObject(keyframes) {\n var valid = true;\n\n for (var animationState in keyframes) {\n var value = keyframes[animationState];\n\n if (!validAnimationState.test(animationState)) {\n valid = false;\n console.warn(\"Warning: property \\\"\" + animationState + \"\\\" in keyframes object \" + JSON.stringify(keyframes) + \" is not a valid. Must be \\\"from\\\", \\\"to\\\", or a percentage.\");\n }\n\n if (_typeof$1(value) !== \"object\") {\n valid = false;\n console.warn(\"Warning: value for \\\"\" + animationState + \"\\\" property in keyframes object \" + JSON.stringify(keyframes) + \" must be an object. Instead it was a \" + _typeof$1(value) + \".\");\n }\n\n if (!valid) {\n console.warn(\"Warning: object used as value for \\\"animationName\\\" style is invalid:\", keyframes);\n }\n }\n}\n\nfunction atomicSelector(id, pseudo) {\n var selector = \".\" + id;\n\n if (pseudo) {\n selector += pseudo;\n }\n\n return selector;\n}\n\nfunction keyframesToBlock(keyframes) {\n if (process.env.NODE_ENV !== \"production\") {\n validateKeyframesObject(keyframes);\n }\n\n if (process.env.NODE_ENV !== \"production\" && typeof Object.getPrototypeOf(keyframes) !== \"undefined\") {\n if (Object.getPrototypeOf(keyframes) !== Object.getPrototypeOf({})) {\n // eslint-disable-next-line no-console\n console.warn(\"Only plain objects should be used as animation values. Unexpectedly recieved:\", keyframes);\n }\n }\n\n var result = \"\";\n\n for (var animationState in keyframes) {\n result += animationState + \"{\" + declarationsToBlock(keyframes[animationState]) + \"}\";\n }\n\n return result;\n}\n\nfunction declarationsToBlock(style) {\n var css = \"\";\n\n for (var prop in style) {\n var val = style[prop];\n\n if (typeof val === \"string\" || typeof val === \"number\") {\n css += hyphenateStyleName(prop) + \":\" + val + \";\";\n }\n } // trim trailing semicolon\n\n\n return css.slice(0, -1);\n}\n\nfunction keyframesBlockToRule(id, block) {\n return \"@keyframes \" + id + \"{\" + block + \"}\";\n}\n\nfunction fontFaceBlockToRule(id, block) {\n return \"@font-face{font-family:\" + id + \";\" + block + \"}\";\n}\n\nfunction styleBlockToRule(selector, block) {\n return selector + \"{\" + block + \"}\";\n}\n/* eslint-env browser */\n\n\nvar insertRuleIntoDevtools = function insertRuleIntoDevtools(selector, block) {\n // start after the . combinator and cut at the first : if there is one to cut out the pseudo classes\n var key = selector.substring(1, selector.indexOf(\":\") !== -1 ? selector.indexOf(\":\") : selector.length);\n var styles = {}; // split the declaration to catch vendor prefixing\n\n for (var _iterator = block.split(\";\"), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var _decl = _ref;\n if (_decl.trim() !== \"\" && !window.__STYLETRON_DEVTOOLS__.atomicMap[key]) styles[_decl.substring(0, _decl.indexOf(\":\"))] = _decl.substring(_decl.indexOf(\":\") + 1, _decl.length);\n }\n\n window.__STYLETRON_DEVTOOLS__.atomicMap[key] = styles;\n};\n\nvar hydrateDevtoolsRule = function hydrateDevtoolsRule(cssString) {\n var id = cssString.substring(0, 3);\n var block = cssString.substring(4, cssString.length - 1);\n insertRuleIntoDevtools(id, block);\n};\n/* eslint-env browser */\n\n\nvar STYLES_HYDRATOR = /\\.([^{:]+)(:[^{]+)?{(?:[^}]*;)?([^}]*?)}/g;\nvar KEYFRAMES_HYRDATOR = /@keyframes ([^{]+){((?:(?:from|to|(?:\\d+\\.?\\d*%))\\{(?:[^}])*})*)}/g;\nvar FONT_FACE_HYDRATOR = /@font-face\\{font-family:([^;]+);([^}]*)\\}/g;\n\nfunction hydrateStyles(cache, hydrator, css) {\n var match;\n\n while (match = hydrator.exec(css)) {\n var _match = match,\n id = _match[1],\n pseudo = _match[2],\n key = _match[3];\n\n if (true && process.env.NODE_ENV !== \"production\" && window.__STYLETRON_DEVTOOLS__) {\n hydrateDevtoolsRule(match[0]);\n }\n\n var fullKey = pseudo ? \"\" + pseudo + key : key;\n cache.cache[fullKey] = id; // set cache without triggering side effects\n\n cache.idGenerator.increment(); // increment id\n }\n}\n\nfunction hydrate(cache, hydrator, css) {\n var match;\n\n while (match = hydrator.exec(css)) {\n var _match2 = match,\n id = _match2[1],\n key = _match2[2];\n\n if (true && process.env.NODE_ENV !== \"production\" && window.__STYLETRON_DEVTOOLS__) {\n hydrateDevtoolsRule(match[0]);\n }\n\n cache.cache[key] = id; // set cache without triggering side effects\n\n cache.idGenerator.increment(); // increment id\n }\n}\n\nvar StyletronClient = /*#__PURE__*/function () {\n function StyletronClient(opts) {\n var _this = this;\n\n if (opts === void 0) {\n opts = {};\n }\n\n this.styleElements = {};\n var styleIdGenerator = new SequentialIDGenerator(opts.prefix);\n\n var onNewStyle = function onNewStyle(cache, id, value) {\n var pseudo = value.pseudo,\n block = value.block;\n var sheet = _this.styleElements[cache.key].sheet;\n var selector = atomicSelector(id, pseudo);\n var rule = styleBlockToRule(selector, block);\n\n try {\n sheet.insertRule(rule, sheet.cssRules.length);\n\n if (true && process.env.NODE_ENV !== \"production\" && window.__STYLETRON_DEVTOOLS__) {\n insertRuleIntoDevtools(selector, block);\n }\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to inject CSS: \\\"\" + rule + \"\\\". Perhaps this has invalid or un-prefixed properties?\");\n }\n }\n }; // Setup style cache\n\n\n this.styleCache = new MultiCache(styleIdGenerator, function (media, _cache, insertBeforeMedia) {\n var styleElement = document.createElement(\"style\");\n styleElement.media = media;\n\n if (insertBeforeMedia === void 0) {\n _this.container.appendChild(styleElement);\n } else {\n var insertBeforeIndex = findSheetIndexWithMedia(_this.container.children, insertBeforeMedia);\n\n _this.container.insertBefore(styleElement, _this.container.children[insertBeforeIndex]);\n }\n\n _this.styleElements[media] = styleElement;\n }, onNewStyle);\n this.keyframesCache = new Cache(new SequentialIDGenerator(opts.prefix), function (cache, id, value) {\n _this.styleCache.getCache(\"\");\n\n var sheet = _this.styleElements[\"\"].sheet;\n var rule = keyframesBlockToRule(id, keyframesToBlock(value));\n\n try {\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to inject CSS: \\\"\" + rule + \"\\\". Perhaps this has invalid or un-prefixed properties?\");\n }\n }\n });\n this.fontFaceCache = new Cache(new SequentialIDGenerator(opts.prefix), function (cache, id, value) {\n _this.styleCache.getCache(\"\");\n\n var sheet = _this.styleElements[\"\"].sheet;\n var rule = fontFaceBlockToRule(id, declarationsToBlock(value));\n\n try {\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to inject CSS: \\\"\" + rule + \"\\\". Perhaps this has invalid or un-prefixed properties?\");\n }\n }\n });\n\n if (opts.container) {\n this.container = opts.container;\n } // Hydrate\n\n\n if (opts.hydrate && opts.hydrate.length > 0) {\n // infer container from parent element\n if (!this.container) {\n var parentElement = opts.hydrate[0].parentElement;\n\n if (parentElement !== null && parentElement !== void 0) {\n this.container = parentElement;\n }\n }\n\n for (var i = 0; i < opts.hydrate.length; i++) {\n var element = opts.hydrate[i];\n var hydrateType = element.getAttribute(\"data-hydrate\");\n\n if (hydrateType === \"font-face\") {\n hydrate(this.fontFaceCache, FONT_FACE_HYDRATOR, element.textContent);\n continue;\n }\n\n if (hydrateType === \"keyframes\") {\n hydrate(this.keyframesCache, KEYFRAMES_HYRDATOR, element.textContent);\n continue;\n }\n\n var key = element.media ? element.media : \"\";\n this.styleElements[key] = element;\n var cache = new Cache(styleIdGenerator, onNewStyle);\n cache.key = key;\n hydrateStyles(cache, STYLES_HYDRATOR, element.textContent);\n this.styleCache.sortedCacheKeys.push(key);\n this.styleCache.caches[key] = cache;\n }\n }\n\n if (!this.container) {\n if (document.head === null) {\n throw new Error(\"No container provided and `document.head` was null\");\n }\n\n this.container = document.head;\n }\n }\n\n var _proto = StyletronClient.prototype;\n\n _proto.renderStyle = function renderStyle(style) {\n return injectStylePrefixed(this.styleCache, style, \"\", \"\");\n };\n\n _proto.renderFontFace = function renderFontFace(fontFace) {\n var key = declarationsToBlock(fontFace);\n return this.fontFaceCache.addValue(key, fontFace);\n };\n\n _proto.renderKeyframes = function renderKeyframes(keyframes) {\n var key = keyframesToBlock(keyframes);\n return this.keyframesCache.addValue(key, keyframes);\n };\n\n return StyletronClient;\n}();\n\nfunction findSheetIndexWithMedia(children, media) {\n var index = 0;\n\n for (; index < children.length; index++) {\n var child = children[index];\n\n if (child.tagName === \"STYLE\" && child.media === media) {\n return index;\n }\n }\n\n return -1;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar StyletronServer = /*#__PURE__*/function () {\n function StyletronServer(opts) {\n var _this = this;\n\n if (opts === void 0) {\n opts = {};\n }\n\n this.styleRules = {\n \"\": \"\"\n };\n this.styleCache = new MultiCache(new SequentialIDGenerator(opts.prefix), function (media) {\n _this.styleRules[media] = \"\";\n }, function (cache, id, value) {\n var pseudo = value.pseudo,\n block = value.block;\n _this.styleRules[cache.key] += styleBlockToRule(atomicSelector(id, pseudo), block);\n });\n this.fontFaceRules = \"\";\n this.fontFaceCache = new Cache(new SequentialIDGenerator(opts.prefix), function (cache, id, value) {\n _this.fontFaceRules += fontFaceBlockToRule(id, declarationsToBlock(value));\n });\n this.keyframesRules = \"\";\n this.keyframesCache = new Cache(new SequentialIDGenerator(opts.prefix), function (cache, id, value) {\n _this.keyframesRules += keyframesBlockToRule(id, keyframesToBlock(value));\n });\n }\n\n var _proto = StyletronServer.prototype;\n\n _proto.renderStyle = function renderStyle(style) {\n return injectStylePrefixed(this.styleCache, style, \"\", \"\");\n };\n\n _proto.renderFontFace = function renderFontFace(fontFace) {\n var key = JSON.stringify(fontFace);\n return this.fontFaceCache.addValue(key, fontFace);\n };\n\n _proto.renderKeyframes = function renderKeyframes(keyframes) {\n var key = JSON.stringify(keyframes);\n return this.keyframesCache.addValue(key, keyframes);\n };\n\n _proto.getStylesheets = function getStylesheets() {\n return [].concat(this.keyframesRules.length ? [{\n css: this.keyframesRules,\n attrs: {\n \"data-hydrate\": \"keyframes\"\n }\n }] : [], this.fontFaceRules.length ? [{\n css: this.fontFaceRules,\n attrs: {\n \"data-hydrate\": \"font-face\"\n }\n }] : [], sheetify(this.styleRules, this.styleCache.getSortedCacheKeys()));\n };\n\n _proto.getStylesheetsHtml = function getStylesheetsHtml(className) {\n if (className === void 0) {\n className = \"_styletron_hydrate_\";\n }\n\n return generateHtmlString(this.getStylesheets(), className);\n };\n\n _proto.getCss = function getCss() {\n return this.keyframesRules + this.fontFaceRules + stringify(this.styleRules, this.styleCache.getSortedCacheKeys());\n };\n\n return StyletronServer;\n}();\n\nfunction generateHtmlString(sheets, className) {\n var html = \"\";\n\n for (var i = 0; i < sheets.length; i++) {\n var sheet = sheets[i];\n\n var _sheet$attrs = sheet.attrs,\n originalClassName = _sheet$attrs.class,\n rest = _objectWithoutProperties(_sheet$attrs, [\"class\"]);\n\n var attrs = Object.assign({\n class: originalClassName ? className + \" \" + originalClassName : className\n }, rest);\n html += \"\" + sheet.css + \"\";\n }\n\n return html;\n}\n\nfunction attrsToString(attrs) {\n var result = \"\";\n\n for (var attr in attrs) {\n var value = attrs[attr];\n\n if (value === true) {\n result += \" \" + attr;\n } else if (value !== false) {\n result += \" \" + attr + \"=\\\"\" + value + \"\\\"\";\n }\n }\n\n return result;\n}\n\nfunction stringify(styleRules, sortedCacheKeys) {\n var result = \"\";\n sortedCacheKeys.forEach(function (cacheKey) {\n var rules = styleRules[cacheKey];\n\n if (cacheKey !== \"\") {\n result += \"@media \" + cacheKey + \"{\" + rules + \"}\";\n } else {\n result += rules;\n }\n });\n return result;\n}\n\nfunction sheetify(styleRules, sortedCacheKeys) {\n if (sortedCacheKeys.length === 0) {\n return [{\n css: \"\",\n attrs: {}\n }];\n }\n\n var sheets = [];\n sortedCacheKeys.forEach(function (cacheKey) {\n // omit media (cacheKey) attribute if empty\n var attrs = cacheKey === \"\" ? {} : {\n media: cacheKey\n };\n sheets.push({\n css: styleRules[cacheKey],\n attrs: attrs\n });\n });\n return sheets;\n}\n\nexport { StyletronClient as Client, StyletronServer as Server };","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n} // Note: $Shape is needed to make polymorphic withStyle refinements work correctly\n// It seems functions satisfy this type without $Shape\n// See: https://github.com/facebook/flow/issues/6784\n//\n//\n//\n//\n//\n//\n\n\nfunction driver(style, styletron) {\n var tx = renderDeclarativeRules(style, styletron);\n return styletron.renderStyle(tx);\n}\n\nfunction getInitialStyle() {\n return {};\n}\n\nfunction renderDeclarativeRules(style, styletron) {\n for (var key in style) {\n var val = style[key];\n\n if (key === \"animationName\" && typeof val !== \"string\") {\n style.animationName = styletron.renderKeyframes(val);\n continue;\n }\n\n if (key === \"fontFamily\" && typeof val !== \"string\") {\n if (Array.isArray(val)) {\n var result = \"\";\n\n for (var _iterator = val, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var _font = _ref;\n\n if (_typeof(_font) === \"object\") {\n result += styletron.renderFontFace(_font) + \",\";\n } else if (typeof _font === \"string\") {\n result += _font + \",\";\n }\n }\n\n style.fontFamily = result.slice(0, -1);\n continue;\n } else if (val === void 0) {\n continue;\n } else {\n style.fontFamily = styletron.renderFontFace(val);\n continue;\n }\n }\n\n if (_typeof(val) === \"object\" && val !== null) {\n renderDeclarativeRules(val, styletron);\n }\n }\n\n return style;\n}\n\nexport { driver, getInitialStyle, renderDeclarativeRules };","import { Component, createContext, createElement, forwardRef, useContext, useRef } from 'react';\nimport { driver, getInitialStyle } from 'styletron-standard';\n/* eslint-env browser */\n\n/* global module */\n\nfunction addDebugMetadata(instance, stackIndex) {\n var _ref = new Error(\"stacktrace source\"),\n stack = _ref.stack,\n stacktrace = _ref.stacktrace,\n message = _ref.message;\n\n instance.debug = {\n stackInfo: {\n stack: stack,\n stacktrace: stacktrace,\n message: message\n },\n stackIndex: stackIndex\n };\n} // DEVTOOLS SETUP\n\n\nvar setupDevtoolsExtension = function setupDevtoolsExtension() {\n var atomicMap = {};\n var extensionsMap = new Map();\n var stylesMap = new Map();\n\n var getStyles = function getStyles(className) {\n var styles = {};\n\n if (typeof className !== \"string\") {\n return styles;\n }\n\n if (stylesMap.has(className)) {\n styles.styles = stylesMap.get(className);\n var classList = className.split(\" \");\n\n if (classList.length) {\n var classes = {};\n classList.forEach(function (singleClassName) {\n classes[singleClassName] = atomicMap[singleClassName];\n });\n styles.classes = classes;\n }\n\n if (extensionsMap.has(className)) {\n var extension = extensionsMap.get(className);\n styles.extends = extension;\n }\n\n return styles;\n }\n };\n\n window.__STYLETRON_DEVTOOLS__ = {\n atomicMap: atomicMap,\n extensionsMap: extensionsMap,\n stylesMap: stylesMap,\n getStyles: getStyles\n };\n};\n\nvar BrowserDebugEngine = /*#__PURE__*/function () {\n function BrowserDebugEngine(worker) {\n if (!worker) {\n var workerBlob = new Blob([\"importScripts(\\\"https://unpkg.com/css-to-js-sourcemap-worker@2.0.5/worker.js\\\")\"], {\n type: \"application/javascript\"\n });\n worker = new Worker(URL.createObjectURL(workerBlob));\n worker.postMessage({\n id: \"init_wasm\",\n url: \"https://unpkg.com/css-to-js-sourcemap-worker@2.0.5/mappings.wasm\"\n });\n worker.postMessage({\n id: \"set_render_interval\",\n interval: 120\n });\n\n if (module.hot) {\n module.hot.addStatusHandler(function (status) {\n if (status === \"dispose\") {\n worker.postMessage({\n id: \"invalidate\"\n });\n }\n });\n }\n }\n\n this.worker = worker;\n this.counter = 0;\n\n this.worker.onmessage = function (msg) {\n var _msg$data = msg.data,\n id = _msg$data.id,\n css = _msg$data.css;\n\n if (id === \"render_css\" && css) {\n var style = document.createElement(\"style\");\n style.appendChild(document.createTextNode(css));\n document.head.appendChild(style);\n }\n };\n }\n\n var _proto = BrowserDebugEngine.prototype;\n\n _proto.debug = function debug(_ref2) {\n var stackIndex = _ref2.stackIndex,\n stackInfo = _ref2.stackInfo;\n var className = \"__debug-\" + this.counter++;\n this.worker.postMessage({\n id: \"add_mapped_class\",\n className: className,\n stackInfo: stackInfo,\n stackIndex: stackIndex\n });\n return className;\n };\n\n return BrowserDebugEngine;\n}();\n\nvar DebugEngine = BrowserDebugEngine;\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n/* eslint-env browser */\n\n/* eslint-disable no-unused-vars, no-redeclare, no-shadow */\n\n\nvar noopEngine = {\n renderStyle: function renderStyle() {\n return \"\";\n },\n renderKeyframes: function renderKeyframes() {\n return \"\";\n },\n renderFontFace: function renderFontFace() {\n return \"\";\n }\n};\nvar StyletronContext = createContext(noopEngine);\nvar HydrationContext = createContext(false);\nvar DebugEngineContext = createContext();\nvar ThemeContext = createContext();\n\nvar DevProvider = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DevProvider, _React$Component);\n\n function DevProvider(props) {\n var _this;\n\n _this = _React$Component.call(this) || this;\n _this.state = {\n hydrating: Boolean(props.debugAfterHydration)\n };\n return _this;\n }\n\n var _proto = DevProvider.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n {\n if (this.state.hydrating === true) {\n this.setState({\n hydrating: false\n });\n }\n }\n };\n\n _proto.render = function render() {\n return createElement(StyletronContext.Provider, {\n value: this.props.value\n }, createElement(DebugEngineContext.Provider, {\n value: this.props.debug\n }, createElement(HydrationContext.Provider, {\n value: this.state.hydrating\n }, this.props.children)));\n };\n\n return DevProvider;\n}(Component);\n\nvar Provider = true && process.env.NODE_ENV !== \"production\" ? DevProvider : StyletronContext.Provider;\n\nif (true && process.env.NODE_ENV !== \"production\" && !window.__STYLETRON_DEVTOOLS__) {\n setupDevtoolsExtension();\n}\n\nfunction checkNoopEngine(engine) {\n // if no engine provided, we default to no-op, handy for tests\n // however, print a warning in other envs\n if (process.env.NODE_ENV !== \"test\") {\n engine === noopEngine && // eslint-disable-next-line no-console\n console.warn(process.env.NODE_ENV !== \"production\" ? \"\\nStyletron has been switched to a no-op (test) mode.\\n\\nA Styletron styled component was rendered, but no Styletron engine instance was provided in React context.\\n\\nDid you forget to provide a Styletron engine instance to React context via using the Styletron provider component?\\n\\nNote: Providers and Consumers must come from the exact same React.createContext call to work.\\nIf your app has multiple instances of the \\\"styletron-react\\\" package in your node_module tree,\\nyour Provider may be coming from a different React.createContext call, which means the styled components\\nwill not recieve the provided engine instance. This scenario can arise, for example, when using \\\"npm link\\\".\\n\" : \"Styletron Provider is not set up. Defaulting to no-op.\");\n }\n}\n\nfunction useStyletron() {\n var styletronEngine = useContext(StyletronContext);\n var debugEngine = useContext(DebugEngineContext);\n var hydrating = useContext(HydrationContext);\n checkNoopEngine(styletronEngine);\n var debugClassName = useRef(\"\");\n var prevDebugClassNameDeps = useRef([]);\n return [function css(style) {\n var className = driver(style, styletronEngine);\n\n if (!(true && process.env.NODE_ENV !== \"production\")) {\n return className;\n }\n\n var _ref = new Error(\"stacktrace source\"),\n stack = _ref.stack,\n message = _ref.message;\n\n var nextDeps = [debugEngine, hydrating];\n\n if (prevDebugClassNameDeps.current[0] !== nextDeps[0] || prevDebugClassNameDeps.current[1] !== nextDeps[1]) {\n if (debugEngine && !hydrating) {\n debugClassName.current = debugEngine.debug({\n stackInfo: {\n stack: stack,\n message: message\n },\n stackIndex: 1\n });\n }\n\n prevDebugClassNameDeps.current = nextDeps;\n }\n\n if (debugClassName.current) {\n return debugClassName.current + \" \" + className;\n }\n\n return className;\n }];\n}\n\nfunction createStyled(_ref2) {\n var getInitialStyle$$1 = _ref2.getInitialStyle,\n driver$$1 = _ref2.driver,\n wrapper = _ref2.wrapper;\n\n function styled(base, styleArg) {\n if (process.env.NODE_ENV !== \"production\") {\n if (base.__STYLETRON__) {\n /* eslint-disable no-console */\n console.warn(\"It appears you are passing a styled component into `styled`.\");\n console.warn(\"For composition with existing styled components, use `withStyle` or `withTransform` instead.\");\n /* eslint-enable no-console */\n }\n }\n\n var baseStyletron = {\n reducers: [],\n base: base,\n driver: driver$$1,\n getInitialStyle: getInitialStyle$$1,\n wrapper: wrapper\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n addDebugMetadata(baseStyletron, 2);\n }\n\n return createStyledElementComponent(autoComposeShallow(baseStyletron, styleArg));\n }\n\n return styled;\n}\n\nvar styled = createStyled({\n getInitialStyle: getInitialStyle,\n driver: driver,\n wrapper: function wrapper(Component$$1) {\n return Component$$1;\n }\n});\n\nfunction withTransform(component, transformer) {\n var styletron = component.__STYLETRON__;\n\n if (true && process.env.NODE_ENV !== \"production\") {\n addDebugMetadata(styletron, 2);\n }\n\n return createStyledElementComponent(composeDynamic(styletron, transformer));\n}\n\nvar withStyle = withStyleDeep;\n\nfunction withStyleDeep(component, styleArg) {\n var styletron = component.__STYLETRON__;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!styletron) {\n /* eslint-disable no-console */\n console.warn(\"The first parameter to `withStyle` must be a styled component (without extra wrappers).\");\n /* eslint-enable no-console */\n }\n }\n\n if (true && process.env.NODE_ENV !== \"production\") {\n addDebugMetadata(styletron, 2);\n return createStyledElementComponent(addExtension(autoComposeDeep(styletron, styleArg), component, styleArg));\n } else {\n return createStyledElementComponent(autoComposeDeep(styletron, styleArg));\n }\n}\n\nfunction withWrapper(component, wrapper) {\n var styletron = component.__STYLETRON__;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!styletron) {\n /* eslint-disable no-console */\n console.warn(\"The first parameter to `withWrapper` must be a styled component (without extra wrappers).\");\n /* eslint-enable no-console */\n }\n }\n\n var composed = {\n getInitialStyle: styletron.getInitialStyle,\n base: styletron.base,\n driver: styletron.driver,\n wrapper: wrapper,\n reducers: styletron.reducers\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n addDebugMetadata(composed, 2);\n }\n\n return createStyledElementComponent(composed);\n}\n\nfunction autoComposeShallow(styletron, styleArg) {\n if (typeof styleArg === \"function\") {\n return dynamicComposeShallow(styletron, styleArg);\n }\n\n return staticComposeShallow(styletron, styleArg);\n}\n\nfunction addExtension(composed, component, styleArg) {\n return Object.assign({}, composed, {\n ext: {\n with: styleArg,\n name: component.displayName,\n base: component.__STYLETRON__.base,\n getInitialStyle: component.__STYLETRON__.reducers.length ? component.__STYLETRON__.reducers[0].reducer : component.__STYLETRON__.getInitialStyle\n }\n });\n}\n\nfunction autoComposeDeep(styletron, styleArg) {\n if (typeof styleArg === \"function\") {\n return dynamicComposeDeep(styletron, styleArg);\n }\n\n return staticComposeDeep(styletron, styleArg);\n}\n\nfunction staticComposeShallow(styletron, style) {\n return composeStatic(styletron, createShallowMergeReducer(style));\n}\n\nfunction staticComposeDeep(styletron, style) {\n return composeStatic(styletron, createDeepMergeReducer(style));\n}\n\nfunction dynamicComposeShallow(styletron, styleFn) {\n return composeDynamic(styletron, function (style, props) {\n return shallowMerge(style, styleFn(props));\n });\n}\n\nfunction dynamicComposeDeep(styletron, styleFn) {\n return composeDynamic(styletron, function (style, props) {\n return deepMerge(style, styleFn(props));\n });\n}\n\nfunction createShallowMergeReducer(style) {\n return {\n reducer: function reducer(inputStyle) {\n return shallowMerge(inputStyle, style);\n },\n assignmentCommutative: true,\n factory: createShallowMergeReducer,\n style: style\n };\n}\n\nfunction createDeepMergeReducer(style) {\n return {\n reducer: function reducer(inputStyle) {\n return deepMerge(inputStyle, style);\n },\n assignmentCommutative: true,\n factory: createDeepMergeReducer,\n style: style\n };\n}\n\nfunction composeStatic(styletron, reducerContainer) {\n if (styletron.reducers.length === 0) {\n var style = reducerContainer.reducer(styletron.getInitialStyle());\n var result = {\n reducers: styletron.reducers,\n base: styletron.base,\n driver: styletron.driver,\n wrapper: styletron.wrapper,\n getInitialStyle: function getInitialStyle$$1() {\n return style;\n }\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n result.debug = styletron.debug;\n }\n\n return result;\n } else {\n var last = styletron.reducers[0];\n\n if (last.assignmentCommutative === true && reducerContainer.assignmentCommutative === true) {\n var composed = reducerContainer.reducer(last.style);\n var _result = {\n getInitialStyle: styletron.getInitialStyle,\n base: styletron.base,\n driver: styletron.driver,\n wrapper: styletron.wrapper,\n reducers: [last.factory(composed)].concat(styletron.reducers.slice(1))\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n _result.debug = styletron.debug;\n }\n\n return _result;\n }\n\n return composeDynamic(styletron, reducerContainer.reducer);\n }\n}\n\nfunction composeDynamic(styletron, reducer) {\n var composed = {\n getInitialStyle: styletron.getInitialStyle,\n base: styletron.base,\n driver: styletron.driver,\n wrapper: styletron.wrapper,\n reducers: [{\n assignmentCommutative: false,\n reducer: reducer\n }].concat(styletron.reducers)\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n composed.debug = styletron.debug;\n }\n\n return composed;\n}\n\nfunction createStyledElementComponent(styletron) {\n var reducers = styletron.reducers,\n base = styletron.base,\n driver$$1 = styletron.driver,\n wrapper = styletron.wrapper,\n getInitialStyle$$1 = styletron.getInitialStyle,\n ext = styletron.ext;\n\n if (true && process.env.NODE_ENV !== \"production\") {\n var debugStackInfo, debugStackIndex;\n\n if (styletron.debug) {\n debugStackInfo = styletron.debug.stackInfo;\n debugStackIndex = styletron.debug.stackIndex;\n }\n }\n\n if (true && process.env.NODE_ENV !== \"production\") {\n var debugClassName;\n }\n\n var StyledElement = forwardRef(function (props, ref) {\n var styletron = useContext(StyletronContext);\n var debugEngine = useContext(DebugEngineContext);\n var hydrating = useContext(HydrationContext);\n checkNoopEngine(styletron);\n var elementProps = omitPrefixedKeys(props);\n var style = resolveStyle(getInitialStyle$$1, reducers, props);\n\n if (props.$style) {\n if (typeof props.$style === \"function\") {\n style = deepMerge(style, props.$style(props));\n } else {\n style = deepMerge(style, props.$style);\n }\n }\n\n var styleClassString = driver$$1(style, styletron);\n var Element = props.$as ? props.$as : base;\n elementProps.className = props.className ? props.className + \" \" + styleClassString : styleClassString;\n\n if (true && process.env.NODE_ENV !== \"production\" && debugEngine && !hydrating) {\n if (!debugClassName) {\n debugClassName = debugEngine.debug({\n stackInfo: debugStackInfo,\n stackIndex: debugStackIndex\n });\n }\n\n var joined = debugClassName + \" \" + elementProps.className;\n elementProps.className = joined;\n }\n\n if (true && process.env.NODE_ENV !== \"production\" && window.__STYLETRON_DEVTOOLS__) {\n window.__STYLETRON_DEVTOOLS__.stylesMap.set(elementProps.className, style);\n\n if (ext) {\n window.__STYLETRON_DEVTOOLS__.extensionsMap.set(elementProps.className, {\n base: ext.base,\n displayName: ext.name,\n initialStyles: ext.getInitialStyle({}, props),\n styleOverrides: typeof ext.with === \"function\" ? ext.with(props) : ext.with\n });\n }\n }\n\n if (props.$ref) {\n // eslint-disable-next-line no-console\n console.warn(\"The prop `$ref` has been deprecated. Use `ref` instead. Refs are now forwarded with React.forwardRef.\");\n }\n\n return createElement(Element, _extends({}, elementProps, {\n ref: ref || props.$ref\n }));\n });\n var Wrapped = wrapper(StyledElement);\n Wrapped.__STYLETRON__ = {\n base: base,\n reducers: reducers,\n driver: driver$$1,\n wrapper: wrapper,\n getInitialStyle: getInitialStyle$$1\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n var displayName;\n\n if (typeof base === \"string\") {\n displayName = base;\n } else if (base.displayName) {\n displayName = base.displayName;\n } else if (base.name) {\n displayName = base.name;\n } else {\n displayName = \"Unknown\";\n }\n\n Wrapped.displayName = \"Styled(\" + displayName + \")\";\n }\n\n return Wrapped;\n} // Utility functions\n\n\nfunction resolveStyle(getInitialStyle$$1, reducers, props) {\n var result = getInitialStyle$$1();\n var i = reducers.length;\n\n while (i--) {\n // Cast to allow passing unused props param in case of static reducer\n var reducer = reducers[i].reducer;\n result = reducer(result, props);\n }\n\n return result;\n}\n\nfunction isObject(x) {\n return _typeof(x) === \"object\" && x !== null;\n}\n\nfunction omitPrefixedKeys(source) {\n var result = {};\n\n for (var key in source) {\n if (key[0] !== \"$\") {\n result[key] = source[key];\n }\n }\n\n return result;\n}\n\nfunction deepMerge(a, b) {\n var result = assign({}, a);\n\n for (var key in b) {\n var val = b[key];\n\n if (isObject(val) && isObject(a[key])) {\n result[key] = deepMerge(a[key], val);\n } else {\n result[key] = val;\n }\n }\n\n return result;\n}\n\nfunction shallowMerge(a, b) {\n return assign(assign({}, a), b);\n}\n\nfunction assign(target, source) {\n for (var key in source) {\n target[key] = source[key];\n }\n\n return target;\n}\n\nexport { DebugEngine, Provider, useStyletron, createStyled, styled, withTransform, withStyle, withStyleDeep, withWrapper, autoComposeShallow, autoComposeDeep, staticComposeShallow, staticComposeDeep, dynamicComposeShallow, dynamicComposeDeep, createShallowMergeReducer, createDeepMergeReducer, composeStatic, composeDynamic, createStyledElementComponent, resolveStyle };","import * as React from \"react\";\nimport { Client as Styletron } from \"styletron-engine-atomic\";\nimport { Provider, DebugEngine } from \"styletron-react\";\nconst debugEngine = process.env.NODE_ENV !== `production` ? new DebugEngine() : undefined;\nexport function wrapRootElement({\n element\n}, {\n prefix,\n debug\n}) {\n const enableDebug = debug === true || typeof debug === `undefined`;\n const styleElements = document.querySelectorAll(`._styletron_hydrate_`);\n return /*#__PURE__*/React.createElement(Provider, {\n value: new Styletron({\n hydrate: styleElements,\n prefix\n }),\n debugMode: enableDebug ? debugEngine : undefined,\n debugAfterHydration: enableDebug\n }, element);\n}","\"use strict\";\n\nexports.DEFAULT_OPTIONS = {\n maxWidth: 650,\n wrapperStyle: \"\",\n backgroundColor: \"white\",\n linkImagesToOriginal: true,\n showCaptions: false,\n markdownCaptions: false,\n withWebp: false,\n withAvif: false,\n tracedSVG: false,\n loading: \"lazy\",\n decoding: \"async\",\n disableBgImageOnAlpha: false,\n disableBgImage: false\n};\nexports.EMPTY_ALT = \"GATSBY_EMPTY_ALT\";\nexports.imageClass = \"gatsby-resp-image-image\";\nexports.imageWrapperClass = \"gatsby-resp-image-wrapper\";\nexports.imageBackgroundClass = \"gatsby-resp-image-background-image\";","\"use strict\";\n\nvar _require = require(\"./constants\"),\n DEFAULT_OPTIONS = _require.DEFAULT_OPTIONS,\n imageClass = _require.imageClass,\n imageBackgroundClass = _require.imageBackgroundClass,\n imageWrapperClass = _require.imageWrapperClass;\n\nexports.onRouteUpdate = function (apiCallbackContext, pluginOptions) {\n var options = Object.assign({}, DEFAULT_OPTIONS, pluginOptions);\n var imageWrappers = document.querySelectorAll(\".\" + imageWrapperClass); // https://css-tricks.com/snippets/javascript/loop-queryselectorall-matches/\n // for cross-browser looping through NodeList without polyfills\n\n var _loop = function _loop(i) {\n var imageWrapper = imageWrappers[i];\n var backgroundElement = imageWrapper.querySelector(\".\" + imageBackgroundClass);\n var imageElement = imageWrapper.querySelector(\".\" + imageClass);\n\n var onImageLoad = function onImageLoad() {\n backgroundElement.style.transition = \"opacity 0.5s 0.5s\";\n imageElement.style.transition = \"opacity 0.5s\";\n onImageComplete();\n };\n\n var onImageComplete = function onImageComplete() {\n backgroundElement.style.opacity = 0;\n imageElement.style.opacity = 1;\n imageElement.style.color = \"inherit\";\n imageElement.style.boxShadow = \"inset 0px 0px 0px 400px \" + options.backgroundColor;\n imageElement.removeEventListener(\"load\", onImageLoad);\n imageElement.removeEventListener(\"error\", onImageComplete);\n };\n\n imageElement.style.opacity = 0;\n imageElement.addEventListener(\"load\", onImageLoad);\n imageElement.addEventListener(\"error\", onImageComplete);\n\n if (imageElement.complete) {\n onImageComplete();\n }\n };\n\n for (var i = 0; i < imageWrappers.length; i++) {\n _loop(i);\n }\n};","import * as React from 'react';\nexport default {\n React\n};","import React, { createContext, useContext } from \"react\"\n\nconst GatsbyMDXScopeContext = createContext({})\n\nexport const useMDXScope = scope => {\n const contextScope = useContext(GatsbyMDXScopeContext)\n return scope || contextScope\n}\n\nexport const MDXScopeProvider = ({ __mdxScope, children }) =>\n React.createElement(\n GatsbyMDXScopeContext.Provider,\n { value: __mdxScope },\n children\n )\n","var scope_0 = require('/Users/matt/Projects/Blog/.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/e92f8988d65cf25c087d226e6c0ef06f.js').default;export default\n Object.assign({}, scope_0 )\n ","import React from \"react\"\nimport { MDXProvider, withMDXComponents } from \"@mdx-js/react\"\nimport { MDXScopeProvider } from \"./context\"\n\n/**\n * so, this import is weird right?\n *\n * # What it looks like:\n * we're importing a webpack loader directly into our runtime bundle\n *\n * # What it's actually doing:\n * We configure the `mdx-components` loader in gatsby-node's\n * `onCreateWebpackConfig`. The configuration sets the loader to handle its\n * own file, so if we import `./loaders/mdx-components`, the `mdx-components`\n * loader handles loading itself.\n *\n * # Why does this work?\n * The loader doesn't use the file argument to itself and instead returns\n * a generated file that includes the `gatsby-config` mdxPlugins wrapped in\n * require() statements. This results in the `mdxPlugins` being required\n * and available to the code after this import.\n *\n * # Have a better solution to this?\n * Submit a PR\n */\nimport { plugins as mdxPlugins } from \"./loaders/mdx-components\"\nimport scopeContexts from \"./loaders/mdx-scopes\"\n\nconst componentsAndGuards = {}\n\nconst componentFromGuards = arr =>\n function GatsbyMDXComponentFinder(props) {\n const { Component } = arr.find(({ guard }) => (guard ? guard(props) : true))\n return \n }\n\nmdxPlugins.forEach(({ guards = {}, components }) => {\n Object.entries(components).forEach(([componentName, Component]) => {\n if (componentsAndGuards[componentName]) {\n componentsAndGuards.push({ guard: guards[componentName], Component })\n } else {\n componentsAndGuards[componentName] = [\n { guard: guards[componentName], Component },\n ]\n }\n })\n})\n\nconst components = Object.entries(componentsAndGuards)\n .map(([name, arr]) => {\n return {\n [name]: componentFromGuards(\n arr.concat({ guard: undefined, Component: name })\n ),\n }\n })\n .reduce((acc, obj) => {\n return { ...acc, ...obj }\n }, {})\n\n// merge any components in wrapRootElement above this wrapRoot\nconst MDXConsumer = withMDXComponents(\n ({ components: componentsFromContext, children }) => (\n \n \n {children}\n \n \n )\n)\n\nconst WrapRootElement = ({ element }) => {element}\n\nexport default WrapRootElement\n","import wrap from \"./wrap-root-element\"\nexport const wrapRootElement = wrap\n","module.exports = {plugins: []}","import invariant from \"invariant\"; ////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\n\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n}; ////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\n\n\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\n\n\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\n}; ////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\n\n\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname); // ?a=b, /users?b=c => /users?a=b\n\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n } // profile, /users/789 => /users/789/profile\n\n\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n } // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n\n\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n}; ////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\n\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\n\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return {\n route: route,\n score: score,\n index: index\n };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\n\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n}; ////////////////////////////////////////////////////////////////////////////////\n\n\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n }); // try...catch iOS Safari limits to 100 pushState calls\n\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n}; ////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\n\n\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n return {\n get location() {\n return stack[index];\n },\n\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n\n get index() {\n return index;\n },\n\n get state() {\n return states[index];\n },\n\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = {\n pathname: pathname,\n search: search\n };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n}; ////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\n\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate; ////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/* eslint-disable jsx-a11y/anchor-has-content */\n\n\nimport React, { useContext, createContext } from \"react\";\nimport invariant from \"invariant\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\"; ////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\n\n\nvar LocationContext = createNamedContext(\"Location\"); // sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\n\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(LocationContext.Consumer, null, function (context) {\n return context ? children(context) : React.createElement(LocationProvider, null, children);\n });\n};\n\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n\n function LocationProvider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, LocationProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: {\n unlisten: null\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n return {\n navigate: navigate,\n location: location\n };\n };\n\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n\n _navigate(error.uri, {\n replace: true\n });\n } else {\n throw error;\n }\n };\n\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var refs = this.state.refs,\n history = this.props.history;\n\n history._onTransitionComplete();\n\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return {\n context: _this2.getContext()\n };\n });\n }\n });\n });\n });\n };\n\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n this.unmounted = true;\n refs.unlisten();\n };\n\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n return React.createElement(LocationContext.Provider, {\n value: context\n }, typeof children === \"function\" ? children(context) : children || null);\n };\n\n return LocationProvider;\n}(React.Component); ////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n\n return React.createElement(LocationContext.Provider, {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n }, children);\n}; ////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\n\n\nvar BaseContext = createNamedContext(\"Base\", {\n baseuri: \"/\",\n basepath: \"/\",\n navigate: globalHistory.navigate\n}); ////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\n\nvar Router = function Router(props) {\n return React.createElement(BaseContext.Consumer, null, function (baseContext) {\n return React.createElement(Location, null, function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n });\n });\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n var match = pick(routes, pathname);\n\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value; // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(Router, {\n location: location,\n primary: primary\n }, element.props.children) : undefined); // using 'div' for < 16.3 support\n\n var FocusWrapper = primary ? FocusHandler : component; // don't pass any props to 'div'\n\n var wrapperProps = primary ? _extends({\n uri: uri,\n location: location,\n component: component\n }, domProps) : domProps;\n return React.createElement(BaseContext.Provider, {\n value: {\n baseuri: uri,\n basepath: basepath,\n navigate: props.navigate\n }\n }, React.createElement(FocusWrapper, wrapperProps, clone));\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () =>
Not Found!
\n // \\n\\t\\n\\t \\n\\t {/* ... */}\\n\\t`\n // );\n return null;\n }\n };\n\n return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n primary: true\n};\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n return React.createElement(FocusContext.Consumer, null, function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n });\n}; // don't focus on initial render\n\n\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n\n _classCallCheck(this, FocusHandlerImpl);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n\n var requestFocus = this.props.requestFocus;\n\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n\n return React.createElement(Comp, _extends({\n style: _extends({\n outline: \"none\"\n }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps), React.createElement(FocusContext.Provider, {\n value: this.requestFocus\n }, this.props.children));\n };\n\n return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {}; ////////////////////////////////////////////////////////////////////////////////\n\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n return React.createElement(BaseContext.Consumer, null, function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(Location, null, function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({\n isCurrent: isCurrent,\n isPartiallyCurrent: isPartiallyCurrent,\n href: href,\n location: location\n }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n });\n });\n});\nLink.displayName = \"Link\";\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0; ////////////////////////////////////////////////////////////////////////////////\n\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n } // Support React < 16 with this hook\n\n\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), {\n replace: replace,\n state: state\n });\n });\n };\n\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n\n return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n return React.createElement(BaseContext.Consumer, null, function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(Location, null, function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, {\n baseuri: baseuri\n }, props));\n });\n });\n};\n\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0; ////////////////////////////////////////////////////////////////////////////////\n\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(BaseContext.Consumer, null, function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(Location, null, function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n });\n });\n}; ////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.location;\n};\n\nvar useNavigate = function useNavigate() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useNavigate hook was used but a BaseContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.navigate;\n};\n\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n var results = match(context.basepath, location.pathname);\n return results ? results.params : null;\n};\n\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \": Children of must have a `path` or `default` prop, or be a ``. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" requires both \\\"from\\\" and \\\"to\\\" props when inside a .\") : invariant(false) : void 0;\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n if (element.props.default) {\n return {\n value: element,\n default: true\n };\n }\n\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}; ////////////////////////////////////////////////////////////////////////\n\n\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch , BaseContext };","/**\n * Copyright (c) 2013-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\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst PartytownSnippet = \"/* Partytown 0.5.4 - MIT builder.io */\\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,\\\"/\\\"==(a=(o.lib||\\\"/~partytown/\\\")+(o.debug?\\\"debug/\\\":\\\"\\\"))[0]&&(s=e.querySelectorAll('script[type=\\\"text/partytown\\\"]'),i!=t?i.dispatchEvent(new CustomEvent(\\\"pt1\\\",{detail:t})):(d=setTimeout(w,1e4),e.addEventListener(\\\"pt0\\\",f),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||\\\"partytown-sw.js\\\"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener(\\\"statechange\\\",(function(t){\\\"activated\\\"==t.target.state&&h()}))}),console.error):w())))}function h(t){c=e.createElement(t?\\\"script\\\":\\\"iframe\\\"),t||(c.setAttribute(\\\"style\\\",\\\"display:block;width:0;height:0;border:0;visibility:hidden\\\"),c.setAttribute(\\\"aria-hidden\\\",!0)),c.src=a+\\\"partytown-\\\"+(t?\\\"atomics.js?v=0.5.4\\\":\\\"sandbox-sw.html?\\\"+Date.now()),e.body.appendChild(c)}function w(t,n){for(f(),t=0;t {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the `