{"version":3,"file":"static/chunks/3922-6c1f4765a47ad5b0.js","mappings":"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","sources":["webpack://_N_E/./src/api/client/vote-user.api.ts","webpack://_N_E/./src/components/base/filled-circle.tsx","webpack://_N_E/./src/components/base/wf-tooltip.tsx","webpack://_N_E/./src/components/common/article-preview/article-preview.tsx","webpack://_N_E/./src/components/common/voting/use-voting-status.ts","webpack://_N_E/./src/components/common/voting/utils/calculate-proportions.ts","webpack://_N_E/./src/components/common/voting/voting-answer.test-ids.ts","webpack://_N_E/./src/components/common/voting/voting-answer.tsx","webpack://_N_E/./src/components/common/voting/voting-answers-block.tsx","webpack://_N_E/./src/components/common/voting/voting-remaining-days.tsx","webpack://_N_E/./src/components/error-handling/error-boundary.tsx","webpack://_N_E/./src/components/error-handling/index.ts","webpack://_N_E/./src/components/icons/empty-watchlist.tsx","webpack://_N_E/./src/components/icons/filled-quote.tsx","webpack://_N_E/./src/components/icons/success.tsx","webpack://_N_E/./src/components/modals/leave-wikifolio-dialog/leave-wikifolio-dialog.tsx","webpack://_N_E/./src/hooks/following/use-underlying-following.ts","webpack://_N_E/./src/hooks/use-prevent-anchor-default.ts","webpack://_N_E/./src/hooks/use-leave-wikifolio.ts","webpack://_N_E/./src/utils/numbers/calculate-percentage.ts","webpack://_N_E/"],"sourcesContent":["import { IVotingDetailResult } from \"src/components/common/voting/types\";\nimport { API_VOTE_USER_URL } from \"src/consts/urls\";\nimport { useMutation } from \"src/hooks/react-query/use-mutation\";\nimport { IErrorResponse } from \"./types\";\n\nexport interface IVoteUserRequest {\n voteTemplateId: string;\n value: number;\n placement: number;\n}\n\nexport const useVoteUser = () => {\n const { mutate } = useMutation(API_VOTE_USER_URL);\n\n return mutate;\n};\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport { SPACE_UNIT_SIZE_PX } from \"src/theme\";\n\nexport interface IFilledCircleProps extends BoxProps {\n size: number;\n color: string;\n}\n\nexport const FilledCircle = ({ size, color, ...props }: IFilledCircleProps) => (\n \n);\n","import { IWfPopoverProps, WfPopover } from \"src/components/base/wf-popover\";\n\nexport const WfTooltip = (props: Omit) => ;\n","import { useRef } from \"react\";\nimport { AspectRatio, Box, Text, BoxProps, useBoolean } from \"@chakra-ui/react\";\nimport { Article } from \"src/components/base\";\nimport { ResponsiveImage } from \"src/components/base/responsive-image\";\nimport { WfLink } from \"src/components/base/wf-link\";\nimport { IArticlePreview } from \"src/components/common/article-preview/article-preview.types\";\nimport { SimpleRichText } from \"src/components/common/rich-text/simple-rich-text\";\nimport { LeaveWikifolioDialog } from \"src/components/modals/leave-wikifolio-dialog/leave-wikifolio-dialog\";\nimport { useLeaveWikifolio } from \"src/hooks/use-leave-wikifolio\";\nimport { triggerCallbackOnMiddleClickEvent } from \"src/utils/dom/mouse-util\";\n\ntype TFontSizeTitle = \"md\" | \"lg\";\ntype TFontSizeContent = \"sm\" | \"md\";\ntype TSizeMapKey = \"sm\" | \"md\";\ntype TSizeMapValue = { fontSizeTitle: TFontSizeTitle; fontSizeContent: TFontSizeContent };\n\ntype TSizeMap = Record;\nconst sizeMap: TSizeMap = {\n sm: {\n fontSizeTitle: \"md\",\n fontSizeContent: \"sm\",\n },\n md: {\n fontSizeTitle: \"lg\",\n fontSizeContent: \"md\",\n },\n};\n\nexport interface IArticlePreviewProps extends BoxProps {\n articlePreview: IArticlePreview;\n onClick?: () => void;\n size?: TSizeMapKey;\n contentBoxProps?: BoxProps;\n}\n\nexport const ArticlePreview = ({ articlePreview, onClick, size = \"md\", contentBoxProps, ...boxProps }: IArticlePreviewProps) => {\n const { image, siteName, title, description, url } = articlePreview;\n const ref = useRef(null);\n const { isOpen, onClose, onConfirm } = useLeaveWikifolio(ref);\n const [isImgLoadError, setImgLoadError] = useBoolean(false);\n const sizeProps = sizeMap[size];\n const imageUrl = typeof image === \"string\" ? image : image && image.url;\n\n const content = (\n
\n \n {imageUrl && !isImgLoadError && (\n \n setImgLoadError.on()} />\n \n )}\n \n {siteName && (\n \n {siteName}\n \n )}\n {title && (\n \n {title}\n \n )}\n {description && }\n \n \n
\n );\n\n return (\n \n \n {content}\n \n \n \n );\n};\n","import { differenceInDays, differenceInHours, differenceInMinutes, differenceInSeconds, isAfter } from \"date-fns\";\nimport { useTranslation } from \"next-i18next\";\n\nexport const useVotingStatus = (votingUntilString: string, currentDateString: string | undefined) => {\n const { t } = useTranslation(\"voting-module\");\n\n const votingUntilDate = new Date(votingUntilString);\n const currentDate = currentDateString ? new Date(currentDateString) : new Date();\n\n const getMinutesText = () => {\n const remainingMinutes = differenceInMinutes(votingUntilDate, currentDate);\n\n if (remainingMinutes > 1) {\n return t(\"several-minutes-left\", { 0: remainingMinutes });\n }\n\n if (remainingMinutes >= 0) {\n const remainingSeconds = differenceInSeconds(votingUntilDate, currentDate);\n if (remainingSeconds > 0) {\n return t(\"one-minute-left\");\n }\n }\n\n return t(\"voting-ended\");\n };\n\n const getHoursText = () => {\n const remainingHours = differenceInHours(votingUntilDate, currentDate);\n\n if (remainingHours > 1) {\n return t(\"several-hours-left\", { 0: remainingHours });\n }\n\n if (remainingHours === 1) {\n return t(\"one-hour-left\");\n }\n\n return getMinutesText();\n };\n\n return {\n getText: () => {\n const remainingDays = differenceInDays(votingUntilDate, currentDate);\n\n if (remainingDays > 1) {\n return t(\"several-days-left\", { 0: remainingDays });\n }\n\n if (remainingDays === 1) {\n return t(\"one-day-left\");\n }\n\n return getHoursText();\n },\n hasEnded: isAfter(currentDate, votingUntilDate),\n };\n};\n","import { IVoteSummaryItem } from \"src/components/common/voting/types\";\n\nexport const calculateProportionsOfCounts = (\n answers: ReadonlyArray,\n voteSummary: ReadonlyArray | null\n): ReadonlyArray => {\n const sum = voteSummary?.reduce((partialSummary, voteSummaryItem) => partialSummary + (voteSummaryItem.count ?? 0), 0) ?? 0;\n\n return answers.map((answer, index) => {\n if (sum === 0) {\n return 0;\n }\n\n const foundVoteSummaryItem = voteSummary?.find(item => Number(item.choice) === index);\n\n return (foundVoteSummaryItem?.count ?? 0) / sum;\n });\n};\n","export const VOTING_MODULE_ANSWER_TEST_ID = \"voting-module-answer\";\nexport const VOTING_MODULE_ANSWER_COUNT_TEST_ID = \"voting-module-answer-count\";\n","import { MouseEvent, useCallback } from \"react\";\nimport { Progress, Radio, Text } from \"@chakra-ui/react\";\nimport { SpanFlex } from \"src/components/base\";\nimport { formatPercent } from \"src/hooks/formatters/number-formatter\";\nimport { IVotingAnswer } from \"src/types/common\";\nimport { useRouterLocale } from \"src/utils/router/use-router-locale\";\nimport { isNumber } from \"src/utils/type-utils\";\nimport { VOTING_MODULE_ANSWER_COUNT_TEST_ID, VOTING_MODULE_ANSWER_TEST_ID } from \"./voting-answer.test-ids\";\n\nconst COMMON_HEIGHT = [9, 7];\n\nexport interface IVotingAnswerProps extends IVotingAnswer {\n isDisabled: boolean;\n isChecked: boolean;\n onClick: () => void;\n}\n\nexport const VotingAnswer = ({ text, count, onClick, isDisabled, isChecked }: IVotingAnswerProps) => {\n const { language } = useRouterLocale();\n\n const countPercents = typeof count === \"undefined\" ? undefined : count * 100;\n\n const handleClick = useCallback(\n (e: MouseEvent) => {\n // We have to check if the origin of the event is the input because it triggers the unwanted second call\n if (!isDisabled && !isChecked && (e.target as HTMLElement).nodeName !== \"INPUT\") {\n onClick();\n }\n },\n [isChecked, isDisabled, onClick]\n );\n\n return (\n \n \n \n {text}\n \n \n {isNumber(count) && (\n \n {formatPercent({ value: count, language })}\n \n )}\n \n );\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { IVoteSummaryItem } from \"src/components/common/voting/types\";\nimport { calculateProportionsOfCounts } from \"src/components/common/voting/utils/calculate-proportions\";\nimport { VotingAnswer } from \"src/components/common/voting/voting-answer\";\nimport { isServerSide } from \"src/utils/common-util\";\n\ninterface IVotingAnswersBlockProps {\n answers: ReadonlyArray;\n selectedAnswerIndex: string | null;\n voteSummary: ReadonlyArray | null;\n onVoteChange: (userChoice: number) => void;\n hasVotingEnded: boolean;\n}\n\nexport const VotingAnswersBlock = ({ answers, selectedAnswerIndex, voteSummary, onVoteChange, hasVotingEnded }: IVotingAnswersBlockProps) => {\n const defaultCountPercentages = Array(answers.length).fill(0);\n const [visiblePercentages, setVisiblePercentages] = useState>(defaultCountPercentages);\n\n const calculatedPercentages = useMemo(() => calculateProportionsOfCounts(answers, voteSummary), [answers, voteSummary]);\n\n const getAnswerPercentageCount = useCallback(\n (index: number) => {\n if (selectedAnswerIndex || hasVotingEnded) {\n return isServerSide() ? calculatedPercentages[index] : visiblePercentages[index];\n }\n },\n [hasVotingEnded, selectedAnswerIndex, calculatedPercentages, visiblePercentages]\n );\n\n useEffect(() => {\n // to guarantee the re-rendering that provides the animation\n setTimeout(() => setVisiblePercentages(calculatedPercentages), 0);\n }, [calculatedPercentages, voteSummary]);\n\n return (\n <>\n {answers.map((answer, index) => (\n onVoteChange(index)}\n />\n ))}\n \n );\n};\n","import { HStack, Text } from \"@chakra-ui/react\";\nimport { FilledCircle } from \"src/components/base/filled-circle\";\nimport { useVotingStatus } from \"src/components/common/voting/use-voting-status\";\n\nconst VOTING_MODULE_REMAINING_DAYS_PART_TEST_ID = \"voting-module-remaining-days-part\";\n\nexport interface IVotingRemainingDaysProps {\n votingUntilDate: string;\n currentDate: string | undefined;\n}\n\nexport const VotingRemainingDays = ({ votingUntilDate, currentDate }: IVotingRemainingDaysProps) => {\n const { getText, hasEnded } = useVotingStatus(votingUntilDate, currentDate);\n\n return (\n \n \n {getText()}\n \n );\n};\n","import { Component, ComponentType, ErrorInfo, PropsWithChildren, ReactNode } from \"react\";\nimport { Box } from \"@chakra-ui/react\";\nimport { Alert, AlertIcon, AlertTitle, AlertDescription } from \"@chakra-ui/react\";\nimport config from \"src/config\";\nimport { logger } from \"src/utils/logger-util\";\n\nconst UNHANDLED_ERROR_MESSAGE = \"Unhandled error caught in ErrorBoundary\";\n\ninterface IFallbackProps {\n /** Error object from caught exception */\n error: Error;\n}\n\ninterface IErrorBoundaryProps {\n /** Callback invoked when an error is caught. Used if you want to have additional side-effects on error */\n onError?: (error: Error, info: { componentStack: string }) => void;\n /** Component that will be rendered if an error is caught when rendering children */\n FallbackComponent?: ComponentType;\n}\n\ninterface IErrorBoundaryState {\n error: Error | null;\n}\n\n/**\n * Error Boundary component -- wrap other components in an ErrorBoundary component\n * to prevent uncaught exceptions in child components from wrecking react page-wide.\n *\n * Optionally pass FallbackComponent for a replacement node in case of error.\n * If no error is caught, the children are rendered normally.\n */\nexport class ErrorBoundary extends Component, IErrorBoundaryState> {\n static getDerivedStateFromError(error: Error): IErrorBoundaryState {\n return { error };\n }\n\n state: IErrorBoundaryState = { error: null };\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n const { onError } = this.props;\n onError?.(error, info);\n\n logger.error({ message: UNHANDLED_ERROR_MESSAGE, error, errorInfo: info });\n }\n\n render(): ReactNode {\n const { error } = this.state;\n const { FallbackComponent, children } = this.props;\n\n if (error !== null) {\n if (FallbackComponent) {\n return ;\n }\n\n // if we caught an error in DEV then write out the stack trace.\n if (config.isDev) {\n return (\n \n \n \n Something went wrong!\n {error.stack}\n \n \n );\n }\n\n // returning empty react tree on PROD on error if FallBackComponent is not provided.\n return null;\n }\n\n return children;\n }\n}\n","export { ErrorBoundary } from \"./error-boundary\";\n","import { Icon } from \"@chakra-ui/react\";\nimport { TIconComponent } from \"./icon-component.types\";\n\nexport const IconEmptyWatchlist: TIconComponent = props => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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 IconFilledQuote: TIconComponent = props => (\n \n \n \n);\n","import { Icon } from \"@chakra-ui/react\";\nimport { TIconComponent } from \"./icon-component.types\";\n\nexport const IconSuccess: TIconComponent = props => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useTranslation } from \"next-i18next\";\nimport { WfAlertDialog } from \"src/components/modals/wf-alert-dialog/wf-alert-dialog\";\n\ninterface ILeaveWikifolioDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onConfirm: () => void;\n}\n\nexport const LeaveWikifolioDialog = ({ isOpen, onClose, onConfirm }: ILeaveWikifolioDialogProps) => {\n const { t } = useTranslation(\"common\");\n\n return (\n \n );\n};\n","import { useTranslation } from \"next-i18next\";\nimport { useAddWatchlistUnderlyingsMutation, useRemoveWatchlistUnderlyingsMutation } from \"src/api/client/watchlist.api\";\nimport { EnumToastStatus, useWfToast } from \"src/hooks/use-wf-toast\";\nimport { useUnderlyingFollowStore } from \"src/stores/uderlying-follow-store\";\nimport { useUserStore } from \"src/stores/user-store\";\nimport { useLinkBuilder } from \"../use-link-builder\";\n\nconst SUCCESS_MESSAGE_DURATION = 5000;\nexport const useUnderlyingFollowing = (underlyingIsin: string) => {\n const { t } = useTranslation(\"common\");\n const { setIsFollowedUnderlying, canBeFollowedUnderlyingIsins, followedUnderlyingIsins } = useUnderlyingFollowStore();\n const toast = useWfToast();\n const { isLoggedIn } = useUserStore();\n const { openLoginModal } = useLinkBuilder();\n\n const isFollowed = followedUnderlyingIsins.includes(underlyingIsin);\n const canBeFollowed = canBeFollowedUnderlyingIsins.includes(underlyingIsin);\n\n const onError = () => {\n toast({ status: EnumToastStatus.Error, title: t(\"general-error\") });\n setIsFollowedUnderlying(underlyingIsin, !isFollowed);\n };\n\n const onSuccess = (message: string) => () => {\n toast({\n duration: SUCCESS_MESSAGE_DURATION,\n status: EnumToastStatus.Success,\n title: message,\n });\n };\n\n const addWatchlistUnderlyingsMutation = useAddWatchlistUnderlyingsMutation({ onError, onSuccess: onSuccess(t(\"underlying-follow-success\")) });\n const removeWatchlistUnderlyingsMutation = useRemoveWatchlistUnderlyingsMutation(underlyingIsin, {\n onError,\n onSuccess: onSuccess(t(\"underlying-unfollow-success\")),\n });\n\n const toggleIsFollowed = () => {\n if (!isLoggedIn) {\n openLoginModal();\n return;\n }\n\n setIsFollowedUnderlying(underlyingIsin, !isFollowed);\n\n if (isFollowed) {\n removeWatchlistUnderlyingsMutation.mutate();\n } else {\n addWatchlistUnderlyingsMutation.mutate({ isin: underlyingIsin });\n }\n };\n\n return {\n canBeFollowed,\n isFollowed,\n toggleIsFollowed,\n };\n};\n","import { MutableRefObject, useCallback, useEffect } from \"react\";\n\ninterface IPreventAnchorDefaultProps {\n ref: MutableRefObject;\n onAnchorClick: (href: string) => void;\n}\n\nconst DATA_PREVENT_DEFAULT = \"data-prevent-default\";\n\n/** Takes a reference of a DOM node, find all anchors attach event on click,\n * if is the same host name opens the link\n */\nexport const usePreventAnchorDefault = ({ ref, onAnchorClick }: IPreventAnchorDefaultProps) => {\n const onClick = useCallback(\n (event: MouseEvent) => {\n if (event) {\n const link = event.currentTarget as HTMLAnchorElement;\n if (location.hostname !== link.hostname) {\n event.preventDefault();\n onAnchorClick(link.href);\n }\n }\n },\n [onAnchorClick]\n );\n\n useEffect(() => {\n if (!ref?.current) {\n return;\n }\n\n const anchors = Array.from(ref.current.getElementsByTagName(\"a\"));\n\n anchors.forEach(anchor => {\n // in case of nesting, prevent attaching more events to anchor\n if (!anchor.getAttribute(DATA_PREVENT_DEFAULT)) {\n anchor.addEventListener(\"click\", onClick);\n anchor.setAttribute(DATA_PREVENT_DEFAULT, \"true\");\n }\n });\n\n return () => {\n anchors.forEach(anchor => {\n anchor.removeEventListener(\"click\", onClick);\n anchor.removeAttribute(DATA_PREVENT_DEFAULT);\n });\n };\n }, [onClick, ref]);\n};\n","import { MutableRefObject, useCallback, useRef } from \"react\";\nimport { useDisclosure } from \"@chakra-ui/react\";\nimport { openLinkInNewTab } from \"src/hooks/use-link-builder\";\nimport { usePreventAnchorDefault } from \"./use-prevent-anchor-default\";\n\ninterface IReturn {\n isOpen: boolean;\n onClose: () => void;\n onConfirm: () => void;\n}\n\nexport const useLeaveWikifolio = (ref: MutableRefObject): IReturn => {\n const refUrl = useRef(null);\n\n const { isOpen, onOpen, onClose } = useDisclosure();\n\n const handleOnAnchorClick = useCallback(\n (href: string) => {\n onOpen();\n refUrl.current = href;\n },\n [onOpen]\n );\n\n usePreventAnchorDefault({\n ref,\n onAnchorClick: handleOnAnchorClick,\n });\n\n const onConfirm = () => {\n onClose();\n if (refUrl.current) {\n openLinkInNewTab(refUrl.current);\n }\n };\n\n return { isOpen, onClose, onConfirm };\n};\n","/**\n * Calculates the percentage of a part with respect to a whole.\n *\n * @param part - The part you want to find the percentage of.\n * @param whole - The whole or total value.\n * @param round - boolean indicating if the value should be rounded to the nearest whole number.\n *\n * @returns The calculated percentage.\n */\nexport function calculatePercentage(part: number, whole: number, round: boolean = false): number {\n const valuePercentage = (part / whole) * 100;\n return round ? Math.round(valuePercentage) : valuePercentage;\n}\n"],"names":["useVoteUser","mutate","useMutation","API_VOTE_USER_URL","FilledCircle","size","color","props","param","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","Box","w","h","rounded","SPACE_UNIT_SIZE_PX","bg","WfTooltip","WfPopover","trigger","sizeMap","sm","fontSizeTitle","fontSizeContent","md","ArticlePreview","articlePreview","onClick","contentBoxProps","boxProps","image","siteName","title","description","url","ref","useRef","isOpen","onClose","onConfirm","useLeaveWikifolio","isImgLoadError","setImgLoadError","useBoolean","sizeProps","imageUrl","content","Article","onAuxClick","triggerCallbackOnMiddleClickEvent","jsxs","display","role","AspectRatio","mb","ratio","ResponsiveImage","height","width","baseUrl","alt","onError","on","Text","fontSize","fontWeight","_groupHover","textDecor","SimpleRichText","text","WfLink","variant","href","target","aria-label","LeaveWikifolioDialog","useVotingStatus","votingUntilString","currentDateString","t","useTranslation","votingUntilDate","Date","currentDate","getMinutesText","remainingMinutes","differenceInMinutes","remainingSeconds","differenceInSeconds","getHoursText","remainingHours","differenceInHours","getText","remainingDays","differenceInDays","hasEnded","isAfter","calculateProportionsOfCounts","answers","voteSummary","voteSummaryItem","sum","reduce","partialSummary","count","map","answer","index","foundVoteSummaryItem","find","item","Number","choice","COMMON_HEIGHT","VotingAnswer","isDisabled","isChecked","language","useRouterLocale","handleClick","useCallback","e","nodeName","jsx_runtime","Progress","value","undefined","border","borderColor","backgroundColor","cursor","data-test-id","Radio","position","top","left","alignItems","pr","isNumber","SpanFlex","align","right","formatPercent","VotingAnswersBlock","selectedAnswerIndex","onVoteChange","hasVotingEnded","defaultCountPercentages","Array","length","fill","visiblePercentages","setVisiblePercentages","useState","calculatedPercentages","useMemo","getAnswerPercentageCount","isServerSide","useEffect","setTimeout","Fragment","VotingRemainingDays","HStack","ErrorBoundary","Component","getDerivedStateFromError","error","componentDidCatch","info","logger","message","errorInfo","render","state","FallbackComponent","children","config","Alert","status","AlertIcon","flexFlow","AlertTitle","mr","AlertDescription","stack","IconEmptyWatchlist","Icon","viewBox","g","clipPath","path","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","strokeMiterlimit","defs","id","rect","transform","IconFilledQuote","IconSuccess","WfAlertDialog","confirmButtonText","header","body","useUnderlyingFollowing","setIsFollowedUnderlying","canBeFollowedUnderlyingIsins","followedUnderlyingIsins","useUnderlyingFollowStore","toast","useWfToast","isLoggedIn","useUserStore","openLoginModal","useLinkBuilder","isFollowed","includes","underlyingIsin","canBeFollowed","EnumToastStatus","onSuccess","duration","addWatchlistUnderlyingsMutation","useAddWatchlistUnderlyingsMutation","removeWatchlistUnderlyingsMutation","useRemoveWatchlistUnderlyingsMutation","toggleIsFollowed","isin","DATA_PREVENT_DEFAULT","usePreventAnchorDefault","onAnchorClick","event","link","currentTarget","location","hostname","preventDefault","current","anchors","from","getElementsByTagName","forEach","anchor","getAttribute","addEventListener","setAttribute","removeEventListener","removeAttribute","refUrl","onOpen","useDisclosure","handleOnAnchorClick","openLinkInNewTab","calculatePercentage","part","whole","round","valuePercentage","Math"],"sourceRoot":""}