cafe-video-player 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chunk-3Q5F32UV.js +2 -0
- package/chunk-3Q5F32UV.js.map +1 -0
- package/chunk-5F7JQEMY.mjs +2 -0
- package/chunk-5F7JQEMY.mjs.map +1 -0
- package/chunk-A3BCKK27.js +2 -0
- package/chunk-A3BCKK27.js.map +1 -0
- package/chunk-RCU5ZGMI.js +2 -0
- package/chunk-RCU5ZGMI.js.map +1 -0
- package/chunk-TU7BZ2RY.mjs +2 -0
- package/chunk-TU7BZ2RY.mjs.map +1 -0
- package/chunk-VA5NNH6I.mjs +2 -0
- package/chunk-VA5NNH6I.mjs.map +1 -0
- package/closeIcon-F4QAFIMQ.js +2 -0
- package/closeIcon-F4QAFIMQ.js.map +1 -0
- package/closeIcon-XWQDG2XW.mjs +2 -0
- package/closeIcon-XWQDG2XW.mjs.map +1 -0
- package/font/IRANSansXFaNum-Bold.woff2 +0 -0
- package/font/IRANSansXFaNum-Medium.woff2 +0 -0
- package/font/IRANSansXFaNum-Regular.woff2 +0 -0
- package/index.d.mts +61 -0
- package/index.d.ts +61 -0
- package/index.js +8 -0
- package/index.js.map +1 -0
- package/index.mjs +8 -0
- package/index.mjs.map +1 -0
- package/nonStaticVideoTag-GRFP3ZOG.js +2 -0
- package/nonStaticVideoTag-GRFP3ZOG.js.map +1 -0
- package/nonStaticVideoTag-RA4FM55H.mjs +2 -0
- package/nonStaticVideoTag-RA4FM55H.mjs.map +1 -0
- package/package.json +40 -0
- package/staticVideoTag-KJ27S5UW.mjs +2 -0
- package/staticVideoTag-KJ27S5UW.mjs.map +1 -0
- package/staticVideoTag-SHIMRS2E.js +2 -0
- package/staticVideoTag-SHIMRS2E.js.map +1 -0
- package/videoPlayerStyles.css +4028 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/videoPlayerLibrary/helpers/configs/nextConfigs/next.config.js","../src/videoPlayerLibrary/helpers/configs/npmPackage/npmPackage.ts","../src/videoPlayerLibrary/helpers/redux/slices/controllerSlice.ts","../src/videoPlayerLibrary/helpers/redux/slices/videoDataSlice.ts","../src/videoPlayerLibrary/helpers/interfaces/enums.ts","../src/videoPlayerLibrary/helpers/constants.ts","../src/videoPlayerLibrary/helpers/environment.ts","../src/videoPlayerLibrary/helpers/conditions/conditions.ts","../src/videoPlayerLibrary/helpers/helpers.ts","../src/videoPlayerLibrary/helpers/redux/store.ts","../src/videoPlayerLibrary/helpers/redux/slices/popoversSlice.ts","../src/videoPlayerLibrary/helpers/redux/slices/userSlice.ts","../src/videoPlayerLibrary/helpers/services/apiCaller.ts","../src/videoPlayerLibrary/helpers/services/baseUrl.ts","../src/videoPlayerLibrary/helpers/services/services.ts","../src/videoPlayerLibrary/helpers/redux/actions/user.actions.ts","../src/videoPlayerLibrary/helpers/redux/hooks.ts","../src/videoPlayerLibrary/helpers/logs/logs.ts","../src/videoPlayerLibrary/helpers/logs/fluentdLogger.ts","../src/videoPlayerLibrary/helpers/redux/actions/controller.actions.ts","../src/videoPlayerLibrary/helpers/redux/actions/videoData.actions.ts","../src/videoPlayerLibrary/helpers/getDetailsConfigs.ts"],"sourcesContent":["module.exports = {\r\n NEXT_PUBLIC_HAMRAHI_PLAYER_SERVICES_STATUS: process.env.NEXT_PUBLIC_HAMRAHI_PLAYER_SERVICES_STATUS\r\n ? process.env.NEXT_PUBLIC_HAMRAHI_PLAYER_SERVICES_STATUS\r\n : \"development\",\r\n status: \"development\",\r\n baseUrl: \"https://hamrahi.cloud\",\r\n driveRestAPI: \"https://hamrahi.cloud/api\",\r\n chatBaseUrl: \"wss://hamrahi.cloud/\",\r\n GA_MEASUREMENT_ID: \"G-5JZ2S6WR6D\",\r\n favIconUrl: \"https://hamrahi.cloud/drive/hamrahi.svg\",\r\n zarebinUserConfig: \"https://hamrahi.cloud/get-header\",\r\n trackerRestAPI: \"https://hamrahi.cloud\",\r\n aggregatorBaseUrl: \"https://aggregator.hamrahi.cloud/\",\r\n setAggregatorBaseUrl: \"https://setaggregator.hamrahi.cloud/\",\r\n fluentdUrl: \"https://hamrahi.cloud\",\r\n loginRedirectUrl: \"zarebinlite://login\",\r\n splusLoginRedirectUrl: \"soroush://lookup?key=SplusCampaign\",\r\n splusDownloadAppUrl: \"https://splus.ir/p/download\",\r\n cookieKey: \"HAMRAHI_CLOUD_AUTH_TOKEN\",\r\n whiteListTargets: \"abrehamrahi.ir,hamrahi.cloud,sthamrahi.ir\",\r\n whiteListGeneralUrl: \"hamrahi.cloud,abrehamrahi.ir,zarebin.ir,mohtava.cloud,eshterak.cloud\",\r\n sendXToken: \"true\",\r\n chatAPIBaseUrl: \"https://hamrahi.cloud/chatapi/\",\r\n zarebinNasle3Url: \"https://bw3.zarebin.ir\",\r\n assistant: false,\r\n initialLoadedFragmentCount: \"1\",\r\n filmAndSerialAllowedUsers: JSON.stringify([\r\n {\r\n user_id: 216\r\n },\r\n {\r\n user_id: 196\r\n }\r\n ]),\r\n keshtAllowedUsers: JSON.stringify([\r\n {\r\n user_id: 98735\r\n }\r\n ]),\r\n keshtBasePath: \"/keshavarzi\",\r\n keshtAppName: \"کشت قراردادی\",\r\n filmAndSerialBasePath: \"/film-serial\",\r\n hamrahiCloudLanding: \"https://hamrahi.cloud/\",\r\n commentPanel: \"https://hamrahi.cloud/comments/\"\r\n};\r\n","export const isNpmPackage = false;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IControllerSlice } from \"../../interfaces/interfaces\";\r\n\r\nconst ControllerSliceState: IControllerSlice = {\r\n play: false,\r\n isAutoPlay: true,\r\n duration: 0,\r\n currentTime: 0,\r\n mouseMoveTime: 0,\r\n qualityLevels: [],\r\n qualityBitrates: [],\r\n manualQuality: undefined,\r\n autoQuality: undefined,\r\n activeElements: true,\r\n isLive: false,\r\n isLoading: false,\r\n isFullScreen: false,\r\n bufferedTimeWidth: 0,\r\n firstPlay: true,\r\n hlsLiveSyncPosition: 0,\r\n activePointerProgressBar: false,\r\n delayTurnOffControlbar: false,\r\n canPlayVideo: false,\r\n lock: false,\r\n isEnded: false,\r\n tooltipTime: 0,\r\n showMiniPlayer: false,\r\n isClickInnerCard: false,\r\n loadedFragmentsCount: []\r\n};\r\n\r\nexport const controllerSlice = createSlice({\r\n name: \"controller\",\r\n initialState: ControllerSliceState,\r\n reducers: {\r\n setPlay: (state, action: PayloadAction<boolean>) => {\r\n state.play = action.payload;\r\n },\r\n setIsAutoPlay: (state, action: PayloadAction<boolean>) => {\r\n state.isAutoPlay = action.payload;\r\n },\r\n setDuration: (state, action: PayloadAction<number>) => {\r\n state.duration = action.payload;\r\n },\r\n setCurrentTime: (state, action: PayloadAction<number>) => {\r\n state.currentTime = action.payload;\r\n },\r\n setMouseMoveTime: (state, action: PayloadAction<number>) => {\r\n state.mouseMoveTime = action.payload;\r\n },\r\n setManualQuality: (state, action: PayloadAction<number | undefined>) => {\r\n state.manualQuality = action.payload;\r\n },\r\n setAutoQuality: (state, action: PayloadAction<number | undefined>) => {\r\n state.autoQuality = action.payload;\r\n },\r\n setQualityLevels: (state, action: PayloadAction<any[]>) => {\r\n state.qualityLevels = action.payload;\r\n },\r\n setQualityBitrates: (state, action: PayloadAction<string[]>) => {\r\n state.qualityBitrates = action.payload;\r\n },\r\n setActiveElements: (state, action: PayloadAction<boolean>) => {\r\n state.activeElements = action.payload;\r\n },\r\n setIsLive: (state, action: PayloadAction<boolean>) => {\r\n state.isLive = action.payload;\r\n },\r\n setIsLoading: (state, action: PayloadAction<boolean>) => {\r\n state.isLoading = action.payload;\r\n },\r\n setIsFullScreen: (state, action: PayloadAction<boolean>) => {\r\n state.isFullScreen = action.payload;\r\n },\r\n setBufferedTimeWidth: (state, action: PayloadAction<number>) => {\r\n state.bufferedTimeWidth = action.payload;\r\n },\r\n setFirstPlay: (state, action: PayloadAction<boolean>) => {\r\n state.firstPlay = action.payload;\r\n },\r\n setHlsLivePosition: (state, action: PayloadAction<any>) => {\r\n state.hlsLiveSyncPosition = action.payload;\r\n },\r\n setActivePointerProgressBar: (state, action: PayloadAction<boolean>) => {\r\n state.activePointerProgressBar = action.payload;\r\n },\r\n setDelayTurnOffControlbar: (state, action: PayloadAction<boolean>) => {\r\n state.delayTurnOffControlbar = action.payload;\r\n },\r\n setCanPlayVideo: (state, action: PayloadAction<boolean>) => {\r\n state.canPlayVideo = action.payload;\r\n },\r\n setLock: (state, action: PayloadAction<boolean>) => {\r\n state.lock = action.payload;\r\n },\r\n setIsEnded: (state, action: PayloadAction<boolean>) => {\r\n state.isEnded = action.payload;\r\n },\r\n setTooltipTime: (state, action: PayloadAction<number>) => {\r\n state.tooltipTime = action.payload;\r\n },\r\n setShowMiniPlayer: (state, action: PayloadAction<boolean | undefined>) => {\r\n state.showMiniPlayer = action.payload;\r\n },\r\n setIsClickInnerCard: (state, action: PayloadAction<boolean>) => {\r\n state.isClickInnerCard = action.payload;\r\n },\r\n setLoadedFragmentsCount: (state, action: PayloadAction<number[]>) => {\r\n state.loadedFragmentsCount = action.payload;\r\n },\r\n setClearControllerSlice: () => {\r\n return ControllerSliceState;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setPlay,\r\n setIsAutoPlay,\r\n setDuration,\r\n setCurrentTime,\r\n setMouseMoveTime,\r\n setQualityLevels,\r\n setQualityBitrates,\r\n setAutoQuality,\r\n setActiveElements,\r\n setIsLive,\r\n setIsLoading,\r\n setIsFullScreen,\r\n setBufferedTimeWidth,\r\n setFirstPlay,\r\n setHlsLivePosition,\r\n setActivePointerProgressBar,\r\n setDelayTurnOffControlbar,\r\n setManualQuality,\r\n setCanPlayVideo,\r\n setLock,\r\n setIsEnded,\r\n setTooltipTime,\r\n setShowMiniPlayer,\r\n setClearControllerSlice,\r\n setIsClickInnerCard,\r\n setLoadedFragmentsCount\r\n} = controllerSlice.actions;\r\nexport default controllerSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IMarker, IVideoElementSizeInfo, IPlayList, IWebListConfig, IDetails, IVideoDataSlice, ISubtitleColor } from \"../../interfaces/interfaces\";\r\n\r\nexport const VideoDataSliceState: IVideoDataSlice = {\r\n details: {\r\n stream_link: \"\",\r\n type: \"\",\r\n banner: \"\",\r\n id: undefined,\r\n title: undefined,\r\n description: undefined,\r\n viewers: undefined,\r\n live_viewers: undefined,\r\n like: undefined,\r\n start_time: undefined,\r\n tag: undefined,\r\n subtitles: undefined,\r\n vtt: undefined,\r\n vtt_mobile: undefined,\r\n preview_start: null,\r\n preview_end: null,\r\n download_links: [],\r\n pg_state: null,\r\n user_id: null,\r\n online_viewer_threshold: 0,\r\n content_id: undefined,\r\n content_type: null,\r\n imdb_rate: null,\r\n release_year: null,\r\n duration: 0\r\n },\r\n params: {\r\n src: \"\",\r\n type: \"\",\r\n id: \"\",\r\n fullscreen: \"\",\r\n autoplay: \"\",\r\n portrait: \"\",\r\n t: \"\",\r\n h: \"\",\r\n isGeneral: \"\",\r\n raw: \"\",\r\n theme: \"dark\",\r\n provider: \"unknown\",\r\n fullrate: \"false\",\r\n snapshot: \"false\",\r\n cover: \"\",\r\n user_id: \"\",\r\n user_ids: \"\",\r\n preview: \"false\",\r\n isAuth: \"false\",\r\n authentication: \"true\",\r\n site: \"\",\r\n \"e-url\": \"\",\r\n \"e-cover\": \"\",\r\n width: \"\",\r\n height: \"\",\r\n chart: \"false\",\r\n onFinished: undefined,\r\n showModuleTitle: \"false\",\r\n scrollElementId: undefined,\r\n onSnapshot: undefined,\r\n isMarkersChange: false,\r\n quiz: \"false\",\r\n featureSet: undefined,\r\n uuid: \"\",\r\n homeButtonClickFlag: undefined\r\n },\r\n streamLinkParams: \"\",\r\n markers: [],\r\n liveId: undefined,\r\n vodId: undefined,\r\n onlineViewers: undefined,\r\n question: undefined,\r\n options: undefined,\r\n selectedOptionId: null,\r\n emojis: undefined,\r\n alternative_Lives: [],\r\n config: undefined,\r\n isLiveError: true,\r\n emojiList1: [],\r\n emojiList2: [],\r\n gif: null,\r\n multiLives: [],\r\n multiAudio: [],\r\n selectedAudioId: 0,\r\n subtitles: [],\r\n selectedSubtitle: undefined,\r\n subtitleText: undefined,\r\n subtitleColor: undefined,\r\n isComplexPortrait: undefined,\r\n isComplexDesktop: false,\r\n videoElementSizeInfo: {\r\n bottom: 0,\r\n top: 0,\r\n right: 0,\r\n left: 0,\r\n width: 0,\r\n height: 0\r\n },\r\n recommendationList: undefined,\r\n token: \"\",\r\n isFetchDetails: false,\r\n isValidAddress: false,\r\n playList: undefined,\r\n videoTimelines: [],\r\n webListConfig: [],\r\n chartPoints: [],\r\n isReady: false,\r\n showScreen: false,\r\n trailer: [],\r\n hlsLiveSyncPosition: 0\r\n};\r\n\r\nexport const videoDataSlice = createSlice({\r\n name: \"videoData\",\r\n initialState: VideoDataSliceState,\r\n reducers: {\r\n setInfo: (state, action: PayloadAction<IDetails>) => {\r\n state.details = action.payload;\r\n },\r\n setPlayerParams: (state, action: PayloadAction<any>) => {\r\n state.params = action.payload;\r\n },\r\n setStreamLinkParams: (state, action: PayloadAction<string>) => {\r\n state.streamLinkParams = action.payload;\r\n },\r\n setMarkers: (state, action: PayloadAction<IMarker[]>) => {\r\n state.markers = action.payload;\r\n },\r\n setLiveId: (state, action: PayloadAction<number>) => {\r\n state.liveId = action.payload;\r\n },\r\n setVodId: (state, action: PayloadAction<number>) => {\r\n state.liveId = action.payload;\r\n },\r\n setOnlineViewers: (state, action: PayloadAction<any>) => {\r\n state.onlineViewers = action.payload;\r\n },\r\n setQuestion: (state, action: PayloadAction<any>) => {\r\n state.question = action.payload;\r\n },\r\n setSelectedOptionId: (state, action: PayloadAction<number | null>) => {\r\n state.selectedOptionId = action.payload;\r\n },\r\n setEmojis: (state, action: PayloadAction<any>) => {\r\n state.emojis = action.payload;\r\n },\r\n setAlternative_Lives: (state, action: PayloadAction<number[]>) => {\r\n state.alternative_Lives = action.payload;\r\n },\r\n setConfig: (state, action: PayloadAction<any>) => {\r\n state.config = action.payload;\r\n },\r\n setIsLiveError: (state, action: PayloadAction<boolean>) => {\r\n state.isLiveError = action.payload;\r\n },\r\n setEmojiList1: (state, action: PayloadAction<string[]>) => {\r\n state.emojiList1 = action.payload;\r\n },\r\n setEmojiList2: (state, action: PayloadAction<string[]>) => {\r\n state.emojiList2 = action.payload;\r\n },\r\n setGif: (state, action: PayloadAction<string | null>) => {\r\n state.gif = action.payload;\r\n },\r\n setErrorType: (state, action: PayloadAction<string | undefined>) => {\r\n state.errorType = action.payload;\r\n },\r\n setMultiLives: (state, action: PayloadAction<any[]>) => {\r\n state.multiLives = action.payload;\r\n },\r\n setMultiAudio: (state, action: PayloadAction<any>) => {\r\n state.multiAudio = JSON.parse(JSON.stringify(action.payload));\r\n },\r\n setSelectedAudioId: (state, action: PayloadAction<number>) => {\r\n state.selectedAudioId = action.payload;\r\n },\r\n setSubtitles: (state, action: PayloadAction<any>) => {\r\n state.subtitles = action.payload;\r\n },\r\n setSelectedSubtitle: (state, action: PayloadAction<any>) => {\r\n state.selectedSubtitle = action.payload;\r\n },\r\n setSubtitleText: (state, action: PayloadAction<string>) => {\r\n state.subtitleText = action.payload;\r\n },\r\n setSubtitleColor: (state, action: PayloadAction<ISubtitleColor>) => {\r\n state.subtitleColor = action.payload;\r\n },\r\n setIsComplexPortrait: (state, action: PayloadAction<boolean>) => {\r\n state.isComplexPortrait = action.payload;\r\n },\r\n setIsComplexDesktop: (state, action: PayloadAction<boolean>) => {\r\n state.isComplexDesktop = action.payload;\r\n },\r\n setVideoElementSizeInfo: (state, action: PayloadAction<IVideoElementSizeInfo>) => {\r\n state.videoElementSizeInfo = action.payload;\r\n },\r\n setRecommendationList: (state, action: PayloadAction<any>) => {\r\n state.recommendationList = action.payload;\r\n },\r\n setToken: (state, action: PayloadAction<string>) => {\r\n state.token = action.payload;\r\n },\r\n setIsFetchDetails: (state, action: PayloadAction<boolean>) => {\r\n state.isFetchDetails = action.payload;\r\n },\r\n setIsValidAddress: (state, action: PayloadAction<boolean>) => {\r\n state.isValidAddress = action.payload;\r\n },\r\n setPlayList: (state, action: PayloadAction<IPlayList[]>) => {\r\n state.playList = action.payload;\r\n },\r\n setVideoTimelines: (state, action: PayloadAction<number[]>) => {\r\n state.videoTimelines = action.payload;\r\n },\r\n setWebListConfig: (state, action: PayloadAction<IWebListConfig[]>) => {\r\n state.webListConfig = action.payload;\r\n },\r\n setChartPoints: (state, action: PayloadAction<number[]>) => {\r\n state.chartPoints = action.payload;\r\n },\r\n setIsReady: (state, action: PayloadAction<boolean>) => {\r\n state.isReady = action.payload;\r\n },\r\n setShowScreen: (state, action: PayloadAction<boolean>) => {\r\n state.showScreen = action.payload;\r\n },\r\n setTrailer: (state, action: PayloadAction<any[]>) => {\r\n state.trailer = action.payload;\r\n },\r\n setClearVideoDataSlice: (state) => {\r\n return (state = VideoDataSliceState);\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setInfo,\r\n setPlayerParams,\r\n setStreamLinkParams,\r\n setMarkers,\r\n setLiveId,\r\n setVodId,\r\n setOnlineViewers,\r\n setQuestion,\r\n setSelectedOptionId,\r\n setEmojis,\r\n setAlternative_Lives,\r\n setConfig,\r\n setIsLiveError,\r\n setEmojiList1,\r\n setEmojiList2,\r\n setGif,\r\n setErrorType,\r\n setMultiLives,\r\n setMultiAudio,\r\n setSelectedAudioId,\r\n setSubtitles,\r\n setSelectedSubtitle,\r\n setSubtitleText,\r\n setSubtitleColor,\r\n setIsComplexPortrait,\r\n setIsComplexDesktop,\r\n setVideoElementSizeInfo,\r\n setRecommendationList,\r\n setToken,\r\n setIsFetchDetails,\r\n setIsValidAddress,\r\n setPlayList,\r\n setVideoTimelines,\r\n setWebListConfig,\r\n setChartPoints,\r\n setIsReady,\r\n setClearVideoDataSlice,\r\n setShowScreen,\r\n setTrailer\r\n} = videoDataSlice.actions;\r\nexport default videoDataSlice.reducer;\r\n","export const enum zIndex {\r\n vttDisable = -2,\r\n quizPlayButton = 1,\r\n backwardForwardInActive,\r\n quizHeader,\r\n comments,\r\n videoPlayer,\r\n snapshot,\r\n mainIcons,\r\n emoji,\r\n footer,\r\n mainIconInComplexPortrait,\r\n poll,\r\n liveStatus,\r\n download,\r\n lockIcon,\r\n backwardForwardActive,\r\n fullrate,\r\n autoPlay,\r\n vtt,\r\n tagsFilterPopover,\r\n markers,\r\n videoPlayerInFullScreen = 1000000,\r\n portraitHeader,\r\n emojiPicker,\r\n popoverBlurBackground,\r\n popoverContent,\r\n maxPopover,\r\n videoPlayerInPictureInPicture,\r\n trailer,\r\n commentAnswer\r\n}\r\n\r\nexport const enum ContentTypes {\r\n Vod,\r\n PlayList\r\n}\r\n\r\nexport const enum ContentTypesString {\r\n Vod = \"vod\",\r\n PlayList = \"playlist\"\r\n}\r\n\r\nexport const enum VideoNumberTypeEnum {\r\n Archive = 1,\r\n Vod = 2,\r\n Clip = 3,\r\n FutureLive = 4,\r\n PlayList\r\n}\r\n\r\nexport const enum QuizTypes {\r\n Elimination = 1,\r\n Points = 2\r\n}\r\n\r\nexport const enum UserQuizStatus {\r\n participant = \"participant\",\r\n viewer = \"viewer\",\r\n loser = \"loser\"\r\n}\r\n\r\nexport const enum QuestionStatus {\r\n ANSWER = 1,\r\n UNANSWER = 2,\r\n INACTIVE = 3,\r\n DONE = 4,\r\n READY\r\n}\r\n\r\nexport const enum QuizLoginSteps {\r\n mobileNumber = \"mobileNumber\",\r\n otp = \"otp\"\r\n}\r\n\r\nexport const enum SettingSections {\r\n main = \"main\",\r\n qualityLevels = \"qualityLevels\",\r\n subtitlesSettingMenu = \"subtitlesSettingMenu\",\r\n subtitles = \"subtitles\",\r\n subtitlesBackgroundColors = \"subtitlesBackgroundColors\",\r\n subtitlesTextColors = \"subtitlesTextColors\",\r\n multiAudio = \"multiAudio\",\r\n speed = \"speed\"\r\n}\r\n\r\nexport const enum SubtitleColors {\r\n black = \"سیاه\",\r\n white = \"سفید\",\r\n yellow = \"زرد\",\r\n blue = \"آبی\",\r\n green = \"سبز\"\r\n}\r\n\r\nexport const enum ConditionName {\r\n showHeader = \"showHeader\",\r\n showMain = \"showMain\",\r\n showFooter = \"showFooter\",\r\n showGif = \"showGif\",\r\n showTouchVolumeBrightness = \"showTouchVolumeBrightness\",\r\n showBackwardForward = \"showBackwardForward\",\r\n showLiveStatus = \"showLiveStatus\",\r\n showLiveStatusInComplexPortrait = \"showLiveStatusInComplexPortrait\",\r\n showElapsedTime = \"showElapsedTime\",\r\n showPoll = \"showPoll\",\r\n showFullRate = \"showFullRate\",\r\n showTitle = \"showTitle\",\r\n showSnapShot = \"showSnapShot\",\r\n showInstagramEmoji = \"showInstagramEmoji\",\r\n showOnlineViewers = \"showOnlineViewers\",\r\n showMultiLivePopover = \"showMultiLivePopover\",\r\n showMarkerListPopover = \"showMarkerListPopover\",\r\n showFullRatePopover = \"showFullRatePopover\",\r\n showAutoPlayPopover = \"showAutoPlayPopover\",\r\n showRecommendListPopover = \"showRecommendListPopover\",\r\n showSettingPopover = \"showSettingPopover\",\r\n showSpeedPopover = \"showSpeedPopover\",\r\n showQualityLevelsPopover = \"showQualityLevelsPopover\",\r\n showTagsPopover = \"showTagsPopover\",\r\n showPersonalMarkerPopover = \"showPersonalMarkerPopover\",\r\n showBookmarksPopover = \"showBookmarksPopover\",\r\n showChatPopover = \"showChatPopover\",\r\n showFeedbackPopover = \"showFeedbackPopover\",\r\n showTrailerPopover = \"showTrailerPopover\",\r\n showLoginPopover = \"showLoginPopover\",\r\n showAutoPlayListTouchIcon = \"showAutoPlayListTouchIcon\",\r\n showMultiLive = \"showMultiLive\",\r\n showBigReplayIcon = \"showBigReplayIcon\",\r\n showReplayIcon = \"showReplayIcon\",\r\n showPlayNextIcon = \"showPlayNextIcon\",\r\n showAutoPlayToggleIcon = \"showAutoPlayToggleIcon\",\r\n showSettingIcon = \"showSettingIcon\",\r\n showLikeDislike = \"showLikeDislike\",\r\n showBanner = \"showBanner\",\r\n showBannerStaticFiles = \"showBannerStaticFiles\",\r\n showSpeedIcon = \"showSpeedIcon\",\r\n showShareInSetting = \"showShareInSetting\",\r\n showPlayListIcon = \"showPlayListIcon\",\r\n showPlayListTabTouchscreen = \"showPlayListTabTouchscreen\",\r\n showCommentComponent = \"showCommentComponent\",\r\n showModuleTitle = \"showModuleTitle\",\r\n showProgressbar = \"showProgressbar\",\r\n showAgeClassification = \"showAgeClassification\",\r\n showChat = \"showChat\",\r\n showMiniPlayer = \"showMiniPlayer\",\r\n showPictureInPicture = \"showPictureInPicture\",\r\n showPersonalMarker = \"showPersonalMarker\",\r\n showFeedback = \"showFeedback\",\r\n showTabNavigator = \"showTabNavigator\",\r\n showBookmark = \"showBookmark\",\r\n showVideoUploadTime = \"showVideoUploadTime\",\r\n showVideoViewers = \"showVideoViewers\",\r\n showRecommendationList = \"showRecommendationList\",\r\n showPlaylist = \"showPlaylist\",\r\n show_Chat = \"show_Chat\",\r\n showEmojiComplexPortrait = \"showEmojiComplexPortrait\",\r\n hidePopovers = \"hidePopovers\",\r\n isRaw = \"isRaw\",\r\n isParamsPortrait = \"isParamsPortrait\",\r\n isComplexPortrait = \"isComplexPortrait\",\r\n isComplexDarkModePortrait = \"isComplexDarkModePortrait\",\r\n isComplexDesktop = \"isComplexDesktop\",\r\n isLandscape = \"isLandscape\",\r\n isTouchScreen = \"isTouchScreen\",\r\n isTouchScreenPortrait = \"isTouchScreenPortrait\",\r\n isTouchScreenLandscape = \"isTouchScreenLandscape\",\r\n isActiveElements = \"isActiveElements\",\r\n isPlay = \"isPlay\",\r\n isFirstPlay = \"isFirstPlay\",\r\n isLock = \"isLock\",\r\n isIOS = \"isIOS\",\r\n isIOSLive = \"isIOSLive\",\r\n isLoading = \"isLoading\",\r\n isLive = \"isLive\",\r\n isLiveParam = \"isLiveParam\",\r\n isLiveError = \"isLiveError\",\r\n isDarkMode = \"isDarkMode\",\r\n isStaticFormat = \"isStaticFormat\",\r\n isEnded = \"isEnded\",\r\n isAutoPlay = \"isAutoPlay\",\r\n isFullScreen = \"isFullScreen\",\r\n isGeneral = \"isGeneral\",\r\n isValidAddress = \"isValidAddress\",\r\n isFetchDetails = \"isFetchDetails\",\r\n isAutoQuality = \"isAutoQuality\",\r\n isAuth = \"isAuth\",\r\n isChildClassification = \"isChildClassification\",\r\n isTeenagerClassification = \"isTeenagerClassification\",\r\n isYoungClassification = \"isYoungClassification\",\r\n isSelectedSubtitle = \"isSelectedSubtitle\",\r\n isZarebinSite = \"isZarebinSite\",\r\n isUserIdsParamsEqualAll = \"isUserIdsParamsEqualAll\",\r\n isMiniPlayer = \"isMiniPlayer\",\r\n isFullMobilePortrait = \"isFullMobilePortrait\",\r\n isLogin = \"isLogin\",\r\n isSpinSettingsIcon = \"isSpinSettingsIcon\",\r\n isVttFitHeight = \"isVttFitHeight\",\r\n isBookmark = \"isBookmark\",\r\n isPressKeySpace = \"isPressKeySpace\",\r\n isPressKeyK = \"isPressKeyK\",\r\n isPressKeyI = \"isPressKeyI\",\r\n isPressKeyF = \"isPressKeyF\",\r\n isPressKeyS = \"isPressKeyS\",\r\n isPressKeyC = \"isPressKeyC\",\r\n isPressKeyArrowRight = \"isPressKeyArrowRight\",\r\n isPressKeyArrowLeft = \"isPressKeyArrowLeft\",\r\n isPressKeyL = \"isPressKeyL\",\r\n isPressKeyN = \"isPressKeyN\",\r\n isPressKeyQ = \"isPressKeyQ\",\r\n isPressKeyE = \"isPressKeyE\",\r\n isPressKeyM = \"isPressKeyM\",\r\n isSendTimelineLog = \"isSendTimelineLog\",\r\n isReady = \"isReady\",\r\n isSplusEnvironment = \"isSplusEnvironment\",\r\n isProduction = \"isProduction\",\r\n isPaymentSuccess = \"isPaymentSuccess\",\r\n isPopoverOpen = \"isPopoverOpen\",\r\n isBeforeRequest_Playlist_Chat_Recommendation = \"isBeforeRequest_Playlist_Chat_Recommendation\",\r\n isBeforeRequestComments = \"isBeforeRequestComments\",\r\n isVisibilityChange = \"isVisibilityChange\",\r\n backgroundColorInLightMode = \"backgroundColorInLightMode\",\r\n heightScreen = \"HeightScreen\",\r\n playByClickPoster = \"playByClickPoster\",\r\n hasMarkers = \"hasMarkers\",\r\n hasTitle = \"hasTitle\",\r\n hasDescription = \"hasDescription\",\r\n hasClipboard = \"hasClipboard\",\r\n hasTags = \"hasTags\",\r\n hasRecommendationList = \"hasRecommendationList\",\r\n hasPreviewTime = \"hasPreviewTime\",\r\n hasEmojis = \"hasEmojis\",\r\n hasEmojiList1Or2 = \"hasEmojiList1Or2\",\r\n hasBanner = \"hasBanner\",\r\n hasMultiAudio = \"hasMultiAudio\",\r\n hasDownloadLinks = \"hasDownloadLinks\",\r\n hasStreamLink = \"hasStreamLink\",\r\n hasPoll = \"hasPoll\",\r\n hasUserIds = \"hasUserIds\",\r\n hasAlternativeLives = \"hasAlternativeLives\",\r\n hasManualQuality = \"hasManualQuality\",\r\n hasSound = \"hasSound\",\r\n hasVtt = \"hasVtt\",\r\n hasAutoPlay = \"hasAutoPlay\",\r\n hasPlayList = \"hasPlayList\",\r\n hasXToken = \"hasXToken\",\r\n hasMovieDetails = \"hasMovieDetails\",\r\n hasMovieContentType = \"hasMovieContentType\",\r\n hasMovieReleaseYear = \"hasMovieReleaseYear\",\r\n hasSubtitle = \"hasSubtitle\",\r\n hasIMDB = \"hasIMDB\",\r\n hasSelectedTags = \"hasSelectedTags\",\r\n hasInputTagSearch = \"hasInputTagSearch\",\r\n hasFullScreenParams = \"hasFullScreenParams\",\r\n hasPreviewParams = \"hasPreviewParams\",\r\n hasChart = \"hasChart\",\r\n hasChartPoints = \"hasChartPoints\",\r\n hasOnFinishedParams = \"hasOnFinishedParams\",\r\n hasOnSnapshotParams = \"hasOnSnapshotParams\",\r\n hasXTokenParamOrSendXToken = \"hasXTokenParamOrSendXToken\",\r\n hasUserAvatar = \"hasUserAvatar\",\r\n hasUserName = \"hasUserName\",\r\n hasUserPhoneNumber = \"hasUserPhoneNumber\",\r\n hasScrollElementId = \"hasScrollElementId\",\r\n hasSportProvider = \"hasSportProvider\",\r\n hasSidebar = \"hasSidebar\",\r\n hasTrailer = \"hasTrailer\",\r\n hasHParam = \"hasHParam\",\r\n hasQuizParams = \"hasQuizParams\",\r\n hasPreviewStart = \"hasPreviewStart\",\r\n hasPreviewEnd = \"hasPreviewEnd\",\r\n hasSubtitles = \"hasSubtitles\",\r\n hasHomeButtonClickFlag = \"hasHomeButtonClickFlag\",\r\n hasContinuousPlayback = \"hasContinuousPlayback\",\r\n hasPermittedLoadedFragment = \"hasPermittedLoadedFragment\",\r\n hasAllParams = \"hasAllParams\",\r\n hasDefaultMessages = \"hasDefaultMessages\",\r\n hasPinMessage = \"hasPinMessage\",\r\n hasCommentDefaultMessages = \"hasCommentDefaultMessages\",\r\n getRecommendationList = \"getRecommendationList\",\r\n getLiveDetailsInIntervals = \"getLiveDetailsInIntervals\",\r\n getDetails = \"getDetails\",\r\n getMarkers = \"getMarkers\",\r\n getPlayList = \"getPlayList\",\r\n getUserSetting = \"getUserSetting\",\r\n getVideoMetaData = \"getVideoMetaData\",\r\n getUserProfile = \"getUserProfile\",\r\n firstGetDataIntervalAPI = \"firstGetDataIntervalAPI\",\r\n footerPaddingZero = \"footerPaddingZero\",\r\n manaulPostAPI = \"manaulPostAPI\",\r\n canAccessVideo = \"canAccessVideo\",\r\n canAddComment = \"canAddComment\",\r\n canShowSubmittedComment = \"canShowSubmittedComment\",\r\n canPlayVideo = \"canPlayVideo\",\r\n chatEnabled = \"chatEnabled\",\r\n trackerEnabled = \"trackerEnabled\",\r\n filterLastGif = \"filterLastGif\",\r\n instagramEmojiAnimation = \"instagramEmojiAnimation\",\r\n handleOverflowHidden = \"handleOverflowHidden\",\r\n thresholdOnlineViewers = \"thresholdOnlineViewers\",\r\n\r\n // *** Quiz Conditions Enums ***\r\n showQuizPopover = \"showQuizPopover\",\r\n showUserStatus = \"showUserStatus\",\r\n isQuizStatusEqual1 = \"isQuizStatusEqual1\",\r\n isQuizStatusEqual2 = \"isQuizStatusEqual2\",\r\n isQuizStatusEqual4 = \"isQuizStatusEqual4\",\r\n isQuizEnd = \"isQuizEnd\",\r\n isPointsQuiz = \"isPointsQuiz\",\r\n hasQuiz = \"hasQuiz\",\r\n hasQuizQuestion = \"hasQuizQuestion\",\r\n hasChances = \"hasChances\",\r\n sendUserTrackerRequest = \"sendUserTrackerRequest\"\r\n}\r\n\r\nexport const enum ChatType {\r\n public,\r\n private,\r\n auto\r\n}\r\n","import { footerPadding } from \"./environment\";\r\nimport store from \"./redux/store\";\r\n\r\nexport const LiveDelay = 6; // --> Delay between manifest live point and live point of user's view (for better loading and buffering)\r\nexport const LiveWindow = 12; // --> distance between live point and cursor to determine live red button\r\n\r\nexport const videoTag = () => document.getElementById(\"player-tag\") as HTMLVideoElement;\r\nexport const multiLiveVideo = () => document.getElementById(`multilive-player`) as HTMLVideoElement;\r\nexport const progressBar = () => document.getElementById(\"time-progress-bar\") as any;\r\nexport const progressBarWidth = () => store.getState().videoData.videoElementSizeInfo.width - 2 * footerPadding();\r\n\r\nexport const seenPoll = () => JSON.parse(localStorage.getItem(\"seen-poll\")!);\r\nexport const livePoll = () => JSON.parse(localStorage.getItem(\"live-poll\")!);\r\nexport const popoverHeader = () => document.getElementById(\"popover-header\");\r\n\r\nexport const otpType = \"LOGIN_ANDROID_4\";\r\n","import { conditions } from \"./conditions/conditions\";\r\nimport { ConditionName } from \"./interfaces/enums\";\r\nimport { IEnvironment } from \"./interfaces/interfaces\";\r\n\r\nexport const ENVIRONMENT: IEnvironment = {\r\n reduxDevTool: true\r\n};\r\n\r\nexport const activeElementsTime = 3000;\r\n\r\nexport const showLoaderTime = 5000;\r\nexport const notShowingLoaderTime = 10000;\r\n\r\nexport const livePlayRetryDuration = 3000;\r\n\r\nexport const RetryCountGeneralDataFetch = 3;\r\n\r\nexport const RetryTimeDelayGeneralDataFetch = 5;\r\n\r\nexport const durationWatched = 10;\r\n\r\nexport const continuousePlaybackIntervalTime = 60000;\r\n\r\nexport const footerPadding = () => {\r\n if (conditions(ConditionName.footerPaddingZero)) return 0;\r\n else return 64;\r\n};\r\n\r\nexport const featureToggle = \"ft\";\r\n\r\nexport const sidebarWidth = 357;\r\n","import { isIOS, isFullMobilePortrait, isTouchScreen, isTouchScreenLandscape, isTouchScreenPortrait, staticFormats } from \"../helpers\";\r\nimport { ConditionName } from \"../interfaces/enums\";\r\nimport store from \"../redux/store\";\r\n\r\nexport const conditions = (type: string) => {\r\n const {\r\n trailer,\r\n params,\r\n details,\r\n gif,\r\n isComplexPortrait,\r\n isComplexDesktop,\r\n markers,\r\n subtitles,\r\n question,\r\n emojis,\r\n onlineViewers,\r\n alternative_Lives,\r\n recommendationList,\r\n multiAudio,\r\n isLiveError,\r\n isValidAddress,\r\n isFetchDetails,\r\n token,\r\n selectedOptionId,\r\n emojiList1,\r\n emojiList2,\r\n selectedSubtitle,\r\n playList,\r\n videoElementSizeInfo,\r\n chartPoints,\r\n isReady\r\n } = store.getState().videoData;\r\n const {\r\n firstPlay,\r\n lock,\r\n canPlayVideo,\r\n qualityLevels,\r\n manualQuality,\r\n activeElements,\r\n isLoading,\r\n isLive,\r\n isEnded,\r\n isAutoPlay,\r\n play,\r\n isFullScreen,\r\n autoQuality,\r\n showMiniPlayer,\r\n } = store.getState().controller;\r\n const {\r\n trailerPopover,\r\n settingPopover,\r\n markersListPopover,\r\n sharePopover,\r\n feedbackPopover,\r\n multiLivesPopover,\r\n fullRatePopover,\r\n autoPlayPopover,\r\n recommendListPopover,\r\n speedPopover,\r\n tagsPopover,\r\n personalMarkersPopover,\r\n bookmarksPopover,\r\n chatPopover,\r\n loginPopover,\r\n chatEmojisPopover,\r\n commentPopover,\r\n playListCardPopover,\r\n playListPopover,\r\n pollPopover,\r\n qualityLevelsPopover\r\n } = store.getState().popovers;\r\n const { isLogin, settings, bookmarkId, avatar_url, name, phone_number, videoSettings, showContinuousePlayback } = store.getState().user;\r\n\r\n switch (type) {\r\n case ConditionName.showHeader:\r\n return !firstPlay && canPlayVideo && !autoPlayPopover;\r\n case ConditionName.showMain:\r\n return !lock || firstPlay;\r\n case ConditionName.showFooter:\r\n return !firstPlay && canPlayVideo;\r\n case ConditionName.showGif:\r\n return !firstPlay && params.type === \"live\" && settings.poll_emoji && gif;\r\n case ConditionName.showElapsedTime:\r\n return params.type !== \"live\" || staticFormats(params.type!);\r\n case ConditionName.showLiveStatus:\r\n return params.type === \"live\" && !firstPlay && !lock && ((isIOS() && isTouchScreenPortrait()) || !isIOS()) && !isEnded;\r\n case ConditionName.showLiveStatusInComplexPortrait:\r\n return params.type === \"live\" && !isEnded;\r\n case ConditionName.showTouchVolumeBrightness:\r\n return !firstPlay && isTouchScreenLandscape() && !lock && !isEnded && params.raw !== \"true\";\r\n case ConditionName.showBackwardForward:\r\n return !firstPlay && isTouchScreen() && !lock && params.raw !== \"true\" && (!isEnded || (isEnded && params.type !== \"live\"));\r\n case ConditionName.showPoll:\r\n return (\r\n settings.poll_emoji &&\r\n !firstPlay &&\r\n question &&\r\n question.active &&\r\n !lock &&\r\n params.type === \"live\" &&\r\n ((isIOS() && isTouchScreenPortrait()) || !isIOS())\r\n );\r\n case ConditionName.showFullRate:\r\n return !staticFormats(params.type!) && !firstPlay && params.fullrate === \"true\" && fullRatePopover !== undefined;\r\n case ConditionName.showTitle:\r\n return !staticFormats(params.type!) && isFullScreen && !lock;\r\n case ConditionName.showInstagramEmoji:\r\n return settings.poll_emoji && emojis && params.type === \"live\" && !firstPlay && !isComplexPortrait;\r\n case ConditionName.showEmojiComplexPortrait:\r\n return settings.poll_emoji && emojis && params.type === \"live\";\r\n case ConditionName.showOnlineViewers:\r\n return !!onlineViewers && onlineViewers > 0 && (!isComplexPortrait || params.quiz === \"true\");\r\n case ConditionName.showMultiLivePopover:\r\n return multiLivesPopover;\r\n case ConditionName.showMarkerListPopover:\r\n return markersListPopover;\r\n case ConditionName.showFullRatePopover:\r\n return fullRatePopover;\r\n case ConditionName.showAutoPlayPopover:\r\n return autoPlayPopover && isEnded && params.portrait === \"true\" && !showMiniPlayer && recommendationList && recommendationList.length > 0;\r\n case ConditionName.showRecommendListPopover:\r\n return recommendListPopover;\r\n case ConditionName.showSettingPopover:\r\n return settingPopover;\r\n case ConditionName.showSpeedPopover:\r\n return speedPopover;\r\n case ConditionName.showQualityLevelsPopover:\r\n return qualityLevelsPopover;\r\n case ConditionName.showTagsPopover:\r\n return tagsPopover;\r\n case ConditionName.showPersonalMarkerPopover:\r\n return personalMarkersPopover;\r\n case ConditionName.showBookmarksPopover:\r\n return !!bookmarksPopover;\r\n case ConditionName.showFeedbackPopover:\r\n return feedbackPopover;\r\n case ConditionName.showChatPopover:\r\n return !!chatPopover;\r\n case ConditionName.showTrailerPopover:\r\n return trailerPopover;\r\n case ConditionName.showLoginPopover:\r\n return loginPopover;\r\n case ConditionName.showAutoPlayListTouchIcon:\r\n return (\r\n isEnded &&\r\n !autoPlayPopover &&\r\n isTouchScreenLandscape() &&\r\n params.portrait === \"true\" &&\r\n !isIOS() &&\r\n !lock &&\r\n recommendationList &&\r\n recommendationList.length > 0\r\n );\r\n case ConditionName.showMultiLive:\r\n return alternative_Lives && alternative_Lives.length > 0 && settings.poll_emoji;\r\n case ConditionName.showBigReplayIcon:\r\n return isEnded && params.portrait === \"true\" && isTouchScreen() && ((isIOS() && isTouchScreenPortrait()) || !isIOS());\r\n case ConditionName.showReplayIcon:\r\n return params.portrait === \"true\" && !isIOS() && !isTouchScreen() && showMiniPlayer !== true;\r\n case ConditionName.showPlayNextIcon:\r\n return (\r\n params.portrait === \"true\" &&\r\n !isIOS() &&\r\n (!isTouchScreen() || isTouchScreenLandscape()) &&\r\n params.isGeneral !== \"true\" &&\r\n showMiniPlayer !== true\r\n );\r\n case ConditionName.showAutoPlayToggleIcon:\r\n return (\r\n params.portrait === \"true\" &&\r\n params.isGeneral !== \"true\" &&\r\n ((isIOS() && isTouchScreenPortrait()) || !isIOS()) &&\r\n showMiniPlayer !== true\r\n );\r\n case ConditionName.showSettingIcon:\r\n return !staticFormats(params.type!) && !isIOS() && !isFullScreen;\r\n case ConditionName.showLikeDislike:\r\n return (\r\n !staticFormats(params.type!) && params.portrait === \"true\" && params.isGeneral !== \"true\" && !isComplexDesktop && !isComplexPortrait\r\n );\r\n case ConditionName.showBanner:\r\n return firstPlay && details.banner;\r\n case ConditionName.showBannerStaticFiles:\r\n return firstPlay && params.cover;\r\n case ConditionName.showShareInSetting:\r\n return !isComplexPortrait && !isComplexDesktop;\r\n case ConditionName.showPlayListIcon:\r\n return playList && playList.length > 0 && (isFullScreen || (!isFullScreen && params.portrait !== \"true\")) && showMiniPlayer !== true;\r\n case ConditionName.showPlayListTabTouchscreen:\r\n return playList && playList.length > 0 && isTouchScreen();\r\n case ConditionName.showModuleTitle:\r\n return params.showModuleTitle === \"true\";\r\n case ConditionName.showProgressbar:\r\n return !(isIOS() && params.type === \"live\") && !(params.type === \"live\" && isEnded);\r\n case ConditionName.showAgeClassification:\r\n return details.pg_state && !lock;\r\n case ConditionName.showMiniPlayer:\r\n return showMiniPlayer;\r\n case ConditionName.showPictureInPicture:\r\n return showMiniPlayer !== true && !isIOS() && !isTouchScreen();\r\n case ConditionName.showPersonalMarker:\r\n return params.authentication === \"true\" && (params.featureSet === undefined || params.featureSet.personalMarker !== \"false\");\r\n case ConditionName.showFeedback:\r\n return params.featureSet === undefined || params.featureSet.feedback !== \"false\";\r\n case ConditionName.trackerEnabled:\r\n return (params.featureSet === undefined || params.featureSet.enableTracker !== \"false\") && params.quiz !== \"true\";\r\n case ConditionName.showTabNavigator:\r\n return params.authentication === \"true\" && (params.featureSet === undefined || params.featureSet.profileFooter !== \"false\");\r\n case ConditionName.showBookmark:\r\n return params.authentication === \"true\" && (params.featureSet === undefined || params.featureSet.bookmark !== \"false\");\r\n case ConditionName.showVideoUploadTime:\r\n return params.featureSet === undefined || params.featureSet.videoUploadTime !== \"false\";\r\n case ConditionName.showVideoViewers:\r\n return params.featureSet === undefined || params.featureSet.videoViewers !== \"false\";\r\n case ConditionName.showRecommendationList:\r\n return params.featureSet === undefined || params.featureSet.recommendationList !== \"false\";\r\n case ConditionName.showPlaylist:\r\n return params.featureSet === undefined || params.featureSet.playlist !== \"false\";\r\n case ConditionName.show_Chat:\r\n return params.featureSet === undefined || params.featureSet.chat !== \"false\";\r\n case ConditionName.hidePopovers:\r\n return !markersListPopover && !settingPopover && !feedbackPopover && !sharePopover && !multiLivesPopover;\r\n case ConditionName.isRaw:\r\n return params.raw;\r\n case ConditionName.isParamsPortrait:\r\n return params.portrait === \"true\";\r\n case ConditionName.isComplexPortrait:\r\n return isComplexPortrait;\r\n case ConditionName.isComplexDarkModePortrait:\r\n return isComplexPortrait && params.theme === \"dark\";\r\n case ConditionName.isComplexDesktop:\r\n return isComplexDesktop;\r\n case ConditionName.isLandscape:\r\n return window.innerHeight <= window.innerWidth;\r\n case ConditionName.isTouchScreen:\r\n return isTouchScreen();\r\n case ConditionName.isTouchScreenPortrait:\r\n return isTouchScreenPortrait();\r\n case ConditionName.isTouchScreenLandscape:\r\n return isTouchScreenLandscape();\r\n case ConditionName.isActiveElements:\r\n return activeElements;\r\n case ConditionName.isPlay:\r\n return play;\r\n case ConditionName.isFirstPlay:\r\n return firstPlay;\r\n case ConditionName.isLock:\r\n return lock;\r\n case ConditionName.isIOS:\r\n return isIOS();\r\n case ConditionName.isIOSLive:\r\n return isIOS() && params.type === \"live\";\r\n case ConditionName.isLoading:\r\n return isLoading;\r\n case ConditionName.isLive:\r\n return isLive;\r\n case ConditionName.isLiveParam:\r\n return params.type === \"live\";\r\n case ConditionName.isLiveError:\r\n return isLiveError;\r\n case ConditionName.isDarkMode:\r\n return params.theme === \"dark\";\r\n case ConditionName.isStaticFormat:\r\n return staticFormats(params.type!);\r\n case ConditionName.isEnded:\r\n return isEnded;\r\n case ConditionName.isAutoPlay:\r\n return isAutoPlay;\r\n case ConditionName.isFullScreen:\r\n return isFullScreen;\r\n case ConditionName.isGeneral:\r\n return params.isGeneral === \"true\";\r\n case ConditionName.isValidAddress:\r\n return isValidAddress;\r\n case ConditionName.isFetchDetails:\r\n return isFetchDetails;\r\n case ConditionName.isAutoQuality:\r\n return settings.quality === -1;\r\n case ConditionName.isAuth:\r\n return token && params.isAuth === \"true\";\r\n case ConditionName.isChildClassification:\r\n return details.pg_state && details.pg_state < 14;\r\n case ConditionName.isTeenagerClassification:\r\n return details.pg_state && details.pg_state >= 14 && details.pg_state < 18;\r\n case ConditionName.isYoungClassification:\r\n return details.pg_state && details.pg_state >= 18;\r\n case ConditionName.isSelectedSubtitle:\r\n return !!subtitles && subtitles.length > 0 && selectedSubtitle;\r\n case ConditionName.isZarebinSite:\r\n return params.site === \"zarebin.ir\";\r\n case ConditionName.isUserIdsParamsEqualAll:\r\n return !!params.user_ids && params.user_ids === \"all\";\r\n case ConditionName.isMiniPlayer:\r\n return (params.portrait !== \"true\" || showMiniPlayer) && videoElementSizeInfo.width < 520;\r\n case ConditionName.isFullMobilePortrait:\r\n return isFullMobilePortrait();\r\n case ConditionName.isLogin:\r\n return isLogin;\r\n case ConditionName.isSpinSettingsIcon:\r\n return settings.quality === -1 ? autoQuality === undefined : settings.quality !== manualQuality;\r\n case ConditionName.isVttFitHeight:\r\n return videoElementSizeInfo.height < 600 || isTouchScreen();\r\n case ConditionName.isBookmark:\r\n return bookmarkId !== undefined;\r\n case ConditionName.isPressKeySpace:\r\n return !lock;\r\n case ConditionName.isPressKeyK:\r\n return !lock;\r\n case ConditionName.isPressKeyI:\r\n return !lock && !firstPlay && !showMiniPlayer;\r\n case ConditionName.isPressKeyF:\r\n return !lock && !firstPlay && !showMiniPlayer;\r\n case ConditionName.isPressKeyS:\r\n return params.type !== \"live\" && !lock && !firstPlay;\r\n case ConditionName.isPressKeyC:\r\n return !lock && !firstPlay && !showMiniPlayer && !!subtitles && subtitles.length > 0;\r\n case ConditionName.isPressKeyArrowRight:\r\n return !firstPlay && !lock;\r\n case ConditionName.isPressKeyArrowLeft:\r\n return !firstPlay && !lock;\r\n case ConditionName.isPressKeyL:\r\n return !firstPlay;\r\n case ConditionName.isPressKeyN:\r\n return recommendationList && recommendationList.length > 0 && !firstPlay && !lock;\r\n case ConditionName.isPressKeyQ:\r\n return alternative_Lives && alternative_Lives.length > 0 && !firstPlay && !lock;\r\n case ConditionName.isPressKeyE:\r\n return markers.length !== 0 && !firstPlay && !lock;\r\n case ConditionName.isPressKeyM:\r\n return !firstPlay && !lock;\r\n case ConditionName.isSendTimelineLog:\r\n return !staticFormats(params.type!);\r\n case ConditionName.isReady:\r\n return isReady;\r\n case ConditionName.isPopoverOpen:\r\n return [\r\n markersListPopover,\r\n settingPopover,\r\n sharePopover,\r\n feedbackPopover,\r\n multiLivesPopover,\r\n pollPopover,\r\n autoPlayPopover,\r\n recommendListPopover,\r\n tagsPopover,\r\n speedPopover,\r\n playListPopover,\r\n playListCardPopover,\r\n commentPopover,\r\n personalMarkersPopover,\r\n bookmarksPopover,\r\n chatPopover,\r\n chatEmojisPopover,\r\n trailerPopover,\r\n loginPopover\r\n ].some((popover: boolean | undefined) => !!popover);\r\n case ConditionName.backgroundColorInLightMode:\r\n return isComplexDesktop || isComplexPortrait;\r\n case ConditionName.heightScreen:\r\n return !isComplexPortrait && !isComplexDesktop && !params.height;\r\n case ConditionName.playByClickPoster:\r\n return firstPlay && details.banner && !showContinuousePlayback;\r\n case ConditionName.hasMarkers:\r\n return markers.length !== 0;\r\n case ConditionName.hasTitle:\r\n return details.title;\r\n case ConditionName.hasDescription:\r\n return details.description;\r\n case ConditionName.hasClipboard:\r\n return navigator && navigator.clipboard && navigator.clipboard.writeText;\r\n case ConditionName.hasRecommendationList:\r\n return recommendationList && recommendationList.length > 0;\r\n case ConditionName.hasTags:\r\n return details.tag;\r\n case ConditionName.hasPreviewTime:\r\n return params.preview === \"true\";\r\n case ConditionName.hasEmojis:\r\n return emojis;\r\n case ConditionName.hasEmojiList1Or2:\r\n return (emojis && !!emojis.emoji_list_1) || (emojis && !!emojis.emoji_list_2);\r\n case ConditionName.hasBanner:\r\n return details.banner;\r\n case ConditionName.hasMultiAudio:\r\n return multiAudio.length > 0;\r\n case ConditionName.hasDownloadLinks:\r\n return details.download_links.length > 0 && (params.featureSet === undefined || params.featureSet.downloadUrl !== \"false\");\r\n case ConditionName.hasStreamLink:\r\n return details.stream_link;\r\n case ConditionName.hasPoll:\r\n return question && Object.keys(question).length > 0;\r\n case ConditionName.hasUserIds:\r\n return !!params.user_ids;\r\n case ConditionName.hasAlternativeLives:\r\n return alternative_Lives && alternative_Lives.length > 0;\r\n case ConditionName.hasManualQuality:\r\n return manualQuality !== undefined && manualQuality !== null;\r\n case ConditionName.hasSound:\r\n return !!settings.volume;\r\n case ConditionName.hasVtt:\r\n return !!details.vtt || !!details.vtt_mobile;\r\n case ConditionName.hasAutoPlay:\r\n return params.autoplay === \"true\";\r\n case ConditionName.hasPlayList:\r\n return playList && playList.length > 0 && ((isTouchScreen() && playListPopover) || !isTouchScreen());\r\n case ConditionName.hasXToken:\r\n return !!params.xToken;\r\n case ConditionName.hasMovieDetails:\r\n return details.content_type !== null && details.content_type !== undefined;\r\n case ConditionName.hasMovieContentType:\r\n return details.content_type !== null;\r\n case ConditionName.hasMovieReleaseYear:\r\n return !!details.release_year;\r\n case ConditionName.hasSubtitle:\r\n return params.quiz !== \"true\" && !!subtitles && subtitles.length > 0 && !showMiniPlayer;\r\n case ConditionName.hasIMDB:\r\n return details.imdb_rate !== null;\r\n\r\n case ConditionName.hasFullScreenParams:\r\n return params.fullscreen === \"true\";\r\n case ConditionName.hasPreviewParams:\r\n return params.preview === \"true\";\r\n case ConditionName.hasChart:\r\n return params.chart === \"true\" && !staticFormats(params.type!);\r\n case ConditionName.hasChartPoints:\r\n return !!chartPoints.length;\r\n case ConditionName.hasOnFinishedParams:\r\n return !!params.onFinished;\r\n case ConditionName.hasOnSnapshotParams:\r\n return !!params.onSnapshot;\r\n case ConditionName.hasUserAvatar:\r\n return !!avatar_url;\r\n case ConditionName.hasUserName:\r\n return !!name;\r\n case ConditionName.hasUserPhoneNumber:\r\n return !!phone_number;\r\n case ConditionName.hasScrollElementId:\r\n return !!params.scrollElementId && showMiniPlayer !== undefined;\r\n case ConditionName.hasSportProvider:\r\n return params.provider === \"sport\";\r\n case ConditionName.hasSidebar:\r\n const container = document.getElementById(\"__container\");\r\n return (\r\n isComplexDesktop &&\r\n ((playList && playList.length > 0 && (params.featureSet === undefined || params.featureSet.playlist !== \"false\")) ||\r\n params.featureSet === undefined ||\r\n params.featureSet.chat !== \"false\" ||\r\n (recommendationList &&\r\n recommendationList.length > 0 &&\r\n (params.featureSet === undefined || params.featureSet.recommendationList !== \"false\")) ||\r\n isLogin) &&\r\n (!!container ? container.getBoundingClientRect().width : window.innerWidth) > 900\r\n );\r\n case ConditionName.isBeforeRequest_Playlist_Chat_Recommendation:\r\n return (\r\n (params.type !== \"live\" && playList === undefined && (params.featureSet === undefined || params.featureSet.playlist !== \"false\")) ||\r\n ((params.featureSet === undefined || params.featureSet.recommendationList !== \"false\") && recommendationList === undefined)\r\n );\r\n case ConditionName.isVisibilityChange:\r\n return params.type === \"live\" && !document.pictureInPictureElement;\r\n case ConditionName.hasTrailer:\r\n return trailer.length !== 0;\r\n case ConditionName.hasHParam:\r\n return params.h === \"true\";\r\n case ConditionName.hasPreviewStart:\r\n return details.preview_start;\r\n case ConditionName.hasPreviewEnd:\r\n return details.preview_end;\r\n case ConditionName.hasSubtitles:\r\n return details.subtitles && details.subtitles.length > 0 && params.quiz !== \"true\";\r\n case ConditionName.hasHomeButtonClickFlag:\r\n return !!params.homeButtonClickFlag;\r\n case ConditionName.hasContinuousPlayback:\r\n return !!videoSettings.time && showContinuousePlayback && !params.t && params.featureSet?.continuousPlayback === \"true\";\r\n case ConditionName.getRecommendationList:\r\n return params.portrait === \"true\" && params.quiz !== \"true\" && isFetchDetails;\r\n case ConditionName.getLiveDetailsInIntervals:\r\n return isLiveError && params.type === \"live\" && params.isGeneral !== \"true\";\r\n case ConditionName.getDetails:\r\n return !!params.type && params.id && params.isGeneral !== \"true\";\r\n case ConditionName.getMarkers:\r\n return (\r\n [\"vod\", \"archive\", \"clip\"].includes(String(params.type)) &&\r\n params.id &&\r\n params.isGeneral !== \"true\" &&\r\n params.quiz !== \"true\" &&\r\n isFetchDetails\r\n );\r\n case ConditionName.getPlayList:\r\n return !staticFormats(params.type!) && params.type !== \"live\" && !isFullMobilePortrait() && isFetchDetails;\r\n case ConditionName.firstGetDataIntervalAPI:\r\n return params.type === \"live\" && params.isGeneral !== \"true\";\r\n case ConditionName.getUserSetting:\r\n return isLogin && params.quiz !== \"true\" && isFetchDetails;\r\n case ConditionName.getVideoMetaData:\r\n return isLogin && params.quiz !== \"true\" && isFetchDetails;\r\n case ConditionName.getUserProfile:\r\n return !!params.xToken && isFetchDetails;\r\n case ConditionName.footerPaddingZero:\r\n return params.type !== \"live\" || (params.type === \"live\" && isTouchScreen()) || isTouchScreenPortrait();\r\n case ConditionName.manaulPostAPI:\r\n return !!selectedOptionId || emojiList1.length > 0 || emojiList2.length > 0;\r\n case ConditionName.canPlayVideo:\r\n return canPlayVideo;\r\n case ConditionName.filterLastGif:\r\n return (\r\n +qualityLevels[qualityLevels.length - 2] === +qualityLevels[settings.quality === -1 ? autoQuality ?? manualQuality! : manualQuality!!]\r\n );\r\n case ConditionName.instagramEmojiAnimation:\r\n return !isTouchScreen() || (isTouchScreen() && !activeElements);\r\n case ConditionName.handleOverflowHidden:\r\n return !isComplexDesktop || (isComplexDesktop && isFullScreen);\r\n case ConditionName.thresholdOnlineViewers:\r\n return !!onlineViewers && onlineViewers >= details.online_viewer_threshold;\r\n default:\r\n break;\r\n }\r\n};\r\n","import { livePoll } from \"./constants\";\r\nimport { conditions } from \"./conditions/conditions\";\r\nimport { ConditionName, VideoNumberTypeEnum } from \"./interfaces/enums\";\r\nimport store from \"./redux/store\";\r\nimport { setClearVideoDataSlice, setStreamLinkParams } from \"./redux/slices/videoDataSlice\";\r\nimport { apiCaller } from \"./services/apiCaller\";\r\nimport { API } from \"./services/services\";\r\nimport { setClearControllerSlice } from \"./redux/slices/controllerSlice\";\r\nimport { setClearUserSlice } from \"./redux/slices/userSlice\";\r\nimport { setClearPopoversSlice } from \"./redux/slices/popoversSlice\";\r\nimport { authToken } from \"./redux/actions/user.actions\";\r\n\r\nexport const wait = (s: number) => new Promise((resolve) => setTimeout(resolve, s * 1000));\r\n\r\nexport const getRemainingTime = (timestamp: number) => {\r\n const timePassedInSeconds = Math.floor(Date.now() / 1000 - timestamp);\r\n const rtf = new Intl.RelativeTimeFormat(\"fa\", { numeric: \"auto\" });\r\n switch (true) {\r\n case timePassedInSeconds < 60:\r\n return rtf.format(-timePassedInSeconds, \"second\");\r\n case timePassedInSeconds < 3600:\r\n return rtf.format(-Math.floor(timePassedInSeconds / 60), \"minute\");\r\n case timePassedInSeconds < 86400:\r\n return rtf.format(-Math.floor(timePassedInSeconds / 3600), \"hour\");\r\n case timePassedInSeconds < 2592000:\r\n return rtf.format(-Math.floor(timePassedInSeconds / 86400), \"day\");\r\n case timePassedInSeconds < 31536000:\r\n return rtf.format(-Math.floor(timePassedInSeconds / 2592000), \"month\");\r\n default:\r\n return rtf.format(-Math.floor(timePassedInSeconds / 31536000), \"year\");\r\n }\r\n};\r\n\r\nexport const compare = (a: any, b: any) => {\r\n if (a.time < b.time) return -1;\r\n if (a.time > b.time) return 1;\r\n return 0;\r\n};\r\n\r\nexport const handlePageTitle = (title: string) => {\r\n if (title && conditions(ConditionName.showModuleTitle)) document.title = title;\r\n};\r\n\r\nexport const getUUID = () => {\r\n let uuid = localStorage.getItem(\"hamrahiUUID\");\r\n if (!uuid) {\r\n uuid = uuidGenerator();\r\n localStorage.setItem(\"hamrahiUUID\", uuid);\r\n }\r\n return uuid.toString();\r\n};\r\n\r\nexport const uuidGenerator = () => {\r\n let uuid = \"xxxxxxxx-xxxx-Mxxx-Nxxx-x\".replace(/[xMN]/g, (char) => {\r\n let val: number;\r\n if (char === \"M\") val = Math.floor(1 + Math.random() * 5);\r\n else if (char === \"N\") val = Math.floor(8 + Math.random() * 4);\r\n else val = Math.floor(Math.random() * 16);\r\n return val.toString(16);\r\n });\r\n uuid += Date.now().toString(16);\r\n return uuid;\r\n};\r\n\r\nexport const customizeInterval = async (timeCount: number, cb: Function) => {\r\n await cb();\r\n await wait(timeCount);\r\n customizeInterval(timeCount, cb);\r\n};\r\n\r\nexport const isTouchScreen = () =>\r\n \"ontouchstart\" in window || ((window as any)[\"DocumentTouch\"] && document instanceof (window as any)[\"DocumentTouch\"]);\r\nexport const isTouchScreenLandscape = () => {\r\n const { isFullScreen } = store.getState().controller;\r\n return isTouchScreen() && isFullScreen;\r\n};\r\nexport const isTouchScreenPortrait = () => {\r\n const { isFullScreen } = store.getState().controller;\r\n return isTouchScreen() && !isFullScreen;\r\n};\r\nexport const handleIsComplexDesktop = (isPortrait: boolean) => !isTouchScreen() && !document.fullscreenElement && isPortrait;\r\n\r\nexport const isIOS = () => {\r\n return (\r\n [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) ||\r\n // iPad on iOS 13 detection\r\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\r\n );\r\n};\r\n\r\nexport const controllbarIconSize = {\r\n miniPlayer: 15,\r\n miniPlayerFontAwesome: \"pl-text-[15px]\",\r\n other: 20,\r\n otherFontAwesome: \"pl-text-[22px]\"\r\n};\r\n\r\nexport const addZeroBefore = (n: number) => {\r\n return (n < 10 ? \"0\" : \"\") + n;\r\n};\r\n\r\nexport const secondsToHMS = (seconds: number) => {\r\n const h = Math.floor(seconds / 3600);\r\n const m = Math.floor((seconds % 3600) / 60);\r\n const s = Math.floor((seconds % 3600) % 60);\r\n return h < 1 ? `${addZeroBefore(m)}:${addZeroBefore(s)}` : `${addZeroBefore(h)}:${addZeroBefore(m)}:${addZeroBefore(s)}`;\r\n};\r\n\r\nexport const secondsToPersianHMS = (seconds: number) => {\r\n const h = Math.floor(seconds / 3600);\r\n const m = Math.floor((seconds % 3600) / 60);\r\n const s = Math.floor((seconds % 3600) % 60);\r\n const second = s ? `${s} ثانیه` : null;\r\n const minute = m ? `${m} دقیقه` : null;\r\n const hour = h ? `${h} ساعت` : null;\r\n return [hour, minute, second].filter((item) => item !== null);\r\n};\r\n\r\nexport const efficientSecondsToPersianHMS = (seconds: number) => {\r\n const h = seconds >= 60 * 60 ? Math.floor(seconds / 3600) : 0;\r\n const m = seconds >= 60 ? Math.floor((seconds % 3600) / 60) : 0;\r\n const s = seconds < 60 * 60 ? Math.floor((seconds % 3600) % 60) : 0;\r\n const second = s ? `${s} ثانیه` : null;\r\n const minute = m ? `${m} دقیقه` : null;\r\n const hour = h ? `${h} ساعت` : null;\r\n return [hour, minute, second].filter((item) => item !== null).join(\" و \");\r\n};\r\n\r\nexport const staticFormats = (realFormat: string) => {\r\n if ([\"mp4\", \"mkv\", \"mov\", \"m4v\"].includes(realFormat)) return \"mp4\";\r\n else if (realFormat === \"webm\" || realFormat === \"flv\") return realFormat;\r\n else if ([\"mp3\", \"ogg\"].includes(realFormat)) return \"mp3\";\r\n else return false;\r\n};\r\n\r\nexport const addUuidToSrc = (src: string) => {\r\n const urlObject = new URL(src);\r\n let urlSrc = src;\r\n if (urlObject.search.length) return (urlSrc += `&uuid=${getUUID()}`);\r\n else return (urlSrc += `?uuid=${getUUID()}`);\r\n};\r\n\r\nexport const handleSumVotes = (question: any) => {\r\n let sumVotes = 0;\r\n if (question && Object.keys(question).length > 0 && question.options.length > 0) {\r\n question.options.forEach((option: any) => {\r\n if (\r\n livePoll() &&\r\n livePoll().polls.filter((poll: any) => poll.qid === question.id && poll.oid === option.id && poll.sumOptionVotes === option.vote + 1)\r\n .length > 0\r\n )\r\n sumVotes += 1;\r\n sumVotes += option.vote;\r\n });\r\n }\r\n return sumVotes;\r\n};\r\n\r\nexport const checkParentTarget = (event: any, target: string) => {\r\n try {\r\n return [\r\n event.target.id,\r\n event.target.parentNode.id,\r\n event.target.parentNode.parentNode.id,\r\n event.target.parentNode.parentNode.parentNode.id,\r\n event.target.parentNode.parentNode.parentNode.parentNode.id\r\n ].includes(target);\r\n } catch (error) {\r\n return false;\r\n }\r\n};\r\n\r\nexport const unitization = (viewers: number) => {\r\n if (viewers / 1000 < 1) {\r\n return { value: viewers, unit: \"\" };\r\n } else if (viewers / (1000 * 1000) < 1) {\r\n return { value: Math.ceil((viewers / 1000) * 10) / 10, unit: \"K\" };\r\n } else if (viewers / (1000 * 1000 * 1000) < 1) {\r\n return { value: Math.ceil((viewers / (1000 * 1000)) * 10) / 10, unit: \"M\" };\r\n } else return { value: 0, unit: \"\" };\r\n};\r\n\r\nexport const appendQueryParamsToChunks = (link: string) => {\r\n const dispatch = store.dispatch;\r\n const { token, params } = store.getState().videoData;\r\n let queryParams: string = \"\";\r\n queryParams = link.split(\"m3u8\")[1];\r\n if (queryParams) queryParams = `${queryParams}&uuid=${getUUID()}`;\r\n else queryParams = `?uuid=${getUUID()}`;\r\n\r\n if (conditions(ConditionName.isAuth)) {\r\n if (hasQuestionMark(queryParams)) queryParams = `${queryParams}&token=${token}`;\r\n else queryParams = `?token=${token}`;\r\n }\r\n dispatch(setStreamLinkParams(queryParams));\r\n};\r\n\r\nexport const inViewPort = (element: any) => {\r\n if (element) {\r\n const positionLeft = element.offsetLeft;\r\n const positionRight = window.innerWidth - (element.offsetLeft + element.offsetWidth);\r\n if (positionLeft >= 0 && positionRight >= 0) return \"inViewport\";\r\n else if (positionLeft < 0) return \"OutViewPortFromLeft\";\r\n else if (positionRight < 0) return \"OutViewPortFromRight\";\r\n }\r\n};\r\n\r\nexport const handleIsComplexPortrait = (params?: any) => {\r\n return params.portrait === \"true\" && isTouchScreenPortrait() && params.isGeneral !== \"true\" && params.raw !== \"true\";\r\n};\r\nexport const isFullMobilePortrait = () => {\r\n const { params, videoElementSizeInfo } = store.getState().videoData;\r\n return (\r\n params.portrait !== \"true\" &&\r\n (+videoElementSizeInfo.width.toFixed(0) === window.screen.width || +videoElementSizeInfo.width.toFixed(0) === window.screen.availWidth) &&\r\n (window.screen.height > window.screen.width || window.screen.availHeight > window.screen.availWidth)\r\n );\r\n};\r\n\r\nexport const handleRippleCircle = (event: any, id: string) => {\r\n const element: any = document.getElementById(id);\r\n const circle = document.createElement(\"span\");\r\n circle.style.width = circle.style.height = `50px`;\r\n circle.style.left = `${event.touches[0].clientX - element.offsetLeft - 25}px`;\r\n circle.style.top = `${event.touches[0].clientY - element.offsetTop - 25}px`;\r\n circle.classList.add(\"pl-ripple\");\r\n const ripple = element.getElementsByClassName(\"pl-ripple\")[0];\r\n if (ripple) ripple.remove();\r\n element.appendChild(circle);\r\n};\r\n\r\nexport const handleRipple = (event: any, id: string, size: number = 50) => {\r\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\r\n const clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;\r\n const element: any = document.getElementById(id);\r\n const circle = document.createElement(\"span\");\r\n circle.style.width = circle.style.height = `${size}px`;\r\n circle.style.left = `${clientX - size / 2}px`;\r\n circle.style.top = `${clientY - element.getBoundingClientRect().top - size / 2}px`;\r\n circle.classList.add(\"pl-ripple\");\r\n const ripple = element.getElementsByClassName(\"pl-ripple\")[0];\r\n if (ripple) ripple.remove();\r\n element.appendChild(circle);\r\n};\r\n\r\nexport const utf8_to_b64 = (text: string) => {\r\n return window.btoa(unescape(encodeURIComponent(text)));\r\n};\r\n\r\nexport const hasQuestionMark = (text: string) => (text.match(/\\?/g) ? true : false);\r\n\r\nexport const responseValidator = (status: number): boolean => status >= 200 && status < 300;\r\n\r\nexport const generateNewAccessToken = async () => {\r\n if (authToken.get()?.refresh) {\r\n const { data, status } = await apiCaller({\r\n url: API().auth.refresh,\r\n method: \"POST\",\r\n data: { refresh: authToken.get()?.refresh }\r\n });\r\n if (responseValidator(status)) {\r\n const token = {\r\n access: data.access,\r\n refresh: authToken.get()?.refresh,\r\n token_id: data.token_id\r\n };\r\n authToken.set(token);\r\n } else {\r\n authToken.remove();\r\n throw new Error(\"\");\r\n }\r\n }\r\n};\r\n\r\nexport const convertB64ToFile = (dataUrl: string, filename: string) => {\r\n let arr = dataUrl.split(\",\"),\r\n mime = arr[0].match(/:(.*?);/)![1],\r\n bstr = window.atob(arr[1]),\r\n n = bstr.length,\r\n u8arr = new Uint8Array(n);\r\n\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n);\r\n }\r\n return new File([u8arr], filename, { type: mime });\r\n};\r\n\r\nexport const parseJwt = (token: string) => {\r\n var base64Url = token.split(\".\")[1];\r\n var base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n var jsonPayload = decodeURIComponent(\r\n window\r\n .atob(base64)\r\n .split(\"\")\r\n .map(function (c) {\r\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join(\"\")\r\n );\r\n return JSON.parse(jsonPayload);\r\n};\r\n\r\nexport const handlePopoverSizeInMiniPlayer = () => {\r\n const { videoElementSizeInfo } = store.getState().videoData;\r\n\r\n return conditions(ConditionName.isMiniPlayer) && !conditions(ConditionName.isFullMobilePortrait)\r\n ? {\r\n top: videoElementSizeInfo.top,\r\n height: videoElementSizeInfo.height,\r\n left: videoElementSizeInfo.left\r\n }\r\n : {};\r\n};\r\n\r\nexport const numbersToLetters = [\r\n \"اول\",\r\n \"دوم\",\r\n \"سوم\",\r\n \"چهارم\",\r\n \"پنجم\",\r\n \"ششم\",\r\n \"هفتم\",\r\n \"هشتم\",\r\n \"تهم\",\r\n \"دهم\",\r\n \"یازدهم\",\r\n \"دوازدهم\",\r\n \"سیزدهم\",\r\n \"چهاردهم\",\r\n \"پانزدهم\",\r\n \"شانزدهم\",\r\n \"هفدهم\",\r\n \"هجدهم\",\r\n \"نوزدهم\",\r\n \"بیستم\"\r\n];\r\n\r\nexport const handleVideoType = () => {\r\n const { params } = store.getState().videoData;\r\n switch (params.type) {\r\n case \"vod\":\r\n return VideoNumberTypeEnum.Vod;\r\n case \"archive\":\r\n case \"live\":\r\n return VideoNumberTypeEnum.Archive;\r\n case \"clip\":\r\n return VideoNumberTypeEnum.Clip;\r\n default:\r\n return VideoNumberTypeEnum.FutureLive;\r\n }\r\n};\r\n\r\nexport const handleHasXTokenParamOrSendXToken = () => {\r\n if (conditions(ConditionName.hasXTokenParamOrSendXToken)) return { \"x-token\": store.getState().videoData.params.xToken };\r\n else return undefined;\r\n};\r\n\r\nexport function getWebEnvConfig(key: string): string {\r\n const webConfigs = store.getState().videoData.webListConfig;\r\n const config = webConfigs.find((item: any) => item.key === key);\r\n return config ? config.value : \"\";\r\n}\r\n\r\nexport const getDomainFromUrl = (url: string) => {\r\n const splitedUrl = url.split(\".\");\r\n return `${splitedUrl[splitedUrl.length - 2]}.${splitedUrl[splitedUrl.length - 1]}`;\r\n};\r\n\r\nexport const clearRedux = () => {\r\n const dispatch = store.dispatch;\r\n dispatch(setClearVideoDataSlice());\r\n dispatch(setClearControllerSlice());\r\n dispatch(setClearUserSlice());\r\n dispatch(setClearPopoversSlice());\r\n};\r\n\r\nexport const weighted_random = (options: any) => {\r\n let i;\r\n\r\n let weights: any[] = [];\r\n\r\n for (i = 0; i < options.length; i++) weights[i] = options[i].weight + (weights[i - 1] || 0);\r\n\r\n let random = Math.random() * weights[weights.length - 1];\r\n\r\n for (i = 0; i < weights.length; i++) if (weights[i] > random) break;\r\n\r\n return options[i].domain;\r\n};\r\n\r\nexport const convertTimeToSeconds = (time: string) =>\r\n Number(time.split(\":\")[0]) * 3600 + Number(time.split(\":\")[1]) * 60 + Number(time.split(\":\")[2]);\r\n\r\nexport const imageFormatChecking = (filename: string) =>\r\n [\"jpg\", \"png\", \"jpeg\"].includes(filename.toLowerCase().split(\".\")[filename.toLowerCase().split(\".\").length - 1]);\r\n\r\n// ***** Player Core *****\r\n\r\nexport const handlePageLoadTime = (loadingDurationRef: any) => {\r\n let pageLoadTime = 0;\r\n if (performance && performance.getEntriesByType(\"navigation\")) pageLoadTime = performance.getEntriesByType(\"navigation\")[0].duration;\r\n loadingDurationRef.current = pageLoadTime;\r\n};\r\n\r\nexport const highestResolutionSupported = (resolutions: string[], width: number, height: number) => {\r\n const w = width * window.devicePixelRatio;\r\n const h = height * window.devicePixelRatio;\r\n let filteredResolutions: string[] = [];\r\n if (conditions(ConditionName.isTouchScreenPortrait))\r\n filteredResolutions = resolutions.filter((resolution: string) => Number(resolution.split(\"x\")[0].trim()) <= w);\r\n else\r\n filteredResolutions = resolutions.filter(\r\n (resolution: string) => Number(resolution.split(\"x\")[0].trim()) <= h || Number(resolution.split(\"x\")[1].trim()) <= w\r\n );\r\n return filteredResolutions.indexOf(filteredResolutions[filteredResolutions.length - 1]);\r\n};\r\n\r\nexport const getSubtitleLabel = (subtitleLanguage: string) => {\r\n let label;\r\n switch (subtitleLanguage) {\r\n case \"fa\":\r\n label = \"فارسی\";\r\n break;\r\n case \"en\":\r\n label = \"انگلیسی\";\r\n break;\r\n case \"ar\":\r\n label = \"عربی\";\r\n break;\r\n case \"tr\":\r\n label = \"ترکی\";\r\n break;\r\n default:\r\n break;\r\n }\r\n return label;\r\n};\r\n\r\nexport const getOS = () => {\r\n const macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"];\r\n const windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"];\r\n const iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"];\r\n const userAgent = window.navigator.userAgent;\r\n const platform = window.navigator.platform;\r\n let os = \"\";\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) os = \"mac\";\r\n else if (iosPlatforms.indexOf(platform) !== -1) os = \"ios\";\r\n else if (windowsPlatforms.indexOf(platform) !== -1) os = \"windows\";\r\n else if (/Android/.test(userAgent)) os = \"android\";\r\n else if (/Linux/.test(platform)) os = \"linux\";\r\n\r\n return os;\r\n};\r\n\r\nexport const deleteQueryParamsInUrl = (queryParam: string) => {\r\n const url = new URL(window.location.href);\r\n url.searchParams.delete(queryParam);\r\n history.pushState({}, \"\", url.href);\r\n};\r\n\r\nexport const handleRedirectCards = (id?: string, type?: string) => {\r\n const url = new URL(window.location.href);\r\n url.searchParams.set(\"id\", id!);\r\n url.searchParams.set(\"type\", type!);\r\n return history.pushState({}, \"\", url.href);\r\n};\r\n\r\nexport const strToObj = (str: string) => {\r\n var obj = {};\r\n if (str && typeof str === \"string\") {\r\n var objStr = str.match(/\\{(.)+\\}/g);\r\n eval(\"obj =\" + objStr);\r\n }\r\n return obj;\r\n};\r\n\r\nexport const flattenObject = (input: any, keyName?: string) => {\r\n let result: any = {};\r\n for (const key in input) {\r\n const newKey = keyName ? `${keyName}_${key}` : key;\r\n if (typeof input[key] === \"object\" && !Array.isArray(input[key])) result = { ...result, ...flattenObject(input[key], newKey) };\r\n else result[newKey] = input[key];\r\n }\r\n return result;\r\n};\r\n\r\nexport const findIntersectionBetweenTwoArray = (arr1: string[], arr2: string[]) => arr1.filter((element) => !arr2.includes(element));\r\n\r\n","import controllerReducer from \"./slices/controllerSlice\";\r\nimport videoDataReducer from \"./slices/videoDataSlice\";\r\nimport popoversReducer from \"./slices/popoversSlice\";\r\nimport userReducer from \"./slices/userSlice\";\r\n\r\nimport { configureStore } from \"@reduxjs/toolkit\";\r\n\r\nconst store = configureStore({\r\n reducer: {\r\n controller: controllerReducer,\r\n videoData: videoDataReducer,\r\n popovers: popoversReducer,\r\n user: userReducer,\r\n },\r\n devTools: true,\r\n middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: false })\r\n});\r\n\r\nexport type RootState = ReturnType<typeof store.getState>;\r\nexport type AppDispatch = typeof store.dispatch;\r\nexport default store;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IPopoversSlice } from \"../../interfaces/interfaces\";\r\n\r\nconst PopOversSliceState: IPopoversSlice = {\r\n markersListPopover: false,\r\n settingPopover: false,\r\n sharePopover: false,\r\n feedbackPopover: false,\r\n multiLivesPopover: false,\r\n pollPopover: false,\r\n fullRatePopover: true,\r\n autoPlayPopover: false,\r\n recommendListPopover: false,\r\n tagsPopover: false,\r\n speedPopover: false,\r\n playListPopover: false,\r\n playListCardPopover: false,\r\n commentPopover: false,\r\n personalMarkersPopover: false,\r\n bookmarksPopover: false,\r\n chatPopover: false,\r\n chatRulesPopover: false,\r\n chatEmojisPopover: false,\r\n trailerPopover: false,\r\n loginPopover: false,\r\n qualityLevelsPopover: false\r\n};\r\nexport const popoversSlice = createSlice({\r\n name: \"popover\",\r\n initialState: PopOversSliceState,\r\n reducers: {\r\n setMarkersListPopover: (state, action: PayloadAction<boolean>) => {\r\n state.markersListPopover = action.payload;\r\n },\r\n setSettingPopover: (state, action: PayloadAction<boolean>) => {\r\n state.settingPopover = action.payload;\r\n },\r\n setSharePopover: (state, action: PayloadAction<boolean>) => {\r\n state.sharePopover = action.payload;\r\n },\r\n setFeedbackPopover: (state, action: PayloadAction<boolean>) => {\r\n state.feedbackPopover = action.payload;\r\n },\r\n setMultiLivesPopovers: (state, action: PayloadAction<boolean>) => {\r\n state.multiLivesPopover = action.payload;\r\n },\r\n setPollPopover: (state, action: PayloadAction<boolean>) => {\r\n state.pollPopover = action.payload;\r\n },\r\n setFullRatePopover: (state, action: PayloadAction<boolean | undefined>) => {\r\n state.fullRatePopover = action.payload;\r\n },\r\n setAutoPlayPopover: (state, action: PayloadAction<boolean>) => {\r\n state.autoPlayPopover = action.payload;\r\n },\r\n setRecommendListPopover: (state, action: PayloadAction<boolean>) => {\r\n state.recommendListPopover = action.payload;\r\n },\r\n setTagsPopover: (state, action: PayloadAction<boolean>) => {\r\n state.tagsPopover = action.payload;\r\n },\r\n setSpeedPopover: (state, action: PayloadAction<boolean>) => {\r\n state.speedPopover = action.payload;\r\n },\r\n setPlayListPopover: (state, action: PayloadAction<boolean>) => {\r\n state.playListPopover = action.payload;\r\n },\r\n setPlayListCardPopover: (state, action: PayloadAction<boolean>) => {\r\n state.playListCardPopover = action.payload;\r\n },\r\n setCommentPopover: (state, action: PayloadAction<boolean>) => {\r\n state.commentPopover = action.payload;\r\n },\r\n setPersonalMarkersPopover: (state, action: PayloadAction<boolean>) => {\r\n state.personalMarkersPopover = action.payload;\r\n },\r\n setBookmarksPopover: (state, action: PayloadAction<boolean>) => {\r\n state.bookmarksPopover = action.payload;\r\n },\r\n setChatPopover: (state, action: PayloadAction<boolean>) => {\r\n state.chatPopover = action.payload;\r\n },\r\n setChatRulesPopover: (state, action: PayloadAction<boolean>) => {\r\n state.chatRulesPopover = action.payload;\r\n },\r\n setChatEmojisPopover: (state, action: PayloadAction<boolean>) => {\r\n state.chatEmojisPopover = action.payload;\r\n },\r\n setTrailerPopover: (state, action: PayloadAction<boolean>) => {\r\n state.trailerPopover = action.payload;\r\n },\r\n setLoginPopover: (state, action: PayloadAction<boolean>) => {\r\n state.loginPopover = action.payload;\r\n },\r\n setQualityLevelsPopover: (state, action: PayloadAction<boolean>) => {\r\n state.qualityLevelsPopover = action.payload;\r\n },\r\n setClearPopoversSlice: (state) => {\r\n state.markersListPopover = false;\r\n state.settingPopover = false;\r\n state.sharePopover = false;\r\n state.feedbackPopover = false;\r\n state.multiLivesPopover = false;\r\n state.pollPopover = false;\r\n state.autoPlayPopover = false;\r\n state.recommendListPopover = false;\r\n state.tagsPopover = false;\r\n state.speedPopover = false;\r\n state.playListPopover = false;\r\n state.playListCardPopover = false;\r\n state.commentPopover = false;\r\n state.personalMarkersPopover = false;\r\n state.bookmarksPopover = false;\r\n state.chatPopover = false;\r\n state.chatRulesPopover = false;\r\n state.chatEmojisPopover = false;\r\n state.trailerPopover = false;\r\n state.loginPopover = false;\r\n state.qualityLevelsPopover = false;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setMarkersListPopover,\r\n setSettingPopover,\r\n setSharePopover,\r\n setFeedbackPopover,\r\n setMultiLivesPopovers,\r\n setPollPopover,\r\n setFullRatePopover,\r\n setAutoPlayPopover,\r\n setRecommendListPopover,\r\n setTagsPopover,\r\n setSpeedPopover,\r\n setCommentPopover,\r\n setPlayListPopover,\r\n setPlayListCardPopover,\r\n setPersonalMarkersPopover,\r\n setBookmarksPopover,\r\n setChatPopover,\r\n setChatEmojisPopover,\r\n setTrailerPopover,\r\n setLoginPopover,\r\n setChatRulesPopover,\r\n setQualityLevelsPopover,\r\n setClearPopoversSlice\r\n} = popoversSlice.actions;\r\n\r\nexport default popoversSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IBookmark, IPreFactor, IMarker, IUserSettings, IUserSlice, IVideoSettings, IFactor } from \"../../interfaces/interfaces\";\r\n\r\nconst UserSliceState: IUserSlice = {\r\n userId: \"\",\r\n authToken: \"\",\r\n refreshToken: \"\",\r\n avatar_url: \"\",\r\n name: \"\",\r\n phone_number: \"\",\r\n isLogin: false,\r\n selectedPersonalMarker: undefined,\r\n settings: {\r\n quality: -1,\r\n brightness: 100,\r\n volume: 100,\r\n speed: 1,\r\n poll_emoji: true\r\n },\r\n videoSettings: {\r\n is_like: null,\r\n time: 0\r\n },\r\n bookmarks: [],\r\n bookmarkId: undefined,\r\n preFactor: undefined,\r\n factor: undefined,\r\n showContinuousePlayback: false\r\n};\r\n\r\nexport const userSlice = createSlice({\r\n name: \"user\",\r\n initialState: UserSliceState,\r\n reducers: {\r\n setUserId: (state, action: PayloadAction<string>) => {\r\n state.userId = action.payload;\r\n },\r\n setAuthToken: (state, action: PayloadAction<string>) => {\r\n state.authToken = action.payload;\r\n },\r\n setRefreshToken: (state, action: PayloadAction<string>) => {\r\n state.refreshToken = action.payload;\r\n },\r\n setUserInfo: (state, action: PayloadAction<any>) => {\r\n state.avatar_url = action.payload.avatar_url;\r\n state.name = action.payload.name;\r\n state.phone_number = action.payload.phone_number;\r\n state.userId = action.payload.id;\r\n state.isLogin = true;\r\n },\r\n setSelectedPersonalMarker: (state, action: PayloadAction<undefined | IMarker>) => {\r\n state.selectedPersonalMarker = action.payload;\r\n },\r\n setUserSettings: (state, action: PayloadAction<IUserSettings>) => {\r\n state.settings = action.payload;\r\n },\r\n setVideoSettings: (state, action: PayloadAction<IVideoSettings>) => {\r\n state.videoSettings = action.payload;\r\n },\r\n setBookamrks: (state, action: PayloadAction<IBookmark[]>) => {\r\n state.bookmarks = action.payload;\r\n },\r\n setBookmarkId: (state, action: PayloadAction<number | undefined>) => {\r\n state.bookmarkId = action.payload;\r\n },\r\n setPreFactor: (state, action: PayloadAction<IPreFactor | undefined>) => {\r\n state.preFactor = action.payload;\r\n },\r\n setFactor: (state, action: PayloadAction<IFactor | undefined | null>) => {\r\n state.factor = action.payload;\r\n },\r\n setShowContinuousePlayback: (state, action: PayloadAction<boolean>) => {\r\n state.showContinuousePlayback = action.payload;\r\n },\r\n setClearUserSlice: () => {\r\n return UserSliceState;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setUserId,\r\n setAuthToken,\r\n setRefreshToken,\r\n setUserInfo,\r\n setSelectedPersonalMarker,\r\n setUserSettings,\r\n setVideoSettings,\r\n setBookamrks,\r\n setBookmarkId,\r\n setPreFactor,\r\n setFactor,\r\n setShowContinuousePlayback,\r\n setClearUserSlice\r\n} = userSlice.actions;\r\n\r\nexport default userSlice.reducer;\r\n","import axios from \"axios\";\r\nimport { getAccessToken } from \"./baseUrl\";\r\nimport { IApiCaller, IAxiosConfig, IRetryPolicy, IStatusMessageError, IStringKeyValue } from \"../interfaces/interfaces\";\r\nimport store from \"../redux/store\";\r\nimport { generateNewAccessToken, wait } from \"../helpers\";\r\n\r\nconst getLimit = () => 100;\r\n\r\nexport const apiCaller: any = async ({\r\n url,\r\n method = \"GET\",\r\n data,\r\n headers,\r\n retryCount = 1,\r\n maxRetryCount = 0,\r\n errorMessage,\r\n retryPolicy,\r\n errorCallback,\r\n timeoutCount\r\n}: IApiCaller) => {\r\n let axiosConfig: IAxiosConfig = {\r\n url: url,\r\n method: method,\r\n headers: {\r\n ...headers,\r\n \"Content-Type\": \"application/json\"\r\n },\r\n timeout: timeoutCount ? timeoutCount * 1000 : undefined\r\n };\r\n if (data) {\r\n if (method === \"GET\")\r\n axiosConfig = {\r\n ...axiosConfig,\r\n params: {\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\r\n ...data\r\n }\r\n };\r\n else\r\n axiosConfig = {\r\n ...axiosConfig,\r\n data: {\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\r\n ...data\r\n }\r\n };\r\n } else {\r\n if (method === \"GET\")\r\n axiosConfig = {\r\n ...axiosConfig,\r\n params: {\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider\r\n }\r\n };\r\n else\r\n axiosConfig = {\r\n ...axiosConfig,\r\n data: {\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider\r\n }\r\n };\r\n }\r\n try {\r\n return await axios(axiosConfig);\r\n } catch (error: any) {\r\n if (error && error.response && error.response.status === 401) {\r\n await generateNewAccessToken();\r\n const newHeader = {\r\n ...headers,\r\n authorization: `Bearer ${getAccessToken()}`\r\n };\r\n let newRetryCount = retryCount + 1;\r\n await wait(newRetryCount);\r\n return apiCaller({\r\n url,\r\n method,\r\n data,\r\n headers: newHeader,\r\n retryCount: newRetryCount,\r\n maxRetryCount,\r\n errorMessage,\r\n retryPolicy,\r\n errorCallback\r\n });\r\n } else {\r\n if (errorCallback) errorCallback(error.response.status, error.response.message);\r\n let newRetryDelay = 0,\r\n newMaxRetryCount = 0;\r\n if (retryPolicy !== undefined) {\r\n for (let i = 0; i < retryPolicy.length; i++) {\r\n if (\r\n (((retryPolicy[i].codeAbove && error.response.status >= retryPolicy[i].codeAbove!) ||\r\n (retryPolicy[i].codeBelow && error.response.status <= retryPolicy[i].codeBelow!)) &&\r\n (retryPolicy[i].excludeCodes.length === 0 || !retryPolicy[i].excludeCodes.includes(error.response.status))) ||\r\n retryPolicy[i].includeCodes.length === 0 ||\r\n retryPolicy[i].includeCodes.includes(error.response.status)\r\n ) {\r\n newMaxRetryCount = retryPolicy[i].count;\r\n newRetryDelay = retryPolicy[i].delay;\r\n break;\r\n }\r\n }\r\n } else {\r\n newMaxRetryCount = maxRetryCount;\r\n newRetryDelay = retryCount + 1;\r\n }\r\n if (retryCount < newMaxRetryCount) {\r\n await wait(newRetryDelay);\r\n return apiCaller({\r\n url,\r\n method,\r\n data,\r\n headers,\r\n retryCount: retryCount + 1,\r\n newMaxRetryCount,\r\n errorMessage,\r\n retryPolicy,\r\n errorCallback\r\n });\r\n } else if (error.response)\r\n return {\r\n data: error.response.data ? error.response.data : { detail: \"عملیات با خطا مواجه شده است.\" },\r\n status: error.response.status\r\n };\r\n }\r\n }\r\n};\r\n\r\nexport function get(event: (response: any, status: number) => void, url: string, params: { [k: string]: any } = {}, lang = \"fa\", auth = true) {\r\n const generatedUrl = new URL(url);\r\n const newParams: any = {\r\n ...params,\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider\r\n };\r\n Object.keys(newParams).forEach((key) => {\r\n if (newParams[key] !== undefined) {\r\n generatedUrl.searchParams.append(key, newParams[key]);\r\n }\r\n });\r\n let status: number;\r\n fetch(generatedUrl.href, {\r\n method: \"GET\",\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\r\n .then(function (response) {\r\n status = response.status;\r\n if (status === 429) {\r\n setTimeout(() => {\r\n get(event, url, params, lang, auth);\r\n }, getLimit());\r\n }\r\n return response.json();\r\n })\r\n .then(function (data) {\r\n event(data, status);\r\n })\r\n .catch((err) => {\r\n event(err, status);\r\n });\r\n}\r\n\r\nexport function getAll(path: string, retryPolicy?: IRetryPolicy[], params?: any, retryCount: number = 1, maxRetryCount: number = 0) {\r\n return new Promise(async (resolve, reject) => {\r\n // Added reject to the Promise executor function.\r\n try {\r\n const url = new URL(path);\r\n const limit = 1000;\r\n if (params) {\r\n Object.keys(params).forEach((key) => {\r\n if (params[key]) {\r\n url.searchParams.set(key, params[key]);\r\n }\r\n });\r\n }\r\n url.searchParams.set(\"limit\", limit.toString());\r\n const response = await fetch(url.href);\r\n if (!response.ok) {\r\n // Check if the response was not ok (status not in the range 200-299).\r\n throw response;\r\n }\r\n const data = await response.json();\r\n const count = data.count;\r\n const requestCount = Math.ceil(count / limit) - 1;\r\n const promises: Array<Promise<any>> = [];\r\n for (let i = 0; i < requestCount; i++) {\r\n const offset = i * limit; // Fixed the offset calculation.\r\n url.searchParams.set(\"offset\", offset.toString());\r\n const promise: Promise<any> = fetch(url.href).then((res) => {\r\n if (res.ok) {\r\n return res.json();\r\n }\r\n return res.json().then((err) => Promise.reject(err));\r\n });\r\n promises.push(promise);\r\n }\r\n Promise.all(promises)\r\n .then((res) => {\r\n const results = res.flatMap((item) => item.results);\r\n resolve([...data.results, ...results]);\r\n })\r\n .catch(reject); // Added catch to handle any errors in the Promise.all.\r\n } catch (error: any) {\r\n let newRetryDelay = 0,\r\n newMaxRetryCount = 0;\r\n if (retryPolicy !== undefined) {\r\n for (let i = 0; i < retryPolicy.length; i++) {\r\n if (\r\n ((retryPolicy[i].codeAbove && error.status >= retryPolicy[i].codeAbove!) ||\r\n (retryPolicy[i].codeBelow && error.status <= retryPolicy[i].codeBelow!)) &&\r\n (retryPolicy[i].excludeCodes.length === 0 || !retryPolicy[i].excludeCodes.includes(error.status)) &&\r\n (retryPolicy[i].includeCodes.length === 0 || retryPolicy[i].includeCodes.includes(error.status))\r\n ) {\r\n newMaxRetryCount = retryPolicy[i].count;\r\n newRetryDelay = retryPolicy[i].delay;\r\n break;\r\n }\r\n }\r\n if (retryCount < newMaxRetryCount) {\r\n await wait(newRetryDelay);\r\n getAll(path, retryPolicy, params, retryCount + 1, newMaxRetryCount);\r\n }\r\n }\r\n }\r\n });\r\n}\r\n\r\nclass ApiCallError extends Error {\r\n status: number = 0;\r\n retryQty: number = 0;\r\n\r\n constructor(message?: string, status: number = 0, retryQty: number = 0) {\r\n super(message);\r\n this.status = status;\r\n this.retryQty = retryQty;\r\n }\r\n}\r\n\r\nconst getProjectError: (errorKey: string) => IStatusMessageError = (errorKey: string) => {\r\n const projectErrors: { [key: string]: IStatusMessageError } = {\r\n timeout: {\r\n status: -1,\r\n message: \"timeout\"\r\n },\r\n notFound: {\r\n status: 404,\r\n message: \"not found\"\r\n },\r\n conflict: {\r\n status: 409,\r\n message: \"conflict\"\r\n },\r\n frequentlyRequest: {\r\n status: 429,\r\n message: \"frequently request\"\r\n },\r\n internalServerError: {\r\n status: 500,\r\n message: \"internal server error\"\r\n },\r\n serviceUnavailable: {\r\n status: 503,\r\n message: \"service unavailable\"\r\n }\r\n };\r\n return projectErrors[errorKey];\r\n};\r\n\r\nconst getAnonValue: (key: string) => string = (key: string) => {\r\n return getAnonConfig()[key];\r\n};\r\n\r\nconst anonConfigGenerator = (newAnonConfig: IStringKeyValue = {}) => {\r\n const anonConfig: IStringKeyValue = {\r\n ANON_FAILURE_RETRY_DELAY_THROTTLE: \"5\",\r\n ANON_FAILURE_RETRY_COUNT_THROTTLE: \"3\",\r\n FAILURE_RETRY_DELAY_INTERNAL_SERVER_ERROR: \"5\",\r\n FAILURE_RETRY_COUNT_INTERNAL_SERVER_ERROR: \"3\",\r\n FAILURE_RETRY_DELAY_TIMEOUT: \"5\",\r\n FAILURE_RETRY_COUNT_TIMEOUT: \"3\",\r\n LANG: \"fa\",\r\n DIR: \"rtl\"\r\n };\r\n const updateAnonConfig = { ...anonConfig, ...newAnonConfig };\r\n return () => updateAnonConfig;\r\n};\r\n\r\nlet getAnonConfig: () => IStringKeyValue = anonConfigGenerator();\r\n\r\nexport { getProjectError, ApiCallError, getAnonValue, getLimit };\r\n","const envs = require(\"../configs/nextConfigs/next.config.js\");\r\nconst isNpmPackage = require(\"../configs/npmPackage/npmPackage\");\r\n\r\nimport Cookies from \"js-cookie\";\r\n\r\nexport const getStatus = () => (isNpmPackage ? envs.status : (process.env.status as string));\r\nexport const getBaseUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string));\r\nexport const getGetAggregatorApiLiveUrl = () => (isNpmPackage ? envs.aggregatorBaseUrl : (process.env.aggregatorBaseUrl as string));\r\nexport const getSetAggregatorUrl = () => (isNpmPackage ? envs.setAggregatorBaseUrl : (process.env.setAggregatorBaseUrl as string));\r\nexport const getRestApiLiveUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string)) + \"/live/api\";\r\nexport const getRestApiUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string)) + \"/api\";\r\nexport const getRestApiCommentUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string)) + \"/comment-service/api\";\r\nexport const getFluentdUrl = () => (isNpmPackage ? envs.fluentdUrl : (process.env.fluentdUrl as string));\r\nexport const getEmojiUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string)) + \"/emoji\";\r\nexport const getLoginZarebinUrl = () => (isNpmPackage ? envs.loginRedirectUrl : (process.env.loginRedirectUrl as string));\r\nexport const getLoginSplusUrl = () => (isNpmPackage ? envs.splusLoginRedirectUrl : (process.env.splusLoginRedirectUrl as string));\r\nexport const getsplusDownloadAppUrl = () => (isNpmPackage ? envs.splusDownloadAppUrl : (process.env.splusDownloadAppUrl as string));\r\nexport const getMagnix = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string));\r\nexport const getZarebinNasle3Url = () => (isNpmPackage ? envs.zarebinNasle3Url : (process.env.zarebinNasle3Url as string));\r\nexport const getChatBaseUrl = () => (isNpmPackage ? envs.chatBaseUrl : (process.env.chatBaseUrl as string));\r\nexport const uesrTracker = () => (isNpmPackage ? envs.trackerRestAPI : (process.env.trackerRestAPI as string)) + \"/tracker-service/api\";\r\nexport const getChatAPIUrl = () => (isNpmPackage ? envs.chatAPIBaseUrl : (process.env.chatAPIBaseUrl as string));\r\nexport const getLoginBaseUrl = () => (isNpmPackage ? envs.loginBaseUrl : (process.env.loginBaseUrl as string)) + \"/api\";\r\nexport const getWhiteListTargets = () => (isNpmPackage ? envs.whiteListTargets : (process.env.whiteListTargets as string));\r\nexport const getWhiteListGeneralUrl = () => (isNpmPackage ? envs.whiteListGeneralUrl : (process.env.whiteListGeneralUrl as string));\r\nexport const getIsSendToken = () => (isNpmPackage ? envs.sendXToken : (process.env.sendXToken as string));\r\nexport const getInitialLoadedFragmentCount = () =>\r\n isNpmPackage ? envs.initialLoadedFragmentCount : (process.env.initialLoadedFragmentCount as string);\r\nexport const getZarebinUserConfig = () => (isNpmPackage ? envs.zarebinUserConfig : (process.env.zarebinUserConfig as string));\r\nexport const getAccessToken = () => {\r\n let cookieKey: string = getCookieKey();\r\n const cookieValue = Cookies.get(cookieKey);\r\n if (cookieValue) {\r\n return (isNpmPackage ? envs.status === \"fars\" : process.env.status === \"fars\") ? cookieValue : (JSON.parse(cookieValue).access as string);\r\n }\r\n return false;\r\n};\r\nexport const getCookieKey = () => (isNpmPackage ? envs.cookieKey : (process.env.cookieKey as string));\r\n","import { conditions } from \"../conditions/conditions\";\r\nimport { ConditionName } from \"../interfaces/enums\";\r\nimport store from \"../redux/store\";\r\nimport {\r\n getChatAPIUrl,\r\n getChatBaseUrl,\r\n getEmojiUrl,\r\n getFluentdUrl,\r\n getGetAggregatorApiLiveUrl,\r\n getLoginBaseUrl,\r\n getMagnix,\r\n getRestApiCommentUrl,\r\n getRestApiLiveUrl,\r\n getRestApiUrl,\r\n getSetAggregatorUrl,\r\n getZarebinNasle3Url,\r\n uesrTracker\r\n} from \"./baseUrl\";\r\n\r\nexport const API = () => {\r\n const { params, details } = store.getState().videoData;\r\n const { bookmarkId } = store.getState().user;\r\n return {\r\n Ad: {\r\n getVast: `https://vfetch.yektanet.com/api/v1/load/16e31ffa-10ac-40c3-b380-fa378f8ecbb8`\r\n },\r\n live: {\r\n anonListConfigs: ``,\r\n getLiveUrl: `${getRestApiLiveUrl()}/v1/live/details/live/`,\r\n generalData: `${getGetAggregatorApiLiveUrl()}live/api/v1/get-aggregated/live/${params.id}/${details.id}`,\r\n postData: `${getSetAggregatorUrl()}live/api/v1/set-emoji-poll`,\r\n online_viewer: `${getSetAggregatorUrl()}live/api/v1/online-viewer/live/${details.id}/`,\r\n getArchiveUrl: `${getRestApiLiveUrl()}/v1/live/details/archive/`,\r\n getLiveMarkers: `${getRestApiLiveUrl()}/v1/live/list-event/live/`,\r\n multiLives: `${getRestApiLiveUrl()}/v1/live/viewers/live-archive-list/live/`,\r\n gifLinks: `${getEmojiUrl()}/gifs/gifConfig.json`,\r\n tempLink: `${getRestApiLiveUrl()}/v1/storage/temp_link/`,\r\n quiz: `${getSetAggregatorUrl()}live/api/v1/set-quiz`,\r\n quizUserRecoreds: (quizType: number, quizId: number) => `${getSetAggregatorUrl()}live/api/v1/get-user-quiz-record/${quizType}/${quizId}/`,\r\n liveChat: {\r\n getMessageList: (roomId: number) => `${getChatAPIUrl()}v1/chat/anon-list-messages/${roomId}/`,\r\n chat: (roomId: number) => `${getChatBaseUrl()}room/${roomId}/`,\r\n sendChatMessage: `${getChatAPIUrl()}v1/chat/send-message/`,\r\n getRoomId: (roomId: number) => `${getChatAPIUrl()}v1/chat/get-active-room/${roomId}/`\r\n }\r\n },\r\n vod: {\r\n getVodUrl: `${getRestApiLiveUrl()}/v1/live/details/vod/`,\r\n getVodMarkers: `${getRestApiLiveUrl()}/v1/live/list-event/vod/`\r\n },\r\n archive: {\r\n getArchiveUrl: `${getRestApiLiveUrl()}/v1/live/details/archive/`,\r\n getArchiveMarkers: `${getRestApiLiveUrl()}/v1/live/list-event/live/`\r\n },\r\n clip: {\r\n getClipUrl: `${getRestApiLiveUrl()}/v1/live/details/clip/`,\r\n getClipMarkers: `${getRestApiLiveUrl()}/v1/live/list-event/clip/`\r\n },\r\n\r\n searchViewers: `${getRestApiLiveUrl()}/v2/live/viewers/search/`,\r\n viewersTagList: (videoType: string) => `${getRestApiLiveUrl()}/v1/live/viewers-tag-list/${videoType}/`,\r\n viewCount: (content_id: number) => `${getRestApiLiveUrl()}/v1/viewed/content/${content_id}`,\r\n like: `${getRestApiLiveUrl()}/v1/like/content/${details.content_id}`,\r\n dislike: `${getRestApiLiveUrl()}/v1/dislike/content/${details.content_id}`,\r\n unlike: `${getRestApiLiveUrl()}/v1/unlike/content/${details.content_id}`,\r\n undislike: `${getRestApiLiveUrl()}/v1/undislike/content/${details.content_id}`,\r\n recommendationList: () => {\r\n let urlData = `${params.type}/${conditions(ConditionName.isLiveParam) ? details.id! : +params.id!}`;\r\n if (conditions(ConditionName.hasUserIds)) return `${getRestApiLiveUrl()}/v1/live/recommend/${urlData}/?user_ids=${params.user_ids}`;\r\n return `${getRestApiLiveUrl()}/v1/live/recommend/${urlData}/`;\r\n },\r\n auth: {\r\n refresh: `${getLoginBaseUrl()}/v2/profile/auth/token-refresh/`,\r\n login: (v = \"v5\") => `${getLoginBaseUrl()}/${v}/profile/auth/login/`,\r\n loginNasle3: () => `${getZarebinNasle3Url()}/auth/login`,\r\n verifyOtp: () => `${getZarebinNasle3Url()}/auth/verifyOtp`,\r\n code: (v = \"v2\") => `${getLoginBaseUrl()}/${v}/profile/auth/generate-code/`,\r\n validateCode: (v = \"v2\") => `${getLoginBaseUrl()}/${v}/profile/auth/validate-otp/`,\r\n captcha: (v = \"v1\") => `${getLoginBaseUrl()}/${v}/captcha/get-captcha/`\r\n },\r\n playList: `${getRestApiLiveUrl()}/v1/live/playlist/viewers-list-videos-playlists/${params.type}/${\r\n conditions(ConditionName.isLiveParam) ? +details.id! : +params.id!\r\n }/`,\r\n playListVideos: (id: number) => `${getRestApiLiveUrl()}/v2/live/list-viewers-playlist-videos/${id}/`,\r\n comment: {\r\n create: `${getRestApiCommentUrl()}/v1/comment/create/`,\r\n commentList: (id: number) => `${getRestApiCommentUrl()}/v1/comment/list-content-comments/${id}/`,\r\n replyList: (id: number) => `${getRestApiCommentUrl()}/v1/comment/list-comment-replies/${id}/`,\r\n canAddComment: (id: number) => `${getRestApiCommentUrl()}/v1/content-get-update-delete/${id}/`,\r\n like: (commentId: number) => `${getRestApiLiveUrl()}/v1/like/comment/${commentId}`,\r\n unlike: (commentId: number) => `${getRestApiLiveUrl()}/v1/unlike/comment/${commentId}`,\r\n default_message: (user_id: number) => `${getRestApiCommentUrl()}/v1/default-message/list/${user_id}/`,\r\n deleteComment: (commentId: number, v = \"v1\") => `${getRestApiCommentUrl()}/${v}/comment/delete-by-owner/${commentId}/`\r\n },\r\n serverTime: `${getRestApiUrl()}/v1/configuration/server-time/`,\r\n user: {\r\n profile: `${getZarebinNasle3Url()}/profile/users`,\r\n profileWithXToken: `${getMagnix()}/profiles/userprofile`,\r\n profileWithXTokenNasle3: `${getZarebinNasle3Url()}/profile`,\r\n settings: `${uesrTracker()}/v1/detail-setting/`,\r\n createSettings: `${uesrTracker()}/v1/create-setting/`,\r\n createPersonalMarker: `${uesrTracker()}/v1/create-marker/`,\r\n createVideoMetaData: `${uesrTracker()}/v1/video-metadata/`,\r\n bookmarks: `${uesrTracker()}/v1/list-create-bookmark/`,\r\n deleteBookmark: (id?: number) => `${uesrTracker()}/v1/retrieve-update-delete-bookmark/${id ?? bookmarkId}/`\r\n },\r\n trailer: {\r\n getList: `${getRestApiLiveUrl()}/v1/live/detail-trailer/${params.type}/${\r\n conditions(ConditionName.isLiveParam) ? +details.id! : +params.id!\r\n }/`\r\n },\r\n videoTimelineLog: `${getFluentdUrl()}/video-timeline.log`,\r\n logs: `${getFluentdUrl()}/drive-endpoint.log`,\r\n getViewersWindow: `${getRestApiLiveUrl()}/v1/vod/get-viewer-window/${params.type}/${params.id}/`,\r\n web_list_config: (v = \"v1\") => `${getRestApiUrl()}/${v}/configuration/list-web-configs/`\r\n };\r\n};\r\n\r\nexport const getApiUrls = () => {\r\n let apiUrl = \"\";\r\n let apiMarkerUrl = \"\";\r\n const { type } = store.getState().videoData.params;\r\n switch (type) {\r\n case \"live\":\r\n apiUrl = API().live.getLiveUrl;\r\n apiMarkerUrl = API().live.getLiveMarkers;\r\n break;\r\n case \"vod\":\r\n apiUrl = API().vod.getVodUrl;\r\n apiMarkerUrl = API().vod.getVodMarkers;\r\n break;\r\n case \"archive\":\r\n apiUrl = API().archive.getArchiveUrl;\r\n apiMarkerUrl = API().archive.getArchiveMarkers;\r\n break;\r\n case \"clip\":\r\n apiUrl = API().clip.getClipUrl;\r\n apiMarkerUrl = API().clip.getClipMarkers;\r\n break;\r\n default:\r\n break;\r\n }\r\n return {\r\n apiUrl,\r\n apiMarkerUrl\r\n };\r\n};\r\n","import { ITokens, IViewedVideo } from \"../../interfaces/interfaces\";\r\nimport Cookies from \"js-cookie\";\r\nimport store from \"../store\";\r\nimport { conditions } from \"../../conditions/conditions\";\r\nimport { videoTag } from \"../../constants\";\r\nimport { handleVideoType } from \"../../helpers\";\r\nimport { setShowContinuousePlayback, setVideoSettings } from \"../slices/userSlice\";\r\n\r\nexport const authToken = {\r\n key: \"HAMRAHI_CLOUD_AUTH_TOKEN\",\r\n get: (): ITokens | null => {\r\n const data = Cookies.get(authToken.key);\r\n if (data) return JSON.parse(data);\r\n return null;\r\n },\r\n set: (value: ITokens) => Cookies.set(authToken.key, JSON.stringify(value), { expires: 1095, sameSite: \"none\", secure: true }),\r\n remove: () => Cookies.remove(authToken.key)\r\n};\r\n\r\nexport const captchaStorageLogin = {\r\n key: \"HAMRAHI_CLOUD_LANDING_AUTH_CAPTCHA\",\r\n get: function (): string | null {\r\n const data = localStorage.getItem(captchaStorageLogin.key);\r\n if (data) {\r\n return JSON.parse(data);\r\n }\r\n return null;\r\n },\r\n set: (value: string) => {\r\n localStorage.setItem(captchaStorageLogin.key, JSON.stringify(value));\r\n },\r\n remove: () => {\r\n localStorage.removeItem(captchaStorageLogin.key);\r\n }\r\n};\r\n\r\nexport const captchaStorageCode = {\r\n key: \"HAMRAHI_CLOUD_LANDING_CODE_CAPTCHA\",\r\n get: function (): string | null {\r\n const data = localStorage.getItem(captchaStorageCode.key);\r\n if (data) {\r\n return JSON.parse(data);\r\n }\r\n return null;\r\n },\r\n set: (value: string) => {\r\n localStorage.setItem(captchaStorageCode.key, JSON.stringify(value));\r\n },\r\n remove: () => {\r\n localStorage.removeItem(captchaStorageCode.key);\r\n }\r\n};\r\n\r\nexport const handleContinuousPlayback = () => {\r\n const { videoSettings } = store.getState().user;\r\n const { params } = store.getState().videoData;\r\n const type: string = params.type!.toString();\r\n const currentTime = videoTag().currentTime;\r\n if (type !== \"live\" && currentTime !== 0) {\r\n const duration = videoTag().duration;\r\n const viewedVideo: IViewedVideo = {\r\n video_id: +params.id!,\r\n video_type: handleVideoType(),\r\n time: currentTime === duration ? 0 : Math.floor(videoTag().currentTime),\r\n is_like: videoSettings.is_like\r\n };\r\n let viewedVideosInLocalStorage = localStorage.getItem(\"viewedVideos\");\r\n if (viewedVideosInLocalStorage) {\r\n let viewedVideos: IViewedVideo[] = JSON.parse(viewedVideosInLocalStorage);\r\n viewedVideos = viewedVideos.filter(\r\n (video: IViewedVideo) => video.video_id !== viewedVideo.video_id || video.video_type !== viewedVideo.video_type\r\n );\r\n if (viewedVideos.length < 10) viewedVideos.push(viewedVideo);\r\n else {\r\n viewedVideos.shift();\r\n viewedVideos.push(viewedVideo);\r\n }\r\n localStorage.setItem(\"viewedVideos\", JSON.stringify(viewedVideos));\r\n } else localStorage.setItem(\"viewedVideos\", JSON.stringify([viewedVideo]));\r\n }\r\n};\r\n\r\nexport const handleApplyContinuousPlayback = () => {\r\n const dispatch = store.dispatch;\r\n const { params } = store.getState().videoData;\r\n let viewedVideosInLocalStorage = localStorage.getItem(\"viewedVideos\");\r\n if (viewedVideosInLocalStorage) {\r\n const viewedVideos: IViewedVideo[] = JSON.parse(viewedVideosInLocalStorage);\r\n const viewedVideo = viewedVideos.find(\r\n (video: IViewedVideo) => video.video_id === Number(params.id) && video.video_type === handleVideoType()\r\n );\r\n\r\n if (viewedVideo) {\r\n dispatch(setVideoSettings({ is_like: viewedVideo.is_like, time: viewedVideo.time }));\r\n if (viewedVideo.time !== 0) dispatch(setShowContinuousePlayback(true));\r\n }\r\n }\r\n};\r\n\r\n","import { AppDispatch, RootState } from \"./store\";\r\nimport { TypedUseSelectorHook, useDispatch, useSelector } from \"react-redux\";\r\n\r\nexport const useAppDispatch: any = () => useDispatch<AppDispatch>();\r\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;\r\n","import { conditions } from \"../conditions/conditions\";\r\nimport { videoTag } from \"../constants\";\r\nimport { flattenObject, getUUID } from \"../helpers\";\r\nimport { ConditionName, ContentTypesString } from \"../interfaces/enums\";\r\nimport { IDetails, IParams } from \"../interfaces/interfaces\";\r\nimport store from \"../redux/store\";\r\n\r\nexport const feedbackLog = (starNum: Number, reasons: string[], customText: string | undefined) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"feedback\",\r\n id: Number(params.id),\r\n stars: starNum ? starNum : starNum,\r\n text: reasons,\r\n customText: customText,\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const eventMarkerClickLog = (markerId: Number, markerTime: Number, markerTitle: String, markerDescription: String, markerSticker: String) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"eventMarkerClick\",\r\n video_id: conditions(ConditionName.isLiveParam) ? details.id : Number(params.id),\r\n markerId: markerId,\r\n markerTime: markerTime,\r\n markerTitle: markerTitle,\r\n markerDescription: markerDescription,\r\n markerSticker: markerSticker,\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const speedChangeLog = (selectedSpeed: Number) => {\r\n const { params, details } = store.getState().videoData;\r\n const { settings } = store.getState().user;\r\n return {\r\n category: \"speedChange\",\r\n previousSelectedSpeed: settings.speed,\r\n selectedSpeed: selectedSpeed,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const qualityChangeRequestLog = (selectedQuality: String) => {\r\n const { params, details } = store.getState().videoData;\r\n const { qualityLevels, manualQuality, autoQuality } = store.getState().controller;\r\n return {\r\n category: \"qualityChangeRequest\",\r\n currentPlayingQuality: `${qualityLevels[conditions(ConditionName.isAutoQuality) ? autoQuality ?? manualQuality! : manualQuality!]}P`,\r\n previousSelectedQuality: conditions(ConditionName.isAutoQuality) ? \"auto\" : `${qualityLevels[manualQuality!]}P`,\r\n selectedQuality: selectedQuality,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const catchUpLoadingLog = (duration: number) => {\r\n const { params, details } = store.getState().videoData;\r\n const { hlsLiveSyncPosition, qualityLevels, autoQuality } = store.getState().controller;\r\n const { settings } = store.getState().user;\r\n\r\n return {\r\n category: \"catchUpLoading\",\r\n previousVideoTime: Number(sessionStorage.getItem(\"previousVideoTime\")),\r\n currentVideoTime: hlsLiveSyncPosition,\r\n duration: duration,\r\n quality: `${conditions(ConditionName.isAutoQuality) ? qualityLevels[autoQuality!] : qualityLevels[settings.quality]}P`,\r\n isAutoQuality: conditions(ConditionName.isAutoQuality),\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const shareDialogLog = (videoTime: number, isJump: boolean, jumpTime: number | undefined, eventMarkerId?: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"shareDialog\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n videoTime: videoTime,\r\n eventMarkerId: eventMarkerId,\r\n provider: params.provider,\r\n jump: isJump ? \"true\" : \"false\",\r\n jumpTime: isJump ? jumpTime : undefined\r\n };\r\n};\r\n\r\nexport const shareCopyLog = (videoTime: number, isJump: boolean, jumpTime: number | undefined, EventMarker?: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"shareCopy\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n videoTime: videoTime,\r\n eventMarkerId: EventMarker,\r\n jump: isJump ? \"true\" : \"false\",\r\n jumpTime: isJump ? jumpTime : undefined,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const alternativeLiveLog = (alternativeLiveUserId: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"alternativeLiveClick\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n alternativeLiveUserId: alternativeLiveUserId,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const deActiveSettingLog = () => {\r\n const { params, details } = store.getState().videoData;\r\n const { settings } = store.getState().user;\r\n let data_base = {\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n if (!settings.poll_emoji) {\r\n return {\r\n ...data_base,\r\n category: \"deactiveSetting\",\r\n hasOtherLive: conditions(ConditionName.hasAlternativeLives) ? \"true\" : \"false\",\r\n hasPoll: conditions(ConditionName.hasPoll) ? \"true\" : \"false\",\r\n hasEmoji: conditions(ConditionName.hasEmojiList1Or2) ? \"true\" : \"false\"\r\n };\r\n } else\r\n return {\r\n ...data_base,\r\n category: \"activeSetting\"\r\n };\r\n};\r\n\r\nexport const backwardForwardLog = (type: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: type === \"backward\" ? \"backward\" : \"forward\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: details.stream_link ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const pollModalCloseLog = (params: IParams, details: IDetails, pollId: number) => {\r\n return {\r\n category: \"pollModalClose\",\r\n pollId: pollId,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: details.stream_link ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const tagClickLog = (tagText: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"tagClick\",\r\n tagText: tagText,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const likeDislikeLog = (category: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: category,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const fullscreenLog = (category: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: category,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const brightnessLog = (source: number, target: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"brightnessChange\",\r\n source: source,\r\n target: target,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const volumeLog = (source: number, target: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"volumeChange\",\r\n source: source,\r\n target: target,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const subtitleLog = (language: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"subtitle\",\r\n language: language,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const lockLog = (category: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: category,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const recommendationListLog = (targetVideoId: number, targetUserId: number, targetType: string, listIndex: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"recommend\",\r\n sourcevideoId: conditions(ConditionName.isLiveParam) ? details.id : +params.id!,\r\n targetVideoId: targetVideoId,\r\n sourceUserId: details.user_id,\r\n targetUserId: targetUserId,\r\n sourceType: params.type,\r\n targetType: targetType,\r\n listIndex: listIndex,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const ExceptionsLog = (type: string, message: string) => {\r\n return {\r\n category: \"error\",\r\n type: type,\r\n message: message\r\n };\r\n};\r\n\r\nexport const videoTimelineLog = (start: number, end: number) => {\r\n const { params, details } = store.getState().videoData;\r\n const { duration } = store.getState().controller;\r\n return {\r\n category: \"video-timeline\",\r\n video_id: conditions(ConditionName.isLiveParam) ? details.id : +params.id!,\r\n video_type: params.type === \"archive\" ? \"live\" : params.type,\r\n start: start,\r\n end: end,\r\n watchedDuration: end - start,\r\n video_duration: conditions(ConditionName.isLiveParam) ? null : Math.floor(duration),\r\n clientUUID: getUUID(),\r\n user_id: conditions(ConditionName.isLiveParam) ? params.id : details.user_id,\r\n content_type: details.content_type,\r\n content_id: details.content_id\r\n };\r\n};\r\n\r\nexport const bookmarkLog = (category: \"bookmark\" | \"unBookmark\") => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: category,\r\n id: conditions(ConditionName.isLiveParam) ? details.id : +params.id!,\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const autoQualityChangeLog = (sourceQuality: String, targetQuality: String, diffQuality: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"autoQualityChange\",\r\n sourceQuality: sourceQuality,\r\n targetQuality: targetQuality,\r\n diffQuality: diffQuality,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const pingpongLog = (startTimer: number, qualityHistory: number[]) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"pingpong\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n PingPongDuration: Number((new Date().getTime() - startTimer).toFixed(2)),\r\n PingPongSourceQuality: `${qualityHistory[0]}P`, // A A->B && B->A\r\n PingPongTargetQuality: `${qualityHistory[1]}P`, // B,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const pausePlayLog = (isPlay: boolean) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: isPlay ? \"playVideo\" : \"pauseVideo\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: details.stream_link ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const initLog = (loadingTime: number, waitingTime: number, bannerLoadingTime: number, firstChunkPlayingTime: number, timerRef: any) => {\r\n const { params, details } = store.getState().videoData;\r\n const totalTime = Date.now() - timerRef.current + loadingTime + waitingTime;\r\n const memory = (window.performance as any).memory;\r\n const timing = JSON.parse(JSON.stringify((window.performance as any).timing));\r\n return {\r\n category: \"initLog\",\r\n id: Number(params.id),\r\n type: params.type,\r\n origin: new URL(conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src!).origin,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n loading: loadingTime,\r\n bannerLoading: !conditions(ConditionName.hasBanner) || bannerLoadingTime < 0 ? 0 : bannerLoadingTime,\r\n waiting: waitingTime,\r\n firstChunkPlaying: firstChunkPlayingTime < 0 ? 0 : firstChunkPlayingTime,\r\n totalTime: totalTime,\r\n provider: params.provider,\r\n performance: flattenObject({ memory, timing }, \"performance\"),\r\n userAgent: window.navigator.userAgent\r\n };\r\n};\r\n\r\nexport const loadingLog = (waitingDuration: number, qualityLevel: number, timerRef: any, loadingCounterRef: any, videoEntranceTime: number) => {\r\n const { params, details, hlsLiveSyncPosition } = store.getState().videoData;\r\n const { settings } = store.getState().user;\r\n const videoTime = conditions(ConditionName.isLiveParam) ? hlsLiveSyncPosition : videoTag().currentTime;\r\n const previousLoaderDiff = Date.now() - timerRef.current;\r\n return {\r\n category: \"loading\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n duration: waitingDuration,\r\n quality: `${qualityLevel}P`,\r\n isAutoQuality: conditions(ConditionName.isAutoQuality),\r\n previousLoaderDiff: previousLoaderDiff,\r\n counter: loadingCounterRef.current,\r\n loadingPercentile: Number((waitingDuration / previousLoaderDiff).toFixed(2)),\r\n videoTime: videoTime,\r\n videoEntranceTime: videoEntranceTime,\r\n speed: settings.speed,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const playListClickLog = (playlistId: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"playListClick\",\r\n playlistId: playlistId,\r\n id: conditions(ConditionName.isLiveParam) ? details.id : +params.id!,\r\n type: params.type\r\n };\r\n};\r\n\r\nexport const videoOfPlaylistClickLog = (playlistId: number, videoId: number, videoType: number, videoIndex: number) => {\r\n return {\r\n category: \"videoOfPlaylistClick\",\r\n tag: playlistId,\r\n indexNumber: videoIndex,\r\n videoId: videoId,\r\n videoType: videoType\r\n };\r\n};","import store from \"../redux/store\";\r\nimport { ConditionName } from \"../interfaces/enums\";\r\nimport { apiCaller } from \"../services/apiCaller\";\r\nimport { API } from \"../services/services\";\r\nimport { conditions } from \"../conditions/conditions\";\r\nimport { getUUID } from \"../helpers\";\r\n\r\nexport const sendFluentLog = (data: any) => {\r\n const { params, details } = store.getState().videoData;\r\n let _data = {\r\n ...data,\r\n timestamp: Date.now(),\r\n clientUUID: getUUID(),\r\n uuid: getUUID(),\r\n link: window.location.href,\r\n user_id: conditions(ConditionName.isLiveParam) ? Number(params.id) : details.user_id,\r\n live_id: conditions(ConditionName.isLiveParam) ? details.id : null,\r\n format: data.category === \"feedback\" ? (conditions(ConditionName.isStaticFormat) ? \"static\" : \"hls\") : undefined,\r\n content_type: details.content_type,\r\n content_id: details.content_id\r\n };\r\n apiCaller({ url: API().logs, method: \"post\", data: _data });\r\n};\r\n","import { setCurrentTime, setIsFullScreen, setLock, setPlay } from \"../slices/controllerSlice\";\r\nimport store from \"../store\";\r\nimport { setIsComplexPortrait, setVideoElementSizeInfo, setVideoTimelines } from \"../slices/videoDataSlice\";\r\nimport { ConditionName } from \"../../interfaces/enums\";\r\nimport { apiCaller } from \"../../services/apiCaller\";\r\nimport { API } from \"../../services/services\";\r\nimport { setUserSettings } from \"../slices/userSlice\";\r\nimport { setClearPopoversSlice } from \"../slices/popoversSlice\";\r\nimport { videoTag } from \"../../constants\";\r\nimport { conditions } from \"../../conditions/conditions\";\r\nimport { backwardForwardLog, fullscreenLog, lockLog, videoTimelineLog } from \"../../logs/logs\";\r\nimport { sendFluentLog } from \"../../logs/fluentdLogger\";\r\n\r\nexport const handlePlayPause = (event: any) => {\r\n const dispatch = store.dispatch;\r\n if (event === null || event.target.nodeName !== \"INPUT\") {\r\n if (event !== null) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n videoTag().paused ? videoTag().play() : videoTag().pause();\r\n dispatch(setPlay(!videoTag().paused));\r\n }\r\n};\r\n\r\nexport const handlePlayPauseInDOM = (type: boolean) => {\r\n const dispatch = store.dispatch;\r\n if (type) {\r\n videoTag().play();\r\n dispatch(setPlay(true));\r\n return true;\r\n } else {\r\n videoTag().pause();\r\n dispatch(setPlay(false));\r\n return false;\r\n }\r\n};\r\n\r\nexport const handleChangeSoundVolume = (volume: number) => {\r\n const dispatch = store.dispatch;\r\n const { settings } = store.getState().user;\r\n dispatch(setUserSettings({ ...settings, volume }));\r\n if (conditions(ConditionName.isIOS)) videoTag().muted = !videoTag().muted;\r\n else videoTag().volume = volume / 100;\r\n};\r\n\r\nexport const handleBackwardForward = (type: string, forwardBackwardCount: number = 15, event?: any) => {\r\n if (type === \"touchBackward\") type = \"backward\";\r\n else if (type === \"touchForward\") type = \"forward\";\r\n if ((event && event.target.nodeName === \"INPUT\") || (type === \"backward\" && videoTag().currentTime < 15) || (type === \"forward\" && videoTag().duration - videoTag().currentTime < 15 )) return;\r\n sendFluentLog(backwardForwardLog(type));\r\n let currentTime = 0;\r\n if (type === \"backward\") {\r\n if (forwardBackwardCount === 0) currentTime = 0;\r\n else currentTime = videoTag().currentTime - forwardBackwardCount;\r\n } else if (type === \"forward\") {\r\n if (forwardBackwardCount === videoTag().duration) currentTime = forwardBackwardCount;\r\n else currentTime = videoTag().currentTime + forwardBackwardCount;\r\n }\r\n videoTag().currentTime = currentTime;\r\n};\r\n\r\nexport const handleFullScreen = () => {\r\n const dispatch = store.dispatch;\r\n const isFullScreen = document.fullscreenElement;\r\n if (conditions(ConditionName.isIOS)) {\r\n if ((videoTag() as any).webkitEnterFullScreen) {\r\n dispatch(setPlay(false));\r\n // Toggle fullscreen in Safari for iPad\r\n (videoTag() as any).webkitEnterFullScreen();\r\n } else {\r\n dispatch(setClearPopoversSlice());\r\n sendFluentLog(fullscreenLog(\"fullScreen\"));\r\n }\r\n } else {\r\n if (isFullScreen) {\r\n dispatch(setIsFullScreen(false));\r\n document.exitFullscreen();\r\n if (conditions(ConditionName.isTouchScreen) && conditions(ConditionName.isParamsPortrait)) dispatch(setIsComplexPortrait(true));\r\n } else {\r\n dispatch(setClearPopoversSlice());\r\n document.documentElement.requestFullscreen();\r\n dispatch(setIsFullScreen(true));\r\n sendFluentLog(fullscreenLog(\"fullScreen\"));\r\n if (conditions(ConditionName.isTouchScreen) && conditions(ConditionName.isParamsPortrait)) dispatch(setIsComplexPortrait(false));\r\n }\r\n }\r\n};\r\n\r\nexport const handleLockOrientation = () => {\r\n if (conditions(ConditionName.isTouchScreen) && !conditions(ConditionName.isIOS)) {\r\n if (conditions(ConditionName.isLandscape) && !conditions(ConditionName.isFullScreen)) (window.screen.orientation as any).lock(\"portrait\");\r\n else (window.screen.orientation as any).lock(\"landscape\");\r\n }\r\n};\r\n\r\nexport const handleLock = (type: string) => {\r\n const dispatch = store.dispatch;\r\n dispatch(setLock(type === \"lock\"));\r\n sendFluentLog(lockLog(type));\r\n if(type === \"unlock\") localStorage.setItem(\"unlock-click\",\"true\");\r\n};\r\n\r\nexport const handleVideoTimeline = (currentTimeValue: number, movedTimeValue?: number) => {\r\n if (conditions(ConditionName.isSendTimelineLog)) {\r\n const dispatch = store.dispatch;\r\n const { videoTimelines } = store.getState().videoData;\r\n let currentTime = Math.floor(currentTimeValue);\r\n let movedTime = Math.floor(movedTimeValue!);\r\n if (videoTimelines.length === 0) {\r\n dispatch(setVideoTimelines([currentTime >= videoTag().duration && !conditions(ConditionName.isLive) ? movedTime! : currentTime]));\r\n } else {\r\n if (videoTimelines[0] < currentTime)\r\n apiCaller({ url: API().videoTimelineLog, method: \"post\", data: videoTimelineLog(videoTimelines[0], currentTime) });\r\n if (movedTime && movedTime >= videoTag().duration) dispatch(setVideoTimelines([]));\r\n else dispatch(setVideoTimelines([movedTime!]));\r\n }\r\n }\r\n};\r\n\r\nexport const handleVideoElementSizeInfo = () => {\r\n const dispatch = store.dispatch;\r\n const element: any = document.getElementById(\"video-area\")?.getBoundingClientRect();\r\n element.height = (element.width * 9) / 16;\r\n if (element) dispatch(setVideoElementSizeInfo(element));\r\n};\r\n","import { apiCaller, getAll } from \"../../services/apiCaller\";\r\nimport { API, getApiUrls } from \"../../services/services\";\r\nimport { setIsLive } from \"../slices/controllerSlice\";\r\nimport {\r\n setAlternative_Lives,\r\n setChartPoints,\r\n setConfig,\r\n setEmojiList1,\r\n setEmojiList2,\r\n setEmojis,\r\n setErrorType,\r\n setGif,\r\n setInfo,\r\n setIsFetchDetails,\r\n setIsLiveError,\r\n setIsValidAddress,\r\n setLiveId,\r\n setMarkers,\r\n setOnlineViewers,\r\n setQuestion,\r\n setSelectedOptionId,\r\n setSelectedSubtitle,\r\n setSubtitleText\r\n} from \"../slices/videoDataSlice\";\r\nimport { subtitleLog } from \"../../logs/logs\";\r\nimport store from \"../store\";\r\nimport { ConditionName } from \"../../interfaces/enums\";\r\nimport { sendFluentLog } from \"../../logs/fluentdLogger\";\r\nimport { conditions } from \"../../conditions/conditions\";\r\nimport { addUuidToSrc, appendQueryParamsToChunks, getUUID, handlePageTitle, responseValidator, weighted_random } from \"../../helpers\";\r\nimport axios from \"axios\";\r\nimport { videoTag } from \"../../constants\";\r\nimport { handleDetailsConfig } from \"../../getDetailsConfigs\";\r\n\r\nconst videoViewCount = (contentId: number) => apiCaller({ url: API().viewCount(contentId), data: { uuid: getUUID() } });\r\n\r\nexport const getLiveAndVodDetails = async (userId?: number) => {\r\n const dispatch = store.dispatch;\r\n try {\r\n const d = await apiCaller({ ...handleDetailsConfig(userId) });\r\n if (responseValidator(d.status)) {\r\n appendQueryParamsToChunks(d.data.stream_link);\r\n await axios.head(\"https://\" + weighted_random(d.data.hls_links) + d.data.path);\r\n if (userId) return d.data;\r\n videoViewCount(d.data.content_id!);\r\n detailSetter(d.data);\r\n } else throw new Error(JSON.stringify({ status: d.status, message: d.data }));\r\n } catch (error: any) {\r\n if (userId) return;\r\n const { params } = store.getState().videoData;\r\n if (conditions(ConditionName.isLiveParam)) dispatch(setIsLiveError(true));\r\n handlePageTitle(String(params.id));\r\n dispatch(setIsFetchDetails(true));\r\n dispatch(setErrorType(\"liveAndVod\"));\r\n dispatch(setIsValidAddress(false));\r\n }\r\n};\r\n\r\nexport const detailSetter = (data: any) => {\r\n const dispatch = store.dispatch;\r\n const { params } = store.getState().videoData;\r\n\r\n if (data.title) handlePageTitle(data.title);\r\n else handlePageTitle(String(params.id));\r\n dispatch(\r\n setInfo({\r\n ...data,\r\n stream_link: !!data.stream_link && addUuidToSrc(\"https://\" + weighted_random(data.hls_links) + data.path)\r\n })\r\n );\r\n dispatch(setIsFetchDetails(true));\r\n dispatch(setIsValidAddress(true));\r\n};\r\n\r\nexport const getMarkers = async (id: Number) =>\r\n await getAll(getApiUrls().apiMarkerUrl + id + \"/\", [\r\n {\r\n codeAbove: 400,\r\n codeBelow: null,\r\n excludeCodes: [],\r\n includeCodes: [],\r\n delay: 2,\r\n count: 3\r\n }\r\n ]);\r\n\r\nexport const handleSubtitle = () => {\r\n const dispatch = store.dispatch;\r\n const { subtitles, selectedSubtitle } = store.getState().videoData;\r\n\r\n const faSubtitle: any = subtitles.find((subtitle: any) => subtitle.language === \"fa\");\r\n if (selectedSubtitle) {\r\n Object.values(videoTag().textTracks).find((textTrack: any) => textTrack.mode === \"showing\")!.mode = \"disabled\";\r\n dispatch(setSubtitleText(\"\"));\r\n dispatch(setSelectedSubtitle(undefined));\r\n sendFluentLog(subtitleLog(\"empty\"));\r\n } else {\r\n if (faSubtitle) {\r\n faSubtitle.mode = \"showing\";\r\n dispatch(setSelectedSubtitle(faSubtitle));\r\n sendFluentLog(subtitleLog(faSubtitle.language));\r\n } else {\r\n videoTag().textTracks[0].mode = \"showing\";\r\n dispatch(setSelectedSubtitle(videoTag().textTracks[0]));\r\n sendFluentLog(subtitleLog(videoTag().textTracks[0].language));\r\n }\r\n }\r\n};","import { IDetailsConfig } from \"./interfaces/interfaces\";\r\nimport store from \"./redux/store\";\r\nimport { getApiUrls } from \"./services/services\";\r\n\r\nexport const detailAPI = (id?: number) => {\r\n const { params } = store.getState().videoData;\r\n return getApiUrls().apiUrl + (id ? id : params.id);\r\n};\r\n\r\nconst detailsConfig: IDetailsConfig = {\r\n url: \"\",\r\n maxRetryCount: 0,\r\n headers: {},\r\n retryPolicy: [],\r\n errorCallback: undefined\r\n};\r\n\r\nconst nonLiveDetailsConfig = () => {\r\n detailsConfig.url = detailAPI();\r\n detailsConfig.maxRetryCount = 3;\r\n detailsConfig.retryPolicy = [\r\n {\r\n codeAbove: 500,\r\n codeBelow: null,\r\n excludeCodes: [],\r\n includeCodes: [409],\r\n delay: 1,\r\n count: 3\r\n },\r\n {\r\n codeAbove: null,\r\n codeBelow: 404,\r\n excludeCodes: [403, 402, 401, 400],\r\n includeCodes: [],\r\n delay: 10,\r\n count: 6\r\n }\r\n ];\r\n return detailsConfig;\r\n};\r\n\r\n\r\nexport const handleDetailsConfig = (userId?: number) => {\r\n nonLiveDetailsConfig();\r\n\r\n return detailsConfig;\r\n};\r\n"],"mappings":"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","names":["require_next_config","__commonJSMin","exports","module","init_esm_shims","npmPackage_exports","__export","isNpmPackage","init_npmPackage","__esmMin","init_esm_shims","init_esm_shims","createSlice","ControllerSliceState","controllerSlice","state","action","setPlay","setIsAutoPlay","setDuration","setCurrentTime","setMouseMoveTime","setQualityLevels","setQualityBitrates","setAutoQuality","setActiveElements","setIsLive","setIsLoading","setIsFullScreen","setBufferedTimeWidth","setFirstPlay","setHlsLivePosition","setActivePointerProgressBar","setDelayTurnOffControlbar","setManualQuality","setCanPlayVideo","setLock","setIsEnded","setTooltipTime","setShowMiniPlayer","setClearControllerSlice","setIsClickInnerCard","setLoadedFragmentsCount","controllerSlice_default","init_esm_shims","createSlice","VideoDataSliceState","videoDataSlice","state","action","setInfo","setPlayerParams","setStreamLinkParams","setMarkers","setLiveId","setVodId","setOnlineViewers","setQuestion","setSelectedOptionId","setEmojis","setAlternative_Lives","setConfig","setIsLiveError","setEmojiList1","setEmojiList2","setGif","setErrorType","setMultiLives","setMultiAudio","setSelectedAudioId","setSubtitles","setSelectedSubtitle","setSubtitleText","setSubtitleColor","setIsComplexPortrait","setIsComplexDesktop","setVideoElementSizeInfo","setRecommendationList","setToken","setIsFetchDetails","setIsValidAddress","setPlayList","setVideoTimelines","setWebListConfig","setChartPoints","setIsReady","setClearVideoDataSlice","setShowScreen","setTrailer","videoDataSlice_default","init_esm_shims","init_esm_shims","init_esm_shims","init_esm_shims","init_esm_shims","init_esm_shims","init_esm_shims","createSlice","PopOversSliceState","popoversSlice","state","action","setMarkersListPopover","setSettingPopover","setSharePopover","setFeedbackPopover","setMultiLivesPopovers","setPollPopover","setFullRatePopover","setAutoPlayPopover","setRecommendListPopover","setTagsPopover","setSpeedPopover","setCommentPopover","setPlayListPopover","setPlayListCardPopover","setPersonalMarkersPopover","setBookmarksPopover","setChatPopover","setChatEmojisPopover","setTrailerPopover","setLoginPopover","setChatRulesPopover","setQualityLevelsPopover","setClearPopoversSlice","popoversSlice_default","init_esm_shims","createSlice","UserSliceState","userSlice","state","action","setUserId","setAuthToken","setRefreshToken","setUserInfo","setSelectedPersonalMarker","setUserSettings","setVideoSettings","setBookamrks","setBookmarkId","setPreFactor","setFactor","setShowContinuousePlayback","setClearUserSlice","userSlice_default","configureStore","store","controllerSlice_default","videoDataSlice_default","popoversSlice_default","userSlice_default","getDefaultMiddleware","store_default","init_esm_shims","axios","init_esm_shims","Cookies","envs","isNpmPackage","getGetAggregatorApiLiveUrl","isNpmPackage","envs","getSetAggregatorUrl","getRestApiLiveUrl","getRestApiUrl","getRestApiCommentUrl","getFluentdUrl","getEmojiUrl","getMagnix","isNpmPackage","envs","getZarebinNasle3Url","getChatBaseUrl","uesrTracker","getChatAPIUrl","getLoginBaseUrl","getAccessToken","cookieKey","getCookieKey","cookieValue","Cookies","isNpmPackage","envs","apiCaller","url","method","data","headers","retryCount","maxRetryCount","errorMessage","retryPolicy","errorCallback","timeoutCount","axiosConfig","store_default","axios","error","generateNewAccessToken","newHeader","getAccessToken","newRetryCount","wait","newRetryDelay","newMaxRetryCount","i","anonConfigGenerator","newAnonConfig","updateAnonConfig","getAnonConfig","init_esm_shims","API","params","details","store_default","bookmarkId","getRestApiLiveUrl","getGetAggregatorApiLiveUrl","getSetAggregatorUrl","getEmojiUrl","quizType","quizId","roomId","getChatAPIUrl","getChatBaseUrl","videoType","content_id","urlData","conditions","getLoginBaseUrl","v","getZarebinNasle3Url","id","getRestApiCommentUrl","commentId","user_id","getRestApiUrl","getMagnix","uesrTracker","getFluentdUrl","getApiUrls","apiUrl","apiMarkerUrl","type","init_esm_shims","Cookies","authToken","data","Cookies","value","handleContinuousPlayback","videoSettings","store_default","params","type","currentTime","videoTag","duration","viewedVideo","handleVideoType","viewedVideosInLocalStorage","viewedVideos","video","handleApplyContinuousPlayback","dispatch","setVideoSettings","setShowContinuousePlayback","wait","s","resolve","getRemainingTime","timestamp","timePassedInSeconds","rtf","compare","a","b","handlePageTitle","title","conditions","getUUID","uuid","uuidGenerator","char","val","customizeInterval","timeCount","cb","isTouchScreen","isTouchScreenLandscape","isFullScreen","store_default","isTouchScreenPortrait","handleIsComplexDesktop","isPortrait","isIOS","controllbarIconSize","addZeroBefore","n","secondsToHMS","seconds","h","m","secondsToPersianHMS","second","minute","item","efficientSecondsToPersianHMS","staticFormats","realFormat","addUuidToSrc","src","urlObject","urlSrc","handleSumVotes","question","sumVotes","option","livePoll","poll","checkParentTarget","event","target","unitization","viewers","appendQueryParamsToChunks","link","dispatch","token","params","queryParams","hasQuestionMark","setStreamLinkParams","inViewPort","element","positionLeft","positionRight","handleIsComplexPortrait","isFullMobilePortrait","videoElementSizeInfo","handleRippleCircle","id","circle","ripple","handleRipple","size","clientX","clientY","utf8_to_b64","text","responseValidator","status","generateNewAccessToken","authToken","data","apiCaller","API","convertB64ToFile","dataUrl","filename","arr","mime","bstr","u8arr","parseJwt","base64Url","base64","jsonPayload","c","handlePopoverSizeInMiniPlayer","numbersToLetters","handleVideoType","handleHasXTokenParamOrSendXToken","getWebEnvConfig","key","config","getDomainFromUrl","url","splitedUrl","clearRedux","setClearVideoDataSlice","setClearControllerSlice","setClearUserSlice","setClearPopoversSlice","weighted_random","options","i","weights","random","convertTimeToSeconds","time","imageFormatChecking","handlePageLoadTime","loadingDurationRef","pageLoadTime","highestResolutionSupported","resolutions","width","height","w","filteredResolutions","resolution","getSubtitleLabel","subtitleLanguage","label","getOS","macosPlatforms","windowsPlatforms","iosPlatforms","userAgent","platform","os","deleteQueryParamsInUrl","queryParam","handleRedirectCards","type","strToObj","flattenObject","input","keyName","result","newKey","findIntersectionBetweenTwoArray","arr1","arr2","conditions","type","trailer","params","details","gif","isComplexPortrait","isComplexDesktop","markers","subtitles","question","emojis","onlineViewers","alternative_Lives","recommendationList","multiAudio","isLiveError","isValidAddress","isFetchDetails","token","selectedOptionId","emojiList1","emojiList2","selectedSubtitle","playList","videoElementSizeInfo","chartPoints","isReady","store_default","firstPlay","lock","canPlayVideo","qualityLevels","manualQuality","activeElements","isLoading","isLive","isEnded","isAutoPlay","play","isFullScreen","autoQuality","showMiniPlayer","trailerPopover","settingPopover","markersListPopover","sharePopover","feedbackPopover","multiLivesPopover","fullRatePopover","autoPlayPopover","recommendListPopover","speedPopover","tagsPopover","personalMarkersPopover","bookmarksPopover","chatPopover","loginPopover","chatEmojisPopover","commentPopover","playListCardPopover","playListPopover","pollPopover","qualityLevelsPopover","isLogin","settings","bookmarkId","avatar_url","name","phone_number","videoSettings","showContinuousePlayback","staticFormats","isIOS","isTouchScreenPortrait","isTouchScreenLandscape","isTouchScreen","isFullMobilePortrait","popover","container","activeElementsTime","showLoaderTime","notShowingLoaderTime","continuousePlaybackIntervalTime","footerPadding","conditions","videoTag","progressBar","progressBarWidth","store_default","footerPadding","livePoll","init_esm_shims","useDispatch","useSelector","useAppDispatch","useAppSelector","init_esm_shims","speedChangeLog","selectedSpeed","params","details","store_default","settings","conditions","qualityChangeRequestLog","selectedQuality","qualityLevels","manualQuality","autoQuality","catchUpLoadingLog","duration","hlsLiveSyncPosition","backwardForwardLog","type","params","details","store_default","fullscreenLog","category","params","details","store_default","conditions","brightnessLog","source","target","volumeLog","lockLog","category","params","details","store_default","conditions","videoTimelineLog","start","end","params","details","store_default","duration","conditions","getUUID","autoQualityChangeLog","sourceQuality","targetQuality","diffQuality","params","details","store_default","conditions","pingpongLog","startTimer","qualityHistory","pausePlayLog","isPlay","initLog","loadingTime","waitingTime","bannerLoadingTime","firstChunkPlayingTime","timerRef","totalTime","memory","timing","flattenObject","loadingLog","waitingDuration","qualityLevel","loadingCounterRef","videoEntranceTime","hlsLiveSyncPosition","settings","videoTime","videoTag","previousLoaderDiff","init_esm_shims","sendFluentLog","data","params","details","store_default","_data","getUUID","conditions","apiCaller","API","init_esm_shims","handlePlayPause","event","dispatch","store_default","videoTag","setPlay","handleChangeSoundVolume","volume","dispatch","store_default","settings","setUserSettings","conditions","videoTag","handleBackwardForward","type","forwardBackwardCount","event","sendFluentLog","backwardForwardLog","currentTime","handleFullScreen","isFullScreen","setPlay","setClearPopoversSlice","fullscreenLog","setIsFullScreen","setIsComplexPortrait","handleLockOrientation","handleLock","setLock","lockLog","handleVideoTimeline","currentTimeValue","movedTimeValue","videoTimelines","movedTime","setVideoTimelines","apiCaller","API","videoTimelineLog","handleVideoElementSizeInfo","element","setVideoElementSizeInfo","init_esm_shims","axios","init_esm_shims","detailAPI","id","params","store_default","getApiUrls","detailsConfig","nonLiveDetailsConfig","handleDetailsConfig","userId","videoViewCount","contentId","apiCaller","API","getUUID","getLiveAndVodDetails","userId","dispatch","store_default","d","handleDetailsConfig","responseValidator","appendQueryParamsToChunks","axios","weighted_random","detailSetter","params","conditions","setIsLiveError","handlePageTitle","setIsFetchDetails","setErrorType","setIsValidAddress","data","setInfo","addUuidToSrc"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var c=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var d=(t,e)=>()=>(t&&(e=t(t=0)),e);var a=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),s= exports.c =(t,e)=>{for(var r in e)c(t,r,{get:e[r],enumerable:!0})},f=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of i(e))!u.call(t,n)&&n!==r&&c(t,n,{get:()=>e[n],enumerable:!(o=m(e,n))||o.enumerable});return t};var U=t=>f(c({},"__esModule",{value:!0}),t);var p=d(()=>{});exports.a = d; exports.b = a; exports.c = s; exports.d = U; exports.e = p;
|
|
2
|
+
//# sourceMappingURL=chunk-A3BCKK27.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/tsup/assets/cjs_shims.js"],"names":["init_cjs_shims","__esmMin"],"mappings":"yfAAA,IAAAA,EAAAC,EAAA","sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () =>\n typeof document === 'undefined'\n ? new URL('file:' + __filename).href\n : (document.currentScript && document.currentScript.src) ||\n new URL('main.js', document.baseURI).href\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk3Q5F32UVjs = require('./chunk-3Q5F32UV.js');var _chunkA3BCKK27js = require('./chunk-A3BCKK27.js');_chunkA3BCKK27js.e.call(void 0, );var G=()=>{let t=_chunk3Q5F32UVjs.I.dispatch,{params:e}=_chunk3Q5F32UVjs.I.getState().videoData,a=n=>{n.requestFullScreen?n.requestFullScreen():n.mozRequestFullScreen?n.mozRequestFullScreen():n.webkitRequestFullScreen&&n.webkitRequestFullScreen()};t(_chunk3Q5F32UVjs.G.call(void 0, )),a(document.documentElement),t(_chunk3Q5F32UVjs.i.call(void 0, e.fullscreen==="true"))},xe= exports.a =()=>{let t=".ts",e=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(){arguments[1].endsWith(t)&&(arguments[1]=arguments[1]+"?uuid="+_chunk3Q5F32UVjs.T.call(void 0, )),e.apply(this,arguments)}},Z=(t,e)=>{let a=_chunk3Q5F32UVjs.I.dispatch;e.current=setInterval(()=>{let s=t.target.buffered.end(0)/_chunk3Q5F32UVjs.O.call(void 0, ).duration*100;a(_chunk3Q5F32UVjs.j.call(void 0, s))},500)},Se= exports.b =()=>{let{params:t,streamLinkParams:e}=_chunk3Q5F32UVjs.I.getState().videoData;return{xhrSetup:(a,n)=>{n.split("m3u8")[1]||(n=`${n}${e}`),a.open("GET",n,!0)},startLevel:t.type==="live"?1:-1,debug:!1,enableWorker:!0,liveDurationInfinity:_chunk3Q5F32UVjs.ba.call(void 0, "hasQuizParams"),maxLiveSyncPlaybackRate:_chunk3Q5F32UVjs.ba.call(void 0, "hasQuizParams")?2:1,abrBandWidthUpFactor:_chunk3Q5F32UVjs.ba.call(void 0, "hasQuizParams")?.6:.7,abrBandWidthFactor:_chunk3Q5F32UVjs.ba.call(void 0, "hasQuizParams")?.8:.95,backBufferLength:_chunk3Q5F32UVjs.ba.call(void 0, "hasQuizParams")?2:1/0,maxBufferLength:_chunk3Q5F32UVjs.ba.call(void 0, "hasQuizParams")?12:30,maxMaxBufferLength:_chunk3Q5F32UVjs.ba.call(void 0, "hasQuizParams")?600:60,liveMaxLatencyDuration:_chunk3Q5F32UVjs.ba.call(void 0, "hasQuizParams")?8:void 0,manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:10,retryDelayMs:5e3,maxRetryDelayMs:1e4},errorRetry:{maxNumRetry:10,retryDelayMs:5e3,maxRetryDelayMs:1e4}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:10,retryDelayMs:5e3,maxRetryDelayMs:1e4},errorRetry:{maxNumRetry:10,retryDelayMs:5e3,maxRetryDelayMs:1e4}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:10,retryDelayMs:5e3,maxRetryDelayMs:1e4},errorRetry:{maxNumRetry:10,retryDelayMs:5e3,maxRetryDelayMs:1e4}}}}};var ee=(t,e)=>{let a=_chunk3Q5F32UVjs.I.dispatch,n=[],s=[""],d=[];if(t.levels.map(o=>{n.push(o.attrs.RESOLUTION.split("x")[1].trim()),s.push(`${(o.bitrate/1e3).toFixed(0)}kbps`),d.push(o.attrs.RESOLUTION)}),t.autoLevelCapping=_chunk3Q5F32UVjs.$.call(void 0, d,window.innerWidth,window.innerHeight),a(_chunk3Q5F32UVjs.d.call(void 0, n)),a(_chunk3Q5F32UVjs.e.call(void 0, s)),["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","msfullscreenchange"].forEach(o=>document.addEventListener(o,c=>{_chunk3Q5F32UVjs.ba.call(void 0, "isAutoQuality")&&(t.autoLevelCapping=_chunk3Q5F32UVjs.$.call(void 0, d,window.innerWidth,window.innerHeight),t.nextLevel=-1)},!1)),e.audioTracks.length>0){let o=e.audioTracks.sort(c=>c.default===!0?-1:1);a(_chunk3Q5F32UVjs.w.call(void 0, o))}},te= exports.d =t=>t.audioTrack=0,De= exports.e =(t,e)=>{let{params:a,details:n}=_chunk3Q5F32UVjs.I.getState().videoData,s=_chunk3Q5F32UVjs.ba.call(void 0, "isGeneral")?a.src:n.stream_link;e.loadSource(s),e.on(t.Events.MANIFEST_PARSED,(d,o)=>ee(e,o)),e.on(t.Events.MANIFEST_LOADED,()=>te(e))},j=(t,e,a)=>{if(e.frag.type!=="audio"){let n=_chunk3Q5F32UVjs.I.dispatch,{settings:s}=_chunk3Q5F32UVjs.I.getState().user,{qualityLevels:d,manualQuality:o,autoQuality:c}=_chunk3Q5F32UVjs.I.getState().controller;_chunk3Q5F32UVjs.ba.call(void 0, "isAutoQuality")?_chunk3Q5F32UVjs.ba.call(void 0, "isAutoQuality")&&c===void 0?(t.nextLevel=-1,a(d[e.frag.level]),n(_chunk3Q5F32UVjs.f.call(void 0, e.frag.level))):_chunk3Q5F32UVjs.ba.call(void 0, "isAutoQuality")&&(a(d[e.frag.level]),c!==e.frag.level&&n(_chunk3Q5F32UVjs.f.call(void 0, e.frag.level))):(e.frag.level!==o&&(t.nextLevel=d[s.quality]?s.quality:-1),d[s.quality]?(n(_chunk3Q5F32UVjs.o.call(void 0, s.quality)),n(_chunk3Q5F32UVjs.f.call(void 0, void 0))):(a(d[e.frag.level]),n(_chunk3Q5F32UVjs.f.call(void 0, e.frag.level)),n(_chunk3Q5F32UVjs.H.call(void 0, {...s,quality:-1}))))}},Le= exports.f =t=>{let e=_chunk3Q5F32UVjs.I.dispatch,n=_optionalChain([t, 'access', _2 => _2.mainForwardBufferInfo, 'optionalAccess', _3 => _3.end])/_chunk3Q5F32UVjs.O.call(void 0, ).duration*100;e(_chunk3Q5F32UVjs.j.call(void 0, n))},Pe= exports.g =t=>{let e=_chunk3Q5F32UVjs.I.dispatch;_chunk3Q5F32UVjs.ba.call(void 0, "isLiveParam")&&e(_chunk3Q5F32UVjs.l.call(void 0, t.liveSyncPosition))},Te= exports.h =(t,e,a,n)=>{let{params:s,multiAudio:d,selectedAudioId:o}=_chunk3Q5F32UVjs.I.getState().videoData;d&&o!==void 0&&o!==e.audioTrack&&(e.audioTrack=o,e.trigger(t.Events.AUDIO_TRACK_LOADING,d[o])),(s.type||!_chunk3Q5F32UVjs.ba.call(void 0, "isLiveParam"))&&j(e,a,n)},Me= exports.i =(t,e,a)=>{let{type:n}=_chunk3Q5F32UVjs.I.getState().videoData.params;(n||n==="live")&&j(t,e,a)},Fe= exports.j =(t,e)=>{if(e.event!=="hlsAudioTrackLoading")return{type:"HLS_"+e.type,message:e.error.message}},X=t=>{let e=_chunk3Q5F32UVjs.I.dispatch,{params:a,details:n}=_chunk3Q5F32UVjs.I.getState().videoData,s=_chunk3Q5F32UVjs.ba.call(void 0, "hasPreviewStart")?n.preview_start:0,d=_chunk3Q5F32UVjs.ba.call(void 0, "hasPreviewEnd")?n.preview_end:_chunk3Q5F32UVjs.O.call(void 0, )?_chunk3Q5F32UVjs.O.call(void 0, ).duration:0;a.preview==="true"&&t.target.currentTime>=d&&(_chunk3Q5F32UVjs.O.call(void 0, ).currentTime=s,e(_chunk3Q5F32UVjs.c.call(void 0, s)))},we= exports.k =(t,e)=>{let a=_chunk3Q5F32UVjs.I.dispatch;t.preventDefault(),e.current=Date.now(),a(_chunk3Q5F32UVjs.h.call(void 0, !0))},Re= exports.l =(t,e)=>{let a=_chunk3Q5F32UVjs.I.dispatch;t.preventDefault(),e.current=0,a(_chunk3Q5F32UVjs.h.call(void 0, !0))},Ve= exports.m =(t,e)=>{let a=_chunk3Q5F32UVjs.I.dispatch,{details:n,params:s}=_chunk3Q5F32UVjs.I.getState().videoData,{videoSettings:d}=_chunk3Q5F32UVjs.I.getState().user;if(t.preventDefault(),e.current=Date.now(),a(_chunk3Q5F32UVjs.a.call(void 0, !0)),_chunk3Q5F32UVjs.ba.call(void 0, "isFirstPlay")){if(_chunk3Q5F32UVjs.ba.call(void 0, "isLiveParam")||(_chunk3Q5F32UVjs.O.call(void 0, ).currentTime=s.t?+s.t:d.time,a(_chunk3Q5F32UVjs.c.call(void 0, s.t?+s.t:d.time))),_chunk3Q5F32UVjs.ba.call(void 0, "hasFullScreenParams")&&G(),_chunk3Q5F32UVjs.ba.call(void 0, "isFullScreen")&&_chunk3Q5F32UVjs.ua.call(void 0, ),_chunk3Q5F32UVjs.ba.call(void 0, "hasPreviewParams")){let o=n.preview_start?n.preview_start:0;_chunk3Q5F32UVjs.O.call(void 0, ).currentTime=o,a(_chunk3Q5F32UVjs.c.call(void 0, o))}a(_chunk3Q5F32UVjs.A.call(void 0, [Math.floor(_chunk3Q5F32UVjs.O.call(void 0, ).currentTime)]))}_chunk3Q5F32UVjs.pa.call(void 0, _chunk3Q5F32UVjs.ma.call(void 0, !0)),a(_chunk3Q5F32UVjs.y.call(void 0, ""))},be= exports.n =(t,e,a,n,s,d,o,c)=>{let K=_chunk3Q5F32UVjs.I.dispatch,{autoQuality:R,canPlayVideo:J,firstPlay:Y,qualityLevels:V}=_chunk3Q5F32UVjs.I.getState().controller,{settings:b}=_chunk3Q5F32UVjs.I.getState().user,E=b.quality===-1&&R?V[R]:V[b.quality],h=0;o.current&&(h=Date.now()-o.current),Y&&_chunk3Q5F32UVjs.O.call(void 0, ).played&&_chunk3Q5F32UVjs.pa.call(void 0, _chunk3Q5F32UVjs.na.call(void 0, e.current,Date.now()-a.current,n.current-a.current,Date.now()-s.current,s)),K(_chunk3Q5F32UVjs.k.call(void 0, !1)),J&&h>0&&E!==void 0&&(d.current=h,o.current=0,_chunk3Q5F32UVjs.pa.call(void 0, _chunk3Q5F32UVjs.oa.call(void 0, h,E,s,t,c.current)),t.current=t.current+1,s.current=Date.now())},Ee= exports.o =t=>{let e=_chunk3Q5F32UVjs.I.dispatch;t.preventDefault(),_chunk3Q5F32UVjs.pa.call(void 0, _chunk3Q5F32UVjs.ma.call(void 0, !1)),e(_chunk3Q5F32UVjs.a.call(void 0, !1))},Ie= exports.p =t=>{let e=_chunk3Q5F32UVjs.I.dispatch,{selectedSubtitle:a}=_chunk3Q5F32UVjs.I.getState().videoData;t.preventDefault(),X(t),e(_chunk3Q5F32UVjs.c.call(void 0, t.target.currentTime)),a&&a.activeCues&&a.activeCues.length>0&&e(_chunk3Q5F32UVjs.y.call(void 0, a.activeCues[0].text))},ke= exports.q =t=>{let e=_chunk3Q5F32UVjs.I.dispatch,{settings:a}=_chunk3Q5F32UVjs.I.getState().user;if(t.preventDefault(),e(_chunk3Q5F32UVjs.h.call(void 0, !1)),e(_chunk3Q5F32UVjs.p.call(void 0, !0)),_chunk3Q5F32UVjs.O.call(void 0, ).volume=a.volume/100,_chunk3Q5F32UVjs.ba.call(void 0, "isIOSLive")||e(_chunk3Q5F32UVjs.b.call(void 0, t.target.duration)),_chunk3Q5F32UVjs.ba.call(void 0, "isIOS")){let n=Object.values(t.target.textTracks);n&&n.length&&e(_chunk3Q5F32UVjs.x.call(void 0, Object.values(n[0]).length?n:[]))}else e(_chunk3Q5F32UVjs.x.call(void 0, Object.values(t.target.textTracks)))},Ae= exports.r =t=>{let e=_chunk3Q5F32UVjs.I.dispatch,{params:a}=_chunk3Q5F32UVjs.I.getState().videoData;t.preventDefault(),e(_chunk3Q5F32UVjs.v.call(void 0, !0)),e(_chunk3Q5F32UVjs.q.call(void 0, !0)),e(_chunk3Q5F32UVjs.g.call(void 0, !0)),_chunk3Q5F32UVjs.wa.call(void 0, _chunk3Q5F32UVjs.O.call(void 0, ).duration),_chunk3Q5F32UVjs.ba.call(void 0, "hasOnFinishedParams")&&a.onFinished()},qe= exports.s =(t,e)=>{let a=_chunk3Q5F32UVjs.I.dispatch;t.preventDefault(),e.current=Date.now(),a(_chunk3Q5F32UVjs.k.call(void 0, !1))},Oe= exports.t =()=>{let t=_chunk3Q5F32UVjs.I.dispatch;t(_chunk3Q5F32UVjs.h.call(void 0, !1))},Qe= exports.u =t=>{let e=_chunk3Q5F32UVjs.I.dispatch;t.preventDefault(),e(_chunk3Q5F32UVjs.c.call(void 0, t.target.currentTime)),X(t)},Ce= exports.v =()=>{let{params:t}=_chunk3Q5F32UVjs.I.getState().videoData;_chunk3Q5F32UVjs.ba.call(void 0, "hasOnFinishedParams")&&t.onFinished()},Be= exports.w =t=>{let e=_chunk3Q5F32UVjs.I.dispatch;t.preventDefault(),e(_chunk3Q5F32UVjs.a.call(void 0, !1))},Ne= exports.x =(t,e)=>{let a=_chunk3Q5F32UVjs.I.dispatch;t.preventDefault(),a(_chunk3Q5F32UVjs.a.call(void 0, !0)),e.current=Date.now(),_chunk3Q5F32UVjs.ba.call(void 0, "isFirstPlay")&&_chunk3Q5F32UVjs.ba.call(void 0, "hasFullScreenParams")&&G(),_chunk3Q5F32UVjs.ba.call(void 0, "isFullScreen")&&_chunk3Q5F32UVjs.ua.call(void 0, )},ze= exports.y =(t,e,a)=>{let n=_chunk3Q5F32UVjs.I.dispatch,{firstPlay:s}=_chunk3Q5F32UVjs.I.getState().controller;n(_chunk3Q5F32UVjs.h.call(void 0, !1)),s&&_chunk3Q5F32UVjs.O.call(void 0, ).played&&_chunk3Q5F32UVjs.pa.call(void 0, _chunk3Q5F32UVjs.na.call(void 0, Math.round(t.current),Date.now()-e.current,0,Date.now()-a.current,a)),n(_chunk3Q5F32UVjs.k.call(void 0, !1))},_e= exports.z =t=>{let e=_chunk3Q5F32UVjs.I.dispatch;t.preventDefault(),e(_chunk3Q5F32UVjs.c.call(void 0, t.target.currentTime)),e(_chunk3Q5F32UVjs.b.call(void 0, t.target.duration))},Ue= exports.A =t=>{let e=_chunk3Q5F32UVjs.I.dispatch;t.preventDefault(),e(_chunk3Q5F32UVjs.h.call(void 0, !1)),e(_chunk3Q5F32UVjs.p.call(void 0, !0))},He= exports.B =(t,e)=>{t.preventDefault(),Z(t,e)},We= exports.C =t=>{let{params:e}=_chunk3Q5F32UVjs.I.getState().videoData;_chunk3Q5F32UVjs.ba.call(void 0, "hasOnFinishedParams")&&e.onFinished(),t.preventDefault()};var $e=t=>{_chunk3Q5F32UVjs.wa.call(void 0, _chunk3Q5F32UVjs.O.call(void 0, ).currentTime),_chunk3Q5F32UVjs.ba.call(void 0, "isVisibilityChange")&&(document.hidden?t.stopLoad():t.startLoad())};exports.a = xe; exports.b = Se; exports.c = ee; exports.d = te; exports.e = De; exports.f = Le; exports.g = Pe; exports.h = Te; exports.i = Me; exports.j = Fe; exports.k = we; exports.l = Re; exports.m = Ve; exports.n = be; exports.o = Ee; exports.p = Ie; exports.q = ke; exports.r = Ae; exports.s = qe; exports.t = Oe; exports.u = Qe; exports.v = Ce; exports.w = Be; exports.x = Ne; exports.y = ze; exports.z = _e; exports.A = Ue; exports.B = He; exports.C = We; exports.D = $e;
|
|
2
|
+
//# sourceMappingURL=chunk-RCU5ZGMI.js.map
|