@dr.pogodin/react-utils 1.44.10 → 1.45.0

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,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=exports.PLACEMENTS=void 0;var _react=require("react");var _reactDom=require("react-dom");/**
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=exports.PLACEMENTS=void 0;var _react=require("react");var _reactDom=require("react-dom");var _jsxRuntime=require("react/jsx-runtime");/**
2
2
  * The actual tooltip component. It is rendered outside the regular document
3
3
  * hierarchy, and with sub-components managed without React to achieve the best
4
4
  * performance during animation.
@@ -6,13 +6,6 @@
6
6
  * Valid placements of the rendered tooltip. They will be overriden when
7
7
  * necessary to fit the tooltip within the viewport.
8
8
  */let PLACEMENTS=exports.PLACEMENTS=/*#__PURE__*/function(PLACEMENTS){PLACEMENTS["ABOVE_CURSOR"]="ABOVE_CURSOR";PLACEMENTS["ABOVE_ELEMENT"]="ABOVE_ELEMENT";PLACEMENTS["BELOW_CURSOR"]="BELOW_CURSOR";PLACEMENTS["BELOW_ELEMENT"]="BELOW_ELEMENT";return PLACEMENTS}({});const ARROW_STYLE_DOWN=["border-bottom-color:transparent","border-left-color:transparent","border-right-color:transparent"].join(";");const ARROW_STYLE_UP=["border-top-color:transparent","border-left-color:transparent","border-right-color:transparent"].join(";");/**
9
- * Creates tooltip components.
10
- * @ignore
11
- * @param {object} theme Themes to use for tooltip container, arrow,
12
- * and content.
13
- * @return {object} Object with DOM references to the container components:
14
- * container, arrow, content.
15
- */function createTooltipComponents(theme){const arrow=document.createElement("div");if(theme.arrow)arrow.setAttribute("class",theme.arrow);const content=document.createElement("div");if(theme.content)content.setAttribute("class",theme.content);const container=document.createElement("div");if(theme.container)container.setAttribute("class",theme.container);container.appendChild(arrow);container.appendChild(content);document.body.appendChild(container);return{arrow,container,content}}/**
16
9
  * Generates bounding client rectangles for tooltip components.
17
10
  * @ignore
18
11
  * @param tooltip DOM references to the tooltip components.
@@ -100,11 +93,5 @@ baseArrowStyle:ARROW_STYLE_DOWN}}// const HIT = {
100
93
  // rendering cycles, and only then it can be correctly measured and positioned.
101
94
  // Thus, when we create the <Tooltip> we have to record its target positioning
102
95
  // details, and then apply them when it is created.
103
- const{current:heap}=(0,_react.useRef)({lastElement:undefined,lastPageX:0,lastPageY:0,lastPlacement:undefined});const[components,setComponents]=(0,_react.useState)(null);const pointTo=(pageX,pageY,placement,element)=>{heap.lastElement=element;heap.lastPageX=pageX;heap.lastPageY=pageY;heap.lastPlacement=placement;if(components){setComponentPositions(pageX,pageY,placement,element,components)}};(0,_react.useImperativeHandle)(ref,()=>({pointTo}));/* Inits and destroys tooltip components. */(0,_react.useEffect)(()=>{const x=createTooltipComponents(theme);setComponents(x);return()=>{document.body.removeChild(x.container);setComponents(null)}},[theme]);(0,_react.useEffect)(()=>{if(components){setComponentPositions(heap.lastPageX,heap.lastPageY,heap.lastPlacement,heap.lastElement,components)}},[components,// BEWARE: Careful about these dependencies - they are updated when mouse
104
- // is moved over the tool-tipped element, thus potentially may cause
105
- // unnecessary firing of this effect on each mouse event. It does not
106
- // happen now just because the mouse movements themselves are not causing
107
- // the component re-rendering, thus dependencies of this effect are not
108
- // really re-evaluated.
109
- heap.lastPageX,heap.lastPageY,heap.lastPlacement,heap.lastElement]);return components?/*#__PURE__*/(0,_reactDom.createPortal)(children,components.content):null};var _default=exports.default=Tooltip;
96
+ const arrowRef=(0,_react.useRef)(null);const containerRef=(0,_react.useRef)(null);const contentRef=(0,_react.useRef)(null);const pointTo=(pageX,pageY,placement,element)=>{if(!arrowRef.current||!containerRef.current||!contentRef.current){throw Error("Internal error")}setComponentPositions(pageX,pageY,placement,element,{arrow:arrowRef.current,container:containerRef.current,content:contentRef.current})};(0,_react.useImperativeHandle)(ref,()=>({pointTo}));return/*#__PURE__*/(0,_reactDom.createPortal)(/*#__PURE__*/(0,_jsxRuntime.jsxs)("div",{className:theme.container,ref:containerRef,children:[/*#__PURE__*/(0,_jsxRuntime.jsx)("div",{className:theme.arrow,ref:arrowRef}),/*#__PURE__*/(0,_jsxRuntime.jsx)("div",{className:theme.content,ref:contentRef,children:children})]}),document.body)};var _default=exports.default=Tooltip;
110
97
  //# sourceMappingURL=Tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","names":["_react","require","_reactDom","PLACEMENTS","exports","ARROW_STYLE_DOWN","join","ARROW_STYLE_UP","createTooltipComponents","theme","arrow","document","createElement","setAttribute","content","container","appendChild","body","calcTooltipRects","tooltip","getBoundingClientRect","calcViewportRect","scrollX","scrollY","window","documentElement","clientHeight","clientWidth","bottom","left","right","top","calcPositionAboveXY","x","y","tooltipRects","arrowX","width","arrowY","height","containerX","containerY","baseArrowStyle","setComponentPositions","pageX","pageY","placement","element","viewportRect","pos","Math","max","maxX","min","containerStyle","arrowStyle","Tooltip","children","ref","current","heap","useRef","lastElement","undefined","lastPageX","lastPageY","lastPlacement","components","setComponents","useState","pointTo","useImperativeHandle","useEffect","removeChild","createPortal","_default","default"],"sources":["../../../../../src/shared/components/WithTooltip/Tooltip.ts"],"sourcesContent":["/**\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/**\n * Valid placements of the rendered tooltip. They will be overriden when\n * necessary to fit the tooltip within the viewport.\n */\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 = 'appearance' | 'arrow' | 'content' | '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 { arrow, container, 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 bottom: scrollY + clientHeight,\n left: scrollX,\n right: scrollX + clientWidth,\n top: scrollY,\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// const HIT = {\n// NONE: false,\n// LEFT: 'LEFT',\n// RIGHT: 'RIGHT',\n// TOP: 'TOP',\n// BOTTOM: 'BOTTOM',\n// };\n\n/**\n * Checks whether\n * @param {object} pos\n * @param {object} tooltipRects\n * @param {object} viewportRect\n * @return {HIT}\n */\n// function 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 * 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// function 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 * 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: TooltipThemeT;\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Tooltip.js","names":["_react","require","_reactDom","_jsxRuntime","PLACEMENTS","exports","ARROW_STYLE_DOWN","join","ARROW_STYLE_UP","calcTooltipRects","tooltip","arrow","getBoundingClientRect","container","calcViewportRect","scrollX","scrollY","window","documentElement","clientHeight","clientWidth","document","bottom","left","right","top","calcPositionAboveXY","x","y","tooltipRects","arrowX","width","arrowY","height","containerX","containerY","baseArrowStyle","setComponentPositions","pageX","pageY","placement","element","viewportRect","pos","Math","max","maxX","min","containerStyle","setAttribute","arrowStyle","Tooltip","children","ref","theme","arrowRef","useRef","containerRef","contentRef","pointTo","current","Error","content","useImperativeHandle","createPortal","jsxs","className","jsx","body","_default","default"],"sources":["../../../../../src/shared/components/WithTooltip/Tooltip.tsx"],"sourcesContent":["/**\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 useImperativeHandle,\n useRef,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\n\nimport type { Theme } from '@dr.pogodin/react-themes';\n\n/**\n * Valid placements of the rendered tooltip. They will be overriden when\n * necessary to fit the tooltip within the viewport.\n */\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\nexport type ThemeKeysT = 'appearance' | 'arrow' | 'content' | 'container';\n\ntype TooltipThemeT = Theme<ThemeKeysT>;\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 bottom: scrollY + clientHeight,\n left: scrollX,\n right: scrollX + clientWidth,\n top: scrollY,\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// const HIT = {\n// NONE: false,\n// LEFT: 'LEFT',\n// RIGHT: 'RIGHT',\n// TOP: 'TOP',\n// BOTTOM: 'BOTTOM',\n// };\n\n/**\n * Checks whether\n * @param {object} pos\n * @param {object} tooltipRects\n * @param {object} viewportRect\n * @return {HIT}\n */\n// function 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 * 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// function 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 * 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: TooltipThemeT;\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 arrowRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n\n const pointTo = (\n pageX: number,\n pageY: number,\n placement: PLACEMENTS,\n element: HTMLElement,\n ) => {\n if (!arrowRef.current || !containerRef.current || !contentRef.current) {\n throw Error('Internal error');\n }\n\n setComponentPositions(pageX, pageY, placement, element, {\n arrow: arrowRef.current,\n container: containerRef.current,\n content: contentRef.current,\n });\n };\n useImperativeHandle(ref, () => ({ pointTo }));\n\n return createPortal(\n (\n <div className={theme.container} ref={containerRef}>\n <div className={theme.arrow} ref={arrowRef} />\n <div className={theme.content} ref={contentRef}>{children}</div>\n </div>\n ),\n document.body,\n );\n};\n\nexport default Tooltip;\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  /*! For license information please see web.bundle.js.LICENSE.txt */
2
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(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")):"function"==typeof define&&define.amd?define(["@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"],t):"object"==typeof exports?exports["@dr.pogodin/react-utils"]=t(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")):e["@dr.pogodin/react-utils"]=t(e["@dr.pogodin/js-utils"],e["@dr.pogodin/react-global-state"],e["@dr.pogodin/react-helmet"],e["@dr.pogodin/react-themes"],e.cookie,e.dayjs,e["node-forge/lib/aes"],e["node-forge/lib/forge"],e.qs,e.react,e["react-dom"],e["react-dom/client"],e["react-router"])}("undefined"!=typeof self?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__){return function(){"use strict";var __webpack_modules__={48:function(e,t,r){r.d(t,{B:function(){return n},p:function(){return o}});const n="object"!=typeof process||!process.versions?.node||!!r.g.REACT_UTILS_FORCE_CLIENT_SIDE,o=!n},126:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__126__},148:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{requireWeak:function(){return requireWeak},resolveWeak:function(){return resolveWeak}});var _isomorphy__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(724);function requireWeak(modulePath,basePathOrOptions){if(_isomorphy__WEBPACK_IMPORTED_MODULE_0__.IS_CLIENT_SIDE)return null;let basePath,ops;"string"==typeof basePathOrOptions?(basePath=basePathOrOptions,ops={}):(ops=basePathOrOptions??{},({basePath:basePath}=ops));try{const req=eval("require"),{resolve:resolve}=req("path"),path=basePath?resolve(basePath,modulePath):modulePath,module=req(path);if(!("default"in module)||!module.default)return module;const{default:def,...named}=module,res=def;return Object.entries(named).forEach(([e,t])=>{const r=res[e];if(r)res[e]=t;else if(r!==t)throw Error("Conflict between default and named exports")}),res}catch(e){if(ops.throwOnError)throw e;return null}}function resolveWeak(e){return e}},155:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__155__},185:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__185__},208:function(e,t){var r=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function o(e,t,n){var o=null;if(void 0!==n&&(o=""+n),void 0!==t.key&&(o=""+t.key),"key"in t)for(var a in n={},t)"key"!==a&&(n[a]=t[a]);else n=t;return t=n.ref,{$$typeof:r,type:e,key:o,ref:void 0!==t?t:null,props:n}}t.Fragment=n,t.jsx=o,t.jsxs=o},236:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__236__},264:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__264__},360:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__360__},462:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__462__},514:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__514__},540:function(e,t,r){let n;function o(){if(void 0===n)throw Error('"Build Info" has not been initialized yet');return n}r.d(t,{F:function(){return o}}),"undefined"!=typeof BUILD_INFO&&(n=BUILD_INFO)},668:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{A:function(){return getInj}});var node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(814),node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0__),node_forge_lib_aes__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(958),node_forge_lib_aes__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(node_forge_lib_aes__WEBPACK_IMPORTED_MODULE_1__),_shared_utils_isomorphy_buildInfo__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(540);let inj={};const metaElement="undefined"==typeof document?null:document.querySelector('meta[itemprop="drpruinj"]');if(metaElement){metaElement.remove();let data=node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0___default().util.decode64(metaElement.content);const{key:key}=(0,_shared_utils_isomorphy_buildInfo__WEBPACK_IMPORTED_MODULE_2__.F)(),d=node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0___default().cipher.createDecipher("AES-CBC",key);d.start({iv:data.slice(0,key.length)}),d.update(node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0___default().util.createBuffer(data.slice(key.length))),d.finish(),data=node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0___default().util.decodeUtf8(d.output.data),inj=eval(`(${data})`)}else"undefined"!=typeof window&&window.REACT_UTILS_INJECTION?(inj=window.REACT_UTILS_INJECTION,delete window.REACT_UTILS_INJECTION):inj={};function getInj(){return inj}},707:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__707__},724:function(e,t,r){r.r(t),r.d(t,{IS_CLIENT_SIDE:function(){return o.B},IS_SERVER_SIDE:function(){return o.p},buildTimestamp:function(){return _},getBuildInfo:function(){return n.F},isDevBuild:function(){return a},isProdBuild:function(){return i}});var n=r(540),o=r(48);function a(){return!1}function i(){return!0}function _(){return(0,n.F)().timestamp}},814:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__814__},859:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__859__},864:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__864__},922:function(e,t,r){e.exports=r(208)},958:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__958__},969:function(e,t,r){r.d(t,{A:function(){return c}});var n=r(236),o=r(264),a=r(707),i=r(126),_=r(668),s=r(922);function c(e,t={}){const r=document.getElementById("react-view");if(!r)throw Error("Failed to find container for React app");const c=(0,s.jsx)(i.GlobalStateProvider,{initialState:(0,_.A)().ISTATE??t.initialState,children:(0,s.jsx)(a.BrowserRouter,{children:(0,s.jsx)(o.HelmetProvider,{children:(0,s.jsx)(e,{})})})});t.dontHydrate?(0,n.createRoot)(r).render(c):(0,n.hydrateRoot)(r,c)}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=function(e,t){for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Barrier:function(){return js_utils_.Barrier},BaseButton:function(){return BaseButton},BaseModal:function(){return BaseModal},Button:function(){return Button},Cached:function(){return js_utils_.Cached},Checkbox:function(){return components_Checkbox},CustomDropdown:function(){return CustomDropdown},Dropdown:function(){return NativeDropdown},Emitter:function(){return js_utils_.Emitter},GlobalStateProvider:function(){return react_global_state_.GlobalStateProvider},Input:function(){return components_Input},Link:function(){return components_Link},MetaTags:function(){return react_helmet_.MetaTags},Modal:function(){return Modal},NavLink:function(){return components_NavLink},PageLayout:function(){return components_PageLayout},Semaphore:function(){return js_utils_.Semaphore},Switch:function(){return Switch},TextArea:function(){return components_TextArea},ThemeProvider:function(){return react_themes_.ThemeProvider},Throbber:function(){return components_Throbber},WithTooltip:function(){return WithTooltip},YouTubeVideo:function(){return components_YouTubeVideo},assertEmptyObject:function(){return js_utils_.assertEmptyObject},client:function(){return client},config:function(){return utils_config},getGlobalState:function(){return react_global_state_.getGlobalState},getSsrContext:function(){return getSsrContext},isomorphy:function(){return isomorphy},newAsyncDataEnvelope:function(){return react_global_state_.newAsyncDataEnvelope},server:function(){return server},splitComponent:function(){return splitComponent},themed:function(){return themed},time:function(){return utils_time},useAsyncCollection:function(){return react_global_state_.useAsyncCollection},useAsyncData:function(){return react_global_state_.useAsyncData},useGlobalState:function(){return react_global_state_.useGlobalState},webpack:function(){return webpack},withGlobalStateType:function(){return react_global_state_.withGlobalStateType},withRetries:function(){return js_utils_.withRetries}});var global={},react_themes_=__webpack_require__(859),react_themes_default=__webpack_require__.n(react_themes_),environment_check=__webpack_require__(48),webpack=__webpack_require__(148);const config=(environment_check.B?__webpack_require__(668).A().CONFIG:(0,webpack.requireWeak)("config"))??{};if(environment_check.B&&"undefined"!=typeof document){const e=__webpack_require__(462);config.CSRF=e.parse(document.cookie).csrfToken}var utils_config=config,isomorphy=__webpack_require__(724),external_cookie_=__webpack_require__(462),external_react_=__webpack_require__(155),external_dayjs_=__webpack_require__(185),external_dayjs_default=__webpack_require__.n(external_dayjs_),js_utils_=__webpack_require__(864),react_global_state_=__webpack_require__(126);const{getSsrContext:getSsrContext}=(0,react_global_state_.withGlobalStateType)();function useCurrent({autorefresh:e=!1,globalStatePath:t="currentTime",precision:r=5*js_utils_.SEC_MS}={}){const[n,o]=(0,react_global_state_.useGlobalState)(t,Date.now);return(0,external_react_.useEffect)(()=>{let t;const n=()=>{o(e=>{const t=Date.now();return Math.abs(t-e)>r?t:e}),e&&(t=setTimeout(n,r))};return n(),()=>{t&&clearTimeout(t)}},[e,r,o]),n}function useTimezoneOffset({cookieName:e="timezoneOffset",globalStatePath:t="timezoneOffset"}={}){const r=getSsrContext(!1),[n,o]=(0,react_global_state_.useGlobalState)(t,()=>{const t=e&&r?.req.cookies[e];return t?parseInt(t):0});return(0,external_react_.useEffect)(()=>{const t=(new Date).getTimezoneOffset();o(t),e&&(document.cookie=(0,external_cookie_.serialize)(e,t.toString(),{path:"/"}))},[e,o]),n}const time={DAY_MS:js_utils_.DAY_MS,HOUR_MS:js_utils_.HOUR_MS,MIN_MS:js_utils_.MIN_MS,SEC_MS:js_utils_.SEC_MS,YEAR_MS:js_utils_.YEAR_MS,now:Date.now,timer:js_utils_.timer,useCurrent:useCurrent,useTimezoneOffset:useTimezoneOffset};var utils_time=Object.assign(external_dayjs_default(),time),jsx_runtime=__webpack_require__(922);let clientChunkGroups;isomorphy.IS_CLIENT_SIDE&&(clientChunkGroups=__webpack_require__(668).A().CHUNK_GROUPS??{});const refCounts={};function getPublicPath(){return(0,isomorphy.getBuildInfo)().publicPath}function bookStyleSheet(e,t,r){let n;const o=`${getPublicPath()}/${e}`,a=`${document.location.origin}${o}`;if(!t.has(a)){let e=document.querySelector(`link[href="${o}"]`);e||(e=document.createElement("link"),e.setAttribute("rel","stylesheet"),e.setAttribute("href",o),document.head.appendChild(e)),n=new js_utils_.Barrier,e.addEventListener("load",()=>{if(!n)throw Error("Internal error");n.resolve()}),e.addEventListener("error",()=>{if(!n)throw Error("Internal error");n.resolve()})}if(r){const e=refCounts[o]??0;refCounts[o]=1+e}return n}function getLoadedStyleSheets(){const e=new Set,{styleSheets:t}=document;for(const{href:r}of t)r&&e.add(r);return e}function assertChunkName(e,t){if(!t[e])throw Error(`Unknown chunk name "${e}"`)}async function bookStyleSheets(e,t,r){const n=[],o=t[e];if(!o)return Promise.resolve();const a=getLoadedStyleSheets();for(const e of o)if(e.endsWith(".css")){const t=bookStyleSheet(e,a,r);t&&n.push(t)}return n.length?Promise.allSettled(n).then():Promise.resolve()}function freeStyleSheets(e,t){const r=t[e];if(r)for(const e of r)if(e.endsWith(".css")){const t=`${getPublicPath()}/${e}`,r=refCounts[t];r&&(r<=1?(document.head.querySelector(`link[href="${t}"]`).remove(),delete refCounts[t]):refCounts[t]=r-1)}}const usedChunkNames=new Set;function splitComponent({chunkName:e,getComponent:t,placeholder:r}){if(isomorphy.IS_CLIENT_SIDE&&assertChunkName(e,clientChunkGroups),usedChunkNames.has(e))throw Error(`Repeated splitComponent() call for the chunk "${e}"`);usedChunkNames.add(e);const n=(0,external_react_.lazy)(async()=>{const r=await t(),n="default"in r?r.default:r;return isomorphy.IS_CLIENT_SIDE&&await bookStyleSheets(e,clientChunkGroups,!1),{default:({children:t,ref:r,...o})=>{if(isomorphy.IS_SERVER_SIDE){const{chunkGroups:t,chunks:r}=getSsrContext();assertChunkName(e,t),r.includes(e)||r.push(e)}return(0,external_react_.useInsertionEffect)(()=>(bookStyleSheets(e,clientChunkGroups,!0),()=>{freeStyleSheets(e,clientChunkGroups)}),[]),(0,jsx_runtime.jsx)(n,{...o,ref:r,children:t})}}});return({children:e,...t})=>(0,jsx_runtime.jsx)(external_react_.Suspense,{fallback:r,children:(0,jsx_runtime.jsx)(n,{...t,children:e})})}const themed=react_themes_default();themed.COMPOSE=react_themes_.COMPOSE,themed.PRIORITY=react_themes_.PRIORITY;var react_helmet_=__webpack_require__(264);function isValue(e){const t=typeof e;return"number"===t||"string"===t}function optionValueName(e){return isValue(e)?[e,e]:[e.value,e.name??e.value]}var external_react_dom_=__webpack_require__(514),external_react_dom_default=__webpack_require__.n(external_react_dom_),base_theme={overlay:"ye2BZo",context:"Szmbbz",ad:"Ah-Nsc",hoc:"Wki41G",container:"gyZ4rc"},styles={scrollingDisabledByModal:"_5fRFtF"};const BaseModal=({cancelOnScrolling:e,children:t,containerStyle:r,dontDisableScrolling:n,onCancel:o,overlayStyle:a,style:i,testId:_,testIdForOverlay:s,theme:c})=>{const l=(0,external_react_.useRef)(null),u=(0,external_react_.useRef)(null),[d,p]=(0,external_react_.useState)();(0,external_react_.useEffect)(()=>{const e=document.createElement("div");return document.body.appendChild(e),p(e),()=>{document.body.removeChild(e)}},[]),(0,external_react_.useEffect)(()=>(e&&o&&(window.addEventListener("scroll",o),window.addEventListener("wheel",o)),()=>{e&&o&&(window.removeEventListener("scroll",o),window.removeEventListener("wheel",o))}),[e,o]),(0,external_react_.useEffect)(()=>(n||document.body.classList.add(styles.scrollingDisabledByModal),()=>{n||document.body.classList.remove(styles.scrollingDisabledByModal)}),[n]);const m=(0,external_react_.useMemo)(()=>(0,jsx_runtime.jsx)("div",{onFocus:()=>{const e=l.current.querySelectorAll("*");for(let t=e.length-1;t>=0;--t)if(e[t].focus(),document.activeElement===e[t])return;u.current?.focus()},tabIndex:0}),[]);return d?external_react_dom_default().createPortal((0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[m,(0,jsx_runtime.jsx)("div",{"aria-label":"Cancel",className:c.overlay,"data-testid":void 0,onClick:e=>{o&&(o(),e.stopPropagation())},onKeyDown:e=>{"Escape"===e.key&&o&&(o(),e.stopPropagation())},ref:e=>{e&&e!==u.current&&(u.current=e,e.focus())},role:"button",style:a,tabIndex:0}),(0,jsx_runtime.jsx)("div",{"aria-modal":"true",className:c.container,"data-testid":void 0,onClick:e=>{e.stopPropagation()},onWheel:e=>{e.stopPropagation()},ref:l,role:"dialog",style:i??r,children:t}),(0,jsx_runtime.jsx)("div",{onFocus:()=>{u.current?.focus()},tabIndex:0}),m]}),d):null};var Modal=react_themes_default()(BaseModal,"Modal",base_theme),style={overlay:"jKsMKG"};function areEqual(e,t){return e?.left===t?.left&&e?.top===t?.top&&e?.width===t?.width}const Options=({containerClass:e,containerStyle:t,filter:r,onCancel:n,onChange:o,optionClass:a,options:i,ref:_})=>{const s=(0,external_react_.useRef)(null);(0,external_react_.useImperativeHandle)(_,()=>({measure:()=>{const e=s.current?.parentElement;if(!e)return;const t=s.current.getBoundingClientRect(),r=window.getComputedStyle(e),n=parseFloat(r.marginBottom),o=parseFloat(r.marginTop);return t.height+=n+o,t}}),[]);const c=[];for(const e of i)if(!r||r(e)){const[t,r]=optionValueName(e);c.push((0,jsx_runtime.jsx)("div",{className:a,onClick:e=>{o(t),e.stopPropagation()},onKeyDown:e=>{"Enter"===e.key&&(o(t),e.stopPropagation())},role:"button",tabIndex:0,children:r},t))}return(0,jsx_runtime.jsx)(BaseModal,{cancelOnScrolling:!0,dontDisableScrolling:!0,onCancel:n,style:t,theme:{ad:"",container:e,context:"",hoc:"",overlay:style.overlay},children:(0,jsx_runtime.jsx)("div",{ref:s,children:c})})};var CustomDropdown_Options=Options,theme={container:"oQKv0Y",context:"_9Tod5r",ad:"R58zIg",hoc:"O-Tp1i",label:"YUPUNs",dropdown:"pNEyAA",option:"LD2Kzy",select:"LP5azC",arrow:"-wscve",active:"k2UDsV",upward:"HWRvu4"};const BaseCustomDropdown=({filter:e,label:t,onChange:r,options:n,theme:o,value:a})=>{const[i,_]=(0,external_react_.useState)(!1),s=(0,external_react_.useRef)(null),c=(0,external_react_.useRef)(null),[l,u]=(0,external_react_.useState)(),[d,p]=(0,external_react_.useState)(!1);(0,external_react_.useEffect)(()=>{if(!i)return;let e;const t=()=>{const r=s.current?.getBoundingClientRect(),n=c.current?.measure();if(r&&n){const e=r.bottom+n.height<(window.visualViewport?.height??0),t=r.top-n.height>0,o=!e&&t;p(o);const a=o?{left:r.left,top:r.top-n.height-1,width:r.width}:{left:r.left,top:r.bottom,width:r.width};u(e=>areEqual(e,a)?e:a)}e=requestAnimationFrame(t)};return requestAnimationFrame(t),()=>{cancelAnimationFrame(e)}},[i]);const m=e=>{const t=window.visualViewport,r=s.current.getBoundingClientRect();_(!0),u({left:t?.width??0,top:t?.height??0,width:r.width}),e.stopPropagation()};let f=(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:"‌"});for(const t of n)if(!e||e(t)){const[e,r]=optionValueName(t);if(e===a){f=r;break}}let h=o.container;i&&(h+=` ${o.active}`);let b=o.select??"";return d&&(h+=` ${o.upward}`,b+=` ${o.upward}`),(0,jsx_runtime.jsxs)("div",{className:h,children:[void 0===t?null:(0,jsx_runtime.jsx)("div",{className:o.label,children:t}),(0,jsx_runtime.jsxs)("div",{className:o.dropdown,onClick:m,onKeyDown:e=>{"Enter"===e.key&&m(e)},ref:s,role:"listbox",tabIndex:0,children:[f,(0,jsx_runtime.jsx)("div",{className:o.arrow})]}),i?(0,jsx_runtime.jsx)(CustomDropdown_Options,{containerClass:b,containerStyle:l,onCancel:()=>{_(!1)},onChange:e=>{_(!1),r&&r(e)},optionClass:o.option??"",options:n,ref:c}):null]})};var CustomDropdown=react_themes_default()(BaseCustomDropdown,"CustomDropdown",theme),NativeDropdown_theme={dropdown:"kI9A9U",context:"xHyZo4",ad:"ADu59e",hoc:"FTP2bb",arrow:"DubGkT",container:"WtSZPd",active:"ayMn7O",label:"K7JYKw",option:"_27pZ6W",hiddenOption:"clAKFJ",select:"N0Fc14",invalid:"wL4umU"};const Dropdown=({filter:e,label:t,onChange:r,options:n,testId:o,theme:a,value:i})=>{let _=!1;const s=[];for(const t of n)if(!e||e(t)){const[e,r]=optionValueName(t);_||=e===i,s.push((0,jsx_runtime.jsx)("option",{className:a.option,value:e,children:r},e))}const c=_?null:(0,jsx_runtime.jsx)("option",{className:a.hiddenOption,disabled:!0,value:i,children:i},"__reactUtilsHiddenOption");let l=a.select;return _||(l+=` ${a.invalid}`),(0,jsx_runtime.jsxs)("div",{className:a.container,children:[void 0===t?null:(0,jsx_runtime.jsx)("div",{className:a.label,children:t}),(0,jsx_runtime.jsxs)("div",{className:a.dropdown,children:[(0,jsx_runtime.jsxs)("select",{className:l,"data-testid":void 0,onChange:r,value:i,children:[c,s]}),(0,jsx_runtime.jsx)("div",{className:a.arrow})]})]})};var NativeDropdown=react_themes_default()(Dropdown,"Dropdown",NativeDropdown_theme),Switch_theme={container:"AWNvRj",context:"VMHfnP",ad:"HNliRC",hoc:"_2Ue-db",option:"fUfIAd",selected:"Wco-qk",options:"CZYtcC"};const BaseSwitch=({label:e,onChange:t,options:r,theme:n,value:o})=>{if(!r||!n.option)throw Error("Internal error");const a=[];for(const e of r){const[r,i]=optionValueName(e);let _,s=n.option;r===o?s+=` ${n.selected}`:t&&(_=()=>{t(r)}),a.push(_?(0,jsx_runtime.jsx)("div",{className:s,onClick:_,onKeyDown:e=>{"Enter"===e.key&&_()},role:"button",tabIndex:0,children:i},r):(0,jsx_runtime.jsx)("div",{className:s,children:i},r))}return(0,jsx_runtime.jsxs)("div",{className:n.container,children:[e?(0,jsx_runtime.jsx)("div",{className:n.label,children:e}):null,(0,jsx_runtime.jsx)("div",{className:n.options,children:a})]})};var Switch=react_themes_default()(BaseSwitch,"Switch",Switch_theme),external_react_router_=__webpack_require__(707),GenericLink_style={link:"zH52sA"};const GenericLink=({children:e,className:t,disabled:r,enforceA:n,keepScrollPosition:o,onClick:a,onMouseDown:i,openNewTab:_,replace:s,routerLinkType:c,to:l,...u})=>{if(r||n||_||l.match(/^(#|(https?|mailto):)/))return(0,jsx_runtime.jsx)("a",{className:(t?t+" ":"")+"zH52sA",href:l,onClick:r?e=>{e.preventDefault()}:a,onMouseDown:r?e=>{e.preventDefault()}:i,rel:"noopener noreferrer",target:_?"_blank":"",children:e});const d=c;return(0,jsx_runtime.jsx)(d,{className:t,discover:"none",onClick:e=>{a&&a(e),o||window.scroll(0,0)},onMouseDown:i,replace:s,to:l,...u,children:e})};var components_GenericLink=GenericLink;const Link=e=>(0,jsx_runtime.jsx)(components_GenericLink,{...e,routerLinkType:external_react_router_.Link});var components_Link=Link,Button_style={button:"E1FNQT",context:"KM0v4f",ad:"_3jm1-Q",hoc:"_0plpDL",active:"MAe9O6",disabled:"Br9IWV"};const BaseButton=({active:e,children:t,disabled:r,enforceA:n,onClick:o,onKeyDown:a,onKeyUp:i,onMouseDown:_,onMouseUp:s,onPointerDown:c,onPointerUp:l,openNewTab:u,replace:d,testId:p,theme:m,to:f})=>{let h=m.button;if(e&&m.active&&(h+=` ${m.active}`),r)return m.disabled&&(h+=` ${m.disabled}`),(0,jsx_runtime.jsx)("div",{className:h,"data-testid":void 0,children:t});let b=a;return!b&&o&&(b=e=>{"Enter"===e.key&&o(e)}),f?(0,jsx_runtime.jsx)(components_Link,{className:h,"data-testid":void 0,enforceA:n,onClick:o,onKeyUp:i,onMouseDown:_,onMouseUp:s,onPointerDown:c,onPointerUp:l,openNewTab:u,replace:d,to:f,children:t}):(0,jsx_runtime.jsx)("div",{className:h,"data-testid":void 0,onClick:o,onKeyDown:b,onKeyUp:i,onMouseDown:_,onMouseUp:s,onPointerDown:c,onPointerUp:l,role:"button",tabIndex:0,children:t})};var Button=react_themes_default()(BaseButton,"Button",Button_style),Checkbox_theme={checkbox:"A-f8qJ",context:"dNQcC6",ad:"earXxa",hoc:"qAPfQ6",indeterminate:"N9bCb8",container:"Kr0g3M",label:"_3dML-O",disabled:"EzQra1"};const Checkbox=({checked:e,disabled:t,label:r,onChange:n,testId:o,theme:a})=>{let i=a.container;t&&(i+=` ${a.disabled}`);let _=a.checkbox;return"indeterminate"===e&&(_+=` ${a.indeterminate}`),(0,jsx_runtime.jsxs)("div",{className:i,children:[void 0===r?null:(0,jsx_runtime.jsx)("div",{className:a.label,children:r}),(0,jsx_runtime.jsx)("input",{checked:void 0===e?void 0:!0===e,className:_,"data-testid":void 0,disabled:t,onChange:n,onClick:e=>{e.stopPropagation()},type:"checkbox"})]})};var components_Checkbox=react_themes_default()(Checkbox,"Checkbox",Checkbox_theme),Input_theme={container:"Cxx397",context:"X5WszA",ad:"_8s7GCr",hoc:"TVlBYc",children:"m4FpDO",input:"M07d4s",label:"gfbdq-",error:"p2idHY",errorMessage:"Q9uslG"};const Input=({children:e,error:t,label:r,ref:n,testId:o,theme:a,...i})=>{const[_,s]=(0,external_react_.useState)(!1),c=(0,external_react_.useRef)(null);let l=a.container;return _&&(l+=` ${a.focused}`),!i.value&&a.empty&&(l+=` ${a.empty}`),t&&(l+=` ${a.error}`),(0,jsx_runtime.jsxs)("div",{className:l,onFocus:()=>{"object"==typeof n?n?.current?.focus():c.current?.focus()},children:[void 0===r?null:(0,jsx_runtime.jsx)("div",{className:a.label,children:r}),(0,jsx_runtime.jsx)("input",{className:a.input,"data-testid":void 0,ref:n??c,...i,onBlur:a.focused?e=>{s(!1),i.onBlur?.(e)}:i.onBlur,onFocus:a.focused?e=>{s(!0),i.onFocus?.(e)}:i.onFocus}),t&&!0!==t?(0,jsx_runtime.jsx)("div",{className:a.errorMessage,children:t}):null,e?(0,jsx_runtime.jsx)("div",{className:a.children,children:e}):null]})};var components_Input=react_themes_default()(Input,"Input",Input_theme),PageLayout_base_theme={container:"T3cuHB",context:"m4mL-M",ad:"m3-mdC",hoc:"J15Z4H",mainPanel:"pPlQO2",sidePanel:"lqNh4h"};const PageLayout=({children:e,leftSidePanelContent:t,rightSidePanelContent:r,theme:n})=>(0,jsx_runtime.jsxs)("div",{className:n.container,children:[(0,jsx_runtime.jsx)("div",{className:[n.sidePanel,n.leftSidePanel].join(" "),children:t}),(0,jsx_runtime.jsx)("div",{className:n.mainPanel,children:e}),(0,jsx_runtime.jsx)("div",{className:[n.sidePanel,n.rightSidePanel].join(" "),children:r})]});var components_PageLayout=react_themes_default()(PageLayout,"PageLayout",PageLayout_base_theme);const NavLink=e=>(0,jsx_runtime.jsx)(components_GenericLink,{...e,routerLinkType:external_react_router_.NavLink});var components_NavLink=NavLink,Throbber_theme={container:"_7zdld4",context:"uIObt7",ad:"XIxe9o",hoc:"YOyORH",circle:"dBrB4g",bouncing:"TJe-6j"};const Throbber=({theme:e})=>(0,jsx_runtime.jsxs)("span",{className:e.container,children:[(0,jsx_runtime.jsx)("span",{className:e.circle}),(0,jsx_runtime.jsx)("span",{className:e.circle}),(0,jsx_runtime.jsx)("span",{className:e.circle})]});var components_Throbber=react_themes_default()(Throbber,"Throbber",Throbber_theme);let PLACEMENTS=function(e){return e.ABOVE_CURSOR="ABOVE_CURSOR",e.ABOVE_ELEMENT="ABOVE_ELEMENT",e.BELOW_CURSOR="BELOW_CURSOR",e.BELOW_ELEMENT="BELOW_ELEMENT",e}({});const ARROW_STYLE_DOWN=["border-bottom-color:transparent","border-left-color:transparent","border-right-color:transparent"].join(";"),ARROW_STYLE_UP=["border-top-color:transparent","border-left-color:transparent","border-right-color:transparent"].join(";");function createTooltipComponents(e){const t=document.createElement("div");e.arrow&&t.setAttribute("class",e.arrow);const r=document.createElement("div");e.content&&r.setAttribute("class",e.content);const n=document.createElement("div");return e.container&&n.setAttribute("class",e.container),n.appendChild(t),n.appendChild(r),document.body.appendChild(n),{arrow:t,container:n,content:r}}function calcTooltipRects(e){return{arrow:e.arrow.getBoundingClientRect(),container:e.container.getBoundingClientRect()}}function calcViewportRect(){const{scrollX:e,scrollY:t}=window,{documentElement:{clientHeight:r,clientWidth:n}}=document;return{bottom:t+r,left:e,right:e+n,top:t}}function calcPositionAboveXY(e,t,r){const{arrow:n,container:o}=r;return{arrowX:.5*(o.width-n.width),arrowY:o.height,containerX:e-o.width/2,containerY:t-o.height-n.height/1.5,baseArrowStyle:ARROW_STYLE_DOWN}}function setComponentPositions(e,t,r,n,o){const a=calcTooltipRects(o),i=calcViewportRect(),_=calcPositionAboveXY(e,t,a);if(_.containerX<i.left+6)_.containerX=i.left+6,_.arrowX=Math.max(6,e-_.containerX-a.arrow.width/2);else{const t=i.right-6-a.container.width;_.containerX>t&&(_.containerX=t,_.arrowX=Math.min(a.container.width-6,e-_.containerX-a.arrow.width/2))}_.containerY<i.top+6&&(_.containerY+=a.container.height+2*a.arrow.height,_.arrowY-=a.container.height+a.arrow.height,_.baseArrowStyle=ARROW_STYLE_UP);const s=`left:${_.containerX}px;top:${_.containerY}px`;o.container.setAttribute("style",s);const c=`${_.baseArrowStyle};left:${_.arrowX}px;top:${_.arrowY}px`;o.arrow.setAttribute("style",c)}const Tooltip=({children:e,ref:t,theme:r})=>{const{current:n}=(0,external_react_.useRef)({lastElement:void 0,lastPageX:0,lastPageY:0,lastPlacement:void 0}),[o,a]=(0,external_react_.useState)(null),i=(e,t,r,a)=>{n.lastElement=a,n.lastPageX=e,n.lastPageY=t,n.lastPlacement=r,o&&setComponentPositions(e,t,r,a,o)};return(0,external_react_.useImperativeHandle)(t,()=>({pointTo:i})),(0,external_react_.useEffect)(()=>{const e=createTooltipComponents(r);return a(e),()=>{document.body.removeChild(e.container),a(null)}},[r]),(0,external_react_.useEffect)(()=>{o&&setComponentPositions(n.lastPageX,n.lastPageY,n.lastPlacement,n.lastElement,o)},[o,n.lastPageX,n.lastPageY,n.lastPlacement,n.lastElement]),o?(0,external_react_dom_.createPortal)(e,o.content):null};var WithTooltip_Tooltip=Tooltip,default_theme={arrow:"M9gywF",ad:"_4xT7zE",hoc:"zd-vnH",context:"GdZucr",container:"f9gY8K",appearance:"L4ubm-",wrapper:"_4qDBRM"};const Wrapper=({children:e,placement:t=PLACEMENTS.ABOVE_CURSOR,tip:r,theme:n})=>{const{current:o}=(0,external_react_.useRef)({lastCursorX:0,lastCursorY:0,timerId:void 0,triggeredByTouch:!1}),a=(0,external_react_.useRef)(null),i=(0,external_react_.useRef)(null),[_,s]=(0,external_react_.useState)(!1);return(0,external_react_.useEffect)(()=>{if(_&&null!==r){a.current&&a.current.pointTo(o.lastCursorX+window.scrollX,o.lastCursorY+window.scrollY,t,i.current);const e=()=>{s(!1)};return window.addEventListener("scroll",e),()=>{window.removeEventListener("scroll",e)}}},[o.lastCursorX,o.lastCursorY,t,_,r]),(0,jsx_runtime.jsxs)("div",{className:n.wrapper,onClick:()=>{o.timerId&&(clearTimeout(o.timerId),o.timerId=void 0,o.triggeredByTouch=!1)},onMouseLeave:()=>{s(!1)},onMouseMove:e=>{((e,r)=>{if(_){const n=i.current.getBoundingClientRect();e<n.left||e>n.right||r<n.top||r>n.bottom?s(!1):a.current&&a.current.pointTo(e+window.scrollX,r+window.scrollY,t,i.current)}else o.lastCursorX=e,o.lastCursorY=r,o.triggeredByTouch?o.timerId??=setTimeout(()=>{o.triggeredByTouch=!1,o.timerId=void 0,s(!0)},300):s(!0)})(e.clientX,e.clientY)},onTouchStart:()=>{o.triggeredByTouch=!0},ref:i,role:"presentation",children:[_&&null!==r?(0,jsx_runtime.jsx)(WithTooltip_Tooltip,{ref:a,theme:n,children:r}):null,e]})},ThemedWrapper=react_themes_default()(Wrapper,"WithTooltip",default_theme),e=ThemedWrapper;e.PLACEMENTS=PLACEMENTS;var WithTooltip=e,external_qs_=__webpack_require__(360),external_qs_default=__webpack_require__.n(external_qs_),base={container:"sXHM81",context:"veKyYi",ad:"r3ABzd",hoc:"YKcPnR",video:"SlV2zw"},throbber={container:"jTxmOX",context:"dzIcLh",ad:"_5a9XX1",hoc:"_7sH52O"};const YouTubeVideo=({autoplay:e,src:t,theme:r,title:n})=>{const o=t.split("?");let[a]=o;const[,i]=o,_=i?external_qs_default().parse(i):{},s=_.v??a?.match(/\/([a-zA-Z0-9-_]*)$/)?.[1];return a=`https://www.youtube.com/embed/${s}`,delete _.v,_.autoplay=e?"1":"0",a+=`?${external_qs_default().stringify(_)}`,(0,jsx_runtime.jsxs)("div",{className:r.container,children:[(0,jsx_runtime.jsx)(components_Throbber,{theme:throbber}),(0,jsx_runtime.jsx)("iframe",{allow:"autoplay",allowFullScreen:!0,className:r.video,src:a,title:n})]})};var components_YouTubeVideo=react_themes_default()(YouTubeVideo,"YouTubeVideo",base),TextArea_style={container:"dzMVIB",context:"KVPc7g",ad:"z2GQ0Z",hoc:"_8R1Qdj",label:"Vw9EKL",textarea:"zd-OFg",error:"K2JcEY",errorMessage:"nWsJDB",hidden:"GiHBXI"};const TextArea=({disabled:e,error:t,label:r,onBlur:n,onChange:o,onKeyDown:a,placeholder:i,testId:_,theme:s,value:c})=>{const l=(0,external_react_.useRef)(null),[u,d]=(0,external_react_.useState)(),p=(0,external_react_.useRef)(null),[m,f]=(0,external_react_.useState)(c??"");void 0!==c&&m!==c&&f(c),(0,external_react_.useEffect)(()=>{const e=l.current;if(!e)return;const t=new ResizeObserver(()=>{d(e.scrollHeight)});return t.observe(e),()=>{t.disconnect()}},[]),(0,external_react_.useLayoutEffect)(()=>{const e=l.current;e&&d(e.scrollHeight)},[m]);let h=s.container;return t&&(h+=` ${s.error}`),(0,jsx_runtime.jsxs)("div",{className:h,onFocus:()=>{p.current?.focus()},children:[void 0===r?null:(0,jsx_runtime.jsx)("div",{className:s.label,children:r}),(0,jsx_runtime.jsx)("textarea",{className:`${s.textarea} ${s.hidden}`,readOnly:!0,ref:l,tabIndex:-1,value:m||" "}),(0,jsx_runtime.jsx)("textarea",{className:s.textarea,"data-testid":void 0,disabled:e,onBlur:n,onChange:void 0===c?e=>{f(e.target.value)}:o,onKeyDown:a,placeholder:i,ref:p,style:{height:u},value:m}),t&&!0!==t?(0,jsx_runtime.jsx)("div",{className:s.errorMessage,children:t}):null]})};var components_TextArea=react_themes_default()(TextArea,"TextArea",TextArea_style),src_dirname="/";if(__webpack_require__.g.REACT_UTILS_LIBRARY_LOADED)throw Error("React utils library is already loaded");__webpack_require__.g.REACT_UTILS_LIBRARY_LOADED=!0;const server=webpack.requireWeak("./server",src_dirname),client=server?void 0:__webpack_require__(969).A;return __webpack_exports__}()});
2
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(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")):"function"==typeof define&&define.amd?define(["@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"],t):"object"==typeof exports?exports["@dr.pogodin/react-utils"]=t(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")):e["@dr.pogodin/react-utils"]=t(e["@dr.pogodin/js-utils"],e["@dr.pogodin/react-global-state"],e["@dr.pogodin/react-helmet"],e["@dr.pogodin/react-themes"],e.cookie,e.dayjs,e["node-forge/lib/aes"],e["node-forge/lib/forge"],e.qs,e.react,e["react-dom"],e["react-dom/client"],e["react-router"])}("undefined"!=typeof self?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__){return function(){"use strict";var __webpack_modules__={48:function(e,t,r){r.d(t,{B:function(){return n},p:function(){return o}});const n="object"!=typeof process||!process.versions?.node||!!r.g.REACT_UTILS_FORCE_CLIENT_SIDE,o=!n},126:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__126__},148:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{requireWeak:function(){return requireWeak},resolveWeak:function(){return resolveWeak}});var _isomorphy__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(724);function requireWeak(modulePath,basePathOrOptions){if(_isomorphy__WEBPACK_IMPORTED_MODULE_0__.IS_CLIENT_SIDE)return null;let basePath,ops;"string"==typeof basePathOrOptions?(basePath=basePathOrOptions,ops={}):(ops=basePathOrOptions??{},({basePath:basePath}=ops));try{const req=eval("require"),{resolve:resolve}=req("path"),path=basePath?resolve(basePath,modulePath):modulePath,module=req(path);if(!("default"in module)||!module.default)return module;const{default:def,...named}=module,res=def;return Object.entries(named).forEach(([e,t])=>{const r=res[e];if(r)res[e]=t;else if(r!==t)throw Error("Conflict between default and named exports")}),res}catch(e){if(ops.throwOnError)throw e;return null}}function resolveWeak(e){return e}},155:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__155__},185:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__185__},208:function(e,t){var r=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function o(e,t,n){var o=null;if(void 0!==n&&(o=""+n),void 0!==t.key&&(o=""+t.key),"key"in t)for(var a in n={},t)"key"!==a&&(n[a]=t[a]);else n=t;return t=n.ref,{$$typeof:r,type:e,key:o,ref:void 0!==t?t:null,props:n}}t.Fragment=n,t.jsx=o,t.jsxs=o},236:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__236__},264:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__264__},360:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__360__},462:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__462__},514:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__514__},540:function(e,t,r){let n;function o(){if(void 0===n)throw Error('"Build Info" has not been initialized yet');return n}r.d(t,{F:function(){return o}}),"undefined"!=typeof BUILD_INFO&&(n=BUILD_INFO)},668:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{A:function(){return getInj}});var node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(814),node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0__),node_forge_lib_aes__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(958),node_forge_lib_aes__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(node_forge_lib_aes__WEBPACK_IMPORTED_MODULE_1__),_shared_utils_isomorphy_buildInfo__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(540);let inj={};const metaElement="undefined"==typeof document?null:document.querySelector('meta[itemprop="drpruinj"]');if(metaElement){metaElement.remove();let data=node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0___default().util.decode64(metaElement.content);const{key:key}=(0,_shared_utils_isomorphy_buildInfo__WEBPACK_IMPORTED_MODULE_2__.F)(),d=node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0___default().cipher.createDecipher("AES-CBC",key);d.start({iv:data.slice(0,key.length)}),d.update(node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0___default().util.createBuffer(data.slice(key.length))),d.finish(),data=node_forge_lib_forge__WEBPACK_IMPORTED_MODULE_0___default().util.decodeUtf8(d.output.data),inj=eval(`(${data})`)}else"undefined"!=typeof window&&window.REACT_UTILS_INJECTION?(inj=window.REACT_UTILS_INJECTION,delete window.REACT_UTILS_INJECTION):inj={};function getInj(){return inj}},707:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__707__},724:function(e,t,r){r.r(t),r.d(t,{IS_CLIENT_SIDE:function(){return o.B},IS_SERVER_SIDE:function(){return o.p},buildTimestamp:function(){return _},getBuildInfo:function(){return n.F},isDevBuild:function(){return a},isProdBuild:function(){return i}});var n=r(540),o=r(48);function a(){return!1}function i(){return!0}function _(){return(0,n.F)().timestamp}},814:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__814__},859:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__859__},864:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__864__},922:function(e,t,r){e.exports=r(208)},958:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__958__},969:function(e,t,r){r.d(t,{A:function(){return c}});var n=r(236),o=r(264),a=r(707),i=r(126),_=r(668),s=r(922);function c(e,t={}){const r=document.getElementById("react-view");if(!r)throw Error("Failed to find container for React app");const c=(0,s.jsx)(i.GlobalStateProvider,{initialState:(0,_.A)().ISTATE??t.initialState,children:(0,s.jsx)(a.BrowserRouter,{children:(0,s.jsx)(o.HelmetProvider,{children:(0,s.jsx)(e,{})})})});t.dontHydrate?(0,n.createRoot)(r).render(c):(0,n.hydrateRoot)(r,c)}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=function(e,t){for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Barrier:function(){return js_utils_.Barrier},BaseButton:function(){return BaseButton},BaseModal:function(){return BaseModal},Button:function(){return Button},Cached:function(){return js_utils_.Cached},Checkbox:function(){return components_Checkbox},CustomDropdown:function(){return CustomDropdown},Dropdown:function(){return NativeDropdown},Emitter:function(){return js_utils_.Emitter},GlobalStateProvider:function(){return react_global_state_.GlobalStateProvider},Input:function(){return components_Input},Link:function(){return components_Link},MetaTags:function(){return react_helmet_.MetaTags},Modal:function(){return Modal},NavLink:function(){return components_NavLink},PageLayout:function(){return components_PageLayout},Semaphore:function(){return js_utils_.Semaphore},Switch:function(){return Switch},TextArea:function(){return components_TextArea},ThemeProvider:function(){return react_themes_.ThemeProvider},Throbber:function(){return components_Throbber},WithTooltip:function(){return WithTooltip},YouTubeVideo:function(){return components_YouTubeVideo},assertEmptyObject:function(){return js_utils_.assertEmptyObject},client:function(){return client},config:function(){return utils_config},getGlobalState:function(){return react_global_state_.getGlobalState},getSsrContext:function(){return getSsrContext},isomorphy:function(){return isomorphy},newAsyncDataEnvelope:function(){return react_global_state_.newAsyncDataEnvelope},server:function(){return server},splitComponent:function(){return splitComponent},themed:function(){return themed},time:function(){return utils_time},useAsyncCollection:function(){return react_global_state_.useAsyncCollection},useAsyncData:function(){return react_global_state_.useAsyncData},useGlobalState:function(){return react_global_state_.useGlobalState},webpack:function(){return webpack},withGlobalStateType:function(){return react_global_state_.withGlobalStateType},withRetries:function(){return js_utils_.withRetries}});var global={},react_themes_=__webpack_require__(859),react_themes_default=__webpack_require__.n(react_themes_),environment_check=__webpack_require__(48),webpack=__webpack_require__(148);const config=(environment_check.B?__webpack_require__(668).A().CONFIG:(0,webpack.requireWeak)("config"))??{};if(environment_check.B&&"undefined"!=typeof document){const e=__webpack_require__(462);config.CSRF=e.parse(document.cookie).csrfToken}var utils_config=config,isomorphy=__webpack_require__(724),external_cookie_=__webpack_require__(462),external_react_=__webpack_require__(155),external_dayjs_=__webpack_require__(185),external_dayjs_default=__webpack_require__.n(external_dayjs_),js_utils_=__webpack_require__(864),react_global_state_=__webpack_require__(126);const{getSsrContext:getSsrContext}=(0,react_global_state_.withGlobalStateType)();function useCurrent({autorefresh:e=!1,globalStatePath:t="currentTime",precision:r=5*js_utils_.SEC_MS}={}){const[n,o]=(0,react_global_state_.useGlobalState)(t,Date.now);return(0,external_react_.useEffect)(()=>{let t;const n=()=>{o(e=>{const t=Date.now();return Math.abs(t-e)>r?t:e}),e&&(t=setTimeout(n,r))};return n(),()=>{t&&clearTimeout(t)}},[e,r,o]),n}function useTimezoneOffset({cookieName:e="timezoneOffset",globalStatePath:t="timezoneOffset"}={}){const r=getSsrContext(!1),[n,o]=(0,react_global_state_.useGlobalState)(t,()=>{const t=e&&r?.req.cookies[e];return t?parseInt(t):0});return(0,external_react_.useEffect)(()=>{const t=(new Date).getTimezoneOffset();o(t),e&&(document.cookie=(0,external_cookie_.serialize)(e,t.toString(),{path:"/"}))},[e,o]),n}const time={DAY_MS:js_utils_.DAY_MS,HOUR_MS:js_utils_.HOUR_MS,MIN_MS:js_utils_.MIN_MS,SEC_MS:js_utils_.SEC_MS,YEAR_MS:js_utils_.YEAR_MS,now:Date.now,timer:js_utils_.timer,useCurrent:useCurrent,useTimezoneOffset:useTimezoneOffset};var utils_time=Object.assign(external_dayjs_default(),time),jsx_runtime=__webpack_require__(922);let clientChunkGroups;isomorphy.IS_CLIENT_SIDE&&(clientChunkGroups=__webpack_require__(668).A().CHUNK_GROUPS??{});const refCounts={};function getPublicPath(){return(0,isomorphy.getBuildInfo)().publicPath}function bookStyleSheet(e,t,r){let n;const o=`${getPublicPath()}/${e}`,a=`${document.location.origin}${o}`;if(!t.has(a)){let e=document.querySelector(`link[href="${o}"]`);e||(e=document.createElement("link"),e.setAttribute("rel","stylesheet"),e.setAttribute("href",o),document.head.appendChild(e)),n=new js_utils_.Barrier,e.addEventListener("load",()=>{if(!n)throw Error("Internal error");n.resolve()}),e.addEventListener("error",()=>{if(!n)throw Error("Internal error");n.resolve()})}if(r){const e=refCounts[o]??0;refCounts[o]=1+e}return n}function getLoadedStyleSheets(){const e=new Set,{styleSheets:t}=document;for(const{href:r}of t)r&&e.add(r);return e}function assertChunkName(e,t){if(!t[e])throw Error(`Unknown chunk name "${e}"`)}async function bookStyleSheets(e,t,r){const n=[],o=t[e];if(!o)return Promise.resolve();const a=getLoadedStyleSheets();for(const e of o)if(e.endsWith(".css")){const t=bookStyleSheet(e,a,r);t&&n.push(t)}return n.length?Promise.allSettled(n).then():Promise.resolve()}function freeStyleSheets(e,t){const r=t[e];if(r)for(const e of r)if(e.endsWith(".css")){const t=`${getPublicPath()}/${e}`,r=refCounts[t];r&&(r<=1?(document.head.querySelector(`link[href="${t}"]`).remove(),delete refCounts[t]):refCounts[t]=r-1)}}const usedChunkNames=new Set;function splitComponent({chunkName:e,getComponent:t,placeholder:r}){if(isomorphy.IS_CLIENT_SIDE&&assertChunkName(e,clientChunkGroups),usedChunkNames.has(e))throw Error(`Repeated splitComponent() call for the chunk "${e}"`);usedChunkNames.add(e);const n=(0,external_react_.lazy)(async()=>{const r=await t(),n="default"in r?r.default:r;return isomorphy.IS_CLIENT_SIDE&&await bookStyleSheets(e,clientChunkGroups,!1),{default:({children:t,ref:r,...o})=>{if(isomorphy.IS_SERVER_SIDE){const{chunkGroups:t,chunks:r}=getSsrContext();assertChunkName(e,t),r.includes(e)||r.push(e)}return(0,external_react_.useInsertionEffect)(()=>(bookStyleSheets(e,clientChunkGroups,!0),()=>{freeStyleSheets(e,clientChunkGroups)}),[]),(0,jsx_runtime.jsx)(n,{...o,ref:r,children:t})}}});return({children:e,...t})=>(0,jsx_runtime.jsx)(external_react_.Suspense,{fallback:r,children:(0,jsx_runtime.jsx)(n,{...t,children:e})})}const themed=react_themes_default();themed.COMPOSE=react_themes_.COMPOSE,themed.PRIORITY=react_themes_.PRIORITY;var react_helmet_=__webpack_require__(264);function isValue(e){const t=typeof e;return"number"===t||"string"===t}function optionValueName(e){return isValue(e)?[e,e]:[e.value,e.name??e.value]}var external_react_dom_=__webpack_require__(514),external_react_dom_default=__webpack_require__.n(external_react_dom_),base_theme={overlay:"ye2BZo",context:"Szmbbz",ad:"Ah-Nsc",hoc:"Wki41G",container:"gyZ4rc"},styles={scrollingDisabledByModal:"_5fRFtF"};const BaseModal=({cancelOnScrolling:e,children:t,containerStyle:r,dontDisableScrolling:n,onCancel:o,overlayStyle:a,style:i,testId:_,testIdForOverlay:s,theme:c})=>{const l=(0,external_react_.useRef)(null),u=(0,external_react_.useRef)(null);(0,external_react_.useEffect)(()=>(e&&o&&(window.addEventListener("scroll",o),window.addEventListener("wheel",o)),()=>{e&&o&&(window.removeEventListener("scroll",o),window.removeEventListener("wheel",o))}),[e,o]),(0,external_react_.useEffect)(()=>(n||document.body.classList.add(styles.scrollingDisabledByModal),()=>{n||document.body.classList.remove(styles.scrollingDisabledByModal)}),[n]);const d=(0,external_react_.useMemo)(()=>(0,jsx_runtime.jsx)("div",{onFocus:()=>{const e=l.current.querySelectorAll("*");for(let t=e.length-1;t>=0;--t)if(e[t].focus(),document.activeElement===e[t])return;u.current?.focus()},tabIndex:0}),[]);return external_react_dom_default().createPortal((0,jsx_runtime.jsxs)("div",{children:[d,(0,jsx_runtime.jsx)("div",{"aria-label":"Cancel",className:c.overlay,"data-testid":void 0,onClick:e=>{o&&(o(),e.stopPropagation())},onKeyDown:e=>{"Escape"===e.key&&o&&(o(),e.stopPropagation())},ref:e=>{e&&e!==u.current&&(u.current=e,e.focus())},role:"button",style:a,tabIndex:0}),(0,jsx_runtime.jsx)("div",{"aria-modal":"true",className:c.container,"data-testid":void 0,onClick:e=>{e.stopPropagation()},onWheel:e=>{e.stopPropagation()},ref:l,role:"dialog",style:i??r,children:t}),(0,jsx_runtime.jsx)("div",{onFocus:()=>{u.current?.focus()},tabIndex:0}),d]}),document.body)};var Modal=react_themes_default()(BaseModal,"Modal",base_theme),style={overlay:"jKsMKG"};function areEqual(e,t){return e?.left===t?.left&&e?.top===t?.top&&e?.width===t?.width}const Options=({containerClass:e,containerStyle:t,filter:r,onCancel:n,onChange:o,optionClass:a,options:i,ref:_})=>{const s=(0,external_react_.useRef)(null);(0,external_react_.useImperativeHandle)(_,()=>({measure:()=>{const e=s.current?.parentElement;if(!e)return;const t=s.current.getBoundingClientRect(),r=window.getComputedStyle(e),n=parseFloat(r.marginBottom),o=parseFloat(r.marginTop);return t.height+=n+o,t}}),[]);const c=[];for(const e of i)if(!r||r(e)){const[t,r]=optionValueName(e);c.push((0,jsx_runtime.jsx)("div",{className:a,onClick:e=>{o(t),e.stopPropagation()},onKeyDown:e=>{"Enter"===e.key&&(o(t),e.stopPropagation())},role:"button",tabIndex:0,children:r},t))}return(0,jsx_runtime.jsx)(BaseModal,{cancelOnScrolling:!0,dontDisableScrolling:!0,onCancel:n,style:t,theme:{ad:"",container:e,context:"",hoc:"",overlay:style.overlay},children:(0,jsx_runtime.jsx)("div",{ref:s,children:c})})};var CustomDropdown_Options=Options,theme={container:"oQKv0Y",context:"_9Tod5r",ad:"R58zIg",hoc:"O-Tp1i",label:"YUPUNs",dropdown:"pNEyAA",option:"LD2Kzy",select:"LP5azC",arrow:"-wscve",active:"k2UDsV",upward:"HWRvu4"};const BaseCustomDropdown=({filter:e,label:t,onChange:r,options:n,theme:o,value:a})=>{const[i,_]=(0,external_react_.useState)(!1),s=(0,external_react_.useRef)(null),c=(0,external_react_.useRef)(null),[l,u]=(0,external_react_.useState)(),[d,p]=(0,external_react_.useState)(!1);(0,external_react_.useEffect)(()=>{if(!i)return;let e;const t=()=>{const r=s.current?.getBoundingClientRect(),n=c.current?.measure();if(r&&n){const e=r.bottom+n.height<(window.visualViewport?.height??0),t=r.top-n.height>0,o=!e&&t;p(o);const a=o?{left:r.left,top:r.top-n.height-1,width:r.width}:{left:r.left,top:r.bottom,width:r.width};u(e=>areEqual(e,a)?e:a)}e=requestAnimationFrame(t)};return requestAnimationFrame(t),()=>{cancelAnimationFrame(e)}},[i]);const m=e=>{const t=window.visualViewport,r=s.current.getBoundingClientRect();_(!0),u({left:t?.width??0,top:t?.height??0,width:r.width}),e.stopPropagation()};let f=(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:"‌"});for(const t of n)if(!e||e(t)){const[e,r]=optionValueName(t);if(e===a){f=r;break}}let h=o.container;i&&(h+=` ${o.active}`);let b=o.select??"";return d&&(h+=` ${o.upward}`,b+=` ${o.upward}`),(0,jsx_runtime.jsxs)("div",{className:h,children:[void 0===t?null:(0,jsx_runtime.jsx)("div",{className:o.label,children:t}),(0,jsx_runtime.jsxs)("div",{className:o.dropdown,onClick:m,onKeyDown:e=>{"Enter"===e.key&&m(e)},ref:s,role:"listbox",tabIndex:0,children:[f,(0,jsx_runtime.jsx)("div",{className:o.arrow})]}),i?(0,jsx_runtime.jsx)(CustomDropdown_Options,{containerClass:b,containerStyle:l,onCancel:()=>{_(!1)},onChange:e=>{_(!1),r&&r(e)},optionClass:o.option??"",options:n,ref:c}):null]})};var CustomDropdown=react_themes_default()(BaseCustomDropdown,"CustomDropdown",theme),NativeDropdown_theme={dropdown:"kI9A9U",context:"xHyZo4",ad:"ADu59e",hoc:"FTP2bb",arrow:"DubGkT",container:"WtSZPd",active:"ayMn7O",label:"K7JYKw",option:"_27pZ6W",hiddenOption:"clAKFJ",select:"N0Fc14",invalid:"wL4umU"};const Dropdown=({filter:e,label:t,onChange:r,options:n,testId:o,theme:a,value:i})=>{let _=!1;const s=[];for(const t of n)if(!e||e(t)){const[e,r]=optionValueName(t);_||=e===i,s.push((0,jsx_runtime.jsx)("option",{className:a.option,value:e,children:r},e))}const c=_?null:(0,jsx_runtime.jsx)("option",{className:a.hiddenOption,disabled:!0,value:i,children:i},"__reactUtilsHiddenOption");let l=a.select;return _||(l+=` ${a.invalid}`),(0,jsx_runtime.jsxs)("div",{className:a.container,children:[void 0===t?null:(0,jsx_runtime.jsx)("div",{className:a.label,children:t}),(0,jsx_runtime.jsxs)("div",{className:a.dropdown,children:[(0,jsx_runtime.jsxs)("select",{className:l,"data-testid":void 0,onChange:r,value:i,children:[c,s]}),(0,jsx_runtime.jsx)("div",{className:a.arrow})]})]})};var NativeDropdown=react_themes_default()(Dropdown,"Dropdown",NativeDropdown_theme),Switch_theme={container:"AWNvRj",context:"VMHfnP",ad:"HNliRC",hoc:"_2Ue-db",option:"fUfIAd",selected:"Wco-qk",options:"CZYtcC"};const BaseSwitch=({label:e,onChange:t,options:r,theme:n,value:o})=>{if(!r||!n.option)throw Error("Internal error");const a=[];for(const e of r){const[r,i]=optionValueName(e);let _,s=n.option;r===o?s+=` ${n.selected}`:t&&(_=()=>{t(r)}),a.push(_?(0,jsx_runtime.jsx)("div",{className:s,onClick:_,onKeyDown:e=>{"Enter"===e.key&&_()},role:"button",tabIndex:0,children:i},r):(0,jsx_runtime.jsx)("div",{className:s,children:i},r))}return(0,jsx_runtime.jsxs)("div",{className:n.container,children:[e?(0,jsx_runtime.jsx)("div",{className:n.label,children:e}):null,(0,jsx_runtime.jsx)("div",{className:n.options,children:a})]})};var Switch=react_themes_default()(BaseSwitch,"Switch",Switch_theme),external_react_router_=__webpack_require__(707),GenericLink_style={link:"zH52sA"};const GenericLink=({children:e,className:t,disabled:r,enforceA:n,keepScrollPosition:o,onClick:a,onMouseDown:i,openNewTab:_,replace:s,routerLinkType:c,to:l,...u})=>{if(r||n||_||l.match(/^(#|(https?|mailto):)/))return(0,jsx_runtime.jsx)("a",{className:(t?t+" ":"")+"zH52sA",href:l,onClick:r?e=>{e.preventDefault()}:a,onMouseDown:r?e=>{e.preventDefault()}:i,rel:"noopener noreferrer",target:_?"_blank":"",children:e});const d=c;return(0,jsx_runtime.jsx)(d,{className:t,discover:"none",onClick:e=>{a&&a(e),o||window.scroll(0,0)},onMouseDown:i,replace:s,to:l,...u,children:e})};var components_GenericLink=GenericLink;const Link=e=>(0,jsx_runtime.jsx)(components_GenericLink,{...e,routerLinkType:external_react_router_.Link});var components_Link=Link,Button_style={button:"E1FNQT",context:"KM0v4f",ad:"_3jm1-Q",hoc:"_0plpDL",active:"MAe9O6",disabled:"Br9IWV"};const BaseButton=({active:e,children:t,disabled:r,enforceA:n,onClick:o,onKeyDown:a,onKeyUp:i,onMouseDown:_,onMouseUp:s,onPointerDown:c,onPointerUp:l,openNewTab:u,replace:d,testId:p,theme:m,to:f})=>{let h=m.button;if(e&&m.active&&(h+=` ${m.active}`),r)return m.disabled&&(h+=` ${m.disabled}`),(0,jsx_runtime.jsx)("div",{className:h,"data-testid":void 0,children:t});let b=a;return!b&&o&&(b=e=>{"Enter"===e.key&&o(e)}),f?(0,jsx_runtime.jsx)(components_Link,{className:h,"data-testid":void 0,enforceA:n,onClick:o,onKeyUp:i,onMouseDown:_,onMouseUp:s,onPointerDown:c,onPointerUp:l,openNewTab:u,replace:d,to:f,children:t}):(0,jsx_runtime.jsx)("div",{className:h,"data-testid":void 0,onClick:o,onKeyDown:b,onKeyUp:i,onMouseDown:_,onMouseUp:s,onPointerDown:c,onPointerUp:l,role:"button",tabIndex:0,children:t})};var Button=react_themes_default()(BaseButton,"Button",Button_style),Checkbox_theme={checkbox:"A-f8qJ",context:"dNQcC6",ad:"earXxa",hoc:"qAPfQ6",indeterminate:"N9bCb8",container:"Kr0g3M",label:"_3dML-O",disabled:"EzQra1"};const Checkbox=({checked:e,disabled:t,label:r,onChange:n,testId:o,theme:a})=>{let i=a.container;t&&(i+=` ${a.disabled}`);let _=a.checkbox;return"indeterminate"===e&&(_+=` ${a.indeterminate}`),(0,jsx_runtime.jsxs)("div",{className:i,children:[void 0===r?null:(0,jsx_runtime.jsx)("div",{className:a.label,children:r}),(0,jsx_runtime.jsx)("input",{checked:void 0===e?void 0:!0===e,className:_,"data-testid":void 0,disabled:t,onChange:n,onClick:e=>{e.stopPropagation()},type:"checkbox"})]})};var components_Checkbox=react_themes_default()(Checkbox,"Checkbox",Checkbox_theme),Input_theme={container:"Cxx397",context:"X5WszA",ad:"_8s7GCr",hoc:"TVlBYc",children:"m4FpDO",input:"M07d4s",label:"gfbdq-",error:"p2idHY",errorMessage:"Q9uslG"};const Input=({children:e,error:t,label:r,ref:n,testId:o,theme:a,...i})=>{const[_,s]=(0,external_react_.useState)(!1),c=(0,external_react_.useRef)(null);let l=a.container;return _&&(l+=` ${a.focused}`),!i.value&&a.empty&&(l+=` ${a.empty}`),t&&(l+=` ${a.error}`),(0,jsx_runtime.jsxs)("div",{className:l,onFocus:()=>{"object"==typeof n?n?.current?.focus():c.current?.focus()},children:[void 0===r?null:(0,jsx_runtime.jsx)("div",{className:a.label,children:r}),(0,jsx_runtime.jsx)("input",{className:a.input,"data-testid":void 0,ref:n??c,...i,onBlur:a.focused?e=>{s(!1),i.onBlur?.(e)}:i.onBlur,onFocus:a.focused?e=>{s(!0),i.onFocus?.(e)}:i.onFocus}),t&&!0!==t?(0,jsx_runtime.jsx)("div",{className:a.errorMessage,children:t}):null,e?(0,jsx_runtime.jsx)("div",{className:a.children,children:e}):null]})};var components_Input=react_themes_default()(Input,"Input",Input_theme),PageLayout_base_theme={container:"T3cuHB",context:"m4mL-M",ad:"m3-mdC",hoc:"J15Z4H",mainPanel:"pPlQO2",sidePanel:"lqNh4h"};const PageLayout=({children:e,leftSidePanelContent:t,rightSidePanelContent:r,theme:n})=>(0,jsx_runtime.jsxs)("div",{className:n.container,children:[(0,jsx_runtime.jsx)("div",{className:[n.sidePanel,n.leftSidePanel].join(" "),children:t}),(0,jsx_runtime.jsx)("div",{className:n.mainPanel,children:e}),(0,jsx_runtime.jsx)("div",{className:[n.sidePanel,n.rightSidePanel].join(" "),children:r})]});var components_PageLayout=react_themes_default()(PageLayout,"PageLayout",PageLayout_base_theme);const NavLink=e=>(0,jsx_runtime.jsx)(components_GenericLink,{...e,routerLinkType:external_react_router_.NavLink});var components_NavLink=NavLink,Throbber_theme={container:"_7zdld4",context:"uIObt7",ad:"XIxe9o",hoc:"YOyORH",circle:"dBrB4g",bouncing:"TJe-6j"};const Throbber=({theme:e})=>(0,jsx_runtime.jsxs)("span",{className:e.container,children:[(0,jsx_runtime.jsx)("span",{className:e.circle}),(0,jsx_runtime.jsx)("span",{className:e.circle}),(0,jsx_runtime.jsx)("span",{className:e.circle})]});var components_Throbber=react_themes_default()(Throbber,"Throbber",Throbber_theme);let PLACEMENTS=function(e){return e.ABOVE_CURSOR="ABOVE_CURSOR",e.ABOVE_ELEMENT="ABOVE_ELEMENT",e.BELOW_CURSOR="BELOW_CURSOR",e.BELOW_ELEMENT="BELOW_ELEMENT",e}({});const ARROW_STYLE_DOWN=["border-bottom-color:transparent","border-left-color:transparent","border-right-color:transparent"].join(";"),ARROW_STYLE_UP=["border-top-color:transparent","border-left-color:transparent","border-right-color:transparent"].join(";");function calcTooltipRects(e){return{arrow:e.arrow.getBoundingClientRect(),container:e.container.getBoundingClientRect()}}function calcViewportRect(){const{scrollX:e,scrollY:t}=window,{documentElement:{clientHeight:r,clientWidth:n}}=document;return{bottom:t+r,left:e,right:e+n,top:t}}function calcPositionAboveXY(e,t,r){const{arrow:n,container:o}=r;return{arrowX:.5*(o.width-n.width),arrowY:o.height,containerX:e-o.width/2,containerY:t-o.height-n.height/1.5,baseArrowStyle:ARROW_STYLE_DOWN}}function setComponentPositions(e,t,r,n,o){const a=calcTooltipRects(o),i=calcViewportRect(),_=calcPositionAboveXY(e,t,a);if(_.containerX<i.left+6)_.containerX=i.left+6,_.arrowX=Math.max(6,e-_.containerX-a.arrow.width/2);else{const t=i.right-6-a.container.width;_.containerX>t&&(_.containerX=t,_.arrowX=Math.min(a.container.width-6,e-_.containerX-a.arrow.width/2))}_.containerY<i.top+6&&(_.containerY+=a.container.height+2*a.arrow.height,_.arrowY-=a.container.height+a.arrow.height,_.baseArrowStyle=ARROW_STYLE_UP);const s=`left:${_.containerX}px;top:${_.containerY}px`;o.container.setAttribute("style",s);const c=`${_.baseArrowStyle};left:${_.arrowX}px;top:${_.arrowY}px`;o.arrow.setAttribute("style",c)}const Tooltip=({children:e,ref:t,theme:r})=>{const n=(0,external_react_.useRef)(null),o=(0,external_react_.useRef)(null),a=(0,external_react_.useRef)(null),i=(e,t,r,i)=>{if(!n.current||!o.current||!a.current)throw Error("Internal error");setComponentPositions(e,t,r,i,{arrow:n.current,container:o.current,content:a.current})};return(0,external_react_.useImperativeHandle)(t,()=>({pointTo:i})),(0,external_react_dom_.createPortal)((0,jsx_runtime.jsxs)("div",{className:r.container,ref:o,children:[(0,jsx_runtime.jsx)("div",{className:r.arrow,ref:n}),(0,jsx_runtime.jsx)("div",{className:r.content,ref:a,children:e})]}),document.body)};var WithTooltip_Tooltip=Tooltip,default_theme={arrow:"M9gywF",ad:"_4xT7zE",hoc:"zd-vnH",context:"GdZucr",container:"f9gY8K",appearance:"L4ubm-",wrapper:"_4qDBRM"};const Wrapper=({children:e,placement:t=PLACEMENTS.ABOVE_CURSOR,tip:r,theme:n})=>{const{current:o}=(0,external_react_.useRef)({lastCursorX:0,lastCursorY:0,timerId:void 0,triggeredByTouch:!1}),a=(0,external_react_.useRef)(null),i=(0,external_react_.useRef)(null),[_,s]=(0,external_react_.useState)(!1);return(0,external_react_.useEffect)(()=>{if(_&&null!==r){a.current&&a.current.pointTo(o.lastCursorX+window.scrollX,o.lastCursorY+window.scrollY,t,i.current);const e=()=>{s(!1)};return window.addEventListener("scroll",e),()=>{window.removeEventListener("scroll",e)}}},[o.lastCursorX,o.lastCursorY,t,_,r]),(0,jsx_runtime.jsxs)("div",{className:n.wrapper,onClick:()=>{o.timerId&&(clearTimeout(o.timerId),o.timerId=void 0,o.triggeredByTouch=!1)},onMouseLeave:()=>{s(!1)},onMouseMove:e=>{((e,r)=>{if(_){const n=i.current.getBoundingClientRect();e<n.left||e>n.right||r<n.top||r>n.bottom?s(!1):a.current&&a.current.pointTo(e+window.scrollX,r+window.scrollY,t,i.current)}else o.lastCursorX=e,o.lastCursorY=r,o.triggeredByTouch?o.timerId??=setTimeout(()=>{o.triggeredByTouch=!1,o.timerId=void 0,s(!0)},300):s(!0)})(e.clientX,e.clientY)},onTouchStart:()=>{o.triggeredByTouch=!0},ref:i,role:"presentation",children:[_&&null!==r?(0,jsx_runtime.jsx)(WithTooltip_Tooltip,{ref:a,theme:n,children:r}):null,e]})},ThemedWrapper=react_themes_default()(Wrapper,"WithTooltip",default_theme),e=ThemedWrapper;e.PLACEMENTS=PLACEMENTS;var WithTooltip=e,external_qs_=__webpack_require__(360),external_qs_default=__webpack_require__.n(external_qs_),base={container:"sXHM81",context:"veKyYi",ad:"r3ABzd",hoc:"YKcPnR",video:"SlV2zw"},throbber={container:"jTxmOX",context:"dzIcLh",ad:"_5a9XX1",hoc:"_7sH52O"};const YouTubeVideo=({autoplay:e,src:t,theme:r,title:n})=>{const o=t.split("?");let[a]=o;const[,i]=o,_=i?external_qs_default().parse(i):{},s=_.v??a?.match(/\/([a-zA-Z0-9-_]*)$/)?.[1];return a=`https://www.youtube.com/embed/${s}`,delete _.v,_.autoplay=e?"1":"0",a+=`?${external_qs_default().stringify(_)}`,(0,jsx_runtime.jsxs)("div",{className:r.container,children:[(0,jsx_runtime.jsx)(components_Throbber,{theme:throbber}),(0,jsx_runtime.jsx)("iframe",{allow:"autoplay",allowFullScreen:!0,className:r.video,src:a,title:n})]})};var components_YouTubeVideo=react_themes_default()(YouTubeVideo,"YouTubeVideo",base),TextArea_style={container:"dzMVIB",context:"KVPc7g",ad:"z2GQ0Z",hoc:"_8R1Qdj",label:"Vw9EKL",textarea:"zd-OFg",error:"K2JcEY",errorMessage:"nWsJDB",hidden:"GiHBXI"};const TextArea=({disabled:e,error:t,label:r,onBlur:n,onChange:o,onKeyDown:a,placeholder:i,testId:_,theme:s,value:c})=>{const l=(0,external_react_.useRef)(null),[u,d]=(0,external_react_.useState)(),p=(0,external_react_.useRef)(null),[m,f]=(0,external_react_.useState)(c??"");void 0!==c&&m!==c&&f(c),(0,external_react_.useEffect)(()=>{const e=l.current;if(!e)return;const t=new ResizeObserver(()=>{d(e.scrollHeight)});return t.observe(e),()=>{t.disconnect()}},[]),(0,external_react_.useLayoutEffect)(()=>{const e=l.current;e&&d(e.scrollHeight)},[m]);let h=s.container;return t&&(h+=` ${s.error}`),(0,jsx_runtime.jsxs)("div",{className:h,onFocus:()=>{p.current?.focus()},children:[void 0===r?null:(0,jsx_runtime.jsx)("div",{className:s.label,children:r}),(0,jsx_runtime.jsx)("textarea",{className:`${s.textarea} ${s.hidden}`,readOnly:!0,ref:l,tabIndex:-1,value:m||" "}),(0,jsx_runtime.jsx)("textarea",{className:s.textarea,"data-testid":void 0,disabled:e,onBlur:n,onChange:void 0===c?e=>{f(e.target.value)}:o,onKeyDown:a,placeholder:i,ref:p,style:{height:u},value:m}),t&&!0!==t?(0,jsx_runtime.jsx)("div",{className:s.errorMessage,children:t}):null]})};var components_TextArea=react_themes_default()(TextArea,"TextArea",TextArea_style),src_dirname="/";if(__webpack_require__.g.REACT_UTILS_LIBRARY_LOADED)throw Error("React utils library is already loaded");__webpack_require__.g.REACT_UTILS_LIBRARY_LOADED=!0;const server=webpack.requireWeak("./server",src_dirname),client=server?void 0:__webpack_require__(969).A;return __webpack_exports__}()});
3
3
  //# sourceMappingURL=web.bundle.js.map