@dr.pogodin/react-utils 1.41.13 → 1.41.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"web.bundle.js","mappings":"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","sources":["webpack://@dr.pogodin/react-utils/webpack/universalModuleDefinition","webpack://@dr.pogodin/react-utils/./src/shared/utils/isomorphy/environment-check.ts","webpack://@dr.pogodin/react-utils/external umd \"@dr.pogodin/react-global-state\"","webpack://@dr.pogodin/react-utils/./src/shared/utils/webpack.ts","webpack://@dr.pogodin/react-utils/external umd \"react\"","webpack://@dr.pogodin/react-utils/./node_modules/react-fast-compare/index.js","webpack://@dr.pogodin/react-utils/external umd \"dayjs\"","webpack://@dr.pogodin/react-utils/./node_modules/react/cjs/react-jsx-runtime.production.js","webpack://@dr.pogodin/react-utils/external umd \"react-dom/client\"","webpack://@dr.pogodin/react-utils/./node_modules/@dr.pogodin/react-helmet/lib/index.esm.js","webpack://@dr.pogodin/react-utils/external umd \"qs\"","webpack://@dr.pogodin/react-utils/external umd \"cookie\"","webpack://@dr.pogodin/react-utils/external umd \"react-dom\"","webpack://@dr.pogodin/react-utils/./src/shared/utils/isomorphy/buildInfo.ts","webpack://@dr.pogodin/react-utils/./node_modules/shallowequal/index.js","webpack://@dr.pogodin/react-utils/./src/client/getInj.ts","webpack://@dr.pogodin/react-utils/./node_modules/invariant/browser.js","webpack://@dr.pogodin/react-utils/external umd \"react-router\"","webpack://@dr.pogodin/react-utils/./src/shared/utils/isomorphy/index.ts","webpack://@dr.pogodin/react-utils/external umd \"node-forge/lib/forge\"","webpack://@dr.pogodin/react-utils/external umd \"@dr.pogodin/react-themes\"","webpack://@dr.pogodin/react-utils/external umd \"@dr.pogodin/js-utils\"","webpack://@dr.pogodin/react-utils/./node_modules/react/jsx-runtime.js","webpack://@dr.pogodin/react-utils/external umd \"node-forge/lib/aes\"","webpack://@dr.pogodin/react-utils/./src/client/index.tsx","webpack://@dr.pogodin/react-utils/webpack/bootstrap","webpack://@dr.pogodin/react-utils/webpack/runtime/compat get default export","webpack://@dr.pogodin/react-utils/webpack/runtime/define property getters","webpack://@dr.pogodin/react-utils/webpack/runtime/global","webpack://@dr.pogodin/react-utils/webpack/runtime/hasOwnProperty shorthand","webpack://@dr.pogodin/react-utils/webpack/runtime/make namespace object","webpack://@dr.pogodin/react-utils/./src/shared/utils/config.ts","webpack://@dr.pogodin/react-utils/./src/shared/utils/globalState.ts","webpack://@dr.pogodin/react-utils/./src/shared/utils/time.ts","webpack://@dr.pogodin/react-utils/./src/shared/utils/splitComponent.tsx","webpack://@dr.pogodin/react-utils/./src/shared/utils/index.ts","webpack://@dr.pogodin/react-utils/./src/shared/components/Modal/styles.scss?66aa","webpack://@dr.pogodin/react-utils/./src/shared/components/Modal/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Modal/base-theme.scss?3336","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/common.ts","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/CustomDropdown/Options/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/CustomDropdown/Options/style.scss?8cb9","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/CustomDropdown/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/CustomDropdown/theme.scss?f940","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/NativeDropdown/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/NativeDropdown/theme.scss?47e7","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/Switch/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/Switch/theme.scss?69a8","webpack://@dr.pogodin/react-utils/./src/shared/components/GenericLink/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Link.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Button/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Button/style.scss?4dfe","webpack://@dr.pogodin/react-utils/./src/shared/components/Checkbox/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Checkbox/theme.scss?3b99","webpack://@dr.pogodin/react-utils/./src/shared/components/Input/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Input/theme.scss?9ab5","webpack://@dr.pogodin/react-utils/./src/shared/components/PageLayout/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/PageLayout/base-theme.scss?2bfa","webpack://@dr.pogodin/react-utils/./src/shared/components/MetaTags.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/NavLink.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Throbber/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Throbber/theme.scss?14fa","webpack://@dr.pogodin/react-utils/./src/shared/components/WithTooltip/Tooltip.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/WithTooltip/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/WithTooltip/default-theme.scss?0cd4","webpack://@dr.pogodin/react-utils/./src/shared/components/YouTubeVideo/throbber.scss?a205","webpack://@dr.pogodin/react-utils/./src/shared/components/YouTubeVideo/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/YouTubeVideo/base.scss?60f0","webpack://@dr.pogodin/react-utils/./src/shared/components/TextArea/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/TextArea/style.scss?7f40","webpack://@dr.pogodin/react-utils/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@dr.pogodin/js-utils\"), require(\"@dr.pogodin/react-global-state\"), require(\"@dr.pogodin/react-themes\"), require(\"cookie\"), require(\"dayjs\"), require(\"node-forge/lib/aes\"), require(\"node-forge/lib/forge\"), require(\"qs\"), require(\"react\"), require(\"react-dom\"), require(\"react-dom/client\"), require(\"react-router\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@dr.pogodin/js-utils\", \"@dr.pogodin/react-global-state\", \"@dr.pogodin/react-themes\", \"cookie\", \"dayjs\", \"node-forge/lib/aes\", \"node-forge/lib/forge\", \"qs\", \"react\", \"react-dom\", \"react-dom/client\", \"react-router\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@dr.pogodin/react-utils\"] = factory(require(\"@dr.pogodin/js-utils\"), require(\"@dr.pogodin/react-global-state\"), require(\"@dr.pogodin/react-themes\"), require(\"cookie\"), require(\"dayjs\"), require(\"node-forge/lib/aes\"), require(\"node-forge/lib/forge\"), require(\"qs\"), require(\"react\"), require(\"react-dom\"), require(\"react-dom/client\"), require(\"react-router\"));\n\telse\n\t\troot[\"@dr.pogodin/react-utils\"] = factory(root[\"@dr.pogodin/js-utils\"], root[\"@dr.pogodin/react-global-state\"], root[\"@dr.pogodin/react-themes\"], root[\"cookie\"], root[\"dayjs\"], root[\"node-forge/lib/aes\"], root[\"node-forge/lib/forge\"], root[\"qs\"], root[\"react\"], root[\"react-dom\"], root[\"react-dom/client\"], root[\"react-router\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__864__, __WEBPACK_EXTERNAL_MODULE__126__, __WEBPACK_EXTERNAL_MODULE__859__, __WEBPACK_EXTERNAL_MODULE__462__, __WEBPACK_EXTERNAL_MODULE__185__, __WEBPACK_EXTERNAL_MODULE__958__, __WEBPACK_EXTERNAL_MODULE__814__, __WEBPACK_EXTERNAL_MODULE__360__, __WEBPACK_EXTERNAL_MODULE__155__, __WEBPACK_EXTERNAL_MODULE__514__, __WEBPACK_EXTERNAL_MODULE__236__, __WEBPACK_EXTERNAL_MODULE__707__) {\nreturn ","// Checks for client- vs. server-side environment detection.\n\n/**\n * `true` within client-side environment (browser), `false` at server-side.\n */\nexport const IS_CLIENT_SIDE: boolean = typeof process !== 'object'\n || !process.versions || !process.versions.node\n || !!global.REACT_UTILS_FORCE_CLIENT_SIDE;\n\n/**\n * `true` within the server-side environment (node), `false` at client-side.\n */\nexport const IS_SERVER_SIDE: boolean = !IS_CLIENT_SIDE;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__126__;","import { IS_CLIENT_SIDE } from './isomorphy';\n\n/**\n * Requires the specified module without including it into the bundle during\n * Webpack build.\n * @param modulePath\n * @param [basePath]\n * @return Required module.\n */\nexport function requireWeak<Module extends NodeJS.Module>(\n modulePath: string,\n basePath?: string,\n): Module | null {\n if (IS_CLIENT_SIDE) return null;\n\n try {\n /* eslint-disable no-eval */\n const { resolve } = eval('require')('path');\n const path = basePath ? resolve(basePath, modulePath) : modulePath;\n const module = eval('require')(path) as Module;\n /* eslint-enable no-eval */\n\n if (!('default' in module)) return module;\n\n const { default: def, ...named } = module;\n\n const res = def as Module;\n\n Object.entries(named).forEach(([name, value]) => {\n const assigned = res[name as keyof Module];\n if (assigned !== undefined) {\n if (assigned !== value) {\n throw Error('Conflict between default and named exports');\n }\n } else res[name as keyof Module] = value;\n });\n return res;\n } catch {\n return null;\n }\n}\n\n/**\n * Resolves specified module path with help of Babel's module resolver.\n * Yes, the function itself just returns its argument to the caller, but Babel\n * is configured to resolve the first argument of resolveWeak(..) function, thus\n * the result will be the resolved path.\n * @param {string} modulePath\n * @return {string} Absolute or relative path to the module.\n */\nexport function resolveWeak(modulePath: string): string {\n return modulePath;\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__155__;","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__185__;","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__236__;","// src/index.tsx\nimport React3, { Component as Component3 } from \"react\";\nimport fastCompare from \"react-fast-compare\";\nimport invariant from \"invariant\";\n\n// src/Provider.tsx\nimport React2, { Component } from \"react\";\n\n// src/server.ts\nimport React from \"react\";\n\n// src/constants.ts\nvar TAG_NAMES = /* @__PURE__ */ ((TAG_NAMES2) => {\n TAG_NAMES2[\"BASE\"] = \"base\";\n TAG_NAMES2[\"BODY\"] = \"body\";\n TAG_NAMES2[\"HEAD\"] = \"head\";\n TAG_NAMES2[\"HTML\"] = \"html\";\n TAG_NAMES2[\"LINK\"] = \"link\";\n TAG_NAMES2[\"META\"] = \"meta\";\n TAG_NAMES2[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES2[\"SCRIPT\"] = \"script\";\n TAG_NAMES2[\"STYLE\"] = \"style\";\n TAG_NAMES2[\"TITLE\"] = \"title\";\n TAG_NAMES2[\"FRAGMENT\"] = \"Symbol(react.fragment)\";\n return TAG_NAMES2;\n})(TAG_NAMES || {});\nvar SEO_PRIORITY_TAGS = {\n link: { rel: [\"amphtml\", \"canonical\", \"alternate\"] },\n script: { type: [\"application/ld+json\"] },\n meta: {\n charset: \"\",\n name: [\"generator\", \"robots\", \"description\"],\n property: [\n \"og:type\",\n \"og:title\",\n \"og:url\",\n \"og:image\",\n \"og:image:alt\",\n \"og:description\",\n \"twitter:url\",\n \"twitter:title\",\n \"twitter:description\",\n \"twitter:image\",\n \"twitter:image:alt\",\n \"twitter:card\",\n \"twitter:site\"\n ]\n }\n};\nvar VALID_TAG_NAMES = Object.values(TAG_NAMES);\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\nvar HTML_TAG_MAP = Object.entries(REACT_TAG_MAP).reduce(\n (carry, [key, value]) => {\n carry[value] = key;\n return carry;\n },\n {}\n);\nvar HELMET_ATTRIBUTE = \"data-rh\";\n\n// src/utils.ts\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\",\n PRIORITIZE_SEO_TAGS: \"prioritizeSeoTags\"\n};\nvar getInnermostProperty = (propsList, property) => {\n for (let i = propsList.length - 1; i >= 0; i -= 1) {\n const props = propsList[i];\n if (Object.prototype.hasOwnProperty.call(props, property)) {\n return props[property];\n }\n }\n return null;\n};\nvar getTitleFromPropsList = (propsList) => {\n let innermostTitle = getInnermostProperty(propsList, \"title\" /* TITLE */);\n const innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n if (Array.isArray(innermostTitle)) {\n innermostTitle = innermostTitle.join(\"\");\n }\n if (innermostTemplate && innermostTitle) {\n return innermostTemplate.replace(/%s/g, () => innermostTitle);\n }\n const innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || void 0;\n};\nvar getOnChangeClientState = (propsList) => getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || (() => {\n});\nvar getAttributesFromPropsList = (tagType, propsList) => propsList.filter((props) => typeof props[tagType] !== \"undefined\").map((props) => props[tagType]).reduce((tagAttrs, current) => ({ ...tagAttrs, ...current }), {});\nvar getBaseTagFromPropsList = (primaryAttributes, propsList) => propsList.filter((props) => typeof props[\"base\" /* BASE */] !== \"undefined\").map((props) => props[\"base\" /* BASE */]).reverse().reduce((innermostBaseTag, tag) => {\n if (!innermostBaseTag.length) {\n const keys = Object.keys(tag);\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const lowerCaseAttributeKey = attributeKey.toLowerCase();\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n return innermostBaseTag;\n}, []);\nvar warn = (msg) => console && typeof console.warn === \"function\" && console.warn(msg);\nvar getTagsFromPropsList = (tagName, primaryAttributes, propsList) => {\n const approvedSeenTags = {};\n return propsList.filter((props) => {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\n `Helmet: ${tagName} should be of type \"Array\". Instead found type \"${typeof props[tagName]}\"`\n );\n }\n return false;\n }).map((props) => props[tagName]).reverse().reduce((approvedTags, instanceTags) => {\n const instanceSeenTags = {};\n instanceTags.filter((tag) => {\n let primaryAttributeKey;\n const keys2 = Object.keys(tag);\n for (let i = 0; i < keys2.length; i += 1) {\n const attributeKey = keys2[i];\n const lowerCaseAttributeKey = attributeKey.toLowerCase();\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === \"rel\" /* REL */ && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === \"rel\" /* REL */ && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === \"innerHTML\" /* INNER_HTML */ || attributeKey === \"cssText\" /* CSS_TEXT */ || attributeKey === \"itemprop\" /* ITEM_PROP */)) {\n primaryAttributeKey = attributeKey;\n }\n }\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n const value = tag[primaryAttributeKey].toLowerCase();\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n return false;\n }).reverse().forEach((tag) => approvedTags.push(tag));\n const keys = Object.keys(instanceSeenTags);\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const tagUnion = {\n ...approvedSeenTags[attributeKey],\n ...instanceSeenTags[attributeKey]\n };\n approvedSeenTags[attributeKey] = tagUnion;\n }\n return approvedTags;\n }, []).reverse();\n};\nvar getAnyTrueFromPropsList = (propsList, checkedTag) => {\n if (Array.isArray(propsList) && propsList.length) {\n for (let index = 0; index < propsList.length; index += 1) {\n const prop = propsList[index];\n if (prop[checkedTag]) {\n return true;\n }\n }\n }\n return false;\n};\nvar reducePropsToState = (propsList) => ({\n baseTag: getBaseTagFromPropsList([\"href\" /* HREF */], propsList),\n bodyAttributes: getAttributesFromPropsList(\"bodyAttributes\" /* BODY */, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(\"htmlAttributes\" /* HTML */, propsList),\n linkTags: getTagsFromPropsList(\n \"link\" /* LINK */,\n [\"rel\" /* REL */, \"href\" /* HREF */],\n propsList\n ),\n metaTags: getTagsFromPropsList(\n \"meta\" /* META */,\n [\n \"name\" /* NAME */,\n \"charset\" /* CHARSET */,\n \"http-equiv\" /* HTTPEQUIV */,\n \"property\" /* PROPERTY */,\n \"itemprop\" /* ITEM_PROP */\n ],\n propsList\n ),\n noscriptTags: getTagsFromPropsList(\"noscript\" /* NOSCRIPT */, [\"innerHTML\" /* INNER_HTML */], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(\n \"script\" /* SCRIPT */,\n [\"src\" /* SRC */, \"innerHTML\" /* INNER_HTML */],\n propsList\n ),\n styleTags: getTagsFromPropsList(\"style\" /* STYLE */, [\"cssText\" /* CSS_TEXT */], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(\"titleAttributes\" /* TITLE */, propsList),\n prioritizeSeoTags: getAnyTrueFromPropsList(propsList, HELMET_PROPS.PRIORITIZE_SEO_TAGS)\n});\nvar flattenArray = (possibleArray) => Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\nvar checkIfPropsMatch = (props, toMatch) => {\n const keys = Object.keys(props);\n for (let i = 0; i < keys.length; i += 1) {\n if (toMatch[keys[i]] && toMatch[keys[i]].includes(props[keys[i]])) {\n return true;\n }\n }\n return false;\n};\nvar prioritizer = (elementsList, propsToMatch) => {\n if (Array.isArray(elementsList)) {\n return elementsList.reduce(\n (acc, elementAttrs) => {\n if (checkIfPropsMatch(elementAttrs, propsToMatch)) {\n acc.priority.push(elementAttrs);\n } else {\n acc.default.push(elementAttrs);\n }\n return acc;\n },\n { priority: [], default: [] }\n );\n }\n return { default: elementsList, priority: [] };\n};\nvar without = (obj, key) => {\n return {\n ...obj,\n [key]: void 0\n };\n};\n\n// src/server.ts\nvar SELF_CLOSING_TAGS = [\"noscript\" /* NOSCRIPT */, \"script\" /* SCRIPT */, \"style\" /* STYLE */];\nvar encodeSpecialCharacters = (str, encode = true) => {\n if (encode === false) {\n return String(str);\n }\n return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#x27;\");\n};\nvar generateElementAttributesAsString = (attributes) => Object.keys(attributes).reduce((str, key) => {\n const attr = typeof attributes[key] !== \"undefined\" ? `${key}=\"${attributes[key]}\"` : `${key}`;\n return str ? `${str} ${attr}` : attr;\n}, \"\");\nvar generateTitleAsString = (type, title, attributes, encode) => {\n const attributeString = generateElementAttributesAsString(attributes);\n const flattenedTitle = flattenArray(title);\n return attributeString ? `<${type} ${HELMET_ATTRIBUTE}=\"true\" ${attributeString}>${encodeSpecialCharacters(\n flattenedTitle,\n encode\n )}</${type}>` : `<${type} ${HELMET_ATTRIBUTE}=\"true\">${encodeSpecialCharacters(\n flattenedTitle,\n encode\n )}</${type}>`;\n};\nvar generateTagsAsString = (type, tags, encode = true) => tags.reduce((str, t) => {\n const tag = t;\n const attributeHtml = Object.keys(tag).filter(\n (attribute) => !(attribute === \"innerHTML\" /* INNER_HTML */ || attribute === \"cssText\" /* CSS_TEXT */)\n ).reduce((string, attribute) => {\n const attr = typeof tag[attribute] === \"undefined\" ? attribute : `${attribute}=\"${encodeSpecialCharacters(tag[attribute], encode)}\"`;\n return string ? `${string} ${attr}` : attr;\n }, \"\");\n const tagContent = tag.innerHTML || tag.cssText || \"\";\n const isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n return `${str}<${type} ${HELMET_ATTRIBUTE}=\"true\" ${attributeHtml}${isSelfClosing ? `/>` : `>${tagContent}</${type}>`}`;\n}, \"\");\nvar convertElementAttributesToReactProps = (attributes, initProps = {}) => Object.keys(attributes).reduce((obj, key) => {\n const mapped = REACT_TAG_MAP[key];\n obj[mapped || key] = attributes[key];\n return obj;\n}, initProps);\nvar generateTitleAsReactComponent = (_type, title, attributes) => {\n const initProps = {\n key: title,\n [HELMET_ATTRIBUTE]: true\n };\n const props = convertElementAttributesToReactProps(attributes, initProps);\n return [React.createElement(\"title\" /* TITLE */, props, title)];\n};\nvar generateTagsAsReactComponent = (type, tags) => tags.map((tag, i) => {\n const mappedTag = {\n key: i,\n [HELMET_ATTRIBUTE]: true\n };\n Object.keys(tag).forEach((attribute) => {\n const mapped = REACT_TAG_MAP[attribute];\n const mappedAttribute = mapped || attribute;\n if (mappedAttribute === \"innerHTML\" /* INNER_HTML */ || mappedAttribute === \"cssText\" /* CSS_TEXT */) {\n const content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return React.createElement(type, mappedTag);\n});\nvar getMethodsForTag = (type, tags, encode = true) => {\n switch (type) {\n case \"title\" /* TITLE */:\n return {\n toComponent: () => generateTitleAsReactComponent(type, tags.title, tags.titleAttributes),\n toString: () => generateTitleAsString(type, tags.title, tags.titleAttributes, encode)\n };\n case \"bodyAttributes\" /* BODY */:\n case \"htmlAttributes\" /* HTML */:\n return {\n toComponent: () => convertElementAttributesToReactProps(tags),\n toString: () => generateElementAttributesAsString(tags)\n };\n default:\n return {\n toComponent: () => generateTagsAsReactComponent(type, tags),\n toString: () => generateTagsAsString(type, tags, encode)\n };\n }\n};\nvar getPriorityMethods = ({ metaTags, linkTags, scriptTags, encode }) => {\n const meta = prioritizer(metaTags, SEO_PRIORITY_TAGS.meta);\n const link = prioritizer(linkTags, SEO_PRIORITY_TAGS.link);\n const script = prioritizer(scriptTags, SEO_PRIORITY_TAGS.script);\n const priorityMethods = {\n toComponent: () => [\n ...generateTagsAsReactComponent(\"meta\" /* META */, meta.priority),\n ...generateTagsAsReactComponent(\"link\" /* LINK */, link.priority),\n ...generateTagsAsReactComponent(\"script\" /* SCRIPT */, script.priority)\n ],\n toString: () => (\n // generate all the tags as strings and concatenate them\n `${getMethodsForTag(\"meta\" /* META */, meta.priority, encode)} ${getMethodsForTag(\n \"link\" /* LINK */,\n link.priority,\n encode\n )} ${getMethodsForTag(\"script\" /* SCRIPT */, script.priority, encode)}`\n )\n };\n return {\n priorityMethods,\n metaTags: meta.default,\n linkTags: link.default,\n scriptTags: script.default\n };\n};\nvar mapStateOnServer = (props) => {\n const {\n baseTag,\n bodyAttributes,\n encode = true,\n htmlAttributes,\n noscriptTags,\n styleTags,\n title = \"\",\n titleAttributes,\n prioritizeSeoTags\n } = props;\n let { linkTags, metaTags, scriptTags } = props;\n let priorityMethods = {\n toComponent: () => {\n },\n toString: () => \"\"\n };\n if (prioritizeSeoTags) {\n ({ priorityMethods, linkTags, metaTags, scriptTags } = getPriorityMethods(props));\n }\n return {\n priority: priorityMethods,\n base: getMethodsForTag(\"base\" /* BASE */, baseTag, encode),\n bodyAttributes: getMethodsForTag(\"bodyAttributes\" /* BODY */, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(\"htmlAttributes\" /* HTML */, htmlAttributes, encode),\n link: getMethodsForTag(\"link\" /* LINK */, linkTags, encode),\n meta: getMethodsForTag(\"meta\" /* META */, metaTags, encode),\n noscript: getMethodsForTag(\"noscript\" /* NOSCRIPT */, noscriptTags, encode),\n script: getMethodsForTag(\"script\" /* SCRIPT */, scriptTags, encode),\n style: getMethodsForTag(\"style\" /* STYLE */, styleTags, encode),\n title: getMethodsForTag(\"title\" /* TITLE */, { title, titleAttributes }, encode)\n };\n};\nvar server_default = mapStateOnServer;\n\n// src/HelmetData.ts\nvar instances = [];\nvar isDocument = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar HelmetData = class {\n instances = [];\n canUseDOM = isDocument;\n context;\n value = {\n setHelmet: (serverState) => {\n this.context.helmet = serverState;\n },\n helmetInstances: {\n get: () => this.canUseDOM ? instances : this.instances,\n add: (instance) => {\n (this.canUseDOM ? instances : this.instances).push(instance);\n },\n remove: (instance) => {\n const index = (this.canUseDOM ? instances : this.instances).indexOf(instance);\n (this.canUseDOM ? instances : this.instances).splice(index, 1);\n }\n }\n };\n constructor(context, canUseDOM) {\n this.context = context;\n this.canUseDOM = canUseDOM || false;\n if (!canUseDOM) {\n context.helmet = server_default({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n }\n};\n\n// src/Provider.tsx\nvar defaultValue = {};\nvar Context = React2.createContext(defaultValue);\nvar HelmetProvider = class _HelmetProvider extends Component {\n static canUseDOM = isDocument;\n helmetData;\n constructor(props) {\n super(props);\n this.helmetData = new HelmetData(this.props.context || {}, _HelmetProvider.canUseDOM);\n }\n render() {\n return /* @__PURE__ */ React2.createElement(Context.Provider, { value: this.helmetData.value }, this.props.children);\n }\n};\n\n// src/Dispatcher.tsx\nimport { Component as Component2 } from \"react\";\nimport shallowEqual from \"shallowequal\";\n\n// src/client.ts\nvar updateTags = (type, tags) => {\n const headElement = document.head || document.querySelector(\"head\" /* HEAD */);\n const tagNodes = headElement.querySelectorAll(`${type}[${HELMET_ATTRIBUTE}]`);\n const oldTags = [].slice.call(tagNodes);\n const newTags = [];\n let indexToDelete;\n if (tags && tags.length) {\n tags.forEach((tag) => {\n const newElement = document.createElement(type);\n for (const attribute in tag) {\n if (Object.prototype.hasOwnProperty.call(tag, attribute)) {\n if (attribute === \"innerHTML\" /* INNER_HTML */) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === \"cssText\" /* CSS_TEXT */) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n const attr = attribute;\n const value = typeof tag[attr] === \"undefined\" ? \"\" : tag[attr];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n if (oldTags.some((existingTag, index) => {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n oldTags.forEach((tag) => tag.parentNode?.removeChild(tag));\n newTags.forEach((tag) => headElement.appendChild(tag));\n return {\n oldTags,\n newTags\n };\n};\nvar updateAttributes = (tagName, attributes) => {\n const elementTag = document.getElementsByTagName(tagName)[0];\n if (!elementTag) {\n return;\n }\n const helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n const helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n const attributesToRemove = [...helmetAttributes];\n const attributeKeys = Object.keys(attributes);\n for (const attribute of attributeKeys) {\n const value = attributes[attribute] || \"\";\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n const indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n for (let i = attributesToRemove.length - 1; i >= 0; i -= 1) {\n elementTag.removeAttribute(attributesToRemove[i]);\n }\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\nvar updateTitle = (title, attributes) => {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n updateAttributes(\"title\" /* TITLE */, attributes);\n};\nvar commitTagChanges = (newState, cb) => {\n const {\n baseTag,\n bodyAttributes,\n htmlAttributes,\n linkTags,\n metaTags,\n noscriptTags,\n onChangeClientState,\n scriptTags,\n styleTags,\n title,\n titleAttributes\n } = newState;\n updateAttributes(\"body\" /* BODY */, bodyAttributes);\n updateAttributes(\"html\" /* HTML */, htmlAttributes);\n updateTitle(title, titleAttributes);\n const tagUpdates = {\n baseTag: updateTags(\"base\" /* BASE */, baseTag),\n linkTags: updateTags(\"link\" /* LINK */, linkTags),\n metaTags: updateTags(\"meta\" /* META */, metaTags),\n noscriptTags: updateTags(\"noscript\" /* NOSCRIPT */, noscriptTags),\n scriptTags: updateTags(\"script\" /* SCRIPT */, scriptTags),\n styleTags: updateTags(\"style\" /* STYLE */, styleTags)\n };\n const addedTags = {};\n const removedTags = {};\n Object.keys(tagUpdates).forEach((tagType) => {\n const { newTags, oldTags } = tagUpdates[tagType];\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n if (cb) {\n cb();\n }\n onChangeClientState(newState, addedTags, removedTags);\n};\nvar _helmetCallback = null;\nvar handleStateChangeOnClient = (newState) => {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(() => {\n commitTagChanges(newState, () => {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\nvar client_default = handleStateChangeOnClient;\n\n// src/Dispatcher.tsx\nvar HelmetDispatcher = class extends Component2 {\n rendered = false;\n shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n }\n componentDidUpdate() {\n this.emitChange();\n }\n componentWillUnmount() {\n const { helmetInstances } = this.props.context;\n helmetInstances.remove(this);\n this.emitChange();\n }\n emitChange() {\n const { helmetInstances, setHelmet } = this.props.context;\n let serverState = null;\n const state = reducePropsToState(\n helmetInstances.get().map((instance) => {\n const props = { ...instance.props };\n delete props.context;\n return props;\n })\n );\n if (HelmetProvider.canUseDOM) {\n client_default(state);\n } else if (server_default) {\n serverState = server_default(state);\n }\n setHelmet(serverState);\n }\n // componentWillMount will be deprecated\n // for SSR, initialize on first render\n // constructor is also unsafe in StrictMode\n init() {\n if (this.rendered) {\n return;\n }\n this.rendered = true;\n const { helmetInstances } = this.props.context;\n helmetInstances.add(this);\n this.emitChange();\n }\n render() {\n this.init();\n return null;\n }\n};\n\n// src/index.tsx\nvar Helmet = class extends Component3 {\n static defaultProps = {\n defer: true,\n encodeSpecialCharacters: true,\n prioritizeSeoTags: false\n };\n shouldComponentUpdate(nextProps) {\n return !fastCompare(without(this.props, \"helmetData\"), without(nextProps, \"helmetData\"));\n }\n mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n switch (child.type) {\n case \"script\" /* SCRIPT */:\n case \"noscript\" /* NOSCRIPT */:\n return {\n innerHTML: nestedChildren\n };\n case \"style\" /* STYLE */:\n return {\n cssText: nestedChildren\n };\n default:\n throw new Error(\n `<${child.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`\n );\n }\n }\n flattenArrayTypeChildren(child, arrayTypeChildren, newChildProps, nestedChildren) {\n return {\n ...arrayTypeChildren,\n [child.type]: [\n ...arrayTypeChildren[child.type] || [],\n {\n ...newChildProps,\n ...this.mapNestedChildrenToProps(child, nestedChildren)\n }\n ]\n };\n }\n mapObjectTypeChildren(child, newProps, newChildProps, nestedChildren) {\n switch (child.type) {\n case \"title\" /* TITLE */:\n return {\n ...newProps,\n [child.type]: nestedChildren,\n titleAttributes: { ...newChildProps }\n };\n case \"body\" /* BODY */:\n return {\n ...newProps,\n bodyAttributes: { ...newChildProps }\n };\n case \"html\" /* HTML */:\n return {\n ...newProps,\n htmlAttributes: { ...newChildProps }\n };\n default:\n return {\n ...newProps,\n [child.type]: { ...newChildProps }\n };\n }\n }\n mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n let newFlattenedProps = { ...newProps };\n Object.keys(arrayTypeChildren).forEach((arrayChildName) => {\n newFlattenedProps = {\n ...newFlattenedProps,\n [arrayChildName]: arrayTypeChildren[arrayChildName]\n };\n });\n return newFlattenedProps;\n }\n warnOnInvalidChildren(child, nestedChildren) {\n invariant(\n VALID_TAG_NAMES.some((name) => child.type === name),\n typeof child.type === \"function\" ? `You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.` : `Only elements types ${VALID_TAG_NAMES.join(\n \", \"\n )} are allowed. Helmet does not support rendering <${child.type}> elements. Refer to our API for more information.`\n );\n invariant(\n !nestedChildren || typeof nestedChildren === \"string\" || Array.isArray(nestedChildren) && !nestedChildren.some((nestedChild) => typeof nestedChild !== \"string\"),\n `Helmet expects a string as a child of <${child.type}>. Did you forget to wrap your children in braces? ( <${child.type}>{\\`\\`}</${child.type}> ) Refer to our API for more information.`\n );\n return true;\n }\n mapChildrenToProps(children, newProps) {\n let arrayTypeChildren = {};\n React3.Children.forEach(children, (child) => {\n if (!child || !child.props) {\n return;\n }\n const { children: nestedChildren, ...childProps } = child.props;\n const newChildProps = Object.keys(childProps).reduce((obj, key) => {\n obj[HTML_TAG_MAP[key] || key] = childProps[key];\n return obj;\n }, {});\n let { type } = child;\n if (typeof type === \"symbol\") {\n type = type.toString();\n } else {\n this.warnOnInvalidChildren(child, nestedChildren);\n }\n switch (type) {\n case \"Symbol(react.fragment)\" /* FRAGMENT */:\n newProps = this.mapChildrenToProps(nestedChildren, newProps);\n break;\n case \"link\" /* LINK */:\n case \"meta\" /* META */:\n case \"noscript\" /* NOSCRIPT */:\n case \"script\" /* SCRIPT */:\n case \"style\" /* STYLE */:\n arrayTypeChildren = this.flattenArrayTypeChildren(\n child,\n arrayTypeChildren,\n newChildProps,\n nestedChildren\n );\n break;\n default:\n newProps = this.mapObjectTypeChildren(child, newProps, newChildProps, nestedChildren);\n break;\n }\n });\n return this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n }\n render() {\n const { children, ...props } = this.props;\n let newProps = { ...props };\n let { helmetData } = props;\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n if (helmetData && !(helmetData instanceof HelmetData)) {\n const data = helmetData;\n helmetData = new HelmetData(data.context, true);\n delete newProps.helmetData;\n }\n return helmetData ? /* @__PURE__ */ React3.createElement(HelmetDispatcher, { ...newProps, context: helmetData.value }) : /* @__PURE__ */ React3.createElement(Context.Consumer, null, (context) => /* @__PURE__ */ React3.createElement(HelmetDispatcher, { ...newProps, context }));\n }\n};\nexport {\n Helmet,\n HelmetData,\n HelmetProvider\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__360__;","module.exports = __WEBPACK_EXTERNAL_MODULE__462__;","module.exports = __WEBPACK_EXTERNAL_MODULE__514__;","// Encapsulates access to \"Build Info\" data.\n\n// BEWARE: This should match the type of build info object generated by\n// Webpack build (see \"/config/webpack/app-base.js\"), and currently this\n// match is not checked automatically.\nexport type BuildInfoT = {\n key: string;\n publicPath: string;\n timestamp: string;\n useServiceWorker: boolean;\n};\n\n// Depending on the build mode & environment, BUILD_INFO is either a global\n// variable defined at the app launch, or it is replaced by the actual value\n// by the Webpack build.\ndeclare const BUILD_INFO: BuildInfoT | undefined;\n\nlet buildInfo: BuildInfoT | undefined;\n\n// On the client side \"BUILD_INFO\" should be injected by Webpack. Note, however,\n// that in test environment we may need situations were environment is mocked as\n// client-side, although no proper Webpack compilation is executed, thus no info\n// injected; because of this we don't do a hard environment check here.\nif (typeof BUILD_INFO !== 'undefined') buildInfo = BUILD_INFO;\n\n/**\n * In scenarious where \"BUILD_INFO\" is not injected by Webpack (server-side,\n * tests, etc.) we expect the host codebase to explicitly set it before it is\n * ever requested. As a precaution, this function throws if build info has been\n * set already, unless `force` flag is explicitly set.\n * @param info\n * @param force\n */\nexport function setBuildInfo(info?: BuildInfoT, force = false) {\n if (buildInfo !== undefined && !force) {\n throw Error('\"Build Info\" is already initialized');\n }\n buildInfo = info;\n}\n\n/**\n * Returns \"Build Info\" object; throws if it has not been initialized yet.\n * @returns\n */\nexport function getBuildInfo(): BuildInfoT {\n if (buildInfo === undefined) {\n throw Error('\"Build Info\" has not been initialized yet');\n }\n return buildInfo;\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","// Encapsulates retrieval of server-side data injection into HTML template.\n\n/* global document */\n\n// Note: this way, only required part of \"node-forge\": AES, and some utils,\n// is bundled into client-side code.\nimport forge from 'node-forge/lib/forge';\nimport 'node-forge/lib/aes';\n\nimport type { InjT } from 'utils/globalState';\n\nimport { getBuildInfo } from 'utils/isomorphy/buildInfo';\n\n// Safeguard is needed here, because the server-side version of Docusaurus docs\n// is compiled (at least now) with settings suggesting it is a client-side\n// environment, but there is no document.\nlet inj: InjT = {};\n\nconst metaElement: HTMLMetaElement | null = typeof document !== 'undefined'\n ? document.querySelector('meta[itemprop=\"drpruinj\"]') : null;\n\nif (metaElement) {\n metaElement.remove();\n let data = forge.util.decode64(metaElement.content);\n\n const { key } = getBuildInfo();\n const d = forge.cipher.createDecipher('AES-CBC', key);\n d.start({ iv: data.slice(0, key.length) });\n d.update(forge.util.createBuffer(data.slice(key.length)));\n d.finish();\n\n data = forge.util.decodeUtf8(d.output.data);\n inj = eval(`(${data})`); // eslint-disable-line no-eval\n} else if (typeof window !== 'undefined' && window.REACT_UTILS_INJECTION) {\n inj = window.REACT_UTILS_INJECTION;\n delete window.REACT_UTILS_INJECTION;\n} else {\n // Otherwise, a bunch of dependent stuff will easily fail in non-standard\n // environments, where no client-side initialization is performed. Like tests,\n // Docusaurus examples, etc.\n inj = {};\n}\n\nexport default function getInj(): InjT {\n return inj;\n}\n","/**\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","module.exports = __WEBPACK_EXTERNAL_MODULE__707__;","import { getBuildInfo } from './buildInfo';\nimport { IS_CLIENT_SIDE, IS_SERVER_SIDE } from './environment-check';\n\n/**\n * @ignore\n * @return {string} Code mode: \"development\" or \"production\".\n */\nfunction getMode() {\n return process.env.NODE_ENV;\n}\n\n/**\n * Returns `true` if development version of the code is running;\n * `false` otherwise.\n * @return {boolean}\n */\nexport function isDevBuild() {\n return getMode() === 'development';\n}\n\n/**\n * Returns `true` if production build of the code is running;\n * `false` otherwise.\n * @return {boolean}\n */\nexport function isProdBuild() {\n return getMode() === 'production';\n}\n\n/**\n * Returns build timestamp of the front-end JS bundle.\n * @return {string} ISO date/time string.\n */\nexport function buildTimestamp() {\n return getBuildInfo().timestamp;\n}\n\nexport { IS_CLIENT_SIDE, IS_SERVER_SIDE, getBuildInfo };\n","module.exports = __WEBPACK_EXTERNAL_MODULE__814__;","module.exports = __WEBPACK_EXTERNAL_MODULE__859__;","module.exports = __WEBPACK_EXTERNAL_MODULE__864__;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__958__;","// Initialization of client-side code.\n/* global document */\n\nimport { type ComponentType } from 'react';\nimport { createRoot, hydrateRoot } from 'react-dom/client';\nimport { HelmetProvider } from '@dr.pogodin/react-helmet';\nimport { BrowserRouter } from 'react-router';\n\nimport { GlobalStateProvider } from '@dr.pogodin/react-global-state';\n\nimport getInj from './getInj';\n\ntype OptionsT = {\n dontHydrate?: boolean;\n initialState?: any;\n};\n\n/**\n * Prepares and launches the app at client side.\n * @param Application Root application component\n * @param [options={}] Optional. Additional settings.\n */\nexport default function Launch(\n Application: ComponentType,\n options: OptionsT = {},\n) {\n const container = document.getElementById('react-view');\n if (!container) throw Error('Failed to find container for React app');\n const scene = (\n <GlobalStateProvider initialState={getInj().ISTATE || options.initialState}>\n <BrowserRouter>\n <HelmetProvider>\n <Application />\n </HelmetProvider>\n </BrowserRouter>\n </GlobalStateProvider>\n );\n\n if (options.dontHydrate) {\n const root = createRoot(container);\n root.render(scene);\n } else hydrateRoot(container, scene);\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* global document */\n\nimport { IS_CLIENT_SIDE } from './isomorphy/environment-check';\nimport { requireWeak } from './webpack';\n\nconst config = (\n IS_CLIENT_SIDE\n // eslint-disable-next-line global-require\n ? require('client/getInj').default().CONFIG\n : requireWeak('config')\n) || {};\n\n// The safeguard for \"document\" is necessary because in non-Node environments,\n// like React Native, IS_CLIENT_SIDE is \"true\", however \"document\" and a bunch\n// of other browser-world features are not available.\nif (IS_CLIENT_SIDE && typeof document !== 'undefined') {\n const cookie = require('cookie'); // eslint-disable-line global-require\n config.CSRF = cookie.parse(document.cookie).csrfToken;\n}\n\nexport default config;\n","import type { Request } from 'express';\n\nimport { type SsrContext, withGlobalStateType } from '@dr.pogodin/react-global-state';\n\nexport type ChunkGroupsT = {\n [chunkName: string]: string[];\n};\n\n// The type of data object injected by server into generated markup.\nexport type InjT = {\n CHUNK_GROUPS?: ChunkGroupsT;\n CONFIG?: { [key: string]: any },\n ISTATE?: unknown;\n};\n\ndeclare global {\n interface Window {\n REACT_UTILS_INJECTION?: InjT;\n }\n}\n\nexport interface SsrContextT<StateT> extends SsrContext<StateT> {\n chunkGroups: ChunkGroupsT;\n chunks: string[];\n req: Request,\n status: number;\n}\n\nconst {\n getSsrContext,\n} = withGlobalStateType<unknown, SsrContextT<unknown>>();\n\nexport {\n getSsrContext,\n};\n","import { serialize } from 'cookie';\nimport dayjs from 'dayjs';\nimport { useEffect } from 'react';\n\nimport {\n DAY_MS,\n HOUR_MS,\n MIN_MS,\n SEC_MS,\n YEAR_MS,\n timer,\n} from '@dr.pogodin/js-utils';\n\nimport { type ForceT, useGlobalState } from '@dr.pogodin/react-global-state';\n\nimport { getSsrContext } from './globalState';\n\n/**\n * This react hook wraps Date.now() function in a SSR friendly way,\n * ensuring that all calls to useCurrent() within the same render return\n * exactly the same time (which is retrieved from Date.now() first, and\n * then stored in the global state to be reused in all other calls), which\n * is also passed and used in the first client side render, and then updated\n * with a finite precision to avoid infinite re-rendering loops.\n */\n// TODO: Should we request the state type as generic parameter, to be able\n// to verify the give globalStatePath is correct?\nexport function useCurrent({\n autorefresh = false,\n globalStatePath = 'currentTime',\n precision = 5 * SEC_MS,\n} = {}): number {\n const [now, setter] = useGlobalState<ForceT, number>(globalStatePath, Date.now);\n useEffect(() => {\n let timerId: NodeJS.Timeout;\n const update = () => {\n setter((old) => {\n const neu = Date.now();\n return Math.abs(neu - old) > precision ? neu : old;\n });\n if (autorefresh) timerId = setTimeout(update, precision);\n };\n update();\n return () => {\n if (timerId) clearTimeout(timerId);\n };\n }, [autorefresh, precision, setter]);\n return now;\n}\n\n/**\n * Wraps the standard Date.getTimezoneOffset() method in a SSR-friendly way.\n * This hook retrieves the offset value at the client side and uses a cookie\n * to pass it to the server in subsequent requests from that user. At the server\n * side the value from cookie is used in renders and passed back to the client\n * via the global state. Prior to the value being known (in the very first\n * request from the user, when the cookie is still missing), zero value is used\n * as the default value.\n */\n// TODO: Should we request the state type as generic parameter, to be able\n// to verify the give globalStatePath is correct?\nexport function useTimezoneOffset({\n cookieName = 'timezoneOffset',\n globalStatePath = 'timezoneOffset',\n} = {}): number {\n const ssrContext = getSsrContext(false);\n const [offset, setOffset] = useGlobalState<ForceT, number>(globalStatePath, () => {\n const value = cookieName && ssrContext?.req?.cookies?.[cookieName];\n return value ? parseInt(value, 10) : 0;\n });\n useEffect(() => {\n const date = new Date();\n const value = date.getTimezoneOffset();\n setOffset(value);\n if (cookieName) {\n document.cookie = serialize(cookieName, value.toString(), { path: '/' });\n }\n }, [cookieName, setOffset]);\n return offset;\n}\n\nconst time = {\n DAY_MS,\n HOUR_MS,\n MIN_MS,\n SEC_MS,\n YEAR_MS,\n now: Date.now,\n timer,\n useCurrent,\n useTimezoneOffset,\n};\n\nexport default Object.assign(dayjs, time);\n","/* eslint-disable react/jsx-props-no-spreading */\n/* global document */\n\nimport {\n type ComponentType,\n type FunctionComponent,\n type ReactNode,\n type RefObject,\n lazy,\n Suspense,\n useInsertionEffect,\n} from 'react';\n\nimport { Barrier } from '@dr.pogodin/js-utils';\n\nimport { type ChunkGroupsT, getSsrContext } from './globalState';\n\nimport {\n IS_CLIENT_SIDE,\n IS_SERVER_SIDE,\n getBuildInfo,\n} from './isomorphy';\n\n// Note: At the client side we can get chunk groups immediately when loading\n// the module; at the server-side we only can get them within React render flow.\n// Thus, we set and use the following variable at the client-side, and then when\n// needed on the server side, we'll fetch it differently.\nlet clientChunkGroups: ChunkGroupsT;\n\nif (IS_CLIENT_SIDE) {\n // eslint-disable-next-line global-require\n clientChunkGroups = require('client/getInj').default().CHUNK_GROUPS || {};\n}\n\nconst refCounts: { [path: string]: number } = {};\n\nfunction getPublicPath() {\n return getBuildInfo().publicPath;\n}\n\n/**\n * Client-side only! Ensures the specified CSS stylesheet is loaded into\n * the document; loads if it is missing; and does simple reference counting\n * to facilitate future clean-up.\n * @param name\n * @param loadedSheets\n * @param refCount\n * @return\n */\nfunction bookStyleSheet(\n name: string,\n loadedSheets: Set<string>,\n refCount: boolean,\n): Promise<void> | undefined {\n let res: Barrier<void> | undefined;\n const path = `${getPublicPath()}/${name}`;\n const fullPath = `${document.location.origin}${path}`;\n\n if (!loadedSheets.has(fullPath)) {\n let link = document.querySelector(`link[href=\"${path}\"]`);\n\n if (!link) {\n link = document.createElement('link');\n link.setAttribute('rel', 'stylesheet');\n link.setAttribute('href', path);\n document.head.appendChild(link);\n }\n\n res = new Barrier<void>();\n link.addEventListener('load', () => res!.resolve());\n link.addEventListener('error', () => res!.resolve());\n }\n\n if (refCount) {\n const current = refCounts[path] || 0;\n refCounts[path] = 1 + current;\n }\n\n return res;\n}\n\n/**\n * Generates the set of URLs for currently loaded, linked stylesheets.\n * @return\n */\nfunction getLoadedStyleSheets(): Set<string> {\n const res = new Set<string>();\n const { styleSheets } = document;\n for (let i = 0; i < styleSheets.length; ++i) {\n const href = styleSheets[i]?.href;\n if (href) res.add(href);\n }\n return res;\n}\n\nfunction assertChunkName(\n chunkName: string,\n chunkGroups: ChunkGroupsT,\n) {\n if (chunkGroups[chunkName]) return;\n throw Error(`Unknown chunk name \"${chunkName}\"`);\n}\n\n/**\n * Client-side only! Ensures all CSS stylesheets required for the specified\n * code chunk are loaded into the document; loads the missing ones; and does\n * simple reference counting to facilitate future clean-up.\n * @param chunkName Chunk name.\n * @param refCount\n * @return Resolves once all pending stylesheets, necessary for\n * the chunk, are either loaded, or failed to load.\n */\nexport function bookStyleSheets(\n chunkName: string,\n chunkGroups: ChunkGroupsT,\n refCount: boolean,\n): Promise<void> {\n const promises = [];\n const assets = chunkGroups[chunkName];\n if (!assets) return Promise.resolve();\n\n const loadedSheets = getLoadedStyleSheets();\n\n for (let i = 0; i < assets.length; ++i) {\n const asset = assets[i];\n if (asset?.endsWith('.css')) {\n const promise = bookStyleSheet(asset, loadedSheets, refCount);\n if (promise) promises.push(promise);\n }\n }\n\n return promises.length\n ? Promise.allSettled(promises).then()\n : Promise.resolve();\n}\n\n/**\n * Client-side only! Frees from the document all CSS stylesheets that are\n * required by the specified chunk, and have reference counter equal to one\n * (for chunks with larger reference counter values, it just decrements\n * the reference counter).\n * @param {string} chunkName\n */\nexport function freeStyleSheets(\n chunkName: string,\n chunkGroups: ChunkGroupsT,\n) {\n const assets = chunkGroups[chunkName];\n if (!assets) return;\n\n for (let i = 0; i < assets.length; ++i) {\n const asset = assets[i];\n if (asset?.endsWith('.css')) {\n const path = `${getPublicPath()}/${asset}`;\n\n const pathRefCount = refCounts[path];\n if (pathRefCount) {\n if (pathRefCount <= 1) {\n document.head.querySelector(`link[href=\"${path}\"]`)!.remove();\n delete refCounts[path];\n } else refCounts[path] = pathRefCount - 1;\n }\n }\n }\n}\n\n// Holds the set of chunk names already used for splitComponent() calls.\nconst usedChunkNames = new Set();\n\ntype ComponentOrModule<PropsT> = ComponentType<PropsT> | {\n default: ComponentType<PropsT>,\n};\n\n/**\n * Given an async component retrieval function `getComponent()` it creates\n * a special \"code split\" component, which uses <Suspense> to asynchronously\n * load on demand the code required by `getComponent()`.\n * @param options\n * @param options.chunkName\n * @param {function} options.getComponent\n * @param {React.Element} [options.placeholder]\n * @return {React.ElementType}\n */\nexport default function splitComponent<\n ComponentPropsT extends { children?: ReactNode; ref?: RefObject<unknown> },\n>({\n chunkName,\n getComponent,\n placeholder,\n}: {\n chunkName: string;\n getComponent: () => Promise<ComponentOrModule<ComponentPropsT>>,\n placeholder?: ReactNode,\n}) {\n // On the client side we can check right away if the chunk name is known.\n if (IS_CLIENT_SIDE) assertChunkName(chunkName, clientChunkGroups);\n\n // The correct usage of splitComponent() assumes a single call per chunk.\n if (usedChunkNames.has(chunkName)) {\n throw Error(`Repeated splitComponent() call for the chunk \"${chunkName}\"`);\n } else usedChunkNames.add(chunkName);\n\n const LazyComponent = lazy(async () => {\n const resolved = await getComponent();\n const Component = 'default' in resolved ? resolved.default : resolved;\n\n // This pre-loads necessary stylesheets prior to the first mount of\n // the component (the lazy load function is executed by React one at\n // the frist mount).\n if (IS_CLIENT_SIDE) {\n await bookStyleSheets(chunkName, clientChunkGroups, false);\n }\n\n const Wrapper: FunctionComponent<ComponentPropsT> = ({\n children,\n ref,\n ...rest\n }) => {\n // On the server side we'll assert the chunk name here,\n // and also push it to the SSR chunks array.\n if (IS_SERVER_SIDE) {\n const { chunkGroups, chunks } = getSsrContext()!;\n assertChunkName(chunkName, chunkGroups);\n if (!chunks.includes(chunkName)) chunks.push(chunkName);\n }\n\n // This takes care about stylesheets management every time an instance of\n // this component is mounted / unmounted.\n useInsertionEffect(() => {\n bookStyleSheets(chunkName, clientChunkGroups, true);\n return () => freeStyleSheets(chunkName, clientChunkGroups);\n }, []);\n\n return (\n <Component {...(rest as unknown as ComponentPropsT)} ref={ref}>\n {children}\n </Component>\n );\n };\n\n return { default: Wrapper };\n });\n\n const CodeSplit: React.FunctionComponent<ComponentPropsT> = ({\n children,\n ...rest\n }: ComponentPropsT) => (\n <Suspense fallback={placeholder}>\n <LazyComponent {...rest as Parameters<typeof LazyComponent>[0]}>\n {children}\n </LazyComponent>\n </Suspense>\n );\n\n return CodeSplit;\n}\n","import themedImpl, {\n type Theme,\n COMPOSE,\n PRIORITY,\n ThemeProvider,\n} from '@dr.pogodin/react-themes';\n\nimport config from './config';\nimport * as isomorphy from './isomorphy';\nimport time from './time';\nimport * as webpack from './webpack';\n\nexport {\n type Listener,\n Barrier,\n Emitter,\n Semaphore,\n withRetries,\n} from '@dr.pogodin/js-utils';\n\nexport { getSsrContext } from './globalState';\nexport { default as splitComponent } from './splitComponent';\n\ntype ThemedT = typeof themedImpl & {\n COMPOSE: typeof COMPOSE;\n PRIORITY: typeof PRIORITY;\n};\n\nconst themed: ThemedT = themedImpl as ThemedT;\n\nthemed.COMPOSE = COMPOSE;\nthemed.PRIORITY = PRIORITY;\n\nexport {\n type Theme,\n config,\n isomorphy,\n themed,\n ThemeProvider,\n time,\n webpack,\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"scrollingDisabledByModal\":\"_5fRFtF\"};","import {\n type CSSProperties,\n type FunctionComponent,\n type ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport ReactDom from 'react-dom';\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport baseTheme from './base-theme.scss';\nimport S from './styles.scss';\n\ntype PropsT = {\n cancelOnScrolling?: boolean;\n children?: ReactNode;\n dontDisableScrolling?: boolean;\n onCancel?: () => void;\n overlayStyle?: CSSProperties;\n style?: CSSProperties;\n testId?: string;\n testIdForOverlay?: string;\n theme: Theme<'container' | 'overlay'>;\n\n /** @deprecated */\n containerStyle?: CSSProperties;\n};\n\n/**\n * The `<Modal>` component implements a simple themeable modal window, wrapped\n * into the default theme. `<BaseModal>` exposes the base non-themed component.\n * **Children:** Component children are rendered as the modal content.\n * @param {object} props Component properties. Beside props documented below,\n * [Other theming properties](https://www.npmjs.com/package/@dr.pogodin/react-themes#themed-component-properties) are supported as well.\n * @param {function} [props.onCancel] The callback to trigger when user\n * clicks outside the modal, or presses Escape. It is expected to hide the\n * modal.\n * @param {ModalTheme} [props.theme] _Ad hoc_ theme.\n */\nconst BaseModal: FunctionComponent<PropsT> = ({\n cancelOnScrolling,\n children,\n containerStyle,\n dontDisableScrolling,\n onCancel,\n overlayStyle,\n style,\n testId,\n testIdForOverlay,\n theme,\n}) => {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const overlayRef = useRef<HTMLDivElement | null>(null);\n const [portal, setPortal] = useState<HTMLDivElement>();\n\n useEffect(() => {\n const p = document.createElement('div');\n document.body.appendChild(p);\n setPortal(p);\n return () => {\n document.body.removeChild(p);\n };\n }, []);\n\n // Sets up modal cancellation of scrolling, if opted-in.\n useEffect(() => {\n if (cancelOnScrolling && onCancel) {\n window.addEventListener('scroll', onCancel);\n window.addEventListener('wheel', onCancel);\n }\n return () => {\n if (cancelOnScrolling && onCancel) {\n window.removeEventListener('scroll', onCancel);\n window.removeEventListener('wheel', onCancel);\n }\n };\n }, [cancelOnScrolling, onCancel]);\n\n // Disables window scrolling, if it is not opted-out.\n useEffect(() => {\n if (!dontDisableScrolling) {\n document.body.classList.add(S.scrollingDisabledByModal);\n }\n return () => {\n if (!dontDisableScrolling) {\n document.body.classList.remove(S.scrollingDisabledByModal);\n }\n };\n }, [dontDisableScrolling]);\n\n const focusLast = useMemo(() => (\n <div\n onFocus={() => {\n const elems = containerRef.current?.querySelectorAll('*') as NodeListOf<HTMLElement>;\n for (let i = elems.length - 1; i >= 0; --i) {\n elems[i]?.focus();\n if (document.activeElement === elems[i]) return;\n }\n overlayRef.current?.focus();\n }}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={0}\n />\n ), []);\n\n return portal ? ReactDom.createPortal(\n (\n <>\n {focusLast}\n <div\n aria-label=\"Cancel\"\n className={theme.overlay}\n data-testid={\n process.env.NODE_ENV === 'production'\n ? undefined : testIdForOverlay\n }\n onClick={(e) => {\n if (onCancel) {\n onCancel();\n e.stopPropagation();\n }\n }}\n onKeyDown={(e) => {\n if (e.key === 'Escape' && onCancel) {\n onCancel();\n e.stopPropagation();\n }\n }}\n ref={(node) => {\n if (node && node !== overlayRef.current) {\n overlayRef.current = node;\n node.focus();\n }\n }}\n role=\"button\"\n style={overlayStyle}\n tabIndex={0}\n />\n {\n // NOTE: These rules are disabled because our intention is to keep\n // the element non-interactive (thus not on the keyboard focus chain),\n // and it has `onClick` handler merely to stop propagation of click\n // events to its parent container. This is needed because, for example\n // when the modal is wrapped into an interactive element we don't want\n // any clicks inside the modal to bubble-up to that parent element\n // (because visually and logically the modal dialog does not belong\n // to its parent container, where it technically belongs from\n // the HTML mark-up perpective).\n /* eslint-disable jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-noninteractive-element-interactions */\n }\n <div\n aria-modal=\"true\"\n className={theme.container}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n onClick={(e) => e.stopPropagation()}\n onWheel={(event) => event.stopPropagation()}\n ref={containerRef}\n role=\"dialog\"\n style={style ?? containerStyle}\n >\n {children}\n </div>\n {/* eslint-enable jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-noninteractive-element-interactions */}\n <div\n onFocus={() => {\n overlayRef.current?.focus();\n }}\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n tabIndex={0}\n /* eslint-enable jsx-a11y/no-noninteractive-tabindex */\n />\n {focusLast}\n </>\n ),\n portal,\n ) : null;\n};\n\nexport default themed(BaseModal, 'Modal', baseTheme);\n\n/* Non-themed version of the Modal. */\nexport { BaseModal };\n","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"ye2BZo\",\"context\":\"Szmbbz\",\"ad\":\"Ah-Nsc\",\"hoc\":\"Wki41G\",\"container\":\"gyZ4rc\"};","// The stuff common between different dropdown implementations.\n\nimport type { Theme } from '@dr.pogodin/react-themes';\n\ntype ThemeKeyT =\n | 'active'\n | 'arrow'\n | 'container'\n | 'dropdown'\n | 'hiddenOption'\n | 'label'\n | 'option'\n | 'select'\n\n // TODO: This is currently only valid for (native) <Dropdown>,\n // other kinds of selectors should be evaluated, and aligned with this\n // feature, if appropriate.\n | 'invalid'\n\n // TODO: This is only valid for <CustomDropdown>, thus we need to re-factor it\n // into a separate theme spec for that component.\n | 'upward';\n\nexport type ValueT = number | string;\n\nexport type OptionT<NameT> = {\n name?: NameT | null;\n value: ValueT;\n};\n\nexport type OptionsT<NameT> = Readonly<Array<OptionT<NameT> | ValueT>>;\n\nexport type PropsT<\n NameT,\n OnChangeT = React.ChangeEventHandler<HTMLSelectElement>,\n> = {\n filter?: (item: OptionT<NameT> | ValueT) => boolean;\n label?: React.ReactNode;\n onChange?: OnChangeT;\n options: Readonly<OptionsT<NameT>>;\n testId?: string;\n theme: Theme<ThemeKeyT>;\n value?: ValueT;\n};\n\nfunction isValue<T>(x: OptionT<T> | ValueT): x is ValueT {\n const type = typeof x;\n return type === 'number' || type === 'string';\n}\n\n/** Returns option value and name as a tuple. */\nexport function optionValueName<NameT>(\n option: OptionT<NameT> | ValueT,\n): [ValueT, NameT | ValueT] {\n return isValue(option)\n ? [option, option]\n : [option.value, option.name ?? option.value];\n}\n","import {\n type FunctionComponent,\n type ReactNode,\n type RefObject,\n useImperativeHandle,\n useRef,\n} from 'react';\n\nimport { BaseModal } from 'components/Modal';\n\nimport S from './style.scss';\n\nimport {\n type OptionT,\n type OptionsT,\n type ValueT,\n optionValueName,\n} from '../../common';\n\nexport type ContainerPosT = {\n left: number;\n top: number;\n width: number;\n};\n\nexport function areEqual(a?: ContainerPosT, b?: ContainerPosT): boolean {\n return a?.left === b?.left && a?.top === b?.top && a?.width === b?.width;\n}\n\nexport type RefT = {\n measure: () => DOMRect | undefined;\n};\n\ntype PropsT = {\n containerClass: string;\n containerStyle?: ContainerPosT;\n filter?: (item: OptionT<ReactNode> | ValueT) => boolean;\n optionClass: string;\n options: Readonly<OptionsT<ReactNode>>;\n onCancel: () => void;\n onChange: (value: ValueT) => void;\n ref?: RefObject<RefT | null>;\n};\n\nconst Options: FunctionComponent<PropsT> = ({\n containerClass,\n containerStyle,\n filter,\n onCancel,\n onChange,\n optionClass,\n options,\n ref,\n}) => {\n const opsRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(ref, () => ({\n measure: () => {\n const e = opsRef.current?.parentElement;\n if (!e) return undefined;\n\n const rect = opsRef.current!.getBoundingClientRect();\n const style = window.getComputedStyle(e);\n const mBottom = parseFloat(style.marginBottom);\n const mTop = parseFloat(style.marginTop);\n\n rect.height += mBottom + mTop;\n\n return rect;\n },\n }), []);\n\n const optionNodes: ReactNode[] = [];\n for (let i = 0; i < options.length; ++i) {\n const option = options[i];\n if (option !== undefined && (!filter || filter(option))) {\n const [iValue, iName] = optionValueName(option);\n optionNodes.push(\n <div\n className={optionClass}\n onClick={(e) => {\n onChange(iValue);\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n onChange(iValue);\n e.stopPropagation();\n }\n }}\n key={iValue}\n role=\"button\"\n tabIndex={0}\n >\n {iName}\n </div>,\n );\n }\n }\n\n return (\n <BaseModal\n // Closes the dropdown (cancels the selection) on any page scrolling attempt.\n // This is the same native <select> elements do on scrolling, and at least for\n // now we have no reason to deal with complications needed to support open\n // dropdowns during the scrolling (that would need to re-position it in\n // response to the position changes of the root dropdown element).\n cancelOnScrolling\n style={containerStyle}\n dontDisableScrolling\n onCancel={onCancel}\n theme={{\n ad: '',\n hoc: '',\n container: containerClass,\n context: '',\n overlay: S.overlay,\n }}\n >\n <div ref={opsRef}>{optionNodes}</div>\n </BaseModal>\n );\n};\n\nexport default Options;\n","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"jKsMKG\"};","import { useEffect, useRef, useState } from 'react';\n\nimport themed from '@dr.pogodin/react-themes';\n\nimport Options, { type ContainerPosT, type RefT, areEqual } from './Options';\n\nimport defaultTheme from './theme.scss';\n\nimport { type PropsT, type ValueT, optionValueName } from '../common';\n\nconst BaseCustomDropdown: React.FunctionComponent<\nPropsT<React.ReactNode, (value: ValueT) => void>\n> = ({\n filter,\n label,\n onChange,\n options,\n theme,\n value,\n}) => {\n if (!options) throw Error('Internal error');\n\n const [active, setActive] = useState(false);\n\n const dropdownRef = useRef<HTMLDivElement>(null);\n const opsRef = useRef<RefT>(null);\n\n const [opsPos, setOpsPos] = useState<ContainerPosT>();\n const [upward, setUpward] = useState(false);\n\n useEffect(() => {\n if (!active) return undefined;\n\n let id: number;\n const cb = () => {\n const anchor = dropdownRef.current?.getBoundingClientRect();\n const opsRect = opsRef.current?.measure();\n if (anchor && opsRect) {\n const fitsDown = anchor.bottom + opsRect.height\n < (window.visualViewport?.height ?? 0);\n const fitsUp = anchor.top - opsRect.height > 0;\n\n const up = !fitsDown && fitsUp;\n setUpward(up);\n\n const pos = up ? {\n top: anchor.top - opsRect.height - 1,\n left: anchor.left,\n width: anchor.width,\n } : {\n left: anchor.left,\n top: anchor.bottom,\n width: anchor.width,\n };\n\n setOpsPos((now) => (areEqual(now, pos) ? now : pos));\n }\n id = requestAnimationFrame(cb);\n };\n requestAnimationFrame(cb);\n\n return () => {\n cancelAnimationFrame(id);\n };\n }, [active]);\n\n const openList = (\n e: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLDivElement>,\n ) => {\n const view = window.visualViewport;\n const rect = dropdownRef.current!.getBoundingClientRect();\n setActive(true);\n\n // NOTE: This first opens the dropdown off-screen, where it is measured\n // by an effect declared above, and then positioned below, or above\n // the original dropdown element, depending where it fits best\n // (if we first open it downward, it would flick if we immediately\n // move it above, at least with the current position update via local\n // react state, and not imperatively).\n setOpsPos({\n left: view?.width || 0,\n top: view?.height || 0,\n width: rect.width,\n });\n\n e.stopPropagation();\n };\n\n let selected: React.ReactNode = <>&zwnj;</>;\n for (let i = 0; i < options.length; ++i) {\n const option = options[i];\n if (option !== undefined && (!filter || filter(option))) {\n const [iValue, iName] = optionValueName(option);\n if (iValue === value) {\n selected = iName;\n break;\n }\n }\n }\n\n let containerClassName = theme.container;\n if (active) containerClassName += ` ${theme.active}`;\n\n let opsContainerClass = theme.select || '';\n if (upward) {\n containerClassName += ` ${theme.upward}`;\n opsContainerClass += ` ${theme.upward}`;\n }\n\n return (\n <div className={containerClassName}>\n {label === undefined ? null : (\n <div className={theme.label}>{label}</div>\n )}\n <div\n className={theme.dropdown}\n onClick={openList}\n onKeyDown={(e) => {\n if (e.key === 'Enter') openList(e);\n }}\n ref={dropdownRef}\n role=\"listbox\"\n tabIndex={0}\n >\n {selected}\n <div className={theme.arrow} />\n </div>\n {\n active ? (\n <Options\n containerClass={opsContainerClass}\n containerStyle={opsPos}\n onCancel={() => {\n setActive(false);\n }}\n onChange={(newValue) => {\n setActive(false);\n if (onChange) onChange(newValue);\n }}\n optionClass={theme.option || ''}\n options={options}\n ref={opsRef}\n />\n ) : null\n }\n </div>\n );\n};\n\nexport default themed(BaseCustomDropdown, 'CustomDropdown', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"oQKv0Y\",\"context\":\"_9Tod5r\",\"ad\":\"R58zIg\",\"hoc\":\"O-Tp1i\",\"label\":\"YUPUNs\",\"dropdown\":\"pNEyAA\",\"option\":\"LD2Kzy\",\"select\":\"LP5azC\",\"arrow\":\"-wscve\",\"active\":\"k2UDsV\",\"upward\":\"HWRvu4\"};","// Implements dropdown based on the native HTML <select> element.\n\nimport themed from '@dr.pogodin/react-themes';\n\nimport defaultTheme from './theme.scss';\n\nimport { type PropsT, optionValueName } from '../common';\n\n/**\n * Implements a themeable dropdown list. Internally it is rendered with help of\n * the standard HTML `<select>` element, thus the styling support is somewhat\n * limited.\n * @param [props] Component properties.\n * @param [props.filter] Options filter function. If provided, only\n * those elements of `options` list will be used by the dropdown, for which this\n * filter returns `true`.\n * @param [props.label] Dropdown label.\n * @param [props.onChange] Selection event handler.\n * @param [props.options=[]] Array of dropdown\n * options. For string elements the option value and name will be the same.\n * It is allowed to mix DropdownOption and string elements in the same option\n * list.\n * @param [props.theme] _Ad hoc_ theme.\n * @param [props.value] Currently selected value.\n * @param [props....]\n * [Other theming properties](https://www.npmjs.com/package/@dr.pogodin/react-themes#themed-component-properties)\n */\nconst Dropdown: React.FunctionComponent<PropsT<string>> = ({\n filter,\n label,\n onChange,\n options,\n testId,\n theme,\n value,\n}) => {\n if (!options) throw Error('Internal error');\n\n let isValidValue = false;\n const optionElements = [];\n\n for (let i = 0; i < options.length; ++i) {\n const option = options[i];\n if (option !== undefined && (!filter || filter(option))) {\n const [iValue, iName] = optionValueName(option);\n isValidValue ||= iValue === value;\n optionElements.push(\n <option className={theme.option} key={iValue} value={iValue}>\n {iName}\n </option>,\n );\n }\n }\n\n // NOTE: This element represents the current `value` when it does not match\n // any valid option. In Chrome, and some other browsers, we are able to hide\n // it from the opened dropdown; in others, e.g. Safari, the best we can do is\n // to show it as disabled.\n const hiddenOption = isValidValue ? null : (\n <option\n disabled\n className={theme.hiddenOption}\n key=\"__reactUtilsHiddenOption\"\n value={value}\n >\n {value}\n </option>\n );\n\n let selectClassName = theme.select;\n if (!isValidValue) selectClassName += ` ${theme.invalid}`;\n\n return (\n <div className={theme.container}>\n { label === undefined ? null : <div className={theme.label}>{label}</div> }\n <div className={theme.dropdown}>\n <select\n className={selectClassName}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n onChange={onChange}\n value={value}\n >\n {hiddenOption}\n {optionElements}\n </select>\n <div className={theme.arrow} />\n </div>\n </div>\n );\n};\n\nexport default themed(Dropdown, 'Dropdown', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"dropdown\":\"kI9A9U\",\"context\":\"xHyZo4\",\"ad\":\"ADu59e\",\"hoc\":\"FTP2bb\",\"arrow\":\"DubGkT\",\"container\":\"WtSZPd\",\"active\":\"ayMn7O\",\"label\":\"K7JYKw\",\"option\":\"_27pZ6W\",\"hiddenOption\":\"clAKFJ\",\"select\":\"N0Fc14\",\"invalid\":\"wL4umU\"};","import themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport {\n type OptionsT,\n type ValueT,\n optionValueName,\n} from '../common';\n\nimport defaultTheme from './theme.scss';\n\ntype ThemeKeyT =\n | 'container'\n | 'label'\n | 'option'\n | 'options'\n | 'selected';\n\ntype PropsT = {\n label?: React.ReactNode;\n onChange?: (value: ValueT) => void;\n options?: Readonly<OptionsT<React.ReactNode>>;\n theme: Theme<ThemeKeyT>;\n value?: ValueT;\n};\n\nconst BaseSwitch: React.FunctionComponent<PropsT> = ({\n label,\n onChange,\n options,\n theme,\n value,\n}) => {\n if (!options || !theme.option) throw Error('Internal error');\n\n const optionNodes: React.ReactNode[] = [];\n for (let i = 0; i < options?.length; ++i) {\n const option = options[i];\n if (option !== undefined) {\n const [iValue, iName] = optionValueName(option);\n\n let className: string = theme.option;\n let onPress: (() => void) | undefined;\n if (iValue === value) className += ` ${theme.selected}`;\n else if (onChange) onPress = () => onChange(iValue);\n\n optionNodes.push(\n onPress ? (\n <div\n className={className}\n onClick={onPress}\n onKeyDown={(e) => {\n if (onPress && e.key === 'Enter') onPress();\n }}\n key={iValue}\n role=\"button\"\n tabIndex={0}\n >\n {iName}\n </div>\n ) : (\n <div className={className} key={iValue}>{iName}</div>\n ),\n );\n }\n }\n\n return (\n <div className={theme.container}>\n {label ? <div className={theme.label}>{label}</div> : null}\n <div className={theme.options}>\n {optionNodes}\n </div>\n </div>\n );\n};\n\nexport default themed(BaseSwitch, 'Switch', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"AWNvRj\",\"context\":\"VMHfnP\",\"ad\":\"HNliRC\",\"hoc\":\"_2Ue-db\",\"option\":\"fUfIAd\",\"selected\":\"Wco-qk\",\"options\":\"CZYtcC\"};","import type { ReactNode } from 'react';\n\nimport type {\n Link,\n LinkProps,\n NavLink,\n NavLinkProps,\n} from 'react-router';\n\nimport './style.scss';\n\ntype LinkT = typeof Link;\ntype NavLinkT = typeof NavLink;\n\ntype ToT = Parameters<typeof Link>[0]['to'];\n\nexport type PropsT = {\n children?: ReactNode;\n className?: string;\n disabled?: boolean;\n enforceA?: boolean;\n keepScrollPosition?: boolean;\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n onMouseDown?: React.MouseEventHandler<HTMLAnchorElement>;\n openNewTab?: boolean;\n replace?: boolean;\n routerLinkType: LinkT | NavLinkT;\n to: ToT;\n};\n\n/**\n * The `<Link>` component, and almost identical `<NavLink>` component, are\n * auxiliary wrappers around\n * [React Router](https://github.com/ReactTraining/react-router)'s\n * `<Link>` and `<NavLink>` components; they help to handle external and\n * internal links in uniform manner.\n *\n * @param [props] Component properties.\n * @param [props.className] CSS classes to apply to the link.\n * @param [props.disabled] Disables the link.\n * @param [props.enforceA] `true` enforces rendering of the link as\n * a simple `<a>` element.\n * @param [props.keepScrollPosition] If `true`, and the link is\n * rendered as a React Router's component, it won't reset the viewport scrolling\n * position to the origin when clicked.\n * @param [props.onClick] Event handler to trigger upon click.\n * @param [props.onMouseDown] Event handler to trigger on MouseDown\n * event.\n * @param [props.openNewTab] If `true` the link opens in a new tab.\n * @param [props.replace] When `true`, the link will replace current\n * entry in the history stack instead of adding a new one.\n * @param [props.to] Link URL.\n * @param [props.activeClassName] **`<NavLink>`** only: CSS class(es)\n * to apply to rendered link when it is active.\n * @param [props.activeStyle] **`<NavLink>`** only: CSS styles\n * to apply to the rendered link when it is active.\n * @param [props.exact] **`<NavLink>`** only: if `true`, the active\n * class/style will only be applied if the location is matched exactly.\n * @param [props.isActive] **`<NavLink>`** only: Add extra\n * logic for determining whether the link is active. This should be used if you\n * want to do more than verify that the link’s pathname matches the current URL\n * pathname.\n * @param [props.location] **`<NavLink>`** only: `isActive` compares\n * current history location (usually the current browser URL). To compare to\n * a different location, a custom `location` can be passed.\n * @param [props.strict] **`<NavLink>`** only: . When `true`, trailing\n * slash on a location’s pathname will be taken into consideration when\n * determining if the location matches the current URL. See the `<Route strict>`\n * documentation for more information.\n */\nconst GenericLink = ({\n children,\n className,\n disabled,\n enforceA,\n keepScrollPosition,\n onClick,\n onMouseDown,\n openNewTab,\n replace,\n routerLinkType,\n to,\n ...rest\n}: (LinkProps | NavLinkProps) & PropsT): ReactNode => {\n /* Renders Link as <a> element if:\n * - It is opted explicitely by `enforceA` prop;\n * - It should be opened in a new tab;\n * - It is an absolte URL (starts with http:// or https://);\n * - It is anchor link (starts with #). */\n if (disabled || enforceA || openNewTab || (to as string)?.match(/^(#|(https?|mailto):)/)) {\n return (\n <a\n className={className}\n // TODO: This requires a fix: disabled is not really an attribute of <a>\n // tag, thus for disabled option we rather should render a plain text\n // styled as a link.\n // disabled={disabled}\n href={to as string}\n onClick={disabled ? (e) => e.preventDefault() : onClick}\n onMouseDown={disabled ? (e) => e.preventDefault() : onMouseDown}\n rel=\"noopener noreferrer\"\n styleName=\"link\"\n target={openNewTab ? '_blank' : ''}\n >\n {children}\n </a>\n );\n }\n\n const L = routerLinkType;\n\n return (\n <L\n className={className}\n discover=\"none\"\n // disabled\n onMouseDown={onMouseDown}\n replace={replace}\n to={to!}\n onClick={(e: React.MouseEvent<HTMLAnchorElement>) => {\n // Executes the user-provided event handler, if any.\n if (onClick) onClick(e);\n\n // By default, clicking the link scrolls the page to beginning.\n if (!keepScrollPosition) window.scroll(0, 0);\n }}\n {...rest} // eslint-disable-line react/jsx-props-no-spreading\n >\n {children}\n </L>\n );\n};\n\nexport default GenericLink;\n","/**\n * The Link wraps around React Router's Link component, to automatically replace\n * it by the regular <a> element when:\n * - The target reference points to another domain;\n * - User opts to open the reference in a new tab;\n * - User explicitely opts to use <a>.\n */\n\nimport { type LinkProps, Link as RrLink } from 'react-router';\n\nimport GenericLink, { type PropsT as GenericLinkPropsT } from './GenericLink';\n\ntype PropsT = Omit<GenericLinkPropsT, 'routerLinkType'> & LinkProps;\n\nconst Link: React.FunctionComponent<PropsT> = (props) => (\n /* eslint-disable react/jsx-props-no-spreading */\n <GenericLink {...props} routerLinkType={RrLink} />\n /* eslint-enable react/jsx-props-no-spreading */\n);\n\nexport default Link;\n","// The <Button> component implements a standard button / button-like link.\n\nimport type { PointerEventHandler, ReactNode } from 'react';\n\nimport Link from 'components/Link';\n\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport defaultTheme from './style.scss';\n\ntype PropsT = {\n active?: boolean;\n children?: ReactNode;\n disabled?: boolean;\n enforceA?: boolean;\n onClick?: React.MouseEventHandler & React.KeyboardEventHandler;\n onMouseDown?: React.MouseEventHandler;\n onPointerDown?: PointerEventHandler;\n openNewTab?: boolean;\n replace?: boolean;\n testId?: string;\n theme: Theme<'active' | 'button' | 'disabled'>;\n // TODO: It needs a more precise typing of the object option.\n to?: object | string;\n};\n\n/* eslint-disable react/function-component-definition */\nexport const BaseButton: React.FunctionComponent<PropsT> = ({\n active,\n children,\n disabled,\n enforceA,\n onClick,\n onMouseDown,\n onPointerDown,\n openNewTab,\n replace,\n testId,\n theme,\n to,\n}) => {\n let className = theme.button;\n if (active && theme.active) className += ` ${theme.active}`;\n if (disabled) {\n if (theme.disabled) className += ` ${theme.disabled}`;\n return (\n <div\n className={className}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n >\n {children}\n </div>\n );\n }\n if (to) {\n return (\n <Link\n className={className}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n enforceA={enforceA}\n onClick={onClick}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n openNewTab={openNewTab}\n replace={replace}\n to={to}\n >\n {children}\n </Link>\n );\n }\n\n return (\n <div\n className={className}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n onClick={onClick}\n onKeyDown={onClick && ((e) => {\n if (e.key === 'Enter') onClick(e);\n })}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n role=\"button\"\n tabIndex={0}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Button component theme: a map of CSS\n * class names to append to button elements:\n * @prop {string} [active] to the root element of active button.\n * @prop {string} [button] to the root element of any button.\n * @prop {string} [disabled] to the root element of disabled button.\n */\nexport default themed(BaseButton, 'Button', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"E1FNQT\",\"context\":\"KM0v4f\",\"ad\":\"_3jm1-Q\",\"hoc\":\"_0plpDL\",\"active\":\"MAe9O6\",\"disabled\":\"Br9IWV\"};","import themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport defaultTheme from './theme.scss';\n\ntype PropT<ValueT> = {\n checked?: ValueT;\n disabled?: boolean;\n label?: React.ReactNode;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n testId?: string;\n theme: Theme<\n | 'checkbox'\n | 'container'\n | 'disabled'\n | 'indeterminate'\n | 'label'\n >;\n};\n\nconst Checkbox = <ValueT extends boolean | 'indeterminate' = boolean>({\n checked,\n disabled,\n label,\n onChange,\n testId,\n theme,\n}: PropT<ValueT>) => {\n let containerClassName = theme.container;\n if (disabled) containerClassName += ` ${theme.disabled}`;\n\n let checkboxClassName = theme.checkbox;\n if (checked === 'indeterminate') checkboxClassName += ` ${theme.indeterminate}`;\n\n return (\n <div className={containerClassName}>\n { label === undefined ? null : <div className={theme.label}>{label}</div> }\n <input\n checked={checked === undefined ? undefined : checked === true}\n className={checkboxClassName}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n disabled={disabled}\n onChange={onChange}\n onClick={(e) => e.stopPropagation()}\n type=\"checkbox\"\n />\n </div>\n );\n};\n\nexport default themed(Checkbox, 'Checkbox', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"checkbox\":\"A-f8qJ\",\"context\":\"dNQcC6\",\"ad\":\"earXxa\",\"hoc\":\"qAPfQ6\",\"indeterminate\":\"N9bCb8\",\"container\":\"Kr0g3M\",\"label\":\"_3dML-O\",\"disabled\":\"EzQra1\"};","import type { FunctionComponent, Ref } from 'react';\n\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport defaultTheme from './theme.scss';\n\ntype ThemeKeyT =\n | 'container'\n | 'input'\n | 'label';\n\ntype PropsT = React.InputHTMLAttributes<HTMLInputElement> & {\n label?: React.ReactNode;\n ref?: Ref<HTMLInputElement>;\n testId?: string;\n theme: Theme<ThemeKeyT>;\n};\n\n/**\n * Themeable input field, based on the standard HTML `<input>` element.\n * @param [props.label] Input label.\n * @param [props.theme] _Ad hoc_ theme.\n * @param [props...] [Other theming properties](https://www.npmjs.com/package/@dr.pogodin/react-themes#themed-component-properties)\n * @param [props...] Any other properties are passed to the underlying\n * `<input>` element.\n */\nconst Input: FunctionComponent<PropsT> = ({\n label,\n ref,\n testId,\n theme,\n ...rest\n}) => (\n <span className={theme.container}>\n { label === undefined ? null : <div className={theme.label}>{label}</div> }\n <input\n className={theme.input}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n ref={ref}\n {...rest} // eslint-disable-line react/jsx-props-no-spreading\n />\n </span>\n);\n\nexport default themed(Input, 'Input', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Cxx397\",\"context\":\"X5WszA\",\"ad\":\"_8s7GCr\",\"hoc\":\"TVlBYc\",\"input\":\"M07d4s\",\"label\":\"gfbdq-\"};","import type { ReactNode } from 'react';\n\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport baseTheme from './base-theme.scss';\n\ntype ThemeKeyT =\n | 'container'\n | 'leftSidePanel'\n | 'mainPanel'\n | 'rightSidePanel'\n | 'sidePanel';\n\ntype PropsT = {\n children?: ReactNode;\n leftSidePanelContent?: ReactNode;\n rightSidePanelContent?: ReactNode;\n theme: Theme<ThemeKeyT>;\n};\n\n/**\n * Simple and themeable page layout. It keeps the main content centered in\n * a column of limited width, which fills entire viewport on small screens\n * (under `$screen-md = 1024px` size). At larger screens the column keeps\n * `$screen-md` size, and it is centered at the page, surrounded by side\n * panels, where additional content can be displayed.\n *\n * **Children:** Component children are rendered as the content of main panel.\n * @param {object} [props] Component properties.\n * @param {Node} [props.leftSidePanelContent] The content for left side panel.\n * @param {Node} [props.rightSidePanelContent] The content for right side panel.\n * @param {PageLayoutTheme} [props.theme] _Ad hoc_ theme.\n * @param {...any} [props....]\n * [Other theming properties](https://www.npmjs.com/package/@dr.pogodin/react-themes#themed-component-properties)\n */\nconst PageLayout: React.FunctionComponent<PropsT> = ({\n children,\n leftSidePanelContent,\n rightSidePanelContent,\n theme,\n}) => (\n <div className={theme.container}>\n <div className={[theme.sidePanel, theme.leftSidePanel].join(' ')}>\n {leftSidePanelContent}\n </div>\n <div className={theme.mainPanel}>\n {children}\n </div>\n <div className={[theme.sidePanel, theme.rightSidePanel].join(' ')}>\n {rightSidePanelContent}\n </div>\n </div>\n);\n\nexport default themed(PageLayout, 'PageLayout', baseTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"T3cuHB\",\"context\":\"m4mL-M\",\"ad\":\"m3-mdC\",\"hoc\":\"J15Z4H\",\"mainPanel\":\"pPlQO2\",\"sidePanel\":\"lqNh4h\"};","import {\n type Context as ContextT,\n type FunctionComponent,\n type ReactNode,\n createContext,\n useMemo,\n} from 'react';\n\nimport { Helmet } from '@dr.pogodin/react-helmet';\n\ntype PropsT = {\n children?: ReactNode;\n description: string;\n extraMetaTags?: Array<{\n content: string;\n name: string;\n }>;\n image?: string;\n siteName?: string;\n socialDescription?: string;\n socialTitle?: string;\n title: string;\n url?: string;\n};\n\nconst Context = createContext<PropsT>({\n description: '',\n title: '',\n});\n\n/**\n * Auxiliary wrapper around \"react-helmet\", which helps to inject meta tags\n * (page title, a brief content description, and social media thumbnails) into\n * generated pages.\n */\nconst MetaTags: FunctionComponent<PropsT> & {\n Context: ContextT<PropsT>;\n} = ({\n children,\n description,\n extraMetaTags,\n image,\n siteName,\n socialDescription,\n socialTitle,\n title,\n url,\n}) => {\n const socTitle = socialTitle || title;\n const socDesc = socialDescription || description;\n\n const context = useMemo(() => ({\n description,\n image,\n siteName,\n socialDescription,\n socialTitle,\n title,\n url,\n }), [\n description,\n image,\n siteName,\n socialDescription,\n socialTitle,\n title,\n url,\n ]);\n\n const extra: ReactNode[] = [];\n if (extraMetaTags?.length) {\n for (let i = 0; i < extraMetaTags.length; ++i) {\n const { content, name } = extraMetaTags[i]!;\n extra.push(\n <meta\n content={content}\n name={name}\n key={`extra-meta-tag-${i}`}\n />,\n );\n }\n }\n\n return (\n <>\n <Helmet>\n {/* General tags. */}\n <title>\n {title}\n </title>\n <meta name=\"description\" content={description} />\n\n {/* Twitter cards. */}\n <meta name=\"twitter:card\" content=\"summary_large_image\" />\n <meta name=\"twitter:title\" content={socTitle} />\n <meta name=\"twitter:description\" content={socDesc} />\n { image ? <meta name=\"twitter:image\" content={image} /> : null }\n {\n siteName ? (\n <meta name=\"twitter:site\" content={`@${siteName}`} />\n ) : null\n }\n\n {/* Open Graph data. */}\n <meta name=\"og:title\" content={socTitle} />\n { image ? <meta name=\"og:image\" content={image} /> : null }\n { image ? <meta name=\"og:image:alt\" content={socTitle} /> : null }\n <meta name=\"og:description\" content={socDesc} />\n {\n siteName ? (<meta name=\"og:sitename\" content={siteName} />) : null\n }\n { url ? (<meta name=\"og:url\" content={url} />) : null }\n {extra}\n </Helmet>\n {\n children ? (\n <Context.Provider value={context}>\n {children}\n </Context.Provider>\n ) : null\n }\n </>\n );\n};\n\nMetaTags.Context = Context;\n\nexport default MetaTags;\n","import { type NavLinkProps, NavLink as RrNavLink } from 'react-router';\n\nimport GenericLink, { type PropsT as GenericLinkPropsT } from './GenericLink';\n\ntype PropsT = Omit<GenericLinkPropsT, 'routerLinkType'> & NavLinkProps;\n\nconst NavLink: React.FunctionComponent<PropsT> = (props) => (\n /* eslint-disable react/jsx-props-no-spreading */\n <GenericLink {...props} routerLinkType={RrNavLink} />\n /* eslint-enable react/jsx-props-no-spreading */\n);\n\nexport default NavLink;\n","import themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport defaultTheme from './theme.scss';\n\ntype ThemeKeyT =\n | 'bouncing'\n | 'circle'\n | 'container';\n\ntype PropsT = {\n theme: Theme<ThemeKeyT>;\n};\n\n/**\n * Throbber is an \"action in progress\" indicator, which renders\n * three bouncing circles as a simple pending activity indicator,\n * and can be further themed to a certain degree.\n * @param {object} [props] Component properties.\n * @param {ThrobberTheme} [props.theme] _Ad hoc_ theme.\n * @param {...any} [props....]\n * [Other theming properties](https://www.npmjs.com/package/@dr.pogodin/react-themes#themed-component-properties)\n */\nconst Throbber: React.FunctionComponent<PropsT> = ({ theme }) => (\n <span className={theme.container}>\n <span className={theme.circle} />\n <span className={theme.circle} />\n <span className={theme.circle} />\n </span>\n);\n\nexport default themed(Throbber, 'Throbber', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"_7zdld4\",\"context\":\"uIObt7\",\"ad\":\"XIxe9o\",\"hoc\":\"YOyORH\",\"circle\":\"dBrB4g\",\"bouncing\":\"TJe-6j\"};","/**\n * The actual tooltip component. It is rendered outside the regular document\n * hierarchy, and with sub-components managed without React to achieve the best\n * performance during animation.\n */\n\nimport {\n type FunctionComponent,\n type ReactNode,\n type RefObject,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\n\nimport type { Theme } from '@dr.pogodin/react-themes';\n\n/* Valid placements of the rendered tooltip. They will be overriden when\n * necessary to fit the tooltip within the viewport. */\nexport enum PLACEMENTS {\n ABOVE_CURSOR = 'ABOVE_CURSOR',\n ABOVE_ELEMENT = 'ABOVE_ELEMENT',\n BELOW_CURSOR = 'BELOW_CURSOR',\n BELOW_ELEMENT = 'BELOW_ELEMENT',\n}\n\nconst ARROW_STYLE_DOWN = [\n 'border-bottom-color:transparent',\n 'border-left-color:transparent',\n 'border-right-color:transparent',\n].join(';');\n\nconst ARROW_STYLE_UP = [\n 'border-top-color:transparent',\n 'border-left-color:transparent',\n 'border-right-color:transparent',\n].join(';');\n\ntype ComponentsT = {\n container: HTMLDivElement;\n arrow: HTMLDivElement;\n content: HTMLDivElement;\n};\n\ntype HeapT = {\n lastElement?: HTMLElement;\n lastPageX: number;\n lastPageY: number;\n lastPlacement?: PLACEMENTS | undefined;\n};\n\nexport type ThemeKeysT =\n | 'appearance'\n | 'arrow'\n | 'content'\n | 'container';\n\ntype TooltipThemeT = Theme<ThemeKeysT>;\n\n/**\n * Creates tooltip components.\n * @ignore\n * @param {object} theme Themes to use for tooltip container, arrow,\n * and content.\n * @return {object} Object with DOM references to the container components:\n * container, arrow, content.\n */\nfunction createTooltipComponents(theme: TooltipThemeT): ComponentsT {\n const arrow = document.createElement('div');\n if (theme.arrow) arrow.setAttribute('class', theme.arrow);\n\n const content = document.createElement('div');\n if (theme.content) content.setAttribute('class', theme.content);\n\n const container = document.createElement('div');\n if (theme.container) container.setAttribute('class', theme.container);\n\n container.appendChild(arrow);\n container.appendChild(content);\n document.body.appendChild(container);\n\n return { container, arrow, content };\n}\n\ntype TooltipRectsT = {\n arrow: DOMRect;\n container: DOMRect;\n};\n\n/**\n * Generates bounding client rectangles for tooltip components.\n * @ignore\n * @param tooltip DOM references to the tooltip components.\n * @param tooltip.arrow\n * @param tooltip.container\n * @return Object holding tooltip rectangles in\n * two fields.\n */\nfunction calcTooltipRects(tooltip: ComponentsT): TooltipRectsT {\n return {\n arrow: tooltip.arrow.getBoundingClientRect(),\n container: tooltip.container.getBoundingClientRect(),\n };\n}\n\n/**\n * Calculates the document viewport size.\n * @ignore\n * @return {{x, y, width, height}}\n */\nfunction calcViewportRect() {\n const { scrollX, scrollY } = window;\n const { documentElement: { clientHeight, clientWidth } } = document;\n return {\n left: scrollX,\n right: scrollX + clientWidth,\n top: scrollY,\n bottom: scrollY + clientHeight,\n };\n}\n\n/**\n * Calculates tooltip and arrow positions for the placement just above\n * the cursor.\n * @ignore\n * @param {number} x Cursor page-x position.\n * @param {number} y Cursor page-y position.\n * @param {object} tooltipRects Bounding client rectangles of tooltip parts.\n * @param {object} tooltipRects.arrow\n * @param {object} tooltipRects.container\n * @return {object} Contains the following fields:\n * - {number} arrowX\n * - {number} arrowY\n * - {number} containerX\n * - {number} containerY\n * - {string} baseArrowStyle\n */\nfunction calcPositionAboveXY(\n x: number,\n y: number,\n tooltipRects: TooltipRectsT,\n) {\n const { arrow, container } = tooltipRects;\n return {\n arrowX: 0.5 * (container.width - arrow.width),\n arrowY: container.height,\n containerX: x - container.width / 2,\n containerY: y - container.height - arrow.height / 1.5,\n\n // TODO: Instead of already setting the base style here, we should\n // introduce a set of constants for arrow directions, which will help\n // to do checks dependant on the arrow direction.\n baseArrowStyle: ARROW_STYLE_DOWN,\n };\n}\n\n/*\nconst HIT = {\n NONE: false,\n LEFT: 'LEFT',\n RIGHT: 'RIGHT',\n TOP: 'TOP',\n BOTTOM: 'BOTTOM',\n};\n*/\n\n/**\n * Checks whether\n * @param {object} pos\n * @param {object} tooltipRects\n * @param {object} viewportRect\n * @return {HIT}\n */\n/*\nfunction checkViewportFit(pos, tooltipRects, viewportRect) {\n const { containerX, containerY } = pos;\n if (containerX < viewportRect.left + 6) return HIT.LEFT;\n if (containerX > viewportRect.right - 6) return HIT.RIGHT;\n return HIT.NONE;\n}\n*/\n\n/**\n * Shifts tooltip horizontally to fit into the viewport, while keeping\n * the arrow pointed to the XY point.\n * @param {number} x\n * @param {number} y\n * @param {object} pos\n * @param {number} pageXOffset\n * @param {number} pageXWidth\n */\n/*\nfunction xPageFitCorrection(x, y, pos, pageXOffset, pageXWidth) {\n if (pos.containerX < pageXOffset + 6) {\n pos.containerX = pageXOffset + 6;\n pos.arrowX = Math.max(6, pageX - containerX - arrowRect.width / 2);\n } else {\n const maxX = pageXOffset + docRect.width - containerRect.width - 6;\n if (containerX > maxX) {\n containerX = maxX;\n arrowX = Math.min(\n containerRect.width - 6,\n pageX - containerX - arrowRect.width / 2,\n );\n }\n }\n}\n*/\n\n/**\n * Sets positions of tooltip components to point the tooltip to the specified\n * page point.\n * @ignore\n * @param pageX\n * @param pageY\n * @param placement\n * @param element DOM reference to the element wrapped by the tooltip.\n * @param tooltip\n * @param tooltip.arrow DOM reference to the tooltip arrow.\n * @param tooltip.container DOM reference to the tooltip container.\n */\nfunction setComponentPositions(\n pageX: number,\n pageY: number,\n placement: PLACEMENTS | undefined,\n element: HTMLElement | undefined,\n tooltip: ComponentsT,\n) {\n const tooltipRects = calcTooltipRects(tooltip);\n const viewportRect = calcViewportRect();\n\n /* Default container coords: tooltip at the top. */\n const pos = calcPositionAboveXY(pageX, pageY, tooltipRects);\n\n if (pos.containerX < viewportRect.left + 6) {\n pos.containerX = viewportRect.left + 6;\n pos.arrowX = Math.max(\n 6,\n pageX - pos.containerX - tooltipRects.arrow.width / 2,\n );\n } else {\n const maxX = viewportRect.right - 6 - tooltipRects.container.width;\n if (pos.containerX > maxX) {\n pos.containerX = maxX;\n pos.arrowX = Math.min(\n tooltipRects.container.width - 6,\n pageX - pos.containerX - tooltipRects.arrow.width / 2,\n );\n }\n }\n\n /* If tooltip has not enough space on top - make it bottom tooltip. */\n if (pos.containerY < viewportRect.top + 6) {\n pos.containerY += tooltipRects.container.height\n + 2 * tooltipRects.arrow.height;\n pos.arrowY -= tooltipRects.container.height\n + tooltipRects.arrow.height;\n pos.baseArrowStyle = ARROW_STYLE_UP;\n }\n\n const containerStyle = `left:${pos.containerX}px;top:${pos.containerY}px`;\n tooltip.container.setAttribute('style', containerStyle);\n\n const arrowStyle = `${pos.baseArrowStyle};left:${pos.arrowX}px;top:${pos.arrowY}px`;\n tooltip.arrow.setAttribute('style', arrowStyle);\n}\n\n/* The Tooltip component itself. */\nconst Tooltip: FunctionComponent<{\n children?: ReactNode;\n ref?: RefObject<unknown>;\n theme: any;\n}> = ({ children, ref, theme }) => {\n // NOTE: The way it has to be implemented, for clean mounting and unmounting\n // at the client side, the <Tooltip> is fully mounted into DOM in the next\n // rendering cycles, and only then it can be correctly measured and positioned.\n // Thus, when we create the <Tooltip> we have to record its target positioning\n // details, and then apply them when it is created.\n\n const { current: heap } = useRef<HeapT>({\n lastElement: undefined,\n lastPageX: 0,\n lastPageY: 0,\n lastPlacement: undefined,\n });\n\n const [components, setComponents] = useState<ComponentsT | null>(null);\n\n const pointTo = (\n pageX: number,\n pageY: number,\n placement: PLACEMENTS,\n element: HTMLElement,\n ) => {\n heap.lastElement = element;\n heap.lastPageX = pageX;\n heap.lastPageY = pageY;\n heap.lastPlacement = placement;\n\n if (components) {\n setComponentPositions(pageX, pageY, placement, element, components);\n }\n };\n useImperativeHandle(ref, () => ({ pointTo }));\n\n /* Inits and destroys tooltip components. */\n useEffect(() => {\n const x = createTooltipComponents(theme);\n setComponents(x);\n return () => {\n document.body.removeChild(x.container);\n setComponents(null);\n };\n }, [theme]);\n\n useEffect(() => {\n if (components) {\n setComponentPositions(\n heap.lastPageX,\n heap.lastPageY,\n heap.lastPlacement,\n heap.lastElement,\n components,\n );\n }\n }, [\n components,\n // BEWARE: Careful about these dependencies - they are updated when mouse\n // is moved over the tool-tipped element, thus potentially may cause\n // unnecessary firing of this effect on each mouse event. It does not\n // happen now just because the mouse movements themselves are not causing\n // the component re-rendering, thus dependencies of this effect are not\n // really re-evaluated.\n heap.lastPageX,\n heap.lastPageY,\n heap.lastPlacement,\n heap.lastElement,\n ]);\n\n return components ? createPortal(children, components.content) : null;\n};\n\nexport default Tooltip;\n","/* global window */\n\nimport {\n type FunctionComponent,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport Tooltip, {\n type ThemeKeysT as TooltipThemeKeysT,\n PLACEMENTS,\n} from './Tooltip';\n\nimport defaultTheme from './default-theme.scss';\n\ntype PropsT = {\n children?: ReactNode;\n placement?: PLACEMENTS;\n tip?: ReactNode;\n theme: Theme<'wrapper' | TooltipThemeKeysT>;\n};\n\ntype TooltipRefT = {\n pointTo: (\n x: number,\n y: number,\n placement: PLACEMENTS,\n wrapperRef: HTMLDivElement,\n ) => void;\n};\n\ntype HeapT = {\n lastCursorX: number;\n lastCursorY: number;\n triggeredByTouch: boolean;\n timerId?: NodeJS.Timeout;\n};\n\n/**\n * Implements a simple to use and themeable tooltip component, _e.g._\n * ```js\n * <WithTooltip tip=\"This is example tooltip.\">\n * <p>Hover to see the tooltip.</p>\n * </WithTooltip>\n * ```\n * **Children:** Children are rendered in the place of `<WithTooltip>`,\n * and when hovered the tooltip is shown. By default the wrapper itself is\n * `<div>` block with `display: inline-block`.\n * @param tip &ndash; Anything React is able to render,\n * _e.g._ a tooltip text. This will be the tooltip content.\n * @param {WithTooltipTheme} props.theme _Ad hoc_ theme.\n */\nconst Wrapper: FunctionComponent<PropsT> = ({\n children,\n placement = PLACEMENTS.ABOVE_CURSOR,\n tip,\n theme,\n}) => {\n const { current: heap } = useRef<HeapT>({\n lastCursorX: 0,\n lastCursorY: 0,\n triggeredByTouch: false,\n timerId: undefined,\n });\n const tooltipRef = useRef<TooltipRefT>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const updatePortalPosition = (cursorX: number, cursorY: number) => {\n if (!showTooltip) {\n heap.lastCursorX = cursorX;\n heap.lastCursorY = cursorY;\n\n // If tooltip was triggered by a touch, we delay its opening by a bit,\n // to ensure it was not a touch-click - in the case of touch click we\n // want to do the click, rather than show the tooltip, and the delay\n // gives click handler a chance to abort the tooltip openning.\n if (heap.triggeredByTouch) {\n if (!heap.timerId) {\n heap.timerId = setTimeout(() => {\n heap.triggeredByTouch = false;\n heap.timerId = undefined;\n setShowTooltip(true);\n }, 300);\n }\n\n // Otherwise we can just open the tooltip right away.\n } else setShowTooltip(true);\n } else {\n const wrapperRect = wrapperRef.current!.getBoundingClientRect();\n if (\n cursorX < wrapperRect.left\n || cursorX > wrapperRect.right\n || cursorY < wrapperRect.top\n || cursorY > wrapperRect.bottom\n ) {\n setShowTooltip(false);\n } else if (tooltipRef.current) {\n tooltipRef.current.pointTo(\n cursorX + window.scrollX,\n cursorY + window.scrollY,\n placement!,\n wrapperRef.current!,\n );\n }\n }\n };\n\n useEffect(() => {\n if (showTooltip && tip !== null) {\n // This is necessary to ensure that even when a single mouse event\n // arrives to a tool-tipped component, the tooltip is correctly positioned\n // once opened (because similar call above does not have effect until\n // the tooltip is fully mounted, and that is delayed to future rendering\n // cycle due to the implementation).\n if (tooltipRef.current) {\n tooltipRef.current.pointTo(\n heap.lastCursorX + window.scrollX,\n heap.lastCursorY + window.scrollY,\n placement!,\n wrapperRef.current!,\n );\n }\n\n const listener = () => setShowTooltip(false);\n window.addEventListener('scroll', listener);\n return () => window.removeEventListener('scroll', listener);\n }\n return undefined;\n }, [\n heap.lastCursorX,\n heap.lastCursorY,\n placement,\n showTooltip,\n tip,\n ]);\n\n return (\n <div\n className={theme.wrapper}\n onMouseLeave={() => setShowTooltip(false)}\n onMouseMove={(e) => updatePortalPosition(e.clientX, e.clientY)}\n onClick={() => {\n if (heap.timerId) {\n clearTimeout(heap.timerId);\n heap.timerId = undefined;\n heap.triggeredByTouch = false;\n }\n }}\n onTouchStart={() => {\n heap.triggeredByTouch = true;\n }}\n ref={wrapperRef}\n role=\"presentation\"\n >\n {\n showTooltip && tip !== null ? (\n <Tooltip ref={tooltipRef} theme={theme}>{tip}</Tooltip>\n ) : null\n }\n {children}\n </div>\n );\n};\n\nconst ThemedWrapper = themed(Wrapper, 'WithTooltip', defaultTheme);\n\ntype ExportT = typeof ThemedWrapper & {\n PLACEMENTS: typeof PLACEMENTS;\n};\n\nconst e: ExportT = ThemedWrapper as ExportT;\n\ne.PLACEMENTS = PLACEMENTS;\n\nexport default e;\n","// extracted by mini-css-extract-plugin\nexport default {\"arrow\":\"M9gywF\",\"ad\":\"_4xT7zE\",\"hoc\":\"zd-vnH\",\"context\":\"GdZucr\",\"container\":\"f9gY8K\",\"appearance\":\"L4ubm-\",\"wrapper\":\"_4qDBRM\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"jTxmOX\",\"context\":\"dzIcLh\",\"ad\":\"_5a9XX1\",\"hoc\":\"_7sH52O\"};","import qs from 'qs';\n\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport Throbber from 'components/Throbber';\n\nimport baseTheme from './base.scss';\nimport throbberTheme from './throbber.scss';\n\ntype ComponentThemeT = Theme<'container' | 'video'>;\n\ntype PropsT = {\n autoplay?: boolean;\n src: string;\n theme: ComponentThemeT,\n title?: string;\n};\n\n/**\n * A component for embeding a YouTube video.\n * @param [props] Component properties.\n * @param [props.autoplay] If `true` the video will start to play\n * automatically once loaded.\n * @param [props.src] URL of the video to play. Can be in any of\n * the following formats, and keeps any additional query parameters understood\n * by the YouTube IFrame player:\n * - `https://www.youtube.com/watch?v=NdF6Rmt6Ado`\n * - `https://youtu.be/NdF6Rmt6Ado`\n * - `https://www.youtube.com/embed/NdF6Rmt6Ado`\n * @param [props.theme] _Ad hoc_ theme.\n * @param [props.title] The `title` attribute to add to the player\n * IFrame.\n */\nconst YouTubeVideo: React.FunctionComponent<PropsT> = ({\n autoplay,\n src,\n theme,\n title,\n}) => {\n const srcParts = src.split('?');\n let url = srcParts[0];\n const queryString = srcParts[1];\n const query = queryString ? qs.parse(queryString) : {};\n\n const videoId = query.v || url?.match(/\\/([a-zA-Z0-9-_]*)$/)?.[1];\n url = `https://www.youtube.com/embed/${videoId}`;\n\n delete query.v;\n query.autoplay = autoplay ? '1' : '0';\n url += `?${qs.stringify(query)}`;\n\n // TODO: https://developers.google.com/youtube/player_parameters\n // More query parameters can be exposed via the component props.\n\n return (\n <div className={theme.container}>\n <Throbber theme={throbberTheme} />\n <iframe\n allow=\"autoplay\"\n allowFullScreen\n className={theme.video}\n src={url}\n title={title}\n />\n </div>\n );\n};\n\nexport default themed(YouTubeVideo, 'YouTubeVideo', baseTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"sXHM81\",\"context\":\"veKyYi\",\"ad\":\"r3ABzd\",\"hoc\":\"YKcPnR\",\"video\":\"SlV2zw\"};","import {\n type FocusEventHandler,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport defaultTheme from './style.scss';\n\ntype ThemeKeyT =\n | 'container'\n | 'hidden'\n | 'textarea';\n\ntype Props = {\n disabled?: boolean;\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n onChange?: React.ChangeEventHandler<HTMLTextAreaElement>;\n onKeyDown?: React.KeyboardEventHandler<HTMLTextAreaElement>;\n placeholder?: string;\n theme: Theme<ThemeKeyT>;\n value?: string;\n};\n\nconst TextArea: React.FunctionComponent<Props> = ({\n disabled,\n onBlur,\n onChange,\n onKeyDown,\n placeholder,\n theme,\n value,\n}) => {\n const hiddenAreaRef = useRef<HTMLTextAreaElement>(null);\n const [height, setHeight] = useState<number | undefined>();\n\n const [localValue, setLocalValue] = useState(value || '');\n if (value !== undefined && localValue !== value) setLocalValue(value);\n\n // This resizes text area's height when its width is changed for any reason.\n useEffect(() => {\n const el = hiddenAreaRef.current;\n if (!el) return undefined;\n\n const cb = () => {\n setHeight(el.scrollHeight);\n };\n const observer = new ResizeObserver(cb);\n observer.observe(el);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n // This resizes the text area when its content is modified.\n useEffect(() => {\n const el = hiddenAreaRef.current;\n if (el) setHeight(el.scrollHeight);\n }, [localValue]);\n\n return (\n <div className={theme.container}>\n <textarea\n // This text area is hidden underneath the primary one below,\n // and it is used for text measurements, to implement auto-scaling\n // of the primary textarea's height.\n readOnly\n ref={hiddenAreaRef}\n className={`${theme.textarea} ${theme.hidden}`}\n value={localValue}\n />\n <textarea\n disabled={disabled}\n onBlur={onBlur}\n // When value is \"undefined\" the text area is not-managed, and we should\n // manage it internally for the measurement / resizing functionality\n // to work.\n onChange={value === undefined ? ((e) => {\n setLocalValue(e.target.value);\n }) : onChange}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n style={{ height }}\n className={theme.textarea}\n value={localValue}\n />\n </div>\n );\n};\n\nexport default themed(TextArea, 'TextArea', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"dzMVIB\",\"context\":\"KVPc7g\",\"ad\":\"z2GQ0Z\",\"hoc\":\"_8R1Qdj\",\"textarea\":\"zd-OFg\",\"hidden\":\"GiHBXI\"};","import 'styles/global.scss';\n\nimport { webpack } from 'utils';\n\nimport type ServerFactoryT from './server';\n\nconst server = webpack.requireWeak('./server', __dirname) as (typeof ServerFactoryT) | null;\n\nconst client = server ? undefined : require('./client').default;\n\nexport {\n type AsyncCollectionT,\n type AsyncCollectionLoaderT,\n type AsyncDataEnvelopeT,\n type AsyncDataLoaderT,\n type ForceT,\n type UseAsyncDataOptionsT,\n type UseAsyncDataResT,\n type UseGlobalStateResT,\n type ValueOrInitializerT,\n getGlobalState,\n GlobalStateProvider,\n newAsyncDataEnvelope,\n useAsyncCollection,\n useAsyncData,\n useGlobalState,\n withGlobalStateType,\n} from '@dr.pogodin/react-global-state';\n\nexport * from 'components';\n\nexport {\n type BeforeRenderResT,\n type BeforeRenderT,\n type ConfigT,\n type ServerSsrContext,\n type ServerT,\n} from './server';\n\nexport {\n type Listener,\n type Theme,\n config,\n Barrier,\n Emitter,\n isomorphy,\n getSsrContext,\n Semaphore,\n splitComponent,\n themed,\n ThemeProvider,\n time,\n webpack,\n withRetries,\n} from 'utils';\n\nexport { client, server };\n"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__864__","__WEBPACK_EXTERNAL_MODULE__126__","__WEBPACK_EXTERNAL_MODULE__859__","__WEBPACK_EXTERNAL_MODULE__462__","__WEBPACK_EXTERNAL_MODULE__185__","__WEBPACK_EXTERNAL_MODULE__958__","__WEBPACK_EXTERNAL_MODULE__814__","__WEBPACK_EXTERNAL_MODULE__360__","__WEBPACK_EXTERNAL_MODULE__155__","__WEBPACK_EXTERNAL_MODULE__514__","__WEBPACK_EXTERNAL_MODULE__236__","__WEBPACK_EXTERNAL_MODULE__707__","IS_CLIENT_SIDE","process","versions","node","global","REACT_UTILS_FORCE_CLIENT_SIDE","IS_SERVER_SIDE","requireWeak","modulePath","basePath","resolve","eval","path","default","def","named","res","Object","entries","forEach","_ref","name","value","assigned","undefined","Error","resolveWeak","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","a","b","constructor","length","i","keys","it","Array","isArray","size","next","done","has","get","RegExp","source","flags","valueOf","prototype","toString","hasOwnProperty","call","$$typeof","error","message","match","console","warn","REACT_ELEMENT_TYPE","Symbol","for","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","ref","props","Fragment","jsx","jsxs","TAG_NAMES","TAG_NAMES2","SEO_PRIORITY_TAGS","rel","charset","property","VALID_TAG_NAMES","values","REACT_TAG_MAP","accesskey","class","contenteditable","contextmenu","itemprop","tabindex","HTML_TAG_MAP","reduce","carry","HELMET_ATTRIBUTE","getInnermostProperty","propsList","getTitleFromPropsList","innermostTitle","innermostTemplate","join","replace","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","filter","map","tagAttrs","current","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","tag","lowerCaseAttributeKey","toLowerCase","indexOf","concat","getTagsFromPropsList","tagName","approvedSeenTags","msg","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","keys2","attributeKey","push","tagUnion","getAnyTrueFromPropsList","checkedTag","index","flattenArray","possibleArray","prioritizer","elementsList","propsToMatch","acc","elementAttrs","toMatch","includes","checkIfPropsMatch","priority","without","obj","SELF_CLOSING_TAGS","encodeSpecialCharacters","str","encode","String","generateElementAttributesAsString","attributes","attr","convertElementAttributesToReactProps","initProps","generateTagsAsReactComponent","tags","mappedTag","attribute","mappedAttribute","content","innerHTML","cssText","dangerouslySetInnerHTML","__html","getMethodsForTag","toComponent","_type","title","generateTitleAsReactComponent","titleAttributes","attributeString","flattenedTitle","generateTitleAsString","t","attributeHtml","string","tagContent","isSelfClosing","generateTagsAsString","server_default","baseTag","bodyAttributes","htmlAttributes","noscriptTags","styleTags","prioritizeSeoTags","linkTags","metaTags","scriptTags","priorityMethods","meta","link","script","getPriorityMethods","base","noscript","style","instances","isDocument","window","document","createElement","HelmetData","canUseDOM","context","setHelmet","serverState","helmet","helmetInstances","add","instance","remove","splice","Context","HelmetProvider","_HelmetProvider","Component","static","helmetData","super","render","Provider","children","updateTags","headElement","head","querySelector","tagNodes","querySelectorAll","oldTags","slice","newTags","indexToDelete","newElement","styleSheet","appendChild","createTextNode","setAttribute","some","existingTag","isEqualNode","parentNode","removeChild","updateAttributes","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","split","attributesToRemove","attributeKeys","indexToSave","removeAttribute","commitTagChanges","newState","cb","onChangeClientState","updateTitle","tagUpdates","addedTags","removedTags","_helmetCallback","HelmetDispatcher","rendered","shouldComponentUpdate","nextProps","componentDidUpdate","emitChange","componentWillUnmount","state","defer","cancelAnimationFrame","requestAnimationFrame","init","Helmet","mapNestedChildrenToProps","child","nestedChildren","flattenArrayTypeChildren","arrayTypeChildren","newChildProps","mapObjectTypeChildren","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","warnOnInvalidChildren","nestedChild","mapChildrenToProps","childProps","Consumer","buildInfo","getBuildInfo","BUILD_INFO","objA","objB","compare","compareContext","ret","keysA","keysB","bHasOwnProperty","bind","idx","valueA","valueB","inj","metaElement","data","forge","decode64","d","createDecipher","start","iv","update","createBuffer","finish","decodeUtf8","output","REACT_UTILS_INJECTION","getInj","condition","format","c","e","f","args","argIndex","framesToPop","isDevBuild","getMode","isProdBuild","buildTimestamp","timestamp","Launch","Application","options","arguments","container","getElementById","scene","_jsx","GlobalStateProvider","initialState","ISTATE","BrowserRouter","dontHydrate","createRoot","hydrateRoot","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","definition","o","defineProperty","enumerable","g","globalThis","Function","prop","r","toStringTag","CONFIG","cookie","CSRF","parse","csrfToken","getSsrContext","withGlobalStateType","time","DAY_MS","HOUR_MS","MIN_MS","SEC_MS","YEAR_MS","now","Date","timer","useCurrent","autorefresh","globalStatePath","precision","setter","useGlobalState","useEffect","timerId","old","neu","Math","abs","setTimeout","clearTimeout","useTimezoneOffset","cookieName","ssrContext","offset","setOffset","_ssrContext$req","req","cookies","parseInt","getTimezoneOffset","serialize","assign","dayjs","clientChunkGroups","CHUNK_GROUPS","refCounts","getPublicPath","publicPath","bookStyleSheet","loadedSheets","refCount","fullPath","location","origin","Barrier","addEventListener","assertChunkName","chunkName","chunkGroups","bookStyleSheets","promises","assets","Promise","styleSheets","_styleSheets$i","href","getLoadedStyleSheets","asset","endsWith","promise","allSettled","then","usedChunkNames","splitComponent","getComponent","placeholder","LazyComponent","lazy","async","resolved","_ref2","rest","chunks","useInsertionEffect","pathRefCount","freeStyleSheets","_ref3","Suspense","fallback","themed","themedImpl","COMPOSE","PRIORITY","BaseModal","cancelOnScrolling","containerStyle","dontDisableScrolling","onCancel","overlayStyle","testId","testIdForOverlay","theme","containerRef","useRef","overlayRef","portal","setPortal","useState","p","body","removeEventListener","classList","S","focusLast","useMemo","onFocus","_containerRef$current","_overlayRef$current","elems","_elems$i","focus","activeElement","tabIndex","ReactDom","_jsxs","_Fragment","className","overlay","onClick","stopPropagation","onKeyDown","role","onWheel","event","_overlayRef$current2","optionValueName","option","_option$name","x","isValue","containerClass","onChange","optionClass","opsRef","useImperativeHandle","measure","_opsRef$current","parentElement","rect","getBoundingClientRect","getComputedStyle","mBottom","parseFloat","marginBottom","mTop","marginTop","height","optionNodes","iValue","iName","ad","hoc","label","active","setActive","dropdownRef","opsPos","setOpsPos","upward","setUpward","id","_dropdownRef$current","anchor","opsRect","_window$visualViewpor","_window$visualViewpor2","fitsDown","bottom","visualViewport","fitsUp","top","up","pos","left","width","areEqual","openList","view","selected","containerClassName","opsContainerClass","select","dropdown","arrow","Options","newValue","isValidValue","optionElements","hiddenOption","disabled","selectClassName","invalid","onPress","enforceA","keepScrollPosition","onMouseDown","openNewTab","routerLinkType","to","preventDefault","target","L","discover","scroll","GenericLink","RrLink","BaseButton","onPointerDown","button","Link","checked","checkboxClassName","checkbox","indeterminate","input","leftSidePanelContent","rightSidePanelContent","sidePanel","leftSidePanel","mainPanel","rightSidePanel","createContext","description","MetaTags","extraMetaTags","image","siteName","socialDescription","socialTitle","url","socTitle","socDesc","extra","RrNavLink","circle","PLACEMENTS","ARROW_STYLE_DOWN","ARROW_STYLE_UP","setComponentPositions","pageX","pageY","placement","element","tooltip","tooltipRects","calcTooltipRects","viewportRect","scrollX","scrollY","documentElement","clientHeight","clientWidth","right","calcViewportRect","y","arrowX","arrowY","containerX","containerY","baseArrowStyle","calcPositionAboveXY","max","maxX","min","arrowStyle","heap","lastElement","lastPageX","lastPageY","lastPlacement","components","setComponents","pointTo","createTooltipComponents","createPortal","ThemedWrapper","ABOVE_CURSOR","tip","lastCursorX","lastCursorY","triggeredByTouch","tooltipRef","wrapperRef","showTooltip","setShowTooltip","listener","wrapper","onMouseLeave","onMouseMove","updatePortalPosition","cursorX","cursorY","wrapperRect","clientX","clientY","onTouchStart","Tooltip","_url","autoplay","src","srcParts","queryString","query","qs","v","Throbber","throbberTheme","allow","allowFullScreen","video","onBlur","hiddenAreaRef","setHeight","localValue","setLocalValue","el","observer","ResizeObserver","scrollHeight","observe","disconnect","readOnly","textarea","hidden","server","webpack","client"],"sourceRoot":""}
1
+ {"version":3,"file":"web.bundle.js","mappings":"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","sources":["webpack://@dr.pogodin/react-utils/webpack/universalModuleDefinition","webpack://@dr.pogodin/react-utils/./src/shared/utils/isomorphy/environment-check.ts","webpack://@dr.pogodin/react-utils/external umd \"@dr.pogodin/react-global-state\"","webpack://@dr.pogodin/react-utils/./src/shared/utils/webpack.ts","webpack://@dr.pogodin/react-utils/external umd \"react\"","webpack://@dr.pogodin/react-utils/external umd \"dayjs\"","webpack://@dr.pogodin/react-utils/./node_modules/react/cjs/react-jsx-runtime.production.js","webpack://@dr.pogodin/react-utils/external umd \"react-dom/client\"","webpack://@dr.pogodin/react-utils/external umd \"@dr.pogodin/react-helmet\"","webpack://@dr.pogodin/react-utils/external umd \"qs\"","webpack://@dr.pogodin/react-utils/external umd \"cookie\"","webpack://@dr.pogodin/react-utils/external umd \"react-dom\"","webpack://@dr.pogodin/react-utils/./src/shared/utils/isomorphy/buildInfo.ts","webpack://@dr.pogodin/react-utils/./src/client/getInj.ts","webpack://@dr.pogodin/react-utils/external umd \"react-router\"","webpack://@dr.pogodin/react-utils/./src/shared/utils/isomorphy/index.ts","webpack://@dr.pogodin/react-utils/external umd \"node-forge/lib/forge\"","webpack://@dr.pogodin/react-utils/external umd \"@dr.pogodin/react-themes\"","webpack://@dr.pogodin/react-utils/external umd \"@dr.pogodin/js-utils\"","webpack://@dr.pogodin/react-utils/./node_modules/react/jsx-runtime.js","webpack://@dr.pogodin/react-utils/external umd \"node-forge/lib/aes\"","webpack://@dr.pogodin/react-utils/./src/client/index.tsx","webpack://@dr.pogodin/react-utils/webpack/bootstrap","webpack://@dr.pogodin/react-utils/webpack/runtime/compat get default export","webpack://@dr.pogodin/react-utils/webpack/runtime/define property getters","webpack://@dr.pogodin/react-utils/webpack/runtime/global","webpack://@dr.pogodin/react-utils/webpack/runtime/hasOwnProperty shorthand","webpack://@dr.pogodin/react-utils/webpack/runtime/make namespace object","webpack://@dr.pogodin/react-utils/./src/styles/global.scss?d31e","webpack://@dr.pogodin/react-utils/./src/shared/utils/config.ts","webpack://@dr.pogodin/react-utils/./src/shared/utils/globalState.ts","webpack://@dr.pogodin/react-utils/./src/shared/utils/time.ts","webpack://@dr.pogodin/react-utils/./src/shared/utils/splitComponent.tsx","webpack://@dr.pogodin/react-utils/./src/shared/utils/index.ts","webpack://@dr.pogodin/react-utils/./src/shared/components/Modal/base-theme.scss?3336","webpack://@dr.pogodin/react-utils/./src/shared/components/Modal/styles.scss?66aa","webpack://@dr.pogodin/react-utils/./src/shared/components/Modal/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/CustomDropdown/Options/style.scss?8cb9","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/common.ts","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/CustomDropdown/Options/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/CustomDropdown/theme.scss?f940","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/CustomDropdown/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/NativeDropdown/theme.scss?47e7","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/NativeDropdown/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/Switch/theme.scss?69a8","webpack://@dr.pogodin/react-utils/./src/shared/components/selectors/Switch/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/GenericLink/style.scss?4542","webpack://@dr.pogodin/react-utils/./src/shared/components/GenericLink/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Link.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Button/style.scss?4dfe","webpack://@dr.pogodin/react-utils/./src/shared/components/Button/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Checkbox/theme.scss?3b99","webpack://@dr.pogodin/react-utils/./src/shared/components/Checkbox/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Input/theme.scss?9ab5","webpack://@dr.pogodin/react-utils/./src/shared/components/Input/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/PageLayout/base-theme.scss?2bfa","webpack://@dr.pogodin/react-utils/./src/shared/components/PageLayout/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/MetaTags.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/NavLink.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/Throbber/theme.scss?14fa","webpack://@dr.pogodin/react-utils/./src/shared/components/Throbber/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/WithTooltip/Tooltip.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/WithTooltip/default-theme.scss?0cd4","webpack://@dr.pogodin/react-utils/./src/shared/components/WithTooltip/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/YouTubeVideo/base.scss?60f0","webpack://@dr.pogodin/react-utils/./src/shared/components/YouTubeVideo/throbber.scss?a205","webpack://@dr.pogodin/react-utils/./src/shared/components/YouTubeVideo/index.tsx","webpack://@dr.pogodin/react-utils/./src/shared/components/TextArea/style.scss?7f40","webpack://@dr.pogodin/react-utils/./src/shared/components/TextArea/index.tsx","webpack://@dr.pogodin/react-utils/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@dr.pogodin/js-utils\"), require(\"@dr.pogodin/react-global-state\"), require(\"@dr.pogodin/react-helmet\"), require(\"@dr.pogodin/react-themes\"), require(\"cookie\"), require(\"dayjs\"), require(\"node-forge/lib/aes\"), require(\"node-forge/lib/forge\"), require(\"qs\"), require(\"react\"), require(\"react-dom\"), require(\"react-dom/client\"), require(\"react-router\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@dr.pogodin/js-utils\", \"@dr.pogodin/react-global-state\", \"@dr.pogodin/react-helmet\", \"@dr.pogodin/react-themes\", \"cookie\", \"dayjs\", \"node-forge/lib/aes\", \"node-forge/lib/forge\", \"qs\", \"react\", \"react-dom\", \"react-dom/client\", \"react-router\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@dr.pogodin/react-utils\"] = factory(require(\"@dr.pogodin/js-utils\"), require(\"@dr.pogodin/react-global-state\"), require(\"@dr.pogodin/react-helmet\"), require(\"@dr.pogodin/react-themes\"), require(\"cookie\"), require(\"dayjs\"), require(\"node-forge/lib/aes\"), require(\"node-forge/lib/forge\"), require(\"qs\"), require(\"react\"), require(\"react-dom\"), require(\"react-dom/client\"), require(\"react-router\"));\n\telse\n\t\troot[\"@dr.pogodin/react-utils\"] = factory(root[\"@dr.pogodin/js-utils\"], root[\"@dr.pogodin/react-global-state\"], root[\"@dr.pogodin/react-helmet\"], root[\"@dr.pogodin/react-themes\"], root[\"cookie\"], root[\"dayjs\"], root[\"node-forge/lib/aes\"], root[\"node-forge/lib/forge\"], root[\"qs\"], root[\"react\"], root[\"react-dom\"], root[\"react-dom/client\"], root[\"react-router\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__864__, __WEBPACK_EXTERNAL_MODULE__126__, __WEBPACK_EXTERNAL_MODULE__264__, __WEBPACK_EXTERNAL_MODULE__859__, __WEBPACK_EXTERNAL_MODULE__462__, __WEBPACK_EXTERNAL_MODULE__185__, __WEBPACK_EXTERNAL_MODULE__958__, __WEBPACK_EXTERNAL_MODULE__814__, __WEBPACK_EXTERNAL_MODULE__360__, __WEBPACK_EXTERNAL_MODULE__155__, __WEBPACK_EXTERNAL_MODULE__514__, __WEBPACK_EXTERNAL_MODULE__236__, __WEBPACK_EXTERNAL_MODULE__707__) {\nreturn ","// Checks for client- vs. server-side environment detection.\n\n/**\n * `true` within client-side environment (browser), `false` at server-side.\n */\nexport const IS_CLIENT_SIDE: boolean = typeof process !== 'object'\n || !process.versions || !process.versions.node\n || !!global.REACT_UTILS_FORCE_CLIENT_SIDE;\n\n/**\n * `true` within the server-side environment (node), `false` at client-side.\n */\nexport const IS_SERVER_SIDE: boolean = !IS_CLIENT_SIDE;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__126__;","import { IS_CLIENT_SIDE } from './isomorphy';\n\n/**\n * Requires the specified module without including it into the bundle during\n * Webpack build.\n * @param modulePath\n * @param [basePath]\n * @return Required module.\n */\nexport function requireWeak<Module extends NodeJS.Module>(\n modulePath: string,\n basePath?: string,\n): Module | null {\n if (IS_CLIENT_SIDE) return null;\n\n // TODO: On one hand, this try/catch wrap silencing errors is bad, as it may\n // hide legit errors, in a way difficult to notice and understand; but on the\n // other hand it fails for some (unclear, but legit?) reasons in some environments,\n // like during the static code generation for docs. Perhaps, something should\n // be implemented differently here.\n try {\n /* eslint-disable no-eval */\n const { resolve } = eval('require')('path');\n const path = basePath ? resolve(basePath, modulePath) : modulePath;\n const module = eval('require')(path) as Module;\n /* eslint-enable no-eval */\n\n if (!('default' in module) || !module.default) return module;\n\n const { default: def, ...named } = module;\n\n const res = def as Module;\n\n Object.entries(named).forEach(([name, value]) => {\n const assigned = res[name as keyof Module];\n if (assigned !== undefined) {\n if (assigned !== value) {\n throw Error('Conflict between default and named exports');\n }\n } else res[name as keyof Module] = value;\n });\n return res;\n } catch {\n return null;\n }\n}\n\n/**\n * Resolves specified module path with help of Babel's module resolver.\n * Yes, the function itself just returns its argument to the caller, but Babel\n * is configured to resolve the first argument of resolveWeak(..) function, thus\n * the result will be the resolved path.\n * @param {string} modulePath\n * @return {string} Absolute or relative path to the module.\n */\nexport function resolveWeak(modulePath: string): string {\n return modulePath;\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__155__;","module.exports = __WEBPACK_EXTERNAL_MODULE__185__;","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__236__;","module.exports = __WEBPACK_EXTERNAL_MODULE__264__;","module.exports = __WEBPACK_EXTERNAL_MODULE__360__;","module.exports = __WEBPACK_EXTERNAL_MODULE__462__;","module.exports = __WEBPACK_EXTERNAL_MODULE__514__;","// Encapsulates access to \"Build Info\" data.\n\n// BEWARE: This should match the type of build info object generated by\n// Webpack build (see \"/config/webpack/app-base.js\"), and currently this\n// match is not checked automatically.\nexport type BuildInfoT = {\n key: string;\n publicPath: string;\n timestamp: string;\n useServiceWorker: boolean;\n};\n\n// Depending on the build mode & environment, BUILD_INFO is either a global\n// variable defined at the app launch, or it is replaced by the actual value\n// by the Webpack build.\ndeclare const BUILD_INFO: BuildInfoT | undefined;\n\nlet buildInfo: BuildInfoT | undefined;\n\n// On the client side \"BUILD_INFO\" should be injected by Webpack. Note, however,\n// that in test environment we may need situations were environment is mocked as\n// client-side, although no proper Webpack compilation is executed, thus no info\n// injected; because of this we don't do a hard environment check here.\nif (typeof BUILD_INFO !== 'undefined') buildInfo = BUILD_INFO;\n\n/**\n * In scenarious where \"BUILD_INFO\" is not injected by Webpack (server-side,\n * tests, etc.) we expect the host codebase to explicitly set it before it is\n * ever requested. As a precaution, this function throws if build info has been\n * set already, unless `force` flag is explicitly set.\n * @param info\n * @param force\n */\nexport function setBuildInfo(info?: BuildInfoT, force = false) {\n if (buildInfo !== undefined && !force) {\n throw Error('\"Build Info\" is already initialized');\n }\n buildInfo = info;\n}\n\n/**\n * Returns \"Build Info\" object; throws if it has not been initialized yet.\n * @returns\n */\nexport function getBuildInfo(): BuildInfoT {\n if (buildInfo === undefined) {\n throw Error('\"Build Info\" has not been initialized yet');\n }\n return buildInfo;\n}\n","// Encapsulates retrieval of server-side data injection into HTML template.\n\n/* global document */\n\n// Note: this way, only required part of \"node-forge\": AES, and some utils,\n// is bundled into client-side code.\nimport forge from 'node-forge/lib/forge';\nimport 'node-forge/lib/aes';\n\nimport type { InjT } from 'utils/globalState';\n\nimport { getBuildInfo } from 'utils/isomorphy/buildInfo';\n\n// Safeguard is needed here, because the server-side version of Docusaurus docs\n// is compiled (at least now) with settings suggesting it is a client-side\n// environment, but there is no document.\nlet inj: InjT = {};\n\nconst metaElement: HTMLMetaElement | null = typeof document !== 'undefined'\n ? document.querySelector('meta[itemprop=\"drpruinj\"]') : null;\n\nif (metaElement) {\n metaElement.remove();\n let data = forge.util.decode64(metaElement.content);\n\n const { key } = getBuildInfo();\n const d = forge.cipher.createDecipher('AES-CBC', key);\n d.start({ iv: data.slice(0, key.length) });\n d.update(forge.util.createBuffer(data.slice(key.length)));\n d.finish();\n\n data = forge.util.decodeUtf8(d.output.data);\n inj = eval(`(${data})`); // eslint-disable-line no-eval\n} else if (typeof window !== 'undefined' && window.REACT_UTILS_INJECTION) {\n inj = window.REACT_UTILS_INJECTION;\n delete window.REACT_UTILS_INJECTION;\n} else {\n // Otherwise, a bunch of dependent stuff will easily fail in non-standard\n // environments, where no client-side initialization is performed. Like tests,\n // Docusaurus examples, etc.\n inj = {};\n}\n\nexport default function getInj(): InjT {\n return inj;\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__707__;","import { getBuildInfo } from './buildInfo';\nimport { IS_CLIENT_SIDE, IS_SERVER_SIDE } from './environment-check';\n\n/**\n * @ignore\n * @return {string} Code mode: \"development\" or \"production\".\n */\nfunction getMode() {\n return process.env.NODE_ENV;\n}\n\n/**\n * Returns `true` if development version of the code is running;\n * `false` otherwise.\n * @return {boolean}\n */\nexport function isDevBuild() {\n return getMode() === 'development';\n}\n\n/**\n * Returns `true` if production build of the code is running;\n * `false` otherwise.\n * @return {boolean}\n */\nexport function isProdBuild() {\n return getMode() === 'production';\n}\n\n/**\n * Returns build timestamp of the front-end JS bundle.\n * @return {string} ISO date/time string.\n */\nexport function buildTimestamp() {\n return getBuildInfo().timestamp;\n}\n\nexport { IS_CLIENT_SIDE, IS_SERVER_SIDE, getBuildInfo };\n","module.exports = __WEBPACK_EXTERNAL_MODULE__814__;","module.exports = __WEBPACK_EXTERNAL_MODULE__859__;","module.exports = __WEBPACK_EXTERNAL_MODULE__864__;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__958__;","// Initialization of client-side code.\n/* global document */\n\nimport { type ComponentType } from 'react';\nimport { createRoot, hydrateRoot } from 'react-dom/client';\nimport { HelmetProvider } from '@dr.pogodin/react-helmet';\nimport { BrowserRouter } from 'react-router';\n\nimport { GlobalStateProvider } from '@dr.pogodin/react-global-state';\n\nimport getInj from './getInj';\n\ntype OptionsT = {\n dontHydrate?: boolean;\n initialState?: any;\n};\n\n/**\n * Prepares and launches the app at client side.\n * @param Application Root application component\n * @param [options={}] Optional. Additional settings.\n */\nexport default function Launch(\n Application: ComponentType,\n options: OptionsT = {},\n) {\n const container = document.getElementById('react-view');\n if (!container) throw Error('Failed to find container for React app');\n const scene = (\n <GlobalStateProvider initialState={getInj().ISTATE || options.initialState}>\n <BrowserRouter>\n <HelmetProvider>\n <Application />\n </HelmetProvider>\n </BrowserRouter>\n </GlobalStateProvider>\n );\n\n if (options.dontHydrate) {\n const root = createRoot(container);\n root.render(scene);\n } else hydrateRoot(container, scene);\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// extracted by mini-css-extract-plugin\nexport default {};","/* global document */\n\nimport { IS_CLIENT_SIDE } from './isomorphy/environment-check';\nimport { requireWeak } from './webpack';\n\nconst config = (\n IS_CLIENT_SIDE\n // eslint-disable-next-line global-require\n ? require('client/getInj').default().CONFIG\n : requireWeak('config')\n) || {};\n\n// The safeguard for \"document\" is necessary because in non-Node environments,\n// like React Native, IS_CLIENT_SIDE is \"true\", however \"document\" and a bunch\n// of other browser-world features are not available.\nif (IS_CLIENT_SIDE && typeof document !== 'undefined') {\n const cookie = require('cookie'); // eslint-disable-line global-require\n config.CSRF = cookie.parse(document.cookie).csrfToken;\n}\n\nexport default config;\n","import type { Request } from 'express';\n\nimport { type SsrContext, withGlobalStateType } from '@dr.pogodin/react-global-state';\n\nexport type ChunkGroupsT = {\n [chunkName: string]: string[];\n};\n\n// The type of data object injected by server into generated markup.\nexport type InjT = {\n CHUNK_GROUPS?: ChunkGroupsT;\n CONFIG?: { [key: string]: any },\n ISTATE?: unknown;\n};\n\ndeclare global {\n interface Window {\n REACT_UTILS_INJECTION?: InjT;\n }\n}\n\nexport interface SsrContextT<StateT> extends SsrContext<StateT> {\n chunkGroups: ChunkGroupsT;\n chunks: string[];\n req: Request,\n status: number;\n}\n\nconst {\n getSsrContext,\n} = withGlobalStateType<unknown, SsrContextT<unknown>>();\n\nexport {\n getSsrContext,\n};\n","import { serialize } from 'cookie';\nimport dayjs from 'dayjs';\nimport { useEffect } from 'react';\n\nimport {\n DAY_MS,\n HOUR_MS,\n MIN_MS,\n SEC_MS,\n YEAR_MS,\n timer,\n} from '@dr.pogodin/js-utils';\n\nimport { type ForceT, useGlobalState } from '@dr.pogodin/react-global-state';\n\nimport { getSsrContext } from './globalState';\n\n/**\n * This react hook wraps Date.now() function in a SSR friendly way,\n * ensuring that all calls to useCurrent() within the same render return\n * exactly the same time (which is retrieved from Date.now() first, and\n * then stored in the global state to be reused in all other calls), which\n * is also passed and used in the first client side render, and then updated\n * with a finite precision to avoid infinite re-rendering loops.\n */\n// TODO: Should we request the state type as generic parameter, to be able\n// to verify the give globalStatePath is correct?\nexport function useCurrent({\n autorefresh = false,\n globalStatePath = 'currentTime',\n precision = 5 * SEC_MS,\n} = {}): number {\n const [now, setter] = useGlobalState<ForceT, number>(globalStatePath, Date.now);\n useEffect(() => {\n let timerId: NodeJS.Timeout;\n const update = () => {\n setter((old) => {\n const neu = Date.now();\n return Math.abs(neu - old) > precision ? neu : old;\n });\n if (autorefresh) timerId = setTimeout(update, precision);\n };\n update();\n return () => {\n if (timerId) clearTimeout(timerId);\n };\n }, [autorefresh, precision, setter]);\n return now;\n}\n\n/**\n * Wraps the standard Date.getTimezoneOffset() method in a SSR-friendly way.\n * This hook retrieves the offset value at the client side and uses a cookie\n * to pass it to the server in subsequent requests from that user. At the server\n * side the value from cookie is used in renders and passed back to the client\n * via the global state. Prior to the value being known (in the very first\n * request from the user, when the cookie is still missing), zero value is used\n * as the default value.\n */\n// TODO: Should we request the state type as generic parameter, to be able\n// to verify the give globalStatePath is correct?\nexport function useTimezoneOffset({\n cookieName = 'timezoneOffset',\n globalStatePath = 'timezoneOffset',\n} = {}): number {\n const ssrContext = getSsrContext(false);\n const [offset, setOffset] = useGlobalState<ForceT, number>(globalStatePath, () => {\n const value = cookieName && ssrContext?.req?.cookies?.[cookieName];\n return value ? parseInt(value, 10) : 0;\n });\n useEffect(() => {\n const date = new Date();\n const value = date.getTimezoneOffset();\n setOffset(value);\n if (cookieName) {\n document.cookie = serialize(cookieName, value.toString(), { path: '/' });\n }\n }, [cookieName, setOffset]);\n return offset;\n}\n\nconst time = {\n DAY_MS,\n HOUR_MS,\n MIN_MS,\n SEC_MS,\n YEAR_MS,\n now: Date.now,\n timer,\n useCurrent,\n useTimezoneOffset,\n};\n\nexport default Object.assign(dayjs, time);\n","/* eslint-disable react/jsx-props-no-spreading */\n/* global document */\n\nimport {\n type ComponentType,\n type FunctionComponent,\n type ReactNode,\n type RefObject,\n lazy,\n Suspense,\n useInsertionEffect,\n} from 'react';\n\nimport { Barrier } from '@dr.pogodin/js-utils';\n\nimport { type ChunkGroupsT, getSsrContext } from './globalState';\n\nimport {\n IS_CLIENT_SIDE,\n IS_SERVER_SIDE,\n getBuildInfo,\n} from './isomorphy';\n\n// Note: At the client side we can get chunk groups immediately when loading\n// the module; at the server-side we only can get them within React render flow.\n// Thus, we set and use the following variable at the client-side, and then when\n// needed on the server side, we'll fetch it differently.\nlet clientChunkGroups: ChunkGroupsT;\n\nif (IS_CLIENT_SIDE) {\n // eslint-disable-next-line global-require\n clientChunkGroups = require('client/getInj').default().CHUNK_GROUPS || {};\n}\n\nconst refCounts: { [path: string]: number } = {};\n\nfunction getPublicPath() {\n return getBuildInfo().publicPath;\n}\n\n/**\n * Client-side only! Ensures the specified CSS stylesheet is loaded into\n * the document; loads if it is missing; and does simple reference counting\n * to facilitate future clean-up.\n * @param name\n * @param loadedSheets\n * @param refCount\n * @return\n */\nfunction bookStyleSheet(\n name: string,\n loadedSheets: Set<string>,\n refCount: boolean,\n): Promise<void> | undefined {\n let res: Barrier<void> | undefined;\n const path = `${getPublicPath()}/${name}`;\n const fullPath = `${document.location.origin}${path}`;\n\n if (!loadedSheets.has(fullPath)) {\n let link = document.querySelector(`link[href=\"${path}\"]`);\n\n if (!link) {\n link = document.createElement('link');\n link.setAttribute('rel', 'stylesheet');\n link.setAttribute('href', path);\n document.head.appendChild(link);\n }\n\n res = new Barrier<void>();\n link.addEventListener('load', () => res!.resolve());\n link.addEventListener('error', () => res!.resolve());\n }\n\n if (refCount) {\n const current = refCounts[path] || 0;\n refCounts[path] = 1 + current;\n }\n\n return res;\n}\n\n/**\n * Generates the set of URLs for currently loaded, linked stylesheets.\n * @return\n */\nfunction getLoadedStyleSheets(): Set<string> {\n const res = new Set<string>();\n const { styleSheets } = document;\n for (let i = 0; i < styleSheets.length; ++i) {\n const href = styleSheets[i]?.href;\n if (href) res.add(href);\n }\n return res;\n}\n\nfunction assertChunkName(\n chunkName: string,\n chunkGroups: ChunkGroupsT,\n) {\n if (chunkGroups[chunkName]) return;\n throw Error(`Unknown chunk name \"${chunkName}\"`);\n}\n\n/**\n * Client-side only! Ensures all CSS stylesheets required for the specified\n * code chunk are loaded into the document; loads the missing ones; and does\n * simple reference counting to facilitate future clean-up.\n * @param chunkName Chunk name.\n * @param refCount\n * @return Resolves once all pending stylesheets, necessary for\n * the chunk, are either loaded, or failed to load.\n */\nexport function bookStyleSheets(\n chunkName: string,\n chunkGroups: ChunkGroupsT,\n refCount: boolean,\n): Promise<void> {\n const promises = [];\n const assets = chunkGroups[chunkName];\n if (!assets) return Promise.resolve();\n\n const loadedSheets = getLoadedStyleSheets();\n\n for (let i = 0; i < assets.length; ++i) {\n const asset = assets[i];\n if (asset?.endsWith('.css')) {\n const promise = bookStyleSheet(asset, loadedSheets, refCount);\n if (promise) promises.push(promise);\n }\n }\n\n return promises.length\n ? Promise.allSettled(promises).then()\n : Promise.resolve();\n}\n\n/**\n * Client-side only! Frees from the document all CSS stylesheets that are\n * required by the specified chunk, and have reference counter equal to one\n * (for chunks with larger reference counter values, it just decrements\n * the reference counter).\n * @param {string} chunkName\n */\nexport function freeStyleSheets(\n chunkName: string,\n chunkGroups: ChunkGroupsT,\n) {\n const assets = chunkGroups[chunkName];\n if (!assets) return;\n\n for (let i = 0; i < assets.length; ++i) {\n const asset = assets[i];\n if (asset?.endsWith('.css')) {\n const path = `${getPublicPath()}/${asset}`;\n\n const pathRefCount = refCounts[path];\n if (pathRefCount) {\n if (pathRefCount <= 1) {\n document.head.querySelector(`link[href=\"${path}\"]`)!.remove();\n delete refCounts[path];\n } else refCounts[path] = pathRefCount - 1;\n }\n }\n }\n}\n\n// Holds the set of chunk names already used for splitComponent() calls.\nconst usedChunkNames = new Set();\n\ntype ComponentOrModule<PropsT> = ComponentType<PropsT> | {\n default: ComponentType<PropsT>,\n};\n\n/**\n * Given an async component retrieval function `getComponent()` it creates\n * a special \"code split\" component, which uses <Suspense> to asynchronously\n * load on demand the code required by `getComponent()`.\n * @param options\n * @param options.chunkName\n * @param {function} options.getComponent\n * @param {React.Element} [options.placeholder]\n * @return {React.ElementType}\n */\nexport default function splitComponent<\n ComponentPropsT extends { children?: ReactNode; ref?: RefObject<unknown> },\n>({\n chunkName,\n getComponent,\n placeholder,\n}: {\n chunkName: string;\n getComponent: () => Promise<ComponentOrModule<ComponentPropsT>>,\n placeholder?: ReactNode,\n}) {\n // On the client side we can check right away if the chunk name is known.\n if (IS_CLIENT_SIDE) assertChunkName(chunkName, clientChunkGroups);\n\n // The correct usage of splitComponent() assumes a single call per chunk.\n if (usedChunkNames.has(chunkName)) {\n throw Error(`Repeated splitComponent() call for the chunk \"${chunkName}\"`);\n } else usedChunkNames.add(chunkName);\n\n const LazyComponent = lazy(async () => {\n const resolved = await getComponent();\n const Component = 'default' in resolved ? resolved.default : resolved;\n\n // This pre-loads necessary stylesheets prior to the first mount of\n // the component (the lazy load function is executed by React one at\n // the frist mount).\n if (IS_CLIENT_SIDE) {\n await bookStyleSheets(chunkName, clientChunkGroups, false);\n }\n\n const Wrapper: FunctionComponent<ComponentPropsT> = ({\n children,\n ref,\n ...rest\n }) => {\n // On the server side we'll assert the chunk name here,\n // and also push it to the SSR chunks array.\n if (IS_SERVER_SIDE) {\n const { chunkGroups, chunks } = getSsrContext()!;\n assertChunkName(chunkName, chunkGroups);\n if (!chunks.includes(chunkName)) chunks.push(chunkName);\n }\n\n // This takes care about stylesheets management every time an instance of\n // this component is mounted / unmounted.\n useInsertionEffect(() => {\n bookStyleSheets(chunkName, clientChunkGroups, true);\n return () => freeStyleSheets(chunkName, clientChunkGroups);\n }, []);\n\n return (\n <Component {...(rest as unknown as ComponentPropsT)} ref={ref}>\n {children}\n </Component>\n );\n };\n\n return { default: Wrapper };\n });\n\n const CodeSplit: React.FunctionComponent<ComponentPropsT> = ({\n children,\n ...rest\n }: ComponentPropsT) => (\n <Suspense fallback={placeholder}>\n <LazyComponent {...rest as Parameters<typeof LazyComponent>[0]}>\n {children}\n </LazyComponent>\n </Suspense>\n );\n\n return CodeSplit;\n}\n","import themedImpl, {\n type Theme,\n COMPOSE,\n PRIORITY,\n ThemeProvider,\n} from '@dr.pogodin/react-themes';\n\nimport config from './config';\nimport * as isomorphy from './isomorphy';\nimport time from './time';\nimport * as webpack from './webpack';\n\nexport {\n type Listener,\n Barrier,\n Emitter,\n Semaphore,\n withRetries,\n} from '@dr.pogodin/js-utils';\n\nexport { getSsrContext } from './globalState';\nexport { default as splitComponent } from './splitComponent';\n\ntype ThemedT = typeof themedImpl & {\n COMPOSE: typeof COMPOSE;\n PRIORITY: typeof PRIORITY;\n};\n\nconst themed: ThemedT = themedImpl as ThemedT;\n\nthemed.COMPOSE = COMPOSE;\nthemed.PRIORITY = PRIORITY;\n\nexport {\n type Theme,\n config,\n isomorphy,\n themed,\n ThemeProvider,\n time,\n webpack,\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"ye2BZo\",\"context\":\"Szmbbz\",\"ad\":\"Ah-Nsc\",\"hoc\":\"Wki41G\",\"container\":\"gyZ4rc\"};","// extracted by mini-css-extract-plugin\nexport default {\"scrollingDisabledByModal\":\"_5fRFtF\"};","import {\n type CSSProperties,\n type FunctionComponent,\n type ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport ReactDom from 'react-dom';\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport baseTheme from './base-theme.scss';\nimport S from './styles.scss';\n\ntype PropsT = {\n cancelOnScrolling?: boolean;\n children?: ReactNode;\n dontDisableScrolling?: boolean;\n onCancel?: () => void;\n overlayStyle?: CSSProperties;\n style?: CSSProperties;\n testId?: string;\n testIdForOverlay?: string;\n theme: Theme<'container' | 'overlay'>;\n\n /** @deprecated */\n containerStyle?: CSSProperties;\n};\n\n/**\n * The `<Modal>` component implements a simple themeable modal window, wrapped\n * into the default theme. `<BaseModal>` exposes the base non-themed component.\n * **Children:** Component children are rendered as the modal content.\n * @param {object} props Component properties. Beside props documented below,\n * [Other theming properties](https://www.npmjs.com/package/@dr.pogodin/react-themes#themed-component-properties) are supported as well.\n * @param {function} [props.onCancel] The callback to trigger when user\n * clicks outside the modal, or presses Escape. It is expected to hide the\n * modal.\n * @param {ModalTheme} [props.theme] _Ad hoc_ theme.\n */\nconst BaseModal: FunctionComponent<PropsT> = ({\n cancelOnScrolling,\n children,\n containerStyle,\n dontDisableScrolling,\n onCancel,\n overlayStyle,\n style,\n testId,\n testIdForOverlay,\n theme,\n}) => {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const overlayRef = useRef<HTMLDivElement | null>(null);\n const [portal, setPortal] = useState<HTMLDivElement>();\n\n useEffect(() => {\n const p = document.createElement('div');\n document.body.appendChild(p);\n setPortal(p);\n return () => {\n document.body.removeChild(p);\n };\n }, []);\n\n // Sets up modal cancellation of scrolling, if opted-in.\n useEffect(() => {\n if (cancelOnScrolling && onCancel) {\n window.addEventListener('scroll', onCancel);\n window.addEventListener('wheel', onCancel);\n }\n return () => {\n if (cancelOnScrolling && onCancel) {\n window.removeEventListener('scroll', onCancel);\n window.removeEventListener('wheel', onCancel);\n }\n };\n }, [cancelOnScrolling, onCancel]);\n\n // Disables window scrolling, if it is not opted-out.\n useEffect(() => {\n if (!dontDisableScrolling) {\n document.body.classList.add(S.scrollingDisabledByModal);\n }\n return () => {\n if (!dontDisableScrolling) {\n document.body.classList.remove(S.scrollingDisabledByModal);\n }\n };\n }, [dontDisableScrolling]);\n\n const focusLast = useMemo(() => (\n <div\n onFocus={() => {\n const elems = containerRef.current?.querySelectorAll('*') as NodeListOf<HTMLElement>;\n for (let i = elems.length - 1; i >= 0; --i) {\n elems[i]?.focus();\n if (document.activeElement === elems[i]) return;\n }\n overlayRef.current?.focus();\n }}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={0}\n />\n ), []);\n\n return portal ? ReactDom.createPortal(\n (\n <>\n {focusLast}\n <div\n aria-label=\"Cancel\"\n className={theme.overlay}\n data-testid={\n process.env.NODE_ENV === 'production'\n ? undefined : testIdForOverlay\n }\n onClick={(e) => {\n if (onCancel) {\n onCancel();\n e.stopPropagation();\n }\n }}\n onKeyDown={(e) => {\n if (e.key === 'Escape' && onCancel) {\n onCancel();\n e.stopPropagation();\n }\n }}\n ref={(node) => {\n if (node && node !== overlayRef.current) {\n overlayRef.current = node;\n node.focus();\n }\n }}\n role=\"button\"\n style={overlayStyle}\n tabIndex={0}\n />\n {\n // NOTE: These rules are disabled because our intention is to keep\n // the element non-interactive (thus not on the keyboard focus chain),\n // and it has `onClick` handler merely to stop propagation of click\n // events to its parent container. This is needed because, for example\n // when the modal is wrapped into an interactive element we don't want\n // any clicks inside the modal to bubble-up to that parent element\n // (because visually and logically the modal dialog does not belong\n // to its parent container, where it technically belongs from\n // the HTML mark-up perpective).\n /* eslint-disable jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-noninteractive-element-interactions */\n }\n <div\n aria-modal=\"true\"\n className={theme.container}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n onClick={(e) => e.stopPropagation()}\n onWheel={(event) => event.stopPropagation()}\n ref={containerRef}\n role=\"dialog\"\n style={style ?? containerStyle}\n >\n {children}\n </div>\n {/* eslint-enable jsx-a11y/click-events-have-key-events,\n jsx-a11y/no-noninteractive-element-interactions */}\n <div\n onFocus={() => {\n overlayRef.current?.focus();\n }}\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n tabIndex={0}\n /* eslint-enable jsx-a11y/no-noninteractive-tabindex */\n />\n {focusLast}\n </>\n ),\n portal,\n ) : null;\n};\n\nexport default themed(BaseModal, 'Modal', baseTheme);\n\n/* Non-themed version of the Modal. */\nexport { BaseModal };\n","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"jKsMKG\"};","// The stuff common between different dropdown implementations.\n\nimport type { Theme } from '@dr.pogodin/react-themes';\n\ntype ThemeKeyT =\n | 'active'\n | 'arrow'\n | 'container'\n | 'dropdown'\n | 'hiddenOption'\n | 'label'\n | 'option'\n | 'select'\n\n // TODO: This is currently only valid for (native) <Dropdown>,\n // other kinds of selectors should be evaluated, and aligned with this\n // feature, if appropriate.\n | 'invalid'\n\n // TODO: This is only valid for <CustomDropdown>, thus we need to re-factor it\n // into a separate theme spec for that component.\n | 'upward';\n\nexport type ValueT = number | string;\n\nexport type OptionT<NameT> = {\n name?: NameT | null;\n value: ValueT;\n};\n\nexport type OptionsT<NameT> = Readonly<Array<OptionT<NameT> | ValueT>>;\n\nexport type PropsT<\n NameT,\n OnChangeT = React.ChangeEventHandler<HTMLSelectElement>,\n> = {\n filter?: (item: OptionT<NameT> | ValueT) => boolean;\n label?: React.ReactNode;\n onChange?: OnChangeT;\n options: Readonly<OptionsT<NameT>>;\n testId?: string;\n theme: Theme<ThemeKeyT>;\n value?: ValueT;\n};\n\nfunction isValue<T>(x: OptionT<T> | ValueT): x is ValueT {\n const type = typeof x;\n return type === 'number' || type === 'string';\n}\n\n/** Returns option value and name as a tuple. */\nexport function optionValueName<NameT>(\n option: OptionT<NameT> | ValueT,\n): [ValueT, NameT | ValueT] {\n return isValue(option)\n ? [option, option]\n : [option.value, option.name ?? option.value];\n}\n","import {\n type FunctionComponent,\n type ReactNode,\n type RefObject,\n useImperativeHandle,\n useRef,\n} from 'react';\n\nimport { BaseModal } from 'components/Modal';\n\nimport S from './style.scss';\n\nimport {\n type OptionT,\n type OptionsT,\n type ValueT,\n optionValueName,\n} from '../../common';\n\nexport type ContainerPosT = {\n left: number;\n top: number;\n width: number;\n};\n\nexport function areEqual(a?: ContainerPosT, b?: ContainerPosT): boolean {\n return a?.left === b?.left && a?.top === b?.top && a?.width === b?.width;\n}\n\nexport type RefT = {\n measure: () => DOMRect | undefined;\n};\n\ntype PropsT = {\n containerClass: string;\n containerStyle?: ContainerPosT;\n filter?: (item: OptionT<ReactNode> | ValueT) => boolean;\n optionClass: string;\n options: Readonly<OptionsT<ReactNode>>;\n onCancel: () => void;\n onChange: (value: ValueT) => void;\n ref?: RefObject<RefT | null>;\n};\n\nconst Options: FunctionComponent<PropsT> = ({\n containerClass,\n containerStyle,\n filter,\n onCancel,\n onChange,\n optionClass,\n options,\n ref,\n}) => {\n const opsRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(ref, () => ({\n measure: () => {\n const e = opsRef.current?.parentElement;\n if (!e) return undefined;\n\n const rect = opsRef.current!.getBoundingClientRect();\n const style = window.getComputedStyle(e);\n const mBottom = parseFloat(style.marginBottom);\n const mTop = parseFloat(style.marginTop);\n\n rect.height += mBottom + mTop;\n\n return rect;\n },\n }), []);\n\n const optionNodes: ReactNode[] = [];\n for (let i = 0; i < options.length; ++i) {\n const option = options[i];\n if (option !== undefined && (!filter || filter(option))) {\n const [iValue, iName] = optionValueName(option);\n optionNodes.push(\n <div\n className={optionClass}\n onClick={(e) => {\n onChange(iValue);\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n onChange(iValue);\n e.stopPropagation();\n }\n }}\n key={iValue}\n role=\"button\"\n tabIndex={0}\n >\n {iName}\n </div>,\n );\n }\n }\n\n return (\n <BaseModal\n // Closes the dropdown (cancels the selection) on any page scrolling attempt.\n // This is the same native <select> elements do on scrolling, and at least for\n // now we have no reason to deal with complications needed to support open\n // dropdowns during the scrolling (that would need to re-position it in\n // response to the position changes of the root dropdown element).\n cancelOnScrolling\n style={containerStyle}\n dontDisableScrolling\n onCancel={onCancel}\n theme={{\n ad: '',\n hoc: '',\n container: containerClass,\n context: '',\n overlay: S.overlay,\n }}\n >\n <div ref={opsRef}>{optionNodes}</div>\n </BaseModal>\n );\n};\n\nexport default Options;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"oQKv0Y\",\"context\":\"_9Tod5r\",\"ad\":\"R58zIg\",\"hoc\":\"O-Tp1i\",\"label\":\"YUPUNs\",\"dropdown\":\"pNEyAA\",\"option\":\"LD2Kzy\",\"select\":\"LP5azC\",\"arrow\":\"-wscve\",\"active\":\"k2UDsV\",\"upward\":\"HWRvu4\"};","import { useEffect, useRef, useState } from 'react';\n\nimport themed from '@dr.pogodin/react-themes';\n\nimport Options, { type ContainerPosT, type RefT, areEqual } from './Options';\n\nimport defaultTheme from './theme.scss';\n\nimport { type PropsT, type ValueT, optionValueName } from '../common';\n\nconst BaseCustomDropdown: React.FunctionComponent<\nPropsT<React.ReactNode, (value: ValueT) => void>\n> = ({\n filter,\n label,\n onChange,\n options,\n theme,\n value,\n}) => {\n if (!options) throw Error('Internal error');\n\n const [active, setActive] = useState(false);\n\n const dropdownRef = useRef<HTMLDivElement>(null);\n const opsRef = useRef<RefT>(null);\n\n const [opsPos, setOpsPos] = useState<ContainerPosT>();\n const [upward, setUpward] = useState(false);\n\n useEffect(() => {\n if (!active) return undefined;\n\n let id: number;\n const cb = () => {\n const anchor = dropdownRef.current?.getBoundingClientRect();\n const opsRect = opsRef.current?.measure();\n if (anchor && opsRect) {\n const fitsDown = anchor.bottom + opsRect.height\n < (window.visualViewport?.height ?? 0);\n const fitsUp = anchor.top - opsRect.height > 0;\n\n const up = !fitsDown && fitsUp;\n setUpward(up);\n\n const pos = up ? {\n top: anchor.top - opsRect.height - 1,\n left: anchor.left,\n width: anchor.width,\n } : {\n left: anchor.left,\n top: anchor.bottom,\n width: anchor.width,\n };\n\n setOpsPos((now) => (areEqual(now, pos) ? now : pos));\n }\n id = requestAnimationFrame(cb);\n };\n requestAnimationFrame(cb);\n\n return () => {\n cancelAnimationFrame(id);\n };\n }, [active]);\n\n const openList = (\n e: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLDivElement>,\n ) => {\n const view = window.visualViewport;\n const rect = dropdownRef.current!.getBoundingClientRect();\n setActive(true);\n\n // NOTE: This first opens the dropdown off-screen, where it is measured\n // by an effect declared above, and then positioned below, or above\n // the original dropdown element, depending where it fits best\n // (if we first open it downward, it would flick if we immediately\n // move it above, at least with the current position update via local\n // react state, and not imperatively).\n setOpsPos({\n left: view?.width || 0,\n top: view?.height || 0,\n width: rect.width,\n });\n\n e.stopPropagation();\n };\n\n let selected: React.ReactNode = <>&zwnj;</>;\n for (let i = 0; i < options.length; ++i) {\n const option = options[i];\n if (option !== undefined && (!filter || filter(option))) {\n const [iValue, iName] = optionValueName(option);\n if (iValue === value) {\n selected = iName;\n break;\n }\n }\n }\n\n let containerClassName = theme.container;\n if (active) containerClassName += ` ${theme.active}`;\n\n let opsContainerClass = theme.select || '';\n if (upward) {\n containerClassName += ` ${theme.upward}`;\n opsContainerClass += ` ${theme.upward}`;\n }\n\n return (\n <div className={containerClassName}>\n {label === undefined ? null : (\n <div className={theme.label}>{label}</div>\n )}\n <div\n className={theme.dropdown}\n onClick={openList}\n onKeyDown={(e) => {\n if (e.key === 'Enter') openList(e);\n }}\n ref={dropdownRef}\n role=\"listbox\"\n tabIndex={0}\n >\n {selected}\n <div className={theme.arrow} />\n </div>\n {\n active ? (\n <Options\n containerClass={opsContainerClass}\n containerStyle={opsPos}\n onCancel={() => {\n setActive(false);\n }}\n onChange={(newValue) => {\n setActive(false);\n if (onChange) onChange(newValue);\n }}\n optionClass={theme.option || ''}\n options={options}\n ref={opsRef}\n />\n ) : null\n }\n </div>\n );\n};\n\nexport default themed(BaseCustomDropdown, 'CustomDropdown', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"dropdown\":\"kI9A9U\",\"context\":\"xHyZo4\",\"ad\":\"ADu59e\",\"hoc\":\"FTP2bb\",\"arrow\":\"DubGkT\",\"container\":\"WtSZPd\",\"active\":\"ayMn7O\",\"label\":\"K7JYKw\",\"option\":\"_27pZ6W\",\"hiddenOption\":\"clAKFJ\",\"select\":\"N0Fc14\",\"invalid\":\"wL4umU\"};","// Implements dropdown based on the native HTML <select> element.\n\nimport themed from '@dr.pogodin/react-themes';\n\nimport defaultTheme from './theme.scss';\n\nimport { type PropsT, optionValueName } from '../common';\n\n/**\n * Implements a themeable dropdown list. Internally it is rendered with help of\n * the standard HTML `<select>` element, thus the styling support is somewhat\n * limited.\n * @param [props] Component properties.\n * @param [props.filter] Options filter function. If provided, only\n * those elements of `options` list will be used by the dropdown, for which this\n * filter returns `true`.\n * @param [props.label] Dropdown label.\n * @param [props.onChange] Selection event handler.\n * @param [props.options=[]] Array of dropdown\n * options. For string elements the option value and name will be the same.\n * It is allowed to mix DropdownOption and string elements in the same option\n * list.\n * @param [props.theme] _Ad hoc_ theme.\n * @param [props.value] Currently selected value.\n * @param [props....]\n * [Other theming properties](https://www.npmjs.com/package/@dr.pogodin/react-themes#themed-component-properties)\n */\nconst Dropdown: React.FunctionComponent<PropsT<string>> = ({\n filter,\n label,\n onChange,\n options,\n testId,\n theme,\n value,\n}) => {\n if (!options) throw Error('Internal error');\n\n let isValidValue = false;\n const optionElements = [];\n\n for (let i = 0; i < options.length; ++i) {\n const option = options[i];\n if (option !== undefined && (!filter || filter(option))) {\n const [iValue, iName] = optionValueName(option);\n isValidValue ||= iValue === value;\n optionElements.push(\n <option className={theme.option} key={iValue} value={iValue}>\n {iName}\n </option>,\n );\n }\n }\n\n // NOTE: This element represents the current `value` when it does not match\n // any valid option. In Chrome, and some other browsers, we are able to hide\n // it from the opened dropdown; in others, e.g. Safari, the best we can do is\n // to show it as disabled.\n const hiddenOption = isValidValue ? null : (\n <option\n disabled\n className={theme.hiddenOption}\n key=\"__reactUtilsHiddenOption\"\n value={value}\n >\n {value}\n </option>\n );\n\n let selectClassName = theme.select;\n if (!isValidValue) selectClassName += ` ${theme.invalid}`;\n\n return (\n <div className={theme.container}>\n { label === undefined ? null : <div className={theme.label}>{label}</div> }\n <div className={theme.dropdown}>\n <select\n className={selectClassName}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n onChange={onChange}\n value={value}\n >\n {hiddenOption}\n {optionElements}\n </select>\n <div className={theme.arrow} />\n </div>\n </div>\n );\n};\n\nexport default themed(Dropdown, 'Dropdown', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"AWNvRj\",\"context\":\"VMHfnP\",\"ad\":\"HNliRC\",\"hoc\":\"_2Ue-db\",\"option\":\"fUfIAd\",\"selected\":\"Wco-qk\",\"options\":\"CZYtcC\"};","import themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport {\n type OptionsT,\n type ValueT,\n optionValueName,\n} from '../common';\n\nimport defaultTheme from './theme.scss';\n\ntype ThemeKeyT =\n | 'container'\n | 'label'\n | 'option'\n | 'options'\n | 'selected';\n\ntype PropsT = {\n label?: React.ReactNode;\n onChange?: (value: ValueT) => void;\n options?: Readonly<OptionsT<React.ReactNode>>;\n theme: Theme<ThemeKeyT>;\n value?: ValueT;\n};\n\nconst BaseSwitch: React.FunctionComponent<PropsT> = ({\n label,\n onChange,\n options,\n theme,\n value,\n}) => {\n if (!options || !theme.option) throw Error('Internal error');\n\n const optionNodes: React.ReactNode[] = [];\n for (let i = 0; i < options?.length; ++i) {\n const option = options[i];\n if (option !== undefined) {\n const [iValue, iName] = optionValueName(option);\n\n let className: string = theme.option;\n let onPress: (() => void) | undefined;\n if (iValue === value) className += ` ${theme.selected}`;\n else if (onChange) onPress = () => onChange(iValue);\n\n optionNodes.push(\n onPress ? (\n <div\n className={className}\n onClick={onPress}\n onKeyDown={(e) => {\n if (onPress && e.key === 'Enter') onPress();\n }}\n key={iValue}\n role=\"button\"\n tabIndex={0}\n >\n {iName}\n </div>\n ) : (\n <div className={className} key={iValue}>{iName}</div>\n ),\n );\n }\n }\n\n return (\n <div className={theme.container}>\n {label ? <div className={theme.label}>{label}</div> : null}\n <div className={theme.options}>\n {optionNodes}\n </div>\n </div>\n );\n};\n\nexport default themed(BaseSwitch, 'Switch', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"link\":\"zH52sA\"};","import type { ReactNode } from 'react';\n\nimport type {\n Link,\n LinkProps,\n NavLink,\n NavLinkProps,\n} from 'react-router';\n\nimport './style.scss';\n\ntype LinkT = typeof Link;\ntype NavLinkT = typeof NavLink;\n\ntype ToT = Parameters<typeof Link>[0]['to'];\n\nexport type PropsT = {\n children?: ReactNode;\n className?: string;\n disabled?: boolean;\n enforceA?: boolean;\n keepScrollPosition?: boolean;\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n onMouseDown?: React.MouseEventHandler<HTMLAnchorElement>;\n openNewTab?: boolean;\n replace?: boolean;\n routerLinkType: LinkT | NavLinkT;\n to: ToT;\n};\n\n/**\n * The `<Link>` component, and almost identical `<NavLink>` component, are\n * auxiliary wrappers around\n * [React Router](https://github.com/ReactTraining/react-router)'s\n * `<Link>` and `<NavLink>` components; they help to handle external and\n * internal links in uniform manner.\n *\n * @param [props] Component properties.\n * @param [props.className] CSS classes to apply to the link.\n * @param [props.disabled] Disables the link.\n * @param [props.enforceA] `true` enforces rendering of the link as\n * a simple `<a>` element.\n * @param [props.keepScrollPosition] If `true`, and the link is\n * rendered as a React Router's component, it won't reset the viewport scrolling\n * position to the origin when clicked.\n * @param [props.onClick] Event handler to trigger upon click.\n * @param [props.onMouseDown] Event handler to trigger on MouseDown\n * event.\n * @param [props.openNewTab] If `true` the link opens in a new tab.\n * @param [props.replace] When `true`, the link will replace current\n * entry in the history stack instead of adding a new one.\n * @param [props.to] Link URL.\n * @param [props.activeClassName] **`<NavLink>`** only: CSS class(es)\n * to apply to rendered link when it is active.\n * @param [props.activeStyle] **`<NavLink>`** only: CSS styles\n * to apply to the rendered link when it is active.\n * @param [props.exact] **`<NavLink>`** only: if `true`, the active\n * class/style will only be applied if the location is matched exactly.\n * @param [props.isActive] **`<NavLink>`** only: Add extra\n * logic for determining whether the link is active. This should be used if you\n * want to do more than verify that the link’s pathname matches the current URL\n * pathname.\n * @param [props.location] **`<NavLink>`** only: `isActive` compares\n * current history location (usually the current browser URL). To compare to\n * a different location, a custom `location` can be passed.\n * @param [props.strict] **`<NavLink>`** only: . When `true`, trailing\n * slash on a location’s pathname will be taken into consideration when\n * determining if the location matches the current URL. See the `<Route strict>`\n * documentation for more information.\n */\nconst GenericLink = ({\n children,\n className,\n disabled,\n enforceA,\n keepScrollPosition,\n onClick,\n onMouseDown,\n openNewTab,\n replace,\n routerLinkType,\n to,\n ...rest\n}: (LinkProps | NavLinkProps) & PropsT): ReactNode => {\n /* Renders Link as <a> element if:\n * - It is opted explicitely by `enforceA` prop;\n * - It should be opened in a new tab;\n * - It is an absolte URL (starts with http:// or https://);\n * - It is anchor link (starts with #). */\n if (disabled || enforceA || openNewTab || (to as string)?.match(/^(#|(https?|mailto):)/)) {\n return (\n <a\n className={className}\n // TODO: This requires a fix: disabled is not really an attribute of <a>\n // tag, thus for disabled option we rather should render a plain text\n // styled as a link.\n // disabled={disabled}\n href={to as string}\n onClick={disabled ? (e) => e.preventDefault() : onClick}\n onMouseDown={disabled ? (e) => e.preventDefault() : onMouseDown}\n rel=\"noopener noreferrer\"\n styleName=\"link\"\n target={openNewTab ? '_blank' : ''}\n >\n {children}\n </a>\n );\n }\n\n const L = routerLinkType;\n\n return (\n <L\n className={className}\n discover=\"none\"\n // disabled\n onMouseDown={onMouseDown}\n replace={replace}\n to={to!}\n onClick={(e: React.MouseEvent<HTMLAnchorElement>) => {\n // Executes the user-provided event handler, if any.\n if (onClick) onClick(e);\n\n // By default, clicking the link scrolls the page to beginning.\n if (!keepScrollPosition) window.scroll(0, 0);\n }}\n {...rest} // eslint-disable-line react/jsx-props-no-spreading\n >\n {children}\n </L>\n );\n};\n\nexport default GenericLink;\n","/**\n * The Link wraps around React Router's Link component, to automatically replace\n * it by the regular <a> element when:\n * - The target reference points to another domain;\n * - User opts to open the reference in a new tab;\n * - User explicitely opts to use <a>.\n */\n\nimport { type LinkProps, Link as RrLink } from 'react-router';\n\nimport GenericLink, { type PropsT as GenericLinkPropsT } from './GenericLink';\n\ntype PropsT = Omit<GenericLinkPropsT, 'routerLinkType'> & LinkProps;\n\nconst Link: React.FunctionComponent<PropsT> = (props) => (\n /* eslint-disable react/jsx-props-no-spreading */\n <GenericLink {...props} routerLinkType={RrLink} />\n /* eslint-enable react/jsx-props-no-spreading */\n);\n\nexport default Link;\n","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"E1FNQT\",\"context\":\"KM0v4f\",\"ad\":\"_3jm1-Q\",\"hoc\":\"_0plpDL\",\"active\":\"MAe9O6\",\"disabled\":\"Br9IWV\"};","// The <Button> component implements a standard button / button-like link.\n\nimport type { PointerEventHandler, ReactNode } from 'react';\n\nimport Link from 'components/Link';\n\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport defaultTheme from './style.scss';\n\ntype PropsT = {\n active?: boolean;\n children?: ReactNode;\n disabled?: boolean;\n enforceA?: boolean;\n onClick?: React.MouseEventHandler & React.KeyboardEventHandler;\n onMouseDown?: React.MouseEventHandler;\n onPointerDown?: PointerEventHandler;\n openNewTab?: boolean;\n replace?: boolean;\n testId?: string;\n theme: Theme<'active' | 'button' | 'disabled'>;\n // TODO: It needs a more precise typing of the object option.\n to?: object | string;\n};\n\n/* eslint-disable react/function-component-definition */\nexport const BaseButton: React.FunctionComponent<PropsT> = ({\n active,\n children,\n disabled,\n enforceA,\n onClick,\n onMouseDown,\n onPointerDown,\n openNewTab,\n replace,\n testId,\n theme,\n to,\n}) => {\n let className = theme.button;\n if (active && theme.active) className += ` ${theme.active}`;\n if (disabled) {\n if (theme.disabled) className += ` ${theme.disabled}`;\n return (\n <div\n className={className}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n >\n {children}\n </div>\n );\n }\n if (to) {\n return (\n <Link\n className={className}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n enforceA={enforceA}\n onClick={onClick}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n openNewTab={openNewTab}\n replace={replace}\n to={to}\n >\n {children}\n </Link>\n );\n }\n\n return (\n <div\n className={className}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n onClick={onClick}\n onKeyDown={onClick && ((e) => {\n if (e.key === 'Enter') onClick(e);\n })}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n role=\"button\"\n tabIndex={0}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Button component theme: a map of CSS\n * class names to append to button elements:\n * @prop {string} [active] to the root element of active button.\n * @prop {string} [button] to the root element of any button.\n * @prop {string} [disabled] to the root element of disabled button.\n */\nexport default themed(BaseButton, 'Button', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"checkbox\":\"A-f8qJ\",\"context\":\"dNQcC6\",\"ad\":\"earXxa\",\"hoc\":\"qAPfQ6\",\"indeterminate\":\"N9bCb8\",\"container\":\"Kr0g3M\",\"label\":\"_3dML-O\",\"disabled\":\"EzQra1\"};","import themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport defaultTheme from './theme.scss';\n\ntype PropT<ValueT> = {\n checked?: ValueT;\n disabled?: boolean;\n label?: React.ReactNode;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n testId?: string;\n theme: Theme<\n | 'checkbox'\n | 'container'\n | 'disabled'\n | 'indeterminate'\n | 'label'\n >;\n};\n\nconst Checkbox = <ValueT extends boolean | 'indeterminate' = boolean>({\n checked,\n disabled,\n label,\n onChange,\n testId,\n theme,\n}: PropT<ValueT>) => {\n let containerClassName = theme.container;\n if (disabled) containerClassName += ` ${theme.disabled}`;\n\n let checkboxClassName = theme.checkbox;\n if (checked === 'indeterminate') checkboxClassName += ` ${theme.indeterminate}`;\n\n return (\n <div className={containerClassName}>\n { label === undefined ? null : <div className={theme.label}>{label}</div> }\n <input\n checked={checked === undefined ? undefined : checked === true}\n className={checkboxClassName}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n disabled={disabled}\n onChange={onChange}\n onClick={(e) => e.stopPropagation()}\n type=\"checkbox\"\n />\n </div>\n );\n};\n\nexport default themed(Checkbox, 'Checkbox', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Cxx397\",\"context\":\"X5WszA\",\"ad\":\"_8s7GCr\",\"hoc\":\"TVlBYc\",\"input\":\"M07d4s\",\"label\":\"gfbdq-\"};","import type { FunctionComponent, Ref } from 'react';\n\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport defaultTheme from './theme.scss';\n\ntype ThemeKeyT =\n | 'container'\n | 'input'\n | 'label';\n\ntype PropsT = React.InputHTMLAttributes<HTMLInputElement> & {\n label?: React.ReactNode;\n ref?: Ref<HTMLInputElement>;\n testId?: string;\n theme: Theme<ThemeKeyT>;\n};\n\n/**\n * Themeable input field, based on the standard HTML `<input>` element.\n * @param [props.label] Input label.\n * @param [props.theme] _Ad hoc_ theme.\n * @param [props...] [Other theming properties](https://www.npmjs.com/package/@dr.pogodin/react-themes#themed-component-properties)\n * @param [props...] Any other properties are passed to the underlying\n * `<input>` element.\n */\nconst Input: FunctionComponent<PropsT> = ({\n label,\n ref,\n testId,\n theme,\n ...rest\n}) => (\n <span className={theme.container}>\n { label === undefined ? null : <div className={theme.label}>{label}</div> }\n <input\n className={theme.input}\n data-testid={process.env.NODE_ENV === 'production' ? undefined : testId}\n ref={ref}\n {...rest} // eslint-disable-line react/jsx-props-no-spreading\n />\n </span>\n);\n\nexport default themed(Input, 'Input', defaultTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"T3cuHB\",\"context\":\"m4mL-M\",\"ad\":\"m3-mdC\",\"hoc\":\"J15Z4H\",\"mainPanel\":\"pPlQO2\",\"sidePanel\":\"lqNh4h\"};","import type { ReactNode } from 'react';\n\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport baseTheme from './base-theme.scss';\n\ntype ThemeKeyT =\n | 'container'\n | 'leftSidePanel'\n | 'mainPanel'\n | 'rightSidePanel'\n | 'sidePanel';\n\ntype PropsT = {\n children?: ReactNode;\n leftSidePanelContent?: ReactNode;\n rightSidePanelContent?: ReactNode;\n theme: Theme<ThemeKeyT>;\n};\n\n/**\n * Simple and themeable page layout. It keeps the main content centered in\n * a column of limited width, which fills entire viewport on small screens\n * (under `$screen-md = 1024px` size). At larger screens the column keeps\n * `$screen-md` size, and it is centered at the page, surrounded by side\n * panels, where additional content can be displayed.\n *\n * **Children:** Component children are rendered as the content of main panel.\n * @param {object} [props] Component properties.\n * @param {Node} [props.leftSidePanelContent] The content for left side panel.\n * @param {Node} [props.rightSidePanelContent] The content for right side panel.\n * @param {PageLayoutTheme} [props.theme] _Ad hoc_ theme.\n * @param {...any} [props....]\n * [Other theming properties](https://www.npmjs.com/package/@dr.pogodin/react-themes#themed-component-properties)\n */\nconst PageLayout: React.FunctionComponent<PropsT> = ({\n children,\n leftSidePanelContent,\n rightSidePanelContent,\n theme,\n}) => (\n <div className={theme.container}>\n <div className={[theme.sidePanel, theme.leftSidePanel].join(' ')}>\n {leftSidePanelContent}\n </div>\n <div className={theme.mainPanel}>\n {children}\n </div>\n <div className={[theme.sidePanel, theme.rightSidePanel].join(' ')}>\n {rightSidePanelContent}\n </div>\n </div>\n);\n\nexport default themed(PageLayout, 'PageLayout', baseTheme);\n","import {\n type Context as ContextT,\n type FunctionComponent,\n type ReactNode,\n createContext,\n useMemo,\n} from 'react';\n\nimport { Helmet } from '@dr.pogodin/react-helmet';\n\ntype PropsT = {\n children?: ReactNode;\n description: string;\n extraMetaTags?: Array<{\n content: string;\n name: string;\n }>;\n image?: string;\n siteName?: string;\n socialDescription?: string;\n socialTitle?: string;\n title: string;\n url?: string;\n};\n\nconst Context = createContext<PropsT>({\n description: '',\n title: '',\n});\n\n/**\n * Auxiliary wrapper around \"react-helmet\", which helps to inject meta tags\n * (page title, a brief content description, and social media thumbnails) into\n * generated pages.\n */\nconst MetaTags: FunctionComponent<PropsT> & {\n Context: ContextT<PropsT>;\n} = ({\n children,\n description,\n extraMetaTags,\n image,\n siteName,\n socialDescription,\n socialTitle,\n title,\n url,\n}) => {\n const socTitle = socialTitle || title;\n const socDesc = socialDescription || description;\n\n const context = useMemo(() => ({\n description,\n image,\n siteName,\n socialDescription,\n socialTitle,\n title,\n url,\n }), [\n description,\n image,\n siteName,\n socialDescription,\n socialTitle,\n title,\n url,\n ]);\n\n const extra: ReactNode[] = [];\n if (extraMetaTags?.length) {\n for (let i = 0; i < extraMetaTags.length; ++i) {\n const { content, name } = extraMetaTags[i]!;\n extra.push(\n <meta\n content={content}\n name={name}\n key={`extra-meta-tag-${i}`}\n />,\n );\n }\n }\n\n return (\n <>\n <Helmet>\n {/* General tags. */}\n <title>\n {title}\n </title>\n <meta name=\"description\" content={description} />\n\n {/* Twitter cards. */}\n <meta name=\"twitter:card\" content=\"summary_large_image\" />\n <meta name=\"twitter:title\" content={socTitle} />\n <meta name=\"twitter:description\" content={socDesc} />\n { image ? <meta name=\"twitter:image\" content={image} /> : null }\n {\n siteName ? (\n <meta name=\"twitter:site\" content={`@${siteName}`} />\n ) : null\n }\n\n {/* Open Graph data. */}\n <meta name=\"og:title\" content={socTitle} />\n { image ? <meta name=\"og:image\" content={image} /> : null }\n { image ? <meta name=\"og:image:alt\" content={socTitle} /> : null }\n <meta name=\"og:description\" content={socDesc} />\n {\n siteName ? (<meta name=\"og:sitename\" content={siteName} />) : null\n }\n { url ? (<meta name=\"og:url\" content={url} />) : null }\n {extra}\n </Helmet>\n {\n children ? (\n <Context.Provider value={context}>\n {children}\n </Context.Provider>\n ) : null\n }\n </>\n );\n};\n\nMetaTags.Context = Context;\n\nexport default MetaTags;\n","import { type NavLinkProps, NavLink as RrNavLink } from 'react-router';\n\nimport GenericLink, { type PropsT as GenericLinkPropsT } from './GenericLink';\n\ntype PropsT = Omit<GenericLinkPropsT, 'routerLinkType'> & NavLinkProps;\n\nconst NavLink: React.FunctionComponent<PropsT> = (props) => (\n /* eslint-disable react/jsx-props-no-spreading */\n <GenericLink {...props} routerLinkType={RrNavLink} />\n /* eslint-enable react/jsx-props-no-spreading */\n);\n\nexport default NavLink;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"_7zdld4\",\"context\":\"uIObt7\",\"ad\":\"XIxe9o\",\"hoc\":\"YOyORH\",\"circle\":\"dBrB4g\",\"bouncing\":\"TJe-6j\"};","import themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport defaultTheme from './theme.scss';\n\ntype ThemeKeyT =\n | 'bouncing'\n | 'circle'\n | 'container';\n\ntype PropsT = {\n theme: Theme<ThemeKeyT>;\n};\n\n/**\n * Throbber is an \"action in progress\" indicator, which renders\n * three bouncing circles as a simple pending activity indicator,\n * and can be further themed to a certain degree.\n * @param {object} [props] Component properties.\n * @param {ThrobberTheme} [props.theme] _Ad hoc_ theme.\n * @param {...any} [props....]\n * [Other theming properties](https://www.npmjs.com/package/@dr.pogodin/react-themes#themed-component-properties)\n */\nconst Throbber: React.FunctionComponent<PropsT> = ({ theme }) => (\n <span className={theme.container}>\n <span className={theme.circle} />\n <span className={theme.circle} />\n <span className={theme.circle} />\n </span>\n);\n\nexport default themed(Throbber, 'Throbber', defaultTheme);\n","/**\n * The actual tooltip component. It is rendered outside the regular document\n * hierarchy, and with sub-components managed without React to achieve the best\n * performance during animation.\n */\n\nimport {\n type FunctionComponent,\n type ReactNode,\n type RefObject,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\n\nimport type { Theme } from '@dr.pogodin/react-themes';\n\n/* Valid placements of the rendered tooltip. They will be overriden when\n * necessary to fit the tooltip within the viewport. */\nexport enum PLACEMENTS {\n ABOVE_CURSOR = 'ABOVE_CURSOR',\n ABOVE_ELEMENT = 'ABOVE_ELEMENT',\n BELOW_CURSOR = 'BELOW_CURSOR',\n BELOW_ELEMENT = 'BELOW_ELEMENT',\n}\n\nconst ARROW_STYLE_DOWN = [\n 'border-bottom-color:transparent',\n 'border-left-color:transparent',\n 'border-right-color:transparent',\n].join(';');\n\nconst ARROW_STYLE_UP = [\n 'border-top-color:transparent',\n 'border-left-color:transparent',\n 'border-right-color:transparent',\n].join(';');\n\ntype ComponentsT = {\n container: HTMLDivElement;\n arrow: HTMLDivElement;\n content: HTMLDivElement;\n};\n\ntype HeapT = {\n lastElement?: HTMLElement;\n lastPageX: number;\n lastPageY: number;\n lastPlacement?: PLACEMENTS | undefined;\n};\n\nexport type ThemeKeysT =\n | 'appearance'\n | 'arrow'\n | 'content'\n | 'container';\n\ntype TooltipThemeT = Theme<ThemeKeysT>;\n\n/**\n * Creates tooltip components.\n * @ignore\n * @param {object} theme Themes to use for tooltip container, arrow,\n * and content.\n * @return {object} Object with DOM references to the container components:\n * container, arrow, content.\n */\nfunction createTooltipComponents(theme: TooltipThemeT): ComponentsT {\n const arrow = document.createElement('div');\n if (theme.arrow) arrow.setAttribute('class', theme.arrow);\n\n const content = document.createElement('div');\n if (theme.content) content.setAttribute('class', theme.content);\n\n const container = document.createElement('div');\n if (theme.container) container.setAttribute('class', theme.container);\n\n container.appendChild(arrow);\n container.appendChild(content);\n document.body.appendChild(container);\n\n return { container, arrow, content };\n}\n\ntype TooltipRectsT = {\n arrow: DOMRect;\n container: DOMRect;\n};\n\n/**\n * Generates bounding client rectangles for tooltip components.\n * @ignore\n * @param tooltip DOM references to the tooltip components.\n * @param tooltip.arrow\n * @param tooltip.container\n * @return Object holding tooltip rectangles in\n * two fields.\n */\nfunction calcTooltipRects(tooltip: ComponentsT): TooltipRectsT {\n return {\n arrow: tooltip.arrow.getBoundingClientRect(),\n container: tooltip.container.getBoundingClientRect(),\n };\n}\n\n/**\n * Calculates the document viewport size.\n * @ignore\n * @return {{x, y, width, height}}\n */\nfunction calcViewportRect() {\n const { scrollX, scrollY } = window;\n const { documentElement: { clientHeight, clientWidth } } = document;\n return {\n left: scrollX,\n right: scrollX + clientWidth,\n top: scrollY,\n bottom: scrollY + clientHeight,\n };\n}\n\n/**\n * Calculates tooltip and arrow positions for the placement just above\n * the cursor.\n * @ignore\n * @param {number} x Cursor page-x position.\n * @param {number} y Cursor page-y position.\n * @param {object} tooltipRects Bounding client rectangles of tooltip parts.\n * @param {object} tooltipRects.arrow\n * @param {object} tooltipRects.container\n * @return {object} Contains the following fields:\n * - {number} arrowX\n * - {number} arrowY\n * - {number} containerX\n * - {number} containerY\n * - {string} baseArrowStyle\n */\nfunction calcPositionAboveXY(\n x: number,\n y: number,\n tooltipRects: TooltipRectsT,\n) {\n const { arrow, container } = tooltipRects;\n return {\n arrowX: 0.5 * (container.width - arrow.width),\n arrowY: container.height,\n containerX: x - container.width / 2,\n containerY: y - container.height - arrow.height / 1.5,\n\n // TODO: Instead of already setting the base style here, we should\n // introduce a set of constants for arrow directions, which will help\n // to do checks dependant on the arrow direction.\n baseArrowStyle: ARROW_STYLE_DOWN,\n };\n}\n\n/*\nconst HIT = {\n NONE: false,\n LEFT: 'LEFT',\n RIGHT: 'RIGHT',\n TOP: 'TOP',\n BOTTOM: 'BOTTOM',\n};\n*/\n\n/**\n * Checks whether\n * @param {object} pos\n * @param {object} tooltipRects\n * @param {object} viewportRect\n * @return {HIT}\n */\n/*\nfunction checkViewportFit(pos, tooltipRects, viewportRect) {\n const { containerX, containerY } = pos;\n if (containerX < viewportRect.left + 6) return HIT.LEFT;\n if (containerX > viewportRect.right - 6) return HIT.RIGHT;\n return HIT.NONE;\n}\n*/\n\n/**\n * Shifts tooltip horizontally to fit into the viewport, while keeping\n * the arrow pointed to the XY point.\n * @param {number} x\n * @param {number} y\n * @param {object} pos\n * @param {number} pageXOffset\n * @param {number} pageXWidth\n */\n/*\nfunction xPageFitCorrection(x, y, pos, pageXOffset, pageXWidth) {\n if (pos.containerX < pageXOffset + 6) {\n pos.containerX = pageXOffset + 6;\n pos.arrowX = Math.max(6, pageX - containerX - arrowRect.width / 2);\n } else {\n const maxX = pageXOffset + docRect.width - containerRect.width - 6;\n if (containerX > maxX) {\n containerX = maxX;\n arrowX = Math.min(\n containerRect.width - 6,\n pageX - containerX - arrowRect.width / 2,\n );\n }\n }\n}\n*/\n\n/**\n * Sets positions of tooltip components to point the tooltip to the specified\n * page point.\n * @ignore\n * @param pageX\n * @param pageY\n * @param placement\n * @param element DOM reference to the element wrapped by the tooltip.\n * @param tooltip\n * @param tooltip.arrow DOM reference to the tooltip arrow.\n * @param tooltip.container DOM reference to the tooltip container.\n */\nfunction setComponentPositions(\n pageX: number,\n pageY: number,\n placement: PLACEMENTS | undefined,\n element: HTMLElement | undefined,\n tooltip: ComponentsT,\n) {\n const tooltipRects = calcTooltipRects(tooltip);\n const viewportRect = calcViewportRect();\n\n /* Default container coords: tooltip at the top. */\n const pos = calcPositionAboveXY(pageX, pageY, tooltipRects);\n\n if (pos.containerX < viewportRect.left + 6) {\n pos.containerX = viewportRect.left + 6;\n pos.arrowX = Math.max(\n 6,\n pageX - pos.containerX - tooltipRects.arrow.width / 2,\n );\n } else {\n const maxX = viewportRect.right - 6 - tooltipRects.container.width;\n if (pos.containerX > maxX) {\n pos.containerX = maxX;\n pos.arrowX = Math.min(\n tooltipRects.container.width - 6,\n pageX - pos.containerX - tooltipRects.arrow.width / 2,\n );\n }\n }\n\n /* If tooltip has not enough space on top - make it bottom tooltip. */\n if (pos.containerY < viewportRect.top + 6) {\n pos.containerY += tooltipRects.container.height\n + 2 * tooltipRects.arrow.height;\n pos.arrowY -= tooltipRects.container.height\n + tooltipRects.arrow.height;\n pos.baseArrowStyle = ARROW_STYLE_UP;\n }\n\n const containerStyle = `left:${pos.containerX}px;top:${pos.containerY}px`;\n tooltip.container.setAttribute('style', containerStyle);\n\n const arrowStyle = `${pos.baseArrowStyle};left:${pos.arrowX}px;top:${pos.arrowY}px`;\n tooltip.arrow.setAttribute('style', arrowStyle);\n}\n\n/* The Tooltip component itself. */\nconst Tooltip: FunctionComponent<{\n children?: ReactNode;\n ref?: RefObject<unknown>;\n theme: any;\n}> = ({ children, ref, theme }) => {\n // NOTE: The way it has to be implemented, for clean mounting and unmounting\n // at the client side, the <Tooltip> is fully mounted into DOM in the next\n // rendering cycles, and only then it can be correctly measured and positioned.\n // Thus, when we create the <Tooltip> we have to record its target positioning\n // details, and then apply them when it is created.\n\n const { current: heap } = useRef<HeapT>({\n lastElement: undefined,\n lastPageX: 0,\n lastPageY: 0,\n lastPlacement: undefined,\n });\n\n const [components, setComponents] = useState<ComponentsT | null>(null);\n\n const pointTo = (\n pageX: number,\n pageY: number,\n placement: PLACEMENTS,\n element: HTMLElement,\n ) => {\n heap.lastElement = element;\n heap.lastPageX = pageX;\n heap.lastPageY = pageY;\n heap.lastPlacement = placement;\n\n if (components) {\n setComponentPositions(pageX, pageY, placement, element, components);\n }\n };\n useImperativeHandle(ref, () => ({ pointTo }));\n\n /* Inits and destroys tooltip components. */\n useEffect(() => {\n const x = createTooltipComponents(theme);\n setComponents(x);\n return () => {\n document.body.removeChild(x.container);\n setComponents(null);\n };\n }, [theme]);\n\n useEffect(() => {\n if (components) {\n setComponentPositions(\n heap.lastPageX,\n heap.lastPageY,\n heap.lastPlacement,\n heap.lastElement,\n components,\n );\n }\n }, [\n components,\n // BEWARE: Careful about these dependencies - they are updated when mouse\n // is moved over the tool-tipped element, thus potentially may cause\n // unnecessary firing of this effect on each mouse event. It does not\n // happen now just because the mouse movements themselves are not causing\n // the component re-rendering, thus dependencies of this effect are not\n // really re-evaluated.\n heap.lastPageX,\n heap.lastPageY,\n heap.lastPlacement,\n heap.lastElement,\n ]);\n\n return components ? createPortal(children, components.content) : null;\n};\n\nexport default Tooltip;\n","// extracted by mini-css-extract-plugin\nexport default {\"arrow\":\"M9gywF\",\"ad\":\"_4xT7zE\",\"hoc\":\"zd-vnH\",\"context\":\"GdZucr\",\"container\":\"f9gY8K\",\"appearance\":\"L4ubm-\",\"wrapper\":\"_4qDBRM\"};","/* global window */\n\nimport {\n type FunctionComponent,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport Tooltip, {\n type ThemeKeysT as TooltipThemeKeysT,\n PLACEMENTS,\n} from './Tooltip';\n\nimport defaultTheme from './default-theme.scss';\n\ntype PropsT = {\n children?: ReactNode;\n placement?: PLACEMENTS;\n tip?: ReactNode;\n theme: Theme<'wrapper' | TooltipThemeKeysT>;\n};\n\ntype TooltipRefT = {\n pointTo: (\n x: number,\n y: number,\n placement: PLACEMENTS,\n wrapperRef: HTMLDivElement,\n ) => void;\n};\n\ntype HeapT = {\n lastCursorX: number;\n lastCursorY: number;\n triggeredByTouch: boolean;\n timerId?: NodeJS.Timeout;\n};\n\n/**\n * Implements a simple to use and themeable tooltip component, _e.g._\n * ```js\n * <WithTooltip tip=\"This is example tooltip.\">\n * <p>Hover to see the tooltip.</p>\n * </WithTooltip>\n * ```\n * **Children:** Children are rendered in the place of `<WithTooltip>`,\n * and when hovered the tooltip is shown. By default the wrapper itself is\n * `<div>` block with `display: inline-block`.\n * @param tip &ndash; Anything React is able to render,\n * _e.g._ a tooltip text. This will be the tooltip content.\n * @param {WithTooltipTheme} props.theme _Ad hoc_ theme.\n */\nconst Wrapper: FunctionComponent<PropsT> = ({\n children,\n placement = PLACEMENTS.ABOVE_CURSOR,\n tip,\n theme,\n}) => {\n const { current: heap } = useRef<HeapT>({\n lastCursorX: 0,\n lastCursorY: 0,\n triggeredByTouch: false,\n timerId: undefined,\n });\n const tooltipRef = useRef<TooltipRefT>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [showTooltip, setShowTooltip] = useState(false);\n\n const updatePortalPosition = (cursorX: number, cursorY: number) => {\n if (!showTooltip) {\n heap.lastCursorX = cursorX;\n heap.lastCursorY = cursorY;\n\n // If tooltip was triggered by a touch, we delay its opening by a bit,\n // to ensure it was not a touch-click - in the case of touch click we\n // want to do the click, rather than show the tooltip, and the delay\n // gives click handler a chance to abort the tooltip openning.\n if (heap.triggeredByTouch) {\n if (!heap.timerId) {\n heap.timerId = setTimeout(() => {\n heap.triggeredByTouch = false;\n heap.timerId = undefined;\n setShowTooltip(true);\n }, 300);\n }\n\n // Otherwise we can just open the tooltip right away.\n } else setShowTooltip(true);\n } else {\n const wrapperRect = wrapperRef.current!.getBoundingClientRect();\n if (\n cursorX < wrapperRect.left\n || cursorX > wrapperRect.right\n || cursorY < wrapperRect.top\n || cursorY > wrapperRect.bottom\n ) {\n setShowTooltip(false);\n } else if (tooltipRef.current) {\n tooltipRef.current.pointTo(\n cursorX + window.scrollX,\n cursorY + window.scrollY,\n placement!,\n wrapperRef.current!,\n );\n }\n }\n };\n\n useEffect(() => {\n if (showTooltip && tip !== null) {\n // This is necessary to ensure that even when a single mouse event\n // arrives to a tool-tipped component, the tooltip is correctly positioned\n // once opened (because similar call above does not have effect until\n // the tooltip is fully mounted, and that is delayed to future rendering\n // cycle due to the implementation).\n if (tooltipRef.current) {\n tooltipRef.current.pointTo(\n heap.lastCursorX + window.scrollX,\n heap.lastCursorY + window.scrollY,\n placement!,\n wrapperRef.current!,\n );\n }\n\n const listener = () => setShowTooltip(false);\n window.addEventListener('scroll', listener);\n return () => window.removeEventListener('scroll', listener);\n }\n return undefined;\n }, [\n heap.lastCursorX,\n heap.lastCursorY,\n placement,\n showTooltip,\n tip,\n ]);\n\n return (\n <div\n className={theme.wrapper}\n onMouseLeave={() => setShowTooltip(false)}\n onMouseMove={(e) => updatePortalPosition(e.clientX, e.clientY)}\n onClick={() => {\n if (heap.timerId) {\n clearTimeout(heap.timerId);\n heap.timerId = undefined;\n heap.triggeredByTouch = false;\n }\n }}\n onTouchStart={() => {\n heap.triggeredByTouch = true;\n }}\n ref={wrapperRef}\n role=\"presentation\"\n >\n {\n showTooltip && tip !== null ? (\n <Tooltip ref={tooltipRef} theme={theme}>{tip}</Tooltip>\n ) : null\n }\n {children}\n </div>\n );\n};\n\nconst ThemedWrapper = themed(Wrapper, 'WithTooltip', defaultTheme);\n\ntype ExportT = typeof ThemedWrapper & {\n PLACEMENTS: typeof PLACEMENTS;\n};\n\nconst e: ExportT = ThemedWrapper as ExportT;\n\ne.PLACEMENTS = PLACEMENTS;\n\nexport default e;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"sXHM81\",\"context\":\"veKyYi\",\"ad\":\"r3ABzd\",\"hoc\":\"YKcPnR\",\"video\":\"SlV2zw\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"jTxmOX\",\"context\":\"dzIcLh\",\"ad\":\"_5a9XX1\",\"hoc\":\"_7sH52O\"};","import qs from 'qs';\n\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport Throbber from 'components/Throbber';\n\nimport baseTheme from './base.scss';\nimport throbberTheme from './throbber.scss';\n\ntype ComponentThemeT = Theme<'container' | 'video'>;\n\ntype PropsT = {\n autoplay?: boolean;\n src: string;\n theme: ComponentThemeT,\n title?: string;\n};\n\n/**\n * A component for embeding a YouTube video.\n * @param [props] Component properties.\n * @param [props.autoplay] If `true` the video will start to play\n * automatically once loaded.\n * @param [props.src] URL of the video to play. Can be in any of\n * the following formats, and keeps any additional query parameters understood\n * by the YouTube IFrame player:\n * - `https://www.youtube.com/watch?v=NdF6Rmt6Ado`\n * - `https://youtu.be/NdF6Rmt6Ado`\n * - `https://www.youtube.com/embed/NdF6Rmt6Ado`\n * @param [props.theme] _Ad hoc_ theme.\n * @param [props.title] The `title` attribute to add to the player\n * IFrame.\n */\nconst YouTubeVideo: React.FunctionComponent<PropsT> = ({\n autoplay,\n src,\n theme,\n title,\n}) => {\n const srcParts = src.split('?');\n let url = srcParts[0];\n const queryString = srcParts[1];\n const query = queryString ? qs.parse(queryString) : {};\n\n const videoId = query.v || url?.match(/\\/([a-zA-Z0-9-_]*)$/)?.[1];\n url = `https://www.youtube.com/embed/${videoId}`;\n\n delete query.v;\n query.autoplay = autoplay ? '1' : '0';\n url += `?${qs.stringify(query)}`;\n\n // TODO: https://developers.google.com/youtube/player_parameters\n // More query parameters can be exposed via the component props.\n\n return (\n <div className={theme.container}>\n <Throbber theme={throbberTheme} />\n <iframe\n allow=\"autoplay\"\n allowFullScreen\n className={theme.video}\n src={url}\n title={title}\n />\n </div>\n );\n};\n\nexport default themed(YouTubeVideo, 'YouTubeVideo', baseTheme);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"dzMVIB\",\"context\":\"KVPc7g\",\"ad\":\"z2GQ0Z\",\"hoc\":\"_8R1Qdj\",\"textarea\":\"zd-OFg\",\"hidden\":\"GiHBXI\"};","import {\n type FocusEventHandler,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport themed, { type Theme } from '@dr.pogodin/react-themes';\n\nimport defaultTheme from './style.scss';\n\ntype ThemeKeyT =\n | 'container'\n | 'hidden'\n | 'textarea';\n\ntype Props = {\n disabled?: boolean;\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n onChange?: React.ChangeEventHandler<HTMLTextAreaElement>;\n onKeyDown?: React.KeyboardEventHandler<HTMLTextAreaElement>;\n placeholder?: string;\n theme: Theme<ThemeKeyT>;\n value?: string;\n};\n\nconst TextArea: React.FunctionComponent<Props> = ({\n disabled,\n onBlur,\n onChange,\n onKeyDown,\n placeholder,\n theme,\n value,\n}) => {\n const hiddenAreaRef = useRef<HTMLTextAreaElement>(null);\n const [height, setHeight] = useState<number | undefined>();\n\n const [localValue, setLocalValue] = useState(value || '');\n if (value !== undefined && localValue !== value) setLocalValue(value);\n\n // This resizes text area's height when its width is changed for any reason.\n useEffect(() => {\n const el = hiddenAreaRef.current;\n if (!el) return undefined;\n\n const cb = () => {\n setHeight(el.scrollHeight);\n };\n const observer = new ResizeObserver(cb);\n observer.observe(el);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n // This resizes the text area when its content is modified.\n useEffect(() => {\n const el = hiddenAreaRef.current;\n if (el) setHeight(el.scrollHeight);\n }, [localValue]);\n\n return (\n <div className={theme.container}>\n <textarea\n // This text area is hidden underneath the primary one below,\n // and it is used for text measurements, to implement auto-scaling\n // of the primary textarea's height.\n readOnly\n ref={hiddenAreaRef}\n className={`${theme.textarea} ${theme.hidden}`}\n value={localValue}\n />\n <textarea\n disabled={disabled}\n onBlur={onBlur}\n // When value is \"undefined\" the text area is not-managed, and we should\n // manage it internally for the measurement / resizing functionality\n // to work.\n onChange={value === undefined ? ((e) => {\n setLocalValue(e.target.value);\n }) : onChange}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n style={{ height }}\n className={theme.textarea}\n value={localValue}\n />\n </div>\n );\n};\n\nexport default themed(TextArea, 'TextArea', defaultTheme);\n","import 'styles/global.scss';\n\nimport { webpack } from 'utils';\n\nimport type ServerFactoryT from './server';\n\nconst server = webpack.requireWeak('./server', __dirname) as (typeof ServerFactoryT) | null;\n\nconst client = server ? undefined : require('./client').default;\n\nexport {\n type AsyncCollectionT,\n type AsyncCollectionLoaderT,\n type AsyncDataEnvelopeT,\n type AsyncDataLoaderT,\n type ForceT,\n type UseAsyncDataOptionsT,\n type UseAsyncDataResT,\n type UseGlobalStateResT,\n type ValueOrInitializerT,\n getGlobalState,\n GlobalStateProvider,\n newAsyncDataEnvelope,\n useAsyncCollection,\n useAsyncData,\n useGlobalState,\n withGlobalStateType,\n} from '@dr.pogodin/react-global-state';\n\nexport * from 'components';\n\nexport {\n type BeforeRenderResT,\n type BeforeRenderT,\n type ConfigT,\n type ServerSsrContext,\n type ServerT,\n} from './server';\n\nexport {\n type Listener,\n type Theme,\n config,\n Barrier,\n Emitter,\n isomorphy,\n getSsrContext,\n Semaphore,\n splitComponent,\n themed,\n ThemeProvider,\n time,\n webpack,\n withRetries,\n} from 'utils';\n\nexport { client, server };\n"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__864__","__WEBPACK_EXTERNAL_MODULE__126__","__WEBPACK_EXTERNAL_MODULE__264__","__WEBPACK_EXTERNAL_MODULE__859__","__WEBPACK_EXTERNAL_MODULE__462__","__WEBPACK_EXTERNAL_MODULE__185__","__WEBPACK_EXTERNAL_MODULE__958__","__WEBPACK_EXTERNAL_MODULE__814__","__WEBPACK_EXTERNAL_MODULE__360__","__WEBPACK_EXTERNAL_MODULE__155__","__WEBPACK_EXTERNAL_MODULE__514__","__WEBPACK_EXTERNAL_MODULE__236__","__WEBPACK_EXTERNAL_MODULE__707__","IS_CLIENT_SIDE","process","versions","node","global","REACT_UTILS_FORCE_CLIENT_SIDE","IS_SERVER_SIDE","requireWeak","modulePath","basePath","resolve","eval","path","default","def","named","res","Object","entries","forEach","_ref","name","value","assigned","undefined","Error","resolveWeak","REACT_ELEMENT_TYPE","Symbol","for","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","ref","$$typeof","props","Fragment","jsx","jsxs","buildInfo","getBuildInfo","BUILD_INFO","inj","metaElement","document","querySelector","remove","data","forge","decode64","content","d","createDecipher","start","iv","slice","length","update","createBuffer","finish","decodeUtf8","output","window","REACT_UTILS_INJECTION","getInj","isDevBuild","getMode","isProdBuild","buildTimestamp","timestamp","Launch","Application","options","arguments","container","getElementById","scene","_jsx","GlobalStateProvider","initialState","ISTATE","children","BrowserRouter","HelmetProvider","dontHydrate","createRoot","render","hydrateRoot","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","call","r","toStringTag","CONFIG","cookie","CSRF","parse","csrfToken","getSsrContext","withGlobalStateType","useCurrent","autorefresh","globalStatePath","precision","SEC_MS","now","setter","useGlobalState","Date","useEffect","timerId","old","neu","Math","abs","setTimeout","clearTimeout","useTimezoneOffset","cookieName","ssrContext","offset","setOffset","_ssrContext$req","req","cookies","parseInt","getTimezoneOffset","serialize","toString","time","DAY_MS","HOUR_MS","MIN_MS","YEAR_MS","timer","assign","dayjs","clientChunkGroups","CHUNK_GROUPS","refCounts","getPublicPath","publicPath","bookStyleSheet","loadedSheets","refCount","fullPath","location","origin","has","link","createElement","setAttribute","head","appendChild","Barrier","addEventListener","current","getLoadedStyleSheets","Set","styleSheets","i","_styleSheets$i","href","add","assertChunkName","chunkName","chunkGroups","bookStyleSheets","promises","assets","Promise","asset","endsWith","promise","push","allSettled","then","freeStyleSheets","pathRefCount","usedChunkNames","splitComponent","getComponent","placeholder","LazyComponent","lazy","async","resolved","Component","_ref2","rest","chunks","includes","useInsertionEffect","_ref3","Suspense","fallback","themed","themedImpl","COMPOSE","PRIORITY","BaseModal","cancelOnScrolling","containerStyle","dontDisableScrolling","onCancel","overlayStyle","style","testId","testIdForOverlay","theme","containerRef","useRef","overlayRef","portal","setPortal","useState","p","body","removeChild","removeEventListener","classList","S","scrollingDisabledByModal","focusLast","useMemo","onFocus","_containerRef$current","_overlayRef$current","elems","querySelectorAll","_elems$i","focus","activeElement","tabIndex","ReactDom","_jsxs","_Fragment","className","overlay","onClick","stopPropagation","onKeyDown","role","onWheel","event","_overlayRef$current2","baseTheme","isValue","x","optionValueName","option","_option$name","areEqual","b","left","top","width","Options","containerClass","filter","onChange","optionClass","opsRef","useImperativeHandle","measure","_opsRef$current","parentElement","rect","getBoundingClientRect","getComputedStyle","mBottom","parseFloat","marginBottom","mTop","marginTop","height","optionNodes","iValue","iName","ad","hoc","context","BaseCustomDropdown","label","active","setActive","dropdownRef","opsPos","setOpsPos","upward","setUpward","id","cb","_dropdownRef$current","anchor","opsRect","_window$visualViewpor","_window$visualViewpor2","fitsDown","bottom","visualViewport","fitsUp","up","pos","requestAnimationFrame","cancelAnimationFrame","openList","view","selected","containerClassName","opsContainerClass","select","dropdown","arrow","newValue","defaultTheme","Dropdown","isValidValue","optionElements","hiddenOption","disabled","selectClassName","invalid","BaseSwitch","onPress","GenericLink","enforceA","keepScrollPosition","onMouseDown","openNewTab","replace","routerLinkType","to","match","preventDefault","rel","target","L","discover","scroll","Link","RrLink","BaseButton","onPointerDown","button","Checkbox","checked","checkboxClassName","checkbox","indeterminate","Input","input","PageLayout","leftSidePanelContent","rightSidePanelContent","sidePanel","leftSidePanel","join","mainPanel","rightSidePanel","Context","createContext","description","title","MetaTags","extraMetaTags","image","siteName","socialDescription","socialTitle","url","socTitle","socDesc","extra","Helmet","Provider","NavLink","RrNavLink","Throbber","circle","PLACEMENTS","ARROW_STYLE_DOWN","ARROW_STYLE_UP","createTooltipComponents","calcTooltipRects","tooltip","calcViewportRect","scrollX","scrollY","documentElement","clientHeight","clientWidth","right","calcPositionAboveXY","y","tooltipRects","arrowX","arrowY","containerX","containerY","baseArrowStyle","setComponentPositions","pageX","pageY","placement","element","viewportRect","max","maxX","min","arrowStyle","Tooltip","heap","lastElement","lastPageX","lastPageY","lastPlacement","components","setComponents","pointTo","createPortal","Wrapper","ABOVE_CURSOR","tip","lastCursorX","lastCursorY","triggeredByTouch","tooltipRef","wrapperRef","showTooltip","setShowTooltip","listener","wrapper","onMouseLeave","onMouseMove","updatePortalPosition","cursorX","cursorY","wrapperRect","clientX","clientY","onTouchStart","ThemedWrapper","YouTubeVideo","_url","autoplay","src","srcParts","split","queryString","query","qs","v","throbberTheme","allow","allowFullScreen","video","TextArea","onBlur","hiddenAreaRef","setHeight","localValue","setLocalValue","el","observer","ResizeObserver","scrollHeight","observe","disconnect","readOnly","textarea","hidden","server","webpack","__dirname","client"],"sourceRoot":""}