cafe-video-player 3.0.13 → 3.0.14
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/{VideoHighLighter-OBD2IGA6.js → VideoHighLighter-DUJF47R3.js} +2 -2
- package/{VideoHighLighter-OBD2IGA6.js.map → VideoHighLighter-DUJF47R3.js.map} +1 -1
- package/{VideoHighLighter-T2LVURER.mjs → VideoHighLighter-ZDZ7LZVD.mjs} +2 -2
- package/{VideoHighLighter-T2LVURER.mjs.map → VideoHighLighter-ZDZ7LZVD.mjs.map} +1 -1
- package/{backwardForward-ZUVULGGJ.mjs → backwardForward-3X63XNNJ.mjs} +2 -2
- package/{backwardForward-ZUVULGGJ.mjs.map → backwardForward-3X63XNNJ.mjs.map} +1 -1
- package/{backwardForward-S6ZHVC75.js → backwardForward-HTLSZBXC.js} +2 -2
- package/{backwardForward-S6ZHVC75.js.map → backwardForward-HTLSZBXC.js.map} +1 -1
- package/chunk-3TPEXSZV.js +2 -0
- package/{chunk-ZWGZGWEB.js.map → chunk-3TPEXSZV.js.map} +1 -1
- package/chunk-5UGSCO4K.js +3 -0
- package/{chunk-BFE2RKVK.js.map → chunk-5UGSCO4K.js.map} +1 -1
- package/{chunk-4XKL6TLO.mjs → chunk-6LGS5W4B.mjs} +2 -2
- package/{chunk-4XKL6TLO.mjs.map → chunk-6LGS5W4B.mjs.map} +1 -1
- package/{chunk-WU4GN63P.mjs → chunk-B2LB3L3X.mjs} +2 -2
- package/{chunk-WU4GN63P.mjs.map → chunk-B2LB3L3X.mjs.map} +1 -1
- package/{chunk-SKRDEKL2.mjs → chunk-EPUUJE7V.mjs} +4 -4
- package/{chunk-SKRDEKL2.mjs.map → chunk-EPUUJE7V.mjs.map} +1 -1
- package/{chunk-CCO6GDG2.mjs → chunk-HOAJ3EFI.mjs} +3 -3
- package/{chunk-CCO6GDG2.mjs.map → chunk-HOAJ3EFI.mjs.map} +1 -1
- package/chunk-HZASW2B2.js +2 -0
- package/{chunk-DJ6KVZRK.js.map → chunk-HZASW2B2.js.map} +1 -1
- package/{chunk-OGCKLRYP.js → chunk-ISVY5ION.js} +2 -2
- package/{chunk-OGCKLRYP.js.map → chunk-ISVY5ION.js.map} +1 -1
- package/{chunk-IBV5SFIT.js → chunk-K4YPVDEE.js} +2 -2
- package/{chunk-IBV5SFIT.js.map → chunk-K4YPVDEE.js.map} +1 -1
- package/{chunk-QM3W7EYS.js → chunk-KSZ35TPK.js} +2 -2
- package/{chunk-QM3W7EYS.js.map → chunk-KSZ35TPK.js.map} +1 -1
- package/{chunk-WFHA2FPC.js → chunk-MVNOUM3G.js} +5 -5
- package/{chunk-WFHA2FPC.js.map → chunk-MVNOUM3G.js.map} +1 -1
- package/{chunk-BC4366GN.mjs → chunk-NLCBOGTI.mjs} +2 -2
- package/{chunk-BC4366GN.mjs.map → chunk-NLCBOGTI.mjs.map} +1 -1
- package/{chunk-Y7BIYTQP.mjs → chunk-P46UX5ND.mjs} +2 -2
- package/{chunk-Y7BIYTQP.mjs.map → chunk-P46UX5ND.mjs.map} +1 -1
- package/{chunk-GYUGYOVP.mjs → chunk-P4O3IKAQ.mjs} +2 -2
- package/{chunk-GYUGYOVP.mjs.map → chunk-P4O3IKAQ.mjs.map} +1 -1
- package/{chunk-73KLK4QU.mjs → chunk-QFADUEGX.mjs} +2 -2
- package/{chunk-73KLK4QU.mjs.map → chunk-QFADUEGX.mjs.map} +1 -1
- package/{chunk-PKXJEXKI.mjs → chunk-UL5LQB3G.mjs} +2 -2
- package/{chunk-PKXJEXKI.mjs.map → chunk-UL5LQB3G.mjs.map} +1 -1
- package/{chunk-U3VFRU6R.js → chunk-VUHZVVMS.js} +2 -2
- package/{chunk-U3VFRU6R.js.map → chunk-VUHZVVMS.js.map} +1 -1
- package/{chunk-ZSSCZTW3.js → chunk-W5NVHMWX.js} +2 -2
- package/{chunk-ZSSCZTW3.js.map → chunk-W5NVHMWX.js.map} +1 -1
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/{nonStaticVideoTag-6OHMSJEH.js → nonStaticVideoTag-5HEUBWAN.js} +2 -2
- package/{nonStaticVideoTag-6OHMSJEH.js.map → nonStaticVideoTag-5HEUBWAN.js.map} +1 -1
- package/{nonStaticVideoTag-J6JNATM6.mjs → nonStaticVideoTag-P47FI6UV.mjs} +2 -2
- package/{nonStaticVideoTag-J6JNATM6.mjs.map → nonStaticVideoTag-P47FI6UV.mjs.map} +1 -1
- package/package.json +1 -1
- package/staticPlayer-7LS2DPUR.js +2 -0
- package/{staticPlayer-TNS4JFRP.js.map → staticPlayer-7LS2DPUR.js.map} +1 -1
- package/{staticPlayer-2IO6XEKM.mjs → staticPlayer-J7Q3JXQ2.mjs} +2 -2
- package/{staticPlayer-2IO6XEKM.mjs.map → staticPlayer-J7Q3JXQ2.mjs.map} +1 -1
- package/{staticVideoTag-2YYZBRPY.mjs → staticVideoTag-JOPHGL3R.mjs} +2 -2
- package/{staticVideoTag-2YYZBRPY.mjs.map → staticVideoTag-JOPHGL3R.mjs.map} +1 -1
- package/{staticVideoTag-VLNCYNKV.js → staticVideoTag-OZZU5MWF.js} +2 -2
- package/{staticVideoTag-VLNCYNKV.js.map → staticVideoTag-OZZU5MWF.js.map} +1 -1
- package/videoArea-BVYEZUSL.mjs +2 -0
- package/{videoArea-2F2NDD76.mjs.map → videoArea-BVYEZUSL.mjs.map} +1 -1
- package/videoArea-M6ZAWJQW.js +2 -0
- package/{videoArea-35ABV3CM.js.map → videoArea-M6ZAWJQW.js.map} +1 -1
- package/videoPlayerStyles.css +4 -4
- package/{vodPlayer-337TYSU4.js → vodPlayer-B5JRKEU3.js} +2 -2
- package/{vodPlayer-337TYSU4.js.map → vodPlayer-B5JRKEU3.js.map} +1 -1
- package/{vodPlayer-JTS4WVOB.mjs → vodPlayer-GQETGYFT.mjs} +2 -2
- package/{vodPlayer-JTS4WVOB.mjs.map → vodPlayer-GQETGYFT.mjs.map} +1 -1
- package/chunk-BFE2RKVK.js +0 -3
- package/chunk-DJ6KVZRK.js +0 -2
- package/chunk-ZWGZGWEB.js +0 -2
- package/staticPlayer-TNS4JFRP.js +0 -2
- package/videoArea-2F2NDD76.mjs +0 -2
- package/videoArea-35ABV3CM.js +0 -2
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import {b as b$1,e,c as c$1,a as a$1,y,d,f,x as x$1,m,t,w as w$1}from'./chunk-4QMWBTB5.mjs';import {createSlice,configureStore}from'@reduxjs/toolkit';import Ge,{AxiosError}from'axios';import {twMerge}from'tailwind-merge';var Se=b$1((Zt,fe)=>{e();fe.exports={baseUrl:"https://hamrahi.cloud",fluentdUrl:"https://hamrahi.cloud"};});var Pe={};c$1(Pe,{isNpmPackage:()=>Ye});var Ye,ve=a$1(()=>{e();Ye=false;});e();var te={details:{stream_link:"",type:"",banner:"",id:void 0,title:void 0,vtt:void 0,vtt_mobile:void 0,user_id:null,content_id:void 0,content_type:null,duration:0,subtitles:void 0},params:{type:"",id:"",bannerAlt:"",fullscreen:"",autoplay:"",banner:"",provider:"cafevdo",onFinished:void 0,onPlay:void 0,onPause:void 0,playStatus:void 0,currentTime:void 0,daaniHashCode:void 0,advertisement:void 0,activeSubtitle:"fa",vhl_progress:0},markers:[],videoElementSizeInfo:{bottom:0,top:0,right:0,left:0,width:0,height:0},isFetchDetails:false,isValidAddress:false,videoTimelines:[],isReady:false,rawSubtitles:void 0,subtitles:[],selectedSubtitle:void 0,subtitleText:void 0,multiAudio:[],selectedAudioId:0,hiddenAd:false},re=createSlice({name:"videoData",initialState:te,reducers:{setInfo:(e,t)=>{e.details=t.payload;},setPlayerParams:(e,t)=>{e.params=t.payload;},setMarkers:(e,t)=>{e.markers=t.payload;},setVideoElementSizeInfo:(e,t)=>{e.videoElementSizeInfo=t.payload;},setIsFetchDetails:(e,t)=>{e.isFetchDetails=t.payload;},setIsValidAddress:(e,t)=>{e.isValidAddress=t.payload;},setVideoTimelines:(e,t)=>{e.videoTimelines=t.payload;},setIsReady:(e,t)=>{e.isReady=t.payload;},setRawSubtitles:(e,t)=>{e.rawSubtitles=t.payload;},setSubtitles:(e,t)=>{e.subtitles=t.payload;},setSelectedSubtitle:(e,t)=>{e.selectedSubtitle=t.payload;},setSubtitleText:(e,t)=>{e.subtitleText=t.payload;},setMultiAudio:(e,t)=>{e.multiAudio=JSON.parse(JSON.stringify(t.payload));},setSelectedAudioId:(e,t)=>{e.selectedAudioId=t.payload;},setHiddenAd:(e,t)=>{e.hiddenAd=t.payload;},setClearVideoDataSlice:e=>te}}),{setInfo:st,setPlayerParams:at,setVideoElementSizeInfo:se,setMarkers:it,setIsFetchDetails:ot,setIsValidAddress:nt,setVideoTimelines:F,setIsReady:lt,setRawSubtitles:ut,setSubtitles:ct,setSubtitleText:dt,setSelectedSubtitle:pt,setMultiAudio:mt,setSelectedAudioId:gt,setHiddenAd:ht,setClearVideoDataSlice:ae}=re.actions,ie=re.reducer;e();e();e();e();e();var qe={settingPopover:false,speedPopover:false,qualityLevelsPopover:false,markersListPopover:false,multiAudioPopover:false},oe=createSlice({name:"popover",initialState:qe,reducers:{setSettingPopover:(e,t)=>{e.settingPopover=t.payload;},setSpeedPopover:(e,t)=>{e.speedPopover=t.payload;},setQualityLevelsPopover:(e,t)=>{e.qualityLevelsPopover=t.payload;},setMarkersListPopover:(e,t)=>{e.markersListPopover=t.payload;},setMultiAudioPopover:(e,t)=>{e.multiAudioPopover=t.payload;},setClearPopoversSlice:e=>{e.settingPopover=false,e.speedPopover=false,e.qualityLevelsPopover=false,e.markersListPopover=false,e.multiAudioPopover=false;}}}),{setSettingPopover:wt,setSpeedPopover:At,setQualityLevelsPopover:Lt,setMarkersListPopover:kt,setMultiAudioPopover:xt,setClearPopoversSlice:x}=oe.actions,ne=oe.reducer;e();var le={settings:{quality:ue?0:-1,brightness:100,volume:100,speed:1},videoSettings:{time:0}},ce=createSlice({name:"user",initialState:le,reducers:{setUserSettings:(e,t)=>{e.settings=t.payload;},setVideoSettings:(e,t)=>{e.videoSettings=t.payload;},setClearUserSlice:()=>le}}),{setUserSettings:de,setVideoSettings:Vt,setClearUserSlice:pe}=ce.actions,me=ce.reducer;e();var ge={params:{id:"0",type:"",currentTime:0,autoPlay:false,onClose:()=>{}},details:{},play:false},he=createSlice({name:"user",initialState:ge,reducers:{setMiniPlayerInfo:(e,t)=>{e.params={...t.payload,id:t.payload.type==="static"?window.atob(t.payload.id):t.payload.id,banner:t.payload.banner?t.payload.banner:void 0};},setDetailsMiniPlayer:(e,t)=>{e.details=t.payload;},setPlayMiniPlayer:(e,t)=>{e.play=t.payload;},setClearMiniPlayerSlice:e=>ge}}),{setMiniPlayerInfo:_t,setDetailsMiniPlayer:Qt,setPlayMiniPlayer:O,setClearMiniPlayerSlice:$t}=he.actions,ye=he.reducer;var Xe=configureStore({reducer:{controller:y,videoData:ie,popovers:ne,user:me,miniPlayer:ye},devTools:true,middleware:e=>e({serializableCheck:false})}),a=Xe;e();e();e();e();e();e();var _=Se(),Q=(ve(),d(Pe)),$=()=>(Q?_.baseUrl:process.env.baseUrl)+"/live/api",K=()=>Q?_.fluentdUrl:process.env.fluentdUrl,er=()=>(Q?_.baseUrl:process.env.baseUrl)+"/emoji";var V=()=>({vod:{getVodUrl:`${$()}/v1/live/details/vod/`,getMarkerUrl:e=>`${$()}/v1/live/list-event/vod/${e}/`},videoTimelineLog:`${K()}/video-timeline.log`,logs:`${K()}/cafevideo-endpoint.log`});var w=e=>{let{details:t,params:r}=a.getState().videoData,s={...e,timestamp:Date.now(),clientUUID:v(),uuid:v(),link:window.location.href,user_id:t.user_id,live_id:null,format:void 0,content_type:t.content_type,content_id:t.content_id,daaniHashCode:r.daaniHashCode};T({url:V().logs,method:"post",data:s});};e();e();var c=()=>document.getElementById("player-tag"),b=()=>document.getElementById("mini-player-video-tag");var mr=()=>document.getElementById("time-progress-bar"),gr=()=>document.getElementById("progress-area");var hr=()=>a.getState().videoData.videoElementSizeInfo.width,yr=()=>document.getElementById("time-progress-area");var Lr=e=>{let{params:t,details:r}=a.getState().videoData,{settings:s}=a.getState().user;return {category:"speedChange",previousSelectedSpeed:s.speed,selectedSpeed:e,id:Number(t.id),type:t.type,src:l("streamLink")||t.id,provider:t.provider}},kr=e=>{let{params:t,details:r}=a.getState().videoData,{qualityLevels:s,manualQuality:i,autoQuality:o}=a.getState().controller;return {category:"qualityChangeRequest",currentPlayingQuality:`${s[l("isAutoQuality")?o??i:i]}P`,previousSelectedQuality:l("isAutoQuality")?"auto":`${s[i]}P`,selectedQuality:e,id:Number(t.id),type:t.type,src:l("streamLink")||t.id,provider:t.provider}},xr=e=>{let{params:t,details:r}=a.getState().videoData,{qualityLevels:s,autoQuality:i}=a.getState().controller,{settings:o}=a.getState().user;return {category:"catchUpLoading",previousVideoTime:Number(sessionStorage.getItem("previousVideoTime")),currentVideoTime:c().currentTime,duration:e,quality:`${l("isAutoQuality")?s[i]:s[o.quality]}P`,isAutoQuality:l("isAutoQuality"),id:Number(t.id),type:t.type,src:l("streamLink")||t.id,provider:t.provider}},be=e=>{let{params:t,details:r}=a.getState().videoData;return {category:e==="backward"?"backward":"forward",id:Number(t.id),type:t.type,src:l("streamLink")||t.id,provider:t.provider}},H=e=>{let{params:t,details:r}=a.getState().videoData;return {category:e,id:Number(t.id),type:t.type,src:l("streamLink")||t.id}};var Tr=(e,t)=>{let{params:r,details:s}=a.getState().videoData;return {category:"volumeChange",source:e,target:t,id:Number(r.id),type:r.type,src:l("streamLink")||r.id}},we=e=>{let{params:t,details:r}=a.getState().videoData;return {category:e,id:Number(t.id),type:t.type,src:l("streamLink")||t.id}},Ae=(e,t,r,s)=>({category:"player-error",type:e,message:t,statusCode:r,url:s}),Le=(e,t)=>{let{params:r,details:s}=a.getState().videoData,{duration:i}=a.getState().controller;return {category:"video-timeline",video_id:+r.id,video_type:r.type,start:e,end:t,watchedDuration:t-e,video_duration:Math.floor(i),clientUUID:v(),user_id:s.user_id,content_type:s.content_type,content_id:s.content_id}},Mr=(e,t,r)=>{let{params:s,details:i}=a.getState().videoData;return {category:"autoQualityChange",sourceQuality:e,targetQuality:t,diffQuality:r,id:Number(s.id),type:s.type,src:l("streamLink")||s.id,provider:s.provider}},Ir=(e,t)=>{let{params:r,details:s}=a.getState().videoData;return {category:"pingpong",id:Number(r.id),type:r.type,src:l("streamLink")||r.id,PingPongDuration:Number((new Date().getTime()-e).toFixed(2)),PingPongSourceQuality:`${t[0]}P`,PingPongTargetQuality:`${t[1]}P`,provider:r.provider}},Dr=e=>{let{params:t,details:r}=a.getState().videoData;return {category:e?"playVideo":"pauseVideo",id:Number(t.id),type:t.type,src:l("streamLink")||t.id,provider:t.provider}},Fr=(e,t,r,s,i)=>{let{params:o,details:S}=a.getState().videoData,n=Date.now()-i.current+e+t,f=window.performance.memory,A=JSON.parse(JSON.stringify(window.performance.timing));return {category:"initLog",id:Number(o.id),type:o.type,origin:new URL(l("streamLink")||o.id).origin,src:l("streamLink")||o.id,loading:e,bannerLoading:!l("hasBanner")||r<0?0:r,waiting:t,firstChunkPlaying:s<0?0:s,totalTime:n,provider:o.provider,performance:j({memory:f,timing:A},"performance"),userAgent:window.navigator.userAgent}},Vr=(e,t,r,s,i)=>{let{params:o,details:S}=a.getState().videoData,{settings:n}=a.getState().user,f=Date.now()-r.current;return {category:"loading",id:Number(o.id),type:o.type,src:l("streamLink")||o.id,duration:e,quality:`${t}P`,isAutoQuality:l("isAutoQuality"),previousLoaderDiff:f,counter:s.current,loadingPercentile:Number((e/f).toFixed(2)),videoTime:c().currentTime,videoEntranceTime:i,speed:n.speed,provider:o.provider}},Er=e=>{let{params:t,details:r}=a.getState().videoData;return {category:"subtitle",language:e,id:Number(t.id),type:t.type,src:l("streamLink")||t.id}},Rr=(e,t,r,s,i)=>{let{params:o,details:S}=a.getState().videoData;return {category:"eventMarkerClick",video_id:Number(o.id),markerId:e,markerTime:t,markerTitle:r,markerDescription:s,markerSticker:i,type:o.type,src:l("streamLink")||o.id,provider:o.provider}};var ke=e=>{e&&w(Ae(e.type,e.message,e.statusCode,e.url));};var T=async({url:e,method:t="GET",data:r,headers:s,retryCount:i=1,maxRetryCount:o=0,errorMessage:S,retryPolicy:n,errorCallback:f,timeoutCount:A})=>{let P={url:e,method:t,headers:{...s,"Content-Type":"application/json"},timeout:A?A*1e3:void 0};r?t==="GET"?P={...P,params:{uuid:a.getState().videoData.params.uuid,provider:a.getState().videoData.params.provider==="unknown"?void 0:a.getState().videoData.params.provider,...r}}:P={...P,data:{uuid:a.getState().videoData.params.uuid,provider:a.getState().videoData.params.provider==="unknown"?void 0:a.getState().videoData.params.provider,...r}}:t==="GET"?P={...P,params:{uuid:a.getState().videoData.params.uuid,provider:a.getState().videoData.params.provider==="unknown"?void 0:a.getState().videoData.params.provider}}:P={...P,data:{uuid:a.getState().videoData.params.uuid,provider:a.getState().videoData.params.provider==="unknown"?void 0:a.getState().videoData.params.provider}};try{return await Ge(P)}catch(d){if(d instanceof AxiosError&&d.code!=="ERR_NETWORK"&&ke({type:"API-ERROR",message:d.message?d.message:"",statusCode:d.response&&d.response.status?d.response.status:void 0,url:e}),!(d&&d.response&&d.response.status===401)){f&&f(d.response.status,d.response.message);let p=0,m=0;if(n!==void 0){for(let g=0;g<n.length;g++)if((n[g].codeAbove&&d.response.status>=n[g].codeAbove||n[g].codeBelow&&d.response.status<=n[g].codeBelow)&&(n[g].excludeCodes.length===0||!n[g].excludeCodes.includes(d.response.status))||n[g].includeCodes.length===0||n[g].includeCodes.includes(d.response.status)){m=n[g].count,p=n[g].delay;break}}else m=o,p=i+1;if(i<m)return await xe(p),T({url:e,method:t,data:r,headers:s,retryCount:i+1,errorMessage:S,retryPolicy:n,errorCallback:f});if(d.response)return {data:d.response.data?d.response.data:{detail:"\u0639\u0645\u0644\u06CC\u0627\u062A \u0628\u0627 \u062E\u0637\u0627 \u0645\u0648\u0627\u062C\u0647 \u0634\u062F\u0647 \u0627\u0633\u062A."},status:d.response.status}}}};var os=e=>{if(e===null||e.target.nodeName!=="INPUT"){let t=a.dispatch;e!==null&&(e.stopPropagation(),e.preventDefault()),c()?.paused?c().play():c()?.pause(),t(f(!c()?.paused)),b()&&b().played&&(b()?.pause(),t(O(false)));}},ns=e=>{if(e===null||e.target.nodeName!=="INPUT"){let t=a.dispatch;b().paused?b().play():b()?.pause(),t(O(!b().paused)),c()&&c().played&&(c()?.pause(),t(f(false)));}},Ze=()=>{let e=a.dispatch;e(x$1(false)),l("isIOS")&&(c().currentTime=c().currentTime-.001);},E=(e,t)=>{let r=a.dispatch,{settings:s}=a.getState().user,{firstMute:i}=a.getState().controller,o=t||c();r(de({...s,volume:e})),o&&(i&&e&&Ze(),l("isIOS")?o.muted=!e:o.volume=e/100);},ls=(e,t=15,r)=>{if(e==="touchBackward"?e="backward":e==="touchForward"&&(e="forward"),r&&r.target.nodeName==="INPUT"||e==="backward"&&c().currentTime<15||e==="forward"&&c().duration-c().currentTime<15)return;w(be(e));let s=0;e==="backward"?t===0?s=0:s=c().currentTime-t:e==="forward"&&(t===c().duration?s=t:s=c().currentTime+t),c().currentTime=s;},Ne=()=>{let e=a.dispatch,t=document.fullscreenElement;l("isIOS")?c().webkitEnterFullScreen?(e(f(false)),c().webkitEnterFullScreen()):(e(x()),w(H("fullScreen"))):t?(e(m(false)),document.exitFullscreen().then(()=>document.body.style.overflow="auto")):(e(x()),document.documentElement.requestFullscreen().then(()=>document.body.style.overflow="hidden"),e(m(true)),w(H("fullScreen")));},us=()=>{l("isTouchScreen")&&!l("isIOS")&&(l("isLandscape")&&!l("isFullScreen")?window.screen.orientation.lock("portrait"):window.screen.orientation.lock("landscape"));},cs=e=>{let t$1=a.dispatch;t$1(t(e==="lock")),w(we(e)),e==="unlock"&&localStorage.setItem("unlock-click","true");},ds=(e,t)=>{if(l("isSendTimelineLog")){let r=a.dispatch,{videoTimelines:s}=a.getState().videoData,i=Math.floor(e),o=Math.floor(t);s.length===0?r(F([i>=c()?.duration?o:i])):(s[0]<i&&T({url:V().videoTimelineLog,method:"post",data:Le(s[0],i)}),o&&o>=c()?.duration?r(F([])):r(F([o])));}},ps=()=>{let e=a.dispatch,t=document.getElementById("video-area")?.getBoundingClientRect();t.height=t.width*9/16,t&&e(se(t));},ms=e=>{!l("isTouchScreen")&&e.target.nodeName!=="INPUT"&&Ne();};var M="pl-",Te=(...e)=>{let t=e.flat(1).filter(Boolean).join(" ").trim();if(!t)return "";let r=t?.split(/\s+/),s=new Set(r.filter(n=>n.startsWith(M)).map(n=>n.slice(M.length))),i=r.map(n=>n.startsWith(M)?n.slice(M.length):n);return (twMerge(i.join(" "))?.split(" ")).map(n=>s.has(n)?M+n:n).join(" ").trim()},ks=(e,t)=>{let r=t||{},s=l("isTouchScreen"),i=l("isFullScreen");return s?Te(e,r.touch,i?r.touchFullScreen:void 0):Te(e,r.desktop,i?r.desktopFullScreen:void 0)},xs=e=>{let t=l("isTouchScreen"),r=l("isFullScreen"),s;return t?s=r?e.touchFullScreen??e.touch:e.touch:s=r?e.desktopFullScreen??e.desktop:e.desktop,s},xe=e=>new Promise(t=>setTimeout(t,e*1e3)),v=()=>{let e=localStorage.getItem("hamrahiUUID");return e||(e=et(),localStorage.setItem("hamrahiUUID",e)),e.toString()},et=()=>{let e="xxxxxxxx-xxxx-Mxxx-Nxxx-x".replace(/[xMN]/g,t=>{let r;return t==="M"?r=Math.floor(1+Math.random()*5):t==="N"?r=Math.floor(8+Math.random()*4):r=Math.floor(Math.random()*16),r.toString(16)});return e+=Date.now().toString(16),e},k=()=>typeof window<"u"&&("ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),W=()=>{let{isFullScreen:e}=a.getState().controller;return k()&&e},Me=()=>{let{isFullScreen:e}=a.getState().controller;return k()&&!e},R=()=>["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,I=e=>(e<10?"0":"")+e,Ts=e=>{let t=Math.floor(e/3600),r=Math.floor(e%3600/60),s=Math.floor(e%3600%60);return t<1?`${I(r)}:${I(s)}`:`${I(t)}:${I(r)}:${I(s)}`},Ms=e=>{let t=new URL(e),r=e;return t.search.length?r+=`&uuid=${v()}`:r+=`?uuid=${v()}`},Is=(e,t)=>{try{return [e.target.id,e.target.parentNode.id,e.target.parentNode.parentNode.id,e.target.parentNode.parentNode.parentNode.id,e.target.parentNode.parentNode.parentNode.parentNode.id].includes(t)}catch{return false}},Ds=e=>{let{params:t}=a.getState().videoData,r="";!t.id&&t.stream_link?r=t.stream_link:e==="mainPlayer"?r=a.getState().videoData.details.stream_link:r=a.getState().miniPlayer.details.stream_link;let s="";return r&&(s=r?.split("m3u8")[1]),s?s=`${s}&uuid=${v()}`:s=`?uuid=${v()}`,s},Fs=(e,t)=>{let r=document.getElementById(t),s=document.createElement("span");s.style.width=s.style.height="50px",s.style.left=`${e.touches[0].clientX-r.offsetLeft-25}px`,s.style.top=`${e.touches[0].clientY-r.offsetTop-25}px`,s.classList.add("pl-ripple");let i=r.getElementsByClassName("pl-ripple")[0];i&&i.remove(),r.appendChild(s);};var Vs=e=>e>=200&&e<300,Es=()=>{let e=a.dispatch;e(ae()),e(w$1()),e(pe()),e(x());},Rs=e=>{let t,r=[];for(t=0;t<e.length;t++)r[t]=e[t].weight+(r[t-1]||0);let s=Math.random()*r[r.length-1];for(t=0;t<r.length&&!(r[t]>s);t++);return e[t].domain},Us=e=>{let t=0;performance&&performance.getEntriesByType("navigation")&&(t=performance.getEntriesByType("navigation")[0].duration),e.current=t;},Bs=(e,t,r)=>{let s=t*window.devicePixelRatio,i=r*window.devicePixelRatio,o=[];return l("isTouchScreenPortrait")?o=e.filter(S=>Number(S?.split("x")[0].trim())<=s):o=e.filter(S=>Number(S?.split("x")[0].trim())<=i||Number(S?.split("x")[1].trim())<=s),o.indexOf(o[o.length-1])},j=(e,t)=>{let r={};for(let s in e){let i=t?`${t}_${s}`:s;typeof e[s]=="object"&&!Array.isArray(e[s])?r={...r,...j(e[s],i)}:r[i]=e[s];}return r},Os=e=>{let t={fa:1,en:2};return e.slice().sort((r,s)=>{let i=t[r.lang]||999,o=t[s.lang]||999;return i-o})},_s=e=>{let t;switch(e){case "fa":t="\u0641\u0627\u0631\u0633\u06CC";break;case "en":t="\u0627\u0646\u06AF\u0644\u06CC\u0633\u06CC";break;case "ar":t="\u0639\u0631\u0628\u06CC";break;case "tr":t="\u062A\u0631\u06A9\u06CC";break;}return t},Qs=e=>e?.split(/\r?\n|\r|\n/g),$s=e=>{if(e){let t=e.offsetLeft-e.offsetWidth/2,r=window.innerWidth-(e.offsetLeft+e.offsetWidth);if(t>=0&&r>=0)return "inViewport";if(t<0)return "OutViewPortFromLeft";if(r<0)return "OutViewPortFromRight"}};var Ks=e=>(e=e.replace(/\d{2}:\d{2}:\d{2}\.\d{3} --> \d{2}:\d{2}:\d{2}\.\d{3}.*\n/g,""),e=e.replace(/<[^>]+>/g,""),e=e.replace(/\n+/g,`
|
|
2
|
-
`),e=e.trim(),e),ue=process.env.NODE_ENV==="development",qs=e=>{let t=a.dispatch,{params:r}=a.getState().videoData;if(r.autoplay==="true"||r.advertisement){let s=e.play();t(f(true)),E(100,e),s!==void 0&&s.then(()=>{E(100,e);}).catch(()=>{E(0,e),t(x$1(true)),e.play();});}};var l=e=>{let{params:t,details:r,isValidAddress:s,isFetchDetails:i,isReady:o,rawSubtitles:S,subtitles:n,selectedSubtitle:f,markers:A,multiAudio:P,hiddenAd:d}=a.getState().videoData,{firstPlay:p,lock:m,canPlayVideo:g,manualQuality:C,activeElements:Ie,isLoading:De,isEnded:X,isAutoPlay:Fe,play:Ve,isFullScreen:Y,firstMute:G}=a.getState().controller,{settingPopover:J,speedPopover:Ee,qualityLevelsPopover:Re,markersListPopover:Ue}=a.getState().popovers,{settings:Z}=a.getState().user,U=a.getState().miniPlayer;switch(e){case "showHeader":return
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
`),e=e.trim(),e),ue=process.env.NODE_ENV==="development",qs=e=>{let t=a.dispatch,{params:r}=a.getState().videoData;if(r.autoplay==="true"||r.advertisement){let s=e.play();t(f(true)),E(100,e),s!==void 0&&s.then(()=>{E(100,e);}).catch(()=>{E(0,e),t(x$1(true)),e.play();});}};var l=e=>{let{params:t,details:r,isValidAddress:s,isFetchDetails:i,isReady:o,rawSubtitles:S,subtitles:n,selectedSubtitle:f,markers:A,multiAudio:P,hiddenAd:d}=a.getState().videoData,{firstPlay:p,lock:m,canPlayVideo:g,manualQuality:C,activeElements:Ie,isLoading:De,isEnded:X,isAutoPlay:Fe,play:Ve,isFullScreen:Y,firstMute:G}=a.getState().controller,{settingPopover:J,speedPopover:Ee,qualityLevelsPopover:Re,markersListPopover:Ue}=a.getState().popovers,{settings:Z}=a.getState().user,U=a.getState().miniPlayer;switch(e){case "showHeader":return g;case "showMain":return !m||p;case "showFooter":return k()?g&&!p:g;case "showTouchVolumeBrightness":return !p&&W()&&!m&&!X;case "showBackwardForward":return !p&&!m;case "showTitle":return t.type!=="static"&&Y&&!m;case "showSettingPopover":return J;case "showSpeedPopover":return Ee;case "showQualityLevelsPopover":return Re;case "showSettingIcon":return !R();case "showBanner":return p&&(r.banner||t.banner);case "showProgressbar":return true;case "showPictureInPicture":return !R()&&!k();case "showSubtitle":return !!f;case "showMarkerListPopover":return Ue;case "hidePopovers":return !J;case "isLandscape":return window.innerHeight<=window.innerWidth;case "isTouchScreen":return k();case "isTouchScreenPortrait":return Me();case "isTouchScreenLandscape":return W();case "isActiveElements":return Ie;case "isPlay":return Ve;case "isPlayMiniPlayer":return U.play;case "isFirstPlay":return p;case "isLock":return m;case "isFirstMutePlay":return G;case "isIOS":return R();case "isLoading":return De;case "isStaticFormat":return t.type==="static";case "isEnded":return X;case "isAutoPlay":return Fe;case "isFullScreen":return Y;case "isValidAddress":return t.id?s:!!t.stream_link;case "isFetchDetails":return t.id?i:!!t.stream_link;case "isAutoQuality":return Z.quality===-1;case "isPressKeySpace":return !m;case "isPressKeyI":return !m&&!p;case "isPressKeyF":return !m&&!p||!!t.vhl_status;case "isPressKeyS":return !m&&!p;case "isPressKeyArrowRight":return !p&&!m;case "isPressKeyArrowLeft":return !p&&!m;case "isPressKeyM":return !p&&!m;case "isPressKeyC":return !m&&!p&&!!n&&n.length>0;case "isSendTimelineLog":return t.type!=="static";case "isReady":return o;case "isSelectedSubtitle":return !!n&&n.length>0&&f;case "isMiniPlayerAndMainPlayerSame":return t.id===U.params.id;case "isVideoHighLighter":return !!t.vhl_status;case "hasTitle":return r.title;case "hasBanner":return r.banner;case "streamLink":return r.stream_link||t.stream_link;case "hasManualQuality":return C!=null;case "hasSound":return !!Z.volume;case "hasAutoPlay":return t.autoplay==="true";case "hasFullScreenParams":return t.fullscreen==="true";case "hasOnFinishedParams":return !!t.onFinished;case "hasSubtitles":return !!n&&n.length>0;case "hasMultipleSubtitles":return !!n&&n.length>1;case "hasActiveCue":return f&&f.activeCues&&f.activeCues.length>0;case "hasOnPlayParams":return !!t.onPlay;case "hasOnPauseParams":return !!t.onPause;case "hasMiniPlayer":return U.params.id;case "hasCurrentTimeParams":return t.currentTime!==void 0;case "hasMarkers":return A.length!==0;case "hasSubtitlesInParams":return t.subtitles&&t.subtitles.length;case "hasOnChangeCurrentTime":return !!t.onChangeCurrentTime;case "hasMultiAudio":return P&&!!P.length;case "hasAdvertisement":return !!t.advertisement&&!!t.advertisement.videoUrl&&!d;case "hasActiveSubtitleInParams":return !!t.activeSubtitle;case "hasRawSubtitles":return !!S&&!!S.length;case "skeletonStatusInVhl":return t.vhl_status==="skeleton";case "getDetails":return !!t.type&&t.id;case "getMarkers":return String(t.type)==="vod"&&t.id&&i;case "canPlayVideo":return g;case "showSoundVolumeAlert":return G;case "setSubtitleFirstPlay":return (t.type==="vod"&&r.subtitles&&r.subtitles.length>0||t.type==="static"&&t.subtitles&&t.subtitles.length)&&!p;}};export{us as $,gr as A,a as Aa,hr as B,yr as C,Lr as D,kr as E,xr as F,H as G,Tr as H,Mr as I,Ir as J,Dr as K,Fr as L,Vr as M,Er as N,Rr as O,ke as P,T as Q,_t as R,Qt as S,O as T,$t as U,os as V,ns as W,Ze as X,E as Y,ls as Z,Ne as _,st as a,cs as aa,at as b,ds as ba,se as c,ps as ca,ot as d,ms as da,nt as e,ks as ea,F as f,xs as fa,lt as g,v as ga,ut as h,k as ha,ct as i,Ts as ia,dt as j,Ms as ja,pt as k,Is as ka,mt as l,Ds as la,gt as m,Fs as ma,ht as n,Vs as na,wt as o,Es as oa,At as p,Rs as pa,Lt as q,Us as qa,xt as r,Bs as ra,x as s,Os as sa,l as t,_s as ta,er as u,Qs as ua,V as v,$s as va,w,Ks as wa,c as x,qs as xa,b as y,de as ya,mr as z,Vt as za};//# sourceMappingURL=chunk-NLCBOGTI.mjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-NLCBOGTI.mjs.map
|
|
@@ -1 +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/videoDataSlice.ts","../src/videoPlayerLibrary/helpers/interfaces/enums.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/redux/slices/miniPlayerSlice.ts","../src/videoPlayerLibrary/helpers/redux/actions/controller.actions.ts","../src/videoPlayerLibrary/helpers/services/apiCaller.ts","../src/videoPlayerLibrary/helpers/errorBoundary/errorBoundaryFunctions.ts","../src/videoPlayerLibrary/helpers/logs/fluentdLogger.ts","../src/videoPlayerLibrary/helpers/services/services.ts","../src/videoPlayerLibrary/helpers/services/baseUrl.ts","../src/videoPlayerLibrary/helpers/logs/logs.ts","../src/videoPlayerLibrary/helpers/constants.ts"],"names":["require_next_config","__commonJSMin","exports","module","init_esm_shims","npmPackage_exports","__export","isNpmPackage","init_npmPackage","__esmMin","VideoDataSliceState","videoDataSlice","createSlice","state","action","setInfo","setPlayerParams","setVideoElementSizeInfo","setMarkers","setIsFetchDetails","setIsValidAddress","setVideoTimelines","setIsReady","setRawSubtitles","setSubtitles","setSubtitleText","setSelectedSubtitle","setMultiAudio","setSelectedAudioId","setHiddenAd","setClearVideoDataSlice","videoDataSlice_default","PopOversSliceState","popoversSlice","setSettingPopover","setSpeedPopover","setQualityLevelsPopover","setMarkersListPopover","setMultiAudioPopover","setClearPopoversSlice","popoversSlice_default","UserSliceState","isDev","userSlice","setUserSettings","setVideoSettings","setClearUserSlice","userSlice_default","MiniPlayerSliceState","setMiniPlayerInfo","setDetailsMiniPlayer","setPlayMiniPlayer","setClearMiniPlayerSlice","miniPlayerSlice_default","store","configureStore","controllerSlice_default","getDefaultMiddleware","store_default","envs","Qe","getRestApiLiveUrl","getFluentdUrl","getEmojiUrl","API","videoId","sendFluentLog","data","details","params","_data","getUUID","apiCaller","mainPlayerVideoTag","miniPlayerVideoTag","progressBar","progressArea","progressBarWidth","progressTrack","speedChangeLog","selectedSpeed","settings","conditions","qualityChangeRequestLog","selectedQuality","qualityLevels","manualQuality","autoQuality","catchUpLoadingLog","duration","backwardForwardLog","type","fullscreenLog","category","volumeLog","source","target","lockLog","ExceptionsLog","message","statusCode","url","videoTimelineLog","start","end","autoQualityChangeLog","sourceQuality","targetQuality","diffQuality","pingpongLog","startTimer","qualityHistory","pausePlayLog","isPlay","initLog","loadingTime","waitingTime","bannerLoadingTime","firstChunkPlayingTime","timerRef","totalTime","memory","timing","flattenObject","loadingLog","waitingDuration","qualityLevel","loadingCounterRef","videoEntranceTime","previousLoaderDiff","subtitleLog","language","eventMarkerClickLog","markerId","markerTime","markerTitle","markerDescription","markerSticker","errorLogProvider","method","headers","retryCount","maxRetryCount","errorMessage","retryPolicy","errorCallback","timeoutCount","axiosConfig","axios","error","AxiosError","newRetryDelay","newMaxRetryCount","i","wait","handlePlayPause","event","dispatch","setPlay","handlePlayerPauseMiniPlayer","firstUnMuteHandler","setFirstMute","handleChangeSoundVolume","volume","videoTag","firstMute","video","handleBackwardForward","forwardBackwardCount","currentTime","handleFullScreen","isFullScreen","setIsFullScreen","handleLockOrientation","handleLock","setLock","handleVideoTimeline","currentTimeValue","movedTimeValue","videoTimelines","movedTime","handleVideoElementSizeInfo","element","handleDoubleClick","PREFIX","twMerge","classLists","input","classes","hadPrefix","cls","withoutPrefix","tailwindMerge","tw","classname","options","config","isTouch","styleMerge","result","s","resolve","uuid","uuidGenerator","char","val","isTouchScreen","isTouchScreenLandscape","isTouchScreenPortrait","isIOS","addZeroBefore","n","secondsToHMS","seconds","h","m","addUuidToSrc","src","urlObject","urlSrc","checkParentTarget","splitQueryParamsFromStreamLink","playerType","streamLink","queryParams","handleRippleCircle","id","circle","ripple","responseValidator","status","clearRedux","setClearControllerSlice","weighted_random","weights","random","handlePageLoadTime","loadingDurationRef","pageLoadTime","highestResolutionSupported","resolutions","width","height","w","filteredResolutions","resolution","keyName","key","newKey","sortLanguages","array","priority","a","b","prioA","prioB","getSubtitleLabel","subtitleLanguage","label","spliteStringPerLine","str","inViewPort","positionLeft","positionRight","cleanVTT","vttText","setupAutoplayBehavior","playPromise","isValidAddress","isFetchDetails","isReady","rawSubtitles","subtitles","selectedSubtitle","markers","multiAudio","hiddenAd","firstPlay","lock","canPlayVideo","activeElements","isLoading","isEnded","isAutoPlay","play","settingPopover","speedPopover","qualityLevelsPopover","markersListPopover","miniPlayer"],"mappings":"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","file":"chunk-BC4366GN.mjs","sourcesContent":["module.exports = {\n baseUrl: \"https://hamrahi.cloud\",\n fluentdUrl: \"https://hamrahi.cloud\",\n};\n","export const isNpmPackage = false;\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport {\n IVideoElementSizeInfo,\n IDetails,\n IVideoDataSlice,\n IParams,\n IMarker,\n ISubtitle,\n} from \"../../interfaces/interfaces\";\n\nexport const VideoDataSliceState: IVideoDataSlice = {\n details: {\n stream_link: \"\",\n type: \"\",\n banner: \"\",\n id: undefined,\n title: undefined,\n vtt: undefined,\n vtt_mobile: undefined,\n user_id: null,\n content_id: undefined,\n content_type: null,\n duration: 0,\n subtitles: undefined,\n },\n params: {\n type: \"\",\n id: \"\",\n bannerAlt: \"\",\n fullscreen: \"\",\n autoplay: \"\",\n banner: \"\",\n provider: \"cafevdo\",\n onFinished: undefined,\n onPlay: undefined,\n onPause: undefined,\n playStatus: undefined,\n currentTime: undefined,\n daaniHashCode: undefined,\n advertisement: undefined,\n activeSubtitle: \"fa\",\n vhl_progress: 0,\n },\n markers: [],\n videoElementSizeInfo: {\n bottom: 0,\n top: 0,\n right: 0,\n left: 0,\n width: 0,\n height: 0,\n },\n isFetchDetails: false,\n isValidAddress: false,\n videoTimelines: [],\n isReady: false,\n rawSubtitles: undefined,\n subtitles: [],\n selectedSubtitle: undefined,\n subtitleText: undefined,\n multiAudio: [],\n selectedAudioId: 0,\n hiddenAd: false,\n};\n\nexport const videoDataSlice = createSlice({\n name: \"videoData\",\n initialState: VideoDataSliceState,\n reducers: {\n setInfo: (state, action: PayloadAction<IDetails>) => {\n state.details = action.payload;\n },\n setPlayerParams: (state, action: PayloadAction<IParams>) => {\n state.params = action.payload;\n },\n setMarkers: (state, action: PayloadAction<IMarker[]>) => {\n state.markers = action.payload;\n },\n setVideoElementSizeInfo: (\n state,\n action: PayloadAction<IVideoElementSizeInfo>\n ) => {\n state.videoElementSizeInfo = action.payload;\n },\n setIsFetchDetails: (state, action: PayloadAction<boolean>) => {\n state.isFetchDetails = action.payload;\n },\n setIsValidAddress: (state, action: PayloadAction<boolean>) => {\n state.isValidAddress = action.payload;\n },\n setVideoTimelines: (state, action: PayloadAction<number[]>) => {\n state.videoTimelines = action.payload;\n },\n setIsReady: (state, action: PayloadAction<boolean>) => {\n state.isReady = action.payload;\n },\n setRawSubtitles: (\n state,\n action: PayloadAction<ISubtitle[] | null | undefined>\n ) => {\n state.rawSubtitles = action.payload;\n },\n setSubtitles: (state, action: PayloadAction<TextTrack[]>) => {\n state.subtitles = action.payload;\n },\n setSelectedSubtitle: (state, action: PayloadAction<any>) => {\n state.selectedSubtitle = action.payload;\n },\n setSubtitleText: (state, action: PayloadAction<string>) => {\n state.subtitleText = action.payload;\n },\n setMultiAudio: (state, action: PayloadAction<any>) => {\n state.multiAudio = JSON.parse(JSON.stringify(action.payload));\n },\n setSelectedAudioId: (state, action: PayloadAction<number>) => {\n state.selectedAudioId = action.payload;\n },\n setHiddenAd: (state, action: PayloadAction<boolean>) => {\n state.hiddenAd = action.payload;\n },\n setClearVideoDataSlice: (state) => {\n return (state = VideoDataSliceState);\n },\n },\n});\n\nexport const {\n setInfo,\n setPlayerParams,\n setVideoElementSizeInfo,\n setMarkers,\n setIsFetchDetails,\n setIsValidAddress,\n setVideoTimelines,\n setIsReady,\n setRawSubtitles,\n setSubtitles,\n setSubtitleText,\n setSelectedSubtitle,\n setMultiAudio,\n setSelectedAudioId,\n setHiddenAd,\n setClearVideoDataSlice,\n} = videoDataSlice.actions;\nexport default videoDataSlice.reducer;\n","export const enum zIndex {\n vttDisable = -2,\n videoPlayer,\n videoOpacity,\n backwardForwardInActive,\n mainIcons,\n footer,\n vtt,\n markers,\n videoPlayerInFullScreen = 1000,\n popoverBlurBackground,\n backwardForwardActive,\n miniPlayer,\n popoverContent,\n maxPopover,\n videoPlayerInPictureInPicture,\n}\n\nexport const enum SettingSections {\n main = \"main\",\n qualityLevels = \"qualityLevels\",\n speed = \"speed\",\n subtitles = \"subtitles\",\n multiAudio = \"multiAudio\",\n}\n\nexport const enum PlayerTypes {\n static = \"static\",\n vod = \"vod\",\n}\n\nexport const enum ConditionName {\n showHeader = \"showHeader\",\n showMain = \"showMain\",\n showFooter = \"showFooter\",\n showTouchVolumeBrightness = \"showTouchVolumeBrightness\",\n showBackwardForward = \"showBackwardForward\",\n showTitle = \"showTitle\",\n showSettingPopover = \"showSettingPopover\",\n showSpeedPopover = \"showSpeedPopover\",\n showQualityLevelsPopover = \"showQualityLevelsPopover\",\n showSettingIcon = \"showSettingIcon\",\n showBanner = \"showBanner\",\n showProgressbar = \"showProgressbar\",\n showPictureInPicture = \"showPictureInPicture\",\n showSubtitle = \"showSubtitle\",\n showMarkerListPopover = \"showMarkerListPopover\",\n hidePopovers = \"hidePopovers\",\n isLandscape = \"isLandscape\",\n isTouchScreen = \"isTouchScreen\",\n isTouchScreenPortrait = \"isTouchScreenPortrait\",\n isTouchScreenLandscape = \"isTouchScreenLandscape\",\n isActiveElements = \"isActiveElements\",\n isPlay = \"isPlay\",\n isPlayMiniPlayer = \"isPlayMiniPlayer\",\n isFirstPlay = \"isFirstPlay\",\n isFirstMutePlay = \"isFirstMutePlay\",\n isLock = \"isLock\",\n isIOS = \"isIOS\",\n isLoading = \"isLoading\",\n isStaticFormat = \"isStaticFormat\",\n isEnded = \"isEnded\",\n isAutoPlay = \"isAutoPlay\",\n isFullScreen = \"isFullScreen\",\n isValidAddress = \"isValidAddress\",\n isFetchDetails = \"isFetchDetails\",\n isAutoQuality = \"isAutoQuality\",\n isPressKeySpace = \"isPressKeySpace\",\n isPressKeyI = \"isPressKeyI\",\n isPressKeyF = \"isPressKeyF\",\n isPressKeyS = \"isPressKeyS\",\n isPressKeyArrowRight = \"isPressKeyArrowRight\",\n isPressKeyArrowLeft = \"isPressKeyArrowLeft\",\n isPressKeyM = \"isPressKeyM\",\n isPressKeyC = \"isPressKeyC\",\n isSendTimelineLog = \"isSendTimelineLog\",\n isReady = \"isReady\",\n isSelectedSubtitle = \"isSelectedSubtitle\",\n isMiniPlayerAndMainPlayerSame = \"isMiniPlayerAndMainPlayerSame\",\n isVideoHighLighter = \"isVideoHighLighter\",\n hasTitle = \"hasTitle\",\n hasBanner = \"hasBanner\",\n streamLink = \"streamLink\",\n hasManualQuality = \"hasManualQuality\",\n hasSound = \"hasSound\",\n hasAutoPlay = \"hasAutoPlay\",\n hasFullScreenParams = \"hasFullScreenParams\",\n hasOnFinishedParams = \"hasOnFinishedParams\",\n hasSubtitles = \"hasSubtitles\",\n hasMultipleSubtitles = \"hasMultipleSubtitles\",\n hasSubtitlesInDetails = \"hasSubtitlesInDetails\",\n hasActiveCue = \"hasActiveCue\",\n hasOnPlayParams = \"hasOnPlayParams\",\n hasOnPauseParams = \"hasOnPauseParams\",\n hasMiniPlayer = \"hasMiniPlayer\",\n hasCurrentTimeParams = \"hasCurrentTimeParams\",\n hasMarkers = \"hasMarkers\",\n hasSubtitlesInParams = \"hasSubtitlesInParams\",\n hasOnChangeCurrentTime = \"hasOnChangeCurrentTime\",\n hasMultiAudio = \"hasMultiAudio\",\n hasAdvertisement = \"hasAdvertisement\",\n hasActiveSubtitleInParams = \"hasActiveSubtitleInParams\",\n hasRawSubtitles = \"hasRawSubtitles\",\n skeletonStatusInVhl = \"skeletonStatusInVhl\",\n getDetails = \"getDetails\",\n getMarkers = \"getMarkers\",\n canPlayVideo = \"canPlayVideo\",\n setSubtitleFirstPlay = \"setSubtitleFirstPlay\",\n showSoundVolumeAlert = \"showSoundVolumeAlert\",\n}\n","import { isIOS, isTouchScreen, isTouchScreenLandscape, isTouchScreenPortrait } from \"../helpers\";\nimport { ConditionName, PlayerTypes } from \"../interfaces/enums\";\nimport store from \"../redux/store\";\n\nexport const conditions = (type: string) => {\n const { params, details, isValidAddress, isFetchDetails, isReady, rawSubtitles, subtitles, selectedSubtitle, markers, multiAudio, hiddenAd } =\n store.getState().videoData;\n const { firstPlay, lock, canPlayVideo, manualQuality, activeElements, isLoading, isEnded, isAutoPlay, play, isFullScreen, firstMute } =\n store.getState().controller;\n const { settingPopover, speedPopover, qualityLevelsPopover, markersListPopover } = store.getState().popovers;\n const { settings } = store.getState().user;\n const miniPlayer = store.getState().miniPlayer;\n\n switch (type) {\n case ConditionName.showHeader:\n return !firstPlay && canPlayVideo;\n case ConditionName.showMain:\n return !lock || firstPlay;\n case ConditionName.showFooter:\n return isTouchScreen() ? canPlayVideo && !firstPlay : canPlayVideo;\n case ConditionName.showTouchVolumeBrightness:\n return !firstPlay && isTouchScreenLandscape() && !lock && !isEnded;\n case ConditionName.showBackwardForward:\n return !firstPlay && !lock;\n case ConditionName.showTitle:\n return params.type !== \"static\" && isFullScreen && !lock;\n case ConditionName.showSettingPopover:\n return settingPopover;\n case ConditionName.showSpeedPopover:\n return speedPopover;\n case ConditionName.showQualityLevelsPopover:\n return qualityLevelsPopover;\n case ConditionName.showSettingIcon:\n return !isIOS();\n case ConditionName.showBanner:\n return firstPlay && (details.banner || params.banner);\n case ConditionName.showProgressbar:\n return true;\n case ConditionName.showPictureInPicture:\n return !isIOS() && !isTouchScreen();\n case ConditionName.showSubtitle:\n return !!selectedSubtitle;\n case ConditionName.showMarkerListPopover:\n return markersListPopover;\n case ConditionName.hidePopovers:\n return !settingPopover;\n case ConditionName.isLandscape:\n return window.innerHeight <= window.innerWidth;\n case ConditionName.isTouchScreen:\n return isTouchScreen();\n case ConditionName.isTouchScreenPortrait:\n return isTouchScreenPortrait();\n case ConditionName.isTouchScreenLandscape:\n return isTouchScreenLandscape();\n case ConditionName.isActiveElements:\n return activeElements;\n case ConditionName.isPlay:\n return play;\n case ConditionName.isPlayMiniPlayer:\n return miniPlayer.play;\n case ConditionName.isFirstPlay:\n return firstPlay;\n case ConditionName.isLock:\n return lock;\n case ConditionName.isFirstMutePlay:\n return firstMute;\n case ConditionName.isIOS:\n return isIOS();\n case ConditionName.isLoading:\n return isLoading;\n case ConditionName.isStaticFormat:\n return params.type === PlayerTypes.static;\n case ConditionName.isEnded:\n return isEnded;\n case ConditionName.isAutoPlay:\n return isAutoPlay;\n case ConditionName.isFullScreen:\n return isFullScreen;\n case ConditionName.isValidAddress:\n return params.id ? isValidAddress : !!params.stream_link;\n case ConditionName.isFetchDetails:\n return params.id ? isFetchDetails : !!params.stream_link;\n case ConditionName.isAutoQuality:\n return settings.quality === -1;\n case ConditionName.isPressKeySpace:\n return !lock;\n case ConditionName.isPressKeyI:\n return !lock && !firstPlay;\n case ConditionName.isPressKeyF:\n return (!lock && !firstPlay) || !!params.vhl_status;\n case ConditionName.isPressKeyS:\n return !lock && !firstPlay;\n case ConditionName.isPressKeyArrowRight:\n return !firstPlay && !lock;\n case ConditionName.isPressKeyArrowLeft:\n return !firstPlay && !lock;\n case ConditionName.isPressKeyM:\n return !firstPlay && !lock;\n case ConditionName.isPressKeyC:\n return !lock && !firstPlay && !!subtitles && subtitles.length > 0;\n case ConditionName.isSendTimelineLog:\n return params.type !== \"static\";\n case ConditionName.isReady:\n return isReady;\n case ConditionName.isSelectedSubtitle:\n return !!subtitles && subtitles.length > 0 && selectedSubtitle;\n case ConditionName.isMiniPlayerAndMainPlayerSame:\n return params.id === miniPlayer.params.id;\n case ConditionName.isVideoHighLighter:\n return !!params.vhl_status;\n case ConditionName.hasTitle:\n return details.title;\n case ConditionName.hasBanner:\n return details.banner;\n case ConditionName.streamLink:\n return details.stream_link || params.stream_link;\n case ConditionName.hasManualQuality:\n return manualQuality !== undefined && manualQuality !== null;\n case ConditionName.hasSound:\n return !!settings.volume;\n case ConditionName.hasAutoPlay:\n return params.autoplay === \"true\";\n case ConditionName.hasFullScreenParams:\n return params.fullscreen === \"true\";\n case ConditionName.hasOnFinishedParams:\n return !!params.onFinished;\n case ConditionName.hasSubtitles:\n return !!subtitles && subtitles.length > 0;\n case ConditionName.hasMultipleSubtitles:\n return !!subtitles && subtitles.length > 1;\n case ConditionName.hasActiveCue:\n return selectedSubtitle && selectedSubtitle.activeCues && selectedSubtitle.activeCues.length > 0;\n case ConditionName.hasOnPlayParams:\n return !!params.onPlay;\n case ConditionName.hasOnPauseParams:\n return !!params.onPause;\n case ConditionName.hasMiniPlayer:\n return miniPlayer.params.id;\n case ConditionName.hasCurrentTimeParams:\n return params.currentTime !== undefined;\n case ConditionName.hasMarkers:\n return markers.length !== 0;\n case ConditionName.hasSubtitlesInParams:\n return params.subtitles && params.subtitles.length;\n case ConditionName.hasOnChangeCurrentTime:\n return !!params.onChangeCurrentTime;\n case ConditionName.hasMultiAudio:\n return multiAudio && !!multiAudio.length;\n case ConditionName.hasAdvertisement:\n return !!params.advertisement && !!params.advertisement.videoUrl && !hiddenAd;\n case ConditionName.hasActiveSubtitleInParams:\n return !!params.activeSubtitle;\n case ConditionName.hasRawSubtitles:\n return !!rawSubtitles && !!rawSubtitles.length;\n case ConditionName.skeletonStatusInVhl:\n return params.vhl_status === \"skeleton\";\n case ConditionName.getDetails:\n return !!params.type && params.id;\n case ConditionName.getMarkers:\n return String(params.type) === \"vod\" && params.id && isFetchDetails;\n case ConditionName.canPlayVideo:\n return canPlayVideo;\n case ConditionName.showSoundVolumeAlert:\n return firstMute;\n case ConditionName.setSubtitleFirstPlay:\n return (\n ((params.type === PlayerTypes.vod && details.subtitles && details.subtitles.length > 0) ||\n (params.type === PlayerTypes.static && params.subtitles && params.subtitles.length)) &&\n !firstPlay\n );\n default:\n break;\n }\n};\n","import { conditions } from \"./conditions/conditions\";\nimport { ConditionName } from \"./interfaces/enums\";\nimport store from \"./redux/store\";\nimport { setClearVideoDataSlice } from \"./redux/slices/videoDataSlice\";\nimport { setClearControllerSlice, setFirstMute, setPlay } from \"./redux/slices/controllerSlice\";\nimport { setClearUserSlice } from \"./redux/slices/userSlice\";\nimport { setClearPopoversSlice } from \"./redux/slices/popoversSlice\";\nimport { handleChangeSoundVolume } from \"./redux/actions/controller.actions\";\nimport { ClassNameValue } from \"tailwind-merge\";\nimport { twMerge as tailwindMerge } from \"tailwind-merge\";\n\nconst PREFIX = \"pl-\";\n\nconst twMerge = (...classLists: ClassNameValue[]) => {\n const input = classLists.flat(1).filter(Boolean).join(\" \").trim();\n if (!input) return \"\";\n const classes = input?.split(/\\s+/);\n const hadPrefix = new Set(classes.filter((cls) => cls.startsWith(PREFIX)).map((cls) => cls.slice(PREFIX.length)));\n const withoutPrefix = classes.map((cls) => (cls.startsWith(PREFIX) ? cls.slice(PREFIX.length) : cls));\n const merged = tailwindMerge(withoutPrefix.join(\" \"))?.split(\" \");\n const finalClasses = merged.map((cls) => (hadPrefix.has(cls) ? PREFIX + cls : cls));\n return finalClasses.join(\" \").trim();\n};\n\nexport const tw = (classname: string, options?: { touchFullScreen?: string; touch?: string; desktopFullScreen?: string; desktop?: string }) => {\n const config = options || {};\n const isTouch = conditions(ConditionName.isTouchScreen);\n const isFullScreen = conditions(ConditionName.isFullScreen);\n\n if (isTouch) return twMerge(classname, config.touch, isFullScreen ? config.touchFullScreen : undefined);\n else return twMerge(classname, config.desktop, isFullScreen ? config.desktopFullScreen : undefined);\n};\n\nexport const styleMerge = <T extends number | string>(options: { touchFullScreen?: T; touch?: T; desktopFullScreen?: T; desktop?: T }) => {\n const isTouch = conditions(ConditionName.isTouchScreen);\n const isFullScreen = conditions(ConditionName.isFullScreen);\n\n let result: T | undefined;\n\n if (isTouch) result = isFullScreen ? (options.touchFullScreen ?? options.touch) : options.touch;\n else result = isFullScreen ? (options.desktopFullScreen ?? options.desktop) : options.desktop;\n\n return result as T;\n};\n\nexport const wait = (s: number) => new Promise((resolve) => setTimeout(resolve, s * 1000));\n\nexport const getUUID = () => {\n let uuid = localStorage.getItem(\"hamrahiUUID\");\n if (!uuid) {\n uuid = uuidGenerator();\n localStorage.setItem(\"hamrahiUUID\", uuid);\n }\n return uuid.toString();\n};\n\nexport const uuidGenerator = () => {\n let uuid = \"xxxxxxxx-xxxx-Mxxx-Nxxx-x\".replace(/[xMN]/g, (char) => {\n let val: number;\n if (char === \"M\") val = Math.floor(1 + Math.random() * 5);\n else if (char === \"N\") val = Math.floor(8 + Math.random() * 4);\n else val = Math.floor(Math.random() * 16);\n return val.toString(16);\n });\n uuid += Date.now().toString(16);\n return uuid;\n};\n\nexport const isTouchScreen = () =>\n typeof window !== \"undefined\" &&\n (\"ontouchstart\" in window || ((window as any)[\"DocumentTouch\"] && document instanceof (window as any)[\"DocumentTouch\"]));\n\nexport const isTouchScreenLandscape = () => {\n const { isFullScreen } = store.getState().controller;\n return isTouchScreen() && isFullScreen;\n};\nexport const isTouchScreenPortrait = () => {\n const { isFullScreen } = store.getState().controller;\n return isTouchScreen() && !isFullScreen;\n};\n\nexport const isIOS = () => {\n return (\n [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) ||\n // iPad on iOS 13 detection\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\n );\n};\n\nexport const addZeroBefore = (n: number) => {\n return (n < 10 ? \"0\" : \"\") + n;\n};\n\nexport const secondsToHMS = (seconds: number) => {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = Math.floor((seconds % 3600) % 60);\n return h < 1 ? `${addZeroBefore(m)}:${addZeroBefore(s)}` : `${addZeroBefore(h)}:${addZeroBefore(m)}:${addZeroBefore(s)}`;\n};\n\nexport const addUuidToSrc = (src: string) => {\n const urlObject = new URL(src);\n let urlSrc = src;\n if (urlObject.search.length) return (urlSrc += `&uuid=${getUUID()}`);\n else return (urlSrc += `?uuid=${getUUID()}`);\n};\n\nexport const checkParentTarget = (event: any, target: string) => {\n try {\n return [\n event.target.id,\n event.target.parentNode.id,\n event.target.parentNode.parentNode.id,\n event.target.parentNode.parentNode.parentNode.id,\n event.target.parentNode.parentNode.parentNode.parentNode.id,\n ].includes(target);\n } catch (error) {\n return false;\n }\n};\n\nexport const splitQueryParamsFromStreamLink = (playerType: \"mainPlayer\" | \"miniPlayer\") => {\n const { params } = store.getState().videoData;\n\n let streamLink = \"\";\n if (!params.id && params.stream_link) streamLink = params.stream_link;\n else {\n if (playerType === \"mainPlayer\") streamLink = store.getState().videoData.details.stream_link!;\n else streamLink = store.getState().miniPlayer.details.stream_link!;\n }\n\n let queryParams: string = \"\";\n if (streamLink) queryParams = streamLink?.split(\"m3u8\")[1];\n if (queryParams) queryParams = `${queryParams}&uuid=${getUUID()}`;\n else queryParams = `?uuid=${getUUID()}`;\n return queryParams;\n};\n\nexport const handleRippleCircle = (event: any, id: string) => {\n const element: any = document.getElementById(id);\n const circle = document.createElement(\"span\");\n circle.style.width = circle.style.height = `50px`;\n circle.style.left = `${event.touches[0].clientX - element.offsetLeft - 25}px`;\n circle.style.top = `${event.touches[0].clientY - element.offsetTop - 25}px`;\n circle.classList.add(\"pl-ripple\");\n const ripple = element.getElementsByClassName(\"pl-ripple\")[0];\n if (ripple) ripple.remove();\n element.appendChild(circle);\n};\n\nexport const handleRipple = (event: any, id: string, size: number = 50) => {\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\n const clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;\n const element: any = document.getElementById(id);\n const circle = document.createElement(\"span\");\n circle.style.width = circle.style.height = `${size}px`;\n circle.style.left = `${clientX - size / 2}px`;\n circle.style.top = `${clientY - element.getBoundingClientRect().top - size / 2}px`;\n circle.classList.add(\"pl-ripple\");\n const ripple = element.getElementsByClassName(\"pl-ripple\")[0];\n if (ripple) ripple.remove();\n element.appendChild(circle);\n};\n\nexport const responseValidator = (status: number): boolean => status >= 200 && status < 300;\n\nexport const clearRedux = () => {\n const dispatch = store.dispatch;\n dispatch(setClearVideoDataSlice());\n dispatch(setClearControllerSlice());\n dispatch(setClearUserSlice());\n dispatch(setClearPopoversSlice());\n};\n\nexport const weighted_random = (options: any) => {\n let i;\n\n let weights: any[] = [];\n\n for (i = 0; i < options.length; i++) weights[i] = options[i].weight + (weights[i - 1] || 0);\n\n let random = Math.random() * weights[weights.length - 1];\n\n for (i = 0; i < weights.length; i++) if (weights[i] > random) break;\n\n return options[i].domain;\n};\n\n// ***** Player Core *****\n\nexport const handlePageLoadTime = (loadingDurationRef: any) => {\n let pageLoadTime = 0;\n if (performance && performance.getEntriesByType(\"navigation\")) pageLoadTime = performance.getEntriesByType(\"navigation\")[0].duration;\n loadingDurationRef.current = pageLoadTime;\n};\n\nexport const highestResolutionSupported = (resolutions: string[], width: number, height: number) => {\n const w = width * window.devicePixelRatio;\n const h = height * window.devicePixelRatio;\n let filteredResolutions: string[] = [];\n if (conditions(ConditionName.isTouchScreenPortrait))\n filteredResolutions = resolutions.filter((resolution: string) => Number(resolution?.split(\"x\")[0].trim()) <= w);\n else\n filteredResolutions = resolutions.filter(\n (resolution: string) => Number(resolution?.split(\"x\")[0].trim()) <= h || Number(resolution?.split(\"x\")[1].trim()) <= w,\n );\n return filteredResolutions.indexOf(filteredResolutions[filteredResolutions.length - 1]);\n};\n\nexport const flattenObject = (input: any, keyName?: string) => {\n let result: any = {};\n for (const key in input) {\n const newKey = keyName ? `${keyName}_${key}` : key;\n if (typeof input[key] === \"object\" && !Array.isArray(input[key])) result = { ...result, ...flattenObject(input[key], newKey) };\n else result[newKey] = input[key];\n }\n return result;\n};\n\nexport const sortLanguages = (array: any) => {\n const priority: any = { fa: 1, en: 2 };\n\n return array.slice().sort((a: any, b: any) => {\n const prioA = priority[a.lang] || 999;\n const prioB = priority[b.lang] || 999;\n\n return prioA - prioB;\n });\n};\n\nexport const getSubtitleLabel = (subtitleLanguage: string) => {\n let label;\n switch (subtitleLanguage) {\n case \"fa\":\n label = \"فارسی\";\n break;\n case \"en\":\n label = \"انگلیسی\";\n break;\n case \"ar\":\n label = \"عربی\";\n break;\n case \"tr\":\n label = \"ترکی\";\n break;\n default:\n break;\n }\n return label;\n};\n\nexport const spliteStringPerLine = (str: string) => str?.split(/\\r?\\n|\\r|\\n/g);\n\nexport const inViewPort = (element: any) => {\n if (element) {\n const positionLeft = element.offsetLeft - element.offsetWidth / 2;\n const positionRight = window.innerWidth - (element.offsetLeft + element.offsetWidth);\n if (positionLeft >= 0 && positionRight >= 0) return \"inViewport\";\n else if (positionLeft < 0) return \"OutViewPortFromLeft\";\n else if (positionRight < 0) return \"OutViewPortFromRight\";\n }\n};\n\nexport const compare = (a: any, b: any) => {\n if (a.time < b.time) return -1;\n if (a.time > b.time) return 1;\n return 0;\n};\n\nexport const cleanVTT = (vttText: string) => {\n // Remove all timestamps and alignment/position data\n vttText = vttText.replace(/\\d{2}:\\d{2}:\\d{2}\\.\\d{3} --> \\d{2}:\\d{2}:\\d{2}\\.\\d{3}.*\\n/g, \"\");\n\n // Remove all HTML tags like <c> and </c>\n vttText = vttText.replace(/<[^>]+>/g, \"\");\n\n // Remove extra blank lines\n vttText = vttText.replace(/\\n+/g, \"\\n\");\n\n // Trim leading and trailing whitespace\n vttText = vttText.trim();\n\n return vttText;\n};\n\nexport const isDev = process.env.NODE_ENV === \"development\";\n\nexport const setupAutoplayBehavior = (video: HTMLVideoElement) => {\n const dispatch = store.dispatch;\n const { params } = store.getState().videoData;\n if (params.autoplay === \"true\" || params.advertisement) {\n const playPromise = video.play();\n\n dispatch(setPlay(true));\n handleChangeSoundVolume(100, video);\n\n if (playPromise !== undefined)\n playPromise\n .then(() => {\n handleChangeSoundVolume(100, video);\n })\n .catch(() => {\n handleChangeSoundVolume(0, video);\n dispatch(setFirstMute(true));\n if (ConditionName.isIOS) video.play();\n });\n }\n};\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\nimport miniPlayerReducer from \"./slices/miniPlayerSlice\";\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 miniPlayer: miniPlayerReducer,\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\";\nimport { IPopoversSlice } from \"../../interfaces/interfaces\";\n\nconst PopOversSliceState: IPopoversSlice = {\n settingPopover: false,\n speedPopover: false,\n qualityLevelsPopover: false,\n markersListPopover: false,\n multiAudioPopover: false,\n};\nexport const popoversSlice = createSlice({\n name: \"popover\",\n initialState: PopOversSliceState,\n reducers: {\n setSettingPopover: (state, action: PayloadAction<boolean>) => {\n state.settingPopover = action.payload;\n },\n setSpeedPopover: (state, action: PayloadAction<boolean>) => {\n state.speedPopover = action.payload;\n },\n setQualityLevelsPopover: (state, action: PayloadAction<boolean>) => {\n state.qualityLevelsPopover = action.payload;\n },\n setMarkersListPopover: (state, action: PayloadAction<boolean>) => {\n state.markersListPopover = action.payload;\n },\n setMultiAudioPopover: (state, action: PayloadAction<boolean>) => {\n state.multiAudioPopover = action.payload;\n },\n setClearPopoversSlice: (state) => {\n state.settingPopover = false;\n state.speedPopover = false;\n state.qualityLevelsPopover = false;\n state.markersListPopover = false;\n state.multiAudioPopover = false;\n },\n },\n});\n\nexport const { setSettingPopover, setSpeedPopover, setQualityLevelsPopover, setMarkersListPopover, setMultiAudioPopover, setClearPopoversSlice } = popoversSlice.actions;\n\nexport default popoversSlice.reducer;\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { IUserSettings, IUserSlice, IVideoSettings } from \"../../interfaces/interfaces\";\nimport { isDev } from \"../../helpers\";\n\nconst UserSliceState: IUserSlice = {\n settings: { quality: isDev ? 0 : -1, brightness: 100, volume: 100, speed: 1 },\n videoSettings: { time: 0 },\n};\n\nexport const userSlice = createSlice({\n name: \"user\",\n initialState: UserSliceState,\n reducers: {\n setUserSettings: (state, action: PayloadAction<IUserSettings>) => {\n state.settings = action.payload;\n },\n setVideoSettings: (state, action: PayloadAction<IVideoSettings>) => {\n state.videoSettings = action.payload;\n },\n setClearUserSlice: () => {\n return UserSliceState;\n },\n },\n});\n\nexport const { setUserSettings, setVideoSettings, setClearUserSlice } = userSlice.actions;\n\nexport default userSlice.reducer;\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport {\n IDetails,\n IMiniPlayerParams,\n IMiniPlayerSlice,\n} from \"../../interfaces/interfaces\";\nimport { PlayerTypes } from \"../../interfaces/enums\";\n\nconst MiniPlayerSliceState: IMiniPlayerSlice = {\n params: {\n id: \"0\",\n type: \"\",\n currentTime: 0,\n autoPlay: false,\n onClose: () => {},\n },\n details: {},\n play: false,\n};\n\nexport const userSlice = createSlice({\n name: \"user\",\n initialState: MiniPlayerSliceState,\n reducers: {\n setMiniPlayerInfo: (state, action: PayloadAction<IMiniPlayerParams>) => {\n state.params = {\n ...action.payload,\n id:\n action.payload.type === PlayerTypes.static\n ? window.atob(action.payload.id)\n : action.payload.id,\n banner: action.payload.banner ? action.payload.banner : undefined,\n };\n },\n setDetailsMiniPlayer: (state, action: PayloadAction<IDetails>) => {\n state.details = action.payload;\n },\n setPlayMiniPlayer: (state, action: PayloadAction<boolean>) => {\n state.play = action.payload;\n },\n setClearMiniPlayerSlice: (state) => {\n return (state = MiniPlayerSliceState);\n },\n },\n});\n\nexport const {\n setMiniPlayerInfo,\n setDetailsMiniPlayer,\n setPlayMiniPlayer,\n setClearMiniPlayerSlice,\n} = userSlice.actions;\n\nexport default userSlice.reducer;\n","import { setFirstMute, setIsFullScreen, setLock, setPlay } from \"../slices/controllerSlice\";\nimport store from \"../store\";\nimport { setVideoElementSizeInfo, setVideoTimelines } from \"../slices/videoDataSlice\";\nimport { ConditionName } from \"../../interfaces/enums\";\nimport { apiCaller } from \"../../services/apiCaller\";\nimport { API } from \"../../services/services\";\nimport { setUserSettings } from \"../slices/userSlice\";\nimport { setClearPopoversSlice } from \"../slices/popoversSlice\";\nimport { conditions } from \"../../conditions/conditions\";\nimport { backwardForwardLog, fullscreenLog, lockLog, videoTimelineLog } from \"../../logs/logs\";\nimport { sendFluentLog } from \"../../logs/fluentdLogger\";\nimport { mainPlayerVideoTag, miniPlayerVideoTag } from \"../../constants\";\nimport { setPlayMiniPlayer } from \"../slices/miniPlayerSlice\";\n\nexport const handlePlayPause = (event: any) => {\n if (event === null || event.target.nodeName !== \"INPUT\") {\n const dispatch = store.dispatch;\n if (event !== null) {\n event.stopPropagation();\n event.preventDefault();\n }\n mainPlayerVideoTag()?.paused ? mainPlayerVideoTag().play() : mainPlayerVideoTag()?.pause();\n dispatch(setPlay(!mainPlayerVideoTag()?.paused));\n if (miniPlayerVideoTag() && miniPlayerVideoTag().played) {\n miniPlayerVideoTag()?.pause();\n dispatch(setPlayMiniPlayer(false));\n }\n }\n};\n\nexport const handlePlayerPauseMiniPlayer = (event: any) => {\n if (event === null || event.target.nodeName !== \"INPUT\") {\n const dispatch = store.dispatch;\n miniPlayerVideoTag().paused ? miniPlayerVideoTag().play() : miniPlayerVideoTag()?.pause();\n dispatch(setPlayMiniPlayer(!miniPlayerVideoTag().paused));\n if (mainPlayerVideoTag() && mainPlayerVideoTag().played) {\n mainPlayerVideoTag()?.pause();\n dispatch(setPlay(false));\n }\n }\n};\n\nexport const firstUnMuteHandler = () => {\n const dispatch = store.dispatch;\n dispatch(setFirstMute(false));\n if (conditions(ConditionName.isIOS)) mainPlayerVideoTag().currentTime = mainPlayerVideoTag().currentTime - 0.001;\n};\n\nexport const handleChangeSoundVolume = (volume: number, videoTag?: HTMLVideoElement) => {\n const dispatch = store.dispatch;\n const { settings } = store.getState().user;\n const { firstMute } = store.getState().controller;\n\n const video = videoTag || mainPlayerVideoTag();\n\n dispatch(setUserSettings({ ...settings, volume }));\n\n if (!video) return;\n\n if (firstMute && volume) firstUnMuteHandler();\n if (conditions(ConditionName.isIOS)) video.muted = !volume;\n else video.volume = volume / 100;\n};\n\nexport const handleBackwardForward = (type: string, forwardBackwardCount: number = 15, event?: any) => {\n if (type === \"touchBackward\") type = \"backward\";\n else if (type === \"touchForward\") type = \"forward\";\n if (\n (event && event.target.nodeName === \"INPUT\") ||\n (type === \"backward\" && mainPlayerVideoTag().currentTime < 15) ||\n (type === \"forward\" && mainPlayerVideoTag().duration - mainPlayerVideoTag().currentTime < 15)\n )\n return;\n sendFluentLog(backwardForwardLog(type));\n let currentTime = 0;\n if (type === \"backward\") {\n if (forwardBackwardCount === 0) currentTime = 0;\n else currentTime = mainPlayerVideoTag().currentTime - forwardBackwardCount;\n } else if (type === \"forward\") {\n if (forwardBackwardCount === mainPlayerVideoTag().duration) currentTime = forwardBackwardCount;\n else currentTime = mainPlayerVideoTag().currentTime + forwardBackwardCount;\n }\n mainPlayerVideoTag().currentTime = currentTime;\n};\n\nexport const handleFullScreen = () => {\n const dispatch = store.dispatch;\n\n const isFullScreen = document.fullscreenElement;\n if (conditions(ConditionName.isIOS)) {\n if ((mainPlayerVideoTag() as any).webkitEnterFullScreen) {\n dispatch(setPlay(false));\n // Toggle fullscreen in Safari for iPad\n (mainPlayerVideoTag() as any).webkitEnterFullScreen();\n } else {\n dispatch(setClearPopoversSlice());\n sendFluentLog(fullscreenLog(\"fullScreen\"));\n }\n } else {\n if (isFullScreen) {\n dispatch(setIsFullScreen(false));\n document.exitFullscreen().then(() => (document.body.style.overflow = \"auto\"));\n } else {\n dispatch(setClearPopoversSlice());\n document.documentElement.requestFullscreen().then(() => (document.body.style.overflow = \"hidden\"));\n dispatch(setIsFullScreen(true));\n sendFluentLog(fullscreenLog(\"fullScreen\"));\n }\n }\n};\n\nexport const handleLockOrientation = () => {\n if (conditions(ConditionName.isTouchScreen) && !conditions(ConditionName.isIOS)) {\n if (conditions(ConditionName.isLandscape) && !conditions(ConditionName.isFullScreen)) (window.screen.orientation as any).lock(\"portrait\");\n else (window.screen.orientation as any).lock(\"landscape\");\n }\n};\n\nexport const handleLock = (type: string) => {\n const dispatch = store.dispatch;\n dispatch(setLock(type === \"lock\"));\n sendFluentLog(lockLog(type));\n if (type === \"unlock\") localStorage.setItem(\"unlock-click\", \"true\");\n};\n\nexport const handleVideoTimeline = (currentTimeValue: number, movedTimeValue?: number) => {\n if (conditions(ConditionName.isSendTimelineLog)) {\n const dispatch = store.dispatch;\n const { videoTimelines } = store.getState().videoData;\n let currentTime = Math.floor(currentTimeValue);\n let movedTime = Math.floor(movedTimeValue!);\n if (videoTimelines.length === 0) {\n dispatch(setVideoTimelines([currentTime >= mainPlayerVideoTag()?.duration ? movedTime! : currentTime]));\n } else {\n if (videoTimelines[0] < currentTime)\n apiCaller({\n url: API().videoTimelineLog,\n method: \"post\",\n data: videoTimelineLog(videoTimelines[0], currentTime),\n });\n if (movedTime && movedTime >= mainPlayerVideoTag()?.duration) dispatch(setVideoTimelines([]));\n else dispatch(setVideoTimelines([movedTime!]));\n }\n }\n};\n\nexport const handleVideoElementSizeInfo = () => {\n const dispatch = store.dispatch;\n const element: any = document.getElementById(\"video-area\")?.getBoundingClientRect();\n element.height = (element.width * 9) / 16;\n if (element) dispatch(setVideoElementSizeInfo(element));\n};\n\nexport const handleDoubleClick = (event: any) => {\n if (!conditions(ConditionName.isTouchScreen) && event.target.nodeName !== \"INPUT\") handleFullScreen();\n};\n","import axios, { AxiosError } from \"axios\";\nimport { IApiCaller, IAxiosConfig, IRetryPolicy } from \"../interfaces/interfaces\";\nimport store from \"../redux/store\";\nimport { wait } from \"../helpers\";\nimport { errorLogProvider } from \"../errorBoundary/errorBoundaryFunctions\";\n\nexport const apiCaller: any = async ({\n url,\n method = \"GET\",\n data,\n headers,\n retryCount = 1,\n maxRetryCount = 0,\n errorMessage,\n retryPolicy,\n errorCallback,\n timeoutCount,\n}: IApiCaller) => {\n let axiosConfig: IAxiosConfig = {\n url: url,\n method: method,\n headers: {\n ...headers,\n \"Content-Type\": \"application/json\",\n },\n timeout: timeoutCount ? timeoutCount * 1000 : undefined,\n };\n if (data) {\n if (method === \"GET\")\n axiosConfig = {\n ...axiosConfig,\n params: {\n uuid: store.getState().videoData.params.uuid,\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\n ...data,\n },\n };\n else\n axiosConfig = {\n ...axiosConfig,\n data: {\n uuid: store.getState().videoData.params.uuid,\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\n ...data,\n },\n };\n } else {\n if (method === \"GET\")\n axiosConfig = {\n ...axiosConfig,\n params: {\n uuid: store.getState().videoData.params.uuid,\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\n },\n };\n else\n axiosConfig = {\n ...axiosConfig,\n data: {\n uuid: store.getState().videoData.params.uuid,\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\n },\n };\n }\n try {\n return await axios(axiosConfig);\n } catch (error: any) {\n if (error instanceof AxiosError && error.code !== \"ERR_NETWORK\") {\n errorLogProvider({\n type: \"API-ERROR\",\n message: error.message ? error.message : \"\",\n statusCode: error.response && error.response.status ? error.response.status : undefined,\n url,\n });\n }\n\n if (error && error.response && error.response.status === 401) {\n //\n } else {\n if (errorCallback) errorCallback(error.response.status, error.response.message);\n let newRetryDelay = 0,\n newMaxRetryCount = 0;\n if (retryPolicy !== undefined) {\n for (let i = 0; i < retryPolicy.length; i++) {\n if (\n (((retryPolicy[i].codeAbove && error.response.status >= retryPolicy[i].codeAbove!) ||\n (retryPolicy[i].codeBelow && error.response.status <= retryPolicy[i].codeBelow!)) &&\n (retryPolicy[i].excludeCodes.length === 0 || !retryPolicy[i].excludeCodes.includes(error.response.status))) ||\n retryPolicy[i].includeCodes.length === 0 ||\n retryPolicy[i].includeCodes.includes(error.response.status)\n ) {\n newMaxRetryCount = retryPolicy[i].count;\n newRetryDelay = retryPolicy[i].delay;\n break;\n }\n }\n } else {\n newMaxRetryCount = maxRetryCount;\n newRetryDelay = retryCount + 1;\n }\n if (retryCount < newMaxRetryCount) {\n await wait(newRetryDelay);\n return apiCaller({\n url,\n method,\n data,\n headers,\n retryCount: retryCount + 1,\n newMaxRetryCount,\n errorMessage,\n retryPolicy,\n errorCallback,\n });\n } else if (error.response)\n return {\n data: error.response.data ? error.response.data : { detail: \"عملیات با خطا مواجه شده است.\" },\n status: error.response.status,\n };\n }\n }\n};\n\nexport function getAll(path: string, retryPolicy?: IRetryPolicy[], params?: any, retryCount: number = 1, maxRetryCount: number = 0) {\n return new Promise(async (resolve, reject) => {\n // Added reject to the Promise executor function.\n try {\n const url = new URL(path);\n const limit = 1000;\n if (params) {\n Object.keys(params).forEach((key) => {\n if (params[key]) {\n url.searchParams.set(key, params[key]);\n }\n });\n }\n url.searchParams.set(\"limit\", limit.toString());\n const response = await fetch(url.href);\n if (!response.ok) {\n // Check if the response was not ok (status not in the range 200-299).\n throw response;\n }\n const data = await response.json();\n const count = data.count;\n const requestCount = Math.ceil(count / limit) - 1;\n const promises: Array<Promise<any>> = [];\n for (let i = 0; i < requestCount; i++) {\n const offset = i * limit; // Fixed the offset calculation.\n url.searchParams.set(\"offset\", offset.toString());\n const promise: Promise<any> = fetch(url.href).then((res) => {\n if (res.ok) {\n return res.json();\n }\n return res.json().then((err) => Promise.reject(err));\n });\n promises.push(promise);\n }\n Promise.all(promises)\n .then((res) => {\n const results = res.flatMap((item) => item.results);\n resolve([...data.results, ...results]);\n })\n .catch(reject); // Added catch to handle any errors in the Promise.all.\n } catch (error: any) {\n let newRetryDelay = 0,\n newMaxRetryCount = 0;\n if (retryPolicy !== undefined) {\n for (let i = 0; i < retryPolicy.length; i++) {\n if (\n ((retryPolicy[i].codeAbove && error.status >= retryPolicy[i].codeAbove!) ||\n (retryPolicy[i].codeBelow && error.status <= retryPolicy[i].codeBelow!)) &&\n (retryPolicy[i].excludeCodes.length === 0 || !retryPolicy[i].excludeCodes.includes(error.status)) &&\n (retryPolicy[i].includeCodes.length === 0 || retryPolicy[i].includeCodes.includes(error.status))\n ) {\n newMaxRetryCount = retryPolicy[i].count;\n newRetryDelay = retryPolicy[i].delay;\n break;\n }\n }\n if (retryCount < newMaxRetryCount) {\n await wait(newRetryDelay);\n getAll(path, retryPolicy, params, retryCount + 1, newMaxRetryCount);\n }\n }\n }\n });\n}\n","import { sendFluentLog } from \"../logs/fluentdLogger\";\nimport { ExceptionsLog } from \"../logs/logs\";\n\nexport const errorLogProvider = (data?: {type:string, message:string, statusCode?:number, url?:string}) => {\n if(data) sendFluentLog(ExceptionsLog(data.type, data.message, data.statusCode, data.url));\n}\n","import store from \"../redux/store\";\nimport { apiCaller } from \"../services/apiCaller\";\nimport { API } from \"../services/services\";\nimport { getUUID } from \"../helpers\";\n\nexport const sendFluentLog = (data: any) => {\n const { details, params } = store.getState().videoData;\n let _data = {\n ...data,\n timestamp: Date.now(),\n clientUUID: getUUID(),\n uuid: getUUID(),\n link: window.location.href,\n user_id: details.user_id,\n live_id: null,\n format: undefined,\n content_type: details.content_type,\n content_id: details.content_id,\n daaniHashCode: params.daaniHashCode,\n };\n apiCaller({ url: API().logs, method: \"post\", data: _data });\n};\n","import {\n getFluentdUrl,\n getRestApiLiveUrl,\n} from \"./baseUrl\";\n\nexport const API = () => {\n return {\n vod: {\n getVodUrl: `${getRestApiLiveUrl()}/v1/live/details/vod/`,\n getMarkerUrl: (videoId:number) => `${getRestApiLiveUrl()}/v1/live/list-event/vod/${videoId}/`\n },\n videoTimelineLog: `${getFluentdUrl()}/video-timeline.log`,\n logs: `${getFluentdUrl()}/cafevideo-endpoint.log`,\n };\n};","const envs = require(\"../configs/nextConfigs/next.config.js\");\nconst isNpmPackage = require(\"../configs/npmPackage/npmPackage\");\n\nexport const getRestApiLiveUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string)) + \"/live/api\";\nexport const getFluentdUrl = () => (isNpmPackage ? envs.fluentdUrl : (process.env.fluentdUrl as string));\nexport const getEmojiUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string)) + \"/emoji\";\n\n","import { conditions } from \"../conditions/conditions\";\nimport { mainPlayerVideoTag } from \"../constants\";\nimport { flattenObject, getUUID } from \"../helpers\";\nimport { ConditionName } from \"../interfaces/enums\";\nimport store from \"../redux/store\";\n\nexport const speedChangeLog = (selectedSpeed: Number) => {\n const { params, details } = store.getState().videoData;\n const { settings } = store.getState().user;\n return {\n category: \"speedChange\",\n previousSelectedSpeed: settings.speed,\n selectedSpeed: selectedSpeed,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const qualityChangeRequestLog = (selectedQuality: String) => {\n const { params, details } = store.getState().videoData;\n const { qualityLevels, manualQuality, autoQuality } = store.getState().controller;\n return {\n category: \"qualityChangeRequest\",\n currentPlayingQuality: `${qualityLevels[conditions(ConditionName.isAutoQuality) ? (autoQuality ?? manualQuality!) : manualQuality!]}P`,\n previousSelectedQuality: conditions(ConditionName.isAutoQuality) ? \"auto\" : `${qualityLevels[manualQuality!]}P`,\n selectedQuality: selectedQuality,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const catchUpLoadingLog = (duration: number) => {\n const { params, details } = store.getState().videoData;\n const { qualityLevels, autoQuality } = store.getState().controller;\n const { settings } = store.getState().user;\n\n return {\n category: \"catchUpLoading\",\n previousVideoTime: Number(sessionStorage.getItem(\"previousVideoTime\")),\n currentVideoTime: mainPlayerVideoTag().currentTime,\n duration: duration,\n quality: `${conditions(ConditionName.isAutoQuality) ? qualityLevels[autoQuality!] : qualityLevels[settings.quality]}P`,\n isAutoQuality: conditions(ConditionName.isAutoQuality),\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const backwardForwardLog = (type: string) => {\n const { params, details } = store.getState().videoData;\n return {\n category: type === \"backward\" ? \"backward\" : \"forward\",\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const fullscreenLog = (category: string) => {\n const { params, details } = store.getState().videoData;\n return {\n category: category,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const brightnessLog = (source: number, target: number) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"brightnessChange\",\n source: source,\n target: target,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const volumeLog = (source: number, target: number) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"volumeChange\",\n source: source,\n target: target,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const lockLog = (category: string) => {\n const { params, details } = store.getState().videoData;\n return {\n category: category,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const ExceptionsLog = (type: string, message: string, statusCode?: number, url?: string) => {\n return {\n category: \"player-error\",\n type,\n message,\n statusCode,\n url,\n };\n};\n\nexport const videoTimelineLog = (start: number, end: number) => {\n const { params, details } = store.getState().videoData;\n const { duration } = store.getState().controller;\n return {\n category: \"video-timeline\",\n video_id: +params.id!,\n video_type: params.type,\n start: start,\n end: end,\n watchedDuration: end - start,\n video_duration: Math.floor(duration),\n clientUUID: getUUID(),\n user_id: details.user_id,\n content_type: details.content_type,\n content_id: details.content_id,\n };\n};\n\nexport const autoQualityChangeLog = (sourceQuality: String, targetQuality: String, diffQuality: number) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"autoQualityChange\",\n sourceQuality: sourceQuality,\n targetQuality: targetQuality,\n diffQuality: diffQuality,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const pingpongLog = (startTimer: number, qualityHistory: number[]) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"pingpong\",\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n PingPongDuration: Number((new Date().getTime() - startTimer).toFixed(2)),\n PingPongSourceQuality: `${qualityHistory[0]}P`, // A A->B && B->A\n PingPongTargetQuality: `${qualityHistory[1]}P`, // B,\n provider: params.provider,\n };\n};\n\nexport const pausePlayLog = (isPlay: boolean) => {\n const { params, details } = store.getState().videoData;\n return {\n category: isPlay ? \"playVideo\" : \"pauseVideo\",\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const initLog = (loadingTime: number, waitingTime: number, bannerLoadingTime: number, firstChunkPlayingTime: number, timerRef: any) => {\n const { params, details } = store.getState().videoData;\n const totalTime = Date.now() - timerRef.current + loadingTime + waitingTime;\n const memory = (window.performance as any).memory;\n const timing = JSON.parse(JSON.stringify((window.performance as any).timing));\n return {\n category: \"initLog\",\n id: Number(params.id),\n type: params.type,\n origin: new URL(conditions(ConditionName.streamLink) || params.id!).origin,\n src: conditions(ConditionName.streamLink) || params.id,\n loading: loadingTime,\n bannerLoading: !conditions(ConditionName.hasBanner) || bannerLoadingTime < 0 ? 0 : bannerLoadingTime,\n waiting: waitingTime,\n firstChunkPlaying: firstChunkPlayingTime < 0 ? 0 : firstChunkPlayingTime,\n totalTime: totalTime,\n provider: params.provider,\n performance: flattenObject({ memory, timing }, \"performance\"),\n userAgent: window.navigator.userAgent,\n };\n};\n\nexport const loadingLog = (waitingDuration: number, qualityLevel: number, timerRef: any, loadingCounterRef: any, videoEntranceTime: number) => {\n const { params, details } = store.getState().videoData;\n const { settings } = store.getState().user;\n const previousLoaderDiff = Date.now() - timerRef.current;\n return {\n category: \"loading\",\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n duration: waitingDuration,\n quality: `${qualityLevel}P`,\n isAutoQuality: conditions(ConditionName.isAutoQuality),\n previousLoaderDiff: previousLoaderDiff,\n counter: loadingCounterRef.current,\n loadingPercentile: Number((waitingDuration / previousLoaderDiff).toFixed(2)),\n videoTime: mainPlayerVideoTag().currentTime,\n videoEntranceTime: videoEntranceTime,\n speed: settings.speed,\n provider: params.provider,\n };\n};\n\nexport const subtitleLog = (language: string) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"subtitle\",\n language: language,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const eventMarkerClickLog = (markerId: Number, markerTime: Number, markerTitle: String, markerDescription: String, markerSticker: String) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"eventMarkerClick\",\n video_id: Number(params.id),\n markerId: markerId,\n markerTime: markerTime,\n markerTitle: markerTitle,\n markerDescription: markerDescription,\n markerSticker: markerSticker,\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n","import store from \"./redux/store\";\n\nexport const mainPlayerVideoTag = () => document.getElementById(\"player-tag\") as HTMLVideoElement;\nexport const miniPlayerVideoTag = () => document.getElementById(\"mini-player-video-tag\") as HTMLVideoElement;\n\nexport const playerControllbar = () => document.getElementById(\"player-controllbar\") as any;\n\nexport const progressBar = () => document.getElementById(\"time-progress-bar\") as any;\nexport const progressArea = () => document.getElementById(\"progress-area\") as any;\nexport const progressContainer = () => document.getElementById(\"time-progress-container\") as any;\n\nexport const progressBarWidth = () => store.getState().videoData.videoElementSizeInfo.width;\n\nexport const progressTrack = () => document.getElementById(\"time-progress-area\") as any;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/videoPlayerLibrary/helpers/configs/nextConfigs/next.config.js","../src/videoPlayerLibrary/helpers/configs/npmPackage/npmPackage.ts","../src/videoPlayerLibrary/helpers/redux/slices/videoDataSlice.ts","../src/videoPlayerLibrary/helpers/interfaces/enums.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/redux/slices/miniPlayerSlice.ts","../src/videoPlayerLibrary/helpers/redux/actions/controller.actions.ts","../src/videoPlayerLibrary/helpers/services/apiCaller.ts","../src/videoPlayerLibrary/helpers/errorBoundary/errorBoundaryFunctions.ts","../src/videoPlayerLibrary/helpers/logs/fluentdLogger.ts","../src/videoPlayerLibrary/helpers/services/services.ts","../src/videoPlayerLibrary/helpers/services/baseUrl.ts","../src/videoPlayerLibrary/helpers/logs/logs.ts","../src/videoPlayerLibrary/helpers/constants.ts"],"names":["require_next_config","__commonJSMin","exports","module","init_esm_shims","npmPackage_exports","__export","isNpmPackage","init_npmPackage","__esmMin","VideoDataSliceState","videoDataSlice","createSlice","state","action","setInfo","setPlayerParams","setVideoElementSizeInfo","setMarkers","setIsFetchDetails","setIsValidAddress","setVideoTimelines","setIsReady","setRawSubtitles","setSubtitles","setSubtitleText","setSelectedSubtitle","setMultiAudio","setSelectedAudioId","setHiddenAd","setClearVideoDataSlice","videoDataSlice_default","PopOversSliceState","popoversSlice","setSettingPopover","setSpeedPopover","setQualityLevelsPopover","setMarkersListPopover","setMultiAudioPopover","setClearPopoversSlice","popoversSlice_default","UserSliceState","isDev","userSlice","setUserSettings","setVideoSettings","setClearUserSlice","userSlice_default","MiniPlayerSliceState","setMiniPlayerInfo","setDetailsMiniPlayer","setPlayMiniPlayer","setClearMiniPlayerSlice","miniPlayerSlice_default","store","configureStore","controllerSlice_default","getDefaultMiddleware","store_default","envs","Qe","getRestApiLiveUrl","getFluentdUrl","getEmojiUrl","API","videoId","sendFluentLog","data","details","params","_data","getUUID","apiCaller","mainPlayerVideoTag","miniPlayerVideoTag","progressBar","progressArea","progressBarWidth","progressTrack","speedChangeLog","selectedSpeed","settings","conditions","qualityChangeRequestLog","selectedQuality","qualityLevels","manualQuality","autoQuality","catchUpLoadingLog","duration","backwardForwardLog","type","fullscreenLog","category","volumeLog","source","target","lockLog","ExceptionsLog","message","statusCode","url","videoTimelineLog","start","end","autoQualityChangeLog","sourceQuality","targetQuality","diffQuality","pingpongLog","startTimer","qualityHistory","pausePlayLog","isPlay","initLog","loadingTime","waitingTime","bannerLoadingTime","firstChunkPlayingTime","timerRef","totalTime","memory","timing","flattenObject","loadingLog","waitingDuration","qualityLevel","loadingCounterRef","videoEntranceTime","previousLoaderDiff","subtitleLog","language","eventMarkerClickLog","markerId","markerTime","markerTitle","markerDescription","markerSticker","errorLogProvider","method","headers","retryCount","maxRetryCount","errorMessage","retryPolicy","errorCallback","timeoutCount","axiosConfig","axios","error","AxiosError","newRetryDelay","newMaxRetryCount","i","wait","handlePlayPause","event","dispatch","setPlay","handlePlayerPauseMiniPlayer","firstUnMuteHandler","setFirstMute","handleChangeSoundVolume","volume","videoTag","firstMute","video","handleBackwardForward","forwardBackwardCount","currentTime","handleFullScreen","isFullScreen","setIsFullScreen","handleLockOrientation","handleLock","setLock","handleVideoTimeline","currentTimeValue","movedTimeValue","videoTimelines","movedTime","handleVideoElementSizeInfo","element","handleDoubleClick","PREFIX","twMerge","classLists","input","classes","hadPrefix","cls","withoutPrefix","tailwindMerge","tw","classname","options","config","isTouch","styleMerge","result","s","resolve","uuid","uuidGenerator","char","val","isTouchScreen","isTouchScreenLandscape","isTouchScreenPortrait","isIOS","addZeroBefore","n","secondsToHMS","seconds","h","m","addUuidToSrc","src","urlObject","urlSrc","checkParentTarget","splitQueryParamsFromStreamLink","playerType","streamLink","queryParams","handleRippleCircle","id","circle","ripple","responseValidator","status","clearRedux","setClearControllerSlice","weighted_random","weights","random","handlePageLoadTime","loadingDurationRef","pageLoadTime","highestResolutionSupported","resolutions","width","height","w","filteredResolutions","resolution","keyName","key","newKey","sortLanguages","array","priority","a","b","prioA","prioB","getSubtitleLabel","subtitleLanguage","label","spliteStringPerLine","str","inViewPort","positionLeft","positionRight","cleanVTT","vttText","setupAutoplayBehavior","playPromise","isValidAddress","isFetchDetails","isReady","rawSubtitles","subtitles","selectedSubtitle","markers","multiAudio","hiddenAd","firstPlay","lock","canPlayVideo","activeElements","isLoading","isEnded","isAutoPlay","play","settingPopover","speedPopover","qualityLevelsPopover","markersListPopover","miniPlayer"],"mappings":"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","file":"chunk-NLCBOGTI.mjs","sourcesContent":["module.exports = {\n baseUrl: \"https://hamrahi.cloud\",\n fluentdUrl: \"https://hamrahi.cloud\",\n};\n","export const isNpmPackage = false;\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport {\n IVideoElementSizeInfo,\n IDetails,\n IVideoDataSlice,\n IParams,\n IMarker,\n ISubtitle,\n} from \"../../interfaces/interfaces\";\n\nexport const VideoDataSliceState: IVideoDataSlice = {\n details: {\n stream_link: \"\",\n type: \"\",\n banner: \"\",\n id: undefined,\n title: undefined,\n vtt: undefined,\n vtt_mobile: undefined,\n user_id: null,\n content_id: undefined,\n content_type: null,\n duration: 0,\n subtitles: undefined,\n },\n params: {\n type: \"\",\n id: \"\",\n bannerAlt: \"\",\n fullscreen: \"\",\n autoplay: \"\",\n banner: \"\",\n provider: \"cafevdo\",\n onFinished: undefined,\n onPlay: undefined,\n onPause: undefined,\n playStatus: undefined,\n currentTime: undefined,\n daaniHashCode: undefined,\n advertisement: undefined,\n activeSubtitle: \"fa\",\n vhl_progress: 0,\n },\n markers: [],\n videoElementSizeInfo: {\n bottom: 0,\n top: 0,\n right: 0,\n left: 0,\n width: 0,\n height: 0,\n },\n isFetchDetails: false,\n isValidAddress: false,\n videoTimelines: [],\n isReady: false,\n rawSubtitles: undefined,\n subtitles: [],\n selectedSubtitle: undefined,\n subtitleText: undefined,\n multiAudio: [],\n selectedAudioId: 0,\n hiddenAd: false,\n};\n\nexport const videoDataSlice = createSlice({\n name: \"videoData\",\n initialState: VideoDataSliceState,\n reducers: {\n setInfo: (state, action: PayloadAction<IDetails>) => {\n state.details = action.payload;\n },\n setPlayerParams: (state, action: PayloadAction<IParams>) => {\n state.params = action.payload;\n },\n setMarkers: (state, action: PayloadAction<IMarker[]>) => {\n state.markers = action.payload;\n },\n setVideoElementSizeInfo: (\n state,\n action: PayloadAction<IVideoElementSizeInfo>\n ) => {\n state.videoElementSizeInfo = action.payload;\n },\n setIsFetchDetails: (state, action: PayloadAction<boolean>) => {\n state.isFetchDetails = action.payload;\n },\n setIsValidAddress: (state, action: PayloadAction<boolean>) => {\n state.isValidAddress = action.payload;\n },\n setVideoTimelines: (state, action: PayloadAction<number[]>) => {\n state.videoTimelines = action.payload;\n },\n setIsReady: (state, action: PayloadAction<boolean>) => {\n state.isReady = action.payload;\n },\n setRawSubtitles: (\n state,\n action: PayloadAction<ISubtitle[] | null | undefined>\n ) => {\n state.rawSubtitles = action.payload;\n },\n setSubtitles: (state, action: PayloadAction<TextTrack[]>) => {\n state.subtitles = action.payload;\n },\n setSelectedSubtitle: (state, action: PayloadAction<any>) => {\n state.selectedSubtitle = action.payload;\n },\n setSubtitleText: (state, action: PayloadAction<string>) => {\n state.subtitleText = action.payload;\n },\n setMultiAudio: (state, action: PayloadAction<any>) => {\n state.multiAudio = JSON.parse(JSON.stringify(action.payload));\n },\n setSelectedAudioId: (state, action: PayloadAction<number>) => {\n state.selectedAudioId = action.payload;\n },\n setHiddenAd: (state, action: PayloadAction<boolean>) => {\n state.hiddenAd = action.payload;\n },\n setClearVideoDataSlice: (state) => {\n return (state = VideoDataSliceState);\n },\n },\n});\n\nexport const {\n setInfo,\n setPlayerParams,\n setVideoElementSizeInfo,\n setMarkers,\n setIsFetchDetails,\n setIsValidAddress,\n setVideoTimelines,\n setIsReady,\n setRawSubtitles,\n setSubtitles,\n setSubtitleText,\n setSelectedSubtitle,\n setMultiAudio,\n setSelectedAudioId,\n setHiddenAd,\n setClearVideoDataSlice,\n} = videoDataSlice.actions;\nexport default videoDataSlice.reducer;\n","export const enum zIndex {\n vttDisable = -2,\n videoPlayer,\n videoOpacity,\n backwardForwardInActive,\n mainIcons,\n footer,\n vtt,\n markers,\n videoPlayerInFullScreen = 1000,\n popoverBlurBackground,\n backwardForwardActive,\n miniPlayer,\n popoverContent,\n maxPopover,\n videoPlayerInPictureInPicture,\n}\n\nexport const enum SettingSections {\n main = \"main\",\n qualityLevels = \"qualityLevels\",\n speed = \"speed\",\n subtitles = \"subtitles\",\n multiAudio = \"multiAudio\",\n}\n\nexport const enum PlayerTypes {\n static = \"static\",\n vod = \"vod\",\n}\n\nexport const enum ConditionName {\n showHeader = \"showHeader\",\n showMain = \"showMain\",\n showFooter = \"showFooter\",\n showTouchVolumeBrightness = \"showTouchVolumeBrightness\",\n showBackwardForward = \"showBackwardForward\",\n showTitle = \"showTitle\",\n showSettingPopover = \"showSettingPopover\",\n showSpeedPopover = \"showSpeedPopover\",\n showQualityLevelsPopover = \"showQualityLevelsPopover\",\n showSettingIcon = \"showSettingIcon\",\n showBanner = \"showBanner\",\n showProgressbar = \"showProgressbar\",\n showPictureInPicture = \"showPictureInPicture\",\n showSubtitle = \"showSubtitle\",\n showMarkerListPopover = \"showMarkerListPopover\",\n hidePopovers = \"hidePopovers\",\n isLandscape = \"isLandscape\",\n isTouchScreen = \"isTouchScreen\",\n isTouchScreenPortrait = \"isTouchScreenPortrait\",\n isTouchScreenLandscape = \"isTouchScreenLandscape\",\n isActiveElements = \"isActiveElements\",\n isPlay = \"isPlay\",\n isPlayMiniPlayer = \"isPlayMiniPlayer\",\n isFirstPlay = \"isFirstPlay\",\n isFirstMutePlay = \"isFirstMutePlay\",\n isLock = \"isLock\",\n isIOS = \"isIOS\",\n isLoading = \"isLoading\",\n isStaticFormat = \"isStaticFormat\",\n isEnded = \"isEnded\",\n isAutoPlay = \"isAutoPlay\",\n isFullScreen = \"isFullScreen\",\n isValidAddress = \"isValidAddress\",\n isFetchDetails = \"isFetchDetails\",\n isAutoQuality = \"isAutoQuality\",\n isPressKeySpace = \"isPressKeySpace\",\n isPressKeyI = \"isPressKeyI\",\n isPressKeyF = \"isPressKeyF\",\n isPressKeyS = \"isPressKeyS\",\n isPressKeyArrowRight = \"isPressKeyArrowRight\",\n isPressKeyArrowLeft = \"isPressKeyArrowLeft\",\n isPressKeyM = \"isPressKeyM\",\n isPressKeyC = \"isPressKeyC\",\n isSendTimelineLog = \"isSendTimelineLog\",\n isReady = \"isReady\",\n isSelectedSubtitle = \"isSelectedSubtitle\",\n isMiniPlayerAndMainPlayerSame = \"isMiniPlayerAndMainPlayerSame\",\n isVideoHighLighter = \"isVideoHighLighter\",\n hasTitle = \"hasTitle\",\n hasBanner = \"hasBanner\",\n streamLink = \"streamLink\",\n hasManualQuality = \"hasManualQuality\",\n hasSound = \"hasSound\",\n hasAutoPlay = \"hasAutoPlay\",\n hasFullScreenParams = \"hasFullScreenParams\",\n hasOnFinishedParams = \"hasOnFinishedParams\",\n hasSubtitles = \"hasSubtitles\",\n hasMultipleSubtitles = \"hasMultipleSubtitles\",\n hasSubtitlesInDetails = \"hasSubtitlesInDetails\",\n hasActiveCue = \"hasActiveCue\",\n hasOnPlayParams = \"hasOnPlayParams\",\n hasOnPauseParams = \"hasOnPauseParams\",\n hasMiniPlayer = \"hasMiniPlayer\",\n hasCurrentTimeParams = \"hasCurrentTimeParams\",\n hasMarkers = \"hasMarkers\",\n hasSubtitlesInParams = \"hasSubtitlesInParams\",\n hasOnChangeCurrentTime = \"hasOnChangeCurrentTime\",\n hasMultiAudio = \"hasMultiAudio\",\n hasAdvertisement = \"hasAdvertisement\",\n hasActiveSubtitleInParams = \"hasActiveSubtitleInParams\",\n hasRawSubtitles = \"hasRawSubtitles\",\n skeletonStatusInVhl = \"skeletonStatusInVhl\",\n getDetails = \"getDetails\",\n getMarkers = \"getMarkers\",\n canPlayVideo = \"canPlayVideo\",\n setSubtitleFirstPlay = \"setSubtitleFirstPlay\",\n showSoundVolumeAlert = \"showSoundVolumeAlert\",\n}\n","import { isIOS, isTouchScreen, isTouchScreenLandscape, isTouchScreenPortrait } from \"../helpers\";\nimport { ConditionName, PlayerTypes } from \"../interfaces/enums\";\nimport store from \"../redux/store\";\n\nexport const conditions = (type: string) => {\n const { params, details, isValidAddress, isFetchDetails, isReady, rawSubtitles, subtitles, selectedSubtitle, markers, multiAudio, hiddenAd } =\n store.getState().videoData;\n const { firstPlay, lock, canPlayVideo, manualQuality, activeElements, isLoading, isEnded, isAutoPlay, play, isFullScreen, firstMute } =\n store.getState().controller;\n const { settingPopover, speedPopover, qualityLevelsPopover, markersListPopover } = store.getState().popovers;\n const { settings } = store.getState().user;\n const miniPlayer = store.getState().miniPlayer;\n\n switch (type) {\n case ConditionName.showHeader:\n return canPlayVideo;\n case ConditionName.showMain:\n return !lock || firstPlay;\n case ConditionName.showFooter:\n return isTouchScreen() ? canPlayVideo && !firstPlay : canPlayVideo;\n case ConditionName.showTouchVolumeBrightness:\n return !firstPlay && isTouchScreenLandscape() && !lock && !isEnded;\n case ConditionName.showBackwardForward:\n return !firstPlay && !lock;\n case ConditionName.showTitle:\n return params.type !== \"static\" && isFullScreen && !lock;\n case ConditionName.showSettingPopover:\n return settingPopover;\n case ConditionName.showSpeedPopover:\n return speedPopover;\n case ConditionName.showQualityLevelsPopover:\n return qualityLevelsPopover;\n case ConditionName.showSettingIcon:\n return !isIOS();\n case ConditionName.showBanner:\n return firstPlay && (details.banner || params.banner);\n case ConditionName.showProgressbar:\n return true;\n case ConditionName.showPictureInPicture:\n return !isIOS() && !isTouchScreen();\n case ConditionName.showSubtitle:\n return !!selectedSubtitle;\n case ConditionName.showMarkerListPopover:\n return markersListPopover;\n case ConditionName.hidePopovers:\n return !settingPopover;\n case ConditionName.isLandscape:\n return window.innerHeight <= window.innerWidth;\n case ConditionName.isTouchScreen:\n return isTouchScreen();\n case ConditionName.isTouchScreenPortrait:\n return isTouchScreenPortrait();\n case ConditionName.isTouchScreenLandscape:\n return isTouchScreenLandscape();\n case ConditionName.isActiveElements:\n return activeElements;\n case ConditionName.isPlay:\n return play;\n case ConditionName.isPlayMiniPlayer:\n return miniPlayer.play;\n case ConditionName.isFirstPlay:\n return firstPlay;\n case ConditionName.isLock:\n return lock;\n case ConditionName.isFirstMutePlay:\n return firstMute;\n case ConditionName.isIOS:\n return isIOS();\n case ConditionName.isLoading:\n return isLoading;\n case ConditionName.isStaticFormat:\n return params.type === PlayerTypes.static;\n case ConditionName.isEnded:\n return isEnded;\n case ConditionName.isAutoPlay:\n return isAutoPlay;\n case ConditionName.isFullScreen:\n return isFullScreen;\n case ConditionName.isValidAddress:\n return params.id ? isValidAddress : !!params.stream_link;\n case ConditionName.isFetchDetails:\n return params.id ? isFetchDetails : !!params.stream_link;\n case ConditionName.isAutoQuality:\n return settings.quality === -1;\n case ConditionName.isPressKeySpace:\n return !lock;\n case ConditionName.isPressKeyI:\n return !lock && !firstPlay;\n case ConditionName.isPressKeyF:\n return (!lock && !firstPlay) || !!params.vhl_status;\n case ConditionName.isPressKeyS:\n return !lock && !firstPlay;\n case ConditionName.isPressKeyArrowRight:\n return !firstPlay && !lock;\n case ConditionName.isPressKeyArrowLeft:\n return !firstPlay && !lock;\n case ConditionName.isPressKeyM:\n return !firstPlay && !lock;\n case ConditionName.isPressKeyC:\n return !lock && !firstPlay && !!subtitles && subtitles.length > 0;\n case ConditionName.isSendTimelineLog:\n return params.type !== \"static\";\n case ConditionName.isReady:\n return isReady;\n case ConditionName.isSelectedSubtitle:\n return !!subtitles && subtitles.length > 0 && selectedSubtitle;\n case ConditionName.isMiniPlayerAndMainPlayerSame:\n return params.id === miniPlayer.params.id;\n case ConditionName.isVideoHighLighter:\n return !!params.vhl_status;\n case ConditionName.hasTitle:\n return details.title;\n case ConditionName.hasBanner:\n return details.banner;\n case ConditionName.streamLink:\n return details.stream_link || params.stream_link;\n case ConditionName.hasManualQuality:\n return manualQuality !== undefined && manualQuality !== null;\n case ConditionName.hasSound:\n return !!settings.volume;\n case ConditionName.hasAutoPlay:\n return params.autoplay === \"true\";\n case ConditionName.hasFullScreenParams:\n return params.fullscreen === \"true\";\n case ConditionName.hasOnFinishedParams:\n return !!params.onFinished;\n case ConditionName.hasSubtitles:\n return !!subtitles && subtitles.length > 0;\n case ConditionName.hasMultipleSubtitles:\n return !!subtitles && subtitles.length > 1;\n case ConditionName.hasActiveCue:\n return selectedSubtitle && selectedSubtitle.activeCues && selectedSubtitle.activeCues.length > 0;\n case ConditionName.hasOnPlayParams:\n return !!params.onPlay;\n case ConditionName.hasOnPauseParams:\n return !!params.onPause;\n case ConditionName.hasMiniPlayer:\n return miniPlayer.params.id;\n case ConditionName.hasCurrentTimeParams:\n return params.currentTime !== undefined;\n case ConditionName.hasMarkers:\n return markers.length !== 0;\n case ConditionName.hasSubtitlesInParams:\n return params.subtitles && params.subtitles.length;\n case ConditionName.hasOnChangeCurrentTime:\n return !!params.onChangeCurrentTime;\n case ConditionName.hasMultiAudio:\n return multiAudio && !!multiAudio.length;\n case ConditionName.hasAdvertisement:\n return !!params.advertisement && !!params.advertisement.videoUrl && !hiddenAd;\n case ConditionName.hasActiveSubtitleInParams:\n return !!params.activeSubtitle;\n case ConditionName.hasRawSubtitles:\n return !!rawSubtitles && !!rawSubtitles.length;\n case ConditionName.skeletonStatusInVhl:\n return params.vhl_status === \"skeleton\";\n case ConditionName.getDetails:\n return !!params.type && params.id;\n case ConditionName.getMarkers:\n return String(params.type) === \"vod\" && params.id && isFetchDetails;\n case ConditionName.canPlayVideo:\n return canPlayVideo;\n case ConditionName.showSoundVolumeAlert:\n return firstMute;\n case ConditionName.setSubtitleFirstPlay:\n return (\n ((params.type === PlayerTypes.vod && details.subtitles && details.subtitles.length > 0) ||\n (params.type === PlayerTypes.static && params.subtitles && params.subtitles.length)) &&\n !firstPlay\n );\n default:\n break;\n }\n};\n","import { conditions } from \"./conditions/conditions\";\nimport { ConditionName } from \"./interfaces/enums\";\nimport store from \"./redux/store\";\nimport { setClearVideoDataSlice } from \"./redux/slices/videoDataSlice\";\nimport { setClearControllerSlice, setFirstMute, setPlay } from \"./redux/slices/controllerSlice\";\nimport { setClearUserSlice } from \"./redux/slices/userSlice\";\nimport { setClearPopoversSlice } from \"./redux/slices/popoversSlice\";\nimport { handleChangeSoundVolume } from \"./redux/actions/controller.actions\";\nimport { ClassNameValue } from \"tailwind-merge\";\nimport { twMerge as tailwindMerge } from \"tailwind-merge\";\n\nconst PREFIX = \"pl-\";\n\nconst twMerge = (...classLists: ClassNameValue[]) => {\n const input = classLists.flat(1).filter(Boolean).join(\" \").trim();\n if (!input) return \"\";\n const classes = input?.split(/\\s+/);\n const hadPrefix = new Set(classes.filter((cls) => cls.startsWith(PREFIX)).map((cls) => cls.slice(PREFIX.length)));\n const withoutPrefix = classes.map((cls) => (cls.startsWith(PREFIX) ? cls.slice(PREFIX.length) : cls));\n const merged = tailwindMerge(withoutPrefix.join(\" \"))?.split(\" \");\n const finalClasses = merged.map((cls) => (hadPrefix.has(cls) ? PREFIX + cls : cls));\n return finalClasses.join(\" \").trim();\n};\n\nexport const tw = (classname: string, options?: { touchFullScreen?: string; touch?: string; desktopFullScreen?: string; desktop?: string }) => {\n const config = options || {};\n const isTouch = conditions(ConditionName.isTouchScreen);\n const isFullScreen = conditions(ConditionName.isFullScreen);\n\n if (isTouch) return twMerge(classname, config.touch, isFullScreen ? config.touchFullScreen : undefined);\n else return twMerge(classname, config.desktop, isFullScreen ? config.desktopFullScreen : undefined);\n};\n\nexport const styleMerge = <T extends number | string>(options: { touchFullScreen?: T; touch?: T; desktopFullScreen?: T; desktop?: T }) => {\n const isTouch = conditions(ConditionName.isTouchScreen);\n const isFullScreen = conditions(ConditionName.isFullScreen);\n\n let result: T | undefined;\n\n if (isTouch) result = isFullScreen ? (options.touchFullScreen ?? options.touch) : options.touch;\n else result = isFullScreen ? (options.desktopFullScreen ?? options.desktop) : options.desktop;\n\n return result as T;\n};\n\nexport const wait = (s: number) => new Promise((resolve) => setTimeout(resolve, s * 1000));\n\nexport const getUUID = () => {\n let uuid = localStorage.getItem(\"hamrahiUUID\");\n if (!uuid) {\n uuid = uuidGenerator();\n localStorage.setItem(\"hamrahiUUID\", uuid);\n }\n return uuid.toString();\n};\n\nexport const uuidGenerator = () => {\n let uuid = \"xxxxxxxx-xxxx-Mxxx-Nxxx-x\".replace(/[xMN]/g, (char) => {\n let val: number;\n if (char === \"M\") val = Math.floor(1 + Math.random() * 5);\n else if (char === \"N\") val = Math.floor(8 + Math.random() * 4);\n else val = Math.floor(Math.random() * 16);\n return val.toString(16);\n });\n uuid += Date.now().toString(16);\n return uuid;\n};\n\nexport const isTouchScreen = () =>\n typeof window !== \"undefined\" &&\n (\"ontouchstart\" in window || ((window as any)[\"DocumentTouch\"] && document instanceof (window as any)[\"DocumentTouch\"]));\n\nexport const isTouchScreenLandscape = () => {\n const { isFullScreen } = store.getState().controller;\n return isTouchScreen() && isFullScreen;\n};\nexport const isTouchScreenPortrait = () => {\n const { isFullScreen } = store.getState().controller;\n return isTouchScreen() && !isFullScreen;\n};\n\nexport const isIOS = () => {\n return (\n [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) ||\n // iPad on iOS 13 detection\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\n );\n};\n\nexport const addZeroBefore = (n: number) => {\n return (n < 10 ? \"0\" : \"\") + n;\n};\n\nexport const secondsToHMS = (seconds: number) => {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = Math.floor((seconds % 3600) % 60);\n return h < 1 ? `${addZeroBefore(m)}:${addZeroBefore(s)}` : `${addZeroBefore(h)}:${addZeroBefore(m)}:${addZeroBefore(s)}`;\n};\n\nexport const addUuidToSrc = (src: string) => {\n const urlObject = new URL(src);\n let urlSrc = src;\n if (urlObject.search.length) return (urlSrc += `&uuid=${getUUID()}`);\n else return (urlSrc += `?uuid=${getUUID()}`);\n};\n\nexport const checkParentTarget = (event: any, target: string) => {\n try {\n return [\n event.target.id,\n event.target.parentNode.id,\n event.target.parentNode.parentNode.id,\n event.target.parentNode.parentNode.parentNode.id,\n event.target.parentNode.parentNode.parentNode.parentNode.id,\n ].includes(target);\n } catch (error) {\n return false;\n }\n};\n\nexport const splitQueryParamsFromStreamLink = (playerType: \"mainPlayer\" | \"miniPlayer\") => {\n const { params } = store.getState().videoData;\n\n let streamLink = \"\";\n if (!params.id && params.stream_link) streamLink = params.stream_link;\n else {\n if (playerType === \"mainPlayer\") streamLink = store.getState().videoData.details.stream_link!;\n else streamLink = store.getState().miniPlayer.details.stream_link!;\n }\n\n let queryParams: string = \"\";\n if (streamLink) queryParams = streamLink?.split(\"m3u8\")[1];\n if (queryParams) queryParams = `${queryParams}&uuid=${getUUID()}`;\n else queryParams = `?uuid=${getUUID()}`;\n return queryParams;\n};\n\nexport const handleRippleCircle = (event: any, id: string) => {\n const element: any = document.getElementById(id);\n const circle = document.createElement(\"span\");\n circle.style.width = circle.style.height = `50px`;\n circle.style.left = `${event.touches[0].clientX - element.offsetLeft - 25}px`;\n circle.style.top = `${event.touches[0].clientY - element.offsetTop - 25}px`;\n circle.classList.add(\"pl-ripple\");\n const ripple = element.getElementsByClassName(\"pl-ripple\")[0];\n if (ripple) ripple.remove();\n element.appendChild(circle);\n};\n\nexport const handleRipple = (event: any, id: string, size: number = 50) => {\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\n const clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;\n const element: any = document.getElementById(id);\n const circle = document.createElement(\"span\");\n circle.style.width = circle.style.height = `${size}px`;\n circle.style.left = `${clientX - size / 2}px`;\n circle.style.top = `${clientY - element.getBoundingClientRect().top - size / 2}px`;\n circle.classList.add(\"pl-ripple\");\n const ripple = element.getElementsByClassName(\"pl-ripple\")[0];\n if (ripple) ripple.remove();\n element.appendChild(circle);\n};\n\nexport const responseValidator = (status: number): boolean => status >= 200 && status < 300;\n\nexport const clearRedux = () => {\n const dispatch = store.dispatch;\n dispatch(setClearVideoDataSlice());\n dispatch(setClearControllerSlice());\n dispatch(setClearUserSlice());\n dispatch(setClearPopoversSlice());\n};\n\nexport const weighted_random = (options: any) => {\n let i;\n\n let weights: any[] = [];\n\n for (i = 0; i < options.length; i++) weights[i] = options[i].weight + (weights[i - 1] || 0);\n\n let random = Math.random() * weights[weights.length - 1];\n\n for (i = 0; i < weights.length; i++) if (weights[i] > random) break;\n\n return options[i].domain;\n};\n\n// ***** Player Core *****\n\nexport const handlePageLoadTime = (loadingDurationRef: any) => {\n let pageLoadTime = 0;\n if (performance && performance.getEntriesByType(\"navigation\")) pageLoadTime = performance.getEntriesByType(\"navigation\")[0].duration;\n loadingDurationRef.current = pageLoadTime;\n};\n\nexport const highestResolutionSupported = (resolutions: string[], width: number, height: number) => {\n const w = width * window.devicePixelRatio;\n const h = height * window.devicePixelRatio;\n let filteredResolutions: string[] = [];\n if (conditions(ConditionName.isTouchScreenPortrait))\n filteredResolutions = resolutions.filter((resolution: string) => Number(resolution?.split(\"x\")[0].trim()) <= w);\n else\n filteredResolutions = resolutions.filter(\n (resolution: string) => Number(resolution?.split(\"x\")[0].trim()) <= h || Number(resolution?.split(\"x\")[1].trim()) <= w,\n );\n return filteredResolutions.indexOf(filteredResolutions[filteredResolutions.length - 1]);\n};\n\nexport const flattenObject = (input: any, keyName?: string) => {\n let result: any = {};\n for (const key in input) {\n const newKey = keyName ? `${keyName}_${key}` : key;\n if (typeof input[key] === \"object\" && !Array.isArray(input[key])) result = { ...result, ...flattenObject(input[key], newKey) };\n else result[newKey] = input[key];\n }\n return result;\n};\n\nexport const sortLanguages = (array: any) => {\n const priority: any = { fa: 1, en: 2 };\n\n return array.slice().sort((a: any, b: any) => {\n const prioA = priority[a.lang] || 999;\n const prioB = priority[b.lang] || 999;\n\n return prioA - prioB;\n });\n};\n\nexport const getSubtitleLabel = (subtitleLanguage: string) => {\n let label;\n switch (subtitleLanguage) {\n case \"fa\":\n label = \"فارسی\";\n break;\n case \"en\":\n label = \"انگلیسی\";\n break;\n case \"ar\":\n label = \"عربی\";\n break;\n case \"tr\":\n label = \"ترکی\";\n break;\n default:\n break;\n }\n return label;\n};\n\nexport const spliteStringPerLine = (str: string) => str?.split(/\\r?\\n|\\r|\\n/g);\n\nexport const inViewPort = (element: any) => {\n if (element) {\n const positionLeft = element.offsetLeft - element.offsetWidth / 2;\n const positionRight = window.innerWidth - (element.offsetLeft + element.offsetWidth);\n if (positionLeft >= 0 && positionRight >= 0) return \"inViewport\";\n else if (positionLeft < 0) return \"OutViewPortFromLeft\";\n else if (positionRight < 0) return \"OutViewPortFromRight\";\n }\n};\n\nexport const compare = (a: any, b: any) => {\n if (a.time < b.time) return -1;\n if (a.time > b.time) return 1;\n return 0;\n};\n\nexport const cleanVTT = (vttText: string) => {\n // Remove all timestamps and alignment/position data\n vttText = vttText.replace(/\\d{2}:\\d{2}:\\d{2}\\.\\d{3} --> \\d{2}:\\d{2}:\\d{2}\\.\\d{3}.*\\n/g, \"\");\n\n // Remove all HTML tags like <c> and </c>\n vttText = vttText.replace(/<[^>]+>/g, \"\");\n\n // Remove extra blank lines\n vttText = vttText.replace(/\\n+/g, \"\\n\");\n\n // Trim leading and trailing whitespace\n vttText = vttText.trim();\n\n return vttText;\n};\n\nexport const isDev = process.env.NODE_ENV === \"development\";\n\nexport const setupAutoplayBehavior = (video: HTMLVideoElement) => {\n const dispatch = store.dispatch;\n const { params } = store.getState().videoData;\n if (params.autoplay === \"true\" || params.advertisement) {\n const playPromise = video.play();\n\n dispatch(setPlay(true));\n handleChangeSoundVolume(100, video);\n\n if (playPromise !== undefined)\n playPromise\n .then(() => {\n handleChangeSoundVolume(100, video);\n })\n .catch(() => {\n handleChangeSoundVolume(0, video);\n dispatch(setFirstMute(true));\n if (ConditionName.isIOS) video.play();\n });\n }\n};\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\nimport miniPlayerReducer from \"./slices/miniPlayerSlice\";\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 miniPlayer: miniPlayerReducer,\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\";\nimport { IPopoversSlice } from \"../../interfaces/interfaces\";\n\nconst PopOversSliceState: IPopoversSlice = {\n settingPopover: false,\n speedPopover: false,\n qualityLevelsPopover: false,\n markersListPopover: false,\n multiAudioPopover: false,\n};\nexport const popoversSlice = createSlice({\n name: \"popover\",\n initialState: PopOversSliceState,\n reducers: {\n setSettingPopover: (state, action: PayloadAction<boolean>) => {\n state.settingPopover = action.payload;\n },\n setSpeedPopover: (state, action: PayloadAction<boolean>) => {\n state.speedPopover = action.payload;\n },\n setQualityLevelsPopover: (state, action: PayloadAction<boolean>) => {\n state.qualityLevelsPopover = action.payload;\n },\n setMarkersListPopover: (state, action: PayloadAction<boolean>) => {\n state.markersListPopover = action.payload;\n },\n setMultiAudioPopover: (state, action: PayloadAction<boolean>) => {\n state.multiAudioPopover = action.payload;\n },\n setClearPopoversSlice: (state) => {\n state.settingPopover = false;\n state.speedPopover = false;\n state.qualityLevelsPopover = false;\n state.markersListPopover = false;\n state.multiAudioPopover = false;\n },\n },\n});\n\nexport const { setSettingPopover, setSpeedPopover, setQualityLevelsPopover, setMarkersListPopover, setMultiAudioPopover, setClearPopoversSlice } = popoversSlice.actions;\n\nexport default popoversSlice.reducer;\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { IUserSettings, IUserSlice, IVideoSettings } from \"../../interfaces/interfaces\";\nimport { isDev } from \"../../helpers\";\n\nconst UserSliceState: IUserSlice = {\n settings: { quality: isDev ? 0 : -1, brightness: 100, volume: 100, speed: 1 },\n videoSettings: { time: 0 },\n};\n\nexport const userSlice = createSlice({\n name: \"user\",\n initialState: UserSliceState,\n reducers: {\n setUserSettings: (state, action: PayloadAction<IUserSettings>) => {\n state.settings = action.payload;\n },\n setVideoSettings: (state, action: PayloadAction<IVideoSettings>) => {\n state.videoSettings = action.payload;\n },\n setClearUserSlice: () => {\n return UserSliceState;\n },\n },\n});\n\nexport const { setUserSettings, setVideoSettings, setClearUserSlice } = userSlice.actions;\n\nexport default userSlice.reducer;\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport {\n IDetails,\n IMiniPlayerParams,\n IMiniPlayerSlice,\n} from \"../../interfaces/interfaces\";\nimport { PlayerTypes } from \"../../interfaces/enums\";\n\nconst MiniPlayerSliceState: IMiniPlayerSlice = {\n params: {\n id: \"0\",\n type: \"\",\n currentTime: 0,\n autoPlay: false,\n onClose: () => {},\n },\n details: {},\n play: false,\n};\n\nexport const userSlice = createSlice({\n name: \"user\",\n initialState: MiniPlayerSliceState,\n reducers: {\n setMiniPlayerInfo: (state, action: PayloadAction<IMiniPlayerParams>) => {\n state.params = {\n ...action.payload,\n id:\n action.payload.type === PlayerTypes.static\n ? window.atob(action.payload.id)\n : action.payload.id,\n banner: action.payload.banner ? action.payload.banner : undefined,\n };\n },\n setDetailsMiniPlayer: (state, action: PayloadAction<IDetails>) => {\n state.details = action.payload;\n },\n setPlayMiniPlayer: (state, action: PayloadAction<boolean>) => {\n state.play = action.payload;\n },\n setClearMiniPlayerSlice: (state) => {\n return (state = MiniPlayerSliceState);\n },\n },\n});\n\nexport const {\n setMiniPlayerInfo,\n setDetailsMiniPlayer,\n setPlayMiniPlayer,\n setClearMiniPlayerSlice,\n} = userSlice.actions;\n\nexport default userSlice.reducer;\n","import { setFirstMute, setIsFullScreen, setLock, setPlay } from \"../slices/controllerSlice\";\nimport store from \"../store\";\nimport { setVideoElementSizeInfo, setVideoTimelines } from \"../slices/videoDataSlice\";\nimport { ConditionName } from \"../../interfaces/enums\";\nimport { apiCaller } from \"../../services/apiCaller\";\nimport { API } from \"../../services/services\";\nimport { setUserSettings } from \"../slices/userSlice\";\nimport { setClearPopoversSlice } from \"../slices/popoversSlice\";\nimport { conditions } from \"../../conditions/conditions\";\nimport { backwardForwardLog, fullscreenLog, lockLog, videoTimelineLog } from \"../../logs/logs\";\nimport { sendFluentLog } from \"../../logs/fluentdLogger\";\nimport { mainPlayerVideoTag, miniPlayerVideoTag } from \"../../constants\";\nimport { setPlayMiniPlayer } from \"../slices/miniPlayerSlice\";\n\nexport const handlePlayPause = (event: any) => {\n if (event === null || event.target.nodeName !== \"INPUT\") {\n const dispatch = store.dispatch;\n if (event !== null) {\n event.stopPropagation();\n event.preventDefault();\n }\n mainPlayerVideoTag()?.paused ? mainPlayerVideoTag().play() : mainPlayerVideoTag()?.pause();\n dispatch(setPlay(!mainPlayerVideoTag()?.paused));\n if (miniPlayerVideoTag() && miniPlayerVideoTag().played) {\n miniPlayerVideoTag()?.pause();\n dispatch(setPlayMiniPlayer(false));\n }\n }\n};\n\nexport const handlePlayerPauseMiniPlayer = (event: any) => {\n if (event === null || event.target.nodeName !== \"INPUT\") {\n const dispatch = store.dispatch;\n miniPlayerVideoTag().paused ? miniPlayerVideoTag().play() : miniPlayerVideoTag()?.pause();\n dispatch(setPlayMiniPlayer(!miniPlayerVideoTag().paused));\n if (mainPlayerVideoTag() && mainPlayerVideoTag().played) {\n mainPlayerVideoTag()?.pause();\n dispatch(setPlay(false));\n }\n }\n};\n\nexport const firstUnMuteHandler = () => {\n const dispatch = store.dispatch;\n dispatch(setFirstMute(false));\n if (conditions(ConditionName.isIOS)) mainPlayerVideoTag().currentTime = mainPlayerVideoTag().currentTime - 0.001;\n};\n\nexport const handleChangeSoundVolume = (volume: number, videoTag?: HTMLVideoElement) => {\n const dispatch = store.dispatch;\n const { settings } = store.getState().user;\n const { firstMute } = store.getState().controller;\n\n const video = videoTag || mainPlayerVideoTag();\n\n dispatch(setUserSettings({ ...settings, volume }));\n\n if (!video) return;\n\n if (firstMute && volume) firstUnMuteHandler();\n if (conditions(ConditionName.isIOS)) video.muted = !volume;\n else video.volume = volume / 100;\n};\n\nexport const handleBackwardForward = (type: string, forwardBackwardCount: number = 15, event?: any) => {\n if (type === \"touchBackward\") type = \"backward\";\n else if (type === \"touchForward\") type = \"forward\";\n if (\n (event && event.target.nodeName === \"INPUT\") ||\n (type === \"backward\" && mainPlayerVideoTag().currentTime < 15) ||\n (type === \"forward\" && mainPlayerVideoTag().duration - mainPlayerVideoTag().currentTime < 15)\n )\n return;\n sendFluentLog(backwardForwardLog(type));\n let currentTime = 0;\n if (type === \"backward\") {\n if (forwardBackwardCount === 0) currentTime = 0;\n else currentTime = mainPlayerVideoTag().currentTime - forwardBackwardCount;\n } else if (type === \"forward\") {\n if (forwardBackwardCount === mainPlayerVideoTag().duration) currentTime = forwardBackwardCount;\n else currentTime = mainPlayerVideoTag().currentTime + forwardBackwardCount;\n }\n mainPlayerVideoTag().currentTime = currentTime;\n};\n\nexport const handleFullScreen = () => {\n const dispatch = store.dispatch;\n\n const isFullScreen = document.fullscreenElement;\n if (conditions(ConditionName.isIOS)) {\n if ((mainPlayerVideoTag() as any).webkitEnterFullScreen) {\n dispatch(setPlay(false));\n // Toggle fullscreen in Safari for iPad\n (mainPlayerVideoTag() as any).webkitEnterFullScreen();\n } else {\n dispatch(setClearPopoversSlice());\n sendFluentLog(fullscreenLog(\"fullScreen\"));\n }\n } else {\n if (isFullScreen) {\n dispatch(setIsFullScreen(false));\n document.exitFullscreen().then(() => (document.body.style.overflow = \"auto\"));\n } else {\n dispatch(setClearPopoversSlice());\n document.documentElement.requestFullscreen().then(() => (document.body.style.overflow = \"hidden\"));\n dispatch(setIsFullScreen(true));\n sendFluentLog(fullscreenLog(\"fullScreen\"));\n }\n }\n};\n\nexport const handleLockOrientation = () => {\n if (conditions(ConditionName.isTouchScreen) && !conditions(ConditionName.isIOS)) {\n if (conditions(ConditionName.isLandscape) && !conditions(ConditionName.isFullScreen)) (window.screen.orientation as any).lock(\"portrait\");\n else (window.screen.orientation as any).lock(\"landscape\");\n }\n};\n\nexport const handleLock = (type: string) => {\n const dispatch = store.dispatch;\n dispatch(setLock(type === \"lock\"));\n sendFluentLog(lockLog(type));\n if (type === \"unlock\") localStorage.setItem(\"unlock-click\", \"true\");\n};\n\nexport const handleVideoTimeline = (currentTimeValue: number, movedTimeValue?: number) => {\n if (conditions(ConditionName.isSendTimelineLog)) {\n const dispatch = store.dispatch;\n const { videoTimelines } = store.getState().videoData;\n let currentTime = Math.floor(currentTimeValue);\n let movedTime = Math.floor(movedTimeValue!);\n if (videoTimelines.length === 0) {\n dispatch(setVideoTimelines([currentTime >= mainPlayerVideoTag()?.duration ? movedTime! : currentTime]));\n } else {\n if (videoTimelines[0] < currentTime)\n apiCaller({\n url: API().videoTimelineLog,\n method: \"post\",\n data: videoTimelineLog(videoTimelines[0], currentTime),\n });\n if (movedTime && movedTime >= mainPlayerVideoTag()?.duration) dispatch(setVideoTimelines([]));\n else dispatch(setVideoTimelines([movedTime!]));\n }\n }\n};\n\nexport const handleVideoElementSizeInfo = () => {\n const dispatch = store.dispatch;\n const element: any = document.getElementById(\"video-area\")?.getBoundingClientRect();\n element.height = (element.width * 9) / 16;\n if (element) dispatch(setVideoElementSizeInfo(element));\n};\n\nexport const handleDoubleClick = (event: any) => {\n if (!conditions(ConditionName.isTouchScreen) && event.target.nodeName !== \"INPUT\") handleFullScreen();\n};\n","import axios, { AxiosError } from \"axios\";\nimport { IApiCaller, IAxiosConfig, IRetryPolicy } from \"../interfaces/interfaces\";\nimport store from \"../redux/store\";\nimport { wait } from \"../helpers\";\nimport { errorLogProvider } from \"../errorBoundary/errorBoundaryFunctions\";\n\nexport const apiCaller: any = async ({\n url,\n method = \"GET\",\n data,\n headers,\n retryCount = 1,\n maxRetryCount = 0,\n errorMessage,\n retryPolicy,\n errorCallback,\n timeoutCount,\n}: IApiCaller) => {\n let axiosConfig: IAxiosConfig = {\n url: url,\n method: method,\n headers: {\n ...headers,\n \"Content-Type\": \"application/json\",\n },\n timeout: timeoutCount ? timeoutCount * 1000 : undefined,\n };\n if (data) {\n if (method === \"GET\")\n axiosConfig = {\n ...axiosConfig,\n params: {\n uuid: store.getState().videoData.params.uuid,\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\n ...data,\n },\n };\n else\n axiosConfig = {\n ...axiosConfig,\n data: {\n uuid: store.getState().videoData.params.uuid,\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\n ...data,\n },\n };\n } else {\n if (method === \"GET\")\n axiosConfig = {\n ...axiosConfig,\n params: {\n uuid: store.getState().videoData.params.uuid,\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\n },\n };\n else\n axiosConfig = {\n ...axiosConfig,\n data: {\n uuid: store.getState().videoData.params.uuid,\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\n },\n };\n }\n try {\n return await axios(axiosConfig);\n } catch (error: any) {\n if (error instanceof AxiosError && error.code !== \"ERR_NETWORK\") {\n errorLogProvider({\n type: \"API-ERROR\",\n message: error.message ? error.message : \"\",\n statusCode: error.response && error.response.status ? error.response.status : undefined,\n url,\n });\n }\n\n if (error && error.response && error.response.status === 401) {\n //\n } else {\n if (errorCallback) errorCallback(error.response.status, error.response.message);\n let newRetryDelay = 0,\n newMaxRetryCount = 0;\n if (retryPolicy !== undefined) {\n for (let i = 0; i < retryPolicy.length; i++) {\n if (\n (((retryPolicy[i].codeAbove && error.response.status >= retryPolicy[i].codeAbove!) ||\n (retryPolicy[i].codeBelow && error.response.status <= retryPolicy[i].codeBelow!)) &&\n (retryPolicy[i].excludeCodes.length === 0 || !retryPolicy[i].excludeCodes.includes(error.response.status))) ||\n retryPolicy[i].includeCodes.length === 0 ||\n retryPolicy[i].includeCodes.includes(error.response.status)\n ) {\n newMaxRetryCount = retryPolicy[i].count;\n newRetryDelay = retryPolicy[i].delay;\n break;\n }\n }\n } else {\n newMaxRetryCount = maxRetryCount;\n newRetryDelay = retryCount + 1;\n }\n if (retryCount < newMaxRetryCount) {\n await wait(newRetryDelay);\n return apiCaller({\n url,\n method,\n data,\n headers,\n retryCount: retryCount + 1,\n newMaxRetryCount,\n errorMessage,\n retryPolicy,\n errorCallback,\n });\n } else if (error.response)\n return {\n data: error.response.data ? error.response.data : { detail: \"عملیات با خطا مواجه شده است.\" },\n status: error.response.status,\n };\n }\n }\n};\n\nexport function getAll(path: string, retryPolicy?: IRetryPolicy[], params?: any, retryCount: number = 1, maxRetryCount: number = 0) {\n return new Promise(async (resolve, reject) => {\n // Added reject to the Promise executor function.\n try {\n const url = new URL(path);\n const limit = 1000;\n if (params) {\n Object.keys(params).forEach((key) => {\n if (params[key]) {\n url.searchParams.set(key, params[key]);\n }\n });\n }\n url.searchParams.set(\"limit\", limit.toString());\n const response = await fetch(url.href);\n if (!response.ok) {\n // Check if the response was not ok (status not in the range 200-299).\n throw response;\n }\n const data = await response.json();\n const count = data.count;\n const requestCount = Math.ceil(count / limit) - 1;\n const promises: Array<Promise<any>> = [];\n for (let i = 0; i < requestCount; i++) {\n const offset = i * limit; // Fixed the offset calculation.\n url.searchParams.set(\"offset\", offset.toString());\n const promise: Promise<any> = fetch(url.href).then((res) => {\n if (res.ok) {\n return res.json();\n }\n return res.json().then((err) => Promise.reject(err));\n });\n promises.push(promise);\n }\n Promise.all(promises)\n .then((res) => {\n const results = res.flatMap((item) => item.results);\n resolve([...data.results, ...results]);\n })\n .catch(reject); // Added catch to handle any errors in the Promise.all.\n } catch (error: any) {\n let newRetryDelay = 0,\n newMaxRetryCount = 0;\n if (retryPolicy !== undefined) {\n for (let i = 0; i < retryPolicy.length; i++) {\n if (\n ((retryPolicy[i].codeAbove && error.status >= retryPolicy[i].codeAbove!) ||\n (retryPolicy[i].codeBelow && error.status <= retryPolicy[i].codeBelow!)) &&\n (retryPolicy[i].excludeCodes.length === 0 || !retryPolicy[i].excludeCodes.includes(error.status)) &&\n (retryPolicy[i].includeCodes.length === 0 || retryPolicy[i].includeCodes.includes(error.status))\n ) {\n newMaxRetryCount = retryPolicy[i].count;\n newRetryDelay = retryPolicy[i].delay;\n break;\n }\n }\n if (retryCount < newMaxRetryCount) {\n await wait(newRetryDelay);\n getAll(path, retryPolicy, params, retryCount + 1, newMaxRetryCount);\n }\n }\n }\n });\n}\n","import { sendFluentLog } from \"../logs/fluentdLogger\";\nimport { ExceptionsLog } from \"../logs/logs\";\n\nexport const errorLogProvider = (data?: {type:string, message:string, statusCode?:number, url?:string}) => {\n if(data) sendFluentLog(ExceptionsLog(data.type, data.message, data.statusCode, data.url));\n}\n","import store from \"../redux/store\";\nimport { apiCaller } from \"../services/apiCaller\";\nimport { API } from \"../services/services\";\nimport { getUUID } from \"../helpers\";\n\nexport const sendFluentLog = (data: any) => {\n const { details, params } = store.getState().videoData;\n let _data = {\n ...data,\n timestamp: Date.now(),\n clientUUID: getUUID(),\n uuid: getUUID(),\n link: window.location.href,\n user_id: details.user_id,\n live_id: null,\n format: undefined,\n content_type: details.content_type,\n content_id: details.content_id,\n daaniHashCode: params.daaniHashCode,\n };\n apiCaller({ url: API().logs, method: \"post\", data: _data });\n};\n","import {\n getFluentdUrl,\n getRestApiLiveUrl,\n} from \"./baseUrl\";\n\nexport const API = () => {\n return {\n vod: {\n getVodUrl: `${getRestApiLiveUrl()}/v1/live/details/vod/`,\n getMarkerUrl: (videoId:number) => `${getRestApiLiveUrl()}/v1/live/list-event/vod/${videoId}/`\n },\n videoTimelineLog: `${getFluentdUrl()}/video-timeline.log`,\n logs: `${getFluentdUrl()}/cafevideo-endpoint.log`,\n };\n};","const envs = require(\"../configs/nextConfigs/next.config.js\");\nconst isNpmPackage = require(\"../configs/npmPackage/npmPackage\");\n\nexport const getRestApiLiveUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string)) + \"/live/api\";\nexport const getFluentdUrl = () => (isNpmPackage ? envs.fluentdUrl : (process.env.fluentdUrl as string));\nexport const getEmojiUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string)) + \"/emoji\";\n\n","import { conditions } from \"../conditions/conditions\";\nimport { mainPlayerVideoTag } from \"../constants\";\nimport { flattenObject, getUUID } from \"../helpers\";\nimport { ConditionName } from \"../interfaces/enums\";\nimport store from \"../redux/store\";\n\nexport const speedChangeLog = (selectedSpeed: Number) => {\n const { params, details } = store.getState().videoData;\n const { settings } = store.getState().user;\n return {\n category: \"speedChange\",\n previousSelectedSpeed: settings.speed,\n selectedSpeed: selectedSpeed,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const qualityChangeRequestLog = (selectedQuality: String) => {\n const { params, details } = store.getState().videoData;\n const { qualityLevels, manualQuality, autoQuality } = store.getState().controller;\n return {\n category: \"qualityChangeRequest\",\n currentPlayingQuality: `${qualityLevels[conditions(ConditionName.isAutoQuality) ? (autoQuality ?? manualQuality!) : manualQuality!]}P`,\n previousSelectedQuality: conditions(ConditionName.isAutoQuality) ? \"auto\" : `${qualityLevels[manualQuality!]}P`,\n selectedQuality: selectedQuality,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const catchUpLoadingLog = (duration: number) => {\n const { params, details } = store.getState().videoData;\n const { qualityLevels, autoQuality } = store.getState().controller;\n const { settings } = store.getState().user;\n\n return {\n category: \"catchUpLoading\",\n previousVideoTime: Number(sessionStorage.getItem(\"previousVideoTime\")),\n currentVideoTime: mainPlayerVideoTag().currentTime,\n duration: duration,\n quality: `${conditions(ConditionName.isAutoQuality) ? qualityLevels[autoQuality!] : qualityLevels[settings.quality]}P`,\n isAutoQuality: conditions(ConditionName.isAutoQuality),\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const backwardForwardLog = (type: string) => {\n const { params, details } = store.getState().videoData;\n return {\n category: type === \"backward\" ? \"backward\" : \"forward\",\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const fullscreenLog = (category: string) => {\n const { params, details } = store.getState().videoData;\n return {\n category: category,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const brightnessLog = (source: number, target: number) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"brightnessChange\",\n source: source,\n target: target,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const volumeLog = (source: number, target: number) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"volumeChange\",\n source: source,\n target: target,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const lockLog = (category: string) => {\n const { params, details } = store.getState().videoData;\n return {\n category: category,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const ExceptionsLog = (type: string, message: string, statusCode?: number, url?: string) => {\n return {\n category: \"player-error\",\n type,\n message,\n statusCode,\n url,\n };\n};\n\nexport const videoTimelineLog = (start: number, end: number) => {\n const { params, details } = store.getState().videoData;\n const { duration } = store.getState().controller;\n return {\n category: \"video-timeline\",\n video_id: +params.id!,\n video_type: params.type,\n start: start,\n end: end,\n watchedDuration: end - start,\n video_duration: Math.floor(duration),\n clientUUID: getUUID(),\n user_id: details.user_id,\n content_type: details.content_type,\n content_id: details.content_id,\n };\n};\n\nexport const autoQualityChangeLog = (sourceQuality: String, targetQuality: String, diffQuality: number) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"autoQualityChange\",\n sourceQuality: sourceQuality,\n targetQuality: targetQuality,\n diffQuality: diffQuality,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const pingpongLog = (startTimer: number, qualityHistory: number[]) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"pingpong\",\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n PingPongDuration: Number((new Date().getTime() - startTimer).toFixed(2)),\n PingPongSourceQuality: `${qualityHistory[0]}P`, // A A->B && B->A\n PingPongTargetQuality: `${qualityHistory[1]}P`, // B,\n provider: params.provider,\n };\n};\n\nexport const pausePlayLog = (isPlay: boolean) => {\n const { params, details } = store.getState().videoData;\n return {\n category: isPlay ? \"playVideo\" : \"pauseVideo\",\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const initLog = (loadingTime: number, waitingTime: number, bannerLoadingTime: number, firstChunkPlayingTime: number, timerRef: any) => {\n const { params, details } = store.getState().videoData;\n const totalTime = Date.now() - timerRef.current + loadingTime + waitingTime;\n const memory = (window.performance as any).memory;\n const timing = JSON.parse(JSON.stringify((window.performance as any).timing));\n return {\n category: \"initLog\",\n id: Number(params.id),\n type: params.type,\n origin: new URL(conditions(ConditionName.streamLink) || params.id!).origin,\n src: conditions(ConditionName.streamLink) || params.id,\n loading: loadingTime,\n bannerLoading: !conditions(ConditionName.hasBanner) || bannerLoadingTime < 0 ? 0 : bannerLoadingTime,\n waiting: waitingTime,\n firstChunkPlaying: firstChunkPlayingTime < 0 ? 0 : firstChunkPlayingTime,\n totalTime: totalTime,\n provider: params.provider,\n performance: flattenObject({ memory, timing }, \"performance\"),\n userAgent: window.navigator.userAgent,\n };\n};\n\nexport const loadingLog = (waitingDuration: number, qualityLevel: number, timerRef: any, loadingCounterRef: any, videoEntranceTime: number) => {\n const { params, details } = store.getState().videoData;\n const { settings } = store.getState().user;\n const previousLoaderDiff = Date.now() - timerRef.current;\n return {\n category: \"loading\",\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n duration: waitingDuration,\n quality: `${qualityLevel}P`,\n isAutoQuality: conditions(ConditionName.isAutoQuality),\n previousLoaderDiff: previousLoaderDiff,\n counter: loadingCounterRef.current,\n loadingPercentile: Number((waitingDuration / previousLoaderDiff).toFixed(2)),\n videoTime: mainPlayerVideoTag().currentTime,\n videoEntranceTime: videoEntranceTime,\n speed: settings.speed,\n provider: params.provider,\n };\n};\n\nexport const subtitleLog = (language: string) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"subtitle\",\n language: language,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const eventMarkerClickLog = (markerId: Number, markerTime: Number, markerTitle: String, markerDescription: String, markerSticker: String) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"eventMarkerClick\",\n video_id: Number(params.id),\n markerId: markerId,\n markerTime: markerTime,\n markerTitle: markerTitle,\n markerDescription: markerDescription,\n markerSticker: markerSticker,\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n","import store from \"./redux/store\";\n\nexport const mainPlayerVideoTag = () => document.getElementById(\"player-tag\") as HTMLVideoElement;\nexport const miniPlayerVideoTag = () => document.getElementById(\"mini-player-video-tag\") as HTMLVideoElement;\n\nexport const playerControllbar = () => document.getElementById(\"player-controllbar\") as any;\n\nexport const progressBar = () => document.getElementById(\"time-progress-bar\") as any;\nexport const progressArea = () => document.getElementById(\"progress-area\") as any;\nexport const progressContainer = () => document.getElementById(\"time-progress-container\") as any;\n\nexport const progressBarWidth = () => store.getState().videoData.videoElementSizeInfo.width;\n\nexport const progressTrack = () => document.getElementById(\"time-progress-area\") as any;\n"]}
|