{"version":3,"sources":["../ui/src/components/player-components/poll/portraitPoll/portraitPoll.tsx"],"sourcesContent":["import { memo, useEffect, useRef, useState } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"redux-share/hooks\";\r\nimport { conditions, handleSumVotes, isVoted, livePoll, seenPoll } from \"helpers\";\r\nimport useOnClickOutside from \"helpers/hooks/useOnClickOutside\";\r\nimport { setClearPopoversSlice, setPollPopover } from \"redux-share/slices/popoversSlice\";\r\nimport { ConditionName } from \"interfaces\";\r\nimport { setSelectedOptionId } from \"redux-share/slices/videoDataSlice\";\r\nimport { shallowEqual } from 'react-redux';\r\nimport dynamic from \"next/dynamic\";\r\n\r\nconst Popover = dynamic(() => import(\"../../popover/popover\"));\r\nconst PortraitPollOption = dynamic(() => import(\"./portraitPollOption\"));\r\n\r\nconst Poll = () => {\r\n\r\n    const dispatch = useAppDispatch();\r\n    const { question, params } = useAppSelector(({ videoData: { question, params } }) => ({ question, params }), shallowEqual);\r\n    const { pollPopover } = useAppSelector(({ popovers: { pollPopover } }) => ({ pollPopover }), shallowEqual);\r\n\r\n    const [sumVotes, setSumVotes] = useState<number>(handleSumVotes(question));\r\n    const [step, setStep] = useState<number>(1);\r\n\r\n\r\n    const pollRef = useRef<any>(null);\r\n\r\n    useOnClickOutside(pollRef, () => {\r\n        dispatch(setPollPopover(false));\r\n        localStorage.setItem(\"seen-poll\", question.id);\r\n    });\r\n\r\n    useEffect(() => {\r\n        if (conditions(ConditionName.hasPoll)) {\r\n            setSumVotes(handleSumVotes(question));\r\n            if (!seenPoll() || (seenPoll() && +seenPoll() !== question.id)) {\r\n                dispatch(setClearPopoversSlice());\r\n                dispatch(setPollPopover(true))\r\n            }\r\n        } else {\r\n            dispatch(setClearPopoversSlice());\r\n            dispatch(setPollPopover(true))\r\n        }\r\n    }, [question])\r\n\r\n    const handleClickOption = (id: number, vote: number) => {\r\n        dispatch(setSelectedOptionId(id));\r\n        // State 2\r\n        if (question || question.active) {\r\n            if ((!!livePoll() && livePoll().liveId !== params.id) || !livePoll()) {\r\n                localStorage.setItem(\"live-poll\", JSON.stringify({\r\n                    liveId: params.id,\r\n                    polls: [{ qid: question.id, oid: id, sumOptionVotes: vote + 1 }]\r\n                }));\r\n            } else {\r\n                if (livePoll().polls.filter((poll: any) => poll.qid === question.id).length === 0 && question.can_vote) {\r\n                    localStorage.setItem(\"live-poll\", JSON.stringify({\r\n                        liveId: params.id,\r\n                        polls: [...livePoll().polls, { qid: question.id, oid: id, sumOptionVotes: vote + 1 }]\r\n                    }));\r\n                }\r\n            }\r\n        }\r\n        setStep(2)\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (conditions(ConditionName.hasPoll)) {\r\n            if (isVoted(question.id)) setStep(2);\r\n            else setStep(1);\r\n        }\r\n    }, [question])\r\n\r\n    return (\r\n        <>\r\n            {conditions(ConditionName.hasPoll) && (\r\n                <Popover\r\n                    status={pollPopover}\r\n                    onClose={() => dispatch(setPollPopover(false))}\r\n                    isBlurBackground\r\n                    ref={pollRef}\r\n                    type=\"popover\"\r\n                >\r\n                    <div className=\"pl-pt-6 pl-pb-4 pl-px-4\" style={{ direction: \"rtl\" }}>\r\n                        <p className={`pl-text-[14px] pl-font-medium pl-w-full ${question.options && question.options.length > 0 && \"pl-mb-3\"}`}>{question.text}</p>\r\n                        {question.options && question.options.length > 0 && (\r\n                            <>\r\n                                {step === 1 ? (\r\n                                    <main className=\"pl-flex pl-flex-col pl-gap-4 pl-overflow-auto pl-max-h-[200px] no-scrollbar\">\r\n                                        {question.options.map((option: any) => (\r\n                                            <p\r\n                                                key={option.id}\r\n                                                className=\"pl-border pl-border-dark-4 pl-w-full pl-break-all pl-text-[13px] pl-px-3 pl-py-2 pl-rounded-[4px] pl-cursor-pointer\"\r\n                                                onClick={() => handleClickOption(option.id, option.vote)}\r\n                                            >\r\n                                                {option.text}\r\n                                            </p>\r\n                                        ))}\r\n                                    </main>\r\n                                ) : (\r\n                                    <div className=\"pl-flex pl-flex-col pl-gap-4 pl-overflow-auto pl-max-h-[200px] no-scrollbar\" style={{ direction: \"rtl\" }}>\r\n                                        {question.options.map((option: any) => (\r\n                                            <PortraitPollOption\r\n                                                option={option}\r\n                                                key={option.id}\r\n                                                lastOptionId={question.options.find((item: any) => item.vote === Math.max(...question.options.map((o: any) => o.vote))).id}\r\n                                                sumVotes={sumVotes}\r\n                                                onClick={() => (question.can_vote && !isVoted(question.id)) && handleClickOption(option.id, option.vote)}\r\n                                            />\r\n                                        ))}\r\n                                        <p className=\"pl-flex pl-gap-1 pl-text-[11px]\">\r\n                                            <span>تعداد کل آرا:</span>\r\n                                            <span>{handleSumVotes(question)} نفر</span>\r\n                                        </p>\r\n                                    </div>\r\n                                )}\r\n                            </>\r\n                        )}\r\n                    </div>\r\n                </Popover>\r\n            )}\r\n        </>\r\n    )\r\n}\r\n\r\nexport default memo(Poll);\r\n"],"mappings":"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","names":["init_esm_shims","memo","useEffect","useRef","useState","shallowEqual","dynamic","Fragment","jsx","jsxs","Popover","PortraitPollOption","Poll","dispatch","useAppDispatch","question","params","useAppSelector","pollPopover","sumVotes","setSumVotes","useState","handleSumVotes","step","setStep","pollRef","useRef","useOnClickOutside_default","setPollPopover","useEffect","conditions","seenPoll","setClearPopoversSlice","handleClickOption","id","vote","setSelectedOptionId","livePoll","poll","isVoted","option","item","o","portraitPoll_default","memo"]}