-
Notifications
You must be signed in to change notification settings - Fork 0
/
app-8135e2c5a4060fa08c28.js.map
1 lines (1 loc) · 736 KB
/
app-8135e2c5a4060fa08c28.js.map
1
{"version":3,"file":"app-8135e2c5a4060fa08c28.js","mappings":"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","sources":["webpack://tav/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://tav/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://tav/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://tav/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://tav/./node_modules/@babel/runtime/helpers/createClass.js","webpack://tav/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://tav/./node_modules/@babel/runtime/helpers/extends.js","webpack://tav/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://tav/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://tav/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://tav/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://tav/./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://tav/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://tav/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://tav/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://tav/./node_modules/@babel/runtime/helpers/typeof.js","webpack://tav/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://tav/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://tav/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://tav/./node_modules/@headlessui/react/dist/_virtual/_rollupPluginBabelHelpers.js","webpack://tav/./node_modules/@headlessui/react/dist/components/keyboard.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/hooks/use-id.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/hooks/use-sync-refs.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/utils/focus-management.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/utils/match.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/utils/render.esm.js","webpack://tav/./node_modules/@heroicons/react/solid/esm/ArrowDownIcon.js","webpack://tav/./node_modules/@heroicons/react/solid/esm/ArrowUpIcon.js","webpack://tav/./node_modules/camelcase/index.js","webpack://tav/./node_modules/common-tags/es/TemplateTag/TemplateTag.js","webpack://tav/./node_modules/common-tags/es/inlineArrayTransformer/inlineArrayTransformer.js","webpack://tav/./node_modules/common-tags/es/stripIndentTransformer/stripIndentTransformer.js","webpack://tav/./node_modules/common-tags/es/trimResultTransformer/trimResultTransformer.js","webpack://tav/./node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.js","webpack://tav/./node_modules/common-tags/es/commaLists/commaLists.js","webpack://tav/./node_modules/common-tags/es/commaListsAnd/commaListsAnd.js","webpack://tav/./node_modules/common-tags/es/commaListsOr/commaListsOr.js","webpack://tav/./node_modules/common-tags/es/removeNonPrintingValuesTransformer/removeNonPrintingValuesTransformer.js","webpack://tav/./node_modules/common-tags/es/replaceSubstitutionTransformer/replaceSubstitutionTransformer.js","webpack://tav/./node_modules/common-tags/es/html/html.js","webpack://tav/./node_modules/common-tags/es/replaceResultTransformer/replaceResultTransformer.js","webpack://tav/./node_modules/common-tags/es/safeHtml/safeHtml.js","webpack://tav/./node_modules/common-tags/es/oneLine/oneLine.js","webpack://tav/./node_modules/common-tags/es/oneLineTrim/oneLineTrim.js","webpack://tav/./node_modules/common-tags/es/oneLineCommaLists/oneLineCommaLists.js","webpack://tav/./node_modules/common-tags/es/oneLineCommaListsOr/oneLineCommaListsOr.js","webpack://tav/./node_modules/common-tags/es/oneLineCommaListsAnd/oneLineCommaListsAnd.js","webpack://tav/./node_modules/common-tags/es/inlineLists/inlineLists.js","webpack://tav/./node_modules/common-tags/es/oneLineInlineLists/oneLineInlineLists.js","webpack://tav/./node_modules/common-tags/es/stripIndent/stripIndent.js","webpack://tav/./node_modules/common-tags/es/stripIndents/stripIndents.js","webpack://tav/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://tav/./node_modules/react-i18next/dist/es/context.js","webpack://tav/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://tav/./node_modules/react-i18next/dist/es/utils.js","webpack://tav/./node_modules/gatsby-link/index.js","webpack://tav/./node_modules/gatsby-link/parse-path.js","webpack://tav/./node_modules/gatsby-react-router-scroll/index.js","webpack://tav/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://tav/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://tav/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://tav/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://tav/./.cache/api-runner-browser-plugins.js","webpack://tav/./.cache/api-runner-browser.js","webpack://tav/./node_modules/mitt/dist/mitt.es.js","webpack://tav/./.cache/emitter.js","webpack://tav/./.cache/normalize-page-path.js","webpack://tav/./.cache/find-path.js","webpack://tav/./.cache/gatsby-browser-entry.js","webpack://tav/./.cache/prefetch.js","webpack://tav/./.cache/loader.js","webpack://tav/./.cache/page-renderer.js","webpack://tav/./.cache/route-announcer-props.js","webpack://tav/./.cache/navigation.js","webpack://tav/./node_modules/shallow-compare/es/index.js","webpack://tav/./.cache/ensure-resources.js","webpack://tav/./.cache/production-app.js","webpack://tav/./.cache/public-page-renderer-prod.js","webpack://tav/./.cache/public-page-renderer.js","webpack://tav/./.cache/react-lifecycles-compat.js","webpack://tav/./.cache/redirect-utils.js","webpack://tav/./.cache/register-service-worker.js","webpack://tav/./.cache/strip-prefix.js","webpack://tav/./node_modules/gatsby-env-variables/index.js","webpack://tav/./node_modules/gatsby-plugin-gatsby-cloud/gatsby-browser.js","webpack://tav/../src/image-utils.ts","webpack://tav/../src/components/hooks.ts","webpack://tav/../src/components/layout-wrapper.tsx","webpack://tav/../src/components/picture.tsx","webpack://tav/../src/components/placeholder.tsx","webpack://tav/../src/components/main-image.tsx","webpack://tav/../src/components/gatsby-image.server.tsx","webpack://tav/../src/components/gatsby-image.browser.tsx","webpack://tav/../src/components/static-image.server.tsx","webpack://tav/../src/components/static-image.tsx","webpack://tav/../src/components/later-hydrator.tsx","webpack://tav/./node_modules/gatsby-plugin-image/gatsby-browser.js","webpack://tav/./node_modules/gatsby-plugin-layout/gatsby-browser.js","webpack://tav/./node_modules/gatsby-plugin-layout/wrap-page.js","webpack://tav/./node_modules/@headlessui/react/dist/utils/bugs.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/internal/open-closed.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/components/disclosure/disclosure.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/utils/calculate-active-index.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/components/menu/menu.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/utils/disposables.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/hooks/use-disposables.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/hooks/use-window-event.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/hooks/use-tree-walker.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/components/transitions/utils/transition.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/hooks/use-is-initial-render.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/utils/once.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/components/transitions/transition.esm.js","webpack://tav/./node_modules/@headlessui/react/dist/hooks/use-is-mounted.esm.js","webpack://tav/./node_modules/@heroicons/react/outline/esm/MenuIcon.js","webpack://tav/./node_modules/@heroicons/react/outline/esm/TranslateIcon.js","webpack://tav/./node_modules/@heroicons/react/outline/esm/XIcon.js","webpack://tav/./node_modules/@heroicons/react/outline/esm/ZoomOutIcon.js","webpack://tav/./node_modules/react-i18next/dist/es/withTranslation.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://tav/./node_modules/fuse.js/dist/fuse.esm.js","webpack://tav/./src/components/search/search.js","webpack://tav/./src/components/header.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack://tav/./node_modules/i18next/dist/esm/i18next.js","webpack://tav/./node_modules/i18next-xhr-backend/dist/esm/i18nextXHRBackend.js","webpack://tav/./node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","webpack://tav/./src/components/i18nConfig.js","webpack://tav/./node_modules/react-i18next/dist/es/I18nextProvider.js","webpack://tav/./src/components/layout.js","webpack://tav/./src/components/i18n.js","webpack://tav/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://tav/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://tav/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://tav/./node_modules/invariant/browser.js","webpack://tav//Users/jon/Sites/tav/src/translations|sync|/^\\.\\/.*\\/about\\.json$/","webpack://tav//Users/jon/Sites/tav/src/translations|sync|/^\\.\\/.*\\/translation\\.json$/","webpack://tav/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://tav/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js"],"sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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 _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\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 _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\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;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\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, \"<Router> 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// <Link to=\"deeper\"/>\n// // instead of\n// <Link to=`{${props.uri}/deeper}`/>\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;","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n it = o[Symbol.iterator]();\n return it.next.bind(it);\n}\n\nexport { _arrayLikeToArray as arrayLikeToArray, _createForOfIteratorHelperLoose as createForOfIteratorHelperLoose, _extends as extends, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _unsupportedIterableToArray as unsupportedIterableToArray };","// TODO: This must already exist somewhere, right? 🤔\n// Ref: https://www.w3.org/TR/uievents-key/#named-key-attribute-values\nvar Keys;\n\n(function (Keys) {\n Keys[\"Space\"] = \" \";\n Keys[\"Enter\"] = \"Enter\";\n Keys[\"Escape\"] = \"Escape\";\n Keys[\"Backspace\"] = \"Backspace\";\n Keys[\"ArrowLeft\"] = \"ArrowLeft\";\n Keys[\"ArrowUp\"] = \"ArrowUp\";\n Keys[\"ArrowRight\"] = \"ArrowRight\";\n Keys[\"ArrowDown\"] = \"ArrowDown\";\n Keys[\"Home\"] = \"Home\";\n Keys[\"End\"] = \"End\";\n Keys[\"PageUp\"] = \"PageUp\";\n Keys[\"PageDown\"] = \"PageDown\";\n Keys[\"Tab\"] = \"Tab\";\n})(Keys || (Keys = {}));\n\nexport { Keys };","import { useState } from 'react';\nimport { useIsoMorphicEffect } from './use-iso-morphic-effect.esm.js';\nimport { useServerHandoffComplete } from './use-server-handoff-complete.esm.js'; // didn't take care of the Suspense case. To fix this we used the approach the @reach-ui/auto-id\n// uses.\n//\n// Credits: https://github.com/reach/reach-ui/blob/develop/packages/auto-id/src/index.tsx\n\nvar id = 0;\n\nfunction generateId() {\n return ++id;\n}\n\nfunction useId() {\n var ready = useServerHandoffComplete();\n\n var _useState = useState(ready ? generateId : null),\n id = _useState[0],\n setId = _useState[1];\n\n useIsoMorphicEffect(function () {\n if (id === null) setId(generateId());\n }, [id]);\n return id != null ? '' + id : undefined;\n}\n\nexport { useId };","import { useLayoutEffect, useEffect } from 'react';\nvar useIsoMorphicEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nexport { useIsoMorphicEffect };","import { useState, useEffect } from 'react';\nvar state = {\n serverHandoffComplete: false\n};\n\nfunction useServerHandoffComplete() {\n var _useState = useState(state.serverHandoffComplete),\n serverHandoffComplete = _useState[0],\n setServerHandoffComplete = _useState[1];\n\n useEffect(function () {\n if (serverHandoffComplete === true) return;\n setServerHandoffComplete(true);\n }, [serverHandoffComplete]);\n useEffect(function () {\n if (state.serverHandoffComplete === false) state.serverHandoffComplete = true;\n }, []);\n return serverHandoffComplete;\n}\n\nexport { useServerHandoffComplete };","import { createForOfIteratorHelperLoose as _createForOfIteratorHelperLoose } from '../_virtual/_rollupPluginBabelHelpers.js';\nimport { useCallback, useRef, useEffect } from 'react';\n\nfunction useSyncRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n var cache = useRef(refs);\n useEffect(function () {\n cache.current = refs;\n }, [refs]);\n return useCallback(function (value) {\n for (var _iterator = _createForOfIteratorHelperLoose(cache.current), _step; !(_step = _iterator()).done;) {\n var ref = _step.value;\n if (ref == null) continue;\n if (typeof ref === 'function') ref(value);else ref.current = value;\n }\n }, [cache]);\n}\n\nexport { useSyncRefs };","import { match } from './match.esm.js'; // - https://stackoverflow.com/a/30753870\n\nvar focusableSelector = /*#__PURE__*/['[contentEditable=true]', '[tabindex]', 'a[href]', 'area[href]', 'button:not([disabled])', 'iframe', 'input:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])'].map(process.env.NODE_ENV === 'test' ? // TODO: Remove this once JSDOM fixes the issue where an element that is\n// \"hidden\" can be the document.activeElement, because this is not possible\n// in real browsers.\n// TODO: Remove this once JSDOM fixes the issue where an element that is\nfunction (selector) {\n return selector + \":not([tabindex='-1']):not([style*='display: none'])\";\n} : function (selector) {\n return selector + \":not([tabindex='-1'])\";\n}).join(',');\nvar Focus;\n\n(function (Focus) {\n /** Focus the first non-disabled element */\n Focus[Focus[\"First\"] = 1] = \"First\";\n /** Focus the previous non-disabled element */\n\n Focus[Focus[\"Previous\"] = 2] = \"Previous\";\n /** Focus the next non-disabled element */\n\n Focus[Focus[\"Next\"] = 4] = \"Next\";\n /** Focus the last non-disabled element */\n\n Focus[Focus[\"Last\"] = 8] = \"Last\";\n /** Wrap tab around */\n\n Focus[Focus[\"WrapAround\"] = 16] = \"WrapAround\";\n /** Prevent scrolling the focusable elements into view */\n\n Focus[Focus[\"NoScroll\"] = 32] = \"NoScroll\";\n})(Focus || (Focus = {}));\n\nvar FocusResult;\n\n(function (FocusResult) {\n /** Something went wrong while trying to focus. */\n FocusResult[FocusResult[\"Error\"] = 0] = \"Error\";\n /** When `Focus.WrapAround` is enabled, going from position `N` to `N+1` where `N` is the last index in the array, then we overflow. */\n\n FocusResult[FocusResult[\"Overflow\"] = 1] = \"Overflow\";\n /** Focus was successful. */\n\n FocusResult[FocusResult[\"Success\"] = 2] = \"Success\";\n /** When `Focus.WrapAround` is enabled, going from position `N` to `N-1` where `N` is the first index in the array, then we underflow. */\n\n FocusResult[FocusResult[\"Underflow\"] = 3] = \"Underflow\";\n})(FocusResult || (FocusResult = {}));\n\nvar Direction;\n\n(function (Direction) {\n Direction[Direction[\"Previous\"] = -1] = \"Previous\";\n Direction[Direction[\"Next\"] = 1] = \"Next\";\n})(Direction || (Direction = {}));\n\nfunction getFocusableElements(container) {\n if (container === void 0) {\n container = document.body;\n }\n\n if (container == null) return [];\n return Array.from(container.querySelectorAll(focusableSelector));\n}\n\nvar FocusableMode;\n\n(function (FocusableMode) {\n /** The element itself must be focusable. */\n FocusableMode[FocusableMode[\"Strict\"] = 0] = \"Strict\";\n /** The element should be inside of a focusable element. */\n\n FocusableMode[FocusableMode[\"Loose\"] = 1] = \"Loose\";\n})(FocusableMode || (FocusableMode = {}));\n\nfunction isFocusableElement(element, mode) {\n var _match;\n\n if (mode === void 0) {\n mode = FocusableMode.Strict;\n }\n\n if (element === document.body) return false;\n return match(mode, (_match = {}, _match[FocusableMode.Strict] = function () {\n return element.matches(focusableSelector);\n }, _match[FocusableMode.Loose] = function () {\n var next = element;\n\n while (next !== null) {\n if (next.matches(focusableSelector)) return true;\n next = next.parentElement;\n }\n\n return false;\n }, _match));\n}\n\nfunction focusElement(element) {\n element == null ? void 0 : element.focus({\n preventScroll: true\n });\n}\n\nfunction focusIn(container, focus) {\n var elements = Array.isArray(container) ? container : getFocusableElements(container);\n var active = document.activeElement;\n\n var direction = function () {\n if (focus & (Focus.First | Focus.Next)) return Direction.Next;\n if (focus & (Focus.Previous | Focus.Last)) return Direction.Previous;\n throw new Error('Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last');\n }();\n\n var startIndex = function () {\n if (focus & Focus.First) return 0;\n if (focus & Focus.Previous) return Math.max(0, elements.indexOf(active)) - 1;\n if (focus & Focus.Next) return Math.max(0, elements.indexOf(active)) + 1;\n if (focus & Focus.Last) return elements.length - 1;\n throw new Error('Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last');\n }();\n\n var focusOptions = focus & Focus.NoScroll ? {\n preventScroll: true\n } : {};\n var offset = 0;\n var total = elements.length;\n var next = undefined;\n\n do {\n var _next; // Guard against infinite loops\n\n\n if (offset >= total || offset + total <= 0) return FocusResult.Error;\n var nextIdx = startIndex + offset;\n\n if (focus & Focus.WrapAround) {\n nextIdx = (nextIdx + total) % total;\n } else {\n if (nextIdx < 0) return FocusResult.Underflow;\n if (nextIdx >= total) return FocusResult.Overflow;\n }\n\n next = elements[nextIdx]; // Try the focus the next element, might not work if it is \"hidden\" to the user.\n\n (_next = next) == null ? void 0 : _next.focus(focusOptions); // Try the next one in line\n\n offset += direction;\n } while (next !== document.activeElement); // This is a little weird, but let me try and explain: There are a few scenario's\n // in chrome for example where a focused `<a>` tag does not get the default focus\n // styles and sometimes they do. This highly depends on whether you started by\n // clicking or by using your keyboard. When you programmatically add focus `anchor.focus()`\n // then the active element (document.activeElement) is this anchor, which is expected.\n // However in that case the default focus styles are not applied *unless* you\n // also add this tabindex.\n\n\n if (!next.hasAttribute('tabindex')) next.setAttribute('tabindex', '0');\n return FocusResult.Success;\n}\n\nexport { Focus, FocusResult, FocusableMode, focusElement, focusIn, getFocusableElements, isFocusableElement };","function match(value, lookup) {\n if (value in lookup) {\n var returnValue = lookup[value];\n\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n return typeof returnValue === 'function' ? returnValue.apply(void 0, args) : returnValue;\n }\n\n var error = new Error(\"Tried to handle \\\"\" + value + \"\\\" but there is no handler defined. Only defined handlers are: \" + Object.keys(lookup).map(function (key) {\n return \"\\\"\" + key + \"\\\"\";\n }).join(', ') + \".\");\n if (Error.captureStackTrace) Error.captureStackTrace(error, match);\n throw error;\n}\n\nexport { match };","import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends, createForOfIteratorHelperLoose as _createForOfIteratorHelperLoose } from '../_virtual/_rollupPluginBabelHelpers.js';\nimport { Fragment, isValidElement, cloneElement, createElement, forwardRef } from 'react';\nimport { match } from './match.esm.js';\nvar Features;\n\n(function (Features) {\n /** No features at all */\n Features[Features[\"None\"] = 0] = \"None\";\n /**\r\n * When used, this will allow us to use one of the render strategies.\r\n *\r\n * **The render strategies are:**\r\n * - **Unmount** _(Will unmount the component.)_\r\n * - **Hidden** _(Will hide the component using the [hidden] attribute.)_\r\n */\n\n Features[Features[\"RenderStrategy\"] = 1] = \"RenderStrategy\";\n /**\r\n * When used, this will allow the user of our component to be in control. This can be used when\r\n * you want to transition based on some state.\r\n */\n\n Features[Features[\"Static\"] = 2] = \"Static\";\n})(Features || (Features = {}));\n\nvar RenderStrategy;\n\n(function (RenderStrategy) {\n RenderStrategy[RenderStrategy[\"Unmount\"] = 0] = \"Unmount\";\n RenderStrategy[RenderStrategy[\"Hidden\"] = 1] = \"Hidden\";\n})(RenderStrategy || (RenderStrategy = {}));\n\nfunction render(_ref) {\n var props = _ref.props,\n slot = _ref.slot,\n defaultTag = _ref.defaultTag,\n features = _ref.features,\n _ref$visible = _ref.visible,\n visible = _ref$visible === void 0 ? true : _ref$visible,\n name = _ref.name; // Visible always render\n\n if (visible) return _render(props, slot, defaultTag, name);\n var featureFlags = features != null ? features : Features.None;\n\n if (featureFlags & Features.Static) {\n var _props$static = props[\"static\"],\n isStatic = _props$static === void 0 ? false : _props$static,\n rest = _objectWithoutPropertiesLoose(props, [\"static\"]); // When the `static` prop is passed as `true`, then the user is in control, thus we don't care about anything else\n\n\n if (isStatic) return _render(rest, slot, defaultTag, name);\n }\n\n if (featureFlags & Features.RenderStrategy) {\n var _match;\n\n var _props$unmount = props.unmount,\n unmount = _props$unmount === void 0 ? true : _props$unmount,\n _rest = _objectWithoutPropertiesLoose(props, [\"unmount\"]);\n\n var strategy = unmount ? RenderStrategy.Unmount : RenderStrategy.Hidden;\n return match(strategy, (_match = {}, _match[RenderStrategy.Unmount] = function () {\n return null;\n }, _match[RenderStrategy.Hidden] = function () {\n return _render(_extends({}, _rest, {\n hidden: true,\n style: {\n display: 'none'\n }\n }), slot, defaultTag, name);\n }, _match));\n } // No features enabled, just render\n\n\n return _render(props, slot, defaultTag, name);\n}\n\nfunction _render(props, slot, tag, name) {\n var _ref2;\n\n if (slot === void 0) {\n slot = {};\n }\n\n var _omit = omit(props, ['unmount', 'static']),\n _omit$as = _omit.as,\n Component = _omit$as === void 0 ? tag : _omit$as,\n children = _omit.children,\n _omit$refName = _omit.refName,\n refName = _omit$refName === void 0 ? 'ref' : _omit$refName,\n passThroughProps = _objectWithoutPropertiesLoose(_omit, [\"as\", \"children\", \"refName\"]); // This allows us to use `<HeadlessUIComponent as={MyComponent} refName=\"innerRef\" />`\n\n\n var refRelatedProps = props.ref !== undefined ? (_ref2 = {}, _ref2[refName] = props.ref, _ref2) : {};\n var resolvedChildren = typeof children === 'function' ? children(slot) : children; // Allow for className to be a function with the slot as the contents\n\n if (passThroughProps.className && typeof passThroughProps.className === 'function') {\n passThroughProps.className = passThroughProps.className(slot);\n }\n\n if (Component === Fragment) {\n if (Object.keys(passThroughProps).length > 0) {\n if (!isValidElement(resolvedChildren) || Array.isArray(resolvedChildren) && resolvedChildren.length > 1) {\n throw new Error(['Passing props on \"Fragment\"!', '', \"The current component <\" + name + \" /> is rendering a \\\"Fragment\\\".\", \"However we need to passthrough the following props:\", Object.keys(passThroughProps).map(function (line) {\n return \" - \" + line;\n }).join('\\n'), '', 'You can apply a few solutions:', ['Add an `as=\"...\"` prop, to ensure that we render an actual element instead of a \"Fragment\".', 'Render a single element as the child so that we can forward the props onto that element.'].map(function (line) {\n return \" - \" + line;\n }).join('\\n')].join('\\n'));\n }\n\n return cloneElement(resolvedChildren, Object.assign({}, // Filter out undefined values so that they don't override the existing values\n mergeEventFunctions(compact(omit(passThroughProps, ['ref'])), resolvedChildren.props, ['onClick']), refRelatedProps));\n }\n }\n\n return createElement(Component, Object.assign({}, omit(passThroughProps, ['ref']), Component !== Fragment && refRelatedProps), resolvedChildren);\n}\n/**\r\n * We can use this function for the following useCase:\r\n *\r\n * <Menu.Item> <button onClick={console.log} /> </Menu.Item>\r\n *\r\n * Our `Menu.Item` will have an internal `onClick`, if you passthrough an `onClick` to the actual\r\n * `Menu.Item` component we will call it correctly. However, when we have an `onClick` on the actual\r\n * first child, that one should _also_ be called (but before this implementation, it was just\r\n * overriding the `onClick`). But it is only when we *render* that we have access to the existing\r\n * props of this component.\r\n *\r\n * It's a bit hacky, and not that clean, but it is something internal and we have tests to rely on\r\n * so that we can refactor this later (if needed).\r\n */\n\n\nfunction mergeEventFunctions(passThroughProps, existingProps, functionsToMerge) {\n var clone = Object.assign({}, passThroughProps);\n\n var _loop = function _loop() {\n var func = _step.value;\n\n if (passThroughProps[func] !== undefined && existingProps[func] !== undefined) {\n var _Object$assign;\n\n Object.assign(clone, (_Object$assign = {}, _Object$assign[func] = function (event) {\n // Props we control\n if (!event.defaultPrevented) passThroughProps[func](event); // Existing props on the component\n\n if (!event.defaultPrevented) existingProps[func](event);\n }, _Object$assign));\n }\n };\n\n for (var _iterator = _createForOfIteratorHelperLoose(functionsToMerge), _step; !(_step = _iterator()).done;) {\n _loop();\n }\n\n return clone;\n}\n/**\r\n * This is a hack, but basically we want to keep the full 'API' of the component, but we do want to\r\n * wrap it in a forwardRef so that we _can_ passthrough the ref\r\n */\n\n\nfunction forwardRefWithAs(component) {\n var _component$displayNam;\n\n return Object.assign(forwardRef(component), {\n displayName: (_component$displayNam = component.displayName) != null ? _component$displayNam : component.name\n });\n}\n\nfunction compact(object) {\n var clone = Object.assign({}, object);\n\n for (var key in clone) {\n if (clone[key] === undefined) delete clone[key];\n }\n\n return clone;\n}\n\nfunction omit(object, keysToOmit) {\n if (keysToOmit === void 0) {\n keysToOmit = [];\n }\n\n var clone = Object.assign({}, object);\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(keysToOmit), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n if (key in clone) delete clone[key];\n }\n\n return clone;\n}\n\nexport { Features, RenderStrategy, forwardRefWithAs, render };","import * as React from \"react\";\n\nfunction ArrowDownIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M16.707 10.293a1 1 0 010 1.414l-6 6a1 1 0 01-1.414 0l-6-6a1 1 0 111.414-1.414L9 14.586V3a1 1 0 012 0v11.586l4.293-4.293a1 1 0 011.414 0z\",\n clipRule: \"evenodd\"\n }));\n}\n\nexport default ArrowDownIcon;","import * as React from \"react\";\n\nfunction ArrowUpIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M3.293 9.707a1 1 0 010-1.414l6-6a1 1 0 011.414 0l6 6a1 1 0 01-1.414 1.414L11 5.414V17a1 1 0 11-2 0V5.414L4.707 9.707a1 1 0 01-1.414 0z\",\n clipRule: \"evenodd\"\n }));\n}\n\nexport default ArrowUpIcon;","'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<String>)} 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<String>} 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, '''), 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;","\"use strict\";\n\nmodule.exports = Object.assign;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nimport React from 'react';\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true\n};\nvar i18nInstance;\nexport var I18nContext = React.createContext();\nexport function setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n function ReportNamespaces() {\n _classCallCheck(this, ReportNamespaces);\n\n this.usedNamespaces = {};\n }\n\n _createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n\n return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}\nexport var initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\nexport function composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\nexport function getInitialProps() {\n var i18n = getI18n();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\nexport function useTranslation(ns) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = useContext(I18nContext) || {},\n i18nFromContext = _ref.i18n,\n defaultNSFromContext = _ref.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n\n var notReadyT = function notReadyT(k) {\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n\n var retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), i18n.options.react), props);\n\n var useSuspense = i18nOptions.useSuspense;\n var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n return hasLoadedNamespace(n, i18n, i18nOptions);\n });\n\n function getT() {\n return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0]);\n }\n\n var _useState = useState(getT),\n _useState2 = _slicedToArray(_useState, 2),\n t = _useState2[0],\n setT = _useState2[1];\n\n var isMounted = useRef(true);\n useEffect(function () {\n var bindI18n = i18nOptions.bindI18n,\n bindI18nStore = i18nOptions.bindI18nStore;\n isMounted.current = true;\n\n if (!ready && !useSuspense) {\n loadNamespaces(i18n, namespaces, function () {\n if (isMounted.current) setT(getT);\n });\n }\n\n function boundReset() {\n if (isMounted.current) setT(getT);\n }\n\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return function () {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n return i18n.off(e, boundReset);\n });\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n return i18n.store.off(e, boundReset);\n });\n };\n }, [i18n, namespaces.join()]);\n var isInitial = useRef(true);\n useEffect(function () {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n\n isInitial.current = false;\n }, [i18n]);\n var ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(function (resolve) {\n loadNamespaces(i18n, namespaces, function () {\n resolve();\n });\n });\n}","export function warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\nexport function hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\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-about-js\": () => import(\"./../../../src/pages/about.js\" /* webpackChunkName: \"component---src-pages-about-js\" */),\n \"component---src-pages-index-js\": () => import(\"./../../../src/pages/index.js\" /* webpackChunkName: \"component---src-pages-index-js\" */),\n \"component---src-templates-language-all-jsx\": () => import(\"./../../../src/templates/languageAll.jsx\" /* webpackChunkName: \"component---src-templates-language-all-jsx\" */),\n \"component---src-templates-language-jsx\": () => import(\"./../../../src/templates/language.jsx\" /* webpackChunkName: \"component---src-templates-language-jsx\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-gatsby-cloud/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-image/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-layout/gatsby-browser.js'),\n options: {\"plugins\":[],\"component\":\"/Users/jon/Sites/tav/src/components/layout.js\"},\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 <React.Fragment>\n {finalData && render(finalData)}\n {!finalData && <div>Loading (StaticQuery)</div>}\n </React.Fragment>\n )\n}\n\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n <StaticQueryContext.Consumer>\n {staticQueryData => (\n <StaticQueryDataRenderer\n data={data}\n query={query}\n render={render || children}\n staticQueryData={staticQueryData}\n />\n )}\n </StaticQueryContext.Consumer>\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","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 <div {...RouteAnnouncerProps} ref={this.announcementRef}></div>\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 <React.Fragment>\n {this.props.children}\n <RouteAnnouncer location={location} />\n </React.Fragment>\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 <BaseContext.Provider\n value={{\n baseuri: `/`,\n basepath: `/`,\n }}\n >\n <PageRenderer {...props} />\n </BaseContext.Provider>\n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n <Location>\n {({ location }) => (\n <EnsureResources location={location}>\n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n return (\n <StaticQueryContext.Provider value={staticQueryResults}>\n <DataContext.Provider value={{ pageResources, location }}>\n {children}\n </DataContext.Provider>\n </StaticQueryContext.Provider>\n )\n }}\n </EnsureResources>\n )}\n </Location>\n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n <DataContext.Consumer>\n {({ pageResources, location }) => (\n <RouteUpdates location={location}>\n <ScrollContext\n location={location}\n shouldUpdateScroll={shouldUpdateScroll}\n >\n <Router\n basepath={__BASE_PATH__}\n location={location}\n id=\"gatsby-focus-wrapper\"\n >\n <RouteHandler\n path={\n pageResources.page.path === `/404.html`\n ? stripPrefix(location.pathname, __BASE_PATH__)\n : encodeURI(\n pageResources.page.matchPath ||\n pageResources.page.path\n )\n }\n {...this.props}\n location={location}\n pageResources={pageResources}\n {...pageResources.json}\n />\n </Router>\n </ScrollContext>\n </RouteUpdates>\n )}\n </DataContext.Consumer>\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: <LocationHandler /> },\n <LocationHandler />,\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 <GatsbyRoot>{SiteRoot}</GatsbyRoot>\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, <App />)\n } else {\n renderer(<App />, 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","const cachedVariablesJson = require(\"./cachedVariables.json\")\n\nconst cachedVariables = cachedVariablesJson || {}\n\nmodule.exports = cachedVariables\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Indicator from \"./components/Indicator\";\n\nconst ShadowPortal = ({\n children,\n identifier\n}) => {\n const mountNode = React.useRef(null);\n const portalNode = React.useRef(null);\n const shadowNode = React.useRef(null);\n const [, forceUpdate] = React.useState();\n React.useEffect(() => {\n const ownerDocument = mountNode.current.ownerDocument;\n portalNode.current = ownerDocument.createElement(identifier);\n shadowNode.current = portalNode.current.attachShadow({\n mode: `open`\n });\n ownerDocument.body.appendChild(portalNode.current);\n forceUpdate({});\n return () => {\n if (portalNode.current && portalNode.current.ownerDocument) {\n portalNode.current.ownerDocument.body.removeChild(portalNode.current);\n }\n };\n }, []);\n return shadowNode.current ? /*#__PURE__*/createPortal(children, shadowNode.current) : /*#__PURE__*/React.createElement(\"span\", {\n ref: mountNode\n });\n};\n\nexport const wrapRootElement = ({\n element\n}) => {\n if (process.env.GATSBY_PREVIEW_INDICATOR_ENABLED === `true`) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, element, /*#__PURE__*/React.createElement(ShadowPortal, {\n identifier: \"gatsby-preview-indicator\"\n }, /*#__PURE__*/React.createElement(Indicator, null)));\n } else {\n return /*#__PURE__*/React.createElement(React.Fragment, null, element);\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<ImageFormat>\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record<string, unknown>\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<string, unknown>\n pngOptions?: Record<string, unknown>\n webpOptions?: Record<string, unknown>\n avifOptions?: Record<string, unknown>\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array<number>\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array<number>\n breakpoints?: Array<number>\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array<number>\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<string, unknown>\n ) => IImage\n layout?: Layout\n formats?: Array<ImageFormat>\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<string, unknown>\n breakpoints?: Array<number>\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<IImage>): 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<ImageFormat>(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<IGatsbyImageData> = {\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<number>): Array<number> =>\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<string>()\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 = never> = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type FileNode = Node & {\n childImageSharp?: IGatsbyImageDataParent<Node>\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 = <T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent<T> | any\n): node is IGatsbyImageDataParent<T> => 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<HTMLAttributes<HTMLElement>, \"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<HTMLImageElement>\n): Promise<void> {\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<OptionsType> {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs<OptionsType = Record<string, unknown>> {\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<OptionsType>) => 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<ImageFormat>\n\n breakpoints?: Array<number>\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<OptionsType>({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs<OptionsType>): 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<HTMLImageElement>,\n style: CSSProperties = {}\n): Partial<MainImageProps> {\n const onLoad: ReactEventHandler<HTMLImageElement> = 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<HTMLImageElement> &\n Pick<PlaceholderProps, \"sources\" | \"fallback\"> & {\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<SetStateAction<boolean>>\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<IArtDirectedImage>\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/// <reference path=\"../global.d.ts\" />\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 <script\n type=\"module\"\n dangerouslySetInnerHTML={{\n __html: terserMacro`\nconst hasNativeLazyLoadSupport = typeof HTMLImageElement !== \"undefined\" && \"loading\" in HTMLImageElement.prototype;\nif (hasNativeLazyLoadSupport) {\n const gatsbyImages = document.querySelectorAll('img[data-main-image]');\n for (let mainImage of gatsbyImages) {\n if (mainImage.dataset.src) {\n mainImage.setAttribute('src', mainImage.dataset.src)\n mainImage.removeAttribute('data-src')\n }\n if (mainImage.dataset.srcset) {\n mainImage.setAttribute('srcset', mainImage.dataset.srcset)\n mainImage.removeAttribute('data-srcset')\n }\n\n const sources = mainImage.parentNode.querySelectorAll('source[data-srcset]');\n for (let source of sources) {\n source.setAttribute('srcset', source.dataset.srcset)\n source.removeAttribute('data-srcset')\n }\n\n if (mainImage.complete) {\n mainImage.style.opacity = 1;\n }\n }\n}\n`,\n }}\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 = `<div aria-hidden=\"true\" style=\"padding-top: ${\n (height / width) * 100\n }%;\"></div>`\n }\n if (layout === `constrained`) {\n sizer = `<div style=\"max-width: ${width}px; display: block;\"><img alt=\"\" role=\"presentation\" aria-hidden=\"true\" src=\"data:image/svg+xml;charset=utf-8,%3Csvg height='${height}' width='${width}' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E\" style=\"max-width: 100%; display: block; position: static;\"></div>`\n }\n return sizer\n}\n\nconst Sizer: FunctionComponent<ILayoutWrapperProps> = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n <div aria-hidden style={{ paddingTop: `${(height / width) * 100}%` }} />\n )\n }\n if (layout === `constrained`) {\n return (\n <div style={{ maxWidth: width, display: `block` }}>\n <img\n alt=\"\"\n role=\"presentation\"\n aria-hidden=\"true\"\n src={`data:image/svg+xml;charset=utf-8,%3Csvg height='${height}' width='${width}' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E`}\n style={{\n maxWidth: `100%`,\n display: `block`,\n position: `static`,\n }}\n />\n </div>\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent<ILayoutWrapperProps> =\n function LayoutWrapper({ children, ...props }) {\n return (\n <Fragment>\n <Sizer {...props} />\n {children}\n\n {\n // eslint-disable-next-line no-undef\n SERVER && <NativeScriptLoading />\n }\n </Fragment>\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<IResponsiveImageProps>\n\ntype ImageProps = ImgHTMLAttributes<HTMLImageElement> & {\n src: string\n alt: string\n shouldLoad: boolean\n innerRef: LegacyRef<HTMLImageElement>\n}\n\nexport type PictureProps = ImgHTMLAttributes<HTMLImageElement> & {\n fallback?: FallbackProps\n sources?: Array<SourceProps>\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent<ImageProps> = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n innerRef,\n ...props\n}) {\n return (\n <img\n {...props}\n decoding=\"async\"\n loading={loading}\n src={shouldLoad ? src : undefined}\n data-src={!shouldLoad ? src : undefined}\n srcSet={shouldLoad ? srcSet : undefined}\n data-srcset={!shouldLoad ? srcSet : undefined}\n alt={alt}\n ref={innerRef}\n />\n )\n}\n\nexport const Picture = forwardRef<HTMLImageElement, PictureProps>(\n function Picture(\n { fallback, sources = [], shouldLoad = true, ...props },\n ref\n ) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n <Image\n {...props}\n {...fallback}\n sizes={sizes}\n shouldLoad={shouldLoad}\n innerRef={ref}\n />\n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n <picture>\n {sources.map(({ media, srcSet, type }) => (\n <source\n key={`${media}-${type}-${srcSet}`}\n type={type}\n media={media}\n srcSet={shouldLoad ? srcSet : undefined}\n data-srcset={!shouldLoad ? srcSet : undefined}\n sizes={sizes}\n />\n ))}\n {fallbackImage}\n </picture>\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<HTMLImageElement> & {\n fallback?: string\n sources?: Array<SourceProps>\n}\n\nexport const Placeholder: FunctionComponent<PlaceholderProps> =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n <Picture\n {...props}\n fallback={{\n src: fallback,\n }}\n aria-hidden\n alt=\"\"\n />\n )\n } else {\n return <div {...props}></div>\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<HTMLImageElement, MainImageProps>(\n function MainImage(props, ref) {\n return (\n <>\n <Picture ref={ref} {...props} />\n <noscript>\n <Picture {...props} shouldLoad={true} />\n </noscript>\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 <Type {...props}>{children}</Type>\n}\n\nexport const GatsbyImage: FunctionComponent<GatsbyImageProps> =\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 <GatsbyImageHydrator\n {...wrapperProps}\n as={as}\n style={{\n ...wStyle,\n ...style,\n backgroundColor,\n }}\n className={`${wClass}${className ? ` ${className}` : ``}`}\n >\n <LayoutWrapper layout={layout} width={width} height={height}>\n <Placeholder\n {...getPlaceholderProps(\n placeholder,\n false,\n layout,\n width,\n height,\n placeholderBackgroundColor,\n objectFit,\n objectPosition\n )}\n />\n\n <MainImage\n data-gatsby-image-ssr=\"\"\n className={imgClassName}\n {...(props as Omit<MainImageProps, \"images\" | \"fallback\">)}\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 </LayoutWrapper>\n </GatsbyImageHydrator>\n )\n }\n\nexport const altValidator: PropTypes.Validator<string> = (\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<GatsbyImageProps>\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<HTMLImageElement>,\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<MainImageProps, \"sources\" | \"fallback\">\n placeholder?: Pick<PlaceholderProps, \"sources\" | \"fallback\">\n}\n\nclass GatsbyImageHydrator extends Component<\n GatsbyImageProps,\n { isLoading: boolean; isLoaded: boolean }\n> {\n root: RefObject<HTMLImageElement | undefined> = createRef<\n HTMLImageElement | undefined\n >()\n hydrated: MutableRefObject<boolean> = { current: false }\n forceRender: MutableRefObject<boolean> = {\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<HTMLImageElement>()\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<void> {\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 <Type\n {...wrapperProps}\n style={{\n ...wStyle,\n ...this.props.style,\n backgroundColor: this.props.backgroundColor,\n }}\n className={`${wClass}${className ? ` ${className}` : ``}`}\n ref={this.root}\n dangerouslySetInnerHTML={{\n __html: sizer,\n }}\n suppressHydrationWarning\n />\n )\n }\n}\n\nexport const GatsbyImage: FunctionComponent<GatsbyImageProps> =\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 <GatsbyImageHydrator key={propsKey} {...props} />\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<GatsbyImageProps, \"image\">,\n Omit<ISharpGatsbyImageArgs, \"backgroundColor\"> {\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<GatsbyImageProps>\n): React.FC<IStaticImageProps & IPrivateProps> {\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 <GatsbyImage image={imageData} {...props} />\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<IStaticImageProps & IPrivateProps> =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator<number> = (\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<IStaticImageProps & IPrivateProps> =\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<Record<string, unknown>>): 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 <LaterHydrator>{element}</LaterHydrator>\n}\n","\"use strict\";\n\nexports.wrapPageElement = require(\"./wrap-page\");","\"use strict\";\n\nvar React = require(\"react\");\n\nvar preferDefault = function preferDefault(m) {\n return m && m.default || m;\n};\n\nvar Layout;\n\ntry {\n Layout = preferDefault(require(GATSBY_LAYOUT_COMPONENT_PATH));\n} catch (e) {\n if (e.toString().indexOf(\"Error: Cannot find module\") !== -1) {\n throw new Error(\"Couldn't find layout component at \\\"\" + GATSBY_LAYOUT_COMPONENT_PATH + \".\\n\\n\" + \"Please create layout component in that location or specify path to layout component in gatsby-config.js\");\n } else {\n // Logging the error for debugging older browsers as there is no way\n // to wrap the thrown error in a try/catch.\n console.error(e);\n throw e;\n }\n} // eslint-disable-next-line react/prop-types,react/display-name\n\n\nmodule.exports = function (_ref) {\n var element = _ref.element,\n props = _ref.props;\n return /*#__PURE__*/React.createElement(Layout, props, element);\n};","// See: https://github.com/facebook/react/issues/7711\n// See: https://github.com/facebook/react/pull/20612\n// See: https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#concept-fe-disabled (2.)\nfunction isDisabledReactIssue7711(element) {\n var _ref, _parent;\n\n var parent = element.parentElement;\n var legend = null;\n\n while (parent && !(parent instanceof HTMLFieldSetElement)) {\n if (parent instanceof HTMLLegendElement) legend = parent;\n parent = parent.parentElement;\n }\n\n var isParentDisabled = (_ref = ((_parent = parent) == null ? void 0 : _parent.getAttribute('disabled')) === '') != null ? _ref : false;\n if (isParentDisabled && isFirstLegend(legend)) return false;\n return isParentDisabled;\n}\n\nfunction isFirstLegend(element) {\n if (!element) return false;\n var previous = element.previousElementSibling;\n\n while (previous !== null) {\n if (previous instanceof HTMLLegendElement) return false;\n previous = previous.previousElementSibling;\n }\n\n return true;\n}\n\nexport { isDisabledReactIssue7711 };","import React, { useContext, createContext } from 'react';\nvar Context = /*#__PURE__*/createContext(null);\nContext.displayName = 'OpenClosedContext';\nvar State;\n\n(function (State) {\n State[State[\"Open\"] = 0] = \"Open\";\n State[State[\"Closed\"] = 1] = \"Closed\";\n})(State || (State = {}));\n\nfunction useOpenClosed() {\n return useContext(Context);\n}\n\nfunction OpenClosedProvider(_ref) {\n var value = _ref.value,\n children = _ref.children;\n return React.createElement(Context.Provider, {\n value: value\n }, children);\n}\n\nexport { OpenClosedProvider, State, useOpenClosed };","import { extends as _extends, objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose } from '../../_virtual/_rollupPluginBabelHelpers.js';\nimport React, { useReducer, useEffect, useCallback, useMemo, createContext, useContext, Fragment } from 'react';\nimport { match } from '../../utils/match.esm.js';\nimport { render, forwardRefWithAs, Features } from '../../utils/render.esm.js';\nimport { useSyncRefs } from '../../hooks/use-sync-refs.esm.js';\nimport { Keys } from '../keyboard.esm.js';\nimport { isDisabledReactIssue7711 } from '../../utils/bugs.esm.js';\nimport { useId } from '../../hooks/use-id.esm.js';\nimport { OpenClosedProvider, State, useOpenClosed } from '../../internal/open-closed.esm.js';\n\nvar _reducers;\n\nvar DisclosureStates;\n\n(function (DisclosureStates) {\n DisclosureStates[DisclosureStates[\"Open\"] = 0] = \"Open\";\n DisclosureStates[DisclosureStates[\"Closed\"] = 1] = \"Closed\";\n})(DisclosureStates || (DisclosureStates = {}));\n\nvar ActionTypes;\n\n(function (ActionTypes) {\n ActionTypes[ActionTypes[\"ToggleDisclosure\"] = 0] = \"ToggleDisclosure\";\n ActionTypes[ActionTypes[\"CloseDisclosure\"] = 1] = \"CloseDisclosure\";\n ActionTypes[ActionTypes[\"SetButtonId\"] = 2] = \"SetButtonId\";\n ActionTypes[ActionTypes[\"SetPanelId\"] = 3] = \"SetPanelId\";\n ActionTypes[ActionTypes[\"LinkPanel\"] = 4] = \"LinkPanel\";\n ActionTypes[ActionTypes[\"UnlinkPanel\"] = 5] = \"UnlinkPanel\";\n})(ActionTypes || (ActionTypes = {}));\n\nvar reducers = (_reducers = {}, _reducers[ActionTypes.ToggleDisclosure] = function (state) {\n var _match;\n\n return _extends({}, state, {\n disclosureState: match(state.disclosureState, (_match = {}, _match[DisclosureStates.Open] = DisclosureStates.Closed, _match[DisclosureStates.Closed] = DisclosureStates.Open, _match))\n });\n}, _reducers[ActionTypes.CloseDisclosure] = function (state) {\n if (state.disclosureState === DisclosureStates.Closed) return state;\n return _extends({}, state, {\n disclosureState: DisclosureStates.Closed\n });\n}, _reducers[ActionTypes.LinkPanel] = function (state) {\n if (state.linkedPanel === true) return state;\n return _extends({}, state, {\n linkedPanel: true\n });\n}, _reducers[ActionTypes.UnlinkPanel] = function (state) {\n if (state.linkedPanel === false) return state;\n return _extends({}, state, {\n linkedPanel: false\n });\n}, _reducers[ActionTypes.SetButtonId] = function (state, action) {\n if (state.buttonId === action.buttonId) return state;\n return _extends({}, state, {\n buttonId: action.buttonId\n });\n}, _reducers[ActionTypes.SetPanelId] = function (state, action) {\n if (state.panelId === action.panelId) return state;\n return _extends({}, state, {\n panelId: action.panelId\n });\n}, _reducers);\nvar DisclosureContext = /*#__PURE__*/createContext(null);\nDisclosureContext.displayName = 'DisclosureContext';\n\nfunction useDisclosureContext(component) {\n var context = useContext(DisclosureContext);\n\n if (context === null) {\n var err = new Error(\"<\" + component + \" /> is missing a parent <\" + Disclosure.name + \" /> component.\");\n if (Error.captureStackTrace) Error.captureStackTrace(err, useDisclosureContext);\n throw err;\n }\n\n return context;\n}\n\nvar DisclosureAPIContext = /*#__PURE__*/createContext(null);\nDisclosureAPIContext.displayName = 'DisclosureAPIContext';\n\nfunction useDisclosureAPIContext(component) {\n var context = useContext(DisclosureAPIContext);\n\n if (context === null) {\n var err = new Error(\"<\" + component + \" /> is missing a parent <\" + Disclosure.name + \" /> component.\");\n if (Error.captureStackTrace) Error.captureStackTrace(err, useDisclosureAPIContext);\n throw err;\n }\n\n return context;\n}\n\nvar DisclosurePanelContext = /*#__PURE__*/createContext(null);\nDisclosurePanelContext.displayName = 'DisclosurePanelContext';\n\nfunction useDisclosurePanelContext() {\n return useContext(DisclosurePanelContext);\n}\n\nfunction stateReducer(state, action) {\n return match(action.type, reducers, state, action);\n} // ---\n\n\nvar DEFAULT_DISCLOSURE_TAG = Fragment;\n\nfunction Disclosure(props) {\n var _match2;\n\n var _props$defaultOpen = props.defaultOpen,\n defaultOpen = _props$defaultOpen === void 0 ? false : _props$defaultOpen,\n passthroughProps = _objectWithoutPropertiesLoose(props, [\"defaultOpen\"]);\n\n var buttonId = \"headlessui-disclosure-button-\" + useId();\n var panelId = \"headlessui-disclosure-panel-\" + useId();\n var reducerBag = useReducer(stateReducer, {\n disclosureState: defaultOpen ? DisclosureStates.Open : DisclosureStates.Closed,\n linkedPanel: false,\n buttonId: buttonId,\n panelId: panelId\n });\n var disclosureState = reducerBag[0].disclosureState,\n dispatch = reducerBag[1];\n useEffect(function () {\n return dispatch({\n type: ActionTypes.SetButtonId,\n buttonId: buttonId\n });\n }, [buttonId, dispatch]);\n useEffect(function () {\n return dispatch({\n type: ActionTypes.SetPanelId,\n panelId: panelId\n });\n }, [panelId, dispatch]);\n var close = useCallback(function (focusableElement) {\n dispatch({\n type: ActionTypes.CloseDisclosure\n });\n\n var restoreElement = function () {\n if (!focusableElement) return document.getElementById(buttonId);\n if (focusableElement instanceof HTMLElement) return focusableElement;\n if (focusableElement.current instanceof HTMLElement) return focusableElement.current;\n return document.getElementById(buttonId);\n }();\n\n restoreElement == null ? void 0 : restoreElement.focus();\n }, [dispatch, buttonId]);\n var api = useMemo(function () {\n return {\n close: close\n };\n }, [close]);\n var slot = useMemo(function () {\n return {\n open: disclosureState === DisclosureStates.Open,\n close: close\n };\n }, [disclosureState, close]);\n return React.createElement(DisclosureContext.Provider, {\n value: reducerBag\n }, React.createElement(DisclosureAPIContext.Provider, {\n value: api\n }, React.createElement(OpenClosedProvider, {\n value: match(disclosureState, (_match2 = {}, _match2[DisclosureStates.Open] = State.Open, _match2[DisclosureStates.Closed] = State.Closed, _match2))\n }, render({\n props: passthroughProps,\n slot: slot,\n defaultTag: DEFAULT_DISCLOSURE_TAG,\n name: 'Disclosure'\n }))));\n} // ---\n\n\nvar DEFAULT_BUTTON_TAG = 'button';\nvar Button = /*#__PURE__*/forwardRefWithAs(function Button(props, ref) {\n var _useDisclosureContext = useDisclosureContext([Disclosure.name, Button.name].join('.')),\n state = _useDisclosureContext[0],\n dispatch = _useDisclosureContext[1];\n\n var buttonRef = useSyncRefs(ref);\n var panelContext = useDisclosurePanelContext();\n var isWithinPanel = panelContext === null ? false : panelContext === state.panelId;\n var handleKeyDown = useCallback(function (event) {\n var _document$getElementB;\n\n if (isWithinPanel) {\n if (state.disclosureState === DisclosureStates.Closed) return;\n\n switch (event.key) {\n case Keys.Space:\n case Keys.Enter:\n event.preventDefault();\n event.stopPropagation();\n dispatch({\n type: ActionTypes.ToggleDisclosure\n });\n (_document$getElementB = document.getElementById(state.buttonId)) == null ? void 0 : _document$getElementB.focus();\n break;\n }\n } else {\n switch (event.key) {\n case Keys.Space:\n case Keys.Enter:\n event.preventDefault();\n event.stopPropagation();\n dispatch({\n type: ActionTypes.ToggleDisclosure\n });\n break;\n }\n }\n }, [dispatch, isWithinPanel, state.disclosureState]);\n var handleKeyUp = useCallback(function (event) {\n switch (event.key) {\n case Keys.Space:\n // Required for firefox, event.preventDefault() in handleKeyDown for\n // the Space key doesn't cancel the handleKeyUp, which in turn\n // triggers a *click*.\n event.preventDefault();\n break;\n }\n }, []);\n var handleClick = useCallback(function (event) {\n if (isDisabledReactIssue7711(event.currentTarget)) return;\n if (props.disabled) return;\n\n if (isWithinPanel) {\n var _document$getElementB2;\n\n dispatch({\n type: ActionTypes.ToggleDisclosure\n });\n (_document$getElementB2 = document.getElementById(state.buttonId)) == null ? void 0 : _document$getElementB2.focus();\n } else {\n dispatch({\n type: ActionTypes.ToggleDisclosure\n });\n }\n }, [dispatch, props.disabled, state.buttonId, isWithinPanel]);\n var slot = useMemo(function () {\n return {\n open: state.disclosureState === DisclosureStates.Open\n };\n }, [state]);\n var passthroughProps = props;\n var propsWeControl = isWithinPanel ? {\n type: 'button',\n onKeyDown: handleKeyDown,\n onClick: handleClick\n } : {\n ref: buttonRef,\n id: state.buttonId,\n type: 'button',\n 'aria-expanded': props.disabled ? undefined : state.disclosureState === DisclosureStates.Open,\n 'aria-controls': state.linkedPanel ? state.panelId : undefined,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n onClick: handleClick\n };\n return render({\n props: _extends({}, passthroughProps, propsWeControl),\n slot: slot,\n defaultTag: DEFAULT_BUTTON_TAG,\n name: 'Disclosure.Button'\n });\n}); // ---\n\nvar DEFAULT_PANEL_TAG = 'div';\nvar PanelRenderFeatures = Features.RenderStrategy | Features.Static;\nvar Panel = /*#__PURE__*/forwardRefWithAs(function Panel(props, ref) {\n var _useDisclosureContext2 = useDisclosureContext([Disclosure.name, Panel.name].join('.')),\n state = _useDisclosureContext2[0],\n dispatch = _useDisclosureContext2[1];\n\n var _useDisclosureAPICont = useDisclosureAPIContext([Disclosure.name, Panel.name].join('.')),\n close = _useDisclosureAPICont.close;\n\n var panelRef = useSyncRefs(ref, function () {\n if (state.linkedPanel) return;\n dispatch({\n type: ActionTypes.LinkPanel\n });\n });\n var usesOpenClosedState = useOpenClosed();\n\n var visible = function () {\n if (usesOpenClosedState !== null) {\n return usesOpenClosedState === State.Open;\n }\n\n return state.disclosureState === DisclosureStates.Open;\n }(); // Unlink on \"unmount\" myself\n\n\n useEffect(function () {\n return function () {\n return dispatch({\n type: ActionTypes.UnlinkPanel\n });\n };\n }, [dispatch]); // Unlink on \"unmount\" children\n\n useEffect(function () {\n var _props$unmount;\n\n if (state.disclosureState === DisclosureStates.Closed && ((_props$unmount = props.unmount) != null ? _props$unmount : true)) {\n dispatch({\n type: ActionTypes.UnlinkPanel\n });\n }\n }, [state.disclosureState, props.unmount, dispatch]);\n var slot = useMemo(function () {\n return {\n open: state.disclosureState === DisclosureStates.Open,\n close: close\n };\n }, [state, close]);\n var propsWeControl = {\n ref: panelRef,\n id: state.panelId\n };\n var passthroughProps = props;\n return React.createElement(DisclosurePanelContext.Provider, {\n value: state.panelId\n }, render({\n props: _extends({}, passthroughProps, propsWeControl),\n slot: slot,\n defaultTag: DEFAULT_PANEL_TAG,\n features: PanelRenderFeatures,\n visible: visible,\n name: 'Disclosure.Panel'\n }));\n}); // ---\n\nDisclosure.Button = Button;\nDisclosure.Panel = Panel;\nexport { Disclosure };","function assertNever(x) {\n throw new Error('Unexpected object: ' + x);\n}\n\nvar Focus;\n\n(function (Focus) {\n /** Focus the first non-disabled item. */\n Focus[Focus[\"First\"] = 0] = \"First\";\n /** Focus the previous non-disabled item. */\n\n Focus[Focus[\"Previous\"] = 1] = \"Previous\";\n /** Focus the next non-disabled item. */\n\n Focus[Focus[\"Next\"] = 2] = \"Next\";\n /** Focus the last non-disabled item. */\n\n Focus[Focus[\"Last\"] = 3] = \"Last\";\n /** Focus a specific item based on the `id` of the item. */\n\n Focus[Focus[\"Specific\"] = 4] = \"Specific\";\n /** Focus no items at all. */\n\n Focus[Focus[\"Nothing\"] = 5] = \"Nothing\";\n})(Focus || (Focus = {}));\n\nfunction calculateActiveIndex(action, resolvers) {\n var items = resolvers.resolveItems();\n if (items.length <= 0) return null;\n var currentActiveIndex = resolvers.resolveActiveIndex();\n var activeIndex = currentActiveIndex != null ? currentActiveIndex : -1;\n\n var nextActiveIndex = function () {\n switch (action.focus) {\n case Focus.First:\n return items.findIndex(function (item) {\n return !resolvers.resolveDisabled(item);\n });\n\n case Focus.Previous:\n {\n var idx = items.slice().reverse().findIndex(function (item, idx, all) {\n if (activeIndex !== -1 && all.length - idx - 1 >= activeIndex) return false;\n return !resolvers.resolveDisabled(item);\n });\n if (idx === -1) return idx;\n return items.length - 1 - idx;\n }\n\n case Focus.Next:\n return items.findIndex(function (item, idx) {\n if (idx <= activeIndex) return false;\n return !resolvers.resolveDisabled(item);\n });\n\n case Focus.Last:\n {\n var _idx = items.slice().reverse().findIndex(function (item) {\n return !resolvers.resolveDisabled(item);\n });\n\n if (_idx === -1) return _idx;\n return items.length - 1 - _idx;\n }\n\n case Focus.Specific:\n return items.findIndex(function (item) {\n return resolvers.resolveId(item) === action.id;\n });\n\n case Focus.Nothing:\n return null;\n\n default:\n assertNever(action);\n }\n }();\n\n return nextActiveIndex === -1 ? currentActiveIndex : nextActiveIndex;\n}\n\nexport { Focus, calculateActiveIndex };","import { extends as _extends, objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose } from '../../_virtual/_rollupPluginBabelHelpers.js';\nimport React, { useReducer, createRef, useMemo, createContext, useCallback, useEffect, useRef, useContext, Fragment } from 'react';\nimport { match } from '../../utils/match.esm.js';\nimport { render, forwardRefWithAs, Features } from '../../utils/render.esm.js';\nimport { useSyncRefs } from '../../hooks/use-sync-refs.esm.js';\nimport { Keys } from '../keyboard.esm.js';\nimport { isDisabledReactIssue7711 } from '../../utils/bugs.esm.js';\nimport { useIsoMorphicEffect } from '../../hooks/use-iso-morphic-effect.esm.js';\nimport { useId } from '../../hooks/use-id.esm.js';\nimport { isFocusableElement, FocusableMode } from '../../utils/focus-management.esm.js';\nimport { useWindowEvent } from '../../hooks/use-window-event.esm.js';\nimport { OpenClosedProvider, State, useOpenClosed } from '../../internal/open-closed.esm.js';\nimport { disposables } from '../../utils/disposables.esm.js';\nimport { useDisposables } from '../../hooks/use-disposables.esm.js';\nimport { calculateActiveIndex, Focus } from '../../utils/calculate-active-index.esm.js';\nimport { useTreeWalker } from '../../hooks/use-tree-walker.esm.js';\n\nvar _reducers;\n\nvar MenuStates;\n\n(function (MenuStates) {\n MenuStates[MenuStates[\"Open\"] = 0] = \"Open\";\n MenuStates[MenuStates[\"Closed\"] = 1] = \"Closed\";\n})(MenuStates || (MenuStates = {}));\n\nvar ActionTypes;\n\n(function (ActionTypes) {\n ActionTypes[ActionTypes[\"OpenMenu\"] = 0] = \"OpenMenu\";\n ActionTypes[ActionTypes[\"CloseMenu\"] = 1] = \"CloseMenu\";\n ActionTypes[ActionTypes[\"GoToItem\"] = 2] = \"GoToItem\";\n ActionTypes[ActionTypes[\"Search\"] = 3] = \"Search\";\n ActionTypes[ActionTypes[\"ClearSearch\"] = 4] = \"ClearSearch\";\n ActionTypes[ActionTypes[\"RegisterItem\"] = 5] = \"RegisterItem\";\n ActionTypes[ActionTypes[\"UnregisterItem\"] = 6] = \"UnregisterItem\";\n})(ActionTypes || (ActionTypes = {}));\n\nvar reducers = (_reducers = {}, _reducers[ActionTypes.CloseMenu] = function (state) {\n if (state.menuState === MenuStates.Closed) return state;\n return _extends({}, state, {\n activeItemIndex: null,\n menuState: MenuStates.Closed\n });\n}, _reducers[ActionTypes.OpenMenu] = function (state) {\n if (state.menuState === MenuStates.Open) return state;\n return _extends({}, state, {\n menuState: MenuStates.Open\n });\n}, _reducers[ActionTypes.GoToItem] = function (state, action) {\n var activeItemIndex = calculateActiveIndex(action, {\n resolveItems: function resolveItems() {\n return state.items;\n },\n resolveActiveIndex: function resolveActiveIndex() {\n return state.activeItemIndex;\n },\n resolveId: function resolveId(item) {\n return item.id;\n },\n resolveDisabled: function resolveDisabled(item) {\n return item.dataRef.current.disabled;\n }\n });\n if (state.searchQuery === '' && state.activeItemIndex === activeItemIndex) return state;\n return _extends({}, state, {\n searchQuery: '',\n activeItemIndex: activeItemIndex\n });\n}, _reducers[ActionTypes.Search] = function (state, action) {\n var searchQuery = state.searchQuery + action.value.toLowerCase();\n var match = state.items.findIndex(function (item) {\n var _item$dataRef$current;\n\n return ((_item$dataRef$current = item.dataRef.current.textValue) == null ? void 0 : _item$dataRef$current.startsWith(searchQuery)) && !item.dataRef.current.disabled;\n });\n if (match === -1 || match === state.activeItemIndex) return _extends({}, state, {\n searchQuery: searchQuery\n });\n return _extends({}, state, {\n searchQuery: searchQuery,\n activeItemIndex: match\n });\n}, _reducers[ActionTypes.ClearSearch] = function (state) {\n if (state.searchQuery === '') return state;\n return _extends({}, state, {\n searchQuery: ''\n });\n}, _reducers[ActionTypes.RegisterItem] = function (state, action) {\n return _extends({}, state, {\n items: [].concat(state.items, [{\n id: action.id,\n dataRef: action.dataRef\n }])\n });\n}, _reducers[ActionTypes.UnregisterItem] = function (state, action) {\n var nextItems = state.items.slice();\n var currentActiveItem = state.activeItemIndex !== null ? nextItems[state.activeItemIndex] : null;\n var idx = nextItems.findIndex(function (a) {\n return a.id === action.id;\n });\n if (idx !== -1) nextItems.splice(idx, 1);\n return _extends({}, state, {\n items: nextItems,\n activeItemIndex: function () {\n if (idx === state.activeItemIndex) return null;\n if (currentActiveItem === null) return null; // If we removed the item before the actual active index, then it would be out of sync. To\n // fix this, we will find the correct (new) index position.\n\n return nextItems.indexOf(currentActiveItem);\n }()\n });\n}, _reducers);\nvar MenuContext = /*#__PURE__*/createContext(null);\nMenuContext.displayName = 'MenuContext';\n\nfunction useMenuContext(component) {\n var context = useContext(MenuContext);\n\n if (context === null) {\n var err = new Error(\"<\" + component + \" /> is missing a parent <\" + Menu.name + \" /> component.\");\n if (Error.captureStackTrace) Error.captureStackTrace(err, useMenuContext);\n throw err;\n }\n\n return context;\n}\n\nfunction stateReducer(state, action) {\n return match(action.type, reducers, state, action);\n} // ---\n\n\nvar DEFAULT_MENU_TAG = Fragment;\n\nfunction Menu(props) {\n var _match;\n\n var reducerBag = useReducer(stateReducer, {\n menuState: MenuStates.Closed,\n buttonRef: createRef(),\n itemsRef: createRef(),\n items: [],\n searchQuery: '',\n activeItemIndex: null\n });\n var _reducerBag$ = reducerBag[0],\n menuState = _reducerBag$.menuState,\n itemsRef = _reducerBag$.itemsRef,\n buttonRef = _reducerBag$.buttonRef,\n dispatch = reducerBag[1]; // Handle outside click\n\n useWindowEvent('mousedown', function (event) {\n var _buttonRef$current, _itemsRef$current;\n\n var target = event.target;\n if (menuState !== MenuStates.Open) return;\n if ((_buttonRef$current = buttonRef.current) == null ? void 0 : _buttonRef$current.contains(target)) return;\n if ((_itemsRef$current = itemsRef.current) == null ? void 0 : _itemsRef$current.contains(target)) return;\n dispatch({\n type: ActionTypes.CloseMenu\n });\n\n if (!isFocusableElement(target, FocusableMode.Loose)) {\n var _buttonRef$current2;\n\n event.preventDefault();\n (_buttonRef$current2 = buttonRef.current) == null ? void 0 : _buttonRef$current2.focus();\n }\n });\n var slot = useMemo(function () {\n return {\n open: menuState === MenuStates.Open\n };\n }, [menuState]);\n return React.createElement(MenuContext.Provider, {\n value: reducerBag\n }, React.createElement(OpenClosedProvider, {\n value: match(menuState, (_match = {}, _match[MenuStates.Open] = State.Open, _match[MenuStates.Closed] = State.Closed, _match))\n }, render({\n props: props,\n slot: slot,\n defaultTag: DEFAULT_MENU_TAG,\n name: 'Menu'\n })));\n} // ---\n\n\nvar DEFAULT_BUTTON_TAG = 'button';\nvar Button = /*#__PURE__*/forwardRefWithAs(function Button(props, ref) {\n var _state$itemsRef$curre;\n\n var _useMenuContext = useMenuContext([Menu.name, Button.name].join('.')),\n state = _useMenuContext[0],\n dispatch = _useMenuContext[1];\n\n var buttonRef = useSyncRefs(state.buttonRef, ref);\n var id = \"headlessui-menu-button-\" + useId();\n var d = useDisposables();\n var handleKeyDown = useCallback(function (event) {\n switch (event.key) {\n // Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#keyboard-interaction-13\n case Keys.Space:\n case Keys.Enter:\n case Keys.ArrowDown:\n event.preventDefault();\n event.stopPropagation();\n dispatch({\n type: ActionTypes.OpenMenu\n });\n d.nextFrame(function () {\n return dispatch({\n type: ActionTypes.GoToItem,\n focus: Focus.First\n });\n });\n break;\n\n case Keys.ArrowUp:\n event.preventDefault();\n event.stopPropagation();\n dispatch({\n type: ActionTypes.OpenMenu\n });\n d.nextFrame(function () {\n return dispatch({\n type: ActionTypes.GoToItem,\n focus: Focus.Last\n });\n });\n break;\n }\n }, [dispatch, d]);\n var handleKeyUp = useCallback(function (event) {\n switch (event.key) {\n case Keys.Space:\n // Required for firefox, event.preventDefault() in handleKeyDown for\n // the Space key doesn't cancel the handleKeyUp, which in turn\n // triggers a *click*.\n event.preventDefault();\n break;\n }\n }, []);\n var handleClick = useCallback(function (event) {\n if (isDisabledReactIssue7711(event.currentTarget)) return event.preventDefault();\n if (props.disabled) return;\n\n if (state.menuState === MenuStates.Open) {\n dispatch({\n type: ActionTypes.CloseMenu\n });\n d.nextFrame(function () {\n var _state$buttonRef$curr;\n\n return (_state$buttonRef$curr = state.buttonRef.current) == null ? void 0 : _state$buttonRef$curr.focus({\n preventScroll: true\n });\n });\n } else {\n event.preventDefault();\n event.stopPropagation();\n dispatch({\n type: ActionTypes.OpenMenu\n });\n }\n }, [dispatch, d, state, props.disabled]);\n var slot = useMemo(function () {\n return {\n open: state.menuState === MenuStates.Open\n };\n }, [state]);\n var passthroughProps = props;\n var propsWeControl = {\n ref: buttonRef,\n id: id,\n type: 'button',\n 'aria-haspopup': true,\n 'aria-controls': (_state$itemsRef$curre = state.itemsRef.current) == null ? void 0 : _state$itemsRef$curre.id,\n 'aria-expanded': props.disabled ? undefined : state.menuState === MenuStates.Open,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n onClick: handleClick\n };\n return render({\n props: _extends({}, passthroughProps, propsWeControl),\n slot: slot,\n defaultTag: DEFAULT_BUTTON_TAG,\n name: 'Menu.Button'\n });\n}); // ---\n\nvar DEFAULT_ITEMS_TAG = 'div';\nvar ItemsRenderFeatures = Features.RenderStrategy | Features.Static;\nvar Items = /*#__PURE__*/forwardRefWithAs(function Items(props, ref) {\n var _state$items$state$ac, _state$buttonRef$curr4;\n\n var _useMenuContext2 = useMenuContext([Menu.name, Items.name].join('.')),\n state = _useMenuContext2[0],\n dispatch = _useMenuContext2[1];\n\n var itemsRef = useSyncRefs(state.itemsRef, ref);\n var id = \"headlessui-menu-items-\" + useId();\n var searchDisposables = useDisposables();\n var usesOpenClosedState = useOpenClosed();\n\n var visible = function () {\n if (usesOpenClosedState !== null) {\n return usesOpenClosedState === State.Open;\n }\n\n return state.menuState === MenuStates.Open;\n }();\n\n useEffect(function () {\n var container = state.itemsRef.current;\n if (!container) return;\n if (state.menuState !== MenuStates.Open) return;\n if (container === document.activeElement) return;\n container.focus({\n preventScroll: true\n });\n }, [state.menuState, state.itemsRef]);\n useTreeWalker({\n container: state.itemsRef.current,\n enabled: state.menuState === MenuStates.Open,\n accept: function accept(node) {\n if (node.getAttribute('role') === 'menuitem') return NodeFilter.FILTER_REJECT;\n if (node.hasAttribute('role')) return NodeFilter.FILTER_SKIP;\n return NodeFilter.FILTER_ACCEPT;\n },\n walk: function walk(node) {\n node.setAttribute('role', 'none');\n }\n });\n var handleKeyDown = useCallback(function (event) {\n searchDisposables.dispose();\n\n switch (event.key) {\n // Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#keyboard-interaction-12\n // @ts-expect-error Fallthrough is expected here\n case Keys.Space:\n if (state.searchQuery !== '') {\n event.preventDefault();\n event.stopPropagation();\n return dispatch({\n type: ActionTypes.Search,\n value: event.key\n });\n }\n\n // When in type ahead mode, fallthrough\n\n case Keys.Enter:\n event.preventDefault();\n event.stopPropagation();\n dispatch({\n type: ActionTypes.CloseMenu\n });\n\n if (state.activeItemIndex !== null) {\n var _document$getElementB;\n\n var _id = state.items[state.activeItemIndex].id;\n (_document$getElementB = document.getElementById(_id)) == null ? void 0 : _document$getElementB.click();\n }\n\n disposables().nextFrame(function () {\n var _state$buttonRef$curr2;\n\n return (_state$buttonRef$curr2 = state.buttonRef.current) == null ? void 0 : _state$buttonRef$curr2.focus({\n preventScroll: true\n });\n });\n break;\n\n case Keys.ArrowDown:\n event.preventDefault();\n event.stopPropagation();\n return dispatch({\n type: ActionTypes.GoToItem,\n focus: Focus.Next\n });\n\n case Keys.ArrowUp:\n event.preventDefault();\n event.stopPropagation();\n return dispatch({\n type: ActionTypes.GoToItem,\n focus: Focus.Previous\n });\n\n case Keys.Home:\n case Keys.PageUp:\n event.preventDefault();\n event.stopPropagation();\n return dispatch({\n type: ActionTypes.GoToItem,\n focus: Focus.First\n });\n\n case Keys.End:\n case Keys.PageDown:\n event.preventDefault();\n event.stopPropagation();\n return dispatch({\n type: ActionTypes.GoToItem,\n focus: Focus.Last\n });\n\n case Keys.Escape:\n event.preventDefault();\n event.stopPropagation();\n dispatch({\n type: ActionTypes.CloseMenu\n });\n disposables().nextFrame(function () {\n var _state$buttonRef$curr3;\n\n return (_state$buttonRef$curr3 = state.buttonRef.current) == null ? void 0 : _state$buttonRef$curr3.focus({\n preventScroll: true\n });\n });\n break;\n\n case Keys.Tab:\n event.preventDefault();\n event.stopPropagation();\n break;\n\n default:\n if (event.key.length === 1) {\n dispatch({\n type: ActionTypes.Search,\n value: event.key\n });\n searchDisposables.setTimeout(function () {\n return dispatch({\n type: ActionTypes.ClearSearch\n });\n }, 350);\n }\n\n break;\n }\n }, [dispatch, searchDisposables, state]);\n var handleKeyUp = useCallback(function (event) {\n switch (event.key) {\n case Keys.Space:\n // Required for firefox, event.preventDefault() in handleKeyDown for\n // the Space key doesn't cancel the handleKeyUp, which in turn\n // triggers a *click*.\n event.preventDefault();\n break;\n }\n }, []);\n var slot = useMemo(function () {\n return {\n open: state.menuState === MenuStates.Open\n };\n }, [state]);\n var propsWeControl = {\n 'aria-activedescendant': state.activeItemIndex === null ? undefined : (_state$items$state$ac = state.items[state.activeItemIndex]) == null ? void 0 : _state$items$state$ac.id,\n 'aria-labelledby': (_state$buttonRef$curr4 = state.buttonRef.current) == null ? void 0 : _state$buttonRef$curr4.id,\n id: id,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n role: 'menu',\n tabIndex: 0,\n ref: itemsRef\n };\n var passthroughProps = props;\n return render({\n props: _extends({}, passthroughProps, propsWeControl),\n slot: slot,\n defaultTag: DEFAULT_ITEMS_TAG,\n features: ItemsRenderFeatures,\n visible: visible,\n name: 'Menu.Items'\n });\n}); // ---\n\nvar DEFAULT_ITEM_TAG = Fragment;\n\nfunction Item(props) {\n var _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n onClick = props.onClick,\n passthroughProps = _objectWithoutPropertiesLoose(props, [\"disabled\", \"onClick\"]);\n\n var _useMenuContext3 = useMenuContext([Menu.name, Item.name].join('.')),\n state = _useMenuContext3[0],\n dispatch = _useMenuContext3[1];\n\n var id = \"headlessui-menu-item-\" + useId();\n var active = state.activeItemIndex !== null ? state.items[state.activeItemIndex].id === id : false;\n useIsoMorphicEffect(function () {\n if (state.menuState !== MenuStates.Open) return;\n if (!active) return;\n var d = disposables();\n d.nextFrame(function () {\n var _document$getElementB2;\n\n return (_document$getElementB2 = document.getElementById(id)) == null ? void 0 : _document$getElementB2.scrollIntoView == null ? void 0 : _document$getElementB2.scrollIntoView({\n block: 'nearest'\n });\n });\n return d.dispose;\n }, [id, active, state.menuState]);\n var bag = useRef({\n disabled: disabled\n });\n useIsoMorphicEffect(function () {\n bag.current.disabled = disabled;\n }, [bag, disabled]);\n useIsoMorphicEffect(function () {\n var _document$getElementB3, _document$getElementB4;\n\n bag.current.textValue = (_document$getElementB3 = document.getElementById(id)) == null ? void 0 : (_document$getElementB4 = _document$getElementB3.textContent) == null ? void 0 : _document$getElementB4.toLowerCase();\n }, [bag, id]);\n useIsoMorphicEffect(function () {\n dispatch({\n type: ActionTypes.RegisterItem,\n id: id,\n dataRef: bag\n });\n return function () {\n return dispatch({\n type: ActionTypes.UnregisterItem,\n id: id\n });\n };\n }, [bag, id]);\n var handleClick = useCallback(function (event) {\n if (disabled) return event.preventDefault();\n dispatch({\n type: ActionTypes.CloseMenu\n });\n disposables().nextFrame(function () {\n var _state$buttonRef$curr5;\n\n return (_state$buttonRef$curr5 = state.buttonRef.current) == null ? void 0 : _state$buttonRef$curr5.focus({\n preventScroll: true\n });\n });\n if (onClick) return onClick(event);\n }, [dispatch, state.buttonRef, disabled, onClick]);\n var handleFocus = useCallback(function () {\n if (disabled) return dispatch({\n type: ActionTypes.GoToItem,\n focus: Focus.Nothing\n });\n dispatch({\n type: ActionTypes.GoToItem,\n focus: Focus.Specific,\n id: id\n });\n }, [disabled, id, dispatch]);\n var handleMove = useCallback(function () {\n if (disabled) return;\n if (active) return;\n dispatch({\n type: ActionTypes.GoToItem,\n focus: Focus.Specific,\n id: id\n });\n }, [disabled, active, id, dispatch]);\n var handleLeave = useCallback(function () {\n if (disabled) return;\n if (!active) return;\n dispatch({\n type: ActionTypes.GoToItem,\n focus: Focus.Nothing\n });\n }, [disabled, active, dispatch]);\n var slot = useMemo(function () {\n return {\n active: active,\n disabled: disabled\n };\n }, [active, disabled]);\n var propsWeControl = {\n id: id,\n role: 'menuitem',\n tabIndex: disabled === true ? undefined : -1,\n 'aria-disabled': disabled === true ? true : undefined,\n disabled: undefined,\n onClick: handleClick,\n onFocus: handleFocus,\n onPointerMove: handleMove,\n onMouseMove: handleMove,\n onPointerLeave: handleLeave,\n onMouseLeave: handleLeave\n };\n return render({\n props: _extends({}, passthroughProps, propsWeControl),\n slot: slot,\n defaultTag: DEFAULT_ITEM_TAG,\n name: 'Menu.Item'\n });\n} // ---\n\n\nMenu.Button = Button;\nMenu.Items = Items;\nMenu.Item = Item;\nexport { Menu };","import { createForOfIteratorHelperLoose as _createForOfIteratorHelperLoose } from '../_virtual/_rollupPluginBabelHelpers.js';\n\nfunction disposables() {\n var disposables = [];\n var api = {\n requestAnimationFrame: function (_requestAnimationFrame) {\n function requestAnimationFrame() {\n return _requestAnimationFrame.apply(this, arguments);\n }\n\n requestAnimationFrame.toString = function () {\n return _requestAnimationFrame.toString();\n };\n\n return requestAnimationFrame;\n }(function () {\n var raf = requestAnimationFrame.apply(void 0, arguments);\n api.add(function () {\n return cancelAnimationFrame(raf);\n });\n }),\n nextFrame: function nextFrame() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n api.requestAnimationFrame(function () {\n api.requestAnimationFrame.apply(api, args);\n });\n },\n setTimeout: function (_setTimeout) {\n function setTimeout() {\n return _setTimeout.apply(this, arguments);\n }\n\n setTimeout.toString = function () {\n return _setTimeout.toString();\n };\n\n return setTimeout;\n }(function () {\n var timer = setTimeout.apply(void 0, arguments);\n api.add(function () {\n return clearTimeout(timer);\n });\n }),\n add: function add(cb) {\n disposables.push(cb);\n },\n dispose: function dispose() {\n for (var _iterator = _createForOfIteratorHelperLoose(disposables.splice(0)), _step; !(_step = _iterator()).done;) {\n var dispose = _step.value;\n dispose();\n }\n }\n };\n return api;\n}\n\nexport { disposables };","import { useState, useEffect } from 'react';\nimport { disposables } from '../utils/disposables.esm.js';\n\nfunction useDisposables() {\n // Using useState instead of useRef so that we can use the initializer function.\n var _useState = useState(disposables),\n d = _useState[0];\n\n useEffect(function () {\n return function () {\n return d.dispose();\n };\n }, [d]);\n return d;\n}\n\nexport { useDisposables };","import { useRef, useEffect } from 'react';\n\nfunction useWindowEvent(type, listener, options) {\n var listenerRef = useRef(listener);\n listenerRef.current = listener;\n useEffect(function () {\n function handler(event) {\n listenerRef.current.call(window, event);\n }\n\n window.addEventListener(type, handler, options);\n return function () {\n return window.removeEventListener(type, handler, options);\n };\n }, [type, options]);\n}\n\nexport { useWindowEvent };","import { useRef, useEffect } from 'react';\nimport { useIsoMorphicEffect } from './use-iso-morphic-effect.esm.js';\n\nfunction useTreeWalker(_ref) {\n var container = _ref.container,\n accept = _ref.accept,\n walk = _ref.walk,\n _ref$enabled = _ref.enabled,\n enabled = _ref$enabled === void 0 ? true : _ref$enabled;\n var acceptRef = useRef(accept);\n var walkRef = useRef(walk);\n useEffect(function () {\n acceptRef.current = accept;\n walkRef.current = walk;\n }, [accept, walk]);\n useIsoMorphicEffect(function () {\n if (!container) return;\n if (!enabled) return;\n var accept = acceptRef.current;\n var walk = walkRef.current;\n var acceptNode = Object.assign(function (node) {\n return accept(node);\n }, {\n acceptNode: accept\n });\n var walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, acceptNode, false);\n\n while (walker.nextNode()) {\n walk(walker.currentNode);\n }\n }, [container, enabled, acceptRef, walkRef]);\n}\n\nexport { useTreeWalker };","import { disposables } from '../../../utils/disposables.esm.js';\nimport { once } from '../../../utils/once.esm.js';\n\nfunction addClasses(node) {\n var _node$classList;\n\n for (var _len = arguments.length, classes = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n classes[_key - 1] = arguments[_key];\n }\n\n node && classes.length > 0 && (_node$classList = node.classList).add.apply(_node$classList, classes);\n}\n\nfunction removeClasses(node) {\n var _node$classList2;\n\n for (var _len2 = arguments.length, classes = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n classes[_key2 - 1] = arguments[_key2];\n }\n\n node && classes.length > 0 && (_node$classList2 = node.classList).remove.apply(_node$classList2, classes);\n}\n\nvar Reason;\n\n(function (Reason) {\n Reason[\"Finished\"] = \"finished\";\n Reason[\"Cancelled\"] = \"cancelled\";\n})(Reason || (Reason = {}));\n\nfunction waitForTransition(node, done) {\n var d = disposables();\n if (!node) return d.dispose; // Safari returns a comma separated list of values, so let's sort them and take the highest value.\n\n var _getComputedStyle = getComputedStyle(node),\n transitionDuration = _getComputedStyle.transitionDuration,\n transitionDelay = _getComputedStyle.transitionDelay;\n\n var _map = [transitionDuration, transitionDelay].map(function (value) {\n var _value$split$filter$m = value.split(',') // Remove falsy we can't work with\n .filter(Boolean) // Values are returned as `0.3s` or `75ms`\n .map(function (v) {\n return v.includes('ms') ? parseFloat(v) : parseFloat(v) * 1000;\n }).sort(function (a, z) {\n return z - a;\n }),\n _value$split$filter$m2 = _value$split$filter$m[0],\n resolvedValue = _value$split$filter$m2 === void 0 ? 0 : _value$split$filter$m2;\n\n return resolvedValue;\n }),\n durationMs = _map[0],\n delaysMs = _map[1]; // Waiting for the transition to end. We could use the `transitionend` event, however when no\n // actual transition/duration is defined then the `transitionend` event is not fired.\n //\n // TODO: Downside is, when you slow down transitions via devtools this timeout is still using the\n // full 100% speed instead of the 25% or 10%.\n\n\n if (durationMs !== 0) {\n d.setTimeout(function () {\n done(Reason.Finished);\n }, durationMs + delaysMs);\n } else {\n // No transition is happening, so we should cleanup already. Otherwise we have to wait until we\n // get disposed.\n done(Reason.Finished);\n } // If we get disposed before the timeout runs we should cleanup anyway\n\n\n d.add(function () {\n return done(Reason.Cancelled);\n });\n return d.dispose;\n}\n\nfunction transition(node, base, from, to, entered, done) {\n var d = disposables();\n\n var _done = done !== undefined ? once(done) : function () {};\n\n removeClasses.apply(void 0, [node].concat(entered));\n addClasses.apply(void 0, [node].concat(base, from));\n d.nextFrame(function () {\n removeClasses.apply(void 0, [node].concat(from));\n addClasses.apply(void 0, [node].concat(to));\n d.add(waitForTransition(node, function (reason) {\n removeClasses.apply(void 0, [node].concat(to, base));\n addClasses.apply(void 0, [node].concat(entered));\n return _done(reason);\n }));\n }); // Once we get disposed, we should ensure that we cleanup after ourselves. In case of an unmount,\n // the node itself will be nullified and will be a no-op. In case of a full transition the classes\n // are already removed which is also a no-op. However if you go from enter -> leave mid-transition\n // then we have some leftovers that should be cleaned.\n\n d.add(function () {\n return removeClasses.apply(void 0, [node].concat(base, from, to, entered));\n }); // When we get disposed early, than we should also call the done method but switch the reason.\n\n d.add(function () {\n return _done(Reason.Cancelled);\n });\n return d.dispose;\n}\n\nexport { Reason, transition };","import { useRef, useEffect } from 'react';\n\nfunction useIsInitialRender() {\n var initial = useRef(true);\n useEffect(function () {\n initial.current = false;\n }, []);\n return initial.current;\n}\n\nexport { useIsInitialRender };","function once(cb) {\n var state = {\n called: false\n };\n return function () {\n if (state.called) return;\n state.called = true;\n return cb.apply(void 0, arguments);\n };\n}\n\nexport { once };","import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends, createForOfIteratorHelperLoose as _createForOfIteratorHelperLoose } from '../../_virtual/_rollupPluginBabelHelpers.js';\nimport React, { useState, useMemo, useEffect, Fragment, useContext, createContext, useRef, useCallback } from 'react';\nimport { match } from '../../utils/match.esm.js';\nimport { render, RenderStrategy, Features } from '../../utils/render.esm.js';\nimport { useIsoMorphicEffect } from '../../hooks/use-iso-morphic-effect.esm.js';\nimport { useServerHandoffComplete } from '../../hooks/use-server-handoff-complete.esm.js';\nimport { useId } from '../../hooks/use-id.esm.js';\nimport { useIsMounted } from '../../hooks/use-is-mounted.esm.js';\nimport { useOpenClosed, State, OpenClosedProvider } from '../../internal/open-closed.esm.js';\nimport { useIsInitialRender } from '../../hooks/use-is-initial-render.esm.js';\nimport { transition, Reason } from './utils/transition.esm.js';\n\nfunction useSplitClasses(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return useMemo(function () {\n return classes.split(' ').filter(function (className) {\n return className.trim().length > 1;\n });\n }, [classes]);\n}\n\nvar TransitionContext = /*#__PURE__*/createContext(null);\nTransitionContext.displayName = 'TransitionContext';\nvar TreeStates;\n\n(function (TreeStates) {\n TreeStates[\"Visible\"] = \"visible\";\n TreeStates[\"Hidden\"] = \"hidden\";\n})(TreeStates || (TreeStates = {}));\n\nfunction useTransitionContext() {\n var context = useContext(TransitionContext);\n\n if (context === null) {\n throw new Error('A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.');\n }\n\n return context;\n}\n\nfunction useParentNesting() {\n var context = useContext(NestingContext);\n\n if (context === null) {\n throw new Error('A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.');\n }\n\n return context;\n}\n\nvar NestingContext = /*#__PURE__*/createContext(null);\nNestingContext.displayName = 'NestingContext';\n\nfunction hasChildren(bag) {\n if ('children' in bag) return hasChildren(bag.children);\n return bag.current.filter(function (_ref) {\n var state = _ref.state;\n return state === TreeStates.Visible;\n }).length > 0;\n}\n\nfunction useNesting(done) {\n var doneRef = useRef(done);\n var transitionableChildren = useRef([]);\n var mounted = useIsMounted();\n useEffect(function () {\n doneRef.current = done;\n }, [done]);\n var unregister = useCallback(function (childId, strategy) {\n var _match;\n\n if (strategy === void 0) {\n strategy = RenderStrategy.Hidden;\n }\n\n var idx = transitionableChildren.current.findIndex(function (_ref2) {\n var id = _ref2.id;\n return id === childId;\n });\n if (idx === -1) return;\n match(strategy, (_match = {}, _match[RenderStrategy.Unmount] = function () {\n transitionableChildren.current.splice(idx, 1);\n }, _match[RenderStrategy.Hidden] = function () {\n transitionableChildren.current[idx].state = TreeStates.Hidden;\n }, _match));\n\n if (!hasChildren(transitionableChildren) && mounted.current) {\n doneRef.current == null ? void 0 : doneRef.current();\n }\n }, [doneRef, mounted, transitionableChildren]);\n var register = useCallback(function (childId) {\n var child = transitionableChildren.current.find(function (_ref3) {\n var id = _ref3.id;\n return id === childId;\n });\n\n if (!child) {\n transitionableChildren.current.push({\n id: childId,\n state: TreeStates.Visible\n });\n } else if (child.state !== TreeStates.Visible) {\n child.state = TreeStates.Visible;\n }\n\n return function () {\n return unregister(childId, RenderStrategy.Unmount);\n };\n }, [transitionableChildren, unregister]);\n return useMemo(function () {\n return {\n children: transitionableChildren,\n register: register,\n unregister: unregister\n };\n }, [register, unregister, transitionableChildren]);\n}\n\nfunction noop() {}\n\nvar eventNames = ['beforeEnter', 'afterEnter', 'beforeLeave', 'afterLeave'];\n\nfunction ensureEventHooksExist(events) {\n var result = {};\n\n for (var _iterator = _createForOfIteratorHelperLoose(eventNames), _step; !(_step = _iterator()).done;) {\n var _events$name;\n\n var name = _step.value;\n result[name] = (_events$name = events[name]) != null ? _events$name : noop;\n }\n\n return result;\n}\n\nfunction useEvents(events) {\n var eventsRef = useRef(ensureEventHooksExist(events));\n useEffect(function () {\n eventsRef.current = ensureEventHooksExist(events);\n }, [events]);\n return eventsRef;\n} // ---\n\n\nvar DEFAULT_TRANSITION_CHILD_TAG = 'div';\nvar TransitionChildRenderFeatures = Features.RenderStrategy;\n\nfunction TransitionChild(props) {\n var _match3;\n\n var beforeEnter = props.beforeEnter,\n afterEnter = props.afterEnter,\n beforeLeave = props.beforeLeave,\n afterLeave = props.afterLeave,\n enter = props.enter,\n enterFrom = props.enterFrom,\n enterTo = props.enterTo,\n entered = props.entered,\n leave = props.leave,\n leaveFrom = props.leaveFrom,\n leaveTo = props.leaveTo,\n rest = _objectWithoutPropertiesLoose(props, [\"beforeEnter\", \"afterEnter\", \"beforeLeave\", \"afterLeave\", \"enter\", \"enterFrom\", \"enterTo\", \"entered\", \"leave\", \"leaveFrom\", \"leaveTo\"]);\n\n var container = useRef(null);\n\n var _useState = useState(TreeStates.Visible),\n state = _useState[0],\n setState = _useState[1];\n\n var strategy = rest.unmount ? RenderStrategy.Unmount : RenderStrategy.Hidden;\n\n var _useTransitionContext = useTransitionContext(),\n show = _useTransitionContext.show,\n appear = _useTransitionContext.appear;\n\n var _useParentNesting = useParentNesting(),\n register = _useParentNesting.register,\n unregister = _useParentNesting.unregister;\n\n var initial = useIsInitialRender();\n var id = useId();\n var isTransitioning = useRef(false);\n var nesting = useNesting(function () {\n // When all children have been unmounted we can only hide ourselves if and only if we are not\n // transitioning ourselves. Otherwise we would unmount before the transitions are finished.\n if (!isTransitioning.current) {\n setState(TreeStates.Hidden);\n unregister(id);\n events.current.afterLeave();\n }\n });\n useIsoMorphicEffect(function () {\n if (!id) return;\n return register(id);\n }, [register, id]);\n useIsoMorphicEffect(function () {\n var _match2; // If we are in another mode than the Hidden mode then ignore\n\n\n if (strategy !== RenderStrategy.Hidden) return;\n if (!id) return; // Make sure that we are visible\n\n if (show && state !== TreeStates.Visible) {\n setState(TreeStates.Visible);\n return;\n }\n\n match(state, (_match2 = {}, _match2[TreeStates.Hidden] = function () {\n return unregister(id);\n }, _match2[TreeStates.Visible] = function () {\n return register(id);\n }, _match2));\n }, [state, id, register, unregister, show, strategy]);\n var enterClasses = useSplitClasses(enter);\n var enterFromClasses = useSplitClasses(enterFrom);\n var enterToClasses = useSplitClasses(enterTo);\n var enteredClasses = useSplitClasses(entered);\n var leaveClasses = useSplitClasses(leave);\n var leaveFromClasses = useSplitClasses(leaveFrom);\n var leaveToClasses = useSplitClasses(leaveTo);\n var events = useEvents({\n beforeEnter: beforeEnter,\n afterEnter: afterEnter,\n beforeLeave: beforeLeave,\n afterLeave: afterLeave\n });\n var ready = useServerHandoffComplete();\n useEffect(function () {\n if (ready && state === TreeStates.Visible && container.current === null) {\n throw new Error('Did you forget to passthrough the `ref` to the actual DOM node?');\n }\n }, [container, state, ready]); // Skipping initial transition\n\n var skip = initial && !appear;\n useIsoMorphicEffect(function () {\n var node = container.current;\n if (!node) return;\n if (skip) return;\n isTransitioning.current = true;\n if (show) events.current.beforeEnter();\n if (!show) events.current.beforeLeave();\n return show ? transition(node, enterClasses, enterFromClasses, enterToClasses, enteredClasses, function (reason) {\n isTransitioning.current = false;\n if (reason === Reason.Finished) events.current.afterEnter();\n }) : transition(node, leaveClasses, leaveFromClasses, leaveToClasses, enteredClasses, function (reason) {\n isTransitioning.current = false;\n if (reason !== Reason.Finished) return; // When we don't have children anymore we can safely unregister from the parent and hide\n // ourselves.\n\n if (!hasChildren(nesting)) {\n setState(TreeStates.Hidden);\n unregister(id);\n events.current.afterLeave();\n }\n });\n }, [events, id, isTransitioning, unregister, nesting, container, skip, show, enterClasses, enterFromClasses, enterToClasses, leaveClasses, leaveFromClasses, leaveToClasses]);\n var propsWeControl = {\n ref: container\n };\n var passthroughProps = rest;\n return React.createElement(NestingContext.Provider, {\n value: nesting\n }, React.createElement(OpenClosedProvider, {\n value: match(state, (_match3 = {}, _match3[TreeStates.Visible] = State.Open, _match3[TreeStates.Hidden] = State.Closed, _match3))\n }, render({\n props: _extends({}, passthroughProps, propsWeControl),\n defaultTag: DEFAULT_TRANSITION_CHILD_TAG,\n features: TransitionChildRenderFeatures,\n visible: state === TreeStates.Visible,\n name: 'Transition.Child'\n })));\n}\n\nfunction Transition(props) {\n // @ts-expect-error\n var show = props.show,\n _props$appear = props.appear,\n appear = _props$appear === void 0 ? false : _props$appear,\n unmount = props.unmount,\n passthroughProps = _objectWithoutPropertiesLoose(props, [\"show\", \"appear\", \"unmount\"]);\n\n var usesOpenClosedState = useOpenClosed();\n\n if (show === undefined && usesOpenClosedState !== null) {\n var _match4;\n\n show = match(usesOpenClosedState, (_match4 = {}, _match4[State.Open] = true, _match4[State.Closed] = false, _match4));\n }\n\n if (![true, false].includes(show)) {\n throw new Error('A <Transition /> is used but it is missing a `show={true | false}` prop.');\n }\n\n var _useState2 = useState(show ? TreeStates.Visible : TreeStates.Hidden),\n state = _useState2[0],\n setState = _useState2[1];\n\n var nestingBag = useNesting(function () {\n setState(TreeStates.Hidden);\n });\n var initial = useIsInitialRender();\n var transitionBag = useMemo(function () {\n return {\n show: show,\n appear: appear || !initial\n };\n }, [show, appear, initial]);\n useEffect(function () {\n if (show) {\n setState(TreeStates.Visible);\n } else if (!hasChildren(nestingBag)) {\n setState(TreeStates.Hidden);\n }\n }, [show, nestingBag]);\n var sharedProps = {\n unmount: unmount\n };\n return React.createElement(NestingContext.Provider, {\n value: nestingBag\n }, React.createElement(TransitionContext.Provider, {\n value: transitionBag\n }, render({\n props: _extends({}, sharedProps, {\n as: Fragment,\n children: React.createElement(TransitionChild, Object.assign({}, sharedProps, passthroughProps))\n }),\n defaultTag: Fragment,\n features: TransitionChildRenderFeatures,\n visible: state === TreeStates.Visible,\n name: 'Transition'\n })));\n}\n\nTransition.Child = function Child(props) {\n var hasTransitionContext = useContext(TransitionContext) !== null;\n var hasOpenClosedContext = useOpenClosed() !== null;\n return !hasTransitionContext && hasOpenClosedContext ? React.createElement(Transition, Object.assign({}, props)) : React.createElement(TransitionChild, Object.assign({}, props));\n};\n\nTransition.Root = Transition;\nexport { Transition };","import { useRef, useEffect } from 'react';\n\nfunction useIsMounted() {\n var mounted = useRef(false);\n useEffect(function () {\n mounted.current = true;\n return function () {\n mounted.current = false;\n };\n }, []);\n return mounted;\n}\n\nexport { useIsMounted };","import * as React from \"react\";\n\nfunction MenuIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n stroke: \"currentColor\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M4 6h16M4 12h16M4 18h16\"\n }));\n}\n\nexport default MenuIcon;","import * as React from \"react\";\n\nfunction TranslateIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n stroke: \"currentColor\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129\"\n }));\n}\n\nexport default TranslateIcon;","import * as React from \"react\";\n\nfunction XIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n stroke: \"currentColor\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M6 18L18 6M6 6l12 12\"\n }));\n}\n\nexport default XIcon;","import * as React from \"react\";\n\nfunction ZoomOutIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n stroke: \"currentColor\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM13 10H7\"\n }));\n}\n\nexport default ZoomOutIcon;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"forwardedRef\"];\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nimport React from 'react';\nimport { useTranslation } from './useTranslation';\nimport { getDisplayName } from './utils';\nexport function withTranslation(ns) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function Extend(WrappedComponent) {\n function I18nextWithTranslation(_ref) {\n var forwardedRef = _ref.forwardedRef,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var _useTranslation = useTranslation(ns, rest),\n _useTranslation2 = _slicedToArray(_useTranslation, 3),\n t = _useTranslation2[0],\n i18n = _useTranslation2[1],\n ready = _useTranslation2[2];\n\n var passDownProps = _objectSpread(_objectSpread({}, rest), {}, {\n t: t,\n i18n: i18n,\n tReady: ready\n });\n\n if (options.withRef && forwardedRef) {\n passDownProps.ref = forwardedRef;\n } else if (!options.withRef && forwardedRef) {\n passDownProps.forwardedRef = forwardedRef;\n }\n\n return React.createElement(WrappedComponent, passDownProps);\n }\n\n I18nextWithTranslation.displayName = \"withI18nextTranslation(\".concat(getDisplayName(WrappedComponent), \")\");\n I18nextWithTranslation.WrappedComponent = WrappedComponent;\n\n var forwardRef = function forwardRef(props, ref) {\n return React.createElement(I18nextWithTranslation, Object.assign({}, props, {\n forwardedRef: ref\n }));\n };\n\n return options.withRef ? React.forwardRef(forwardRef) : I18nextWithTranslation;\n };\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default 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}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\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\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import _inherits from \"/Users/jon/Sites/tav/node_modules/@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"/Users/jon/Sites/tav/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"/Users/jon/Sites/tav/node_modules/@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _toConsumableArray from \"/Users/jon/Sites/tav/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"/Users/jon/Sites/tav/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"/Users/jon/Sites/tav/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/Users/jon/Sites/tav/node_modules/@babel/runtime/helpers/esm/createClass\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * Fuse.js v6.4.6 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2021 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\nfunction isArray(value) {\n return !Array.isArray ? getTag(value) === '[object Array]' : Array.isArray(value);\n} // Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\n\n\nvar INFINITY = 1 / 0;\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\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nfunction isString(value) {\n return typeof value === 'string';\n}\n\nfunction isNumber(value) {\n return typeof value === 'number';\n} // Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\n\n\nfunction isBoolean(value) {\n return value === true || value === false || isObjectLike(value) && getTag(value) == '[object Boolean]';\n}\n\nfunction isObject(value) {\n return typeof value === 'object';\n} // Checks if `value` is object-like.\n\n\nfunction isObjectLike(value) {\n return isObject(value) && value !== null;\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nfunction isBlank(value) {\n return !value.trim().length;\n} // Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\n\n\nfunction getTag(value) {\n return value == null ? value === undefined ? '[object Undefined]' : '[object Null]' : Object.prototype.toString.call(value);\n}\n\nvar EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\nvar INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nvar LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = function LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key) {\n return \"Invalid value for key \".concat(key);\n};\n\nvar PATTERN_LENGTH_TOO_LARGE = function PATTERN_LENGTH_TOO_LARGE(max) {\n return \"Pattern length exceeds max of \".concat(max, \".\");\n};\n\nvar MISSING_KEY_PROPERTY = function MISSING_KEY_PROPERTY(name) {\n return \"Missing \".concat(name, \" property in key\");\n};\n\nvar INVALID_KEY_WEIGHT_VALUE = function INVALID_KEY_WEIGHT_VALUE(key) {\n return \"Property 'weight' in key '\".concat(key, \"' must be a positive integer\");\n};\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nvar KeyStore = /*#__PURE__*/function () {\n function KeyStore(keys) {\n var _this = this;\n\n _classCallCheck(this, KeyStore);\n\n this._keys = [];\n this._keyMap = {};\n var totalWeight = 0;\n keys.forEach(function (key) {\n var obj = createKey(key);\n totalWeight += obj.weight;\n\n _this._keys.push(obj);\n\n _this._keyMap[obj.id] = obj;\n totalWeight += obj.weight;\n }); // Normalize weights so that their sum is equal to 1\n\n this._keys.forEach(function (key) {\n key.weight /= totalWeight;\n });\n }\n\n _createClass(KeyStore, [{\n key: \"get\",\n value: function get(keyId) {\n return this._keyMap[keyId];\n }\n }, {\n key: \"keys\",\n value: function keys() {\n return this._keys;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return JSON.stringify(this._keys);\n }\n }]);\n\n return KeyStore;\n}();\n\nfunction createKey(key) {\n var path = null;\n var id = null;\n var src = null;\n var weight = 1;\n\n if (isString(key) || isArray(key)) {\n src = key;\n path = createKeyPath(key);\n id = createKeyId(key);\n } else {\n if (!hasOwn.call(key, 'name')) {\n throw new Error(MISSING_KEY_PROPERTY('name'));\n }\n\n var name = key.name;\n src = name;\n\n if (hasOwn.call(key, 'weight')) {\n weight = key.weight;\n\n if (weight <= 0) {\n throw new Error(INVALID_KEY_WEIGHT_VALUE(name));\n }\n }\n\n path = createKeyPath(name);\n id = createKeyId(name);\n }\n\n return {\n path: path,\n id: id,\n weight: weight,\n src: src\n };\n}\n\nfunction createKeyPath(key) {\n return isArray(key) ? key : key.split('.');\n}\n\nfunction createKeyId(key) {\n return isArray(key) ? key.join('.') : key;\n}\n\nfunction get(obj, path) {\n var list = [];\n var arr = false;\n\n var deepGet = function deepGet(obj, path, index) {\n if (!isDefined(obj)) {\n return;\n }\n\n if (!path[index]) {\n // If there's no path left, we've arrived at the object we care about.\n list.push(obj);\n } else {\n var key = path[index];\n var value = obj[key];\n\n if (!isDefined(value)) {\n return;\n } // If we're at the last value in the path, and if it's a string/number/bool,\n // add it to the list\n\n\n if (index === path.length - 1 && (isString(value) || isNumber(value) || isBoolean(value))) {\n list.push(toString(value));\n } else if (isArray(value)) {\n arr = true; // Search each item in the array.\n\n for (var i = 0, len = value.length; i < len; i += 1) {\n deepGet(value[i], path, index + 1);\n }\n } else if (path.length) {\n // An object. Recurse further.\n deepGet(value, path, index + 1);\n }\n }\n }; // Backwards compatibility (since path used to be a string)\n\n\n deepGet(obj, isString(path) ? path.split('.') : path, 0);\n return arr ? list : list[0];\n}\n\nvar MatchOptions = {\n // Whether the matches should be included in the result set. When `true`, each record in the result\n // set will include the indices of the matched characters.\n // These can consequently be used for highlighting purposes.\n includeMatches: false,\n // When `true`, the matching function will continue to the end of a search pattern even if\n // a perfect match has already been located in the string.\n findAllMatches: false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1\n};\nvar BasicOptions = {\n // When `true`, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n isCaseSensitive: false,\n // When true, the matching function will continue to the end of a search pattern even if\n includeScore: false,\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n // Whether to sort the result list, by score\n shouldSort: true,\n // Default sort function: sort by ascending score, ascending index\n sortFn: function sortFn(a, b) {\n return a.score === b.score ? a.idx < b.idx ? -1 : 1 : a.score < b.score ? -1 : 1;\n }\n};\nvar FuzzyOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100\n};\nvar AdvancedOptions = {\n // When `true`, it enables the use of unix-like search commands\n useExtendedSearch: false,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: get,\n // When `true`, search will ignore `location` and `distance`, so it won't matter\n // where in the string the pattern appears.\n // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n ignoreLocation: false,\n // When `true`, the calculation for the relevance score (used for sorting) will\n // ignore the field-length norm.\n // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n ignoreFieldNorm: false\n};\n\nvar Config = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, BasicOptions), MatchOptions), FuzzyOptions), AdvancedOptions);\n\nvar SPACE = /[^ ]+/g; // Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\n\nfunction norm() {\n var mantissa = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 3;\n var cache = new Map();\n var m = Math.pow(10, mantissa);\n return {\n get: function get(value) {\n var numTokens = value.match(SPACE).length;\n\n if (cache.has(numTokens)) {\n return cache.get(numTokens);\n }\n\n var norm = 1 / Math.sqrt(numTokens); // In place of `toFixed(mantissa)`, for faster computation\n\n var n = parseFloat(Math.round(norm * m) / m);\n cache.set(numTokens, n);\n return n;\n },\n clear: function clear() {\n cache.clear();\n }\n };\n}\n\nvar FuseIndex = /*#__PURE__*/function () {\n function FuseIndex() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$getFn = _ref.getFn,\n getFn = _ref$getFn === void 0 ? Config.getFn : _ref$getFn;\n\n _classCallCheck(this, FuseIndex);\n\n this.norm = norm(3);\n this.getFn = getFn;\n this.isCreated = false;\n this.setIndexRecords();\n }\n\n _createClass(FuseIndex, [{\n key: \"setSources\",\n value: function setSources() {\n var docs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n this.docs = docs;\n }\n }, {\n key: \"setIndexRecords\",\n value: function setIndexRecords() {\n var records = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n this.records = records;\n }\n }, {\n key: \"setKeys\",\n value: function setKeys() {\n var _this2 = this;\n\n var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n this.keys = keys;\n this._keysMap = {};\n keys.forEach(function (key, idx) {\n _this2._keysMap[key.id] = idx;\n });\n }\n }, {\n key: \"create\",\n value: function create() {\n var _this3 = this;\n\n if (this.isCreated || !this.docs.length) {\n return;\n }\n\n this.isCreated = true; // List is Array<String>\n\n if (isString(this.docs[0])) {\n this.docs.forEach(function (doc, docIndex) {\n _this3._addString(doc, docIndex);\n });\n } else {\n // List is Array<Object>\n this.docs.forEach(function (doc, docIndex) {\n _this3._addObject(doc, docIndex);\n });\n }\n\n this.norm.clear();\n } // Adds a doc to the end of the index\n\n }, {\n key: \"add\",\n value: function add(doc) {\n var idx = this.size();\n\n if (isString(doc)) {\n this._addString(doc, idx);\n } else {\n this._addObject(doc, idx);\n }\n } // Removes the doc at the specified index of the index\n\n }, {\n key: \"removeAt\",\n value: function removeAt(idx) {\n this.records.splice(idx, 1); // Change ref index of every subsquent doc\n\n for (var i = idx, len = this.size(); i < len; i += 1) {\n this.records[i].i -= 1;\n }\n }\n }, {\n key: \"getValueForItemAtKeyId\",\n value: function getValueForItemAtKeyId(item, keyId) {\n return item[this._keysMap[keyId]];\n }\n }, {\n key: \"size\",\n value: function size() {\n return this.records.length;\n }\n }, {\n key: \"_addString\",\n value: function _addString(doc, docIndex) {\n if (!isDefined(doc) || isBlank(doc)) {\n return;\n }\n\n var record = {\n v: doc,\n i: docIndex,\n n: this.norm.get(doc)\n };\n this.records.push(record);\n }\n }, {\n key: \"_addObject\",\n value: function _addObject(doc, docIndex) {\n var _this4 = this;\n\n var record = {\n i: docIndex,\n $: {}\n }; // Iterate over every key (i.e, path), and fetch the value at that key\n\n this.keys.forEach(function (key, keyIndex) {\n // console.log(key)\n var value = _this4.getFn(doc, key.path);\n\n if (!isDefined(value)) {\n return;\n }\n\n if (isArray(value)) {\n (function () {\n var subRecords = [];\n var stack = [{\n nestedArrIndex: -1,\n value: value\n }];\n\n while (stack.length) {\n var _stack$pop = stack.pop(),\n nestedArrIndex = _stack$pop.nestedArrIndex,\n _value = _stack$pop.value;\n\n if (!isDefined(_value)) {\n continue;\n }\n\n if (isString(_value) && !isBlank(_value)) {\n var subRecord = {\n v: _value,\n i: nestedArrIndex,\n n: _this4.norm.get(_value)\n };\n subRecords.push(subRecord);\n } else if (isArray(_value)) {\n _value.forEach(function (item, k) {\n stack.push({\n nestedArrIndex: k,\n value: item\n });\n });\n }\n }\n\n record.$[keyIndex] = subRecords;\n })();\n } else if (!isBlank(value)) {\n var subRecord = {\n v: value,\n n: _this4.norm.get(value)\n };\n record.$[keyIndex] = subRecord;\n }\n });\n this.records.push(record);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n keys: this.keys,\n records: this.records\n };\n }\n }]);\n\n return FuseIndex;\n}();\n\nfunction createIndex(keys, docs) {\n var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref2$getFn = _ref2.getFn,\n getFn = _ref2$getFn === void 0 ? Config.getFn : _ref2$getFn;\n\n var myIndex = new FuseIndex({\n getFn: getFn\n });\n myIndex.setKeys(keys.map(createKey));\n myIndex.setSources(docs);\n myIndex.create();\n return myIndex;\n}\n\nfunction parseIndex(data) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$getFn = _ref3.getFn,\n getFn = _ref3$getFn === void 0 ? Config.getFn : _ref3$getFn;\n\n var keys = data.keys,\n records = data.records;\n var myIndex = new FuseIndex({\n getFn: getFn\n });\n myIndex.setKeys(keys);\n myIndex.setIndexRecords(records);\n return myIndex;\n}\n\nfunction computeScore(pattern) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref4$errors = _ref4.errors,\n errors = _ref4$errors === void 0 ? 0 : _ref4$errors,\n _ref4$currentLocation = _ref4.currentLocation,\n currentLocation = _ref4$currentLocation === void 0 ? 0 : _ref4$currentLocation,\n _ref4$expectedLocatio = _ref4.expectedLocation,\n expectedLocation = _ref4$expectedLocatio === void 0 ? 0 : _ref4$expectedLocatio,\n _ref4$distance = _ref4.distance,\n distance = _ref4$distance === void 0 ? Config.distance : _ref4$distance,\n _ref4$ignoreLocation = _ref4.ignoreLocation,\n ignoreLocation = _ref4$ignoreLocation === void 0 ? Config.ignoreLocation : _ref4$ignoreLocation;\n\n var accuracy = errors / pattern.length;\n\n if (ignoreLocation) {\n return accuracy;\n }\n\n var proximity = Math.abs(expectedLocation - currentLocation);\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy;\n }\n\n return accuracy + proximity / distance;\n}\n\nfunction convertMaskToIndices() {\n var matchmask = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var minMatchCharLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Config.minMatchCharLength;\n var indices = [];\n var start = -1;\n var end = -1;\n var i = 0;\n\n for (var len = matchmask.length; i < len; i += 1) {\n var match = matchmask[i];\n\n if (match && start === -1) {\n start = i;\n } else if (!match && start !== -1) {\n end = i - 1;\n\n if (end - start + 1 >= minMatchCharLength) {\n indices.push([start, end]);\n }\n\n start = -1;\n }\n } // (i-1 - start) + 1 => i - start\n\n\n if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n indices.push([start, i - 1]);\n }\n\n return indices;\n} // Machine word size\n\n\nvar MAX_BITS = 32;\n\nfunction search(text, pattern, patternAlphabet) {\n var _ref5 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n _ref5$location = _ref5.location,\n location = _ref5$location === void 0 ? Config.location : _ref5$location,\n _ref5$distance = _ref5.distance,\n distance = _ref5$distance === void 0 ? Config.distance : _ref5$distance,\n _ref5$threshold = _ref5.threshold,\n threshold = _ref5$threshold === void 0 ? Config.threshold : _ref5$threshold,\n _ref5$findAllMatches = _ref5.findAllMatches,\n findAllMatches = _ref5$findAllMatches === void 0 ? Config.findAllMatches : _ref5$findAllMatches,\n _ref5$minMatchCharLen = _ref5.minMatchCharLength,\n minMatchCharLength = _ref5$minMatchCharLen === void 0 ? Config.minMatchCharLength : _ref5$minMatchCharLen,\n _ref5$includeMatches = _ref5.includeMatches,\n includeMatches = _ref5$includeMatches === void 0 ? Config.includeMatches : _ref5$includeMatches,\n _ref5$ignoreLocation = _ref5.ignoreLocation,\n ignoreLocation = _ref5$ignoreLocation === void 0 ? Config.ignoreLocation : _ref5$ignoreLocation;\n\n if (pattern.length > MAX_BITS) {\n throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS));\n }\n\n var patternLen = pattern.length; // Set starting location at beginning text and initialize the alphabet.\n\n var textLen = text.length; // Handle the case when location > text.length\n\n var expectedLocation = Math.max(0, Math.min(location, textLen)); // Highest score beyond which we give up.\n\n var currentThreshold = threshold; // Is there a nearby exact match? (speedup)\n\n var bestLocation = expectedLocation; // Performance: only computer matches when the minMatchCharLength > 1\n // OR if `includeMatches` is true.\n\n var computeMatches = minMatchCharLength > 1 || includeMatches; // A mask of the matches, used for building the indices\n\n var matchMask = computeMatches ? Array(textLen) : [];\n var index; // Get all exact matches, here for speed up\n\n while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n var score = computeScore(pattern, {\n currentLocation: index,\n expectedLocation: expectedLocation,\n distance: distance,\n ignoreLocation: ignoreLocation\n });\n currentThreshold = Math.min(score, currentThreshold);\n bestLocation = index + patternLen;\n\n if (computeMatches) {\n var i = 0;\n\n while (i < patternLen) {\n matchMask[index + i] = 1;\n i += 1;\n }\n }\n } // Reset the best location\n\n\n bestLocation = -1;\n var lastBitArr = [];\n var finalScore = 1;\n var binMax = patternLen + textLen;\n var mask = 1 << patternLen - 1;\n\n for (var _i = 0; _i < patternLen; _i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n var binMin = 0;\n var binMid = binMax;\n\n while (binMin < binMid) {\n var _score2 = computeScore(pattern, {\n errors: _i,\n currentLocation: expectedLocation + binMid,\n expectedLocation: expectedLocation,\n distance: distance,\n ignoreLocation: ignoreLocation\n });\n\n if (_score2 <= currentThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n } // Use the result from this iteration as the maximum for the next.\n\n\n binMax = binMid;\n var start = Math.max(1, expectedLocation - binMid + 1);\n var finish = findAllMatches ? textLen : Math.min(expectedLocation + binMid, textLen) + patternLen; // Initialize the bit array\n\n var bitArr = Array(finish + 2);\n bitArr[finish + 1] = (1 << _i) - 1;\n\n for (var j = finish; j >= start; j -= 1) {\n var currentLocation = j - 1;\n var charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n if (computeMatches) {\n // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n matchMask[currentLocation] = +!!charMatch;\n } // First pass: exact match\n\n\n bitArr[j] = (bitArr[j + 1] << 1 | 1) & charMatch; // Subsequent passes: fuzzy match\n\n if (_i) {\n bitArr[j] |= (lastBitArr[j + 1] | lastBitArr[j]) << 1 | 1 | lastBitArr[j + 1];\n }\n\n if (bitArr[j] & mask) {\n finalScore = computeScore(pattern, {\n errors: _i,\n currentLocation: currentLocation,\n expectedLocation: expectedLocation,\n distance: distance,\n ignoreLocation: ignoreLocation\n }); // This match will almost certainly be better than any existing match.\n // But check anyway.\n\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore;\n bestLocation = currentLocation; // Already passed `loc`, downhill from here on in.\n\n if (bestLocation <= expectedLocation) {\n break;\n } // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n\n\n start = Math.max(1, 2 * expectedLocation - bestLocation);\n }\n }\n } // No hope for a (better) match at greater error levels.\n\n\n var _score = computeScore(pattern, {\n errors: _i + 1,\n currentLocation: expectedLocation,\n expectedLocation: expectedLocation,\n distance: distance,\n ignoreLocation: ignoreLocation\n });\n\n if (_score > currentThreshold) {\n break;\n }\n\n lastBitArr = bitArr;\n }\n\n var result = {\n isMatch: bestLocation >= 0,\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n score: Math.max(0.001, finalScore)\n };\n\n if (computeMatches) {\n var indices = convertMaskToIndices(matchMask, minMatchCharLength);\n\n if (!indices.length) {\n result.isMatch = false;\n } else if (includeMatches) {\n result.indices = indices;\n }\n }\n\n return result;\n}\n\nfunction createPatternAlphabet(pattern) {\n var mask = {};\n\n for (var i = 0, len = pattern.length; i < len; i += 1) {\n var char = pattern.charAt(i);\n mask[char] = (mask[char] || 0) | 1 << len - i - 1;\n }\n\n return mask;\n}\n\nvar BitapSearch = /*#__PURE__*/function () {\n function BitapSearch(pattern) {\n var _this5 = this;\n\n var _ref6 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref6$location = _ref6.location,\n location = _ref6$location === void 0 ? Config.location : _ref6$location,\n _ref6$threshold = _ref6.threshold,\n threshold = _ref6$threshold === void 0 ? Config.threshold : _ref6$threshold,\n _ref6$distance = _ref6.distance,\n distance = _ref6$distance === void 0 ? Config.distance : _ref6$distance,\n _ref6$includeMatches = _ref6.includeMatches,\n includeMatches = _ref6$includeMatches === void 0 ? Config.includeMatches : _ref6$includeMatches,\n _ref6$findAllMatches = _ref6.findAllMatches,\n findAllMatches = _ref6$findAllMatches === void 0 ? Config.findAllMatches : _ref6$findAllMatches,\n _ref6$minMatchCharLen = _ref6.minMatchCharLength,\n minMatchCharLength = _ref6$minMatchCharLen === void 0 ? Config.minMatchCharLength : _ref6$minMatchCharLen,\n _ref6$isCaseSensitive = _ref6.isCaseSensitive,\n isCaseSensitive = _ref6$isCaseSensitive === void 0 ? Config.isCaseSensitive : _ref6$isCaseSensitive,\n _ref6$ignoreLocation = _ref6.ignoreLocation,\n ignoreLocation = _ref6$ignoreLocation === void 0 ? Config.ignoreLocation : _ref6$ignoreLocation;\n\n _classCallCheck(this, BitapSearch);\n\n this.options = {\n location: location,\n threshold: threshold,\n distance: distance,\n includeMatches: includeMatches,\n findAllMatches: findAllMatches,\n minMatchCharLength: minMatchCharLength,\n isCaseSensitive: isCaseSensitive,\n ignoreLocation: ignoreLocation\n };\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.chunks = [];\n\n if (!this.pattern.length) {\n return;\n }\n\n var addChunk = function addChunk(pattern, startIndex) {\n _this5.chunks.push({\n pattern: pattern,\n alphabet: createPatternAlphabet(pattern),\n startIndex: startIndex\n });\n };\n\n var len = this.pattern.length;\n\n if (len > MAX_BITS) {\n var i = 0;\n var remainder = len % MAX_BITS;\n var end = len - remainder;\n\n while (i < end) {\n addChunk(this.pattern.substr(i, MAX_BITS), i);\n i += MAX_BITS;\n }\n\n if (remainder) {\n var startIndex = len - MAX_BITS;\n addChunk(this.pattern.substr(startIndex), startIndex);\n }\n } else {\n addChunk(this.pattern, 0);\n }\n }\n\n _createClass(BitapSearch, [{\n key: \"searchIn\",\n value: function searchIn(text) {\n var _this$options = this.options,\n isCaseSensitive = _this$options.isCaseSensitive,\n includeMatches = _this$options.includeMatches;\n\n if (!isCaseSensitive) {\n text = text.toLowerCase();\n } // Exact match\n\n\n if (this.pattern === text) {\n var _result = {\n isMatch: true,\n score: 0\n };\n\n if (includeMatches) {\n _result.indices = [[0, text.length - 1]];\n }\n\n return _result;\n } // Otherwise, use Bitap algorithm\n\n\n var _this$options2 = this.options,\n location = _this$options2.location,\n distance = _this$options2.distance,\n threshold = _this$options2.threshold,\n findAllMatches = _this$options2.findAllMatches,\n minMatchCharLength = _this$options2.minMatchCharLength,\n ignoreLocation = _this$options2.ignoreLocation;\n var allIndices = [];\n var totalScore = 0;\n var hasMatches = false;\n this.chunks.forEach(function (_ref7) {\n var pattern = _ref7.pattern,\n alphabet = _ref7.alphabet,\n startIndex = _ref7.startIndex;\n\n var _search = search(text, pattern, alphabet, {\n location: location + startIndex,\n distance: distance,\n threshold: threshold,\n findAllMatches: findAllMatches,\n minMatchCharLength: minMatchCharLength,\n includeMatches: includeMatches,\n ignoreLocation: ignoreLocation\n }),\n isMatch = _search.isMatch,\n score = _search.score,\n indices = _search.indices;\n\n if (isMatch) {\n hasMatches = true;\n }\n\n totalScore += score;\n\n if (isMatch && indices) {\n allIndices = [].concat(_toConsumableArray(allIndices), _toConsumableArray(indices));\n }\n });\n var result = {\n isMatch: hasMatches,\n score: hasMatches ? totalScore / this.chunks.length : 1\n };\n\n if (hasMatches && includeMatches) {\n result.indices = allIndices;\n }\n\n return result;\n }\n }]);\n\n return BitapSearch;\n}();\n\nvar BaseMatch = /*#__PURE__*/function () {\n function BaseMatch(pattern) {\n _classCallCheck(this, BaseMatch);\n\n this.pattern = pattern;\n }\n\n _createClass(BaseMatch, [{\n key: \"search\",\n value: function search() {}\n }], [{\n key: \"isMultiMatch\",\n value: function isMultiMatch(pattern) {\n return getMatch(pattern, this.multiRegex);\n }\n }, {\n key: \"isSingleMatch\",\n value: function isSingleMatch(pattern) {\n return getMatch(pattern, this.singleRegex);\n }\n }]);\n\n return BaseMatch;\n}();\n\nfunction getMatch(pattern, exp) {\n var matches = pattern.match(exp);\n return matches ? matches[1] : null;\n} // Token: 'file\n\n\nvar ExactMatch = /*#__PURE__*/function (_BaseMatch) {\n _inherits(ExactMatch, _BaseMatch);\n\n var _super = _createSuper(ExactMatch);\n\n function ExactMatch(pattern) {\n _classCallCheck(this, ExactMatch);\n\n return _super.call(this, pattern);\n }\n\n _createClass(ExactMatch, [{\n key: \"search\",\n value: function search(text) {\n var isMatch = text === this.pattern;\n return {\n isMatch: isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n };\n }\n }], [{\n key: \"type\",\n get: function get() {\n return 'exact';\n }\n }, {\n key: \"multiRegex\",\n get: function get() {\n return /^=\"(.*)\"$/;\n }\n }, {\n key: \"singleRegex\",\n get: function get() {\n return /^=(.*)$/;\n }\n }]);\n\n return ExactMatch;\n}(BaseMatch); // Token: !fire\n\n\nvar InverseExactMatch = /*#__PURE__*/function (_BaseMatch2) {\n _inherits(InverseExactMatch, _BaseMatch2);\n\n var _super2 = _createSuper(InverseExactMatch);\n\n function InverseExactMatch(pattern) {\n _classCallCheck(this, InverseExactMatch);\n\n return _super2.call(this, pattern);\n }\n\n _createClass(InverseExactMatch, [{\n key: \"search\",\n value: function search(text) {\n var index = text.indexOf(this.pattern);\n var isMatch = index === -1;\n return {\n isMatch: isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n };\n }\n }], [{\n key: \"type\",\n get: function get() {\n return 'inverse-exact';\n }\n }, {\n key: \"multiRegex\",\n get: function get() {\n return /^!\"(.*)\"$/;\n }\n }, {\n key: \"singleRegex\",\n get: function get() {\n return /^!(.*)$/;\n }\n }]);\n\n return InverseExactMatch;\n}(BaseMatch); // Token: ^file\n\n\nvar PrefixExactMatch = /*#__PURE__*/function (_BaseMatch3) {\n _inherits(PrefixExactMatch, _BaseMatch3);\n\n var _super3 = _createSuper(PrefixExactMatch);\n\n function PrefixExactMatch(pattern) {\n _classCallCheck(this, PrefixExactMatch);\n\n return _super3.call(this, pattern);\n }\n\n _createClass(PrefixExactMatch, [{\n key: \"search\",\n value: function search(text) {\n var isMatch = text.startsWith(this.pattern);\n return {\n isMatch: isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n };\n }\n }], [{\n key: \"type\",\n get: function get() {\n return 'prefix-exact';\n }\n }, {\n key: \"multiRegex\",\n get: function get() {\n return /^\\^\"(.*)\"$/;\n }\n }, {\n key: \"singleRegex\",\n get: function get() {\n return /^\\^(.*)$/;\n }\n }]);\n\n return PrefixExactMatch;\n}(BaseMatch); // Token: !^fire\n\n\nvar InversePrefixExactMatch = /*#__PURE__*/function (_BaseMatch4) {\n _inherits(InversePrefixExactMatch, _BaseMatch4);\n\n var _super4 = _createSuper(InversePrefixExactMatch);\n\n function InversePrefixExactMatch(pattern) {\n _classCallCheck(this, InversePrefixExactMatch);\n\n return _super4.call(this, pattern);\n }\n\n _createClass(InversePrefixExactMatch, [{\n key: \"search\",\n value: function search(text) {\n var isMatch = !text.startsWith(this.pattern);\n return {\n isMatch: isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n };\n }\n }], [{\n key: \"type\",\n get: function get() {\n return 'inverse-prefix-exact';\n }\n }, {\n key: \"multiRegex\",\n get: function get() {\n return /^!\\^\"(.*)\"$/;\n }\n }, {\n key: \"singleRegex\",\n get: function get() {\n return /^!\\^(.*)$/;\n }\n }]);\n\n return InversePrefixExactMatch;\n}(BaseMatch); // Token: .file$\n\n\nvar SuffixExactMatch = /*#__PURE__*/function (_BaseMatch5) {\n _inherits(SuffixExactMatch, _BaseMatch5);\n\n var _super5 = _createSuper(SuffixExactMatch);\n\n function SuffixExactMatch(pattern) {\n _classCallCheck(this, SuffixExactMatch);\n\n return _super5.call(this, pattern);\n }\n\n _createClass(SuffixExactMatch, [{\n key: \"search\",\n value: function search(text) {\n var isMatch = text.endsWith(this.pattern);\n return {\n isMatch: isMatch,\n score: isMatch ? 0 : 1,\n indices: [text.length - this.pattern.length, text.length - 1]\n };\n }\n }], [{\n key: \"type\",\n get: function get() {\n return 'suffix-exact';\n }\n }, {\n key: \"multiRegex\",\n get: function get() {\n return /^\"(.*)\"\\$$/;\n }\n }, {\n key: \"singleRegex\",\n get: function get() {\n return /^(.*)\\$$/;\n }\n }]);\n\n return SuffixExactMatch;\n}(BaseMatch); // Token: !.file$\n\n\nvar InverseSuffixExactMatch = /*#__PURE__*/function (_BaseMatch6) {\n _inherits(InverseSuffixExactMatch, _BaseMatch6);\n\n var _super6 = _createSuper(InverseSuffixExactMatch);\n\n function InverseSuffixExactMatch(pattern) {\n _classCallCheck(this, InverseSuffixExactMatch);\n\n return _super6.call(this, pattern);\n }\n\n _createClass(InverseSuffixExactMatch, [{\n key: \"search\",\n value: function search(text) {\n var isMatch = !text.endsWith(this.pattern);\n return {\n isMatch: isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n };\n }\n }], [{\n key: \"type\",\n get: function get() {\n return 'inverse-suffix-exact';\n }\n }, {\n key: \"multiRegex\",\n get: function get() {\n return /^!\"(.*)\"\\$$/;\n }\n }, {\n key: \"singleRegex\",\n get: function get() {\n return /^!(.*)\\$$/;\n }\n }]);\n\n return InverseSuffixExactMatch;\n}(BaseMatch);\n\nvar FuzzyMatch = /*#__PURE__*/function (_BaseMatch7) {\n _inherits(FuzzyMatch, _BaseMatch7);\n\n var _super7 = _createSuper(FuzzyMatch);\n\n function FuzzyMatch(pattern) {\n var _this6;\n\n var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref8$location = _ref8.location,\n location = _ref8$location === void 0 ? Config.location : _ref8$location,\n _ref8$threshold = _ref8.threshold,\n threshold = _ref8$threshold === void 0 ? Config.threshold : _ref8$threshold,\n _ref8$distance = _ref8.distance,\n distance = _ref8$distance === void 0 ? Config.distance : _ref8$distance,\n _ref8$includeMatches = _ref8.includeMatches,\n includeMatches = _ref8$includeMatches === void 0 ? Config.includeMatches : _ref8$includeMatches,\n _ref8$findAllMatches = _ref8.findAllMatches,\n findAllMatches = _ref8$findAllMatches === void 0 ? Config.findAllMatches : _ref8$findAllMatches,\n _ref8$minMatchCharLen = _ref8.minMatchCharLength,\n minMatchCharLength = _ref8$minMatchCharLen === void 0 ? Config.minMatchCharLength : _ref8$minMatchCharLen,\n _ref8$isCaseSensitive = _ref8.isCaseSensitive,\n isCaseSensitive = _ref8$isCaseSensitive === void 0 ? Config.isCaseSensitive : _ref8$isCaseSensitive,\n _ref8$ignoreLocation = _ref8.ignoreLocation,\n ignoreLocation = _ref8$ignoreLocation === void 0 ? Config.ignoreLocation : _ref8$ignoreLocation;\n\n _classCallCheck(this, FuzzyMatch);\n\n _this6 = _super7.call(this, pattern);\n _this6._bitapSearch = new BitapSearch(pattern, {\n location: location,\n threshold: threshold,\n distance: distance,\n includeMatches: includeMatches,\n findAllMatches: findAllMatches,\n minMatchCharLength: minMatchCharLength,\n isCaseSensitive: isCaseSensitive,\n ignoreLocation: ignoreLocation\n });\n return _this6;\n }\n\n _createClass(FuzzyMatch, [{\n key: \"search\",\n value: function search(text) {\n return this._bitapSearch.searchIn(text);\n }\n }], [{\n key: \"type\",\n get: function get() {\n return 'fuzzy';\n }\n }, {\n key: \"multiRegex\",\n get: function get() {\n return /^\"(.*)\"$/;\n }\n }, {\n key: \"singleRegex\",\n get: function get() {\n return /^(.*)$/;\n }\n }]);\n\n return FuzzyMatch;\n}(BaseMatch); // Token: 'file\n\n\nvar IncludeMatch = /*#__PURE__*/function (_BaseMatch8) {\n _inherits(IncludeMatch, _BaseMatch8);\n\n var _super8 = _createSuper(IncludeMatch);\n\n function IncludeMatch(pattern) {\n _classCallCheck(this, IncludeMatch);\n\n return _super8.call(this, pattern);\n }\n\n _createClass(IncludeMatch, [{\n key: \"search\",\n value: function search(text) {\n var location = 0;\n var index;\n var indices = [];\n var patternLen = this.pattern.length; // Get all exact matches\n\n while ((index = text.indexOf(this.pattern, location)) > -1) {\n location = index + patternLen;\n indices.push([index, location - 1]);\n }\n\n var isMatch = !!indices.length;\n return {\n isMatch: isMatch,\n score: isMatch ? 0 : 1,\n indices: indices\n };\n }\n }], [{\n key: \"type\",\n get: function get() {\n return 'include';\n }\n }, {\n key: \"multiRegex\",\n get: function get() {\n return /^'\"(.*)\"$/;\n }\n }, {\n key: \"singleRegex\",\n get: function get() {\n return /^'(.*)$/;\n }\n }]);\n\n return IncludeMatch;\n}(BaseMatch); // ❗Order is important. DO NOT CHANGE.\n\n\nvar searchers = [ExactMatch, IncludeMatch, PrefixExactMatch, InversePrefixExactMatch, InverseSuffixExactMatch, SuffixExactMatch, InverseExactMatch, FuzzyMatch];\nvar searchersLen = searchers.length; // Regex to split by spaces, but keep anything in quotes together\n\nvar SPACE_RE = / +(?=([^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nvar OR_TOKEN = '|'; // Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\n\nfunction parseQuery(pattern) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return pattern.split(OR_TOKEN).map(function (item) {\n var query = item.trim().split(SPACE_RE).filter(function (item) {\n return item && !!item.trim();\n });\n var results = [];\n\n for (var i = 0, len = query.length; i < len; i += 1) {\n var queryItem = query[i]; // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n\n var found = false;\n var idx = -1;\n\n while (!found && ++idx < searchersLen) {\n var searcher = searchers[idx];\n var token = searcher.isMultiMatch(queryItem);\n\n if (token) {\n results.push(new searcher(token, options));\n found = true;\n }\n }\n\n if (found) {\n continue;\n } // 2. Handle single query matches (i.e, once that are *not* quoted)\n\n\n idx = -1;\n\n while (++idx < searchersLen) {\n var _searcher = searchers[idx];\n\n var _token = _searcher.isSingleMatch(queryItem);\n\n if (_token) {\n results.push(new _searcher(_token, options));\n break;\n }\n }\n }\n\n return results;\n });\n} // These extended matchers can return an array of matches, as opposed\n// to a singl match\n\n\nvar MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token | Match type | Description |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript` | fuzzy-match | Items that fuzzy match `jscript` |\n * | `=scheme` | exact-match | Items that are `scheme` |\n * | `'python` | include-match | Items that include `python` |\n * | `!ruby` | inverse-exact-match | Items that do not include `ruby` |\n * | `^java` | prefix-exact-match | Items that start with `java` |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$` | suffix-exact-match | Items that end with `.js` |\n * | `!.go$` | inverse-suffix-exact-match | Items that do not end with `.go` |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\n\nvar ExtendedSearch = /*#__PURE__*/function () {\n function ExtendedSearch(pattern) {\n var _ref9 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref9$isCaseSensitive = _ref9.isCaseSensitive,\n isCaseSensitive = _ref9$isCaseSensitive === void 0 ? Config.isCaseSensitive : _ref9$isCaseSensitive,\n _ref9$includeMatches = _ref9.includeMatches,\n includeMatches = _ref9$includeMatches === void 0 ? Config.includeMatches : _ref9$includeMatches,\n _ref9$minMatchCharLen = _ref9.minMatchCharLength,\n minMatchCharLength = _ref9$minMatchCharLen === void 0 ? Config.minMatchCharLength : _ref9$minMatchCharLen,\n _ref9$ignoreLocation = _ref9.ignoreLocation,\n ignoreLocation = _ref9$ignoreLocation === void 0 ? Config.ignoreLocation : _ref9$ignoreLocation,\n _ref9$findAllMatches = _ref9.findAllMatches,\n findAllMatches = _ref9$findAllMatches === void 0 ? Config.findAllMatches : _ref9$findAllMatches,\n _ref9$location = _ref9.location,\n location = _ref9$location === void 0 ? Config.location : _ref9$location,\n _ref9$threshold = _ref9.threshold,\n threshold = _ref9$threshold === void 0 ? Config.threshold : _ref9$threshold,\n _ref9$distance = _ref9.distance,\n distance = _ref9$distance === void 0 ? Config.distance : _ref9$distance;\n\n _classCallCheck(this, ExtendedSearch);\n\n this.query = null;\n this.options = {\n isCaseSensitive: isCaseSensitive,\n includeMatches: includeMatches,\n minMatchCharLength: minMatchCharLength,\n findAllMatches: findAllMatches,\n ignoreLocation: ignoreLocation,\n location: location,\n threshold: threshold,\n distance: distance\n };\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.query = parseQuery(this.pattern, this.options);\n }\n\n _createClass(ExtendedSearch, [{\n key: \"searchIn\",\n value: function searchIn(text) {\n var query = this.query;\n\n if (!query) {\n return {\n isMatch: false,\n score: 1\n };\n }\n\n var _this$options3 = this.options,\n includeMatches = _this$options3.includeMatches,\n isCaseSensitive = _this$options3.isCaseSensitive;\n text = isCaseSensitive ? text : text.toLowerCase();\n var numMatches = 0;\n var allIndices = [];\n var totalScore = 0; // ORs\n\n for (var i = 0, qLen = query.length; i < qLen; i += 1) {\n var _searchers = query[i]; // Reset indices\n\n allIndices.length = 0;\n numMatches = 0; // ANDs\n\n for (var j = 0, pLen = _searchers.length; j < pLen; j += 1) {\n var searcher = _searchers[j];\n\n var _searcher$search = searcher.search(text),\n isMatch = _searcher$search.isMatch,\n indices = _searcher$search.indices,\n score = _searcher$search.score;\n\n if (isMatch) {\n numMatches += 1;\n totalScore += score;\n\n if (includeMatches) {\n var type = searcher.constructor.type;\n\n if (MultiMatchSet.has(type)) {\n allIndices = [].concat(_toConsumableArray(allIndices), _toConsumableArray(indices));\n } else {\n allIndices.push(indices);\n }\n }\n } else {\n totalScore = 0;\n numMatches = 0;\n allIndices.length = 0;\n break;\n }\n } // OR condition, so if TRUE, return\n\n\n if (numMatches) {\n var result = {\n isMatch: true,\n score: totalScore / numMatches\n };\n\n if (includeMatches) {\n result.indices = allIndices;\n }\n\n return result;\n }\n } // Nothing was matched\n\n\n return {\n isMatch: false,\n score: 1\n };\n }\n }], [{\n key: \"condition\",\n value: function condition(_, options) {\n return options.useExtendedSearch;\n }\n }]);\n\n return ExtendedSearch;\n}();\n\nvar registeredSearchers = [];\n\nfunction register() {\n registeredSearchers.push.apply(registeredSearchers, arguments);\n}\n\nfunction createSearcher(pattern, options) {\n for (var i = 0, len = registeredSearchers.length; i < len; i += 1) {\n var searcherClass = registeredSearchers[i];\n\n if (searcherClass.condition(pattern, options)) {\n return new searcherClass(pattern, options);\n }\n }\n\n return new BitapSearch(pattern, options);\n}\n\nvar LogicalOperator = {\n AND: '$and',\n OR: '$or'\n};\nvar KeyType = {\n PATH: '$path',\n PATTERN: '$val'\n};\n\nvar isExpression = function isExpression(query) {\n return !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n};\n\nvar isPath = function isPath(query) {\n return !!query[KeyType.PATH];\n};\n\nvar isLeaf = function isLeaf(query) {\n return !isArray(query) && isObject(query) && !isExpression(query);\n};\n\nvar convertToExplicit = function convertToExplicit(query) {\n return _defineProperty({}, LogicalOperator.AND, Object.keys(query).map(function (key) {\n return _defineProperty({}, key, query[key]);\n }));\n}; // When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\n\n\nfunction parse(query, options) {\n var _ref12 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref12$auto = _ref12.auto,\n auto = _ref12$auto === void 0 ? true : _ref12$auto;\n\n var next = function next(query) {\n var keys = Object.keys(query);\n var isQueryPath = isPath(query);\n\n if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n return next(convertToExplicit(query));\n }\n\n if (isLeaf(query)) {\n var key = isQueryPath ? query[KeyType.PATH] : keys[0];\n var pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n if (!isString(pattern)) {\n throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key));\n }\n\n var obj = {\n keyId: createKeyId(key),\n pattern: pattern\n };\n\n if (auto) {\n obj.searcher = createSearcher(pattern, options);\n }\n\n return obj;\n }\n\n var node = {\n children: [],\n operator: keys[0]\n };\n keys.forEach(function (key) {\n var value = query[key];\n\n if (isArray(value)) {\n value.forEach(function (item) {\n node.children.push(next(item));\n });\n }\n });\n return node;\n };\n\n if (!isExpression(query)) {\n query = convertToExplicit(query);\n }\n\n return next(query);\n} // Practical scoring function\n\n\nfunction computeScore$1(results, _ref13) {\n var _ref13$ignoreFieldNor = _ref13.ignoreFieldNorm,\n ignoreFieldNorm = _ref13$ignoreFieldNor === void 0 ? Config.ignoreFieldNorm : _ref13$ignoreFieldNor;\n results.forEach(function (result) {\n var totalScore = 1;\n result.matches.forEach(function (_ref14) {\n var key = _ref14.key,\n norm = _ref14.norm,\n score = _ref14.score;\n var weight = key ? key.weight : null;\n totalScore *= Math.pow(score === 0 && weight ? Number.EPSILON : score, (weight || 1) * (ignoreFieldNorm ? 1 : norm));\n });\n result.score = totalScore;\n });\n}\n\nfunction transformMatches(result, data) {\n var matches = result.matches;\n data.matches = [];\n\n if (!isDefined(matches)) {\n return;\n }\n\n matches.forEach(function (match) {\n if (!isDefined(match.indices) || !match.indices.length) {\n return;\n }\n\n var indices = match.indices,\n value = match.value;\n var obj = {\n indices: indices,\n value: value\n };\n\n if (match.key) {\n obj.key = match.key.src;\n }\n\n if (match.idx > -1) {\n obj.refIndex = match.idx;\n }\n\n data.matches.push(obj);\n });\n}\n\nfunction transformScore(result, data) {\n data.score = result.score;\n}\n\nfunction format(results, docs) {\n var _ref15 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref15$includeMatches = _ref15.includeMatches,\n includeMatches = _ref15$includeMatches === void 0 ? Config.includeMatches : _ref15$includeMatches,\n _ref15$includeScore = _ref15.includeScore,\n includeScore = _ref15$includeScore === void 0 ? Config.includeScore : _ref15$includeScore;\n\n var transformers = [];\n if (includeMatches) transformers.push(transformMatches);\n if (includeScore) transformers.push(transformScore);\n return results.map(function (result) {\n var idx = result.idx;\n var data = {\n item: docs[idx],\n refIndex: idx\n };\n\n if (transformers.length) {\n transformers.forEach(function (transformer) {\n transformer(result, data);\n });\n }\n\n return data;\n });\n}\n\nvar Fuse = /*#__PURE__*/function () {\n function Fuse(docs) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var index = arguments.length > 2 ? arguments[2] : undefined;\n\n _classCallCheck(this, Fuse);\n\n this.options = _objectSpread(_objectSpread({}, Config), options);\n\n if (this.options.useExtendedSearch && !true) {\n throw new Error(EXTENDED_SEARCH_UNAVAILABLE);\n }\n\n this._keyStore = new KeyStore(this.options.keys);\n this.setCollection(docs, index);\n }\n\n _createClass(Fuse, [{\n key: \"setCollection\",\n value: function setCollection(docs, index) {\n this._docs = docs;\n\n if (index && !(index instanceof FuseIndex)) {\n throw new Error(INCORRECT_INDEX_TYPE);\n }\n\n this._myIndex = index || createIndex(this.options.keys, this._docs, {\n getFn: this.options.getFn\n });\n }\n }, {\n key: \"add\",\n value: function add(doc) {\n if (!isDefined(doc)) {\n return;\n }\n\n this._docs.push(doc);\n\n this._myIndex.add(doc);\n }\n }, {\n key: \"remove\",\n value: function remove() {\n var predicate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {\n return false;\n };\n var results = [];\n\n for (var i = 0, len = this._docs.length; i < len; i += 1) {\n var doc = this._docs[i];\n\n if (predicate(doc, i)) {\n this.removeAt(i);\n i -= 1;\n len -= 1;\n results.push(doc);\n }\n }\n\n return results;\n }\n }, {\n key: \"removeAt\",\n value: function removeAt(idx) {\n this._docs.splice(idx, 1);\n\n this._myIndex.removeAt(idx);\n }\n }, {\n key: \"getIndex\",\n value: function getIndex() {\n return this._myIndex;\n }\n }, {\n key: \"search\",\n value: function search(query) {\n var _ref16 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref16$limit = _ref16.limit,\n limit = _ref16$limit === void 0 ? -1 : _ref16$limit;\n\n var _this$options4 = this.options,\n includeMatches = _this$options4.includeMatches,\n includeScore = _this$options4.includeScore,\n shouldSort = _this$options4.shouldSort,\n sortFn = _this$options4.sortFn,\n ignoreFieldNorm = _this$options4.ignoreFieldNorm;\n var results = isString(query) ? isString(this._docs[0]) ? this._searchStringList(query) : this._searchObjectList(query) : this._searchLogical(query);\n computeScore$1(results, {\n ignoreFieldNorm: ignoreFieldNorm\n });\n\n if (shouldSort) {\n results.sort(sortFn);\n }\n\n if (isNumber(limit) && limit > -1) {\n results = results.slice(0, limit);\n }\n\n return format(results, this._docs, {\n includeMatches: includeMatches,\n includeScore: includeScore\n });\n }\n }, {\n key: \"_searchStringList\",\n value: function _searchStringList(query) {\n var searcher = createSearcher(query, this.options);\n var records = this._myIndex.records;\n var results = []; // Iterate over every string in the index\n\n records.forEach(function (_ref17) {\n var text = _ref17.v,\n idx = _ref17.i,\n norm = _ref17.n;\n\n if (!isDefined(text)) {\n return;\n }\n\n var _searcher$searchIn = searcher.searchIn(text),\n isMatch = _searcher$searchIn.isMatch,\n score = _searcher$searchIn.score,\n indices = _searcher$searchIn.indices;\n\n if (isMatch) {\n results.push({\n item: text,\n idx: idx,\n matches: [{\n score: score,\n value: text,\n norm: norm,\n indices: indices\n }]\n });\n }\n });\n return results;\n }\n }, {\n key: \"_searchLogical\",\n value: function _searchLogical(query) {\n var _this7 = this;\n\n var expression = parse(query, this.options);\n\n var evaluate = function evaluate(node, item, idx) {\n if (!node.children) {\n var keyId = node.keyId,\n searcher = node.searcher;\n\n var matches = _this7._findMatches({\n key: _this7._keyStore.get(keyId),\n value: _this7._myIndex.getValueForItemAtKeyId(item, keyId),\n searcher: searcher\n });\n\n if (matches && matches.length) {\n return [{\n idx: idx,\n item: item,\n matches: matches\n }];\n }\n\n return [];\n }\n /*eslint indent: [2, 2, {\"SwitchCase\": 1}]*/\n\n\n switch (node.operator) {\n case LogicalOperator.AND:\n {\n var res = [];\n\n for (var i = 0, len = node.children.length; i < len; i += 1) {\n var child = node.children[i];\n var result = evaluate(child, item, idx);\n\n if (result.length) {\n res.push.apply(res, _toConsumableArray(result));\n } else {\n return [];\n }\n }\n\n return res;\n }\n\n case LogicalOperator.OR:\n {\n var _res = [];\n\n for (var _i2 = 0, _len = node.children.length; _i2 < _len; _i2 += 1) {\n var _child = node.children[_i2];\n\n var _result2 = evaluate(_child, item, idx);\n\n if (_result2.length) {\n _res.push.apply(_res, _toConsumableArray(_result2));\n\n break;\n }\n }\n\n return _res;\n }\n }\n };\n\n var records = this._myIndex.records;\n var resultMap = {};\n var results = [];\n records.forEach(function (_ref18) {\n var item = _ref18.$,\n idx = _ref18.i;\n\n if (isDefined(item)) {\n var expResults = evaluate(expression, item, idx);\n\n if (expResults.length) {\n // Dedupe when adding\n if (!resultMap[idx]) {\n resultMap[idx] = {\n idx: idx,\n item: item,\n matches: []\n };\n results.push(resultMap[idx]);\n }\n\n expResults.forEach(function (_ref19) {\n var _resultMap$idx$matche;\n\n var matches = _ref19.matches;\n\n (_resultMap$idx$matche = resultMap[idx].matches).push.apply(_resultMap$idx$matche, _toConsumableArray(matches));\n });\n }\n }\n });\n return results;\n }\n }, {\n key: \"_searchObjectList\",\n value: function _searchObjectList(query) {\n var _this8 = this;\n\n var searcher = createSearcher(query, this.options);\n var _this$_myIndex = this._myIndex,\n keys = _this$_myIndex.keys,\n records = _this$_myIndex.records;\n var results = []; // List is Array<Object>\n\n records.forEach(function (_ref20) {\n var item = _ref20.$,\n idx = _ref20.i;\n\n if (!isDefined(item)) {\n return;\n }\n\n var matches = []; // Iterate over every key (i.e, path), and fetch the value at that key\n\n keys.forEach(function (key, keyIndex) {\n matches.push.apply(matches, _toConsumableArray(_this8._findMatches({\n key: key,\n value: item[keyIndex],\n searcher: searcher\n })));\n });\n\n if (matches.length) {\n results.push({\n idx: idx,\n item: item,\n matches: matches\n });\n }\n });\n return results;\n }\n }, {\n key: \"_findMatches\",\n value: function _findMatches(_ref21) {\n var key = _ref21.key,\n value = _ref21.value,\n searcher = _ref21.searcher;\n\n if (!isDefined(value)) {\n return [];\n }\n\n var matches = [];\n\n if (isArray(value)) {\n value.forEach(function (_ref22) {\n var text = _ref22.v,\n idx = _ref22.i,\n norm = _ref22.n;\n\n if (!isDefined(text)) {\n return;\n }\n\n var _searcher$searchIn2 = searcher.searchIn(text),\n isMatch = _searcher$searchIn2.isMatch,\n score = _searcher$searchIn2.score,\n indices = _searcher$searchIn2.indices;\n\n if (isMatch) {\n matches.push({\n score: score,\n key: key,\n value: text,\n idx: idx,\n norm: norm,\n indices: indices\n });\n }\n });\n } else {\n var text = value.v,\n _norm = value.n;\n\n var _searcher$searchIn3 = searcher.searchIn(text),\n isMatch = _searcher$searchIn3.isMatch,\n score = _searcher$searchIn3.score,\n indices = _searcher$searchIn3.indices;\n\n if (isMatch) {\n matches.push({\n score: score,\n key: key,\n value: text,\n norm: _norm,\n indices: indices\n });\n }\n }\n\n return matches;\n }\n }]);\n\n return Fuse;\n}();\n\nFuse.version = '6.4.6';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n{\n Fuse.parseQuery = parse;\n}\n{\n register(ExtendedSearch);\n}\nexport default Fuse;","import React from 'react';\nimport FuseHighlight from './FuseHighlight';\nimport { useFuse } from './useFuse';\nimport { SearchIcon, XIcon } from '@heroicons/react/solid';\nimport { Transition } from '@headlessui/react'\nimport {COUNTRY_ID} from 'gatsby-env-variables'\nconst siteIndex = require(`../../../static/data/site_index.json`)\n\nconst Search = () => {\n\n const { hits, query, onSearch, setQuery } = useFuse(siteIndex, {\n matchAllOnEmptyQuery: false,\n shouldSort: true,\n includeMatches: true,\n threshold: 0.3, // At what point does the match algorithm give up. A threshold of 0.0 requires a perfect match (of both letters and location), a threshold of 1.0 would match anything.\n location: 0, // Determines approximately where in the text is the pattern expected to be found\n distance: 50, // Determines how close the match must be to the fuzzy location (specified by location). An exact letter match which is distance characters away from the fuzzy location would score as a complete mismatch. A distance of 0 requires the match be at the exact location specified. A distance of 1000 would require a perfect match to be within 800 characters of the location to be found using a threshold of 0.8\n maxPatternLength: 12,\n minMatchCharLength: 2,\n keys: [\"title\", \"title_vernacular\", \"id\"]\n });\n\n return (\n<div>\n\n<label htmlFor=\"search\" className=\"sr-only\">Search</label>\n<div className=\"relative\">\n <div className=\"absolute z-40 inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <SearchIcon className=\"h-5 w-5 text-gray-400\" aria-hidden=\"true\" />\n </div>\n <input id=\"search\" \n className=\"relative z-30 block w-full bg-white py-2 pl-10 pr-3 border border-transparent rounded-md leading-5 text-gray-900 placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-600 focus:ring-white focus:border-white sm:text-sm\" \n placeholder=\"Search\" \n type=\"search\" \n autoComplete=\"off\" \n onKeyUp={onSearch} \n onChange={onSearch}\n name=\"search\" />\n </div>\n\n<Transition.Root show={(query.length !== 0)} as=\"div\">\n<div className=\"fixed z-20 inset-0 overflow-y-auto\">\n <div className=\"flex justify-center pt-4 px-4 pb-20 mt-10 text-center sm:block sm:p-0\">\n <Transition.Child\n as=\"div\"\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n ></Transition.Child>\n\n\n <div className=\"inline-block bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full sm:p-6\">\n <div className=\"hidden sm:block absolute top-0 right-0 pt-4 pr-4\">\n <button\n type=\"button\"\n className=\"bg-white rounded-md text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500\"\n >\n <span className=\"sr-only\">Close</span>\n <XIcon className=\"h-6 w-6\" aria-hidden=\"true\" onClick={() => setQuery('')} />\n </button>\n </div>\n <div className=\"sm:flex sm:items-start\">\n\n </div>\n <div className=\"mt-5 sm:mt-4 sm:flex sm:flex-row-reverse\">\n <ol>\n {hits.slice(0,20).map(hit => (\n <li key={hit.refIndex}>\n <a href={`/${hit.item.type}/${hit.item.id}`}>{hit.item.tt} | {hit.item.tv} <b>{hit.item.type}</b></a>\n </li>\n ))}\n </ol>\n </div>\n </div>\n </div>\n </div>\n <div className=\"fixed z-10 inset-0 bg-black opacity-30\"></div>\n </Transition.Root>\n\n</div>);\n};\n\nexport default Search","import React, {Fragment, useState } from \"react\"\nimport {Disclosure, Menu, Transition} from \"@headlessui/react\";\nimport {MenuIcon, TranslateIcon, XIcon} from \"@heroicons/react/outline\";\nimport {useTranslation, withTranslation} from 'react-i18next'\nimport { I18N_CODES, TITLE, COLOR_PRIMARY, COLOR_SECONDARY } from \"gatsby-env-variables\"\nimport Search from \"../components/search/search\"\nconst navigation = ['Languages', 'Study Bible', 'About']\n\nfunction classNames(...classes) {\n return classes.filter(Boolean).join(' ')\n}\n\nconst Header = (props) => {\n\n const { t, i18n } = useTranslation()\n const [values, setValues] = useState({\n language: 'en'\n });\n\n let languages = []\n I18N_CODES.forEach(iso => {\n languages.push({iso: iso, name: t(`languages.translations.`+ iso)})\n })\n\n function changei18n(event) {\n i18n.changeLanguage(event.target.dataset.iso)\n setValues(oldValues => ({...oldValues, [event.target.name]: event.target.value,}));\n }\n\n return (\n <Disclosure as=\"nav\" className={`bg-gradient-to-r from-primary-400 to-secondary-500 border-b border-gray-300 border-opacity-25 lg:border-none`}>\n {({ open }) => (\n <>\n <div className=\"max-w-7xl mx-auto px-2 sm:px-4 lg:px-8\">\n <div className=\"relative h-16 flex items-center justify-between lg:border-b lg:border-gray-400 lg:border-opacity-25\">\n <div className=\"px-2 flex items-center lg:px-0\">\n <a href='/' className=\"flex-shrink-0 text-white text-lg font-bold\">\n { TITLE }\n </a>\n <div className=\"hidden lg:block lg:ml-10\">\n <div className=\"flex space-x-4\">\n <a className=\"text-white hover:bg-gray-500 hover:bg-opacity-75 rounded-md py-2 px-3 text-sm font-medium\"\n href=\"/languages\">{t('languages.title')}</a>\n <a className=\"text-white hover:bg-gray-500 hover:bg-opacity-75 rounded-md py-2 px-3 text-sm font-medium\"\n href=\"http://inscript.org\">{t('bibles.types.study')}</a>\n <a className=\"text-white hover:bg-gray-500 hover:bg-opacity-75 rounded-md py-2 px-3 text-sm font-medium\"\n href=\"/about\">{t('about.title')}</a>\n </div>\n </div>\n </div>\n <div className=\"flex-1 px-2 flex justify-center lg:ml-6 lg:justify-end\">\n <div className=\"max-w-lg w-full lg:max-w-xs\">\n {/* <Search /> */}\n </div>\n </div>\n <div className=\"flex lg:hidden\">\n {/* Mobile menu button */}\n <Disclosure.Button className=\"bg-gray-100 p-2 rounded-md inline-flex items-center justify-center text-gray-600 hover:text-white hover:bg-gray-500 hover:bg-opacity-75 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-600 focus:ring-white\">\n <span className=\"sr-only\">Open main menu</span>\n {open ? (\n <XIcon className=\"block h-6 w-6\" aria-hidden=\"true\" />\n ) : (\n <MenuIcon className=\"block h-6 w-6\" aria-hidden=\"true\" />\n )}\n </Disclosure.Button>\n </div>\n <div className=\"hidden lg:block lg:ml-4\">\n <div className=\"flex items-center\">\n <Menu as=\"div\" className=\"ml-3 relative flex-shrink-0\">\n <div>\n <Menu.Button className=\"rounded-full flex text-sm text-white focus:text-gray-600\">\n <span className=\"sr-only\">Open user menu</span>\n <TranslateIcon className=\"h-6 w-6\" aria-hidden=\"true\" />\n </Menu.Button>\n </div>\n <Transition\n as={Fragment}\n enter=\"transition ease-out duration-100\"\n enterFrom=\"transform opacity-0 scale-95\"\n enterTo=\"transform opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"transform opacity-100 scale-100\"\n leaveTo=\"transform opacity-0 scale-95\"\n >\n <Menu.Items className=\"origin-top-right absolute right-0 mt-2 w-48 rounded-md shadow-lg py-1 bg-white ring-1 ring-black ring-opacity-5 focus:outline-none z-30\">\n {languages.map((lng) => (\n <Menu.Item key={lng.iso}>\n {({ active }) => (\n <span\n data-iso={lng.iso}\n onClick={changei18n}\n className={classNames(\n active ? 'bg-gray-100' : '',\n 'block py-2 px-4 text-sm text-gray-700'\n )}>{lng.name}</span>\n )}\n </Menu.Item>\n ))}\n </Menu.Items>\n </Transition>\n </Menu>\n </div>\n </div>\n </div>\n </div>\n\n <Disclosure.Panel className=\"lg:hidden\">\n <div className=\"px-2 pt-2 pb-3 space-y-1\">\n <a className=\"text-white block rounded-md py-2 px-3 text-base font-medium\" href=\"/languages\">{t('languages.title')}</a>\n <a className=\"text-white block rounded-md py-2 px-3 text-base font-medium\" href=\"http://inscript.org\">{t('bibles.types.study')}</a>\n <a className=\"text-white block rounded-md py-2 px-3 text-base font-medium\" href=\"/about\">{t('about.title')}</a>\n </div>\n <div className=\"pt-4 pb-3 border-t\">\n <div className=\"mt-3 px-2 space-y-1\">\n {languages.map((lng) => (\n <div key={lng.iso}>\n <a className=\"block rounded-md py-2 px-3 text-base font-medium text-white hover:bg-gray-500 hover:bg-opacity-75\">\n {lng.name}\n </a>\n </div>\n ))}\n </div>\n </div>\n </Disclosure.Panel>\n </>\n )}\n </Disclosure>\n )\n}\n\nexport default withTranslation()(Header)","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }, this.options));\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\n\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\n\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\n\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\n\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\n\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\n\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\n\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\n\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\n\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\n\nvar isIE10 = typeof window !== 'undefined' && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ResourceStore).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n return getPath(this.data, path);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread({}, pack, resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread({}, {}, this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Translator).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS;\n\n if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n var m = key.match(this.interpolator.nestingRegexp);\n\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n return namespace + nsSeparator + key;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, options) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread({}, options, {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread({}, options, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k, fallbackValue) {\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if (usedKey && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread({}, options, {\n interpolation: _objectSpread({}, this.options.interpolation, options.interpolation)\n }));\n var skipOnVariables = options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var nestBef;\n\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread({}, this.options.interpolation.defaultVariables, data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n return null;\n }\n\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsContextHandling = options.context !== undefined && typeof options.context === 'string' && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKey = key;\n var finalKeys = [finalKey];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count);\n if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n if (needsContextHandling) finalKeys.push(finalKey += \"\".concat(_this4.options.contextSeparator).concat(options.context));\n if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n\n return false;\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.whitelist = this.options.supportedLngs || false;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isWhitelisted\",\n value: function isWhitelisted(code) {\n this.logger.deprecate('languageUtils.isWhitelisted', 'function \"isWhitelisted\" will be renamed to \"isSupportedCode\" in the next major - please make sure to rename it\\'s usage asap.');\n return this.isSupportedCode(code);\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'kk', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var rule = this.getRule(code);\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n return this.getSuffixes(code).map(function (suffix) {\n return key + suffix;\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n\n var rule = this.getRule(code);\n\n if (!rule) {\n return [];\n }\n\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var _this2 = this;\n\n var rule = this.getRule(code);\n\n if (rule) {\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }]);\n\n return PluralResolver;\n}();\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, options);\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n\n while (match = todo.regex.exec(str)) {\n value = handleFormat(match[1].trim());\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n str = str.replace(match[0], todo.safeValue(value));\n todo.regex.lastIndex = 0;\n replaces++;\n\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread({}, inheritedOptions, clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].includes(this.formatSeparator) && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, options);\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction remove(arr, what) {\n var found = arr.indexOf(what);\n\n while (found !== -1) {\n arr.splice(found, 1);\n found = arr.indexOf(what);\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Connector).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = [];\n var pending = [];\n var toLoadLanguages = [];\n var toLoadNamespaces = [];\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ;else if (_this2.state[name] === 1) {\n if (pending.indexOf(name) < 0) pending.push(name);\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending.indexOf(name) < 0) pending.push(name);\n if (toLoad.indexOf(name) < 0) toLoad.push(name);\n if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n }\n });\n if (!hasAllNamespaces) toLoadLanguages.push(lng);\n });\n\n if (toLoad.length || pending.length) {\n this.queue.push({\n pending: pending,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: toLoad,\n pending: pending,\n toLoadLanguages: toLoadLanguages,\n toLoadNamespaces: toLoadNamespaces\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n remove(q.pending, name);\n if (err) q.errors.push(err);\n\n if (q.pending.length === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = [];\n\n if (q.loaded[l].length) {\n q.loaded[l].forEach(function (ns) {\n if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n return this.backend[fcName](lng, ns, function (err, data) {\n if (err && data && tried < 5) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread({}, options, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n whitelist: false,\n nonExplicitWhitelist: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: false\n }\n };\n}\n\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.whitelist) {\n if (options.whitelist && options.whitelist.indexOf('cimode') < 0) {\n options.whitelist = options.whitelist.concat(['cimode']);\n }\n\n options.supportedLngs = options.whitelist;\n }\n\n if (options.nonExplicitWhitelist) {\n options.nonExplicitSupportedLngs = options.nonExplicitWhitelist;\n }\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction noop() {}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(I18n).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (options.whitelist && !options.supportedLngs) {\n this.logger.deprecate('whitelist', 'option \"whitelist\" will be renamed to \"supportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n if (options.nonExplicitWhitelist && !options.nonExplicitSupportedLngs) {\n this.logger.deprecate('whitelist', 'options \"nonExplicitWhitelist\" will be renamed to \"nonExplicitSupportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n this.options = _objectSpread({}, get(), this.options, transformOptions(options));\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n return _this2;\n };\n });\n var deferred = defer();\n\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n };\n\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, usedCallback);\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var done = function done(err, l) {\n if (l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n return _this5.t(key, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"createInstance\",\n value: function createInstance() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread({}, this.options, options, {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\nvar i18next = new I18n();\nexport default i18next;","import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\n\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\n\nfunction addQueryString(url, params) {\n if (params && _typeof(params) === 'object') {\n var queryString = '',\n e = encodeURIComponent; // Must encode data\n\n for (var paramName in params) {\n queryString += '&' + e(paramName) + '=' + e(params[paramName]);\n }\n\n if (!queryString) {\n return url;\n }\n\n url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n }\n\n return url;\n} // https://gist.github.com/Xeoncross/7663273\n\n\nfunction ajax(url, options, callback, data, cache) {\n if (data && _typeof(data) === 'object') {\n if (!cache) {\n data['_t'] = new Date();\n } // URL encoded form data must be in querystring format\n\n\n data = addQueryString('', data).slice(1);\n }\n\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n\n try {\n var x;\n\n if (XMLHttpRequest) {\n x = new XMLHttpRequest();\n } else {\n x = new ActiveXObject('MSXML2.XMLHTTP.3.0');\n }\n\n x.open(data ? 'POST' : 'GET', url, 1);\n\n if (!options.crossDomain) {\n x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n x.withCredentials = !!options.withCredentials;\n\n if (data) {\n x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n }\n\n if (x.overrideMimeType) {\n x.overrideMimeType(\"application/json\");\n }\n\n var h = options.customHeaders;\n h = typeof h === 'function' ? h() : h;\n\n if (h) {\n for (var i in h) {\n x.setRequestHeader(i, h[i]);\n }\n }\n\n x.onreadystatechange = function () {\n x.readyState > 3 && callback && callback(x.responseText, x);\n };\n\n x.send(data);\n } catch (e) {\n console && console.log(e);\n }\n}\n\nfunction getDefaults() {\n return {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n addPath: '/locales/add/{{lng}}/{{ns}}',\n allowMultiLoading: false,\n parse: JSON.parse,\n parsePayload: function parsePayload(namespace, key, fallbackValue) {\n return _defineProperty({}, key, fallbackValue || '');\n },\n crossDomain: false,\n ajax: ajax\n };\n}\n\nvar Backend = /*#__PURE__*/function () {\n function Backend(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Backend);\n\n this.init(services, options);\n this.type = 'backend';\n }\n\n _createClass(Backend, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n }\n }, {\n key: \"readMulti\",\n value: function readMulti(languages, namespaces, callback) {\n var loadPath = this.options.loadPath;\n\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath(languages, namespaces);\n }\n\n var url = this.services.interpolator.interpolate(loadPath, {\n lng: languages.join('+'),\n ns: namespaces.join('+')\n });\n this.loadUrl(url, callback);\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n var loadPath = this.options.loadPath;\n\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath([language], [namespace]);\n }\n\n var url = this.services.interpolator.interpolate(loadPath, {\n lng: language,\n ns: namespace\n });\n this.loadUrl(url, callback);\n }\n }, {\n key: \"loadUrl\",\n value: function loadUrl(url, callback) {\n var _this = this;\n\n this.options.ajax(url, this.options, function (data, xhr) {\n if (xhr.status >= 500 && xhr.status < 600) return callback('failed loading ' + url, true\n /* retry */\n );\n if (xhr.status >= 400 && xhr.status < 500) return callback('failed loading ' + url, false\n /* no retry */\n );\n var ret, err;\n\n try {\n ret = _this.options.parse(data, url);\n } catch (e) {\n err = 'failed parsing ' + url + ' to json';\n }\n\n if (err) return callback(err, false);\n callback(null, ret);\n });\n }\n }, {\n key: \"create\",\n value: function create(languages, namespace, key, fallbackValue) {\n var _this2 = this;\n\n if (typeof languages === 'string') languages = [languages];\n var payload = this.options.parsePayload(namespace, key, fallbackValue);\n languages.forEach(function (lng) {\n var url = _this2.services.interpolator.interpolate(_this2.options.addPath, {\n lng: lng,\n ns: namespace\n });\n\n _this2.options.ajax(url, _this2.options, function (data, xhr) {//const statusCode = xhr.status.toString();\n // TODO: if statusCode === 4xx do log\n }, payload);\n });\n }\n }]);\n\n return Backend;\n}();\n\nBackend.type = 'backend';\nexport default Backend;","import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\n\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n} // eslint-disable-next-line no-control-regex\n\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\nvar serializeCookie = function serializeCookie(name, val, options) {\n var opt = options || {};\n opt.path = opt.path || '/';\n var value = encodeURIComponent(val);\n var str = name + '=' + value;\n\n if (opt.maxAge > 0) {\n var maxAge = opt.maxAge - 0;\n if (isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) str += '; HttpOnly';\n if (opt.secure) str += '; Secure';\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n\n case 'lax':\n str += '; SameSite=Lax';\n break;\n\n case 'strict':\n str += '; SameSite=Strict';\n break;\n\n case 'none':\n str += '; SameSite=None';\n break;\n\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n};\n\nvar cookie = {\n create: function create(name, value, minutes, domain) {\n var cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: '/',\n sameSite: 'strict'\n };\n\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);\n },\n read: function read(name) {\n var nameEQ = name + '=';\n var ca = document.cookie.split(';');\n\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n\n return null;\n },\n remove: function remove(name) {\n this.create(name, '', -1);\n }\n};\nvar cookie$1 = {\n name: 'cookie',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupCookie && typeof document !== 'undefined') {\n var c = cookie.read(options.lookupCookie);\n if (c) found = c;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupCookie && typeof document !== 'undefined') {\n cookie.create(options.lookupCookie, lng, options.cookieMinutes, options.cookieDomain, options.cookieOptions);\n }\n }\n};\nvar querystring = {\n name: 'querystring',\n lookup: function lookup(options) {\n var found;\n\n if (typeof window !== 'undefined') {\n var query = window.location.search.substring(1);\n var params = query.split('&');\n\n for (var i = 0; i < params.length; i++) {\n var pos = params[i].indexOf('=');\n\n if (pos > 0) {\n var key = params[i].substring(0, pos);\n\n if (key === options.lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n\n return found;\n }\n};\nvar hasLocalStorageSupport = null;\n\nvar localStorageAvailable = function localStorageAvailable() {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n\n try {\n hasLocalStorageSupport = window !== 'undefined' && window.localStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.localStorage.setItem(testKey, 'foo');\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n\n return hasLocalStorageSupport;\n};\n\nvar localStorage = {\n name: 'localStorage',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupLocalStorage && localStorageAvailable()) {\n var lng = window.localStorage.getItem(options.lookupLocalStorage);\n if (lng) found = lng;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(options.lookupLocalStorage, lng);\n }\n }\n};\nvar hasSessionStorageSupport = null;\n\nvar sessionStorageAvailable = function sessionStorageAvailable() {\n if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n\n try {\n hasSessionStorageSupport = window !== 'undefined' && window.sessionStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.sessionStorage.setItem(testKey, 'foo');\n window.sessionStorage.removeItem(testKey);\n } catch (e) {\n hasSessionStorageSupport = false;\n }\n\n return hasSessionStorageSupport;\n};\n\nvar sessionStorage = {\n name: 'sessionStorage',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n var lng = window.sessionStorage.getItem(options.lookupSessionStorage);\n if (lng) found = lng;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n window.sessionStorage.setItem(options.lookupSessionStorage, lng);\n }\n }\n};\nvar navigator$1 = {\n name: 'navigator',\n lookup: function lookup(options) {\n var found = [];\n\n if (typeof navigator !== 'undefined') {\n if (navigator.languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for (var i = 0; i < navigator.languages.length; i++) {\n found.push(navigator.languages[i]);\n }\n }\n\n if (navigator.userLanguage) {\n found.push(navigator.userLanguage);\n }\n\n if (navigator.language) {\n found.push(navigator.language);\n }\n }\n\n return found.length > 0 ? found : undefined;\n }\n};\nvar htmlTag = {\n name: 'htmlTag',\n lookup: function lookup(options) {\n var found;\n var htmlTag = options.htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n\n if (htmlTag && typeof htmlTag.getAttribute === 'function') {\n found = htmlTag.getAttribute('lang');\n }\n\n return found;\n }\n};\nvar path = {\n name: 'path',\n lookup: function lookup(options) {\n var found;\n\n if (typeof window !== 'undefined') {\n var language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n\n if (language instanceof Array) {\n if (typeof options.lookupFromPathIndex === 'number') {\n if (typeof language[options.lookupFromPathIndex] !== 'string') {\n return undefined;\n }\n\n found = language[options.lookupFromPathIndex].replace('/', '');\n } else {\n found = language[0].replace('/', '');\n }\n }\n }\n\n return found;\n }\n};\nvar subdomain = {\n name: 'subdomain',\n lookup: function lookup(options) {\n var found;\n\n if (typeof window !== 'undefined') {\n var language = window.location.href.match(/(?:http[s]*\\:\\/\\/)*(.*?)\\.(?=[^\\/]*\\..{2,5})/gi);\n\n if (language instanceof Array) {\n if (typeof options.lookupFromSubdomainIndex === 'number') {\n found = language[options.lookupFromSubdomainIndex].replace('http://', '').replace('https://', '').replace('.', '');\n } else {\n found = language[0].replace('http://', '').replace('https://', '').replace('.', '');\n }\n }\n }\n\n return found;\n }\n};\n\nfunction getDefaults() {\n return {\n order: ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'],\n lookupQuerystring: 'lng',\n lookupCookie: 'i18next',\n lookupLocalStorage: 'i18nextLng',\n lookupSessionStorage: 'i18nextLng',\n // cache user language\n caches: ['localStorage'],\n excludeCacheFor: ['cimode'] //cookieMinutes: 10,\n //cookieDomain: 'myDomain'\n\n };\n}\n\nvar Browser = /*#__PURE__*/function () {\n function Browser(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Browser);\n\n this.type = 'languageDetector';\n this.detectors = {};\n this.init(services, options);\n }\n\n _createClass(Browser, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults()); // backwards compatibility\n\n if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n this.i18nOptions = i18nOptions;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(localStorage);\n this.addDetector(sessionStorage);\n this.addDetector(navigator$1);\n this.addDetector(htmlTag);\n this.addDetector(path);\n this.addDetector(subdomain);\n }\n }, {\n key: \"addDetector\",\n value: function addDetector(detector) {\n this.detectors[detector.name] = detector;\n }\n }, {\n key: \"detect\",\n value: function detect(detectionOrder) {\n var _this = this;\n\n if (!detectionOrder) detectionOrder = this.options.order;\n var detected = [];\n detectionOrder.forEach(function (detectorName) {\n if (_this.detectors[detectorName]) {\n var lookup = _this.detectors[detectorName].lookup(_this.options);\n\n if (lookup && typeof lookup === 'string') lookup = [lookup];\n if (lookup) detected = detected.concat(lookup);\n }\n });\n if (this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n\n return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n }\n }, {\n key: \"cacheUserLanguage\",\n value: function cacheUserLanguage(lng, caches) {\n var _this2 = this;\n\n if (!caches) caches = this.options.caches;\n if (!caches) return;\n if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n caches.forEach(function (cacheName) {\n if (_this2.detectors[cacheName]) _this2.detectors[cacheName].cacheUserLanguage(lng, _this2.options);\n });\n }\n }]);\n\n return Browser;\n}();\n\nBrowser.type = 'languageDetector';\nexport default Browser;","import i18n from 'i18next';\nimport Backend from \"i18next-xhr-backend\"\nimport LanguageDetector from 'i18next-browser-languagedetector'\nimport { initReactI18next } from \"react-i18next\"\nimport { I18N_CODES } from 'gatsby-env-variables'\n\nlet languageResources = {}\nI18N_CODES.forEach(iso => {\n languageResources[iso] = {\n translation: require(`../translations/`+iso+`/translation.json`),\n about: require(`../translations/`+iso+`/about.json`)\n }\n})\n\ni18n\n .use(Backend)\n .use(LanguageDetector)\n .use(initReactI18next)\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n fallbackLng: 'en',\n preload: I18N_CODES,\n resources: languageResources,\n ns: ['translation', 'about'],\n load: 'languageOnly',\n debug: true,\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n\n react: {\n useSuspense: false,\n wait: true,\n },\n\n });\n\n\nexport default i18n;","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context';\nexport function I18nextProvider(_ref) {\n var i18n = _ref.i18n,\n defaultNS = _ref.defaultNS,\n children = _ref.children;\n var value = useMemo(function () {\n return {\n i18n: i18n,\n defaultNS: defaultNS\n };\n }, [i18n, defaultNS]);\n return createElement(I18nContext.Provider, {\n value: value\n }, children);\n}","import * as React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Header from \"./header\";\nimport {COLOR_PRIMARY,COLOR_SECONDARY} from 'gatsby-env-variables'\nimport '../styles/global.css';\nimport './i18n'\nimport { withTrans } from './i18n'\n\n\nconst Layout = ({ children, pageContext, location }) => {\n return (\n <div className=\"min-h-screen bg-gray-100\">\n <div className={`bg-gradient-to-r from-primary-400 to-secondary-500 pb-32`}>\n <Header />\n </div>\n\n <main className=\"-mt-32\">\n <div className=\"max-w-7xl mx-auto pb-12 px-4 sm:px-6 lg:px-8\">\n <div className=\"bg-white rounded-lg shadow px-5 py-6 sm:px-6\">\n {children}\n </div>\n </div>\n </main>\n </div>\n )\n}\n\nLayout.propTypes = {\n children: PropTypes.node.isRequired,\n}\n\nexport default withTrans(Layout)","import React, { Component } from 'react';\nimport i18next from './i18nConfig';\nimport { I18nextProvider, withTranslation } from 'react-i18next';\n\nexport function withTrans(WrappedComponent) {\n WrappedComponent = withTranslation()(WrappedComponent);\n\n return class extends Component {\n render() {\n return (\n <I18nextProvider i18n={i18next}>\n <WrappedComponent {...this.props} language={i18next.language} />\n </I18nextProvider>\n );\n }\n }\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, \"<Router> 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// <Link to=\"deeper\"/>\n// // instead of\n// <Link to=`{${props.uri}/deeper}`/>\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 // `<Router basepath=\"${basepath}\">\\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 = () => <div>Not Found!</div>\n // \\n\\t<Router>\\n\\t <NotFound default/>\\n\\t {/* ... */}\\n\\t</Router>`\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, \"<Router>: Children of <Router> must have a `path` or `default` prop, or be a `<Redirect>`. 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, \"<Redirect from=\\\"\" + element.props.from + \"\\\" to=\\\"\" + element.props.to + \"\\\"/> requires both \\\"from\\\" and \\\"to\\\" props when inside a <Router>.\") : invariant(false) : void 0;\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Redirect from=\\\"\" + element.props.from + \" to=\\\"\" + element.props.to + \"\\\"/> 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 map = {\n\t\"./ar/about.json\": 3995,\n\t\"./bn/about.json\": 5597,\n\t\"./en/about.json\": 9374,\n\t\"./es/about.json\": 780,\n\t\"./hi/about.json\": 9952,\n\t\"./ne/about.json\": 270\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5213;","var map = {\n\t\"./ar/translation.json\": 9065,\n\t\"./bn/translation.json\": 736,\n\t\"./en/translation.json\": 8868,\n\t\"./es/translation.json\": 977,\n\t\"./hi/translation.json\": 90,\n\t\"./ne/translation.json\": 195,\n\t\"./zh/translation.json\": 4352\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 9287;","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}","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}","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}"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","isArray","self","ReferenceError","instance","Constructor","TypeError","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","obj","value","_extends","assign","arguments","source","hasOwnProperty","call","apply","this","setPrototypeOf","subClass","superClass","create","constructor","_i","Symbol","iterator","_s","_e","_arr","_n","_d","next","done","push","err","objectWithoutPropertiesLoose","excluded","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","_setPrototypeOf","o","p","__proto__","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_typeof","arrayLikeToArray","minLen","n","toString","slice","name","from","test","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","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","_","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","map","decodeURIComponent","join","dynamicMatch","paramRe","exec","reservedNames","isDynamic","segment","rankRoute","score","reduce","isRootSegment","SEGMENT_POINTS","sort","a","b","addQuery","_len","query","_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","obj1","obj2","obj1Keys","every","_objectWithoutPropertiesLoose","_arrayLikeToArray","_createForOfIteratorHelperLoose","allowArrayLike","it","_unsupportedIterableToArray","bind","Keys","id","generateId","useId","ready","_useState","useState","setId","useIsoMorphicEffect","useLayoutEffect","useEffect","serverHandoffComplete","useServerHandoffComplete","setServerHandoffComplete","useSyncRefs","refs","cache","useRef","current","useCallback","_step","_iterator","ref","Focus","FocusResult","Direction","FocusableMode","focusableSelector","selector","isFocusableElement","element","mode","_match","Strict","body","matches","Loose","parentElement","focusIn","container","focus","elements","querySelectorAll","getFocusableElements","active","activeElement","direction","First","Next","Previous","Last","Error","startIndex","focusOptions","NoScroll","preventScroll","offset","total","_next","nextIdx","WrapAround","Underflow","Overflow","hasAttribute","setAttribute","Success","lookup","returnValue","args","error","captureStackTrace","Features","RenderStrategy","render","slot","defaultTag","features","_ref$visible","visible","_render","featureFlags","None","Static","_props$static","isStatic","rest","_props$unmount","unmount","_rest","strategy","Unmount","Hidden","hidden","style","display","tag","_ref2","_omit","omit","_omit$as","as","Component","children","_omit$refName","refName","passThroughProps","refRelatedProps","resolvedChildren","className","Fragment","isValidElement","line","cloneElement","existingProps","functionsToMerge","clone","_loop","_Object$assign","func","event","defaultPrevented","mergeEventFunctions","object","compact","forwardRefWithAs","component","_component$displayNam","forwardRef","displayName","keysToOmit","_step2","_iterator2","xmlns","viewBox","fill","fillRule","d","clipRule","camelCase","input","pascalCase","x","trim","toUpperCase","toLowerCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","character","preserveCamelCase","p1","m","charAt","strings","raw","_createClass","defineProperties","_templateObject","freeze","_classCallCheck","TemplateTag","_this","transformers","_len2","expressions","_key2","interimTag","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","type","min","el","regexp","RegExp","side","splitBy","includes","isValidValue","Number","isNaN","replaceWhat","replaceWith","ownKeys","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","_objectSpread","getOwnPropertyDescriptors","i18nInstance","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","getDefaults","ReportNamespaces","usedNamespaces","namespaces","ns","getI18n","initReactI18next","init","setDefaults","react","setI18n","useTranslation","i18nFromProps","i18n","useContext","i18nFromContext","defaultNSFromContext","defaultNS","reportNamespaces","notReadyT","k","retNotReady","t","wait","i18nOptions","addUsedNamespaces","isInitialized","initializedStoreOnce","getT","getFixedT","nsMode","_useState2","setT","isMounted","boundReset","on","store","off","isInitial","ret","warn","console","_console","alreadyWarned","warnOnce","loadNamespaces","cb","initialized","setTimeout","hasLoadedNamespace","languages","lng","fallbackLng","lastLng","loadNotPending","loadState","services","backendConnector","backend","isLanguageChangingTo","hasResourceBundle","getDisplayName","_interopRequireDefault","_objectWithoutPropertiesLoose2","_assertThisInitialized2","_inheritsLoose2","_extends2","_propTypes","_react","_reachRouter","_utils","_parsePath","parsePath","_excluded","isAbsolutePath","withPrefix","prefix","_prefix","getGlobalBasePrefix","isLocalLink","getGlobalPathPrefix","endsWith","rewriteLinkPath","relativeTo","absolutify","NavLinkPropTypes","activeClassName","activeStyle","partiallyActive","bool","GatsbyLinkLocationWrapper","Location","GatsbyLink","_location","_React$Component","defaultGetProps","_ref3","isPartiallyCurrent","isCurrent","Boolean","IOSupported","IntersectionObserver","handleRef","_proto","_prefetch","currentPath","rewrittenPath","newPathName","___loader","enqueue","componentDidUpdate","prevProps","prevState","componentDidMount","componentWillUnmount","io","_this$io","unobserve","disconnect","_this2","innerRef","entries","entry","isIntersecting","intersectionRatio","observe","_this3","_this$props","_this$props$getProps","getProps","_onClick","onClick","_onMouseEnter","onMouseEnter","prefixedTo","Link","hovering","button","metaKey","altKey","ctrlKey","shiftKey","preventDefault","shouldReplace","___navigate","propTypes","isRequired","_default","hashIndex","_scrollHandler","ScrollHandler","useScrollRestoration","ScrollContext","React","nodeInterop","_getRequireWildcardCache","has","get","newObj","hasPropertyDescriptor","desc","set","_interopRequireWildcard","_sessionStorage","WeakMap","cacheBabelInterop","cacheNodeInterop","createContext","SessionStorage","_stateStorage","_isTicking","_latestKnownScrollY","scrollListener","scrollY","requestAnimationFrame","_saveScroll","windowScroll","position","shouldUpdateScroll","scrollTo","scrollToHash","node","getElementById","substring","scrollIntoView","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","onScroll","scrollTop","components","plugin","require","plugins","getResourceURLsForPathname","loadPage","loadPageSync","api","defaultReturn","argTransform","results","result","previous","then","all","handler","splice","emit","evt","mitt","pathCache","Map","matchPaths","trimPathname","rawPathname","stripPrefix","__BASE_PATH__","setMatchPaths","findMatchPath","trimmedPathname","cleanPath","pickPaths","matchPath","originalPath","normalizePagePath","grabMatchParams","findPath","redirect","maybeGetBrowserRedirect","toPath","foundPath","StaticQueryContext","loader","supportedPrefetchStrategy","feature","fakeLink","relList","supports","support","url","reject","link","onload","onerror","getElementsByTagName","getElementsByName","parentNode","appendChild","req","XMLHttpRequest","open","status","send","preFetched","catch","PageResourceStatus","preferDefault","createPageDataUrl","s","stripSurroundingSlashes","doFetch","method","onreadystatechange","readyState","toPageResources","pageData","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","loadAppData","allData","finalResult","componentChunkPromise","pageResources","createdAt","staticQueryBatchPromise","staticQueryHash","staticQueryResults","staticQueryResultsMap","emitter","withErrorDetails","shouldPrefetch","navigator","connection","effectiveType","saveData","doesConnectionSupportPrefetch","prefetch","add","realPath","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","__PATH_PREFIX__","ProdLoader","asyncRequires","chunkName","componentUrls","data","setLoader","_loader","publicLoader","getStaticQueryResults","PageRenderer","pageContext","__params","pageElement","RouteAnnouncerProps","top","width","height","padding","overflow","clip","whiteSpace","border","maybeRedirect","___replace","onPreRouteUpdate","prevLocation","onRouteUpdate","___swUpdated","timeoutId","clearTimeout","___webpackCompilationHash","serviceWorker","controller","postMessage","gatsbyApi","reachNavigate","getSavedScrollPosition","RouteAnnouncer","announcementRef","nextProps","pageName","title","pageHeadings","textContent","newAnnouncement","innerText","compareLocationProps","nextLocation","RouteUpdates","shouldComponentUpdate","shallowDiffers","EnsureResources","getDerivedStateFromProps","loadResources","setState","nextState","___emitter","___push","apiRunnerAsync","RouteHandler","BaseContext","baseuri","basepath","DataContext","GatsbyRoot","LocationHandler","Consumer","Router","browserLoc","message","SiteRoot","App","onClientEntryRanRef","performance","mark","renderer","ReactDOM","runRender","rootElement","doc","documentElement","doScroll","InternalPageRenderer","redirectMap","redirectIgnoreCaseMap","redirects","ignoreCase","fromPath","register","reg","installingWorker","installing","log","___failedResources","reload","cachedVariables","wrapRootElement","imageCache","hasNativeLazyLoadSupport","HTMLImageElement","GATSBY___IMAGE","storeImageloaded","cacheKey","hasImageLoaded","format","getMainProps","isLoading","isLoaded","images","loading","toggleLoaded","dataset","objectFit","objectPosition","objectFitPolyfill","import","shouldLoad","opacity","onLoad","currentTarget","img","Image","src","currentSrc","decode","getPlaceholderProps","placeholder","layout","backgroundColor","wrapperStyle","left","bottom","right","output","Sizer","paddingTop","maxWidth","alt","role","LayoutWrapper","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","wrapPageElement","Layout","GATSBY_LAYOUT_COMPONENT_PATH","isDisabledReactIssue7711","_parent","parent","legend","HTMLFieldSetElement","HTMLLegendElement","isParentDisabled","getAttribute","previousElementSibling","isFirstLegend","State","_reducers","DisclosureStates","ActionTypes","Context","useOpenClosed","OpenClosedProvider","reducers","ToggleDisclosure","disclosureState","Open","Closed","CloseDisclosure","LinkPanel","linkedPanel","UnlinkPanel","SetButtonId","buttonId","SetPanelId","panelId","DisclosureContext","useDisclosureContext","context","Disclosure","DisclosureAPIContext","useDisclosureAPIContext","DisclosurePanelContext","stateReducer","DEFAULT_DISCLOSURE_TAG","_match2","_props$defaultOpen","defaultOpen","passthroughProps","reducerBag","useReducer","dispatch","close","focusableElement","restoreElement","HTMLElement","useMemo","Button","_useDisclosureContext","buttonRef","panelContext","isWithinPanel","handleKeyDown","_document$getElementB","stopPropagation","handleKeyUp","handleClick","_document$getElementB2","disabled","propsWeControl","onKeyDown","onKeyUp","PanelRenderFeatures","Panel","_useDisclosureContext2","panelRef","usesOpenClosedState","MenuStates","disposables","_requestAnimationFrame","raf","cancelAnimationFrame","nextFrame","_setTimeout","timer","dispose","useDisposables","calculateActiveIndex","resolvers","items","resolveItems","currentActiveIndex","resolveActiveIndex","activeIndex","nextActiveIndex","findIndex","item","resolveDisabled","idx","reverse","_idx","Specific","resolveId","Nothing","assertNever","CloseMenu","menuState","activeItemIndex","OpenMenu","GoToItem","dataRef","searchQuery","Search","_item$dataRef$current","textValue","ClearSearch","RegisterItem","UnregisterItem","nextItems","currentActiveItem","MenuContext","useMenuContext","Menu","DEFAULT_MENU_TAG","listenerRef","itemsRef","_reducerBag$","_buttonRef$current","_itemsRef$current","_buttonRef$current2","contains","_state$itemsRef$curre","_useMenuContext","_state$buttonRef$curr","ItemsRenderFeatures","Items","_state$items$state$ac","_state$buttonRef$curr4","accept","walk","_ref$enabled","enabled","acceptRef","walkRef","_useMenuContext2","searchDisposables","NodeFilter","FILTER_REJECT","FILTER_SKIP","FILTER_ACCEPT","acceptNode","walker","createTreeWalker","SHOW_ELEMENT","nextNode","currentNode","_id","click","_state$buttonRef$curr2","_state$buttonRef$curr3","tabIndex","DEFAULT_ITEM_TAG","Item","_props$disabled","_useMenuContext3","block","bag","_document$getElementB3","_document$getElementB4","_state$buttonRef$curr5","handleFocus","handleMove","handleLeave","onFocus","onPointerMove","onMouseMove","onPointerLeave","onMouseLeave","Reason","useIsInitialRender","initial","addClasses","_node$classList","classes","classList","removeClasses","_node$classList2","remove","entered","_done","called","_getComputedStyle","getComputedStyle","_map","transitionDuration","transitionDelay","_value$split$filter$m2","v","parseFloat","z","durationMs","delaysMs","Finished","Cancelled","waitForTransition","reason","useSplitClasses","TreeStates","TransitionContext","NestingContext","hasChildren","Visible","useNesting","doneRef","transitionableChildren","mounted","useIsMounted","unregister","childId","child","find","noop","eventNames","ensureEventHooksExist","events","_events$name","TransitionChildRenderFeatures","TransitionChild","_match3","beforeEnter","afterEnter","beforeLeave","afterLeave","enter","enterFrom","enterTo","leave","leaveFrom","leaveTo","_useTransitionContext","useTransitionContext","show","appear","_useParentNesting","useParentNesting","isTransitioning","nesting","enterClasses","enterFromClasses","enterToClasses","enteredClasses","leaveClasses","leaveFromClasses","leaveToClasses","eventsRef","useEvents","skip","_match4","_props$appear","nestingBag","transitionBag","sharedProps","Child","hasTransitionContext","hasOpenClosedContext","Root","stroke","strokeLinecap","strokeLinejoin","strokeWidth","withTranslation","WrappedComponent","I18nextWithTranslation","forwardedRef","_useTranslation","_useTranslation2","passDownProps","tReady","withRef","_inherits","_assertThisInitialized","_possibleConstructorReturn","_getPrototypeOf","getPrototypeOf","_defineProperty","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","valueOf","_isNativeReflectConstruct","Super","NewTarget","getTag","isString","isNumber","isBoolean","isObject","isObjectLike","isDefined","isBlank","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","PATTERN_LENGTH_TOO_LARGE","hasOwn","KeyStore","_keys","_keyMap","totalWeight","createKey","weight","keyId","createKeyPath","createKeyId","MISSING_KEY_PROPERTY","INVALID_KEY_WEIGHT_VALUE","AdvancedOptions","useExtendedSearch","getFn","list","deepGet","baseToString","ignoreLocation","ignoreFieldNorm","Config","isCaseSensitive","includeScore","shouldSort","sortFn","includeMatches","findAllMatches","minMatchCharLength","threshold","distance","SPACE","norm","mantissa","pow","numTokens","sqrt","round","clear","FuseIndex","_ref$getFn","isCreated","setIndexRecords","docs","records","_keysMap","docIndex","_addString","_addObject","size","record","$","keyIndex","subRecords","nestedArrIndex","_stack$pop","_value","subRecord","createIndex","_ref2$getFn","myIndex","setKeys","setSources","computeScore","pattern","_ref4","_ref4$errors","errors","_ref4$currentLocation","currentLocation","_ref4$expectedLocatio","expectedLocation","_ref4$distance","_ref4$ignoreLocation","accuracy","proximity","abs","convertMaskToIndices","matchmask","indices","start","end","MAX_BITS","createPatternAlphabet","mask","char","BitapSearch","_ref6","_ref6$location","_ref6$threshold","_ref6$distance","_ref6$includeMatches","_ref6$findAllMatches","_ref6$minMatchCharLen","_ref6$isCaseSensitive","_ref6$ignoreLocation","chunks","addChunk","alphabet","remainder","text","_this$options","_result","isMatch","_this$options2","allIndices","totalScore","hasMatches","_ref7","_search","patternAlphabet","_ref5","_ref5$location","_ref5$distance","_ref5$threshold","_ref5$findAllMatches","_ref5$minMatchCharLen","_ref5$includeMatches","_ref5$ignoreLocation","patternLen","textLen","currentThreshold","bestLocation","computeMatches","matchMask","lastBitArr","finalScore","binMax","binMin","binMid","floor","finish","bitArr","j","charMatch","BaseMatch","getMatch","multiRegex","singleRegex","exp","ExactMatch","_BaseMatch","_super","InverseExactMatch","_BaseMatch2","_super2","PrefixExactMatch","_BaseMatch3","_super3","InversePrefixExactMatch","_BaseMatch4","_super4","SuffixExactMatch","_BaseMatch5","_super5","InverseSuffixExactMatch","_BaseMatch6","_super6","FuzzyMatch","_BaseMatch7","_super7","_this6","_ref8","_ref8$location","_ref8$threshold","_ref8$distance","_ref8$includeMatches","_ref8$findAllMatches","_ref8$minMatchCharLen","_ref8$isCaseSensitive","_ref8$ignoreLocation","_bitapSearch","searchIn","IncludeMatch","_BaseMatch8","_super8","searchers","searchersLen","SPACE_RE","parseQuery","queryItem","found","searcher","token","isMultiMatch","_searcher","_token","isSingleMatch","MultiMatchSet","ExtendedSearch","_ref9","_ref9$isCaseSensitive","_ref9$includeMatches","_ref9$minMatchCharLen","_ref9$ignoreLocation","_ref9$findAllMatches","_ref9$location","_ref9$threshold","_ref9$distance","_this$options3","numMatches","qLen","_searchers","pLen","_searcher$search","registeredSearchers","createSearcher","searcherClass","condition","LogicalOperator","KeyType","isExpression","isPath","isLeaf","convertToExplicit","_ref12","_ref12$auto","auto","isQueryPath","operator","computeScore$1","_ref13","_ref13$ignoreFieldNor","_ref14","EPSILON","transformMatches","refIndex","transformScore","_ref15","_ref15$includeMatches","_ref15$includeScore","Fuse","_keyStore","setCollection","_docs","_myIndex","predicate","removeAt","_ref16","_ref16$limit","limit","_this$options4","_searchStringList","_searchObjectList","_searchLogical","_ref17","_searcher$searchIn","_this7","expression","evaluate","_findMatches","getValueForItemAtKeyId","_res","_i2","_result2","resultMap","_ref18","expResults","_ref19","_resultMap$idx$matche","_this8","_this$_myIndex","_ref20","_ref21","_ref22","_searcher$searchIn2","_norm","_searcher$searchIn3","version","parseIndex","_ref3$getFn","config","classNames","language","setValues","changei18n","changeLanguage","iso","oldValues","I18N_CODES","TITLE","consoleLogger","baseLogger","Logger","concreteLogger","logger","debug","forward","_len4","_key4","lvl","debugOnly","moduleName","EventEmitter","observers","cloned","observer","_cloned","defer","rej","promise","makeString","copy","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","newValue","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","prop","String","regexEscape","_entityMap","isIE10","userAgent","ResourceStore","_EventEmitter","keySeparator","silent","addNamespaces","resources","addResource","deep","pack","removeNamespaces","getResource","compatibilityAPI","postProcessor","processors","addPostProcessor","handle","translator","processor","process","checkedLoadedFor","Translator","interpolation","resolved","nsSeparator","interpolator","nestingRegexp","parts","lastKey","overloadTranslationOptionHandler","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValue","isValidLookup","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","saveMissingTo","toResolveHierarchy","fallbackValue","missingKeyHandler","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","defaultVariables","interpolate","na","nest","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","extracted","fallbackNS","needsContextHandling","codes","utils","code","pluralSuffix","possibleKey","finalKey","finalKeys","addLookupKeys","contextSeparator","returnNull","returnEmptyString","resourceStore","option","capitalize","LanguageUtil","whitelist","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","part","cleanCode","deprecate","isSupportedCode","load","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","c","fc","sets","nr","_rulesPluralsTypes","createRules","rules","numbers","plurals","PluralResolver","rule","getRule","number","noAbs","simplifyPluralSuffix","returnSuffix","prepend","compatibilityJSON","Interpolator","escapeValue","iOpts","escape","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","val","handleFormat","f","missingInterpolationHandler","regex","safeValue","todo","temp","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","formatters","doReduce","elem","Connector","queue","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","loaded","addResourceBundle","_getLastOfPath2","pushPath","what","fcName","tried","queueLoad","loadOne","prepareLoading","isUpdate","initImmediate","nonExplicitWhitelist","preload","pluralSeparator","partialBundledLanguages","tDescription","_format","transformOptions","I18n","modules","external","isClone","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","usedCallback","append","setLng","getBestMatchFromCodes","cacheUserLanguage","async","detect","fixedT","_this$translator","_this$translator2","exists","precheck","preResult","preloaded","newLngs","mergedOptions","membersToCopy","each","addQueryString","queryString","encodeURIComponent","paramName","ajax","queryStringParams","ActiveXObject","crossDomain","setRequestHeader","withCredentials","overrideMimeType","h","customHeaders","loadPath","addPath","allowMultiLoading","parsePayload","Backend","loadUrl","xhr","fieldContentRegExp","serializeCookie","opt","maxAge","domain","expires","toUTCString","httpOnly","secure","sameSite","cookie","minutes","cookieOptions","setTime","getTime","nameEQ","ca","cookie$1","lookupCookie","cookieMinutes","cookieDomain","querystring","pos","lookupQuerystring","hasLocalStorageSupport","localStorageAvailable","localStorage","testKey","removeItem","lookupLocalStorage","hasSessionStorageSupport","sessionStorageAvailable","lookupSessionStorage","navigator$1","userLanguage","htmlTag","lookupFromPathIndex","subdomain","lookupFromSubdomainIndex","Browser","detectors","order","caches","excludeCacheFor","lookupFromUrlIndex","addDetector","detector","detectionOrder","detected","detectorName","cacheName","languageResources","translation","about","use","LanguageDetector","I18nextProvider","i18next","_objectWithoutProperties","createNamedContext","Ctx","LocationContext","LocationProvider","_temp","getContext","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","defaultProps","ServerLocation","baseContext","locationContext","RouterImpl","_React$PureComponent","_props","_navigate2","primary","_props$component","domProps","array","createRoute","FocusWrapper","FocusHandler","FocusContext","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_React$Component2","_temp2","shouldFocus","myURIChanged","navigatedUpToMe","_props2","_props2$component","Comp","outline","C","_props$getProps","anchorProps","encodedHref","shouldNavigate","_location$state","restState","RedirectRequest","redirectTo","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","Redirect","Match","_ref10","resolvedPath","useNavigate","useParams","useMatch","stripSlashes","elementPath","argIndex","framesToPop","webpackContext","webpackContextResolve","__webpack_require__","_inheritsLoose","iter"],"sourceRoot":""}