cafe-video-player 1.3.18 → 1.3.19

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.
Files changed (113) hide show
  1. package/backwardForward-COUYHC25.js +2 -0
  2. package/backwardForward-K4HAWR3A.mjs +2 -0
  3. package/chunk-2DTS26XF.js +2 -0
  4. package/chunk-2DTS26XF.js.map +1 -0
  5. package/chunk-2RGKXVLI.mjs +2 -0
  6. package/chunk-2RGKXVLI.mjs.map +1 -0
  7. package/chunk-3RAQIOFP.js +2 -0
  8. package/chunk-3RAQIOFP.js.map +1 -0
  9. package/chunk-4RAQGYLK.mjs +2 -0
  10. package/{chunk-GPHIYXK4.mjs.map → chunk-4RAQGYLK.mjs.map} +1 -1
  11. package/chunk-CAZWSRCD.js +2 -0
  12. package/chunk-CAZWSRCD.js.map +1 -0
  13. package/chunk-CXOW3JBV.mjs +2 -0
  14. package/chunk-CXOW3JBV.mjs.map +1 -0
  15. package/chunk-D7QMTCXI.js +2 -0
  16. package/chunk-D7QMTCXI.js.map +1 -0
  17. package/chunk-DUMZDEIW.mjs +2 -0
  18. package/{chunk-RWYSZIYU.mjs.map → chunk-DUMZDEIW.mjs.map} +1 -1
  19. package/chunk-JIANS32G.mjs +8 -0
  20. package/chunk-JIANS32G.mjs.map +1 -0
  21. package/chunk-JS2ZN33O.js +2 -0
  22. package/{chunk-7HW5MCJB.js.map → chunk-JS2ZN33O.js.map} +1 -1
  23. package/chunk-RS6IYYK4.mjs +2 -0
  24. package/{chunk-FCXA3ZFN.mjs.map → chunk-RS6IYYK4.mjs.map} +1 -1
  25. package/chunk-V77UDB4W.js +8 -0
  26. package/chunk-V77UDB4W.js.map +1 -0
  27. package/chunk-VQYCMXXN.js +2 -0
  28. package/{chunk-HGVLRCUS.js.map → chunk-VQYCMXXN.js.map} +1 -1
  29. package/chunk-WVSPEG7R.mjs +2 -0
  30. package/chunk-WVSPEG7R.mjs.map +1 -0
  31. package/chunk-YCGVNB2L.js +2 -0
  32. package/{chunk-H2RMYSI5.js.map → chunk-YCGVNB2L.js.map} +1 -1
  33. package/chunk-YQBNJI2Z.mjs +2 -0
  34. package/{chunk-RMKOWUFC.mjs.map → chunk-YQBNJI2Z.mjs.map} +1 -1
  35. package/index.js +1 -1
  36. package/index.js.map +1 -1
  37. package/index.mjs +1 -1
  38. package/index.mjs.map +1 -1
  39. package/nonStaticVideoTag-TM6QJ6UO.js +2 -0
  40. package/nonStaticVideoTag-TM6QJ6UO.js.map +1 -0
  41. package/nonStaticVideoTag-TXAQ4YV5.mjs +2 -0
  42. package/nonStaticVideoTag-TXAQ4YV5.mjs.map +1 -0
  43. package/{notActive-6UYIZ2KJ.js → notActive-4D66M5GV.js} +2 -2
  44. package/{notActive-YR26EGZU.mjs → notActive-PKOUBTG7.mjs} +2 -2
  45. package/package.json +1 -1
  46. package/staticPlayer-RRZZLT3W.mjs +2 -0
  47. package/staticPlayer-TCCY2FPC.js +2 -0
  48. package/staticVideoTag-DC6QOZDP.js +2 -0
  49. package/{staticVideoTag-2NYG2G55.js.map → staticVideoTag-DC6QOZDP.js.map} +1 -1
  50. package/staticVideoTag-WT3Y2FMN.mjs +2 -0
  51. package/{staticVideoTag-RUBTPYA4.mjs.map → staticVideoTag-WT3Y2FMN.mjs.map} +1 -1
  52. package/touchVolumeBrightness-C5HOAU7Q.js +2 -0
  53. package/{touchVolumeBrightness-F6RRO5ZQ.js.map → touchVolumeBrightness-C5HOAU7Q.js.map} +1 -1
  54. package/touchVolumeBrightness-N2YYALH2.mjs +2 -0
  55. package/{touchVolumeBrightness-FZGZTIHO.mjs.map → touchVolumeBrightness-N2YYALH2.mjs.map} +1 -1
  56. package/videoArea-4V3IPTKW.js +2 -0
  57. package/videoArea-S5IIXFE2.mjs +2 -0
  58. package/videoPlayerStyles.css +92 -0
  59. package/vodPlayer-BT55V3T7.js +2 -0
  60. package/vodPlayer-BT55V3T7.js.map +1 -0
  61. package/vodPlayer-UP3MRZCY.mjs +2 -0
  62. package/vodPlayer-UP3MRZCY.mjs.map +1 -0
  63. package/backwardForward-HIQMCTQC.js +0 -2
  64. package/backwardForward-X766JNK7.mjs +0 -2
  65. package/chunk-7CRJROVQ.js +0 -2
  66. package/chunk-7CRJROVQ.js.map +0 -1
  67. package/chunk-7HW5MCJB.js +0 -2
  68. package/chunk-FCXA3ZFN.mjs +0 -2
  69. package/chunk-FIAS7KSL.js +0 -8
  70. package/chunk-FIAS7KSL.js.map +0 -1
  71. package/chunk-GPHIYXK4.mjs +0 -2
  72. package/chunk-H2RMYSI5.js +0 -2
  73. package/chunk-HGVLRCUS.js +0 -2
  74. package/chunk-KKRVSZHT.mjs +0 -2
  75. package/chunk-KKRVSZHT.mjs.map +0 -1
  76. package/chunk-RMKOWUFC.mjs +0 -2
  77. package/chunk-RWYSZIYU.mjs +0 -2
  78. package/chunk-T2R2EY2S.mjs +0 -8
  79. package/chunk-T2R2EY2S.mjs.map +0 -1
  80. package/chunk-VUPLF63B.mjs +0 -2
  81. package/chunk-VUPLF63B.mjs.map +0 -1
  82. package/chunk-W3O5MOOK.js +0 -2
  83. package/chunk-W3O5MOOK.js.map +0 -1
  84. package/chunk-WOH56V2M.js +0 -2
  85. package/chunk-WOH56V2M.js.map +0 -1
  86. package/chunk-XOYVJNPD.mjs +0 -2
  87. package/chunk-XOYVJNPD.mjs.map +0 -1
  88. package/chunk-XXAVSZE3.js +0 -2
  89. package/chunk-XXAVSZE3.js.map +0 -1
  90. package/nonStaticVideoTag-ADRUECT3.js +0 -2
  91. package/nonStaticVideoTag-ADRUECT3.js.map +0 -1
  92. package/nonStaticVideoTag-FEG6KZSZ.mjs +0 -2
  93. package/nonStaticVideoTag-FEG6KZSZ.mjs.map +0 -1
  94. package/staticPlayer-7KYTZIGG.mjs +0 -2
  95. package/staticPlayer-IKCBEHXK.js +0 -2
  96. package/staticVideoTag-2NYG2G55.js +0 -2
  97. package/staticVideoTag-RUBTPYA4.mjs +0 -2
  98. package/touchVolumeBrightness-F6RRO5ZQ.js +0 -2
  99. package/touchVolumeBrightness-FZGZTIHO.mjs +0 -2
  100. package/videoArea-L67PFQR7.js +0 -2
  101. package/videoArea-U65PSY4Y.mjs +0 -2
  102. package/vodPlayer-4F5QRP6Y.js +0 -2
  103. package/vodPlayer-4F5QRP6Y.js.map +0 -1
  104. package/vodPlayer-UAW4GDNY.mjs +0 -2
  105. package/vodPlayer-UAW4GDNY.mjs.map +0 -1
  106. /package/{backwardForward-HIQMCTQC.js.map → backwardForward-COUYHC25.js.map} +0 -0
  107. /package/{backwardForward-X766JNK7.mjs.map → backwardForward-K4HAWR3A.mjs.map} +0 -0
  108. /package/{notActive-6UYIZ2KJ.js.map → notActive-4D66M5GV.js.map} +0 -0
  109. /package/{notActive-YR26EGZU.mjs.map → notActive-PKOUBTG7.mjs.map} +0 -0
  110. /package/{staticPlayer-7KYTZIGG.mjs.map → staticPlayer-RRZZLT3W.mjs.map} +0 -0
  111. /package/{staticPlayer-IKCBEHXK.js.map → staticPlayer-TCCY2FPC.js.map} +0 -0
  112. /package/{videoArea-L67PFQR7.js.map → videoArea-4V3IPTKW.js.map} +0 -0
  113. /package/{videoArea-U65PSY4Y.mjs.map → videoArea-S5IIXFE2.mjs.map} +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkYCGVNB2Ljs = require('./chunk-YCGVNB2L.js');require('./chunk-VQYCMXXN.js');require('./chunk-3RAQIOFP.js');require('./chunk-D7QMTCXI.js');require('./chunk-A3BCKK27.js');exports.default = _chunkYCGVNB2Ljs.a;
2
+ //# sourceMappingURL=backwardForward-COUYHC25.js.map
@@ -0,0 +1,2 @@
1
+ import{a}from"./chunk-DUMZDEIW.mjs";import"./chunk-YQBNJI2Z.mjs";import"./chunk-2RGKXVLI.mjs";import"./chunk-4RAQGYLK.mjs";import"./chunk-TU7BZ2RY.mjs";export{a as default};
2
+ //# sourceMappingURL=backwardForward-K4HAWR3A.mjs.map
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _chunk3RAQIOFPjs = require('./chunk-3RAQIOFP.js');var _chunkA3BCKK27js = require('./chunk-A3BCKK27.js');_chunkA3BCKK27js.e.call(void 0, );var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);_chunkA3BCKK27js.e.call(void 0, );var D=e=>{let{params:t}=_chunk3RAQIOFPjs.J.getState().videoData;return _chunk3RAQIOFPjs.fa.call(void 0, ).vod.getVodUrl+(e||t.id)},s={url:"",maxRetryCount:0,headers:{},retryPolicy:[],errorCallback:void 0},S=()=>(s.url=D(),s.maxRetryCount=3,s.retryPolicy=[{codeAbove:500,codeBelow:null,excludeCodes:[],includeCodes:[409],delay:1,count:3},{codeAbove:null,codeBelow:404,excludeCodes:[403,402,401,400],includeCodes:[],delay:10,count:6}],s),w=()=>(S(),s);var T=e=>_chunk3RAQIOFPjs.ea.call(void 0, {url:_chunk3RAQIOFPjs.fa.call(void 0, ).viewCount(e),data:{uuid:_chunk3RAQIOFPjs.K.call(void 0, )}}),q= exports.a =async()=>{let e=_chunk3RAQIOFPjs.J.dispatch;try{let t=await _chunk3RAQIOFPjs.ea.call(void 0, {...w()});if(_chunk3RAQIOFPjs.S.call(void 0, t.status))_chunk3RAQIOFPjs.Q.call(void 0, t.data.stream_link),await _axios2.default.head("https://"+_chunk3RAQIOFPjs.U.call(void 0, t.data.hls_links)+t.data.path),T(t.data.content_id),_(t.data);else throw new Error(JSON.stringify({status:t.status,message:t.data}))}catch (e2){e(_chunk3RAQIOFPjs.v.call(void 0, !0)),e(_chunk3RAQIOFPjs.w.call(void 0, !1))}},_=e=>{let t=_chunk3RAQIOFPjs.J.dispatch;t(_chunk3RAQIOFPjs.s.call(void 0, {...e,stream_link:!!e.stream_link&&_chunk3RAQIOFPjs.O.call(void 0, "https://"+_chunk3RAQIOFPjs.U.call(void 0, e.hls_links)+e.path)})),t(_chunk3RAQIOFPjs.v.call(void 0, !0)),t(_chunk3RAQIOFPjs.w.call(void 0, !0))},z= exports.b =()=>{let e=_chunk3RAQIOFPjs.J.dispatch,{subtitles:t,selectedSubtitle:k}=_chunk3RAQIOFPjs.J.getState().videoData,r=t.find(u=>u.language==="fa");k?(Object.values(_chunk3RAQIOFPjs.ba.call(void 0, ).textTracks).find(u=>u.mode==="showing").mode="disabled",e(_chunk3RAQIOFPjs.C.call(void 0, void 0)),_chunk3RAQIOFPjs.va.call(void 0, _chunk3RAQIOFPjs.ua.call(void 0, "empty"))):r?(r.mode="showing",e(_chunk3RAQIOFPjs.C.call(void 0, r)),_chunk3RAQIOFPjs.va.call(void 0, _chunk3RAQIOFPjs.ua.call(void 0, r.language))):(_chunk3RAQIOFPjs.ba.call(void 0, ).textTracks[0].mode="showing",e(_chunk3RAQIOFPjs.C.call(void 0, _chunk3RAQIOFPjs.ba.call(void 0, ).textTracks[0])),_chunk3RAQIOFPjs.va.call(void 0, _chunk3RAQIOFPjs.ua.call(void 0, _chunk3RAQIOFPjs.ba.call(void 0, ).textTracks[0].language)))};exports.a = q; exports.b = z;
2
+ //# sourceMappingURL=chunk-2DTS26XF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/videoPlayerLibrary/helpers/redux/actions/videoData.actions.ts","../src/videoPlayerLibrary/helpers/getDetailsConfigs.ts"],"names":["init_cjs_shims","axios","detailAPI","id","params","store_default","API","detailsConfig","vodDetailsConfig","handleDetailsConfig","videoViewCount","contentId","apiCaller","getUUID","getVodDetails","dispatch","d","responseValidator","appendQueryParamsToChunks","weighted_random","detailSetter","setIsFetchDetails","setIsValidAddress","data","setInfo","addUuidToSrc","handleSubtitle","subtitles","selectedSubtitle","faSubtitle","subtitle","videoTag","textTrack","setSelectedSubtitle","sendFluentLog","subtitleLog"],"mappings":"uLAAAA,IAUA,OAAOC,MAAW,QCVlBD,IAIO,IAAME,EAAaC,GAAgB,CACtC,GAAM,CAAE,OAAAC,CAAO,EAAIC,EAAM,SAAS,EAAE,UACpC,OAAOC,EAAI,EAAE,IAAI,WAAaH,GAAUC,EAAO,GACnD,EAEMG,EAAgC,CAClC,IAAK,GACL,cAAe,EACf,QAAS,CAAC,EACV,YAAa,CAAC,EACd,cAAe,MACnB,EAEMC,EAAmB,KACrBD,EAAc,IAAML,EAAU,EAC9BK,EAAc,cAAgB,EAC9BA,EAAc,YAAc,CACxB,CACI,UAAW,IACX,UAAW,KACX,aAAc,CAAC,EACf,aAAc,CAAC,GAAG,EAClB,MAAO,EACP,MAAO,CACX,EACA,CACI,UAAW,KACX,UAAW,IACX,aAAc,CAAC,IAAK,IAAK,IAAK,GAAG,EACjC,aAAc,CAAC,EACf,MAAO,GACP,MAAO,CACX,CACJ,EACOA,GAIEE,EAAsB,KAC/BD,EAAiB,EACVD,GD5BX,IAAMG,EAAkBC,GAAsBC,EAAU,CAAE,IAAKN,EAAI,EAAE,UAAUK,CAAS,EAAG,KAAM,CAAE,KAAME,EAAQ,CAAE,CAAE,CAAC,EAEzGC,EAAgB,SAAY,CACrC,IAAMC,EAAWV,EAAM,SACvB,GAAI,CACA,IAAMW,EAAI,MAAMJ,EAAU,CAAE,GAAGH,EAAoB,CAAE,CAAC,EACtD,GAAIQ,EAAkBD,EAAE,MAAM,EAC1BE,EAA0BF,EAAE,KAAK,WAAW,EAC5C,MAAMf,EAAM,KAAK,WAAakB,EAAgBH,EAAE,KAAK,SAAS,EAAIA,EAAE,KAAK,IAAI,EAC7EN,EAAeM,EAAE,KAAK,UAAW,EACjCI,EAAaJ,EAAE,IAAI,MAChB,OAAM,IAAI,MAAM,KAAK,UAAU,CAAE,OAAQA,EAAE,OAAQ,QAASA,EAAE,IAAK,CAAC,CAAC,CAChF,MAAqB,CACjBD,EAASM,EAAkB,EAAI,CAAC,EAChCN,EAASO,EAAkB,EAAK,CAAC,CACrC,CACJ,EAEaF,EAAgBG,GAAc,CACvC,IAAMR,EAAWV,EAAM,SACvBU,EACIS,EAAQ,CACJ,GAAGD,EACH,YAAa,CAAC,CAACA,EAAK,aAAeE,EAAa,WAAaN,EAAgBI,EAAK,SAAS,EAAIA,EAAK,IAAI,CAC5G,CAAC,CACL,EACAR,EAASM,EAAkB,EAAI,CAAC,EAChCN,EAASO,EAAkB,EAAI,CAAC,CACpC,EAEaI,EAAiB,IAAM,CAChC,IAAMX,EAAWV,EAAM,SACjB,CAAE,UAAAsB,EAAW,iBAAAC,CAAiB,EAAIvB,EAAM,SAAS,EAAE,UAEnDwB,EAAkBF,EAAU,KAAMG,GAAkBA,EAAS,WAAa,IAAI,EAChFF,GACA,OAAO,OAAOG,EAAS,EAAE,UAAU,EAAE,KAAMC,GAAmBA,EAAU,OAAS,SAAS,EAAG,KAAO,WACpGjB,EAASkB,EAAoB,MAAS,CAAC,EACvCC,EAAcC,EAAY,OAAO,CAAC,GAE9BN,GACAA,EAAW,KAAO,UAClBd,EAASkB,EAAoBJ,CAAU,CAAC,EACxCK,EAAcC,EAAYN,EAAW,QAAQ,CAAC,IAE9CE,EAAS,EAAE,WAAW,CAAC,EAAE,KAAO,UAChChB,EAASkB,EAAoBF,EAAS,EAAE,WAAW,CAAC,CAAC,CAAC,EACtDG,EAAcC,EAAYJ,EAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,EAGxE","sourcesContent":["import { apiCaller } from \"../../services/apiCaller\";\r\nimport { API } from \"../../services/services\";\r\nimport {\r\n setInfo,\r\n setIsFetchDetails,\r\n setIsValidAddress,\r\n setSelectedSubtitle,\r\n} from \"../slices/videoDataSlice\";\r\nimport store from \"../store\";\r\nimport { addUuidToSrc, appendQueryParamsToChunks, getUUID, responseValidator, weighted_random } from \"../../helpers\";\r\nimport axios from \"axios\";\r\nimport { handleDetailsConfig } from \"../../getDetailsConfigs\";\r\nimport { videoTag } from \"../../constants\";\r\nimport { subtitleLog } from \"../../logs/logs\";\r\nimport { sendFluentLog } from \"../../logs/fluentdLogger\";\r\n\r\nconst videoViewCount = (contentId: number) => apiCaller({ url: API().viewCount(contentId), data: { uuid: getUUID() } });\r\n\r\nexport const getVodDetails = async () => {\r\n const dispatch = store.dispatch;\r\n try {\r\n const d = await apiCaller({ ...handleDetailsConfig() });\r\n if (responseValidator(d.status)) {\r\n appendQueryParamsToChunks(d.data.stream_link);\r\n await axios.head(\"https://\" + weighted_random(d.data.hls_links) + d.data.path);\r\n videoViewCount(d.data.content_id!);\r\n detailSetter(d.data);\r\n } else throw new Error(JSON.stringify({ status: d.status, message: d.data }));\r\n } catch (error: any) {\r\n dispatch(setIsFetchDetails(true));\r\n dispatch(setIsValidAddress(false));\r\n }\r\n};\r\n\r\nexport const detailSetter = (data: any) => {\r\n const dispatch = store.dispatch;\r\n dispatch(\r\n setInfo({\r\n ...data,\r\n stream_link: !!data.stream_link && addUuidToSrc(\"https://\" + weighted_random(data.hls_links) + data.path)\r\n })\r\n );\r\n dispatch(setIsFetchDetails(true));\r\n dispatch(setIsValidAddress(true));\r\n};\r\n\r\nexport const handleSubtitle = () => {\r\n const dispatch = store.dispatch;\r\n const { subtitles, selectedSubtitle } = store.getState().videoData;\r\n\r\n const faSubtitle: any = subtitles.find((subtitle: any) => subtitle.language === \"fa\");\r\n if (selectedSubtitle) {\r\n Object.values(videoTag().textTracks).find((textTrack: any) => textTrack.mode === \"showing\")!.mode = \"disabled\";\r\n dispatch(setSelectedSubtitle(undefined));\r\n sendFluentLog(subtitleLog(\"empty\"));\r\n } else {\r\n if (faSubtitle) {\r\n faSubtitle.mode = \"showing\";\r\n dispatch(setSelectedSubtitle(faSubtitle));\r\n sendFluentLog(subtitleLog(faSubtitle.language));\r\n } else {\r\n videoTag().textTracks[0].mode = \"showing\";\r\n dispatch(setSelectedSubtitle(videoTag().textTracks[0]));\r\n sendFluentLog(subtitleLog(videoTag().textTracks[0].language));\r\n }\r\n }\r\n}; ","import { IDetailsConfig } from \"./interfaces/interfaces\";\r\nimport store from \"./redux/store\";\r\nimport { API } from \"./services/services\";\r\n\r\nexport const detailAPI = (id?: number) => {\r\n const { params } = store.getState().videoData;\r\n return API().vod.getVodUrl + (id ? id : params.id);\r\n};\r\n\r\nconst detailsConfig: IDetailsConfig = {\r\n url: \"\",\r\n maxRetryCount: 0,\r\n headers: {},\r\n retryPolicy: [],\r\n errorCallback: undefined\r\n};\r\n\r\nconst vodDetailsConfig = () => {\r\n detailsConfig.url = detailAPI();\r\n detailsConfig.maxRetryCount = 3;\r\n detailsConfig.retryPolicy = [\r\n {\r\n codeAbove: 500,\r\n codeBelow: null,\r\n excludeCodes: [],\r\n includeCodes: [409],\r\n delay: 1,\r\n count: 3\r\n },\r\n {\r\n codeAbove: null,\r\n codeBelow: 404,\r\n excludeCodes: [403, 402, 401, 400],\r\n includeCodes: [],\r\n delay: 10,\r\n count: 6\r\n }\r\n ];\r\n return detailsConfig;\r\n};\r\n\r\n\r\nexport const handleDetailsConfig = () => {\r\n vodDetailsConfig();\r\n return detailsConfig;\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import{a as pe,b as ye,c as me,d as ge,e as o}from"./chunk-TU7BZ2RY.mjs";var re=ye((Wr,te)=>{o();te.exports={baseUrl:"https://hamrahi.cloud",fluentdUrl:"https://hamrahi.cloud"}});var se={};me(se,{isNpmPackage:()=>Te});var Te,ae=pe(()=>{o();Te=!1});o();import{createSlice as he}from"@reduxjs/toolkit";var B={play:!1,isAutoPlay:!0,duration:0,currentTime:0,qualityLevels:[],manualQuality:void 0,autoQuality:void 0,activeElements:!0,isLoading:!1,isFullScreen:!1,bufferedTimeWidth:0,firstPlay:!0,activePointerProgressBar:!1,delayTurnOffControlbar:!1,canPlayVideo:!1,lock:!1,isEnded:!1,tooltipTime:0,showMiniPlayer:!1},M=he({name:"controller",initialState:B,reducers:{setPlay:(t,e)=>{t.play=e.payload},setIsAutoPlay:(t,e)=>{t.isAutoPlay=e.payload},setDuration:(t,e)=>{t.duration=e.payload},setCurrentTime:(t,e)=>{t.currentTime=e.payload},setManualQuality:(t,e)=>{t.manualQuality=e.payload},setAutoQuality:(t,e)=>{t.autoQuality=e.payload},setQualityLevels:(t,e)=>{t.qualityLevels=e.payload},setActiveElements:(t,e)=>{t.activeElements=e.payload},setIsLoading:(t,e)=>{t.isLoading=e.payload},setIsFullScreen:(t,e)=>{t.isFullScreen=e.payload},setBufferedTimeWidth:(t,e)=>{t.bufferedTimeWidth=e.payload},setFirstPlay:(t,e)=>{t.firstPlay=e.payload},setActivePointerProgressBar:(t,e)=>{t.activePointerProgressBar=e.payload},setDelayTurnOffControlbar:(t,e)=>{t.delayTurnOffControlbar=e.payload},setCanPlayVideo:(t,e)=>{t.canPlayVideo=e.payload},setLock:(t,e)=>{t.lock=e.payload},setIsEnded:(t,e)=>{t.isEnded=e.payload},setTooltipTime:(t,e)=>{t.tooltipTime=e.payload},setShowMiniPlayer:(t,e)=>{t.showMiniPlayer=e.payload},setClearControllerSlice:()=>B}}),{setPlay:Fe,setIsAutoPlay:Ee,setDuration:Qe,setCurrentTime:Ve,setQualityLevels:Ue,setAutoQuality:_e,setActiveElements:Be,setIsLoading:Me,setIsFullScreen:Re,setBufferedTimeWidth:$e,setFirstPlay:Ke,setActivePointerProgressBar:qe,setDelayTurnOffControlbar:Oe,setManualQuality:Ce,setCanPlayVideo:He,setLock:We,setIsEnded:je,setTooltipTime:Xe,setShowMiniPlayer:Ye,setClearControllerSlice:R}=M.actions,$=M.reducer;o();import{createSlice as Se}from"@reduxjs/toolkit";var K={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:{src:"",type:"",id:"",bannerAlt:"",fullscreen:"",autoplay:"",cover:"","e-url":"","e-cover":"",scrollElementId:void 0,provider:"cafevdo",onFinished:void 0},streamLinkParams:"",videoElementSizeInfo:{bottom:0,top:0,right:0,left:0,width:0,height:0},isFetchDetails:!1,isValidAddress:!1,videoTimelines:[],isReady:!1,showCheckInternetSnackBar:!1,subtitles:[],selectedSubtitle:void 0,subtitleText:void 0},q=Se({name:"videoData",initialState:K,reducers:{setInfo:(t,e)=>{t.details=e.payload},setPlayerParams:(t,e)=>{t.params=e.payload},setStreamLinkParams:(t,e)=>{t.streamLinkParams=e.payload},setVideoElementSizeInfo:(t,e)=>{t.videoElementSizeInfo=e.payload},setIsFetchDetails:(t,e)=>{t.isFetchDetails=e.payload},setIsValidAddress:(t,e)=>{t.isValidAddress=e.payload},setVideoTimelines:(t,e)=>{t.videoTimelines=e.payload},setIsReady:(t,e)=>{t.isReady=e.payload},setShowCheckInternetSnackBar:(t,e)=>{t.showCheckInternetSnackBar=e.payload},setSubtitles:(t,e)=>{t.subtitles=e.payload},setSelectedSubtitle:(t,e)=>{t.selectedSubtitle=e.payload},setSubtitleText:(t,e)=>{t.subtitleText=e.payload},setClearVideoDataSlice:t=>t=K}}),{setInfo:ze,setPlayerParams:et,setStreamLinkParams:O,setVideoElementSizeInfo:tt,setIsFetchDetails:rt,setIsValidAddress:st,setVideoTimelines:at,setIsReady:ot,setShowCheckInternetSnackBar:it,setSubtitles:nt,setSubtitleText:lt,setSelectedSubtitle:ct,setClearVideoDataSlice:C}=q.actions,H=q.reducer;o();import{createSlice as fe}from"@reduxjs/toolkit";var W={settings:{quality:-1,brightness:100,volume:100,speed:1},videoSettings:{time:0}},j=fe({name:"user",initialState:W,reducers:{setUserSettings:(t,e)=>{t.settings=e.payload},setVideoSettings:(t,e)=>{t.videoSettings=e.payload},setClearUserSlice:()=>W}}),{setUserSettings:mt,setVideoSettings:gt,setClearUserSlice:X}=j.actions,Y=j.reducer;o();o();import{createSlice as Pe}from"@reduxjs/toolkit";var ve={settingPopover:!1,speedPopover:!1,qualityLevelsPopover:!1},G=Pe({name:"popover",initialState:ve,reducers:{setSettingPopover:(t,e)=>{t.settingPopover=e.payload},setSpeedPopover:(t,e)=>{t.speedPopover=e.payload},setQualityLevelsPopover:(t,e)=>{t.qualityLevelsPopover=e.payload},setClearPopoversSlice:t=>{t.settingPopover=!1,t.speedPopover=!1,t.qualityLevelsPopover=!1}}}),{setSettingPopover:vt,setSpeedPopover:bt,setQualityLevelsPopover:wt,setClearPopoversSlice:J}=G.actions,Z=G.reducer;import{configureStore as be}from"@reduxjs/toolkit";var we=be({reducer:{controller:$,videoData:H,popovers:Z,user:Y},devTools:!0,middleware:t=>t({serializableCheck:!1})}),a=we;o();o();o();var c=t=>{let{params:e,details:r,isValidAddress:s,isFetchDetails:i,isReady:n,subtitles:p,showCheckInternetSnackBar:d,selectedSubtitle:h}=a.getState().videoData,{firstPlay:u,lock:l,canPlayVideo:y,manualQuality:v,activeElements:b,isLoading:S,isEnded:V,isAutoPlay:le,play:ce,isFullScreen:k,showMiniPlayer:P}=a.getState().controller,{settingPopover:U,speedPopover:ue,qualityLevelsPopover:de}=a.getState().popovers,{settings:_}=a.getState().user;switch(t){case"showHeader":return!u&&y;case"showMain":return!d&&(!l||u);case"showFooter":return!u&&y;case"showTouchVolumeBrightness":return!u&&T()&&!l&&!V;case"showBackwardForward":return!u&&A()&&!l;case"showTitle":return!w(e.type)&&k&&!l;case"showSettingPopover":return U;case"showSpeedPopover":return ue;case"showQualityLevelsPopover":return de;case"showSettingIcon":return!w(e.type)&&!L()&&!k;case"showBanner":return u&&(r.banner||e.cover);case"showProgressbar":return!L();case"showMiniPlayer":return P;case"showPictureInPicture":return P!==!0&&!L()&&!A();case"showSubtitle":return!!h&&!P;case"hidePopovers":return!U;case"isLandscape":return window.innerHeight<=window.innerWidth;case"isTouchScreen":return A();case"isTouchScreenPortrait":return z();case"isTouchScreenLandscape":return T();case"isActiveElements":return b;case"isPlay":return ce;case"isFirstPlay":return u;case"isLock":return l;case"isIOS":return L();case"isLoading":return S;case"isStaticFormat":return w(e.type);case"isEnded":return V;case"isAutoPlay":return le;case"isFullScreen":return k;case"isValidAddress":return s;case"isFetchDetails":return i;case"isAutoQuality":return _.quality===-1;case"isPressKeySpace":return!l;case"isPressKeyI":return!l&&!u&&!P;case"isPressKeyF":return!l&&!u&&!P;case"isPressKeyS":return!l&&!u;case"isPressKeyArrowRight":return!u&&!l;case"isPressKeyArrowLeft":return!u&&!l;case"isPressKeyM":return!u&&!l;case"isPressKeyC":return!l&&!u&&!P&&!!p&&p.length>0;case"isSendTimelineLog":return!w(e.type);case"isReady":return n;case"isSelectedSubtitle":return!!p&&p.length>0&&h;case"hasTitle":return r.title;case"hasBanner":return r.banner;case"hasStreamLink":return r.stream_link;case"hasManualQuality":return v!=null;case"hasSound":return!!_.volume;case"hasAutoPlay":return e.autoplay==="true";case"hasFullScreenParams":return e.fullscreen==="true";case"hasScrollElementId":return!!e.scrollElementId&&P!==void 0;case"hasOnFinishedParams":return!!e.onFinished;case"hasSubtitles":return!!p&&p.length>0&&!P;case"hasSubtitlesInDetails":return r.subtitles&&r.subtitles.length>0;case"hasActiveCue":return h&&h.activeCues&&h.activeCues.length>0;case"getDetails":return!!e.type&&e.id;case"canPlayVideo":return y;case"setSubtitleFirstPlay":return r.subtitles&&r.subtitles.length>0&&!u&&!w(e.type);default:break}};var ee=t=>new Promise(e=>setTimeout(e,t*1e3)),f=()=>{let t=localStorage.getItem("hamrahiUUID");return t||(t=Ae(),localStorage.setItem("hamrahiUUID",t)),t.toString()},Ae=()=>{let t="xxxxxxxx-xxxx-Mxxx-Nxxx-x".replace(/[xMN]/g,e=>{let r;return e==="M"?r=Math.floor(1+Math.random()*5):e==="N"?r=Math.floor(8+Math.random()*4):r=Math.floor(Math.random()*16),r.toString(16)});return t+=Date.now().toString(16),t},A=()=>"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,T=()=>{let{isFullScreen:t}=a.getState().controller;return A()&&t},z=()=>{let{isFullScreen:t}=a.getState().controller;return A()&&!t},L=()=>["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,x=t=>(t<10?"0":"")+t,jt=t=>{let e=Math.floor(t/3600),r=Math.floor(t%3600/60),s=Math.floor(t%3600%60);return e<1?`${x(r)}:${x(s)}`:`${x(e)}:${x(r)}:${x(s)}`},w=t=>["mp4","mkv","mov","m4v"].includes(t)?"mp4":t==="webm"||t==="flv"?t:["mp3","ogg"].includes(t)?"mp3":!1,Xt=t=>{let e=new URL(t),r=t;return e.search.length?r+=`&uuid=${f()}`:r+=`?uuid=${f()}`},Yt=(t,e)=>{try{return[t.target.id,t.target.parentNode.id,t.target.parentNode.parentNode.id,t.target.parentNode.parentNode.parentNode.id,t.target.parentNode.parentNode.parentNode.parentNode.id].includes(e)}catch{return!1}},Gt=t=>{let e=a.dispatch,r="";r=t.split("m3u8")[1],r?r=`${r}&uuid=${f()}`:r=`?uuid=${f()}`,e(O(r))},Jt=(t,e)=>{let r=document.getElementById(e),s=document.createElement("span");s.style.width=s.style.height="50px",s.style.left=`${t.touches[0].clientX-r.offsetLeft-25}px`,s.style.top=`${t.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 Zt=t=>t>=200&&t<300,Nt=()=>{let t=a.dispatch;t(C()),t(R()),t(X()),t(J())},zt=t=>{let e,r=[];for(e=0;e<t.length;e++)r[e]=t[e].weight+(r[e-1]||0);let s=Math.random()*r[r.length-1];for(e=0;e<r.length&&!(r[e]>s);e++);return t[e].domain},er=t=>{let e=0;performance&&performance.getEntriesByType("navigation")&&(e=performance.getEntriesByType("navigation")[0].duration),t.current=e},tr=(t,e,r)=>{let s=e*window.devicePixelRatio,i=r*window.devicePixelRatio,n=[];return c("isTouchScreenPortrait")?n=t.filter(p=>Number(p.split("x")[0].trim())<=s):n=t.filter(p=>Number(p.split("x")[0].trim())<=i||Number(p.split("x")[1].trim())<=s),n.indexOf(n[n.length-1])},D=(t,e)=>{let r={};for(let s in t){let i=e?`${e}_${s}`:s;typeof t[s]=="object"&&!Array.isArray(t[s])?r={...r,...D(t[s],i)}:r[i]=t[s]}return r},rr=t=>{let e={fa:1,en:2};return t.slice().sort((r,s)=>{let i=e[r.lang]||999,n=e[s.lang]||999;return i-n})},sr=t=>{let e;switch(t){case"fa":e="\u0641\u0627\u0631\u0633\u06CC";break;case"en":e="\u0627\u0646\u06AF\u0644\u06CC\u0633\u06CC";break;case"ar":e="\u0639\u0631\u0628\u06CC";break;case"tr":e="\u062A\u0631\u06A9\u06CC";break;default:break}return e},ar=t=>t.split(/\r?\n|\r|\n/g);o();import{useDispatch as Le,useSelector as xe}from"react-redux";var cr=()=>Le(),ur=xe;o();var I=()=>document.getElementById("player-tag"),mr=()=>document.getElementById("time-progress-bar"),gr=()=>a.getState().videoData.videoElementSizeInfo.width-2;o();var Ar=t=>{let{params:e,details:r}=a.getState().videoData,{settings:s}=a.getState().user;return{category:"speedChange",previousSelectedSpeed:s.speed,selectedSpeed:t,id:Number(e.id),type:e.type,src:c("hasStreamLink")?r.stream_link:e.src,provider:e.provider}},Lr=t=>{let{params:e,details:r}=a.getState().videoData,{qualityLevels:s,manualQuality:i,autoQuality:n}=a.getState().controller;return{category:"qualityChangeRequest",currentPlayingQuality:`${s[c("isAutoQuality")?n??i:i]}P`,previousSelectedQuality:c("isAutoQuality")?"auto":`${s[i]}P`,selectedQuality:t,id:Number(e.id),type:e.type,src:c("hasStreamLink")?r.stream_link:e.src,provider:e.provider}},xr=t=>{let{params:e,details:r}=a.getState().videoData,{qualityLevels:s,autoQuality:i}=a.getState().controller,{settings:n}=a.getState().user;return{category:"catchUpLoading",previousVideoTime:Number(sessionStorage.getItem("previousVideoTime")),currentVideoTime:I().currentTime,duration:t,quality:`${c("isAutoQuality")?s[i]:s[n.quality]}P`,isAutoQuality:c("isAutoQuality"),id:Number(e.id),type:e.type,src:c("hasStreamLink")?r.stream_link:e.src,provider:e.provider}},kr=t=>{let{params:e,details:r}=a.getState().videoData;return{category:t==="backward"?"backward":"forward",id:Number(e.id),type:e.type,src:r.stream_link?r.stream_link:e.src,provider:e.provider}},Tr=t=>{let{params:e,details:r}=a.getState().videoData;return{category:t,id:Number(e.id),type:e.type,src:c("hasStreamLink")?r.stream_link:e.src}},Dr=(t,e)=>{let{params:r,details:s}=a.getState().videoData;return{category:"brightnessChange",source:t,target:e,id:Number(r.id),type:r.type,src:c("hasStreamLink")?s.stream_link:r.src}},Ir=(t,e)=>{let{params:r,details:s}=a.getState().videoData;return{category:"volumeChange",source:t,target:e,id:Number(r.id),type:r.type,src:c("hasStreamLink")?s.stream_link:r.src}},Fr=t=>{let{params:e,details:r}=a.getState().videoData;return{category:t,id:Number(e.id),type:e.type,src:c("hasStreamLink")?r.stream_link:e.src}};var Er=(t,e)=>{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:t,end:e,watchedDuration:e-t,video_duration:Math.floor(i),clientUUID:f(),user_id:s.user_id,content_type:s.content_type,content_id:s.content_id}},Qr=(t,e,r)=>{let{params:s,details:i}=a.getState().videoData;return{category:"autoQualityChange",sourceQuality:t,targetQuality:e,diffQuality:r,id:Number(s.id),type:s.type,src:c("hasStreamLink")?i.stream_link:s.src,provider:s.provider}},Vr=(t,e)=>{let{params:r,details:s}=a.getState().videoData;return{category:"pingpong",id:Number(r.id),type:r.type,src:c("hasStreamLink")?s.stream_link:r.src,PingPongDuration:Number((new Date().getTime()-t).toFixed(2)),PingPongSourceQuality:`${e[0]}P`,PingPongTargetQuality:`${e[1]}P`,provider:r.provider}},Ur=t=>{let{params:e,details:r}=a.getState().videoData;return{category:t?"playVideo":"pauseVideo",id:Number(e.id),type:e.type,src:r.stream_link?r.stream_link:e.src,provider:e.provider}},_r=(t,e,r,s,i)=>{let{params:n,details:p}=a.getState().videoData,d=Date.now()-i.current+t+e,h=window.performance.memory,u=JSON.parse(JSON.stringify(window.performance.timing));return{category:"initLog",id:Number(n.id),type:n.type,origin:new URL(c("hasStreamLink")?p.stream_link:n.src).origin,src:c("hasStreamLink")?p.stream_link:n.src,loading:t,bannerLoading:!c("hasBanner")||r<0?0:r,waiting:e,firstChunkPlaying:s<0?0:s,totalTime:d,provider:n.provider,performance:D({memory:h,timing:u},"performance"),userAgent:window.navigator.userAgent}},Br=(t,e,r,s,i)=>{let{params:n,details:p}=a.getState().videoData,{settings:d}=a.getState().user,h=Date.now()-r.current;return{category:"loading",id:Number(n.id),type:n.type,src:c("hasStreamLink")?p.stream_link:n.src,duration:t,quality:`${e}P`,isAutoQuality:c("isAutoQuality"),previousLoaderDiff:h,counter:s.current,loadingPercentile:Number((t/h).toFixed(2)),videoTime:I().currentTime,videoEntranceTime:i,speed:d.speed,provider:n.provider}},Mr=t=>{let{params:e,details:r}=a.getState().videoData;return{category:"subtitle",language:t,id:Number(e.id),type:e.type,src:c("hasStreamLink")?r.stream_link:e.src}};o();o();import ke from"axios";var F=async({url:t,method:e="GET",data:r,headers:s,retryCount:i=1,maxRetryCount:n=0,errorMessage:p,retryPolicy:d,errorCallback:h,timeoutCount:u})=>{let l={url:t,method:e,headers:{...s,"Content-Type":"application/json"},timeout:u?u*1e3:void 0};r?e==="GET"?l={...l,params:{uuid:a.getState().videoData.params.uuid,provider:a.getState().videoData.params.provider==="unknown"?void 0:a.getState().videoData.params.provider,...r}}:l={...l,data:{uuid:a.getState().videoData.params.uuid,provider:a.getState().videoData.params.provider==="unknown"?void 0:a.getState().videoData.params.provider,...r}}:e==="GET"?l={...l,params:{uuid:a.getState().videoData.params.uuid,provider:a.getState().videoData.params.provider==="unknown"?void 0:a.getState().videoData.params.provider}}:l={...l,data:{uuid:a.getState().videoData.params.uuid,provider:a.getState().videoData.params.provider==="unknown"?void 0:a.getState().videoData.params.provider}};try{return await ke(l)}catch(y){if(!(y&&y.response&&y.response.status===401)){h&&h(y.response.status,y.response.message);let v=0,b=0;if(d!==void 0){for(let S=0;S<d.length;S++)if((d[S].codeAbove&&y.response.status>=d[S].codeAbove||d[S].codeBelow&&y.response.status<=d[S].codeBelow)&&(d[S].excludeCodes.length===0||!d[S].excludeCodes.includes(y.response.status))||d[S].includeCodes.length===0||d[S].includeCodes.includes(y.response.status)){b=d[S].count,v=d[S].delay;break}}else b=n,v=i+1;if(i<b)return await ee(v),F({url:t,method:e,data:r,headers:s,retryCount:i+1,newMaxRetryCount:b,errorMessage:p,retryPolicy:d,errorCallback:h});if(y.response)return{data:y.response.data?y.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:y.response.status}}}};o();o();var oe=re(),ie=(ae(),ge(se)),E=()=>(ie?oe.baseUrl:process.env.baseUrl)+"/live/api",Q=()=>ie?oe.fluentdUrl:process.env.fluentdUrl;var ne=()=>({vod:{getVodUrl:`${E()}/v1/live/details/vod/`},viewCount:t=>`${E()}/v1/viewed/content/${t}`,videoTimelineLog:`${Q()}/video-timeline.log`,logs:`${Q()}/drive-endpoint.log`});var ss=t=>{let{details:e}=a.getState().videoData,r={...t,timestamp:Date.now(),clientUUID:f(),uuid:f(),link:window.location.href,user_id:e.user_id,live_id:null,format:void 0,content_type:e.content_type,content_id:e.content_id};F({url:ne().logs,method:"post",data:r})};export{Fe as a,Qe as b,Ve as c,Ue as d,_e as e,Be as f,Me as g,Re as h,$e as i,Ke as j,qe as k,Oe as l,Ce as m,He as n,We as o,je as p,Xe as q,Ye as r,ze as s,et as t,tt as u,rt as v,st as w,at as x,ot as y,it as z,nt as A,lt as B,ct as C,vt as D,bt as E,wt as F,J as G,mt as H,gt as I,a as J,f as K,A as L,jt as M,w as N,Xt as O,Yt as P,Gt as Q,Jt as R,Zt as S,Nt as T,zt as U,er as V,tr as W,rr as X,sr as Y,ar as Z,c as _,cr as $,ur as aa,I as ba,mr as ca,gr as da,F as ea,ne as fa,Ar as ga,Lr as ha,xr as ia,kr as ja,Tr as ka,Dr as la,Ir as ma,Fr as na,Er as oa,Qr as pa,Vr as qa,Ur as ra,_r as sa,Br as ta,Mr as ua,ss as va};
2
+ //# sourceMappingURL=chunk-2RGKXVLI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/videoPlayerLibrary/helpers/configs/nextConfigs/next.config.js","../src/videoPlayerLibrary/helpers/configs/npmPackage/npmPackage.ts","../src/videoPlayerLibrary/helpers/redux/slices/controllerSlice.ts","../src/videoPlayerLibrary/helpers/redux/slices/videoDataSlice.ts","../src/videoPlayerLibrary/helpers/redux/slices/userSlice.ts","../src/videoPlayerLibrary/helpers/redux/store.ts","../src/videoPlayerLibrary/helpers/redux/slices/popoversSlice.ts","../src/videoPlayerLibrary/helpers/interfaces/enums.ts","../src/videoPlayerLibrary/helpers/helpers.ts","../src/videoPlayerLibrary/helpers/conditions/conditions.ts","../src/videoPlayerLibrary/helpers/redux/hooks.ts","../src/videoPlayerLibrary/helpers/constants.ts","../src/videoPlayerLibrary/helpers/logs/logs.ts","../src/videoPlayerLibrary/helpers/logs/fluentdLogger.ts","../src/videoPlayerLibrary/helpers/services/apiCaller.ts","../src/videoPlayerLibrary/helpers/services/services.ts","../src/videoPlayerLibrary/helpers/services/baseUrl.ts"],"sourcesContent":["module.exports = {\r\n baseUrl: \"https://hamrahi.cloud\",\r\n fluentdUrl: \"https://hamrahi.cloud\",\r\n};\r\n","export const isNpmPackage = false;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IControllerSlice } from \"../../interfaces/interfaces\";\r\n\r\nconst ControllerSliceState: IControllerSlice = {\r\n play: false,\r\n isAutoPlay: true,\r\n duration: 0,\r\n currentTime: 0,\r\n qualityLevels: [],\r\n manualQuality: undefined,\r\n autoQuality: undefined,\r\n activeElements: true,\r\n isLoading: false,\r\n isFullScreen: false,\r\n bufferedTimeWidth: 0,\r\n firstPlay: true,\r\n activePointerProgressBar: false,\r\n delayTurnOffControlbar: false,\r\n canPlayVideo: false,\r\n lock: false,\r\n isEnded: false,\r\n tooltipTime: 0,\r\n showMiniPlayer: false,\r\n};\r\n\r\nexport const controllerSlice = createSlice({\r\n name: \"controller\",\r\n initialState: ControllerSliceState,\r\n reducers: {\r\n setPlay: (state, action: PayloadAction<boolean>) => {\r\n state.play = action.payload;\r\n },\r\n setIsAutoPlay: (state, action: PayloadAction<boolean>) => {\r\n state.isAutoPlay = action.payload;\r\n },\r\n setDuration: (state, action: PayloadAction<number>) => {\r\n state.duration = action.payload;\r\n },\r\n setCurrentTime: (state, action: PayloadAction<number>) => {\r\n state.currentTime = action.payload;\r\n },\r\n setManualQuality: (state, action: PayloadAction<number | undefined>) => {\r\n state.manualQuality = action.payload;\r\n },\r\n setAutoQuality: (state, action: PayloadAction<number | undefined>) => {\r\n state.autoQuality = action.payload;\r\n },\r\n setQualityLevels: (state, action: PayloadAction<any[]>) => {\r\n state.qualityLevels = action.payload;\r\n },\r\n setActiveElements: (state, action: PayloadAction<boolean>) => {\r\n state.activeElements = action.payload;\r\n },\r\n setIsLoading: (state, action: PayloadAction<boolean>) => {\r\n state.isLoading = action.payload;\r\n },\r\n setIsFullScreen: (state, action: PayloadAction<boolean>) => {\r\n state.isFullScreen = action.payload;\r\n },\r\n setBufferedTimeWidth: (state, action: PayloadAction<number>) => {\r\n state.bufferedTimeWidth = action.payload;\r\n },\r\n setFirstPlay: (state, action: PayloadAction<boolean>) => {\r\n state.firstPlay = action.payload;\r\n },\r\n setActivePointerProgressBar: (state, action: PayloadAction<boolean>) => {\r\n state.activePointerProgressBar = action.payload;\r\n },\r\n setDelayTurnOffControlbar: (state, action: PayloadAction<boolean>) => {\r\n state.delayTurnOffControlbar = action.payload;\r\n },\r\n setCanPlayVideo: (state, action: PayloadAction<boolean>) => {\r\n state.canPlayVideo = action.payload;\r\n },\r\n setLock: (state, action: PayloadAction<boolean>) => {\r\n state.lock = action.payload;\r\n },\r\n setIsEnded: (state, action: PayloadAction<boolean>) => {\r\n state.isEnded = action.payload;\r\n },\r\n setTooltipTime: (state, action: PayloadAction<number>) => {\r\n state.tooltipTime = action.payload;\r\n },\r\n setShowMiniPlayer: (state, action: PayloadAction<boolean | undefined>) => {\r\n state.showMiniPlayer = action.payload;\r\n },\r\n setClearControllerSlice: () => {\r\n return ControllerSliceState;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setPlay,\r\n setIsAutoPlay,\r\n setDuration,\r\n setCurrentTime,\r\n setQualityLevels,\r\n setAutoQuality,\r\n setActiveElements,\r\n setIsLoading,\r\n setIsFullScreen,\r\n setBufferedTimeWidth,\r\n setFirstPlay,\r\n setActivePointerProgressBar,\r\n setDelayTurnOffControlbar,\r\n setManualQuality,\r\n setCanPlayVideo,\r\n setLock,\r\n setIsEnded,\r\n setTooltipTime,\r\n setShowMiniPlayer,\r\n setClearControllerSlice,\r\n} = controllerSlice.actions;\r\nexport default controllerSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IVideoElementSizeInfo, IDetails, IVideoDataSlice } from \"../../interfaces/interfaces\";\r\n\r\nexport const VideoDataSliceState: IVideoDataSlice = {\r\n details: {\r\n stream_link: \"\",\r\n type: \"\",\r\n banner: \"\",\r\n id: undefined,\r\n title: undefined,\r\n vtt: undefined,\r\n vtt_mobile: undefined,\r\n user_id: null,\r\n content_id: undefined,\r\n content_type: null,\r\n duration: 0,\r\n subtitles: undefined,\r\n },\r\n params: {\r\n src: \"\",\r\n type: \"\",\r\n id: \"\",\r\n bannerAlt: \"\",\r\n fullscreen: \"\",\r\n autoplay: \"\",\r\n cover: \"\",\r\n \"e-url\": \"\",\r\n \"e-cover\": \"\",\r\n scrollElementId: undefined,\r\n provider: \"cafevdo\",\r\n onFinished: undefined,\r\n },\r\n streamLinkParams: \"\",\r\n videoElementSizeInfo: {\r\n bottom: 0,\r\n top: 0,\r\n right: 0,\r\n left: 0,\r\n width: 0,\r\n height: 0\r\n },\r\n isFetchDetails: false,\r\n isValidAddress: false,\r\n videoTimelines: [],\r\n isReady: false,\r\n showCheckInternetSnackBar: false,\r\n subtitles: [],\r\n selectedSubtitle: undefined,\r\n subtitleText: undefined,\r\n};\r\n\r\nexport const videoDataSlice = createSlice({\r\n name: \"videoData\",\r\n initialState: VideoDataSliceState,\r\n reducers: {\r\n setInfo: (state, action: PayloadAction<IDetails>) => {\r\n state.details = action.payload;\r\n },\r\n setPlayerParams: (state, action: PayloadAction<any>) => {\r\n state.params = action.payload;\r\n },\r\n setStreamLinkParams: (state, action: PayloadAction<string>) => {\r\n state.streamLinkParams = action.payload;\r\n },\r\n setVideoElementSizeInfo: (state, action: PayloadAction<IVideoElementSizeInfo>) => {\r\n state.videoElementSizeInfo = action.payload;\r\n },\r\n setIsFetchDetails: (state, action: PayloadAction<boolean>) => {\r\n state.isFetchDetails = action.payload;\r\n },\r\n setIsValidAddress: (state, action: PayloadAction<boolean>) => {\r\n state.isValidAddress = action.payload;\r\n },\r\n setVideoTimelines: (state, action: PayloadAction<number[]>) => {\r\n state.videoTimelines = action.payload;\r\n },\r\n setIsReady: (state, action: PayloadAction<boolean>) => {\r\n state.isReady = action.payload;\r\n },\r\n setShowCheckInternetSnackBar: (state, action: PayloadAction<boolean>) => {\r\n state.showCheckInternetSnackBar = action.payload;\r\n },\r\n setSubtitles: (state, action: PayloadAction<TextTrack[]>) => {\r\n state.subtitles = action.payload;\r\n },\r\n setSelectedSubtitle: (state, action: PayloadAction<any>) => {\r\n state.selectedSubtitle = action.payload;\r\n },\r\n setSubtitleText: (state, action: PayloadAction<string>) => {\r\n state.subtitleText = action.payload;\r\n },\r\n setClearVideoDataSlice: (state) => {\r\n return (state = VideoDataSliceState);\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setInfo,\r\n setPlayerParams,\r\n setStreamLinkParams,\r\n setVideoElementSizeInfo,\r\n setIsFetchDetails,\r\n setIsValidAddress,\r\n setVideoTimelines,\r\n setIsReady,\r\n setShowCheckInternetSnackBar,\r\n setSubtitles,\r\n setSubtitleText,\r\n setSelectedSubtitle,\r\n setClearVideoDataSlice\r\n} = videoDataSlice.actions;\r\nexport default videoDataSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IUserSettings, IUserSlice, IVideoSettings } from \"../../interfaces/interfaces\";\r\n\r\nconst UserSliceState: IUserSlice = {\r\n settings: {\r\n quality: -1,\r\n brightness: 100,\r\n volume: 100,\r\n speed: 1,\r\n },\r\n videoSettings: {\r\n time: 0\r\n },\r\n};\r\n\r\nexport const userSlice = createSlice({\r\n name: \"user\",\r\n initialState: UserSliceState,\r\n reducers: {\r\n setUserSettings: (state, action: PayloadAction<IUserSettings>) => {\r\n state.settings = action.payload;\r\n },\r\n setVideoSettings: (state, action: PayloadAction<IVideoSettings>) => {\r\n state.videoSettings = action.payload;\r\n },\r\n setClearUserSlice: () => {\r\n return UserSliceState;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setUserSettings,\r\n setVideoSettings,\r\n setClearUserSlice\r\n} = userSlice.actions;\r\n\r\nexport default userSlice.reducer;\r\n","import controllerReducer from \"./slices/controllerSlice\";\r\nimport videoDataReducer from \"./slices/videoDataSlice\";\r\nimport popoversReducer from \"./slices/popoversSlice\";\r\nimport userReducer from \"./slices/userSlice\";\r\n\r\nimport { configureStore } from \"@reduxjs/toolkit\";\r\n\r\nconst store = configureStore({\r\n reducer: {\r\n controller: controllerReducer,\r\n videoData: videoDataReducer,\r\n popovers: popoversReducer,\r\n user: userReducer,\r\n },\r\n devTools: true,\r\n middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: false })\r\n});\r\n\r\nexport type RootState = ReturnType<typeof store.getState>;\r\nexport type AppDispatch = typeof store.dispatch;\r\nexport default store;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IPopoversSlice } from \"../../interfaces/interfaces\";\r\n\r\nconst PopOversSliceState: IPopoversSlice = {\r\n settingPopover: false,\r\n speedPopover: false,\r\n qualityLevelsPopover: false\r\n};\r\nexport const popoversSlice = createSlice({\r\n name: \"popover\",\r\n initialState: PopOversSliceState,\r\n reducers: {\r\n setSettingPopover: (state, action: PayloadAction<boolean>) => {\r\n state.settingPopover = action.payload;\r\n },\r\n setSpeedPopover: (state, action: PayloadAction<boolean>) => {\r\n state.speedPopover = action.payload;\r\n },\r\n setQualityLevelsPopover: (state, action: PayloadAction<boolean>) => {\r\n state.qualityLevelsPopover = action.payload;\r\n },\r\n setClearPopoversSlice: (state) => {\r\n state.settingPopover = false;\r\n state.speedPopover = false;\r\n state.qualityLevelsPopover = false;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setSettingPopover,\r\n setSpeedPopover,\r\n setQualityLevelsPopover,\r\n setClearPopoversSlice\r\n} = popoversSlice.actions;\r\n\r\nexport default popoversSlice.reducer;\r\n","export const enum zIndex {\r\n vttDisable = -2,\r\n backwardForwardInActive = 1,\r\n videoPlayer,\r\n mainIcons,\r\n footer,\r\n vtt,\r\n videoPlayerInFullScreen = 1000000,\r\n popoverBlurBackground,\r\n backwardForwardActive,\r\n popoverContent,\r\n maxPopover,\r\n videoPlayerInPictureInPicture,\r\n}\r\n\r\nexport const enum SettingSections {\r\n main = \"main\",\r\n qualityLevels = \"qualityLevels\",\r\n speed = \"speed\"\r\n}\r\n\r\nexport const enum ConditionName {\r\n showHeader = \"showHeader\",\r\n showMain = \"showMain\",\r\n showFooter = \"showFooter\",\r\n showTouchVolumeBrightness = \"showTouchVolumeBrightness\",\r\n showBackwardForward = \"showBackwardForward\",\r\n showTitle = \"showTitle\",\r\n showSettingPopover = \"showSettingPopover\",\r\n showSpeedPopover = \"showSpeedPopover\",\r\n showQualityLevelsPopover = \"showQualityLevelsPopover\",\r\n showSettingIcon = \"showSettingIcon\",\r\n showBanner = \"showBanner\",\r\n showProgressbar = \"showProgressbar\",\r\n showMiniPlayer = \"showMiniPlayer\",\r\n showPictureInPicture = \"showPictureInPicture\",\r\n showSubtitle = \"showSubtitle\",\r\n hidePopovers = \"hidePopovers\",\r\n isLandscape = \"isLandscape\",\r\n isTouchScreen = \"isTouchScreen\",\r\n isTouchScreenPortrait = \"isTouchScreenPortrait\",\r\n isTouchScreenLandscape = \"isTouchScreenLandscape\",\r\n isActiveElements = \"isActiveElements\",\r\n isPlay = \"isPlay\",\r\n isFirstPlay = \"isFirstPlay\",\r\n isLock = \"isLock\",\r\n isIOS = \"isIOS\",\r\n isLoading = \"isLoading\",\r\n isStaticFormat = \"isStaticFormat\",\r\n isEnded = \"isEnded\",\r\n isAutoPlay = \"isAutoPlay\",\r\n isFullScreen = \"isFullScreen\",\r\n isValidAddress = \"isValidAddress\",\r\n isFetchDetails = \"isFetchDetails\",\r\n isAutoQuality = \"isAutoQuality\",\r\n isPressKeySpace = \"isPressKeySpace\",\r\n isPressKeyI = \"isPressKeyI\",\r\n isPressKeyF = \"isPressKeyF\",\r\n isPressKeyS = \"isPressKeyS\",\r\n isPressKeyArrowRight = \"isPressKeyArrowRight\",\r\n isPressKeyArrowLeft = \"isPressKeyArrowLeft\",\r\n isPressKeyM = \"isPressKeyM\",\r\n isPressKeyC = \"isPressKeyC\",\r\n isSendTimelineLog = \"isSendTimelineLog\",\r\n isReady = \"isReady\",\r\n isSelectedSubtitle = \"isSelectedSubtitle\",\r\n hasTitle = \"hasTitle\",\r\n hasBanner = \"hasBanner\",\r\n hasStreamLink = \"hasStreamLink\",\r\n hasManualQuality = \"hasManualQuality\",\r\n hasSound = \"hasSound\",\r\n hasAutoPlay = \"hasAutoPlay\",\r\n hasFullScreenParams = \"hasFullScreenParams\",\r\n hasScrollElementId = \"hasScrollElementId\",\r\n hasOnFinishedParams = \"hasOnFinishedParams\",\r\n hasSubtitles = \"hasSubtitles\",\r\n hasSubtitlesInDetails = \"hasSubtitlesInDetails\",\r\n hasActiveCue = \"hasActiveCue\",\r\n getDetails = \"getDetails\",\r\n canPlayVideo = \"canPlayVideo\",\r\n setSubtitleFirstPlay = \"setSubtitleFirstPlay\"\r\n}","import { conditions } from \"./conditions/conditions\";\r\nimport { ConditionName } from \"./interfaces/enums\";\r\nimport store from \"./redux/store\";\r\nimport { setClearVideoDataSlice, setStreamLinkParams } from \"./redux/slices/videoDataSlice\";\r\nimport { setClearControllerSlice } from \"./redux/slices/controllerSlice\";\r\nimport { setClearUserSlice } from \"./redux/slices/userSlice\";\r\nimport { setClearPopoversSlice } from \"./redux/slices/popoversSlice\";\r\n\r\nexport const wait = (s: number) => new Promise((resolve) => setTimeout(resolve, s * 1000));\r\n\r\nexport const getUUID = () => {\r\n let uuid = localStorage.getItem(\"hamrahiUUID\");\r\n if (!uuid) {\r\n uuid = uuidGenerator();\r\n localStorage.setItem(\"hamrahiUUID\", uuid);\r\n }\r\n return uuid.toString();\r\n};\r\n\r\nexport const uuidGenerator = () => {\r\n let uuid = \"xxxxxxxx-xxxx-Mxxx-Nxxx-x\".replace(/[xMN]/g, (char) => {\r\n let val: number;\r\n if (char === \"M\") val = Math.floor(1 + Math.random() * 5);\r\n else if (char === \"N\") val = Math.floor(8 + Math.random() * 4);\r\n else val = Math.floor(Math.random() * 16);\r\n return val.toString(16);\r\n });\r\n uuid += Date.now().toString(16);\r\n return uuid;\r\n};\r\n\r\nexport const isTouchScreen = () =>\r\n \"ontouchstart\" in window || ((window as any)[\"DocumentTouch\"] && document instanceof (window as any)[\"DocumentTouch\"]);\r\nexport const isTouchScreenLandscape = () => {\r\n const { isFullScreen } = store.getState().controller;\r\n return isTouchScreen() && isFullScreen;\r\n};\r\nexport const isTouchScreenPortrait = () => {\r\n const { isFullScreen } = store.getState().controller;\r\n return isTouchScreen() && !isFullScreen;\r\n};\r\n\r\nexport const isIOS = () => {\r\n return (\r\n [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) ||\r\n // iPad on iOS 13 detection\r\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\r\n );\r\n};\r\n\r\nexport const addZeroBefore = (n: number) => {\r\n return (n < 10 ? \"0\" : \"\") + n;\r\n};\r\n\r\nexport const secondsToHMS = (seconds: number) => {\r\n const h = Math.floor(seconds / 3600);\r\n const m = Math.floor((seconds % 3600) / 60);\r\n const s = Math.floor((seconds % 3600) % 60);\r\n return h < 1 ? `${addZeroBefore(m)}:${addZeroBefore(s)}` : `${addZeroBefore(h)}:${addZeroBefore(m)}:${addZeroBefore(s)}`;\r\n};\r\n\r\nexport const staticFormats = (realFormat: string) => {\r\n if ([\"mp4\", \"mkv\", \"mov\", \"m4v\"].includes(realFormat)) return \"mp4\";\r\n else if (realFormat === \"webm\" || realFormat === \"flv\") return realFormat;\r\n else if ([\"mp3\", \"ogg\"].includes(realFormat)) return \"mp3\";\r\n else return false;\r\n};\r\n\r\nexport const addUuidToSrc = (src: string) => {\r\n const urlObject = new URL(src);\r\n let urlSrc = src;\r\n if (urlObject.search.length) return (urlSrc += `&uuid=${getUUID()}`);\r\n else return (urlSrc += `?uuid=${getUUID()}`);\r\n};\r\n\r\nexport const checkParentTarget = (event: any, target: string) => {\r\n try {\r\n return [\r\n event.target.id,\r\n event.target.parentNode.id,\r\n event.target.parentNode.parentNode.id,\r\n event.target.parentNode.parentNode.parentNode.id,\r\n event.target.parentNode.parentNode.parentNode.parentNode.id\r\n ].includes(target);\r\n } catch (error) {\r\n return false;\r\n }\r\n};\r\n\r\nexport const appendQueryParamsToChunks = (link: string) => {\r\n const dispatch = store.dispatch;\r\n let queryParams: string = \"\";\r\n queryParams = link.split(\"m3u8\")[1];\r\n if (queryParams) queryParams = `${queryParams}&uuid=${getUUID()}`;\r\n else queryParams = `?uuid=${getUUID()}`;\r\n dispatch(setStreamLinkParams(queryParams));\r\n};\r\n\r\nexport const handleRippleCircle = (event: any, id: string) => {\r\n const element: any = document.getElementById(id);\r\n const circle = document.createElement(\"span\");\r\n circle.style.width = circle.style.height = `50px`;\r\n circle.style.left = `${event.touches[0].clientX - element.offsetLeft - 25}px`;\r\n circle.style.top = `${event.touches[0].clientY - element.offsetTop - 25}px`;\r\n circle.classList.add(\"pl-ripple\");\r\n const ripple = element.getElementsByClassName(\"pl-ripple\")[0];\r\n if (ripple) ripple.remove();\r\n element.appendChild(circle);\r\n};\r\n\r\nexport const handleRipple = (event: any, id: string, size: number = 50) => {\r\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\r\n const clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;\r\n const element: any = document.getElementById(id);\r\n const circle = document.createElement(\"span\");\r\n circle.style.width = circle.style.height = `${size}px`;\r\n circle.style.left = `${clientX - size / 2}px`;\r\n circle.style.top = `${clientY - element.getBoundingClientRect().top - size / 2}px`;\r\n circle.classList.add(\"pl-ripple\");\r\n const ripple = element.getElementsByClassName(\"pl-ripple\")[0];\r\n if (ripple) ripple.remove();\r\n element.appendChild(circle);\r\n};\r\n\r\nexport const responseValidator = (status: number): boolean => status >= 200 && status < 300;\r\n\r\nexport const clearRedux = () => {\r\n const dispatch = store.dispatch;\r\n dispatch(setClearVideoDataSlice());\r\n dispatch(setClearControllerSlice());\r\n dispatch(setClearUserSlice());\r\n dispatch(setClearPopoversSlice());\r\n};\r\n\r\nexport const weighted_random = (options: any) => {\r\n let i;\r\n\r\n let weights: any[] = [];\r\n\r\n for (i = 0; i < options.length; i++) weights[i] = options[i].weight + (weights[i - 1] || 0);\r\n\r\n let random = Math.random() * weights[weights.length - 1];\r\n\r\n for (i = 0; i < weights.length; i++) if (weights[i] > random) break;\r\n\r\n return options[i].domain;\r\n};\r\n\r\n// ***** Player Core *****\r\n\r\nexport const handlePageLoadTime = (loadingDurationRef: any) => {\r\n let pageLoadTime = 0;\r\n if (performance && performance.getEntriesByType(\"navigation\")) pageLoadTime = performance.getEntriesByType(\"navigation\")[0].duration;\r\n loadingDurationRef.current = pageLoadTime;\r\n};\r\n\r\nexport const highestResolutionSupported = (resolutions: string[], width: number, height: number) => {\r\n const w = width * window.devicePixelRatio;\r\n const h = height * window.devicePixelRatio;\r\n let filteredResolutions: string[] = [];\r\n if (conditions(ConditionName.isTouchScreenPortrait))\r\n filteredResolutions = resolutions.filter((resolution: string) => Number(resolution.split(\"x\")[0].trim()) <= w);\r\n else\r\n filteredResolutions = resolutions.filter(\r\n (resolution: string) => Number(resolution.split(\"x\")[0].trim()) <= h || Number(resolution.split(\"x\")[1].trim()) <= w\r\n );\r\n return filteredResolutions.indexOf(filteredResolutions[filteredResolutions.length - 1]);\r\n};\r\n\r\nexport const flattenObject = (input: any, keyName?: string) => {\r\n let result: any = {};\r\n for (const key in input) {\r\n const newKey = keyName ? `${keyName}_${key}` : key;\r\n if (typeof input[key] === \"object\" && !Array.isArray(input[key])) result = { ...result, ...flattenObject(input[key], newKey) };\r\n else result[newKey] = input[key];\r\n }\r\n return result;\r\n};\r\n\r\nexport const sortLanguages = (array: any) => {\r\n const priority: any = { fa: 1, en: 2 };\r\n\r\n return array.slice().sort((a: any, b: any) => {\r\n const prioA = priority[a.lang] || 999;\r\n const prioB = priority[b.lang] || 999;\r\n\r\n return prioA - prioB;\r\n });\r\n};\r\n\r\nexport const getSubtitleLabel = (subtitleLanguage: string) => {\r\n let label;\r\n switch (subtitleLanguage) {\r\n case \"fa\":\r\n label = \"فارسی\";\r\n break;\r\n case \"en\":\r\n label = \"انگلیسی\";\r\n break;\r\n case \"ar\":\r\n label = \"عربی\";\r\n break;\r\n case \"tr\":\r\n label = \"ترکی\";\r\n break;\r\n default:\r\n break;\r\n }\r\n return label;\r\n};\r\n\r\nexport const spliteStringPerLine = (str: string) => str.split(/\\r?\\n|\\r|\\n/g);","import { isIOS, isTouchScreen, isTouchScreenLandscape, isTouchScreenPortrait, staticFormats } from \"../helpers\";\r\nimport { ConditionName } from \"../interfaces/enums\";\r\nimport store from \"../redux/store\";\r\n\r\nexport const conditions = (type: string) => {\r\n const {\r\n params,\r\n details,\r\n isValidAddress,\r\n isFetchDetails,\r\n isReady,\r\n subtitles,\r\n showCheckInternetSnackBar,\r\n selectedSubtitle\r\n } = store.getState().videoData;\r\n const {\r\n firstPlay,\r\n lock,\r\n canPlayVideo,\r\n manualQuality,\r\n activeElements,\r\n isLoading,\r\n isEnded,\r\n isAutoPlay,\r\n play,\r\n isFullScreen,\r\n showMiniPlayer,\r\n } = store.getState().controller;\r\n const {\r\n settingPopover,\r\n speedPopover,\r\n qualityLevelsPopover\r\n } = store.getState().popovers;\r\n const { settings } = store.getState().user;\r\n\r\n switch (type) {\r\n case ConditionName.showHeader:\r\n return !firstPlay && canPlayVideo;\r\n case ConditionName.showMain:\r\n return !showCheckInternetSnackBar && (!lock || firstPlay);\r\n case ConditionName.showFooter:\r\n return !firstPlay && canPlayVideo;\r\n case ConditionName.showTouchVolumeBrightness:\r\n return !firstPlay && isTouchScreenLandscape() && !lock && !isEnded;\r\n case ConditionName.showBackwardForward:\r\n return !firstPlay && isTouchScreen() && !lock;\r\n case ConditionName.showTitle:\r\n return !staticFormats(params.type!) && isFullScreen && !lock;\r\n case ConditionName.showSettingPopover:\r\n return settingPopover;\r\n case ConditionName.showSpeedPopover:\r\n return speedPopover;\r\n case ConditionName.showQualityLevelsPopover:\r\n return qualityLevelsPopover;\r\n case ConditionName.showSettingIcon:\r\n return !staticFormats(params.type!) && !isIOS() && !isFullScreen;\r\n case ConditionName.showBanner:\r\n return firstPlay && (details.banner || params.cover);\r\n case ConditionName.showProgressbar:\r\n return !isIOS();\r\n case ConditionName.showMiniPlayer:\r\n return showMiniPlayer;\r\n case ConditionName.showPictureInPicture:\r\n return showMiniPlayer !== true && !isIOS() && !isTouchScreen();\r\n case ConditionName.showSubtitle:\r\n return !!selectedSubtitle && !showMiniPlayer;\r\n case ConditionName.hidePopovers:\r\n return !settingPopover;\r\n case ConditionName.isLandscape:\r\n return window.innerHeight <= window.innerWidth;\r\n case ConditionName.isTouchScreen:\r\n return isTouchScreen();\r\n case ConditionName.isTouchScreenPortrait:\r\n return isTouchScreenPortrait();\r\n case ConditionName.isTouchScreenLandscape:\r\n return isTouchScreenLandscape();\r\n case ConditionName.isActiveElements:\r\n return activeElements;\r\n case ConditionName.isPlay:\r\n return play;\r\n case ConditionName.isFirstPlay:\r\n return firstPlay;\r\n case ConditionName.isLock:\r\n return lock;\r\n case ConditionName.isIOS:\r\n return isIOS();\r\n case ConditionName.isLoading:\r\n return isLoading;\r\n case ConditionName.isStaticFormat:\r\n return staticFormats(params.type!);\r\n case ConditionName.isEnded:\r\n return isEnded;\r\n case ConditionName.isAutoPlay:\r\n return isAutoPlay;\r\n case ConditionName.isFullScreen:\r\n return isFullScreen;\r\n case ConditionName.isValidAddress:\r\n return isValidAddress;\r\n case ConditionName.isFetchDetails:\r\n return isFetchDetails;\r\n case ConditionName.isAutoQuality:\r\n return settings.quality === -1;\r\n case ConditionName.isPressKeySpace:\r\n return !lock;\r\n case ConditionName.isPressKeyI:\r\n return !lock && !firstPlay && !showMiniPlayer;\r\n case ConditionName.isPressKeyF:\r\n return !lock && !firstPlay && !showMiniPlayer;\r\n case ConditionName.isPressKeyS:\r\n return !lock && !firstPlay;\r\n case ConditionName.isPressKeyArrowRight:\r\n return !firstPlay && !lock;\r\n case ConditionName.isPressKeyArrowLeft:\r\n return !firstPlay && !lock;\r\n case ConditionName.isPressKeyM:\r\n return !firstPlay && !lock;\r\n case ConditionName.isPressKeyC:\r\n return !lock && !firstPlay && !showMiniPlayer && !!subtitles && subtitles.length > 0;\r\n case ConditionName.isSendTimelineLog:\r\n return !staticFormats(params.type!);\r\n case ConditionName.isReady:\r\n return isReady;\r\n case ConditionName.isSelectedSubtitle:\r\n return !!subtitles && subtitles.length > 0 && selectedSubtitle;\r\n case ConditionName.hasTitle:\r\n return details.title;\r\n case ConditionName.hasBanner:\r\n return details.banner;\r\n case ConditionName.hasStreamLink:\r\n return details.stream_link;\r\n case ConditionName.hasManualQuality:\r\n return manualQuality !== undefined && manualQuality !== null;\r\n case ConditionName.hasSound:\r\n return !!settings.volume;\r\n case ConditionName.hasAutoPlay:\r\n return params.autoplay === \"true\";\r\n case ConditionName.hasFullScreenParams:\r\n return params.fullscreen === \"true\";\r\n case ConditionName.hasScrollElementId:\r\n return !!params.scrollElementId && showMiniPlayer !== undefined;\r\n case ConditionName.hasOnFinishedParams:\r\n return !!params.onFinished;\r\n case ConditionName.hasSubtitles:\r\n return !!subtitles && subtitles.length > 0 && !showMiniPlayer;\r\n case ConditionName.hasSubtitlesInDetails:\r\n return details.subtitles && details.subtitles.length > 0;\r\n case ConditionName.hasActiveCue:\r\n return selectedSubtitle && selectedSubtitle.activeCues && selectedSubtitle.activeCues.length > 0;\r\n case ConditionName.getDetails:\r\n return !!params.type && params.id;\r\n case ConditionName.canPlayVideo:\r\n return canPlayVideo;\r\n case ConditionName.setSubtitleFirstPlay:\r\n return details.subtitles && details.subtitles.length > 0 && !firstPlay && !staticFormats(params.type!);\r\n default:\r\n break;\r\n }\r\n};\r\n","import { AppDispatch, RootState } from \"./store\";\r\nimport { TypedUseSelectorHook, useDispatch, useSelector } from \"react-redux\";\r\n\r\nexport const useAppDispatch: any = () => useDispatch<AppDispatch>();\r\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;\r\n","import store from \"./redux/store\";\r\n\r\nexport const videoTag = () => document.getElementById(\"player-tag\") as HTMLVideoElement;\r\nexport const progressBar = () => document.getElementById(\"time-progress-bar\") as any;\r\nexport const progressBarWidth = () => store.getState().videoData.videoElementSizeInfo.width - 2;","import { conditions } from \"../conditions/conditions\";\r\nimport { videoTag } from \"../constants\";\r\nimport { flattenObject, getUUID } from \"../helpers\";\r\nimport { ConditionName } from \"../interfaces/enums\";\r\nimport store from \"../redux/store\";\r\n\r\nexport const speedChangeLog = (selectedSpeed: Number) => {\r\n const { params, details } = store.getState().videoData;\r\n const { settings } = store.getState().user;\r\n return {\r\n category: \"speedChange\",\r\n previousSelectedSpeed: settings.speed,\r\n selectedSpeed: selectedSpeed,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const qualityChangeRequestLog = (selectedQuality: String) => {\r\n const { params, details } = store.getState().videoData;\r\n const { qualityLevels, manualQuality, autoQuality } = store.getState().controller;\r\n return {\r\n category: \"qualityChangeRequest\",\r\n currentPlayingQuality: `${qualityLevels[conditions(ConditionName.isAutoQuality) ? autoQuality ?? manualQuality! : manualQuality!]}P`,\r\n previousSelectedQuality: conditions(ConditionName.isAutoQuality) ? \"auto\" : `${qualityLevels[manualQuality!]}P`,\r\n selectedQuality: selectedQuality,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const catchUpLoadingLog = (duration: number) => {\r\n const { params, details } = store.getState().videoData;\r\n const { qualityLevels, autoQuality } = store.getState().controller;\r\n const { settings } = store.getState().user;\r\n\r\n return {\r\n category: \"catchUpLoading\",\r\n previousVideoTime: Number(sessionStorage.getItem(\"previousVideoTime\")),\r\n currentVideoTime: videoTag().currentTime,\r\n duration: duration,\r\n quality: `${conditions(ConditionName.isAutoQuality) ? qualityLevels[autoQuality!] : qualityLevels[settings.quality]}P`,\r\n isAutoQuality: conditions(ConditionName.isAutoQuality),\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const backwardForwardLog = (type: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: type === \"backward\" ? \"backward\" : \"forward\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: details.stream_link ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const fullscreenLog = (category: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: category,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const brightnessLog = (source: number, target: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"brightnessChange\",\r\n source: source,\r\n target: target,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const volumeLog = (source: number, target: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"volumeChange\",\r\n source: source,\r\n target: target,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const lockLog = (category: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: category,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const ExceptionsLog = (type: string, message: string) => {\r\n return {\r\n category: \"error\",\r\n type: type,\r\n message: message\r\n };\r\n};\r\n\r\nexport const videoTimelineLog = (start: number, end: number) => {\r\n const { params, details } = store.getState().videoData;\r\n const { duration } = store.getState().controller;\r\n return {\r\n category: \"video-timeline\",\r\n video_id: +params.id!,\r\n video_type: params.type,\r\n start: start,\r\n end: end,\r\n watchedDuration: end - start,\r\n video_duration: Math.floor(duration),\r\n clientUUID: getUUID(),\r\n user_id: details.user_id,\r\n content_type: details.content_type,\r\n content_id: details.content_id\r\n };\r\n};\r\n\r\nexport const autoQualityChangeLog = (sourceQuality: String, targetQuality: String, diffQuality: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"autoQualityChange\",\r\n sourceQuality: sourceQuality,\r\n targetQuality: targetQuality,\r\n diffQuality: diffQuality,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const pingpongLog = (startTimer: number, qualityHistory: number[]) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"pingpong\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n PingPongDuration: Number((new Date().getTime() - startTimer).toFixed(2)),\r\n PingPongSourceQuality: `${qualityHistory[0]}P`, // A A->B && B->A\r\n PingPongTargetQuality: `${qualityHistory[1]}P`, // B,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const pausePlayLog = (isPlay: boolean) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: isPlay ? \"playVideo\" : \"pauseVideo\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: details.stream_link ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const initLog = (loadingTime: number, waitingTime: number, bannerLoadingTime: number, firstChunkPlayingTime: number, timerRef: any) => {\r\n const { params, details } = store.getState().videoData;\r\n const totalTime = Date.now() - timerRef.current + loadingTime + waitingTime;\r\n const memory = (window.performance as any).memory;\r\n const timing = JSON.parse(JSON.stringify((window.performance as any).timing));\r\n return {\r\n category: \"initLog\",\r\n id: Number(params.id),\r\n type: params.type,\r\n origin: new URL(conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src!).origin,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n loading: loadingTime,\r\n bannerLoading: !conditions(ConditionName.hasBanner) || bannerLoadingTime < 0 ? 0 : bannerLoadingTime,\r\n waiting: waitingTime,\r\n firstChunkPlaying: firstChunkPlayingTime < 0 ? 0 : firstChunkPlayingTime,\r\n totalTime: totalTime,\r\n provider: params.provider,\r\n performance: flattenObject({ memory, timing }, \"performance\"),\r\n userAgent: window.navigator.userAgent\r\n };\r\n};\r\n\r\nexport const loadingLog = (waitingDuration: number, qualityLevel: number, timerRef: any, loadingCounterRef: any, videoEntranceTime: number) => {\r\n const { params, details } = store.getState().videoData;\r\n const { settings } = store.getState().user;\r\n const previousLoaderDiff = Date.now() - timerRef.current;\r\n return {\r\n category: \"loading\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n duration: waitingDuration,\r\n quality: `${qualityLevel}P`,\r\n isAutoQuality: conditions(ConditionName.isAutoQuality),\r\n previousLoaderDiff: previousLoaderDiff,\r\n counter: loadingCounterRef.current,\r\n loadingPercentile: Number((waitingDuration / previousLoaderDiff).toFixed(2)),\r\n videoTime: videoTag().currentTime,\r\n videoEntranceTime: videoEntranceTime,\r\n speed: settings.speed,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const subtitleLog = (language: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"subtitle\",\r\n language: language,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};","import store from \"../redux/store\";\r\nimport { apiCaller } from \"../services/apiCaller\";\r\nimport { API } from \"../services/services\";\r\nimport { getUUID } from \"../helpers\";\r\n\r\nexport const sendFluentLog = (data: any) => {\r\n const { details } = store.getState().videoData;\r\n let _data = {\r\n ...data,\r\n timestamp: Date.now(),\r\n clientUUID: getUUID(),\r\n uuid: getUUID(),\r\n link: window.location.href,\r\n user_id: details.user_id,\r\n live_id: null,\r\n format: undefined,\r\n content_type: details.content_type,\r\n content_id: details.content_id\r\n };\r\n apiCaller({ url: API().logs, method: \"post\", data: _data });\r\n};\r\n","import axios from \"axios\";\r\nimport { IApiCaller, IAxiosConfig } from \"../interfaces/interfaces\";\r\nimport store from \"../redux/store\";\r\nimport { wait } from \"../helpers\";\r\n\r\nexport const apiCaller: any = async ({\r\n url,\r\n method = \"GET\",\r\n data,\r\n headers,\r\n retryCount = 1,\r\n maxRetryCount = 0,\r\n errorMessage,\r\n retryPolicy,\r\n errorCallback,\r\n timeoutCount\r\n}: IApiCaller) => {\r\n let axiosConfig: IAxiosConfig = {\r\n url: url,\r\n method: method,\r\n headers: {\r\n ...headers,\r\n \"Content-Type\": \"application/json\"\r\n },\r\n timeout: timeoutCount ? timeoutCount * 1000 : undefined\r\n };\r\n if (data) {\r\n if (method === \"GET\")\r\n axiosConfig = {\r\n ...axiosConfig,\r\n params: {\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\r\n ...data\r\n }\r\n };\r\n else\r\n axiosConfig = {\r\n ...axiosConfig,\r\n data: {\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\r\n ...data\r\n }\r\n };\r\n } else {\r\n if (method === \"GET\")\r\n axiosConfig = {\r\n ...axiosConfig,\r\n params: {\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider\r\n }\r\n };\r\n else\r\n axiosConfig = {\r\n ...axiosConfig,\r\n data: {\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider\r\n }\r\n };\r\n }\r\n try {\r\n return await axios(axiosConfig);\r\n } catch (error: any) {\r\n if (error && error.response && error.response.status === 401) {\r\n // \r\n } else {\r\n if (errorCallback) errorCallback(error.response.status, error.response.message);\r\n let newRetryDelay = 0,\r\n newMaxRetryCount = 0;\r\n if (retryPolicy !== undefined) {\r\n for (let i = 0; i < retryPolicy.length; i++) {\r\n if (\r\n (((retryPolicy[i].codeAbove && error.response.status >= retryPolicy[i].codeAbove!) ||\r\n (retryPolicy[i].codeBelow && error.response.status <= retryPolicy[i].codeBelow!)) &&\r\n (retryPolicy[i].excludeCodes.length === 0 || !retryPolicy[i].excludeCodes.includes(error.response.status))) ||\r\n retryPolicy[i].includeCodes.length === 0 ||\r\n retryPolicy[i].includeCodes.includes(error.response.status)\r\n ) {\r\n newMaxRetryCount = retryPolicy[i].count;\r\n newRetryDelay = retryPolicy[i].delay;\r\n break;\r\n }\r\n }\r\n } else {\r\n newMaxRetryCount = maxRetryCount;\r\n newRetryDelay = retryCount + 1;\r\n }\r\n if (retryCount < newMaxRetryCount) {\r\n await wait(newRetryDelay);\r\n return apiCaller({\r\n url,\r\n method,\r\n data,\r\n headers,\r\n retryCount: retryCount + 1,\r\n newMaxRetryCount,\r\n errorMessage,\r\n retryPolicy,\r\n errorCallback\r\n });\r\n } else if (error.response)\r\n return {\r\n data: error.response.data ? error.response.data : { detail: \"عملیات با خطا مواجه شده است.\" },\r\n status: error.response.status\r\n };\r\n }\r\n }\r\n};\r\n","import {\r\n getFluentdUrl,\r\n getRestApiLiveUrl,\r\n} from \"./baseUrl\";\r\n\r\nexport const API = () => {\r\n return {\r\n vod: {\r\n getVodUrl: `${getRestApiLiveUrl()}/v1/live/details/vod/`,\r\n },\r\n viewCount: (content_id: number) => `${getRestApiLiveUrl()}/v1/viewed/content/${content_id}`,\r\n videoTimelineLog: `${getFluentdUrl()}/video-timeline.log`,\r\n logs: `${getFluentdUrl()}/drive-endpoint.log`,\r\n };\r\n};","const envs = require(\"../configs/nextConfigs/next.config.js\");\r\nconst isNpmPackage = require(\"../configs/npmPackage/npmPackage\");\r\n\r\nexport const getRestApiLiveUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string)) + \"/live/api\";\r\nexport const getFluentdUrl = () => (isNpmPackage ? envs.fluentdUrl : (process.env.fluentdUrl as string));\r\n"],"mappings":"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","names":["require_next_config","__commonJSMin","exports","module","init_esm_shims","npmPackage_exports","__export","isNpmPackage","init_npmPackage","__esmMin","init_esm_shims","init_esm_shims","createSlice","ControllerSliceState","controllerSlice","state","action","setPlay","setIsAutoPlay","setDuration","setCurrentTime","setQualityLevels","setAutoQuality","setActiveElements","setIsLoading","setIsFullScreen","setBufferedTimeWidth","setFirstPlay","setActivePointerProgressBar","setDelayTurnOffControlbar","setManualQuality","setCanPlayVideo","setLock","setIsEnded","setTooltipTime","setShowMiniPlayer","setClearControllerSlice","controllerSlice_default","init_esm_shims","createSlice","VideoDataSliceState","videoDataSlice","state","action","setInfo","setPlayerParams","setStreamLinkParams","setVideoElementSizeInfo","setIsFetchDetails","setIsValidAddress","setVideoTimelines","setIsReady","setShowCheckInternetSnackBar","setSubtitles","setSubtitleText","setSelectedSubtitle","setClearVideoDataSlice","videoDataSlice_default","init_esm_shims","createSlice","UserSliceState","userSlice","state","action","setUserSettings","setVideoSettings","setClearUserSlice","userSlice_default","init_esm_shims","init_esm_shims","createSlice","PopOversSliceState","popoversSlice","state","action","setSettingPopover","setSpeedPopover","setQualityLevelsPopover","setClearPopoversSlice","popoversSlice_default","configureStore","store","controllerSlice_default","videoDataSlice_default","popoversSlice_default","userSlice_default","getDefaultMiddleware","store_default","init_esm_shims","init_esm_shims","init_esm_shims","conditions","type","params","details","isValidAddress","isFetchDetails","isReady","subtitles","showCheckInternetSnackBar","selectedSubtitle","store_default","firstPlay","lock","canPlayVideo","manualQuality","activeElements","isLoading","isEnded","isAutoPlay","play","isFullScreen","showMiniPlayer","settingPopover","speedPopover","qualityLevelsPopover","settings","isTouchScreenLandscape","isTouchScreen","staticFormats","isIOS","isTouchScreenPortrait","wait","s","resolve","getUUID","uuid","uuidGenerator","char","val","isTouchScreen","isTouchScreenLandscape","isFullScreen","store_default","isTouchScreenPortrait","isIOS","addZeroBefore","n","secondsToHMS","seconds","h","m","staticFormats","realFormat","addUuidToSrc","src","urlObject","urlSrc","checkParentTarget","event","target","appendQueryParamsToChunks","link","dispatch","queryParams","setStreamLinkParams","handleRippleCircle","id","element","circle","ripple","responseValidator","status","clearRedux","dispatch","store_default","setClearVideoDataSlice","setClearControllerSlice","setClearUserSlice","setClearPopoversSlice","weighted_random","options","i","weights","random","handlePageLoadTime","loadingDurationRef","pageLoadTime","highestResolutionSupported","resolutions","width","height","w","h","filteredResolutions","conditions","resolution","flattenObject","input","keyName","result","key","newKey","sortLanguages","array","priority","a","b","prioA","prioB","getSubtitleLabel","subtitleLanguage","label","spliteStringPerLine","str","init_esm_shims","useDispatch","useSelector","useAppDispatch","useAppSelector","init_esm_shims","videoTag","progressBar","progressBarWidth","store_default","init_esm_shims","speedChangeLog","selectedSpeed","params","details","store_default","settings","conditions","qualityChangeRequestLog","selectedQuality","qualityLevels","manualQuality","autoQuality","catchUpLoadingLog","duration","videoTag","backwardForwardLog","type","fullscreenLog","category","brightnessLog","source","target","volumeLog","lockLog","videoTimelineLog","start","end","params","details","store_default","duration","getUUID","autoQualityChangeLog","sourceQuality","targetQuality","diffQuality","conditions","pingpongLog","startTimer","qualityHistory","pausePlayLog","isPlay","initLog","loadingTime","waitingTime","bannerLoadingTime","firstChunkPlayingTime","timerRef","totalTime","memory","timing","flattenObject","loadingLog","waitingDuration","qualityLevel","loadingCounterRef","videoEntranceTime","settings","previousLoaderDiff","videoTag","subtitleLog","language","init_esm_shims","init_esm_shims","axios","apiCaller","url","method","data","headers","retryCount","maxRetryCount","errorMessage","retryPolicy","errorCallback","timeoutCount","axiosConfig","store_default","axios","error","newRetryDelay","newMaxRetryCount","i","wait","init_esm_shims","init_esm_shims","envs","isNpmPackage","getRestApiLiveUrl","getFluentdUrl","API","getRestApiLiveUrl","content_id","getFluentdUrl","sendFluentLog","data","details","store_default","_data","getUUID","apiCaller","API"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkA3BCKK27js = require('./chunk-A3BCKK27.js');var te=_chunkA3BCKK27js.b.call(void 0, (Hr,ee)=>{_chunkA3BCKK27js.e.call(void 0, );ee.exports={baseUrl:"https://hamrahi.cloud",fluentdUrl:"https://hamrahi.cloud"}});var re={};_chunkA3BCKK27js.c.call(void 0, re,{isNpmPackage:()=>ke});var ke,se=_chunkA3BCKK27js.a.call(void 0, ()=>{_chunkA3BCKK27js.e.call(void 0, );ke=!1});_chunkA3BCKK27js.e.call(void 0, );var _toolkit = require('@reduxjs/toolkit');var _={play:!1,isAutoPlay:!0,duration:0,currentTime:0,qualityLevels:[],manualQuality:void 0,autoQuality:void 0,activeElements:!0,isLoading:!1,isFullScreen:!1,bufferedTimeWidth:0,firstPlay:!0,activePointerProgressBar:!1,delayTurnOffControlbar:!1,canPlayVideo:!1,lock:!1,isEnded:!1,tooltipTime:0,showMiniPlayer:!1},B=_toolkit.createSlice.call(void 0, {name:"controller",initialState:_,reducers:{setPlay:(t,e)=>{t.play=e.payload},setIsAutoPlay:(t,e)=>{t.isAutoPlay=e.payload},setDuration:(t,e)=>{t.duration=e.payload},setCurrentTime:(t,e)=>{t.currentTime=e.payload},setManualQuality:(t,e)=>{t.manualQuality=e.payload},setAutoQuality:(t,e)=>{t.autoQuality=e.payload},setQualityLevels:(t,e)=>{t.qualityLevels=e.payload},setActiveElements:(t,e)=>{t.activeElements=e.payload},setIsLoading:(t,e)=>{t.isLoading=e.payload},setIsFullScreen:(t,e)=>{t.isFullScreen=e.payload},setBufferedTimeWidth:(t,e)=>{t.bufferedTimeWidth=e.payload},setFirstPlay:(t,e)=>{t.firstPlay=e.payload},setActivePointerProgressBar:(t,e)=>{t.activePointerProgressBar=e.payload},setDelayTurnOffControlbar:(t,e)=>{t.delayTurnOffControlbar=e.payload},setCanPlayVideo:(t,e)=>{t.canPlayVideo=e.payload},setLock:(t,e)=>{t.lock=e.payload},setIsEnded:(t,e)=>{t.isEnded=e.payload},setTooltipTime:(t,e)=>{t.tooltipTime=e.payload},setShowMiniPlayer:(t,e)=>{t.showMiniPlayer=e.payload},setClearControllerSlice:()=>_}}),{setPlay:Ie,setIsAutoPlay:Fe,setDuration:Ee,setCurrentTime:Qe,setQualityLevels:Ve,setAutoQuality:Ue,setActiveElements:_e,setIsLoading:Be,setIsFullScreen:Me,setBufferedTimeWidth:Re,setFirstPlay:$e,setActivePointerProgressBar:Ke,setDelayTurnOffControlbar:qe,setManualQuality:Oe,setCanPlayVideo:Ce,setLock:He,setIsEnded:We,setTooltipTime:je,setShowMiniPlayer:Xe,setClearControllerSlice:M}=B.actions,R=B.reducer;_chunkA3BCKK27js.e.call(void 0, );var $={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:{src:"",type:"",id:"",bannerAlt:"",fullscreen:"",autoplay:"",cover:"","e-url":"","e-cover":"",scrollElementId:void 0,provider:"cafevdo",onFinished:void 0},streamLinkParams:"",videoElementSizeInfo:{bottom:0,top:0,right:0,left:0,width:0,height:0},isFetchDetails:!1,isValidAddress:!1,videoTimelines:[],isReady:!1,showCheckInternetSnackBar:!1,subtitles:[],selectedSubtitle:void 0,subtitleText:void 0},K=_toolkit.createSlice.call(void 0, {name:"videoData",initialState:$,reducers:{setInfo:(t,e)=>{t.details=e.payload},setPlayerParams:(t,e)=>{t.params=e.payload},setStreamLinkParams:(t,e)=>{t.streamLinkParams=e.payload},setVideoElementSizeInfo:(t,e)=>{t.videoElementSizeInfo=e.payload},setIsFetchDetails:(t,e)=>{t.isFetchDetails=e.payload},setIsValidAddress:(t,e)=>{t.isValidAddress=e.payload},setVideoTimelines:(t,e)=>{t.videoTimelines=e.payload},setIsReady:(t,e)=>{t.isReady=e.payload},setShowCheckInternetSnackBar:(t,e)=>{t.showCheckInternetSnackBar=e.payload},setSubtitles:(t,e)=>{t.subtitles=e.payload},setSelectedSubtitle:(t,e)=>{t.selectedSubtitle=e.payload},setSubtitleText:(t,e)=>{t.subtitleText=e.payload},setClearVideoDataSlice:t=>t=$}}),{setInfo:Ne,setPlayerParams:ze,setStreamLinkParams:q,setVideoElementSizeInfo:et,setIsFetchDetails:tt,setIsValidAddress:rt,setVideoTimelines:st,setIsReady:at,setShowCheckInternetSnackBar:ot,setSubtitles:it,setSubtitleText:nt,setSelectedSubtitle:lt,setClearVideoDataSlice:O}=K.actions,C=K.reducer;_chunkA3BCKK27js.e.call(void 0, );var H={settings:{quality:-1,brightness:100,volume:100,speed:1},videoSettings:{time:0}},W=_toolkit.createSlice.call(void 0, {name:"user",initialState:H,reducers:{setUserSettings:(t,e)=>{t.settings=e.payload},setVideoSettings:(t,e)=>{t.videoSettings=e.payload},setClearUserSlice:()=>H}}),{setUserSettings:yt,setVideoSettings:mt,setClearUserSlice:j}=W.actions,X=W.reducer;_chunkA3BCKK27js.e.call(void 0, );_chunkA3BCKK27js.e.call(void 0, );var Pe={settingPopover:!1,speedPopover:!1,qualityLevelsPopover:!1},Y=_toolkit.createSlice.call(void 0, {name:"popover",initialState:Pe,reducers:{setSettingPopover:(t,e)=>{t.settingPopover=e.payload},setSpeedPopover:(t,e)=>{t.speedPopover=e.payload},setQualityLevelsPopover:(t,e)=>{t.qualityLevelsPopover=e.payload},setClearPopoversSlice:t=>{t.settingPopover=!1,t.speedPopover=!1,t.qualityLevelsPopover=!1}}}),{setSettingPopover:Pt,setSpeedPopover:vt,setQualityLevelsPopover:bt,setClearPopoversSlice:G}=Y.actions,J=Y.reducer;var be=_toolkit.configureStore.call(void 0, {reducer:{controller:R,videoData:C,popovers:J,user:X},devTools:!0,middleware:t=>t({serializableCheck:!1})}),a= exports.J =be;_chunkA3BCKK27js.e.call(void 0, );_chunkA3BCKK27js.e.call(void 0, );_chunkA3BCKK27js.e.call(void 0, );var c=t=>{let{params:e,details:r,isValidAddress:s,isFetchDetails:i,isReady:n,subtitles:p,showCheckInternetSnackBar:d,selectedSubtitle:g}=a.getState().videoData,{firstPlay:u,lock:l,canPlayVideo:y,manualQuality:P,activeElements:v,isLoading:h,isEnded:Q,isAutoPlay:ne,play:le,isFullScreen:x,showMiniPlayer:f}=a.getState().controller,{settingPopover:V,speedPopover:ce,qualityLevelsPopover:ue}=a.getState().popovers,{settings:U}=a.getState().user;switch(t){case"showHeader":return!u&&y;case"showMain":return!d&&(!l||u);case"showFooter":return!u&&y;case"showTouchVolumeBrightness":return!u&&k()&&!l&&!Q;case"showBackwardForward":return!u&&w()&&!l;case"showTitle":return!b(e.type)&&x&&!l;case"showSettingPopover":return V;case"showSpeedPopover":return ce;case"showQualityLevelsPopover":return ue;case"showSettingIcon":return!b(e.type)&&!A()&&!x;case"showBanner":return u&&(r.banner||e.cover);case"showProgressbar":return!A();case"showMiniPlayer":return f;case"showPictureInPicture":return f!==!0&&!A()&&!w();case"showSubtitle":return!!g&&!f;case"hidePopovers":return!V;case"isLandscape":return window.innerHeight<=window.innerWidth;case"isTouchScreen":return w();case"isTouchScreenPortrait":return N();case"isTouchScreenLandscape":return k();case"isActiveElements":return v;case"isPlay":return le;case"isFirstPlay":return u;case"isLock":return l;case"isIOS":return A();case"isLoading":return h;case"isStaticFormat":return b(e.type);case"isEnded":return Q;case"isAutoPlay":return ne;case"isFullScreen":return x;case"isValidAddress":return s;case"isFetchDetails":return i;case"isAutoQuality":return U.quality===-1;case"isPressKeySpace":return!l;case"isPressKeyI":return!l&&!u&&!f;case"isPressKeyF":return!l&&!u&&!f;case"isPressKeyS":return!l&&!u;case"isPressKeyArrowRight":return!u&&!l;case"isPressKeyArrowLeft":return!u&&!l;case"isPressKeyM":return!u&&!l;case"isPressKeyC":return!l&&!u&&!f&&!!p&&p.length>0;case"isSendTimelineLog":return!b(e.type);case"isReady":return n;case"isSelectedSubtitle":return!!p&&p.length>0&&g;case"hasTitle":return r.title;case"hasBanner":return r.banner;case"hasStreamLink":return r.stream_link;case"hasManualQuality":return P!=null;case"hasSound":return!!U.volume;case"hasAutoPlay":return e.autoplay==="true";case"hasFullScreenParams":return e.fullscreen==="true";case"hasScrollElementId":return!!e.scrollElementId&&f!==void 0;case"hasOnFinishedParams":return!!e.onFinished;case"hasSubtitles":return!!p&&p.length>0&&!f;case"hasSubtitlesInDetails":return r.subtitles&&r.subtitles.length>0;case"hasActiveCue":return g&&g.activeCues&&g.activeCues.length>0;case"getDetails":return!!e.type&&e.id;case"canPlayVideo":return y;case"setSubtitleFirstPlay":return r.subtitles&&r.subtitles.length>0&&!u&&!b(e.type);default:break}};var z=t=>new Promise(e=>setTimeout(e,t*1e3)),S= exports.K =()=>{let t=localStorage.getItem("hamrahiUUID");return t||(t=we(),localStorage.setItem("hamrahiUUID",t)),t.toString()},we=()=>{let t="xxxxxxxx-xxxx-Mxxx-Nxxx-x".replace(/[xMN]/g,e=>{let r;return e==="M"?r=Math.floor(1+Math.random()*5):e==="N"?r=Math.floor(8+Math.random()*4):r=Math.floor(Math.random()*16),r.toString(16)});return t+=Date.now().toString(16),t},w= exports.L =()=>"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,k=()=>{let{isFullScreen:t}=a.getState().controller;return w()&&t},N=()=>{let{isFullScreen:t}=a.getState().controller;return w()&&!t},A=()=>["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,L=t=>(t<10?"0":"")+t,Wt= exports.M =t=>{let e=Math.floor(t/3600),r=Math.floor(t%3600/60),s=Math.floor(t%3600%60);return e<1?`${L(r)}:${L(s)}`:`${L(e)}:${L(r)}:${L(s)}`},b= exports.N =t=>["mp4","mkv","mov","m4v"].includes(t)?"mp4":t==="webm"||t==="flv"?t:["mp3","ogg"].includes(t)?"mp3":!1,jt= exports.O =t=>{let e=new URL(t),r=t;return e.search.length?r+=`&uuid=${S()}`:r+=`?uuid=${S()}`},Xt= exports.P =(t,e)=>{try{return[t.target.id,t.target.parentNode.id,t.target.parentNode.parentNode.id,t.target.parentNode.parentNode.parentNode.id,t.target.parentNode.parentNode.parentNode.parentNode.id].includes(e)}catch (e2){return!1}},Yt= exports.Q =t=>{let e=a.dispatch,r="";r=t.split("m3u8")[1],r?r=`${r}&uuid=${S()}`:r=`?uuid=${S()}`,e(q(r))},Gt= exports.R =(t,e)=>{let r=document.getElementById(e),s=document.createElement("span");s.style.width=s.style.height="50px",s.style.left=`${t.touches[0].clientX-r.offsetLeft-25}px`,s.style.top=`${t.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 Jt=t=>t>=200&&t<300,Zt= exports.T =()=>{let t=a.dispatch;t(O()),t(M()),t(j()),t(G())},Nt= exports.U =t=>{let e,r=[];for(e=0;e<t.length;e++)r[e]=t[e].weight+(r[e-1]||0);let s=Math.random()*r[r.length-1];for(e=0;e<r.length&&!(r[e]>s);e++);return t[e].domain},zt= exports.V =t=>{let e=0;performance&&performance.getEntriesByType("navigation")&&(e=performance.getEntriesByType("navigation")[0].duration),t.current=e},er= exports.W =(t,e,r)=>{let s=e*window.devicePixelRatio,i=r*window.devicePixelRatio,n=[];return c("isTouchScreenPortrait")?n=t.filter(p=>Number(p.split("x")[0].trim())<=s):n=t.filter(p=>Number(p.split("x")[0].trim())<=i||Number(p.split("x")[1].trim())<=s),n.indexOf(n[n.length-1])},T=(t,e)=>{let r={};for(let s in t){let i=e?`${e}_${s}`:s;typeof t[s]=="object"&&!Array.isArray(t[s])?r={...r,...T(t[s],i)}:r[i]=t[s]}return r},tr= exports.X =t=>{let e={fa:1,en:2};return t.slice().sort((r,s)=>{let i=e[r.lang]||999,n=e[s.lang]||999;return i-n})},rr= exports.Y =t=>{let e;switch(t){case"fa":e="\u0641\u0627\u0631\u0633\u06CC";break;case"en":e="\u0627\u0646\u06AF\u0644\u06CC\u0633\u06CC";break;case"ar":e="\u0639\u0631\u0628\u06CC";break;case"tr":e="\u062A\u0631\u06A9\u06CC";break;default:break}return e},sr= exports.Z =t=>t.split(/\r?\n|\r|\n/g);_chunkA3BCKK27js.e.call(void 0, );var _reactredux = require('react-redux');var lr=()=>_reactredux.useDispatch.call(void 0, ),cr= exports.aa =_reactredux.useSelector;_chunkA3BCKK27js.e.call(void 0, );var D=()=>document.getElementById("player-tag"),yr= exports.ca =()=>document.getElementById("time-progress-bar"),mr= exports.da =()=>a.getState().videoData.videoElementSizeInfo.width-2;_chunkA3BCKK27js.e.call(void 0, );var wr=t=>{let{params:e,details:r}=a.getState().videoData,{settings:s}=a.getState().user;return{category:"speedChange",previousSelectedSpeed:s.speed,selectedSpeed:t,id:Number(e.id),type:e.type,src:c("hasStreamLink")?r.stream_link:e.src,provider:e.provider}},Ar= exports.ha =t=>{let{params:e,details:r}=a.getState().videoData,{qualityLevels:s,manualQuality:i,autoQuality:n}=a.getState().controller;return{category:"qualityChangeRequest",currentPlayingQuality:`${s[c("isAutoQuality")?_nullishCoalesce(n, () => (i)):i]}P`,previousSelectedQuality:c("isAutoQuality")?"auto":`${s[i]}P`,selectedQuality:t,id:Number(e.id),type:e.type,src:c("hasStreamLink")?r.stream_link:e.src,provider:e.provider}},Lr= exports.ia =t=>{let{params:e,details:r}=a.getState().videoData,{qualityLevels:s,autoQuality:i}=a.getState().controller,{settings:n}=a.getState().user;return{category:"catchUpLoading",previousVideoTime:Number(sessionStorage.getItem("previousVideoTime")),currentVideoTime:D().currentTime,duration:t,quality:`${c("isAutoQuality")?s[i]:s[n.quality]}P`,isAutoQuality:c("isAutoQuality"),id:Number(e.id),type:e.type,src:c("hasStreamLink")?r.stream_link:e.src,provider:e.provider}},xr= exports.ja =t=>{let{params:e,details:r}=a.getState().videoData;return{category:t==="backward"?"backward":"forward",id:Number(e.id),type:e.type,src:r.stream_link?r.stream_link:e.src,provider:e.provider}},kr= exports.ka =t=>{let{params:e,details:r}=a.getState().videoData;return{category:t,id:Number(e.id),type:e.type,src:c("hasStreamLink")?r.stream_link:e.src}},Tr= exports.la =(t,e)=>{let{params:r,details:s}=a.getState().videoData;return{category:"brightnessChange",source:t,target:e,id:Number(r.id),type:r.type,src:c("hasStreamLink")?s.stream_link:r.src}},Dr= exports.ma =(t,e)=>{let{params:r,details:s}=a.getState().videoData;return{category:"volumeChange",source:t,target:e,id:Number(r.id),type:r.type,src:c("hasStreamLink")?s.stream_link:r.src}},Ir= exports.na =t=>{let{params:e,details:r}=a.getState().videoData;return{category:t,id:Number(e.id),type:e.type,src:c("hasStreamLink")?r.stream_link:e.src}};var Fr=(t,e)=>{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:t,end:e,watchedDuration:e-t,video_duration:Math.floor(i),clientUUID:S(),user_id:s.user_id,content_type:s.content_type,content_id:s.content_id}},Er= exports.pa =(t,e,r)=>{let{params:s,details:i}=a.getState().videoData;return{category:"autoQualityChange",sourceQuality:t,targetQuality:e,diffQuality:r,id:Number(s.id),type:s.type,src:c("hasStreamLink")?i.stream_link:s.src,provider:s.provider}},Qr= exports.qa =(t,e)=>{let{params:r,details:s}=a.getState().videoData;return{category:"pingpong",id:Number(r.id),type:r.type,src:c("hasStreamLink")?s.stream_link:r.src,PingPongDuration:Number((new Date().getTime()-t).toFixed(2)),PingPongSourceQuality:`${e[0]}P`,PingPongTargetQuality:`${e[1]}P`,provider:r.provider}},Vr= exports.ra =t=>{let{params:e,details:r}=a.getState().videoData;return{category:t?"playVideo":"pauseVideo",id:Number(e.id),type:e.type,src:r.stream_link?r.stream_link:e.src,provider:e.provider}},Ur= exports.sa =(t,e,r,s,i)=>{let{params:n,details:p}=a.getState().videoData,d=Date.now()-i.current+t+e,g=window.performance.memory,u=JSON.parse(JSON.stringify(window.performance.timing));return{category:"initLog",id:Number(n.id),type:n.type,origin:new URL(c("hasStreamLink")?p.stream_link:n.src).origin,src:c("hasStreamLink")?p.stream_link:n.src,loading:t,bannerLoading:!c("hasBanner")||r<0?0:r,waiting:e,firstChunkPlaying:s<0?0:s,totalTime:d,provider:n.provider,performance:T({memory:g,timing:u},"performance"),userAgent:window.navigator.userAgent}},_r= exports.ta =(t,e,r,s,i)=>{let{params:n,details:p}=a.getState().videoData,{settings:d}=a.getState().user,g=Date.now()-r.current;return{category:"loading",id:Number(n.id),type:n.type,src:c("hasStreamLink")?p.stream_link:n.src,duration:t,quality:`${e}P`,isAutoQuality:c("isAutoQuality"),previousLoaderDiff:g,counter:s.current,loadingPercentile:Number((t/g).toFixed(2)),videoTime:D().currentTime,videoEntranceTime:i,speed:d.speed,provider:n.provider}},Br= exports.ua =t=>{let{params:e,details:r}=a.getState().videoData;return{category:"subtitle",language:t,id:Number(e.id),type:e.type,src:c("hasStreamLink")?r.stream_link:e.src}};_chunkA3BCKK27js.e.call(void 0, );_chunkA3BCKK27js.e.call(void 0, );var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);var I=async({url:t,method:e="GET",data:r,headers:s,retryCount:i=1,maxRetryCount:n=0,errorMessage:p,retryPolicy:d,errorCallback:g,timeoutCount:u})=>{let l={url:t,method:e,headers:{...s,"Content-Type":"application/json"},timeout:u?u*1e3:void 0};r?e==="GET"?l={...l,params:{uuid:a.getState().videoData.params.uuid,provider:a.getState().videoData.params.provider==="unknown"?void 0:a.getState().videoData.params.provider,...r}}:l={...l,data:{uuid:a.getState().videoData.params.uuid,provider:a.getState().videoData.params.provider==="unknown"?void 0:a.getState().videoData.params.provider,...r}}:e==="GET"?l={...l,params:{uuid:a.getState().videoData.params.uuid,provider:a.getState().videoData.params.provider==="unknown"?void 0:a.getState().videoData.params.provider}}:l={...l,data:{uuid:a.getState().videoData.params.uuid,provider:a.getState().videoData.params.provider==="unknown"?void 0:a.getState().videoData.params.provider}};try{return await _axios2.default.call(void 0, l)}catch(y){if(!(y&&y.response&&y.response.status===401)){g&&g(y.response.status,y.response.message);let P=0,v=0;if(d!==void 0){for(let h=0;h<d.length;h++)if((d[h].codeAbove&&y.response.status>=d[h].codeAbove||d[h].codeBelow&&y.response.status<=d[h].codeBelow)&&(d[h].excludeCodes.length===0||!d[h].excludeCodes.includes(y.response.status))||d[h].includeCodes.length===0||d[h].includeCodes.includes(y.response.status)){v=d[h].count,P=d[h].delay;break}}else v=n,P=i+1;if(i<v)return await z(P),I({url:t,method:e,data:r,headers:s,retryCount:i+1,newMaxRetryCount:v,errorMessage:p,retryPolicy:d,errorCallback:g});if(y.response)return{data:y.response.data?y.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:y.response.status}}}};_chunkA3BCKK27js.e.call(void 0, );_chunkA3BCKK27js.e.call(void 0, );var ae=te(),oe=(se(),_chunkA3BCKK27js.d.call(void 0, re)),F=()=>(oe?ae.baseUrl:process.env.baseUrl)+"/live/api",E=()=>oe?ae.fluentdUrl:process.env.fluentdUrl;var ie=()=>({vod:{getVodUrl:`${F()}/v1/live/details/vod/`},viewCount:t=>`${F()}/v1/viewed/content/${t}`,videoTimelineLog:`${E()}/video-timeline.log`,logs:`${E()}/drive-endpoint.log`});var rs=t=>{let{details:e}=a.getState().videoData,r={...t,timestamp:Date.now(),clientUUID:S(),uuid:S(),link:window.location.href,user_id:e.user_id,live_id:null,format:void 0,content_type:e.content_type,content_id:e.content_id};I({url:ie().logs,method:"post",data:r})};exports.a = Ie; exports.b = Ee; exports.c = Qe; exports.d = Ve; exports.e = Ue; exports.f = _e; exports.g = Be; exports.h = Me; exports.i = Re; exports.j = $e; exports.k = Ke; exports.l = qe; exports.m = Oe; exports.n = Ce; exports.o = He; exports.p = We; exports.q = je; exports.r = Xe; exports.s = Ne; exports.t = ze; exports.u = et; exports.v = tt; exports.w = rt; exports.x = st; exports.y = at; exports.z = ot; exports.A = it; exports.B = nt; exports.C = lt; exports.D = Pt; exports.E = vt; exports.F = bt; exports.G = G; exports.H = yt; exports.I = mt; exports.J = a; exports.K = S; exports.L = w; exports.M = Wt; exports.N = b; exports.O = jt; exports.P = Xt; exports.Q = Yt; exports.R = Gt; exports.S = Jt; exports.T = Zt; exports.U = Nt; exports.V = zt; exports.W = er; exports.X = tr; exports.Y = rr; exports.Z = sr; exports._ = c; exports.$ = lr; exports.aa = cr; exports.ba = D; exports.ca = yr; exports.da = mr; exports.ea = I; exports.fa = ie; exports.ga = wr; exports.ha = Ar; exports.ia = Lr; exports.ja = xr; exports.ka = kr; exports.la = Tr; exports.ma = Dr; exports.na = Ir; exports.oa = Fr; exports.pa = Er; exports.qa = Qr; exports.ra = Vr; exports.sa = Ur; exports.ta = _r; exports.ua = Br; exports.va = rs;
2
+ //# sourceMappingURL=chunk-3RAQIOFP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/videoPlayerLibrary/helpers/configs/nextConfigs/next.config.js","../src/videoPlayerLibrary/helpers/configs/npmPackage/npmPackage.ts","../src/videoPlayerLibrary/helpers/redux/slices/controllerSlice.ts","../src/videoPlayerLibrary/helpers/redux/slices/videoDataSlice.ts","../src/videoPlayerLibrary/helpers/redux/slices/userSlice.ts","../src/videoPlayerLibrary/helpers/redux/store.ts","../src/videoPlayerLibrary/helpers/redux/slices/popoversSlice.ts","../src/videoPlayerLibrary/helpers/interfaces/enums.ts","../src/videoPlayerLibrary/helpers/helpers.ts","../src/videoPlayerLibrary/helpers/conditions/conditions.ts","../src/videoPlayerLibrary/helpers/redux/hooks.ts","../src/videoPlayerLibrary/helpers/constants.ts","../src/videoPlayerLibrary/helpers/logs/logs.ts","../src/videoPlayerLibrary/helpers/logs/fluentdLogger.ts","../src/videoPlayerLibrary/helpers/services/apiCaller.ts","../src/videoPlayerLibrary/helpers/services/services.ts","../src/videoPlayerLibrary/helpers/services/baseUrl.ts"],"names":["require_next_config","__commonJSMin","exports","module","init_cjs_shims","npmPackage_exports","__export","isNpmPackage","init_npmPackage","__esmMin","createSlice","ControllerSliceState","controllerSlice","state","action","setPlay","setIsAutoPlay","setDuration","setCurrentTime","setQualityLevels","setAutoQuality","setActiveElements","setIsLoading","setIsFullScreen","setBufferedTimeWidth","setFirstPlay","setActivePointerProgressBar","setDelayTurnOffControlbar","setManualQuality","setCanPlayVideo","setLock","setIsEnded","setTooltipTime","setShowMiniPlayer","setClearControllerSlice","controllerSlice_default","VideoDataSliceState","videoDataSlice","setInfo","setPlayerParams","setStreamLinkParams","setVideoElementSizeInfo","setIsFetchDetails","setIsValidAddress","setVideoTimelines","setIsReady","setShowCheckInternetSnackBar","setSubtitles","setSubtitleText","setSelectedSubtitle","setClearVideoDataSlice","videoDataSlice_default","UserSliceState","userSlice","setUserSettings","setVideoSettings","setClearUserSlice","userSlice_default","PopOversSliceState","popoversSlice","setSettingPopover","setSpeedPopover","setQualityLevelsPopover","setClearPopoversSlice","popoversSlice_default","configureStore","store","getDefaultMiddleware","store_default","conditions","type","params","details","isValidAddress","isFetchDetails","isReady","subtitles","showCheckInternetSnackBar","selectedSubtitle","firstPlay","lock","canPlayVideo","manualQuality","activeElements","isLoading","isEnded","isAutoPlay","play","isFullScreen","showMiniPlayer","settingPopover","speedPopover","qualityLevelsPopover","settings","isTouchScreenLandscape","isTouchScreen","staticFormats","isIOS","isTouchScreenPortrait","wait","s","resolve","getUUID","uuid","uuidGenerator","char","val","addZeroBefore","n","secondsToHMS","seconds","h","m","realFormat","addUuidToSrc","src","urlObject","urlSrc","checkParentTarget","event","target","appendQueryParamsToChunks","link","dispatch","queryParams","handleRippleCircle","id","element","circle","ripple","responseValidator","status","clearRedux","weighted_random","options","i","weights","random","handlePageLoadTime","loadingDurationRef","pageLoadTime","highestResolutionSupported","resolutions","width","height","w","filteredResolutions","resolution","flattenObject","input","keyName","result","key","newKey","sortLanguages","array","priority","a","b","prioA","prioB","getSubtitleLabel","subtitleLanguage","label","spliteStringPerLine","str","useDispatch","useSelector","useAppDispatch","useAppSelector","videoTag","progressBar","progressBarWidth","speedChangeLog","selectedSpeed","qualityChangeRequestLog","selectedQuality","qualityLevels","autoQuality","catchUpLoadingLog","duration","backwardForwardLog","fullscreenLog","category","brightnessLog","source","volumeLog","lockLog","videoTimelineLog","start","end","autoQualityChangeLog","sourceQuality","targetQuality","diffQuality","pingpongLog","startTimer","qualityHistory","pausePlayLog","isPlay","initLog","loadingTime","waitingTime","bannerLoadingTime","firstChunkPlayingTime","timerRef","totalTime","memory","timing","loadingLog","waitingDuration","qualityLevel","loadingCounterRef","videoEntranceTime","previousLoaderDiff","subtitleLog","language","axios","apiCaller","url","method","data","headers","retryCount","maxRetryCount","errorMessage","retryPolicy","errorCallback","timeoutCount","axiosConfig","error","newRetryDelay","newMaxRetryCount","envs","getRestApiLiveUrl","getFluentdUrl","API","content_id","sendFluentLog","_data"],"mappings":"wEAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,KAAA,CAAAC,IAAAD,GAAO,QAAU,CACb,QAAS,wBACT,WAAY,uBAChB,ICHA,IAAAE,GAAA,GAAAC,GAAAD,GAAA,kBAAAE,KAAA,IAAaA,GAAbC,GAAAC,GAAA,KAAAL,IAAaG,GAAe,KCA5BH,IAAA,OAAS,eAAAM,OAAkC,mBAG3C,IAAMC,EAAyC,CAC3C,KAAM,GACN,WAAY,GACZ,SAAU,EACV,YAAa,EACb,cAAe,CAAC,EAChB,cAAe,OACf,YAAa,OACb,eAAgB,GAChB,UAAW,GACX,aAAc,GACd,kBAAmB,EACnB,UAAW,GACX,yBAA0B,GAC1B,uBAAwB,GACxB,aAAc,GACd,KAAM,GACN,QAAS,GACT,YAAa,EACb,eAAgB,EACpB,EAEaC,EAAkBF,GAAY,CACvC,KAAM,aACN,aAAcC,EACd,SAAU,CACN,QAAS,CAACE,EAAOC,IAAmC,CAChDD,EAAM,KAAOC,EAAO,OACxB,EACA,cAAe,CAACD,EAAOC,IAAmC,CACtDD,EAAM,WAAaC,EAAO,OAC9B,EACA,YAAa,CAACD,EAAOC,IAAkC,CACnDD,EAAM,SAAWC,EAAO,OAC5B,EACA,eAAgB,CAACD,EAAOC,IAAkC,CACtDD,EAAM,YAAcC,EAAO,OAC/B,EACA,iBAAkB,CAACD,EAAOC,IAA8C,CACpED,EAAM,cAAgBC,EAAO,OACjC,EACA,eAAgB,CAACD,EAAOC,IAA8C,CAClED,EAAM,YAAcC,EAAO,OAC/B,EACA,iBAAkB,CAACD,EAAOC,IAAiC,CACvDD,EAAM,cAAgBC,EAAO,OACjC,EACA,kBAAmB,CAACD,EAAOC,IAAmC,CAC1DD,EAAM,eAAiBC,EAAO,OAClC,EACA,aAAc,CAACD,EAAOC,IAAmC,CACrDD,EAAM,UAAYC,EAAO,OAC7B,EACA,gBAAiB,CAACD,EAAOC,IAAmC,CACxDD,EAAM,aAAeC,EAAO,OAChC,EACA,qBAAsB,CAACD,EAAOC,IAAkC,CAC5DD,EAAM,kBAAoBC,EAAO,OACrC,EACA,aAAc,CAACD,EAAOC,IAAmC,CACrDD,EAAM,UAAYC,EAAO,OAC7B,EACA,4BAA6B,CAACD,EAAOC,IAAmC,CACpED,EAAM,yBAA2BC,EAAO,OAC5C,EACA,0BAA2B,CAACD,EAAOC,IAAmC,CAClED,EAAM,uBAAyBC,EAAO,OAC1C,EACA,gBAAiB,CAACD,EAAOC,IAAmC,CACxDD,EAAM,aAAeC,EAAO,OAChC,EACA,QAAS,CAACD,EAAOC,IAAmC,CAChDD,EAAM,KAAOC,EAAO,OACxB,EACA,WAAY,CAACD,EAAOC,IAAmC,CACnDD,EAAM,QAAUC,EAAO,OAC3B,EACA,eAAgB,CAACD,EAAOC,IAAkC,CACtDD,EAAM,YAAcC,EAAO,OAC/B,EACA,kBAAmB,CAACD,EAAOC,IAA+C,CACtED,EAAM,eAAiBC,EAAO,OAClC,EACA,wBAAyB,IACdH,CAEf,CACJ,CAAC,EAEY,CACT,QAAAI,GACA,cAAAC,GACA,YAAAC,GACA,eAAAC,GACA,iBAAAC,GACA,eAAAC,GACA,kBAAAC,GACA,aAAAC,GACA,gBAAAC,GACA,qBAAAC,GACA,aAAAC,GACA,4BAAAC,GACA,0BAAAC,GACA,iBAAAC,GACA,gBAAAC,GACA,QAAAC,GACA,WAAAC,GACA,eAAAC,GACA,kBAAAC,GACA,wBAAAC,CACJ,EAAItB,EAAgB,QACbuB,EAAQvB,EAAgB,QClH/BR,IAAA,OAAS,eAAAM,OAAkC,mBAGpC,IAAM0B,EAAuC,CAChD,QAAS,CACL,YAAa,GACb,KAAM,GACN,OAAQ,GACR,GAAI,OACJ,MAAO,OACP,IAAK,OACL,WAAY,OACZ,QAAS,KACT,WAAY,OACZ,aAAc,KACd,SAAU,EACV,UAAW,MACf,EACA,OAAQ,CACJ,IAAK,GACL,KAAM,GACN,GAAI,GACJ,UAAW,GACX,WAAY,GACZ,SAAU,GACV,MAAO,GACP,QAAS,GACT,UAAW,GACX,gBAAiB,OACjB,SAAU,UACV,WAAY,MAChB,EACA,iBAAkB,GAClB,qBAAsB,CAClB,OAAQ,EACR,IAAK,EACL,MAAO,EACP,KAAM,EACN,MAAO,EACP,OAAQ,CACZ,EACA,eAAgB,GAChB,eAAgB,GAChB,eAAgB,CAAC,EACjB,QAAS,GACT,0BAA2B,GAC3B,UAAW,CAAC,EACZ,iBAAkB,OAClB,aAAc,MAClB,EAEaC,EAAiB3B,GAAY,CACtC,KAAM,YACN,aAAc0B,EACd,SAAU,CACN,QAAS,CAACvB,EAAOC,IAAoC,CACjDD,EAAM,QAAUC,EAAO,OAC3B,EACA,gBAAiB,CAACD,EAAOC,IAA+B,CACpDD,EAAM,OAASC,EAAO,OAC1B,EACA,oBAAqB,CAACD,EAAOC,IAAkC,CAC3DD,EAAM,iBAAmBC,EAAO,OACpC,EACA,wBAAyB,CAACD,EAAOC,IAAiD,CAC9ED,EAAM,qBAAuBC,EAAO,OACxC,EACA,kBAAmB,CAACD,EAAOC,IAAmC,CAC1DD,EAAM,eAAiBC,EAAO,OAClC,EACA,kBAAmB,CAACD,EAAOC,IAAmC,CAC1DD,EAAM,eAAiBC,EAAO,OAClC,EACA,kBAAmB,CAACD,EAAOC,IAAoC,CAC3DD,EAAM,eAAiBC,EAAO,OAClC,EACA,WAAY,CAACD,EAAOC,IAAmC,CACnDD,EAAM,QAAUC,EAAO,OAC3B,EACA,6BAA8B,CAACD,EAAOC,IAAmC,CACrED,EAAM,0BAA4BC,EAAO,OAC7C,EACA,aAAc,CAACD,EAAOC,IAAuC,CACzDD,EAAM,UAAYC,EAAO,OAC7B,EACA,oBAAqB,CAACD,EAAOC,IAA+B,CACxDD,EAAM,iBAAmBC,EAAO,OACpC,EACA,gBAAiB,CAACD,EAAOC,IAAkC,CACvDD,EAAM,aAAeC,EAAO,OAChC,EACA,uBAAyBD,GACbA,EAAQuB,CAExB,CACJ,CAAC,EAEY,CACT,QAAAE,GACA,gBAAAC,GACA,oBAAAC,EACA,wBAAAC,GACA,kBAAAC,GACA,kBAAAC,GACA,kBAAAC,GACA,WAAAC,GACA,6BAAAC,GACA,aAAAC,GACA,gBAAAC,GACA,oBAAAC,GACA,uBAAAC,CACJ,EAAIb,EAAe,QACZc,EAAQd,EAAe,QChH9BjC,IAAA,OAAS,eAAAM,OAAkC,mBAG3C,IAAM0C,EAA6B,CAC/B,SAAU,CACN,QAAS,GACT,WAAY,IACZ,OAAQ,IACR,MAAO,CACX,EACA,cAAe,CACX,KAAM,CACV,CACJ,EAEaC,EAAY3C,GAAY,CACjC,KAAM,OACN,aAAc0C,EACd,SAAU,CACN,gBAAiB,CAACvC,EAAOC,IAAyC,CAC9DD,EAAM,SAAWC,EAAO,OAC5B,EACA,iBAAkB,CAACD,EAAOC,IAA0C,CAChED,EAAM,cAAgBC,EAAO,OACjC,EACA,kBAAmB,IACRsC,CAEf,CACJ,CAAC,EAEY,CACT,gBAAAE,GACA,iBAAAC,GACA,kBAAAC,CACJ,EAAIH,EAAU,QAEPI,EAAQJ,EAAU,QCrCzBjD,ICAAA,IAAA,OAAS,eAAAM,OAAkC,mBAG3C,IAAMgD,GAAqC,CACvC,eAAgB,GAChB,aAAc,GACd,qBAAsB,EAC1B,EACaC,EAAgBjD,GAAY,CACrC,KAAM,UACN,aAAcgD,GACd,SAAU,CACN,kBAAmB,CAAC7C,EAAOC,IAAmC,CAC1DD,EAAM,eAAiBC,EAAO,OAClC,EACA,gBAAiB,CAACD,EAAOC,IAAmC,CACxDD,EAAM,aAAeC,EAAO,OAChC,EACA,wBAAyB,CAACD,EAAOC,IAAmC,CAChED,EAAM,qBAAuBC,EAAO,OACxC,EACA,sBAAwBD,GAAU,CAC9BA,EAAM,eAAiB,GACvBA,EAAM,aAAe,GACrBA,EAAM,qBAAuB,EACjC,CACJ,CACJ,CAAC,EAEY,CACT,kBAAA+C,GACA,gBAAAC,GACA,wBAAAC,GACA,sBAAAC,CACJ,EAAIJ,EAAc,QAEXK,EAAQL,EAAc,QD/B7B,OAAS,kBAAAM,OAAsB,mBAE/B,IAAMC,GAAQD,GAAe,CACzB,QAAS,CACL,WAAY9B,EACZ,UAAWgB,EACX,SAAUa,EACV,KAAMP,CACV,EACA,SAAU,GACV,WAAaU,GAAyBA,EAAqB,CAAE,kBAAmB,EAAM,CAAC,CAC3F,CAAC,EAIMC,EAAQF,GEpBf9D,ICAAA,ICAAA,IAIO,IAAMiE,EAAcC,GAAiB,CACxC,GAAM,CACF,OAAAC,EACA,QAAAC,EACA,eAAAC,EACA,eAAAC,EACA,QAAAC,EACA,UAAAC,EACA,0BAAAC,EACA,iBAAAC,CACJ,EAAIV,EAAM,SAAS,EAAE,UACf,CACF,UAAAW,EACA,KAAAC,EACA,aAAAC,EACA,cAAAC,EACA,eAAAC,EACA,UAAAC,EACA,QAAAC,EACA,WAAAC,GACA,KAAAC,GACA,aAAAC,EACA,eAAAC,CACJ,EAAIrB,EAAM,SAAS,EAAE,WACf,CACF,eAAAsB,EACA,aAAAC,GACA,qBAAAC,EACJ,EAAIxB,EAAM,SAAS,EAAE,SACf,CAAE,SAAAyB,CAAS,EAAIzB,EAAM,SAAS,EAAE,KAEtC,OAAQE,EAAM,CACV,iBACI,MAAO,CAACS,GAAaE,EACzB,eACI,MAAO,CAACJ,IAA8B,CAACG,GAAQD,GACnD,iBACI,MAAO,CAACA,GAAaE,EACzB,gCACI,MAAO,CAACF,GAAae,EAAuB,GAAK,CAACd,GAAQ,CAACK,EAC/D,0BACI,MAAO,CAACN,GAAagB,EAAc,GAAK,CAACf,EAC7C,gBACI,MAAO,CAACgB,EAAczB,EAAO,IAAK,GAAKiB,GAAgB,CAACR,EAC5D,yBACI,OAAOU,EACX,uBACI,OAAOC,GACX,+BACI,OAAOC,GACX,sBACI,MAAO,CAACI,EAAczB,EAAO,IAAK,GAAK,CAAC0B,EAAM,GAAK,CAACT,EACxD,iBACI,OAAOT,IAAcP,EAAQ,QAAUD,EAAO,OAClD,sBACI,MAAO,CAAC0B,EAAM,EAClB,qBACI,OAAOR,EACX,2BACI,OAAOA,IAAmB,IAAQ,CAACQ,EAAM,GAAK,CAACF,EAAc,EACjE,mBACI,MAAO,CAAC,CAACjB,GAAoB,CAACW,EAClC,mBACI,MAAO,CAACC,EACZ,kBACI,OAAO,OAAO,aAAe,OAAO,WACxC,oBACI,OAAOK,EAAc,EACzB,4BACI,OAAOG,EAAsB,EACjC,6BACI,OAAOJ,EAAuB,EAClC,uBACI,OAAOX,EACX,aACI,OAAOI,GACX,kBACI,OAAOR,EACX,aACI,OAAOC,EACX,YACI,OAAOiB,EAAM,EACjB,gBACI,OAAOb,EACX,qBACI,OAAOY,EAAczB,EAAO,IAAK,EACrC,cACI,OAAOc,EACX,iBACI,OAAOC,GACX,mBACI,OAAOE,EACX,qBACI,OAAOf,EACX,qBACI,OAAOC,EACX,oBACI,OAAOmB,EAAS,UAAY,GAChC,sBACI,MAAO,CAACb,EACZ,kBACI,MAAO,CAACA,GAAQ,CAACD,GAAa,CAACU,EACnC,kBACI,MAAO,CAACT,GAAQ,CAACD,GAAa,CAACU,EACnC,kBACI,MAAO,CAACT,GAAQ,CAACD,EACrB,2BACI,MAAO,CAACA,GAAa,CAACC,EAC1B,0BACI,MAAO,CAACD,GAAa,CAACC,EAC1B,kBACI,MAAO,CAACD,GAAa,CAACC,EAC1B,kBACI,MAAO,CAACA,GAAQ,CAACD,GAAa,CAACU,GAAkB,CAAC,CAACb,GAAaA,EAAU,OAAS,EACvF,wBACI,MAAO,CAACoB,EAAczB,EAAO,IAAK,EACtC,cACI,OAAOI,EACX,yBACI,MAAO,CAAC,CAACC,GAAaA,EAAU,OAAS,GAAKE,EAClD,eACI,OAAON,EAAQ,MACnB,gBACI,OAAOA,EAAQ,OACnB,oBACI,OAAOA,EAAQ,YACnB,uBACI,OAAsCU,GAAkB,KAC5D,eACI,MAAO,CAAC,CAACW,EAAS,OACtB,kBACI,OAAOtB,EAAO,WAAa,OAC/B,0BACI,OAAOA,EAAO,aAAe,OACjC,yBACI,MAAO,CAAC,CAACA,EAAO,iBAAmBkB,IAAmB,OAC1D,0BACI,MAAO,CAAC,CAAClB,EAAO,WACpB,mBACI,MAAO,CAAC,CAACK,GAAaA,EAAU,OAAS,GAAK,CAACa,EACnD,4BACI,OAAOjB,EAAQ,WAAaA,EAAQ,UAAU,OAAS,EAC3D,mBACI,OAAOM,GAAoBA,EAAiB,YAAcA,EAAiB,WAAW,OAAS,EACnG,iBACI,MAAO,CAAC,CAACP,EAAO,MAAQA,EAAO,GACnC,mBACI,OAAOU,EACX,2BACI,OAAOT,EAAQ,WAAaA,EAAQ,UAAU,OAAS,GAAK,CAACO,GAAa,CAACiB,EAAczB,EAAO,IAAK,EACzG,QACI,KACR,CACJ,EDrJO,IAAM4B,EAAQC,GAAc,IAAI,QAASC,GAAY,WAAWA,EAASD,EAAI,GAAI,CAAC,EAE5EE,EAAU,IAAM,CACzB,IAAIC,EAAO,aAAa,QAAQ,aAAa,EAC7C,OAAKA,IACDA,EAAOC,GAAc,EACrB,aAAa,QAAQ,cAAeD,CAAI,GAErCA,EAAK,SAAS,CACzB,EAEaC,GAAgB,IAAM,CAC/B,IAAID,EAAO,4BAA4B,QAAQ,SAAWE,GAAS,CAC/D,IAAIC,EACJ,OAAID,IAAS,IAAKC,EAAM,KAAK,MAAM,EAAI,KAAK,OAAO,EAAI,CAAC,EAC/CD,IAAS,IAAKC,EAAM,KAAK,MAAM,EAAI,KAAK,OAAO,EAAI,CAAC,EACxDA,EAAM,KAAK,MAAM,KAAK,OAAO,EAAI,EAAE,EACjCA,EAAI,SAAS,EAAE,CAC1B,CAAC,EACD,OAAAH,GAAQ,KAAK,IAAI,EAAE,SAAS,EAAE,EACvBA,CACX,EAEaR,EAAgB,IACzB,iBAAkB,QAAY,OAAe,eAAoB,oBAAqB,OAAe,cAC5FD,EAAyB,IAAM,CACxC,GAAM,CAAE,aAAAN,CAAa,EAAIpB,EAAM,SAAS,EAAE,WAC1C,OAAO2B,EAAc,GAAKP,CAC9B,EACaU,EAAwB,IAAM,CACvC,GAAM,CAAE,aAAAV,CAAa,EAAIpB,EAAM,SAAS,EAAE,WAC1C,OAAO2B,EAAc,GAAK,CAACP,CAC/B,EAEaS,EAAQ,IAEb,CAAC,iBAAkB,mBAAoB,iBAAkB,OAAQ,SAAU,MAAM,EAAE,SAAS,UAAU,QAAQ,GAE7G,UAAU,UAAU,SAAS,KAAK,GAAK,eAAgB,SAInDU,EAAiBC,IAClBA,EAAI,GAAK,IAAM,IAAMA,EAGpBC,GAAgBC,GAAoB,CAC7C,IAAMC,EAAI,KAAK,MAAMD,EAAU,IAAI,EAC7BE,EAAI,KAAK,MAAOF,EAAU,KAAQ,EAAE,EACpC,EAAI,KAAK,MAAOA,EAAU,KAAQ,EAAE,EAC1C,OAAOC,EAAI,EAAI,GAAGJ,EAAcK,CAAC,CAAC,IAAIL,EAAc,CAAC,CAAC,GAAK,GAAGA,EAAcI,CAAC,CAAC,IAAIJ,EAAcK,CAAC,CAAC,IAAIL,EAAc,CAAC,CAAC,EAC1H,EAEaX,EAAiBiB,GACtB,CAAC,MAAO,MAAO,MAAO,KAAK,EAAE,SAASA,CAAU,EAAU,MACrDA,IAAe,QAAUA,IAAe,MAAcA,EACtD,CAAC,MAAO,KAAK,EAAE,SAASA,CAAU,EAAU,MACzC,GAGHC,GAAgBC,GAAgB,CACzC,IAAMC,EAAY,IAAI,IAAID,CAAG,EACzBE,EAASF,EACb,OAAIC,EAAU,OAAO,OAAgBC,GAAU,SAASf,EAAQ,CAAC,GACpDe,GAAU,SAASf,EAAQ,CAAC,EAC7C,EAEagB,GAAoB,CAACC,EAAYC,IAAmB,CAC7D,GAAI,CACA,MAAO,CACHD,EAAM,OAAO,GACbA,EAAM,OAAO,WAAW,GACxBA,EAAM,OAAO,WAAW,WAAW,GACnCA,EAAM,OAAO,WAAW,WAAW,WAAW,GAC9CA,EAAM,OAAO,WAAW,WAAW,WAAW,WAAW,EAC7D,EAAE,SAASC,CAAM,CACrB,MAAgB,CACZ,MAAO,EACX,CACJ,EAEaC,GAA6BC,GAAiB,CACvD,IAAMC,EAAWvD,EAAM,SACnBwD,EAAsB,GAC1BA,EAAcF,EAAK,MAAM,MAAM,EAAE,CAAC,EAC9BE,EAAaA,EAAc,GAAGA,CAAW,SAAStB,EAAQ,CAAC,GAC1DsB,EAAc,SAAStB,EAAQ,CAAC,GACrCqB,EAASnF,EAAoBoF,CAAW,CAAC,CAC7C,EAEaC,GAAqB,CAACN,EAAYO,IAAe,CAC1D,IAAMC,EAAe,SAAS,eAAeD,CAAE,EACzCE,EAAS,SAAS,cAAc,MAAM,EAC5CA,EAAO,MAAM,MAAQA,EAAO,MAAM,OAAS,OAC3CA,EAAO,MAAM,KAAO,GAAGT,EAAM,QAAQ,CAAC,EAAE,QAAUQ,EAAQ,WAAa,EAAE,KACzEC,EAAO,MAAM,IAAM,GAAGT,EAAM,QAAQ,CAAC,EAAE,QAAUQ,EAAQ,UAAY,EAAE,KACvEC,EAAO,UAAU,IAAI,WAAW,EAChC,IAAMC,EAASF,EAAQ,uBAAuB,WAAW,EAAE,CAAC,EACxDE,GAAQA,EAAO,OAAO,EAC1BF,EAAQ,YAAYC,CAAM,CAC9B,EAgBO,IAAME,GAAqBC,GAA4BA,GAAU,KAAOA,EAAS,IAE3EC,GAAa,IAAM,CAC5B,IAAMT,EAAWvD,EAAM,SACvBuD,EAASzE,EAAuB,CAAC,EACjCyE,EAASzF,EAAwB,CAAC,EAClCyF,EAASnE,EAAkB,CAAC,EAC5BmE,EAAS5D,EAAsB,CAAC,CACpC,EAEasE,GAAmBC,GAAiB,CAC7C,IAAIC,EAEAC,EAAiB,CAAC,EAEtB,IAAKD,EAAI,EAAGA,EAAID,EAAQ,OAAQC,IAAKC,EAAQD,CAAC,EAAID,EAAQC,CAAC,EAAE,QAAUC,EAAQD,EAAI,CAAC,GAAK,GAEzF,IAAIE,EAAS,KAAK,OAAO,EAAID,EAAQA,EAAQ,OAAS,CAAC,EAEvD,IAAKD,EAAI,EAAGA,EAAIC,EAAQ,QAAiB,EAAAA,EAAQD,CAAC,EAAIE,GAAtBF,IAAK,CAErC,OAAOD,EAAQC,CAAC,EAAE,MACtB,EAIaG,GAAsBC,GAA4B,CAC3D,IAAIC,EAAe,EACf,aAAe,YAAY,iBAAiB,YAAY,IAAGA,EAAe,YAAY,iBAAiB,YAAY,EAAE,CAAC,EAAE,UAC5HD,EAAmB,QAAUC,CACjC,EAEaC,GAA6B,CAACC,EAAuBC,EAAeC,IAAmB,CAChG,IAAMC,EAAIF,EAAQ,OAAO,iBACnBhC,EAAIiC,EAAS,OAAO,iBACtBE,EAAgC,CAAC,EACrC,OAAI7E,yBAA8C,EAC9C6E,EAAsBJ,EAAY,OAAQK,GAAuB,OAAOA,EAAW,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,GAAKF,CAAC,EAE7GC,EAAsBJ,EAAY,OAC7BK,GAAuB,OAAOA,EAAW,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,GAAKpC,GAAK,OAAOoC,EAAW,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,GAAKF,CACvH,EACGC,EAAoB,QAAQA,EAAoBA,EAAoB,OAAS,CAAC,CAAC,CAC1F,EAEaE,EAAgB,CAACC,EAAYC,IAAqB,CAC3D,IAAIC,EAAc,CAAC,EACnB,QAAWC,KAAOH,EAAO,CACrB,IAAMI,EAASH,EAAU,GAAGA,CAAO,IAAIE,CAAG,GAAKA,EAC3C,OAAOH,EAAMG,CAAG,GAAM,UAAY,CAAC,MAAM,QAAQH,EAAMG,CAAG,CAAC,EAAGD,EAAS,CAAE,GAAGA,EAAQ,GAAGH,EAAcC,EAAMG,CAAG,EAAGC,CAAM,CAAE,EACxHF,EAAOE,CAAM,EAAIJ,EAAMG,CAAG,CACnC,CACA,OAAOD,CACX,EAEaG,GAAiBC,GAAe,CACzC,IAAMC,EAAgB,CAAE,GAAI,EAAG,GAAI,CAAE,EAErC,OAAOD,EAAM,MAAM,EAAE,KAAK,CAACE,EAAQC,IAAW,CAC1C,IAAMC,EAAQH,EAASC,EAAE,IAAI,GAAK,IAC5BG,EAAQJ,EAASE,EAAE,IAAI,GAAK,IAElC,OAAOC,EAAQC,CACnB,CAAC,CACL,EAEaC,GAAoBC,GAA6B,CAC1D,IAAIC,EACJ,OAAQD,EAAkB,CACtB,IAAK,KACDC,EAAQ,iCACR,MACJ,IAAK,KACDA,EAAQ,6CACR,MACJ,IAAK,KACDA,EAAQ,2BACR,MACJ,IAAK,KACDA,EAAQ,2BACR,MACJ,QACI,KACR,CACA,OAAOA,CACX,EAEaC,GAAuBC,GAAgBA,EAAI,MAAM,cAAc,EEnN5EjK,IACA,OAA+B,eAAAkK,GAAa,eAAAC,OAAmB,cAExD,IAAMC,GAAsB,IAAMF,GAAyB,EACrDG,GAAkDF,GCJ/DnK,IAEO,IAAMsK,EAAW,IAAM,SAAS,eAAe,YAAY,EACrDC,GAAc,IAAM,SAAS,eAAe,mBAAmB,EAC/DC,GAAmB,IAAMxG,EAAM,SAAS,EAAE,UAAU,qBAAqB,MAAQ,ECJ9FhE,IAMO,IAAMyK,GAAkBC,GAA0B,CACrD,GAAM,CAAE,OAAAvG,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UACvC,CAAE,SAAAyB,CAAS,EAAIzB,EAAM,SAAS,EAAE,KACtC,MAAO,CACH,SAAU,cACV,sBAAuByB,EAAS,MAChC,cAAeiF,EACf,GAAI,OAAOvG,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,IAC5E,SAAUA,EAAO,QACrB,CACJ,EAEawG,GAA2BC,GAA4B,CAChE,GAAM,CAAE,OAAAzG,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UACvC,CAAE,cAAA6G,EAAe,cAAA/F,EAAe,YAAAgG,CAAY,EAAI9G,EAAM,SAAS,EAAE,WACvE,MAAO,CACH,SAAU,uBACV,sBAAuB,GAAG6G,EAAc5G,iBAAsC,EAAI6G,GAAehG,EAAiBA,CAAc,CAAC,IACjI,wBAAyBb,iBAAsC,EAAI,OAAS,GAAG4G,EAAc/F,CAAc,CAAC,IAC5G,gBAAiB8F,EACjB,GAAI,OAAOzG,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,IAC5E,SAAUA,EAAO,QACrB,CACJ,EAEa4G,GAAqBC,GAAqB,CACnD,GAAM,CAAE,OAAA7G,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UACvC,CAAE,cAAA6G,EAAe,YAAAC,CAAY,EAAI9G,EAAM,SAAS,EAAE,WAClD,CAAE,SAAAyB,CAAS,EAAIzB,EAAM,SAAS,EAAE,KAEtC,MAAO,CACH,SAAU,iBACV,kBAAmB,OAAO,eAAe,QAAQ,mBAAmB,CAAC,EACrE,iBAAkBsG,EAAS,EAAE,YAC7B,SAAUU,EACV,QAAS,GAAG/G,iBAAsC,EAAI4G,EAAcC,CAAY,EAAID,EAAcpF,EAAS,OAAO,CAAC,IACnH,cAAexB,iBAAsC,EACrD,GAAI,OAAOE,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,IAC5E,SAAUA,EAAO,QACrB,CACJ,EAEa8G,GAAsB/G,GAAiB,CAChD,GAAM,CAAE,OAAAC,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UAC7C,MAAO,CACH,SAAUE,IAAS,WAAa,WAAa,UAC7C,GAAI,OAAOC,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKC,EAAQ,YAAcA,EAAQ,YAAcD,EAAO,IACxD,SAAUA,EAAO,QACrB,CACJ,EAEa+G,GAAiBC,GAAqB,CAC/C,GAAM,CAAE,OAAAhH,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UAC7C,MAAO,CACH,SAAUmH,EACV,GAAI,OAAOhH,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,GAChF,CACJ,EAEaiH,GAAgB,CAACC,EAAgBjE,IAAmB,CAC7D,GAAM,CAAE,OAAAjD,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UAC7C,MAAO,CACH,SAAU,mBACV,OAAQqH,EACR,OAAQjE,EACR,GAAI,OAAOjD,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,GAChF,CACJ,EAEamH,GAAY,CAACD,EAAgBjE,IAAmB,CACzD,GAAM,CAAE,OAAAjD,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UAC7C,MAAO,CACH,SAAU,eACV,OAAQqH,EACR,OAAQjE,EACR,GAAI,OAAOjD,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,GAChF,CACJ,EAEaoH,GAAWJ,GAAqB,CACzC,GAAM,CAAE,OAAAhH,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UAC7C,MAAO,CACH,SAAUmH,EACV,GAAI,OAAOhH,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,GAChF,CACJ,EAUO,IAAMqH,GAAmB,CAACC,EAAeC,IAAgB,CAC5D,GAAM,CAAE,OAAAvH,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UACvC,CAAE,SAAAgH,CAAS,EAAIhH,EAAM,SAAS,EAAE,WACtC,MAAO,CACH,SAAU,iBACV,SAAU,CAACG,EAAO,GAClB,WAAYA,EAAO,KACnB,MAAOsH,EACP,IAAKC,EACL,gBAAiBA,EAAMD,EACvB,eAAgB,KAAK,MAAMT,CAAQ,EACnC,WAAY9E,EAAQ,EACpB,QAAS9B,EAAQ,QACjB,aAAcA,EAAQ,aACtB,WAAYA,EAAQ,UACxB,CACJ,EAEauH,GAAuB,CAACC,EAAuBC,EAAuBC,IAAwB,CACvG,GAAM,CAAE,OAAA3H,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UAC7C,MAAO,CACH,SAAU,oBACV,cAAe4H,EACf,cAAeC,EACf,YAAaC,EACb,GAAI,OAAO3H,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,IAC5E,SAAUA,EAAO,QACrB,CACJ,EAEa4H,GAAc,CAACC,EAAoBC,IAA6B,CACzE,GAAM,CAAE,OAAA9H,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UAC7C,MAAO,CACH,SAAU,WACV,GAAI,OAAOG,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,IAC5E,iBAAkB,QAAQ,IAAI,KAAK,EAAE,QAAQ,EAAI6H,GAAY,QAAQ,CAAC,CAAC,EACvE,sBAAuB,GAAGC,EAAe,CAAC,CAAC,IAC3C,sBAAuB,GAAGA,EAAe,CAAC,CAAC,IAC3C,SAAU9H,EAAO,QACrB,CACJ,EAEa+H,GAAgBC,GAAoB,CAC7C,GAAM,CAAE,OAAAhI,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UAC7C,MAAO,CACH,SAAUmI,EAAS,YAAc,aACjC,GAAI,OAAOhI,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKC,EAAQ,YAAcA,EAAQ,YAAcD,EAAO,IACxD,SAAUA,EAAO,QACrB,CACJ,EAEaiI,GAAU,CAACC,EAAqBC,EAAqBC,EAA2BC,EAA+BC,IAAkB,CAC1I,GAAM,CAAE,OAAAtI,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UACvC0I,EAAY,KAAK,IAAI,EAAID,EAAS,QAAUJ,EAAcC,EAC1DK,EAAU,OAAO,YAAoB,OACrCC,EAAS,KAAK,MAAM,KAAK,UAAW,OAAO,YAAoB,MAAM,CAAC,EAC5E,MAAO,CACH,SAAU,UACV,GAAI,OAAOzI,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,OAAQ,IAAI,IAAIF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,GAAI,EAAE,OAC7F,IAAKF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,IAC5E,QAASkI,EACT,cAAe,CAACpI,aAAkC,GAAKsI,EAAoB,EAAI,EAAIA,EACnF,QAASD,EACT,kBAAmBE,EAAwB,EAAI,EAAIA,EACnD,UAAWE,EACX,SAAUvI,EAAO,SACjB,YAAa6E,EAAc,CAAE,OAAA2D,EAAQ,OAAAC,CAAO,EAAG,aAAa,EAC5D,UAAW,OAAO,UAAU,SAChC,CACJ,EAEaC,GAAa,CAACC,EAAyBC,EAAsBN,EAAeO,EAAwBC,IAA8B,CAC3I,GAAM,CAAE,OAAA9I,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UACvC,CAAE,SAAAyB,CAAS,EAAIzB,EAAM,SAAS,EAAE,KAChCkJ,EAAqB,KAAK,IAAI,EAAIT,EAAS,QACjD,MAAO,CACH,SAAU,UACV,GAAI,OAAOtI,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,IAC5E,SAAU2I,EACV,QAAS,GAAGC,CAAY,IACxB,cAAe9I,iBAAsC,EACrD,mBAAoBiJ,EACpB,QAASF,EAAkB,QAC3B,kBAAmB,QAAQF,EAAkBI,GAAoB,QAAQ,CAAC,CAAC,EAC3E,UAAW5C,EAAS,EAAE,YACtB,kBAAmB2C,EACnB,MAAOxH,EAAS,MAChB,SAAUtB,EAAO,QACrB,CACJ,EAEagJ,GAAeC,GAAqB,CAC7C,GAAM,CAAE,OAAAjJ,EAAQ,QAAAC,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UAC7C,MAAO,CACH,SAAU,WACV,SAAUoJ,EACV,GAAI,OAAOjJ,EAAO,EAAE,EACpB,KAAMA,EAAO,KACb,IAAKF,iBAAsC,EAAIG,EAAQ,YAAcD,EAAO,GAChF,CACJ,ECnOAnE,ICAAA,IAAA,OAAOqN,OAAW,QAKX,IAAMC,EAAiB,MAAO,CACjC,IAAAC,EACA,OAAAC,EAAS,MACT,KAAAC,EACA,QAAAC,EACA,WAAAC,EAAa,EACb,cAAAC,EAAgB,EAChB,aAAAC,EACA,YAAAC,EACA,cAAAC,EACA,aAAAC,CACJ,IAAkB,CACd,IAAIC,EAA4B,CAC5B,IAAKV,EACL,OAAQC,EACR,QAAS,CACL,GAAGE,EACH,eAAgB,kBACpB,EACA,QAASM,EAAeA,EAAe,IAAO,MAClD,EACIP,EACID,IAAW,MACXS,EAAc,CACV,GAAGA,EACH,OAAQ,CACJ,KAAMjK,EAAM,SAAS,EAAE,UAAU,OAAO,KACxC,SAAUA,EAAM,SAAS,EAAE,UAAU,OAAO,WAAa,UAAY,OAAYA,EAAM,SAAS,EAAE,UAAU,OAAO,SACnH,GAAGyJ,CACP,CACJ,EAEAQ,EAAc,CACV,GAAGA,EACH,KAAM,CACF,KAAMjK,EAAM,SAAS,EAAE,UAAU,OAAO,KACxC,SAAUA,EAAM,SAAS,EAAE,UAAU,OAAO,WAAa,UAAY,OAAYA,EAAM,SAAS,EAAE,UAAU,OAAO,SACnH,GAAGyJ,CACP,CACJ,EAEAD,IAAW,MACXS,EAAc,CACV,GAAGA,EACH,OAAQ,CACJ,KAAMjK,EAAM,SAAS,EAAE,UAAU,OAAO,KACxC,SAAUA,EAAM,SAAS,EAAE,UAAU,OAAO,WAAa,UAAY,OAAYA,EAAM,SAAS,EAAE,UAAU,OAAO,QACvH,CACJ,EAEAiK,EAAc,CACV,GAAGA,EACH,KAAM,CACF,KAAMjK,EAAM,SAAS,EAAE,UAAU,OAAO,KACxC,SAAUA,EAAM,SAAS,EAAE,UAAU,OAAO,WAAa,UAAY,OAAYA,EAAM,SAAS,EAAE,UAAU,OAAO,QACvH,CACJ,EAER,GAAI,CACA,OAAO,MAAMqJ,GAAMY,CAAW,CAClC,OAASC,EAAY,CACjB,GAAI,EAAAA,GAASA,EAAM,UAAYA,EAAM,SAAS,SAAW,KAElD,CACCH,GAAeA,EAAcG,EAAM,SAAS,OAAQA,EAAM,SAAS,OAAO,EAC9E,IAAIC,EAAgB,EAChBC,EAAmB,EACvB,GAAIN,IAAgB,QAChB,QAAS3F,EAAI,EAAGA,EAAI2F,EAAY,OAAQ3F,IACpC,IACO2F,EAAY3F,CAAC,EAAE,WAAa+F,EAAM,SAAS,QAAUJ,EAAY3F,CAAC,EAAE,WAClE2F,EAAY3F,CAAC,EAAE,WAAa+F,EAAM,SAAS,QAAUJ,EAAY3F,CAAC,EAAE,aACpE2F,EAAY3F,CAAC,EAAE,aAAa,SAAW,GAAK,CAAC2F,EAAY3F,CAAC,EAAE,aAAa,SAAS+F,EAAM,SAAS,MAAM,IAC5GJ,EAAY3F,CAAC,EAAE,aAAa,SAAW,GACvC2F,EAAY3F,CAAC,EAAE,aAAa,SAAS+F,EAAM,SAAS,MAAM,EAC5D,CACEE,EAAmBN,EAAY3F,CAAC,EAAE,MAClCgG,EAAgBL,EAAY3F,CAAC,EAAE,MAC/B,KACJ,OAGJiG,EAAmBR,EACnBO,EAAgBR,EAAa,EAEjC,GAAIA,EAAaS,EACb,aAAMrI,EAAKoI,CAAa,EACjBb,EAAU,CACb,IAAAC,EACA,OAAAC,EACA,KAAAC,EACA,QAAAC,EACA,WAAYC,EAAa,EACzB,iBAAAS,EACA,aAAAP,EACA,YAAAC,EACA,cAAAC,CACJ,CAAC,EACE,GAAIG,EAAM,SACb,MAAO,CACH,KAAMA,EAAM,SAAS,KAAOA,EAAM,SAAS,KAAO,CAAE,OAAQ,4IAA+B,EAC3F,OAAQA,EAAM,SAAS,MAC3B,CACR,CACJ,CACJ,EC9GAlO,ICAAA,IAAA,IAAMqO,GAAO,KACPlO,GAAe,cAERmO,EAAoB,KAAOnO,GAAekO,GAAK,QAAW,QAAQ,IAAI,SAAsB,YAC5FE,EAAgB,IAAOpO,GAAekO,GAAK,WAAc,QAAQ,IAAI,WDC3E,IAAMG,GAAM,KACR,CACH,IAAK,CACD,UAAW,GAAGF,EAAkB,CAAC,uBACrC,EACA,UAAYG,GAAuB,GAAGH,EAAkB,CAAC,sBAAsBG,CAAU,GACzF,iBAAkB,GAAGF,EAAc,CAAC,sBACpC,KAAM,GAAGA,EAAc,CAAC,qBAC5B,GFRG,IAAMG,GAAiBjB,GAAc,CACxC,GAAM,CAAE,QAAArJ,CAAQ,EAAIJ,EAAM,SAAS,EAAE,UACjC2K,EAAQ,CACR,GAAGlB,EACH,UAAW,KAAK,IAAI,EACpB,WAAYvH,EAAQ,EACpB,KAAMA,EAAQ,EACd,KAAM,OAAO,SAAS,KACtB,QAAS9B,EAAQ,QACjB,QAAS,KACT,OAAQ,OACR,aAAcA,EAAQ,aACtB,WAAYA,EAAQ,UACxB,EACAkJ,EAAU,CAAE,IAAKkB,GAAI,EAAE,KAAM,OAAQ,OAAQ,KAAMG,CAAM,CAAC,CAC9D","sourcesContent":["module.exports = {\r\n baseUrl: \"https://hamrahi.cloud\",\r\n fluentdUrl: \"https://hamrahi.cloud\",\r\n};\r\n","export const isNpmPackage = false;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IControllerSlice } from \"../../interfaces/interfaces\";\r\n\r\nconst ControllerSliceState: IControllerSlice = {\r\n play: false,\r\n isAutoPlay: true,\r\n duration: 0,\r\n currentTime: 0,\r\n qualityLevels: [],\r\n manualQuality: undefined,\r\n autoQuality: undefined,\r\n activeElements: true,\r\n isLoading: false,\r\n isFullScreen: false,\r\n bufferedTimeWidth: 0,\r\n firstPlay: true,\r\n activePointerProgressBar: false,\r\n delayTurnOffControlbar: false,\r\n canPlayVideo: false,\r\n lock: false,\r\n isEnded: false,\r\n tooltipTime: 0,\r\n showMiniPlayer: false,\r\n};\r\n\r\nexport const controllerSlice = createSlice({\r\n name: \"controller\",\r\n initialState: ControllerSliceState,\r\n reducers: {\r\n setPlay: (state, action: PayloadAction<boolean>) => {\r\n state.play = action.payload;\r\n },\r\n setIsAutoPlay: (state, action: PayloadAction<boolean>) => {\r\n state.isAutoPlay = action.payload;\r\n },\r\n setDuration: (state, action: PayloadAction<number>) => {\r\n state.duration = action.payload;\r\n },\r\n setCurrentTime: (state, action: PayloadAction<number>) => {\r\n state.currentTime = action.payload;\r\n },\r\n setManualQuality: (state, action: PayloadAction<number | undefined>) => {\r\n state.manualQuality = action.payload;\r\n },\r\n setAutoQuality: (state, action: PayloadAction<number | undefined>) => {\r\n state.autoQuality = action.payload;\r\n },\r\n setQualityLevels: (state, action: PayloadAction<any[]>) => {\r\n state.qualityLevels = action.payload;\r\n },\r\n setActiveElements: (state, action: PayloadAction<boolean>) => {\r\n state.activeElements = action.payload;\r\n },\r\n setIsLoading: (state, action: PayloadAction<boolean>) => {\r\n state.isLoading = action.payload;\r\n },\r\n setIsFullScreen: (state, action: PayloadAction<boolean>) => {\r\n state.isFullScreen = action.payload;\r\n },\r\n setBufferedTimeWidth: (state, action: PayloadAction<number>) => {\r\n state.bufferedTimeWidth = action.payload;\r\n },\r\n setFirstPlay: (state, action: PayloadAction<boolean>) => {\r\n state.firstPlay = action.payload;\r\n },\r\n setActivePointerProgressBar: (state, action: PayloadAction<boolean>) => {\r\n state.activePointerProgressBar = action.payload;\r\n },\r\n setDelayTurnOffControlbar: (state, action: PayloadAction<boolean>) => {\r\n state.delayTurnOffControlbar = action.payload;\r\n },\r\n setCanPlayVideo: (state, action: PayloadAction<boolean>) => {\r\n state.canPlayVideo = action.payload;\r\n },\r\n setLock: (state, action: PayloadAction<boolean>) => {\r\n state.lock = action.payload;\r\n },\r\n setIsEnded: (state, action: PayloadAction<boolean>) => {\r\n state.isEnded = action.payload;\r\n },\r\n setTooltipTime: (state, action: PayloadAction<number>) => {\r\n state.tooltipTime = action.payload;\r\n },\r\n setShowMiniPlayer: (state, action: PayloadAction<boolean | undefined>) => {\r\n state.showMiniPlayer = action.payload;\r\n },\r\n setClearControllerSlice: () => {\r\n return ControllerSliceState;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setPlay,\r\n setIsAutoPlay,\r\n setDuration,\r\n setCurrentTime,\r\n setQualityLevels,\r\n setAutoQuality,\r\n setActiveElements,\r\n setIsLoading,\r\n setIsFullScreen,\r\n setBufferedTimeWidth,\r\n setFirstPlay,\r\n setActivePointerProgressBar,\r\n setDelayTurnOffControlbar,\r\n setManualQuality,\r\n setCanPlayVideo,\r\n setLock,\r\n setIsEnded,\r\n setTooltipTime,\r\n setShowMiniPlayer,\r\n setClearControllerSlice,\r\n} = controllerSlice.actions;\r\nexport default controllerSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IVideoElementSizeInfo, IDetails, IVideoDataSlice } from \"../../interfaces/interfaces\";\r\n\r\nexport const VideoDataSliceState: IVideoDataSlice = {\r\n details: {\r\n stream_link: \"\",\r\n type: \"\",\r\n banner: \"\",\r\n id: undefined,\r\n title: undefined,\r\n vtt: undefined,\r\n vtt_mobile: undefined,\r\n user_id: null,\r\n content_id: undefined,\r\n content_type: null,\r\n duration: 0,\r\n subtitles: undefined,\r\n },\r\n params: {\r\n src: \"\",\r\n type: \"\",\r\n id: \"\",\r\n bannerAlt: \"\",\r\n fullscreen: \"\",\r\n autoplay: \"\",\r\n cover: \"\",\r\n \"e-url\": \"\",\r\n \"e-cover\": \"\",\r\n scrollElementId: undefined,\r\n provider: \"cafevdo\",\r\n onFinished: undefined,\r\n },\r\n streamLinkParams: \"\",\r\n videoElementSizeInfo: {\r\n bottom: 0,\r\n top: 0,\r\n right: 0,\r\n left: 0,\r\n width: 0,\r\n height: 0\r\n },\r\n isFetchDetails: false,\r\n isValidAddress: false,\r\n videoTimelines: [],\r\n isReady: false,\r\n showCheckInternetSnackBar: false,\r\n subtitles: [],\r\n selectedSubtitle: undefined,\r\n subtitleText: undefined,\r\n};\r\n\r\nexport const videoDataSlice = createSlice({\r\n name: \"videoData\",\r\n initialState: VideoDataSliceState,\r\n reducers: {\r\n setInfo: (state, action: PayloadAction<IDetails>) => {\r\n state.details = action.payload;\r\n },\r\n setPlayerParams: (state, action: PayloadAction<any>) => {\r\n state.params = action.payload;\r\n },\r\n setStreamLinkParams: (state, action: PayloadAction<string>) => {\r\n state.streamLinkParams = action.payload;\r\n },\r\n setVideoElementSizeInfo: (state, action: PayloadAction<IVideoElementSizeInfo>) => {\r\n state.videoElementSizeInfo = action.payload;\r\n },\r\n setIsFetchDetails: (state, action: PayloadAction<boolean>) => {\r\n state.isFetchDetails = action.payload;\r\n },\r\n setIsValidAddress: (state, action: PayloadAction<boolean>) => {\r\n state.isValidAddress = action.payload;\r\n },\r\n setVideoTimelines: (state, action: PayloadAction<number[]>) => {\r\n state.videoTimelines = action.payload;\r\n },\r\n setIsReady: (state, action: PayloadAction<boolean>) => {\r\n state.isReady = action.payload;\r\n },\r\n setShowCheckInternetSnackBar: (state, action: PayloadAction<boolean>) => {\r\n state.showCheckInternetSnackBar = action.payload;\r\n },\r\n setSubtitles: (state, action: PayloadAction<TextTrack[]>) => {\r\n state.subtitles = action.payload;\r\n },\r\n setSelectedSubtitle: (state, action: PayloadAction<any>) => {\r\n state.selectedSubtitle = action.payload;\r\n },\r\n setSubtitleText: (state, action: PayloadAction<string>) => {\r\n state.subtitleText = action.payload;\r\n },\r\n setClearVideoDataSlice: (state) => {\r\n return (state = VideoDataSliceState);\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setInfo,\r\n setPlayerParams,\r\n setStreamLinkParams,\r\n setVideoElementSizeInfo,\r\n setIsFetchDetails,\r\n setIsValidAddress,\r\n setVideoTimelines,\r\n setIsReady,\r\n setShowCheckInternetSnackBar,\r\n setSubtitles,\r\n setSubtitleText,\r\n setSelectedSubtitle,\r\n setClearVideoDataSlice\r\n} = videoDataSlice.actions;\r\nexport default videoDataSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IUserSettings, IUserSlice, IVideoSettings } from \"../../interfaces/interfaces\";\r\n\r\nconst UserSliceState: IUserSlice = {\r\n settings: {\r\n quality: -1,\r\n brightness: 100,\r\n volume: 100,\r\n speed: 1,\r\n },\r\n videoSettings: {\r\n time: 0\r\n },\r\n};\r\n\r\nexport const userSlice = createSlice({\r\n name: \"user\",\r\n initialState: UserSliceState,\r\n reducers: {\r\n setUserSettings: (state, action: PayloadAction<IUserSettings>) => {\r\n state.settings = action.payload;\r\n },\r\n setVideoSettings: (state, action: PayloadAction<IVideoSettings>) => {\r\n state.videoSettings = action.payload;\r\n },\r\n setClearUserSlice: () => {\r\n return UserSliceState;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setUserSettings,\r\n setVideoSettings,\r\n setClearUserSlice\r\n} = userSlice.actions;\r\n\r\nexport default userSlice.reducer;\r\n","import controllerReducer from \"./slices/controllerSlice\";\r\nimport videoDataReducer from \"./slices/videoDataSlice\";\r\nimport popoversReducer from \"./slices/popoversSlice\";\r\nimport userReducer from \"./slices/userSlice\";\r\n\r\nimport { configureStore } from \"@reduxjs/toolkit\";\r\n\r\nconst store = configureStore({\r\n reducer: {\r\n controller: controllerReducer,\r\n videoData: videoDataReducer,\r\n popovers: popoversReducer,\r\n user: userReducer,\r\n },\r\n devTools: true,\r\n middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: false })\r\n});\r\n\r\nexport type RootState = ReturnType<typeof store.getState>;\r\nexport type AppDispatch = typeof store.dispatch;\r\nexport default store;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IPopoversSlice } from \"../../interfaces/interfaces\";\r\n\r\nconst PopOversSliceState: IPopoversSlice = {\r\n settingPopover: false,\r\n speedPopover: false,\r\n qualityLevelsPopover: false\r\n};\r\nexport const popoversSlice = createSlice({\r\n name: \"popover\",\r\n initialState: PopOversSliceState,\r\n reducers: {\r\n setSettingPopover: (state, action: PayloadAction<boolean>) => {\r\n state.settingPopover = action.payload;\r\n },\r\n setSpeedPopover: (state, action: PayloadAction<boolean>) => {\r\n state.speedPopover = action.payload;\r\n },\r\n setQualityLevelsPopover: (state, action: PayloadAction<boolean>) => {\r\n state.qualityLevelsPopover = action.payload;\r\n },\r\n setClearPopoversSlice: (state) => {\r\n state.settingPopover = false;\r\n state.speedPopover = false;\r\n state.qualityLevelsPopover = false;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setSettingPopover,\r\n setSpeedPopover,\r\n setQualityLevelsPopover,\r\n setClearPopoversSlice\r\n} = popoversSlice.actions;\r\n\r\nexport default popoversSlice.reducer;\r\n","export const enum zIndex {\r\n vttDisable = -2,\r\n backwardForwardInActive = 1,\r\n videoPlayer,\r\n mainIcons,\r\n footer,\r\n vtt,\r\n videoPlayerInFullScreen = 1000000,\r\n popoverBlurBackground,\r\n backwardForwardActive,\r\n popoverContent,\r\n maxPopover,\r\n videoPlayerInPictureInPicture,\r\n}\r\n\r\nexport const enum SettingSections {\r\n main = \"main\",\r\n qualityLevels = \"qualityLevels\",\r\n speed = \"speed\"\r\n}\r\n\r\nexport const enum ConditionName {\r\n showHeader = \"showHeader\",\r\n showMain = \"showMain\",\r\n showFooter = \"showFooter\",\r\n showTouchVolumeBrightness = \"showTouchVolumeBrightness\",\r\n showBackwardForward = \"showBackwardForward\",\r\n showTitle = \"showTitle\",\r\n showSettingPopover = \"showSettingPopover\",\r\n showSpeedPopover = \"showSpeedPopover\",\r\n showQualityLevelsPopover = \"showQualityLevelsPopover\",\r\n showSettingIcon = \"showSettingIcon\",\r\n showBanner = \"showBanner\",\r\n showProgressbar = \"showProgressbar\",\r\n showMiniPlayer = \"showMiniPlayer\",\r\n showPictureInPicture = \"showPictureInPicture\",\r\n showSubtitle = \"showSubtitle\",\r\n hidePopovers = \"hidePopovers\",\r\n isLandscape = \"isLandscape\",\r\n isTouchScreen = \"isTouchScreen\",\r\n isTouchScreenPortrait = \"isTouchScreenPortrait\",\r\n isTouchScreenLandscape = \"isTouchScreenLandscape\",\r\n isActiveElements = \"isActiveElements\",\r\n isPlay = \"isPlay\",\r\n isFirstPlay = \"isFirstPlay\",\r\n isLock = \"isLock\",\r\n isIOS = \"isIOS\",\r\n isLoading = \"isLoading\",\r\n isStaticFormat = \"isStaticFormat\",\r\n isEnded = \"isEnded\",\r\n isAutoPlay = \"isAutoPlay\",\r\n isFullScreen = \"isFullScreen\",\r\n isValidAddress = \"isValidAddress\",\r\n isFetchDetails = \"isFetchDetails\",\r\n isAutoQuality = \"isAutoQuality\",\r\n isPressKeySpace = \"isPressKeySpace\",\r\n isPressKeyI = \"isPressKeyI\",\r\n isPressKeyF = \"isPressKeyF\",\r\n isPressKeyS = \"isPressKeyS\",\r\n isPressKeyArrowRight = \"isPressKeyArrowRight\",\r\n isPressKeyArrowLeft = \"isPressKeyArrowLeft\",\r\n isPressKeyM = \"isPressKeyM\",\r\n isPressKeyC = \"isPressKeyC\",\r\n isSendTimelineLog = \"isSendTimelineLog\",\r\n isReady = \"isReady\",\r\n isSelectedSubtitle = \"isSelectedSubtitle\",\r\n hasTitle = \"hasTitle\",\r\n hasBanner = \"hasBanner\",\r\n hasStreamLink = \"hasStreamLink\",\r\n hasManualQuality = \"hasManualQuality\",\r\n hasSound = \"hasSound\",\r\n hasAutoPlay = \"hasAutoPlay\",\r\n hasFullScreenParams = \"hasFullScreenParams\",\r\n hasScrollElementId = \"hasScrollElementId\",\r\n hasOnFinishedParams = \"hasOnFinishedParams\",\r\n hasSubtitles = \"hasSubtitles\",\r\n hasSubtitlesInDetails = \"hasSubtitlesInDetails\",\r\n hasActiveCue = \"hasActiveCue\",\r\n getDetails = \"getDetails\",\r\n canPlayVideo = \"canPlayVideo\",\r\n setSubtitleFirstPlay = \"setSubtitleFirstPlay\"\r\n}","import { conditions } from \"./conditions/conditions\";\r\nimport { ConditionName } from \"./interfaces/enums\";\r\nimport store from \"./redux/store\";\r\nimport { setClearVideoDataSlice, setStreamLinkParams } from \"./redux/slices/videoDataSlice\";\r\nimport { setClearControllerSlice } from \"./redux/slices/controllerSlice\";\r\nimport { setClearUserSlice } from \"./redux/slices/userSlice\";\r\nimport { setClearPopoversSlice } from \"./redux/slices/popoversSlice\";\r\n\r\nexport const wait = (s: number) => new Promise((resolve) => setTimeout(resolve, s * 1000));\r\n\r\nexport const getUUID = () => {\r\n let uuid = localStorage.getItem(\"hamrahiUUID\");\r\n if (!uuid) {\r\n uuid = uuidGenerator();\r\n localStorage.setItem(\"hamrahiUUID\", uuid);\r\n }\r\n return uuid.toString();\r\n};\r\n\r\nexport const uuidGenerator = () => {\r\n let uuid = \"xxxxxxxx-xxxx-Mxxx-Nxxx-x\".replace(/[xMN]/g, (char) => {\r\n let val: number;\r\n if (char === \"M\") val = Math.floor(1 + Math.random() * 5);\r\n else if (char === \"N\") val = Math.floor(8 + Math.random() * 4);\r\n else val = Math.floor(Math.random() * 16);\r\n return val.toString(16);\r\n });\r\n uuid += Date.now().toString(16);\r\n return uuid;\r\n};\r\n\r\nexport const isTouchScreen = () =>\r\n \"ontouchstart\" in window || ((window as any)[\"DocumentTouch\"] && document instanceof (window as any)[\"DocumentTouch\"]);\r\nexport const isTouchScreenLandscape = () => {\r\n const { isFullScreen } = store.getState().controller;\r\n return isTouchScreen() && isFullScreen;\r\n};\r\nexport const isTouchScreenPortrait = () => {\r\n const { isFullScreen } = store.getState().controller;\r\n return isTouchScreen() && !isFullScreen;\r\n};\r\n\r\nexport const isIOS = () => {\r\n return (\r\n [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) ||\r\n // iPad on iOS 13 detection\r\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\r\n );\r\n};\r\n\r\nexport const addZeroBefore = (n: number) => {\r\n return (n < 10 ? \"0\" : \"\") + n;\r\n};\r\n\r\nexport const secondsToHMS = (seconds: number) => {\r\n const h = Math.floor(seconds / 3600);\r\n const m = Math.floor((seconds % 3600) / 60);\r\n const s = Math.floor((seconds % 3600) % 60);\r\n return h < 1 ? `${addZeroBefore(m)}:${addZeroBefore(s)}` : `${addZeroBefore(h)}:${addZeroBefore(m)}:${addZeroBefore(s)}`;\r\n};\r\n\r\nexport const staticFormats = (realFormat: string) => {\r\n if ([\"mp4\", \"mkv\", \"mov\", \"m4v\"].includes(realFormat)) return \"mp4\";\r\n else if (realFormat === \"webm\" || realFormat === \"flv\") return realFormat;\r\n else if ([\"mp3\", \"ogg\"].includes(realFormat)) return \"mp3\";\r\n else return false;\r\n};\r\n\r\nexport const addUuidToSrc = (src: string) => {\r\n const urlObject = new URL(src);\r\n let urlSrc = src;\r\n if (urlObject.search.length) return (urlSrc += `&uuid=${getUUID()}`);\r\n else return (urlSrc += `?uuid=${getUUID()}`);\r\n};\r\n\r\nexport const checkParentTarget = (event: any, target: string) => {\r\n try {\r\n return [\r\n event.target.id,\r\n event.target.parentNode.id,\r\n event.target.parentNode.parentNode.id,\r\n event.target.parentNode.parentNode.parentNode.id,\r\n event.target.parentNode.parentNode.parentNode.parentNode.id\r\n ].includes(target);\r\n } catch (error) {\r\n return false;\r\n }\r\n};\r\n\r\nexport const appendQueryParamsToChunks = (link: string) => {\r\n const dispatch = store.dispatch;\r\n let queryParams: string = \"\";\r\n queryParams = link.split(\"m3u8\")[1];\r\n if (queryParams) queryParams = `${queryParams}&uuid=${getUUID()}`;\r\n else queryParams = `?uuid=${getUUID()}`;\r\n dispatch(setStreamLinkParams(queryParams));\r\n};\r\n\r\nexport const handleRippleCircle = (event: any, id: string) => {\r\n const element: any = document.getElementById(id);\r\n const circle = document.createElement(\"span\");\r\n circle.style.width = circle.style.height = `50px`;\r\n circle.style.left = `${event.touches[0].clientX - element.offsetLeft - 25}px`;\r\n circle.style.top = `${event.touches[0].clientY - element.offsetTop - 25}px`;\r\n circle.classList.add(\"pl-ripple\");\r\n const ripple = element.getElementsByClassName(\"pl-ripple\")[0];\r\n if (ripple) ripple.remove();\r\n element.appendChild(circle);\r\n};\r\n\r\nexport const handleRipple = (event: any, id: string, size: number = 50) => {\r\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\r\n const clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;\r\n const element: any = document.getElementById(id);\r\n const circle = document.createElement(\"span\");\r\n circle.style.width = circle.style.height = `${size}px`;\r\n circle.style.left = `${clientX - size / 2}px`;\r\n circle.style.top = `${clientY - element.getBoundingClientRect().top - size / 2}px`;\r\n circle.classList.add(\"pl-ripple\");\r\n const ripple = element.getElementsByClassName(\"pl-ripple\")[0];\r\n if (ripple) ripple.remove();\r\n element.appendChild(circle);\r\n};\r\n\r\nexport const responseValidator = (status: number): boolean => status >= 200 && status < 300;\r\n\r\nexport const clearRedux = () => {\r\n const dispatch = store.dispatch;\r\n dispatch(setClearVideoDataSlice());\r\n dispatch(setClearControllerSlice());\r\n dispatch(setClearUserSlice());\r\n dispatch(setClearPopoversSlice());\r\n};\r\n\r\nexport const weighted_random = (options: any) => {\r\n let i;\r\n\r\n let weights: any[] = [];\r\n\r\n for (i = 0; i < options.length; i++) weights[i] = options[i].weight + (weights[i - 1] || 0);\r\n\r\n let random = Math.random() * weights[weights.length - 1];\r\n\r\n for (i = 0; i < weights.length; i++) if (weights[i] > random) break;\r\n\r\n return options[i].domain;\r\n};\r\n\r\n// ***** Player Core *****\r\n\r\nexport const handlePageLoadTime = (loadingDurationRef: any) => {\r\n let pageLoadTime = 0;\r\n if (performance && performance.getEntriesByType(\"navigation\")) pageLoadTime = performance.getEntriesByType(\"navigation\")[0].duration;\r\n loadingDurationRef.current = pageLoadTime;\r\n};\r\n\r\nexport const highestResolutionSupported = (resolutions: string[], width: number, height: number) => {\r\n const w = width * window.devicePixelRatio;\r\n const h = height * window.devicePixelRatio;\r\n let filteredResolutions: string[] = [];\r\n if (conditions(ConditionName.isTouchScreenPortrait))\r\n filteredResolutions = resolutions.filter((resolution: string) => Number(resolution.split(\"x\")[0].trim()) <= w);\r\n else\r\n filteredResolutions = resolutions.filter(\r\n (resolution: string) => Number(resolution.split(\"x\")[0].trim()) <= h || Number(resolution.split(\"x\")[1].trim()) <= w\r\n );\r\n return filteredResolutions.indexOf(filteredResolutions[filteredResolutions.length - 1]);\r\n};\r\n\r\nexport const flattenObject = (input: any, keyName?: string) => {\r\n let result: any = {};\r\n for (const key in input) {\r\n const newKey = keyName ? `${keyName}_${key}` : key;\r\n if (typeof input[key] === \"object\" && !Array.isArray(input[key])) result = { ...result, ...flattenObject(input[key], newKey) };\r\n else result[newKey] = input[key];\r\n }\r\n return result;\r\n};\r\n\r\nexport const sortLanguages = (array: any) => {\r\n const priority: any = { fa: 1, en: 2 };\r\n\r\n return array.slice().sort((a: any, b: any) => {\r\n const prioA = priority[a.lang] || 999;\r\n const prioB = priority[b.lang] || 999;\r\n\r\n return prioA - prioB;\r\n });\r\n};\r\n\r\nexport const getSubtitleLabel = (subtitleLanguage: string) => {\r\n let label;\r\n switch (subtitleLanguage) {\r\n case \"fa\":\r\n label = \"فارسی\";\r\n break;\r\n case \"en\":\r\n label = \"انگلیسی\";\r\n break;\r\n case \"ar\":\r\n label = \"عربی\";\r\n break;\r\n case \"tr\":\r\n label = \"ترکی\";\r\n break;\r\n default:\r\n break;\r\n }\r\n return label;\r\n};\r\n\r\nexport const spliteStringPerLine = (str: string) => str.split(/\\r?\\n|\\r|\\n/g);","import { isIOS, isTouchScreen, isTouchScreenLandscape, isTouchScreenPortrait, staticFormats } from \"../helpers\";\r\nimport { ConditionName } from \"../interfaces/enums\";\r\nimport store from \"../redux/store\";\r\n\r\nexport const conditions = (type: string) => {\r\n const {\r\n params,\r\n details,\r\n isValidAddress,\r\n isFetchDetails,\r\n isReady,\r\n subtitles,\r\n showCheckInternetSnackBar,\r\n selectedSubtitle\r\n } = store.getState().videoData;\r\n const {\r\n firstPlay,\r\n lock,\r\n canPlayVideo,\r\n manualQuality,\r\n activeElements,\r\n isLoading,\r\n isEnded,\r\n isAutoPlay,\r\n play,\r\n isFullScreen,\r\n showMiniPlayer,\r\n } = store.getState().controller;\r\n const {\r\n settingPopover,\r\n speedPopover,\r\n qualityLevelsPopover\r\n } = store.getState().popovers;\r\n const { settings } = store.getState().user;\r\n\r\n switch (type) {\r\n case ConditionName.showHeader:\r\n return !firstPlay && canPlayVideo;\r\n case ConditionName.showMain:\r\n return !showCheckInternetSnackBar && (!lock || firstPlay);\r\n case ConditionName.showFooter:\r\n return !firstPlay && canPlayVideo;\r\n case ConditionName.showTouchVolumeBrightness:\r\n return !firstPlay && isTouchScreenLandscape() && !lock && !isEnded;\r\n case ConditionName.showBackwardForward:\r\n return !firstPlay && isTouchScreen() && !lock;\r\n case ConditionName.showTitle:\r\n return !staticFormats(params.type!) && isFullScreen && !lock;\r\n case ConditionName.showSettingPopover:\r\n return settingPopover;\r\n case ConditionName.showSpeedPopover:\r\n return speedPopover;\r\n case ConditionName.showQualityLevelsPopover:\r\n return qualityLevelsPopover;\r\n case ConditionName.showSettingIcon:\r\n return !staticFormats(params.type!) && !isIOS() && !isFullScreen;\r\n case ConditionName.showBanner:\r\n return firstPlay && (details.banner || params.cover);\r\n case ConditionName.showProgressbar:\r\n return !isIOS();\r\n case ConditionName.showMiniPlayer:\r\n return showMiniPlayer;\r\n case ConditionName.showPictureInPicture:\r\n return showMiniPlayer !== true && !isIOS() && !isTouchScreen();\r\n case ConditionName.showSubtitle:\r\n return !!selectedSubtitle && !showMiniPlayer;\r\n case ConditionName.hidePopovers:\r\n return !settingPopover;\r\n case ConditionName.isLandscape:\r\n return window.innerHeight <= window.innerWidth;\r\n case ConditionName.isTouchScreen:\r\n return isTouchScreen();\r\n case ConditionName.isTouchScreenPortrait:\r\n return isTouchScreenPortrait();\r\n case ConditionName.isTouchScreenLandscape:\r\n return isTouchScreenLandscape();\r\n case ConditionName.isActiveElements:\r\n return activeElements;\r\n case ConditionName.isPlay:\r\n return play;\r\n case ConditionName.isFirstPlay:\r\n return firstPlay;\r\n case ConditionName.isLock:\r\n return lock;\r\n case ConditionName.isIOS:\r\n return isIOS();\r\n case ConditionName.isLoading:\r\n return isLoading;\r\n case ConditionName.isStaticFormat:\r\n return staticFormats(params.type!);\r\n case ConditionName.isEnded:\r\n return isEnded;\r\n case ConditionName.isAutoPlay:\r\n return isAutoPlay;\r\n case ConditionName.isFullScreen:\r\n return isFullScreen;\r\n case ConditionName.isValidAddress:\r\n return isValidAddress;\r\n case ConditionName.isFetchDetails:\r\n return isFetchDetails;\r\n case ConditionName.isAutoQuality:\r\n return settings.quality === -1;\r\n case ConditionName.isPressKeySpace:\r\n return !lock;\r\n case ConditionName.isPressKeyI:\r\n return !lock && !firstPlay && !showMiniPlayer;\r\n case ConditionName.isPressKeyF:\r\n return !lock && !firstPlay && !showMiniPlayer;\r\n case ConditionName.isPressKeyS:\r\n return !lock && !firstPlay;\r\n case ConditionName.isPressKeyArrowRight:\r\n return !firstPlay && !lock;\r\n case ConditionName.isPressKeyArrowLeft:\r\n return !firstPlay && !lock;\r\n case ConditionName.isPressKeyM:\r\n return !firstPlay && !lock;\r\n case ConditionName.isPressKeyC:\r\n return !lock && !firstPlay && !showMiniPlayer && !!subtitles && subtitles.length > 0;\r\n case ConditionName.isSendTimelineLog:\r\n return !staticFormats(params.type!);\r\n case ConditionName.isReady:\r\n return isReady;\r\n case ConditionName.isSelectedSubtitle:\r\n return !!subtitles && subtitles.length > 0 && selectedSubtitle;\r\n case ConditionName.hasTitle:\r\n return details.title;\r\n case ConditionName.hasBanner:\r\n return details.banner;\r\n case ConditionName.hasStreamLink:\r\n return details.stream_link;\r\n case ConditionName.hasManualQuality:\r\n return manualQuality !== undefined && manualQuality !== null;\r\n case ConditionName.hasSound:\r\n return !!settings.volume;\r\n case ConditionName.hasAutoPlay:\r\n return params.autoplay === \"true\";\r\n case ConditionName.hasFullScreenParams:\r\n return params.fullscreen === \"true\";\r\n case ConditionName.hasScrollElementId:\r\n return !!params.scrollElementId && showMiniPlayer !== undefined;\r\n case ConditionName.hasOnFinishedParams:\r\n return !!params.onFinished;\r\n case ConditionName.hasSubtitles:\r\n return !!subtitles && subtitles.length > 0 && !showMiniPlayer;\r\n case ConditionName.hasSubtitlesInDetails:\r\n return details.subtitles && details.subtitles.length > 0;\r\n case ConditionName.hasActiveCue:\r\n return selectedSubtitle && selectedSubtitle.activeCues && selectedSubtitle.activeCues.length > 0;\r\n case ConditionName.getDetails:\r\n return !!params.type && params.id;\r\n case ConditionName.canPlayVideo:\r\n return canPlayVideo;\r\n case ConditionName.setSubtitleFirstPlay:\r\n return details.subtitles && details.subtitles.length > 0 && !firstPlay && !staticFormats(params.type!);\r\n default:\r\n break;\r\n }\r\n};\r\n","import { AppDispatch, RootState } from \"./store\";\r\nimport { TypedUseSelectorHook, useDispatch, useSelector } from \"react-redux\";\r\n\r\nexport const useAppDispatch: any = () => useDispatch<AppDispatch>();\r\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;\r\n","import store from \"./redux/store\";\r\n\r\nexport const videoTag = () => document.getElementById(\"player-tag\") as HTMLVideoElement;\r\nexport const progressBar = () => document.getElementById(\"time-progress-bar\") as any;\r\nexport const progressBarWidth = () => store.getState().videoData.videoElementSizeInfo.width - 2;","import { conditions } from \"../conditions/conditions\";\r\nimport { videoTag } from \"../constants\";\r\nimport { flattenObject, getUUID } from \"../helpers\";\r\nimport { ConditionName } from \"../interfaces/enums\";\r\nimport store from \"../redux/store\";\r\n\r\nexport const speedChangeLog = (selectedSpeed: Number) => {\r\n const { params, details } = store.getState().videoData;\r\n const { settings } = store.getState().user;\r\n return {\r\n category: \"speedChange\",\r\n previousSelectedSpeed: settings.speed,\r\n selectedSpeed: selectedSpeed,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const qualityChangeRequestLog = (selectedQuality: String) => {\r\n const { params, details } = store.getState().videoData;\r\n const { qualityLevels, manualQuality, autoQuality } = store.getState().controller;\r\n return {\r\n category: \"qualityChangeRequest\",\r\n currentPlayingQuality: `${qualityLevels[conditions(ConditionName.isAutoQuality) ? autoQuality ?? manualQuality! : manualQuality!]}P`,\r\n previousSelectedQuality: conditions(ConditionName.isAutoQuality) ? \"auto\" : `${qualityLevels[manualQuality!]}P`,\r\n selectedQuality: selectedQuality,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const catchUpLoadingLog = (duration: number) => {\r\n const { params, details } = store.getState().videoData;\r\n const { qualityLevels, autoQuality } = store.getState().controller;\r\n const { settings } = store.getState().user;\r\n\r\n return {\r\n category: \"catchUpLoading\",\r\n previousVideoTime: Number(sessionStorage.getItem(\"previousVideoTime\")),\r\n currentVideoTime: videoTag().currentTime,\r\n duration: duration,\r\n quality: `${conditions(ConditionName.isAutoQuality) ? qualityLevels[autoQuality!] : qualityLevels[settings.quality]}P`,\r\n isAutoQuality: conditions(ConditionName.isAutoQuality),\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const backwardForwardLog = (type: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: type === \"backward\" ? \"backward\" : \"forward\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: details.stream_link ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const fullscreenLog = (category: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: category,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const brightnessLog = (source: number, target: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"brightnessChange\",\r\n source: source,\r\n target: target,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const volumeLog = (source: number, target: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"volumeChange\",\r\n source: source,\r\n target: target,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const lockLog = (category: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: category,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};\r\n\r\nexport const ExceptionsLog = (type: string, message: string) => {\r\n return {\r\n category: \"error\",\r\n type: type,\r\n message: message\r\n };\r\n};\r\n\r\nexport const videoTimelineLog = (start: number, end: number) => {\r\n const { params, details } = store.getState().videoData;\r\n const { duration } = store.getState().controller;\r\n return {\r\n category: \"video-timeline\",\r\n video_id: +params.id!,\r\n video_type: params.type,\r\n start: start,\r\n end: end,\r\n watchedDuration: end - start,\r\n video_duration: Math.floor(duration),\r\n clientUUID: getUUID(),\r\n user_id: details.user_id,\r\n content_type: details.content_type,\r\n content_id: details.content_id\r\n };\r\n};\r\n\r\nexport const autoQualityChangeLog = (sourceQuality: String, targetQuality: String, diffQuality: number) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"autoQualityChange\",\r\n sourceQuality: sourceQuality,\r\n targetQuality: targetQuality,\r\n diffQuality: diffQuality,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const pingpongLog = (startTimer: number, qualityHistory: number[]) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"pingpong\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n PingPongDuration: Number((new Date().getTime() - startTimer).toFixed(2)),\r\n PingPongSourceQuality: `${qualityHistory[0]}P`, // A A->B && B->A\r\n PingPongTargetQuality: `${qualityHistory[1]}P`, // B,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const pausePlayLog = (isPlay: boolean) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: isPlay ? \"playVideo\" : \"pauseVideo\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: details.stream_link ? details.stream_link : params.src,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const initLog = (loadingTime: number, waitingTime: number, bannerLoadingTime: number, firstChunkPlayingTime: number, timerRef: any) => {\r\n const { params, details } = store.getState().videoData;\r\n const totalTime = Date.now() - timerRef.current + loadingTime + waitingTime;\r\n const memory = (window.performance as any).memory;\r\n const timing = JSON.parse(JSON.stringify((window.performance as any).timing));\r\n return {\r\n category: \"initLog\",\r\n id: Number(params.id),\r\n type: params.type,\r\n origin: new URL(conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src!).origin,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n loading: loadingTime,\r\n bannerLoading: !conditions(ConditionName.hasBanner) || bannerLoadingTime < 0 ? 0 : bannerLoadingTime,\r\n waiting: waitingTime,\r\n firstChunkPlaying: firstChunkPlayingTime < 0 ? 0 : firstChunkPlayingTime,\r\n totalTime: totalTime,\r\n provider: params.provider,\r\n performance: flattenObject({ memory, timing }, \"performance\"),\r\n userAgent: window.navigator.userAgent\r\n };\r\n};\r\n\r\nexport const loadingLog = (waitingDuration: number, qualityLevel: number, timerRef: any, loadingCounterRef: any, videoEntranceTime: number) => {\r\n const { params, details } = store.getState().videoData;\r\n const { settings } = store.getState().user;\r\n const previousLoaderDiff = Date.now() - timerRef.current;\r\n return {\r\n category: \"loading\",\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src,\r\n duration: waitingDuration,\r\n quality: `${qualityLevel}P`,\r\n isAutoQuality: conditions(ConditionName.isAutoQuality),\r\n previousLoaderDiff: previousLoaderDiff,\r\n counter: loadingCounterRef.current,\r\n loadingPercentile: Number((waitingDuration / previousLoaderDiff).toFixed(2)),\r\n videoTime: videoTag().currentTime,\r\n videoEntranceTime: videoEntranceTime,\r\n speed: settings.speed,\r\n provider: params.provider\r\n };\r\n};\r\n\r\nexport const subtitleLog = (language: string) => {\r\n const { params, details } = store.getState().videoData;\r\n return {\r\n category: \"subtitle\",\r\n language: language,\r\n id: Number(params.id),\r\n type: params.type,\r\n src: conditions(ConditionName.hasStreamLink) ? details.stream_link : params.src\r\n };\r\n};","import store from \"../redux/store\";\r\nimport { apiCaller } from \"../services/apiCaller\";\r\nimport { API } from \"../services/services\";\r\nimport { getUUID } from \"../helpers\";\r\n\r\nexport const sendFluentLog = (data: any) => {\r\n const { details } = store.getState().videoData;\r\n let _data = {\r\n ...data,\r\n timestamp: Date.now(),\r\n clientUUID: getUUID(),\r\n uuid: getUUID(),\r\n link: window.location.href,\r\n user_id: details.user_id,\r\n live_id: null,\r\n format: undefined,\r\n content_type: details.content_type,\r\n content_id: details.content_id\r\n };\r\n apiCaller({ url: API().logs, method: \"post\", data: _data });\r\n};\r\n","import axios from \"axios\";\r\nimport { IApiCaller, IAxiosConfig } from \"../interfaces/interfaces\";\r\nimport store from \"../redux/store\";\r\nimport { wait } from \"../helpers\";\r\n\r\nexport const apiCaller: any = async ({\r\n url,\r\n method = \"GET\",\r\n data,\r\n headers,\r\n retryCount = 1,\r\n maxRetryCount = 0,\r\n errorMessage,\r\n retryPolicy,\r\n errorCallback,\r\n timeoutCount\r\n}: IApiCaller) => {\r\n let axiosConfig: IAxiosConfig = {\r\n url: url,\r\n method: method,\r\n headers: {\r\n ...headers,\r\n \"Content-Type\": \"application/json\"\r\n },\r\n timeout: timeoutCount ? timeoutCount * 1000 : undefined\r\n };\r\n if (data) {\r\n if (method === \"GET\")\r\n axiosConfig = {\r\n ...axiosConfig,\r\n params: {\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\r\n ...data\r\n }\r\n };\r\n else\r\n axiosConfig = {\r\n ...axiosConfig,\r\n data: {\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\r\n ...data\r\n }\r\n };\r\n } else {\r\n if (method === \"GET\")\r\n axiosConfig = {\r\n ...axiosConfig,\r\n params: {\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider\r\n }\r\n };\r\n else\r\n axiosConfig = {\r\n ...axiosConfig,\r\n data: {\r\n uuid: store.getState().videoData.params.uuid,\r\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider\r\n }\r\n };\r\n }\r\n try {\r\n return await axios(axiosConfig);\r\n } catch (error: any) {\r\n if (error && error.response && error.response.status === 401) {\r\n // \r\n } else {\r\n if (errorCallback) errorCallback(error.response.status, error.response.message);\r\n let newRetryDelay = 0,\r\n newMaxRetryCount = 0;\r\n if (retryPolicy !== undefined) {\r\n for (let i = 0; i < retryPolicy.length; i++) {\r\n if (\r\n (((retryPolicy[i].codeAbove && error.response.status >= retryPolicy[i].codeAbove!) ||\r\n (retryPolicy[i].codeBelow && error.response.status <= retryPolicy[i].codeBelow!)) &&\r\n (retryPolicy[i].excludeCodes.length === 0 || !retryPolicy[i].excludeCodes.includes(error.response.status))) ||\r\n retryPolicy[i].includeCodes.length === 0 ||\r\n retryPolicy[i].includeCodes.includes(error.response.status)\r\n ) {\r\n newMaxRetryCount = retryPolicy[i].count;\r\n newRetryDelay = retryPolicy[i].delay;\r\n break;\r\n }\r\n }\r\n } else {\r\n newMaxRetryCount = maxRetryCount;\r\n newRetryDelay = retryCount + 1;\r\n }\r\n if (retryCount < newMaxRetryCount) {\r\n await wait(newRetryDelay);\r\n return apiCaller({\r\n url,\r\n method,\r\n data,\r\n headers,\r\n retryCount: retryCount + 1,\r\n newMaxRetryCount,\r\n errorMessage,\r\n retryPolicy,\r\n errorCallback\r\n });\r\n } else if (error.response)\r\n return {\r\n data: error.response.data ? error.response.data : { detail: \"عملیات با خطا مواجه شده است.\" },\r\n status: error.response.status\r\n };\r\n }\r\n }\r\n};\r\n","import {\r\n getFluentdUrl,\r\n getRestApiLiveUrl,\r\n} from \"./baseUrl\";\r\n\r\nexport const API = () => {\r\n return {\r\n vod: {\r\n getVodUrl: `${getRestApiLiveUrl()}/v1/live/details/vod/`,\r\n },\r\n viewCount: (content_id: number) => `${getRestApiLiveUrl()}/v1/viewed/content/${content_id}`,\r\n videoTimelineLog: `${getFluentdUrl()}/video-timeline.log`,\r\n logs: `${getFluentdUrl()}/drive-endpoint.log`,\r\n };\r\n};","const envs = require(\"../configs/nextConfigs/next.config.js\");\r\nconst isNpmPackage = require(\"../configs/npmPackage/npmPackage\");\r\n\r\nexport const getRestApiLiveUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string)) + \"/live/api\";\r\nexport const getFluentdUrl = () => (isNpmPackage ? envs.fluentdUrl : (process.env.fluentdUrl as string));\r\n"]}