{"version":3,"file":"95323.70209706.es5.js","mappings":"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","sources":["webpack://assr-alfaleasing/./node_modules/@alfalab/core-components-icon-button/node_modules/uuid/dist/esm-browser/rng.js","webpack://assr-alfaleasing/./node_modules/@alfalab/core-components-icon-button/node_modules/uuid/dist/esm-browser/regex.js","webpack://assr-alfaleasing/./node_modules/@alfalab/core-components-icon-button/node_modules/uuid/dist/esm-browser/stringify.js","webpack://assr-alfaleasing/./node_modules/@alfalab/core-components-icon-button/node_modules/uuid/dist/esm-browser/validate.js","webpack://assr-alfaleasing/./node_modules/@alfalab/core-components-icon-button/node_modules/uuid/dist/esm-browser/v4.js","webpack://assr-alfaleasing/./node_modules/@alfalab/core-components-icon-button/node_modules/@alfalab/hooks/dist/esm/index.js","webpack://assr-alfaleasing/./node_modules/@alfalab/core-components-icon-button/node_modules/@alfalab/core-components-spinner/esm/Component.js","webpack://assr-alfaleasing/./node_modules/@alfalab/core-components-icon-button/node_modules/@alfalab/core-components-button/node_modules/@alfalab/hooks/dist/esm/index.js","webpack://assr-alfaleasing/./node_modules/@alfalab/core-components-icon-button/node_modules/@alfalab/core-components-button/esm/Component.js","webpack://assr-alfaleasing/./node_modules/@alfalab/core-components-icon-button/esm/Component.js"],"sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import React, { useRef, useState, useCallback, useEffect, useLayoutEffect } from 'react';\nimport { hasScrolledToBottomOfPage } from '@alfalab/utils';\nimport { v4 } from 'uuid';\n\nfunction useClickOutside(ref, cb) {\n React.useEffect(function () {\n var handler = function (event) {\n var checkClickedElement = function (el) {\n return !el.current || el.current.contains(event.target);\n };\n if ((Array.isArray(ref) && ref.find(checkClickedElement)) ||\n (!Array.isArray(ref) && checkClickedElement(ref))) {\n return;\n }\n cb(event);\n };\n document.addEventListener('mousedown', handler);\n document.addEventListener('touchstart', handler);\n return function () {\n document.removeEventListener('mousedown', handler);\n document.removeEventListener('touchstart', handler);\n };\n }, [ref, cb]);\n}\n\n/**\n * Хук обратного отсчёта времени.\n * Возвращает оставшееся количество секунд до определённой даты.\n *\n * @param params.endDate - Дата окончания\n * @param params.onStart - Функция, которая будет вызвана при запуске счётчика\n * @param params.onEnd - Функция, которая будет вызвана при окончании счётчика\n */\nfunction useCountdown(_a) {\n var endDate = _a.endDate, onStart = _a.onStart, onEnd = _a.onEnd;\n var intervalId = useRef(null);\n var _b = useState(differenceInSeconds(endDate, new Date())), seconds = _b[0], setSeconds = _b[1];\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var clear = useCallback(function () { return clearInterval(intervalId.current); }, []);\n useEffect(function () {\n if (onStart) {\n onStart();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n useEffect(function () {\n intervalId.current = setInterval(function () {\n setSeconds(function (sec) { return sec - 1; });\n }, 1000);\n return clear;\n }, [clear]);\n useEffect(function () {\n if (seconds <= 0) {\n clear();\n if (onEnd) {\n onEnd();\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [seconds]);\n return [seconds];\n}\nfunction differenceInSeconds(dateLeft, dateRight) {\n var diff = (dateLeft.getTime() - dateRight.getTime()) / 1000;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}\n\nfunction getDimensionObject(node) {\n return node.getBoundingClientRect();\n}\nfunction useDimensions(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.liveMeasure, liveMeasure = _c === void 0 ? true : _c;\n var _d = useState(), dimensions = _d[0], setDimensions = _d[1];\n var _e = useState(), node = _e[0], setNode = _e[1];\n var ref = useCallback(function (_node) {\n setNode(_node);\n }, []);\n useLayoutEffect(function () {\n if (node) {\n var measure_1 = function () {\n return window.requestAnimationFrame(function () { return setDimensions(getDimensionObject(node)); });\n };\n measure_1();\n if (liveMeasure) {\n window.addEventListener('resize', measure_1);\n window.addEventListener('scroll', measure_1);\n return function () {\n window.removeEventListener('resize', measure_1);\n window.removeEventListener('scroll', measure_1);\n };\n }\n }\n return function () { return undefined; };\n }, [node, liveMeasure]);\n return [ref, dimensions, node];\n}\n\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n *\n * @param {function} fn\n */\nfunction useEventCallback(fn) {\n var ref = React.useRef(fn);\n React.useEffect(function () {\n ref.current = fn;\n });\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n return React.useCallback(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return (ref.current).apply(void 0, args);\n }, []);\n}\n\nvar prevInputMethod;\nfunction handleKeyDown(event) {\n if (event.key === 'Tab') {\n prevInputMethod = 'keyboard';\n }\n}\nfunction handleMouseDown() {\n prevInputMethod = 'mouse';\n}\nfunction handleTouchStart() {\n prevInputMethod = 'mouse';\n}\n/**\n * Навешивает несколько глобальных обработчиков и отслеживает метод ввода - мышь или клавиатура.\n * Note: Повторный вызов функции не дублирует обработчики\n */\nfunction addGlobalListeners() {\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('mousedown', handleMouseDown);\n document.addEventListener('touchstart', handleTouchStart);\n}\n/**\n * Хук устанавливает обработчик события на focusin и focusout\n * по конкретному типу события\n * @param node Элемент на котором установится обработчик (default = document)\n * @param inputMethod Если параметр не задан, установит обработчик по любому событию фокуса\n */\nfunction useFocus(ref, inputMethod) {\n var _a = React.useState(false), focus = _a[0], setFocus = _a[1];\n var handleFocus = React.useCallback(function () {\n if (!inputMethod || inputMethod === prevInputMethod) {\n setFocus(true);\n }\n }, [inputMethod]);\n var handleBlur = React.useCallback(function () {\n setFocus(false);\n }, []);\n React.useEffect(function () {\n var node = ref.current;\n if (node) {\n node.addEventListener('focusin', handleFocus);\n node.addEventListener('focusout', handleBlur);\n }\n return function () {\n if (node) {\n node.removeEventListener('focusin', handleFocus);\n node.removeEventListener('focusout', handleBlur);\n }\n };\n }, [handleBlur, handleFocus, ref]);\n React.useEffect(addGlobalListeners, []);\n return [focus];\n}\n\nfunction useKeydownOutside(ref, cb) {\n React.useEffect(function () {\n var handler = function (event) {\n if (!ref.current || (event.target instanceof Node && ref.current.contains(event.target))) {\n return;\n }\n cb(event);\n };\n document.addEventListener('keydown', handler);\n return function () {\n document.removeEventListener('keydown', handler);\n };\n }, [ref, cb]);\n}\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nfunction getValue(list) {\n return list.map(\n // eslint-disable-next-line no-confusing-arrow\n function (_a) {\n var value = _a[0], query = _a[1];\n return query.matches ? value : null;\n }).filter(Boolean);\n}\nfunction useMedia(list, defaultValue) {\n var _a = React.useState([defaultValue]), value = _a[0], setValue = _a[1];\n var _b = React.useState([]), mediaQueryList = _b[0], setMediaQueryList = _b[1];\n var isClient = typeof window !== 'undefined';\n React.useEffect(function () {\n if (isClient && window.matchMedia) {\n var queryList = list.map(function (_a) {\n var x = _a[0], y = _a[1];\n return [x, window.matchMedia(y)];\n });\n setMediaQueryList(queryList);\n setValue(getValue(queryList));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isClient]);\n React.useEffect(function () {\n var handler = function () {\n setValue(getValue(mediaQueryList));\n };\n mediaQueryList.forEach(function (_a) {\n _a[0]; var mediaQuery = _a[1];\n return mediaQuery.addListener(handler);\n });\n return function () {\n mediaQueryList\n .forEach(function (_a) {\n _a[0]; var mediaQuery = _a[1];\n return mediaQuery.removeListener(handler);\n });\n };\n }, [value, mediaQueryList]);\n return value;\n}\n\nfunction usePrevious(value) {\n var ref = React.useRef();\n React.useEffect(function () {\n ref.current = value;\n });\n return ref.current;\n}\n\nfunction useDidUpdateEffect(effect, deps) {\n var didMountRef = React.useRef(false);\n // eslint-disable-next-line consistent-return\n React.useEffect(function () {\n if (didMountRef.current) {\n var cleanup_1 = effect();\n if (cleanup_1) {\n return function () { return cleanup_1(); };\n }\n }\n didMountRef.current = true;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\nvar UseLoadingStates;\n(function (UseLoadingStates) {\n UseLoadingStates[\"LOADED\"] = \"loaded\";\n UseLoadingStates[\"LOADING\"] = \"loading\";\n UseLoadingStates[\"ERROR\"] = \"error\";\n})(UseLoadingStates || (UseLoadingStates = {}));\n\n/**\n * Возвращает результат загрузки изображения\n * @param params.src url изображения\n * @return результат загрузки (loading | loaded | error)\n */\nfunction useImageLoadingState(_a) {\n var src = _a.src;\n var _b = useState(UseLoadingStates.LOADING), loadingState = _b[0], setLoadingState = _b[1];\n useEffect(function () {\n var active = true;\n setLoadingState(UseLoadingStates.LOADING);\n var image = new Image();\n image.onload = function () {\n if (!active) {\n return;\n }\n setLoadingState(UseLoadingStates.LOADED);\n };\n image.onerror = function () {\n if (!active) {\n return;\n }\n setLoadingState(UseLoadingStates.ERROR);\n };\n image.srcset = src;\n return function () {\n active = false;\n };\n }, [src]);\n return loadingState;\n}\n\nfunction useScrolledToBottomOfPage(cb, once) {\n if (once === void 0) { once = true; }\n React.useEffect(function () {\n var handler = function () {\n if (hasScrolledToBottomOfPage()) {\n cb();\n if (once) {\n document.removeEventListener('scroll', handler);\n }\n }\n };\n document.addEventListener('scroll', handler);\n return function () {\n document.removeEventListener('scroll', handler);\n };\n }, [cb]);\n}\n\nfunction useForceUpdate() {\n var _a = useState(Object.create(null)), dispatch = _a[1];\n var memoizedDispatch = useCallback(function () {\n dispatch(Object.create(null));\n }, [dispatch]);\n return memoizedDispatch;\n}\n\n/**\n * Хук получения состояния доступности компонента.\n */\nvar useIsMounted = function () {\n var isMounted = useRef(true);\n useEffect(function () { return function () {\n isMounted.current = false;\n }; }, []);\n return useCallback(function () { return isMounted.current; }, []);\n};\n\nvar useId = React.useId || function useUuid() {\n /*\n * Utilize useState instead of useMemo because React\n * makes no guarantees that the memo store is durable\n */\n var id = React.useState(function () { return v4(); })[0];\n return id;\n};\n\n/**\n * Обновление состояния, только если компонент смонтирован\n * Устраняет утечку и варнинги\n */\nvar useStateIfMounted = function (initialValue) {\n var getIsMounted = useIsMounted();\n var _a = React.useState(initialValue), storedValue = _a[0], setStoredValue = _a[1];\n var setState = React.useCallback(function (value) {\n var isMounted = getIsMounted();\n if (isMounted) {\n setStoredValue(value);\n }\n }, [getIsMounted]);\n return [storedValue, setState];\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nvar useLayoutEffect_SAFE_FOR_SSR = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport { useClickOutside, useCountdown, useDidUpdateEffect, useDimensions, useEventCallback, useFocus, useForceUpdate, useId, useImageLoadingState, useIsMounted, useKeydownOutside, useLayoutEffect_SAFE_FOR_SSR, useMedia, usePrevious, useScrolledToBottomOfPage, useStateIfMounted };\n","import React from 'react';\nimport cn from 'classnames';\nimport { useId } from '@alfalab/hooks';\n\nvar defaultColors = {\"component\":\"spinner__component_dyyzo\"};\nrequire('./default.css')\n\nvar styles = {\"spinner\":\"spinner__spinner_16qrx\",\"spin_animation\":\"spinner__spin_animation_16qrx\",\"visible\":\"spinner__visible_16qrx\",\"xs\":\"spinner__xs_16qrx\",\"s\":\"spinner__s_16qrx\",\"m\":\"spinner__m_16qrx\"};\nrequire('./index.css')\n\nvar invertedColors = {\"component\":\"spinner__component_1n1vh\"};\nrequire('./inverted.css')\n\nvar colorStyles = {\n default: defaultColors,\n inverted: invertedColors,\n};\nvar CONFIG = {\n xs: {\n padding: 1,\n lineWidth: 2,\n size: 18,\n },\n s: {\n padding: 2,\n lineWidth: 2,\n size: 24,\n },\n m: {\n padding: 4,\n lineWidth: 4,\n size: 48,\n },\n};\nvar Spinner = function (_a) {\n var _b;\n var _c = _a.size, sizeProp = _c === void 0 ? 's' : _c, _d = _a.colors, colors = _d === void 0 ? 'default' : _d, visible = _a.visible, id = _a.id, className = _a.className, dataTestId = _a.dataTestId;\n var uniqId = useId();\n var _e = CONFIG[sizeProp], size = _e.size, padding = _e.padding, lineWidth = _e.lineWidth;\n var xStart = padding + lineWidth / 2;\n var xEnd = size - xStart;\n var y = size / 2;\n var r = y - xStart;\n var topGradientId = \"\".concat(uniqId, \"_top\");\n var bottomGradientId = \"\".concat(uniqId, \"_bottom\");\n return (React.createElement(\"svg\", { viewBox: \"0 0 \".concat(size, \" \").concat(size), fill: 'none', xmlns: 'http://www.w3.org/2000/svg', className: cn(styles.spinner, colorStyles[colors].component, styles[sizeProp], className, (_b = {},\n _b[styles.visible] = visible,\n _b)), \"data-test-id\": dataTestId, id: id },\n React.createElement(\"defs\", null,\n React.createElement(\"linearGradient\", { id: topGradientId, x1: '0.05' },\n React.createElement(\"stop\", { offset: '0.1', stopOpacity: '0', stopColor: 'currentColor' }),\n React.createElement(\"stop\", { offset: '1', stopOpacity: '0.3', stopColor: 'currentColor' })),\n React.createElement(\"linearGradient\", { id: bottomGradientId, x1: '0.05' },\n React.createElement(\"stop\", { offset: '0', stopOpacity: '1', stopColor: 'currentColor' }),\n React.createElement(\"stop\", { offset: '1', stopOpacity: '0.3', stopColor: 'currentColor' }))),\n React.createElement(\"g\", { strokeWidth: lineWidth },\n React.createElement(\"path\", { stroke: \"url(#\".concat(topGradientId, \")\"), d: \"M\".concat(xStart, \",\").concat(y, \" A\").concat(r, \",\").concat(r, \" 0 0 1 \").concat(xEnd, \",\").concat(y) }),\n React.createElement(\"path\", { stroke: \"url(#\".concat(bottomGradientId, \")\"), d: \"M\".concat(xEnd, \",\").concat(y, \" A\").concat(r, \",\").concat(r, \" 0 0 1 \").concat(xStart, \",\").concat(y) }),\n React.createElement(\"path\", { stroke: 'currentColor', strokeLinecap: 'round', d: \"M\".concat(xStart, \",\").concat(y, \" A\").concat(r, \",\").concat(r, \" 0 0 1 \").concat(xStart, \" \").concat(y) }))));\n};\n\nexport { Spinner };\n","import React, { useRef, useState, useCallback, useEffect, useLayoutEffect } from 'react';\nimport { hasScrolledToBottomOfPage } from '@alfalab/utils';\n\nfunction useClickOutside(ref, cb) {\n React.useEffect(function () {\n var handler = function (event) {\n var checkClickedElement = function (el) {\n return !el.current || el.current.contains(event.target);\n };\n if ((Array.isArray(ref) && ref.find(checkClickedElement)) ||\n (!Array.isArray(ref) && checkClickedElement(ref))) {\n return;\n }\n cb(event);\n };\n document.addEventListener('mousedown', handler);\n document.addEventListener('touchstart', handler);\n return function () {\n document.removeEventListener('mousedown', handler);\n document.removeEventListener('touchstart', handler);\n };\n }, [ref, cb]);\n}\n\n/**\n * Хук обратного отсчёта времени.\n * Возвращает оставшееся количество секунд до определённой даты.\n *\n * @param params.endDate - Дата окончания\n * @param params.onStart - Функция, которая будет вызвана при запуске счётчика\n * @param params.onEnd - Функция, которая будет вызвана при окончании счётчика\n */\nfunction useCountdown(_a) {\n var endDate = _a.endDate, onStart = _a.onStart, onEnd = _a.onEnd;\n var intervalId = useRef(null);\n var _b = useState(differenceInSeconds(endDate, new Date())), seconds = _b[0], setSeconds = _b[1];\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var clear = useCallback(function () { return clearInterval(intervalId.current); }, []);\n useEffect(function () {\n if (onStart) {\n onStart();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n useEffect(function () {\n intervalId.current = setInterval(function () {\n setSeconds(function (sec) { return sec - 1; });\n }, 1000);\n return clear;\n }, [clear]);\n useEffect(function () {\n if (seconds <= 0) {\n clear();\n if (onEnd) {\n onEnd();\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [seconds]);\n return [seconds];\n}\nfunction differenceInSeconds(dateLeft, dateRight) {\n var diff = (dateLeft.getTime() - dateRight.getTime()) / 1000;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}\n\nfunction getDimensionObject(node) {\n return node.getBoundingClientRect();\n}\nfunction useDimensions(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.liveMeasure, liveMeasure = _c === void 0 ? true : _c;\n var _d = useState(), dimensions = _d[0], setDimensions = _d[1];\n var _e = useState(), node = _e[0], setNode = _e[1];\n var ref = useCallback(function (_node) {\n setNode(_node);\n }, []);\n useLayoutEffect(function () {\n if (node) {\n var measure_1 = function () {\n return window.requestAnimationFrame(function () { return setDimensions(getDimensionObject(node)); });\n };\n measure_1();\n if (liveMeasure) {\n window.addEventListener('resize', measure_1);\n window.addEventListener('scroll', measure_1);\n return function () {\n window.removeEventListener('resize', measure_1);\n window.removeEventListener('scroll', measure_1);\n };\n }\n }\n return function () { return undefined; };\n }, [node, liveMeasure]);\n return [ref, dimensions, node];\n}\n\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n *\n * @param {function} fn\n */\nfunction useEventCallback(fn) {\n var ref = React.useRef(fn);\n React.useEffect(function () {\n ref.current = fn;\n });\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n return React.useCallback(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return (ref.current).apply(void 0, args);\n }, []);\n}\n\nvar prevInputMethod;\nfunction handleKeyDown(event) {\n if (event.key === 'Tab') {\n prevInputMethod = 'keyboard';\n }\n}\nfunction handleMouseDown() {\n prevInputMethod = 'mouse';\n}\nfunction handleTouchStart() {\n prevInputMethod = 'mouse';\n}\n/**\n * Навешивает несколько глобальных обработчиков и отслеживает метод ввода - мышь или клавиатура.\n * Note: Повторный вызов функции не дублирует обработчики\n */\nfunction addGlobalListeners() {\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('mousedown', handleMouseDown);\n document.addEventListener('touchstart', handleTouchStart);\n}\n/**\n * Хук устанавливает обработчик события на focusin и focusout\n * по конкретному типу события\n * @param node Элемент на котором установится обработчик (default = document)\n * @param inputMethod Если параметр не задан, установит обработчик по любому событию фокуса\n */\nfunction useFocus(ref, inputMethod) {\n var _a = React.useState(false), focus = _a[0], setFocus = _a[1];\n var handleFocus = React.useCallback(function () {\n if (!inputMethod || inputMethod === prevInputMethod) {\n setFocus(true);\n }\n }, [inputMethod]);\n var handleBlur = React.useCallback(function () {\n setFocus(false);\n }, []);\n React.useEffect(function () {\n var node = ref.current;\n if (node) {\n node.addEventListener('focusin', handleFocus);\n node.addEventListener('focusout', handleBlur);\n }\n return function () {\n if (node) {\n node.removeEventListener('focusin', handleFocus);\n node.removeEventListener('focusout', handleBlur);\n }\n };\n }, [handleBlur, handleFocus, ref]);\n React.useEffect(addGlobalListeners, []);\n return [focus];\n}\n\nfunction useKeydownOutside(ref, cb) {\n React.useEffect(function () {\n var handler = function (event) {\n if (!ref.current || (event.target instanceof Node && ref.current.contains(event.target))) {\n return;\n }\n cb(event);\n };\n document.addEventListener('keydown', handler);\n return function () {\n document.removeEventListener('keydown', handler);\n };\n }, [ref, cb]);\n}\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nfunction getValue(list) {\n return list.map(\n // eslint-disable-next-line no-confusing-arrow\n function (_a) {\n var value = _a[0], query = _a[1];\n return query.matches ? value : null;\n }).filter(Boolean);\n}\nfunction useMedia(list, defaultValue) {\n var _a = React.useState([defaultValue]), value = _a[0], setValue = _a[1];\n var _b = React.useState([]), mediaQueryList = _b[0], setMediaQueryList = _b[1];\n var isClient = typeof window !== 'undefined';\n React.useEffect(function () {\n if (isClient && window.matchMedia) {\n var queryList = list.map(function (_a) {\n var x = _a[0], y = _a[1];\n return [x, window.matchMedia(y)];\n });\n setMediaQueryList(queryList);\n setValue(getValue(queryList));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isClient]);\n React.useEffect(function () {\n var handler = function () {\n setValue(getValue(mediaQueryList));\n };\n mediaQueryList.forEach(function (_a) {\n _a[0]; var mediaQuery = _a[1];\n return mediaQuery.addListener(handler);\n });\n return function () {\n mediaQueryList\n .forEach(function (_a) {\n _a[0]; var mediaQuery = _a[1];\n return mediaQuery.removeListener(handler);\n });\n };\n }, [value, mediaQueryList]);\n return value;\n}\n\nfunction usePrevious(value) {\n var ref = React.useRef();\n React.useEffect(function () {\n ref.current = value;\n });\n return ref.current;\n}\n\nfunction useDidUpdateEffect(effect, deps) {\n var didMountRef = React.useRef(false);\n // eslint-disable-next-line consistent-return\n React.useEffect(function () {\n if (didMountRef.current) {\n var cleanup_1 = effect();\n if (cleanup_1) {\n return function () { return cleanup_1(); };\n }\n }\n didMountRef.current = true;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\nvar UseLoadingStates;\n(function (UseLoadingStates) {\n UseLoadingStates[\"LOADED\"] = \"loaded\";\n UseLoadingStates[\"LOADING\"] = \"loading\";\n UseLoadingStates[\"ERROR\"] = \"error\";\n})(UseLoadingStates || (UseLoadingStates = {}));\n\n/**\n * Возвращает результат загрузки изображения\n * @param params.src url изображения\n * @return результат загрузки (loading | loaded | error)\n */\nfunction useImageLoadingState(_a) {\n var src = _a.src;\n var _b = useState(UseLoadingStates.LOADING), loadingState = _b[0], setLoadingState = _b[1];\n useEffect(function () {\n var active = true;\n setLoadingState(UseLoadingStates.LOADING);\n var image = new Image();\n image.onload = function () {\n if (!active) {\n return;\n }\n setLoadingState(UseLoadingStates.LOADED);\n };\n image.onerror = function () {\n if (!active) {\n return;\n }\n setLoadingState(UseLoadingStates.ERROR);\n };\n image.srcset = src;\n return function () {\n active = false;\n };\n }, [src]);\n return loadingState;\n}\n\nfunction useScrolledToBottomOfPage(cb, once) {\n if (once === void 0) { once = true; }\n React.useEffect(function () {\n var handler = function () {\n if (hasScrolledToBottomOfPage()) {\n cb();\n if (once) {\n document.removeEventListener('scroll', handler);\n }\n }\n };\n document.addEventListener('scroll', handler);\n return function () {\n document.removeEventListener('scroll', handler);\n };\n }, [cb]);\n}\n\nfunction useForceUpdate() {\n var _a = useState(Object.create(null)), dispatch = _a[1];\n var memoizedDispatch = useCallback(function () {\n dispatch(Object.create(null));\n }, [dispatch]);\n return memoizedDispatch;\n}\n\n/**\n * Хук получения состояния доступности компонента.\n */\nvar useIsMounted = function () {\n var isMounted = useRef(true);\n useEffect(function () { return function () {\n isMounted.current = false;\n }; }, []);\n return useCallback(function () { return isMounted.current; }, []);\n};\n\nexport { useClickOutside, useCountdown, useDidUpdateEffect, useDimensions, useEventCallback, useFocus, useForceUpdate, useImageLoadingState, useIsMounted, useKeydownOutside, useMedia, usePrevious, useScrolledToBottomOfPage };\n","import { __rest, __assign } from 'tslib';\nimport React, { useRef, useState, useEffect } from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\nimport { Spinner } from '@alfalab/core-components-spinner/esm';\nimport { useFocus } from '@alfalab/hooks';\n\nvar styles = {\"component\":\"button__component_1nv4g\",\"focused\":\"button__focused_1nv4g\",\"loading\":\"button__loading_1nv4g\",\"text\":\"button__text_1nv4g\",\"addons\":\"button__addons_1nv4g\",\"stretchText\":\"button__stretchText_1nv4g\",\"loader\":\"button__loader_1nv4g\",\"xxs\":\"button__xxs_1nv4g\",\"iconOnly\":\"button__iconOnly_1nv4g\",\"xs\":\"button__xs_1nv4g\",\"s\":\"button__s_1nv4g\",\"m\":\"button__m_1nv4g\",\"l\":\"button__l_1nv4g\",\"xl\":\"button__xl_1nv4g\",\"withRightAddons\":\"button__withRightAddons_1nv4g\",\"ghost\":\"button__ghost_1nv4g\",\"withLeftAddons\":\"button__withLeftAddons_1nv4g\",\"link\":\"button__link_1nv4g\",\"block\":\"button__block_1nv4g\",\"nowrap\":\"button__nowrap_1nv4g\"};\nrequire('./index.css')\n\nvar defaultColors = {\"accent\":\"button__accent_30cfr\",\"loader\":\"button__loader_30cfr\",\"primary\":\"button__primary_30cfr\",\"secondary\":\"button__secondary_30cfr\",\"outlined\":\"button__outlined_30cfr\",\"tertiary\":\"button__tertiary_30cfr\",\"filled\":\"button__filled_30cfr\",\"transparent\":\"button__transparent_30cfr\",\"link\":\"button__link_30cfr\",\"ghost\":\"button__ghost_30cfr\",\"component\":\"button__component_30cfr\",\"loading\":\"button__loading_30cfr\"};\nrequire('./default.css')\n\nvar invertedColors = {\"accent\":\"button__accent_1qrez\",\"loader\":\"button__loader_1qrez\",\"primary\":\"button__primary_1qrez\",\"secondary\":\"button__secondary_1qrez\",\"outlined\":\"button__outlined_1qrez\",\"tertiary\":\"button__tertiary_1qrez\",\"filled\":\"button__filled_1qrez\",\"transparent\":\"button__transparent_1qrez\",\"link\":\"button__link_1qrez\",\"ghost\":\"button__ghost_1qrez\",\"component\":\"button__component_1qrez\",\"loading\":\"button__loading_1qrez\"};\nrequire('./inverted.css')\n\nvar colorStyles = {\n default: defaultColors,\n inverted: invertedColors,\n};\n/**\n * Минимальное время отображения лоадера - 500мс,\n * чтобы при быстрых ответах от сервера кнопка не «моргала».\n */\nvar LOADER_MIN_DISPLAY_INTERVAL = 500;\nvar logWarning = function (view) {\n if (process.env.NODE_ENV !== 'development') {\n return;\n }\n var viewsMap = {\n filled: 'secondary',\n transparent: 'secondary',\n outlined: 'tertiary',\n };\n // eslint-disable-next-line no-console\n console.warn(\n // eslint-disable-next-line prefer-template\n \"@alfalab/core-components/button: view='\".concat(view, \"' \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D \\u0432 \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0438\\u0445 \\u043C\\u0430\\u0436\\u043E\\u0440\\u043D\\u044B\\u0445 \\u0432\\u0435\\u0440\\u0441\\u0438\\u044F\\u0445. \") +\n \"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 view='\".concat(viewsMap[view], \"'. \\u0427\\u0442\\u043E\\u0431\\u044B \\u043F\\u043E\\u043C\\u0435\\u043D\\u044F\\u0442\\u044C \\u0432\\u0441\\u0435 \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438 \\u043D\\u0430 \\u043F\\u0440\\u043E\\u0435\\u043A\\u0442\\u0435 \\u0440\\u0430\\u0437\\u043E\\u043C, \\u043C\\u043E\\u0436\\u043D\\u043E \\u0432\\u043E\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F codemod: \") +\n 'npx @alfalab/core-components-codemod --transformers=button-views src/**/*.tsx');\n};\nvar Button = React.forwardRef(function (_a, ref) {\n var _b, _c, _d;\n var children = _a.children, _e = _a.view, view = _e === void 0 ? 'secondary' : _e, leftAddons = _a.leftAddons, rightAddons = _a.rightAddons, _f = _a.size, size = _f === void 0 ? 'm' : _f, _g = _a.block, block = _g === void 0 ? false : _g, className = _a.className, dataTestId = _a.dataTestId, href = _a.href, _h = _a.loading, loading = _h === void 0 ? false : _h, _j = _a.nowrap, nowrap = _j === void 0 ? false : _j, _k = _a.colors, colors = _k === void 0 ? 'default' : _k, _l = _a.Component, Component = _l === void 0 ? href ? 'a' : 'button' : _l, onClick = _a.onClick, restProps = __rest(_a, [\"children\", \"view\", \"leftAddons\", \"rightAddons\", \"size\", \"block\", \"className\", \"dataTestId\", \"href\", \"loading\", \"nowrap\", \"colors\", \"Component\", \"onClick\"]);\n if (['outlined', 'filled', 'transparent'].includes(view)) {\n logWarning(view);\n }\n var buttonRef = useRef(null);\n var focused = useFocus(buttonRef, 'keyboard')[0];\n var _m = useState(true), loaderTimePassed = _m[0], setLoaderTimePassed = _m[1];\n var timerId = useRef(0);\n var showLoader = loading || !loaderTimePassed;\n var iconOnly = !children;\n var componentProps = {\n className: cn(styles.component, styles[view], styles[size], colorStyles[colors].component, colorStyles[colors][view], (_b = {},\n _b[styles.focused] = focused,\n _b[styles.block] = block,\n _b[styles.iconOnly] = iconOnly,\n _b[styles.loading] = showLoader,\n _b[styles.withRightAddons] = Boolean(rightAddons) && !iconOnly,\n _b[styles.withLeftAddons] = Boolean(leftAddons) && !iconOnly,\n _b[colorStyles[colors].loading] = showLoader,\n _b), className),\n 'data-test-id': dataTestId || null,\n };\n var _o = restProps, disabled = _o.disabled, _p = _o.type, type = _p === void 0 ? 'button' : _p, restButtonProps = __rest(_o, [\"disabled\", \"type\"]);\n var buttonChildren = (React.createElement(React.Fragment, null,\n leftAddons && React.createElement(\"span\", { className: styles.addons }, leftAddons),\n children && (React.createElement(\"span\", { className: cn(styles.text, (_c = {},\n _c[styles.nowrap] = nowrap,\n _c[styles.stretchText] = !(leftAddons || rightAddons),\n _c)) }, children)),\n showLoader && (React.createElement(Spinner, { visible: showLoader, className: cn(styles.loader, colorStyles[colors].loader) })),\n rightAddons && React.createElement(\"span\", { className: styles.addons }, rightAddons)));\n useEffect(function () {\n if (loading) {\n setLoaderTimePassed(false);\n timerId.current = window.setTimeout(function () {\n setLoaderTimePassed(true);\n }, LOADER_MIN_DISPLAY_INTERVAL);\n }\n }, [loading]);\n useEffect(function () { return function () {\n window.clearTimeout(timerId.current);\n }; }, []);\n var handleClick = function (e) {\n if (disabled || showLoader) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n };\n if (href) {\n var target = restProps.target;\n // Для совместимости с react-router-dom, меняем href на to\n var hrefProps = (_d = {}, _d[typeof Component === 'string' ? 'href' : 'to'] = href, _d);\n return (React.createElement(Component, __assign({ rel: target === '_blank' ? 'noreferrer noopener' : undefined }, componentProps, restProps, hrefProps, { onClick: handleClick, disabled: disabled || showLoader, ref: mergeRefs([buttonRef, ref]) }), buttonChildren));\n }\n return (React.createElement(Component, __assign({}, componentProps, restButtonProps, { onClick: handleClick, type: type, disabled: disabled || showLoader, ref: mergeRefs([buttonRef, ref]) }), buttonChildren));\n});\n/**\n * Для отображения в сторибуке\n */\nButton.defaultProps = {\n view: 'secondary',\n size: 'm',\n block: false,\n loading: false,\n nowrap: false,\n};\n\nexport { Button, LOADER_MIN_DISPLAY_INTERVAL };\n","import { __rest, __assign } from 'tslib';\nimport React, { forwardRef } from 'react';\nimport cn from 'classnames';\nimport { Button } from '@alfalab/core-components-button/esm';\n\nvar defaultColors = {\"primary\":\"icon-button__primary_1q44r\",\"secondary\":\"icon-button__secondary_1q44r\",\"transparent\":\"icon-button__transparent_1q44r\",\"negative\":\"icon-button__negative_1q44r\",\"tertiary\":\"icon-button__tertiary_1q44r\",\"component\":\"icon-button__component_1q44r\",\"loader\":\"icon-button__loader_1q44r\"};\nrequire('./default.css')\n\nvar styles = {\"xxs\":\"icon-button__xxs_1dqyc\",\"xs\":\"icon-button__xs_1dqyc\",\"s\":\"icon-button__s_1dqyc\",\"iconWrapper\":\"icon-button__iconWrapper_1dqyc\",\"center\":\"icon-button__center_1dqyc\",\"left\":\"icon-button__left_1dqyc\",\"right\":\"icon-button__right_1dqyc\",\"icon\":\"icon-button__icon_1dqyc\"};\nrequire('./index.css')\n\nvar invertedColors = {\"primary\":\"icon-button__primary_2u1zz\",\"secondary\":\"icon-button__secondary_2u1zz\",\"transparent\":\"icon-button__transparent_2u1zz\",\"negative\":\"icon-button__negative_2u1zz\",\"tertiary\":\"icon-button__tertiary_2u1zz\",\"component\":\"icon-button__component_2u1zz\",\"loader\":\"icon-button__loader_2u1zz\"};\nrequire('./inverted.css')\n\nvar colorStyles = {\n default: defaultColors,\n inverted: invertedColors,\n};\nvar IconButton = forwardRef(function (_a, ref) {\n var _b;\n var className = _a.className, Icon = _a.icon, _c = _a.view, view = _c === void 0 ? 'primary' : _c, _d = _a.size, size = _d === void 0 ? 's' : _d, _e = _a.colors, colors = _e === void 0 ? 'default' : _e, _f = _a.alignIcon, alignIcon = _f === void 0 ? 'center' : _f, restProps = __rest(_a, [\"className\", \"icon\", \"view\", \"size\", \"colors\", \"alignIcon\"]);\n return (React.createElement(Button, __assign({}, restProps, { ref: ref, view: 'ghost', className: cn('cc-icon-button', className, colorStyles[colors][view], colorStyles[colors].component, (_b = {},\n _b[colorStyles[colors].loader] = restProps.loading,\n _b)), size: 's' }),\n React.createElement(\"span\", { className: cn(styles.iconWrapper, styles[size], styles[alignIcon]) },\n React.createElement(Icon, { className: styles.icon }))));\n});\n\nexport { IconButton };\n"],"names":["getRandomValues","rnds8","Uint8Array","rng","crypto","bind","msCrypto","Error","uuid","byteToHex","i","push","toString","substr","arr","offset","arguments","length","undefined","toLowerCase","TypeError","UseLoadingStates","options","buf","rnds","random","useId","document","useLayoutEffect","useEffect","styles","colorStyles","default","inverted","CONFIG","xs","padding","lineWidth","size","s","m","Spinner","_a","_b","_c","sizeProp","_d","colors","visible","id","className","dataTestId","uniqId","_e","xStart","xEnd","y","r","topGradientId","concat","bottomGradientId","viewBox","fill","xmlns","spinner","component","x1","stopOpacity","stopColor","strokeWidth","stroke","d","strokeLinecap","event","key","addEventListener","Button","ref","children","view","leftAddons","rightAddons","_f","_g","block","href","_h","loading","_j","nowrap","_k","_l","Component","onClick","restProps","__rest","includes","buttonRef","useRef","focused","inputMethod","focus","setFocus","handleFocus","handleBlur","node","current","removeEventListener","_m","useState","loaderTimePassed","setLoaderTimePassed","timerId","showLoader","iconOnly","componentProps","withRightAddons","Boolean","withLeftAddons","_o","disabled","_p","type","restButtonProps","buttonChildren","addons","text","stretchText","loader","window","setTimeout","clearTimeout","handleClick","e","preventDefault","stopPropagation","target","hrefProps","__assign","rel","defaultProps","IconButton","forwardRef","Icon","icon","alignIcon","iconWrapper"],"sourceRoot":""}