@clickview/exchange 0.56.0 → 0.56.1-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{PswrCgft.chunk.js → 044iq0d1.chunk.js} +2 -2
- package/dist/scripts/{PswrCgft.chunk.js.map → 044iq0d1.chunk.js.map} +1 -1
- package/dist/scripts/{CoBxE0Ze.chunk.js → 6ucD94id.chunk.js} +2 -2
- package/dist/scripts/{CoBxE0Ze.chunk.js.map → 6ucD94id.chunk.js.map} +1 -1
- package/dist/scripts/{Bf33xjOw.chunk.js → B-PNdHqp.chunk.js} +2 -2
- package/dist/scripts/{Bf33xjOw.chunk.js.map → B-PNdHqp.chunk.js.map} +1 -1
- package/dist/scripts/{BsN5hGdn.chunk.js → B2zOyhnx.chunk.js} +2 -2
- package/dist/scripts/{BsN5hGdn.chunk.js.map → B2zOyhnx.chunk.js.map} +1 -1
- package/dist/scripts/{D36WobW6.chunk.js → B3cy6PVV.chunk.js} +2 -2
- package/dist/scripts/{D36WobW6.chunk.js.map → B3cy6PVV.chunk.js.map} +1 -1
- package/dist/scripts/{DaLZ0a8R.chunk.js → B3e4NkXy.chunk.js} +2 -2
- package/dist/scripts/{DaLZ0a8R.chunk.js.map → B3e4NkXy.chunk.js.map} +1 -1
- package/dist/scripts/{CucQidno.chunk.js → B4mwlW3k.chunk.js} +2 -2
- package/dist/scripts/{CucQidno.chunk.js.map → B4mwlW3k.chunk.js.map} +1 -1
- package/dist/scripts/{BrWxbCy6.chunk.js → BC8oIL4t.chunk.js} +2 -2
- package/dist/scripts/{BrWxbCy6.chunk.js.map → BC8oIL4t.chunk.js.map} +1 -1
- package/dist/scripts/{BolzEYoc.chunk.js → BDoSZnIa.chunk.js} +2 -2
- package/dist/scripts/{BolzEYoc.chunk.js.map → BDoSZnIa.chunk.js.map} +1 -1
- package/dist/scripts/{dZRQM-hv.chunk.js → BGg12SDH.chunk.js} +2 -2
- package/dist/scripts/{dZRQM-hv.chunk.js.map → BGg12SDH.chunk.js.map} +1 -1
- package/dist/scripts/{DiCC-7dB.chunk.js → BI6c50Jh.chunk.js} +2 -2
- package/dist/scripts/{DiCC-7dB.chunk.js.map → BI6c50Jh.chunk.js.map} +1 -1
- package/dist/scripts/{BDLmm9HB.chunk.js → BSIHfhEC.chunk.js} +2 -2
- package/dist/scripts/{BDLmm9HB.chunk.js.map → BSIHfhEC.chunk.js.map} +1 -1
- package/dist/scripts/BWIFX-Ik.chunk.js +2 -0
- package/dist/scripts/{zNwtPBUz.chunk.js.map → BWIFX-Ik.chunk.js.map} +1 -1
- package/dist/scripts/{DSFKTxPl.chunk.js → BWnE7KAO.chunk.js} +2 -2
- package/dist/scripts/{DSFKTxPl.chunk.js.map → BWnE7KAO.chunk.js.map} +1 -1
- package/dist/scripts/{De7o0fUe.chunk.js → Be3-ohNT.chunk.js} +3 -3
- package/dist/scripts/{De7o0fUe.chunk.js.map → Be3-ohNT.chunk.js.map} +1 -1
- package/dist/scripts/BlQxOSJi.chunk.js +2 -0
- package/dist/scripts/{BDys2rrG.chunk.js.map → BlQxOSJi.chunk.js.map} +1 -1
- package/dist/scripts/{D1uhKPP8.chunk.js → BoCG3rE6.chunk.js} +2 -2
- package/dist/scripts/{D1uhKPP8.chunk.js.map → BoCG3rE6.chunk.js.map} +1 -1
- package/dist/scripts/{BUlwG-06.chunk.js → BpW5Hw5z.chunk.js} +2 -2
- package/dist/scripts/{BUlwG-06.chunk.js.map → BpW5Hw5z.chunk.js.map} +1 -1
- package/dist/scripts/{Bj3FQ5Ya.chunk.js → BtTTlrnZ.chunk.js} +2 -2
- package/dist/scripts/{Bj3FQ5Ya.chunk.js.map → BtTTlrnZ.chunk.js.map} +1 -1
- package/dist/scripts/{B1tVxL6y.chunk.js → ButpMiJ1.chunk.js} +2 -2
- package/dist/scripts/{B1tVxL6y.chunk.js.map → ButpMiJ1.chunk.js.map} +1 -1
- package/dist/scripts/{C4ROYls7.chunk.js → By50Y4fi.chunk.js} +2 -2
- package/dist/scripts/{C4ROYls7.chunk.js.map → By50Y4fi.chunk.js.map} +1 -1
- package/dist/scripts/{Ddk3CuwQ.chunk.js → C3YXHQU-.chunk.js} +2 -2
- package/dist/scripts/{Ddk3CuwQ.chunk.js.map → C3YXHQU-.chunk.js.map} +1 -1
- package/dist/scripts/{C7toqgJ9.chunk.js → C3jPyokw.chunk.js} +2 -2
- package/dist/scripts/{C7toqgJ9.chunk.js.map → C3jPyokw.chunk.js.map} +1 -1
- package/dist/scripts/{UxXf3AJv.chunk.js → C5DBZwej.chunk.js} +2 -2
- package/dist/scripts/{UxXf3AJv.chunk.js.map → C5DBZwej.chunk.js.map} +1 -1
- package/dist/scripts/{C4F_pZyv.chunk.js → C6BGhDq3.chunk.js} +2 -2
- package/dist/scripts/{C4F_pZyv.chunk.js.map → C6BGhDq3.chunk.js.map} +1 -1
- package/dist/scripts/C6x-ZqLl.chunk.js +2 -0
- package/dist/scripts/{0mGPhW9k.chunk.js.map → C6x-ZqLl.chunk.js.map} +1 -1
- package/dist/scripts/{Bt6iO6Kj.chunk.js → CFa8QduK.chunk.js} +2 -2
- package/dist/scripts/{Bt6iO6Kj.chunk.js.map → CFa8QduK.chunk.js.map} +1 -1
- package/dist/scripts/{C3oO96po.chunk.js → CG6eaNuu.chunk.js} +2 -2
- package/dist/scripts/{C3oO96po.chunk.js.map → CG6eaNuu.chunk.js.map} +1 -1
- package/dist/scripts/{h9ujBzqa.chunk.js → CHFINytM.chunk.js} +2 -2
- package/dist/scripts/{h9ujBzqa.chunk.js.map → CHFINytM.chunk.js.map} +1 -1
- package/dist/scripts/{CWrjr29e.chunk.js → CHzv4hsQ.chunk.js} +2 -2
- package/dist/scripts/{CWrjr29e.chunk.js.map → CHzv4hsQ.chunk.js.map} +1 -1
- package/dist/scripts/{Cn9Jwmkc.chunk.js → CV6qoMzB.chunk.js} +2 -2
- package/dist/scripts/{Cn9Jwmkc.chunk.js.map → CV6qoMzB.chunk.js.map} +1 -1
- package/dist/scripts/{EAS5-0G3.chunk.js → CVca5RIC.chunk.js} +2 -2
- package/dist/scripts/{EAS5-0G3.chunk.js.map → CVca5RIC.chunk.js.map} +1 -1
- package/dist/scripts/CWRjbtTx.chunk.js +2 -0
- package/dist/scripts/{Cfw5zASx.chunk.js.map → CWRjbtTx.chunk.js.map} +1 -1
- package/dist/scripts/{B86gu8do.chunk.js → CX1XQ05a.chunk.js} +2 -2
- package/dist/scripts/{B86gu8do.chunk.js.map → CX1XQ05a.chunk.js.map} +1 -1
- package/dist/scripts/{BoyiBqIK.chunk.js → CYrSeREi.chunk.js} +2 -2
- package/dist/scripts/{BoyiBqIK.chunk.js.map → CYrSeREi.chunk.js.map} +1 -1
- package/dist/scripts/{CA2wPtyp.chunk.js → C_AYa87x.chunk.js} +2 -2
- package/dist/scripts/{CA2wPtyp.chunk.js.map → C_AYa87x.chunk.js.map} +1 -1
- package/dist/scripts/{B0OGvFw2.chunk.js → CbOOCRVJ.chunk.js} +2 -2
- package/dist/scripts/{B0OGvFw2.chunk.js.map → CbOOCRVJ.chunk.js.map} +1 -1
- package/dist/scripts/{9xHo2Cwe.chunk.js → CinRjwth.chunk.js} +2 -2
- package/dist/scripts/{9xHo2Cwe.chunk.js.map → CinRjwth.chunk.js.map} +1 -1
- package/dist/scripts/{oxlQycmi.chunk.js → CjXJ8oFf.chunk.js} +2 -2
- package/dist/scripts/{oxlQycmi.chunk.js.map → CjXJ8oFf.chunk.js.map} +1 -1
- package/dist/scripts/{C_hVa7Ra.chunk.js → CkEsSdbO.chunk.js} +2 -2
- package/dist/scripts/{C_hVa7Ra.chunk.js.map → CkEsSdbO.chunk.js.map} +1 -1
- package/dist/scripts/{BzaGFUjc.chunk.js → CmWKgt7c.chunk.js} +2 -2
- package/dist/scripts/{BzaGFUjc.chunk.js.map → CmWKgt7c.chunk.js.map} +1 -1
- package/dist/scripts/{BRCI_rEH.chunk.js → Co6EjRu3.chunk.js} +2 -2
- package/dist/scripts/{BRCI_rEH.chunk.js.map → Co6EjRu3.chunk.js.map} +1 -1
- package/dist/scripts/{D2RVG0Pu.chunk.js → Cqky1Knl.chunk.js} +2 -2
- package/dist/scripts/{D2RVG0Pu.chunk.js.map → Cqky1Knl.chunk.js.map} +1 -1
- package/dist/scripts/{C0CSgPvj.chunk.js → CsaYiq-6.chunk.js} +2 -2
- package/dist/scripts/{C0CSgPvj.chunk.js.map → CsaYiq-6.chunk.js.map} +1 -1
- package/dist/scripts/{DqAsIeVB.chunk.js → Ct-hl94f.chunk.js} +2 -2
- package/dist/scripts/{DqAsIeVB.chunk.js.map → Ct-hl94f.chunk.js.map} +1 -1
- package/dist/scripts/{kpU1ILSr.chunk.js → CwuTuPLO.chunk.js} +2 -2
- package/dist/scripts/{kpU1ILSr.chunk.js.map → CwuTuPLO.chunk.js.map} +1 -1
- package/dist/scripts/{-hO5xjbU.chunk.js → Cy191NLr.chunk.js} +2 -2
- package/dist/scripts/{-hO5xjbU.chunk.js.map → Cy191NLr.chunk.js.map} +1 -1
- package/dist/scripts/{BswE1yhG.chunk.js → CzBvFLUu.chunk.js} +2 -2
- package/dist/scripts/{BswE1yhG.chunk.js.map → CzBvFLUu.chunk.js.map} +1 -1
- package/dist/scripts/{BZnDGuzQ.chunk.js → DCGOcoWo.chunk.js} +2 -2
- package/dist/scripts/{BZnDGuzQ.chunk.js.map → DCGOcoWo.chunk.js.map} +1 -1
- package/dist/scripts/{DIFawdym.chunk.js → DEfSuFug.chunk.js} +2 -2
- package/dist/scripts/{DIFawdym.chunk.js.map → DEfSuFug.chunk.js.map} +1 -1
- package/dist/scripts/{B67qUxbj.chunk.js → DFNZXjHy.chunk.js} +2 -2
- package/dist/scripts/{B67qUxbj.chunk.js.map → DFNZXjHy.chunk.js.map} +1 -1
- package/dist/scripts/{Cliq624L.chunk.js → DGDSZYW9.chunk.js} +2 -2
- package/dist/scripts/{Cliq624L.chunk.js.map → DGDSZYW9.chunk.js.map} +1 -1
- package/dist/scripts/{W3L3GnYz.chunk.js → DLxCyfTf.chunk.js} +2 -2
- package/dist/scripts/{W3L3GnYz.chunk.js.map → DLxCyfTf.chunk.js.map} +1 -1
- package/dist/scripts/{DeC-NkSi.chunk.js → DQ7Osv3q.chunk.js} +2 -2
- package/dist/scripts/{DeC-NkSi.chunk.js.map → DQ7Osv3q.chunk.js.map} +1 -1
- package/dist/scripts/{mj8E03dO.chunk.js → DRDYq9ZL.chunk.js} +2 -2
- package/dist/scripts/{mj8E03dO.chunk.js.map → DRDYq9ZL.chunk.js.map} +1 -1
- package/dist/scripts/{oWzYOkEl.chunk.js → DSQI-Jdp.chunk.js} +2 -2
- package/dist/scripts/{oWzYOkEl.chunk.js.map → DSQI-Jdp.chunk.js.map} +1 -1
- package/dist/scripts/{CMoQks36.chunk.js → DSwVduDL.chunk.js} +2 -2
- package/dist/scripts/{CMoQks36.chunk.js.map → DSwVduDL.chunk.js.map} +1 -1
- package/dist/scripts/{Bn31qbi-.chunk.js → DUmKCSoR.chunk.js} +2 -2
- package/dist/scripts/{Bn31qbi-.chunk.js.map → DUmKCSoR.chunk.js.map} +1 -1
- package/dist/scripts/{B2pkApo6.chunk.js → DVisFoDC.chunk.js} +2 -2
- package/dist/scripts/{B2pkApo6.chunk.js.map → DVisFoDC.chunk.js.map} +1 -1
- package/dist/scripts/{aYbKmndA.chunk.js → DWtr2GDr.chunk.js} +2 -2
- package/dist/scripts/{aYbKmndA.chunk.js.map → DWtr2GDr.chunk.js.map} +1 -1
- package/dist/scripts/{CKJlxYxE.chunk.js → DXeWv8xM.chunk.js} +2 -2
- package/dist/scripts/{CKJlxYxE.chunk.js.map → DXeWv8xM.chunk.js.map} +1 -1
- package/dist/scripts/{CD7xQQSj.chunk.js → DZZlWrzc.chunk.js} +2 -2
- package/dist/scripts/{CD7xQQSj.chunk.js.map → DZZlWrzc.chunk.js.map} +1 -1
- package/dist/scripts/D_yZCyl0.chunk.js +2 -0
- package/dist/scripts/{nYKnuiKr.chunk.js.map → D_yZCyl0.chunk.js.map} +1 -1
- package/dist/scripts/{Dbdf7QGx.chunk.js → Da9-cwkH.chunk.js} +2 -2
- package/dist/scripts/{Dbdf7QGx.chunk.js.map → Da9-cwkH.chunk.js.map} +1 -1
- package/dist/scripts/{B9Zy84TP.chunk.js → DdJUaS75.chunk.js} +2 -2
- package/dist/scripts/{B9Zy84TP.chunk.js.map → DdJUaS75.chunk.js.map} +1 -1
- package/dist/scripts/{DVd5A_3v.chunk.js → DhNUjn7p.chunk.js} +2 -2
- package/dist/scripts/{DVd5A_3v.chunk.js.map → DhNUjn7p.chunk.js.map} +1 -1
- package/dist/scripts/{C6_0NPy2.chunk.js → Dhpe3VD3.chunk.js} +2 -2
- package/dist/scripts/{C6_0NPy2.chunk.js.map → Dhpe3VD3.chunk.js.map} +1 -1
- package/dist/scripts/DiJ1txP6.chunk.js +2 -0
- package/dist/scripts/{VBw4HYiM.chunk.js.map → DiJ1txP6.chunk.js.map} +1 -1
- package/dist/scripts/{C5UlFqqr.chunk.js → DjeFO5jj.chunk.js} +2 -2
- package/dist/scripts/{C5UlFqqr.chunk.js.map → DjeFO5jj.chunk.js.map} +1 -1
- package/dist/scripts/{C37FAa5c.chunk.js → Dn7S7HZe.chunk.js} +2 -2
- package/dist/scripts/{C37FAa5c.chunk.js.map → Dn7S7HZe.chunk.js.map} +1 -1
- package/dist/scripts/{BQEr0IGt.chunk.js → Duy0OOKL.chunk.js} +2 -2
- package/dist/scripts/{BQEr0IGt.chunk.js.map → Duy0OOKL.chunk.js.map} +1 -1
- package/dist/scripts/{DEvwqrCo.chunk.js → DxLg_mEO.chunk.js} +2 -2
- package/dist/scripts/{DEvwqrCo.chunk.js.map → DxLg_mEO.chunk.js.map} +1 -1
- package/dist/scripts/{D9ECiiu8.chunk.js → HYIMjXwZ.chunk.js} +2 -2
- package/dist/scripts/{D9ECiiu8.chunk.js.map → HYIMjXwZ.chunk.js.map} +1 -1
- package/dist/scripts/{9gPNCjBk.chunk.js → J651bFfk.chunk.js} +2 -2
- package/dist/scripts/{9gPNCjBk.chunk.js.map → J651bFfk.chunk.js.map} +1 -1
- package/dist/scripts/{Y40qqQUW.chunk.js → JZmjeIJo.chunk.js} +2 -2
- package/dist/scripts/{Y40qqQUW.chunk.js.map → JZmjeIJo.chunk.js.map} +1 -1
- package/dist/scripts/{BJG50MLZ.chunk.js → SI_6LGjL.chunk.js} +2 -2
- package/dist/scripts/{BJG50MLZ.chunk.js.map → SI_6LGjL.chunk.js.map} +1 -1
- package/dist/scripts/{CiXtVo-A.chunk.js → Wfuxh2YT.chunk.js} +2 -2
- package/dist/scripts/Wfuxh2YT.chunk.js.map +1 -0
- package/dist/scripts/{BvfTundg.chunk.js → Y2CHWdPG.chunk.js} +2 -2
- package/dist/scripts/{BvfTundg.chunk.js.map → Y2CHWdPG.chunk.js.map} +1 -1
- package/dist/scripts/{B57_c_CS.chunk.js → Y5a0i_3c.chunk.js} +2 -2
- package/dist/scripts/{B57_c_CS.chunk.js.map → Y5a0i_3c.chunk.js.map} +1 -1
- package/dist/scripts/{app-BwZTeN0O.js → app-cabh1nNK.js} +3 -3
- package/dist/scripts/{app-BwZTeN0O.js.map → app-cabh1nNK.js.map} +1 -1
- package/dist/scripts/{CW89a4Mj.chunk.js → b-AUm3ni.chunk.js} +2 -2
- package/dist/scripts/{CW89a4Mj.chunk.js.map → b-AUm3ni.chunk.js.map} +1 -1
- package/dist/scripts/{DToTQA1H.chunk.js → fqbX9HRm.chunk.js} +2 -2
- package/dist/scripts/{DToTQA1H.chunk.js.map → fqbX9HRm.chunk.js.map} +1 -1
- package/dist/scripts/{DLQTbn-d.chunk.js → oVMIGZTl.chunk.js} +2 -2
- package/dist/scripts/{DLQTbn-d.chunk.js.map → oVMIGZTl.chunk.js.map} +1 -1
- package/dist/scripts/{D9BoZZhI.chunk.js → tbYGeGLS.chunk.js} +2 -2
- package/dist/scripts/{D9BoZZhI.chunk.js.map → tbYGeGLS.chunk.js.map} +1 -1
- package/dist/scripts/{xWtPEEJC.chunk.js → uGV8Ulpl.chunk.js} +2 -2
- package/dist/scripts/{xWtPEEJC.chunk.js.map → uGV8Ulpl.chunk.js.map} +1 -1
- package/dist/scripts/{CNiWunhi.chunk.js → uyrSls2s.chunk.js} +2 -2
- package/dist/scripts/{CNiWunhi.chunk.js.map → uyrSls2s.chunk.js.map} +1 -1
- package/dist/scripts/{DXtSLojN.chunk.js → vJWLdqFY.chunk.js} +2 -2
- package/dist/scripts/{DXtSLojN.chunk.js.map → vJWLdqFY.chunk.js.map} +1 -1
- package/dist/scripts/{4sHzAWaU.chunk.js → wlWC_CCa.chunk.js} +2 -2
- package/dist/scripts/{4sHzAWaU.chunk.js.map → wlWC_CCa.chunk.js.map} +1 -1
- package/dist/scripts/wmclIpxx.chunk.js +2 -0
- package/dist/scripts/{JVT9lUoz.chunk.js.map → wmclIpxx.chunk.js.map} +1 -1
- package/dist/scripts/{o-4-XLY2.chunk.js → zBOmHm2e.chunk.js} +2 -2
- package/dist/scripts/{o-4-XLY2.chunk.js.map → zBOmHm2e.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/0mGPhW9k.chunk.js +0 -2
- package/dist/scripts/BDys2rrG.chunk.js +0 -2
- package/dist/scripts/Cfw5zASx.chunk.js +0 -2
- package/dist/scripts/CiXtVo-A.chunk.js.map +0 -1
- package/dist/scripts/JVT9lUoz.chunk.js +0 -2
- package/dist/scripts/VBw4HYiM.chunk.js +0 -2
- package/dist/scripts/nYKnuiKr.chunk.js +0 -2
- package/dist/scripts/zNwtPBUz.chunk.js +0 -2
- package/vite.config.ts +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UxXf3AJv.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":"C5DBZwej.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,2 +1,2 @@
|
|
|
1
|
-
import{a3 as A,aD as m,ad as d,ac as T,aI as r,ae as l,af as p,L as V,U as g,A as b,a as f,b as h,a6 as k}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{a3 as A,aD as m,ad as d,ac as T,aI as r,ae as l,af as p,L as V,U as g,A as b,a as f,b as h,a6 as k}from"./app-cabh1nNK.js";import{A as w}from"./C_AYa87x.chunk.js";const C="tv.addRequests",i=V.encloseNamespace(C);function y(u,a,o){const v=A(m.config());return function(e){var c;if(!a)return[];const t=u==="preview",n={id:e.id,name:e.title},s=t?d.VideoItemPreview:d.VideoListItem;return[{label:t?i("addVideo"):"",svg:t?void 0:w,tooltip:t?"":i("addVideo"),className:t?"btn btn-dark me-2 text-nowrap":"btn",button:!0,onClick:()=>{b.trigger({application:h.TV,action:f.Tv.ADD,args:[a.code,e.id],params:{currentTime:Math.floor(+(o==null?void 0:o.currentTime()))||void 0}})},analyticsData:n,analyticsOptions:{actionType:p.Click,entity:l.Video,descriptor:r.AddToWorkspace,location:s,workflowPhase:T.Start}},{label:i("editVideo"),href:g.urlBuilder(`${(c=v.data)==null?void 0:c.cloudEditorUrl}/tv/${e.globalId}`,{product:k.Exchange}),openInNewTab:!0,analyticsData:n,analyticsOptions:{actionType:p.Click,entity:l.Video,location:s,descriptor:r.EditVideo}}]}}export{y as u};
|
|
2
|
+
//# sourceMappingURL=C6BGhDq3.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"C6BGhDq3.chunk.js","sources":["../../src/apps/tv/hooks/useGetTvActions.ts"],"sourcesContent":["import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext, UserAction, VideoActionDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { AddVideoSvg } from 'libs/shared/images/svg/actions/AddVideoSvg';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\nimport { ExchangeConfig } from 'shared/interfaces/ExchangeConfig';\n\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nconst namespace = 'tv.addRequests';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype Location = 'preview' | 'video-list';\n\nexport function useGetTvActions(location: Location, region: TvRegion, playerRef?: PlayerReference) {\n const config = Flight.useBasicFetch<ExchangeConfig>(ConfigRequests.config());\n \n return function getTvActions(program: TvProgram): ActionOptions[] {\n if (!region)\n return [];\n\n const isPreview = location === 'preview';\n const analyticsData = { id: program.id, name: program.title };\n const locationContext = isPreview ? LocationContext.VideoItemPreview : LocationContext.VideoListItem;\n\n // TODO: Register analytics for all actions\n return [{\n label: isPreview ? getPhrase('addVideo') : '',\n svg: !isPreview ? AddVideoSvg : undefined,\n tooltip: isPreview ? '' : getPhrase('addVideo'),\n className: isPreview ? 'btn btn-dark me-2 text-nowrap' : 'btn',\n button: true,\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ADD,\n args: [ region.code, program.id ],\n params: {\n currentTime: Math.floor(+playerRef?.currentTime()) || undefined\n }\n });\n },\n analyticsData,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Video,\n descriptor: VideoActionDescriptor.AddToWorkspace,\n location: locationContext,\n workflowPhase: WorkflowPhase.Start\n }\n }, {\n label: getPhrase('editVideo'),\n href: UrlHelper.urlBuilder(\n `${config.data?.cloudEditorUrl}/tv/${program.globalId}`,\n { product: ProductId.Exchange }\n ),\n openInNewTab: true,\n analyticsData,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Video,\n location: locationContext,\n descriptor: VideoActionDescriptor.EditVideo\n }\n }];\n };\n}"],"names":["namespace","getPhrase","LanguageService","useGetTvActions","location","region","playerRef","config","Flight.useBasicFetch","ConfigRequests","program","isPreview","analyticsData","locationContext","LocationContext","AddVideoSvg","Core.AppLinkHelper","AppChannels","Actions","UserAction","EntityType","VideoActionDescriptor","WorkflowPhase","UrlHelper","_a","ProductId"],"mappings":"0KAoBA,MAAMA,EAAY,iBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAIrD,SAASG,EAAgBC,EAAoBC,EAAkBC,EAA6B,CACjG,MAAMC,EAASC,EAAqCC,EAAe,QAAQ,EAE3E,OAAO,SAAsBC,EAAqC,OAChE,GAAI,CAACL,EACH,MAAO,CAAA,EAET,MAAMM,EAAYP,IAAa,UACzBQ,EAAgB,CAAE,GAAIF,EAAQ,GAAI,KAAMA,EAAQ,KAAA,EAChDG,EAAkBF,EAAYG,EAAgB,iBAAmBA,EAAgB,cAGvF,MAAO,CAAC,CACN,MAAOH,EAAYV,EAAU,UAAU,EAAI,GAC3C,IAAMU,EAA0B,OAAdI,EAClB,QAASJ,EAAY,GAAKV,EAAU,UAAU,EAC9C,UAAWU,EAAY,gCAAkC,MACzD,OAAQ,GACR,QAAS,IAAM,CACbK,EAAmB,QAAQ,CACzB,YAAaC,EAAY,GACzB,OAAQC,EAAQ,GAAG,IACnB,KAAM,CAAEb,EAAO,KAAMK,EAAQ,EAAG,EAChC,OAAQ,CACN,YAAa,KAAK,MAAM,EAACJ,GAAA,YAAAA,EAAW,cAAa,GAAK,MAAA,CACxD,CACD,CACH,EACA,cAAAM,EACA,iBAAkB,CAChB,WAAYO,EAAW,MACvB,OAAQC,EAAW,MACnB,WAAYC,EAAsB,eAClC,SAAUR,EACV,cAAeS,EAAc,KAAA,CAC/B,EACC,CACD,MAAOrB,EAAU,WAAW,EAC5B,KAAMsB,EAAU,WACd,IAAGC,EAAAjB,EAAO,OAAP,YAAAiB,EAAa,cAAc,OAAOd,EAAQ,QAAQ,GACrD,CAAE,QAASe,EAAU,QAAA,CAAS,EAEhC,aAAc,GACd,cAAAb,EACA,iBAAkB,CAChB,WAAYO,EAAW,MACvB,OAAQC,EAAW,MACnB,SAAUP,EACV,WAAYQ,EAAsB,SAAA,CACpC,CACD,CACH,CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"C6x-ZqLl.chunk.js","sources":["../../../../libs/common/src/backbone/utils/ScrollHelper.ts"],"sourcesContent":["import { Radio } from 'backbone';\n\nimport { CommonChannels } from '../constants/CommonChannels';\n\nexport const ScrollHelper = {\n // Will prevent scrolling to the top of the page when applinks are triggered\n preventScrollTop(): void {\n Radio.channel(CommonChannels.SHELL).trigger('prevent:scroll:top');\n }\n};"],"names":["ScrollHelper","Radio","CommonChannels"],"mappings":"+CAIO,MAAMA,EAAe,CAE1B,kBAAyB,CACvBC,EAAAA,MAAM,QAAQC,EAAe,KAAK,EAAE,QAAQ,oBAAoB,CAClE,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e,av as x,G as d,K as b,F as g,aq as j,ab as v,ag as N,Q as f,r as h,bK as y,bB as k}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{j as e,av as x,G as d,K as b,F as g,aq as j,ab as v,ag as N,Q as f,r as h,bK as y,bB as k}from"./app-cabh1nNK.js";function T(n){return e.jsx("svg",{...n,children:e.jsx("path",{d:"M12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3",fill:"currentColor"})})}const C="_dropdownToggle_1jkd1_1",S={dropdownToggle:C};function p(){return e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{padding:"0.53125rem 1rem"},children:e.jsx("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})}),e.jsx("div",{style:{padding:"0.53125rem 1rem"},children:e.jsx("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})}),e.jsx("div",{style:{padding:"0.53125rem 1rem"},children:e.jsx("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})}),e.jsx("div",{style:{padding:"0.53125rem 1rem"},children:e.jsx("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})})]})}function r(n){let o="dropdown-item";return n&&(o+=` ${n}`),o}function u(n){const o=g.isFunction(n.action.label)?n.action.label():e.jsx(e.Fragment,{children:n.action.label});if(n.action.appLink)return e.jsxs(j,{appLink:n.action.appLink,onClick:n.action.onClick,className:r(n.action.className),analyticsData:n.action.analyticsData,analyticsOptions:n.action.analyticsOptions,openInNewTab:n.action.openInNewTab,disabled:n.action.disabled,children:[n.action.svg&&e.jsx(d,{svg:n.action.svg,className:"d-inline-block svg-container me-2 align-middle"}),e.jsx("span",{className:"align-middle",children:o})]});function l(i){i.preventDefault(),n.action.analyticsData&&n.action.analyticsOptions&&v.logUserAction(n.action.analyticsData,n.action.analyticsOptions),g.isFunction(n.action.onClick)&&n.action.onClick(),n.action.href&&N.PageLoad(n.action.href,n.action.openInNewTab)}return n.action.href?e.jsxs("a",{className:r(n.action.className),onClick:l,href:n.action.href,children:[n.action.svg&&e.jsx(d,{svg:n.action.svg,className:"d-inline-block svg-container me-2 align-middle"}),e.jsx("span",{className:"align-middle",children:o})]}):e.jsxs("span",{className:`cursor-pointer ${r(n.action.className)}`,onClick:l,role:"button",tabIndex:0,onKeyDown:i=>i.key==="Enter"&&l(i),children:[n.action.svg&&e.jsx(d,{svg:n.action.svg,className:"d-inline-block svg-container me-2"}),o]})}w.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:f.Small};function w(n){if(!n.actions||!n.actions.length)return e.jsx(e.Fragment,{});const o=n.actions.some(t=>t.lazyPlaceholder);let l="dropdown";n.className&&(l+=` ${n.className}`);const i=`actions-dropdown-${x.getRandomInt()}`;let s=`dropdown-toggle px-0 ${S.dropdownToggle}`;n.dropdownToggleClassName&&(s+=` ${n.dropdownToggleClassName}`);let a;return e.jsxs("div",{className:l,children:[e.jsx("button",{className:s,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"More actions dropdown",onClick:o?n.fetchMore:null,children:e.jsx(d,{svg:T,size:n.dropdownToggleSvgSize})}),e.jsx("ul",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal","aria-labelledby":i,children:o?e.jsx(p,{}):n.actions.map((t,c)=>{const m=a!==void 0&&a!==t.group;return a=t.group,t.tooltip?e.jsxs("li",{children:[m&&e.jsx("hr",{className:"dropdown-divider",role:"separator"}),e.jsx(b,{title:t.tooltip,spanHack:!0,children:e.jsx(u,{action:t})})]},c):e.jsxs("li",{children:[m&&e.jsx("hr",{className:"dropdown-divider",role:"separator"}),e.jsx(u,{action:t})]},c)})})]})}function z(n){const o=h.useMemo(()=>n.actions.sort((a,t)=>a.order-t.order),[n.actions]),l=[],i=[];o.forEach(a=>{a.button?l.push(a):i.push(a)});let s="d-flex";return n.className&&(s+=` ${n.className}`),!l.length&&!i.length?e.jsx(e.Fragment,{}):e.jsxs("div",{className:s,children:[l.length?l.map((a,t)=>e.jsx(h.Fragment,{children:(()=>{if(a.label){const c=g.isFunction(a.label)?a.label():e.jsx(e.Fragment,{children:a.label});return e.jsx(y,{appLink:a.appLink,href:a.href,onClick:a.onClick,svg:a.svg,svgSize:n.dropdownToggleSvgSize,className:a.className,tooltip:a.tooltip,showSpinner:a.showSpinner,analyticsData:a.analyticsData,analyticsOptions:a.analyticsOptions,openInNewTab:a.openInNewTab,disabled:a.disabled,children:c})}return e.jsx(k,{appLink:a.appLink,href:a.href,onClick:a.onClick,svg:a.svg,className:a.className,analyticsData:a.analyticsData,analyticsOptions:a.analyticsOptions,openInNewTab:a.openInNewTab,disabled:a.disabled,showBorder:a.showBorder,customSize:n.customSize,ariaLabel:a.tooltip,tooltip:a.tooltip})})()},t)):e.jsx(e.Fragment,{}),n.sortComponent&&n.sortComponent,i.length?e.jsx(w,{actions:i,dropdownToggleClassName:n.actionsDropdownClassName,dropdownToggleSvgSize:n.dropdownToggleSvgSize,fetchMore:n.fetchMore}):e.jsx(e.Fragment,{})]})}export{z as A};
|
|
2
|
+
//# sourceMappingURL=CFa8QduK.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bt6iO6Kj.chunk.js","sources":["../../../../libs/shared/src/images/svg/actions/MoreSvg.tsx","../../../../libs/shared/src/components/actions/ActionsDropdown.tsx","../../../../libs/shared/src/components/actions/Actions.tsx"],"sourcesContent":["import React from 'react';\n\nexport function MoreSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MoreSvg } from 'libs/shared/images/svg/actions/MoreSvg';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.module.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label()\n : <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svg && <SvgContainer svg={props.action.svg} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svg && <SvgContainer svg={props.action.svg} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svg && <SvgContainer svg={props.action.svg} className='d-inline-block svg-container me-2' />}\n {label}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n aria-label={'More actions dropdown'}\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svg={MoreSvg} size={props.dropdownToggleSvgSize} />\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </li>\n );\n }\n \n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </li>\n );\n })\n }\n </ul>\n </div>\n );\n}","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svg?: SvgIcon;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n customSize?: boolean;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label: JSX.Element = FunctionHelper.isFunction(a.label)\n ? a.label()\n : <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svg={a.svg}\n svgSize={props.dropdownToggleSvgSize}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label}\n </ActionButton>\n );\n }\n\n return (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svg={a.svg}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n customSize={props.customSize}\n ariaLabel={a.tooltip}\n tooltip={a.tooltip}\n />\n );\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </div>\n );\n}"],"names":["MoreSvg","props","jsx","LazyDropdownItems","jsxs","Fragment","getDropdownItemClassName","actionClassName","className","ActionsDropdownItem","label","FunctionHelper","AppLink","SvgContainer","onClick","e","AnalyticsHelper","Core.LocationUtils","ActionsDropdown","SvgContainerSize","isLazy","a","dropdownToggleId","RandomHelper","dropdownToggleClassName","styles","currentGroup","idx","showDivider","Tooltip","Actions","orderedActions","React.useMemo","b","buttonActions","moreActions","React.Fragment","ActionButton","IconButton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CFa8QduK.chunk.js","sources":["../../../../libs/shared/src/images/svg/actions/MoreSvg.tsx","../../../../libs/shared/src/components/actions/ActionsDropdown.tsx","../../../../libs/shared/src/components/actions/Actions.tsx"],"sourcesContent":["import React from 'react';\n\nexport function MoreSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MoreSvg } from 'libs/shared/images/svg/actions/MoreSvg';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.module.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label()\n : <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svg && <SvgContainer svg={props.action.svg} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svg && <SvgContainer svg={props.action.svg} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svg && <SvgContainer svg={props.action.svg} className='d-inline-block svg-container me-2' />}\n {label}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n aria-label={'More actions dropdown'}\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svg={MoreSvg} size={props.dropdownToggleSvgSize} />\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </li>\n );\n }\n \n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </li>\n );\n })\n }\n </ul>\n </div>\n );\n}","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svg?: SvgIcon;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n customSize?: boolean;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label: JSX.Element = FunctionHelper.isFunction(a.label)\n ? a.label()\n : <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svg={a.svg}\n svgSize={props.dropdownToggleSvgSize}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label}\n </ActionButton>\n );\n }\n\n return (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svg={a.svg}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n customSize={props.customSize}\n ariaLabel={a.tooltip}\n tooltip={a.tooltip}\n />\n );\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </div>\n );\n}"],"names":["MoreSvg","props","jsx","LazyDropdownItems","jsxs","Fragment","getDropdownItemClassName","actionClassName","className","ActionsDropdownItem","label","FunctionHelper","AppLink","SvgContainer","onClick","e","AnalyticsHelper","Core.LocationUtils","ActionsDropdown","SvgContainerSize","isLazy","a","dropdownToggleId","RandomHelper","dropdownToggleClassName","styles","currentGroup","idx","showDivider","Tooltip","Actions","orderedActions","React.useMemo","b","buttonActions","moreActions","React.Fragment","ActionButton","IconButton"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as a,W as U,ad as I,ae as O,af as H,A as B,c as $,R,aB as L,aq as W,a as T,b as x,a3 as p,aT as V,aU as G,l as Y,L as F,aD as q}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{j as a,W as U,ad as I,ae as O,af as H,A as B,c as $,R,aB as L,aq as W,a as T,b as x,a3 as p,aT as V,aU as G,l as Y,L as F,aD as q}from"./app-cabh1nNK.js";import{P as K}from"./CV6qoMzB.chunk.js";import{h as Z}from"./C3YXHQU-.chunk.js";import{u as z}from"./D_yZCyl0.chunk.js";import{P as _,A as S,a as X}from"./Y5a0i_3c.chunk.js";import{T as J,a as Q}from"./zBOmHm2e.chunk.js";import{T as ee,a as ae}from"./CjXJ8oFf.chunk.js";import{T as f}from"./DGDSZYW9.chunk.js";import{u as te}from"./wmclIpxx.chunk.js";import{u as ne}from"./uGV8Ulpl.chunk.js";import{t as se}from"./DZZlWrzc.chunk.js";import{L as re}from"./Ct-hl94f.chunk.js";import{T as oe}from"./DWtr2GDr.chunk.js";import"./BSIHfhEC.chunk.js";import"./BlDVEZsX.chunk.js";import"./wlWC_CCa.chunk.js";import"./BtTTlrnZ.chunk.js";import"./CbOOCRVJ.chunk.js";import"./B3cy6PVV.chunk.js";import"./Duy0OOKL.chunk.js";const ie="_pillTabSelector_1d8n6_1",ce={pillTabSelector:ie},A=["All","#","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],le={"#":"0"},de={actionType:H.Click,entity:O.Url,location:I.MagicTabs};function me(e,s){if(!e)return;if(e==="0")return"#";const r=A.find(t=>t.toUpperCase()===e.toUpperCase());if(!(r==="All"&&!s))return r}function ge(e){return A.map(s=>{if(s==="All"&&!e.showAll)return;const r=e.getItemAppLink(le[s]??s);return{name:s,appLink:r,active:e.selected===s,analyticsData:{name:s,url:B.getHref(r)},analyticsOptions:de}}).filter(Boolean)}function ue(e){const s=me(e.selected,e.showAll),r=ge({selected:s,showAll:e.showAll,getItemAppLink:e.getItemAppLink});return a.jsx("div",{className:U(e.noMarginBottom?"mb-0":"mb-3",e.className),children:a.jsx(K,{tabs:r,className:ce.pillTabSelector,enableSmallScreenSupport:e.enableSmallScreenSupport,formatDisplayText:e.formatDisplayText})})}const pe="_dateContainer_b9acj_1",he="_hover_b9acj_4",fe="_channelLogo_b9acj_7",Te="_channelLogoContainer_b9acj_10",xe="_programsContainer_b9acj_13",je="_date_b9acj_1",ve="_thumbnail_b9acj_27",g={dateContainer:pe,hover:he,channelLogo:fe,channelLogoContainer:Te,programsContainer:xe,date:je,thumbnail:ve};function be(e){function s(r){const t=$.findWhere(e.channels,{name:r});return t==null?void 0:t.logoUrl}return a.jsx("div",{className:"mb-2",children:e.groupedPrograms.map(([r,t])=>a.jsxs("div",{className:"border-top d-flex pt-3 pb-2",children:[a.jsx("div",{className:`${g.channelLogoContainer} flex-shrink-0 mb-3`,children:a.jsx("img",{src:s(r),alt:r,className:`${g.channelLogo} ms-4`})}),a.jsx("div",{className:"w-100",children:t.map(([i,n])=>a.jsx(Le,{date:i,programs:n,tvPreviewUrls:e.tvPreviewUrls},i))})]},r))})}function Le(e){const[s,r]=R.useState();function t(n){switch(n.programType){case _.Video:return{application:x.TV,action:T.Tv.PREVIEW,args:[n.regionCode,n.id]};case _.Audio:return{application:x.TV,action:T.Tv.RADIO_DOWNLOAD,args:[n.id]}}}function i(n){const j=e.tvPreviewUrls[n.regionCode],m=n.globalId.split("-").join("");return`${j}/thumbnail/${m}.jpg`}return a.jsx("div",{className:`${g.dateContainer} ${s?g.hover:""} py-2 px-3 rounded`,children:a.jsxs("div",{className:"d-flex align-items-center",children:[a.jsx("div",{className:`${g.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`,children:a.jsx(re,{src:i(s||e.programs[0]),alt:L.format(e.date,"D MMM"),extraClasses:"w-100 rounded"})}),a.jsxs("p",{className:`${g.date} fw-semibold flex-shrink-0 mb-0`,children:[L.format(e.date,"D MMM"),":"]}),a.jsx("div",{className:`${g.programsContainer} d-flex flex-wrap`,children:e.programs.map(n=>a.jsx("div",{onMouseEnter:()=>r(n),onMouseLeave:()=>r(null),children:a.jsx(W,{appLink:t(n),className:"text-decoration-none",children:a.jsx(oe,{program:n,showEndTime:!0})},n.id)},n.id))})]},e.date)})}const Ae="tv.programs",Pe=F.encloseNamespace(Ae),Ce=/^[a-zA-Z]/;function qe(e){const s=e.startsWith||"A",r=p(q.config()),t=p(f.region(e.region)),i=p(f.regions()),n=p(f.dateRange(e.region)),j=p(t.data&&f.channels(t.data.code)),m=p(t.data&&n.data&&f.programsByLetter(t.data.code,s,n.data.startDate,n.data.endDate)),{setRegion:N}=ne(),{showTvGuide:w}=V(),y=R.useMemo(()=>{var C;if(!((C=m.data)!=null&&C.length))return[];const c={};m.data.forEach(o=>{e.startsWith==="0"&&Ce.test(o.title)||(c[o.title]||(c[o.title]=[]),c[o.title].push(o))});let l=Object.entries(c);return l=l.sort(([o],[v])=>o<v?-1:1),l.map(([o,v])=>{const E=v.reduce((d,u)=>{const h=u.channelName;d[h]||(d[h]={});const D=se(u.startTime,u.timeZone),b=L.format(D,"YYYY-MM-DD");return d[h][b]||(d[h][b]=[]),d[h][b].push(u),d},{}),k=Object.entries(E).map((([d,u])=>[d,Object.entries(u)]));return[o,k]})},[m.data]);[...A,"0"].includes(s)||Z(G.BadRequest),te(t),z([i,m]),Y({title:Pe("title")});const M=t.hasCompleted&&i.hasCompleted&&n.hasCompleted&&m.hasCompleted&&r.hasCompleted;return a.jsxs(a.Fragment,{children:[a.jsx(ee,{region:t.data}),a.jsxs("div",{className:"d-flex justify-content-between",children:[a.jsx(J,{active:"programs",currentRegion:t.data,showTvGuide:w,config:r.data}),a.jsx(ae,{currentRegion:t.data,regions:i.data,appLink:{application:x.TV,action:T.Tv.PROGRAMS,params:{startsWith:s}},onClick:N})]}),a.jsx(Q,{dateRange:n.data,region:t.data}),a.jsx(ue,{selected:s,getItemAppLink:c=>{var l;return{application:x.TV,action:T.Tv.PROGRAMS,args:[(l=t.data)==null?void 0:l.code],params:{startsWith:c}}}}),M?a.jsx(a.Fragment,{children:a.jsx(S,{children:y.map(([c,l],P)=>a.jsx(S.Header,{title:c,children:a.jsx(be,{groupedPrograms:l,channels:j.data,tvPreviewUrls:r.data.tvPreviewUrls})},P))})}):a.jsx(X,{})]})}export{qe as TvProgramsView};
|
|
2
|
+
//# sourceMappingURL=CG6eaNuu.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C3oO96po.chunk.js","sources":["../../../../libs/shared/src/components/letters-bar/LettersBar.tsx","../../src/apps/tv/views/tv-programs/components/program-selector/ProgramSelector.tsx","../../src/apps/tv/views/tv-programs/TvProgramsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport styles from './letters-bar.module.scss';\n\nexport const ALPHABET = [\n 'All',\n '#',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'\n] as const;\n\ntype LetterBarOptions = typeof ALPHABET[number];\n\nconst LetterParamMap: {[key in LetterBarOptions]?: string} = {\n '#': '0'\n};\n\nconst ANALYTICS_OPTIONS = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n};\n\nfunction getSelectedAlphabet(selected: string, showAll: boolean): LetterBarOptions | undefined {\n if (!selected)\n return;\n \n if (selected === '0')\n return '#';\n\n const alphabet = ALPHABET.find(letter => letter.toUpperCase() === selected.toUpperCase());\n\n if (alphabet === 'All' && !showAll)\n return;\n\n return alphabet;\n}\n\ninterface GenerateTabsOptions {\n selected: string;\n showAll: boolean;\n getItemAppLink: (letter: string) => Core.AppLink;\n}\n\nfunction generateTabs(options: GenerateTabsOptions): PillTab[] {\n return ALPHABET.map(letter => {\n if (letter === 'All' && !options.showAll)\n return;\n\n const appLink = options.getItemAppLink(LetterParamMap[letter] ?? letter);\n\n return {\n name: letter,\n appLink,\n active: options.selected === letter,\n analyticsData: {\n name: letter,\n url: Core.AppLinkHelper.getHref(appLink)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n };\n }).filter(Boolean);\n}\n\ninterface LettersBarProps {\n selected: string;\n getItemAppLink: (letter: string) => Core.AppLink;\n showAll?: boolean;\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n className?: string;\n noMarginBottom?: boolean;\n}\n\nexport function LettersBar(props: LettersBarProps): JSX.Element {\n const localSelected = getSelectedAlphabet(props.selected, props.showAll);\n\n const tabs = generateTabs({\n selected: localSelected,\n showAll: props.showAll,\n getItemAppLink: props.getItemAppLink\n });\n \n return (\n <div className={classNames(props.noMarginBottom ? 'mb-0' : 'mb-3', props.className)}>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTabSelector}\n enableSmallScreenSupport={props.enableSmallScreenSupport}\n formatDisplayText={props.formatDisplayText}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { ProgramType } from 'apps/tv/interfaces/enums/ProgramType';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\n\nimport styles from './program-selector.module.scss';\n\ninterface ProgramSelectorProps {\n groupedPrograms: [string, [string, TvProgram[]][]][];\n channels: TvChannel[];\n tvPreviewUrls: { [region: string]: string };\n}\n\nexport function ProgramSelector(props: ProgramSelectorProps) {\n function getChannelLogo(channel: string) {\n const matchingChannel = ArrayHelper.findWhere(props.channels, { name: channel });\n return matchingChannel?.logoUrl;\n }\n\n return (\n <div className='mb-2'>\n {props.groupedPrograms.map(([ channel, dates ]) => (\n <div className={`border-top d-flex pt-3 pb-2`} key={channel}>\n <div className={`${styles.channelLogoContainer} flex-shrink-0 mb-3`}>\n <img src={getChannelLogo(channel)} alt={channel} className={`${styles.channelLogo} ms-4`} />\n </div>\n\n <div className='w-100'>\n {dates.map(([ date, programs ]) => (\n <GroupedPrograms key={date} date={date} programs={programs} tvPreviewUrls={props.tvPreviewUrls} />\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\ninterface GroupedProgramsProps {\n date: string;\n programs: TvProgram[];\n tvPreviewUrls: { [region: string]: string };\n}\n\nexport function GroupedPrograms(props: GroupedProgramsProps) {\n const [ hoveredProgram, setHoveredProgram ] = React.useState<TvProgram>();\n\n function getProgramAppLink(program: TvProgram) {\n switch (program.programType) {\n case ProgramType.Video:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ program.regionCode, program.id ]\n };\n case ProgramType.Audio:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.RADIO_DOWNLOAD,\n args: [program.id]\n };\n }\n }\n\n function getThumbnailUrl(program: TvProgram) {\n const previewUrl = props.tvPreviewUrls[program.regionCode];\n const globalId = program.globalId.split('-').join('');\n return `${previewUrl}/thumbnail/${globalId}.jpg`;\n }\n\n return (\n <div\n className={`${styles.dateContainer} ${hoveredProgram ? styles.hover : ''} py-2 px-3 rounded`}\n >\n <div key={props.date} className={`d-flex align-items-center`}>\n <div className={`${styles.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`}>\n <LazyImage\n src={getThumbnailUrl(hoveredProgram || props.programs[0])}\n alt={DateHelper.format(props.date, 'D MMM')}\n extraClasses='w-100 rounded'\n />\n </div>\n <p className={`${styles.date} fw-semibold flex-shrink-0 mb-0`}>{DateHelper.format(props.date, 'D MMM')}:</p>\n <div className={`${styles.programsContainer} d-flex flex-wrap`}>\n {props.programs.map((program: TvProgram) => (\n <div\n key={program.id}\n onMouseEnter={() => setHoveredProgram(program)}\n onMouseLeave={() => setHoveredProgram(null)}\n >\n <AppLink appLink={getProgramAppLink(program)} key={program.id} className='text-decoration-none'>\n <TvProgramTimeBadge program={program} showEndTime />\n </AppLink>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ALPHABET, LettersBar } from 'libs/shared/components/letters-bar/LettersBar';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config } from 'libs/shared/interfaces';\n\nimport { AccordionList } from 'shared/components/accordion-list/AccordionList';\nimport { PartialAccordionList } from 'shared/components/accordion-list/partial-loading/PartialAccordionList';\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvInfoAlert } from 'apps/tv/components/tv-info-alert/TvInfoAlert';\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvTabs } from 'apps/tv/components/tv-tabs/TvTabs';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\nimport { ProgramSelector } from 'apps/tv/views/tv-programs/components/program-selector/ProgramSelector';\n\nconst namespace = 'tv.programs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst FIRST_LETTER_REGEX = /^[a-zA-Z]/;\n\ninterface TvProgramsViewProps {\n region: string;\n startsWith: string;\n}\n\nexport function TvProgramsView(props: TvProgramsViewProps): JSX.Element {\n const startsWith = props.startsWith || 'A';\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const dateRange = Flight.useBasicFetch<TvDateRange>(TvRequests.dateRange(props.region));\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n\n const programs = Flight.useBasicFetch<TvProgram[]>(\n region.data &&\n dateRange.data &&\n TvRequests.programsByLetter(\n region.data.code,\n startsWith,\n dateRange.data.startDate,\n dateRange.data.endDate\n )\n );\n\n const { setRegion } = useSelectedRegion();\n const { showTvGuide } = useLiteUpgrade();\n\n const grouped = React.useMemo(() => {\n if (!programs.data?.length)\n return [] as any[];\n\n const groups: HashObject<TvProgram[]> = {};\n\n programs.data.forEach(program => {\n if (props.startsWith === '0' && FIRST_LETTER_REGEX.test(program.title))\n return;\n\n if (!groups[program.title])\n groups[program.title] = [];\n\n groups[program.title].push(program);\n });\n\n let sorted = Object.entries(groups);\n\n sorted = sorted.sort(([keyA], [keyB]) => (keyA < keyB ? -1 : 1));\n\n const groupedPrograms = sorted.map(([ title, data ]) => {\n const groupedProgram = data.reduce((acc: { [channel: string]: { [date: string]: TvProgram[]} }, program) => {\n const channelKey = program.channelName;\n if (!acc[channelKey]) {\n acc[channelKey] = {};\n }\n \n const startTime = toLocalTime(program.startTime, program.timeZone);\n const dateKey = DateHelper.format(startTime, 'YYYY-MM-DD');\n if (!acc[channelKey][dateKey]) {\n acc[channelKey][dateKey] = [];\n }\n\n acc[channelKey][dateKey].push(program);\n return acc;\n }, {});\n\n const groupedProgramEntries =\n Object\n .entries(groupedProgram)\n .map((([ channel, programs ]) => [ channel, Object.entries(programs) ]));\n \n return [ title, groupedProgramEntries ];\n });\n\n return groupedPrograms as [string, [string, TvProgram[]]];\n }, [programs.data]);\n\n const matchesLetters = [ ...ALPHABET, '0' ].includes(startsWith);\n if (!matchesLetters) {\n handleHttpError(HttpStatus.BadRequest);\n }\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, programs ]);\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n const dataLoaded = (\n region.hasCompleted &&\n regions.hasCompleted &&\n dateRange.hasCompleted &&\n programs.hasCompleted &&\n config.hasCompleted\n );\n\n return (\n <>\n <TvSearchBar region={region.data} />\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='programs'\n currentRegion={region.data}\n showTvGuide={showTvGuide}\n 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.PROGRAMS,\n params: { startsWith }\n }}\n onClick={setRegion}\n />\n </div>\n\n <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n <LettersBar\n selected={startsWith}\n getItemAppLink={letter => ({\n application: AppChannels.TV,\n action: Actions.Tv.PROGRAMS,\n args: [region.data?.code],\n params: { startsWith: letter }\n })}\n />\n\n {dataLoaded ? (\n <>\n <AccordionList>\n {grouped.map(([ title, programs ], index) => (\n <AccordionList.Header key={index} title={title}>\n <ProgramSelector\n groupedPrograms={programs}\n channels={channels.data}\n tvPreviewUrls={config.data.tvPreviewUrls}\n />\n </AccordionList.Header>\n ))}\n </AccordionList>\n </>\n ) : (\n <PartialAccordionList />\n )}\n </>\n );\n}"],"names":["ALPHABET","LetterParamMap","ANALYTICS_OPTIONS","UserAction","EntityType","LocationContext","getSelectedAlphabet","selected","showAll","alphabet","letter","generateTabs","options","appLink","Core.AppLinkHelper","LettersBar","props","localSelected","tabs","jsx","classNames","PillTabSelector","styles","ProgramSelector","getChannelLogo","channel","matchingChannel","ArrayHelper","dates","jsxs","date","programs","GroupedPrograms","hoveredProgram","setHoveredProgram","React","getProgramAppLink","program","ProgramType","AppChannels","Actions","getThumbnailUrl","previewUrl","globalId","LazyImage","DateHelper","AppLink","TvProgramTimeBadge","namespace","getPhrase","LanguageService","FIRST_LETTER_REGEX","TvProgramsView","startsWith","config","Flight.useBasicFetch","ConfigRequests","region","TvRequests","regions","dateRange","channels","setRegion","useSelectedRegion","showTvGuide","useLiteUpgrade","grouped","_a","groups","sorted","keyA","keyB","title","data","groupedProgram","acc","channelKey","startTime","toLocalTime","dateKey","groupedProgramEntries","handleHttpError","HttpStatus","useHandleRegionError","useHandleObjectError","useSetPageMetadata","dataLoaded","Fragment","TvSearchBar","TvTabs","TvRegionSelect","TvInfoAlert","AccordionList","index","PartialAccordionList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CG6eaNuu.chunk.js","sources":["../../../../libs/shared/src/components/letters-bar/LettersBar.tsx","../../src/apps/tv/views/tv-programs/components/program-selector/ProgramSelector.tsx","../../src/apps/tv/views/tv-programs/TvProgramsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport styles from './letters-bar.module.scss';\n\nexport const ALPHABET = [\n 'All',\n '#',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'\n] as const;\n\ntype LetterBarOptions = typeof ALPHABET[number];\n\nconst LetterParamMap: {[key in LetterBarOptions]?: string} = {\n '#': '0'\n};\n\nconst ANALYTICS_OPTIONS = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n};\n\nfunction getSelectedAlphabet(selected: string, showAll: boolean): LetterBarOptions | undefined {\n if (!selected)\n return;\n \n if (selected === '0')\n return '#';\n\n const alphabet = ALPHABET.find(letter => letter.toUpperCase() === selected.toUpperCase());\n\n if (alphabet === 'All' && !showAll)\n return;\n\n return alphabet;\n}\n\ninterface GenerateTabsOptions {\n selected: string;\n showAll: boolean;\n getItemAppLink: (letter: string) => Core.AppLink;\n}\n\nfunction generateTabs(options: GenerateTabsOptions): PillTab[] {\n return ALPHABET.map(letter => {\n if (letter === 'All' && !options.showAll)\n return;\n\n const appLink = options.getItemAppLink(LetterParamMap[letter] ?? letter);\n\n return {\n name: letter,\n appLink,\n active: options.selected === letter,\n analyticsData: {\n name: letter,\n url: Core.AppLinkHelper.getHref(appLink)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n };\n }).filter(Boolean);\n}\n\ninterface LettersBarProps {\n selected: string;\n getItemAppLink: (letter: string) => Core.AppLink;\n showAll?: boolean;\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n className?: string;\n noMarginBottom?: boolean;\n}\n\nexport function LettersBar(props: LettersBarProps): JSX.Element {\n const localSelected = getSelectedAlphabet(props.selected, props.showAll);\n\n const tabs = generateTabs({\n selected: localSelected,\n showAll: props.showAll,\n getItemAppLink: props.getItemAppLink\n });\n \n return (\n <div className={classNames(props.noMarginBottom ? 'mb-0' : 'mb-3', props.className)}>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTabSelector}\n enableSmallScreenSupport={props.enableSmallScreenSupport}\n formatDisplayText={props.formatDisplayText}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { ProgramType } from 'apps/tv/interfaces/enums/ProgramType';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\n\nimport styles from './program-selector.module.scss';\n\ninterface ProgramSelectorProps {\n groupedPrograms: [string, [string, TvProgram[]][]][];\n channels: TvChannel[];\n tvPreviewUrls: { [region: string]: string };\n}\n\nexport function ProgramSelector(props: ProgramSelectorProps) {\n function getChannelLogo(channel: string) {\n const matchingChannel = ArrayHelper.findWhere(props.channels, { name: channel });\n return matchingChannel?.logoUrl;\n }\n\n return (\n <div className='mb-2'>\n {props.groupedPrograms.map(([ channel, dates ]) => (\n <div className={`border-top d-flex pt-3 pb-2`} key={channel}>\n <div className={`${styles.channelLogoContainer} flex-shrink-0 mb-3`}>\n <img src={getChannelLogo(channel)} alt={channel} className={`${styles.channelLogo} ms-4`} />\n </div>\n\n <div className='w-100'>\n {dates.map(([ date, programs ]) => (\n <GroupedPrograms key={date} date={date} programs={programs} tvPreviewUrls={props.tvPreviewUrls} />\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\ninterface GroupedProgramsProps {\n date: string;\n programs: TvProgram[];\n tvPreviewUrls: { [region: string]: string };\n}\n\nexport function GroupedPrograms(props: GroupedProgramsProps) {\n const [ hoveredProgram, setHoveredProgram ] = React.useState<TvProgram>();\n\n function getProgramAppLink(program: TvProgram) {\n switch (program.programType) {\n case ProgramType.Video:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ program.regionCode, program.id ]\n };\n case ProgramType.Audio:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.RADIO_DOWNLOAD,\n args: [program.id]\n };\n }\n }\n\n function getThumbnailUrl(program: TvProgram) {\n const previewUrl = props.tvPreviewUrls[program.regionCode];\n const globalId = program.globalId.split('-').join('');\n return `${previewUrl}/thumbnail/${globalId}.jpg`;\n }\n\n return (\n <div\n className={`${styles.dateContainer} ${hoveredProgram ? styles.hover : ''} py-2 px-3 rounded`}\n >\n <div key={props.date} className={`d-flex align-items-center`}>\n <div className={`${styles.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`}>\n <LazyImage\n src={getThumbnailUrl(hoveredProgram || props.programs[0])}\n alt={DateHelper.format(props.date, 'D MMM')}\n extraClasses='w-100 rounded'\n />\n </div>\n <p className={`${styles.date} fw-semibold flex-shrink-0 mb-0`}>{DateHelper.format(props.date, 'D MMM')}:</p>\n <div className={`${styles.programsContainer} d-flex flex-wrap`}>\n {props.programs.map((program: TvProgram) => (\n <div\n key={program.id}\n onMouseEnter={() => setHoveredProgram(program)}\n onMouseLeave={() => setHoveredProgram(null)}\n >\n <AppLink appLink={getProgramAppLink(program)} key={program.id} className='text-decoration-none'>\n <TvProgramTimeBadge program={program} showEndTime />\n </AppLink>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ALPHABET, LettersBar } from 'libs/shared/components/letters-bar/LettersBar';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config } from 'libs/shared/interfaces';\n\nimport { AccordionList } from 'shared/components/accordion-list/AccordionList';\nimport { PartialAccordionList } from 'shared/components/accordion-list/partial-loading/PartialAccordionList';\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvInfoAlert } from 'apps/tv/components/tv-info-alert/TvInfoAlert';\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvTabs } from 'apps/tv/components/tv-tabs/TvTabs';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\nimport { ProgramSelector } from 'apps/tv/views/tv-programs/components/program-selector/ProgramSelector';\n\nconst namespace = 'tv.programs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst FIRST_LETTER_REGEX = /^[a-zA-Z]/;\n\ninterface TvProgramsViewProps {\n region: string;\n startsWith: string;\n}\n\nexport function TvProgramsView(props: TvProgramsViewProps): JSX.Element {\n const startsWith = props.startsWith || 'A';\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const dateRange = Flight.useBasicFetch<TvDateRange>(TvRequests.dateRange(props.region));\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n\n const programs = Flight.useBasicFetch<TvProgram[]>(\n region.data &&\n dateRange.data &&\n TvRequests.programsByLetter(\n region.data.code,\n startsWith,\n dateRange.data.startDate,\n dateRange.data.endDate\n )\n );\n\n const { setRegion } = useSelectedRegion();\n const { showTvGuide } = useLiteUpgrade();\n\n const grouped = React.useMemo(() => {\n if (!programs.data?.length)\n return [] as any[];\n\n const groups: HashObject<TvProgram[]> = {};\n\n programs.data.forEach(program => {\n if (props.startsWith === '0' && FIRST_LETTER_REGEX.test(program.title))\n return;\n\n if (!groups[program.title])\n groups[program.title] = [];\n\n groups[program.title].push(program);\n });\n\n let sorted = Object.entries(groups);\n\n sorted = sorted.sort(([keyA], [keyB]) => (keyA < keyB ? -1 : 1));\n\n const groupedPrograms = sorted.map(([ title, data ]) => {\n const groupedProgram = data.reduce((acc: { [channel: string]: { [date: string]: TvProgram[]} }, program) => {\n const channelKey = program.channelName;\n if (!acc[channelKey]) {\n acc[channelKey] = {};\n }\n \n const startTime = toLocalTime(program.startTime, program.timeZone);\n const dateKey = DateHelper.format(startTime, 'YYYY-MM-DD');\n if (!acc[channelKey][dateKey]) {\n acc[channelKey][dateKey] = [];\n }\n\n acc[channelKey][dateKey].push(program);\n return acc;\n }, {});\n\n const groupedProgramEntries =\n Object\n .entries(groupedProgram)\n .map((([ channel, programs ]) => [ channel, Object.entries(programs) ]));\n \n return [ title, groupedProgramEntries ];\n });\n\n return groupedPrograms as [string, [string, TvProgram[]]];\n }, [programs.data]);\n\n const matchesLetters = [ ...ALPHABET, '0' ].includes(startsWith);\n if (!matchesLetters) {\n handleHttpError(HttpStatus.BadRequest);\n }\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, programs ]);\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n const dataLoaded = (\n region.hasCompleted &&\n regions.hasCompleted &&\n dateRange.hasCompleted &&\n programs.hasCompleted &&\n config.hasCompleted\n );\n\n return (\n <>\n <TvSearchBar region={region.data} />\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='programs'\n currentRegion={region.data}\n showTvGuide={showTvGuide}\n 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.PROGRAMS,\n params: { startsWith }\n }}\n onClick={setRegion}\n />\n </div>\n\n <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n <LettersBar\n selected={startsWith}\n getItemAppLink={letter => ({\n application: AppChannels.TV,\n action: Actions.Tv.PROGRAMS,\n args: [region.data?.code],\n params: { startsWith: letter }\n })}\n />\n\n {dataLoaded ? (\n <>\n <AccordionList>\n {grouped.map(([ title, programs ], index) => (\n <AccordionList.Header key={index} title={title}>\n <ProgramSelector\n groupedPrograms={programs}\n channels={channels.data}\n tvPreviewUrls={config.data.tvPreviewUrls}\n />\n </AccordionList.Header>\n ))}\n </AccordionList>\n </>\n ) : (\n <PartialAccordionList />\n )}\n </>\n );\n}"],"names":["ALPHABET","LetterParamMap","ANALYTICS_OPTIONS","UserAction","EntityType","LocationContext","getSelectedAlphabet","selected","showAll","alphabet","letter","generateTabs","options","appLink","Core.AppLinkHelper","LettersBar","props","localSelected","tabs","jsx","classNames","PillTabSelector","styles","ProgramSelector","getChannelLogo","channel","matchingChannel","ArrayHelper","dates","jsxs","date","programs","GroupedPrograms","hoveredProgram","setHoveredProgram","React","getProgramAppLink","program","ProgramType","AppChannels","Actions","getThumbnailUrl","previewUrl","globalId","LazyImage","DateHelper","AppLink","TvProgramTimeBadge","namespace","getPhrase","LanguageService","FIRST_LETTER_REGEX","TvProgramsView","startsWith","config","Flight.useBasicFetch","ConfigRequests","region","TvRequests","regions","dateRange","channels","setRegion","useSelectedRegion","showTvGuide","useLiteUpgrade","grouped","_a","groups","sorted","keyA","keyB","title","data","groupedProgram","acc","channelKey","startTime","toLocalTime","dateKey","groupedProgramEntries","handleHttpError","HttpStatus","useHandleRegionError","useHandleObjectError","useSetPageMetadata","dataLoaded","Fragment","TvSearchBar","TvTabs","TvRegionSelect","TvInfoAlert","AccordionList","index","PartialAccordionList"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c,j as n,P as i,T as a,F as l}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{c,j as n,P as i,T as a,F as l}from"./app-cabh1nNK.js";function x(t){let s=t.buttons.map(e=>{const o=()=>{e.success?l.isFunction(t.onDone)&&t.onDone():l.isFunction(t.onFail)&&t.onFail(),t.closePopup()};return{buttonText:e.text,className:e.className,onClick:o,type:e.type,close:e.close}});return s=c.sortBy(s,"close"),n.jsxs(i,{title:t.title,closePopup:t.closePopup,children:[n.jsx("p",{dangerouslySetInnerHTML:{__html:a.sanitize(t.text)}}),n.jsx("div",{className:"d-flex justify-content-end border-top pt-3 px-3 mx-n3",children:s.map((e,o)=>n.jsx("button",{className:e.className,onClick:e.onClick,type:e.type,children:e.buttonText},o))})]})}export{x as DialogView};
|
|
2
|
+
//# sourceMappingURL=CHFINytM.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"CHFINytM.chunk.js","sources":["../../../../libs/shared/src/views/dialog/DialogView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { DialogOptions, PopupViewProps } from 'libs/shared/interfaces';\n\ninterface DialogViewProps extends DialogOptions {\n onDone?: () => void;\n onFail?: () => void;\n}\n\ntype PropTypes = React.PropsWithChildren<DialogViewProps & PopupViewProps>;\n\nexport function DialogView(props: PropTypes): React.ReactElement {\n let buttons = props.buttons.map(b => {\n const onClick = () => {\n if (b.success)\n FunctionHelper.isFunction(props.onDone) && props.onDone();\n else\n FunctionHelper.isFunction(props.onFail) && props.onFail();\n\n props.closePopup();\n };\n\n return {\n buttonText: b.text,\n className: b.className,\n onClick,\n type: b.type,\n close: b.close\n };\n });\n\n /**\n * The dismiss action should always be on the left side of the popup\n */\n buttons = ArrayHelper.sortBy(buttons, 'close');\n\n return (\n <Popup title={props.title} closePopup={props.closePopup}>\n <p dangerouslySetInnerHTML={{ __html: TextHelper.sanitize(props.text) }} />\n <div className='d-flex justify-content-end border-top pt-3 px-3 mx-n3'>\n {buttons.map((b, idx) => (\n <button key={idx} className={b.className} onClick={b.onClick} type={b.type}>\n {b.buttonText}\n </button>\n ))}\n </div>\n </Popup>\n );\n}"],"names":["DialogView","props","buttons","b","onClick","FunctionHelper","ArrayHelper","Popup","jsx","TextHelper","idx"],"mappings":"6DAgBO,SAASA,EAAWC,EAAsC,CAC/D,IAAIC,EAAUD,EAAM,QAAQ,IAAIE,GAAK,CACnC,MAAMC,EAAU,IAAM,CAChBD,EAAE,QACJE,EAAe,WAAWJ,EAAM,MAAM,GAAKA,EAAM,OAAA,EAEjDI,EAAe,WAAWJ,EAAM,MAAM,GAAKA,EAAM,OAAA,EAEnDA,EAAM,WAAA,CACR,EAEA,MAAO,CACL,WAAYE,EAAE,KACd,UAAWA,EAAE,UACb,QAAAC,EACA,KAAMD,EAAE,KACR,MAAOA,EAAE,KAAA,CAEb,CAAC,EAKD,OAAAD,EAAUI,EAAY,OAAOJ,EAAS,OAAO,SAG1CK,EAAA,CAAM,MAAON,EAAM,MAAO,WAAYA,EAAM,WAC3C,SAAA,CAAAO,EAAAA,IAAC,IAAA,CAAE,wBAAyB,CAAE,OAAQC,EAAW,SAASR,EAAM,IAAI,CAAA,EAAK,EACzEO,EAAAA,IAAC,MAAA,CAAI,UAAU,wDACZ,SAAAN,EAAQ,IAAI,CAACC,EAAGO,IACfF,EAAAA,IAAC,SAAA,CAAiB,UAAWL,EAAE,UAAW,QAASA,EAAE,QAAS,KAAMA,EAAE,KACnE,SAAAA,EAAE,UAAA,EADQO,CAEb,CACD,CAAA,CACH,CAAA,EACF,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e,aq as k,a as f,b as j,a3 as m,R as T,aT as E,aB as P,aU as H,l as I,aD as S}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{j as e,aq as k,a as f,b as j,a3 as m,R as T,aT as E,aB as P,aU as H,l as I,aD as S}from"./app-cabh1nNK.js";import{h as B}from"./C3YXHQU-.chunk.js";import{u as M}from"./D_yZCyl0.chunk.js";import{P as N,A as b,a as U}from"./Y5a0i_3c.chunk.js";import{L as _}from"./Ct-hl94f.chunk.js";import{T as D}from"./DxLg_mEO.chunk.js";import{T as V}from"./DWtr2GDr.chunk.js";import{T as F,a as O}from"./zBOmHm2e.chunk.js";import{T as q,a as $}from"./CjXJ8oFf.chunk.js";import{T as u}from"./DGDSZYW9.chunk.js";import{u as W}from"./wmclIpxx.chunk.js";import{u as z}from"./uGV8Ulpl.chunk.js";import{t as G}from"./DZZlWrzc.chunk.js";import"./CbOOCRVJ.chunk.js";import"./CV6qoMzB.chunk.js";import"./BSIHfhEC.chunk.js";import"./BlDVEZsX.chunk.js";import"./wlWC_CCa.chunk.js";import"./BtTTlrnZ.chunk.js";import"./B3cy6PVV.chunk.js";import"./Duy0OOKL.chunk.js";const Z="_itemContainer_84hxn_1",J="_thumbnail_84hxn_12",C={itemContainer:Z,thumbnail:J};function K(a){function o(i,l){switch(i.programType){case N.Video:return{application:j.TV,action:f.Tv.PREVIEW,args:[l,i.id]};case N.Audio:return{application:j.TV,action:f.Tv.RADIO_DOWNLOAD,args:[l,i.id]}}}function t(i){const l=i.globalId.split("-").join("");return`${a.previewUrl}/thumbnail/${l}.jpg`}return e.jsx("div",{className:`${C.itemContainer} rounded mx-4 px-2`,children:e.jsxs(k,{appLink:o(a.program,a.region),className:"d-flex align-items-center justify-content-between py-2 px-3 text-decoration-none",children:[e.jsxs("div",{className:"w-50 d-flex align-items-center",children:[e.jsx("div",{className:`${C.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`,children:e.jsx(_,{src:t(a.program),alt:a.program.title,extraClasses:"w-100 rounded"})}),e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx("span",{className:"me-1",children:a.name}),a.program.hasAdsFree&&e.jsx(D,{small:!0})]})]}),e.jsx(V,{program:a.program,className:"pointer-events-none",showEndTime:!0})]},a.program.id)})}function Q(a){const{channel:o}=a;return e.jsxs("div",{className:"d-flex mb-3",children:[e.jsx("div",{className:"d-flex align-items-center me-3",style:{maxWidth:"7.5rem"},children:e.jsx("img",{className:"w-100",src:o.logoUrl})}),e.jsxs("div",{children:[e.jsx("h1",{className:"h3",children:o.displayName}),e.jsx("p",{className:"mb-0",children:o.description})]})]})}function X(){return e.jsxs("div",{className:"d-flex mb-3",children:[e.jsx("div",{className:"partial-loading-background d-flex align-items-center me-3",children:e.jsx("div",{style:{width:"7.5rem"}})}),e.jsxs("div",{className:"w-100",children:[e.jsx("div",{className:"partial-loading-background w-25 h3",children:" "}),e.jsx("p",{className:"partial-loading-background w-100 mb-0",children:" "})]})]})}function Te(a){const o=m(S.config()),t=m(u.region(a.region)),i=m(u.regions()),l=m(u.dateRange(a.region)),g=m(t.data&&u.channels(t.data.code)),s=T.useMemo(()=>{var n;return(n=g.data)==null?void 0:n.find(c=>c.id.toString()===a.channelId.toString())},[g.data]),{setRegion:R}=z(),{showTvGuide:w}=E(),h=m(t.data&&s&&u.programsByChannel(t.data.code,s.name,s.startTime,s.stopTime)),A=T.useMemo(()=>{var p;if(!((p=h.data)!=null&&p.length))return[];const n={};return[...h.data].reverse().forEach(r=>{const d=P.format(G(r.startTime,r.timeZone),"dddd Do MMMM");n[d]||(n[d]=[]),n[d].push(r)}),Object.entries(n).map(([r,d])=>[r,d.reverse()])},[h]);g.hasCompleted&&!s&&B(H.BadRequest),W(t),M([i,g,h]),I({title:s==null?void 0:s.displayName});const L=t.hasCompleted&&i.hasCompleted&&g.hasCompleted&&s&&h.hasCompleted;function y(){var n;return a.selectedRegion?(n=i.data)==null?void 0:n.find(c=>c.code===a.selectedRegion):t.data}const x=y();return e.jsxs(e.Fragment,{children:[e.jsx(q,{region:x}),e.jsxs("div",{className:"d-flex justify-content-between",children:[e.jsx(F,{active:"channels",currentRegion:x,showTvGuide:w,config:o.data}),e.jsx($,{currentRegion:x,regions:i.data,appLink:{application:j.TV,action:f.Tv.CHANNELS},onClick:R})]}),e.jsx(O,{dateRange:l.data,region:t.data}),s?e.jsx(Q,{channel:s}):e.jsx(X,{}),L?e.jsx(e.Fragment,{children:e.jsx(b,{children:A.map(([n,c],p)=>e.jsx(b.Header,{title:n,children:e.jsx("div",{className:"mt-2 pb-2",children:c&&c.map(r=>{var d,v;return e.jsx(K,{name:r.title,program:r,region:t.data.code,previewUrl:(v=o.data)==null?void 0:v.tvPreviewUrls[(d=t.data)==null?void 0:d.code]},r.id)})})},p))})}):e.jsx(U,{})]})}export{Te as TvChannelView};
|
|
2
|
+
//# sourceMappingURL=CHzv4hsQ.chunk.js.map
|