{"version":3,"file":"61596.78c5ffaa.es5.js","mappings":"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","sources":["webpack://assr-alfaleasing/./node_modules/@alfalab/core-components-loader/esm/Component.js","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfalab/hooks/dist/esm/index.js","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfalab/core-components-button/esm/Component.js","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfa-bank/site-button-v2/src/styles/styles.css?acbd","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfa-bank/site-button-v2/src/config.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfa-bank/site-button-v2/src/index.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfa-bank/site-button-v2/src/button.tsx","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfa-bank/site-helpers-transform/src/strings/map-size-spacer-to-styler.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfa-bank/site-link/src/helpers/scroll.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfa-bank/site-link/src/components/scroller.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfa-bank/site-link/src/components/link.tsx","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfa-bank/site-link/src/link.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfa-bank/site-link/src/styles/styles.css","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/node_modules/@alfa-bank/site-link/src/config.ts","webpack://assr-alfaleasing/throttle.js","webpack://assr-alfaleasing/debounce.js","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/src/utils/render-cards.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-helpers-common/src/react/get-children-prop.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-card-carousel/src/utils/use-analytics-view.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-font-styrene/src/index.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-font-styrene/src/styles/font-styrene.css?b7c3","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-font-styrene/src/font-styrene.tsx","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-font-styrene/src/config.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-grid-universal/src/helpers/column-styles.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-grid-universal/src/index.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-grid-universal/src/styles/styles.css?a8c9","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-grid-universal/src/grid.tsx","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-grid-universal/src/helpers/renders.tsx","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-helpers-common/src/browser/send-event/helpers.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-helpers-common/src/browser/send-event/index.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-helpers-common/node_modules/@alfa-bank/site-br/src/index.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-helpers-common/node_modules/@alfa-bank/site-br/src/styles/styles.css?b7b6","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-helpers-common/node_modules/@alfa-bank/site-br/src/br.tsx","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-helpers-common/src/react/parse-new-lines.tsx","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-layout/src/helpers/map-width.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-moveable-content/src/styles.css?cd6f","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-moveable-content/src/index.tsx","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-named-container/src/named-container/utils.ts","webpack://assr-alfaleasing/./node_modules/react-merge-refs/dist/react-merge-refs.esm.js"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\n\nvar styles = {\"component\":\"loader__component_tyagz\",\"blink\":\"loader__blink_tyagz\"};\nrequire('./index.css')\n\nvar Loader = function (_a) {\n var className = _a.className, dataTestId = _a.dataTestId;\n return (React.createElement(\"div\", { className: cn(styles.component, className), \"data-test-id\": dataTestId },\n React.createElement(\"div\", null),\n React.createElement(\"div\", null),\n React.createElement(\"div\", null)));\n};\n\nexport { Loader };\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 React, { useRef, useState, useEffect } from 'react';\nimport cn from 'classnames';\nimport mergeRefs from 'react-merge-refs';\nimport { useFocus } from '@alfalab/hooks';\nimport { Loader } from '@alfalab/core-components-loader/esm';\n\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s)\n if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nfunction __rest(s, e) {\n var t = {};\n for (var p in s)\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nvar styles = {\"component\":\"button__component_1mgd7\",\"focused\":\"button__focused_1mgd7\",\"loading\":\"button__loading_1mgd7\",\"text\":\"button__text_1mgd7\",\"addons\":\"button__addons_1mgd7\",\"stretchText\":\"button__stretchText_1mgd7\",\"loader\":\"button__loader_1mgd7\",\"xxs\":\"button__xxs_1mgd7\",\"iconOnly\":\"button__iconOnly_1mgd7\",\"xs\":\"button__xs_1mgd7\",\"s\":\"button__s_1mgd7\",\"m\":\"button__m_1mgd7\",\"l\":\"button__l_1mgd7\",\"xl\":\"button__xl_1mgd7\",\"withRightAddons\":\"button__withRightAddons_1mgd7\",\"ghost\":\"button__ghost_1mgd7\",\"withLeftAddons\":\"button__withLeftAddons_1mgd7\",\"link\":\"button__link_1mgd7\",\"block\":\"button__block_1mgd7\",\"nowrap\":\"button__nowrap_1mgd7\"};\nrequire('./index.css')\n\nvar defaultColors = {\"primary\":\"button__primary_zsrtz\",\"secondary\":\"button__secondary_zsrtz\",\"outlined\":\"button__outlined_zsrtz\",\"tertiary\":\"button__tertiary_zsrtz\",\"filled\":\"button__filled_zsrtz\",\"transparent\":\"button__transparent_zsrtz\",\"link\":\"button__link_zsrtz\",\"ghost\":\"button__ghost_zsrtz\",\"component\":\"button__component_zsrtz\",\"loading\":\"button__loading_zsrtz\"};\nrequire('./default.css')\n\nvar invertedColors = {\"primary\":\"button__primary_oiqbk\",\"secondary\":\"button__secondary_oiqbk\",\"outlined\":\"button__outlined_oiqbk\",\"tertiary\":\"button__tertiary_oiqbk\",\"filled\":\"button__filled_oiqbk\",\"transparent\":\"button__transparent_oiqbk\",\"link\":\"button__link_oiqbk\",\"ghost\":\"button__ghost_oiqbk\",\"component\":\"button__component_oiqbk\",\"loading\":\"button__loading_oiqbk\"};\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='\" + 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='\" + 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, restProps = __rest(_a, [\"children\", \"view\", \"leftAddons\", \"rightAddons\", \"size\", \"block\", \"className\", \"dataTestId\", \"href\", \"loading\", \"nowrap\", \"colors\", \"Component\"]);\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 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(Loader, { className: styles.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 () {\n return function () {\n window.clearTimeout(timerId.current);\n };\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, { ref: mergeRefs([buttonRef, ref]) }), buttonChildren));\n }\n var _o = restProps, disabled = _o.disabled, _p = _o.type, type = _p === void 0 ? 'button' : _p, restButtonProps = __rest(_o, [\"disabled\", \"type\"]);\n return (React.createElement(Component, __assign({}, componentProps, restButtonProps, { 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","// extracted by mini-css-extract-plugin\nexport default {\"background-$(backgroundColorBg)\":\"a2Wru\",\"background-$(backgroundColor)\":\"b2Wru\",\"external\":\"c2Wru\",\"deprecatedBorderRadius\":\"d2Wru\",\"hasAnimation\":\"e2Wru\",\"container\":\"f2Wru\"};","/** Устаревшее значение радиуса скругления кнопки */\nexport const DEPRECATED_BORDER_RADIUS = 4;\n\n/** По дизайну у всех кнопок должен быть border-radius: 8px */\nexport const DESIGN_BORDER_RADIUS = 8;\n\n/** По дизайну у всех кнопок должна быть анимация клика */\nexport const DESIGN_CLICK_ANIMATION = true;\n\nexport const BORDER_RADIUSES = [4, 8] as const;\n\n/**\n * TODO: Удалить лишние варианты\n * view='outlined' будет удален в следующих мажорных версиях. Используйте view='tertiary'\n * view='filled' будет удален в следующих мажорных версиях. Используйте view='secondary'\n * view='transparent' будет удален в следующих мажорных версиях. Используйте view='secondary'\n */\nexport const VIEWS = [\n 'primary',\n 'filled',\n 'transparent',\n 'secondary',\n 'outlined',\n 'tertiary',\n 'link',\n 'ghost',\n] as const;\nexport const FILTERED_VIEWS = VIEWS.filter(\n view => !['filled', 'outlined', 'transparent'].includes(view)\n);\n\nexport const SIZES = ['xxs', 'xs', 's', 'm', 'l'] as const;\n","import { createWidget } from '@alfa-bank/site-util-create-widget/create-widget';\nimport { Button as CoreButton } from '@alfalab/core-components-button';\n\nimport styles from './styles/styles.css';\nimport type { TProps, IDeps } from './models';\nimport { Button as Component } from './button';\n\nexport const Button = createWidget(\n { CoreButton, styles },\n { priorityStyler: true }\n)(Component);\n","import cn from 'classnames';\nimport type { FC } from 'react';\nimport React from 'react';\nimport { useNamedContainersWithChildren } from '@alfa-bank/site-named-container/utils';\n\n// TODO: при обновление core-components-button кнопка может стать черной, так как обновились токены\n// вместе с кнопкой нужно апнуть пакет \"@alfalab/core-components-themes\": ~12.1.0 тогда кнопка остается красной при view=primary\n\nimport type { TProps } from './models';\nimport { DEPRECATED_BORDER_RADIUS, DESIGN_BORDER_RADIUS, DESIGN_CLICK_ANIMATION } from './config';\n\nexport const Button: FC> = ({\n CoreButton,\n block = false,\n borderRadius = DESIGN_BORDER_RADIUS,\n children,\n className,\n colors = 'default',\n hasAnimation = DESIGN_CLICK_ANIMATION,\n innerClassName,\n loading = false,\n nowrap = false,\n size = 'm',\n styles,\n view = 'secondary',\n leftAddons,\n rightAddons,\n ...restProps\n}) => {\n const {\n children: otherChildren,\n leftAddons: leftAddonsSlot,\n rightAddons: rightAddonsSlot,\n } = useNamedContainersWithChildren(children);\n\n const button = (\n \n {/* Проверка необходима для поддержки iconOnly режима. useNamedContainersWithChildren трансформирует children в массив, а iconOnly режим активируется если значение children falsy */}\n {otherChildren.length > 0 && otherChildren}\n \n );\n\n return className ? (\n
{button}
\n ) : (\n button\n );\n};\n","import type { IDesignGaps } from '@alfa-bank/site-util-create-widget/src/models';\n\nexport const mapSpacerVerticalToStylerObj: Record = {\n '2x': 4,\n xs: 8,\n s: 12,\n m: 16,\n l: 20,\n xl: 24,\n '2xl': 32,\n '3xl': 40,\n '4xl': 48,\n '5xl': 72,\n};\n\nexport type TStylerWithSpacer = IDesignGaps['indent'] | keyof typeof mapSpacerVerticalToStylerObj;\n\n// TODO: Удалить, как только виджеты использующие данный хелпер перестанут в пропсы принимать значения для deprecated-spacer-vertical\n// Виджеты: cpas-banner -> benefits, pay-system-offers -> card-carousel\n/** @deprecated Принимает значения как styler так и space-vertical и возвращает число*/\nexport const mapSpacerVerticalToStyler = (space: TStylerWithSpacer): IDesignGaps['indent'] => {\n if (typeof space === 'number') {\n return space;\n }\n\n if (space in mapSpacerVerticalToStylerObj) {\n return mapSpacerVerticalToStylerObj[space];\n }\n\n return 0;\n};\n","const getParentZoom = (target: HTMLElement | null): number => {\n if (target === null) {\n return 1;\n }\n\n // TODO: zoom задеприкейчен. Стоит исследовать, нужен ли нам зум.\n const {\n // @ts-ignore\n zoom,\n } = window.getComputedStyle(target);\n\n const isZoomDefaultOrMissing = !zoom || zoom === '1';\n const hasParent = !!target.parentNode;\n const isBody = target.tagName === 'BODY';\n\n const canGoAhead = isZoomDefaultOrMissing && hasParent && !isBody;\n\n if (canGoAhead) {\n return getParentZoom(target.parentElement);\n }\n\n if (!zoom) {\n return 1;\n }\n\n return parseFloat(zoom);\n};\n\ninterface IGetOffsetComponents {\n containerOffset: number;\n offset: number;\n zoom: number;\n}\n\nconst getOffsetComponents = (\n container: HTMLElement | Document,\n target: HTMLElement\n): IGetOffsetComponents => {\n const result = {\n containerOffset: 0,\n zoom: getParentZoom(target),\n offset: target.getBoundingClientRect().top,\n };\n\n if (container instanceof Document) {\n result.containerOffset = window.scrollY;\n\n return result;\n }\n\n // TODO отсюда и ниже не смог попасть тестами. Разобраться, нужен ли код\n if (getComputedStyle(container).position !== 'static') {\n result.offset = target.offsetTop;\n\n return result;\n }\n\n result.containerOffset = container.offsetTop;\n result.offset = target.getBoundingClientRect().top;\n\n return result;\n};\n\nconst calcOffset = (container: HTMLElement | Document, target: HTMLElement): number => {\n const { containerOffset, offset, zoom } = getOffsetComponents(container, target);\n\n return offset * zoom + containerOffset;\n};\n\nconst windowScroller = (offset: number): void => window.scrollTo(0, offset);\n\nconst getElementByHash = (hash: string): HTMLElement | null =>\n document.querySelector(`#${hash}`);\n\nconst scrollBase = ({\n getElement,\n calculateOffset = calcOffset,\n scrollHandler = windowScroller,\n name,\n options,\n}: {\n calculateOffset: typeof calcOffset;\n getElement: typeof getElementByHash;\n name: string;\n options: {\n offset?: number;\n };\n scrollHandler: typeof windowScroller;\n}): void => {\n const { offset = 0 } = options;\n const element = getElement(name);\n\n if (!element) {\n return undefined;\n }\n\n window.location.href = `#${name}`;\n\n return scrollHandler(calculateOffset(document, element) + offset);\n};\n\nexport const scrollToHash = (name: string, options = {}): void =>\n scrollBase({\n getElement: getElementByHash,\n calculateOffset: calcOffset,\n scrollHandler: windowScroller,\n name,\n options,\n });\n","import type { FC, ReactElement, MouseEvent, MouseEventHandler } from 'react';\nimport { Children, cloneElement } from 'react';\n\nimport { scrollToHash } from '../helpers/scroll';\n\nconst onlyHashReg = /^#(.+)/;\n\nconst handleClick =\n (onClick: MouseEventHandler, options: { offset: number }, hash?: string) =>\n (event: MouseEvent) => {\n onClick(event);\n\n if (!hash) {\n return;\n }\n\n event.preventDefault();\n\n const anchorLabel = hash.slice(1);\n\n scrollToHash(anchorLabel, options);\n };\n\ninterface IScroller {\n children: ReactElement<{\n href?: string;\n onClick: MouseEventHandler;\n }>;\n offset?: number;\n}\n\nexport const Scroller: FC = ({ children, offset = 0 }) => {\n const link = Children.only(children);\n\n let hash;\n const {\n props: { href, onClick },\n } = link;\n\n const targetHref = href || '';\n\n const match = targetHref.match(onlyHashReg);\n\n if (match) {\n [hash] = match;\n }\n\n const newProps = {\n ...link.props,\n onClick: handleClick(onClick, { offset }, hash),\n };\n\n return cloneElement(link, newProps);\n};\n","import type { FC, Ref, MouseEvent } from 'react';\nimport React, { useCallback } from 'react';\nimport cn from 'classnames';\n\nimport { DEFAULT_BORDER_LINK, DEFAULT_BORDER_PSEUDO, DEFAULT_THEME, DEFAULT_KIND } from '../config';\nimport type { ILinkProps } from '../models';\n\nimport { Scroller } from './scroller';\n\n// Дефолтная ф-ия, чтобы не писать проверок в коде компонента\n// istanbul ignore next\nconst foo = () => {};\n\nexport const Link: FC = ({\n border,\n children,\n className,\n collectorData,\n dataTestId,\n href,\n kind = DEFAULT_KIND,\n linkRef,\n noUnderline = false,\n onClick = foo,\n onMouseEnter,\n onMouseOver,\n onMouseOut,\n pseudo = false,\n rel = 'noopener noreferrer',\n target,\n title,\n scrollOffset,\n styles,\n tabIndex,\n id,\n theme = DEFAULT_THEME,\n urlEqHref = true,\n role,\n ariaLabel,\n preventDefault = false,\n}) => {\n // Совпадает ли урл страницы с указанным в href\n const isPageUrlEqHref = urlEqHref && href && collectorData?.url === href;\n\n const borderStyleDefault = pseudo ? DEFAULT_BORDER_PSEUDO : DEFAULT_BORDER_LINK;\n\n const borderStyle = border || borderStyleDefault;\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n onClick({ event });\n if (preventDefault) {\n event.preventDefault();\n }\n },\n [onClick, preventDefault]\n );\n\n const globalProps = {\n 'data-test-id': dataTestId,\n title,\n id,\n };\n\n const commonProps = {\n onClick: handleClick,\n className: cn(\n styles.link,\n styles[`${theme}Theme_${kind}Kind`],\n styles[`${borderStyle}Border`],\n {\n [styles.noUnderline]: noUnderline,\n },\n className\n ),\n onMouseEnter,\n onMouseOver,\n onMouseOut,\n tabIndex,\n role,\n 'aria-label': ariaLabel,\n ...globalProps,\n };\n\n if (isPageUrlEqHref) {\n return {children};\n }\n\n const linkContent = pseudo ? (\n \n {children}\n \n ) : (\n }\n href={href}\n rel={rel}\n target={target}\n >\n {children}\n \n );\n\n return scrollOffset ? {linkContent} : linkContent;\n};\n","import { createWidget } from '@alfa-bank/site-util-create-widget/create-widget';\n\nimport { Link as Component } from './components/link';\nimport type { ILinkDependencies, ILinkProps } from './models';\nimport styles from './styles/styles.css';\n\nexport const Link = createWidget({ styles })(Component);\n","// extracted by mini-css-extract-plugin\nexport default {\"background-$(backgroundColorBg)\":\"aJN6E\",\"background-$(backgroundColor)\":\"bJN6E\",\"link\":\"cJN6E\",\"noUnderline\":\"dJN6E\",\"solidBorder\":\"eJN6E\",\"dashedBorder\":\"fJN6E\",\"hiddenBorder\":\"gJN6E\",\"whiteTheme_primaryKind\":\"hJN6E\",\"whiteThemePrimaryKind\":\"hJN6E\",\"whiteTheme_commonKind\":\"iJN6E\",\"whiteThemeCommonKind\":\"iJN6E\",\"whiteTheme_captionKind\":\"jJN6E\",\"whiteThemeCaptionKind\":\"jJN6E\",\"greyTheme_captionKind\":\"kJN6E\",\"greyThemeCaptionKind\":\"kJN6E\",\"blueTheme_captionKind\":\"lJN6E\",\"blueThemeCaptionKind\":\"lJN6E\",\"blackTheme_captionKind\":\"mJN6E\",\"blackThemeCaptionKind\":\"mJN6E\",\"blueTheme_primaryKind\":\"nJN6E\",\"blueThemePrimaryKind\":\"nJN6E\",\"blueTheme_commonKind\":\"oJN6E\",\"blueThemeCommonKind\":\"oJN6E\",\"blackTheme_primaryKind\":\"pJN6E\",\"blackThemePrimaryKind\":\"pJN6E\",\"blackTheme_commonKind\":\"qJN6E\",\"blackThemeCommonKind\":\"qJN6E\",\"greyTheme_primaryKind\":\"rJN6E\",\"greyThemePrimaryKind\":\"rJN6E\",\"greyTheme_commonKind\":\"sJN6E\",\"greyThemeCommonKind\":\"sJN6E\"};","export const DEFAULT_BORDER_LINK = 'solid';\nexport const DEFAULT_BORDER_PSEUDO = 'dashed';\nexport const BORDERS = ['solid', 'dashed', 'hidden'] as const;\n\nexport const DEFAULT_KIND = 'common';\nexport const KINDS = ['common', 'caption', 'primary'] as const;\n\nexport const DEFAULT_THEME = 'white';\nexport const THEMES = ['white', 'blue', 'grey'] as const;\n","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {boolean} [debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nexport default function(delay, noTrailing, callback, debounceMode) {\n\t/*\n\t * After wrapper has stopped being called, this timeout ensures that\n\t * `callback` is executed at the proper times in `throttle` and `end`\n\t * debounce modes.\n\t */\n\tlet timeoutID;\n\tlet cancelled = false;\n\n\t// Keep track of the last time `callback` was executed.\n\tlet lastExec = 0;\n\n\t// Function to clear existing timeout\n\tfunction clearExistingTimeout() {\n\t\tif (timeoutID) {\n\t\t\tclearTimeout(timeoutID);\n\t\t}\n\t}\n\n\t// Function to cancel next exec\n\tfunction cancel() {\n\t\tclearExistingTimeout();\n\t\tcancelled = true;\n\t}\n\n\t// `noTrailing` defaults to falsy.\n\tif (typeof noTrailing !== 'boolean') {\n\t\tdebounceMode = callback;\n\t\tcallback = noTrailing;\n\t\tnoTrailing = undefined;\n\t}\n\n\t/*\n\t * The `wrapper` function encapsulates all of the throttling / debouncing\n\t * functionality and when executed will limit the rate at which `callback`\n\t * is executed.\n\t */\n\tfunction wrapper(...arguments_) {\n\t\tlet self = this;\n\t\tlet elapsed = Date.now() - lastExec;\n\n\t\tif (cancelled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Execute `callback` and update the `lastExec` timestamp.\n\t\tfunction exec() {\n\t\t\tlastExec = Date.now();\n\t\t\tcallback.apply(self, arguments_);\n\t\t}\n\n\t\t/*\n\t\t * If `debounceMode` is true (at begin) this is used to clear the flag\n\t\t * to allow future `callback` executions.\n\t\t */\n\t\tfunction clear() {\n\t\t\ttimeoutID = undefined;\n\t\t}\n\n\t\tif (debounceMode && !timeoutID) {\n\t\t\t/*\n\t\t\t * Since `wrapper` is being called for the first time and\n\t\t\t * `debounceMode` is true (at begin), execute `callback`.\n\t\t\t */\n\t\t\texec();\n\t\t}\n\n\t\tclearExistingTimeout();\n\n\t\tif (debounceMode === undefined && elapsed > delay) {\n\t\t\t/*\n\t\t\t * In throttle mode, if `delay` time has been exceeded, execute\n\t\t\t * `callback`.\n\t\t\t */\n\t\t\texec();\n\t\t} else if (noTrailing !== true) {\n\t\t\t/*\n\t\t\t * In trailing throttle mode, since `delay` time has not been\n\t\t\t * exceeded, schedule `callback` to execute `delay` ms after most\n\t\t\t * recent execution.\n\t\t\t *\n\t\t\t * If `debounceMode` is true (at begin), schedule `clear` to execute\n\t\t\t * after `delay` ms.\n\t\t\t *\n\t\t\t * If `debounceMode` is false (at end), schedule `callback` to\n\t\t\t * execute after `delay` ms.\n\t\t\t */\n\t\t\ttimeoutID = setTimeout(\n\t\t\t\tdebounceMode ? clear : exec,\n\t\t\t\tdebounceMode === undefined ? delay - elapsed : delay\n\t\t\t);\n\t\t}\n\t}\n\n\twrapper.cancel = cancel;\n\n\t// Return the wrapper function.\n\treturn wrapper;\n}\n","/* eslint-disable no-undefined */\n\nimport throttle from './throttle';\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n *\n * @returns {Function} A new, debounced function.\n */\nexport default function(delay, atBegin, callback) {\n\treturn callback === undefined\n\t\t? throttle(delay, atBegin, false)\n\t\t: throttle(delay, callback, atBegin !== false);\n}\n","import { cloneElement, Children, isValidElement } from 'react';\n\nimport type { TCarousel } from '../models';\n\nexport function renderCards({ children }: TCarousel, cardWidths?: number[]): JSX.Element[] {\n return (\n Children.map(children, (value, index) => {\n if (!isValidElement(value)) return null;\n const props = {\n ...value.props,\n key: index,\n };\n\n if (cardWidths) {\n Object.assign(props, { width: cardWidths[index] });\n }\n\n return cloneElement(value, props);\n }) || []\n );\n}\n","import type { ReactElement } from 'react';\nimport { Children, useMemo, isValidElement } from 'react';\n\n/**\n * Хелпер для экстракта определенного пропа из чилдренов в виде массива\n * @example ```ts\n * const arrOfValues = getChildrenProp(children as ReactElement<{ value: string }>, 'value');\n * ```\n */\nexport function getChildrenProp(\n children: ReactElement,\n keyName: Key\n): Array {\n const result: Array = [];\n Children.forEach(children, child => {\n if (isValidElement(child)) {\n result.push(child.props[keyName]);\n } else {\n result.push(undefined);\n }\n });\n\n return result;\n}\n\nexport function useGetChildrenProp(\n children: ReactElement,\n keyName: Key\n) {\n return useMemo(() => getChildrenProp(children, keyName), [children, keyName]);\n}\n","import type { ReactElement, ReactNode, RefObject } from 'react';\nimport { useEffect, useRef } from 'react';\nimport { debounce } from 'throttle-debounce';\nimport { sendEvent } from '@alfa-bank/site-helpers-common/browser/send-event';\nimport { useGetChildrenProp } from '@alfa-bank/site-helpers-common/react/get-children-prop';\nimport type { TEvent } from '@alfa-bank/site-helpers-common/src/browser/send-event/models';\n\nconst getCards = (elem: HTMLDivElement) => {\n return Array.from(elem.firstChild?.childNodes ?? []) as HTMLDivElement[]; // gridContainer.grid.cols, способ достать все чилды не используя классы\n};\n\nconst VISIBILITY_PERSENTAGE = 50;\n\nexport const isElementInViewport = (container: HTMLDivElement, node: HTMLDivElement): boolean => {\n const {\n bottom: nodeBottom,\n height,\n left: nodeLeft,\n right: nodeRight,\n top: nodeTop,\n width,\n } = node.getBoundingClientRect();\n const { left: containerLeft, width: containerWidth } = container.getBoundingClientRect();\n\n const top = nodeTop;\n const bottom = nodeBottom;\n const left = nodeLeft - containerLeft;\n const right = nodeRight - containerLeft;\n const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n\n const isVisibleHorizontally =\n Math.floor(100 + (Math.min(left, 0) / width) * 100) >= VISIBILITY_PERSENTAGE &&\n Math.floor(100 - ((right - containerWidth) / width) * 100) >= VISIBILITY_PERSENTAGE;\n\n const isVisibleVertically =\n Math.floor(100 + (Math.min(0, top) / height) * 100) >= VISIBILITY_PERSENTAGE &&\n Math.floor(100 - ((bottom - windowHeight) / height) * 100) >= VISIBILITY_PERSENTAGE;\n\n return isVisibleHorizontally && isVisibleVertically;\n};\n\nconst findVisibleAndSendEvent = ({\n analytics,\n cache,\n children,\n container,\n}: {\n analytics: Array;\n cache: Record;\n children: HTMLDivElement[];\n container: HTMLDivElement;\n}) => {\n children.forEach((child, idx) => {\n if (cache[idx]) return;\n\n if (isElementInViewport(container, child) && analytics[idx]) {\n sendEvent(analytics[idx]);\n Object.assign(cache, { [idx]: 1 });\n }\n });\n};\n\nexport function useAnalyticsView(ref: RefObject, children: ReactNode) {\n const viewAnalytics = useGetChildrenProp(\n children as ReactElement<{\n dataShowAnalytics?: TEvent;\n }>,\n 'dataShowAnalytics'\n );\n\n const savedCards = useRef([]);\n const cache = useRef>({});\n\n useEffect(() => {\n if (viewAnalytics.length === 0) return () => {};\n\n const elem = ref.current;\n\n if (!elem) return () => {};\n\n savedCards.current = getCards(elem);\n\n findVisibleAndSendEvent({\n container: elem,\n children: savedCards.current,\n analytics: viewAnalytics,\n cache: cache.current,\n });\n const handler = debounce(300, () => {\n findVisibleAndSendEvent({\n container: elem,\n children: savedCards.current,\n analytics: viewAnalytics,\n cache: cache.current,\n });\n });\n\n const eventOptions: AddEventListenerOptions = { passive: true };\n\n elem.addEventListener('scroll', handler, eventOptions);\n window.addEventListener('scroll', handler, eventOptions);\n\n return () => {\n if (elem) {\n elem.removeEventListener('scroll', handler, eventOptions);\n }\n window.removeEventListener('scroll', handler, eventOptions);\n };\n }, [ref, viewAnalytics]);\n}\n","import { createWidget } from '@alfa-bank/site-util-create-widget/create-widget';\n\nimport { FontStyrene as Component } from './font-styrene';\nimport type { IDeps, TProps } from './models';\nimport styles from './styles/font-styrene.css';\n\nexport const FontStyrene = createWidget({\n styles,\n})(Component);\n","// extracted by mini-css-extract-plugin\nexport default {\"fontStyrene\":\"a3a44\",\"externalFont\":\"b3a44\"};","import type { FC } from 'react';\nimport React, { Children, isValidElement } from 'react';\nimport cn from 'classnames';\nimport { Helmet } from 'react-helmet';\n\nimport type { TProps } from './models';\nimport { FONT_PATH } from './config';\n\nexport const FontStyrene: FC> = ({ children, styles }) => {\n return (\n <>\n \n \n \n {Children.map(children, elem => {\n if (!isValidElement(elem)) {\n return elem;\n }\n\n return (\n \n );\n })}\n \n );\n};\n","export const FONT_PATH = '//alfabank.st/media/about/fonts/fonts.css';\n","import type { TColumnsMargin, TColumnsWidth } from '../models';\n\ntype TUnion = string | number;\n\nconst isNumber = (value: TUnion): value is number => typeof value === 'number';\n\nconst toArray = (value: TColumnsWidth | TColumnsWidth[] | TColumnsMargin) =>\n (Array.isArray(value) ? value : [value]) as Array;\n\nconst getItemByIndexOrLast = (idx: number, array: TColumnsWidth[] | TColumnsMargin[]) =>\n array.length - 1 < idx ? array[array.length - 1] : array[idx];\n\nconst mapWidth = (value: TUnion) => {\n if (isNumber(value) && value > 0 && value <= 1) {\n return `${value * 100}%`;\n }\n\n if (isNumber(value) && value > 1) {\n return `${value}px`;\n }\n\n return value;\n};\n\nconst mapShrink = (width: TUnion) => (width ? 0 : null);\n\nconst mapMargin = (value: TUnion) => value + 'px';\n\nconst getColumnStyle = (\n style: string,\n mapValue: typeof mapWidth | typeof mapShrink | typeof mapMargin\n) => {\n return (idx: number, values: TColumnsWidth | TColumnsWidth[] | TColumnsMargin) => {\n const arrayStyles = toArray(values);\n const styleValue = getItemByIndexOrLast(idx, arrayStyles);\n\n return styleValue ? { [style]: mapValue(styleValue as TUnion) } : null;\n };\n};\n\nexport { mapWidth, mapShrink, mapMargin, getColumnStyle };\n","import { createWidget } from '@alfa-bank/site-util-create-widget/create-widget';\n\nimport { Grid as Component } from './grid';\nimport styles from './styles/styles.css';\nimport type { IDeps, TGridComponent } from './models';\n\nexport const Grid = createWidget({ styles })(Component);\n","// extracted by mini-css-extract-plugin\nexport default {\"grid\":\"a30tm\",\"column\":\"b30tm\",\"paddingTop\":\"c30tm\",\"startJustify\":\"d30tm\",\"endJustify\":\"e30tm\",\"centerJustify\":\"f30tm\",\"betweenJustify\":\"g30tm\",\"aroundJustify\":\"h30tm\",\"evenlyJustify\":\"i30tm\",\"defaultAlignment\":\"j30tm\",\"col\":\"k30tm\",\"collapse\":\"l30tm\",\"colAutoWidth\":\"m30tm\",\"vertical\":\"n30tm\",\"baselineAlignItems\":\"o30tm\",\"centerAlignItems\":\"p30tm\",\"endAlignItems\":\"q30tm\",\"flexEndAlignItems\":\"r30tm\",\"flexStartAlignItems\":\"s30tm\",\"leftAlignItems\":\"t30tm\",\"rightAlignItems\":\"u30tm\",\"startAlignItems\":\"v30tm\",\"stretchAlignItems\":\"w30tm\",\"normalAlignItems\":\"x30tm\",\"firstBaselineAlignItems\":\"y30tm\",\"lastBaselineAlignItems\":\"z30tm\",\"safeAlignItems\":\"A30tm\",\"unsafeAlignItems\":\"B30tm\",\"selfStartAlignItems\":\"C30tm\",\"selfEndAlignItems\":\"D30tm\",\"wrap\":\"E30tm\"};","import type { FC } from 'react';\nimport React from 'react';\nimport cn from 'classnames';\n\nimport { renderCols } from './helpers/renders';\nimport type { TGridComponent } from './models';\n\nexport const Grid: FC> = ({\n alignment = false,\n children,\n className,\n classNames = {},\n colAutoWidth = false,\n collapse = false,\n columnsWidth = null,\n flexDirection = 'row',\n justify = 'center',\n paddingTop = false,\n styles,\n vertical = false,\n wrap = false,\n dataTestId = 'grid',\n columnsMargin = 25,\n ...rest\n}) => {\n const hasAlignment = !!alignment;\n const isDefaultAlignment = typeof alignment === 'boolean' && hasAlignment;\n const isCustomAlignment = !isDefaultAlignment && hasAlignment;\n\n return (\n \n {renderCols(\n children,\n {\n colAutoWidth,\n collapse,\n columnsWidth,\n columnsMargin,\n vertical,\n },\n classNames,\n styles\n )}\n \n );\n};\n","import type { ReactNode } from 'react';\nimport React, { Children } from 'react';\nimport cn from 'classnames';\n\nimport type { IDeps, TClassNames, TColumnsMargin, TColumnsWidth } from '../models';\n\nimport { mapWidth, mapShrink, getColumnStyle, mapMargin } from './column-styles';\n\ninterface IRenderColsProps {\n colAutoWidth: boolean;\n collapse: boolean;\n columnsMargin: TColumnsMargin;\n columnsWidth: TColumnsWidth | TColumnsWidth[];\n vertical: boolean;\n}\n\nexport const renderCols = (\n children: ReactNode,\n props: IRenderColsProps,\n classNames: TClassNames,\n styles: IDeps['styles']\n) => {\n const { colAutoWidth, collapse, columnsMargin, columnsWidth, vertical, ...rest } = props;\n\n const marginDirection = vertical ? 'marginBottom' : 'marginRight';\n\n const cols = Children.toArray(children);\n const getWidth = getColumnStyle('width', mapWidth);\n const getShrink = getColumnStyle('flexShrink', mapShrink);\n const getMargin = getColumnStyle(marginDirection, mapMargin);\n\n // 25 - это default value для отступа между columns.\n // Когда перейдем на 24px по всему сайту, то уберем это.\n const isDefaultMargin = columnsMargin === 25;\n\n const columnStyles = cols.map((_, i) => ({\n ...getWidth(i, columnsWidth),\n ...getShrink(i, columnsWidth),\n ...(isDefaultMargin ? {} : getMargin(i, columnsMargin)),\n }));\n\n return cols.map((col, i) => (\n \n {col}\n \n ));\n};\n","import isEmpty from 'lodash/isEmpty';\n\nimport type { TWindowWithDataLayer, TWindowWithYandexMetric } from './models';\n\nexport const hasYandexMetric = (obj: unknown): obj is TWindowWithYandexMetric =>\n !!obj && typeof (obj as TWindowWithYandexMetric).ym === 'function';\n\nexport const hasDataLayer = (obj: unknown): obj is TWindowWithDataLayer =>\n !!(obj && (obj as TWindowWithDataLayer).dataLayer);\n\nexport const isNotEmpty = (obj: T): obj is NonNullable => !isEmpty(obj);\n","import type { TEvent } from './models';\nimport { hasDataLayer, hasYandexMetric, isNotEmpty } from './helpers';\n\nexport const sendEvent = (evt: TEvent = {}): void => {\n const globalContext = window;\n const { ymEvent, ...gaEvent } = evt;\n\n if (process.env.NODE_ENV === 'development') {\n if (isNotEmpty(gaEvent)) {\n console.info('Google Event:\\n', gaEvent);\n }\n if (isNotEmpty(ymEvent)) {\n const ymEvents = [ymEvent].flat();\n ymEvents.forEach(event => {\n const { method = 'reachGoal', params } = event;\n console.info('Yandex Event:\\n', method, ...[params].flat());\n });\n }\n }\n\n if (hasDataLayer(globalContext) && isNotEmpty(gaEvent)) {\n const completeEvt = {\n path: globalContext.location.pathname,\n ...gaEvent,\n };\n\n globalContext.dataLayer.push(completeEvt);\n }\n\n if (hasYandexMetric(globalContext) && isNotEmpty(ymEvent)) {\n const ymEvents = [ymEvent].flat();\n ymEvents.forEach(event => {\n const { method = 'reachGoal', params } = event;\n\n globalContext.ym(`${process.env.CUSTOM_YTM_ID}`, method, ...[params].flat());\n });\n }\n};\n","import { createWidget } from '@alfa-bank/site-util-create-widget/create-widget';\n\nimport type { TBr, IDeps } from './models';\nimport { Br as Component } from './br';\nimport styles from './styles/styles.css';\n\nexport const Br = createWidget({\n styles,\n})(Component);\n","// extracted by mini-css-extract-plugin\nexport default {\"block\":\"a1Ssn\"};","import type { FC } from 'react';\nimport React from 'react';\nimport cn from 'classnames';\n\nimport type { TBr } from './models';\n\nexport const Br: FC = ({ inline = false, styles }) => {\n const classNames =\n cn({\n [styles.block]: !inline,\n }) || undefined;\n\n return {inline && ' '};\n};\n","import type { ComponentType, ReactNode } from 'react';\nimport React, { Fragment } from 'react';\nimport { Br } from '@alfa-bank/site-br';\n\n/**\n * Хелпер для создания многострочного текста\n * @param content контент - обрабатывается только текст и массивы в arrayMode\n * @param wrapper кастомная обертка\n * @param arrayMode режим работы с массивами - для совместимости со старым хелпером\n * getMultiLineText\n */\nexport const parseNewLines = (\n content?: ReactNode,\n wrapper?: ComponentType,\n arrayMode = false\n): ReactNode | ReactNode[] => {\n if (!content) return '';\n const WrapperComponent = wrapper ?? Fragment;\n const isArray = arrayMode && Array.isArray(content);\n if (typeof content !== 'string' && !isArray) return content;\n\n const arr = isArray ? (content as string[]) : (content as string).split(/\\\\n|\\n/);\n\n return arr.map((item, index) => (\n \n {typeof item === 'string' ? item.trim() : item}\n {index < arr.length - 1 &&
}\n
\n ));\n};\n","const isNumber = (value: string | number): value is number => typeof value === 'number';\n\nexport const mapWidth = (value: string | number) => {\n if (isNumber(value) && value > 0 && value <= 1) {\n return `${value * 100}%`;\n }\n\n if (isNumber(value) && value > 1) {\n return `${value}px`;\n }\n\n return value;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"movableContent\":\"aNy99\",\"content\":\"bNy99\",\"noOverflow\":\"cNy99\",\"animate\":\"dNy99\"};","import type { ComponentType, TransitionEvent } from 'react';\nimport React, { Component } from 'react';\nimport cn from 'classnames';\n\nimport styles from './styles.css';\nimport type { IProps } from './models';\n\nconst makeAnimationStyles = (animationDuration: number, animationCubicBezier: string) => ({\n transitionDuration: `${animationDuration}s`,\n transitionTimingFunction: animationCubicBezier,\n});\n\nconst makePositionStyles = (x: number, y: number) => ({\n transform: `translate(${x}px, ${y}px)`,\n willChange: 'transform',\n});\n\nexport const MoveableContent = class extends Component> {\n static defaultProps: IProps = {\n noOverflow: false,\n animate: false,\n animationDuration: 1,\n animationCubicBezier: 'ease',\n animationDidEndCallback: undefined,\n x: 0,\n y: 0,\n };\n\n constructor(props: IProps) {\n super(props);\n\n this.onTransitionEnd = this.onTransitionEnd.bind(this);\n }\n\n onTransitionEnd(event: TransitionEvent) {\n const { animationDidEndCallback } = this.props;\n\n if (animationDidEndCallback === null) {\n return;\n }\n\n const { x, y } = this.props;\n\n if (animationDidEndCallback) {\n animationDidEndCallback({ x, y, event });\n }\n }\n\n render() {\n const { animate, animationCubicBezier, animationDuration, children, noOverflow, x, y } =\n this.props;\n\n let animationStyles = null;\n\n if (animate) {\n animationStyles = makeAnimationStyles(animationDuration, animationCubicBezier);\n }\n\n const positionStyles = makePositionStyles(x, y);\n\n return (\n \n \n {children}\n \n \n );\n }\n} as ComponentType>>;\n","import type { ReactElement, ReactNode } from 'react';\nimport React, { useMemo } from 'react';\n\nimport type { INamedContainerProps } from '../models';\n\nexport interface INamedContainers {\n [key: string]: ReactNode;\n}\n\ninterface INamedContainersWithChildren extends INamedContainers {\n children: ReactNode[];\n}\n\nexport function isNamedContainer(node: ReactNode): node is ReactElement {\n return Boolean(\n typeof node === 'object' &&\n node !== null &&\n (node as ReactElement).props.is === 'NamedContainer' &&\n (node as ReactElement).props.name\n );\n}\n\n/**\n * Функция собирает из children слоты и оставляет отфильтрованный список детей\n * @param children\n */\nexport function getNamedContainersWithChildren(children: ReactNode) {\n return React.Children.toArray(children).reduce(\n (nodes: INamedContainersWithChildren, node) => {\n if (!isNamedContainer(node)) {\n nodes.children.push(node);\n } else if (node.props.name !== 'children') {\n return {\n ...nodes,\n [node.props.name]: node.props.children,\n };\n }\n\n return nodes;\n },\n { children: [] }\n );\n}\n\n/**\n * Функция собирает из children только слоты\n * @param children\n */\nexport function getNamedContainers(children: ReactNode) {\n return React.Children.toArray(children).reduce((nodes: INamedContainers, node) => {\n if (isNamedContainer(node)) {\n return {\n ...nodes,\n [node.props.name]: node.props.children,\n };\n }\n\n return nodes;\n }, {});\n}\n\nexport function useNamedContainersWithChildren(children: ReactNode): INamedContainersWithChildren {\n return useMemo(() => getNamedContainersWithChildren(children), [children]);\n}\n\nexport function useNamedContainers(children: ReactNode) {\n return useMemo(() => getNamedContainers(children), [children]);\n}\n","function mergeRefs(refs) {\n return function (value) {\n refs.forEach(function (ref) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n}\n\nexport default mergeRefs;\n//# sourceMappingURL=react-merge-refs.esm.js.map\n"],"names":["styles","Loader","_a","className","dataTestId","prevInputMethod","UseLoadingStates","handleKeyDown","event","key","handleMouseDown","handleTouchStart","addGlobalListeners","document","addEventListener","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","require","colorStyles","default","inverted","Button","React","ref","_b","_c","_d","children","_e","view","leftAddons","rightAddons","_f","size","_g","block","href","_h","loading","_j","nowrap","_k","colors","_l","Component","restProps","includes","buttonRef","useRef","focused","inputMethod","focus","setFocus","handleFocus","handleBlur","node","current","removeEventListener","useFocus","_m","useState","loaderTimePassed","setLoaderTimePassed","timerId","showLoader","iconOnly","componentProps","cn","component","withRightAddons","Boolean","withLeftAddons","buttonChildren","addons","text","stretchText","loader","useEffect","window","setTimeout","clearTimeout","target","hrefProps","rel","undefined","mergeRefs","_o","disabled","_p","type","restButtonProps","defaultProps","filter","createWidget","CoreButton","priorityStyler","borderRadius","hasAnimation","innerClassName","useNamedContainersWithChildren","otherChildren","leftAddonsSlot","rightAddonsSlot","button","external","deprecatedBorderRadius","container","mapSpacerVerticalToStylerObj","xs","m","l","xl","mapSpacerVerticalToStyler","space","getParentZoom","zoom","getComputedStyle","isZoomDefaultOrMissing","hasParent","parentNode","isBody","tagName","parentElement","parseFloat","calcOffset","result","containerOffset","offset","getBoundingClientRect","top","Document","scrollY","position","offsetTop","getOffsetComponents","windowScroller","scrollTo","getElementByHash","hash","querySelector","scrollToHash","name","options","getElement","calculateOffset","scrollHandler","element","location","scrollBase","onlyHashReg","handleClick","onClick","preventDefault","anchorLabel","slice","Scroller","link","Children","props","match","newProps","cloneElement","foo","Link","border","collectorData","kind","linkRef","noUnderline","onMouseEnter","onMouseOver","onMouseOut","pseudo","title","scrollOffset","tabIndex","id","theme","urlEqHref","role","ariaLabel","isPageUrlEqHref","url","borderStyle","useCallback","globalProps","commonProps","linkContent","cancelled","lastExec","clearExistingTimeout","timeoutID","cancel","wrapper","arguments_","self","elapsed","Date","exec","callback","clear","debounceMode","noTrailing","delay","throttle","atBegin","renderCards","cardWidths","value","index","isValidElement","width","useGetChildrenProp","keyName","useMemo","child","push","getChildrenProp","findVisibleAndSendEvent","analytics","cache","forEach","idx","nodeBottom","bottom","height","nodeLeft","left","nodeRight","right","nodeTop","containerLeft","containerWidth","windowHeight","innerHeight","documentElement","clientHeight","isVisibleHorizontally","Math","floor","min","isVisibleVertically","isElementInViewport","sendEvent","useAnalyticsView","viewAnalytics","savedCards","elem","Array","from","firstChild","childNodes","getCards","handler","debounce","eventOptions","passive","FontStyrene","Helmet","fontStyrene","externalFont","isNumber","mapWidth","mapShrink","mapMargin","getColumnStyle","style","mapValue","values","styleValue","array","getItemByIndexOrLast","isArray","Grid","alignment","classNames","colAutoWidth","collapse","columnsWidth","flexDirection","justify","paddingTop","vertical","wrap","columnsMargin","rest","hasAlignment","isDefaultAlignment","isCustomAlignment","grid","column","defaultAlignment","marginDirection","cols","getWidth","getShrink","getMargin","isDefaultMargin","columnStyles","map","_","col","renderCols","isNotEmpty","obj","isEmpty","evt","globalContext","ymEvent","gaEvent","dataLayer","completeEvt","path","pathname","ym","hasYandexMetric","flat","method","params","process","CUSTOM_YTM_ID","Br","inline","parseNewLines","content","arrayMode","WrapperComponent","Fragment","arr","split","item","trim","MoveableContent","onTransitionEnd","bind","animationDidEndCallback","x","y","render","animate","animationCubicBezier","animationDuration","noOverflow","animationStyles","transitionDuration","transitionTimingFunction","makeAnimationStyles","positionStyles","transform","willChange","makePositionStyles","isNamedContainer","is","getNamedContainersWithChildren","reduce","nodes","getNamedContainers","useNamedContainers","refs"],"sourceRoot":""}