@clickview/exchange 0.60.0-rc.1 → 0.60.0-rc.2
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/{BKi3hrx8.chunk.js → 04pgOdRO.chunk.js} +2 -2
- package/dist/scripts/{BKi3hrx8.chunk.js.map → 04pgOdRO.chunk.js.map} +1 -1
- package/dist/scripts/{Cun6Bm0P.chunk.js → 3TcDzXoX.chunk.js} +2 -2
- package/dist/scripts/{Cun6Bm0P.chunk.js.map → 3TcDzXoX.chunk.js.map} +1 -1
- package/dist/scripts/{BtawqZ6G.chunk.js → 4J0Xi0Li.chunk.js} +2 -2
- package/dist/scripts/{BtawqZ6G.chunk.js.map → 4J0Xi0Li.chunk.js.map} +1 -1
- package/dist/scripts/{CVs6MQ2N.chunk.js → 6IXg6l1D.chunk.js} +2 -2
- package/dist/scripts/{CVs6MQ2N.chunk.js.map → 6IXg6l1D.chunk.js.map} +1 -1
- package/dist/scripts/{DL2-cCw6.chunk.js → B-owbLzH.chunk.js} +2 -2
- package/dist/scripts/{DL2-cCw6.chunk.js.map → B-owbLzH.chunk.js.map} +1 -1
- package/dist/scripts/{DRrC3MD7.chunk.js → B0F-zuCm.chunk.js} +2 -2
- package/dist/scripts/{DRrC3MD7.chunk.js.map → B0F-zuCm.chunk.js.map} +1 -1
- package/dist/scripts/{CA_kgZyj.chunk.js → B70FMVao.chunk.js} +2 -2
- package/dist/scripts/{CA_kgZyj.chunk.js.map → B70FMVao.chunk.js.map} +1 -1
- package/dist/scripts/{4fxPWB-y.chunk.js → BBHWPp1j.chunk.js} +2 -2
- package/dist/scripts/{4fxPWB-y.chunk.js.map → BBHWPp1j.chunk.js.map} +1 -1
- package/dist/scripts/{BtdA62QV.chunk.js → BDyAv0Lu.chunk.js} +2 -2
- package/dist/scripts/{BtdA62QV.chunk.js.map → BDyAv0Lu.chunk.js.map} +1 -1
- package/dist/scripts/{BifrjGRd.chunk.js → BE4-eyTT.chunk.js} +2 -2
- package/dist/scripts/{BifrjGRd.chunk.js.map → BE4-eyTT.chunk.js.map} +1 -1
- package/dist/scripts/BLzBP6Wz.chunk.js +2 -0
- package/dist/scripts/{S3AKKGaX.chunk.js.map → BLzBP6Wz.chunk.js.map} +1 -1
- package/dist/scripts/{B-uJ9QxS.chunk.js → BVLYrDIr.chunk.js} +2 -2
- package/dist/scripts/{B-uJ9QxS.chunk.js.map → BVLYrDIr.chunk.js.map} +1 -1
- package/dist/scripts/{BF-Dxna8.chunk.js → BYcoChXb.chunk.js} +2 -2
- package/dist/scripts/{BF-Dxna8.chunk.js.map → BYcoChXb.chunk.js.map} +1 -1
- package/dist/scripts/{Z9Jn5Q8R.chunk.js → Ba34yA9D.chunk.js} +2 -2
- package/dist/scripts/{Z9Jn5Q8R.chunk.js.map → Ba34yA9D.chunk.js.map} +1 -1
- package/dist/scripts/{BR315om5.chunk.js → BcMlwk5Q.chunk.js} +2 -2
- package/dist/scripts/{BR315om5.chunk.js.map → BcMlwk5Q.chunk.js.map} +1 -1
- package/dist/scripts/{CSOZNOFJ.chunk.js → Bf6VCMqm.chunk.js} +2 -2
- package/dist/scripts/{CSOZNOFJ.chunk.js.map → Bf6VCMqm.chunk.js.map} +1 -1
- package/dist/scripts/{BP4XTpZ5.chunk.js → BgJkDMpd.chunk.js} +2 -2
- package/dist/scripts/{BP4XTpZ5.chunk.js.map → BgJkDMpd.chunk.js.map} +1 -1
- package/dist/scripts/{DL6RqYme.chunk.js → Bh24QUEJ.chunk.js} +2 -2
- package/dist/scripts/{DL6RqYme.chunk.js.map → Bh24QUEJ.chunk.js.map} +1 -1
- package/dist/scripts/{CwSSqnpd.chunk.js → BlIARVZO.chunk.js} +2 -2
- package/dist/scripts/{CwSSqnpd.chunk.js.map → BlIARVZO.chunk.js.map} +1 -1
- package/dist/scripts/{ChMcPIOp.chunk.js → BljWHlhm.chunk.js} +2 -2
- package/dist/scripts/{ChMcPIOp.chunk.js.map → BljWHlhm.chunk.js.map} +1 -1
- package/dist/scripts/{cQwhiWVd.chunk.js → BmyPQ5jE.chunk.js} +2 -2
- package/dist/scripts/{cQwhiWVd.chunk.js.map → BmyPQ5jE.chunk.js.map} +1 -1
- package/dist/scripts/{D4iJdObW.chunk.js → Bnz0fDvK.chunk.js} +2 -2
- package/dist/scripts/{D4iJdObW.chunk.js.map → Bnz0fDvK.chunk.js.map} +1 -1
- package/dist/scripts/BsADH-lw.chunk.js +2 -0
- package/dist/scripts/{8FKVdaoV.chunk.js.map → BsADH-lw.chunk.js.map} +1 -1
- package/dist/scripts/{DGXKrtD9.chunk.js → BsOHikPe.chunk.js} +2 -2
- package/dist/scripts/{DGXKrtD9.chunk.js.map → BsOHikPe.chunk.js.map} +1 -1
- package/dist/scripts/{wf3__oqz.chunk.js → BtjfZQnL.chunk.js} +2 -2
- package/dist/scripts/{wf3__oqz.chunk.js.map → BtjfZQnL.chunk.js.map} +1 -1
- package/dist/scripts/{BwOCU8N2.chunk.js → BuAs5ec9.chunk.js} +2 -2
- package/dist/scripts/{BwOCU8N2.chunk.js.map → BuAs5ec9.chunk.js.map} +1 -1
- package/dist/scripts/BukJ7aUR.chunk.js +2 -0
- package/dist/scripts/{n2Lzk-vZ.chunk.js.map → BukJ7aUR.chunk.js.map} +1 -1
- package/dist/scripts/ByhKhOKU.chunk.js +2 -0
- package/dist/scripts/{C7hbvwax.chunk.js.map → ByhKhOKU.chunk.js.map} +1 -1
- package/dist/scripts/{BF5o8dSk.chunk.js → C1ZMk5wM.chunk.js} +2 -2
- package/dist/scripts/{BF5o8dSk.chunk.js.map → C1ZMk5wM.chunk.js.map} +1 -1
- package/dist/scripts/{CkssErVA.chunk.js → C3y5p8CZ.chunk.js} +2 -2
- package/dist/scripts/{CkssErVA.chunk.js.map → C3y5p8CZ.chunk.js.map} +1 -1
- package/dist/scripts/C7EM5k6B.chunk.js +2 -0
- package/dist/scripts/{BzroV7uY.chunk.js.map → C7EM5k6B.chunk.js.map} +1 -1
- package/dist/scripts/{q9Uu2NWp.chunk.js → CFk0WB2c.chunk.js} +2 -2
- package/dist/scripts/{q9Uu2NWp.chunk.js.map → CFk0WB2c.chunk.js.map} +1 -1
- package/dist/scripts/{B8OodjhB.chunk.js → CJIFCVgE.chunk.js} +2 -2
- package/dist/scripts/{B8OodjhB.chunk.js.map → CJIFCVgE.chunk.js.map} +1 -1
- package/dist/scripts/{BlSWUMP3.chunk.js → CKvSiIEq.chunk.js} +2 -2
- package/dist/scripts/{BlSWUMP3.chunk.js.map → CKvSiIEq.chunk.js.map} +1 -1
- package/dist/scripts/CMCojMYr.chunk.js +2 -0
- package/dist/scripts/{_IXItgx2.chunk.js.map → CMCojMYr.chunk.js.map} +1 -1
- package/dist/scripts/{TstEXSQN.chunk.js → CPlxz4qV.chunk.js} +2 -2
- package/dist/scripts/{TstEXSQN.chunk.js.map → CPlxz4qV.chunk.js.map} +1 -1
- package/dist/scripts/{I59Hs9Lx.chunk.js → CTVtP7l8.chunk.js} +2 -2
- package/dist/scripts/{I59Hs9Lx.chunk.js.map → CTVtP7l8.chunk.js.map} +1 -1
- package/dist/scripts/{DVWWhAdQ.chunk.js → C_4wt9AF.chunk.js} +2 -2
- package/dist/scripts/{DVWWhAdQ.chunk.js.map → C_4wt9AF.chunk.js.map} +1 -1
- package/dist/scripts/{CCRn1ABX.chunk.js → CbaYOIsv.chunk.js} +2 -2
- package/dist/scripts/{CCRn1ABX.chunk.js.map → CbaYOIsv.chunk.js.map} +1 -1
- package/dist/scripts/{Ctt5fJ1m.chunk.js → CcpXNvK8.chunk.js} +2 -2
- package/dist/scripts/{Ctt5fJ1m.chunk.js.map → CcpXNvK8.chunk.js.map} +1 -1
- package/dist/scripts/{Bn0x3bVV.chunk.js → Cd9rSWFI.chunk.js} +2 -2
- package/dist/scripts/{Bn0x3bVV.chunk.js.map → Cd9rSWFI.chunk.js.map} +1 -1
- package/dist/scripts/{D8DlnPuu.chunk.js → Cfz-NLA8.chunk.js} +2 -2
- package/dist/scripts/{D8DlnPuu.chunk.js.map → Cfz-NLA8.chunk.js.map} +1 -1
- package/dist/scripts/{DcycuoCp.chunk.js → CoH7ITiF.chunk.js} +2 -2
- package/dist/scripts/{DcycuoCp.chunk.js.map → CoH7ITiF.chunk.js.map} +1 -1
- package/dist/scripts/{6azg5FPO.chunk.js → Cp5iJov7.chunk.js} +2 -2
- package/dist/scripts/{6azg5FPO.chunk.js.map → Cp5iJov7.chunk.js.map} +1 -1
- package/dist/scripts/{CwIkFpAK.chunk.js → CqC__fxH.chunk.js} +2 -2
- package/dist/scripts/{CwIkFpAK.chunk.js.map → CqC__fxH.chunk.js.map} +1 -1
- package/dist/scripts/{BxTf0tGn.chunk.js → CtxDEXnF.chunk.js} +2 -2
- package/dist/scripts/{BxTf0tGn.chunk.js.map → CtxDEXnF.chunk.js.map} +1 -1
- package/dist/scripts/{BOA4xw3e.chunk.js → CvWjVTu3.chunk.js} +2 -2
- package/dist/scripts/{BOA4xw3e.chunk.js.map → CvWjVTu3.chunk.js.map} +1 -1
- package/dist/scripts/{rTx16rRP.chunk.js → D434QRYT.chunk.js} +2 -2
- package/dist/scripts/{rTx16rRP.chunk.js.map → D434QRYT.chunk.js.map} +1 -1
- package/dist/scripts/{CLc8za1x.chunk.js → D4Zjf8Y5.chunk.js} +2 -2
- package/dist/scripts/{CLc8za1x.chunk.js.map → D4Zjf8Y5.chunk.js.map} +1 -1
- package/dist/scripts/{BRNWJUo1.chunk.js → D6ZrWp-l.chunk.js} +2 -2
- package/dist/scripts/{BRNWJUo1.chunk.js.map → D6ZrWp-l.chunk.js.map} +1 -1
- package/dist/scripts/{CMMBNKu7.chunk.js → D8Heuhhv.chunk.js} +2 -2
- package/dist/scripts/{CMMBNKu7.chunk.js.map → D8Heuhhv.chunk.js.map} +1 -1
- package/dist/scripts/{DewN2Vb_.chunk.js → DB2D8K7H.chunk.js} +2 -2
- package/dist/scripts/{DewN2Vb_.chunk.js.map → DB2D8K7H.chunk.js.map} +1 -1
- package/dist/scripts/{D8_lXBys.chunk.js → DBVjri4c.chunk.js} +2 -2
- package/dist/scripts/{D8_lXBys.chunk.js.map → DBVjri4c.chunk.js.map} +1 -1
- package/dist/scripts/{BNuBfH8m.chunk.js → DE1BrYZL.chunk.js} +2 -2
- package/dist/scripts/{BNuBfH8m.chunk.js.map → DE1BrYZL.chunk.js.map} +1 -1
- package/dist/scripts/{wSwn3D46.chunk.js → DFEzVltS.chunk.js} +2 -2
- package/dist/scripts/{wSwn3D46.chunk.js.map → DFEzVltS.chunk.js.map} +1 -1
- package/dist/scripts/{BR_T92IH.chunk.js → DJIcjqQb.chunk.js} +2 -2
- package/dist/scripts/{BR_T92IH.chunk.js.map → DJIcjqQb.chunk.js.map} +1 -1
- package/dist/scripts/{DovRcfVM.chunk.js → DO5O1Cbr.chunk.js} +2 -2
- package/dist/scripts/{DovRcfVM.chunk.js.map → DO5O1Cbr.chunk.js.map} +1 -1
- package/dist/scripts/{DsjV9PPn.chunk.js → DRm_bkxA.chunk.js} +2 -2
- package/dist/scripts/{DsjV9PPn.chunk.js.map → DRm_bkxA.chunk.js.map} +1 -1
- package/dist/scripts/{9Rt0MZjT.chunk.js → DT4IRGxK.chunk.js} +2 -2
- package/dist/scripts/{9Rt0MZjT.chunk.js.map → DT4IRGxK.chunk.js.map} +1 -1
- package/dist/scripts/{DR4ix3Le.chunk.js → DUhtYhkt.chunk.js} +2 -2
- package/dist/scripts/{DR4ix3Le.chunk.js.map → DUhtYhkt.chunk.js.map} +1 -1
- package/dist/scripts/{C1OCfDUr.chunk.js → DWEY8djx.chunk.js} +2 -2
- package/dist/scripts/{C1OCfDUr.chunk.js.map → DWEY8djx.chunk.js.map} +1 -1
- package/dist/scripts/{DSvyU13L.chunk.js → DWvjreQC.chunk.js} +2 -2
- package/dist/scripts/{DSvyU13L.chunk.js.map → DWvjreQC.chunk.js.map} +1 -1
- package/dist/scripts/{fECuBMLR.chunk.js → D_1yBiR4.chunk.js} +2 -2
- package/dist/scripts/{fECuBMLR.chunk.js.map → D_1yBiR4.chunk.js.map} +1 -1
- package/dist/scripts/{3OkTFdK2.chunk.js → Da25i9yA.chunk.js} +2 -2
- package/dist/scripts/{3OkTFdK2.chunk.js.map → Da25i9yA.chunk.js.map} +1 -1
- package/dist/scripts/DajpMvCp.chunk.js +2 -0
- package/dist/scripts/{DkDHWI8R.chunk.js.map → DajpMvCp.chunk.js.map} +1 -1
- package/dist/scripts/{D24CCnbD.chunk.js → DazbnkYw.chunk.js} +2 -2
- package/dist/scripts/{D24CCnbD.chunk.js.map → DazbnkYw.chunk.js.map} +1 -1
- package/dist/scripts/{CT6hE7w6.chunk.js → DcxTi_y6.chunk.js} +2 -2
- package/dist/scripts/{CT6hE7w6.chunk.js.map → DcxTi_y6.chunk.js.map} +1 -1
- package/dist/scripts/{DRRhiZBL.chunk.js → Dfj7IDd2.chunk.js} +2 -2
- package/dist/scripts/{DRRhiZBL.chunk.js.map → Dfj7IDd2.chunk.js.map} +1 -1
- package/dist/scripts/{PrSoxgla.chunk.js → Dfz11JwF.chunk.js} +2 -2
- package/dist/scripts/{PrSoxgla.chunk.js.map → Dfz11JwF.chunk.js.map} +1 -1
- package/dist/scripts/{WI7FPt1a.chunk.js → DhQH7eoo.chunk.js} +2 -2
- package/dist/scripts/{WI7FPt1a.chunk.js.map → DhQH7eoo.chunk.js.map} +1 -1
- package/dist/scripts/{CNP8DTSw.chunk.js → Dk7j_X12.chunk.js} +2 -2
- package/dist/scripts/{CNP8DTSw.chunk.js.map → Dk7j_X12.chunk.js.map} +1 -1
- package/dist/scripts/{BAdNjc7A.chunk.js → Dn33djw5.chunk.js} +2 -2
- package/dist/scripts/{BAdNjc7A.chunk.js.map → Dn33djw5.chunk.js.map} +1 -1
- package/dist/scripts/{BberNguh.chunk.js → DoDHNhqQ.chunk.js} +2 -2
- package/dist/scripts/{BberNguh.chunk.js.map → DoDHNhqQ.chunk.js.map} +1 -1
- package/dist/scripts/{BUDMpJX2.chunk.js → DoKxE03f.chunk.js} +2 -2
- package/dist/scripts/{BUDMpJX2.chunk.js.map → DoKxE03f.chunk.js.map} +1 -1
- package/dist/scripts/{S5nHSRfa.chunk.js → DtHc20G9.chunk.js} +2 -2
- package/dist/scripts/{S5nHSRfa.chunk.js.map → DtHc20G9.chunk.js.map} +1 -1
- package/dist/scripts/{BLByhXZW.chunk.js → ERJS4wRT.chunk.js} +2 -2
- package/dist/scripts/{BLByhXZW.chunk.js.map → ERJS4wRT.chunk.js.map} +1 -1
- package/dist/scripts/{BQ-BKyM1.chunk.js → EvPAqFMl.chunk.js} +2 -2
- package/dist/scripts/{BQ-BKyM1.chunk.js.map → EvPAqFMl.chunk.js.map} +1 -1
- package/dist/scripts/{B1uz-Qnj.chunk.js → LW0dQJSk.chunk.js} +2 -2
- package/dist/scripts/{B1uz-Qnj.chunk.js.map → LW0dQJSk.chunk.js.map} +1 -1
- package/dist/scripts/{LDI1zHGl.chunk.js → LZIgIAoQ.chunk.js} +2 -2
- package/dist/scripts/{LDI1zHGl.chunk.js.map → LZIgIAoQ.chunk.js.map} +1 -1
- package/dist/scripts/{CUdFCpCV.chunk.js → M6sIzXk3.chunk.js} +2 -2
- package/dist/scripts/{CUdFCpCV.chunk.js.map → M6sIzXk3.chunk.js.map} +1 -1
- package/dist/scripts/{DSzyGUtv.chunk.js → NgXKdsdO.chunk.js} +2 -2
- package/dist/scripts/{DSzyGUtv.chunk.js.map → NgXKdsdO.chunk.js.map} +1 -1
- package/dist/scripts/{CnvPx00U.chunk.js → NuQ4YL4o.chunk.js} +2 -2
- package/dist/scripts/{CnvPx00U.chunk.js.map → NuQ4YL4o.chunk.js.map} +1 -1
- package/dist/scripts/{app-F40DpJf0.js → app-DIXL6Xww.js} +3 -3
- package/dist/scripts/{app-F40DpJf0.js.map → app-DIXL6Xww.js.map} +1 -1
- package/dist/scripts/{BjXCJlUR.chunk.js → h2FRNRf6.chunk.js} +2 -2
- package/dist/scripts/{BjXCJlUR.chunk.js.map → h2FRNRf6.chunk.js.map} +1 -1
- package/dist/scripts/{3wFLNakR.chunk.js → nX8j1O82.chunk.js} +2 -2
- package/dist/scripts/{3wFLNakR.chunk.js.map → nX8j1O82.chunk.js.map} +1 -1
- package/dist/scripts/{D4tR-WZQ.chunk.js → o4QgtA_X.chunk.js} +2 -2
- package/dist/scripts/{D4tR-WZQ.chunk.js.map → o4QgtA_X.chunk.js.map} +1 -1
- package/dist/scripts/{XcHkZOyF.chunk.js → qxfO3cEF.chunk.js} +2 -2
- package/dist/scripts/{XcHkZOyF.chunk.js.map → qxfO3cEF.chunk.js.map} +1 -1
- package/dist/scripts/{qlF3nlLO.chunk.js → r1PHK19X.chunk.js} +2 -2
- package/dist/scripts/{qlF3nlLO.chunk.js.map → r1PHK19X.chunk.js.map} +1 -1
- package/dist/scripts/{Bf7PNHQi.chunk.js → rOIj7KLN.chunk.js} +2 -2
- package/dist/scripts/{Bf7PNHQi.chunk.js.map → rOIj7KLN.chunk.js.map} +1 -1
- package/dist/scripts/{SIOFUPM8.chunk.js → roCgVX3B.chunk.js} +3 -3
- package/dist/scripts/{SIOFUPM8.chunk.js.map → roCgVX3B.chunk.js.map} +1 -1
- package/dist/scripts/{CMsNmlo3.chunk.js → yublbxR_.chunk.js} +2 -2
- package/dist/scripts/{CMsNmlo3.chunk.js.map → yublbxR_.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/8FKVdaoV.chunk.js +0 -2
- package/dist/scripts/BzroV7uY.chunk.js +0 -2
- package/dist/scripts/C7hbvwax.chunk.js +0 -2
- package/dist/scripts/DkDHWI8R.chunk.js +0 -2
- package/dist/scripts/S3AKKGaX.chunk.js +0 -2
- package/dist/scripts/_IXItgx2.chunk.js +0 -2
- package/dist/scripts/n2Lzk-vZ.chunk.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q9Uu2NWp.chunk.js","sources":["../../src/apps/tv/views/tv-channels/components/tv-channel-card/TvChannelCard.tsx","../../src/apps/tv/views/tv-channels/partial-loading/PartialCardRow.tsx","../../src/apps/tv/views/tv-channels/components/tv-region-select-map/TvRegionSelectMap.tsx","../../src/apps/tv/views/tv-channels/TvChannelsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './tv-channel-card.module.scss';\n\ninterface TvChannelCardProps {\n appLink: Core.AppLink;\n logoUrl: string;\n name: string;\n className?: string;\n}\n\nexport function TvChannelCard(props: TvChannelCardProps): JSX.Element {\n return (\n <div className={`${styles.cardContainer} px-2 mb-3`}>\n <AppLink\n className={`${props.className} border rounded-3 py-3 px-4 d-block text-center`}\n appLink={props.appLink}\n >\n <div className={`${styles.image} d-flex align-items-center justify-content-center`}>\n <img\n className='mh-100'\n src={props.logoUrl}\n />\n </div>\n <p className='fw-semibold text-dark text-truncate mb-0'>\n {props.name}\n </p>\n </AppLink>\n </div>\n );\n}","import React from 'react';\n\nimport styles from './partial-card-row.module.scss';\n\nfunction PartialRow() {\n return (\n <div className={`${styles.cardContainer} px-2 mb-3`}>\n <div className='partial-loading-background border rounded-3 py-3 px-4'>\n <div className={`${styles.image}`}></div>\n <p className='mb-0'> </p>\n </div>\n </div>\n );\n}\n\ninterface PartialCardRowProps {\n cards: number;\n}\n\nexport function PartialCardRow(props: PartialCardRowProps) {\n return (\n <>\n <div className='row mb-2'>\n {[...Array(props.cards)].map((_, index) => <PartialRow key={index} />)}\n </div>\n </>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { EntityType, LocationContext, TvDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { getRegionInfo } from 'apps/tv/utils/getRegionInfo/getRegionInfo';\nimport { PartialCardRow } from 'apps/tv/views/tv-channels/partial-loading/PartialCardRow';\n\nimport styles from './tv-region-select-map.module.scss';\n\nconst namespace = 'tv.tvRegionSelectMap';\n\ninterface TvRegionSelectMapProps {\n instanceRegion: InstanceRegion;\n currentRegion: TvRegion;\n regions: TvRegion[];\n appLink: Core.AppLink;\n onClick: (region: TvRegion) => void;\n}\n\nconst TvRegionSelectMap = (props: TvRegionSelectMapProps) => {\n const regionInfo = getRegionInfo(props.instanceRegion);\n\n if (!props.regions || !props.currentRegion)\n return <PartialCardRow cards={5} />;\n\n if (props.regions.length <= 1)\n return <></>;\n \n return (\n <>\n <h2 className='h4'>\n <Text\n namespace={namespace}\n phrase='regions'\n options={{ country: regionInfo.country }}\n />\n </h2>\n <div className='row'>\n {props.regions.map((region, index) => {\n if (region.id !== props.currentRegion.id)\n return (\n <div key={index} className={`${styles.cardContainer} px-2 mb-3`}>\n <AppLink\n className='border rounded-3 py-3 px-4 d-block text-center'\n appLink={{\n ...props.appLink,\n args: [region.code]\n }}\n analyticsData={{ region: props.currentRegion.code }}\n analyticsOptions={{\n actionType: UserAction.Click,\n entity: EntityType.Region,\n location: LocationContext.RegionMap,\n descriptor: TvDescriptor.RegionSelect\n }}\n onClick={() => props.onClick(region)}\n >\n <div className={`${styles.image} d-flex align-items-center justify-content-center`}>\n <img\n src={`https://tv.clickview.com.au/content/images/${region.code}.png`}\n />\n </div>\n <p className='fw-semibold text-dark mb-0'>\n {region.stateFull}\n </p>\n </AppLink>\n </div>\n );\n })}\n </div>\n </>\n );\n};\n\nexport default TvRegionSelectMap;","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser } 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 { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { getRegionInfo } from 'apps/tv/utils/getRegionInfo/getRegionInfo';\nimport { TvChannelCard } from 'apps/tv/views/tv-channels/components/tv-channel-card/TvChannelCard';\nimport TvRegionSelectMap from 'apps/tv/views/tv-channels/components/tv-region-select-map/TvRegionSelectMap';\n\nimport { PartialCardRow } from './partial-loading/PartialCardRow';\n\n\nconst namespace = 'tv.channels';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TvChannelsViewProps {\n region: string;\n}\n\nexport function TvChannelsView(props: TvChannelsViewProps): JSX.Element {\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 const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const instanceRegion = currentUser.data?.instanceRegion;\n\n const { setRegion } = useSelectedRegion();\n const { liteUpgradeTypeCustomer } = useSettings(null);\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, channels ]);\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n const dataLoaded = (\n region.hasCompleted &&\n regions.hasCompleted &&\n dateRange.hasCompleted &&\n channels.hasCompleted &&\n currentUser.hasCompleted\n );\n\n const regionInfo = getRegionInfo(instanceRegion);\n\n return (\n <>\n <TvSearchBar region={region.data} />\n\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='channels'\n currentRegion={region.data}\n showTvGuide={!!liteUpgradeTypeCustomer}\n config={config.data}\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 <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n {dataLoaded ? (\n <>\n <div className='row mb-2'>\n {!!regionInfo.requestProgram &&\n <TvChannelCard\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.REQUEST_PROGRAM,\n args: [props.region]\n }}\n logoUrl={regionInfo.logo}\n name={getPhrase('requestProgram')}\n className={regionInfo.bgColor}\n />\n }\n {channels.data.map((channel, index) => {\n return (\n <TvChannelCard\n key={index}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.CHANNEL,\n args: [ channel.region, channel.id ],\n params: {\n region: channel.region !== props.region ? props.region : null\n }\n }}\n logoUrl={channel.logoUrl}\n name={channel.displayName}\n />\n );\n })}\n </div>\n </>\n ) : <PartialCardRow cards={20} />}\n \n\n <TvRegionSelectMap\n instanceRegion={instanceRegion}\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 </>\n );\n}"],"names":["TvChannelCard","props","styles","jsxs","AppLink","jsx","PartialRow","PartialCardRow","Fragment","_","index","namespace","TvRegionSelectMap","regionInfo","getRegionInfo","Text","region","UserAction","EntityType","LocationContext","TvDescriptor","getPhrase","LanguageService","TvChannelsView","Flight.useBasicFetch","TvRequests","dateRange","regions","config","ConfigRequests","channels","currentUser","UserRequests","instanceRegion","_a","setRegion","useSelectedRegion","liteUpgradeTypeCustomer","useSettings","useHandleRegionError","useHandleObjectError","useSetPageMetadata","dataLoaded","TvSearchBar","TvTabs","TvRegionSelect","AppChannels","Actions","TvInfoAlert","channel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CFk0WB2c.chunk.js","sources":["../../src/apps/tv/views/tv-channels/components/tv-channel-card/TvChannelCard.tsx","../../src/apps/tv/views/tv-channels/partial-loading/PartialCardRow.tsx","../../src/apps/tv/views/tv-channels/components/tv-region-select-map/TvRegionSelectMap.tsx","../../src/apps/tv/views/tv-channels/TvChannelsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './tv-channel-card.module.scss';\n\ninterface TvChannelCardProps {\n appLink: Core.AppLink;\n logoUrl: string;\n name: string;\n className?: string;\n}\n\nexport function TvChannelCard(props: TvChannelCardProps): JSX.Element {\n return (\n <div className={`${styles.cardContainer} px-2 mb-3`}>\n <AppLink\n className={`${props.className} border rounded-3 py-3 px-4 d-block text-center`}\n appLink={props.appLink}\n >\n <div className={`${styles.image} d-flex align-items-center justify-content-center`}>\n <img\n className='mh-100'\n src={props.logoUrl}\n />\n </div>\n <p className='fw-semibold text-dark text-truncate mb-0'>\n {props.name}\n </p>\n </AppLink>\n </div>\n );\n}","import React from 'react';\n\nimport styles from './partial-card-row.module.scss';\n\nfunction PartialRow() {\n return (\n <div className={`${styles.cardContainer} px-2 mb-3`}>\n <div className='partial-loading-background border rounded-3 py-3 px-4'>\n <div className={`${styles.image}`}></div>\n <p className='mb-0'> </p>\n </div>\n </div>\n );\n}\n\ninterface PartialCardRowProps {\n cards: number;\n}\n\nexport function PartialCardRow(props: PartialCardRowProps) {\n return (\n <>\n <div className='row mb-2'>\n {[...Array(props.cards)].map((_, index) => <PartialRow key={index} />)}\n </div>\n </>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { EntityType, LocationContext, TvDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { getRegionInfo } from 'apps/tv/utils/getRegionInfo/getRegionInfo';\nimport { PartialCardRow } from 'apps/tv/views/tv-channels/partial-loading/PartialCardRow';\n\nimport styles from './tv-region-select-map.module.scss';\n\nconst namespace = 'tv.tvRegionSelectMap';\n\ninterface TvRegionSelectMapProps {\n instanceRegion: InstanceRegion;\n currentRegion: TvRegion;\n regions: TvRegion[];\n appLink: Core.AppLink;\n onClick: (region: TvRegion) => void;\n}\n\nconst TvRegionSelectMap = (props: TvRegionSelectMapProps) => {\n const regionInfo = getRegionInfo(props.instanceRegion);\n\n if (!props.regions || !props.currentRegion)\n return <PartialCardRow cards={5} />;\n\n if (props.regions.length <= 1)\n return <></>;\n \n return (\n <>\n <h2 className='h4'>\n <Text\n namespace={namespace}\n phrase='regions'\n options={{ country: regionInfo.country }}\n />\n </h2>\n <div className='row'>\n {props.regions.map((region, index) => {\n if (region.id !== props.currentRegion.id)\n return (\n <div key={index} className={`${styles.cardContainer} px-2 mb-3`}>\n <AppLink\n className='border rounded-3 py-3 px-4 d-block text-center'\n appLink={{\n ...props.appLink,\n args: [region.code]\n }}\n analyticsData={{ region: props.currentRegion.code }}\n analyticsOptions={{\n actionType: UserAction.Click,\n entity: EntityType.Region,\n location: LocationContext.RegionMap,\n descriptor: TvDescriptor.RegionSelect\n }}\n onClick={() => props.onClick(region)}\n >\n <div className={`${styles.image} d-flex align-items-center justify-content-center`}>\n <img\n src={`https://tv.clickview.com.au/content/images/${region.code}.png`}\n />\n </div>\n <p className='fw-semibold text-dark mb-0'>\n {region.stateFull}\n </p>\n </AppLink>\n </div>\n );\n })}\n </div>\n </>\n );\n};\n\nexport default TvRegionSelectMap;","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser } 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 { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { getRegionInfo } from 'apps/tv/utils/getRegionInfo/getRegionInfo';\nimport { TvChannelCard } from 'apps/tv/views/tv-channels/components/tv-channel-card/TvChannelCard';\nimport TvRegionSelectMap from 'apps/tv/views/tv-channels/components/tv-region-select-map/TvRegionSelectMap';\n\nimport { PartialCardRow } from './partial-loading/PartialCardRow';\n\n\nconst namespace = 'tv.channels';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TvChannelsViewProps {\n region: string;\n}\n\nexport function TvChannelsView(props: TvChannelsViewProps): JSX.Element {\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 const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const instanceRegion = currentUser.data?.instanceRegion;\n\n const { setRegion } = useSelectedRegion();\n const { liteUpgradeTypeCustomer } = useSettings(null);\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, channels ]);\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n const dataLoaded = (\n region.hasCompleted &&\n regions.hasCompleted &&\n dateRange.hasCompleted &&\n channels.hasCompleted &&\n currentUser.hasCompleted\n );\n\n const regionInfo = getRegionInfo(instanceRegion);\n\n return (\n <>\n <TvSearchBar region={region.data} />\n\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='channels'\n currentRegion={region.data}\n showTvGuide={!!liteUpgradeTypeCustomer}\n config={config.data}\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 <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n {dataLoaded ? (\n <>\n <div className='row mb-2'>\n {!!regionInfo.requestProgram &&\n <TvChannelCard\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.REQUEST_PROGRAM,\n args: [props.region]\n }}\n logoUrl={regionInfo.logo}\n name={getPhrase('requestProgram')}\n className={regionInfo.bgColor}\n />\n }\n {channels.data.map((channel, index) => {\n return (\n <TvChannelCard\n key={index}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.CHANNEL,\n args: [ channel.region, channel.id ],\n params: {\n region: channel.region !== props.region ? props.region : null\n }\n }}\n logoUrl={channel.logoUrl}\n name={channel.displayName}\n />\n );\n })}\n </div>\n </>\n ) : <PartialCardRow cards={20} />}\n \n\n <TvRegionSelectMap\n instanceRegion={instanceRegion}\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 </>\n );\n}"],"names":["TvChannelCard","props","styles","jsxs","AppLink","jsx","PartialRow","PartialCardRow","Fragment","_","index","namespace","TvRegionSelectMap","regionInfo","getRegionInfo","Text","region","UserAction","EntityType","LocationContext","TvDescriptor","getPhrase","LanguageService","TvChannelsView","Flight.useBasicFetch","TvRequests","dateRange","regions","config","ConfigRequests","channels","currentUser","UserRequests","instanceRegion","_a","setRegion","useSelectedRegion","liteUpgradeTypeCustomer","useSettings","useHandleRegionError","useHandleObjectError","useSetPageMetadata","dataLoaded","TvSearchBar","TvTabs","TvRegionSelect","AppChannels","Actions","TvInfoAlert","channel"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e,ak as q,al as x,am as P,B as y,R as E,aB as S,a as N,b as B,ar as V,aq as I,aj as M,a3 as b,aT as O,l as D,ad as U,ae as W}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{j as e,ak as q,al as x,am as P,B as y,R as E,aB as S,a as N,b as B,ar as V,aq as I,aj as M,a3 as b,aT as O,l as D,ad as U,ae as W}from"./app-DIXL6Xww.js";import{F,S as $}from"./B0F-zuCm.chunk.js";import{u as G,I as Q,P as Z}from"./NuQ4YL4o.chunk.js";import{h as w}from"./NgXKdsdO.chunk.js";import{u as z}from"./DO5O1Cbr.chunk.js";import{u as J}from"./BLzBP6Wz.chunk.js";import{T as K,a as X}from"./DUhtYhkt.chunk.js";import{T as f}from"./C1ZMk5wM.chunk.js";import{u as Y}from"./ERJS4wRT.chunk.js";import{u as ee}from"./C7EM5k6B.chunk.js";import{u as te}from"./C3y5p8CZ.chunk.js";import{A as ae}from"./BljWHlhm.chunk.js";import{B as se,a as re}from"./4J0Xi0Li.chunk.js";import{B as ie}from"./C_4wt9AF.chunk.js";import{B as ne}from"./Bf6VCMqm.chunk.js";import{I as oe,a as le}from"./Da25i9yA.chunk.js";import{T as me}from"./D6ZrWp-l.chunk.js";import{T as ce}from"./DE1BrYZL.chunk.js";import{T as de}from"./DT4IRGxK.chunk.js";import{t as A}from"./DoKxE03f.chunk.js";import"./Cfz-NLA8.chunk.js";import"./BgJkDMpd.chunk.js";import"./BlIARVZO.chunk.js";import"./3TcDzXoX.chunk.js";import"./DBVjri4c.chunk.js";import"./Dn33djw5.chunk.js";import"./DWvjreQC.chunk.js";import"./B70FMVao.chunk.js";import"./DcxTi_y6.chunk.js";import"./_sYSSSUN.chunk.js";import"./rOIj7KLN.chunk.js";import"./yublbxR_.chunk.js";import"./BlDVEZsX.chunk.js";import"./DhQH7eoo.chunk.js";const pe="tv.searchResultsEmptyState";function he(i){return e.jsx(q.Provider,{value:pe,children:e.jsxs(x,{children:[e.jsx(x.Image,{src:P.EmptyStates.SEARCH}),e.jsx(x.Heading,{children:i.query?e.jsx(y,{phrase:"headingWithQuery",options:{query:i.query}}):e.jsx(y,{phrase:"headingWithoutQuery"})}),e.jsx(x.Info,{children:e.jsx(y,{phrase:"info"})})]})})}const ue="_highlight_107l1_1",ge="_badgeOverlay_107l1_8",H={highlight:ue,badgeOverlay:ge};function R(i,t){const r=new RegExp(t,"gi");return i.replace(r,c=>`<span class=${H.highlight}>${c}</span>`)}function xe(i){var l,g,p;const{program:t,query:r,region:c,getVideoActions:j}=i,[a,d]=E.useState(!1),n={application:B.TV,action:N.Tv.PREVIEW,args:[c.code,t.id]},u=A(t.startTime,t.timeZone),o=A(t.stopTime,t.timeZone),T=Math.abs(S.diffBetween(u,o,"milliseconds"));return e.jsxs("div",{className:"row gx-3 mb-3",children:[e.jsx("div",{className:"col-3 flex-column align-items-flex-start pe-2",children:e.jsx("div",{className:"rounded rounded-3 overflow-hidden",children:e.jsxs(ne,{imageType:V.Thumbnails,data:t.thumbnailUrl,appLink:n,children:[e.jsx(oe,{type:le.Video}),e.jsx("div",{className:H.badgeOverlay,children:e.jsx(se,{type:re.DurationApproximate,data:T})})]})})}),e.jsxs("div",{className:"col-9 pb-2",children:[e.jsx(ae,{actions:j(t),className:"float-end mt-n1",actionsDropdownClassName:"btn btn-link ms-1"}),e.jsx(I,{appLink:n,children:e.jsx("h5",{className:"h4 mb-1 align-middle text-dark text-truncate",title:t.title??"",children:e.jsx("span",{dangerouslySetInnerHTML:{__html:R(t.title,r)}})})}),e.jsxs(ie,{className:"mb-1",children:[t.channelLogoUrl&&e.jsx(ce,{logoUrl:t.channelLogoUrl,className:"me-1",small:!0}),e.jsx(de,{program:t,className:"me-1",showDate:!0,showEndTime:!0}),t.hasAdsFree&&e.jsx(me,{small:!0})]}),e.jsx("div",{className:"mb-1",children:e.jsx("span",{dangerouslySetInnerHTML:{__html:R(t.description,r)}})}),!!((l=t.subtitleHits)!=null&&l.length)&&e.jsxs("div",{children:[(g=t.subtitleHits)==null?void 0:g.map(((m,h)=>!a&&h>1?e.jsx(E.Fragment,{},h):e.jsxs(I,{appLink:{...n,args:[...n.args],params:{currentTime:m.hitStartTime/1e3}},className:"d-block text-dark",children:[e.jsxs("span",{className:"fw-semibold",children:["[",S.format(S.add(u,m.hitStartTime,"milliseconds"),"h:mm:ss a"),"]"]})," ",e.jsx("span",{dangerouslySetInnerHTML:{__html:R(m.srtFragment,r)}})]},h))),!a&&((p=t.subtitleHits)==null?void 0:p.length)>2&&e.jsx("div",{className:"text-info cursor-pointer",onClick:()=>d(!0),children:"Show more"})]})]})]})}fe.defaultProps={queryParams:{}};function fe(i){var L;const{queryParams:t}=i,{query:r}=t,c=M(),j=z(),a=b(f.region(i.region)),d=b(f.regions()),n=b(a.data&&f.channels(a.data.code));a.hasCompleted&&!a.data&&w(O.BadRequest);const{setRegion:u}=te();ee(a),J([d,n]),D({title:r??""});const{items:o,hasMore:T,isFetching:l,nextCursor:g}=G(a.data&&p,m,h,s=>s.results,s=>s.page*25>s.totalNumber?null:(s.page+1).toString());function p(s){return f.search(a.data.code,t,+s)}function m(s){return c(p(s))}function h(s,v){if(s===1)return w(v);j.error("Something went wrong")}const k=Y("video-list",a.data),C=a.hasCompleted&&d.hasCompleted&&n.hasCompleted,_=[F.TvChannel(n.data),F.TvDateBroadcast(),F.TvFields()];return e.jsxs(e.Fragment,{children:[e.jsx(K,{query:r,region:a.data}),e.jsxs("div",{className:"d-flex justify-content-between mb-2",children:[e.jsx($,{queryParams:t,mainFilters:_,analyticsOptions:{entity:W.SearchResults,location:U.SearchFilters},appLink:{application:B.TV,action:N.Tv.SEARCH,args:[(L=a.data)==null?void 0:L.code]},hideDivider:!0,isFetchingOptions:!C}),e.jsx(X,{currentRegion:a.data,regions:d.data,appLink:{application:B.TV,action:N.Tv.SEARCH,params:{query:r}},onClick:u})]}),C&&e.jsx(e.Fragment,{children:o!=null&&o.length?e.jsxs(e.Fragment,{children:[o.map((s,v)=>e.jsx(xe,{program:s,query:r,region:a.data,getVideoActions:k},v)),(T||l)&&e.jsx(Q,{isFetching:l,fetchNext:m,nextCursor:g})]}):e.jsx(e.Fragment,{children:l?e.jsx("div",{className:"m-n2",children:e.jsx(Z,{})}):e.jsx(he,{query:r})})})]})}export{fe as TvSearchResultsView};
|
|
2
|
+
//# sourceMappingURL=CJIFCVgE.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"B8OodjhB.chunk.js","sources":["../../src/apps/tv/views/tv-search-results/empty-state/TvSearchEmptyState.tsx","../../src/apps/tv/views/tv-search-results/components/tv-search-result-item/TvSearchResultItem.tsx","../../src/apps/tv/views/tv-search-results/TvSearchResultsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\n\nconst namespace = 'tv.searchResultsEmptyState';\n\ninterface TvSearchResultsStateProps {\n query?: string;\n}\n\nexport function TvSearchResultsState(props: TvSearchResultsStateProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.SEARCH} />\n\n <EmptyState.Heading>\n {props.query\n ? <Text phrase='headingWithQuery' options={{ query: props.query }} />\n : <Text phrase='headingWithoutQuery' />\n }\n </EmptyState.Heading>\n\n <EmptyState.Info>\n <Text phrase='info' />\n </EmptyState.Info>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ActionOptions, Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageType } from 'libs/shared/enums/Images';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvAdFreeBadge } from 'apps/tv/components/tv-ad-free-badge/TvAdFreeBadge';\nimport { TvChannelBadge } from 'apps/tv/components/tv-channel-badge/TvChannelBadge';\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { TvSearchResult } from 'apps/tv/interfaces/models/TvSearchResult';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\n\nimport styles from './tv-search-result-item.module.scss';\n\nfunction highlightText(text: string, query: string): string {\n const regex = new RegExp(query, 'gi');\n return text.replace(regex, match => `<span class=${styles.highlight}>${match}</span>`);\n}\n\ninterface TvSearchResultItemProps {\n query: string;\n program: TvSearchResult;\n region: TvRegion;\n getVideoActions: (video: TvProgram) => ActionOptions[];\n}\n\nexport function TvSearchResultItem(props: TvSearchResultItemProps): JSX.Element {\n const { program, query, region, getVideoActions } = props;\n\n const [ showMore, setShowMore ] = React.useState(false);\n\n const appLink = {\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ region.code, program.id ]\n };\n\n const startTime = toLocalTime(program.startTime, program.timeZone);\n const stopTime = toLocalTime(program.stopTime, program.timeZone);\n const diff = Math.abs(DateHelper.diffBetween(startTime, stopTime, 'milliseconds'));\n\n return (\n <div className='row gx-3 mb-3'>\n <div className='col-3 flex-column align-items-flex-start pe-2'>\n <div className='rounded rounded-3 overflow-hidden'>\n <BaseImage\n imageType={ImageType.Thumbnails}\n data={program.thumbnailUrl}\n appLink={appLink}\n >\n <ImageFallback type={ImageFallbackType.Video} />\n\n <div className={styles.badgeOverlay}>\n <Badge\n type={BadgeType.DurationApproximate}\n data={diff}\n />\n </div>\n </BaseImage>\n </div>\n </div>\n <div className='col-9 pb-2'>\n <ActionsComponent\n actions={getVideoActions(program as TvProgram)}\n className='float-end mt-n1'\n actionsDropdownClassName='btn btn-link ms-1'\n />\n <AppLink appLink={appLink}>\n <h5 className='h4 mb-1 align-middle text-dark text-truncate' title={program.title ?? ''}>\n <span dangerouslySetInnerHTML={{\n __html: highlightText(program.title, query)\n }}></span>\n </h5>\n </AppLink>\n <BadgeListContainer className='mb-1'>\n {program.channelLogoUrl && <TvChannelBadge logoUrl={program.channelLogoUrl} className='me-1' small />}\n <TvProgramTimeBadge program={program as TvProgram} className='me-1' showDate showEndTime />\n {program.hasAdsFree && <TvAdFreeBadge small />}\n </BadgeListContainer>\n <div className='mb-1'>\n <span dangerouslySetInnerHTML={{\n __html: highlightText(program.description, query)\n }}></span>\n </div>\n {!!program.subtitleHits?.length &&\n <div>\n {program.subtitleHits?.map(((hit, index) => {\n if (!showMore && index > 1)\n return <React.Fragment key={index} />;\n\n return (\n <AppLink\n key={index}\n appLink={{\n ...appLink,\n args: [...appLink.args],\n params: {\n currentTime: hit.hitStartTime / 1000\n }\n }}\n className='d-block text-dark'\n >\n <span className='fw-semibold'>\n [{DateHelper.format(DateHelper.add(startTime, hit.hitStartTime, 'milliseconds'), 'h:mm:ss a')}]\n </span>\n \n <span dangerouslySetInnerHTML={{\n __html: highlightText(hit.srtFragment, query)\n }}></span>\n </AppLink>\n );\n }))}\n {!showMore && program.subtitleHits?.length > 2 && <div className='text-info cursor-pointer' onClick={() => setShowMore(true)}>Show more</div>}\n </div>\n }\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useGetTvActions } from 'apps/tv/hooks/useGetTvActions';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { TvSearchResult } from 'apps/tv/interfaces/models/TvSearchResult';\nimport { TvSearchResponse } from 'apps/tv/interfaces/responses/TvSearchResponse';\nimport { TvSearchResultsState } from 'apps/tv/views/tv-search-results/empty-state/TvSearchEmptyState';\n\nimport { TvSearchResultItem } from './components/tv-search-result-item/TvSearchResultItem';\n\ninterface TvSearchResultsViewProps {\n region: string;\n queryParams: HashObject;\n}\n\nTvSearchResultsView.defaultProps = {\n queryParams: {}\n};\n\nexport function TvSearchResultsView(props: TvSearchResultsViewProps): JSX.Element {\n const { queryParams } = props;\n const { query } = queryParams;\n\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n\n if (region.hasCompleted && !region.data) {\n handleHttpError(HttpStatus.BadRequest);\n }\n\n const { setRegion } = useSelectedRegion();\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, channels ]);\n\n useSetPageMetadata({ title: query ?? '' });\n\n const {\n items: programs,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<TvSearchResult, TvSearchResponse>(\n region.data && getRequest,\n fetchNext,\n onError,\n response => response.results,\n response => {\n if (response.page * 25 > response.totalNumber)\n return null;\n\n return (response.page + 1).toString();\n }\n );\n\n function getRequest(cursor?: string): Flight.Request {\n return TvRequests.search(\n region.data.code,\n queryParams,\n +cursor\n );\n }\n\n function fetchNext(cursor?: string): void {\n return fetch(getRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error('Something went wrong');\n }\n\n const getVideoActions = useGetTvActions('video-list', region.data);\n\n const dataLoaded = region.hasCompleted && regions.hasCompleted && channels.hasCompleted;\n\n const mainFilters = [\n Filters.TvChannel(channels.data),\n Filters.TvDateBroadcast(),\n Filters.TvFields()\n ];\n\n return (\n <>\n <TvSearchBar query={query} region={region.data} />\n\n <div className='d-flex justify-content-between mb-2'>\n <SearchFilters\n queryParams={queryParams}\n mainFilters={mainFilters}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.SearchFilters\n }}\n appLink={{ application: AppChannels.TV, action: Actions.Tv.SEARCH, args: [region.data?.code]}}\n hideDivider\n isFetchingOptions={!dataLoaded}\n />\n\n <TvRegionSelect\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.SEARCH,\n params: { query: query }\n }}\n onClick={setRegion}\n />\n </div>\n\n {dataLoaded && (\n <>\n {programs?.length ? (\n <>\n {programs.map((program, index) => {\n return (\n <TvSearchResultItem\n key={index}\n program={program}\n query={query}\n region={region.data}\n getVideoActions={getVideoActions}\n />\n );\n })}\n {(hasMore || isFetching) && (\n <InfiniteScrollFooter\n isFetching={isFetching}\n fetchNext={fetchNext}\n nextCursor={nextCursor}\n />\n )}\n </>\n ) : (\n <>\n {isFetching ? (\n <div className='m-n2'>\n <PartialVideoList />\n </div>\n ) : <TvSearchResultsState query={query} />}\n </>\n )}\n </>\n )}\n </>\n );\n}"],"names":["namespace","TvSearchResultsState","props","LanguageNamespaceContext","EmptyState","jsx","ImageUrls","Text","highlightText","text","query","regex","match","styles","TvSearchResultItem","program","region","getVideoActions","showMore","setShowMore","React","appLink","AppChannels","Actions","startTime","toLocalTime","stopTime","diff","DateHelper","jsxs","BaseImage","ImageType","ImageFallback","ImageFallbackType","Badge","BadgeType","ActionsComponent","AppLink","BadgeListContainer","TvChannelBadge","TvProgramTimeBadge","TvAdFreeBadge","_a","_b","hit","index","_c","TvSearchResultsView","queryParams","fetch","Flight.useGetFetch","alerts","useAlerts","Flight.useBasicFetch","TvRequests","regions","channels","handleHttpError","HttpStatus","setRegion","useSelectedRegion","useHandleRegionError","useHandleObjectError","useSetPageMetadata","programs","hasMore","isFetching","nextCursor","useInfiniteList","getRequest","fetchNext","onError","response","cursor","pageNumber","httpStatus","useGetTvActions","dataLoaded","mainFilters","Filters","Fragment","TvSearchBar","SearchFilters","EntityType","LocationContext","TvRegionSelect","InfiniteScrollFooter","PartialVideoList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CJIFCVgE.chunk.js","sources":["../../src/apps/tv/views/tv-search-results/empty-state/TvSearchEmptyState.tsx","../../src/apps/tv/views/tv-search-results/components/tv-search-result-item/TvSearchResultItem.tsx","../../src/apps/tv/views/tv-search-results/TvSearchResultsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\n\nconst namespace = 'tv.searchResultsEmptyState';\n\ninterface TvSearchResultsStateProps {\n query?: string;\n}\n\nexport function TvSearchResultsState(props: TvSearchResultsStateProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.SEARCH} />\n\n <EmptyState.Heading>\n {props.query\n ? <Text phrase='headingWithQuery' options={{ query: props.query }} />\n : <Text phrase='headingWithoutQuery' />\n }\n </EmptyState.Heading>\n\n <EmptyState.Info>\n <Text phrase='info' />\n </EmptyState.Info>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ActionOptions, Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageType } from 'libs/shared/enums/Images';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvAdFreeBadge } from 'apps/tv/components/tv-ad-free-badge/TvAdFreeBadge';\nimport { TvChannelBadge } from 'apps/tv/components/tv-channel-badge/TvChannelBadge';\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { TvSearchResult } from 'apps/tv/interfaces/models/TvSearchResult';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\n\nimport styles from './tv-search-result-item.module.scss';\n\nfunction highlightText(text: string, query: string): string {\n const regex = new RegExp(query, 'gi');\n return text.replace(regex, match => `<span class=${styles.highlight}>${match}</span>`);\n}\n\ninterface TvSearchResultItemProps {\n query: string;\n program: TvSearchResult;\n region: TvRegion;\n getVideoActions: (video: TvProgram) => ActionOptions[];\n}\n\nexport function TvSearchResultItem(props: TvSearchResultItemProps): JSX.Element {\n const { program, query, region, getVideoActions } = props;\n\n const [ showMore, setShowMore ] = React.useState(false);\n\n const appLink = {\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ region.code, program.id ]\n };\n\n const startTime = toLocalTime(program.startTime, program.timeZone);\n const stopTime = toLocalTime(program.stopTime, program.timeZone);\n const diff = Math.abs(DateHelper.diffBetween(startTime, stopTime, 'milliseconds'));\n\n return (\n <div className='row gx-3 mb-3'>\n <div className='col-3 flex-column align-items-flex-start pe-2'>\n <div className='rounded rounded-3 overflow-hidden'>\n <BaseImage\n imageType={ImageType.Thumbnails}\n data={program.thumbnailUrl}\n appLink={appLink}\n >\n <ImageFallback type={ImageFallbackType.Video} />\n\n <div className={styles.badgeOverlay}>\n <Badge\n type={BadgeType.DurationApproximate}\n data={diff}\n />\n </div>\n </BaseImage>\n </div>\n </div>\n <div className='col-9 pb-2'>\n <ActionsComponent\n actions={getVideoActions(program as TvProgram)}\n className='float-end mt-n1'\n actionsDropdownClassName='btn btn-link ms-1'\n />\n <AppLink appLink={appLink}>\n <h5 className='h4 mb-1 align-middle text-dark text-truncate' title={program.title ?? ''}>\n <span dangerouslySetInnerHTML={{\n __html: highlightText(program.title, query)\n }}></span>\n </h5>\n </AppLink>\n <BadgeListContainer className='mb-1'>\n {program.channelLogoUrl && <TvChannelBadge logoUrl={program.channelLogoUrl} className='me-1' small />}\n <TvProgramTimeBadge program={program as TvProgram} className='me-1' showDate showEndTime />\n {program.hasAdsFree && <TvAdFreeBadge small />}\n </BadgeListContainer>\n <div className='mb-1'>\n <span dangerouslySetInnerHTML={{\n __html: highlightText(program.description, query)\n }}></span>\n </div>\n {!!program.subtitleHits?.length &&\n <div>\n {program.subtitleHits?.map(((hit, index) => {\n if (!showMore && index > 1)\n return <React.Fragment key={index} />;\n\n return (\n <AppLink\n key={index}\n appLink={{\n ...appLink,\n args: [...appLink.args],\n params: {\n currentTime: hit.hitStartTime / 1000\n }\n }}\n className='d-block text-dark'\n >\n <span className='fw-semibold'>\n [{DateHelper.format(DateHelper.add(startTime, hit.hitStartTime, 'milliseconds'), 'h:mm:ss a')}]\n </span>\n \n <span dangerouslySetInnerHTML={{\n __html: highlightText(hit.srtFragment, query)\n }}></span>\n </AppLink>\n );\n }))}\n {!showMore && program.subtitleHits?.length > 2 && <div className='text-info cursor-pointer' onClick={() => setShowMore(true)}>Show more</div>}\n </div>\n }\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useGetTvActions } from 'apps/tv/hooks/useGetTvActions';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { TvSearchResult } from 'apps/tv/interfaces/models/TvSearchResult';\nimport { TvSearchResponse } from 'apps/tv/interfaces/responses/TvSearchResponse';\nimport { TvSearchResultsState } from 'apps/tv/views/tv-search-results/empty-state/TvSearchEmptyState';\n\nimport { TvSearchResultItem } from './components/tv-search-result-item/TvSearchResultItem';\n\ninterface TvSearchResultsViewProps {\n region: string;\n queryParams: HashObject;\n}\n\nTvSearchResultsView.defaultProps = {\n queryParams: {}\n};\n\nexport function TvSearchResultsView(props: TvSearchResultsViewProps): JSX.Element {\n const { queryParams } = props;\n const { query } = queryParams;\n\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n\n if (region.hasCompleted && !region.data) {\n handleHttpError(HttpStatus.BadRequest);\n }\n\n const { setRegion } = useSelectedRegion();\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, channels ]);\n\n useSetPageMetadata({ title: query ?? '' });\n\n const {\n items: programs,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<TvSearchResult, TvSearchResponse>(\n region.data && getRequest,\n fetchNext,\n onError,\n response => response.results,\n response => {\n if (response.page * 25 > response.totalNumber)\n return null;\n\n return (response.page + 1).toString();\n }\n );\n\n function getRequest(cursor?: string): Flight.Request {\n return TvRequests.search(\n region.data.code,\n queryParams,\n +cursor\n );\n }\n\n function fetchNext(cursor?: string): void {\n return fetch(getRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error('Something went wrong');\n }\n\n const getVideoActions = useGetTvActions('video-list', region.data);\n\n const dataLoaded = region.hasCompleted && regions.hasCompleted && channels.hasCompleted;\n\n const mainFilters = [\n Filters.TvChannel(channels.data),\n Filters.TvDateBroadcast(),\n Filters.TvFields()\n ];\n\n return (\n <>\n <TvSearchBar query={query} region={region.data} />\n\n <div className='d-flex justify-content-between mb-2'>\n <SearchFilters\n queryParams={queryParams}\n mainFilters={mainFilters}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.SearchFilters\n }}\n appLink={{ application: AppChannels.TV, action: Actions.Tv.SEARCH, args: [region.data?.code]}}\n hideDivider\n isFetchingOptions={!dataLoaded}\n />\n\n <TvRegionSelect\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.SEARCH,\n params: { query: query }\n }}\n onClick={setRegion}\n />\n </div>\n\n {dataLoaded && (\n <>\n {programs?.length ? (\n <>\n {programs.map((program, index) => {\n return (\n <TvSearchResultItem\n key={index}\n program={program}\n query={query}\n region={region.data}\n getVideoActions={getVideoActions}\n />\n );\n })}\n {(hasMore || isFetching) && (\n <InfiniteScrollFooter\n isFetching={isFetching}\n fetchNext={fetchNext}\n nextCursor={nextCursor}\n />\n )}\n </>\n ) : (\n <>\n {isFetching ? (\n <div className='m-n2'>\n <PartialVideoList />\n </div>\n ) : <TvSearchResultsState query={query} />}\n </>\n )}\n </>\n )}\n </>\n );\n}"],"names":["namespace","TvSearchResultsState","props","LanguageNamespaceContext","EmptyState","jsx","ImageUrls","Text","highlightText","text","query","regex","match","styles","TvSearchResultItem","program","region","getVideoActions","showMore","setShowMore","React","appLink","AppChannels","Actions","startTime","toLocalTime","stopTime","diff","DateHelper","jsxs","BaseImage","ImageType","ImageFallback","ImageFallbackType","Badge","BadgeType","ActionsComponent","AppLink","BadgeListContainer","TvChannelBadge","TvProgramTimeBadge","TvAdFreeBadge","_a","_b","hit","index","_c","TvSearchResultsView","queryParams","fetch","Flight.useGetFetch","alerts","useAlerts","Flight.useBasicFetch","TvRequests","regions","channels","handleHttpError","HttpStatus","setRegion","useSelectedRegion","useHandleRegionError","useHandleObjectError","useSetPageMetadata","programs","hasMore","isFetching","nextCursor","useInfiniteList","getRequest","fetchNext","onError","response","cursor","pageNumber","httpStatus","useGetTvActions","dataLoaded","mainFilters","Filters","Fragment","TvSearchBar","SearchFilters","EntityType","LocationContext","TvRegionSelect","InfiniteScrollFooter","PartialVideoList"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{aL as F,j as e,B as h,aM as k,L as j,R as y,w as B,aN as T,aB as D,a1 as I,x as V,a2 as $,a3 as x,P as M,aD as U,a5 as Y,A as H,ab as O,ac as G,ad as W,aI as z,ae as Q,af as _}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{aL as F,j as e,B as h,aM as k,L as j,R as y,w as B,aN as T,aB as D,a1 as I,x as V,a2 as $,a3 as x,P as M,aD as U,a5 as Y,A as H,ab as O,ac as G,ad as W,aI as z,ae as Q,af as _}from"./app-DIXL6Xww.js";import{S as J}from"./DajpMvCp.chunk.js";import{F as K}from"./DJIcjqQb.chunk.js";import{l as m,a as X,F as f}from"./04pgOdRO.chunk.js";import{F as Z}from"./DRm_bkxA.chunk.js";import{B as ee}from"./BgJkDMpd.chunk.js";import{R as ae}from"./QfCSKVqV.chunk.js";import{V as te}from"./BVLYrDIr.chunk.js";import{u as se}from"./DO5O1Cbr.chunk.js";import{u as re}from"./BsOHikPe.chunk.js";import{E as ne}from"./Dfj7IDd2.chunk.js";import{u as oe}from"./Bh24QUEJ.chunk.js";import"./BBHWPp1j.chunk.js";import"./BlDVEZsX.chunk.js";import"./pkzD5BEm.chunk.js";import"./DWvjreQC.chunk.js";const L="shared.flagRemovalRadio",p=j.encloseNamespace(L);function ie(){const t=F();function l(o){t.setFieldValue("suggestion",o)}function a(){return[p("nonEducational"),p("poorQuality"),p("offensive"),p("copyright"),p("ageAppropriate"),p("audio"),p("other")]}return e.jsxs("div",{className:"mb-3",children:[e.jsxs("label",{className:"form-label",children:[e.jsx(h,{namespace:L,phrase:"flagRemovalReasonLabel"}),e.jsx("span",{className:"text-danger",children:"*"})]}),a().map((o,d)=>e.jsx(k.Check,{type:"radio",label:o,name:o,id:`flag-${d}`,onChange:()=>l(o),checked:t.values.suggestion===o,className:"mb-2"},d))]})}const C="shared.suggestEditForm";function le(t){const l=F(),[a,o]=y.useState(),[d,n]=y.useState(!1);function g(r){const u=(l==null?void 0:l.values.property)&&t.metadataValue===r.name;l.setFieldValue("suggestion",u?"":r.name),o(r),n(u)}return e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label",children:e.jsx(h,{namespace:C,phrase:"suggestLabel"})}),e.jsx("div",{"aria-describedby":"suggestEditRatingError",children:e.jsx(ee,{children:t.ratings.map(r=>e.jsx(B,{onClick:()=>g(r),className:`btn ${r.id===(a==null?void 0:a.id)?"btn-dark":"btn-outline-dark"}`,children:r.code},r.id))})}),d&&e.jsx(Z,{name:"suggestEditRating",children:e.jsx(h,{namespace:C,phrase:"ratingError"})})]})}const ce="shared.suggestEditValidation",S=j.encloseNamespace(ce);function de(){return m.object().shape({property:m.string().required(S("metadata")),reason:m.string().when("property",{is:t=>t==="FlagRemoval",then:m.string().notRequired(),otherwise:m.string().required(S("reason"))}),suggestion:m.string().required(S("suggestion")),currentValue:m.string()})}const b={VideoTitle:{name:"video title",property:"name"},Description:{name:"description",property:"description"},Rating:{name:"rating",property:"rating.name"},SeriesTitle:{name:"series title",property:"series.name"},Season:{name:"season number",property:"season.number"},EpisodeNumber:{name:"episode number",property:"episodeNumber"},BroadcastDate:{name:"broadcast date",property:"dateBroadcast"},Channel:{name:"channel",property:"channel.name"},ProductionYear:{name:"production year",property:"productionYear"},Distributors:{name:"distributors",property:"distributors",collection:!0},ProductionCompanies:{name:"production companies",property:"productionCompanies",collection:!0},Directors:{name:"directors",property:"directors",collection:!0},Producers:{name:"producers",property:"producers",collection:!0},FlagRemoval:{name:"flag for removal"},Other:{name:"other"}},N="shared.suggestEditForm",i=j.encloseNamespace(N),ue={property:"",suggestion:"",reason:"",currentValue:""};function me(t){var r,u;const l=(r=t.ratings)==null?void 0:r.filter(s=>s.code),a=F(),[o,d]=y.useState(),n=a==null?void 0:a.values.property;y.useEffect(()=>{const s=g();a.setValues({property:n,reason:"",suggestion:"",currentValue:s||""}),a.setTouched({}),d(s)},[n]);function g(){const s=b[n];if(!s||!s.property)return null;let c=T(t.video,s.property);if(!c||s.collection&&!c.data.length)return i("none");switch(s.collection&&(c=c.data.map(R=>R.name).join(", ")),n){case"BroadcastDate":return D.format(c,"D MMMM YYYY");default:return c}}return e.jsxs(I,{children:[e.jsxs(f,{as:"select",label:i("metadataLabel"),id:"property",name:"property",value:n,className:"text-capitalize",showRequiredStar:!0,children:[e.jsx("option",{value:"",children:i("metadataPlaceholder")}),Object.keys(b).map((s,c)=>e.jsx("option",{value:s,children:b[s].name},c))]}),n&&e.jsxs(e.Fragment,{children:[o&&e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"fw-semibold mb-0",children:[e.jsx(h,{namespace:N,phrase:"currentValueLabel"})," ",e.jsx("span",{children:(u=b[n])==null?void 0:u.name})]}),e.jsx("p",{children:o})]}),n==="Rating"&&e.jsx(le,{ratings:l,metadataValue:o}),n==="FlagRemoval"&&e.jsx(ie,{}),n!=="Rating"&&n!=="FlagRemoval"&&e.jsx(f,{label:i("suggestLabel"),placeholder:i("suggestPlaceholder"),type:"text",id:"suggestion",name:"suggestion",value:a==null?void 0:a.values.suggestion,showRequiredStar:!0}),n==="FlagRemoval"?e.jsx(f,{label:i("flagRemovalCommentsLabel"),placeholder:i("flagRemovalCommentsPlaceholder"),type:"text",id:"reason",name:"reason",value:a==null?void 0:a.values.reason}):e.jsx(f,{label:i("reasonLabel"),placeholder:i("reasonPlaceholder"),type:"text",id:"reason",name:"reason",value:a==null?void 0:a.values.reason,showRequiredStar:!0})]}),e.jsxs(V,{children:[e.jsx(V.Cancel,{text:i("cancel"),onClick:t.closePopup,variant:"link"}),e.jsx(K,{variant:"dark",submitText:i("submit")})]})]})}function pe(t){return e.jsx(X,{initialValues:ue,validationSchema:de(),onSubmit:t.onClickSubmit,children:e.jsx(me,{...t})})}const w="exchange.suggestEdit",v=j.encloseNamespace(w);function Pe(t){const l=$(),a=se(),{loading:o,handleGenerateReportError:d}=re(),n=x(U.config()),g=x(Y.currentUser()),r=x(te.video(t.videoId)),u=x(ae.ratings()),{previewContext:s,clearPreviewContext:c}=oe(t.videoId,!1);async function R(P,q){try{await l(ne.suggestEdit(r.data.id,P)),a.success(v("success")),E(),O.logUserAction({id:r.data.id,name:r.data.name},{actionType:_.Submit,entity:Q.Video,descriptor:z.SuggestEdit,location:W.Popup,workflowPhase:G.Complete})}catch(A){d(A,v("error"),v("noEmailError"))}finally{q()}}function E(){t.closePopup(),s!=null&&s.appLink&&(J.preventScrollTop(),H.trigger(s.appLink),c())}return n.hasCompleted&&g.hasCompleted&&r.hasCompleted&&u.hasCompleted?e.jsxs(M,{title:v("title"),closePopup:E,showLoadingSpinner:o,children:[e.jsx("p",{children:e.jsx(h,{namespace:w,phrase:"description"})}),e.jsx(pe,{video:r.data,ratings:u.data,closePopup:E,onClickSubmit:R})]}):e.jsx(e.Fragment,{})}export{Pe as ExchangeSuggestEditView};
|
|
2
|
+
//# sourceMappingURL=CKvSiIEq.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlSWUMP3.chunk.js","sources":["../../../../libs/shared/src/components/suggest-edit-form/suggest-edit-flag-removal/SuggestEditFlagRemoval.tsx","../../../../libs/shared/src/components/suggest-edit-form/suggest-edit-rating-selector/suggest-edit-rating-selector.tsx","../../../../libs/shared/src/components/suggest-edit-form/validation/SuggestEditValidation.ts","../../../../libs/shared/src/components/suggest-edit-form/SuggestEditMetadataTypes.ts","../../../../libs/shared/src/components/suggest-edit-form/SuggestEditForm.tsx","../../src/apps/exchange/views/exchange-suggest-edit/ExchangeSuggestEditView.tsx"],"sourcesContent":["import React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nconst namespace = 'shared.flagRemovalRadio';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SuggestEditFlagRemoval() {\n const formikProps = useFormikContext<SuggestEditModel>();\n\n function onSelectOption(option: string) {\n formikProps.setFieldValue('suggestion', option);\n }\n\n function flagRemovalRadioOptions() {\n return [\n getPhrase('nonEducational'),\n getPhrase('poorQuality'),\n getPhrase('offensive'),\n getPhrase('copyright'),\n getPhrase('ageAppropriate'),\n getPhrase('audio'),\n getPhrase('other')\n ];\n }\n\n return (\n <div className='mb-3'>\n <label className='form-label'>\n <Text namespace={namespace} phrase='flagRemovalReasonLabel' />\n <span className='text-danger'>*</span>\n </label>\n {flagRemovalRadioOptions().map((option, index) => (\n <Form.Check\n type='radio'\n key={index}\n label={option}\n name={option}\n id={`flag-${index}`}\n onChange={() => onSelectOption(option)}\n checked={formikProps.values.suggestion === option}\n className='mb-2'\n />\n ))}\n </div>\n );\n}","import React from 'react';\nimport { ButtonGroup } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { Rating } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nconst namespace = 'shared.suggestEditForm';\n\ninterface SuggestEditRatingSelectorProps {\n ratings: Rating[];\n metadataValue: string\n}\n\nexport function SuggestEditRatingSelector(props: SuggestEditRatingSelectorProps) {\n const formikProps = useFormikContext<SuggestEditModel>();\n\n const [ selectedRating, setSelectedRating ] = React.useState<Rating>();\n const [ isRatingInvalid, setIsRatingInvalid ] = React.useState<boolean>(false);\n \n function onRatingSelect(rating: Rating) {\n const isRatingInvalid = formikProps?.values.property && props.metadataValue === rating.name;\n formikProps.setFieldValue('suggestion', !isRatingInvalid ? rating.name : '');\n setSelectedRating(rating);\n setIsRatingInvalid(isRatingInvalid);\n }\n\n return (\n <div className='form-group'>\n <label className='form-label'><Text namespace={namespace} phrase='suggestLabel' /></label>\n <div aria-describedby='suggestEditRatingError'>\n <ButtonGroup>\n {props.ratings.map(rating => (\n <DivButton key={rating.id} onClick={() => onRatingSelect(rating)} className={`btn ${rating.id === selectedRating?.id ? 'btn-dark' : 'btn-outline-dark'}`}>\n {rating.code}\n </DivButton>\n ))}\n </ButtonGroup>\n </div>\n {isRatingInvalid && <FormFeedback name='suggestEditRating'><Text namespace={namespace} phrase='ratingError' /></FormFeedback>}\n </div>\n );\n}","import { object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'shared.suggestEditValidation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SuggestEditValidation() {\n return object().shape({\n property: string().required((getPhrase('metadata'))),\n reason: string().when('property', {\n is: propertyValue => propertyValue === 'FlagRemoval',\n then: string().notRequired(),\n otherwise: string().required(getPhrase('reason'))\n }),\n suggestion: string().required(getPhrase('suggestion')),\n currentValue: string()\n });\n}","export enum MetadataType {\n VideoTitle = 'video title',\n Description = 'description',\n Rating = 'rating',\n SeriesTitle = 'series title',\n Season = 'season number',\n EpisodeNumber = 'episode number',\n BroadcastDate = 'broadcast date',\n Channel = 'channel',\n ProductionYear = 'production year',\n Distributors = 'distributors',\n ProductionCompanies = 'production companies',\n Directors = 'directors',\n Producers = 'producers',\n FlagRemoval = 'flag for removal',\n Other = 'other'\n}\n\nexport type MetadataTypeKey = keyof typeof MetadataType;\n\nexport type MetadataTypeMap = {\n [K in MetadataTypeKey]: {\n name: MetadataType;\n property?: string;\n collection?: boolean;\n };\n};\n\nexport const MetadataTypes: MetadataTypeMap = {\n VideoTitle: {\n name: MetadataType.VideoTitle,\n property: 'name'\n },\n Description: {\n name: MetadataType.Description,\n property: 'description'\n },\n Rating: {\n name: MetadataType.Rating,\n property: 'rating.name'\n },\n SeriesTitle: {\n name: MetadataType.SeriesTitle,\n property: 'series.name'\n },\n Season: {\n name: MetadataType.Season,\n property: 'season.number'\n },\n EpisodeNumber: {\n name: MetadataType.EpisodeNumber,\n property: 'episodeNumber'\n },\n BroadcastDate: {\n name: MetadataType.BroadcastDate,\n property: 'dateBroadcast'\n },\n Channel: {\n name: MetadataType.Channel,\n property: 'channel.name'\n },\n ProductionYear: {\n name: MetadataType.ProductionYear,\n property: 'productionYear'\n },\n Distributors: {\n name: MetadataType.Distributors,\n property: 'distributors',\n collection: true\n },\n ProductionCompanies: {\n name: MetadataType.ProductionCompanies,\n property: 'productionCompanies',\n collection: true\n },\n Directors: {\n name: MetadataType.Directors,\n property: 'directors',\n collection: true\n },\n Producers: {\n name: MetadataType.Producers,\n property: 'producers',\n collection: true\n },\n FlagRemoval: {\n name: MetadataType.FlagRemoval\n },\n Other: {\n name: MetadataType.Other\n }\n};","import React from 'react';\nimport { Form, useFormikContext } from 'formik';\nimport get from 'lodash/get';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { SuggestEditFlagRemoval } from 'libs/shared/components/suggest-edit-form/suggest-edit-flag-removal/SuggestEditFlagRemoval';\nimport { SuggestEditRatingSelector } from 'libs/shared/components/suggest-edit-form/suggest-edit-rating-selector/suggest-edit-rating-selector';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BaseObject, Rating, Video } from 'libs/shared/interfaces';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nimport { SuggestEditValidation } from './validation/SuggestEditValidation';\nimport { MetadataTypeKey, MetadataTypes } from './SuggestEditMetadataTypes';\n\nconst namespace = 'shared.suggestEditForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst INITIAL_VALUES = {\n property: '',\n suggestion: '',\n reason: '',\n currentValue: ''\n};\n\ninterface SuggestEditFormProps {\n video: Video;\n ratings: Rating[];\n onClickSubmit: (\n data: SuggestEditModel,\n onDone: (options?: FormSubmissionOptions<SuggestEditModel>) => void\n ) => void;\n closePopup: () => void\n}\n\nfunction SuggestEditForm(props: SuggestEditFormProps) {\n const ratings = props.ratings?.filter(rating => rating.code);\n const formikProps = useFormikContext<SuggestEditModel>();\n\n const [ metadataValue, setMetadataValue ] = React.useState<string>();\n\n const metadata = formikProps?.values.property as MetadataTypeKey;\n\n React.useEffect(() => {\n const metadataValue = getMetadataValue();\n formikProps.setValues({\n property: metadata,\n reason: '',\n suggestion: '',\n currentValue: metadataValue || ''\n });\n formikProps.setTouched({});\n setMetadataValue(metadataValue);\n }, [metadata]);\n\n function getMetadataValue(): string {\n const metadataType = MetadataTypes[metadata];\n\n if (!metadataType || !metadataType.property)\n return null;\n\n let currentValue = get(props.video, metadataType.property);\n\n if (!currentValue || (metadataType.collection && !currentValue.data.length))\n return getPhrase('none');\n\n if (metadataType.collection) {\n currentValue = (currentValue.data as BaseObject[]).map(obj => obj.name).join(', ');\n }\n\n switch (metadata) {\n case 'BroadcastDate':\n return DateHelper.format(currentValue, 'D MMMM YYYY');\n default:\n return currentValue;\n }\n }\n\n return (\n <Form>\n <FormField\n as='select'\n label={getPhrase('metadataLabel')}\n id='property'\n name='property'\n value={metadata}\n className='text-capitalize'\n showRequiredStar\n >\n <option value=''>{getPhrase('metadataPlaceholder')}</option>\n {Object.keys(MetadataTypes).map((metadata, index) => (\n <option key={index} value={metadata}>\n {MetadataTypes[metadata as keyof typeof MetadataTypes].name}\n </option>\n ))}\n </FormField>\n\n {metadata &&\n <>\n {metadataValue && (\n <>\n <p className='fw-semibold mb-0'>\n <Text namespace={namespace} phrase='currentValueLabel' /> <span>{MetadataTypes[metadata as MetadataTypeKey]?.name}</span>\n </p>\n <p>{metadataValue}</p>\n </>\n )}\n\n {metadata === 'Rating' && <SuggestEditRatingSelector ratings={ratings} metadataValue={metadataValue} />}\n {metadata === 'FlagRemoval' && <SuggestEditFlagRemoval />}\n {metadata !== 'Rating' && metadata !== 'FlagRemoval' &&\n <FormField\n label={getPhrase('suggestLabel')}\n placeholder={getPhrase('suggestPlaceholder')}\n type='text'\n id='suggestion'\n name='suggestion'\n value={formikProps?.values.suggestion}\n showRequiredStar\n />\n }\n\n {\n metadata === 'FlagRemoval' ? (\n <FormField\n label={getPhrase('flagRemovalCommentsLabel')}\n placeholder={getPhrase('flagRemovalCommentsPlaceholder')}\n type='text'\n id='reason'\n name='reason'\n value={formikProps?.values.reason}\n />\n ) : (\n <FormField\n label={getPhrase('reasonLabel')}\n placeholder={getPhrase('reasonPlaceholder')}\n type='text'\n id='reason'\n name='reason'\n value={formikProps?.values.reason}\n showRequiredStar\n />\n )\n }\n </>\n }\n\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('cancel')}\n onClick={props.closePopup}\n variant='link'\n />\n <FormButtons variant='dark' submitText={getPhrase('submit')} />\n </PopupButtons>\n </Form>\n );\n}\n\nexport function SuggestEditFormWrapper(props: SuggestEditFormProps) {\n return (\n <FormWrapper<SuggestEditModel>\n initialValues={INITIAL_VALUES}\n validationSchema={SuggestEditValidation()}\n onSubmit={props.onClickSubmit}\n >\n <SuggestEditForm {...props} />\n </FormWrapper>\n );\n}","\nimport React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoActionDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { SuggestEditFormWrapper } from 'libs/shared/components/suggest-edit-form/SuggestEditForm';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { RatingRequests } from 'libs/shared/flight-requests/RatingRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useVerifiedEmailRequiredErrorHandler } from 'libs/shared/hooks/useVerifiedEmailRequiredErrorHandler';\nimport { Config, CurrentUser, PopupViewProps, Rating, Video } from 'libs/shared/interfaces';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nimport { ExchangeRequests } from 'apps/exchange/flight-requests/ExchangeRequests';\nimport { usePreviewContext } from 'apps/exchange/hooks/usePreviewContext';\nconst namespace = 'exchange.suggestEdit';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ExchangeSuggestEditProps extends PopupViewProps {\n videoId: string;\n}\n\nexport function ExchangeSuggestEditView(props: ExchangeSuggestEditProps) {\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const { loading, handleGenerateReportError } = useVerifiedEmailRequiredErrorHandler();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\n\n const { previewContext, clearPreviewContext } = usePreviewContext(props.videoId, false);\n\n async function onClickSubmit(\n values: SuggestEditModel,\n onDone: (options?: FormSubmissionOptions<SuggestEditModel>) => void\n ) {\n try {\n await fetchAsync(ExchangeRequests.suggestEdit(video.data.id, values));\n alerts.success(getPhrase('success'));\n closePopup();\n\n AnalyticsHelper.logUserAction(\n { id: video.data.id, name: video.data.name },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: VideoActionDescriptor.SuggestEdit,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch (xhr) {\n handleGenerateReportError(xhr, getPhrase('error'), getPhrase('noEmailError'));\n } finally {\n onDone();\n }\n }\n\n /**\n * Because the add view can be navigated to from the ExchangePreviewView\n * which is an addressable popup, we need to navigate back to the \n * original route when this popup is closed - Sha\n */\n function closePopup(): void {\n props.closePopup();\n\n if (!previewContext?.appLink)\n return;\n\n ScrollHelper.preventScrollTop();\n Core.AppLinkHelper.trigger(previewContext.appLink);\n clearPreviewContext();\n }\n\n const hasLoaded = (\n config.hasCompleted &&\n currentUser.hasCompleted &&\n video.hasCompleted &&\n ratings.hasCompleted\n );\n\n if (!hasLoaded) {\n return <></>;\n }\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={closePopup}\n showLoadingSpinner={loading}\n >\n <p><Text namespace={namespace} phrase='description' /></p>\n\n <SuggestEditFormWrapper\n video={video.data}\n ratings={ratings.data}\n closePopup={closePopup}\n onClickSubmit={onClickSubmit}\n />\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","SuggestEditFlagRemoval","formikProps","useFormikContext","onSelectOption","option","flagRemovalRadioOptions","jsxs","jsx","Text","index","Form","SuggestEditRatingSelector","props","selectedRating","setSelectedRating","React","isRatingInvalid","setIsRatingInvalid","onRatingSelect","rating","ButtonGroup","DivButton","FormFeedback","SuggestEditValidation","object","string","propertyValue","MetadataTypes","INITIAL_VALUES","SuggestEditForm","ratings","_a","metadataValue","setMetadataValue","metadata","getMetadataValue","metadataType","currentValue","get","obj","DateHelper","FormField","Fragment","_b","PopupButtons","FormButtons","SuggestEditFormWrapper","FormWrapper","ExchangeSuggestEditView","fetchAsync","Flight.useGetFetchAsync","alerts","useAlerts","loading","handleGenerateReportError","useVerifiedEmailRequiredErrorHandler","config","Flight.useBasicFetch","ConfigRequests","currentUser","UserRequests","video","VideoRequests","RatingRequests","previewContext","clearPreviewContext","usePreviewContext","onClickSubmit","values","onDone","ExchangeRequests","closePopup","AnalyticsHelper","UserAction","EntityType","VideoActionDescriptor","LocationContext","WorkflowPhase","xhr","ScrollHelper","Core.AppLinkHelper","Popup"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CKvSiIEq.chunk.js","sources":["../../../../libs/shared/src/components/suggest-edit-form/suggest-edit-flag-removal/SuggestEditFlagRemoval.tsx","../../../../libs/shared/src/components/suggest-edit-form/suggest-edit-rating-selector/suggest-edit-rating-selector.tsx","../../../../libs/shared/src/components/suggest-edit-form/validation/SuggestEditValidation.ts","../../../../libs/shared/src/components/suggest-edit-form/SuggestEditMetadataTypes.ts","../../../../libs/shared/src/components/suggest-edit-form/SuggestEditForm.tsx","../../src/apps/exchange/views/exchange-suggest-edit/ExchangeSuggestEditView.tsx"],"sourcesContent":["import React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nconst namespace = 'shared.flagRemovalRadio';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SuggestEditFlagRemoval() {\n const formikProps = useFormikContext<SuggestEditModel>();\n\n function onSelectOption(option: string) {\n formikProps.setFieldValue('suggestion', option);\n }\n\n function flagRemovalRadioOptions() {\n return [\n getPhrase('nonEducational'),\n getPhrase('poorQuality'),\n getPhrase('offensive'),\n getPhrase('copyright'),\n getPhrase('ageAppropriate'),\n getPhrase('audio'),\n getPhrase('other')\n ];\n }\n\n return (\n <div className='mb-3'>\n <label className='form-label'>\n <Text namespace={namespace} phrase='flagRemovalReasonLabel' />\n <span className='text-danger'>*</span>\n </label>\n {flagRemovalRadioOptions().map((option, index) => (\n <Form.Check\n type='radio'\n key={index}\n label={option}\n name={option}\n id={`flag-${index}`}\n onChange={() => onSelectOption(option)}\n checked={formikProps.values.suggestion === option}\n className='mb-2'\n />\n ))}\n </div>\n );\n}","import React from 'react';\nimport { ButtonGroup } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { Rating } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nconst namespace = 'shared.suggestEditForm';\n\ninterface SuggestEditRatingSelectorProps {\n ratings: Rating[];\n metadataValue: string\n}\n\nexport function SuggestEditRatingSelector(props: SuggestEditRatingSelectorProps) {\n const formikProps = useFormikContext<SuggestEditModel>();\n\n const [ selectedRating, setSelectedRating ] = React.useState<Rating>();\n const [ isRatingInvalid, setIsRatingInvalid ] = React.useState<boolean>(false);\n \n function onRatingSelect(rating: Rating) {\n const isRatingInvalid = formikProps?.values.property && props.metadataValue === rating.name;\n formikProps.setFieldValue('suggestion', !isRatingInvalid ? rating.name : '');\n setSelectedRating(rating);\n setIsRatingInvalid(isRatingInvalid);\n }\n\n return (\n <div className='form-group'>\n <label className='form-label'><Text namespace={namespace} phrase='suggestLabel' /></label>\n <div aria-describedby='suggestEditRatingError'>\n <ButtonGroup>\n {props.ratings.map(rating => (\n <DivButton key={rating.id} onClick={() => onRatingSelect(rating)} className={`btn ${rating.id === selectedRating?.id ? 'btn-dark' : 'btn-outline-dark'}`}>\n {rating.code}\n </DivButton>\n ))}\n </ButtonGroup>\n </div>\n {isRatingInvalid && <FormFeedback name='suggestEditRating'><Text namespace={namespace} phrase='ratingError' /></FormFeedback>}\n </div>\n );\n}","import { object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'shared.suggestEditValidation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SuggestEditValidation() {\n return object().shape({\n property: string().required((getPhrase('metadata'))),\n reason: string().when('property', {\n is: propertyValue => propertyValue === 'FlagRemoval',\n then: string().notRequired(),\n otherwise: string().required(getPhrase('reason'))\n }),\n suggestion: string().required(getPhrase('suggestion')),\n currentValue: string()\n });\n}","export enum MetadataType {\n VideoTitle = 'video title',\n Description = 'description',\n Rating = 'rating',\n SeriesTitle = 'series title',\n Season = 'season number',\n EpisodeNumber = 'episode number',\n BroadcastDate = 'broadcast date',\n Channel = 'channel',\n ProductionYear = 'production year',\n Distributors = 'distributors',\n ProductionCompanies = 'production companies',\n Directors = 'directors',\n Producers = 'producers',\n FlagRemoval = 'flag for removal',\n Other = 'other'\n}\n\nexport type MetadataTypeKey = keyof typeof MetadataType;\n\nexport type MetadataTypeMap = {\n [K in MetadataTypeKey]: {\n name: MetadataType;\n property?: string;\n collection?: boolean;\n };\n};\n\nexport const MetadataTypes: MetadataTypeMap = {\n VideoTitle: {\n name: MetadataType.VideoTitle,\n property: 'name'\n },\n Description: {\n name: MetadataType.Description,\n property: 'description'\n },\n Rating: {\n name: MetadataType.Rating,\n property: 'rating.name'\n },\n SeriesTitle: {\n name: MetadataType.SeriesTitle,\n property: 'series.name'\n },\n Season: {\n name: MetadataType.Season,\n property: 'season.number'\n },\n EpisodeNumber: {\n name: MetadataType.EpisodeNumber,\n property: 'episodeNumber'\n },\n BroadcastDate: {\n name: MetadataType.BroadcastDate,\n property: 'dateBroadcast'\n },\n Channel: {\n name: MetadataType.Channel,\n property: 'channel.name'\n },\n ProductionYear: {\n name: MetadataType.ProductionYear,\n property: 'productionYear'\n },\n Distributors: {\n name: MetadataType.Distributors,\n property: 'distributors',\n collection: true\n },\n ProductionCompanies: {\n name: MetadataType.ProductionCompanies,\n property: 'productionCompanies',\n collection: true\n },\n Directors: {\n name: MetadataType.Directors,\n property: 'directors',\n collection: true\n },\n Producers: {\n name: MetadataType.Producers,\n property: 'producers',\n collection: true\n },\n FlagRemoval: {\n name: MetadataType.FlagRemoval\n },\n Other: {\n name: MetadataType.Other\n }\n};","import React from 'react';\nimport { Form, useFormikContext } from 'formik';\nimport get from 'lodash/get';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { SuggestEditFlagRemoval } from 'libs/shared/components/suggest-edit-form/suggest-edit-flag-removal/SuggestEditFlagRemoval';\nimport { SuggestEditRatingSelector } from 'libs/shared/components/suggest-edit-form/suggest-edit-rating-selector/suggest-edit-rating-selector';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BaseObject, Rating, Video } from 'libs/shared/interfaces';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nimport { SuggestEditValidation } from './validation/SuggestEditValidation';\nimport { MetadataTypeKey, MetadataTypes } from './SuggestEditMetadataTypes';\n\nconst namespace = 'shared.suggestEditForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst INITIAL_VALUES = {\n property: '',\n suggestion: '',\n reason: '',\n currentValue: ''\n};\n\ninterface SuggestEditFormProps {\n video: Video;\n ratings: Rating[];\n onClickSubmit: (\n data: SuggestEditModel,\n onDone: (options?: FormSubmissionOptions<SuggestEditModel>) => void\n ) => void;\n closePopup: () => void\n}\n\nfunction SuggestEditForm(props: SuggestEditFormProps) {\n const ratings = props.ratings?.filter(rating => rating.code);\n const formikProps = useFormikContext<SuggestEditModel>();\n\n const [ metadataValue, setMetadataValue ] = React.useState<string>();\n\n const metadata = formikProps?.values.property as MetadataTypeKey;\n\n React.useEffect(() => {\n const metadataValue = getMetadataValue();\n formikProps.setValues({\n property: metadata,\n reason: '',\n suggestion: '',\n currentValue: metadataValue || ''\n });\n formikProps.setTouched({});\n setMetadataValue(metadataValue);\n }, [metadata]);\n\n function getMetadataValue(): string {\n const metadataType = MetadataTypes[metadata];\n\n if (!metadataType || !metadataType.property)\n return null;\n\n let currentValue = get(props.video, metadataType.property);\n\n if (!currentValue || (metadataType.collection && !currentValue.data.length))\n return getPhrase('none');\n\n if (metadataType.collection) {\n currentValue = (currentValue.data as BaseObject[]).map(obj => obj.name).join(', ');\n }\n\n switch (metadata) {\n case 'BroadcastDate':\n return DateHelper.format(currentValue, 'D MMMM YYYY');\n default:\n return currentValue;\n }\n }\n\n return (\n <Form>\n <FormField\n as='select'\n label={getPhrase('metadataLabel')}\n id='property'\n name='property'\n value={metadata}\n className='text-capitalize'\n showRequiredStar\n >\n <option value=''>{getPhrase('metadataPlaceholder')}</option>\n {Object.keys(MetadataTypes).map((metadata, index) => (\n <option key={index} value={metadata}>\n {MetadataTypes[metadata as keyof typeof MetadataTypes].name}\n </option>\n ))}\n </FormField>\n\n {metadata &&\n <>\n {metadataValue && (\n <>\n <p className='fw-semibold mb-0'>\n <Text namespace={namespace} phrase='currentValueLabel' /> <span>{MetadataTypes[metadata as MetadataTypeKey]?.name}</span>\n </p>\n <p>{metadataValue}</p>\n </>\n )}\n\n {metadata === 'Rating' && <SuggestEditRatingSelector ratings={ratings} metadataValue={metadataValue} />}\n {metadata === 'FlagRemoval' && <SuggestEditFlagRemoval />}\n {metadata !== 'Rating' && metadata !== 'FlagRemoval' &&\n <FormField\n label={getPhrase('suggestLabel')}\n placeholder={getPhrase('suggestPlaceholder')}\n type='text'\n id='suggestion'\n name='suggestion'\n value={formikProps?.values.suggestion}\n showRequiredStar\n />\n }\n\n {\n metadata === 'FlagRemoval' ? (\n <FormField\n label={getPhrase('flagRemovalCommentsLabel')}\n placeholder={getPhrase('flagRemovalCommentsPlaceholder')}\n type='text'\n id='reason'\n name='reason'\n value={formikProps?.values.reason}\n />\n ) : (\n <FormField\n label={getPhrase('reasonLabel')}\n placeholder={getPhrase('reasonPlaceholder')}\n type='text'\n id='reason'\n name='reason'\n value={formikProps?.values.reason}\n showRequiredStar\n />\n )\n }\n </>\n }\n\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('cancel')}\n onClick={props.closePopup}\n variant='link'\n />\n <FormButtons variant='dark' submitText={getPhrase('submit')} />\n </PopupButtons>\n </Form>\n );\n}\n\nexport function SuggestEditFormWrapper(props: SuggestEditFormProps) {\n return (\n <FormWrapper<SuggestEditModel>\n initialValues={INITIAL_VALUES}\n validationSchema={SuggestEditValidation()}\n onSubmit={props.onClickSubmit}\n >\n <SuggestEditForm {...props} />\n </FormWrapper>\n );\n}","\nimport React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoActionDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { SuggestEditFormWrapper } from 'libs/shared/components/suggest-edit-form/SuggestEditForm';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { RatingRequests } from 'libs/shared/flight-requests/RatingRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useVerifiedEmailRequiredErrorHandler } from 'libs/shared/hooks/useVerifiedEmailRequiredErrorHandler';\nimport { Config, CurrentUser, PopupViewProps, Rating, Video } from 'libs/shared/interfaces';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nimport { ExchangeRequests } from 'apps/exchange/flight-requests/ExchangeRequests';\nimport { usePreviewContext } from 'apps/exchange/hooks/usePreviewContext';\nconst namespace = 'exchange.suggestEdit';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ExchangeSuggestEditProps extends PopupViewProps {\n videoId: string;\n}\n\nexport function ExchangeSuggestEditView(props: ExchangeSuggestEditProps) {\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const { loading, handleGenerateReportError } = useVerifiedEmailRequiredErrorHandler();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\n\n const { previewContext, clearPreviewContext } = usePreviewContext(props.videoId, false);\n\n async function onClickSubmit(\n values: SuggestEditModel,\n onDone: (options?: FormSubmissionOptions<SuggestEditModel>) => void\n ) {\n try {\n await fetchAsync(ExchangeRequests.suggestEdit(video.data.id, values));\n alerts.success(getPhrase('success'));\n closePopup();\n\n AnalyticsHelper.logUserAction(\n { id: video.data.id, name: video.data.name },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: VideoActionDescriptor.SuggestEdit,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch (xhr) {\n handleGenerateReportError(xhr, getPhrase('error'), getPhrase('noEmailError'));\n } finally {\n onDone();\n }\n }\n\n /**\n * Because the add view can be navigated to from the ExchangePreviewView\n * which is an addressable popup, we need to navigate back to the \n * original route when this popup is closed - Sha\n */\n function closePopup(): void {\n props.closePopup();\n\n if (!previewContext?.appLink)\n return;\n\n ScrollHelper.preventScrollTop();\n Core.AppLinkHelper.trigger(previewContext.appLink);\n clearPreviewContext();\n }\n\n const hasLoaded = (\n config.hasCompleted &&\n currentUser.hasCompleted &&\n video.hasCompleted &&\n ratings.hasCompleted\n );\n\n if (!hasLoaded) {\n return <></>;\n }\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={closePopup}\n showLoadingSpinner={loading}\n >\n <p><Text namespace={namespace} phrase='description' /></p>\n\n <SuggestEditFormWrapper\n video={video.data}\n ratings={ratings.data}\n closePopup={closePopup}\n onClickSubmit={onClickSubmit}\n />\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","SuggestEditFlagRemoval","formikProps","useFormikContext","onSelectOption","option","flagRemovalRadioOptions","jsxs","jsx","Text","index","Form","SuggestEditRatingSelector","props","selectedRating","setSelectedRating","React","isRatingInvalid","setIsRatingInvalid","onRatingSelect","rating","ButtonGroup","DivButton","FormFeedback","SuggestEditValidation","object","string","propertyValue","MetadataTypes","INITIAL_VALUES","SuggestEditForm","ratings","_a","metadataValue","setMetadataValue","metadata","getMetadataValue","metadataType","currentValue","get","obj","DateHelper","FormField","Fragment","_b","PopupButtons","FormButtons","SuggestEditFormWrapper","FormWrapper","ExchangeSuggestEditView","fetchAsync","Flight.useGetFetchAsync","alerts","useAlerts","loading","handleGenerateReportError","useVerifiedEmailRequiredErrorHandler","config","Flight.useBasicFetch","ConfigRequests","currentUser","UserRequests","video","VideoRequests","RatingRequests","previewContext","clearPreviewContext","usePreviewContext","onClickSubmit","values","onDone","ExchangeRequests","closePopup","AnalyticsHelper","UserAction","EntityType","VideoActionDescriptor","LocationContext","WorkflowPhase","xhr","ScrollHelper","Core.AppLinkHelper","Popup"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"CMCojMYr.chunk.js","sources":["../../../../libs/shared/src/hooks/UseHandleDialogError.ts"],"sourcesContent":["import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\n\nimport { UnspecifiedDialogError } from 'libs/shared/errors/general/unspecified-dialog/UnspecifiedDialogError';\n\nexport function useHandleDialogError(...statusCodes: HttpStatus[]): void {\n React.useEffect(() => {\n if (!statusCodes.length)\n return;\n\n const hasErrorCode = statusCodes.some(Core.ErrorHelper.isStatusCodeError);\n\n if (!hasErrorCode)\n return;\n\n Core.ErrorHelper.throw(new UnspecifiedDialogError());\n }, statusCodes);\n}"],"names":["useHandleDialogError","statusCodes","React","Core.ErrorHelper","UnspecifiedDialogError"],"mappings":"qDAOO,SAASA,KAAwBC,EAAiC,CACvEC,EAAM,UAAU,IAAM,CAChB,CAACD,EAAY,QAKb,CAFiBA,EAAY,KAAKE,EAAiB,iBAAiB,GAKxEA,EAAiB,MAAM,IAAIC,CAAwB,CACrD,EAAGH,CAAW,CAChB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e,w as O,a2 as G,a3 as g,a5 as L,A as b,a as j,b as F,aR as v,L as B,bJ as R,ab as V,ac as U,ad as _,aS as w,ae as I,af as C,R as H,am as M,P as Y,B as u,x as k}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{j as e,w as O,a2 as G,a3 as g,a5 as L,A as b,a as j,b as F,aR as v,L as B,bJ as R,ab as V,ac as U,ad as _,aS as w,ae as I,af as C,R as H,am as M,P as Y,B as u,x as k}from"./app-DIXL6Xww.js";import{u as J}from"./CMCojMYr.chunk.js";import{T as m,a as Q}from"./C1ZMk5wM.chunk.js";import{u as W}from"./DO5O1Cbr.chunk.js";const z="_selected_ii58d_1",K="_disabled_ii58d_4",$={selected:z,disabled:K};function P(a){var i,d,A,t;function n(){var s;(s=a.option)!=null&&s.disabled||a.onSelect(a.option)}let r="text-center cursor-pointer p-3 border rounded-3 mx-2 user-select-none w-50";return a.selected&&(r+=` border-info ${$.selected}`),(i=a.option)!=null&&i.disabled&&(r+=` ${$.disabled}`),e.jsxs(O,{onClick:n,className:r,children:[((d=a.option)==null?void 0:d.imageUrl)&&e.jsx("img",{src:a.option.imageUrl,className:`img-fluid my-3 ${a.option.imageClassName??""}`,draggable:!1}),((A=a.option)==null?void 0:A.title)&&e.jsx("h2",{className:"h3",children:a.option.title}),((t=a.option)==null?void 0:t.description)&&e.jsx("p",{className:"mb-0",dangerouslySetInnerHTML:{__html:a.option.description}}),a.children]})}const X="tv.addRequests",p=B.encloseNamespace(X);function Z(a,n){const r=G(),i=W(),d=g(L.currentUser()),A=g(L.workspace()),t=g(m.program(a)),s=g(m.region(n)),l=g(t.data&&d.data&&m.workspaceVideo(t.data.id,d.data.id,d.data.customerId));async function N(){var c;try{await r(m.createAdFreeRequest({programId:t.data.id,regionCode:s.data.code,userId:d.data.id,customerId:d.data.customerId})),i.success({heading:R.Success,message:p("requestAdFreeSuccess",{video:t.data.title}),type:v.Success}),b.trigger({application:F.TV,action:j.Tv.AD_FREE_REQUEST,args:[s.data.code,t.data.id]}),V.logUserAction({id:t.data.id,name:t.data.title},{actionType:C.Submit,entity:I.Video,descriptor:w.AdFreeRequest,location:_.Popup,workflowPhase:U.Complete})}catch(D){const T=(c=D.responseJSON)==null?void 0:c.message;if(T){const S=JSON.parse(T);i.error(p(S.Type,{video:t.data.title}))}else i.error(p("error"))}}async function y(){if(l.data.exists&&l.data.hasAdFree){b.trigger({application:F.TV,action:j.Tv.ALREADY_ADDED,params:{alreadyAdded:!0}});return}try{const c={id:t.data.id,userId:d.data.id,customerId:d.data.customerId};await r(m.addAdFreeVideo(c,t.data.id)),i.success({heading:R.Success,message:p("addAdFreeSuccess",{video:t.data.title}),type:v.Success}),b.trigger({application:F.TV,action:j.Tv.ALREADY_ADDED,args:[s.data.code,t.data.id]}),V.logUserAction({id:t.data.id,name:t.data.title},{actionType:C.Submit,entity:I.Video,descriptor:w.AddAdFreeVideo,location:_.Popup,workflowPhase:U.Complete})}catch{i.error(p("error"))}}async function E(){if(l.data.exists){b.trigger({application:F.TV,action:j.Tv.ALREADY_ADDED,params:{alreadyAdded:!0}});return}try{const c={userId:d.data.id,customerId:d.data.customerId,globalId:t.data.globalId,libraryId:A.data.id};await r(m.addFullVideo(c,t.data.id)),i.success({heading:R.Success,message:p("addFullSuccess",{video:t.data.title}),type:v.Success}),b.trigger({application:F.TV,action:j.Tv.ALREADY_ADDED,args:[s.data.code,t.data.id]}),V.logUserAction({id:t.data.id,name:t.data.title},{actionType:C.Submit,entity:I.Video,descriptor:w.AddFullVideo,location:_.Popup,workflowPhase:U.Complete})}catch{i.error(p("error"))}}return{requestAdFreeVideo:N,addAdFreeVideo:y,addFullVideo:E}}const ee="_circle_1yxtg_1",ae={circle:ee},o="tv.add",q=B.encloseNamespace(o),x={id:"ad-free",title:"adFreeTitle",description:"adFreeDescription",imageUrl:M.General.MOUNTAINS_FRAMED},f={id:"request-ad-free",title:"adFreeTitle",imageUrl:M.General.MOUNTAINS_FRAMED},h={id:"full-video",title:"fullVideoTitle",description:"fullVideoDescription",imageUrl:M.General.ANNOUNCEMENT_FRAMED};function re(a){const n=g(L.currentUser()),r=g(m.program(a.id)),i=g(n.data&&m.adFreeCredits(n.data.id,n.data.customerId,a.region)),{requestAdFreeVideo:d,addAdFreeVideo:A,addFullVideo:t}=Z(a.id,a.region);J(r.statusCode);const[s,l]=H.useState(null),N=!Number.isNaN(a.currentTime);function y(){s&&(s.id===h.id&&t(),s.id===x.id&&A(),s.id===f.id&&d())}function E(){if(!N){a.closePopup();return}b.trigger({application:F.TV,action:j.Tv.PREVIEW,args:[a.region,r.data.id],params:{currentTime:a.currentTime}})}const c=i.data&&i.data.userRequests<i.data.maxAvailableCredit,D=i.data&&i.data.maxAvailableCredit-i.data.userRequests;H.useEffect(()=>{i.hasCompleted&&(c||l(h))},[i,c]);const T=n.hasCompleted&&r.hasCompleted&&i.hasCompleted,S=(s==null?void 0:s.id)===f.id&&Q.isHolidayPeriod();return e.jsxs(Y,{size:"lg",title:q("title"),showLoadingSpinner:!T,closePopup:a.closePopup,children:[T&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"d-flex mb-3 mx-n2",children:[r.data.hasAdsFree&&e.jsxs(P,{option:{id:x.id},onSelect:l,selected:(s==null?void 0:s.id)===x.id,children:[e.jsx("img",{src:x.imageUrl,className:"img-fluid",draggable:!1}),e.jsx("h2",{className:"h4 mb-1",children:e.jsx(u,{namespace:o,phrase:x.title})}),e.jsx("p",{className:"mb-2",children:e.jsx(u,{namespace:o,phrase:x.description})})]}),!r.data.hasAdsFree&&e.jsxs(P,{option:{id:f.id,disabled:!c},onSelect:l,selected:(s==null?void 0:s.id)===f.id,children:[e.jsx("img",{src:f.imageUrl,className:"img-fluid",draggable:!1}),e.jsxs("div",{className:"d-flex justify-content-center align-items-center mb-1",children:[e.jsx("h2",{className:"h4 mb-1",children:e.jsx(u,{namespace:o,phrase:f.title})}),e.jsx("span",{className:`badge bg-dark rounded-circle ms-2 ${ae.circle}`,children:D})]}),e.jsx("p",{className:"mb-2",children:e.jsx(u,{namespace:o,phrase:c?"requestAdFreeDescription":"noRequestsDescription"})})]}),e.jsxs(P,{option:{id:h.id},onSelect:l,selected:(s==null?void 0:s.id)===h.id,children:[e.jsx("img",{src:h.imageUrl,className:"img-fluid",draggable:!1}),e.jsx("h2",{className:"h4 mb-1",children:e.jsx(u,{namespace:o,phrase:h.title})}),e.jsx("p",{className:"mb-2",children:e.jsx(u,{namespace:o,phrase:h.description})})]})]}),S&&e.jsxs("div",{className:"alert alert-warning",role:"alert",children:[e.jsx("h3",{className:"h5",children:e.jsx(u,{namespace:o,phrase:"adFreeAlertHeading"})}),e.jsx("p",{className:"m-0",children:e.jsx(u,{namespace:o,phrase:"adFreeAlertBody"})})]})]}),e.jsxs(k,{children:[e.jsx(k.Cancel,{text:q(N?"back":"close"),onClick:E,variant:"link"}),e.jsx(k.Submit,{text:q("continue"),onClick:y,variant:"dark",disabled:!s})]})]})}export{re as TvAddView};
|
|
2
|
+
//# sourceMappingURL=CPlxz4qV.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TstEXSQN.chunk.js","sources":["../../../../libs/shared/src/components/choices-popup/components/choices/Choices.tsx","../../src/apps/tv/hooks/useTvAddRequests.ts","../../src/apps/tv/views/tv-add/TvAddView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport styles from './choices.module.scss';\n\nexport interface ChoicePopupOption {\n id: string;\n title?: string;\n description?: string;\n imageUrl?: string;\n disabled?: boolean;\n imageClassName?: string;\n}\n\n\ninterface ChoiceProps {\n option?: ChoicePopupOption;\n selected: boolean | ((selectedChoice: boolean) => boolean);\n onSelect: (option: ChoicePopupOption) => void;\n}\n\nexport function Choice(props: React.PropsWithChildren<ChoiceProps>): React.ReactElement {\n function onSelect(): void {\n if (props.option?.disabled)\n return;\n\n props.onSelect(props.option);\n }\n\n let className = 'text-center cursor-pointer p-3 border rounded-3 mx-2 user-select-none w-50';\n\n if (props.selected)\n className += ` border-info ${styles.selected}`;\n\n if (props.option?.disabled)\n className += ` ${styles.disabled}`;\n\n return (\n <DivButton onClick={onSelect} className={className}>\n {props.option?.imageUrl && <img src={props.option.imageUrl} className={`img-fluid my-3 ${props.option.imageClassName ?? ''}`} draggable={false} />}\n {props.option?.title && <h2 className='h3'>{props.option.title}</h2>}\n {props.option?.description && <p className='mb-0' dangerouslySetInnerHTML={{ __html: props.option.description }}></p>}\n {props.children}\n </DivButton>\n );\n}\n\ninterface ChoicesProps {\n options: [ChoicePopupOption, ChoicePopupOption];\n selection: ChoicePopupOption | null;\n selectOption: (option: ChoicePopupOption) => void;\n}\n\nexport function Choices(props: ChoicesProps): React.ReactElement {\n return (\n <div className='d-flex mb-3 mx-n2'>\n {props.options.map(o => (\n <Choice\n key={o.id}\n option={o}\n selected={props.selection?.id === o.id}\n onSelect={props.selectOption}\n />\n ))}\n </div>\n );\n}","import { Core } from 'libs/common/backbone/index';\nimport { AlertType } from 'libs/common/backbone/services/BaseAlertService';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, TvDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser, Library } from 'libs/shared/interfaces';\n\nimport { DefaultAlertHeading } from 'shared/constants/DefaultAlertHeading';\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { TvWorkspaceVideoResponse } from 'apps/tv/interfaces/responses/TvWorkspaceVideoResponse';\n\nconst namespace = 'tv.addRequests';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useTvAddRequests(programId: string, regionCode: string) {\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const workspace = Flight.useBasicFetch<Library>(UserRequests.workspace());\n\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(programId));\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(regionCode));\n const workspaceVideo = Flight.useBasicFetch<TvWorkspaceVideoResponse>(\n program.data && currentUser.data &&\n TvRequests.workspaceVideo(\n program.data.id,\n currentUser.data.id,\n currentUser.data.customerId\n )\n );\n \n async function requestAdFreeVideo(): Promise<void> {\n try {\n await fetchAsync(TvRequests.createAdFreeRequest({\n programId: program.data.id,\n regionCode: region.data.code,\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId\n }));\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('requestAdFreeSuccess', { video: program.data.title }),\n type: AlertType.Success\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.AD_FREE_REQUEST,\n args: [ region.data.code, program.data.id ]\n });\n\n AnalyticsHelper.logUserAction(\n { id: program.data.id, name: program.data.title },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: TvDescriptor.AdFreeRequest,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch (error) {\n const errorMessage = error.responseJSON?.message;\n if (errorMessage) {\n const parsedErrorMessage = JSON.parse(errorMessage);\n alerts.error(getPhrase(parsedErrorMessage.Type, { video: program.data.title }));\n } else {\n alerts.error(getPhrase('error'));\n }\n }\n }\n\n async function addAdFreeVideo() {\n if (workspaceVideo.data.exists && workspaceVideo.data.hasAdFree) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n params: { alreadyAdded: true }\n });\n return;\n }\n\n try {\n const data = {\n id: program.data.id,\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId\n };\n await fetchAsync(TvRequests.addAdFreeVideo(data, program.data.id));\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('addAdFreeSuccess', { video: program.data.title }),\n type: AlertType.Success\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n args: [ region.data.code, program.data.id ]\n });\n\n AnalyticsHelper.logUserAction(\n { id: program.data.id, name: program.data.title },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: TvDescriptor.AddAdFreeVideo,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch {\n alerts.error(getPhrase('error'));\n }\n }\n\n async function addFullVideo() {\n if (workspaceVideo.data.exists) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n params: { alreadyAdded: true }\n });\n return;\n }\n\n try {\n const data = {\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId,\n globalId: program.data.globalId,\n libraryId: workspace.data.id\n };\n await fetchAsync(TvRequests.addFullVideo(data, program.data.id));\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('addFullSuccess', { video: program.data.title }),\n type: AlertType.Success\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n args: [ region.data.code, program.data.id ]\n });\n\n AnalyticsHelper.logUserAction(\n { id: program.data.id, name: program.data.title },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: TvDescriptor.AddFullVideo,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch {\n alerts.error(getPhrase('error'));\n }\n }\n\n return { requestAdFreeVideo, addAdFreeVideo, addFullVideo };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Choice, ChoicePopupOption } from 'libs/shared/components/choices-popup/components/choices/Choices';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleDialogError } from 'libs/shared/hooks/UseHandleDialogError';\nimport { CurrentUser, PopupViewProps } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useTvAddRequests } from 'apps/tv/hooks/useTvAddRequests';\nimport { AdFreeCredits } from 'apps/tv/interfaces/models/AdFreeCredits';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvUtils } from 'apps/tv/utils/TvUtils';\n\nimport styles from './tv-add.module.scss';\n\nconst namespace = 'tv.add';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst AD_FREE = {\n id: 'ad-free',\n title: 'adFreeTitle',\n description: 'adFreeDescription',\n imageUrl: ImageUrls.General.MOUNTAINS_FRAMED\n};\n\nconst REQUEST_AD_FREE = {\n id: 'request-ad-free',\n title: 'adFreeTitle',\n imageUrl: ImageUrls.General.MOUNTAINS_FRAMED\n};\n\nconst FULL_VIDEO = {\n id: 'full-video',\n title: 'fullVideoTitle',\n description: 'fullVideoDescription',\n imageUrl: ImageUrls.General.ANNOUNCEMENT_FRAMED\n};\n\ninterface TvAddViewProps extends PopupViewProps {\n id: string;\n region: string;\n currentTime: number;\n}\n\nexport function TvAddView(props: TvAddViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(props.id));\n const adFreeCredits = Flight.useBasicFetch<AdFreeCredits>(\n currentUser.data &&\n TvRequests.adFreeCredits(\n currentUser.data.id,\n currentUser.data.customerId,\n props.region\n )\n );\n\n const { requestAdFreeVideo, addAdFreeVideo, addFullVideo } = useTvAddRequests(props.id, props.region);\n\n useHandleDialogError(program.statusCode);\n\n const [ selectedChoice, setSelectedChoice ] = React.useState<ChoicePopupOption>(null);\n\n const isFromPreview = !Number.isNaN(props.currentTime);\n\n function onClickContinue(): void {\n if (!selectedChoice)\n return;\n\n if (selectedChoice.id === FULL_VIDEO.id) {\n addFullVideo();\n }\n \n if (selectedChoice.id === AD_FREE.id) {\n addAdFreeVideo();\n }\n\n if (selectedChoice.id === REQUEST_AD_FREE.id) {\n requestAdFreeVideo();\n }\n }\n\n function onClickBack(): void {\n if (!isFromPreview) {\n props.closePopup();\n return;\n }\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ props.region, program.data.id ],\n params: {\n currentTime: props.currentTime\n }\n });\n }\n\n const hasEnoughCredits = adFreeCredits.data &&\n (adFreeCredits.data.userRequests < adFreeCredits.data.maxAvailableCredit);\n const requestsRemaining = adFreeCredits.data &&\n (adFreeCredits.data.maxAvailableCredit - adFreeCredits.data.userRequests);\n\n React.useEffect(() => {\n if (!adFreeCredits.hasCompleted)\n return;\n \n if (hasEnoughCredits)\n return;\n\n setSelectedChoice(FULL_VIDEO);\n }, [ adFreeCredits, hasEnoughCredits ]);\n\n const hasLoaded = (\n currentUser.hasCompleted &&\n program.hasCompleted &&\n adFreeCredits.hasCompleted\n );\n\n const showAdFreeAlert = selectedChoice?.id === REQUEST_AD_FREE.id && TvUtils.isHolidayPeriod();\n\n return (\n <Popup\n size='lg'\n title={getPhrase('title')}\n showLoadingSpinner={!hasLoaded}\n closePopup={props.closePopup}\n >\n {hasLoaded &&\n <>\n <div className='d-flex mb-3 mx-n2'>\n {program.data.hasAdsFree &&\n <Choice\n option={{ id: AD_FREE.id }}\n onSelect={setSelectedChoice}\n selected={selectedChoice?.id === AD_FREE.id}\n >\n <img src={AD_FREE.imageUrl} className='img-fluid' draggable={false} />\n <h2 className='h4 mb-1'><Text namespace={namespace} phrase={AD_FREE.title} /></h2>\n <p className='mb-2'><Text namespace={namespace} phrase={AD_FREE.description} /></p>\n </Choice>\n }\n \n {!program.data.hasAdsFree &&\n <Choice\n option={{ id: REQUEST_AD_FREE.id, disabled: !hasEnoughCredits }}\n onSelect={setSelectedChoice}\n selected={selectedChoice?.id === REQUEST_AD_FREE.id}\n >\n <img src={REQUEST_AD_FREE.imageUrl} className='img-fluid' draggable={false} />\n <div className='d-flex justify-content-center align-items-center mb-1'>\n <h2 className='h4 mb-1'><Text namespace={namespace} phrase={REQUEST_AD_FREE.title} /></h2>\n <span className={`badge bg-dark rounded-circle ms-2 ${styles.circle}`}>{requestsRemaining}</span>\n </div>\n <p className='mb-2'><Text namespace={namespace} phrase={hasEnoughCredits ? 'requestAdFreeDescription' : 'noRequestsDescription'} /></p>\n </Choice>\n }\n\n <Choice\n option={{ id: FULL_VIDEO.id }}\n onSelect={setSelectedChoice}\n selected={selectedChoice?.id === FULL_VIDEO.id}\n >\n <img src={FULL_VIDEO.imageUrl} className='img-fluid' draggable={false} />\n <h2 className='h4 mb-1'><Text namespace={namespace} phrase={FULL_VIDEO.title} /></h2>\n <p className='mb-2'><Text namespace={namespace} phrase={FULL_VIDEO.description} /></p>\n </Choice>\n </div>\n\n {showAdFreeAlert &&\n <div className='alert alert-warning' role='alert'>\n <h3 className='h5'>\n <Text namespace={namespace} phrase='adFreeAlertHeading' />\n </h3>\n <p className='m-0'>\n <Text namespace={namespace} phrase='adFreeAlertBody' />\n </p>\n </div>\n }\n </>\n }\n \n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase(isFromPreview ? 'back' : 'close')}\n onClick={onClickBack}\n variant='link'\n />\n <PopupButtons.Submit\n text={getPhrase('continue')}\n onClick={onClickContinue}\n variant='dark'\n disabled={!selectedChoice}\n />\n </PopupButtons>\n </Popup>\n );\n}"],"names":["Choice","props","onSelect","_a","className","styles","jsxs","DivButton","_b","jsx","_c","_d","namespace","getPhrase","LanguageService","useTvAddRequests","programId","regionCode","fetchAsync","Flight.useGetFetchAsync","alerts","useAlerts","currentUser","Flight.useBasicFetch","UserRequests","workspace","program","TvRequests","region","workspaceVideo","requestAdFreeVideo","DefaultAlertHeading","AlertType","Core.AppLinkHelper","AppChannels","Actions","AnalyticsHelper","UserAction","EntityType","TvDescriptor","LocationContext","WorkflowPhase","error","errorMessage","parsedErrorMessage","addAdFreeVideo","data","addFullVideo","AD_FREE","ImageUrls","REQUEST_AD_FREE","FULL_VIDEO","TvAddView","adFreeCredits","useHandleDialogError","selectedChoice","setSelectedChoice","React","isFromPreview","onClickContinue","onClickBack","hasEnoughCredits","requestsRemaining","hasLoaded","showAdFreeAlert","TvUtils","Popup","Fragment","Text","PopupButtons"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CPlxz4qV.chunk.js","sources":["../../../../libs/shared/src/components/choices-popup/components/choices/Choices.tsx","../../src/apps/tv/hooks/useTvAddRequests.ts","../../src/apps/tv/views/tv-add/TvAddView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport styles from './choices.module.scss';\n\nexport interface ChoicePopupOption {\n id: string;\n title?: string;\n description?: string;\n imageUrl?: string;\n disabled?: boolean;\n imageClassName?: string;\n}\n\n\ninterface ChoiceProps {\n option?: ChoicePopupOption;\n selected: boolean | ((selectedChoice: boolean) => boolean);\n onSelect: (option: ChoicePopupOption) => void;\n}\n\nexport function Choice(props: React.PropsWithChildren<ChoiceProps>): React.ReactElement {\n function onSelect(): void {\n if (props.option?.disabled)\n return;\n\n props.onSelect(props.option);\n }\n\n let className = 'text-center cursor-pointer p-3 border rounded-3 mx-2 user-select-none w-50';\n\n if (props.selected)\n className += ` border-info ${styles.selected}`;\n\n if (props.option?.disabled)\n className += ` ${styles.disabled}`;\n\n return (\n <DivButton onClick={onSelect} className={className}>\n {props.option?.imageUrl && <img src={props.option.imageUrl} className={`img-fluid my-3 ${props.option.imageClassName ?? ''}`} draggable={false} />}\n {props.option?.title && <h2 className='h3'>{props.option.title}</h2>}\n {props.option?.description && <p className='mb-0' dangerouslySetInnerHTML={{ __html: props.option.description }}></p>}\n {props.children}\n </DivButton>\n );\n}\n\ninterface ChoicesProps {\n options: [ChoicePopupOption, ChoicePopupOption];\n selection: ChoicePopupOption | null;\n selectOption: (option: ChoicePopupOption) => void;\n}\n\nexport function Choices(props: ChoicesProps): React.ReactElement {\n return (\n <div className='d-flex mb-3 mx-n2'>\n {props.options.map(o => (\n <Choice\n key={o.id}\n option={o}\n selected={props.selection?.id === o.id}\n onSelect={props.selectOption}\n />\n ))}\n </div>\n );\n}","import { Core } from 'libs/common/backbone/index';\nimport { AlertType } from 'libs/common/backbone/services/BaseAlertService';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, TvDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser, Library } from 'libs/shared/interfaces';\n\nimport { DefaultAlertHeading } from 'shared/constants/DefaultAlertHeading';\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { TvWorkspaceVideoResponse } from 'apps/tv/interfaces/responses/TvWorkspaceVideoResponse';\n\nconst namespace = 'tv.addRequests';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useTvAddRequests(programId: string, regionCode: string) {\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const workspace = Flight.useBasicFetch<Library>(UserRequests.workspace());\n\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(programId));\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(regionCode));\n const workspaceVideo = Flight.useBasicFetch<TvWorkspaceVideoResponse>(\n program.data && currentUser.data &&\n TvRequests.workspaceVideo(\n program.data.id,\n currentUser.data.id,\n currentUser.data.customerId\n )\n );\n \n async function requestAdFreeVideo(): Promise<void> {\n try {\n await fetchAsync(TvRequests.createAdFreeRequest({\n programId: program.data.id,\n regionCode: region.data.code,\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId\n }));\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('requestAdFreeSuccess', { video: program.data.title }),\n type: AlertType.Success\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.AD_FREE_REQUEST,\n args: [ region.data.code, program.data.id ]\n });\n\n AnalyticsHelper.logUserAction(\n { id: program.data.id, name: program.data.title },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: TvDescriptor.AdFreeRequest,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch (error) {\n const errorMessage = error.responseJSON?.message;\n if (errorMessage) {\n const parsedErrorMessage = JSON.parse(errorMessage);\n alerts.error(getPhrase(parsedErrorMessage.Type, { video: program.data.title }));\n } else {\n alerts.error(getPhrase('error'));\n }\n }\n }\n\n async function addAdFreeVideo() {\n if (workspaceVideo.data.exists && workspaceVideo.data.hasAdFree) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n params: { alreadyAdded: true }\n });\n return;\n }\n\n try {\n const data = {\n id: program.data.id,\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId\n };\n await fetchAsync(TvRequests.addAdFreeVideo(data, program.data.id));\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('addAdFreeSuccess', { video: program.data.title }),\n type: AlertType.Success\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n args: [ region.data.code, program.data.id ]\n });\n\n AnalyticsHelper.logUserAction(\n { id: program.data.id, name: program.data.title },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: TvDescriptor.AddAdFreeVideo,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch {\n alerts.error(getPhrase('error'));\n }\n }\n\n async function addFullVideo() {\n if (workspaceVideo.data.exists) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n params: { alreadyAdded: true }\n });\n return;\n }\n\n try {\n const data = {\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId,\n globalId: program.data.globalId,\n libraryId: workspace.data.id\n };\n await fetchAsync(TvRequests.addFullVideo(data, program.data.id));\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('addFullSuccess', { video: program.data.title }),\n type: AlertType.Success\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n args: [ region.data.code, program.data.id ]\n });\n\n AnalyticsHelper.logUserAction(\n { id: program.data.id, name: program.data.title },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: TvDescriptor.AddFullVideo,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch {\n alerts.error(getPhrase('error'));\n }\n }\n\n return { requestAdFreeVideo, addAdFreeVideo, addFullVideo };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Choice, ChoicePopupOption } from 'libs/shared/components/choices-popup/components/choices/Choices';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleDialogError } from 'libs/shared/hooks/UseHandleDialogError';\nimport { CurrentUser, PopupViewProps } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useTvAddRequests } from 'apps/tv/hooks/useTvAddRequests';\nimport { AdFreeCredits } from 'apps/tv/interfaces/models/AdFreeCredits';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvUtils } from 'apps/tv/utils/TvUtils';\n\nimport styles from './tv-add.module.scss';\n\nconst namespace = 'tv.add';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst AD_FREE = {\n id: 'ad-free',\n title: 'adFreeTitle',\n description: 'adFreeDescription',\n imageUrl: ImageUrls.General.MOUNTAINS_FRAMED\n};\n\nconst REQUEST_AD_FREE = {\n id: 'request-ad-free',\n title: 'adFreeTitle',\n imageUrl: ImageUrls.General.MOUNTAINS_FRAMED\n};\n\nconst FULL_VIDEO = {\n id: 'full-video',\n title: 'fullVideoTitle',\n description: 'fullVideoDescription',\n imageUrl: ImageUrls.General.ANNOUNCEMENT_FRAMED\n};\n\ninterface TvAddViewProps extends PopupViewProps {\n id: string;\n region: string;\n currentTime: number;\n}\n\nexport function TvAddView(props: TvAddViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(props.id));\n const adFreeCredits = Flight.useBasicFetch<AdFreeCredits>(\n currentUser.data &&\n TvRequests.adFreeCredits(\n currentUser.data.id,\n currentUser.data.customerId,\n props.region\n )\n );\n\n const { requestAdFreeVideo, addAdFreeVideo, addFullVideo } = useTvAddRequests(props.id, props.region);\n\n useHandleDialogError(program.statusCode);\n\n const [ selectedChoice, setSelectedChoice ] = React.useState<ChoicePopupOption>(null);\n\n const isFromPreview = !Number.isNaN(props.currentTime);\n\n function onClickContinue(): void {\n if (!selectedChoice)\n return;\n\n if (selectedChoice.id === FULL_VIDEO.id) {\n addFullVideo();\n }\n \n if (selectedChoice.id === AD_FREE.id) {\n addAdFreeVideo();\n }\n\n if (selectedChoice.id === REQUEST_AD_FREE.id) {\n requestAdFreeVideo();\n }\n }\n\n function onClickBack(): void {\n if (!isFromPreview) {\n props.closePopup();\n return;\n }\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ props.region, program.data.id ],\n params: {\n currentTime: props.currentTime\n }\n });\n }\n\n const hasEnoughCredits = adFreeCredits.data &&\n (adFreeCredits.data.userRequests < adFreeCredits.data.maxAvailableCredit);\n const requestsRemaining = adFreeCredits.data &&\n (adFreeCredits.data.maxAvailableCredit - adFreeCredits.data.userRequests);\n\n React.useEffect(() => {\n if (!adFreeCredits.hasCompleted)\n return;\n \n if (hasEnoughCredits)\n return;\n\n setSelectedChoice(FULL_VIDEO);\n }, [ adFreeCredits, hasEnoughCredits ]);\n\n const hasLoaded = (\n currentUser.hasCompleted &&\n program.hasCompleted &&\n adFreeCredits.hasCompleted\n );\n\n const showAdFreeAlert = selectedChoice?.id === REQUEST_AD_FREE.id && TvUtils.isHolidayPeriod();\n\n return (\n <Popup\n size='lg'\n title={getPhrase('title')}\n showLoadingSpinner={!hasLoaded}\n closePopup={props.closePopup}\n >\n {hasLoaded &&\n <>\n <div className='d-flex mb-3 mx-n2'>\n {program.data.hasAdsFree &&\n <Choice\n option={{ id: AD_FREE.id }}\n onSelect={setSelectedChoice}\n selected={selectedChoice?.id === AD_FREE.id}\n >\n <img src={AD_FREE.imageUrl} className='img-fluid' draggable={false} />\n <h2 className='h4 mb-1'><Text namespace={namespace} phrase={AD_FREE.title} /></h2>\n <p className='mb-2'><Text namespace={namespace} phrase={AD_FREE.description} /></p>\n </Choice>\n }\n \n {!program.data.hasAdsFree &&\n <Choice\n option={{ id: REQUEST_AD_FREE.id, disabled: !hasEnoughCredits }}\n onSelect={setSelectedChoice}\n selected={selectedChoice?.id === REQUEST_AD_FREE.id}\n >\n <img src={REQUEST_AD_FREE.imageUrl} className='img-fluid' draggable={false} />\n <div className='d-flex justify-content-center align-items-center mb-1'>\n <h2 className='h4 mb-1'><Text namespace={namespace} phrase={REQUEST_AD_FREE.title} /></h2>\n <span className={`badge bg-dark rounded-circle ms-2 ${styles.circle}`}>{requestsRemaining}</span>\n </div>\n <p className='mb-2'><Text namespace={namespace} phrase={hasEnoughCredits ? 'requestAdFreeDescription' : 'noRequestsDescription'} /></p>\n </Choice>\n }\n\n <Choice\n option={{ id: FULL_VIDEO.id }}\n onSelect={setSelectedChoice}\n selected={selectedChoice?.id === FULL_VIDEO.id}\n >\n <img src={FULL_VIDEO.imageUrl} className='img-fluid' draggable={false} />\n <h2 className='h4 mb-1'><Text namespace={namespace} phrase={FULL_VIDEO.title} /></h2>\n <p className='mb-2'><Text namespace={namespace} phrase={FULL_VIDEO.description} /></p>\n </Choice>\n </div>\n\n {showAdFreeAlert &&\n <div className='alert alert-warning' role='alert'>\n <h3 className='h5'>\n <Text namespace={namespace} phrase='adFreeAlertHeading' />\n </h3>\n <p className='m-0'>\n <Text namespace={namespace} phrase='adFreeAlertBody' />\n </p>\n </div>\n }\n </>\n }\n \n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase(isFromPreview ? 'back' : 'close')}\n onClick={onClickBack}\n variant='link'\n />\n <PopupButtons.Submit\n text={getPhrase('continue')}\n onClick={onClickContinue}\n variant='dark'\n disabled={!selectedChoice}\n />\n </PopupButtons>\n </Popup>\n );\n}"],"names":["Choice","props","onSelect","_a","className","styles","jsxs","DivButton","_b","jsx","_c","_d","namespace","getPhrase","LanguageService","useTvAddRequests","programId","regionCode","fetchAsync","Flight.useGetFetchAsync","alerts","useAlerts","currentUser","Flight.useBasicFetch","UserRequests","workspace","program","TvRequests","region","workspaceVideo","requestAdFreeVideo","DefaultAlertHeading","AlertType","Core.AppLinkHelper","AppChannels","Actions","AnalyticsHelper","UserAction","EntityType","TvDescriptor","LocationContext","WorkflowPhase","error","errorMessage","parsedErrorMessage","addAdFreeVideo","data","addFullVideo","AD_FREE","ImageUrls","REQUEST_AD_FREE","FULL_VIDEO","TvAddView","adFreeCredits","useHandleDialogError","selectedChoice","setSelectedChoice","React","isFromPreview","onClickContinue","onClickBack","hasEnoughCredits","requestsRemaining","hasLoaded","showAdFreeAlert","TvUtils","Popup","Fragment","Text","PopupButtons"],"mappings":"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"}
|