{"version":3,"file":"app-ebe26bade85008187285.js","mappings":"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","sources":["webpack://insand_home/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/extends.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://insand_home/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://insand_home/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://insand_home/./node_modules/camelcase/index.js","webpack://insand_home/./node_modules/common-tags/es/TemplateTag/TemplateTag.js","webpack://insand_home/./node_modules/common-tags/es/inlineArrayTransformer/inlineArrayTransformer.js","webpack://insand_home/./node_modules/common-tags/es/stripIndentTransformer/stripIndentTransformer.js","webpack://insand_home/./node_modules/common-tags/es/trimResultTransformer/trimResultTransformer.js","webpack://insand_home/./node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.js","webpack://insand_home/./node_modules/common-tags/es/commaLists/commaLists.js","webpack://insand_home/./node_modules/common-tags/es/commaListsAnd/commaListsAnd.js","webpack://insand_home/./node_modules/common-tags/es/commaListsOr/commaListsOr.js","webpack://insand_home/./node_modules/common-tags/es/removeNonPrintingValuesTransformer/removeNonPrintingValuesTransformer.js","webpack://insand_home/./node_modules/common-tags/es/replaceSubstitutionTransformer/replaceSubstitutionTransformer.js","webpack://insand_home/./node_modules/common-tags/es/html/html.js","webpack://insand_home/./node_modules/common-tags/es/replaceResultTransformer/replaceResultTransformer.js","webpack://insand_home/./node_modules/common-tags/es/safeHtml/safeHtml.js","webpack://insand_home/./node_modules/common-tags/es/oneLine/oneLine.js","webpack://insand_home/./node_modules/common-tags/es/oneLineTrim/oneLineTrim.js","webpack://insand_home/./node_modules/common-tags/es/oneLineCommaLists/oneLineCommaLists.js","webpack://insand_home/./node_modules/common-tags/es/oneLineCommaListsOr/oneLineCommaListsOr.js","webpack://insand_home/./node_modules/common-tags/es/oneLineCommaListsAnd/oneLineCommaListsAnd.js","webpack://insand_home/./node_modules/common-tags/es/inlineLists/inlineLists.js","webpack://insand_home/./node_modules/common-tags/es/oneLineInlineLists/oneLineInlineLists.js","webpack://insand_home/./node_modules/common-tags/es/stripIndent/stripIndent.js","webpack://insand_home/./node_modules/common-tags/es/stripIndents/stripIndents.js","webpack://insand_home/./node_modules/exenv/index.js","webpack://insand_home/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://insand_home/./node_modules/react-modal/lib/components/Modal.js","webpack://insand_home/./node_modules/react-modal/lib/components/ModalPortal.js","webpack://insand_home/./node_modules/react-modal/lib/helpers/ariaAppHider.js","webpack://insand_home/./node_modules/react-modal/lib/helpers/bodyTrap.js","webpack://insand_home/./node_modules/react-modal/lib/helpers/classList.js","webpack://insand_home/./node_modules/react-modal/lib/helpers/focusManager.js","webpack://insand_home/./node_modules/react-modal/lib/helpers/portalOpenInstances.js","webpack://insand_home/./node_modules/react-modal/lib/helpers/safeHTMLElement.js","webpack://insand_home/./node_modules/react-modal/lib/helpers/scopeTab.js","webpack://insand_home/./node_modules/react-modal/lib/helpers/tabbable.js","webpack://insand_home/./node_modules/react-modal/lib/index.js","webpack://insand_home/./node_modules/smoothscroll-polyfill/dist/smoothscroll.js","webpack://insand_home/./node_modules/gatsby-link/index.js","webpack://insand_home/./node_modules/gatsby-link/parse-path.js","webpack://insand_home/./node_modules/gatsby-react-router-scroll/index.js","webpack://insand_home/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://insand_home/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://insand_home/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://insand_home/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://insand_home/./.cache/api-runner-browser-plugins.js","webpack://insand_home/./.cache/api-runner-browser.js","webpack://insand_home/./node_modules/mitt/dist/mitt.es.js","webpack://insand_home/./.cache/emitter.js","webpack://insand_home/./.cache/normalize-page-path.js","webpack://insand_home/./.cache/find-path.js","webpack://insand_home/./.cache/gatsby-browser-entry.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://insand_home/./.cache/prefetch.js","webpack://insand_home/./.cache/loader.js","webpack://insand_home/./.cache/page-renderer.js","webpack://insand_home/./.cache/route-announcer-props.js","webpack://insand_home/./.cache/navigation.js","webpack://insand_home/./node_modules/shallow-compare/es/index.js","webpack://insand_home/./.cache/ensure-resources.js","webpack://insand_home/./.cache/production-app.js","webpack://insand_home/./.cache/public-page-renderer-prod.js","webpack://insand_home/./.cache/public-page-renderer.js","webpack://insand_home/./.cache/react-lifecycles-compat.js","webpack://insand_home/./.cache/redirect-utils.js","webpack://insand_home/./.cache/register-service-worker.js","webpack://insand_home/./.cache/strip-prefix.js","webpack://insand_home/../src/image-utils.ts","webpack://insand_home/../src/components/hooks.ts","webpack://insand_home/../src/components/layout-wrapper.tsx","webpack://insand_home/../src/components/picture.tsx","webpack://insand_home/../src/components/placeholder.tsx","webpack://insand_home/../src/components/main-image.tsx","webpack://insand_home/../src/components/gatsby-image.server.tsx","webpack://insand_home/../src/components/gatsby-image.browser.tsx","webpack://insand_home/../src/components/static-image.server.tsx","webpack://insand_home/../src/components/static-image.tsx","webpack://insand_home/../src/components/later-hydrator.tsx","webpack://insand_home/./node_modules/gatsby-plugin-image/gatsby-browser.js","webpack://insand_home/./node_modules/gatsby-plugin-modal-routing-3/ModalRoutingContext.js","webpack://insand_home/./node_modules/gatsby-plugin-modal-routing-3/gatsby-browser.js","webpack://insand_home/./node_modules/gatsby-plugin-modal-routing-3/onClientEntry.js","webpack://insand_home/./node_modules/gatsby-plugin-modal-routing-3/shouldUpdateScroll.js","webpack://insand_home/./node_modules/gatsby-plugin-modal-routing-3/wrapPageElement.js","webpack://insand_home/./node_modules/gatsby-plugin-smoothscroll/gatsby-browser.js","webpack://insand_home/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://insand_home/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://insand_home/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://insand_home/./node_modules/invariant/browser.js","webpack://insand_home/./node_modules/lodash/_Hash.js","webpack://insand_home/./node_modules/lodash/_ListCache.js","webpack://insand_home/./node_modules/lodash/_Map.js","webpack://insand_home/./node_modules/lodash/_MapCache.js","webpack://insand_home/./node_modules/lodash/_Symbol.js","webpack://insand_home/./node_modules/lodash/_arrayMap.js","webpack://insand_home/./node_modules/lodash/_assocIndexOf.js","webpack://insand_home/./node_modules/lodash/_baseGet.js","webpack://insand_home/./node_modules/lodash/_baseGetTag.js","webpack://insand_home/./node_modules/lodash/_baseIsNative.js","webpack://insand_home/./node_modules/lodash/_baseToString.js","webpack://insand_home/./node_modules/lodash/_castPath.js","webpack://insand_home/./node_modules/lodash/_coreJsData.js","webpack://insand_home/./node_modules/lodash/_freeGlobal.js","webpack://insand_home/./node_modules/lodash/_getMapData.js","webpack://insand_home/./node_modules/lodash/_getNative.js","webpack://insand_home/./node_modules/lodash/_getRawTag.js","webpack://insand_home/./node_modules/lodash/_getValue.js","webpack://insand_home/./node_modules/lodash/_hashClear.js","webpack://insand_home/./node_modules/lodash/_hashDelete.js","webpack://insand_home/./node_modules/lodash/_hashGet.js","webpack://insand_home/./node_modules/lodash/_hashHas.js","webpack://insand_home/./node_modules/lodash/_hashSet.js","webpack://insand_home/./node_modules/lodash/_isKey.js","webpack://insand_home/./node_modules/lodash/_isKeyable.js","webpack://insand_home/./node_modules/lodash/_isMasked.js","webpack://insand_home/./node_modules/lodash/_listCacheClear.js","webpack://insand_home/./node_modules/lodash/_listCacheDelete.js","webpack://insand_home/./node_modules/lodash/_listCacheGet.js","webpack://insand_home/./node_modules/lodash/_listCacheHas.js","webpack://insand_home/./node_modules/lodash/_listCacheSet.js","webpack://insand_home/./node_modules/lodash/_mapCacheClear.js","webpack://insand_home/./node_modules/lodash/_mapCacheDelete.js","webpack://insand_home/./node_modules/lodash/_mapCacheGet.js","webpack://insand_home/./node_modules/lodash/_mapCacheHas.js","webpack://insand_home/./node_modules/lodash/_mapCacheSet.js","webpack://insand_home/./node_modules/lodash/_memoizeCapped.js","webpack://insand_home/./node_modules/lodash/_nativeCreate.js","webpack://insand_home/./node_modules/lodash/_objectToString.js","webpack://insand_home/./node_modules/lodash/_root.js","webpack://insand_home/./node_modules/lodash/_stringToPath.js","webpack://insand_home/./node_modules/lodash/_toKey.js","webpack://insand_home/./node_modules/lodash/_toSource.js","webpack://insand_home/./node_modules/lodash/eq.js","webpack://insand_home/./node_modules/lodash/get.js","webpack://insand_home/./node_modules/lodash/isArray.js","webpack://insand_home/./node_modules/lodash/isFunction.js","webpack://insand_home/./node_modules/lodash/isObject.js","webpack://insand_home/./node_modules/lodash/isObjectLike.js","webpack://insand_home/./node_modules/lodash/isSymbol.js","webpack://insand_home/./node_modules/lodash/memoize.js","webpack://insand_home/./node_modules/lodash/toString.js","webpack://insand_home/./node_modules/warning/warning.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://insand_home/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"],"sourcesContent":["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;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _extends() {\n module.exports = _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 module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"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;","'use strict';\n\nvar preserveCamelCase = function preserveCamelCase(string) {\n var isLastCharLower = false;\n var isLastCharUpper = false;\n var isLastLastCharUpper = false;\n\n for (var i = 0; i < string.length; i++) {\n var character = string[i];\n\n if (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n string = string.slice(0, i) + '-' + string.slice(i);\n isLastCharLower = false;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = true;\n i++;\n } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n string = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = false;\n isLastCharLower = true;\n } else {\n isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n }\n }\n\n return string;\n};\n\nvar camelCase = function camelCase(input, options) {\n if (!(typeof input === 'string' || Array.isArray(input))) {\n throw new TypeError('Expected the input to be `string | string[]`');\n }\n\n options = Object.assign({\n pascalCase: false\n }, options);\n\n var postProcess = function postProcess(x) {\n return options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n };\n\n if (Array.isArray(input)) {\n input = input.map(function (x) {\n return x.trim();\n }).filter(function (x) {\n return x.length;\n }).join('-');\n } else {\n input = input.trim();\n }\n\n if (input.length === 0) {\n return '';\n }\n\n if (input.length === 1) {\n return options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n }\n\n var hasUpperCase = input !== input.toLowerCase();\n\n if (hasUpperCase) {\n input = preserveCamelCase(input);\n }\n\n input = input.replace(/^[_.\\- ]+/, '').toLowerCase().replace(/[_.\\- ]+(\\w|$)/g, function (_, p1) {\n return p1.toUpperCase();\n }).replace(/\\d+(\\w|$)/g, function (m) {\n return m.toUpperCase();\n });\n return postProcess(input);\n};\n\nmodule.exports = camelCase; // TODO: Remove this for the next major release\n\nmodule.exports.default = camelCase;","var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _templateObject = _taggedTemplateLiteral(['', ''], ['', '']);\n\nfunction _taggedTemplateLiteral(strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\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/**\n * @class TemplateTag\n * @classdesc Consumes a pipeline of composable transformer plugins and produces a template tag.\n */\n\n\nvar TemplateTag = function () {\n /**\n * constructs a template tag\n * @constructs TemplateTag\n * @param {...Object} [...transformers] - an array or arguments list of transformers\n * @return {Function} - a template tag\n */\n function TemplateTag() {\n var _this = this;\n\n for (var _len = arguments.length, transformers = Array(_len), _key = 0; _key < _len; _key++) {\n transformers[_key] = arguments[_key];\n }\n\n _classCallCheck(this, TemplateTag);\n\n this.tag = function (strings) {\n for (var _len2 = arguments.length, expressions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n expressions[_key2 - 1] = arguments[_key2];\n }\n\n if (typeof strings === 'function') {\n // if the first argument passed is a function, assume it is a template tag and return\n // an intermediary tag that processes the template using the aforementioned tag, passing the\n // result to our tag\n return _this.interimTag.bind(_this, strings);\n }\n\n if (typeof strings === 'string') {\n // if the first argument passed is a string, just transform it\n return _this.transformEndResult(strings);\n } // else, return a transformed end result of processing the template with our tag\n\n\n strings = strings.map(_this.transformString.bind(_this));\n return _this.transformEndResult(strings.reduce(_this.processSubstitutions.bind(_this, expressions)));\n }; // if first argument is an array, extrude it as a list of transformers\n\n\n if (transformers.length > 0 && Array.isArray(transformers[0])) {\n transformers = transformers[0];\n } // if any transformers are functions, this means they are not initiated - automatically initiate them\n\n\n this.transformers = transformers.map(function (transformer) {\n return typeof transformer === 'function' ? transformer() : transformer;\n }); // return an ES2015 template tag\n\n return this.tag;\n }\n /**\n * Applies all transformers to a template literal tagged with this method.\n * If a function is passed as the first argument, assumes the function is a template tag\n * and applies it to the template, returning a template tag.\n * @param {(Function|String|Array)} strings - Either a template tag or an array containing template strings separated by identifier\n * @param {...*} ...expressions - Optional list of substitution values.\n * @return {(String|Function)} - Either an intermediary tag function or the results of processing the template.\n */\n\n\n _createClass(TemplateTag, [{\n key: 'interimTag',\n\n /**\n * An intermediary template tag that receives a template tag and passes the result of calling the template with the received\n * template tag to our own template tag.\n * @param {Function} nextTag - the received template tag\n * @param {Array} template - the template to process\n * @param {...*} ...substitutions - `substitutions` is an array of all substitutions in the template\n * @return {*} - the final processed value\n */\n value: function interimTag(previousTag, template) {\n for (var _len3 = arguments.length, substitutions = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n substitutions[_key3 - 2] = arguments[_key3];\n }\n\n return this.tag(_templateObject, previousTag.apply(undefined, [template].concat(substitutions)));\n }\n /**\n * Performs bulk processing on the tagged template, transforming each substitution and then\n * concatenating the resulting values into a string.\n * @param {Array<*>} substitutions - an array of all remaining substitutions present in this template\n * @param {String} resultSoFar - this iteration's result string so far\n * @param {String} remainingPart - the template chunk after the current substitution\n * @return {String} - the result of joining this iteration's processed substitution with the result\n */\n\n }, {\n key: 'processSubstitutions',\n value: function processSubstitutions(substitutions, resultSoFar, remainingPart) {\n var substitution = this.transformSubstitution(substitutions.shift(), resultSoFar);\n return ''.concat(resultSoFar, substitution, remainingPart);\n }\n /**\n * Iterate through each transformer, applying the transformer's `onString` method to the template\n * strings before all substitutions are processed.\n * @param {String} str - The input string\n * @return {String} - The final results of processing each transformer\n */\n\n }, {\n key: 'transformString',\n value: function transformString(str) {\n var cb = function cb(res, transform) {\n return transform.onString ? transform.onString(res) : res;\n };\n\n return this.transformers.reduce(cb, str);\n }\n /**\n * When a substitution is encountered, iterates through each transformer and applies the transformer's\n * `onSubstitution` method to the substitution.\n * @param {*} substitution - The current substitution\n * @param {String} resultSoFar - The result up to and excluding this substitution.\n * @return {*} - The final result of applying all substitution transformations.\n */\n\n }, {\n key: 'transformSubstitution',\n value: function transformSubstitution(substitution, resultSoFar) {\n var cb = function cb(res, transform) {\n return transform.onSubstitution ? transform.onSubstitution(res, resultSoFar) : res;\n };\n\n return this.transformers.reduce(cb, substitution);\n }\n /**\n * Iterates through each transformer, applying the transformer's `onEndResult` method to the\n * template literal after all substitutions have finished processing.\n * @param {String} endResult - The processed template, just before it is returned from the tag\n * @return {String} - The final results of processing each transformer\n */\n\n }, {\n key: 'transformEndResult',\n value: function transformEndResult(endResult) {\n var cb = function cb(res, transform) {\n return transform.onEndResult ? transform.onEndResult(res) : res;\n };\n\n return this.transformers.reduce(cb, endResult);\n }\n }]);\n\n return TemplateTag;\n}();\n\nexport default TemplateTag;","var defaults = {\n separator: '',\n conjunction: '',\n serial: false\n};\n/**\n * Converts an array substitution to a string containing a list\n * @param {String} [opts.separator = ''] - the character that separates each item\n * @param {String} [opts.conjunction = ''] - replace the last separator with this\n * @param {Boolean} [opts.serial = false] - include the separator before the conjunction? (Oxford comma use-case)\n *\n * @return {Object} - a TemplateTag transformer\n */\n\nvar inlineArrayTransformer = function inlineArrayTransformer() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaults;\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n // only operate on arrays\n if (Array.isArray(substitution)) {\n var arrayLength = substitution.length;\n var separator = opts.separator;\n var conjunction = opts.conjunction;\n var serial = opts.serial; // join each item in the array into a string where each item is separated by separator\n // be sure to maintain indentation\n\n var indent = resultSoFar.match(/(\\n?[^\\S\\n]+)$/);\n\n if (indent) {\n substitution = substitution.join(separator + indent[1]);\n } else {\n substitution = substitution.join(separator + ' ');\n } // if conjunction is set, replace the last separator with conjunction, but only if there is more than one substitution\n\n\n if (conjunction && arrayLength > 1) {\n var separatorIndex = substitution.lastIndexOf(separator);\n substitution = substitution.slice(0, separatorIndex) + (serial ? separator : '') + ' ' + conjunction + substitution.slice(separatorIndex + 1);\n }\n }\n\n return substitution;\n }\n };\n};\n\nexport default inlineArrayTransformer;","function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n}\n/**\n * strips indentation from a template literal\n * @param {String} type = 'initial' - whether to remove all indentation or just leading indentation. can be 'all' or 'initial'\n * @return {Object} - a TemplateTag transformer\n */\n\n\nvar stripIndentTransformer = function stripIndentTransformer() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'initial';\n return {\n onEndResult: function onEndResult(endResult) {\n if (type === 'initial') {\n // remove the shortest leading indentation from each line\n var match = endResult.match(/^[^\\S\\n]*(?=\\S)/gm);\n var indent = match && Math.min.apply(Math, _toConsumableArray(match.map(function (el) {\n return el.length;\n })));\n\n if (indent) {\n var regexp = new RegExp('^.{' + indent + '}', 'gm');\n return endResult.replace(regexp, '');\n }\n\n return endResult;\n }\n\n if (type === 'all') {\n // remove all indentation from each line\n return endResult.replace(/^[^\\S\\n]+/gm, '');\n }\n\n throw new Error('Unknown type: ' + type);\n }\n };\n};\n\nexport default stripIndentTransformer;","/**\n * TemplateTag transformer that trims whitespace on the end result of a tagged template\n * @param {String} side = '' - The side of the string to trim. Can be 'start' or 'end' (alternatively 'left' or 'right')\n * @return {Object} - a TemplateTag transformer\n */\nvar trimResultTransformer = function trimResultTransformer() {\n var side = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return {\n onEndResult: function onEndResult(endResult) {\n if (side === '') {\n return endResult.trim();\n }\n\n side = side.toLowerCase();\n\n if (side === 'start' || side === 'left') {\n return endResult.replace(/^\\s*/, '');\n }\n\n if (side === 'end' || side === 'right') {\n return endResult.replace(/\\s*$/, '');\n }\n\n throw new Error('Side not supported: ' + side);\n }\n };\n};\n\nexport default trimResultTransformer;","var splitStringTransformer = function splitStringTransformer(splitBy) {\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n if (splitBy != null && typeof splitBy === 'string') {\n if (typeof substitution === 'string' && substitution.includes(splitBy)) {\n substitution = substitution.split(splitBy);\n }\n } else {\n throw new Error('You need to specify a string character to split by.');\n }\n\n return substitution;\n }\n };\n};\n\nexport default splitStringTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaLists = new TemplateTag(inlineArrayTransformer({\n separator: ','\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaLists;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaListsAnd = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'and'\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaListsAnd;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaListsOr = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'or'\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaListsOr;","var isValidValue = function isValidValue(x) {\n return x != null && !Number.isNaN(x) && typeof x !== 'boolean';\n};\n\nvar removeNonPrintingValuesTransformer = function removeNonPrintingValuesTransformer() {\n return {\n onSubstitution: function onSubstitution(substitution) {\n if (Array.isArray(substitution)) {\n return substitution.filter(isValidValue);\n }\n\n if (isValidValue(substitution)) {\n return substitution;\n }\n\n return '';\n }\n };\n};\n\nexport default removeNonPrintingValuesTransformer;","var replaceSubstitutionTransformer = function replaceSubstitutionTransformer(replaceWhat, replaceWith) {\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n if (replaceWhat == null || replaceWith == null) {\n throw new Error('replaceSubstitutionTransformer requires at least 2 arguments.');\n } // Do not touch if null or undefined\n\n\n if (substitution == null) {\n return substitution;\n } else {\n return substitution.toString().replace(replaceWhat, replaceWith);\n }\n }\n };\n};\n\nexport default replaceSubstitutionTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport removeNonPrintingValuesTransformer from '../removeNonPrintingValuesTransformer';\nvar html = new TemplateTag(splitStringTransformer('\\n'), removeNonPrintingValuesTransformer, inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\nexport default html;","/**\n * Replaces tabs, newlines and spaces with the chosen value when they occur in sequences\n * @param {(String|RegExp)} replaceWhat - the value or pattern that should be replaced\n * @param {*} replaceWith - the replacement value\n * @return {Object} - a TemplateTag transformer\n */\nvar replaceResultTransformer = function replaceResultTransformer(replaceWhat, replaceWith) {\n return {\n onEndResult: function onEndResult(endResult) {\n if (replaceWhat == null || replaceWith == null) {\n throw new Error('replaceResultTransformer requires at least 2 arguments.');\n }\n\n return endResult.replace(replaceWhat, replaceWith);\n }\n };\n};\n\nexport default replaceResultTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport replaceSubstitutionTransformer from '../replaceSubstitutionTransformer';\nvar safeHtml = new TemplateTag(splitStringTransformer('\\n'), inlineArrayTransformer, stripIndentTransformer, trimResultTransformer, replaceSubstitutionTransformer(/&/g, '&'), replaceSubstitutionTransformer(//g, '>'), replaceSubstitutionTransformer(/\"/g, '"'), replaceSubstitutionTransformer(/'/g, '''), replaceSubstitutionTransformer(/`/g, '`'));\nexport default safeHtml;","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLine = new TemplateTag(replaceResultTransformer(/(?:\\n(?:\\s*))+/g, ' '), trimResultTransformer);\nexport default oneLine;","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineTrim = new TemplateTag(replaceResultTransformer(/(?:\\n\\s*)/g, ''), trimResultTransformer);\nexport default oneLineTrim;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaLists = new TemplateTag(inlineArrayTransformer({\n separator: ','\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaLists;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaListsOr = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'or'\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaListsOr;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaListsAnd = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'and'\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaListsAnd;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar inlineLists = new TemplateTag(inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\nexport default inlineLists;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineInlineLists = new TemplateTag(inlineArrayTransformer, replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineInlineLists;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar stripIndent = new TemplateTag(stripIndentTransformer, trimResultTransformer);\nexport default stripIndent;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar stripIndents = new TemplateTag(stripIndentTransformer('all'), trimResultTransformer);\nexport default stripIndents;","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n var ExecutionEnvironment = {\n canUseDOM: canUseDOM,\n canUseWorkers: typeof Worker !== 'undefined',\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n canUseViewport: canUseDOM && !!window.screen\n };\n\n if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n define(function () {\n return ExecutionEnvironment;\n });\n } else if (typeof module !== 'undefined' && module.exports) {\n module.exports = ExecutionEnvironment;\n } else {\n window.ExecutionEnvironment = ExecutionEnvironment;\n }\n})();","\"use strict\";\n\nmodule.exports = Object.assign;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bodyOpenClassName = exports.portalClassName = undefined;\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 _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ModalPortal = require(\"./ModalPortal\");\n\nvar _ModalPortal2 = _interopRequireDefault(_ModalPortal);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n}\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\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\nvar portalClassName = exports.portalClassName = \"ReactModalPortal\";\nvar bodyOpenClassName = exports.bodyOpenClassName = \"ReactModal__Body--open\";\nvar isReact16 = _safeHTMLElement.canUseDOM && _reactDom2.default.createPortal !== undefined;\n\nvar createHTMLElement = function createHTMLElement(name) {\n return document.createElement(name);\n};\n\nvar getCreatePortal = function getCreatePortal() {\n return isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n};\n\nfunction getParentElement(parentSelector) {\n return parentSelector();\n}\n\nvar Modal = function (_Component) {\n _inherits(Modal, _Component);\n\n function Modal() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\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, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {\n !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);\n var parent = getParentElement(_this.props.parentSelector);\n\n if (parent && parent.contains(_this.node)) {\n parent.removeChild(_this.node);\n } else {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"parentSelector\" prop did not returned any DOM ' + \"element. Make sure that the parent element is unmounted to \" + \"avoid any memory leaks.\");\n }\n }, _this.portalRef = function (ref) {\n _this.portal = ref;\n }, _this.renderPortal = function (props) {\n var createPortal = getCreatePortal();\n var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({\n defaultStyles: Modal.defaultStyles\n }, props)), _this.node);\n\n _this.portalRef(portal);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_safeHTMLElement.canUseDOM) return;\n\n if (!isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n\n this.node.className = this.props.portalClassName;\n var parent = getParentElement(this.props.parentSelector);\n parent.appendChild(this.node);\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps) {\n var prevParent = getParentElement(prevProps.parentSelector);\n var nextParent = getParentElement(this.props.parentSelector);\n return {\n prevParent: prevParent,\n nextParent: nextParent\n };\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, _, snapshot) {\n if (!_safeHTMLElement.canUseDOM) return;\n var _props = this.props,\n isOpen = _props.isOpen,\n portalClassName = _props.portalClassName;\n\n if (prevProps.portalClassName !== portalClassName) {\n this.node.className = portalClassName;\n }\n\n var prevParent = snapshot.prevParent,\n nextParent = snapshot.nextParent;\n\n if (nextParent !== prevParent) {\n prevParent.removeChild(this.node);\n nextParent.appendChild(this.node);\n } // Stop unnecessary renders if modal is remaining closed\n\n\n if (!prevProps.isOpen && !isOpen) return;\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;\n var state = this.portal.state;\n var now = Date.now();\n var closesAt = state.isOpen && this.props.closeTimeoutMS && (state.closesAt || now + this.props.closeTimeoutMS);\n\n if (closesAt) {\n if (!state.beforeClose) {\n this.portal.closeWithTimeout();\n }\n\n setTimeout(this.removePortal, closesAt - now);\n } else {\n this.removePortal();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!_safeHTMLElement.canUseDOM || !isReact16) {\n return null;\n }\n\n if (!this.node && isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n\n var createPortal = getCreatePortal();\n return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({\n ref: this.portalRef,\n defaultStyles: Modal.defaultStyles\n }, this.props)), this.node);\n }\n }], [{\n key: \"setAppElement\",\n value: function setAppElement(element) {\n ariaAppHider.setElement(element);\n }\n /* eslint-disable react/no-unused-prop-types */\n\n /* eslint-enable react/no-unused-prop-types */\n\n }]);\n\n return Modal;\n}(_react.Component);\n\nModal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n portalClassName: _propTypes2.default.string,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n ariaHideApp: _propTypes2.default.bool,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n parentSelector: _propTypes2.default.func,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func\n};\nModal.defaultProps = {\n isOpen: false,\n portalClassName: portalClassName,\n bodyOpenClassName: bodyOpenClassName,\n role: \"dialog\",\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldFocusAfterRender: true,\n shouldCloseOnEsc: true,\n shouldCloseOnOverlayClick: true,\n shouldReturnFocusAfterClose: true,\n preventScroll: false,\n parentSelector: function parentSelector() {\n return document.body;\n },\n overlayElement: function overlayElement(props, contentEl) {\n return _react2.default.createElement(\"div\", props, contentEl);\n },\n contentElement: function contentElement(props, children) {\n return _react2.default.createElement(\"div\", props, children);\n }\n};\nModal.defaultStyles = {\n overlay: {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.75)\"\n },\n content: {\n position: \"absolute\",\n top: \"40px\",\n left: \"40px\",\n right: \"40px\",\n bottom: \"40px\",\n border: \"1px solid #ccc\",\n background: \"#fff\",\n overflow: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n borderRadius: \"4px\",\n outline: \"none\",\n padding: \"20px\"\n }\n};\n(0, _reactLifecyclesCompat.polyfill)(Modal);\n\nif (process.env.NODE_ENV !== \"production\") {\n Modal.setCreateHTMLElement = function (fn) {\n return createHTMLElement = fn;\n };\n}\n\nexports.default = Modal;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\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 _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _react = require(\"react\");\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _classList = require(\"../helpers/classList\");\n\nvar classList = _interopRequireWildcard(_classList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _portalOpenInstances = require(\"../helpers/portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nrequire(\"../helpers/bodyTrap\");\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n}\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\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} // so that our CSS is statically analyzable\n\n\nvar CLASS_NAMES = {\n overlay: \"ReactModal__Overlay\",\n content: \"ReactModal__Content\"\n};\nvar TAB_KEY = 9;\nvar ESC_KEY = 27;\nvar ariaHiddenInstances = 0;\n\nvar ModalPortal = function (_Component) {\n _inherits(ModalPortal, _Component);\n\n function ModalPortal(props) {\n _classCallCheck(this, ModalPortal);\n\n var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n _this.setOverlayRef = function (overlay) {\n _this.overlay = overlay;\n _this.props.overlayRef && _this.props.overlayRef(overlay);\n };\n\n _this.setContentRef = function (content) {\n _this.content = content;\n _this.props.contentRef && _this.props.contentRef(content);\n };\n\n _this.afterClose = function () {\n var _this$props = _this.props,\n appElement = _this$props.appElement,\n ariaHideApp = _this$props.ariaHideApp,\n htmlOpenClassName = _this$props.htmlOpenClassName,\n bodyOpenClassName = _this$props.bodyOpenClassName; // Remove classes.\n\n bodyOpenClassName && classList.remove(document.body, bodyOpenClassName);\n htmlOpenClassName && classList.remove(document.getElementsByTagName(\"html\")[0], htmlOpenClassName); // Reset aria-hidden attribute if all modals have been removed\n\n if (ariaHideApp && ariaHiddenInstances > 0) {\n ariaHiddenInstances -= 1;\n\n if (ariaHiddenInstances === 0) {\n ariaAppHider.show(appElement);\n }\n }\n\n if (_this.props.shouldFocusAfterRender) {\n if (_this.props.shouldReturnFocusAfterClose) {\n focusManager.returnFocus(_this.props.preventScroll);\n focusManager.teardownScopedFocus();\n } else {\n focusManager.popWithoutFocus();\n }\n }\n\n if (_this.props.onAfterClose) {\n _this.props.onAfterClose();\n }\n\n _portalOpenInstances2.default.deregister(_this);\n };\n\n _this.open = function () {\n _this.beforeOpen();\n\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n\n _this.setState({\n beforeClose: false\n });\n } else {\n if (_this.props.shouldFocusAfterRender) {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n }\n\n _this.setState({\n isOpen: true\n }, function () {\n _this.openAnimationFrame = requestAnimationFrame(function () {\n _this.setState({\n afterOpen: true\n });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen({\n overlayEl: _this.overlay,\n contentEl: _this.content\n });\n }\n });\n });\n }\n };\n\n _this.close = function () {\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus({\n preventScroll: true\n });\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n\n _this.setState({\n beforeClose: true,\n closesAt: closesAt\n }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (event.keyCode === TAB_KEY) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && event.keyCode === ESC_KEY) {\n event.stopPropagation();\n\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n\n _this.shouldClose = null;\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function (event) {\n if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n event.preventDefault();\n }\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.attributesFromObject = function (prefix, items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[prefix + \"-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.isOpen) {\n this.open();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (process.env.NODE_ENV !== \"production\") {\n if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n\n if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n\n if (this.props.isOpen && !prevProps.isOpen) {\n this.open();\n } else if (!this.props.isOpen && prevProps.isOpen) {\n this.close();\n } // Focus only needs to be set once when the modal is being opened\n\n\n if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n this.focusContent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.state.isOpen) {\n this.afterClose();\n }\n\n clearTimeout(this.closeTimer);\n cancelAnimationFrame(this.openAnimationFrame);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n htmlOpenClassName = _props.htmlOpenClassName,\n bodyOpenClassName = _props.bodyOpenClassName; // Add classes.\n\n bodyOpenClassName && classList.add(document.body, bodyOpenClassName);\n htmlOpenClassName && classList.add(document.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n if (ariaHideApp) {\n ariaHiddenInstances += 1;\n ariaAppHider.hide(appElement);\n }\n\n _portalOpenInstances2.default.register(this);\n } // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n className = _props2.className,\n overlayClassName = _props2.overlayClassName,\n defaultStyles = _props2.defaultStyles,\n children = _props2.children;\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n if (this.shouldBeClosed()) {\n return null;\n }\n\n var overlayProps = {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown\n };\n\n var contentProps = _extends({\n id: id,\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.attributesFromObject(\"aria\", _extends({\n modal: true\n }, this.props.aria)), this.attributesFromObject(\"data\", this.props.data || {}), {\n \"data-testid\": this.props.testId\n });\n\n var contentElement = this.props.contentElement(contentProps, children);\n return this.props.overlayElement(overlayProps, contentElement);\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n },\n defaultStyles: {}\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onAfterClose: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func,\n testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\n\nvar _warning = require(\"warning\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _safeHTMLElement = require(\"./safeHTMLElement\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar globalElement = null;\n/* eslint-disable no-console */\n\n/* istanbul ignore next */\n\nfunction resetState() {\n if (globalElement) {\n if (globalElement.removeAttribute) {\n globalElement.removeAttribute(\"aria-hidden\");\n } else if (globalElement.length != null) {\n globalElement.forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n } else {\n document.querySelectorAll(globalElement).forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n }\n }\n\n globalElement = null;\n}\n/* istanbul ignore next */\n\n\nfunction log() {\n if (process.env.NODE_ENV === \"production\") return;\n var check = globalElement || {};\n console.log(\"ariaAppHider ----------\");\n console.log(check.nodeName, check.className, check.id);\n console.log(\"end ariaAppHider ----------\");\n}\n/* eslint-enable no-console */\n\n\nfunction assertNodeList(nodeList, selector) {\n if (!nodeList || !nodeList.length) {\n throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n }\n}\n\nfunction setElement(element) {\n var useElement = element;\n\n if (typeof useElement === \"string\" && _safeHTMLElement.canUseDOM) {\n var el = document.querySelectorAll(useElement);\n assertNodeList(el, useElement);\n useElement = el;\n }\n\n globalElement = useElement || globalElement;\n return globalElement;\n}\n\nfunction validateElement(appElement) {\n var el = appElement || globalElement;\n\n if (el) {\n return Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList ? el : [el];\n } else {\n (0, _warning2.default)(false, [\"react-modal: App element is not defined.\", \"Please use `Modal.setAppElement(el)` or set `appElement={el}`.\", \"This is needed so screen readers don't see main content\", \"when modal is opened. It is not recommended, but you can opt-out\", \"by setting `ariaHideApp={false}`.\"].join(\" \"));\n return [];\n }\n}\n\nfunction hide(appElement) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = validateElement(appElement)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var el = _step.value;\n el.setAttribute(\"aria-hidden\", \"true\");\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\nfunction show(appElement) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = validateElement(appElement)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var el = _step2.value;\n el.removeAttribute(\"aria-hidden\");\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\nfunction documentNotReadyOrSSRTesting() {\n globalElement = null;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\n\nvar _portalOpenInstances = require(\"./portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n} // Body focus trap see Issue #742\n\n\nvar before = void 0,\n after = void 0,\n instances = [];\n/* eslint-disable no-console */\n\n/* istanbul ignore next */\n\nfunction resetState() {\n var _arr = [before, after];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var item = _arr[_i];\n if (!item) continue;\n item.parentNode && item.parentNode.removeChild(item);\n }\n\n before = after = null;\n instances = [];\n}\n/* istanbul ignore next */\n\n\nfunction log() {\n console.log(\"bodyTrap ----------\");\n console.log(instances.length);\n var _arr2 = [before, after];\n\n for (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n var item = _arr2[_i2];\n var check = item || {};\n console.log(check.nodeName, check.className, check.id);\n }\n\n console.log(\"edn bodyTrap ----------\");\n}\n/* eslint-enable no-console */\n\n\nfunction focusContent() {\n if (instances.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Open instances > 0 expected\");\n }\n\n return;\n }\n\n instances[instances.length - 1].focusContent();\n}\n\nfunction bodyTrap(eventType, openInstances) {\n if (!before && !after) {\n before = document.createElement(\"div\");\n before.setAttribute(\"data-react-modal-body-trap\", \"\");\n before.style.position = \"absolute\";\n before.style.opacity = \"0\";\n before.setAttribute(\"tabindex\", \"0\");\n before.addEventListener(\"focus\", focusContent);\n after = before.cloneNode();\n after.addEventListener(\"focus\", focusContent);\n }\n\n instances = openInstances;\n\n if (instances.length > 0) {\n // Add focus trap\n if (document.body.firstChild !== before) {\n document.body.insertBefore(before, document.body.firstChild);\n }\n\n if (document.body.lastChild !== after) {\n document.body.appendChild(after);\n }\n } else {\n // Remove focus trap\n if (before.parentElement) {\n before.parentElement.removeChild(before);\n }\n\n if (after.parentElement) {\n after.parentElement.removeChild(after);\n }\n }\n}\n\n_portalOpenInstances2.default.subscribe(bodyTrap);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nvar htmlClassList = {};\nvar docBodyClassList = {};\n/* eslint-disable no-console */\n\n/* istanbul ignore next */\n\nfunction removeClass(at, cls) {\n at.classList.remove(cls);\n}\n/* istanbul ignore next */\n\n\nfunction resetState() {\n var htmlElement = document.getElementsByTagName(\"html\")[0];\n\n for (var cls in htmlClassList) {\n removeClass(htmlElement, htmlClassList[cls]);\n }\n\n var body = document.body;\n\n for (var _cls in docBodyClassList) {\n removeClass(body, docBodyClassList[_cls]);\n }\n\n htmlClassList = {};\n docBodyClassList = {};\n}\n/* istanbul ignore next */\n\n\nfunction log() {\n if (process.env.NODE_ENV === \"production\") return;\n var classes = document.getElementsByTagName(\"html\")[0].className;\n var buffer = \"Show tracked classes:\\n\\n\";\n buffer += \" (\" + classes + \"):\\n\";\n\n for (var x in htmlClassList) {\n buffer += \" \" + x + \" \" + htmlClassList[x] + \"\\n\";\n }\n\n classes = document.body.className;\n buffer += \"\\n\\ndoc.body (\" + classes + \"):\\n\";\n\n for (var _x in docBodyClassList) {\n buffer += \" \" + _x + \" \" + docBodyClassList[_x] + \"\\n\";\n }\n\n buffer += \"\\n\";\n console.log(buffer);\n}\n/* eslint-enable no-console */\n\n/**\n * Track the number of reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\n\n\nvar incrementReference = function incrementReference(poll, className) {\n if (!poll[className]) {\n poll[className] = 0;\n }\n\n poll[className] += 1;\n return className;\n};\n/**\n * Drop the reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\n\n\nvar decrementReference = function decrementReference(poll, className) {\n if (poll[className]) {\n poll[className] -= 1;\n }\n\n return className;\n};\n/**\n * Track a class and add to the given class list.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be tracked.\n */\n\n\nvar trackClass = function trackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n incrementReference(poll, className);\n classListRef.add(className);\n });\n};\n/**\n * Untrack a class and remove from the given class list if the reference\n * reaches 0.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be untracked.\n */\n\n\nvar untrackClass = function untrackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n decrementReference(poll, className);\n poll[className] === 0 && classListRef.remove(className);\n });\n};\n/**\n * Public inferface to add classes to the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\n\n\nvar add = exports.add = function add(element, classString) {\n return trackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};\n/**\n * Public inferface to remove classes from the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\n\n\nvar remove = exports.remove = function remove(element, classString) {\n return untrackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n/* eslint-disable no-console */\n\n/* istanbul ignore next */\n\nfunction resetState() {\n focusLaterElements = [];\n}\n/* istanbul ignore next */\n\n\nfunction log() {\n if (process.env.NODE_ENV === \"production\") return;\n console.log(\"focusManager ----------\");\n focusLaterElements.forEach(function (f) {\n var check = f || {};\n console.log(check.nodeName, check.className, check.id);\n });\n console.log(\"end focusManager ----------\");\n}\n/* eslint-enable no-console */\n\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n\n if (!modalElement) {\n return;\n } // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n\n\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n/* eslint-disable no-console */\n\n\nfunction returnFocus() {\n var preventScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var toFocus = null;\n\n try {\n if (focusLaterElements.length !== 0) {\n toFocus = focusLaterElements.pop();\n toFocus.focus({\n preventScroll: preventScroll\n });\n }\n\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\n\nfunction popWithoutFocus() {\n focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.log = log;\nexports.resetState = resetState;\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n} // Tracks portals that are open and emits events to subscribers\n\n\nvar PortalOpenInstances = function PortalOpenInstances() {\n var _this = this;\n\n _classCallCheck(this, PortalOpenInstances);\n\n this.register = function (openInstance) {\n if (_this.openInstances.indexOf(openInstance) !== -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Cannot register modal instance that's already open\");\n }\n\n return;\n }\n\n _this.openInstances.push(openInstance);\n\n _this.emit(\"register\");\n };\n\n this.deregister = function (openInstance) {\n var index = _this.openInstances.indexOf(openInstance);\n\n if (index === -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Unable to deregister \" + openInstance + \" as \" + \"it was never registered\");\n }\n\n return;\n }\n\n _this.openInstances.splice(index, 1);\n\n _this.emit(\"deregister\");\n };\n\n this.subscribe = function (callback) {\n _this.subscribers.push(callback);\n };\n\n this.emit = function (eventType) {\n _this.subscribers.forEach(function (subscriber) {\n return subscriber(eventType, // shallow copy to avoid accidental mutation\n _this.openInstances.slice());\n });\n };\n\n this.openInstances = [];\n this.subscribers = [];\n};\n\nvar portalOpenInstances = new PortalOpenInstances();\n/* eslint-disable no-console */\n\n/* istanbul ignore next */\n\nfunction log() {\n console.log(\"portalOpenInstances ----------\");\n console.log(portalOpenInstances.openInstances.length);\n portalOpenInstances.openInstances.forEach(function (p) {\n return console.log(p);\n });\n console.log(\"end portalOpenInstances ----------\");\n}\n/* istanbul ignore next */\n\n\nfunction resetState() {\n portalOpenInstances = new PortalOpenInstances();\n}\n/* eslint-enable no-console */\n\n\nexports.default = portalOpenInstances;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canUseDOM = exports.SafeNodeList = exports.SafeHTMLCollection = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar EE = _exenv2.default;\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\nvar SafeHTMLCollection = exports.SafeHTMLCollection = EE.canUseDOM ? window.HTMLCollection : {};\nvar SafeNodeList = exports.SafeNodeList = EE.canUseDOM ? window.NodeList : {};\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\nexports.default = SafeHTMLElement;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n\n if (!tabbable.length) {\n // Do nothing, since there are no elements that can receive focus.\n event.preventDefault();\n return;\n }\n\n var target = void 0;\n var shiftKey = event.shiftKey;\n var head = tabbable[0];\n var tail = tabbable[tabbable.length - 1]; // proceed with default browser behavior on tab.\n // Focus on last element on shift + tab.\n\n if (node === document.activeElement) {\n if (!shiftKey) return;\n target = tail;\n }\n\n if (tail === document.activeElement && !shiftKey) {\n target = head;\n }\n\n if (head === document.activeElement && shiftKey) {\n target = tail;\n }\n\n if (target) {\n event.preventDefault();\n target.focus();\n return;\n } // Safari radio issue.\n //\n // Safari does not move the focus to the radio button,\n // so we need to force it to really walk through all elements.\n //\n // This is very error prone, since we are trying to guess\n // if it is a safari browser from the first occurence between\n // chrome or safari.\n //\n // The chrome user agent contains the first ocurrence\n // as the 'chrome/version' and later the 'safari/version'.\n\n\n var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null; // If we are not in safari desktop, let the browser control\n // the focus\n\n if (!isSafariDesktop) return;\n var x = tabbable.indexOf(document.activeElement);\n\n if (x > -1) {\n x += shiftKey ? -1 : 1;\n }\n\n target = tabbable[x]; // If the tabbable element does not exist,\n // focus head/tail based on shiftKey\n\n if (typeof target === \"undefined\") {\n event.preventDefault();\n target = shiftKey ? tail : head;\n target.focus();\n return;\n }\n\n event.preventDefault();\n target.focus();\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar tabbableNode = /input|select|textarea|button|object/;\n\nfunction hidesContents(element) {\n var zeroSize = element.offsetWidth <= 0 && element.offsetHeight <= 0; // If the node is empty, this is good enough\n\n if (zeroSize && !element.innerHTML) return true;\n\n try {\n // Otherwise we need to check some styles\n var style = window.getComputedStyle(element);\n return zeroSize ? style.getPropertyValue(\"overflow\") !== \"visible\" || // if 'overflow: visible' set, check if there is actually any overflow\n element.scrollWidth <= 0 && element.scrollHeight <= 0 : style.getPropertyValue(\"display\") == \"none\";\n } catch (exception) {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to inspect element style\");\n return false;\n }\n}\n\nfunction visible(element) {\n var parentElement = element;\n\n while (parentElement) {\n if (parentElement === document.body) break;\n if (hidesContents(parentElement)) return false;\n parentElement = parentElement.parentNode;\n }\n\n return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n return res && visible(element);\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute(\"tabindex\");\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n return [].slice.call(element.querySelectorAll(\"*\"), 0).filter(tabbable);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];","/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n 'use strict'; // polyfill\n\n function polyfill() {\n // aliases\n var w = window;\n var d = document; // return if scroll behavior is supported and polyfill is not forced\n\n if ('scrollBehavior' in d.documentElement.style && w.__forceSmoothScrollPolyfill__ !== true) {\n return;\n } // globals\n\n\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468; // object gathering original scroll methods\n\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n }; // define timing method\n\n var now = w.performance && w.performance.now ? w.performance.now.bind(w.performance) : Date.now;\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n\n\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n\n\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n\n\n function shouldBailOut(firstArg) {\n if (firstArg === null || typeof firstArg !== 'object' || firstArg.behavior === undefined || firstArg.behavior === 'auto' || firstArg.behavior === 'instant') {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n } // throw error when behavior is not supported\n\n\n throw new TypeError('behavior member of ScrollOptions ' + firstArg.behavior + ' is not a valid value for enumeration ScrollBehavior.');\n }\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n\n\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n\n\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n\n\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n return isScrollableY || isScrollableX;\n }\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n\n\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n\n\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME; // avoid elapsed times higher than one\n\n elapsed = elapsed > 1 ? 1 : elapsed; // apply easing to elapsed time\n\n value = ease(elapsed);\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n context.method.call(context.scrollable, currentX, currentY); // scroll more if we have not reached our destination\n\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n\n\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now(); // define scroll context\n\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n } // scroll looping over a frame\n\n\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n } // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n\n\n w.scroll = w.scrollTo = function () {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n } // avoid smooth behavior if not required\n\n\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(w, arguments[0].left !== undefined ? arguments[0].left : typeof arguments[0] !== 'object' ? arguments[0] : w.scrollX || w.pageXOffset, // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined ? arguments[0].top : arguments[1] !== undefined ? arguments[1] : w.scrollY || w.pageYOffset);\n return;\n } // LET THE SMOOTHNESS BEGIN!\n\n\n smoothScroll.call(w, d.body, arguments[0].left !== undefined ? ~~arguments[0].left : w.scrollX || w.pageXOffset, arguments[0].top !== undefined ? ~~arguments[0].top : w.scrollY || w.pageYOffset);\n }; // w.scrollBy\n\n\n w.scrollBy = function () {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n } // avoid smooth behavior if not required\n\n\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(w, arguments[0].left !== undefined ? arguments[0].left : typeof arguments[0] !== 'object' ? arguments[0] : 0, arguments[0].top !== undefined ? arguments[0].top : arguments[1] !== undefined ? arguments[1] : 0);\n return;\n } // LET THE SMOOTHNESS BEGIN!\n\n\n smoothScroll.call(w, d.body, ~~arguments[0].left + (w.scrollX || w.pageXOffset), ~~arguments[0].top + (w.scrollY || w.pageYOffset));\n }; // Element.prototype.scroll and Element.prototype.scrollTo\n\n\n Element.prototype.scroll = Element.prototype.scrollTo = function () {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n } // avoid smooth behavior if not required\n\n\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(this, // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined ? ~~arguments[0].left : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft, // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined ? ~~arguments[0].top : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop);\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top; // LET THE SMOOTHNESS BEGIN!\n\n smoothScroll.call(this, this, typeof left === 'undefined' ? this.scrollLeft : ~~left, typeof top === 'undefined' ? this.scrollTop : ~~top);\n }; // Element.prototype.scrollBy\n\n\n Element.prototype.scrollBy = function () {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n } // avoid smooth behavior if not required\n\n\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(this, arguments[0].left !== undefined ? ~~arguments[0].left + this.scrollLeft : ~~arguments[0] + this.scrollLeft, arguments[0].top !== undefined ? ~~arguments[0].top + this.scrollTop : ~~arguments[1] + this.scrollTop);\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n }; // Element.prototype.scrollIntoView\n\n\n Element.prototype.scrollIntoView = function () {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(this, arguments[0] === undefined ? true : arguments[0]);\n return;\n } // LET THE SMOOTHNESS BEGIN!\n\n\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(this, scrollableParent, scrollableParent.scrollLeft + clientRects.left - parentRects.left, scrollableParent.scrollTop + clientRects.top - parentRects.top); // reveal parent in viewport unless is fixed\n\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n // commonjs\n module.exports = {\n polyfill: polyfill\n };\n } else {\n // global\n polyfill();\n }\n})();","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.withAssetPrefix = withAssetPrefix;\nexports.navigate = exports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nvar _utils = require(\"@gatsbyjs/reach-router/lib/utils\");\n\nvar _parsePath = require(\"./parse-path\");\n\nexports.parsePath = _parsePath.parsePath;\nvar _excluded = [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\", \"_location\"];\n\nvar isAbsolutePath = function isAbsolutePath(path) {\n return path === null || path === void 0 ? void 0 : path.startsWith(\"/\");\n};\n\nfunction withPrefix(path, prefix) {\n var _ref, _prefix;\n\n if (prefix === void 0) {\n prefix = getGlobalBasePrefix();\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n if (path.startsWith(\"./\") || path.startsWith(\"../\")) {\n return path;\n }\n\n var base = (_ref = (_prefix = 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\n\nvar getGlobalPathPrefix = function getGlobalPathPrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __PATH_PREFIX__ !== \"undefined\" ? __PATH_PREFIX__ : undefined : __PATH_PREFIX__;\n};\n\nvar getGlobalBasePrefix = function getGlobalBasePrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : undefined : __BASE_PATH__;\n};\n\nvar isLocalLink = function isLocalLink(path) {\n return path && !path.startsWith(\"http://\") && !path.startsWith(\"https://\") && !path.startsWith(\"//\");\n};\n\nfunction withAssetPrefix(path) {\n return withPrefix(path, getGlobalPathPrefix());\n}\n\nfunction absolutify(path, current) {\n // If it's already absolute, return as-is\n if (isAbsolutePath(path)) {\n return path;\n }\n\n return (0, _utils.resolve)(path, current);\n}\n\nvar rewriteLinkPath = function rewriteLinkPath(path, relativeTo) {\n if (typeof path === \"number\") {\n return path;\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n return isAbsolutePath(path) ? withPrefix(path) : absolutify(path, relativeTo);\n};\n\nvar NavLinkPropTypes = {\n activeClassName: _propTypes.default.string,\n activeStyle: _propTypes.default.object,\n partiallyActive: _propTypes.default.bool\n}; // Set up IntersectionObserver\n\nvar createIntersectionObserver = function createIntersectionObserver(el, cb) {\n var io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (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 if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(el);\n io.disconnect();\n cb();\n }\n }\n });\n }); // Add element to the observer\n\n io.observe(el);\n return {\n instance: io,\n el: el\n };\n};\n\nfunction GatsbyLinkLocationWrapper(props) {\n return /*#__PURE__*/_react.default.createElement(_reachRouter.Location, null, function (_ref2) {\n var location = _ref2.location;\n return /*#__PURE__*/_react.default.createElement(GatsbyLink, (0, _extends2.default)({}, props, {\n _location: location\n }));\n });\n}\n\nvar GatsbyLink = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(GatsbyLink, _React$Component);\n\n function GatsbyLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // Default to no support for IntersectionObserver\n\n _this.defaultGetProps = function (_ref3) {\n var isPartiallyCurrent = _ref3.isPartiallyCurrent,\n isCurrent = _ref3.isCurrent;\n\n if (_this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n return {\n className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n style: (0, _extends2.default)({}, _this.props.style, _this.props.activeStyle)\n };\n }\n\n return null;\n };\n\n var IOSupported = false;\n\n if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n IOSupported = true;\n }\n\n _this.state = {\n IOSupported: IOSupported\n };\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n var _proto = GatsbyLink.prototype;\n\n _proto._prefetch = function _prefetch() {\n var currentPath = window.location.pathname; // reach router should have the correct state\n\n if (this.props._location && this.props._location.pathname) {\n currentPath = this.props._location.pathname;\n }\n\n var rewrittenPath = rewriteLinkPath(this.props.to, currentPath);\n var newPathName = (0, _parsePath.parsePath)(rewrittenPath).pathname; // Prefech 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 ___loader.enqueue(newPathName);\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Preserve non IO functionality if no support\n if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (!this.io) {\n return;\n }\n\n var _this$io = this.io,\n instance = _this$io.instance,\n el = _this$io.el;\n instance.unobserve(el);\n instance.disconnect();\n };\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n if (this.props.innerRef && this.props.innerRef.hasOwnProperty(\"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, function () {\n _this2._prefetch();\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n to = _this$props.to,\n _this$props$getProps = _this$props.getProps,\n getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n _onClick = _this$props.onClick,\n _onMouseEnter = _this$props.onMouseEnter,\n $activeClassName = _this$props.activeClassName,\n $activeStyle = _this$props.activeStyle,\n $innerRef = _this$props.innerRef,\n partiallyActive = _this$props.partiallyActive,\n state = _this$props.state,\n replace = _this$props.replace,\n _location = _this$props._location,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_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 var prefixedTo = rewriteLinkPath(to, _location.pathname);\n\n if (!isLocalLink(prefixedTo)) {\n return /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n href: prefixedTo\n }, rest));\n }\n\n return /*#__PURE__*/_react.default.createElement(_reachRouter.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.handleRef,\n onMouseEnter: function onMouseEnter(e) {\n if (_onMouseEnter) {\n _onMouseEnter(e);\n }\n\n ___loader.hovering((0, _parsePath.parsePath)(prefixedTo).pathname);\n },\n onClick: function onClick(e) {\n if (_onClick) {\n _onClick(e);\n }\n\n if (e.button === 0 && // ignore right clicks\n !_this3.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 var shouldReplace = replace;\n\n var 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: state,\n replace: shouldReplace\n });\n }\n\n return true;\n }\n }, rest));\n };\n\n return GatsbyLink;\n}(_react.default.Component);\n\nGatsbyLink.propTypes = (0, _extends2.default)({}, NavLinkPropTypes, {\n onClick: _propTypes.default.func,\n to: _propTypes.default.string.isRequired,\n replace: _propTypes.default.bool,\n state: _propTypes.default.object\n});\n\nvar _default = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n return /*#__PURE__*/_react.default.createElement(GatsbyLinkLocationWrapper, (0, _extends2.default)({\n innerRef: ref\n }, props));\n});\n\nexports.default = _default;\n\nvar navigate = function navigate(to, options) {\n window.___navigate(rewriteLinkPath(to, window.location.pathname), options);\n};\n\nexports.navigate = navigate;","\"use strict\";\n\nexports.__esModule = true;\nexports.parsePath = parsePath;\n\nfunction parsePath(path) {\n var pathname = path || \"/\";\n var search = \"\";\n var hash = \"\";\n var hashIndex = pathname.indexOf(\"#\");\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf(\"?\");\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === \"?\" ? \"\" : search,\n hash: hash === \"#\" ? \"\" : hash\n };\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}","// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\nexports.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-pages-test-js\": () => import(\"./../../../src/pages/test.js\" /* webpackChunkName: \"component---src-pages-test-js\" */),\n \"component---src-templates-portfolio-details-js\": () => import(\"./../../../src/templates/portfolio-details.js\" /* webpackChunkName: \"component---src-templates-portfolio-details-js\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-image/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-smoothscroll/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-modal-routing-3/gatsby-browser.js'),\n options: {\"plugins\":[],\"appElement\":\"#___gatsby\",\"modalProps\":{\"style\":{\"overlay\":{\"backgroundColor\":\"rgba(0, 0, 0, 0.1)\",\"zIndex\":\"50\"},\"content\":{\"zIndex\":\"55\"}}}},\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 path => {\n if (path === undefined) {\n return path\n }\n if (path === `/`) {\n return `/`\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1)\n }\n return path\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 const pathname = decodeURIComponent(rawPathname)\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 // Remove search query\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","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 = path => {\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise((resolve, reject) => {\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\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 }\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.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 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 page and it doesn't exist, we're done\n if (pagePath === `/404.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 Object.assign(loadObj, {\n status: PageResourceStatus.Error,\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 // 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 false\n }\n\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 false\n }\n\n const realPath = findPath(pagePath)\n // Todo make doPrefetch logic cacheable\n // eslint-disable-next-line consistent-return\n this.doPrefetch(realPath).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n })\n\n return true\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) {\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\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\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(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).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\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 // Check for initial page-load redirect\n maybeRedirect(window.location.pathname)\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});","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, { withErrorDetails: true }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(location.pathname, {\n withErrorDetails: true,\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(nextProps.location.pathname)\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(nextProps.location.pathname)\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 { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\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)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\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). But\n // 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 !== browserLoc.pathname &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath === `/404.html` ||\n pagePath.match(/^\\/404\\/?$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(__BASE_PATH__ + pagePath + browserLoc.search + browserLoc.hash, {\n replace: true,\n })\n }\n\n publicLoader.loadPage(browserLoc.pathname).then(page => {\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 window.___webpackCompilationHash = page.page.webpackCompilationHash\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 renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n ReactDOM.hydrateRoot ? ReactDOM.hydrateRoot : ReactDOM.hydrate\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n if (renderer === ReactDOM.hydrateRoot) {\n renderer(rootElement, )\n } else {\n renderer(, rootElement)\n }\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 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","/* eslint-disable no-unused-expressions */\nimport { stripIndent } from \"common-tags\"\nimport camelCase from \"camelcase\"\nimport { IGatsbyImageData } from \".\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n duotone?: {\n highlight: string\n shadow: string\n opacity?: number\n }\n grayscale?: boolean\n rotate?: number\n trim?: number\n }\n jpgOptions?: Record\n pngOptions?: Record\n webpOptions?: Record\n avifOptions?: Record\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array\n breakpoints?: Array\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record\n ) => IImage\n layout?: Layout\n formats?: Array\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record\n breakpoints?: Array\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.substr(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array): Array =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(stripIndent`\n The requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* eslint-disable no-unused-expressions */\nimport {\n useState,\n CSSProperties,\n useEffect,\n HTMLAttributes,\n ImgHTMLAttributes,\n ReactEventHandler,\n SetStateAction,\n Dispatch,\n RefObject,\n} from \"react\"\nimport { Node } from \"gatsby\"\nimport { PlaceholderProps } from \"./placeholder\"\nimport { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport {\n IGatsbyImageHelperArgs,\n generateImageData,\n Layout,\n EVERY_BREAKPOINT,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\nconst imageCache = new Set()\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport function storeImageloaded(cacheKey?: string): void {\n if (cacheKey) {\n imageCache.add(cacheKey)\n }\n}\n\nexport function hasImageLoaded(cacheKey: string): boolean {\n return imageCache.has(cacheKey)\n}\nexport type IGatsbyImageDataParent = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type FileNode = Node & {\n childImageSharp?: IGatsbyImageDataParent\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent | any\n): node is IGatsbyImageDataParent => Boolean(node?.gatsbyImageData)\n\nexport type ImageDataLike = FileNode | IGatsbyImageDataParent | IGatsbyImageData\nexport const getImage = (node: ImageDataLike): IGatsbyImageData | undefined => {\n if (isGatsbyImageData(node)) {\n return node\n }\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport async function applyPolyfill(\n ref: RefObject\n): Promise {\n if (!(`objectFitPolyfill` in window)) {\n await import(\n /* webpackChunkName: \"gatsby-plugin-image-objectfit-polyfill\" */ `objectFitPolyfill`\n )\n }\n ;(window as any).objectFitPolyfill(ref.current)\n}\n\nexport interface IUrlBuilderArgs {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array\n\n breakpoints?: Array\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n toggleLoaded?: (loaded: boolean) => void,\n cacheKey?: string,\n ref?: RefObject,\n style: CSSProperties = {}\n): Partial {\n const onLoad: ReactEventHandler = function (e) {\n if (isLoaded) {\n return\n }\n\n storeImageloaded(cacheKey)\n\n const target = e.currentTarget\n const img = new Image()\n img.src = target.currentSrc\n\n if (img.decode) {\n // Decode the image through javascript to support our transition\n img\n .decode()\n .catch(() => {\n // ignore error, we just go forward\n })\n .then(() => {\n toggleLoaded(true)\n })\n } else {\n toggleLoaded(true)\n }\n }\n\n // Polyfill \"object-fit\" if unsupported (mostly IE)\n if (ref?.current && !(`objectFit` in document.documentElement.style)) {\n ref.current.dataset.objectFit = style.objectFit ?? `cover`\n ref.current.dataset.objectPosition = `${style.objectPosition ?? `50% 50%`}`\n applyPolyfill(ref)\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n onLoad,\n ref,\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes &\n Pick & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport function useImageLoaded(\n cacheKey: string,\n loading: \"lazy\" | \"eager\",\n ref: any\n): {\n isLoaded: boolean\n isLoading: boolean\n toggleLoaded: Dispatch>\n} {\n const [isLoaded, toggleLoaded] = useState(false)\n const [isLoading, toggleIsLoading] = useState(loading === `eager`)\n\n const rAF =\n typeof window !== `undefined` && `requestAnimationFrame` in window\n ? requestAnimationFrame\n : function (cb: TimerHandler): number {\n return setTimeout(cb, 16)\n }\n const cRAF =\n typeof window !== `undefined` && `cancelAnimationFrame` in window\n ? cancelAnimationFrame\n : clearTimeout\n\n useEffect(() => {\n let interval: number\n // @see https://stackoverflow.com/questions/44074747/componentdidmount-called-before-ref-callback/50019873#50019873\n function toggleIfRefExists(): void {\n if (ref.current) {\n if (loading === `eager` && ref.current.complete) {\n storeImageloaded(cacheKey)\n toggleLoaded(true)\n } else {\n toggleIsLoading(true)\n }\n } else {\n interval = rAF(toggleIfRefExists)\n }\n }\n toggleIfRefExists()\n\n return (): void => {\n cRAF(interval)\n }\n }, [])\n\n return {\n isLoading,\n isLoaded,\n toggleLoaded,\n }\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \n\nimport React, { Fragment, FunctionComponent } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n \n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer: string | null = null\n if (layout === `fullWidth`) {\n sizer = `
`\n }\n if (layout === `constrained`) {\n sizer = `
\"\"
`\n }\n return sizer\n}\n\nconst Sizer: FunctionComponent = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n
\n )\n }\n if (layout === `constrained`) {\n return (\n
\n \n
\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent =\n function LayoutWrapper({ children, ...props }) {\n return (\n \n \n {children}\n\n {\n // eslint-disable-next-line no-undef\n SERVER && \n }\n \n )\n }\n","/* eslint-disable filenames/match-regex */\nimport React, {\n FunctionComponent,\n ImgHTMLAttributes,\n forwardRef,\n LegacyRef,\n} from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial\n\ntype ImageProps = ImgHTMLAttributes & {\n src: string\n alt: string\n shouldLoad: boolean\n innerRef: LegacyRef\n}\n\nexport type PictureProps = ImgHTMLAttributes & {\n fallback?: FallbackProps\n sources?: Array\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n innerRef,\n ...props\n}) {\n return (\n \n )\n}\n\nexport const Picture = forwardRef(\n function Picture(\n { fallback, sources = [], shouldLoad = true, ...props },\n ref\n ) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n \n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n \n {sources.map(({ media, srcSet, type }) => (\n \n ))}\n {fallbackImage}\n \n )\n }\n)\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes & {\n fallback?: string\n sources?: Array\n}\n\nexport const Placeholder: FunctionComponent =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n \n )\n } else {\n return
\n }\n }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React, { forwardRef } from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage = forwardRef(\n function MainImage(props, ref) {\n return (\n <>\n \n \n \n )\n }\n)\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React, {\n ElementType,\n FunctionComponent,\n CSSProperties,\n WeakValidationMap,\n} from \"react\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImageHydrator: FunctionComponent<{\n as?: ElementType\n style?: CSSProperties\n className?: string\n}> = function GatsbyImageHydrator({ as: Type = `div`, children, ...props }) {\n return {children}\n}\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage({\n as,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n }) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n if (preactClass) {\n className = preactClass\n }\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return (\n \n \n \n\n )}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n undefined,\n undefined,\n undefined,\n imgStyle\n )}\n />\n \n \n )\n }\n\nexport const altValidator: PropTypes.Validator = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n return PropTypes.string(props, propName, componentName, ...rest)\n}\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap\n","/* eslint-disable no-unused-expressions */\nimport React, {\n Component,\n ElementType,\n createRef,\n MutableRefObject,\n FunctionComponent,\n ImgHTMLAttributes,\n RefObject,\n CSSProperties,\n} from \"react\"\nimport {\n getWrapperProps,\n hasNativeLazyLoadSupport,\n storeImageloaded,\n hasImageLoaded,\n gatsbyImageIsInstalled,\n} from \"./hooks\"\nimport { PlaceholderProps } from \"./placeholder\"\nimport { MainImageProps } from \"./main-image\"\nimport { Layout } from \"../image-utils\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport { Unobserver } from \"./intersection-observer\"\nimport { render } from \"react-dom\"\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: () => void\n onError?: () => void\n onStartLoad?: (props: { wasCached?: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick\n placeholder?: Pick\n}\n\nclass GatsbyImageHydrator extends Component<\n GatsbyImageProps,\n { isLoading: boolean; isLoaded: boolean }\n> {\n root: RefObject = createRef<\n HTMLImageElement | undefined\n >()\n hydrated: MutableRefObject = { current: false }\n forceRender: MutableRefObject = {\n // In dev we use render not hydrate, to avoid hydration warnings\n current: process.env.NODE_ENV === `development`,\n }\n lazyHydrator: () => void | null = null\n ref = createRef()\n unobserveRef: Unobserver\n\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: hasNativeLazyLoadSupport(),\n isLoaded: false,\n }\n }\n\n _lazyHydrate(props, state): Promise {\n const hasSSRHtml = this.root.current.querySelector(\n `[data-gatsby-image-ssr]`\n )\n // On first server hydration do nothing\n if (hasNativeLazyLoadSupport() && hasSSRHtml && !this.hydrated.current) {\n this.hydrated.current = true\n return Promise.resolve()\n }\n\n return import(`./lazy-hydrate`).then(({ lazyHydrate }) => {\n this.lazyHydrator = lazyHydrate(\n {\n image: props.image.images,\n isLoading: state.isLoading,\n isLoaded: state.isLoaded,\n toggleIsLoaded: () => {\n props.onLoad?.()\n\n this.setState({\n isLoaded: true,\n })\n },\n ref: this.ref,\n ...props,\n },\n this.root,\n this.hydrated,\n this.forceRender\n )\n })\n }\n\n /**\n * Choose if setupIntersectionObserver should use the image cache or not.\n */\n _setupIntersectionObserver(useCache = true): void {\n import(`./intersection-observer`).then(({ createIntersectionObserver }) => {\n const intersectionObserver = createIntersectionObserver(() => {\n if (this.root.current) {\n const cacheKey = JSON.stringify(this.props.image.images)\n this.props.onStartLoad?.({\n wasCached: useCache && hasImageLoaded(cacheKey),\n })\n this.setState({\n isLoading: true,\n isLoaded: useCache && hasImageLoaded(cacheKey),\n })\n }\n })\n\n if (this.root.current) {\n this.unobserveRef = intersectionObserver(this.root)\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState): boolean {\n let hasChanged = false\n if (!this.state.isLoading && nextState.isLoading && !nextState.isLoaded) {\n // Props have changed between SSR and hydration, so we need to force render instead of hydrate\n this.forceRender.current = true\n }\n // this check mostly means people do not have the correct ref checks in place, we want to reset some state to suppport loading effects\n if (this.props.image.images !== nextProps.image.images) {\n // reset state, we'll rely on intersection observer to reload\n if (this.unobserveRef) {\n // unregister intersectionObserver\n this.unobserveRef()\n\n // // on unmount, make sure we cleanup\n if (this.hydrated.current && this.lazyHydrator) {\n render(null, this.root.current)\n }\n }\n\n this.setState(\n {\n isLoading: false,\n isLoaded: false,\n },\n () => {\n this._setupIntersectionObserver(false)\n }\n )\n\n hasChanged = true\n }\n\n if (this.root.current && !hasChanged) {\n this._lazyHydrate(nextProps, nextState)\n }\n\n return false\n }\n\n componentDidMount(): void {\n if (this.root.current) {\n const ssrElement = this.root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n const cacheKey = JSON.stringify(this.props.image.images)\n\n // when SSR and native lazyload is supported we'll do nothing ;)\n if (\n hasNativeLazyLoadSupport() &&\n ssrElement &&\n gatsbyImageIsInstalled()\n ) {\n this.props.onStartLoad?.({ wasCached: false })\n\n // When the image is already loaded before we have hydrated, we trigger onLoad and cache the item\n if (ssrElement.complete) {\n this.props.onLoad?.()\n storeImageloaded(cacheKey)\n } else {\n // We need the current class context (this) inside our named onLoad function\n // The named function is necessary to easily remove the listener afterward.\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this\n // add an onLoad to the image\n ssrElement.addEventListener(`load`, function onLoad() {\n ssrElement.removeEventListener(`load`, onLoad)\n\n _this.props.onLoad?.()\n storeImageloaded(cacheKey)\n })\n }\n\n return\n }\n\n // Fallback to custom lazy loading (intersection observer)\n this._setupIntersectionObserver(true)\n }\n }\n\n componentWillUnmount(): void {\n // Cleanup when onmount happens\n if (this.unobserveRef) {\n // unregister intersectionObserver\n this.unobserveRef()\n\n // on unmount, make sure we cleanup\n if (this.hydrated.current && this.lazyHydrator) {\n this.lazyHydrator()\n }\n }\n\n return\n }\n\n render(): JSX.Element {\n const Type = this.props.as || `div`\n const { width, height, layout } = this.props.image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n let className = this.props.className\n // preact class\n if (this.props.class) {\n className = this.props.class\n }\n\n const sizer = getSizer(layout, width, height)\n\n return (\n \n )\n }\n}\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage(props) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n return null\n }\n\n if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n const { className, class: classSafe, backgroundColor, image } = props\n const { width, height, layout } = image\n const propsKey = JSON.stringify([\n width,\n height,\n layout,\n className,\n classSafe,\n backgroundColor,\n ])\n return \n }\n\nGatsbyImage.propTypes = propTypes\n\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit,\n Omit {\n src: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent\n): React.FC {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return \n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import * as React from \"react\"\nexport function LaterHydrator({\n children,\n}: React.PropsWithChildren>): React.ReactNode {\n React.useEffect(() => {\n // eslint-disable-next-line no-unused-expressions\n import(`./lazy-hydrate`)\n }, [])\n\n return children\n}\n","import React from \"react\"\nimport { LaterHydrator } from \".\"\n\nexport function wrapRootElement({ element }) {\n return {element}\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = exports.defaultValue = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar defaultValue = {\n isModal: false,\n closeTo: null\n};\nexports.defaultValue = defaultValue;\n\nvar ModalRoutingContext = /*#__PURE__*/_react.default.createContext(defaultValue);\n\nvar _default = ModalRoutingContext;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\n\nvar _wrapPageElement = _interopRequireDefault(require(\"./wrapPageElement\"));\n\nexports.wrapPageElement = _wrapPageElement.default;\n\nvar _shouldUpdateScroll = _interopRequireDefault(require(\"./shouldUpdateScroll\"));\n\nexports.shouldUpdateScroll = _shouldUpdateScroll.default;\n\nvar _onClientEntry = _interopRequireDefault(require(\"./onClientEntry\"));\n\nexports.onClientEntry = _onClientEntry.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _reactModal = _interopRequireDefault(require(\"react-modal\"));\n\nvar onClientEntry = function onClientEntry(_args, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _opts = opts,\n _opts$appElement = _opts.appElement,\n appElement = _opts$appElement === void 0 ? \"#___gatsby\" : _opts$appElement;\n\n _reactModal.default.setAppElement(appElement);\n};\n\nvar _default = onClientEntry;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _get2 = _interopRequireDefault(require(\"lodash/get\"));\n\nvar shouldUpdateScroll = function shouldUpdateScroll(_ref) {\n var location = _ref.routerProps.location;\n var isModal = (0, _get2.default)(location, 'state.modal');\n var preventUpdateScroll = (0, _get2.default)(location, 'state.noScroll');\n return !isModal && !preventUpdateScroll;\n};\n\nvar _default = shouldUpdateScroll;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _get2 = _interopRequireDefault(require(\"lodash/get\"));\n\nvar _gatsby = require(\"gatsby\");\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactModal = _interopRequireDefault(require(\"react-modal\"));\n\nvar _ModalRoutingContext = _interopRequireDefault(require(\"./ModalRoutingContext\"));\n\nvar withoutPrefix = function withoutPrefix(path) {\n var prefix = typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : __PATH_PREFIX__;\n return path.slice(prefix ? prefix.length : 0);\n};\n\nvar WrapPageElement = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(WrapPageElement, _React$Component);\n\n function WrapPageElement() {\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.state = {\n prevProps: null,\n lastModalProps: null,\n props: null,\n pathname: null\n };\n _this.modalContentRef = null;\n\n _this.handleRequestClose = function () {\n (0, _gatsby.navigate)(withoutPrefix(_this.state.prevProps.location.pathname), {\n state: {\n noScroll: true\n }\n });\n };\n\n return _this;\n }\n\n WrapPageElement.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // TODO: handle history changes\n if (props.location.pathname !== state.pathname) {\n return (0, _extends2.default)({\n pathname: props.location.pathname,\n props: props\n }, (0, _get2.default)(state, 'props.location.state.modal') ? {\n // old page was a modal, keep track so we can render the contents while closing\n lastModalProps: state.props\n } : {\n // old page was not a modal, keep track so we can render the contents under modals\n prevProps: state.props\n });\n }\n\n return null;\n };\n\n var _proto = WrapPageElement.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if ((0, _get2.default)(prevProps, 'location.pathname') !== (0, _get2.default)(this.props, 'location.pathname') && (0, _get2.default)(this.props, 'location.state.modal') && this.modalContentRef) {\n this.modalContentRef.scrollTop = 0;\n }\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n // render modal if props location has modal\n var _this$props = this.props,\n pageResources = _this$props.pageResources,\n location = _this$props.location,\n modalProps = _this$props.modalProps;\n var _this$state = this.state,\n prevProps = _this$state.prevProps,\n lastModalProps = _this$state.lastModalProps;\n var isModal = prevProps && (0, _get2.default)(location, 'state.modal');\n var resources = isModal ? prevProps.pageResources : pageResources; // the page is the previous path if this is a modal, otherwise it's the current path\n\n var pageElement = isModal ? /*#__PURE__*/_react.default.createElement(prevProps.pageResources.component, (0, _extends2.default)({}, prevProps, {\n key: prevProps.pageResources.page.path\n })) : /*#__PURE__*/_react.default.createElement(pageResources.component, (0, _extends2.default)({}, this.props, {\n key: pageResources.page.path\n }));\n var modalElement = null;\n\n if (isModal) {\n // Rendering the current page as a modal, so create an element with the page contents\n modalElement = /*#__PURE__*/_react.default.createElement(pageResources.component, (0, _extends2.default)({}, this.props, {\n key: pageResources.page.path\n }));\n } else if (lastModalProps) {\n // Not rendering the current page as a modal, but we may be in the process of animating\n // the old modal content to close, so render the last modal content we have cached\n modalElement = /*#__PURE__*/_react.default.createElement((0, _get2.default)(lastModalProps, 'pageResources.component'), (0, _extends2.default)({}, lastModalProps, {\n key: (0, _get2.default)(lastModalProps, 'pageResources.page.path')\n }));\n }\n\n return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, pageElement, /*#__PURE__*/_react.default.createElement(_reactModal.default, (0, _extends2.default)({\n onRequestClose: this.handleRequestClose,\n contentRef: function contentRef(node) {\n return _this2.modalContentRef = node;\n }\n }, modalProps, {\n isOpen: !!isModal\n }), modalElement ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {\n key: this.props.location.key\n }, /*#__PURE__*/_react.default.createElement(_ModalRoutingContext.default.Provider, {\n value: {\n modal: true,\n closeTo: prevProps ? withoutPrefix(prevProps.location.pathname) : '/'\n }\n }, modalElement)) : null));\n };\n\n return WrapPageElement;\n}(_react.default.Component);\n\nvar wrapPageElement = function wrapPageElement(_ref, opts) {\n var props = _ref.props;\n var modalProps = opts.modalProps;\n return /*#__PURE__*/_react.default.createElement(WrapPageElement, (0, _extends2.default)({}, props, {\n modalProps: modalProps\n }));\n};\n\nvar _default = wrapPageElement;\nexports.default = _default;","\"use strict\";\n\nvar smoothscroll = require('smoothscroll-polyfill');\n\nexports.onClientEntry = function () {\n smoothscroll.polyfill();\n};","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","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}"],"names":["module","exports","self","ReferenceError","__esModule","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","setPrototypeOf","subClass","superClass","create","constructor","obj","excluded","sourceKeys","keys","indexOf","_setPrototypeOf","o","p","__proto__","getLocation","_source$location","location","search","hash","href","origin","protocol","host","hostname","port","pathname","canUseDOM","URL","encodeURI","decodeURI","state","history","createHistory","options","listeners","transitioning","resolveTransition","_onTransitionComplete","listen","listener","push","popstateListener","action","addEventListener","removeEventListener","filter","fn","navigate","to","_ref","undefined","_ref$replace","replace","go","Date","now","replaceState","pushState","e","transition","Promise","res","forEach","createMemorySource","initialPath","searchIndex","initialLocation","substr","index","stack","states","name","_","uri","_uri$split","split","_uri$split$","_uri$split2","_uri$split2$","newIndex","window","document","createElement","globalHistory","shallowCompare","validateRedirect","insertParams","resolve","match","pick","startsWith","_invariant","_invariant2","default","string","routes","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","l","missed","route","params","routeSegments","path","max","Math","routeSegment","uriSegment","isSplat","slice","map","decodeURIComponent","join","dynamicMatch","paramRe","exec","reservedNames","value","isDynamic","segment","test","rankRoute","score","reduce","isRootSegment","SEGMENT_POINTS","sort","a","b","addQuery","_len","query","Array","_key","q","base","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","concat","allSegments","segments","pop","_path$split","pathBase","_path$split$","constructedPath","_params$location","_params$location$sear","searchSplit","from","obj1","obj2","obj1Keys","every","camelCase","input","isArray","TypeError","pascalCase","x","trim","toUpperCase","toLowerCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","character","preserveCamelCase","p1","m","charAt","strings","raw","_createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","_templateObject","freeze","_classCallCheck","instance","TemplateTag","_this","transformers","tag","_len2","expressions","_key2","interimTag","bind","transformEndResult","transformString","processSubstitutions","transformer","previousTag","template","_len3","substitutions","_key3","resultSoFar","remainingPart","substitution","transformSubstitution","shift","str","transform","onString","onSubstitution","endResult","onEndResult","defaults","separator","conjunction","serial","opts","arrayLength","indent","separatorIndex","lastIndexOf","_toConsumableArray","arr","arr2","type","min","el","regexp","RegExp","Error","side","splitBy","includes","isValidValue","Number","isNaN","replaceWhat","replaceWith","toString","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","attachEvent","canUseViewport","screen","bodyOpenClassName","portalClassName","_react","_react2","_interopRequireDefault","_reactDom2","_propTypes2","_ModalPortal2","ariaAppHider","newObj","_interopRequireWildcard","_safeHTMLElement","_safeHTMLElement2","_reactLifecyclesCompat","_possibleConstructorReturn","isReact16","createPortal","createHTMLElement","getCreatePortal","unstable_renderSubtreeIntoContainer","getParentElement","parentSelector","Modal","_Component","_temp","args","getPrototypeOf","removePortal","unmountComponentAtNode","node","parent","contains","removeChild","console","warn","portalRef","ref","portal","renderPortal","defaultStyles","_inherits","className","appendChild","prevProps","prevParent","nextParent","snapshot","_props","isOpen","closesAt","closeTimeoutMS","beforeClose","closeWithTimeout","setTimeout","element","setElement","Component","propTypes","bool","isRequired","style","shape","content","object","overlay","htmlOpenClassName","oneOfType","afterOpen","overlayClassName","appElement","instanceOf","SafeHTMLCollection","SafeNodeList","arrayOf","onAfterOpen","func","onRequestClose","number","ariaHideApp","shouldFocusAfterRender","shouldCloseOnOverlayClick","shouldReturnFocusAfterClose","preventScroll","aria","data","role","contentLabel","shouldCloseOnEsc","overlayRef","contentRef","id","overlayElement","contentElement","defaultProps","body","contentEl","children","position","top","left","right","bottom","backgroundColor","border","background","overflow","WebkitOverflowScrolling","borderRadius","outline","padding","polyfill","_typeof","Symbol","iterator","focusManager","_scopeTab2","classList","_portalOpenInstances2","CLASS_NAMES","ariaHiddenInstances","ModalPortal","setOverlayRef","setContentRef","afterClose","_this$props","remove","getElementsByTagName","show","returnFocus","teardownScopedFocus","popWithoutFocus","onAfterClose","deregister","open","beforeOpen","clearTimeout","closeTimer","setState","setupScopedFocus","markForFocusLater","openAnimationFrame","requestAnimationFrame","overlayEl","close","closeWithoutTimeout","focusContent","contentHasFocus","focus","handleKeyDown","event","keyCode","stopPropagation","requestClose","handleOverlayOnClick","shouldClose","ownerHandlesClose","handleContentOnMouseUp","handleOverlayOnMouseDown","preventDefault","handleContentOnClick","handleContentOnMouseDown","shouldBeClosed","activeElement","buildClassName","which","additional","classNames","attributesFromObject","prefix","items","acc","moveFromContentToOverlay","prevState","cancelAnimationFrame","add","hide","register","_props2","contentStyles","overlayStyles","overlayProps","onClick","onMouseDown","contentProps","tabIndex","onKeyDown","onMouseUp","modal","testId","resetState","globalElement","removeAttribute","querySelectorAll","log","check","nodeName","assertNodeList","useElement","validateElement","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","next","done","setAttribute","err","return","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","documentNotReadyOrSSRTesting","_warning","_warning2","nodeList","selector","HTMLCollection","NodeList","_arr","before","after","_i","item","parentNode","instances","_arr2","_i2","_portalOpenInstances","subscribe","eventType","openInstances","opacity","cloneNode","firstChild","insertBefore","lastChild","parentElement","htmlElement","cls","htmlClassList","removeClass","_cls","docBodyClassList","classes","buffer","_x","at","classString","classListRef","poll","incrementReference","decrementReference","focusLaterElements","f","handleBlur","handleFocus","toFocus","modalElement","detachEvent","_tabbable","_tabbable2","needToFocus","portalOpenInstances","PortalOpenInstances","openInstance","emit","splice","callback","subscribers","subscriber","_exenv","EE","SafeHTMLElement","HTMLElement","tabbable","shiftKey","head","tail","checkSafari","navigator","userAgent","tabbableNode","hidesContents","zeroSize","offsetWidth","offsetHeight","innerHTML","getComputedStyle","getPropertyValue","scrollWidth","scrollHeight","exception","focusable","isTabIndexNotNaN","disabled","visible","getAttribute","isTabIndexNaN","_Modal","_Modal2","w","d","documentElement","__forceSmoothScrollPolyfill__","Element","original","scroll","scrollTo","scrollBy","elementScroll","scrollElement","scrollIntoView","performance","ROUNDING_TOLERANCE","shouldBailOut","smoothScroll","scrollX","pageXOffset","scrollY","pageYOffset","scrollLeft","scrollTop","SyntaxError","behavior","scrollableParent","findScrollableParent","parentRects","getBoundingClientRect","clientRects","y","firstArg","hasScrollableSpace","axis","clientHeight","clientWidth","canOverflow","overflowValue","isScrollable","isScrollableY","isScrollableX","step","context","currentX","currentY","k","elapsed","startTime","cos","PI","startX","startY","method","scrollable","withPrefix","getGlobalPathPrefix","_objectWithoutPropertiesLoose2","_assertThisInitialized2","_inheritsLoose2","_extends2","_propTypes","_reachRouter","_utils","_parsePath","parsePath","_excluded","isAbsolutePath","_prefix","getGlobalBasePrefix","isLocalLink","endsWith","rewriteLinkPath","relativeTo","current","absolutify","NavLinkPropTypes","activeClassName","activeStyle","partiallyActive","GatsbyLinkLocationWrapper","Location","_ref2","GatsbyLink","_location","_React$Component","defaultGetProps","_ref3","isPartiallyCurrent","isCurrent","Boolean","IOSupported","IntersectionObserver","handleRef","_proto","_prefetch","currentPath","rewrittenPath","newPathName","___loader","enqueue","componentDidUpdate","componentDidMount","componentWillUnmount","io","_this$io","unobserve","disconnect","cb","_this2","innerRef","entries","entry","isIntersecting","intersectionRatio","observe","render","_this3","_this$props$getProps","getProps","_onClick","_onMouseEnter","onMouseEnter","rest","prefixedTo","Link","hovering","button","defaultPrevented","metaKey","altKey","ctrlKey","shouldReplace","___navigate","_default","forwardRef","hashIndex","_scrollHandler","ScrollHandler","_useScrollRestoration","useScrollRestoration","ScrollContext","React","nodeInterop","cache","_getRequireWildcardCache","has","get","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","_sessionStorage","WeakMap","cacheBabelInterop","cacheNodeInterop","createContext","SessionStorage","displayName","_stateStorage","_isTicking","_latestKnownScrollY","scrollListener","_saveScroll","windowScroll","shouldUpdateScroll","scrollToHash","getElementById","substring","prevRouterProps","routerProps","save","scrollPosition","_this$props$location","read","_this$props$location2","Provider","GATSBY_ROUTER_SCROLL_STATE","stateKey","getStateKey","sessionStorage","getItem","JSON","parse","storedValue","stringify","setItem","stateKeyBase","identifier","useLocation","useContext","useRef","useLayoutEffect","onScroll","components","plugin","require","plugins","getResourceURLsForPathname","loadPage","loadPageSync","api","defaultReturn","argTransform","results","result","previous","then","all","on","handler","off","evt","mitt","pathCache","Map","matchPaths","trimPathname","rawPathname","stripPrefix","__BASE_PATH__","setMatchPaths","findMatchPath","trimmedPathname","cleanPath","pickPaths","matchPath","originalPath","normalizePagePath","grabMatchParams","findPath","redirect","maybeGetBrowserRedirect","toPath","foundPath","prefetchPathname","loader","StaticQueryContext","StaticQueryDataRenderer","staticQueryData","finalData","StaticQuery","Consumer","useStaticQuery","graphql","_arrayLikeToArray","len","iter","minLen","n","supportedPrefetchStrategy","feature","fakeLink","relList","supports","support","url","reject","link","onload","onerror","getElementsByName","req","XMLHttpRequest","status","send","preFetched","catch","PageResourceStatus","Success","preferDefault","createPageDataUrl","s","stripSurroundingSlashes","doFetch","onreadystatechange","readyState","toPageResources","pageData","component","page","componentChunkName","webpackCompilationHash","staticQueryHashes","json","BaseLoader","loadComponent","inFlightNetworkRequests","pageDb","inFlightDb","staticQueryDb","pageDataDb","prefetchTriggered","Set","prefetchCompleted","memoizedGet","inFlightPromise","response","delete","setApiRunner","apiRunner","prefetchDisabled","some","fetchPageDataJson","loadObj","pagePath","retries","responseText","jsonPayload","payload","notFound","loadPageDataJson","rawPath","error","loadAppData","allData","finalResult","componentChunkPromise","pageResources","createdAt","staticQueryBatchPromise","staticQueryHash","staticQueryResults","staticQueryResultsMap","emitter","withErrorDetails","shouldPrefetch","connection","effectiveType","saveData","doesConnectionSupportPrefetch","prefetch","realPath","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","as","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","__PATH_PREFIX__","ProdLoader","asyncRequires","chunkName","componentUrls","setLoader","_loader","publicLoader","getStaticQueryResults","PageRenderer","pageContext","__params","pageElement","RouteAnnouncerProps","width","height","clip","whiteSpace","maybeRedirect","___replace","onPreRouteUpdate","prevLocation","onRouteUpdate","___swUpdated","timeoutId","___webpackCompilationHash","serviceWorker","controller","postMessage","gatsbyApi","reachNavigate","getSavedScrollPosition","RouteAnnouncer","announcementRef","nextProps","pageName","title","pageHeadings","textContent","newAnnouncement","innerText","compareLocationProps","nextLocation","RouteUpdates","shouldComponentUpdate","shallowDiffers","EnsureResources","getDerivedStateFromProps","loadResources","nextState","___emitter","___push","apiRunnerAsync","RouteHandler","BaseContext","baseuri","basepath","DataContext","GatsbyRoot","LocationHandler","Router","browserLoc","message","SiteRoot","App","onClientEntryRanRef","mark","renderer","ReactDOM","runRender","rootElement","doc","doScroll","InternalPageRenderer","redirectMap","redirectIgnoreCaseMap","redirects","ignoreCase","fromPath","reg","installingWorker","installing","___failedResources","reload","imageCache","hasNativeLazyLoadSupport","HTMLImageElement","GATSBY___IMAGE","storeImageloaded","cacheKey","hasImageLoaded","format","getMainProps","isLoading","isLoaded","images","loading","toggleLoaded","dataset","objectFit","objectPosition","objectFitPolyfill","import","shouldLoad","onLoad","currentTarget","img","Image","src","currentSrc","decode","getPlaceholderProps","placeholder","layout","wrapperStyle","output","Sizer","paddingTop","maxWidth","display","alt","LayoutWrapper","Fragment","srcSet","decoding","Picture","fallback","sources","sizes","fallbackImage","media","PropTypes","Placeholder","propName","componentName","MainImage","altValidator","image","GatsbyImageHydrator","root","createRef","hydrated","forceRender","NODE_ENV","lazyHydrator","unobserveRef","_lazyHydrate","hasSSRHtml","querySelector","lazyHydrate","toggleIsLoaded","_setupIntersectionObserver","useCache","intersectionObserver","createIntersectionObserver","_this4","onStartLoad","wasCached","hasChanged","_this5","ssrElement","complete","Type","wStyle","wClass","wrapperProps","sizer","dangerouslySetInnerHTML","__html","suppressHydrationWarning","GatsbyImage","propsKey","checkDimensionProps","validLayouts","StaticImage","GatsbyImageBrowser","r","imageData","__imageData","__error","LaterHydrator","wrapRootElement","defaultValue","isModal","closeTo","_wrapPageElement","wrapPageElement","_shouldUpdateScroll","_onClientEntry","onClientEntry","_reactModal","_args","_opts$appElement","setAppElement","_get2","preventUpdateScroll","_gatsby","_ModalRoutingContext","withoutPrefix","WrapPageElement","lastModalProps","modalContentRef","handleRequestClose","noScroll","modalProps","_this$state","smoothscroll","_objectWithoutProperties","createNamedContext","Ctx","LocationContext","LocationProvider","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","ServerLocation","baseContext","locationContext","RouterImpl","_React$PureComponent","_navigate2","primary","_props$component","domProps","array","child","createRoute","clone","FocusWrapper","FocusHandler","FocusContext","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_React$Component2","_temp2","shouldFocus","myURIChanged","navigatedUpToMe","_props2$component","Comp","C","_ref4","_ref5","_ref6","_props$getProps","anchorProps","encodedHref","shouldNavigate","_location$state","restState","RedirectRequest","redirectTo","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","Redirect","_ref7","Match","_ref8","_ref9","_ref10","resolvedPath","useNavigate","useParams","useMatch","stripSlashes","elementPath","condition","c","argIndex","framesToPop","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","clear","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","getNative","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","iteratee","eq","castPath","toKey","getRawTag","objectToString","symToStringTag","toStringTag","isFunction","isMasked","isObject","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","reIsNative","arrayMap","isSymbol","symbolProto","symbolToString","baseToString","isKey","stringToPath","coreJsData","freeGlobal","g","isKeyable","__data__","baseIsNative","getValue","nativeObjectToString","isOwn","unmasked","nativeCreate","size","reIsDeepProp","reIsPlainProp","uid","maskSrcKey","IE_PROTO","assocIndexOf","getMapData","memoize","freeSelf","memoizeCapped","rePropName","reEscapeChar","charCodeAt","quote","subString","other","baseGet","baseGetTag","isObjectLike","resolver","memoized","Cache","warning","_inheritsLoose"],"sourceRoot":""}