@clickview/exchange 0.54.0 → 0.54.1-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/-rc15O6e.chunk.js +2 -0
- package/dist/scripts/{RR_Npo-u.chunk.js.map → -rc15O6e.chunk.js.map} +1 -1
- package/dist/scripts/{BMV1koDe.chunk.js → 8cN0DOAw.chunk.js} +2 -2
- package/dist/scripts/{BMV1koDe.chunk.js.map → 8cN0DOAw.chunk.js.map} +1 -1
- package/dist/scripts/{B4-7nU0g.chunk.js → 93Mytmux.chunk.js} +2 -2
- package/dist/scripts/{B4-7nU0g.chunk.js.map → 93Mytmux.chunk.js.map} +1 -1
- package/dist/scripts/{DH2yRBmA.chunk.js → 9YLXxYYH.chunk.js} +2 -2
- package/dist/scripts/{DH2yRBmA.chunk.js.map → 9YLXxYYH.chunk.js.map} +1 -1
- package/dist/scripts/{S8s7mgrG.chunk.js → B77TOWer.chunk.js} +2 -2
- package/dist/scripts/{S8s7mgrG.chunk.js.map → B77TOWer.chunk.js.map} +1 -1
- package/dist/scripts/{D5fWDfWb.chunk.js → BB_Ud-Dl.chunk.js} +2 -2
- package/dist/scripts/{D5fWDfWb.chunk.js.map → BB_Ud-Dl.chunk.js.map} +1 -1
- package/dist/scripts/{C7s6znQN.chunk.js → BCGCl500.chunk.js} +2 -2
- package/dist/scripts/{C7s6znQN.chunk.js.map → BCGCl500.chunk.js.map} +1 -1
- package/dist/scripts/{CZ0_WZo1.chunk.js → BEonThYO.chunk.js} +2 -2
- package/dist/scripts/{CZ0_WZo1.chunk.js.map → BEonThYO.chunk.js.map} +1 -1
- package/dist/scripts/{DfkRK80r.chunk.js → BFAbrH3V.chunk.js} +2 -2
- package/dist/scripts/{DfkRK80r.chunk.js.map → BFAbrH3V.chunk.js.map} +1 -1
- package/dist/scripts/{fG3bu7tL.chunk.js → BIciRJHg.chunk.js} +2 -2
- package/dist/scripts/{fG3bu7tL.chunk.js.map → BIciRJHg.chunk.js.map} +1 -1
- package/dist/scripts/{CDuLjvaV.chunk.js → BJX7CePa.chunk.js} +2 -2
- package/dist/scripts/{CDuLjvaV.chunk.js.map → BJX7CePa.chunk.js.map} +1 -1
- package/dist/scripts/{wE4X9qJj.chunk.js → BL0xk5Hs.chunk.js} +2 -2
- package/dist/scripts/{wE4X9qJj.chunk.js.map → BL0xk5Hs.chunk.js.map} +1 -1
- package/dist/scripts/{DKvNIqD3.chunk.js → BN_hH3oW.chunk.js} +2 -2
- package/dist/scripts/{DKvNIqD3.chunk.js.map → BN_hH3oW.chunk.js.map} +1 -1
- package/dist/scripts/{mj_NgNWo.chunk.js → BWmMHnFV.chunk.js} +2 -2
- package/dist/scripts/{mj_NgNWo.chunk.js.map → BWmMHnFV.chunk.js.map} +1 -1
- package/dist/scripts/{BHTzCeKb.chunk.js → BapvLPQ5.chunk.js} +2 -2
- package/dist/scripts/{BHTzCeKb.chunk.js.map → BapvLPQ5.chunk.js.map} +1 -1
- package/dist/scripts/{vQs65oQi.chunk.js → Bbc1-POn.chunk.js} +2 -2
- package/dist/scripts/{vQs65oQi.chunk.js.map → Bbc1-POn.chunk.js.map} +1 -1
- package/dist/scripts/{CSuv1QVm.chunk.js → Bel5ImAj.chunk.js} +2 -2
- package/dist/scripts/{CSuv1QVm.chunk.js.map → Bel5ImAj.chunk.js.map} +1 -1
- package/dist/scripts/{CiTtDJue.chunk.js → BfWmIKU0.chunk.js} +2 -2
- package/dist/scripts/{CiTtDJue.chunk.js.map → BfWmIKU0.chunk.js.map} +1 -1
- package/dist/scripts/{BO7wPiFy.chunk.js → BhJEiLr0.chunk.js} +2 -2
- package/dist/scripts/{BO7wPiFy.chunk.js.map → BhJEiLr0.chunk.js.map} +1 -1
- package/dist/scripts/{DHx8qw7h.chunk.js → Bi_rU-SG.chunk.js} +2 -2
- package/dist/scripts/{DHx8qw7h.chunk.js.map → Bi_rU-SG.chunk.js.map} +1 -1
- package/dist/scripts/BldjpTLL.chunk.js +2 -0
- package/dist/scripts/{BMOkpx9W.chunk.js.map → BldjpTLL.chunk.js.map} +1 -1
- package/dist/scripts/Bm0DywXr.chunk.js +2 -0
- package/dist/scripts/{kjcQ0DHK.chunk.js.map → Bm0DywXr.chunk.js.map} +1 -1
- package/dist/scripts/BpFMqrCw.chunk.js +2 -0
- package/dist/scripts/{D1kNrE2G.chunk.js.map → BpFMqrCw.chunk.js.map} +1 -1
- package/dist/scripts/{B2psHTnp.chunk.js → Bw042tZ_.chunk.js} +2 -2
- package/dist/scripts/{B2psHTnp.chunk.js.map → Bw042tZ_.chunk.js.map} +1 -1
- package/dist/scripts/{DMCTlX1N.chunk.js → ByCaE7oT.chunk.js} +2 -2
- package/dist/scripts/{DMCTlX1N.chunk.js.map → ByCaE7oT.chunk.js.map} +1 -1
- package/dist/scripts/{BTGAV-7R.chunk.js → BzJeV-bU.chunk.js} +2 -2
- package/dist/scripts/{BTGAV-7R.chunk.js.map → BzJeV-bU.chunk.js.map} +1 -1
- package/dist/scripts/{Ca7s6d3a.chunk.js → BzOUcl19.chunk.js} +2 -2
- package/dist/scripts/{Ca7s6d3a.chunk.js.map → BzOUcl19.chunk.js.map} +1 -1
- package/dist/scripts/{C_b02Pfv.chunk.js → C7x-ikz8.chunk.js} +2 -2
- package/dist/scripts/{C_b02Pfv.chunk.js.map → C7x-ikz8.chunk.js.map} +1 -1
- package/dist/scripts/{Bk6B0Pga.chunk.js → C8gLKdt2.chunk.js} +2 -2
- package/dist/scripts/{Bk6B0Pga.chunk.js.map → C8gLKdt2.chunk.js.map} +1 -1
- package/dist/scripts/{BNdvuAqI.chunk.js → CA1kXo4c.chunk.js} +2 -2
- package/dist/scripts/{BNdvuAqI.chunk.js.map → CA1kXo4c.chunk.js.map} +1 -1
- package/dist/scripts/{2RtgJciS.chunk.js → CBpplRfy.chunk.js} +2 -2
- package/dist/scripts/{2RtgJciS.chunk.js.map → CBpplRfy.chunk.js.map} +1 -1
- package/dist/scripts/{CwGJynkF.chunk.js → CFHfdzmN.chunk.js} +2 -2
- package/dist/scripts/{CwGJynkF.chunk.js.map → CFHfdzmN.chunk.js.map} +1 -1
- package/dist/scripts/{DtIAQEde.chunk.js → CI1-zjtc.chunk.js} +2 -2
- package/dist/scripts/{DtIAQEde.chunk.js.map → CI1-zjtc.chunk.js.map} +1 -1
- package/dist/scripts/{CaXurNVJ.chunk.js → CLeOFM0_.chunk.js} +2 -2
- package/dist/scripts/{CaXurNVJ.chunk.js.map → CLeOFM0_.chunk.js.map} +1 -1
- package/dist/scripts/{CfG52a2J.chunk.js → CLzmMPfE.chunk.js} +2 -2
- package/dist/scripts/{CfG52a2J.chunk.js.map → CLzmMPfE.chunk.js.map} +1 -1
- package/dist/scripts/{BeYBU_45.chunk.js → CMVCOZiH.chunk.js} +2 -2
- package/dist/scripts/{BeYBU_45.chunk.js.map → CMVCOZiH.chunk.js.map} +1 -1
- package/dist/scripts/{-IJi77po.chunk.js → CRiSdltq.chunk.js} +2 -2
- package/dist/scripts/{-IJi77po.chunk.js.map → CRiSdltq.chunk.js.map} +1 -1
- package/dist/scripts/{C6Lm5-pG.chunk.js → CUcESh7x.chunk.js} +2 -2
- package/dist/scripts/{C6Lm5-pG.chunk.js.map → CUcESh7x.chunk.js.map} +1 -1
- package/dist/scripts/{BVtgkXbb.chunk.js → CWEHmLar.chunk.js} +2 -2
- package/dist/scripts/{BVtgkXbb.chunk.js.map → CWEHmLar.chunk.js.map} +1 -1
- package/dist/scripts/{BknFbNFb.chunk.js → CYnIJ9Yj.chunk.js} +2 -2
- package/dist/scripts/{BknFbNFb.chunk.js.map → CYnIJ9Yj.chunk.js.map} +1 -1
- package/dist/scripts/{BM1pKS1x.chunk.js → CeNnu9Uy.chunk.js} +2 -2
- package/dist/scripts/{BM1pKS1x.chunk.js.map → CeNnu9Uy.chunk.js.map} +1 -1
- package/dist/scripts/{C_N8YDNG.chunk.js → CeWNxrfN.chunk.js} +2 -2
- package/dist/scripts/{C_N8YDNG.chunk.js.map → CeWNxrfN.chunk.js.map} +1 -1
- package/dist/scripts/{CIC6c94H.chunk.js → Cf7gumlK.chunk.js} +2 -2
- package/dist/scripts/{CIC6c94H.chunk.js.map → Cf7gumlK.chunk.js.map} +1 -1
- package/dist/scripts/{BeUtct-n.chunk.js → CgYXk-MC.chunk.js} +2 -2
- package/dist/scripts/{BeUtct-n.chunk.js.map → CgYXk-MC.chunk.js.map} +1 -1
- package/dist/scripts/{CZWyo3vU.chunk.js → ChQd3LFA.chunk.js} +2 -2
- package/dist/scripts/{CZWyo3vU.chunk.js.map → ChQd3LFA.chunk.js.map} +1 -1
- package/dist/scripts/{Cvh5d6g-.chunk.js → CidOInHw.chunk.js} +2 -2
- package/dist/scripts/{Cvh5d6g-.chunk.js.map → CidOInHw.chunk.js.map} +1 -1
- package/dist/scripts/{KD76wo2O.chunk.js → CjZVCWS_.chunk.js} +2 -2
- package/dist/scripts/{KD76wo2O.chunk.js.map → CjZVCWS_.chunk.js.map} +1 -1
- package/dist/scripts/{DllPblbJ.chunk.js → CmFgCSCA.chunk.js} +2 -2
- package/dist/scripts/{DllPblbJ.chunk.js.map → CmFgCSCA.chunk.js.map} +1 -1
- package/dist/scripts/{D2hwqbbK.chunk.js → CzgpQODl.chunk.js} +2 -2
- package/dist/scripts/{D2hwqbbK.chunk.js.map → CzgpQODl.chunk.js.map} +1 -1
- package/dist/scripts/{BZDBKDNB.chunk.js → D1uOyG2F.chunk.js} +2 -2
- package/dist/scripts/{BZDBKDNB.chunk.js.map → D1uOyG2F.chunk.js.map} +1 -1
- package/dist/scripts/D2Qdtc-z.chunk.js +2 -0
- package/dist/scripts/{Nx5VrW1O.chunk.js.map → D2Qdtc-z.chunk.js.map} +1 -1
- package/dist/scripts/{CvC-3rY8.chunk.js → D6Y1z38S.chunk.js} +2 -2
- package/dist/scripts/{CvC-3rY8.chunk.js.map → D6Y1z38S.chunk.js.map} +1 -1
- package/dist/scripts/{DVGSZWvj.chunk.js → DAYsHx3K.chunk.js} +2 -2
- package/dist/scripts/{DVGSZWvj.chunk.js.map → DAYsHx3K.chunk.js.map} +1 -1
- package/dist/scripts/DAlXOlyw.chunk.js +2 -0
- package/dist/scripts/{PTNYkU4e.chunk.js.map → DAlXOlyw.chunk.js.map} +1 -1
- package/dist/scripts/{C6jzSlOK.chunk.js → DBXgmgfs.chunk.js} +2 -2
- package/dist/scripts/{C6jzSlOK.chunk.js.map → DBXgmgfs.chunk.js.map} +1 -1
- package/dist/scripts/{DNv0G8YQ.chunk.js → DFV1HGGE.chunk.js} +2 -2
- package/dist/scripts/{DNv0G8YQ.chunk.js.map → DFV1HGGE.chunk.js.map} +1 -1
- package/dist/scripts/{BaII1chU.chunk.js → DKgBjNhk.chunk.js} +2 -2
- package/dist/scripts/{BaII1chU.chunk.js.map → DKgBjNhk.chunk.js.map} +1 -1
- package/dist/scripts/{6nLsdj_T.chunk.js → DNamqvBL.chunk.js} +2 -2
- package/dist/scripts/{6nLsdj_T.chunk.js.map → DNamqvBL.chunk.js.map} +1 -1
- package/dist/scripts/{BoCJPJD9.chunk.js → DS9FoZYs.chunk.js} +2 -2
- package/dist/scripts/{BoCJPJD9.chunk.js.map → DS9FoZYs.chunk.js.map} +1 -1
- package/dist/scripts/{BARMSVib.chunk.js → DU7fsRWl.chunk.js} +2 -2
- package/dist/scripts/{BARMSVib.chunk.js.map → DU7fsRWl.chunk.js.map} +1 -1
- package/dist/scripts/{yAkKLflS.chunk.js → DXukh64m.chunk.js} +2 -2
- package/dist/scripts/{yAkKLflS.chunk.js.map → DXukh64m.chunk.js.map} +1 -1
- package/dist/scripts/{QBPzgKy4.chunk.js → D_UfRtxO.chunk.js} +2 -2
- package/dist/scripts/{QBPzgKy4.chunk.js.map → D_UfRtxO.chunk.js.map} +1 -1
- package/dist/scripts/{DPzpHWBx.chunk.js → Da4lOHud.chunk.js} +2 -2
- package/dist/scripts/{DPzpHWBx.chunk.js.map → Da4lOHud.chunk.js.map} +1 -1
- package/dist/scripts/{RFnuS4NM.chunk.js → DbQAirTe.chunk.js} +2 -2
- package/dist/scripts/{RFnuS4NM.chunk.js.map → DbQAirTe.chunk.js.map} +1 -1
- package/dist/scripts/{wrxKHqa_.chunk.js → DbjqMrGm.chunk.js} +2 -2
- package/dist/scripts/{wrxKHqa_.chunk.js.map → DbjqMrGm.chunk.js.map} +1 -1
- package/dist/scripts/{DW6Dbl7f.chunk.js → DiYMwIEW.chunk.js} +2 -2
- package/dist/scripts/{DW6Dbl7f.chunk.js.map → DiYMwIEW.chunk.js.map} +1 -1
- package/dist/scripts/{ZQ2N8RIM.chunk.js → DjZMDa7F.chunk.js} +2 -2
- package/dist/scripts/{ZQ2N8RIM.chunk.js.map → DjZMDa7F.chunk.js.map} +1 -1
- package/dist/scripts/{D0g725Qb.chunk.js → DmsvtP5R.chunk.js} +2 -2
- package/dist/scripts/{D0g725Qb.chunk.js.map → DmsvtP5R.chunk.js.map} +1 -1
- package/dist/scripts/{BVFJa4eN.chunk.js → Du1vfrL1.chunk.js} +2 -2
- package/dist/scripts/{BVFJa4eN.chunk.js.map → Du1vfrL1.chunk.js.map} +1 -1
- package/dist/scripts/{BIM7E_uq.chunk.js → HgZI7ZJw.chunk.js} +2 -2
- package/dist/scripts/{BIM7E_uq.chunk.js.map → HgZI7ZJw.chunk.js.map} +1 -1
- package/dist/scripts/{De6u_51f.chunk.js → Idf_wk4z.chunk.js} +2 -2
- package/dist/scripts/{De6u_51f.chunk.js.map → Idf_wk4z.chunk.js.map} +1 -1
- package/dist/scripts/{BzWiry9B.chunk.js → IoMSsrGB.chunk.js} +2 -2
- package/dist/scripts/{BzWiry9B.chunk.js.map → IoMSsrGB.chunk.js.map} +1 -1
- package/dist/scripts/{BOgut51m.chunk.js → JVtTNBu8.chunk.js} +2 -2
- package/dist/scripts/{BOgut51m.chunk.js.map → JVtTNBu8.chunk.js.map} +1 -1
- package/dist/scripts/{B6MzAKwF.chunk.js → Jh9dsBNz.chunk.js} +2 -2
- package/dist/scripts/{B6MzAKwF.chunk.js.map → Jh9dsBNz.chunk.js.map} +1 -1
- package/dist/scripts/{C3DMM71j.chunk.js → L4fynSOH.chunk.js} +2 -2
- package/dist/scripts/{C3DMM71j.chunk.js.map → L4fynSOH.chunk.js.map} +1 -1
- package/dist/scripts/{DcNBkQk2.chunk.js → L8c9vJSE.chunk.js} +2 -2
- package/dist/scripts/{DcNBkQk2.chunk.js.map → L8c9vJSE.chunk.js.map} +1 -1
- package/dist/scripts/{RkGsyr47.chunk.js → LSG3wJaJ.chunk.js} +2 -2
- package/dist/scripts/{RkGsyr47.chunk.js.map → LSG3wJaJ.chunk.js.map} +1 -1
- package/dist/scripts/{BBGrb01P.chunk.js → Nb05HQ70.chunk.js} +2 -2
- package/dist/scripts/{BBGrb01P.chunk.js.map → Nb05HQ70.chunk.js.map} +1 -1
- package/dist/scripts/{D7ex9pZI.chunk.js → NnLpFayg.chunk.js} +2 -2
- package/dist/scripts/{D7ex9pZI.chunk.js.map → NnLpFayg.chunk.js.map} +1 -1
- package/dist/scripts/{BObzbMyv.chunk.js → TBgyZjiu.chunk.js} +2 -2
- package/dist/scripts/{BObzbMyv.chunk.js.map → TBgyZjiu.chunk.js.map} +1 -1
- package/dist/scripts/UAhbVZA6.chunk.js +2 -0
- package/dist/scripts/{Cusf4uQr.chunk.js.map → UAhbVZA6.chunk.js.map} +1 -1
- package/dist/scripts/{EP_6ctCd.chunk.js → UPyh9hOq.chunk.js} +2 -2
- package/dist/scripts/{EP_6ctCd.chunk.js.map → UPyh9hOq.chunk.js.map} +1 -1
- package/dist/scripts/{5ulU64GY.chunk.js → aUcmweZz.chunk.js} +2 -2
- package/dist/scripts/{5ulU64GY.chunk.js.map → aUcmweZz.chunk.js.map} +1 -1
- package/dist/scripts/{BIqgfuNp.chunk.js → afx3pyqK.chunk.js} +2 -2
- package/dist/scripts/{BIqgfuNp.chunk.js.map → afx3pyqK.chunk.js.map} +1 -1
- package/dist/scripts/{app-BeXfSt3Z.js → app-DQUfzK7M.js} +3 -3
- package/dist/scripts/{app-BeXfSt3Z.js.map → app-DQUfzK7M.js.map} +1 -1
- package/dist/scripts/{DGZafYHS.chunk.js → ebPScdjM.chunk.js} +2 -2
- package/dist/scripts/{DGZafYHS.chunk.js.map → ebPScdjM.chunk.js.map} +1 -1
- package/dist/scripts/{kIpQ7ATK.chunk.js → exCRX_FQ.chunk.js} +2 -2
- package/dist/scripts/{kIpQ7ATK.chunk.js.map → exCRX_FQ.chunk.js.map} +1 -1
- package/dist/scripts/{B_RnEy2g.chunk.js → g-ukO43h.chunk.js} +2 -2
- package/dist/scripts/{B_RnEy2g.chunk.js.map → g-ukO43h.chunk.js.map} +1 -1
- package/dist/scripts/{DSjj9Urk.chunk.js → rV0ZG7Fa.chunk.js} +2 -2
- package/dist/scripts/{DSjj9Urk.chunk.js.map → rV0ZG7Fa.chunk.js.map} +1 -1
- package/dist/scripts/{CuymzQcn.chunk.js → rY6Lh6jX.chunk.js} +2 -2
- package/dist/scripts/{CuymzQcn.chunk.js.map → rY6Lh6jX.chunk.js.map} +1 -1
- package/dist/scripts/{DyEyo6rX.chunk.js → uJkDFf2N.chunk.js} +2 -2
- package/dist/scripts/{DyEyo6rX.chunk.js.map → uJkDFf2N.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/BMOkpx9W.chunk.js +0 -2
- package/dist/scripts/Cusf4uQr.chunk.js +0 -2
- package/dist/scripts/D1kNrE2G.chunk.js +0 -2
- package/dist/scripts/Nx5VrW1O.chunk.js +0 -2
- package/dist/scripts/PTNYkU4e.chunk.js +0 -2
- package/dist/scripts/RR_Npo-u.chunk.js +0 -2
- package/dist/scripts/kjcQ0DHK.chunk.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"C7x-ikz8.chunk.js","sources":["../../src/apps/tv/views/tv-guide/TvGuideView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\nimport { Config } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvInfoAlert } from 'apps/tv/components/tv-info-alert/TvInfoAlert';\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvTabs } from 'apps/tv/components/tv-tabs/TvTabs';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nconst namespace = 'tv.tvGuide';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TvGuideViewProps {\n region: string;\n}\n\nexport function TvGuideView(props: TvGuideViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const dateRange = Flight.useBasicFetch<TvDateRange>(TvRequests.dateRange(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n\n const { setRegion } = useSelectedRegion();\n const { showTvGuide } = useLiteUpgrade();\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n return (\n <>\n <TvSearchBar region={region.data} />\n\n <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='tv-guide'\n currentRegion={region.data}\n showTvGuide={showTvGuide}\n />\n\n <TvRegionSelect\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.CHANNELS\n }}\n onClick={setRegion}\n />\n </div>\n\n <div className='row'>\n <div className='col-6'>\n <h1 className='h4'>\n <Text namespace={namespace} phrase='title' />\n </h1>\n <p>\n <Text namespace={namespace} phrase='paragraph1' />\n </p>\n <p>\n <Text namespace={namespace} phrase='paragraph2' />\n </p>\n <p>\n <Text namespace={namespace} phrase='paragraph3' />\n </p>\n {config.data &&\n <IconButton\n href={`${config.data.onlineUrl}/login?returnUrl=/tv/guide`}\n openInNewTab\n svg={NewWindowSvg}\n className='btn btn-dark'\n >\n <Text namespace={namespace} phrase='cta' />\n </IconButton>\n }\n </div>\n </div>\n </>\n );\n}"],"names":["namespace","getPhrase","LanguageService","TvGuideView","props","config","Flight.useBasicFetch","ConfigRequests","region","TvRequests","dateRange","regions","setRegion","useSelectedRegion","showTvGuide","useLiteUpgrade","useSetPageMetadata","jsxs","Fragment","jsx","TvSearchBar","TvInfoAlert","TvTabs","TvRegionSelect","AppChannels","Actions","Text","IconButton","NewWindowSvg"],"mappings":"ujBAwBA,MAAMA,EAAY,aACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAMrD,SAASG,EAAYC,EAAsC,CAChE,MAAMC,EAASC,EAA6BC,EAAe,QAAQ,EAC7DC,EAASF,EAA+BG,EAAW,OAAOL,EAAM,MAAM,CAAC,EACvEM,EAAYJ,EAAkCG,EAAW,UAAUL,EAAM,MAAM,CAAC,EAChFO,EAAUL,EAAiCG,EAAW,SAAS,EAE/D,CAAE,UAAAG,CAAA,EAAcC,EAAA,EAChB,CAAE,YAAAC,CAAA,EAAgBC,EAAA,EAExB,OAAAC,EAAmB,CAAE,MAAOf,EAAU,OAAO,EAAG,EAG9CgB,EAAAA,KAAAC,WAAA,CACE,SAAA,CAAAC,EAAAA,IAACC,EAAA,CAAY,OAAQZ,EAAO,IAAA,CAAM,QAEjCa,EAAA,CAAY,UAAWX,EAAU,KAAM,OAAQF,EAAO,KAAM,EAE7DS,EAAAA,KAAC,MAAA,CAAI,UAAU,iCACb,SAAA,CAAAE,EAAAA,IAACG,EAAA,CACC,OAAO,WACP,cAAed,EAAO,KACtB,YAAAM,CAAA,CAAA,EAGFK,EAAAA,IAACI,EAAA,CACC,cAAef,EAAO,KACtB,QAASG,EAAQ,KACjB,QAAS,CACP,YAAaa,EAAY,GACzB,OAAQC,EAAQ,GAAG,QAAA,EAErB,QAASb,CAAA,CAAA,CACX,EACF,QAEC,MAAA,CAAI,UAAU,MACb,SAAAK,EAAAA,KAAC,MAAA,CAAI,UAAU,QACb,SAAA,CAAAE,EAAAA,IAAC,KAAA,CAAG,UAAU,KACZ,SAAAA,EAAAA,IAACO,GAAK,UAAA1B,EAAsB,OAAO,QAAQ,CAAA,CAC7C,QACC,IAAA,CACC,SAAAmB,MAACO,GAAK,UAAA1B,EAAsB,OAAO,aAAa,EAClD,QACC,IAAA,CACC,SAAAmB,MAACO,GAAK,UAAA1B,EAAsB,OAAO,aAAa,EAClD,QACC,IAAA,CACC,SAAAmB,MAACO,GAAK,UAAA1B,EAAsB,OAAO,aAAa,EAClD,EACCK,EAAO,MACNc,EAAAA,IAACQ,EAAA,CACC,KAAM,GAAGtB,EAAO,KAAK,SAAS,6BAC9B,aAAY,GACZ,IAAKuB,EACL,UAAU,eAEV,SAAAT,EAAAA,IAACO,EAAA,CAAK,UAAA1B,EAAsB,OAAO,KAAA,CAAM,CAAA,CAAA,CAC3C,CAAA,CAEJ,CAAA,CACF,CAAA,EACF,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as a,W as U,ad as I,ae as O,af as H,A as B,c as $,R,aB as L,aq as W,a as T,b as x,a3 as p,aT as V,aU as G,l as Y,L as F,aD as q}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{j as a,W as U,ad as I,ae as O,af as H,A as B,c as $,R,aB as L,aq as W,a as T,b as x,a3 as p,aT as V,aU as G,l as Y,L as F,aD as q}from"./app-DQUfzK7M.js";import{P as K}from"./BL0xk5Hs.chunk.js";import{h as Z}from"./BIciRJHg.chunk.js";import{u as z}from"./BldjpTLL.chunk.js";import{P as _,A as S,a as X}from"./BWmMHnFV.chunk.js";import{T as J,a as Q}from"./CBpplRfy.chunk.js";import{T as ee,a as ae}from"./Nb05HQ70.chunk.js";import{T as f}from"./CeNnu9Uy.chunk.js";import{u as te}from"./UAhbVZA6.chunk.js";import{u as ne}from"./ChQd3LFA.chunk.js";import{t as se}from"./BB_Ud-Dl.chunk.js";import{L as re}from"./BapvLPQ5.chunk.js";import{T as oe}from"./L8c9vJSE.chunk.js";import"./CLeOFM0_.chunk.js";import"./BlDVEZsX.chunk.js";import"./BCGCl500.chunk.js";import"./ebPScdjM.chunk.js";import"./B77TOWer.chunk.js";import"./Cf7gumlK.chunk.js";import"./DS9FoZYs.chunk.js";const ie="_pillTabSelector_1d8n6_1",ce={pillTabSelector:ie},A=["All","#","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],le={"#":"0"},de={actionType:H.Click,entity:O.Url,location:I.MagicTabs};function me(e,s){if(!e)return;if(e==="0")return"#";const r=A.find(t=>t.toUpperCase()===e.toUpperCase());if(!(r==="All"&&!s))return r}function ge(e){return A.map(s=>{if(s==="All"&&!e.showAll)return;const r=e.getItemAppLink(le[s]??s);return{name:s,appLink:r,active:e.selected===s,analyticsData:{name:s,url:B.getHref(r)},analyticsOptions:de}}).filter(Boolean)}function ue(e){const s=me(e.selected,e.showAll),r=ge({selected:s,showAll:e.showAll,getItemAppLink:e.getItemAppLink});return a.jsx("div",{className:U(e.noMarginBottom?"mb-0":"mb-3",e.className),children:a.jsx(K,{tabs:r,className:ce.pillTabSelector,enableSmallScreenSupport:e.enableSmallScreenSupport,formatDisplayText:e.formatDisplayText})})}const pe="_dateContainer_b9acj_1",he="_hover_b9acj_4",fe="_channelLogo_b9acj_7",Te="_channelLogoContainer_b9acj_10",xe="_programsContainer_b9acj_13",je="_date_b9acj_1",ve="_thumbnail_b9acj_27",g={dateContainer:pe,hover:he,channelLogo:fe,channelLogoContainer:Te,programsContainer:xe,date:je,thumbnail:ve};function be(e){function s(r){const t=$.findWhere(e.channels,{name:r});return t==null?void 0:t.logoUrl}return a.jsx("div",{className:"mb-2",children:e.groupedPrograms.map(([r,t])=>a.jsxs("div",{className:"border-top d-flex pt-3 pb-2",children:[a.jsx("div",{className:`${g.channelLogoContainer} flex-shrink-0 mb-3`,children:a.jsx("img",{src:s(r),alt:r,className:`${g.channelLogo} ms-4`})}),a.jsx("div",{className:"w-100",children:t.map(([i,n])=>a.jsx(Le,{date:i,programs:n,tvPreviewUrls:e.tvPreviewUrls},i))})]},r))})}function Le(e){const[s,r]=R.useState();function t(n){switch(n.programType){case _.Video:return{application:x.TV,action:T.Tv.PREVIEW,args:[n.regionCode,n.id]};case _.Audio:return{application:x.TV,action:T.Tv.RADIO_DOWNLOAD,args:[n.id]}}}function i(n){const j=e.tvPreviewUrls[n.regionCode],m=n.globalId.split("-").join("");return`${j}/thumbnail/${m}.jpg`}return a.jsx("div",{className:`${g.dateContainer} ${s?g.hover:""} py-2 px-3 rounded`,children:a.jsxs("div",{className:"d-flex align-items-center",children:[a.jsx("div",{className:`${g.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`,children:a.jsx(re,{src:i(s||e.programs[0]),alt:L.format(e.date,"D MMM"),extraClasses:"w-100 rounded"})}),a.jsxs("p",{className:`${g.date} fw-semibold flex-shrink-0 mb-0`,children:[L.format(e.date,"D MMM"),":"]}),a.jsx("div",{className:`${g.programsContainer} d-flex flex-wrap`,children:e.programs.map(n=>a.jsx("div",{onMouseEnter:()=>r(n),onMouseLeave:()=>r(null),children:a.jsx(W,{appLink:t(n),className:"text-decoration-none",children:a.jsx(oe,{program:n,showEndTime:!0})},n.id)},n.id))})]},e.date)})}const Ae="tv.programs",Pe=F.encloseNamespace(Ae),Ce=/^[a-zA-Z]/;function qe(e){const s=e.startsWith||"A",r=p(q.config()),t=p(f.region(e.region)),i=p(f.regions()),n=p(f.dateRange(e.region)),j=p(t.data&&f.channels(t.data.code)),m=p(t.data&&n.data&&f.programsByLetter(t.data.code,s,n.data.startDate,n.data.endDate)),{setRegion:N}=ne(),{showTvGuide:w}=V(),y=R.useMemo(()=>{var C;if(!((C=m.data)!=null&&C.length))return[];const c={};m.data.forEach(o=>{e.startsWith==="0"&&Ce.test(o.title)||(c[o.title]||(c[o.title]=[]),c[o.title].push(o))});let l=Object.entries(c);return l=l.sort(([o],[v])=>o<v?-1:1),l.map(([o,v])=>{const E=v.reduce((d,u)=>{const h=u.channelName;d[h]||(d[h]={});const D=se(u.startTime,u.timeZone),b=L.format(D,"YYYY-MM-DD");return d[h][b]||(d[h][b]=[]),d[h][b].push(u),d},{}),k=Object.entries(E).map((([d,u])=>[d,Object.entries(u)]));return[o,k]})},[m.data]);[...A,"0"].includes(s)||Z(G.BadRequest),te(t),z([i,m]),Y({title:Pe("title")});const M=t.hasCompleted&&i.hasCompleted&&n.hasCompleted&&m.hasCompleted&&r.hasCompleted;return a.jsxs(a.Fragment,{children:[a.jsx(ee,{region:t.data}),a.jsxs("div",{className:"d-flex justify-content-between",children:[a.jsx(J,{active:"programs",currentRegion:t.data,showTvGuide:w}),a.jsx(ae,{currentRegion:t.data,regions:i.data,appLink:{application:x.TV,action:T.Tv.PROGRAMS,params:{startsWith:s}},onClick:N})]}),a.jsx(Q,{dateRange:n.data,region:t.data}),a.jsx(ue,{selected:s,getItemAppLink:c=>{var l;return{application:x.TV,action:T.Tv.PROGRAMS,args:[(l=t.data)==null?void 0:l.code],params:{startsWith:c}}}}),M?a.jsx(a.Fragment,{children:a.jsx(S,{children:y.map(([c,l],P)=>a.jsx(S.Header,{title:c,children:a.jsx(be,{groupedPrograms:l,channels:j.data,tvPreviewUrls:r.data.tvPreviewUrls})},P))})}):a.jsx(X,{})]})}export{qe as TvProgramsView};
|
|
2
|
+
//# sourceMappingURL=C8gLKdt2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bk6B0Pga.chunk.js","sources":["../../../../libs/shared/src/components/letters-bar/LettersBar.tsx","../../src/apps/tv/views/tv-programs/components/program-selector/ProgramSelector.tsx","../../src/apps/tv/views/tv-programs/TvProgramsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport styles from './letters-bar.module.scss';\n\nexport const ALPHABET = [\n 'All',\n '#',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'\n] as const;\n\ntype LetterBarOptions = typeof ALPHABET[number];\n\nconst LetterParamMap: {[key in LetterBarOptions]?: string} = {\n '#': '0'\n};\n\nconst ANALYTICS_OPTIONS = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n};\n\nfunction getSelectedAlphabet(selected: string, showAll: boolean): LetterBarOptions | undefined {\n if (!selected)\n return;\n \n if (selected === '0')\n return '#';\n\n const alphabet = ALPHABET.find(letter => letter.toUpperCase() === selected.toUpperCase());\n\n if (alphabet === 'All' && !showAll)\n return;\n\n return alphabet;\n}\n\ninterface GenerateTabsOptions {\n selected: string;\n showAll: boolean;\n getItemAppLink: (letter: string) => Core.AppLink;\n}\n\nfunction generateTabs(options: GenerateTabsOptions): PillTab[] {\n return ALPHABET.map(letter => {\n if (letter === 'All' && !options.showAll)\n return;\n\n const appLink = options.getItemAppLink(LetterParamMap[letter] ?? letter);\n\n return {\n name: letter,\n appLink,\n active: options.selected === letter,\n analyticsData: {\n name: letter,\n url: Core.AppLinkHelper.getHref(appLink)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n };\n }).filter(Boolean);\n}\n\ninterface LettersBarProps {\n selected: string;\n getItemAppLink: (letter: string) => Core.AppLink;\n showAll?: boolean;\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n className?: string;\n noMarginBottom?: boolean;\n}\n\nexport function LettersBar(props: LettersBarProps): JSX.Element {\n const localSelected = getSelectedAlphabet(props.selected, props.showAll);\n\n const tabs = generateTabs({\n selected: localSelected,\n showAll: props.showAll,\n getItemAppLink: props.getItemAppLink\n });\n \n return (\n <div className={classNames(props.noMarginBottom ? 'mb-0' : 'mb-3', props.className)}>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTabSelector}\n enableSmallScreenSupport={props.enableSmallScreenSupport}\n formatDisplayText={props.formatDisplayText}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { ProgramType } from 'apps/tv/interfaces/enums/ProgramType';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\n\nimport styles from './program-selector.module.scss';\n\ninterface ProgramSelectorProps {\n groupedPrograms: [string, [string, TvProgram[]][]][];\n channels: TvChannel[];\n tvPreviewUrls: { [region: string]: string };\n}\n\nexport function ProgramSelector(props: ProgramSelectorProps) {\n function getChannelLogo(channel: string) {\n const matchingChannel = ArrayHelper.findWhere(props.channels, { name: channel });\n return matchingChannel?.logoUrl;\n }\n\n return (\n <div className='mb-2'>\n {props.groupedPrograms.map(([ channel, dates ]) => (\n <div className={`border-top d-flex pt-3 pb-2`} key={channel}>\n <div className={`${styles.channelLogoContainer} flex-shrink-0 mb-3`}>\n <img src={getChannelLogo(channel)} alt={channel} className={`${styles.channelLogo} ms-4`} />\n </div>\n\n <div className='w-100'>\n {dates.map(([ date, programs ]) => (\n <GroupedPrograms key={date} date={date} programs={programs} tvPreviewUrls={props.tvPreviewUrls} />\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\ninterface GroupedProgramsProps {\n date: string;\n programs: TvProgram[];\n tvPreviewUrls: { [region: string]: string };\n}\n\nexport function GroupedPrograms(props: GroupedProgramsProps) {\n const [ hoveredProgram, setHoveredProgram ] = React.useState<TvProgram>();\n\n function getProgramAppLink(program: TvProgram) {\n switch (program.programType) {\n case ProgramType.Video:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ program.regionCode, program.id ]\n };\n case ProgramType.Audio:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.RADIO_DOWNLOAD,\n args: [program.id]\n };\n }\n }\n\n function getThumbnailUrl(program: TvProgram) {\n const previewUrl = props.tvPreviewUrls[program.regionCode];\n const globalId = program.globalId.split('-').join('');\n return `${previewUrl}/thumbnail/${globalId}.jpg`;\n }\n\n return (\n <div\n className={`${styles.dateContainer} ${hoveredProgram ? styles.hover : ''} py-2 px-3 rounded`}\n >\n <div key={props.date} className={`d-flex align-items-center`}>\n <div className={`${styles.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`}>\n <LazyImage\n src={getThumbnailUrl(hoveredProgram || props.programs[0])}\n alt={DateHelper.format(props.date, 'D MMM')}\n extraClasses='w-100 rounded'\n />\n </div>\n <p className={`${styles.date} fw-semibold flex-shrink-0 mb-0`}>{DateHelper.format(props.date, 'D MMM')}:</p>\n <div className={`${styles.programsContainer} d-flex flex-wrap`}>\n {props.programs.map((program: TvProgram) => (\n <div\n key={program.id}\n onMouseEnter={() => setHoveredProgram(program)}\n onMouseLeave={() => setHoveredProgram(null)}\n >\n <AppLink appLink={getProgramAppLink(program)} key={program.id} className='text-decoration-none'>\n <TvProgramTimeBadge program={program} showEndTime />\n </AppLink>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ALPHABET, LettersBar } from 'libs/shared/components/letters-bar/LettersBar';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config } from 'libs/shared/interfaces';\n\nimport { AccordionList } from 'shared/components/accordion-list/AccordionList';\nimport { PartialAccordionList } from 'shared/components/accordion-list/partial-loading/PartialAccordionList';\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvInfoAlert } from 'apps/tv/components/tv-info-alert/TvInfoAlert';\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvTabs } from 'apps/tv/components/tv-tabs/TvTabs';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\nimport { ProgramSelector } from 'apps/tv/views/tv-programs/components/program-selector/ProgramSelector';\n\nconst namespace = 'tv.programs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst FIRST_LETTER_REGEX = /^[a-zA-Z]/;\n\ninterface TvProgramsViewProps {\n region: string;\n startsWith: string;\n}\n\nexport function TvProgramsView(props: TvProgramsViewProps): JSX.Element {\n const startsWith = props.startsWith || 'A';\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const dateRange = Flight.useBasicFetch<TvDateRange>(TvRequests.dateRange(props.region));\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n\n const programs = Flight.useBasicFetch<TvProgram[]>(\n region.data &&\n dateRange.data &&\n TvRequests.programsByLetter(\n region.data.code,\n startsWith,\n dateRange.data.startDate,\n dateRange.data.endDate\n )\n );\n\n const { setRegion } = useSelectedRegion();\n const { showTvGuide } = useLiteUpgrade();\n\n const grouped = React.useMemo(() => {\n if (!programs.data?.length)\n return [] as any[];\n\n const groups: HashObject<TvProgram[]> = {};\n\n programs.data.forEach(program => {\n if (props.startsWith === '0' && FIRST_LETTER_REGEX.test(program.title))\n return;\n\n if (!groups[program.title])\n groups[program.title] = [];\n\n groups[program.title].push(program);\n });\n\n let sorted = Object.entries(groups);\n\n sorted = sorted.sort(([keyA], [keyB]) => (keyA < keyB ? -1 : 1));\n\n const groupedPrograms = sorted.map(([ title, data ]) => {\n const groupedProgram = data.reduce((acc: { [channel: string]: { [date: string]: TvProgram[]} }, program) => {\n const channelKey = program.channelName;\n if (!acc[channelKey]) {\n acc[channelKey] = {};\n }\n \n const startTime = toLocalTime(program.startTime, program.timeZone);\n const dateKey = DateHelper.format(startTime, 'YYYY-MM-DD');\n if (!acc[channelKey][dateKey]) {\n acc[channelKey][dateKey] = [];\n }\n\n acc[channelKey][dateKey].push(program);\n return acc;\n }, {});\n\n const groupedProgramEntries =\n Object\n .entries(groupedProgram)\n .map((([ channel, programs ]) => [ channel, Object.entries(programs) ]));\n \n return [ title, groupedProgramEntries ];\n });\n\n return groupedPrograms as [string, [string, TvProgram[]]];\n }, [programs.data]);\n\n const matchesLetters = [ ...ALPHABET, '0' ].includes(startsWith);\n if (!matchesLetters) {\n handleHttpError(HttpStatus.BadRequest);\n }\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, programs ]);\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n const dataLoaded = (\n region.hasCompleted &&\n regions.hasCompleted &&\n dateRange.hasCompleted &&\n programs.hasCompleted &&\n config.hasCompleted\n );\n\n return (\n <>\n <TvSearchBar region={region.data} />\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='programs'\n currentRegion={region.data}\n showTvGuide={showTvGuide}\n />\n\n <TvRegionSelect\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.PROGRAMS,\n params: { startsWith }\n }}\n onClick={setRegion}\n />\n </div>\n\n <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n <LettersBar\n selected={startsWith}\n getItemAppLink={letter => ({\n application: AppChannels.TV,\n action: Actions.Tv.PROGRAMS,\n args: [region.data?.code],\n params: { startsWith: letter }\n })}\n />\n\n {dataLoaded ? (\n <>\n <AccordionList>\n {grouped.map(([ title, programs ], index) => (\n <AccordionList.Header key={index} title={title}>\n <ProgramSelector\n groupedPrograms={programs}\n channels={channels.data}\n tvPreviewUrls={config.data.tvPreviewUrls}\n />\n </AccordionList.Header>\n ))}\n </AccordionList>\n </>\n ) : (\n <PartialAccordionList />\n )}\n </>\n );\n}"],"names":["ALPHABET","LetterParamMap","ANALYTICS_OPTIONS","UserAction","EntityType","LocationContext","getSelectedAlphabet","selected","showAll","alphabet","letter","generateTabs","options","appLink","Core.AppLinkHelper","LettersBar","props","localSelected","tabs","jsx","classNames","PillTabSelector","styles","ProgramSelector","getChannelLogo","channel","matchingChannel","ArrayHelper","dates","jsxs","date","programs","GroupedPrograms","hoveredProgram","setHoveredProgram","React","getProgramAppLink","program","ProgramType","AppChannels","Actions","getThumbnailUrl","previewUrl","globalId","LazyImage","DateHelper","AppLink","TvProgramTimeBadge","namespace","getPhrase","LanguageService","FIRST_LETTER_REGEX","TvProgramsView","startsWith","config","Flight.useBasicFetch","ConfigRequests","region","TvRequests","regions","dateRange","channels","setRegion","useSelectedRegion","showTvGuide","useLiteUpgrade","grouped","_a","groups","sorted","keyA","keyB","title","data","groupedProgram","acc","channelKey","startTime","toLocalTime","dateKey","groupedProgramEntries","handleHttpError","HttpStatus","useHandleRegionError","useHandleObjectError","useSetPageMetadata","dataLoaded","Fragment","TvSearchBar","TvTabs","TvRegionSelect","TvInfoAlert","AccordionList","index","PartialAccordionList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"C8gLKdt2.chunk.js","sources":["../../../../libs/shared/src/components/letters-bar/LettersBar.tsx","../../src/apps/tv/views/tv-programs/components/program-selector/ProgramSelector.tsx","../../src/apps/tv/views/tv-programs/TvProgramsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport styles from './letters-bar.module.scss';\n\nexport const ALPHABET = [\n 'All',\n '#',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'\n] as const;\n\ntype LetterBarOptions = typeof ALPHABET[number];\n\nconst LetterParamMap: {[key in LetterBarOptions]?: string} = {\n '#': '0'\n};\n\nconst ANALYTICS_OPTIONS = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n};\n\nfunction getSelectedAlphabet(selected: string, showAll: boolean): LetterBarOptions | undefined {\n if (!selected)\n return;\n \n if (selected === '0')\n return '#';\n\n const alphabet = ALPHABET.find(letter => letter.toUpperCase() === selected.toUpperCase());\n\n if (alphabet === 'All' && !showAll)\n return;\n\n return alphabet;\n}\n\ninterface GenerateTabsOptions {\n selected: string;\n showAll: boolean;\n getItemAppLink: (letter: string) => Core.AppLink;\n}\n\nfunction generateTabs(options: GenerateTabsOptions): PillTab[] {\n return ALPHABET.map(letter => {\n if (letter === 'All' && !options.showAll)\n return;\n\n const appLink = options.getItemAppLink(LetterParamMap[letter] ?? letter);\n\n return {\n name: letter,\n appLink,\n active: options.selected === letter,\n analyticsData: {\n name: letter,\n url: Core.AppLinkHelper.getHref(appLink)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n };\n }).filter(Boolean);\n}\n\ninterface LettersBarProps {\n selected: string;\n getItemAppLink: (letter: string) => Core.AppLink;\n showAll?: boolean;\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n className?: string;\n noMarginBottom?: boolean;\n}\n\nexport function LettersBar(props: LettersBarProps): JSX.Element {\n const localSelected = getSelectedAlphabet(props.selected, props.showAll);\n\n const tabs = generateTabs({\n selected: localSelected,\n showAll: props.showAll,\n getItemAppLink: props.getItemAppLink\n });\n \n return (\n <div className={classNames(props.noMarginBottom ? 'mb-0' : 'mb-3', props.className)}>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTabSelector}\n enableSmallScreenSupport={props.enableSmallScreenSupport}\n formatDisplayText={props.formatDisplayText}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { ProgramType } from 'apps/tv/interfaces/enums/ProgramType';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\n\nimport styles from './program-selector.module.scss';\n\ninterface ProgramSelectorProps {\n groupedPrograms: [string, [string, TvProgram[]][]][];\n channels: TvChannel[];\n tvPreviewUrls: { [region: string]: string };\n}\n\nexport function ProgramSelector(props: ProgramSelectorProps) {\n function getChannelLogo(channel: string) {\n const matchingChannel = ArrayHelper.findWhere(props.channels, { name: channel });\n return matchingChannel?.logoUrl;\n }\n\n return (\n <div className='mb-2'>\n {props.groupedPrograms.map(([ channel, dates ]) => (\n <div className={`border-top d-flex pt-3 pb-2`} key={channel}>\n <div className={`${styles.channelLogoContainer} flex-shrink-0 mb-3`}>\n <img src={getChannelLogo(channel)} alt={channel} className={`${styles.channelLogo} ms-4`} />\n </div>\n\n <div className='w-100'>\n {dates.map(([ date, programs ]) => (\n <GroupedPrograms key={date} date={date} programs={programs} tvPreviewUrls={props.tvPreviewUrls} />\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\ninterface GroupedProgramsProps {\n date: string;\n programs: TvProgram[];\n tvPreviewUrls: { [region: string]: string };\n}\n\nexport function GroupedPrograms(props: GroupedProgramsProps) {\n const [ hoveredProgram, setHoveredProgram ] = React.useState<TvProgram>();\n\n function getProgramAppLink(program: TvProgram) {\n switch (program.programType) {\n case ProgramType.Video:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ program.regionCode, program.id ]\n };\n case ProgramType.Audio:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.RADIO_DOWNLOAD,\n args: [program.id]\n };\n }\n }\n\n function getThumbnailUrl(program: TvProgram) {\n const previewUrl = props.tvPreviewUrls[program.regionCode];\n const globalId = program.globalId.split('-').join('');\n return `${previewUrl}/thumbnail/${globalId}.jpg`;\n }\n\n return (\n <div\n className={`${styles.dateContainer} ${hoveredProgram ? styles.hover : ''} py-2 px-3 rounded`}\n >\n <div key={props.date} className={`d-flex align-items-center`}>\n <div className={`${styles.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`}>\n <LazyImage\n src={getThumbnailUrl(hoveredProgram || props.programs[0])}\n alt={DateHelper.format(props.date, 'D MMM')}\n extraClasses='w-100 rounded'\n />\n </div>\n <p className={`${styles.date} fw-semibold flex-shrink-0 mb-0`}>{DateHelper.format(props.date, 'D MMM')}:</p>\n <div className={`${styles.programsContainer} d-flex flex-wrap`}>\n {props.programs.map((program: TvProgram) => (\n <div\n key={program.id}\n onMouseEnter={() => setHoveredProgram(program)}\n onMouseLeave={() => setHoveredProgram(null)}\n >\n <AppLink appLink={getProgramAppLink(program)} key={program.id} className='text-decoration-none'>\n <TvProgramTimeBadge program={program} showEndTime />\n </AppLink>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ALPHABET, LettersBar } from 'libs/shared/components/letters-bar/LettersBar';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config } from 'libs/shared/interfaces';\n\nimport { AccordionList } from 'shared/components/accordion-list/AccordionList';\nimport { PartialAccordionList } from 'shared/components/accordion-list/partial-loading/PartialAccordionList';\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvInfoAlert } from 'apps/tv/components/tv-info-alert/TvInfoAlert';\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvTabs } from 'apps/tv/components/tv-tabs/TvTabs';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\nimport { ProgramSelector } from 'apps/tv/views/tv-programs/components/program-selector/ProgramSelector';\n\nconst namespace = 'tv.programs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst FIRST_LETTER_REGEX = /^[a-zA-Z]/;\n\ninterface TvProgramsViewProps {\n region: string;\n startsWith: string;\n}\n\nexport function TvProgramsView(props: TvProgramsViewProps): JSX.Element {\n const startsWith = props.startsWith || 'A';\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const dateRange = Flight.useBasicFetch<TvDateRange>(TvRequests.dateRange(props.region));\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n\n const programs = Flight.useBasicFetch<TvProgram[]>(\n region.data &&\n dateRange.data &&\n TvRequests.programsByLetter(\n region.data.code,\n startsWith,\n dateRange.data.startDate,\n dateRange.data.endDate\n )\n );\n\n const { setRegion } = useSelectedRegion();\n const { showTvGuide } = useLiteUpgrade();\n\n const grouped = React.useMemo(() => {\n if (!programs.data?.length)\n return [] as any[];\n\n const groups: HashObject<TvProgram[]> = {};\n\n programs.data.forEach(program => {\n if (props.startsWith === '0' && FIRST_LETTER_REGEX.test(program.title))\n return;\n\n if (!groups[program.title])\n groups[program.title] = [];\n\n groups[program.title].push(program);\n });\n\n let sorted = Object.entries(groups);\n\n sorted = sorted.sort(([keyA], [keyB]) => (keyA < keyB ? -1 : 1));\n\n const groupedPrograms = sorted.map(([ title, data ]) => {\n const groupedProgram = data.reduce((acc: { [channel: string]: { [date: string]: TvProgram[]} }, program) => {\n const channelKey = program.channelName;\n if (!acc[channelKey]) {\n acc[channelKey] = {};\n }\n \n const startTime = toLocalTime(program.startTime, program.timeZone);\n const dateKey = DateHelper.format(startTime, 'YYYY-MM-DD');\n if (!acc[channelKey][dateKey]) {\n acc[channelKey][dateKey] = [];\n }\n\n acc[channelKey][dateKey].push(program);\n return acc;\n }, {});\n\n const groupedProgramEntries =\n Object\n .entries(groupedProgram)\n .map((([ channel, programs ]) => [ channel, Object.entries(programs) ]));\n \n return [ title, groupedProgramEntries ];\n });\n\n return groupedPrograms as [string, [string, TvProgram[]]];\n }, [programs.data]);\n\n const matchesLetters = [ ...ALPHABET, '0' ].includes(startsWith);\n if (!matchesLetters) {\n handleHttpError(HttpStatus.BadRequest);\n }\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, programs ]);\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n const dataLoaded = (\n region.hasCompleted &&\n regions.hasCompleted &&\n dateRange.hasCompleted &&\n programs.hasCompleted &&\n config.hasCompleted\n );\n\n return (\n <>\n <TvSearchBar region={region.data} />\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='programs'\n currentRegion={region.data}\n showTvGuide={showTvGuide}\n />\n\n <TvRegionSelect\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.PROGRAMS,\n params: { startsWith }\n }}\n onClick={setRegion}\n />\n </div>\n\n <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n <LettersBar\n selected={startsWith}\n getItemAppLink={letter => ({\n application: AppChannels.TV,\n action: Actions.Tv.PROGRAMS,\n args: [region.data?.code],\n params: { startsWith: letter }\n })}\n />\n\n {dataLoaded ? (\n <>\n <AccordionList>\n {grouped.map(([ title, programs ], index) => (\n <AccordionList.Header key={index} title={title}>\n <ProgramSelector\n groupedPrograms={programs}\n channels={channels.data}\n tvPreviewUrls={config.data.tvPreviewUrls}\n />\n </AccordionList.Header>\n ))}\n </AccordionList>\n </>\n ) : (\n <PartialAccordionList />\n )}\n </>\n );\n}"],"names":["ALPHABET","LetterParamMap","ANALYTICS_OPTIONS","UserAction","EntityType","LocationContext","getSelectedAlphabet","selected","showAll","alphabet","letter","generateTabs","options","appLink","Core.AppLinkHelper","LettersBar","props","localSelected","tabs","jsx","classNames","PillTabSelector","styles","ProgramSelector","getChannelLogo","channel","matchingChannel","ArrayHelper","dates","jsxs","date","programs","GroupedPrograms","hoveredProgram","setHoveredProgram","React","getProgramAppLink","program","ProgramType","AppChannels","Actions","getThumbnailUrl","previewUrl","globalId","LazyImage","DateHelper","AppLink","TvProgramTimeBadge","namespace","getPhrase","LanguageService","FIRST_LETTER_REGEX","TvProgramsView","startsWith","config","Flight.useBasicFetch","ConfigRequests","region","TvRequests","regions","dateRange","channels","setRegion","useSelectedRegion","showTvGuide","useLiteUpgrade","grouped","_a","groups","sorted","keyA","keyB","title","data","groupedProgram","acc","channelKey","startTime","toLocalTime","dateKey","groupedProgramEntries","handleHttpError","HttpStatus","useHandleRegionError","useHandleObjectError","useSetPageMetadata","dataLoaded","Fragment","TvSearchBar","TvTabs","TvRegionSelect","TvInfoAlert","AccordionList","index","PartialAccordionList"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as u,d as w,b0 as $,b1 as E,j as n,f as M,F as _,b2 as k,N as D,G as H,Q as y,at as P,ax as N,a0 as h}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{r as u,d as w,b0 as $,b1 as E,j as n,f as M,F as _,b2 as k,N as D,G as H,Q as y,at as P,ax as N,a0 as h}from"./app-DQUfzK7M.js";import{u as X}from"./Du1vfrL1.chunk.js";import{a as T}from"./BapvLPQ5.chunk.js";import{C as z}from"./Cf7gumlK.chunk.js";import{M as l}from"./_sYSSSUN.chunk.js";const j=u.forwardRef(({bsPrefix:e,className:s,as:a="div",...i},o)=>{const m=w(e,"row"),c=$(),g=E(),x=`${m}-cols`,C=[];return c.forEach(t=>{const f=i[t];delete i[t];let r;f!=null&&typeof f=="object"?{cols:r}=f:r=f;const d=t!==g?`-${t}`:"";r!=null&&C.push(`${x}${d}-${r}`)}),n.jsx(a,{ref:o,...i,className:M(s,m,...C)})});j.displayName="Row";const L=400;function B(e){const s=()=>{if(!e.isFetching){if(e.scrollContainer){const{scrollContainer:a}=e,i=a.getBoundingClientRect().height+a.scrollTop,o=a.scrollHeight-L;if(i<o)return}else{const a=window.innerHeight+document.documentElement.scrollTop,i=document.documentElement.scrollHeight-L;if(a<i)return}e.fetchNextPage()}};u.useEffect(()=>{const a=_.throttle(s,200),i=e.scrollContainer||window;return e.hasMore&&i.addEventListener("scroll",a),()=>i.removeEventListener("scroll",a)},[e.hasMore,e.fetchNextPage,e.scrollContainer])}function ee(e,s,a,i,o,m){const[c,g]=u.useState(0),x=s;function C(r){if(!e)return null;const d=e(r);return d?d.key:null}const t=X(C,i,o);function f(){if(!(!s||!e||!t))return g(r=>r+1),x(t.nextCursor)}return B({fetchNextPage:f,hasMore:!!(t!=null&&t.nextCursor),isFetching:t==null?void 0:t.isFetching,scrollContainer:m}),u.useEffect(()=>{t&&t.shouldInitialFetch&&s&&(x(),g(r=>r+1))},[t==null?void 0:t.shouldInitialFetch,s]),u.useEffect(()=>{var d,v;if(!(t!=null&&t.statusCode)||!_.isFunction(a))return;const r=+((v=(d=t.statusCode)==null?void 0:d.toString())==null?void 0:v.substr(0,1));r!==k.ClientError&&r!==k.ServerError||a(c,t.statusCode)},[t==null?void 0:t.statusCode]),{items:t==null?void 0:t.items,hasMore:!!(t!=null&&t.nextCursor),nextCursor:t==null?void 0:t.nextCursor,isFetching:t==null?void 0:t.isFetching,totalItems:t==null?void 0:t.totalItems,hasFirstPageCompleted:t==null?void 0:t.hasFirstPageCompleted}}const I="_container_1kfhe_1",V="_spinner_1kfhe_4",F={container:I,spinner:V};G.defaultProps={fetchOnScroll:!1};function G(e){const[s,a]=T();return u.useEffect(()=>{var i;e.fetchOnScroll&&(!a||e.isFetching||(i=e.fetchNext)==null||i.call(e,e.nextCursor))},[a,e.isFetching]),n.jsx("div",{className:`p-3 text-center ${F.container}`,children:e.isFetching?n.jsx(D,{as:"span",animation:"border",role:"status",className:F.spinner}):n.jsx("div",{ref:s,children:n.jsx(H,{svg:z,className:"svg-container cursor-pointer",size:y.Large,onClick:()=>{var i;return(i=e.fetchNext)==null?void 0:i.call(e,e.nextCursor)}})})})}const S={getThumbnailColumns(){return{xs:12,sm:5,lg:3}},getDetailsColumns(){return{xs:12,sm:7,lg:9}},getSize(e,s){return e.sm?"sm":s||"md"},getThumbnailColSize(e){return e?10:12}},R="_partialName_157xw_4",A="_partialDescription_157xw_8",O="_partialThumbnail_157xw_12",Q="_partialDragHandle_157xw_15",b={partialName:R,partialDescription:A,partialThumbnail:O,partialDragHandle:Q};K.defaultProps={numVideos:15};function K(e){return n.jsx(n.Fragment,{children:Array(e.numVideos).fill(null).map((s,a)=>n.jsxs("div",{className:"d-flex",children:[e.allowBulkActions&&n.jsx("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),n.jsx(J,{...e})]},a))})}function J(e){const s=P(),i=S.getSize(s,"md")==="sm",o=e.withReordering&&!s.xs;return n.jsxs(j,{className:`${i?"":"py-2"} flex-grow-1`,children:[n.jsx(N,{...S.getThumbnailColumns(),className:`flex-column align-items-flex-start ${i?"pb-2 pe-1":"mb-1 pe-3 pe-md-2"}`,children:n.jsxs(j,{children:[!!o&&n.jsx("div",{className:"d-flex align-items-center justify-content-center col-2",children:n.jsx("div",{className:`partial-loading-background ${b.partialDragHandle}`})}),n.jsx(N,{xs:S.getThumbnailColSize(o),children:n.jsx("div",{className:`partial-loading-background ${i?"rounded":"rounded-3"} ${b.partialThumbnail}`})})]})}),n.jsxs(N,{...S.getDetailsColumns(),className:i?"pb-2":"px-2",children:[n.jsx("div",{className:`partial-loading-background mb-1 ${b.partialName}`}),n.jsx("div",{className:`partial-loading-background ${b.partialDescription}`})]})]})}U.defaultProps={checked:!1,label:"",className:""};function U(e){const{isLabelEllipsis:s}=e,a=u.useRef(null);return u.useEffect(()=>{if(a.current){if(e.checked){a.current.indeterminate&&(a.current.indeterminate=!1);return}if(e.indeterminate&&!a.current.indeterminate){a.current.indeterminate=!0;return}!e.indeterminate&&a.current.indeterminate&&(a.current.indeterminate=!1)}},[a.current,e.indeterminate,e.checked]),n.jsxs("div",{className:`form-check pe-2 ${e.className}`,children:[n.jsx("input",{ref:a,type:"checkbox",className:`${e.inputClassName} form-check-input`,id:e.id,name:e.name,checked:e.checked,onChange:e.onChange,disabled:e.disabled,"aria-checked":e.checked,"aria-label":e.ariaLabel}),e.label&&n.jsx("label",{className:"form-check-label cursor-pointer align-top",htmlFor:e.id,children:n.jsx("span",{className:`${s?"clamp-1":""}`,children:e.label})})]})}function te(e){return n.jsx("svg",{...e,children:n.jsx("path",{fill:"currentColor",d:"M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024"})})}function ae(){const e=h(l.XS),s=h(l.SM),a=h(l.MD),i=h(l.LG),o=h(l.XL),m=h(l.XXL);let c=l.LG;return e&&(c=l.XS),s&&(c=l.SM),a&&(c=l.MD),i&&(c=l.LG),o&&(c=l.XL),m&&(c=l.XXL),c}export{U as C,te as G,G as I,K as P,j as R,S as V,ae as a,ee as u};
|
|
2
|
+
//# sourceMappingURL=CA1kXo4c.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BNdvuAqI.chunk.js","sources":["../../../../../node_modules/react-bootstrap/esm/Row.js","../../../../libs/shared/src/hooks/UseInfiniteScroll.ts","../../../../libs/shared/src/hooks/UseInfiniteList.ts","../../../../libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","../../../../libs/shared/src/components/video-list/VideoListHelper.tsx","../../../../libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","../../../../libs/shared/src/components/forms/form-checkbox/Checkbox.tsx","../../../../libs/shared/src/images/svg/objects/GraduationCapSvg.tsx","../../../../libs/shared/src/hooks/UseGetMediaQueryString.ts"],"sourcesContent":["\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ChevronDownSvg } from 'libs/shared/images/svg/arrows/ChevronDownSvg';\n\nimport styles from './infinite-scroll-footer.module.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <div ref={ref}>\n <SvgContainer\n svg={ChevronDownSvg}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n </div>\n )\n }\n </div>\n );\n}","import { ColProps } from 'react-bootstrap';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nexport const VideoListHelper = {\n getThumbnailColumns(): ColProps {\n return {\n xs: 12,\n sm: 5,\n lg: 3\n };\n },\n\n getDetailsColumns(): ColProps {\n return {\n xs: 12,\n sm: 7,\n lg: 9\n };\n },\n\n getSize(breakpoints: Breakpoints, size: VideoItemSize): VideoItemSize {\n if (breakpoints.sm)\n return 'sm';\n \n return size || 'md';\n },\n\n getThumbnailColSize(hasDragHandle: boolean): number {\n return hasDragHandle ? 10 : 12;\n }\n};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport styles from './partial-video-list.module.scss';\n\ninterface PartialVideoListProps {\n withReordering?: boolean;\n numVideos?: number;\n allowBulkActions?: boolean;\n}\n\nPartialVideoList.defaultProps = {\n numVideos: 15\n};\n\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\n return (\n <>\n {Array(props.numVideos).fill(null).map((_, i) => (\n <div className='d-flex' key={i}>\n {props.allowBulkActions && <div className='form-check pe-3 pe-sm-2 mx-0 mx-md-2' />}\n <PartialVideoItem {...props} />\n </div>\n ))}\n </>\n );\n}\n\nexport function PartialVideoItem(props: PartialVideoListProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const withDragHandle = props.withReordering && !breakpoints.xs;\n\n return (\n <Row className={`${isSmall ? '' : 'py-2'} flex-grow-1`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-1` : 'mb-1 pe-3 pe-md-2'}`}>\n <Row>\n {!!withDragHandle && (\n <div className='d-flex align-items-center justify-content-center col-2'>\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\n </div>\n )}\n <Col xs={VideoListHelper.getThumbnailColSize(withDragHandle)}>\n <div className={`partial-loading-background ${isSmall ? 'rounded' : 'rounded-3'} ${styles.partialThumbnail}`} />\n </Col>\n </Row>\n </Col>\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDescription}`} />\n </Col>\n </Row>\n );\n}\n\n","import * as React from 'react';\n\ninterface CheckboxProps {\n id: string;\n checked: boolean;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n label?: string;\n ariaLabel?: string;\n name?: string;\n className?: string;\n inputClassName?: string;\n disabled?: boolean;\n indeterminate?: boolean;\n isLabelEllipsis?: boolean;\n}\n\nCheckbox.defaultProps = {\n checked: false,\n label: '',\n className: ''\n};\n\n/**\n * Use this checkbox outside of Formik contexts\n */\nexport function Checkbox(props: CheckboxProps): JSX.Element {\n const { isLabelEllipsis } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => {\n if (!ref.current)\n return;\n\n if (props.checked) {\n if (ref.current.indeterminate)\n ref.current.indeterminate = false;\n\n return;\n }\n\n if (props.indeterminate && !ref.current.indeterminate) {\n ref.current.indeterminate = true;\n return;\n }\n\n if (!props.indeterminate && ref.current.indeterminate)\n ref.current.indeterminate = false;\n }, [ ref.current, props.indeterminate, props.checked ]);\n\n return (\n <div className={`form-check pe-2 ${props.className}`}>\n <input\n ref={ref}\n type='checkbox'\n className={`${props.inputClassName} form-check-input`}\n id={props.id}\n name={props.name}\n checked={props.checked}\n onChange={props.onChange}\n disabled={props.disabled}\n aria-checked={props.checked}\n aria-label={props.ariaLabel}\n />\n {props.label && (\n <label className='form-check-label cursor-pointer align-top' htmlFor={props.id}>\n <span className={`${isLabelEllipsis ? 'clamp-1' : ''}`}>{props.label}</span>\n </label>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nexport function GraduationCapSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024'\n />\n </svg>\n );\n}\n","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}"],"names":["Row","React.forwardRef","bsPrefix","className","Component","props","ref","decoratedBsPrefix","useBootstrapPrefix","breakpoints","useBootstrapBreakpoints","minBreakpoint","useBootstrapMinBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","_jsx","classNames","SCROLL_TOLERANCE","useInfiniteScroll","options","handleScroll","scrollContainer","currentScrollHeight","totalHeight","useEffect","onScroll","FunctionHelper","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","pagesFetched","setPagesFetched","useState","fetchNextFn","getKey","cursor","request","response","useSelectAllPages","fetchNextPage","currentVal","httpStatusClass","_b","_a","HttpStatusClass","InfiniteScrollFooter","inView","useInView","React.useEffect","jsx","styles","Spinner","SvgContainer","ChevronDownSvg","SvgContainerSize","VideoListHelper","size","hasDragHandle","PartialVideoList","Fragment","_","i","jsxs","PartialVideoItem","useBreakpoints","isSmall","withDragHandle","Col","Checkbox","isLabelEllipsis","React.useRef","GraduationCapSvg","useGetMediaQueryString","isXS","useMediaQuery","MediaQueryStrings","isSM","isMD","isLG","isXL","isXXL","currentString"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"CA1kXo4c.chunk.js","sources":["../../../../../node_modules/react-bootstrap/esm/Row.js","../../../../libs/shared/src/hooks/UseInfiniteScroll.ts","../../../../libs/shared/src/hooks/UseInfiniteList.ts","../../../../libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","../../../../libs/shared/src/components/video-list/VideoListHelper.tsx","../../../../libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","../../../../libs/shared/src/components/forms/form-checkbox/Checkbox.tsx","../../../../libs/shared/src/images/svg/objects/GraduationCapSvg.tsx","../../../../libs/shared/src/hooks/UseGetMediaQueryString.ts"],"sourcesContent":["\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ChevronDownSvg } from 'libs/shared/images/svg/arrows/ChevronDownSvg';\n\nimport styles from './infinite-scroll-footer.module.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <div ref={ref}>\n <SvgContainer\n svg={ChevronDownSvg}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n </div>\n )\n }\n </div>\n );\n}","import { ColProps } from 'react-bootstrap';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nexport const VideoListHelper = {\n getThumbnailColumns(): ColProps {\n return {\n xs: 12,\n sm: 5,\n lg: 3\n };\n },\n\n getDetailsColumns(): ColProps {\n return {\n xs: 12,\n sm: 7,\n lg: 9\n };\n },\n\n getSize(breakpoints: Breakpoints, size: VideoItemSize): VideoItemSize {\n if (breakpoints.sm)\n return 'sm';\n \n return size || 'md';\n },\n\n getThumbnailColSize(hasDragHandle: boolean): number {\n return hasDragHandle ? 10 : 12;\n }\n};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport styles from './partial-video-list.module.scss';\n\ninterface PartialVideoListProps {\n withReordering?: boolean;\n numVideos?: number;\n allowBulkActions?: boolean;\n}\n\nPartialVideoList.defaultProps = {\n numVideos: 15\n};\n\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\n return (\n <>\n {Array(props.numVideos).fill(null).map((_, i) => (\n <div className='d-flex' key={i}>\n {props.allowBulkActions && <div className='form-check pe-3 pe-sm-2 mx-0 mx-md-2' />}\n <PartialVideoItem {...props} />\n </div>\n ))}\n </>\n );\n}\n\nexport function PartialVideoItem(props: PartialVideoListProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const withDragHandle = props.withReordering && !breakpoints.xs;\n\n return (\n <Row className={`${isSmall ? '' : 'py-2'} flex-grow-1`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-1` : 'mb-1 pe-3 pe-md-2'}`}>\n <Row>\n {!!withDragHandle && (\n <div className='d-flex align-items-center justify-content-center col-2'>\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\n </div>\n )}\n <Col xs={VideoListHelper.getThumbnailColSize(withDragHandle)}>\n <div className={`partial-loading-background ${isSmall ? 'rounded' : 'rounded-3'} ${styles.partialThumbnail}`} />\n </Col>\n </Row>\n </Col>\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDescription}`} />\n </Col>\n </Row>\n );\n}\n\n","import * as React from 'react';\n\ninterface CheckboxProps {\n id: string;\n checked: boolean;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n label?: string;\n ariaLabel?: string;\n name?: string;\n className?: string;\n inputClassName?: string;\n disabled?: boolean;\n indeterminate?: boolean;\n isLabelEllipsis?: boolean;\n}\n\nCheckbox.defaultProps = {\n checked: false,\n label: '',\n className: ''\n};\n\n/**\n * Use this checkbox outside of Formik contexts\n */\nexport function Checkbox(props: CheckboxProps): JSX.Element {\n const { isLabelEllipsis } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => {\n if (!ref.current)\n return;\n\n if (props.checked) {\n if (ref.current.indeterminate)\n ref.current.indeterminate = false;\n\n return;\n }\n\n if (props.indeterminate && !ref.current.indeterminate) {\n ref.current.indeterminate = true;\n return;\n }\n\n if (!props.indeterminate && ref.current.indeterminate)\n ref.current.indeterminate = false;\n }, [ ref.current, props.indeterminate, props.checked ]);\n\n return (\n <div className={`form-check pe-2 ${props.className}`}>\n <input\n ref={ref}\n type='checkbox'\n className={`${props.inputClassName} form-check-input`}\n id={props.id}\n name={props.name}\n checked={props.checked}\n onChange={props.onChange}\n disabled={props.disabled}\n aria-checked={props.checked}\n aria-label={props.ariaLabel}\n />\n {props.label && (\n <label className='form-check-label cursor-pointer align-top' htmlFor={props.id}>\n <span className={`${isLabelEllipsis ? 'clamp-1' : ''}`}>{props.label}</span>\n </label>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nexport function GraduationCapSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024'\n />\n </svg>\n );\n}\n","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}"],"names":["Row","React.forwardRef","bsPrefix","className","Component","props","ref","decoratedBsPrefix","useBootstrapPrefix","breakpoints","useBootstrapBreakpoints","minBreakpoint","useBootstrapMinBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","_jsx","classNames","SCROLL_TOLERANCE","useInfiniteScroll","options","handleScroll","scrollContainer","currentScrollHeight","totalHeight","useEffect","onScroll","FunctionHelper","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","pagesFetched","setPagesFetched","useState","fetchNextFn","getKey","cursor","request","response","useSelectAllPages","fetchNextPage","currentVal","httpStatusClass","_b","_a","HttpStatusClass","InfiniteScrollFooter","inView","useInView","React.useEffect","jsx","styles","Spinner","SvgContainer","ChevronDownSvg","SvgContainerSize","VideoListHelper","size","hasDragHandle","PartialVideoList","Fragment","_","i","jsxs","PartialVideoItem","useBreakpoints","isSmall","withDragHandle","Col","Checkbox","isLabelEllipsis","React.useRef","GraduationCapSvg","useGetMediaQueryString","isXS","useMediaQuery","MediaQueryStrings","isSM","isMD","isLG","isXL","isXXL","currentString"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as t,aq as v,a as c,b as o,B as g,ad as h,ae as A,af as f,A as l,L as d}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{j as t,aq as v,a as c,b as o,B as g,ad as h,ae as A,af as f,A as l,L as d}from"./app-DQUfzK7M.js";import{t as p}from"./BB_Ud-Dl.chunk.js";import{a as x}from"./CeNnu9Uy.chunk.js";import{P as L}from"./BL0xk5Hs.chunk.js";const u="tv.infoAlert";function D(a){var s;return t.jsx("div",{className:"mb-3",children:t.jsx("div",{children:a.dateRange&&t.jsx(t.Fragment,{children:t.jsx(v,{appLink:{application:o.TV,action:c.Tv.BROADCAST_CONTENT,args:[(s=a.region)==null?void 0:s.code]},className:"text-info",children:t.jsxs("p",{className:"fw-semibold mb-0 me-2",children:[t.jsx(g,{namespace:u,phrase:"programsAvailable"}),x.getFormattedDateRange(p(a.dateRange.startDate,a.dateRange.timeZone),p(a.dateRange.endDate,a.dateRange.timeZone))]})})})})})}const T="tv.tvTabs",i=d.encloseNamespace(T),n={channels:{application:o.TV,action:c.Tv.CHANNELS},programs:{application:o.TV,action:c.Tv.PROGRAMS},tvGuide:{application:o.TV,action:c.Tv.TV_GUIDE}},r={actionType:f.Click,entity:A.Url,location:h.MagicTabs};function G(a){const{active:s,currentRegion:e}=a,m=[{name:i("channels"),appLink:{...n.channels,args:[e==null?void 0:e.code]},active:s==="channels",analyticsData:{name:i("channels"),url:l.getHref(n.channels)},analyticsOptions:r},{name:i("programs"),appLink:{...n.programs,args:[e==null?void 0:e.code]},active:s==="programs",analyticsData:{name:d.getPhrase(T,"programs"),url:l.getHref(n.programs)},analyticsOptions:r}];return a.showTvGuide&&m.push({name:i("tvGuide"),appLink:{...n.tvGuide,args:[e==null?void 0:e.code]},active:s==="tv-guide",analyticsData:{name:i("tvGuide"),url:l.getHref(n.tvGuide)},analyticsOptions:r}),t.jsx("div",{className:"mb-3",children:t.jsx(L,{tabs:m})})}export{G as T,D as a};
|
|
2
|
+
//# sourceMappingURL=CBpplRfy.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"CBpplRfy.chunk.js","sources":["../../src/apps/tv/components/tv-info-alert/TvInfoAlert.tsx","../../src/apps/tv/components/tv-tabs/TvTabs.tsx"],"sourcesContent":["import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\nimport { TvUtils } from 'apps/tv/utils/TvUtils';\n\nconst namespace = 'tv.infoAlert';\n\ninterface TvInfoAlertProps {\n dateRange: TvDateRange;\n region: TvRegion;\n}\n\nexport function TvInfoAlert(props: TvInfoAlertProps) {\n return (\n <div className='mb-3'>\n <div>\n {props.dateRange && (\n <>\n <AppLink\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.BROADCAST_CONTENT,\n args: [props.region?.code]\n }}\n className='text-info'\n >\n <p className='fw-semibold mb-0 me-2'>\n <Text namespace={namespace} phrase='programsAvailable' />\n {TvUtils.getFormattedDateRange(\n toLocalTime(props.dateRange.startDate, props.dateRange.timeZone),\n toLocalTime(props.dateRange.endDate, props.dateRange.timeZone)\n )}\n </p>\n </AppLink>\n </>\n )}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nconst namespace = 'tv.tvTabs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst APP_LINKS = {\n channels: {\n application: AppChannels.TV,\n action: Actions.Tv.CHANNELS\n },\n programs: {\n application: AppChannels.TV,\n action: Actions.Tv.PROGRAMS\n },\n tvGuide: {\n application: AppChannels.TV,\n action: Actions.Tv.TV_GUIDE\n }\n};\n\nconst ANALYTICS_OPTIONS = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n};\n\ninterface TvTabs {\n active: 'channels' | 'programs' | 'tv-guide' | null;\n currentRegion: TvRegion;\n showTvGuide: boolean;\n}\n\nexport function TvTabs(props: TvTabs): JSX.Element {\n const { active, currentRegion } = props;\n\n const tabs: PillTab[] = [{\n name: getPhrase('channels'),\n appLink: {\n ...APP_LINKS.channels,\n args: [currentRegion?.code]\n },\n active: active === 'channels',\n analyticsData: {\n name: getPhrase('channels'),\n url: Core.AppLinkHelper.getHref(APP_LINKS.channels)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n }, {\n name: getPhrase('programs'),\n appLink: {\n ...APP_LINKS.programs,\n args: [currentRegion?.code]\n },\n active: active === 'programs',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'programs'),\n url: Core.AppLinkHelper.getHref(APP_LINKS.programs)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n }];\n\n if (props.showTvGuide) {\n tabs.push({\n name: getPhrase('tvGuide'),\n appLink: {\n ...APP_LINKS.tvGuide,\n args: [currentRegion?.code]\n },\n active: active === 'tv-guide',\n analyticsData: {\n name: getPhrase('tvGuide'),\n url: Core.AppLinkHelper.getHref(APP_LINKS.tvGuide)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n });\n }\n\n return (\n <div className='mb-3'>\n <PillTabSelector tabs={tabs} />\n </div>\n );\n}"],"names":["namespace","TvInfoAlert","props","jsx","Fragment","AppLink","AppChannels","Actions","_a","jsxs","Text","TvUtils","toLocalTime","getPhrase","LanguageService","APP_LINKS","ANALYTICS_OPTIONS","UserAction","EntityType","LocationContext","TvTabs","active","currentRegion","tabs","Core.AppLinkHelper","PillTabSelector"],"mappings":"iOAYA,MAAMA,EAAY,eAOX,SAASC,EAAYC,EAAyB,OACnD,OACEC,EAAAA,IAAC,OAAI,UAAU,OACb,eAAC,MAAA,CACE,SAAAD,EAAM,WACLC,EAAAA,IAAAC,EAAAA,SAAA,CACE,SAAAD,EAAAA,IAACE,EAAA,CACC,QAAS,CACP,YAAaC,EAAY,GACzB,OAAQC,EAAQ,GAAG,kBACnB,KAAM,EAACC,EAAAN,EAAM,SAAN,YAAAM,EAAc,IAAI,CAAA,EAE3B,UAAU,YAEV,SAAAC,EAAAA,KAAC,IAAA,CAAE,UAAU,wBACX,SAAA,CAAAN,EAAAA,IAACO,EAAA,CAAA,UAAKV,EAAsB,OAAO,mBAAA,CAAoB,EACtDW,EAAQ,sBACPC,EAAYV,EAAM,UAAU,UAAWA,EAAM,UAAU,QAAQ,EAC/DU,EAAYV,EAAM,UAAU,QAASA,EAAM,UAAU,QAAQ,CAAA,CAC/D,CAAA,CACF,CAAA,CAAA,CACF,CACF,EAEJ,EACF,CAEJ,CChCA,MAAMF,EAAY,YACZa,EAAYC,EAAgB,iBAAiBd,CAAS,EAEtDe,EAAY,CAChB,SAAU,CACR,YAAaT,EAAY,GACzB,OAAQC,EAAQ,GAAG,QAAA,EAErB,SAAU,CACR,YAAaD,EAAY,GACzB,OAAQC,EAAQ,GAAG,QAAA,EAErB,QAAS,CACP,YAAaD,EAAY,GACzB,OAAQC,EAAQ,GAAG,QAAA,CAEvB,EAEMS,EAAoB,CACxB,WAAYC,EAAW,MACvB,OAAQC,EAAW,IACnB,SAAUC,EAAgB,SAC5B,EAQO,SAASC,EAAOlB,EAA4B,CACjD,KAAM,CAAE,OAAAmB,EAAQ,cAAAC,CAAA,EAAkBpB,EAE5BqB,EAAkB,CAAC,CACvB,KAAMV,EAAU,UAAU,EAC1B,QAAS,CACP,GAAGE,EAAU,SACb,KAAM,CAACO,GAAA,YAAAA,EAAe,IAAI,CAAA,EAE5B,OAAQD,IAAW,WACnB,cAAe,CACb,KAAMR,EAAU,UAAU,EAC1B,IAAKW,EAAmB,QAAQT,EAAU,QAAQ,CAAA,EAEpD,iBAAkBC,CAAA,EACjB,CACD,KAAMH,EAAU,UAAU,EAC1B,QAAS,CACP,GAAGE,EAAU,SACb,KAAM,CAACO,GAAA,YAAAA,EAAe,IAAI,CAAA,EAE5B,OAAQD,IAAW,WACnB,cAAe,CACb,KAAMP,EAAgB,UAAUd,EAAW,UAAU,EACrD,IAAKwB,EAAmB,QAAQT,EAAU,QAAQ,CAAA,EAEpD,iBAAkBC,CAAA,CACnB,EAED,OAAId,EAAM,aACRqB,EAAK,KAAK,CACR,KAAMV,EAAU,SAAS,EACzB,QAAS,CACP,GAAGE,EAAU,QACb,KAAM,CAACO,GAAA,YAAAA,EAAe,IAAI,CAAA,EAE5B,OAAQD,IAAW,WACnB,cAAe,CACb,KAAMR,EAAU,SAAS,EACzB,IAAKW,EAAmB,QAAQT,EAAU,OAAO,CAAA,EAEnD,iBAAkBC,CAAA,CACnB,QAIA,MAAA,CAAI,UAAU,OACb,SAAAb,EAAAA,IAACsB,EAAA,CAAgB,KAAAF,EAAY,CAAA,CAC/B,CAEJ"}
|