{"version":3,"sources":["../ui/src/components/player-components/multiLive/multiLive.tsx","../ui/src/components/player-components/multiLive/multiLiveDialog.tsx","../ui/src/components/player-components/multiLive/multiLiveIcon.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\r\nimport MultiLiveDialog from \"./multiLiveDialog\";\r\nimport MultiLiveIcon from \"./multiLiveIcon\";\r\nimport { useAppDispatch, useAppSelector } from \"redux-share/hooks\";\r\nimport { setClearPopoversSlice, setMultiLivesPopovers } from \"redux-share/slices/popoversSlice\";\r\nimport { API, apiCaller } from \"../../../../../services\";\r\nimport { setMultiLives } from \"redux-share/slices/videoDataSlice\";\r\nimport { conditions, multiLiveVideo, responseValidator } from \"helpers\";\r\nimport { ConditionName } from \"interfaces\";\r\nimport { shallowEqual } from 'react-redux';\r\nimport dynamic from \"next/dynamic\";\r\n\r\nconst ControllbarTooltip = dynamic(() => import(\"../../mainComponent/footer/controllbar/controllbarTooltip\"));\r\n\r\nconst MultiLive = () => {\r\n\r\n    const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n    const dispatch = useAppDispatch();\r\n    const { alternative_Lives, multiLives } = useAppSelector(({ videoData: { alternative_Lives, multiLives } }) => ({ alternative_Lives, multiLives }), shallowEqual);\r\n    const { multiLivesPopover } = useAppSelector(({ popovers: { multiLivesPopover } }) => ({ multiLivesPopover }), shallowEqual);\r\n\r\n    const handleShowMultiLives = async () => {\r\n        dispatch(setClearPopoversSlice());\r\n        dispatch(setMultiLivesPopovers(true))\r\n        const { data, status } = await apiCaller({ url: API().live.multiLives, method: \"POST\", data: { user_ids: [...alternative_Lives] } });\r\n        if (responseValidator(status)) dispatch(setMultiLives(data));\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (!conditions(ConditionName.showMultiLivePopover) && multiLives.length > 0 && multiLiveVideo()) {\r\n            const video = multiLiveVideo();\r\n            video.pause();\r\n            video.removeAttribute('src');\r\n            video.load()\r\n        }\r\n    }, [multiLivesPopover])\r\n\r\n    return (\r\n        <div className=\"pl-relative pl-flex pl-items-center\">\r\n            <MultiLiveIcon\r\n                onClick={handleShowMultiLives}\r\n                onMouseOver={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n                onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n            />\r\n            {showTooltip && <ControllbarTooltip title=\"پخش زنده های دیگر (q)\" className=\"pl-right-[-35px]\" />}\r\n            <MultiLiveDialog status={conditions(ConditionName.showMultiLivePopover)} onClose={() => dispatch(setMultiLivesPopovers(false))} />\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default MultiLive;","import { useRef } from \"react\";\r\nimport Popover from \"../popover/popover\";\r\nimport { useAppSelector } from \"../../../../../redux/hooks\";\r\nimport { conditions } from \"../../../../../helpers\";\r\nimport { ConditionName, IMultiLiveDialogProps } from \"../../../../../interfaces\";\r\nimport useOnClickOutside from \"../../../../../helpers/hooks/useOnClickOutside\";\r\nimport { alternativeLiveLog, sendFluentLog } from \"../../../../../logs\";\r\nimport CloseIcon from \"../../icon-components/closeIcon\";\r\nimport { shallowEqual } from 'react-redux';\r\nimport dynamic from \"next/dynamic\";\r\n\r\nconst PlayerCard = dynamic(() => import(\"../playerCard/playerCard\"));\r\n\r\nconst MultiLiveDialog = ({ status, onClose }: IMultiLiveDialogProps) => {\r\n\r\n    const { params, multiLives } = useAppSelector(({ videoData: { params, multiLives, isComplexPortrait } }) => ({ params, multiLives, isComplexPortrait }), shallowEqual);\r\n\r\n    const multiLiveRef = useRef<any>();\r\n\r\n    const handleBannerSrc = (live: any) => {\r\n        let src: string = \"\";\r\n\r\n        if (live.alternative_banner) src = live.alternative_banner;\r\n        else if (live.banner) src = live.banner;\r\n\r\n        return src;\r\n    }\r\n\r\n    useOnClickOutside(multiLiveRef, () => onClose(false))\r\n\r\n    const multiLivesPopoverContent = conditions(ConditionName.isComplexPortrait) ? (\r\n        <div className=\"pl-flex pl-flex-col pl-gap-3 pl-mx-3\">\r\n            {\r\n                multiLives.length > 0 && multiLives.map((live: any, index: number) => (\r\n                    <div key={live.id} className=\"pl-w-full pl-flex\" style={{ height: 80 }}>\r\n                        <PlayerCard \r\n                            tags={live.tag} \r\n                            id={live.id}\r\n                            userId={live.user_id}\r\n                            width={142} \r\n                            height={80} \r\n                            src={index === 0 ? \"\" : handleBannerSrc(live)} \r\n                            isVideo={index === 0} \r\n                            type=\"live\" \r\n                            title={live.title} \r\n                            viewers={live.viewers} \r\n                            onClick={() => sendFluentLog(alternativeLiveLog(live.user_id))}\r\n                        />\r\n                    </div>\r\n                ))\r\n            }\r\n        </div>\r\n    ) : (\r\n        <div className=\"pl-w-screen pl-h-screen pl-flex pl-flex-col pl-items-start pl-justify-between pl-px-3 pl-pt-[15px]\">\r\n            <div className=\"pl-flex pl-gap-3 pl-text-white\">\r\n                <CloseIcon className=\"pl-cursor-pointer pl-w-6 pl-h-6 pl-stroke-dark-5\" onClick={() => onClose(false)} />\r\n                <p className=\"pl-text-[16px] pl-font-bold\">پخش زنده های دیگر</p>\r\n            </div>\r\n            <div className=\"pl-w-auto pl-overflow-auto pl-flex pl-gap-4 no-scrollbar pl-mb-3\" ref={multiLiveRef}>\r\n                {multiLives.length > 0 && multiLives.map((live: any, index: number) => \r\n                    <div key={live.id} className=\"pl-w-full pl-flex pl-cursor-pointer\" style={{ height: \"100%\" }}>\r\n                        <PlayerCard \r\n                            tags={live.tag} \r\n                            id={live.id}\r\n                            userId={live.user_id}\r\n                            isMultiLive={true} \r\n                            key={live.id} \r\n                            width={240} \r\n                            height={135} \r\n                            src={index === 0 ? \"\" : handleBannerSrc(live)} \r\n                            isVideo={index === 0} \r\n                            type=\"live\" \r\n                            title={live.title} \r\n                            onClick={() => sendFluentLog(alternativeLiveLog(live.user_id))}\r\n                        />\r\n                    </div>\r\n                )}\r\n            </div>\r\n        </div>\r\n    )\r\n\r\n    return (\r\n        <Popover\r\n            status={status}\r\n            onClose={onClose}\r\n            styles={{ width: \"100%\" }}\r\n            isFullHeight={conditions(ConditionName.isComplexPortrait)}\r\n            isHeader={conditions(ConditionName.isComplexPortrait)}\r\n            headerTitle={conditions(ConditionName.isComplexPortrait) ? \"پخش زنده های دیگر\" : \"\"}\r\n            type=\"modal\"\r\n            isHasCatchUpLineOnTop={conditions(ConditionName.isComplexPortrait)}\r\n            classNames={`${conditions(ConditionName.isComplexPortrait) && params.theme === \"light\" ? \"!pl-bg-white\" : \"!pl-bg-black/[0.7]\"}`}\r\n        >\r\n            {multiLivesPopoverContent}\r\n        </Popover>\r\n    )\r\n}\r\n\r\nexport default MultiLiveDialog;","import { useAppSelector } from \"redux-share\";\r\nimport { conditions } from \"../../../../../helpers\";\r\nimport { ConditionName, IMultiLiveIconProps } from \"../../../../../interfaces\";\r\nimport { shallowEqual } from 'react-redux'\r\nimport dynamic from \"next/dynamic\";\r\n\r\nconst MultiLivesIcon = dynamic(() => import(\"../../icon-components/multiLiveIcon\"));\r\n\r\nconst MultiLiveIcon = (props: IMultiLiveIconProps) => {\r\n\r\n    useAppSelector(({ videoData: { isComplexPortrait } }) => ({ isComplexPortrait }), shallowEqual);\r\n\r\n    let icon = <></>;\r\n\r\n    if (conditions(ConditionName.isSplusEnvironment)) icon = <i className={`fa-solid fa-camera-rotate pl-cursor-pointer ${conditions(ConditionName.isMiniPlayer) ? \"pl-text-[13px]\" : \"pl-text-[22px]\"}}`} {...props} />\r\n    else icon = <div className=\"pl-cursor-pointer\" {...props}><MultiLivesIcon className={`${conditions(ConditionName.isComplexPortrait) ? \"pl-w-[16px] pl-h-[16px] pl-fill-gray-800 dark:pl-fill-dark-5\" : `pl-fill-dark-5 ${conditions(ConditionName.isFullMobilePortrait) ? \"pl-w-[13px] pl-h-[13px]\" : \"pl-w-[22px] pl-h-[22px]\"}`}`} strokeColor={!conditions(ConditionName.isComplexPortrait) ? \"black\" : \"\"} /></div>\r\n\r\n    if(conditions(ConditionName.isComplexPortrait)) icon = (\r\n        <div className=\"pl-flex pl-items-center pl-gap-[14px] pl-rounded-[20px] pl-text-secondary-700 dark:pl-text-secondary-50 pl-bg-gray-100 dark:pl-bg-dark-3 pl-px-4 pl-py-[7px] pl-cursor-pointer\" onClick={props.onClick}>\r\n            {icon}\r\n            <span className=\"pl-whitespace-nowrap\">چند دوربینی</span>\r\n        </div>\r\n    )\r\n\r\n    return <>{icon}</>\r\n}\r\n\r\nexport default MultiLiveIcon;"],"mappings":"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","names":["init_esm_shims","useEffect","useState","init_esm_shims","useRef","shallowEqual","dynamic","jsx","jsxs","PlayerCard","MultiLiveDialog","status","onClose","params","multiLives","useAppSelector","isComplexPortrait","multiLiveRef","useRef","handleBannerSrc","live","src","useOnClickOutside_default","multiLivesPopoverContent","conditions","index","sendFluentLog","alternativeLiveLog","closeIcon_default","popover_default","multiLiveDialog_default","init_esm_shims","shallowEqual","dynamic","Fragment","jsx","jsxs","MultiLivesIcon","MultiLiveIcon","props","useAppSelector","isComplexPortrait","icon","conditions","multiLiveIcon_default","shallowEqual","dynamic","jsx","jsxs","ControllbarTooltip","MultiLive","showTooltip","setShowTooltip","useState","dispatch","useAppDispatch","alternative_Lives","multiLives","useAppSelector","multiLivesPopover","handleShowMultiLives","setClearPopoversSlice","setMultiLivesPopovers","data","status","apiCaller","API","responseValidator","setMultiLives","useEffect","conditions","multiLiveVideo","video","multiLiveIcon_default","multiLiveDialog_default","multiLive_default"]}