{"version":3,"file":"static/chunks/8593-768ff88d3710d4cb.js","mappings":"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","sources":["webpack://_N_E/./src/components/base/combo-box.tsx","webpack://_N_E/./src/components/common/buttons/go-to-wikifolio-button/go-to-wikifolio-button.tsx","webpack://_N_E/./src/components/common/buttons/watchlist-button/components/watchlist-button-itself.tsx","webpack://_N_E/./src/components/common/buttons/watchlist-button/components/watchlist-toggle.tsx","webpack://_N_E/./src/components/common/buttons/watchlist-button/watchlist-button.tsx","webpack://_N_E/./src/components/common/key-figure.tsx","webpack://_N_E/./src/components/common/switch/switch.tsx","webpack://_N_E/./src/components/common/wikifolio-og-chart-image.tsx","webpack://_N_E/./src/components/icons/filter.tsx","webpack://_N_E/./src/components/icons/icon-download.tsx","webpack://_N_E/./src/components/icons/sort-asc.tsx","webpack://_N_E/./src/components/icons/sort-desc.tsx","webpack://_N_E/./src/components/modals/wf-alert-dialog/wf-alert-dialog.tsx","webpack://_N_E/./src/api/client/extended-search.api.ts","webpack://_N_E/./src/components/pages/search/components/sort-direction-button/sort-direction-button.tsx","webpack://_N_E/./src/components/pages/search/constants.ts","webpack://_N_E/./src/components/pages/search/store/search-store.ts","webpack://_N_E/./src/components/pages/search/store/utils.ts","webpack://_N_E/./src/components/pages/search/store/actions.ts","webpack://_N_E/./src/components/pages/search/components/investable-in-country-switch.tsx","webpack://_N_E/./src/components/pages/search/components/filter-section/button.tsx","webpack://_N_E/./src/components/pages/search/components/filter-section/filter-category-item.tsx","webpack://_N_E/./src/components/common/range-slider/range-slider-utils.ts","webpack://_N_E/./src/components/common/range-slider/range-slider-with-inputs.tsx","webpack://_N_E/./src/components/pages/search/components/key-figures-filter/components/range-slider-list.tsx","webpack://_N_E/./src/components/pages/search/components/key-figures-filter/components/key-figures-group.tsx","webpack://_N_E/./src/components/pages/search/components/filter-section/mobile-search-filter/key-figures-filter.tsx","webpack://_N_E/./src/components/pages/search/components/tags-filter/components/filter-tag-checkbox/filter-tag-checkbox.tsx","webpack://_N_E/./src/components/pages/search/components/tags-filter/components/checkbox-list.tsx","webpack://_N_E/./src/components/pages/search/components/tags-filter/components/tags-list.tsx","webpack://_N_E/./src/components/pages/search/components/popular-filters/components/leverage-products-selection.tsx","webpack://_N_E/./src/components/pages/search/components/popular-filters/components/popular-filters-content.tsx","webpack://_N_E/./src/components/pages/search/hooks/use-popular-filters-counter.ts","webpack://_N_E/./src/components/pages/search/components/filter-section/mobile-search-filter/popular-filters.tsx","webpack://_N_E/./src/components/pages/search/components/tags-filter/components/broker-checkbox.tsx","webpack://_N_E/./src/components/pages/search/components/tags-filter/components/brokers-checkbox-list.tsx","webpack://_N_E/./src/components/pages/search/components/tags-filter/components/tags-list-with-brokers.tsx","webpack://_N_E/./src/components/pages/search/components/filter-section/mobile-search-filter/tags-filter.tsx","webpack://_N_E/./src/components/pages/search/components/filter-section/mobile-search-filter/mobile-search-filter.tsx","webpack://_N_E/./src/components/pages/search/components/animated-heading.tsx","webpack://_N_E/./src/components/pages/search/components/filter-section/search-filter-header.tsx","webpack://_N_E/./src/components/pages/search/components/filter-section/mobile-search-filter/mobile-search-filter-container.tsx","webpack://_N_E/./src/components/pages/search/components/popover-button.tsx","webpack://_N_E/./src/components/pages/search/components/key-figures-filter/key-figures-filter-body-content.tsx","webpack://_N_E/./src/components/pages/search/components/key-figures-filter/key-figures-popover.tsx","webpack://_N_E/./src/components/pages/search/components/popular-filters/popular-filters-popover.tsx","webpack://_N_E/./src/components/pages/search/components/tags-filter/tags-filter-body-content.tsx","webpack://_N_E/./src/components/pages/search/components/tags-filter/tags-popover.tsx","webpack://_N_E/./src/components/pages/search/components/filter-section/search-filter/search-filter-container.tsx","webpack://_N_E/./src/components/pages/search/hooks/use-filters.ts","webpack://_N_E/./src/components/pages/search/filter-section.tsx","webpack://_N_E/./src/components/pages/search/components/download-button/download-button.tsx","webpack://_N_E/./src/components/pages/search/components/rankings-dropdown-selector/rankings-dropdown-selector.tsx","webpack://_N_E/./src/components/pages/search/sort-section.tsx","webpack://_N_E/./src/components/pages/search/utils/get-default-ranking.ts","webpack://_N_E/./src/components/pages/search/filter-sort-sections-wrapper.tsx","webpack://_N_E/./src/components/pages/search/utils/fix-search-url-query.ts","webpack://_N_E/./src/types/common.ts","webpack://_N_E/./src/components/pages/search/utils/get-key-figure-min-and-max-by-key-figure-id.ts","webpack://_N_E/./src/components/pages/search/utils/get-url-identifier.ts","webpack://_N_E/./src/components/pages/search/utils/map-key-figures.ts","webpack://_N_E/./src/components/pages/search/utils/map-leverage-products-indication.ts","webpack://_N_E/./src/components/pages/search/utils/map-selected-ranking.ts","webpack://_N_E/./src/components/pages/search/utils/map-tags.ts","webpack://_N_E/./src/components/pages/search/utils/map-query-string-to-state.ts","webpack://_N_E/./src/components/pages/search/utils/map-search-term.ts","webpack://_N_E/./src/components/pages/search/utils/map-sort-direction.ts","webpack://_N_E/./src/components/pages/search/utils/map-is-investable.ts","webpack://_N_E/./src/components/pages/search/hooks/use-fetch-results-on-page-load.tsx","webpack://_N_E/./src/components/pages/search/utils/map-broker-ids.ts","webpack://_N_E/./src/components/pages/search/utils/map-state-to-query-string.ts","webpack://_N_E/./src/components/pages/search/hooks/use-on-search-store-change.tsx","webpack://_N_E/./src/components/pages/search/hooks/use-search.tsx","webpack://_N_E/./src/components/pages/search/components/card-result/components/card-rankings.tsx","webpack://_N_E/./src/components/pages/search/components/card-result/search-result-card.tsx","webpack://_N_E/./src/hooks/use-is-mounted.ts","webpack://_N_E/./src/components/pages/search/components/card-result/search-result-card-skeleton.tsx","webpack://_N_E/./src/components/pages/search/components/card-result/loading-search-result.tsx","webpack://_N_E/./src/components/pages/search/hooks/use-delayed-set-state.ts","webpack://_N_E/./src/components/pages/search/result-section.tsx","webpack://_N_E/./src/components/pages/search/search-page.tsx","webpack://_N_E/./src/hooks/dom/use-viewport-spy.ts","webpack://_N_E/./src/stores/wikifolio-store.ts","webpack://_N_E/"],"sourcesContent":["import { Children, cloneElement, JSXElementConstructor, ReactElement, ReactNode, useEffect, useState } from \"react\";\nimport { MenuItemProps, Menu, MenuProps, MenuButton, MenuItem, MenuList, MenuListProps, useMultiStyleConfig, BoxProps, Box } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IconCaret } from \"src/components/icons\";\nimport { SpanFlex } from \".\";\n\n// Dev-Note: we need to use object here so that we support interface types\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype PossibleValueTypes = string | number | object;\n\ninterface IComboBoxItemProps extends Omit {\n value: ValueType;\n onClick?: () => void;\n}\n\ntype IComboBoxItem = ReactElement<\n IComboBoxItemProps,\n JSXElementConstructor>\n>;\n\nexport const ComboBoxItem = ({ value, onClick, ...menuItemProps }: IComboBoxItemProps) => {\n return ;\n};\n\ninterface IComboBoxProps extends Omit {\n placeholder?: ReactNode;\n value: ValueType | null;\n onChange?: (value: ValueType, label: ReactNode) => void;\n children: IComboBoxItem[];\n isDisabled?: boolean;\n menuListProps?: MenuListProps;\n inputBoxProps?: BoxProps;\n dataTestId?: string;\n}\n\nexport const ComboBox = ({\n placeholder,\n value,\n size,\n onChange,\n children,\n isDisabled = false,\n menuListProps,\n inputBoxProps = {},\n dataTestId,\n ...props\n}: IComboBoxProps) => {\n const { field: inputStyle } = useMultiStyleConfig(\"Input\", { size });\n const [label, setLabel] = useState(null);\n const { t } = useTranslation(\"common\");\n\n // if the value changes we need to update the label accordingly\n useEffect(() => {\n if (value === 0 || value) {\n const label = children.find(child => JSON.stringify(child.props.value) === JSON.stringify(value));\n setLabel(label ? label.props.children : null);\n } else {\n setLabel(null);\n }\n }, [children, value]);\n\n const showPlaceholder = value === null;\n\n return (\n \n \n {({ isOpen }) => (\n <>\n \n \n {showPlaceholder ? placeholder || t(\"choose\") : label}\n \n \n \n \n \n \n {Children.map>(children, child => {\n return cloneElement(child, {\n onClick: onChange ? () => onChange(child.props.value, child.props.children) : undefined,\n });\n })}\n \n \n )}\n \n \n );\n};\n","import { useTranslation } from \"next-i18next\";\nimport { Button, ButtonProps } from \"src/components/base/button\";\nimport { WfLinkUnstyled } from \"src/components/base/wf-link\";\nimport { useLinkBuilder } from \"src/hooks/use-link-builder\";\n\ninterface IGoToWikifolioButtonProps extends ButtonProps {\n symbol?: string;\n href?: string;\n}\n\nexport const GoToWikifolioButton = ({ symbol, onClick, href, ...buttonProps }: IGoToWikifolioButtonProps) => {\n const { buildWikifolioLink } = useLinkBuilder();\n const { t } = useTranslation(\"common\");\n const link = href ?? (symbol && buildWikifolioLink(symbol));\n\n return (\n \n );\n};\n","// TODO: https://wikifolio.atlassian.net/browse/WIKI-35898\n// eslint-disable-next-line no-restricted-imports\nimport { Box, BoxProps, Button, ButtonProps } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IconFilledStar, IconOutlineStar } from \"src/components/icons\";\n\ninterface IWatchlistButtonItselfProps extends ButtonProps {\n wikifolioShortDescription: string;\n isOnWatchlist?: boolean;\n omitTitle?: boolean;\n titleBoxProps?: BoxProps;\n}\n\nexport const WatchlistButtonItself = ({\n wikifolioShortDescription,\n isOnWatchlist,\n omitTitle,\n titleBoxProps,\n ...buttonProps\n}: IWatchlistButtonItselfProps) => {\n const { size } = buttonProps;\n const IconStar = isOnWatchlist ? IconFilledStar : IconOutlineStar;\n const { t } = useTranslation(\"common\");\n const text = isOnWatchlist ? t(\"remove\") : t(\"watchlist\");\n\n return (\n }\n variant=\"outline\"\n data-gtm-wikifolio-short-description={wikifolioShortDescription}\n className={isOnWatchlist ? undefined : \"gtm-watchlist__add\"}\n aria-label={t(\"watchlist\")}\n {...buttonProps}\n >\n {!omitTitle && {text}}\n \n );\n};\n","// eslint-disable-next-line no-restricted-imports\nimport { ButtonProps, useDisclosure } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IErrorResponse } from \"src/api/client/types\";\nimport { useAddWatchlistWikifoliosMutation, useRemoveWatchlistWikifoliosMutation } from \"src/api/client/watchlist.api\";\nimport { WfAlertDialog } from \"src/components/modals/wf-alert-dialog/wf-alert-dialog\";\nimport { useLinkBuilder } from \"src/hooks/use-link-builder\";\nimport { useWfToast, EnumToastStatus } from \"src/hooks/use-wf-toast\";\nimport { useUserStore } from \"src/stores/user-store\";\n\ninterface IButtonChildrenProps extends ButtonProps {\n isOnWatchlist?: boolean;\n}\n\ninterface IWatchlistToggleProps extends Omit {\n wikifolioId: string;\n wikifolioShortDescription: string;\n setOnWatchlist: (wikifolioId: string, isOnWatchlist: boolean) => void;\n children: (props: IButtonChildrenProps) => React.ReactNode;\n isOnWatchlist?: boolean;\n addedToWatchlistMessage?: string;\n removedFromWatchlistMessage?: string;\n}\n\nexport const WatchlistToggle = ({\n wikifolioId,\n wikifolioShortDescription,\n isOnWatchlist,\n addedToWatchlistMessage,\n removedFromWatchlistMessage,\n setOnWatchlist,\n children,\n}: IWatchlistToggleProps) => {\n const { t } = useTranslation(\"common\");\n const { openLoginModal } = useLinkBuilder();\n const { isLoggedIn } = useUserStore();\n const removeDialog = useDisclosure();\n const toast = useWfToast();\n\n const onError = (error: IErrorResponse) => {\n toast({\n status: EnumToastStatus.Error,\n title: error?.message || t(\"general-error\"),\n });\n };\n\n const { mutatePromise: add, isLoading: isLoadingAdd } = useAddWatchlistWikifoliosMutation(wikifolioId, {\n onSuccess: () => {\n toast({ status: EnumToastStatus.Success, title: addedToWatchlistMessage ?? t(\"add-wikifolio-success\") });\n setOnWatchlist(wikifolioId, true);\n },\n onError,\n });\n\n const { mutatePromise: remove, isLoading: isLoadingRemove } = useRemoveWatchlistWikifoliosMutation(wikifolioId, {\n onSuccess: () => {\n toast({ status: EnumToastStatus.Success, title: removedFromWatchlistMessage ?? t(\"remove-wikifolio-success\") });\n setOnWatchlist(wikifolioId, false);\n },\n onError,\n });\n\n const handleOnAdd = async () => {\n if (!isLoggedIn) {\n openLoginModal();\n return;\n }\n\n if (isOnWatchlist) {\n removeDialog.onOpen();\n } else {\n add({});\n }\n };\n\n const handleRemove = () => {\n removeDialog.onClose();\n remove();\n };\n\n const isLoading = isLoadingAdd || isLoadingRemove;\n\n return (\n <>\n {children({ isLoading, onClick: handleOnAdd })}\n\n \n \n );\n};\n","/* eslint-disable no-restricted-imports */\nimport { BoxProps, ButtonProps } from \"@chakra-ui/react\";\nimport { WatchlistButtonItself } from \"./components/watchlist-button-itself\";\nimport { WatchlistToggle } from \"./components/watchlist-toggle\";\n\ninterface IWatchlistButtonProps extends Omit {\n wikifolioId: string;\n wikifolioShortDescription: string;\n isOnWatchlist?: boolean;\n omitTitle?: boolean;\n addedToWatchlistMessage?: string;\n removedFromWatchlistMessage?: string;\n titleBoxProps?: BoxProps;\n setOnWatchlist: (wikifolioId: string, isOnWatchlist: boolean) => void;\n}\n\nexport const WatchlistButton = ({\n wikifolioId,\n wikifolioShortDescription,\n isOnWatchlist,\n omitTitle = false,\n addedToWatchlistMessage,\n removedFromWatchlistMessage,\n setOnWatchlist,\n titleBoxProps,\n ...buttonProps\n}: IWatchlistButtonProps) => (\n <>\n \n {({ isLoading, onClick }) => (\n \n )}\n \n \n);\n","import { Flex, FlexProps, Text } from \"@chakra-ui/react\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport Typography from \"src/theme/typography\";\nimport { ITooltip } from \"src/types/common\";\nimport { PopoverButtonIconInfo, WfPopover } from \"../base/wf-popover\";\nimport { RankingValue } from \"./ranking/ranking-value\";\nimport { EnumRankingType, IRankingData } from \"./ranking/types\";\n\nconst KEY_FIGURE_TEST_ID = \"key-figure\";\n\ninterface IKeyFigureProps extends FlexProps {\n ranking: IRankingData;\n value?: string;\n tooltip?: ITooltip | null;\n /* On true removes `- place` in EnumRankingType.RankingPlace */\n hidePoints?: boolean;\n rankingValueFontWeight?: keyof (typeof Typography)[\"fontWeights\"];\n}\n\nexport const KeyFigure = ({ ranking, value, tooltip, hidePoints, rankingValueFontWeight, ...flexProps }: IKeyFigureProps) => {\n const { formatDateShort } = useDateTimeFormatter();\n\n return (\n \n \n \n {ranking.label}\n {ranking.type === EnumRankingType.Performance && ranking?.creationDate && (\n \n {formatDateShort(ranking.creationDate)}\n \n )}\n \n {tooltip && (\n \n \n \n )}\n \n \n \n \n \n );\n};\n","import { ChangeEvent } from \"react\";\n// eslint-disable-next-line no-restricted-imports\nimport { Switch as ChakraSwitch, SwitchProps } from \"@chakra-ui/react\";\n\nexport interface ISwitchProps extends SwitchProps {\n isChecked: boolean;\n onChange: (event: ChangeEvent) => void;\n colorScheme?: string;\n styles?: SwitchProps;\n}\n\nexport const Switch = ({ isChecked, onChange, colorScheme = \"green\", size = \"lg\", ...props }: ISwitchProps) => {\n return ;\n};\n","import { AspectRatio, AspectRatioProps, Box, Image, ImageProps, ResponsiveValue } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { createChartImagePreviewUrl } from \"src/consts/urls\";\n\nexport interface IWikifolioOgChartImageProps extends AspectRatioProps {\n wikifolioId: string;\n shortDescription: string;\n ratio?: ResponsiveValue;\n loading?: ImageProps[\"loading\"];\n onError?: () => void;\n}\n\nexport const WikifolioOgChartImage = ({\n wikifolioId,\n ratio = 16 / 9,\n shortDescription,\n loading,\n onError,\n ...aspectRatioProps\n}: IWikifolioOgChartImageProps) => {\n const { t } = useTranslation(\"common\");\n\n const onErrorHandle = () => onError && onError();\n\n return (\n \n \n \n \n \n );\n};\n","import { Icon } from \"@chakra-ui/react\";\nimport { TIconComponent } from \"./icon-component.types\";\n\nexport const IconFilter: TIconComponent = props => (\n \n \n \n \n \n \n \n \n);\n","import { Icon } from \"@chakra-ui/react\";\nimport { TIconComponent } from \"./icon-component.types\";\n\nexport const IconDownload: TIconComponent = props => (\n \n \n \n \n \n \n);\n","import { Icon } from \"@chakra-ui/react\";\nimport { TIconComponent } from \"./icon-component.types\";\n\nexport const SortAsc: TIconComponent = props => (\n \n \n \n \n \n \n \n \n);\n","import { Icon } from \"@chakra-ui/react\";\nimport { TIconComponent } from \"./icon-component.types\";\n\nexport const SortDesc: TIconComponent = props => (\n \n \n \n \n \n \n \n \n);\n","import { ReactElement, RefObject, useRef } from \"react\";\nimport { AlertDialog, AlertDialogOverlay, AlertDialogContent, AlertDialogHeader, AlertDialogBody, AlertDialogFooter, Stack } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { Button, ButtonProps } from \"src/components/base/button\";\n\nexport interface IWfAlertDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onConfirm: () => void;\n confirmButtonText: string;\n cancelButtonText?: string;\n confirmButtonProps?: Omit;\n header: string;\n body: string | ReactElement;\n wikifolioShortDescription?: string;\n finalFocusRef?: RefObject;\n}\n\nexport const WfAlertDialog = ({\n onClose,\n onConfirm,\n isOpen,\n confirmButtonText,\n cancelButtonText,\n confirmButtonProps,\n header,\n body,\n wikifolioShortDescription,\n finalFocusRef,\n}: IWfAlertDialogProps) => {\n const { t } = useTranslation(\"common\");\n const cancelRef = useRef(null);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n \n \n \n {header}\n {body}\n \n \n \n \n \n \n \n \n \n );\n};\n","import { IRankingData } from \"src/components/common/ranking/types\";\nimport { MAX_ATTEMPTS, RETRY_DELAY_MS } from \"src/consts/retry\";\nimport { API_DOWNLOAD_URL, API_SEARCH_URL } from \"src/consts/urls\";\nimport { useMutation } from \"src/hooks/react-query/use-mutation\";\nimport { ISortDirectionType, IUser } from \"src/types/common\";\n\nexport enum EnumLeverageProductsIndication {\n AllWikifolios = 0,\n WikifoliosWithLeverageProducts = 1,\n WikifoliosWithoutLeverageProducts = 2,\n}\n\nexport interface IExtendedSearchItem {\n wikifolioId: string;\n symbol: string;\n wikifolioShortDescription: string;\n trader: Pick;\n rankings: IRankingData[];\n isOnWatchlist?: boolean;\n isInvestable?: boolean;\n}\n\nexport interface IExtendedSearchResponse {\n totalResults: number;\n results: IExtendedSearchItem[];\n}\n\nexport interface IKeyFiguresRequest {\n id: string;\n min?: number;\n max?: number;\n}\n\nexport interface ISearchRequestParams {\n query?: string;\n country: string;\n sortDirection?: ISortDirectionType;\n sortByRankingId?: string | null;\n offset?: number;\n tagsIds?: readonly string[];\n brokersIds?: readonly string[];\n keyFigures?: readonly IKeyFiguresRequest[];\n isInvestable?: boolean;\n isAtInvestable?: boolean;\n isChInvestable?: boolean;\n leverageProductsIndication: EnumLeverageProductsIndication;\n}\n\nexport function useExtendedSearchMutation() {\n const { mutatePromise } = useMutation(API_SEARCH_URL, {\n retry: MAX_ATTEMPTS,\n retryDelay: RETRY_DELAY_MS,\n });\n\n return mutatePromise;\n}\n\nexport function useExtendedSearchDownloadMutation() {\n const { mutatePromise } = useMutation(API_DOWNLOAD_URL, { accept: \"text/csv\" });\n return mutatePromise;\n}\n","import { IconButton } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { ButtonProps } from \"src/components/base/button/button\";\nimport { SortAsc, SortDesc } from \"src/components/icons\";\nimport { ISortDirectionType } from \"src/types/common\";\n\nexport enum EnumSortDirection {\n PointingUp = 0,\n PointingDown = 1,\n}\n\nexport interface ISortDirectionButton extends ButtonProps {\n sortDirection: ISortDirectionType;\n onClick: () => void;\n}\n\nexport const SortDirectionButton = ({ sortDirection, isDisabled, onClick }: ISortDirectionButton) => {\n const { t } = useTranslation(\"extended-search\");\n\n return (\n : }\n size=\"md\"\n colorScheme=\"gray\"\n fill={isDisabled ? \"gray.200\" : \"gray.800\"}\n aria-label={sortDirection === EnumSortDirection.PointingUp ? t(\"labels.sort-ascending\") : t(\"labels.sort-descending\")}\n isDisabled={isDisabled}\n />\n );\n};\n","export const NUMBER_OF_LEVERAGE_PRODUCT_OPTIONS = 1;\nexport const SAVINGS_PLAN_TAG = \"savings-plan\";\nexport const REAL_MONEY_TAG = \"real-money\";\n\n// This tag ids come in hand with isInvestable switch\nexport const TAG_IDS_IS_INVESTABLE = [SAVINGS_PLAN_TAG, REAL_MONEY_TAG];\n","import { proxy, useSnapshot } from \"valtio\";\nimport { EnumLeverageProductsIndication } from \"src/api/client/extended-search.api\";\nimport { IKeyFigureValue, ISelectedRanking, ITagValue } from \"src/components/pages/search/components/types\";\nimport { ISortDirectionType } from \"src/types/common\";\n\nexport type ISearchStore = typeof searchStore;\n\nexport const searchStore = proxy({\n query: \"\",\n keyFigures: [] as ReadonlyArray,\n tags: [] as ReadonlyArray,\n selectedRanking: {} as ISelectedRanking,\n sortDirection: null as ISortDirectionType,\n brokersIds: [] as ReadonlyArray,\n isInvestable: true,\n isAtInvestable: true,\n isChInvestable: true,\n leverageProductsIndication: EnumLeverageProductsIndication.AllWikifolios,\n});\n\nexport function useSearchStore() {\n return useSnapshot(searchStore);\n}\n","import { IKeyFigure, ITags, IFilterTag } from \"src/api/server/extended-search\";\nimport { IKeyFigureValue, ITagValue } from \"src/components/pages/search/components/types\";\nimport { REAL_MONEY_TAG, SAVINGS_PLAN_TAG } from \"src/components/pages/search/constants\";\nimport { ISearchRequestParamsOmitCountry } from \"src/components/pages/search/search.types\";\nimport { searchStore } from \"src/components/pages/search/store/search-store\";\n\nexport const getShouldSetIsInvestable = ({ newSelectedTags, isInvestable }: { newSelectedTags: ITagValue[]; isInvestable: boolean }) =>\n newSelectedTags.some(tag => tag.value === SAVINGS_PLAN_TAG) || (newSelectedTags.some(tag => tag.value === REAL_MONEY_TAG) && !isInvestable);\n\nexport const isKeyFigureValueDefault = (keyFigure: IKeyFigureValue, keyFiguresData: readonly IKeyFigure[]) => {\n const keyFigureDefaultValue = keyFiguresData.find(keyFigureValue => keyFigureValue.id === keyFigure.id);\n\n if (keyFigureDefaultValue) {\n const defaultKeyFigureMinimum = keyFigureDefaultValue.steps[0];\n const defaultKeyFigureMaximum = keyFigureDefaultValue.steps[keyFigureDefaultValue.steps.length - 1];\n return keyFigure.min === defaultKeyFigureMinimum && keyFigure.max === defaultKeyFigureMaximum;\n } else {\n return false;\n }\n};\n\nexport const getMappedStore = (store: typeof searchStore): ISearchRequestParamsOmitCountry => ({\n sortDirection: store.sortDirection,\n sortByRankingId: store.selectedRanking.id,\n brokersIds: store.brokersIds,\n tagsIds: store.tags.map(tag => tag.value),\n keyFigures: store.keyFigures,\n query: store.query,\n isInvestable: store.isInvestable,\n isAtInvestable: store.isAtInvestable,\n isChInvestable: store.isChInvestable,\n leverageProductsIndication: store.leverageProductsIndication,\n});\n\nconst getTagGroupName = (tagsData: ITags, value: string) =>\n Object.keys(tagsData).find(key => tagsData[key as keyof ITags].tags.some((tag: IFilterTag) => tag.urlIdentifier === value));\n\nconst getSelectedTagIdFromGroup = (groupTags: IFilterTag[], selectedTags: ReadonlyArray) => {\n const selectedIds = selectedTags.map(tag => tag.value);\n return groupTags.filter((tag: IFilterTag) => selectedIds.includes(tag.urlIdentifier))[0]?.urlIdentifier;\n};\n\nexport const getNewSelectedTags = (isChecked: boolean, value: string, isPopular: boolean, tags: ITags, selectedTags: ReadonlyArray) => {\n if (isChecked) {\n const tagGroupName = getTagGroupName(tags, value);\n const isMutuallyExclusive = tagGroupName && tags[tagGroupName as keyof ITags].isMutuallyExclusive;\n const selectedTagIdFromGroup = tagGroupName && getSelectedTagIdFromGroup(tags[tagGroupName as keyof ITags].tags, selectedTags);\n let updatedTags = selectedTags;\n\n if (isMutuallyExclusive && selectedTagIdFromGroup) {\n updatedTags = searchStore.tags.filter(tag => tag.value !== selectedTagIdFromGroup);\n }\n return [...updatedTags, { value, isPopular }];\n } else {\n return selectedTags.filter(tag => tag.value !== value);\n }\n};\n\nexport const isPopularSavingsPlanTagSelected = (tags: readonly ITagValue[]) => tags.some(tag => tag.isPopular && tag.value === SAVINGS_PLAN_TAG);\n","import { EnumLeverageProductsIndication } from \"src/api/client/extended-search.api\";\nimport { IKeyFigure, ITags } from \"src/api/server/extended-search\";\nimport { EnumSortDirection } from \"src/components/pages/search/components/sort-direction-button/sort-direction-button\";\nimport { IKeyFigureValue, ISelectedRanking, ITagValue } from \"src/components/pages/search/components/types\";\nimport { SAVINGS_PLAN_TAG, TAG_IDS_IS_INVESTABLE } from \"src/components/pages/search/constants\";\nimport { ISearch, ISearchRequestParamsOmitCountry } from \"src/components/pages/search/search.types\";\nimport { ISearchStore, searchStore } from \"src/components/pages/search/store/search-store\";\nimport {\n getMappedStore,\n getShouldSetIsInvestable,\n isKeyFigureValueDefault,\n getNewSelectedTags,\n isPopularSavingsPlanTagSelected,\n} from \"src/components/pages/search/store/utils\";\nimport { ICountry } from \"src/consts/locale\";\nimport { ISortDirectionType } from \"src/types/common\";\nimport { EnumCountryKey } from \"src/types/common-enum\";\n\ntype IDefaultPropsOnReset = {\n sortDirection: ISortDirectionType;\n selectedRanking: ISelectedRanking;\n country: string;\n};\n\nconst setKeyFigures = (newKeyFigures: Array) => {\n searchStore.keyFigures = newKeyFigures;\n};\n\nconst setTags = (newTagIds: Array) => {\n searchStore.tags = newTagIds;\n};\n\nconst setIsInvestable = (value: boolean) => {\n searchStore.isInvestable = value;\n};\n\nconst setIsAtInvestable = (value: boolean) => {\n searchStore.isAtInvestable = value;\n};\n\nconst setIsChInvestable = (value: boolean) => {\n searchStore.isChInvestable = value;\n};\n\nexport const setQuery = (value: string) => {\n searchStore.query = value;\n};\n\nconst setSortDirection = (value: ISortDirectionType) => {\n searchStore.sortDirection = value;\n};\n\nconst setSelectedRanking = (value: ISelectedRanking) => {\n searchStore.selectedRanking = value;\n};\n\nconst setBrokersIds = (newBrokersIds: Array) => {\n searchStore.brokersIds = newBrokersIds;\n};\n\nconst setLeverageProductsIndication = (leverageProductsIndication: EnumLeverageProductsIndication) => {\n searchStore.leverageProductsIndication = leverageProductsIndication;\n};\n\nconst resetStore = ({ selectedRanking, sortDirection, country }: IDefaultPropsOnReset) => {\n searchStore.query = \"\";\n searchStore.selectedRanking = selectedRanking;\n searchStore.sortDirection = sortDirection;\n searchStore.keyFigures = [];\n searchStore.tags = [];\n searchStore.brokersIds = [];\n searchStore.isInvestable = country !== EnumCountryKey.INT;\n searchStore.isAtInvestable = country === EnumCountryKey.AT;\n searchStore.isChInvestable = country === EnumCountryKey.CH;\n searchStore.leverageProductsIndication = EnumLeverageProductsIndication.AllWikifolios;\n};\n\ninterface IHandleTags extends ISearch {\n isChecked: boolean;\n value: string;\n isPopular: boolean;\n tagsData: ITags;\n}\n\nexport const handleTags = ({ isChecked, value, isPopular, tagsData, onSearch }: IHandleTags) => {\n const shouldResetBrokersIds = SAVINGS_PLAN_TAG === value && isChecked === false;\n\n const newSelectedTags = getNewSelectedTags(isChecked, value, isPopular, tagsData, searchStore.tags);\n const shouldIsInvestableBeSet = getShouldSetIsInvestable({ newSelectedTags, isInvestable: searchStore.isInvestable });\n shouldIsInvestableBeSet && setIsInvestable(true);\n shouldResetBrokersIds && setBrokersIds([]);\n\n setTags(newSelectedTags);\n\n onSearch(getMappedStore(searchStore));\n};\n\nexport const handleResetTags = (onSearch: (params: ISearchRequestParamsOmitCountry) => void) => {\n if (searchStore.tags.length) {\n setTags([]);\n setBrokersIds([]);\n\n onSearch(getMappedStore(searchStore));\n }\n};\n\ninterface IHandleKeyFigureChange extends ISearch {\n newKeyFigureValue: IKeyFigureValue;\n keyFiguresData: ReadonlyArray;\n}\n\nexport const handleKeyFigureChange = ({ newKeyFigureValue, onSearch, keyFiguresData }: IHandleKeyFigureChange) => {\n const valueOfNewKeyFigureInStore = searchStore.keyFigures.find(keyFigure => keyFigure.id === newKeyFigureValue.id);\n\n if (isKeyFigureValueDefault(newKeyFigureValue, keyFiguresData) && valueOfNewKeyFigureInStore === undefined) {\n return;\n }\n\n if (isKeyFigureValueDefault(newKeyFigureValue, keyFiguresData)) {\n const newKeyFigures = [...searchStore.keyFigures].filter(keyFigure => keyFigure.id !== newKeyFigureValue.id);\n\n setKeyFigures(newKeyFigures);\n onSearch(getMappedStore(searchStore));\n } else {\n const keyFigureDefaultValue = keyFiguresData.find(keyFigureValue => keyFigureValue.id === newKeyFigureValue.id);\n if (keyFigureDefaultValue) {\n const defaultKeyFigureMinimum = keyFigureDefaultValue?.steps[0];\n const defaultKeyFigureMaximum = keyFigureDefaultValue?.steps.at(-1);\n newKeyFigureValue.min = newKeyFigureValue.min !== defaultKeyFigureMinimum ? newKeyFigureValue.min : undefined;\n newKeyFigureValue.max = newKeyFigureValue.max !== defaultKeyFigureMaximum ? newKeyFigureValue.max : undefined;\n }\n\n const doesNewKeyFigureValueExistInStore = valueOfNewKeyFigureInStore !== undefined;\n if (doesNewKeyFigureValueExistInStore) {\n const isNewValueSameAsInStore =\n newKeyFigureValue.max === valueOfNewKeyFigureInStore.max && newKeyFigureValue.min === valueOfNewKeyFigureInStore.min;\n if (!isNewValueSameAsInStore) {\n const newKeyFigures = [...searchStore.keyFigures];\n const indexOfNewKeyFigure = newKeyFigures.findIndex(keyFigure => keyFigure.id === newKeyFigureValue.id);\n newKeyFigures[indexOfNewKeyFigure] = newKeyFigureValue;\n\n setKeyFigures(newKeyFigures);\n onSearch(getMappedStore(searchStore));\n }\n } else {\n setKeyFigures([...searchStore.keyFigures, newKeyFigureValue]);\n onSearch(getMappedStore(searchStore));\n }\n }\n};\n\nexport const handleResetKeyFigures = (onSearch: (params: ISearchRequestParamsOmitCountry) => void) => {\n setKeyFigures([]);\n onSearch(getMappedStore(searchStore));\n};\n\ninterface IHandleInvestable extends ISearch {\n isChecked: boolean;\n}\nexport const handleIsInvestable = ({ isChecked, onSearch }: IHandleInvestable) => {\n const newTags = searchStore.tags.filter(tag => TAG_IDS_IS_INVESTABLE.every(tagId => tagId !== tag.value));\n\n if (!isChecked) {\n setTags(newTags);\n setBrokersIds([]);\n setIsAtInvestable(false);\n setIsChInvestable(false);\n }\n\n setIsInvestable(isChecked);\n\n onSearch(getMappedStore(searchStore));\n};\n\nexport const handleIsInvestableInCountry = ({ isChecked, country, onSearch }: IHandleInvestable & { country: ICountry }) => {\n switch (country) {\n case EnumCountryKey.AT:\n if (isChecked) {\n setIsInvestable(true);\n }\n setIsAtInvestable(isChecked);\n onSearch(getMappedStore(searchStore));\n break;\n\n case EnumCountryKey.CH:\n setIsChInvestable(isChecked);\n\n if (isChecked) {\n setIsInvestable(true);\n }\n onSearch(getMappedStore(searchStore));\n break;\n }\n};\n\ninterface IHandleBrokersIds extends ISearch {\n isChecked: boolean;\n brokerId: string;\n}\nexport const handleBrokersIds = ({ isChecked, brokerId, onSearch }: IHandleBrokersIds) => {\n const selectedBrokersIds = isChecked ? [...searchStore.brokersIds, brokerId] : searchStore.brokersIds.filter(id => id !== brokerId);\n setBrokersIds(selectedBrokersIds);\n\n onSearch(getMappedStore(searchStore));\n};\n\ninterface IHandleResetSearch extends ISearch {\n sortDirection: ISortDirectionType;\n selectedRanking: ISelectedRanking;\n country: string;\n}\n\nexport const handleResetSearch = ({ sortDirection, selectedRanking, country, onSearch }: IHandleResetSearch) => {\n resetStore({ sortDirection, selectedRanking, country });\n onSearch(getMappedStore(searchStore));\n};\n\ninterface IHandleSearchInputField extends ISearch {\n relevanceRanking: ISelectedRanking;\n}\nexport const handleSearchInputField = ({ relevanceRanking, onSearch }: IHandleSearchInputField) => {\n setSortDirection(relevanceRanking.sortDirection);\n setSelectedRanking(relevanceRanking);\n\n onSearch(getMappedStore(searchStore));\n};\n\nexport const handleSortDirection = ({ onSearch }: ISearch) => {\n const sortDirection =\n searchStore.sortDirection === EnumSortDirection.PointingDown ? EnumSortDirection.PointingUp : EnumSortDirection.PointingDown;\n setSortDirection(sortDirection);\n\n onSearch(getMappedStore(searchStore));\n};\n\ninterface ISortingChange extends ISearch {\n sortByRankingId: string | null;\n sortDirection: ISortDirectionType;\n}\nexport const handleSortingChange = ({ sortByRankingId, sortDirection, onSearch }: ISortingChange) => {\n if (sortByRankingId === searchStore.selectedRanking?.id) {\n return;\n }\n\n setSortDirection(sortByRankingId === null ? null : sortDirection);\n setSelectedRanking({ id: sortByRankingId, sortDirection });\n\n onSearch(getMappedStore(searchStore));\n};\ninterface IHandleLeverageProducts extends ISearch {\n leverageProductsIndication: EnumLeverageProductsIndication;\n}\nexport const handleLeverageProducts = ({ leverageProductsIndication, onSearch }: IHandleLeverageProducts) => {\n setLeverageProductsIndication(leverageProductsIndication);\n onSearch(getMappedStore(searchStore));\n};\n\nexport const handleResetPopularFilters = ({ onSearch }: ISearch) => {\n if (isPopularSavingsPlanTagSelected(searchStore.tags)) {\n setBrokersIds([]);\n setIsInvestable(true);\n }\n\n setKeyFigures(searchStore.keyFigures.filter(keyFigure => !keyFigure.isPopular));\n setTags(searchStore.tags.filter(tag => !tag.isPopular));\n setLeverageProductsIndication(EnumLeverageProductsIndication.AllWikifolios);\n\n onSearch(getMappedStore(searchStore));\n};\n\nexport const handleSearch = ({ onSearch }: ISearch) => {\n onSearch(getMappedStore(searchStore));\n};\n\nexport const setDefaultFilters = (ranking: ISelectedRanking, country: string) => {\n setSelectedRanking(ranking);\n setSortDirection(ranking.sortDirection);\n setLeverageProductsIndication(EnumLeverageProductsIndication.AllWikifolios);\n setIsInvestable(country === EnumCountryKey.INT ? false : true);\n switch (country) {\n case EnumCountryKey.AT:\n setIsChInvestable(false);\n break;\n case EnumCountryKey.CH:\n setIsAtInvestable(false);\n break;\n default:\n setIsChInvestable(false);\n setIsAtInvestable(false);\n break;\n }\n};\n\nexport const setNewSearchStoreValues = (newSearchStore: ISearchStore) => {\n Object.assign(searchStore, newSearchStore);\n};\n","import { FormEvent } from \"react\";\nimport { FormControl, FormLabel, FormControlProps } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { Switch } from \"src/components/common/switch/switch\";\nimport { EnumCountryKey } from \"src/types/common-enum\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport { ISearch } from \"../search.types\";\nimport { handleIsInvestableInCountry } from \"../store/actions\";\nimport { useSearchStore } from \"../store/search-store\";\n\ninterface IProps extends ISearch {\n size?: string;\n trackHeight?: string;\n styles?: FormControlProps;\n}\n\nexport const InvestableInCountrySwitch = ({ onSearch, size, styles }: IProps) => {\n const { country } = useRouterLocale();\n const { isAtInvestable, isChInvestable } = useSearchStore();\n const { t } = useTranslation(\"extended-search\");\n\n const onChange = (event: FormEvent) => {\n const isChecked = event.currentTarget.checked;\n handleIsInvestableInCountry({ isChecked, country, onSearch });\n };\n\n switch (country) {\n case EnumCountryKey.AT:\n return (\n \n \n \n {t(\"labels.investable-in-at\")}\n \n \n );\n\n case EnumCountryKey.CH:\n return (\n \n \n \n {t(\"labels.investable-in-ch\")}\n \n \n );\n\n default:\n return null;\n }\n};\n","// eslint-disable-next-line no-restricted-imports\nimport { Button as ButtonChakra, ButtonProps as ButtonPropsChakra, forwardRef } from \"@chakra-ui/react\";\nimport { ButtonSpinner } from \"@chakra-ui/react\";\n\n// Dev-Note: custom button wrapper is needed to override Chakra-UI mechanism which disables button when isLoading is true\n// for more info look at comments here https://wikifolio.atlassian.net/browse/WIKI-31289\nexport const Button = forwardRef(({ ...buttonProps }: ButtonPropsChakra, ref) => {\n const { isLoading, children, ...restButtonProps } = buttonProps;\n\n return (\n \n {isLoading ? : <>{children}}\n \n );\n});\n","import { ReactNode } from \"react\";\nimport { Flex, Text, Badge, AccordionItem, AccordionPanel, AccordionButton, AccordionIcon } from \"@chakra-ui/react\";\n\ninterface IFilterCategoryItemProps {\n children: ReactNode;\n title: string;\n badgeInfo?: string;\n}\nexport const FilterCategoryItem = ({ children, title, badgeInfo }: IFilterCategoryItemProps) => {\n return (\n \n \n \n \n {title}\n \n {badgeInfo && (\n \n {badgeInfo}\n \n )}\n \n \n \n \n {children}\n \n \n );\n};\n","import { ILanguage } from \"src/consts/locale\";\nimport { formatRangeSliderNumber } from \"src/hooks/formatters/number-formatter\";\n\nexport const getNumberFromInputString = (value: string, thousandSeparator: string) =>\n parseFloat(value.replaceAll(thousandSeparator, \"\").replace(\",\", \".\"));\n\nexport const getInputValueFromRange = (language: ILanguage, rangeValue: number, steps: number[], showPositiveLeadingSign: boolean) =>\n formatRangeSliderNumber({ language, value: steps[rangeValue], showPositiveLeadingSign });\n\nexport const getRangeIndexFromInput = (inputValue: number, steps: number[]) => {\n const closestStep = steps.reduce((a, b) => (Math.abs(b - inputValue) < Math.abs(a - inputValue) ? b : a));\n return steps.indexOf(closestStep);\n};\n\nconst numberInputRegex = /^[-+]?[0-9.,]*$/;\nexport const isInputValid = (value: string) => numberInputRegex.test(value);\n\nexport const getInputPaddingRight = (language: ILanguage = \"en\", shouldShowPercentageLabel: boolean) => {\n if (shouldShowPercentageLabel) {\n return language === \"de\" ? \"36px\" : 4;\n } else {\n return 2;\n }\n};\n\nexport const shouldNegateInputNumber = (currentInputValue: number, defaultMaxInputValue: number) =>\n !isNaN(currentInputValue) && defaultMaxInputValue <= 0 && currentInputValue > 0;\n","import React, { useState, useEffect, ReactElement, useRef, KeyboardEvent, useMemo, SetStateAction, useCallback, memo } from \"react\";\nimport {\n Input,\n InputGroup,\n InputRightElement,\n Text,\n RangeSlider,\n RangeSliderTrack,\n RangeSliderFilledTrack,\n RangeSliderThumb,\n Grid,\n GridItem,\n RangeSliderMark,\n} from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { KEY_ENTER } from \"src/consts/keyboard\";\nimport { ILanguage } from \"src/consts/locale\";\nimport { formatRangeSliderNumber } from \"src/hooks/formatters/number-formatter\";\nimport { NonEmptyArray } from \"src/types/common\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport {\n getRangeIndexFromInput,\n getInputValueFromRange,\n getInputPaddingRight,\n getNumberFromInputString,\n isInputValid,\n shouldNegateInputNumber,\n} from \"./range-slider-utils\";\n\nconst STEP = 1;\nconst KEY_FIGURE_TEST_ID = \"key-figure\";\n\ninterface IRangeInputProps {\n ariaLabel: string;\n value: string;\n shouldShowPercentageLabel: boolean;\n language: ILanguage;\n onChange: (value: string) => void;\n onBlur: () => void;\n handleKeyDown: (event: KeyboardEvent, handler: () => void) => void;\n handleOnFocus: () => void;\n}\n\nconst RangeInput = ({ ariaLabel, value, shouldShowPercentageLabel, language, onChange, onBlur, handleKeyDown, handleOnFocus }: IRangeInputProps) => {\n return (\n \n onChange(event.target.value)}\n onBlur={onBlur}\n onKeyDown={event => {\n handleKeyDown(event, onBlur);\n event.stopPropagation();\n }}\n onFocus={handleOnFocus}\n fontSize=\"sm\"\n />\n {shouldShowPercentageLabel && (\n \n %\n \n )}\n \n );\n};\n\nconst Marks = (steps: number[], id: string): ReactElement[] => {\n const marks: ReactElement[] = [];\n\n for (let i = 1; i < steps.length - 1; i++) {\n marks.push();\n }\n\n return marks;\n};\n\nexport interface IRangeSliderWithInputsProps {\n label: string;\n selectedValues: [number?, number?];\n steps: NonEmptyArray;\n showMarks: boolean;\n onChange: (values: [number, number]) => void;\n shouldShowPercentageLabel: boolean;\n showPositiveLeadingSign: boolean;\n}\n\nconst areSelectedInputValuesEqual = (prevProps: IRangeSliderWithInputsProps, nextProps: IRangeSliderWithInputsProps) => {\n return prevProps.selectedValues[0] === nextProps.selectedValues[0] && prevProps.selectedValues[1] === nextProps.selectedValues[1];\n};\n\nconst RangeSliderWithInputs = ({\n label,\n selectedValues,\n steps,\n shouldShowPercentageLabel,\n showMarks,\n showPositiveLeadingSign,\n onChange,\n}: IRangeSliderWithInputsProps) => {\n const { t } = useTranslation(\"date-range\");\n const thousandSeparator = t(\"thousand-separator\");\n const { language } = useRouterLocale();\n const minText = \"min.\";\n const maxText = \"max.\";\n\n const firstRangeStepIndex = 0;\n const lastRangeStepIndex = steps.length - 1;\n const firstRangeStep = steps[firstRangeStepIndex];\n const lastRangeStep = steps[lastRangeStepIndex];\n\n const defaultMinValue = selectedValues[0] ?? firstRangeStep;\n const defaultMaxValue = selectedValues[1] ?? lastRangeStep;\n\n const defaultMinRangeIndex = getRangeIndexFromInput(defaultMinValue, steps);\n const defaultMaxRangeIndex = getRangeIndexFromInput(defaultMaxValue, steps);\n\n const [inputValue, setInputValue] = useState<[string, string]>([minText, maxText]);\n\n const rowRef = useRef(null);\n // DEV-Note: Using keyboard leads to a later calling of onChangeEnd with the last values on every re-render of the component.\n // Track the focus and blur state before calling onChangeEnd callback.\n const isChangingRangeValueRef = useRef(true);\n\n const [rangeIndex, setRangeIndex] = useState<[number, number]>([defaultMinRangeIndex, defaultMaxRangeIndex]);\n\n const marks = useMemo(() => Marks(steps, label), [label, steps]);\n\n const getMinValue = useCallback(\n (value: string) => (value === minText || value === \"\" ? firstRangeStep : getNumberFromInputString(value, thousandSeparator)),\n [firstRangeStep, thousandSeparator]\n );\n const getMaxValue = useCallback(\n (value: string) => (value === maxText || value === \"\" ? lastRangeStep : getNumberFromInputString(value, thousandSeparator)),\n [lastRangeStep, thousandSeparator]\n );\n const setMinValueFromRange = useCallback(\n (value: number) => (value === firstRangeStepIndex ? minText : getInputValueFromRange(language, value, steps, showPositiveLeadingSign)),\n [language, showPositiveLeadingSign, steps]\n );\n const setMaxValueFromRange = useCallback(\n (value: number) => (value === lastRangeStepIndex ? maxText : getInputValueFromRange(language, value, steps, showPositiveLeadingSign)),\n [language, lastRangeStepIndex, showPositiveLeadingSign, steps]\n );\n const isInputValueEqualMinDefaultTextValue = () => inputValue[0] === minText;\n const isInputValueEqualMaxDefaultTextValue = () => inputValue[1] === maxText;\n\n useEffect(() => {\n setInputValue([\n defaultMinValue === firstRangeStep ? minText : formatRangeSliderNumber({ language, value: defaultMinValue, showPositiveLeadingSign }),\n defaultMaxValue === lastRangeStep ? maxText : formatRangeSliderNumber({ language, value: defaultMaxValue, showPositiveLeadingSign }),\n ]);\n setRangeIndex([defaultMinRangeIndex, defaultMaxRangeIndex]);\n }, [\n defaultMaxRangeIndex,\n defaultMaxValue,\n defaultMinRangeIndex,\n defaultMinValue,\n firstRangeStep,\n language,\n lastRangeStep,\n selectedValues,\n showPositiveLeadingSign,\n ]);\n\n const onRangeChange = useCallback(\n (value: [number, number]) => {\n if (rangeIndex[0] !== value[0] && value[0] < value[1]) {\n setRangeIndex(value);\n setInputValue(prev => [setMinValueFromRange(value[0]), prev[1]]);\n } else if (rangeIndex[1] !== value[1] && value[1] > value[0]) {\n setRangeIndex(value);\n setInputValue(prev => [prev[0], setMaxValueFromRange(value[1])]);\n }\n },\n [rangeIndex, setMaxValueFromRange, setMinValueFromRange]\n );\n\n const onRangeChangeEnd = useCallback(() => {\n if (isChangingRangeValueRef.current) {\n onChange([getMinValue(inputValue[0]), getMaxValue(inputValue[1])]);\n }\n }, [getMaxValue, getMinValue, inputValue, onChange]);\n\n const onMinInputChange = (value: string) => {\n if (isInputValid(value)) {\n setInputValue([value, inputValue[1]]);\n }\n };\n\n const onMaxInputChange = (value: string) => {\n if (isInputValid(value)) {\n setInputValue([inputValue[0], value]);\n }\n };\n\n const handleMinInputBlur = () => {\n let minValue = getMinValue(inputValue[0]);\n const maxValue = getMaxValue(inputValue[1]);\n let minRangeIndex;\n let minInputValue;\n\n if (shouldNegateInputNumber(maxValue, defaultMaxValue)) {\n minValue *= -1;\n }\n\n if (minValue < maxValue && minValue > firstRangeStep) {\n minRangeIndex = getRangeIndexFromInput(minValue, steps);\n minInputValue = formatRangeSliderNumber({ language, value: minValue, showPositiveLeadingSign });\n onChange([minValue, maxValue]);\n } else {\n minRangeIndex = firstRangeStepIndex;\n minInputValue = minText;\n onChange([firstRangeStep, maxValue]);\n }\n\n setRangeIndex([minRangeIndex, rangeIndex[1]]);\n setInputValue([minInputValue, inputValue[1]]);\n };\n\n const handleMaxInputBlur = () => {\n const minValue = getMinValue(inputValue[0]);\n let maxValue = getMaxValue(inputValue[1]);\n let maxRangeIndex;\n let maxInputValue;\n\n if (shouldNegateInputNumber(maxValue, defaultMaxValue)) {\n maxValue *= -1;\n }\n\n if (maxValue > minValue && maxValue < lastRangeStep) {\n maxRangeIndex = getRangeIndexFromInput(maxValue, steps);\n maxInputValue = formatRangeSliderNumber({ language, value: maxValue, showPositiveLeadingSign });\n onChange([minValue, maxValue]);\n } else {\n maxRangeIndex = lastRangeStepIndex;\n maxInputValue = maxText;\n onChange([minValue, lastRangeStep]);\n }\n\n setRangeIndex([rangeIndex[0], maxRangeIndex]);\n setInputValue([inputValue[0], maxInputValue]);\n };\n\n const handleKeyDown = (event: KeyboardEvent, enterHandler: () => void) => {\n if (event.key === KEY_ENTER) {\n enterHandler();\n rowRef.current?.focus();\n }\n };\n\n const handleInputValue = (validateInput: () => boolean, newInputValue: SetStateAction<[string, string]>) => {\n if (validateInput()) {\n setInputValue(newInputValue);\n }\n };\n\n const onThumbFocus = () => {\n isChangingRangeValueRef.current = true;\n };\n\n const onThumbBlur = () => {\n isChangingRangeValueRef.current = false;\n };\n\n return (\n \n \n {label}\n \n \n handleInputValue(isInputValueEqualMinDefaultTextValue, [\"\", inputValue[1]])}\n />\n \n \n \n \n \n {showMarks && marks}\n \n \n \n \n \n \n handleInputValue(isInputValueEqualMaxDefaultTextValue, [inputValue[0], \"\"])}\n />\n \n \n \n );\n};\n\nexport const MemoizedRangeSliderWithInputs = memo(RangeSliderWithInputs, areSelectedInputValuesEqual);\n","import { BoxProps } from \"@chakra-ui/react\";\nimport { IKeyFigure } from \"src/api/server/extended-search\";\nimport { MemoizedRangeSliderWithInputs } from \"src/components/common/range-slider/range-slider-with-inputs\";\nimport { IKeyFigureValue } from \"src/components/pages/search/components/types\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { handleKeyFigureChange } from \"src/components/pages/search/store/actions\";\nimport { useSearchStore } from \"src/components/pages/search/store/search-store\";\n\ninterface IRangeSliderListProps extends ISearch, BoxProps {\n keyFiguresData: ReadonlyArray;\n}\n\nexport const RangeSliderList = ({ keyFiguresData, onSearch }: IRangeSliderListProps) => {\n const { keyFigures: storeKeyFigures } = useSearchStore();\n\n const handleChange = (keyFigure: IKeyFigureValue) => {\n handleKeyFigureChange({\n newKeyFigureValue: keyFigure,\n onSearch,\n keyFiguresData,\n });\n };\n\n return (\n <>\n {keyFiguresData.map(({ steps, id, isUnitOfMeasurementPercentage, showPositiveLeadingSign, label, isPopular }) => {\n const min = steps[0];\n const max = steps[steps.length - 1];\n\n const selectedKeyFigure = storeKeyFigures.find(storeKeyFigure => storeKeyFigure.id === id);\n const selectedValues = selectedKeyFigure ? [selectedKeyFigure.min, selectedKeyFigure.max] : [min, max];\n\n return (\n handleChange({ id, min: minMax[0], max: minMax[1], isPopular })}\n showMarks\n shouldShowPercentageLabel={isUnitOfMeasurementPercentage}\n showPositiveLeadingSign={showPositiveLeadingSign}\n />\n );\n })}\n \n );\n};\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport { IKeyFigureGroup } from \"src/api/server/extended-search\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { RangeSliderList } from \"src/components/pages/search/components/key-figures-filter/components/range-slider-list\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\n\ninterface IKeyFiguresGroup extends ISearch, BoxProps {\n keyFiguresGroup: IKeyFigureGroup;\n}\n\nexport const KeyFiguresGroup = ({ keyFiguresGroup, onSearch, ...boxProps }: IKeyFiguresGroup) => {\n return (\n \n {keyFiguresGroup.headline && (\n \n {keyFiguresGroup.headline}\n \n )}\n \n \n );\n};\n","import { useTranslation } from \"next-i18next\";\nimport { IKeyFigureGroup } from \"src/api/server/extended-search\";\nimport { FilterCategoryItem } from \"src/components/pages/search/components/filter-section/filter-category-item\";\nimport { KeyFiguresGroup } from \"src/components/pages/search/components/key-figures-filter/components/key-figures-group\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\n\ninterface IKeyFiguresFilter extends ISearch {\n keyFiguresGroups: ReadonlyArray;\n numberOfSelectedKeyFigures: number;\n}\n\nexport const KeyFiguresFilter = ({ keyFiguresGroups, numberOfSelectedKeyFigures, onSearch }: IKeyFiguresFilter) => {\n const { t } = useTranslation(\"extended-search\");\n const totalNumberOfKeyFigures = keyFiguresGroups.reduce((acc, keyFigureGroup) => acc + keyFigureGroup.keyFigures.length, 0);\n\n return (\n \n {keyFiguresGroups.map((keyFiguresGroup, index) => (\n \n ))}\n \n );\n};\n","// import { KeyboardEventHandler } from \"react\";\nimport { chakra, useCheckbox, UseCheckboxProps, useStyleConfig, StyleProps } from \"@chakra-ui/react\";\nimport type { SystemStyleObject } from \"@chakra-ui/theme-tools\";\nimport { EnumTagColor } from \"src/types/common-enum\";\n\nconst FILTER_TAG_CHECKBOX_TEST_ID = \"filter-tag-checkbox\";\n\nexport type IFilterTagCheckbox = {\n readonly label: string;\n color: Readonly;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n};\n\n/**\n * Checkbox with button like styles\n */\nexport const FilterTagCheckbox = ({ color, label, onKeyDown, ...props }: IFilterTagCheckbox & UseCheckboxProps) => {\n const { state, getInputProps } = useCheckbox(props);\n // Artificially added the _hover property to the type. Without it there is the following error reported:\n // '_hover' does not exist on type 'SystemStyleObject'. This is a known issue tracked here https://github.com/chakra-ui/chakra-ui/issues/6261.\n const buttonStyles = useStyleConfig(\"Button\", { variant: \"outline\", size: \"xs\", colorScheme: color }) as SystemStyleObject & {\n _hover: StyleProps;\n };\n\n return (\n \n \n {label}\n \n );\n};\n","import { UseCheckboxGroupReturn } from \"@chakra-ui/react\";\nimport { IFilterTag } from \"src/api/server/extended-search\";\nimport { IChangeFilterTag } from \"src/components/pages/search/components/types\";\nimport { useSearchStore } from \"src/components/pages/search/store/search-store\";\nimport { KEY_ENTER, KEY_SPACE } from \"src/consts/keyboard\";\nimport { EnumTagColor } from \"src/types/common-enum\";\nimport { FilterTagCheckbox } from \"./filter-tag-checkbox/filter-tag-checkbox\";\n\nexport interface ICheckboxList {\n filterTags: IFilterTag[];\n color: EnumTagColor;\n getCheckboxProps: UseCheckboxGroupReturn[\"getCheckboxProps\"];\n onChange: (changeFilterTag: IChangeFilterTag) => void;\n}\n\nexport const CheckboxList = ({ filterTags, color, getCheckboxProps, onChange }: ICheckboxList) => {\n const { tags: selectedTags } = useSearchStore();\n\n const isTagChecked = (tag: IFilterTag) => selectedTags.some(selectedTag => selectedTag.value === tag.urlIdentifier);\n\n const handleKeyDown = (event: React.KeyboardEvent, tag: IFilterTag) => {\n if (event.key === KEY_SPACE || event.key === KEY_ENTER) {\n event.preventDefault();\n onChange({\n isChecked: !isTagChecked(tag),\n value: tag.urlIdentifier as string,\n isPopular: tag.isPopular,\n });\n }\n };\n\n return (\n <>\n {filterTags.map((tag: IFilterTag) => (\n \n onChange({\n isChecked: event.target.checked,\n value: tag.urlIdentifier as string,\n isPopular: tag.isPopular,\n })\n }\n onKeyDown={event => handleKeyDown(event, tag)}\n />\n ))}\n \n );\n};\n","import { Flex, useCheckboxGroup } from \"@chakra-ui/react\";\nimport { ITags } from \"src/api/server/extended-search\";\nimport { CheckboxList } from \"src/components/pages/search/components/tags-filter/components/checkbox-list\";\nimport { IChangeFilterTag } from \"src/components/pages/search/components/types\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { handleTags } from \"src/components/pages/search/store/actions\";\nimport { EnumTagColor } from \"src/types/common-enum\";\n\ninterface ITagsList extends ISearch {\n tags: ITags;\n onClick?: (isChecked: boolean, value: string) => void;\n}\n\nexport const TagsList = ({ tags, onSearch, onClick }: ITagsList) => {\n const { getCheckboxProps } = useCheckboxGroup();\n\n const { basics, tradings, rewards, investmentHorizon, investmentRegion } = tags;\n\n const tagFilters = [\n {\n filterTags: rewards.tags,\n color: EnumTagColor.Green,\n },\n {\n filterTags: tradings.tags,\n color: EnumTagColor.Lilac,\n },\n {\n filterTags: investmentHorizon.tags,\n color: EnumTagColor.Blue,\n },\n {\n filterTags: investmentRegion.tags,\n color: EnumTagColor.Orange,\n },\n {\n filterTags: basics.tags,\n color: EnumTagColor.Gray,\n },\n ];\n\n const onTagChange = ({ isChecked, value, isPopular }: IChangeFilterTag) => {\n onClick?.(isChecked, value);\n handleTags({ isChecked, value, isPopular, tagsData: tags, onSearch });\n };\n\n return (\n \n {tagFilters.map(filter => (\n \n ))}\n \n );\n};\n","import { KeyboardEvent } from \"react\";\nimport { Radio, RadioGroup, Stack } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { EnumLeverageProductsIndication } from \"src/api/client/extended-search.api\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { handleLeverageProducts } from \"src/components/pages/search/store/actions\";\nimport { useSearchStore } from \"src/components/pages/search/store/search-store\";\nimport { KEY_ENTER, KEY_SPACE } from \"src/consts/keyboard\";\n\nexport const LeverageProductsSelection = ({ onSearch }: ISearch) => {\n const { t } = useTranslation(\"extended-search\");\n\n const { leverageProductsIndication } = useSearchStore();\n\n const handleChange = (newIndication: string) => {\n handleLeverageProducts({\n leverageProductsIndication: Number(newIndication),\n onSearch,\n });\n };\n\n const handleKeyDown = (event: KeyboardEvent, newIndication: number) => {\n if (event.key === KEY_SPACE || event.key === KEY_ENTER) {\n event.preventDefault();\n handleChange(newIndication.toString());\n }\n };\n\n return (\n \n \n handleKeyDown(event, EnumLeverageProductsIndication.AllWikifolios)}\n >\n {t(\"all-wikifolios\")}\n \n handleKeyDown(event, EnumLeverageProductsIndication.WikifoliosWithLeverageProducts)}\n >\n {t(\"with-leverage-products\")}\n \n handleKeyDown(event, EnumLeverageProductsIndication.WikifoliosWithoutLeverageProducts)}\n >\n {t(\"without-leverage-products\")}\n \n \n \n );\n};\n","import { Box, Divider } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IKeyFigureGroup, ITags } from \"src/api/server/extended-search\";\nimport { WfHeading } from \"src/components/base/wf-heading\";\nimport { TagsList } from \"src/components/pages/search/components/tags-filter/components/tags-list\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { KeyFiguresGroup } from \"../../key-figures-filter/components/key-figures-group\";\nimport { LeverageProductsSelection } from \"./leverage-products-selection\";\n\ninterface IPopularFiltersContent extends ISearch {\n popularKeyFiguresGroup: IKeyFigureGroup;\n tagsData: ITags;\n}\n\nexport const PopularFiltersContent = ({ popularKeyFiguresGroup, tagsData, onSearch }: IPopularFiltersContent) => {\n const { t } = useTranslation(\"extended-search\");\n\n return (\n <>\n \n \n \n {t(\"filter-title.popular-wikifolio-tags\")}\n \n \n \n \n \n \n {t(\"filter-title.leverage-products\")}\n \n \n \n \n \n );\n};\n","import { EnumLeverageProductsIndication } from \"src/api/client/extended-search.api\";\nimport { useSearchStore } from \"src/components/pages/search/store/search-store\";\n\nexport const usePopularFiltersCounter = () => {\n const { keyFigures, tags, leverageProductsIndication } = useSearchStore();\n\n const numberOfSelectedKeyFigures = keyFigures.filter(keyFigure => keyFigure.isPopular).length;\n const numberOfSelectedTags = tags.filter(tag => tag.isPopular).length;\n const numberOfSelectedLeverageProductIndications =\n leverageProductsIndication === EnumLeverageProductsIndication.WikifoliosWithLeverageProducts ||\n leverageProductsIndication === EnumLeverageProductsIndication.WikifoliosWithoutLeverageProducts\n ? 1\n : 0;\n\n const numberOfSelectedFilters = numberOfSelectedKeyFigures + numberOfSelectedTags + numberOfSelectedLeverageProductIndications;\n\n return numberOfSelectedFilters;\n};\n","import { useTranslation } from \"next-i18next\";\nimport { IKeyFigureGroup, ITags } from \"src/api/server/extended-search\";\nimport { PopularFiltersContent } from \"src/components/pages/search/components/popular-filters/components/popular-filters-content\";\nimport { NUMBER_OF_LEVERAGE_PRODUCT_OPTIONS } from \"src/components/pages/search/constants\";\nimport { usePopularFiltersCounter } from \"src/components/pages/search/hooks/use-popular-filters-counter\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { FilterCategoryItem } from \"../filter-category-item\";\n\ninterface IPopularFilters extends ISearch {\n popularKeyFiguresGroup: IKeyFigureGroup;\n tagsData: ITags;\n}\n\nexport const PopularFilters = ({ popularKeyFiguresGroup, tagsData, onSearch }: IPopularFilters) => {\n const { t } = useTranslation(\"extended-search\");\n\n const numberOfSelectedFilters = usePopularFiltersCounter();\n\n const { basics, tradings, rewards, investmentHorizon, investmentRegion } = tagsData;\n const numberOfPopularFilters =\n popularKeyFiguresGroup.keyFigures.length +\n basics.tags.length +\n tradings.tags.length +\n rewards.tags.length +\n investmentHorizon.tags.length +\n investmentRegion.tags.length +\n NUMBER_OF_LEVERAGE_PRODUCT_OPTIONS;\n\n return (\n \n \n \n );\n};\n","import { Checkbox, CheckboxProps } from \"@chakra-ui/react\";\nimport { Image } from \"@chakra-ui/react\";\nimport { ITagBroker } from \"src/api/server/extended-search\";\nimport { buildUrl } from \"src/utils/responsive-image-util\";\n\nexport type IBrokerOnChangeParams = { isChecked: boolean; brokerId: string };\n\ninterface IBrokerCheckbox extends Omit {\n onChange: (props: IBrokerOnChangeParams) => void;\n isChecked: boolean;\n broker: ITagBroker;\n}\n\nexport const BrokerCheckbox = ({ broker, isChecked, onChange, ...boxProps }: IBrokerCheckbox) => {\n return (\n {\n onChange({ isChecked: event.target.checked, brokerId: broker.brokerId });\n }}\n >\n {broker.partnerName}\n \n );\n};\n","import { BoxProps, Box, HStack, forwardRef } from \"@chakra-ui/react\";\nimport { ITagBroker } from \"src/api/server/extended-search\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { handleBrokersIds } from \"src/components/pages/search/store/actions\";\nimport { useSearchStore } from \"src/components/pages/search/store/search-store\";\nimport { BrokerCheckbox, IBrokerOnChangeParams } from \"./broker-checkbox\";\n\ninterface IBrokersCheckboxList extends ISearch, BoxProps {\n brokers: ITagBroker[];\n}\n\nexport const BrokersCheckboxList = forwardRef(({ brokers, onSearch, ...boxProps }: IBrokersCheckboxList, ref) => {\n const { brokersIds } = useSearchStore();\n\n const onChange = ({ isChecked, brokerId }: IBrokerOnChangeParams) => {\n handleBrokersIds({ isChecked, brokerId, onSearch });\n };\n\n return (\n \n \n {brokers.map(broker => (\n \n ))}\n \n \n );\n});\n","import { useRef } from \"react\";\nimport { Divider, useMediaQuery } from \"@chakra-ui/react\";\nimport { ITagsData } from \"src/api/server/extended-search\";\nimport { BrokersCheckboxList } from \"src/components/pages/search/components/tags-filter/components/brokers-checkbox-list\";\nimport { TagsList } from \"src/components/pages/search/components/tags-filter/components/tags-list\";\nimport { SAVINGS_PLAN_TAG } from \"src/components/pages/search/constants\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { useSearchStore } from \"src/components/pages/search/store/search-store\";\nimport { BREAKPOINTS } from \"src/theme\";\n\ninterface ITagsListWithBrokers extends ISearch {\n tagsData: ITagsData;\n}\n\nexport const TagsListWithBrokers = ({ tagsData, onSearch }: ITagsListWithBrokers) => {\n const { tags: selectedTags } = useSearchStore();\n const showBrokers = selectedTags.some(tag => tag.value === SAVINGS_PLAN_TAG);\n const { tags, brokers } = tagsData;\n\n const brokerListRef = useRef(null);\n const [isMobile] = useMediaQuery(`(max-width: ${BREAKPOINTS.sm})`);\n\n const onTagClick = (isChecked: boolean, value: string) => {\n if (value === SAVINGS_PLAN_TAG && isChecked && isMobile) {\n setTimeout(() => {\n brokerListRef?.current?.scrollIntoView({ behavior: \"smooth\" });\n }, 1000);\n }\n };\n\n return (\n <>\n \n {showBrokers && (\n <>\n \n \n \n )}\n \n );\n};\n","import { useTranslation } from \"next-i18next\";\nimport { ITagsData } from \"src/api/server/extended-search\";\nimport { TagsListWithBrokers } from \"src/components/pages/search/components/tags-filter/components/tags-list-with-brokers\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { FilterCategoryItem } from \"../filter-category-item\";\n\ninterface ITagsFilter extends ISearch {\n tagsData: ITagsData;\n numberOfSelectedTags: number;\n}\n\nexport const TagsFilter = ({ tagsData, numberOfSelectedTags, onSearch }: ITagsFilter) => {\n const { t } = useTranslation(\"extended-search\");\n\n const { basics, tradings, rewards, investmentHorizon, investmentRegion } = tagsData.tags;\n const numbersOfTags =\n basics.tags.length + tradings.tags.length + rewards.tags.length + investmentHorizon.tags.length + investmentRegion.tags.length;\n\n return (\n \n \n \n );\n};\n","import { FormEvent, useCallback, useState, useEffect } from \"react\";\nimport {\n Flex,\n Drawer,\n DrawerHeader,\n DrawerBody,\n DrawerCloseButton,\n DrawerContent,\n DrawerOverlay,\n DrawerFooter,\n // eslint-disable-next-line no-restricted-imports\n Accordion,\n FormControl,\n FormLabel,\n FormControlProps,\n} from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { EnumLeverageProductsIndication } from \"src/api/client/extended-search.api\";\nimport { IKeyFigureGroup, ITags, ITagsData } from \"src/api/server/extended-search\";\nimport { Button } from \"src/components/base/button\";\nimport { Switch } from \"src/components/common/switch/switch\";\nimport { InvestableInCountrySwitch } from \"src/components/pages/search/components/investable-in-country-switch\";\nimport { ISearchRequestParamsOmitCountry } from \"src/components/pages/search/search.types\";\nimport { handleIsInvestable } from \"src/components/pages/search/store/actions\";\nimport { useSearchStore } from \"src/components/pages/search/store/search-store\";\nimport { useNumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\nimport { EnumCountryKey } from \"src/types/common-enum\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport { Button as CustomButton } from \"../button\";\nimport { KeyFiguresFilter } from \"./key-figures-filter\";\nimport { PopularFilters } from \"./popular-filters\";\nimport { TagsFilter } from \"./tags-filter\";\n\ninterface IMobileSearchFilterProps {\n isOpen: boolean;\n isLoading: boolean;\n resultCount: number | null;\n tagsData: ITagsData;\n popularKeyFiguresGroup: IKeyFigureGroup;\n keyFiguresGroups: ReadonlyArray;\n popularTags: ITags;\n onClose: () => void;\n onReset: () => void;\n onSearch: (params: ISearchRequestParamsOmitCountry) => void;\n}\n\nexport const MobileSearchFilter = ({\n isOpen,\n isLoading,\n resultCount,\n tagsData,\n popularKeyFiguresGroup,\n keyFiguresGroups,\n popularTags,\n onClose,\n onReset,\n onSearch,\n}: IMobileSearchFilterProps) => {\n const { t } = useTranslation([\"extended-search\", \"common\"]);\n const [currentResultCount, setCurrentResultCount] = useState(null);\n const { country } = useRouterLocale();\n const { formatNumber } = useNumberFormatter();\n\n const { query, isInvestable, brokersIds, tags, keyFigures, isAtInvestable, isChInvestable, leverageProductsIndication } = useSearchStore();\n const isAnyFilterApplied = [\n query,\n country === EnumCountryKey.INT ? isInvestable : !isInvestable,\n brokersIds.length,\n tags.length,\n keyFigures.length,\n country === EnumCountryKey.AT ? !isAtInvestable : isAtInvestable,\n country === EnumCountryKey.CH ? !isChInvestable : isChInvestable,\n leverageProductsIndication !== EnumLeverageProductsIndication.AllWikifolios,\n ].some(Boolean);\n\n useEffect(() => {\n if (resultCount !== currentResultCount) {\n setCurrentResultCount(resultCount);\n }\n }, [currentResultCount, resultCount]);\n\n const investableSwitchStyles: FormControlProps = {\n flexDirection: \"row-reverse\",\n justifyContent: \"space-between\",\n fontWeight: \"semibold\",\n };\n\n const isInvestableFilterVisible = country !== EnumCountryKey.INT;\n\n const getShowResultButtonText = useCallback(() => {\n if (resultCount !== null) {\n if (resultCount === 1) {\n return t(\"buttons.show-1-result\");\n } else {\n return t(\"buttons.show-XX-results\", { resultCount: formatNumber(resultCount) });\n }\n } else {\n return t(\"buttons.show-all-results\");\n }\n }, [formatNumber, resultCount, t]);\n\n const onChangeInvestable = (event: FormEvent) => {\n const isChecked = event.currentTarget.checked;\n handleIsInvestable({ isChecked, onSearch });\n };\n\n return (\n \n \n \n \n \n {isAnyFilterApplied && (\n \n )}\n \n \n {isInvestableFilterVisible && (\n \n \n \n \n {t(\"labels.investable-wikifolios-only\", { ns: \"common\" })}\n \n \n \n \n )}\n \n \n \n \n \n \n\n \n \n {getShowResultButtonText()}\n \n \n \n \n \n );\n};\n","import { AnimatePresence } from \"motion/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { MotionBoxProps } from \"src/components/base\";\nimport { MotionBox } from \"src/components/base\";\nimport { IWfHeadingProps, WfHeading } from \"src/components/base/wf-heading\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport { addQuotationsToText } from \"src/utils/string-util\";\n\nconst headingStyles: IWfHeadingProps = {\n as: \"h1\",\n fontSize: [\"3xl\", \"3xl\", \"4xl\"],\n mb: \"2\",\n noOfLines: 1,\n wordBreak: \"break-all\",\n};\n\nconst motionBoxStyle: MotionBoxProps = { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0, position: \"absolute\" } };\n\ntype IAnimatedHeading = {\n headline: string;\n searchTerm?: string | string[];\n isMobile?: boolean;\n};\n\nexport const AnimatedHeading = ({ searchTerm, headline, isMobile }: IAnimatedHeading) => {\n const { t } = useTranslation(\"extended-search\");\n const { language } = useRouterLocale();\n\n return (\n <>\n \n {searchTerm && (\n \n \n {isMobile ? addQuotationsToText(searchTerm as string, language) : t(\"headlines.results-for\", { searchTerm })}\n \n \n )}\n \n \n {searchTerm ? null : (\n \n {headline}\n \n )}\n \n \n );\n};\n","import { Box, IconButton } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IconClose } from \"src/components/icons\";\nimport { AnimatedHeading } from \"src/components/pages/search/components/animated-heading\";\n\ninterface ISearchFilterHeaderProps {\n handleOnClear: () => void;\n isMobile?: boolean;\n searchTerm?: string | string[];\n}\n\nconst mobileIconStyles = {\n marginTop: \"-0.5\",\n marginRight: \"-1\",\n};\n\nexport const SearchFilterHeader = ({ searchTerm, isMobile, handleOnClear }: ISearchFilterHeaderProps) => {\n const { t } = useTranslation([\"extended-search\", \"common\"]);\n const iconButtonStyles = isMobile ? mobileIconStyles : null;\n return (\n \n \n {searchTerm && (\n }\n {...iconButtonStyles}\n />\n )}\n \n );\n};\n","import { Text, useDisclosure } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { ITagsData, ITags, IKeyFigureGroup } from \"src/api/server/extended-search\";\nimport { Strong } from \"src/components/base\";\nimport { Button } from \"src/components/base/button\";\nimport { IconFilter } from \"src/components/icons\";\nimport { Container } from \"src/components/layout/container\";\nimport { MobileSearchFilter } from \"src/components/pages/search/components/filter-section/mobile-search-filter/mobile-search-filter\";\nimport { ISearchRequestParamsOmitCountry } from \"src/components/pages/search/search.types\";\nimport { useNumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\nimport { SearchFilterHeader } from \"../search-filter-header\";\n\ninterface IMobileSearchFilterContainerProps {\n resultCount: number | null;\n isLoading: boolean;\n tagsData: ITagsData;\n popularKeyFiguresGroup: IKeyFigureGroup;\n keyFiguresGroupsWithIsPopularIndication: IKeyFigureGroup[];\n popularTags: ITags;\n onSearchTermClear: () => void;\n onReset: () => void;\n onSearch: (params: ISearchRequestParamsOmitCountry) => void;\n searchTerm?: string | string[];\n}\n\nexport const MobileSearchFilterContainer = ({\n searchTerm,\n resultCount,\n isLoading,\n tagsData,\n popularKeyFiguresGroup,\n keyFiguresGroupsWithIsPopularIndication,\n popularTags,\n onSearchTermClear,\n onReset,\n onSearch,\n}: IMobileSearchFilterContainerProps) => {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const { t } = useTranslation([\"extended-search\"]);\n const { formatNumber } = useNumberFormatter();\n\n const hasResults = resultCount !== null;\n const displayedResultsCount = hasResults ? formatNumber(resultCount) : \"-\";\n const wikifoliosFound = resultCount === 1 ? t(\"wikifolio-found\") : t(\"wikifolios-found\");\n\n return (\n \n \n \n {displayedResultsCount} {wikifoliosFound}\n \n \n \n \n );\n};\n","import { Badge, Flex, Text, forwardRef } from \"@chakra-ui/react\";\nimport { Button, ButtonProps } from \"src/components/base/button\";\nimport { IconCaret } from \"src/components/icons\";\n\ninterface IPopoverButton extends Omit {\n title: string;\n isOpen: boolean;\n badgeInfo?: string;\n}\n\nexport const PopoverButton = forwardRef(({ title, badgeInfo, isOpen, ...buttonProps }, ref) => (\n }\n >\n \n \n {title}\n \n {badgeInfo && (\n \n {badgeInfo}\n \n )}\n \n \n));\n","import { UIEvent, useState } from \"react\";\nimport { BoxProps, Box, Divider, Flex } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IKeyFiguresData } from \"src/api/server/extended-search\";\nimport { ArrowLink } from \"src/components/base/arrow-link\";\nimport { Button } from \"src/components/base/button\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { handleResetKeyFigures } from \"src/components/pages/search/store/actions\";\nimport { KeyFiguresGroup } from \"./components/key-figures-group\";\n\ninterface IKeyFiguresFilterBodyContentProps extends ISearch, BoxProps {\n keyFiguresData: IKeyFiguresData;\n}\n\nexport const KeyFiguresFilterBodyContent = ({ keyFiguresData, onSearch }: IKeyFiguresFilterBodyContentProps) => {\n const [showBlur, setShowBlur] = useState(true);\n const { t } = useTranslation(\"extended-search\");\n const { faqLink, keyFiguresGroups } = keyFiguresData;\n\n const handleReset = () => {\n handleResetKeyFigures(onSearch);\n };\n\n const handleBlurWhenOnScroll = (event: UIEvent) => {\n const element = event.target as Element;\n const THRESHOLD = 30;\n const startedScrolling = element.scrollTop > THRESHOLD;\n\n setShowBlur(!startedScrolling);\n };\n\n return (\n <>\n \n {keyFiguresGroups.map((keyFiguresGroup, index) => (\n \n ))}\n \n\n {showBlur && (\n \n )}\n\n \n \n \n \n {faqLink && (\n \n {faqLink.name}\n \n )}\n \n \n \n );\n};\n","import { Popover, PopoverBody, PopoverContent, PopoverTrigger } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IKeyFiguresData } from \"src/api/server/extended-search\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { useSearchStore } from \"src/components/pages/search/store/search-store\";\nimport { PopoverButton } from \"../popover-button\";\nimport { KeyFiguresFilterBodyContent } from \"./key-figures-filter-body-content\";\n\nconst KEY_FIGURES_POPOVER_BODY_TEST_ID = \"key-figures-popover-body\";\n\ninterface IKeyFiguresPopover extends ISearch {\n keyFiguresData: IKeyFiguresData;\n}\n\nexport const KeyFiguresPopover = ({ keyFiguresData, onSearch }: IKeyFiguresPopover) => {\n const { t } = useTranslation(\"extended-search\");\n\n const { keyFigures: selectedKeyFigures } = useSearchStore();\n const totalNumberOfKeyFigures = keyFiguresData.keyFiguresGroups.reduce((acc, keyFiguresGroup) => acc + keyFiguresGroup.keyFigures.length, 0);\n\n return (\n \n {({ isOpen }) => (\n <>\n \n \n \n \n \n \n \n \n \n )}\n \n );\n};\n","import { Box, Popover, PopoverBody, PopoverContent, PopoverTrigger } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IKeyFigureGroup, ITags } from \"src/api/server/extended-search\";\nimport { Button } from \"src/components/base/button\";\nimport { PopoverButton } from \"src/components/pages/search/components/popover-button\";\nimport { NUMBER_OF_LEVERAGE_PRODUCT_OPTIONS } from \"src/components/pages/search/constants\";\nimport { usePopularFiltersCounter } from \"src/components/pages/search/hooks/use-popular-filters-counter\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { handleResetPopularFilters } from \"src/components/pages/search/store/actions\";\nimport { PopularFiltersContent } from \"./components/popular-filters-content\";\n\nconst POPULAR_FILTERS_POPOVER_BODY_TEST_ID = \"popular-filters-popover-body\";\n\ninterface IPopularFiltersPopover extends ISearch {\n popularKeyFiguresGroup: IKeyFigureGroup;\n tagsData: ITags;\n}\n\nexport const PopularFiltersPopover = ({ popularKeyFiguresGroup, tagsData, onSearch }: IPopularFiltersPopover) => {\n const { t } = useTranslation(\"extended-search\");\n\n const numberOfSelectedFilters = usePopularFiltersCounter();\n\n const { basics, rewards, tradings, investmentHorizon, investmentRegion } = tagsData;\n const numberOfPopularFilters =\n popularKeyFiguresGroup.keyFigures.length +\n basics.tags.length +\n tradings.tags.length +\n rewards.tags.length +\n investmentHorizon.tags.length +\n investmentRegion.tags.length +\n NUMBER_OF_LEVERAGE_PRODUCT_OPTIONS;\n\n const handleReset = () => {\n handleResetPopularFilters({\n onSearch,\n });\n };\n\n return (\n \n {({ isOpen }) => (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n );\n};\n","import { Box, BoxProps, Divider, Flex, UseCheckboxGroupReturn } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { ITagsData } from \"src/api/server/extended-search\";\nimport { ArrowLink } from \"src/components/base/arrow-link\";\nimport { Button } from \"src/components/base/button\";\nimport { TagsListWithBrokers } from \"src/components/pages/search/components/tags-filter/components/tags-list-with-brokers\";\nimport { IChangeFilterTag } from \"src/components/pages/search/components/types\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\n\nconst TAGS_FILTER_BODY_CONTENT_TEST_ID = \"tags-filter-body-content\";\n\ninterface ITagsFilterBodyContentProps extends ISearch, Omit {\n tagsData: ITagsData;\n showBrokers: boolean;\n getCheckboxProps: UseCheckboxGroupReturn[\"getCheckboxProps\"];\n onChange: (changeFilterTag: IChangeFilterTag) => void;\n resetTags: () => void;\n}\n\nexport const TagsFilterBodyContent = ({\n tagsData,\n showBrokers,\n onSearch,\n getCheckboxProps,\n onChange,\n resetTags,\n ...boxProps\n}: ITagsFilterBodyContentProps) => {\n const { t } = useTranslation(\"extended-search\");\n\n const { faqLink } = tagsData;\n\n return (\n \n \n \n \n \n {faqLink && (\n \n {faqLink.name}\n \n )}\n \n \n );\n};\n","import { Popover, PopoverBody, PopoverContent, PopoverTrigger, useCheckboxGroup } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { ITagsData } from \"src/api/server/extended-search\";\nimport { PopoverButton } from \"src/components/pages/search/components/popover-button\";\nimport { TagsFilterBodyContent } from \"src/components/pages/search/components/tags-filter/tags-filter-body-content\";\nimport { IChangeFilterTag } from \"src/components/pages/search/components/types\";\nimport { SAVINGS_PLAN_TAG } from \"src/components/pages/search/constants\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { handleResetTags, handleTags } from \"src/components/pages/search/store/actions\";\nimport { useSearchStore } from \"src/components/pages/search/store/search-store\";\n\nconst TAGS_POPOVER_BUTTON_TEST_ID = \"tags-popover-button\";\n\ninterface ITagsPopover extends ISearch {\n tagsData: ITagsData;\n}\n\nexport const TagsPopover = ({ tagsData, onSearch }: ITagsPopover) => {\n const { t } = useTranslation(\"extended-search\");\n const { getCheckboxProps } = useCheckboxGroup();\n const { tags: selectedTags } = useSearchStore();\n\n const { basics, tradings, rewards, investmentHorizon, investmentRegion } = tagsData.tags;\n const numbersOfTags =\n basics.tags.length + tradings.tags.length + rewards.tags.length + investmentHorizon.tags.length + investmentRegion.tags.length;\n const showBrokers = selectedTags.some(tag => tag.value === SAVINGS_PLAN_TAG);\n\n const onTagChange = ({ isChecked, value, isPopular }: IChangeFilterTag) => {\n handleTags({ isChecked, value, isPopular, tagsData: tagsData.tags, onSearch });\n };\n\n const resetTags = () => {\n handleResetTags(onSearch);\n };\n\n return (\n \n {({ isOpen }) => (\n <>\n \n \n \n \n \n \n \n \n \n )}\n \n );\n};\n","import { FormEvent } from \"react\";\nimport { Box, Flex, FormControl, FormLabel, Text, FormControlProps } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { ITagsData, ITags, IKeyFigureGroup, IKeyFiguresData } from \"src/api/server/extended-search\";\nimport { Strong } from \"src/components/base\";\nimport { Button } from \"src/components/base/button\";\nimport { Switch } from \"src/components/common/switch/switch\";\nimport { Container } from \"src/components/layout/container\";\nimport { InvestableInCountrySwitch } from \"src/components/pages/search/components/investable-in-country-switch\";\nimport { KeyFiguresPopover } from \"src/components/pages/search/components/key-figures-filter/key-figures-popover\";\nimport { PopularFiltersPopover } from \"src/components/pages/search/components/popular-filters/popular-filters-popover\";\nimport { TagsPopover } from \"src/components/pages/search/components/tags-filter/tags-popover\";\nimport { ISearchRequestParamsOmitCountry } from \"src/components/pages/search/search.types\";\nimport { useSearchStore } from \"src/components/pages/search/store/search-store\";\nimport { useNumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\nimport { EnumCountryKey } from \"src/types/common-enum\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport { SearchFilterHeader } from \"../search-filter-header\";\n\nconst SEARCH_FILTER_CONTAINER_TEST_ID = \"search-filter-container\";\n\ninterface ISearchFilterProps {\n resultCount: number | null;\n popularKeyFiguresGroup: IKeyFigureGroup;\n popularTags: ITags;\n keyFiguresData: IKeyFiguresData;\n tagsData: ITagsData;\n onSearchTermClear: () => void;\n onChangeInvestable: (event: FormEvent) => void;\n onReset: () => void;\n onSearch: (params: ISearchRequestParamsOmitCountry) => void;\n searchTerm?: string | string[];\n}\n\nconst investableSwitchStyles: FormControlProps = {\n fontSize: \"sm\",\n};\n\nexport const SearchFilterContainer = ({\n searchTerm,\n resultCount,\n popularKeyFiguresGroup,\n popularTags,\n keyFiguresData,\n tagsData,\n onSearchTermClear,\n onChangeInvestable,\n onReset,\n onSearch,\n}: ISearchFilterProps) => {\n const { country } = useRouterLocale();\n const { t } = useTranslation([\"extended-search\", \"common\"]);\n const { formatNumber } = useNumberFormatter();\n const { isInvestable } = useSearchStore();\n\n const isInvestableFilterVisible = country !== EnumCountryKey.INT;\n const hasResults = resultCount !== null;\n const displayedResultsCount = hasResults ? formatNumber(resultCount) : \"-\";\n const wikifoliosFound = resultCount === 1 ? t(\"wikifolio-found\") : t(\"wikifolios-found\");\n\n return (\n \n \n \n \n \n {displayedResultsCount} {wikifoliosFound}\n \n \n \n \n \n \n \n \n \n {isInvestableFilterVisible && (\n \n \n \n \n {t(\"labels.investable-wikifolios-only\", { ns: \"common\" })}\n \n \n \n \n )}\n \n \n \n );\n};\n","import { useMemo } from \"react\";\nimport { ITags, ITagsData, IKeyFiguresData, IKeyFigureGroup } from \"src/api/server/extended-search\";\n\nexport const useFilters = (tagsData: ITagsData, keyFiguresData: IKeyFiguresData) => {\n const popularKeyFiguresGroup: IKeyFigureGroup = useMemo(() => {\n return {\n ...keyFiguresData.popularKeyFiguresGroup,\n keyFigures: keyFiguresData.popularKeyFiguresGroup.keyFigures.map(keyFigure => {\n return { ...keyFigure, isPopular: true };\n }),\n };\n }, [keyFiguresData.popularKeyFiguresGroup]);\n\n const keyFiguresGroupsWithIsPopularIndication: IKeyFigureGroup[] = useMemo(() => {\n return keyFiguresData.keyFiguresGroups.map(keyFiguresGroup => {\n return {\n ...keyFiguresGroup,\n keyFigures: keyFiguresGroup.keyFigures.map(keyFigure => {\n return {\n ...keyFigure,\n isPopular: popularKeyFiguresGroup.keyFigures.some(popularKeyFigure => popularKeyFigure.id === keyFigure.id),\n };\n }),\n };\n });\n }, [keyFiguresData.keyFiguresGroups, popularKeyFiguresGroup.keyFigures]);\n\n const popularTags: ITags = useMemo(\n () => ({\n basics: { ...tagsData.tags.basics, tags: tagsData.tags.basics.tags.filter(tag => tag.isPopular) },\n rewards: { ...tagsData.tags.rewards, tags: tagsData.tags.rewards.tags.filter(tag => tag.isPopular) },\n tradings: { ...tagsData.tags.tradings, tags: tagsData.tags.tradings.tags.filter(tag => tag.isPopular) },\n investmentHorizon: { ...tagsData.tags.investmentHorizon, tags: tagsData.tags.investmentHorizon.tags.filter(tag => tag.isPopular) },\n investmentRegion: { ...tagsData.tags.investmentHorizon, tags: tagsData.tags.investmentRegion.tags.filter(tag => tag.isPopular) },\n }),\n [tagsData.tags.basics, tagsData.tags.investmentHorizon, tagsData.tags.investmentRegion.tags, tagsData.tags.rewards, tagsData.tags.tradings]\n );\n\n return {\n popularKeyFiguresGroup,\n keyFiguresGroupsWithIsPopularIndication,\n popularTags,\n };\n};\n","import { FormEvent } from \"react\";\nimport { useRouter } from \"next/router\";\nimport { IExtendedSearchData } from \"src/api/server/extended-search\";\nimport { MobileSearchFilterContainer } from \"src/components/pages/search/components/filter-section/mobile-search-filter/mobile-search-filter-container\";\nimport { SearchFilterContainer } from \"src/components/pages/search/components/filter-section/search-filter/search-filter-container\";\nimport { useFilters } from \"src/components/pages/search/hooks/use-filters\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { handleIsInvestable, handleSearch, setDefaultFilters, setQuery } from \"src/components/pages/search/store/actions\";\nimport { getNormalizedRouterQuery } from \"src/components/pages/search/utils/url-params-helpers\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\n\ninterface IFilterSectionProps extends ISearch {\n data: IExtendedSearchData;\n resultCount: number | null;\n isLoading: boolean;\n onReset: () => void;\n}\n\nexport const FilterSection = ({ data, resultCount, isLoading, onSearch, onReset }: IFilterSectionProps) => {\n const router = useRouter();\n const { country } = useRouterLocale();\n\n const { searchTerm } = getNormalizedRouterQuery(router.query);\n\n const { tagsData, keyFiguresData } = data;\n const { popularKeyFiguresGroup, keyFiguresGroupsWithIsPopularIndication, popularTags } = useFilters(tagsData, keyFiguresData);\n\n const onChangeInvestable = (event: FormEvent) => {\n const isChecked = event.currentTarget.checked;\n handleIsInvestable({ isChecked, onSearch });\n };\n\n const handleOnSearchTermClear = () => {\n const clonedQuery = { ...router.query };\n delete clonedQuery.searchTerm;\n delete clonedQuery.country;\n\n if (!clonedQuery.sortBy) {\n const { defaultSelectedRanking } = data.rankingsData;\n const ranking = { id: defaultSelectedRanking.id, sortDirection: defaultSelectedRanking.sortDirection };\n\n setDefaultFilters(ranking, country);\n }\n setQuery(\"\");\n\n router.replace({ pathname: window.location.pathname, query: clonedQuery, href: window.location.href }, undefined, { shallow: true });\n handleSearch({ onSearch });\n };\n\n return (\n <>\n \n \n \n );\n};\n","import { useRef } from \"react\";\nimport { useTranslation } from \"next-i18next\";\nimport { useExtendedSearchDownloadMutation } from \"src/api/client/extended-search.api\";\nimport { Button, ButtonProps } from \"src/components/base/button/button\";\nimport { IconDownload } from \"src/components/icons\";\nimport { EnumToastStatus, useWfToast } from \"src/hooks/use-wf-toast\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport { searchStore } from \"../../store/search-store\";\nimport { getMappedStore } from \"../../store/utils\";\n\nexport interface IDownloadButton extends ButtonProps {\n userNumOfDownloads: number;\n}\n\nexport const DownloadButton = ({ userNumOfDownloads }: IDownloadButton) => {\n const downloads = useRef(userNumOfDownloads);\n const toastVisible = useRef(false);\n const toast = useWfToast();\n const { t } = useTranslation([\"extended-search\", \"common\"]);\n const searchMutation = useExtendedSearchDownloadMutation();\n const { country } = useRouterLocale();\n\n const onError = (title: string) => {\n if (!toastVisible.current) {\n toastVisible.current = true;\n toast({ status: EnumToastStatus.Error, duration: 5000, title: title });\n setTimeout(() => {\n toastVisible.current = false;\n }, 5000);\n }\n };\n\n const onDownloadClick = async () => {\n if (downloads.current < 5) {\n try {\n await searchMutation({\n country,\n ...getMappedStore(searchStore),\n });\n downloads.current++;\n } catch (error) {\n onError(t(\"general-error\", { ns: \"common\" }));\n }\n } else {\n onError(t(\"download-limit-reached\"));\n }\n };\n\n return (\n }\n >\n {t(\"buttons.download\")}\n \n );\n};\n","import { useRouter } from \"next/router\";\nimport { IRankingExtendedSearch } from \"src/api/server/extended-search\";\nimport { ComboBox, ComboBoxItem } from \"src/components/base/combo-box\";\nimport { ISortDirectionType } from \"src/types/common\";\nimport { ISelectedRanking } from \"../types\";\n\ntype IDropdownSelectorProps = {\n rankings: ReadonlyArray;\n selectedRanking: ISelectedRanking;\n relevanceRanking: IRankingExtendedSearch;\n isDisabled: boolean;\n onChange: (selectedRanking: ISelectedRanking) => void;\n};\n\nexport const RankingsDropdownSelector = ({ rankings, selectedRanking, relevanceRanking, isDisabled, onChange }: IDropdownSelectorProps) => {\n const router = useRouter();\n const { searchTerm } = router.query;\n\n const handleOnChange = (id: string) => {\n const defaultSortDirectionForSelectedRanking: ISortDirectionType = rankings.find(ranking => ranking.id === id)?.sortDirection ?? null;\n onChange({ id, sortDirection: defaultSortDirectionForSelectedRanking });\n };\n\n const shouldRelevanceRankingBeDisabled = (id: string) => relevanceRanking.id === id && !Boolean(searchTerm);\n\n return (\n \n {rankings.map(({ id, label }) => (\n \n {label}\n \n ))}\n \n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport { IRankingExtendedSearch } from \"src/api/server/extended-search\";\nimport { Container } from \"src/components/layout/container\";\nimport { useUserStore } from \"src/stores/user-store\";\nimport { DownloadButton } from \"./components/download-button/download-button\";\nimport { RankingsDropdownSelector } from \"./components/rankings-dropdown-selector/rankings-dropdown-selector\";\nimport { SortDirectionButton } from \"./components/sort-direction-button/sort-direction-button\";\nimport { ISelectedRanking } from \"./components/types\";\nimport { ISearch } from \"./search.types\";\nimport { handleSortDirection, handleSortingChange } from \"./store/actions\";\nimport { useSearchStore } from \"./store/search-store\";\n\ninterface ISortSectionProps extends ISearch {\n resultCount: number | null;\n rankings: ReadonlyArray;\n relevanceRanking: IRankingExtendedSearch;\n userNumOfDownloads: number;\n}\n\nexport const SortSection = ({ resultCount, rankings, relevanceRanking, userNumOfDownloads, onSearch }: ISortSectionProps) => {\n const { sortDirection, selectedRanking } = useSearchStore();\n const { isLoggedIn } = useUserStore();\n\n const hasResults = resultCount !== null;\n const isDefaultRankingSelected = selectedRanking.id === null;\n\n const onClickSortDirection = () => {\n handleSortDirection({ onSearch });\n };\n\n const onSortingChange = ({ id, sortDirection: direction }: ISelectedRanking) => {\n handleSortingChange({ sortByRankingId: id, sortDirection: direction, onSearch });\n };\n\n return (\n \n \n \n \n \n \n \n {isLoggedIn && }\n \n \n \n );\n};\n","import { IExtendedSearchData } from \"src/api/server/extended-search\";\nimport { ISelectedRanking } from \"../components/types\";\n\nexport const getDefaultRanking = (data: IExtendedSearchData): ISelectedRanking => {\n return {\n id: data.rankingsData.defaultSelectedRanking.id,\n sortDirection: data.rankingsData.defaultSelectedRanking.sortDirection,\n };\n};\n","import { IExtendedSearchData } from \"src/api/server/extended-search\";\nimport { FilterSection } from \"src/components/pages/search/filter-section\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { SortSection } from \"src/components/pages/search/sort-section\";\nimport { handleResetSearch } from \"src/components/pages/search/store/actions\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport { getDefaultRanking } from \"./utils/get-default-ranking\";\n\ninterface IFilterSortSectionsWrapper extends ISearch {\n data: IExtendedSearchData;\n resultCount: number | null;\n isLoading: boolean;\n}\n\nexport const FilterSortSectionsWrapper = ({ data, resultCount, isLoading, onSearch }: IFilterSortSectionsWrapper) => {\n const {\n rankingsData: { rankings, relevanceRanking },\n } = data;\n const { country } = useRouterLocale();\n\n const onResetSearch = () => {\n const defaultRanking = getDefaultRanking(data);\n handleResetSearch({ sortDirection: defaultRanking.sortDirection, selectedRanking: defaultRanking, country: country, onSearch });\n };\n\n return (\n <>\n \n \n \n );\n};\n","import { ParsedUrlQuery } from \"querystring\";\nimport { IExtendedSearchData } from \"src/api/server/extended-search\";\nimport { SAVINGS_PLAN_TAG } from \"src/components/pages/search/constants\";\nimport { EnumSearchQueryParams } from \"src/components/pages/search/search.types\";\nimport { COUNTRY_PARAMETER, ICountry } from \"src/consts/locale\";\nimport { EnumCountryKey } from \"src/types/common-enum\";\nimport { parseUrlQueryToUrlSearchParams, getNormalizedUrlParams, getUpdatedUrlParams, removeRedundantCommas } from \"./url-params-helpers\";\n\nexport const fixSearchUrlQuery = (query: ParsedUrlQuery, country: ICountry, extendedSearchData: IExtendedSearchData) => {\n const urlSearchParams = parseUrlQueryToUrlSearchParams(query);\n const fixedQueryParams = getNormalizedUrlParams(urlSearchParams);\n\n fixedQueryParams.delete(COUNTRY_PARAMETER);\n\n if (fixedQueryParams.get(EnumSearchQueryParams.IsInvestable.toLowerCase()) && country === EnumCountryKey.INT) {\n fixedQueryParams.delete(EnumSearchQueryParams.IsInvestable.toLowerCase());\n }\n\n if (fixedQueryParams.get(EnumSearchQueryParams.IsAtInvestable.toLowerCase()) && country !== EnumCountryKey.AT) {\n fixedQueryParams.delete(EnumSearchQueryParams.IsAtInvestable.toLowerCase());\n }\n\n if (fixedQueryParams.get(EnumSearchQueryParams.IsChInvestable.toLowerCase()) && country !== EnumCountryKey.CH) {\n fixedQueryParams.delete(EnumSearchQueryParams.IsChInvestable.toLowerCase());\n }\n\n if (!extendedSearchData.tagsData.brokers?.length) {\n if (fixedQueryParams.get(EnumSearchQueryParams.BrokerIds.toLowerCase())) {\n fixedQueryParams.delete(EnumSearchQueryParams.BrokerIds.toLowerCase());\n }\n\n const tagsQuery = fixedQueryParams.get(EnumSearchQueryParams.Tags.toLowerCase());\n if (tagsQuery && tagsQuery.includes(SAVINGS_PLAN_TAG)) {\n const tagsWithoutSavingPlan = tagsQuery.replace(SAVINGS_PLAN_TAG, \"\");\n const newTagsQuery = removeRedundantCommas(tagsWithoutSavingPlan);\n if (newTagsQuery) {\n fixedQueryParams.set(EnumSearchQueryParams.Tags, newTagsQuery);\n } else {\n fixedQueryParams.delete(EnumSearchQueryParams.Tags);\n }\n }\n }\n\n const updatedQueryParams = getUpdatedUrlParams(fixedQueryParams);\n\n return updatedQueryParams;\n};\n","import { EnumReactionType, EnumUserSegment, EnumUserStatus } from \"./common-enum\";\n\nexport type IBaseParam = {\n language: string;\n country: string;\n};\n\nexport interface IUser {\n id: string;\n firstName?: string | null;\n lastName?: string | null;\n nickName: string;\n email: string;\n isDeleted?: boolean;\n companyName?: string;\n profileLogoData?: string; // Partner Logo Base64\n status: EnumUserStatus;\n userSegment?: EnumUserSegment;\n}\n\nexport interface IAutoCompleteTrader {\n nickName: string;\n firstName: string | null;\n lastName: string | null;\n userStatus: EnumUserStatus;\n}\n\ninterface IWikifolioLongDescription {\n isTranslationAvailable: boolean;\n content: string;\n originalContent: string;\n}\n\nexport interface IWikifolio {\n id: string;\n symbol: string;\n fullName: string;\n shortDescription: string;\n description: IWikifolioLongDescription;\n status: number;\n isOnWatchlist: boolean;\n intendedInvestment?: number;\n isLicensed: boolean;\n isin: string;\n chartImageUrl: string;\n dailyFee: number;\n performanceFee: number;\n containsLeverageProducts: boolean;\n currency: string;\n}\n\nexport interface IWikifolioDescription {\n wikifolioId: string;\n shortDescription: string;\n}\n\nexport interface IApiResponse {\n isSuccess: boolean;\n error: string;\n}\n\nexport interface ILabelValue {\n label: string;\n value: string;\n}\n\nexport interface ITitleAndDescription {\n title: string;\n description: string;\n}\n\nexport interface ILink {\n url: string;\n name?: string | null;\n /**\n * excluded from schema validation because typing it properly as string | null creates\n * unnecessary level of complexity without adding any real benefits\n * @TJS-ignore\n */\n target?: string; // string | null\n}\n\nexport interface IImage {\n url: string;\n alt: string | null;\n}\n\nexport interface IUmbracoImage {\n url: string;\n alt: string | null;\n srcDisclosure: string;\n width: number;\n height: number;\n}\n\nexport interface IUmbracoVideo {\n url: string;\n previewImage?: IImage;\n alt?: string | null;\n}\n\nexport interface ITooltip {\n content: string;\n link: ILink | null;\n}\n\nexport interface IBroker {\n url: string;\n name: string;\n image: IImage;\n}\n\nexport interface ILikeInfo {\n didLike: boolean;\n count: number;\n}\n\ninterface ITeaserItemAuthor {\n image: {\n alt: string;\n url: string;\n };\n authorUrl: string;\n name: string;\n}\n\nexport interface ITeaserArticle {\n image: IImage;\n title?: string | null;\n author?: ITeaserItemAuthor | null;\n description: string;\n releaseDate?: string | null;\n link: ILink;\n}\n\nexport interface ITimeRangeSelectItem {\n value: number;\n label: string;\n labelLong: string;\n isDisabled?: boolean;\n}\n\nexport interface IMentionedUnderlying {\n isin: string;\n shortDescription: string;\n performance: number | null;\n containedInWikifolios: number | null;\n canBeFollowed: boolean;\n isFollowed: boolean;\n}\n\nexport interface IVotingAnswer {\n text: string;\n count?: number;\n}\n\nexport interface IAggregatedReactionItem {\n reactionType: EnumReactionType;\n numberOfReactions: number;\n positiveReactions: number;\n negativeReactions: number;\n weightedNumberOfReactions: number;\n weightedPositiveReactions: number;\n weightedNegativeReactions: number;\n}\n\nexport type TAggregatedReactions = ReadonlyArray;\n\nexport type ISortDirectionType = 0 | 1 | null;\n\nexport type ISortDirection = EnumSortDirectionName.Ascending | EnumSortDirectionName.Descending;\n\nexport enum EnumSortDirectionName {\n Ascending = \"asc\",\n Descending = \"desc\",\n}\n\nexport interface ITrader extends Pick {\n displayName: string;\n traderImageUrl: string;\n}\n\nexport type NonEmptyArray = [T, ...T[]];\n\n// Source: https://stackoverflow.com/questions/57103834/typescript-omit-a-property-from-all-interfaces-in-a-union-but-keep-the-union-s#answer-57103940\nexport type DistributiveOmit = T extends unknown ? Omit : never;\n","import { IKeyFigure } from \"src/api/server/extended-search\";\n\nexport const getKeyFigureMinAndMaxByKeyFigureId = (\n keyFigureId: string,\n keyFiguresData: readonly IKeyFigure[]\n): { defaultMinimum: number; defaultMaximum: number } => {\n const keyFigure = keyFiguresData.find(keyFigure => keyFigure.id === keyFigureId);\n\n if (keyFigure) {\n const defaultMinimum = keyFigure.steps[0];\n const defaultMaximum = keyFigure.steps[keyFigure.steps.length - 1];\n return { defaultMinimum, defaultMaximum };\n } else {\n throw new Error(\"Key figure with given id doesn't exist\");\n }\n};\n","export const getUrlIdentifier = (values: readonly { id: string; urlIdentifier: string }[], selectedId: string): string | undefined =>\n values.find((value: { id: string }) => value.id === selectedId)?.urlIdentifier;\n","import sortBy from \"lodash.sortby\";\nimport { IKeyFigure } from \"src/api/server/extended-search\";\nimport { IKeyFigureValue } from \"../components/types\";\nimport { getKeyFigureMinAndMaxByKeyFigureId } from \"./get-key-figure-min-and-max-by-key-figure-id\";\nimport { getUrlIdentifier } from \"./get-url-identifier\";\n\nconst MIN_QUERY_PARAM_NAME = \"min\";\nconst MAX_QUERY_PARAM_NAME = \"max\";\n\nexport const mapKeyFiguresFromQuery = (urlParams: URLSearchParams, keyFigures: readonly IKeyFigure[]): IKeyFigureValue[] => {\n const result: IKeyFigureValue[] = [];\n\n for (const keyFigure of keyFigures) {\n const keyFigureValue = urlParams.get(keyFigure.urlIdentifier);\n const keyFigureFound = keyFigureValue !== null && keyFigureValue.includes(\";\");\n if (keyFigureFound) {\n let minimum = Number.parseFloat(keyFigureValue.split(\";\")[0]);\n let maximum = Number.parseFloat(keyFigureValue.split(\";\")[1]);\n\n const defaultMinimum = keyFigure.steps[0];\n const defaultMaximum = keyFigure.steps[keyFigure.steps.length - 1];\n\n if (minimum < defaultMinimum) {\n minimum = defaultMinimum;\n }\n\n if (maximum > defaultMaximum) {\n maximum = defaultMaximum;\n }\n\n if (minimum > maximum) {\n [minimum, maximum] = [maximum, minimum];\n }\n result.push({\n id: keyFigure.id,\n min: Number.isNaN(minimum) ? undefined : minimum,\n max: Number.isNaN(maximum) ? undefined : maximum,\n isPopular: keyFigure.isPopular,\n });\n }\n }\n\n return result;\n};\n\nexport const mapKeyFiguresToQuery = (keyFigures: readonly IKeyFigureValue[], keyFiguresData: readonly IKeyFigure[]) => {\n const selectedKeyFigures = [];\n\n if (keyFigures?.length > 0) {\n for (const selectedKeyFigure of keyFigures) {\n const selectedKeyFigureUrlIdentifier = getUrlIdentifier(keyFiguresData, selectedKeyFigure.id);\n if (selectedKeyFigureUrlIdentifier) {\n const { defaultMinimum, defaultMaximum } = getKeyFigureMinAndMaxByKeyFigureId(selectedKeyFigure.id, keyFiguresData);\n if (selectedKeyFigure.min !== defaultMinimum || selectedKeyFigure.max !== defaultMaximum) {\n selectedKeyFigures.push({\n urlIdentifier: selectedKeyFigureUrlIdentifier,\n min: selectedKeyFigure.min ?? MIN_QUERY_PARAM_NAME,\n max: selectedKeyFigure.max ?? MAX_QUERY_PARAM_NAME,\n });\n }\n }\n }\n }\n\n const sortedSelectedKeyFigures = sortBy(selectedKeyFigures, keyFigure => keyFigure.urlIdentifier);\n return sortedSelectedKeyFigures.map(keyFigure => `${keyFigure.urlIdentifier}=${keyFigure.min};${keyFigure.max}`).join(\"&\");\n};\n","import { EnumLeverageProductsIndication } from \"src/api/client/extended-search.api\";\nimport { EnumSearchQueryParams } from \"../search.types\";\n\nexport const mapLeverageProductsIndicationFromQuery = (urlParams: URLSearchParams): EnumLeverageProductsIndication => {\n if (urlParams.get(EnumSearchQueryParams.WikifoliosWithLeverageProducts) === \"true\") {\n return EnumLeverageProductsIndication.WikifoliosWithLeverageProducts;\n }\n\n if (urlParams.get(EnumSearchQueryParams.WikifoliosWithoutLeverageProducts) === \"true\") {\n return EnumLeverageProductsIndication.WikifoliosWithoutLeverageProducts;\n }\n\n return EnumLeverageProductsIndication.AllWikifolios;\n};\n\nexport const mapLeverageProductsIndicationToQuery = (leverageProductsIndication: EnumLeverageProductsIndication) => {\n if (leverageProductsIndication === EnumLeverageProductsIndication.WikifoliosWithLeverageProducts) {\n return `${EnumSearchQueryParams.WikifoliosWithLeverageProducts}=true`;\n }\n\n if (leverageProductsIndication === EnumLeverageProductsIndication.WikifoliosWithoutLeverageProducts) {\n return `${EnumSearchQueryParams.WikifoliosWithoutLeverageProducts}=true`;\n }\n\n return \"\";\n};\n","import { IRankingsData } from \"src/api/server/extended-search\";\nimport { ISortDirectionType } from \"src/types/common\";\nimport { ISelectedRanking } from \"../components/types\";\nimport { EnumSearchQueryParams } from \"../search.types\";\nimport { getUrlIdentifier } from \"./get-url-identifier\";\n\nexport const mapSelectedRankingFromQuery = (\n urlParams: URLSearchParams,\n sortDirection: ISortDirectionType,\n rankingsData: IRankingsData\n): ISelectedRanking => {\n const selectedRanking = urlParams.get(EnumSearchQueryParams.SortByRanking);\n const searchTerm = urlParams.get(EnumSearchQueryParams.SearchTerm);\n if (selectedRanking) {\n return {\n id: rankingsData.rankings.find(ranking => ranking.urlIdentifier === selectedRanking)?.id ?? rankingsData.defaultSelectedRanking.id,\n sortDirection,\n };\n } else if (Boolean(searchTerm)) {\n return { id: rankingsData.relevanceRanking.id, sortDirection: rankingsData.relevanceRanking.sortDirection };\n } else {\n return { id: rankingsData.defaultSelectedRanking.id, sortDirection };\n }\n};\n\nexport const mapSelectedRankingToQuery = (selectedRanking: ISelectedRanking, rankingsData: IRankingsData) => {\n if (selectedRanking.id) {\n const isSelectedRankingDefault = rankingsData.defaultSelectedRanking.id === selectedRanking.id;\n if (isSelectedRankingDefault) {\n return `${EnumSearchQueryParams.SortByRanking}=${rankingsData.defaultSelectedRanking.urlIdentifier}`;\n } else {\n const selectedRankingUrlIdentifier = getUrlIdentifier(rankingsData.rankings, selectedRanking.id);\n if (selectedRankingUrlIdentifier) {\n return `${EnumSearchQueryParams.SortByRanking}=${selectedRankingUrlIdentifier}`;\n }\n }\n }\n\n return \"\";\n};\n","import { ITagsData } from \"src/api/server/extended-search\";\nimport { ITagValue } from \"../components/types\";\nimport { EnumSearchQueryParams } from \"../search.types\";\n\nexport const mapTagsFromQuery = (urlParams: URLSearchParams, tagsData: ITagsData): ITagValue[] => {\n const selectedTags = urlParams.get(EnumSearchQueryParams.Tags)?.split(\",\") ?? [];\n const allTags = [\n ...tagsData.tags.basics.tags,\n ...tagsData.tags.rewards.tags,\n ...tagsData.tags.tradings.tags,\n ...tagsData.tags.investmentHorizon.tags,\n ...tagsData.tags.investmentRegion.tags,\n ];\n\n return allTags.flatMap(filterTag =>\n selectedTags.includes(filterTag.urlIdentifier)\n ? [\n {\n value: filterTag.urlIdentifier,\n isPopular: filterTag.isPopular ?? false,\n },\n ]\n : []\n );\n};\n\nexport const mapTagsToQuery = (tags: readonly ITagValue[]) => {\n return tags && tags.length > 0 ? `${EnumSearchQueryParams.Tags}=${tags.map(tag => tag.value).join(\",\")}` : \"\";\n};\n","import { IExtendedSearchData } from \"src/api/server/extended-search\";\nimport { EnumSortDirectionName } from \"src/types/common\";\nimport { EnumSearchQueryParams } from \"../search.types\";\nimport { ISearchStore } from \"../store/search-store\";\nimport { mapKeyFiguresFromQuery } from \"./map-key-figures\";\nimport { mapLeverageProductsIndicationFromQuery } from \"./map-leverage-products-indication\";\nimport { mapSelectedRankingFromQuery } from \"./map-selected-ranking\";\nimport { mapTagsFromQuery } from \"./map-tags\";\n\nconst getSortDirectionValue = (sortDirection: string) => (sortDirection === EnumSortDirectionName.Descending ? 1 : 0);\n\nexport const mapSearchParamsToState = (urlParams: URLSearchParams, extendedSearchData: IExtendedSearchData): ISearchStore => {\n const sortDirectionParam = urlParams.get(EnumSearchQueryParams.SortDirection);\n\n const sortDirection = sortDirectionParam ? getSortDirectionValue(sortDirectionParam) : null;\n const selectedRanking = mapSelectedRankingFromQuery(urlParams, sortDirection, extendedSearchData.rankingsData);\n const allKeyFigures = extendedSearchData.keyFiguresData.keyFiguresGroups.flatMap(keyFigureGroup => keyFigureGroup.keyFigures);\n const popularKeyFigures = extendedSearchData.keyFiguresData.popularKeyFiguresGroup.keyFigures;\n const allKeyFiguresWithIsPopularIndication = allKeyFigures.map(keyFigure => {\n return { ...keyFigure, isPopular: popularKeyFigures.some(popularKeyFigure => popularKeyFigure.id == keyFigure.id) };\n });\n\n const state: ISearchStore = {\n query: urlParams.get(EnumSearchQueryParams.SearchTerm) ?? \"\",\n keyFigures: mapKeyFiguresFromQuery(urlParams, allKeyFiguresWithIsPopularIndication),\n tags: mapTagsFromQuery(urlParams, extendedSearchData.tagsData),\n selectedRanking: selectedRanking,\n sortDirection: sortDirection,\n brokersIds: urlParams.get(EnumSearchQueryParams.BrokerIds)?.split(\",\") ?? [],\n isInvestable: urlParams.get(EnumSearchQueryParams.IsInvestable) === \"true\",\n isAtInvestable: urlParams.get(EnumSearchQueryParams.IsAtInvestable) === \"true\",\n isChInvestable: urlParams.get(EnumSearchQueryParams.IsChInvestable) === \"true\",\n leverageProductsIndication: mapLeverageProductsIndicationFromQuery(urlParams),\n };\n\n return state;\n};\n","import { EnumSearchQueryParams } from \"../search.types\";\n\nexport const mapSearchTermToQuery = (searchTerm: string) => {\n return searchTerm?.length > 0 ? `${EnumSearchQueryParams.SearchTerm}=${encodeURIComponent(searchTerm)}` : \"\";\n};\n","import { EnumSortDirectionName, ISortDirectionType } from \"src/types/common\";\nimport { EnumSearchQueryParams } from \"../search.types\";\n\nexport const mapSortDirectionToQuery = (sortDirection: ISortDirectionType) => {\n return sortDirection !== null\n ? `${EnumSearchQueryParams.SortDirection}=${sortDirection === 1 ? EnumSortDirectionName.Descending : EnumSortDirectionName.Ascending}`\n : \"\";\n};\n","import { EnumCountryKey } from \"src/types/common-enum\";\nimport { EnumSearchQueryParams } from \"../search.types\";\n\nexport const mapIsInvestableToQuery = (isInvestable: boolean) => {\n return isInvestable ? `${EnumSearchQueryParams.IsInvestable}=true` : \"\";\n};\n\nexport const mapIsChInvestableToQuery = (isChInvestable: boolean, country: string) => {\n return isChInvestable && country === EnumCountryKey.CH ? `${EnumSearchQueryParams.IsChInvestable}=true` : \"\";\n};\n\nexport const mapIsAtInvestableToQuery = (isAtInvestable: boolean, country: string) => {\n return isAtInvestable && country === EnumCountryKey.AT ? `${EnumSearchQueryParams.IsAtInvestable}=true` : \"\";\n};\n","import { useEffect } from \"react\";\nimport { useRouter } from \"next/router\";\nimport { useGenericActivityFromElysiumMutation } from \"src/api/client/generic-activity-from-elysium.api\";\nimport { EnumActivityType } from \"src/api/client/generic-activity.api\";\nimport { IExtendedSearchData } from \"src/api/server/extended-search\";\nimport { ISelectedRanking } from \"src/components/pages/search/components/types\";\nimport { ISearch } from \"src/components/pages/search/search.types\";\nimport { handleSearch, setNewSearchStoreValues, setDefaultFilters } from \"src/components/pages/search/store/actions\";\nimport { fixSearchUrlQuery } from \"src/components/pages/search/utils/fix-search-url-query\";\nimport { mapSearchParamsToState } from \"src/components/pages/search/utils/map-query-string-to-state\";\nimport { mapSearchTermToQuery } from \"src/components/pages/search/utils/map-search-term\";\nimport { mapSelectedRankingToQuery } from \"src/components/pages/search/utils/map-selected-ranking\";\nimport { mapSortDirectionToQuery } from \"src/components/pages/search/utils/map-sort-direction\";\nimport { urlSearchParamsToQueryString, getNormalizedRouterQuery } from \"src/components/pages/search/utils/url-params-helpers\";\nimport { COUNTRY_PARAMETER } from \"src/consts/locale\";\nimport { EnumCountryKey } from \"src/types/common-enum\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport { mapIsAtInvestableToQuery, mapIsChInvestableToQuery, mapIsInvestableToQuery } from \"../utils/map-is-investable\";\n\ninterface IUseFetchResultsOnPageLoad extends ISearch {\n ranking: ISelectedRanking;\n extendedSearchData: IExtendedSearchData;\n}\n\nexport const useFetchResultsOnPageLoad = ({ ranking, extendedSearchData, onSearch }: IUseFetchResultsOnPageLoad) => {\n const router = useRouter();\n const { query } = router;\n const { country } = useRouterLocale();\n const { searchTerm } = getNormalizedRouterQuery(query);\n const genericActivity = useGenericActivityFromElysiumMutation();\n\n const atInvestableQuery = country === EnumCountryKey.AT ? `${mapIsAtInvestableToQuery(true, country)}` : \"\";\n const chInvestableQuery = country === EnumCountryKey.CH ? `${mapIsChInvestableToQuery(true, country)}` : \"\";\n const investableQuery = mapIsInvestableToQuery(country !== EnumCountryKey.INT);\n\n const getQueryParams = () => {\n const searchTermParam = searchTerm ? `${mapSearchTermToQuery(String(searchTerm))}` : \"\";\n const rankingSorted = searchTerm\n ? \"\"\n : `${mapSortDirectionToQuery(ranking.sortDirection)}&${mapSelectedRankingToQuery(ranking, extendedSearchData.rankingsData)}`;\n\n return [searchTermParam, investableQuery, atInvestableQuery, chInvestableQuery, rankingSorted].filter(Boolean).join(\"&\");\n };\n\n const queryParams = getQueryParams();\n\n const getOriginPathName = () => {\n const { origin, pathname } = window.location;\n return `${origin}${pathname}?`;\n };\n\n const trackGenericActivity = (queryParams: string) =>\n genericActivity({\n activityTypeId: EnumActivityType.VisitWikifolioSearchPage,\n parameter: queryParams,\n referrer: `${getOriginPathName()}${queryParams}`,\n });\n\n const updateUrl = () => router.push(`${getOriginPathName()}${queryParams}`);\n\n const handleOnNoneParameters = () => {\n setDefaultFilters(ranking, country);\n updateUrl();\n trackGenericActivity(queryParams);\n };\n\n const handleOnExistingParameters = () => {\n const { pathname, href } = window.location;\n const fixedUrlSearchParams = fixSearchUrlQuery(query, country, extendedSearchData);\n const fixedQueryParams = urlSearchParamsToQueryString(fixedUrlSearchParams);\n router.replace({ pathname, query: fixedQueryParams, href }, undefined, { shallow: true });\n\n const queryParamKeys = Object.keys(query).filter(key => key !== COUNTRY_PARAMETER);\n const isOnlySearchTerm = queryParamKeys.length === 1 && queryParamKeys.indexOf(\"searchTerm\") === 0;\n\n const newState = mapSearchParamsToState(fixedUrlSearchParams, extendedSearchData);\n\n if (isOnlySearchTerm) {\n updateUrl();\n setNewSearchStoreValues({\n ...newState,\n isInvestable: Boolean(investableQuery),\n isAtInvestable: Boolean(atInvestableQuery),\n isChInvestable: Boolean(chInvestableQuery),\n query: String(searchTerm),\n sortDirection: null,\n selectedRanking: { id: null, sortDirection: null },\n });\n\n trackGenericActivity(queryParams);\n } else {\n setNewSearchStoreValues(newState);\n trackGenericActivity(fixedQueryParams);\n }\n };\n\n useEffect(() => {\n const areQueryParamsPresent = Object.keys(router.query).some(key => key !== COUNTRY_PARAMETER);\n if (areQueryParamsPresent) {\n handleOnExistingParameters();\n } else {\n handleOnNoneParameters();\n }\n\n handleSearch({ onSearch });\n // We disable the rule because the hook HAS to be run only once - on page load\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n};\n","import { EnumSearchQueryParams } from \"../search.types\";\n\nexport const mapBrokerIdsToQuery = (brokersIds: readonly string[]) => {\n return brokersIds?.length > 0 ? `${EnumSearchQueryParams.BrokerIds}=${brokersIds.join(\",\")}` : \"\";\n};\n","import { IExtendedSearchData } from \"src/api/server/extended-search\";\nimport { ISearchStore } from \"../store/search-store\";\nimport { mapBrokerIdsToQuery } from \"./map-broker-ids\";\nimport { mapIsAtInvestableToQuery, mapIsChInvestableToQuery, mapIsInvestableToQuery } from \"./map-is-investable\";\nimport { mapKeyFiguresToQuery } from \"./map-key-figures\";\nimport { mapLeverageProductsIndicationToQuery } from \"./map-leverage-products-indication\";\nimport { mapSearchTermToQuery } from \"./map-search-term\";\nimport { mapSelectedRankingToQuery } from \"./map-selected-ranking\";\nimport { mapSortDirectionToQuery } from \"./map-sort-direction\";\nimport { mapTagsToQuery } from \"./map-tags\";\n\nexport const mapStateToQueryString = (\n state: ISearchStore,\n extendedSearchData: IExtendedSearchData,\n country: string,\n caller: string | null\n): string => {\n // We map to old names of properties to maintain backwards compatibility\n const {\n tags,\n isInvestable,\n sortDirection,\n query,\n leverageProductsIndication,\n isAtInvestable,\n isChInvestable,\n selectedRanking,\n keyFigures,\n brokersIds,\n } = state;\n\n // Next.js by default encodes URI and converts commas to %2C\n // Only setting query string manually allows us to introduce comma as separator\n // and maintaining backwards compatibility.\n const queryString = [\n mapTagsToQuery(tags),\n mapIsInvestableToQuery(isInvestable),\n mapIsAtInvestableToQuery(isAtInvestable, country),\n mapIsChInvestableToQuery(isChInvestable, country),\n mapSortDirectionToQuery(sortDirection),\n mapSearchTermToQuery(query),\n mapLeverageProductsIndicationToQuery(leverageProductsIndication),\n mapSelectedRankingToQuery(selectedRanking, extendedSearchData.rankingsData),\n mapKeyFiguresToQuery(\n keyFigures,\n extendedSearchData.keyFiguresData.keyFiguresGroups.flatMap(keyFigureGroup => keyFigureGroup.keyFigures)\n ),\n mapBrokerIdsToQuery(brokersIds),\n caller ? `caller=${caller}` : \"\",\n ]\n .filter(queryStringPart => queryStringPart.length > 0)\n .join(\"&\");\n\n return queryString;\n};\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport debounce from \"lodash.debounce\";\nimport { NextRouter, useRouter } from \"next/router\";\nimport { subscribe } from \"valtio\";\nimport { useGenericActivityFromElysiumMutation } from \"src/api/client/generic-activity-from-elysium.api\";\nimport { EnumActivityType } from \"src/api/client/generic-activity.api\";\nimport { IExtendedSearchData } from \"src/api/server/extended-search\";\nimport { mapStateToQueryString } from \"src/components/pages/search/utils/map-state-to-query-string\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport { ISearchStore, searchStore } from \"../store/search-store\";\n\nexport function useOnSearchStoreChange(data: IExtendedSearchData) {\n const WAIT_MILLISECONDS = 650;\n const MAX_WAIT = 350;\n\n const router = useRouter();\n const { country } = useRouterLocale();\n const genericActivity = useGenericActivityFromElysiumMutation();\n\n const updateUrl = useCallback(\n (state: ISearchStore, router: NextRouter) => {\n const { origin, pathname, href } = window.location;\n const urlParams = new URLSearchParams(window.location.search);\n const caller = urlParams.get(\"caller\");\n const queryString = mapStateToQueryString(state, data, country, caller);\n router.replace({ pathname, query: queryString, href }, undefined, { shallow: true });\n genericActivity({\n activityTypeId: EnumActivityType.VisitWikifolioSearchPage,\n parameter: queryString,\n referrer: `${origin}${pathname}?${queryString}`,\n });\n },\n [country, data, genericActivity]\n );\n\n const updateUrlDebounced = useMemo(() => debounce(updateUrl, WAIT_MILLISECONDS, { leading: false, maxWait: MAX_WAIT }), [updateUrl]);\n\n useEffect(() => {\n const unsubscribe = subscribe(searchStore, () => {\n updateUrlDebounced(searchStore, router);\n });\n\n return () => unsubscribe();\n }, [router, updateUrlDebounced]);\n}\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport { useBoolean } from \"@chakra-ui/react\";\nimport debounce from \"lodash.debounce\";\nimport isEqual from \"lodash.isequal\";\nimport { IExtendedSearchItem, useExtendedSearchMutation } from \"src/api/client/extended-search.api\";\nimport { ISearchRequestParamsOmitCountry } from \"src/components/pages/search/search.types\";\nimport { logger } from \"src/utils/logger-util\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\n\nconst WAIT_MILLISECONDS = 650;\nconst SEARCH_WIKIFOLIOS_ERROR_MESSAGE = \"An error has occured while searching for wikifolios.\";\n\nexport const useSearch = () => {\n const [resultCount, setResultCount] = useState(null);\n const [results, setResults] = useState(null);\n const [isLoading, setIsLoading] = useBoolean(false);\n const [isFailed, setIsFailed] = useBoolean(false);\n\n const { country } = useRouterLocale();\n const previousParams = useRef(null);\n const searchMutation = useExtendedSearchMutation();\n\n const onSearch = useCallback(\n async (params: ISearchRequestParamsOmitCountry) => {\n const shouldSearchBeOmitted = isEqual(params, previousParams.current);\n previousParams.current = params;\n\n if (shouldSearchBeOmitted) {\n return;\n }\n\n try {\n setIsLoading.on();\n\n const response = await searchMutation({\n country,\n ...params,\n });\n\n setResultCount(response.totalResults);\n\n //TODO: https://wikifolio.atlassian.net/browse/WIKI-31198\n const responseResults = response.results ?? [];\n\n if (params?.offset) {\n setResults(prevResults => [...(prevResults ?? []), ...responseResults]);\n } else {\n setResults(responseResults);\n }\n\n setIsFailed.off();\n } catch (error) {\n logger.error({ message: SEARCH_WIKIFOLIOS_ERROR_MESSAGE, error });\n setIsFailed.on();\n } finally {\n setIsLoading.off();\n }\n },\n [country, searchMutation, setIsFailed, setIsLoading]\n );\n\n const debounceApiCall = useMemo(() => debounce(onSearch, WAIT_MILLISECONDS, { leading: false, maxWait: 350 }), [onSearch]);\n\n return {\n onSearchDebounce: debounceApiCall,\n onSearch,\n resultCount,\n results,\n isLoading,\n isFailed,\n offset: previousParams.current?.offset,\n };\n};\n","import { StackDivider, VStack } from \"@chakra-ui/react\";\nimport { KeyFigure } from \"src/components/common/key-figure\";\nimport { IRankingData, EnumRankingType } from \"src/components/common/ranking/types\";\nimport { useDateTimeFormatter } from \"src/hooks/formatters/use-date-time-formatter\";\nimport { useNumberFormatter } from \"src/hooks/formatters/use-number-formatter\";\n\ninterface ICardRankingsType {\n rankings: IRankingData[];\n currency?: string;\n}\n\nexport const CardRankings = ({ rankings, currency }: ICardRankingsType) => {\n const { formatNumber } = useNumberFormatter();\n const { formatDateShort } = useDateTimeFormatter();\n\n const getValue = (ranking: IRankingData) => {\n if (ranking.type === EnumRankingType.InvestedCapital) {\n return `${currency} ${formatNumber(ranking.value ?? 0)}`;\n }\n\n if (ranking.type === EnumRankingType.Date && ranking.date) {\n return `${formatDateShort(ranking.date)}`;\n }\n\n return undefined;\n };\n\n return (\n } spacing={0}>\n {rankings.map(ranking => (\n \n ))}\n \n );\n};\n","import { useEffect } from \"react\";\nimport { Box, Flex, BoxProps } from \"@chakra-ui/react\";\nimport { IExtendedSearchItem } from \"src/api/client/extended-search.api\";\nimport { WfLinkGhost } from \"src/components/base/wf-link\";\nimport { GoToWikifolioButton } from \"src/components/common/buttons/go-to-wikifolio-button/go-to-wikifolio-button\";\nimport { WatchlistButton } from \"src/components/common/buttons/watchlist-button/watchlist-button\";\nimport { TraderAvatar } from \"src/components/common/trader-avatar\";\nimport { WikifolioOgChartImage } from \"src/components/common/wikifolio-og-chart-image\";\nimport { CardRankings } from \"src/components/pages/search/components/card-result/components/card-rankings\";\nimport { useSearchStore } from \"src/components/pages/search/store/search-store\";\nimport { useGetUserName } from \"src/hooks/use-get-user-name\";\nimport { useLinkBuilder } from \"src/hooks/use-link-builder\";\nimport { useWikifolioStore } from \"src/stores/wikifolio-store\";\nimport { getTrackingUrlParam } from \"src/utils/search-tracking-util\";\n\nconst SEARCH_RESULT_CARD_TEST_ID = \"search-result-card\";\nconst SEARCH_RESULT_CARD_WIKIFOLIO_LINK_TEST_ID = \"search-result-card-wikifolio-link\";\nconst SEARCH_RESULT_CARD_TRADER_PROFILE_LINK_TEST_ID = \"search-result-card-trader-profile-link\";\n\nexport interface ISearchResultCardProps extends IExtendedSearchItem, BoxProps {\n currency?: string;\n}\n\nexport const SearchResultCard = ({\n wikifolioId,\n symbol,\n wikifolioShortDescription,\n trader,\n rankings,\n currency,\n isOnWatchlist = false,\n isInvestable = false,\n ...boxProps\n}: ISearchResultCardProps) => {\n const { buildTraderProfileLink, buildWikifolioLink } = useLinkBuilder();\n const { watchlist, setOnWatchlist } = useWikifolioStore();\n const { query } = useSearchStore();\n const getUserName = useGetUserName();\n\n const placement = \"extended\";\n\n useEffect(() => {\n if (wikifolioId && isOnWatchlist) {\n setOnWatchlist(wikifolioId, isOnWatchlist);\n }\n }, [wikifolioId, isOnWatchlist, setOnWatchlist]);\n\n const traderProfileLink = buildTraderProfileLink(trader.nickName);\n const wikifolioLink = buildWikifolioLink(symbol, getTrackingUrlParam({ placement, query }));\n\n return (\n \n \n \n \n \n {wikifolioShortDescription}\n \n \n {getUserName(trader)}\n \n \n \n \n {/* TODO replace after https://wikifolio.atlassian.net/browse/FA-20 is done */}\n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useEffect, useRef } from \"react\";\n\nexport const useIsMounted = () => {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted.current;\n};\n","import { Box, Flex, Skeleton, SkeletonCircle, StackDivider, VStack } from \"@chakra-ui/react\";\n\nexport const SearchResultCardSkeleton = () => {\n const fakeKeyFigures: { key: number; labelWidth: number; valueWidth: number }[] = [\n { key: 1, labelWidth: 170, valueWidth: 48 },\n { key: 2, labelWidth: 124, valueWidth: 98 },\n { key: 3, labelWidth: 114, valueWidth: 84 },\n { key: 4, labelWidth: 128, valueWidth: 82 },\n { key: 5, labelWidth: 144, valueWidth: 101 },\n ];\n\n return (\n \n \n \n \n \n \n \n \n \n } spacing={0} mb={2}>\n {fakeKeyFigures.map(({ key, labelWidth, valueWidth }) => (\n \n \n \n \n ))}\n \n \n \n \n \n \n );\n};\n","import { SearchResultCardSkeleton } from \"./search-result-card-skeleton\";\n\nconst NumberOfSkeletons = 3;\n\nexport const LoadingSearchResult = () => (\n <>\n {Array(NumberOfSkeletons)\n .fill(0)\n .map((_, index) => (\n \n ))}\n \n);\n","import { useEffect } from \"react\";\nimport { useBoolean } from \"@chakra-ui/react\";\n\nexport const useDelayedSetState = (shouldSetState: boolean, delay: number) => {\n const [state, setState] = useBoolean(true);\n\n useEffect(() => {\n let timerId: ReturnType;\n if (shouldSetState) {\n setState.on();\n } else {\n timerId = setTimeout(() => {\n setState.off();\n }, delay);\n }\n\n return () => {\n clearTimeout(timerId);\n };\n }, [delay, setState, shouldSetState]);\n\n return state;\n};\n","import { useRef } from \"react\";\nimport { Box, Grid } from \"@chakra-ui/react\";\nimport { useTranslation } from \"next-i18next\";\nimport { IExtendedSearchItem } from \"src/api/client/extended-search.api\";\nimport { EmptyState } from \"src/components/common/empty-state\";\nimport { SearchResultCard } from \"src/components/pages/search/components/card-result/search-result-card\";\nimport useViewportSpy from \"src/hooks/dom/use-viewport-spy\";\nimport { useIsMounted } from \"src/hooks/use-is-mounted\";\nimport { LoadingSearchResult } from \"./components/card-result/loading-search-result\";\nimport { useDelayedSetState } from \"./hooks/use-delayed-set-state\";\nimport { ISearch } from \"./search.types\";\nimport { useSearchStore } from \"./store/search-store\";\nimport { getMappedStore } from \"./store/utils\";\n\nconst SEARCH_RESULT_SECTION_NO_RESULTS_TEST_ID = \"search-result-section-no-results\";\n\ninterface IResultSectionProps extends ISearch {\n cards: IExtendedSearchItem[] | null;\n currency?: string;\n resultCount: number | null;\n isFailed: boolean;\n isLoading: boolean;\n hasOffset: boolean;\n}\n\nconst MIN_LOADER_DISPLAY_TIME = 400;\n\nexport const ResultSection = ({ cards, currency, resultCount, onSearch, isFailed, isLoading, hasOffset }: IResultSectionProps) => {\n const { t } = useTranslation(\"extended-search\");\n const searchStore = useSearchStore();\n const isMounted = useIsMounted();\n const shouldShowLoader = isMounted && isLoading && !hasOffset && cards !== null;\n const showLoadingSkeleton = useDelayedSetState(shouldShowLoader, MIN_LOADER_DISPLAY_TIME) || !cards;\n const ref = useRef(null);\n\n const canLoadMore = resultCount !== null && Boolean(resultCount - (cards?.length || 0));\n\n const onIntersecting = (isIntersecting: boolean) => {\n if (isIntersecting && !isLoading && canLoadMore) {\n onSearch({ ...getMappedStore(searchStore), offset: cards?.length });\n }\n };\n\n useViewportSpy(ref, { threshold: [0.1, 0.5, 0.7], onIntersecting });\n\n if (isFailed) {\n return ;\n }\n\n if (cards && cards.length === 0 && !showLoadingSkeleton) {\n return (\n \n );\n }\n\n return (\n \n \n {showLoadingSkeleton ? (\n \n ) : (\n cards?.map(({ wikifolioId, symbol, wikifolioShortDescription, trader, rankings, isOnWatchlist, isInvestable }) => (\n \n ))\n )}\n \n \n \n );\n};\n","import { useEffect } from \"react\";\nimport { useRouter } from \"next/router\";\nimport { IExtendedSearchProps } from \"src/api/server/extended-search\";\nimport { Container } from \"src/components/layout/container\";\nimport { FilterSortSectionsWrapper } from \"src/components/pages/search/filter-sort-sections-wrapper\";\nimport { useFetchResultsOnPageLoad } from \"src/components/pages/search/hooks/use-fetch-results-on-page-load\";\nimport { useOnSearchStoreChange } from \"src/components/pages/search/hooks/use-on-search-store-change\";\nimport { useSearch } from \"src/components/pages/search/hooks/use-search\";\nimport { ResultSection } from \"src/components/pages/search/result-section\";\nimport { getGlobals } from \"src/consts/globals\";\n\nfunction Page({ data }: IExtendedSearchProps) {\n const wikifolioRanking = {\n id: data.rankingsData.defaultSelectedRanking.id,\n sortDirection: data.rankingsData.defaultSelectedRanking.sortDirection,\n };\n const router = useRouter();\n const { onSearch, onSearchDebounce, resultCount, results, isLoading, isFailed, offset } = useSearch();\n useFetchResultsOnPageLoad({ onSearch, extendedSearchData: data, ranking: wikifolioRanking });\n useOnSearchStoreChange(data);\n\n useEffect(() => {\n // This page changes URLs dynamically.\n // We want to avoid browser back button to redirect user to previous search query.\n // With router.replace by default the back button redirects the user back to \\search, instead of previous (another) page.\n // Therefore on back button click on search, I we need to go back twice, to end up on the proper page.\n router.beforePopState(({ as }) => {\n if (as !== router.asPath) {\n router.back();\n }\n return true;\n });\n\n return () => {\n router.beforePopState(() => true);\n };\n }, [router]);\n\n return (\n <>\n \n \n \n \n \n );\n}\n\nexport default Page;\n","import { RefObject, useEffect, useState } from \"react\";\n\ninterface IViewportSpy extends Pick {\n visibleOnce?: boolean;\n onIntersecting?: (isIntersecting: boolean) => void;\n}\n\nconst defaultOptions: IViewportSpy = {\n rootMargin: \"0px\",\n threshold: 0,\n visibleOnce: false,\n};\n\n/*\n Disclaimer:\n This hooks is a part of the 'beautiful-react-hooks' lib.\n Since it was not possible to only import this specific hook from the lib,\n we extracted it in our code base with small adaption\n\n See source code: https://github.com/antonioru/beautiful-react-hooks/blob/master/src/useViewportSpy.ts\n*/\n\n/**\n * Uses the IntersectionObserverMock API to tell whether the given DOM Element (from useRef) is visible within the\n * viewport.\n */\nconst useViewportSpy = (elementRef: RefObject, options: IViewportSpy = defaultOptions) => {\n const [isVisible, setIsVisible] = useState(false);\n const { visibleOnce, threshold, rootMargin, onIntersecting } = options;\n\n useEffect(() => {\n if (!elementRef.current || (isVisible && visibleOnce)) {\n return;\n }\n\n const observer = new window.IntersectionObserver(\n entries =>\n entries.forEach(item => {\n onIntersecting?.(item.isIntersecting);\n setIsVisible(item.isIntersecting);\n }),\n {\n threshold,\n rootMargin,\n }\n );\n observer.observe(elementRef.current);\n\n return () => observer.disconnect();\n }, [elementRef, isVisible, rootMargin, threshold, visibleOnce, onIntersecting]);\n\n return isVisible;\n};\n\nexport default useViewportSpy;\n","import { proxy, useSnapshot } from \"valtio\";\n\nexport const wikifolioStore = proxy({\n watchlist: {} as { [key: string]: boolean },\n\n setOnWatchlist(wikifolioId: string, isOnWatchlist: boolean) {\n wikifolioStore.watchlist[wikifolioId] = isOnWatchlist;\n },\n\n canBeFollowedWikifolios: {} as Record,\n\n setCanBeFollowedWikifolio(wikifolioId: string, canBeFollowed: boolean) {\n wikifolioStore.canBeFollowedWikifolios[wikifolioId] = canBeFollowed;\n },\n});\n\nexport function useWikifolioStore() {\n return useSnapshot(wikifolioStore);\n}\n"],"names":["ComboBoxItem","value","onClick","menuItemProps","param","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","MenuItem","ComboBox","placeholder","size","onChange","children","isDisabled","menuListProps","inputBoxProps","dataTestId","props","field","inputStyle","useMultiStyleConfig","label","setLabel","useState","t","useTranslation","useEffect","find","child","JSON","stringify","showPlaceholder","Box","data-test-id","Menu","isOpen","jsxs","Fragment","MenuButton","pos","disabled","sx","SpanFlex","align","color","undefined","pr","insetY","right","IconCaret","boxSize","transition","transform","MenuList","overflow","Children","cloneElement","GoToWikifolioButton","symbol","href","buttonProps","buildWikifolioLink","useLinkBuilder","link","Button","as","WfLinkUnstyled","WatchlistButtonItself","wikifolioShortDescription","isOnWatchlist","omitTitle","titleBoxProps","IconStar","IconFilledStar","IconOutlineStar","text","jsx_runtime","leftIcon","variant","data-gtm-wikifolio-short-description","className","aria-label","WatchlistToggle","wikifolioId","addedToWatchlistMessage","removedFromWatchlistMessage","setOnWatchlist","openLoginModal","isLoggedIn","useUserStore","removeDialog","useDisclosure","toast","useWfToast","onError","status","EnumToastStatus","title","error","message","mutatePromise","add","isLoading","isLoadingAdd","useAddWatchlistWikifoliosMutation","onSuccess","remove","isLoadingRemove","useRemoveWatchlistWikifoliosMutation","handleOnAdd","onOpen","handleRemove","onClose","WfAlertDialog","onConfirm","confirmButtonText","confirmButtonProps","header","body","WatchlistButton","KeyFigure","ranking","tooltip","hidePoints","rankingValueFontWeight","flexProps","formatDateShort","useDateTimeFormatter","Flex","justify","w","h","flexFlow","Text","lineHeight","type","EnumRankingType","creationDate","noOfLines","wordBreak","fontSize","alignSelf","WfPopover","PopoverButtonIconInfo","ariaLabel","ml","RankingValue","fontWeight","data","Switch","isChecked","colorScheme","ChakraSwitch","WikifolioOgChartImage","ratio","shortDescription","loading","aspectRatioProps","onErrorHandle","AspectRatio","Image","src","createChartImagePreviewUrl","alt","concat","IconFilter","Icon","viewBox","g","fill","fillRule","rect","width","height","path","id","d","IconDownload","SortAsc","clipRule","x","y","rx","SortDesc","cancelButtonText","finalFocusRef","cancelRef","useRef","AlertDialog","leastDestructiveRef","AlertDialogOverlay","AlertDialogContent","maxW","AlertDialogHeader","AlertDialogBody","AlertDialogFooter","Stack","direction","spacing","ref","EnumLeverageProductsIndication","EnumSortDirection","EnumSortDirectionName","AllWikifolios","WikifoliosWithLeverageProducts","WikifoliosWithoutLeverageProducts","PointingUp","PointingDown","SortDirectionButton","sortDirection","IconButton","icon","SAVINGS_PLAN_TAG","REAL_MONEY_TAG","TAG_IDS_IS_INVESTABLE","searchStore","proxy","query","keyFigures","tags","selectedRanking","brokersIds","isInvestable","isAtInvestable","isChInvestable","leverageProductsIndication","useSearchStore","useSnapshot","getShouldSetIsInvestable","newSelectedTags","some","tag","isKeyFigureValueDefault","keyFigure","keyFiguresData","keyFigureDefaultValue","keyFigureValue","defaultKeyFigureMinimum","steps","defaultKeyFigureMaximum","length","min","max","getMappedStore","store","sortByRankingId","tagsIds","map","getTagGroupName","tagsData","Object","keys","key","urlIdentifier","getSelectedTagIdFromGroup","groupTags","selectedTags","selectedIds","filter","includes","getNewSelectedTags","isPopular","tagGroupName","isMutuallyExclusive","selectedTagIdFromGroup","updatedTags","isPopularSavingsPlanTagSelected","setKeyFigures","newKeyFigures","setTags","newTagIds","setIsInvestable","setIsAtInvestable","setIsChInvestable","setQuery","setSortDirection","setSelectedRanking","setBrokersIds","newBrokersIds","setLeverageProductsIndication","resetStore","country","EnumCountryKey","handleTags","onSearch","shouldIsInvestableBeSet","shouldResetBrokersIds","handleResetTags","handleKeyFigureChange","newKeyFigureValue","valueOfNewKeyFigureInStore","at","isNewValueSameAsInStore","indexOfNewKeyFigure","findIndex","handleResetKeyFigures","handleIsInvestable","newTags","tagId","handleIsInvestableInCountry","handleBrokersIds","brokerId","selectedBrokersIds","handleResetSearch","handleSortDirection","handleSortingChange","handleLeverageProducts","handleResetPopularFilters","handleSearch","setDefaultFilters","setNewSearchStoreValues","assign","newSearchStore","InvestableInCountrySwitch","styles","useRouterLocale","event","currentTarget","checked","FormControl","display","alignItems","FormLabel","mb","forwardRef","restButtonProps","ButtonChakra","ButtonSpinner","placement","FilterCategoryItem","badgeInfo","AccordionItem","border","px","backgroundColor","AccordionButton","py","Badge","AccordionIcon","AccordionPanel","pt","pb","getNumberFromInputString","thousandSeparator","parseFloat","replaceAll","replace","getInputValueFromRange","language","rangeValue","showPositiveLeadingSign","formatRangeSliderNumber","getRangeIndexFromInput","inputValue","closestStep","reduce","a","b","Math","abs","indexOf","numberInputRegex","isInputValid","test","getInputPaddingRight","shouldShowPercentageLabel","shouldNegateInputNumber","currentInputValue","defaultMaxInputValue","isNaN","RangeInput","onBlur","handleKeyDown","handleOnFocus","InputGroup","Input","borderRadius","textAlign","target","onKeyDown","stopPropagation","onFocus","InputRightElement","pointerEvents","justifyContent","Marks","marks","i","push","RangeSliderMark","bg","minH","areSelectedInputValuesEqual","prevProps","nextProps","selectedValues","RangeSliderWithInputs","showMarks","minText","maxText","lastRangeStepIndex","firstRangeStep","lastRangeStep","defaultMinValue","defaultMaxValue","defaultMinRangeIndex","defaultMaxRangeIndex","setInputValue","rowRef","isChangingRangeValueRef","rangeIndex","setRangeIndex","useMemo","getMinValue","useCallback","getMaxValue","setMinValueFromRange","setMaxValueFromRange","isInputValueEqualMinDefaultTextValue","isInputValueEqualMaxDefaultTextValue","onRangeChange","prev","onRangeChangeEnd","current","onMinInputChange","onMaxInputChange","handleMinInputBlur","minRangeIndex","minInputValue","minValue","maxValue","handleMaxInputBlur","maxRangeIndex","maxInputValue","enterHandler","KEY_ENTER","focus","handleInputValue","validateInput","newInputValue","onThumbFocus","onThumbBlur","Grid","templateColumns","templateAreas","columnGap","outline","rowGap","mt","_first","tabIndex","GridItem","gridArea","justifySelf","RangeSlider","step","onChangeEnd","cursor","p","RangeSliderTrack","RangeSliderFilledTrack","RangeSliderThumb","index","bgColor","MemoizedRangeSliderWithInputs","memo","RangeSliderList","storeKeyFigures","handleChange","isUnitOfMeasurementPercentage","selectedKeyFigure","storeKeyFigure","minMax","KeyFiguresGroup","keyFiguresGroup","boxProps","headline","WfHeading","KeyFiguresFilter","keyFiguresGroups","numberOfSelectedKeyFigures","totalNumberOfKeyFigures","acc","keyFigureGroup","FilterTagCheckbox","state","getInputProps","useCheckbox","buttonStyles","useStyleConfig","chakra","rounded","_hover","_focus","__css","input","hidden","CheckboxList","filterTags","getCheckboxProps","isTagChecked","selectedTag","KEY_SPACE","preventDefault","TagsList","useCheckboxGroup","basics","tradings","rewards","investmentHorizon","investmentRegion","tagFilters","EnumTagColor","onTagChange","flexWrap","gap","LeverageProductsSelection","Number","newIndication","toString","RadioGroup","String","Radio","PopularFiltersContent","popularKeyFiguresGroup","Divider","borderColor","usePopularFiltersCounter","numberOfSelectedTags","numberOfSelectedLeverageProductIndications","PopularFilters","numberOfSelectedFilters","numberOfPopularFilters","BrokerCheckbox","broker","react","createElement","Checkbox","whiteSpace","buildUrl","logoUrl","partnerName","BrokersCheckboxList","brokers","HStack","wrap","gridRowGap","TagsListWithBrokers","showBrokers","brokerListRef","isMobile","useMediaQuery","BREAKPOINTS","onTagClick","setTimeout","scrollIntoView","behavior","TagsFilter","numbersOfTags","MobileSearchFilter","resultCount","popularTags","onReset","currentResultCount","setCurrentResultCount","formatNumber","useNumberFormatter","isAnyFilterApplied","Boolean","investableSwitchStyles","flexDirection","isInvestableFilterVisible","getShowResultButtonText","onChangeInvestable","Drawer","blockScrollOnMount","DrawerOverlay","DrawerContent","DrawerCloseButton","top","ns","DrawerHeader","borderBottomWidth","borderBottomColor","DrawerBody","Accordion","allowMultiple","DrawerFooter","borderTopWidth","borderTopColor","CustomButton","headingStyles","motionBoxStyle","initial","opacity","animate","exit","position","AnimatedHeading","searchTerm","AnimatePresence","MotionBox","addQuotationsToText","mobileIconStyles","marginTop","marginRight","SearchFilterHeader","handleOnClear","minW","IconClose","MobileSearchFilterContainer","keyFiguresGroupsWithIsPopularIndication","onSearchTermClear","displayedResultsCount","hasResults","wikifoliosFound","Container","Strong","PopoverButton","rightIcon","KeyFiguresFilterBodyContent","showBlur","setShowBlur","faqLink","handleReset","handleBlurWhenOnScroll","element","startedScrolling","scrollTop","scrollbarWidth","WebkitPaddingEnd","background","onScroll","ArrowLink","url","name","KeyFiguresPopover","selectedKeyFigures","Popover","flip","PopoverTrigger","flex","PopoverContent","rootProps","PopoverBody","PopularFiltersPopover","m","TagsFilterBodyContent","resetTags","TagsPopover","SearchFilterContainer","useFilters","popularKeyFigure","FilterSection","router","useRouter","getNormalizedRouterQuery","handleOnSearchTermClear","clonedQuery","sortBy","defaultSelectedRanking","rankingsData","pathname","window","location","shallow","DownloadButton","userNumOfDownloads","downloads","toastVisible","searchMutation","useExtendedSearchDownloadMutation","useMutation","API_DOWNLOAD_URL","accept","duration","onDownloadClick","RankingsDropdownSelector","rankings","relevanceRanking","handleOnChange","defaultSortDirectionForSelectedRanking","shouldRelevanceRankingBeDisabled","textOverflow","maxH","SortSection","isDefaultRankingSelected","onClickSortDirection","onSortingChange","mr","getDefaultRanking","FilterSortSectionsWrapper","onResetSearch","defaultRanking","fixSearchUrlQuery","extendedSearchData","urlSearchParams","parseUrlQueryToUrlSearchParams","fixedQueryParams","getNormalizedUrlParams","delete","COUNTRY_PARAMETER","get","EnumSearchQueryParams","tagsQuery","tagsWithoutSavingPlan","newTagsQuery","removeRedundantCommas","set","updatedQueryParams","getUpdatedUrlParams","Ascending","Descending","getKeyFigureMinAndMaxByKeyFigureId","keyFigureId","defaultMinimum","defaultMaximum","getUrlIdentifier","values","selectedId","mapKeyFiguresFromQuery","urlParams","result","keyFigureFound","minimum","split","maximum","mapKeyFiguresToQuery","selectedKeyFigureUrlIdentifier","sortedSelectedKeyFigures","join","mapLeverageProductsIndicationFromQuery","mapLeverageProductsIndicationToQuery","mapSelectedRankingFromQuery","mapSelectedRankingToQuery","isSelectedRankingDefault","selectedRankingUrlIdentifier","mapTagsFromQuery","filterTag","allTags","flatMap","mapTagsToQuery","getSortDirectionValue","mapSearchParamsToState","sortDirectionParam","allKeyFigures","popularKeyFigures","allKeyFiguresWithIsPopularIndication","mapSearchTermToQuery","encodeURIComponent","mapSortDirectionToQuery","mapIsInvestableToQuery","mapIsChInvestableToQuery","mapIsAtInvestableToQuery","useFetchResultsOnPageLoad","genericActivity","useGenericActivityFromElysiumMutation","atInvestableQuery","chInvestableQuery","investableQuery","queryParams","getQueryParams","searchTermParam","rankingSorted","getOriginPathName","origin","trackGenericActivity","activityTypeId","EnumActivityType","parameter","referrer","updateUrl","handleOnNoneParameters","handleOnExistingParameters","fixedUrlSearchParams","urlSearchParamsToQueryString","queryParamKeys","isOnlySearchTerm","newState","areQueryParamsPresent","mapBrokerIdsToQuery","mapStateToQueryString","caller","queryString","queryStringPart","useSearch","previousParams","setResultCount","results","setResults","setIsLoading","useBoolean","isFailed","setIsFailed","useExtendedSearchMutation","API_SEARCH_URL","retry","MAX_ATTEMPTS","retryDelay","RETRY_DELAY_MS","params","shouldSearchBeOmitted","isEqual","response","on","totalResults","responseResults","offset","prevResults","off","logger","debounceApiCall","debounce","leading","maxWait","onSearchDebounce","CardRankings","currency","getValue","date","VStack","divider","StackDivider","SearchResultCard","trader","buildTraderProfileLink","watchlist","useWikifolioStore","getUserName","useGetUserName","traderProfileLink","nickName","wikifolioLink","getTrackingUrlParam","boxShadow","flexDir","minWidth","TraderAvatar","flexShrink","flexGrow","WfLinkGhost","mx","span","useIsMounted","isMounted","SearchResultCardSkeleton","SkeletonCircle","Skeleton","fakeKeyFigures","labelWidth","valueWidth","LoadingSearchResult","Array","NumberOfSkeletons","_","useDelayedSetState","shouldSetState","delay","setState","timerId","clearTimeout","ResultSection","cards","hasOffset","showLoadingSkeleton","canLoadMore","onIntersecting","isIntersecting","useViewportSpy","threshold","EmptyState","description","zIndex","bottom","left","search_page","getGlobals","wikifolioRanking","useOnSearchStoreChange","URLSearchParams","search","updateUrlDebounced","unsubscribe","subscribe","beforePopState","asPath","back","defaultOptions","rootMargin","visibleOnce","__webpack_exports__","elementRef","options","isVisible","setIsVisible","observer","IntersectionObserver","entries","forEach","item","observe","disconnect","wikifolioStore","canBeFollowedWikifolios","setCanBeFollowedWikifolio","canBeFollowed"],"sourceRoot":""}