@clickview/reports 0.90.0-rc.3 → 0.90.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.
Files changed (65) hide show
  1. package/dist/.vite/manifest.json +206 -206
  2. package/dist/bundles.json +1 -1
  3. package/dist/en.json +1 -1
  4. package/dist/scripts/{CcjJpEaF2.chunk.js → B2NaDejJ2.chunk.js} +2 -2
  5. package/dist/scripts/{CcjJpEaF2.chunk.js.map → B2NaDejJ2.chunk.js.map} +1 -1
  6. package/dist/scripts/{Ch4Y5yk4.chunk.js → B7UvjDWk.chunk.js} +2 -2
  7. package/dist/scripts/{Ch4Y5yk4.chunk.js.map → B7UvjDWk.chunk.js.map} +1 -1
  8. package/dist/scripts/{PSwC3iEf2.chunk.js → BBC0heb12.chunk.js} +2 -2
  9. package/dist/scripts/{PSwC3iEf2.chunk.js.map → BBC0heb12.chunk.js.map} +1 -1
  10. package/dist/scripts/{TzLygaBE.chunk.js → BBromGRt.chunk.js} +2 -2
  11. package/dist/scripts/{TzLygaBE.chunk.js.map → BBromGRt.chunk.js.map} +1 -1
  12. package/dist/scripts/{DDS7ndOq2.chunk.js → BM1rCX722.chunk.js} +2 -2
  13. package/dist/scripts/{DDS7ndOq2.chunk.js.map → BM1rCX722.chunk.js.map} +1 -1
  14. package/dist/scripts/{BLzRzOyq.chunk.js → BT26h7xG.chunk.js} +2 -2
  15. package/dist/scripts/{BLzRzOyq.chunk.js.map → BT26h7xG.chunk.js.map} +1 -1
  16. package/dist/scripts/{Bzx4bLV8.chunk.js → BhnToJrk.chunk.js} +2 -2
  17. package/dist/scripts/{Bzx4bLV8.chunk.js.map → BhnToJrk.chunk.js.map} +1 -1
  18. package/dist/scripts/{kAYY_iVY2.chunk.js → Bq-KpJWX2.chunk.js} +2 -2
  19. package/dist/scripts/{kAYY_iVY2.chunk.js.map → Bq-KpJWX2.chunk.js.map} +1 -1
  20. package/dist/scripts/{BU8DxGLM2.chunk.js → Bzfy_cw32.chunk.js} +2 -2
  21. package/dist/scripts/{BU8DxGLM2.chunk.js.map → Bzfy_cw32.chunk.js.map} +1 -1
  22. package/dist/scripts/{CKKR2-wU2.chunk.js → C3yKN7vY2.chunk.js} +2 -2
  23. package/dist/scripts/{CKKR2-wU2.chunk.js.map → C3yKN7vY2.chunk.js.map} +1 -1
  24. package/dist/scripts/{Bl13dT192.chunk.js → CEL9EOPh2.chunk.js} +2 -2
  25. package/dist/scripts/{Bl13dT192.chunk.js.map → CEL9EOPh2.chunk.js.map} +1 -1
  26. package/dist/scripts/{BJOOjdj2.chunk.js → COeneeRO.chunk.js} +2 -2
  27. package/dist/scripts/{BJOOjdj2.chunk.js.map → COeneeRO.chunk.js.map} +1 -1
  28. package/dist/scripts/{DbSzdDBS2.chunk.js → CiMD5u2s2.chunk.js} +2 -2
  29. package/dist/scripts/{DbSzdDBS2.chunk.js.map → CiMD5u2s2.chunk.js.map} +1 -1
  30. package/dist/scripts/{DE24b7R6.chunk.js → Coxg-CDT.chunk.js} +2 -2
  31. package/dist/scripts/{DE24b7R6.chunk.js.map → Coxg-CDT.chunk.js.map} +1 -1
  32. package/dist/scripts/{EvtCZWZL2.chunk.js → D5JcKzGf2.chunk.js} +2 -2
  33. package/dist/scripts/{EvtCZWZL2.chunk.js.map → D5JcKzGf2.chunk.js.map} +1 -1
  34. package/dist/scripts/{DNY9inGn2.chunk.js → DDXdEuUF2.chunk.js} +2 -2
  35. package/dist/scripts/{DNY9inGn2.chunk.js.map → DDXdEuUF2.chunk.js.map} +1 -1
  36. package/dist/scripts/{BXWs2cI72.chunk.js → DLWxPapJ2.chunk.js} +2 -2
  37. package/dist/scripts/{BXWs2cI72.chunk.js.map → DLWxPapJ2.chunk.js.map} +1 -1
  38. package/dist/scripts/{DPJbiCR02.chunk.js → Da6u6D2M2.chunk.js} +18 -18
  39. package/dist/scripts/Da6u6D2M2.chunk.js.map +1 -0
  40. package/dist/scripts/{BL1X9vs52.chunk.js → DhSEOAnJ2.chunk.js} +2 -2
  41. package/dist/scripts/{BL1X9vs52.chunk.js.map → DhSEOAnJ2.chunk.js.map} +1 -1
  42. package/dist/scripts/{fh6sbun-.chunk.js → IG-rboYg.chunk.js} +2 -2
  43. package/dist/scripts/{fh6sbun-.chunk.js.map → IG-rboYg.chunk.js.map} +1 -1
  44. package/dist/scripts/{Dj87pb142.chunk.js → KkZBQL3G2.chunk.js} +2 -2
  45. package/dist/scripts/{Dj87pb142.chunk.js.map → KkZBQL3G2.chunk.js.map} +1 -1
  46. package/dist/scripts/{4ViYfbV7.chunk.js → TJTvGoAZ.chunk.js} +2 -2
  47. package/dist/scripts/{4ViYfbV7.chunk.js.map → TJTvGoAZ.chunk.js.map} +1 -1
  48. package/dist/scripts/{app-B1NVV4PT.js → app-DW-nP8r1.js} +3 -3
  49. package/dist/scripts/{app-B1NVV4PT.js.map → app-DW-nP8r1.js.map} +1 -1
  50. package/dist/scripts/{4mtEyuqT2.chunk.js → i1FSKHH62.chunk.js} +2 -2
  51. package/dist/scripts/{4mtEyuqT2.chunk.js.map → i1FSKHH62.chunk.js.map} +1 -1
  52. package/dist/scripts/{CowQEpZQ2.chunk.js → niZatQNI2.chunk.js} +2 -2
  53. package/dist/scripts/{CowQEpZQ2.chunk.js.map → niZatQNI2.chunk.js.map} +1 -1
  54. package/dist/scripts/{D2gRMPGY.chunk.js → nup2thXk.chunk.js} +2 -2
  55. package/dist/scripts/{D2gRMPGY.chunk.js.map → nup2thXk.chunk.js.map} +1 -1
  56. package/dist/scripts/{4gz8eG_F.chunk.js → qhfEmD0O.chunk.js} +2 -2
  57. package/dist/scripts/{4gz8eG_F.chunk.js.map → qhfEmD0O.chunk.js.map} +1 -1
  58. package/dist/scripts/{7M6FzdyD.chunk.js → t8ONdKoR.chunk.js} +2 -2
  59. package/dist/scripts/{7M6FzdyD.chunk.js.map → t8ONdKoR.chunk.js.map} +1 -1
  60. package/dist/scripts/{CitsW6ql.chunk.js → v01tmPE-.chunk.js} +2 -2
  61. package/dist/scripts/{CitsW6ql.chunk.js.map → v01tmPE-.chunk.js.map} +1 -1
  62. package/dist/scripts/{DWQdiwUw.chunk.js → xV42YE03.chunk.js} +2 -2
  63. package/dist/scripts/{DWQdiwUw.chunk.js.map → xV42YE03.chunk.js.map} +1 -1
  64. package/package.json +1 -1
  65. package/dist/scripts/DPJbiCR02.chunk.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{Dr as e,H as t,M as n,N as r,Q as i,R as a,X as o,at as s}from"./CrTgNROp.chunk.js";import{g as c,n as l}from"./Dwe-4MVf.chunk.js";import{t as u}from"./BIVEB8w0.chunk.js";import{S as d,Z as f,at as p,u as m}from"./app-B1NVV4PT.js";import{t as h}from"./B0BRYUl5.chunk.js";var g=e(s()),_=r(),v=`reports.removeLogo`,y=u.encloseNamespace(v);function b(e){let[r,s]=g.useState(!1),u=c(),b=h(),x=d();async function S(){s(!0);try{await u(m.removeLogo(e.customerId,e.logoId)),b.success(y(x?`successTertiary`:`success`)),n.logUserAction({id:e.logoId},{actionType:o.Remove,entity:a.Logo,workflowPhase:i.Complete,location:t.Popup}),e.closePopup()}catch{b.success(y(x?`errorTertiary`:`error`)),s(!1)}}return(0,_.jsxs)(p,{closePopup:e.closePopup,title:y(x?`removeSchoolCrestTertiary`:`removeSchoolCrest`),children:[(0,_.jsx)(`p`,{children:(0,_.jsx)(l,{namespace:v,phrase:x?`areYouSureTertiary`:`areYouSure`})}),(0,_.jsxs)(f,{children:[(0,_.jsx)(f.Cancel,{onClick:e.closePopup}),(0,_.jsx)(f.Submit,{onClick:S,text:y(`remove`),showSpinner:r,variant:`danger`})]})]})}export{b as RemoveLogoView};
2
- //# sourceMappingURL=BL1X9vs52.chunk.js.map
1
+ import{Dr as e,H as t,M as n,N as r,Q as i,R as a,X as o,at as s}from"./CrTgNROp.chunk.js";import{g as c,n as l}from"./Dwe-4MVf.chunk.js";import{t as u}from"./BIVEB8w0.chunk.js";import{S as d,Z as f,at as p,u as m}from"./app-DW-nP8r1.js";import{t as h}from"./B0BRYUl5.chunk.js";var g=e(s()),_=r(),v=`reports.removeLogo`,y=u.encloseNamespace(v);function b(e){let[r,s]=g.useState(!1),u=c(),b=h(),x=d();async function S(){s(!0);try{await u(m.removeLogo(e.customerId,e.logoId)),b.success(y(x?`successTertiary`:`success`)),n.logUserAction({id:e.logoId},{actionType:o.Remove,entity:a.Logo,workflowPhase:i.Complete,location:t.Popup}),e.closePopup()}catch{b.success(y(x?`errorTertiary`:`error`)),s(!1)}}return(0,_.jsxs)(p,{closePopup:e.closePopup,title:y(x?`removeSchoolCrestTertiary`:`removeSchoolCrest`),children:[(0,_.jsx)(`p`,{children:(0,_.jsx)(l,{namespace:v,phrase:x?`areYouSureTertiary`:`areYouSure`})}),(0,_.jsxs)(f,{children:[(0,_.jsx)(f.Cancel,{onClick:e.closePopup}),(0,_.jsx)(f.Submit,{onClick:S,text:y(`remove`),showSpinner:r,variant:`danger`})]})]})}export{b as RemoveLogoView};
2
+ //# sourceMappingURL=DhSEOAnJ2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BL1X9vs52.chunk.js","names":[],"sources":["../../src/shared/views/remove-logo/RemoveLogoView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { LogoRequests } from 'shared/flight-requests/LogoRequests';\nimport { useIsTertiary } from 'shared/hooks/useIsTertiary';\n\nconst namespace = 'reports.removeLogo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RemoveLogoViewProps extends PopupViewProps {\n logoId: string;\n customerId: string;\n}\n\nexport function RemoveLogoView(props: RemoveLogoViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const alerts = useAlerts();\n const isTertiary = useIsTertiary();\n\n async function onClickRemove(): Promise<void> {\n setShowSpinner(true);\n\n try {\n await fetchAsync(LogoRequests.removeLogo(props.customerId, props.logoId));\n\n alerts.success(getPhrase(isTertiary ? 'successTertiary' : 'success'));\n\n AnalyticsHelper.logUserAction({\n id: props.logoId\n }, {\n actionType: UserAction.Remove,\n entity: EntityType.Logo,\n workflowPhase: WorkflowPhase.Complete,\n location: LocationContext.Popup\n });\n\n props.closePopup();\n } catch {\n alerts.success(getPhrase(isTertiary ? 'errorTertiary' : 'error'));\n setShowSpinner(false);\n }\n }\n\n return (\n <Popup\n closePopup={props.closePopup}\n title={isTertiary ? getPhrase('removeSchoolCrestTertiary') : getPhrase('removeSchoolCrest')}\n >\n <p><Text namespace={namespace} phrase={isTertiary ? 'areYouSureTertiary' : 'areYouSure'} /></p>\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n onClick={onClickRemove}\n text={getPhrase('remove')}\n showSpinner={showSpinner}\n variant='danger'\n />\n </PopupButtons>\n </Popup>\n );\n}\n"],"mappings":"ySAiBM,EAAY,qBACZ,EAAY,EAAgB,iBAAiB,CAAS,EAO5D,SAAgB,EAAe,EAAyC,CACtE,GAAM,CAAE,EAAa,GAAA,EAAyB,SAAS,EAAK,EAEtD,EAAa,EAAwB,EAErC,EAAS,EAAU,EACnB,EAAa,EAAc,EAEjC,eAAe,GAA+B,CAC5C,EAAe,EAAI,EAEnB,GAAI,CACF,MAAM,EAAW,EAAa,WAAW,EAAM,WAAY,EAAM,MAAM,CAAC,EAExE,EAAO,QAAQ,EAAU,EAAa,kBAAoB,SAAS,CAAC,EAEpE,EAAgB,cAAc,CAC5B,GAAI,EAAM,MACZ,EAAG,CACD,WAAY,EAAW,OACvB,OAAQ,EAAW,KACnB,cAAe,EAAc,SAC7B,SAAU,EAAgB,KAC5B,CAAC,EAED,EAAM,WAAW,CACnB,MAAQ,CACN,EAAO,QAAQ,EAAU,EAAa,gBAAkB,OAAO,CAAC,EAChE,EAAe,EAAK,CACtB,CACF,CAEA,OACE,EAAA,EAAA,KAAA,CAAC,EAAD,CACE,WAAY,EAAM,WAClB,MAAoB,EAAb,EAAuB,4BAAyC,mBAAmB,WAF5F,EAIE,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,UAAG,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,YAAW,OAAQ,EAAa,qBAAuB,YAAe,CAAA,CAAI,CAAA,GAE9F,EAAA,EAAA,KAAA,CAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CAAqB,QAAS,EAAM,UAAa,CAAA,GACjD,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CACE,QAAS,EACT,KAAM,EAAU,QAAQ,EACX,cACb,QAAQ,QACT,CAAA,CACW,CAAA,CAAA,CACT,GAEX"}
1
+ {"version":3,"file":"DhSEOAnJ2.chunk.js","names":[],"sources":["../../src/shared/views/remove-logo/RemoveLogoView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { LogoRequests } from 'shared/flight-requests/LogoRequests';\nimport { useIsTertiary } from 'shared/hooks/useIsTertiary';\n\nconst namespace = 'reports.removeLogo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RemoveLogoViewProps extends PopupViewProps {\n logoId: string;\n customerId: string;\n}\n\nexport function RemoveLogoView(props: RemoveLogoViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const alerts = useAlerts();\n const isTertiary = useIsTertiary();\n\n async function onClickRemove(): Promise<void> {\n setShowSpinner(true);\n\n try {\n await fetchAsync(LogoRequests.removeLogo(props.customerId, props.logoId));\n\n alerts.success(getPhrase(isTertiary ? 'successTertiary' : 'success'));\n\n AnalyticsHelper.logUserAction({\n id: props.logoId\n }, {\n actionType: UserAction.Remove,\n entity: EntityType.Logo,\n workflowPhase: WorkflowPhase.Complete,\n location: LocationContext.Popup\n });\n\n props.closePopup();\n } catch {\n alerts.success(getPhrase(isTertiary ? 'errorTertiary' : 'error'));\n setShowSpinner(false);\n }\n }\n\n return (\n <Popup\n closePopup={props.closePopup}\n title={isTertiary ? getPhrase('removeSchoolCrestTertiary') : getPhrase('removeSchoolCrest')}\n >\n <p><Text namespace={namespace} phrase={isTertiary ? 'areYouSureTertiary' : 'areYouSure'} /></p>\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n onClick={onClickRemove}\n text={getPhrase('remove')}\n showSpinner={showSpinner}\n variant='danger'\n />\n </PopupButtons>\n </Popup>\n );\n}\n"],"mappings":"ySAiBM,EAAY,qBACZ,EAAY,EAAgB,iBAAiB,CAAS,EAO5D,SAAgB,EAAe,EAAyC,CACtE,GAAM,CAAE,EAAa,GAAA,EAAyB,SAAS,EAAK,EAEtD,EAAa,EAAwB,EAErC,EAAS,EAAU,EACnB,EAAa,EAAc,EAEjC,eAAe,GAA+B,CAC5C,EAAe,EAAI,EAEnB,GAAI,CACF,MAAM,EAAW,EAAa,WAAW,EAAM,WAAY,EAAM,MAAM,CAAC,EAExE,EAAO,QAAQ,EAAU,EAAa,kBAAoB,SAAS,CAAC,EAEpE,EAAgB,cAAc,CAC5B,GAAI,EAAM,MACZ,EAAG,CACD,WAAY,EAAW,OACvB,OAAQ,EAAW,KACnB,cAAe,EAAc,SAC7B,SAAU,EAAgB,KAC5B,CAAC,EAED,EAAM,WAAW,CACnB,MAAQ,CACN,EAAO,QAAQ,EAAU,EAAa,gBAAkB,OAAO,CAAC,EAChE,EAAe,EAAK,CACtB,CACF,CAEA,OACE,EAAA,EAAA,KAAA,CAAC,EAAD,CACE,WAAY,EAAM,WAClB,MAAoB,EAAb,EAAuB,4BAAyC,mBAAmB,WAF5F,EAIE,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,UAAG,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,YAAW,OAAQ,EAAa,qBAAuB,YAAe,CAAA,CAAI,CAAA,GAE9F,EAAA,EAAA,KAAA,CAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CAAqB,QAAS,EAAM,UAAa,CAAA,GACjD,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CACE,QAAS,EACT,KAAM,EAAU,QAAQ,EACX,cACb,QAAQ,QACT,CAAA,CACW,CAAA,CAAA,CACT,GAEX"}
@@ -1,2 +1,2 @@
1
- import{Dr as e,N as t,at as n}from"./CrTgNROp.chunk.js";import{v as r}from"./CxNc1BDX.chunk.js";import{m as i,n as a}from"./Dwe-4MVf.chunk.js";import{t as o}from"./2zJwW9wb.chunk.js";import{n as s}from"./28VvvkVW.chunk.js";import{t as c}from"./C4rkNAyl.chunk.js";import{a as l}from"./app-B1NVV4PT.js";import{n as u,o as d,t as f}from"./Ch4Y5yk4.chunk.js";import{t as p}from"./4gz8eG_F.chunk.js";var m=function(e){return e[e.RootTopic=1]=`RootTopic`,e[e.ChildTopic=2]=`ChildTopic`,e}({}),h=e(n()),g=o();function _(e,t,n){return{...e,topicAnalyticsType:t,query:`cover`,limit:n}}var v={topTopics(e,t,n,r,i){return{url:s.urlBuilder(`{gateway}/v1/analytics/topics/top`,_(e,t)),key:p(`top:topics:${t}`,e),success:n,error:r,always:i}},topTopicsV2(e,t,n,r,i,a){return{url:s.urlBuilder(`{gateway}/v2/analytics/streams/topics/top`,_(e,t,n)),key:p(`top:topics:${t}:v2:${n}`,e),formatData:e=>(Array.isArray(e)?e:[e]).map(e=>({collectionId:e.topicId,count:e.combinedCount,collection:e.topic})),success:r,error:i,always:a}},viewsByTopic(e,t,n,r,i){return{url:s.urlBuilder(`{gateway}/v1/analytics/topics/count`,_(e,t)),key:p(`views:topics:${t}`,e),normalize:!1,success:n,error:r,always:i}}},y={cover:`_cover_ggfj4_1`,fallbackImage:`_fallbackImage_ggfj4_5`},b=t();function x(e){return(0,b.jsxs)(`div`,{className:`d-flex position-relative mb-3`,children:[(0,b.jsx)(`div`,{className:`${y.fallbackImage} me-2`,children:(0,b.jsx)(f,{type:u.Subject,extraClasses:`border rounded`})}),(0,b.jsx)(`div`,{className:`w-100`,children:(0,b.jsx)(`div`,{className:`partial-loading-background ${e.className}`,children:`\xA0`})})]})}function S(){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`div`,{className:`partial-loading-background w-25 mb-3`,children:`\xA0`}),(0,b.jsx)(x,{className:`w-25`}),(0,b.jsx)(x,{className:`w-50`}),(0,b.jsx)(x,{className:`w-33`}),(0,b.jsx)(x,{className:`w-25`})]})}var C=`reportsShared.topClassificationsCard`;function w(e){let[t,n]=h.useState(!1);return(0,b.jsxs)(`div`,{className:`d-flex position-relative`,children:[!t&&(0,b.jsx)(f,{type:u.Subject,extraClasses:`${y.fallbackImage} border rounded`}),(0,b.jsx)(`div`,{className:`${y.cover} flex-shrink-0 me-2 rounded overflow-hidden`,children:(0,b.jsx)(d,{data:e.topClassification.collection.cover,imageOptions:{size:c.Medium},onLoad:()=>n(!0)})}),(0,b.jsxs)(`div`,{children:[(0,b.jsx)(`h3`,{className:`h6 mb-0 clamp-2 mt-1`,children:e.topClassification.collection.name}),(0,b.jsx)(`p`,{children:(0,b.jsx)(a,{namespace:C,phrase:`views`,options:{smartCount:e.topClassification.count}})})]})]})}function T(e){let t=l(`video-views`),n=i(!!t&&v.topTopicsV2(t,e.type,e.limit)),a=n.data?.sort((e,t)=>t.count-e.count);return(0,b.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3`,children:n.data?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,b.jsx)(`h2`,{className:`h6 mb-3`,children:e.heading}),e.appLink&&e.appLinkText&&(0,b.jsx)(r,{appLink:e.appLink,className:`text-info`,children:e.appLinkText})]}),n.data.length?(0,b.jsx)(g.Scrollbars,{className:`pb-3`,children:(0,b.jsx)(`ul`,{className:`list-unstyled m-0 pe-3`,children:a.map((e,t)=>(0,b.jsx)(`li`,{className:`pb-3`,children:(0,b.jsx)(w,{topClassification:e})},t))})}):(0,b.jsx)(`div`,{className:`d-flex align-items-center justify-content-center h-100`,children:e.emptyStateText})]}):(0,b.jsx)(S,{})})}export{m as n,T as t};
2
- //# sourceMappingURL=fh6sbun-.chunk.js.map
1
+ import{Dr as e,N as t,at as n}from"./CrTgNROp.chunk.js";import{v as r}from"./CxNc1BDX.chunk.js";import{m as i,n as a}from"./Dwe-4MVf.chunk.js";import{t as o}from"./2zJwW9wb.chunk.js";import{n as s}from"./28VvvkVW.chunk.js";import{t as c}from"./C4rkNAyl.chunk.js";import{a as l}from"./app-DW-nP8r1.js";import{n as u,o as d,t as f}from"./B7UvjDWk.chunk.js";import{t as p}from"./qhfEmD0O.chunk.js";var m=function(e){return e[e.RootTopic=1]=`RootTopic`,e[e.ChildTopic=2]=`ChildTopic`,e}({}),h=e(n()),g=o();function _(e,t,n){return{...e,topicAnalyticsType:t,query:`cover`,limit:n}}var v={topTopics(e,t,n,r,i){return{url:s.urlBuilder(`{gateway}/v1/analytics/topics/top`,_(e,t)),key:p(`top:topics:${t}`,e),success:n,error:r,always:i}},topTopicsV2(e,t,n,r,i,a){return{url:s.urlBuilder(`{gateway}/v2/analytics/streams/topics/top`,_(e,t,n)),key:p(`top:topics:${t}:v2:${n}`,e),formatData:e=>(Array.isArray(e)?e:[e]).map(e=>({collectionId:e.topicId,count:e.combinedCount,collection:e.topic})),success:r,error:i,always:a}},viewsByTopic(e,t,n,r,i){return{url:s.urlBuilder(`{gateway}/v1/analytics/topics/count`,_(e,t)),key:p(`views:topics:${t}`,e),normalize:!1,success:n,error:r,always:i}}},y={cover:`_cover_ggfj4_1`,fallbackImage:`_fallbackImage_ggfj4_5`},b=t();function x(e){return(0,b.jsxs)(`div`,{className:`d-flex position-relative mb-3`,children:[(0,b.jsx)(`div`,{className:`${y.fallbackImage} me-2`,children:(0,b.jsx)(f,{type:u.Subject,extraClasses:`border rounded`})}),(0,b.jsx)(`div`,{className:`w-100`,children:(0,b.jsx)(`div`,{className:`partial-loading-background ${e.className}`,children:`\xA0`})})]})}function S(){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`div`,{className:`partial-loading-background w-25 mb-3`,children:`\xA0`}),(0,b.jsx)(x,{className:`w-25`}),(0,b.jsx)(x,{className:`w-50`}),(0,b.jsx)(x,{className:`w-33`}),(0,b.jsx)(x,{className:`w-25`})]})}var C=`reportsShared.topClassificationsCard`;function w(e){let[t,n]=h.useState(!1);return(0,b.jsxs)(`div`,{className:`d-flex position-relative`,children:[!t&&(0,b.jsx)(f,{type:u.Subject,extraClasses:`${y.fallbackImage} border rounded`}),(0,b.jsx)(`div`,{className:`${y.cover} flex-shrink-0 me-2 rounded overflow-hidden`,children:(0,b.jsx)(d,{data:e.topClassification.collection.cover,imageOptions:{size:c.Medium},onLoad:()=>n(!0)})}),(0,b.jsxs)(`div`,{children:[(0,b.jsx)(`h3`,{className:`h6 mb-0 clamp-2 mt-1`,children:e.topClassification.collection.name}),(0,b.jsx)(`p`,{children:(0,b.jsx)(a,{namespace:C,phrase:`views`,options:{smartCount:e.topClassification.count}})})]})]})}function T(e){let t=l(`video-views`),n=i(!!t&&v.topTopicsV2(t,e.type,e.limit)),a=n.data?.sort((e,t)=>t.count-e.count);return(0,b.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3`,children:n.data?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,b.jsx)(`h2`,{className:`h6 mb-3`,children:e.heading}),e.appLink&&e.appLinkText&&(0,b.jsx)(r,{appLink:e.appLink,className:`text-info`,children:e.appLinkText})]}),n.data.length?(0,b.jsx)(g.Scrollbars,{className:`pb-3`,children:(0,b.jsx)(`ul`,{className:`list-unstyled m-0 pe-3`,children:a.map((e,t)=>(0,b.jsx)(`li`,{className:`pb-3`,children:(0,b.jsx)(w,{topClassification:e})},t))})}):(0,b.jsx)(`div`,{className:`d-flex align-items-center justify-content-center h-100`,children:e.emptyStateText})]}):(0,b.jsx)(S,{})})}export{m as n,T as t};
2
+ //# sourceMappingURL=IG-rboYg.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fh6sbun-.chunk.js","names":[],"sources":["../../src/shared/enums/TopicAnalyticsType.ts","../../src/shared/flight-requests/TopicRequests.ts","../../src/shared/views/overview-cards/top-classifications-card/top-classification-card.module.scss","../../src/shared/views/overview-cards/top-classifications-card/partial-loading/PartialTopClassificationsCard.tsx","../../src/shared/views/overview-cards/top-classifications-card/TopClassificationsCardView.tsx"],"sourcesContent":["export enum TopicAnalyticsType {\n RootTopic = 1,\n ChildTopic = 2\n}\n","import { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsRequestFilter, Classification } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\n\nfunction getTopicRequestParams(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n limit?: number\n): HashObject {\n return {\n ...filter,\n topicAnalyticsType,\n query: 'cover',\n limit\n };\n}\n\nexport const TopicRequests = {\n topTopics(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v1/analytics/topics/top',\n getTopicRequestParams(filter, topicAnalyticsType)\n ),\n key: getAnalyticsRequestKey(`top:topics:${topicAnalyticsType}`, filter),\n success,\n error,\n always\n };\n },\n\n topTopicsV2(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n limit: number,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v2/analytics/streams/topics/top',\n getTopicRequestParams(filter, topicAnalyticsType, limit)\n ),\n key: getAnalyticsRequestKey(`top:topics:${topicAnalyticsType}:v2:${limit}`, filter),\n formatData: data => {\n const items = Array.isArray(data) ? data : [data];\n\n return items.map(item => ({\n collectionId: item.topicId,\n count: item.combinedCount,\n collection: item.topic\n }));\n },\n success,\n error,\n always\n };\n },\n\n viewsByTopic(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v1/analytics/topics/count',\n getTopicRequestParams(filter, topicAnalyticsType)\n ),\n key: getAnalyticsRequestKey(`views:topics:${topicAnalyticsType}`, filter),\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n",":local {\n .cover {\n height: 5rem;\n width: 5rem;\n }\n\n .fallbackImage {\n height: 5rem;\n min-width: 5rem;\n border: none;\n }\n}","import React from 'react';\n\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\n\nimport styles from '../top-classification-card.module.scss';\n\ninterface PartialClassificationItemProps {\n className?: string;\n}\n\nfunction PartialClassificationItem(props: PartialClassificationItemProps) {\n return (\n <div className='d-flex position-relative mb-3'>\n <div className={`${styles.fallbackImage} me-2`}>\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses='border rounded'\n />\n </div>\n\n <div className='w-100'>\n <div className={`partial-loading-background ${props.className}`}>&nbsp;</div>\n </div>\n </div>\n );\n}\n\nexport function PartialTopClassificationsCard() {\n return (\n <>\n <div className='partial-loading-background w-25 mb-3'>&nbsp;</div>\n\n <PartialClassificationItem className='w-25' />\n <PartialClassificationItem className='w-50' />\n <PartialClassificationItem className='w-33'/>\n <PartialClassificationItem className='w-25'/>\n </>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { TopicRequests } from 'shared/flight-requests/TopicRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { CollectionViewEvent } from 'shared/interfaces';\nimport { PartialTopClassificationsCard } from 'shared/views/overview-cards/top-classifications-card/partial-loading/PartialTopClassificationsCard';\n\nimport styles from './top-classification-card.module.scss';\n\nconst namespace = 'reportsShared.topClassificationsCard';\n\ninterface ClassificationListItemProps {\n topClassification: CollectionViewEvent<Classification>;\n}\n\nfunction ClassificationListItem(props: ClassificationListItemProps) {\n const [ hasLoadedImage, setHasLoadedImage ] = React.useState(false);\n\n return (\n <div className='d-flex position-relative'>\n {!hasLoadedImage && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={`${styles.fallbackImage} border rounded`}\n />\n )}\n <div className={`${styles.cover} flex-shrink-0 me-2 rounded overflow-hidden`}>\n <BaseImage\n data={props.topClassification.collection.cover}\n imageOptions={{ size: ImageSize.Medium }}\n onLoad={() => setHasLoadedImage(true)}\n />\n </div>\n <div>\n <h3 className='h6 mb-0 clamp-2 mt-1'>\n {props.topClassification.collection.name}\n </h3>\n <p><Text namespace={namespace} phrase='views' options={{ smartCount: props.topClassification.count }} /></p>\n </div>\n </div>\n );\n}\n\ninterface TopClassificationsCardProps {\n heading: string;\n type: TopicAnalyticsType;\n appLink?: Core.AppLink;\n appLinkText?: string;\n emptyStateText: string;\n limit: number;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopClassificationsCardView(props: TopClassificationsCardProps) {\n const requestFilter = useGetRequestFilter('video-views');\n \n const topClassifications = Flight.useBasicFetch<CollectionViewEvent<Classification>[]>(!!requestFilter &&\n TopicRequests.topTopicsV2(requestFilter, props.type, props.limit));\n\n const sortedTopClassifications = topClassifications.data?.sort((a, b) => b.count - a.count);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {topClassifications.data ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-3'>{props.heading}</h2>\n\n {props.appLink && props.appLinkText &&\n <AppLink\n appLink={props.appLink}\n className='text-info'\n >\n {props.appLinkText}\n </AppLink>\n }\n </div>\n {topClassifications.data.length ?\n <Scrollbars className='pb-3'>\n <ul className='list-unstyled m-0 pe-3'>\n {sortedTopClassifications.map((t, idx) => (\n <li key={idx} className='pb-3'>\n <ClassificationListItem topClassification={t} />\n </li>\n ))}\n </ul>\n </Scrollbars> :\n <div className='d-flex align-items-center justify-content-center h-100'>{props.emptyStateText}</div>\n }\n </> : <PartialTopClassificationsCard />\n }\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"IG-rboYg.chunk.js","names":[],"sources":["../../src/shared/enums/TopicAnalyticsType.ts","../../src/shared/flight-requests/TopicRequests.ts","../../src/shared/views/overview-cards/top-classifications-card/top-classification-card.module.scss","../../src/shared/views/overview-cards/top-classifications-card/partial-loading/PartialTopClassificationsCard.tsx","../../src/shared/views/overview-cards/top-classifications-card/TopClassificationsCardView.tsx"],"sourcesContent":["export enum TopicAnalyticsType {\n RootTopic = 1,\n ChildTopic = 2\n}\n","import { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsRequestFilter, Classification } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\n\nfunction getTopicRequestParams(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n limit?: number\n): HashObject {\n return {\n ...filter,\n topicAnalyticsType,\n query: 'cover',\n limit\n };\n}\n\nexport const TopicRequests = {\n topTopics(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v1/analytics/topics/top',\n getTopicRequestParams(filter, topicAnalyticsType)\n ),\n key: getAnalyticsRequestKey(`top:topics:${topicAnalyticsType}`, filter),\n success,\n error,\n always\n };\n },\n\n topTopicsV2(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n limit: number,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v2/analytics/streams/topics/top',\n getTopicRequestParams(filter, topicAnalyticsType, limit)\n ),\n key: getAnalyticsRequestKey(`top:topics:${topicAnalyticsType}:v2:${limit}`, filter),\n formatData: data => {\n const items = Array.isArray(data) ? data : [data];\n\n return items.map(item => ({\n collectionId: item.topicId,\n count: item.combinedCount,\n collection: item.topic\n }));\n },\n success,\n error,\n always\n };\n },\n\n viewsByTopic(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v1/analytics/topics/count',\n getTopicRequestParams(filter, topicAnalyticsType)\n ),\n key: getAnalyticsRequestKey(`views:topics:${topicAnalyticsType}`, filter),\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n",":local {\n .cover {\n height: 5rem;\n width: 5rem;\n }\n\n .fallbackImage {\n height: 5rem;\n min-width: 5rem;\n border: none;\n }\n}","import React from 'react';\n\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\n\nimport styles from '../top-classification-card.module.scss';\n\ninterface PartialClassificationItemProps {\n className?: string;\n}\n\nfunction PartialClassificationItem(props: PartialClassificationItemProps) {\n return (\n <div className='d-flex position-relative mb-3'>\n <div className={`${styles.fallbackImage} me-2`}>\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses='border rounded'\n />\n </div>\n\n <div className='w-100'>\n <div className={`partial-loading-background ${props.className}`}>&nbsp;</div>\n </div>\n </div>\n );\n}\n\nexport function PartialTopClassificationsCard() {\n return (\n <>\n <div className='partial-loading-background w-25 mb-3'>&nbsp;</div>\n\n <PartialClassificationItem className='w-25' />\n <PartialClassificationItem className='w-50' />\n <PartialClassificationItem className='w-33'/>\n <PartialClassificationItem className='w-25'/>\n </>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { TopicRequests } from 'shared/flight-requests/TopicRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { CollectionViewEvent } from 'shared/interfaces';\nimport { PartialTopClassificationsCard } from 'shared/views/overview-cards/top-classifications-card/partial-loading/PartialTopClassificationsCard';\n\nimport styles from './top-classification-card.module.scss';\n\nconst namespace = 'reportsShared.topClassificationsCard';\n\ninterface ClassificationListItemProps {\n topClassification: CollectionViewEvent<Classification>;\n}\n\nfunction ClassificationListItem(props: ClassificationListItemProps) {\n const [ hasLoadedImage, setHasLoadedImage ] = React.useState(false);\n\n return (\n <div className='d-flex position-relative'>\n {!hasLoadedImage && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={`${styles.fallbackImage} border rounded`}\n />\n )}\n <div className={`${styles.cover} flex-shrink-0 me-2 rounded overflow-hidden`}>\n <BaseImage\n data={props.topClassification.collection.cover}\n imageOptions={{ size: ImageSize.Medium }}\n onLoad={() => setHasLoadedImage(true)}\n />\n </div>\n <div>\n <h3 className='h6 mb-0 clamp-2 mt-1'>\n {props.topClassification.collection.name}\n </h3>\n <p><Text namespace={namespace} phrase='views' options={{ smartCount: props.topClassification.count }} /></p>\n </div>\n </div>\n );\n}\n\ninterface TopClassificationsCardProps {\n heading: string;\n type: TopicAnalyticsType;\n appLink?: Core.AppLink;\n appLinkText?: string;\n emptyStateText: string;\n limit: number;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopClassificationsCardView(props: TopClassificationsCardProps) {\n const requestFilter = useGetRequestFilter('video-views');\n \n const topClassifications = Flight.useBasicFetch<CollectionViewEvent<Classification>[]>(!!requestFilter &&\n TopicRequests.topTopicsV2(requestFilter, props.type, props.limit));\n\n const sortedTopClassifications = topClassifications.data?.sort((a, b) => b.count - a.count);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {topClassifications.data ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-3'>{props.heading}</h2>\n\n {props.appLink && props.appLinkText &&\n <AppLink\n appLink={props.appLink}\n className='text-info'\n >\n {props.appLinkText}\n </AppLink>\n }\n </div>\n {topClassifications.data.length ?\n <Scrollbars className='pb-3'>\n <ul className='list-unstyled m-0 pe-3'>\n {sortedTopClassifications.map((t, idx) => (\n <li key={idx} className='pb-3'>\n <ClassificationListItem topClassification={t} />\n </li>\n ))}\n </ul>\n </Scrollbars> :\n <div className='d-flex align-items-center justify-content-center h-100'>{props.emptyStateText}</div>\n }\n </> : <PartialTopClassificationsCard />\n }\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{Er as e,N as t,at as n,qt as r}from"./CrTgNROp.chunk.js";import{C as i,g as a,m as o,n as s,t as c}from"./Dwe-4MVf.chunk.js";import{t as l}from"./Dsv_eF8a.chunk.js";import{n as u}from"./28VvvkVW.chunk.js";import{t as d}from"./7dV7tXUX.chunk.js";import{t as f}from"./BIVEB8w0.chunk.js";import{Dt as p,Ot as m,Rt as h,Z as g,a as _,at as v,yt as y}from"./app-B1NVV4PT.js";import{t as b}from"./B0BRYUl5.chunk.js";n();var x=`shared.verifiedEmailError`,S=class extends y{constructor(e,t,n){super(`VerifiedEmailRequiredError`),this.message=e,this.liteUrl=t,this.hasLite=n}get name(){return`VerifiedEmailRequiredError`}get dialogOptions(){let e=u.safeUrlConcat(this.liteUrl,`settings/account`);return{title:f.getPhrase(x,`heading`),text:this.hasLite?`${this.message} ${f.getPhrase(x,`visitSettings`,{href:e})}`:this.message,buttons:[{text:f.getPhrase(x,`close`),className:`btn btn-dark`,success:!0}]}}},C=()=>{let e=o(o(d.currentUser()).data?.isAuthenticated&&p.userProducts()),t=!e.hasCompleted;return{hasProduct:n=>t||e.hasError||!e.data?.length?!1:e.data.some(e=>e.id===n),products:e,isLoadingProducts:t}};function w(){let e=b(),{hasProduct:t,isLoadingProducts:n}=C(),i=o(h.config());function a(n,a,o){if(!n.responseJSON||n.responseJSON?.type!==`no-email`){e.error(a);return}r.throw(new S(o,i.data.liteUrl,t(m.Primary)))}return{handleGenerateReportError:a,loading:!i.hasCompleted||n}}function T(e){return{dateRange:{start:e.start,end:e.end},offsetInMin:Math.abs(new Date().getTimezoneOffset())}}var E={videoViewsReport(e,t){return{url:`{gateway}/v1/analytics/video-views/reports`,key:`video:views:report`,type:i.POST,data:{...T(e),version:t},invalidationKeys:`export`,normalize:!1}},loginsReport(e,t,n,r){return{url:`{gateway}/v1/analytics/logins/reports`,key:`logins:report`,data:T(e),type:i.POST,normalize:!1,success:t,error:n,always:r}}},D=e({GenerateReportType:()=>N,GenerateReportView:()=>P,getReportFriendlyDate:()=>M}),O=t(),k=`reportsShared.generateReport`,A=f.encloseNamespace(k);function j(e){switch(e){case 0:return`loginsDescription`;case 1:return`videosDescription`;default:return``}}function M(e){let t=l.convertUTCToLocal(e).toString();return l.format(t,`Do MMMM YYYY`)}var N=function(e){return e[e.Logins=0]=`Logins`,e[e.VideoViews=1]=`VideoViews`,e}({});function P(e){let t=_(`video-views`),n=_(`logins`),r=e.type===1?t:n,i=b(),{loading:o,handleGenerateReportError:l}=w(),u=a();function d(){switch(e.type){case 0:return E.loginsReport(n);case 1:return E.videoViewsReport(t,`v3`);default:return null}}function f(){u(d()).then(()=>i.success(A(`success`))).catch(e=>l(e,A(`error`),A(`noEmailError`))).finally(e.closePopup)}return(0,O.jsx)(c.Provider,{value:k,children:(0,O.jsxs)(v,{title:A(`title`),showLoadingSpinner:o,closePopup:e.closePopup,children:[(0,O.jsx)(`p`,{children:(0,O.jsx)(s,{phrase:j(e.type)})}),(0,O.jsx)(`p`,{children:(0,O.jsx)(s,{phrase:`dateRange`,options:{dateFrom:M(r.start),dateTo:M(r.end)}})}),(0,O.jsx)(`p`,{children:(0,O.jsx)(s,{phrase:`emailDescription`})}),(0,O.jsxs)(g,{children:[(0,O.jsx)(g.Cancel,{onClick:e.closePopup}),(0,O.jsx)(g.Submit,{variant:`dark`,onClick:f,text:A(`generateReport`)})]})]})})}export{D as n,N as t};
2
- //# sourceMappingURL=Dj87pb142.chunk.js.map
1
+ import{Er as e,N as t,at as n,qt as r}from"./CrTgNROp.chunk.js";import{C as i,g as a,m as o,n as s,t as c}from"./Dwe-4MVf.chunk.js";import{t as l}from"./Dsv_eF8a.chunk.js";import{n as u}from"./28VvvkVW.chunk.js";import{t as d}from"./7dV7tXUX.chunk.js";import{t as f}from"./BIVEB8w0.chunk.js";import{Dt as p,Ot as m,Rt as h,Z as g,a as _,at as v,yt as y}from"./app-DW-nP8r1.js";import{t as b}from"./B0BRYUl5.chunk.js";n();var x=`shared.verifiedEmailError`,S=class extends y{constructor(e,t,n){super(`VerifiedEmailRequiredError`),this.message=e,this.liteUrl=t,this.hasLite=n}get name(){return`VerifiedEmailRequiredError`}get dialogOptions(){let e=u.safeUrlConcat(this.liteUrl,`settings/account`);return{title:f.getPhrase(x,`heading`),text:this.hasLite?`${this.message} ${f.getPhrase(x,`visitSettings`,{href:e})}`:this.message,buttons:[{text:f.getPhrase(x,`close`),className:`btn btn-dark`,success:!0}]}}},C=()=>{let e=o(o(d.currentUser()).data?.isAuthenticated&&p.userProducts()),t=!e.hasCompleted;return{hasProduct:n=>t||e.hasError||!e.data?.length?!1:e.data.some(e=>e.id===n),products:e,isLoadingProducts:t}};function w(){let e=b(),{hasProduct:t,isLoadingProducts:n}=C(),i=o(h.config());function a(n,a,o){if(!n.responseJSON||n.responseJSON?.type!==`no-email`){e.error(a);return}r.throw(new S(o,i.data.liteUrl,t(m.Primary)))}return{handleGenerateReportError:a,loading:!i.hasCompleted||n}}function T(e){return{dateRange:{start:e.start,end:e.end},offsetInMin:Math.abs(new Date().getTimezoneOffset())}}var E={videoViewsReport(e,t){return{url:`{gateway}/v1/analytics/video-views/reports`,key:`video:views:report`,type:i.POST,data:{...T(e),version:t},invalidationKeys:`export`,normalize:!1}},loginsReport(e,t,n,r){return{url:`{gateway}/v1/analytics/logins/reports`,key:`logins:report`,data:T(e),type:i.POST,normalize:!1,success:t,error:n,always:r}}},D=e({GenerateReportType:()=>N,GenerateReportView:()=>P,getReportFriendlyDate:()=>M}),O=t(),k=`reportsShared.generateReport`,A=f.encloseNamespace(k);function j(e){switch(e){case 0:return`loginsDescription`;case 1:return`videosDescription`;default:return``}}function M(e){let t=l.convertUTCToLocal(e).toString();return l.format(t,`Do MMMM YYYY`)}var N=function(e){return e[e.Logins=0]=`Logins`,e[e.VideoViews=1]=`VideoViews`,e}({});function P(e){let t=_(`video-views`),n=_(`logins`),r=e.type===1?t:n,i=b(),{loading:o,handleGenerateReportError:l}=w(),u=a();function d(){switch(e.type){case 0:return E.loginsReport(n);case 1:return E.videoViewsReport(t,`v3`);default:return null}}function f(){u(d()).then(()=>i.success(A(`success`))).catch(e=>l(e,A(`error`),A(`noEmailError`))).finally(e.closePopup)}return(0,O.jsx)(c.Provider,{value:k,children:(0,O.jsxs)(v,{title:A(`title`),showLoadingSpinner:o,closePopup:e.closePopup,children:[(0,O.jsx)(`p`,{children:(0,O.jsx)(s,{phrase:j(e.type)})}),(0,O.jsx)(`p`,{children:(0,O.jsx)(s,{phrase:`dateRange`,options:{dateFrom:M(r.start),dateTo:M(r.end)}})}),(0,O.jsx)(`p`,{children:(0,O.jsx)(s,{phrase:`emailDescription`})}),(0,O.jsxs)(g,{children:[(0,O.jsx)(g.Cancel,{onClick:e.closePopup}),(0,O.jsx)(g.Submit,{variant:`dark`,onClick:f,text:A(`generateReport`)})]})]})})}export{D as n,N as t};
2
+ //# sourceMappingURL=KkZBQL3G2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dj87pb142.chunk.js","names":[],"sources":["../../../../libs/shared/src/errors/general/verified-email/VerifiedEmailRequiredError.ts","../../../../libs/shared/src/hooks/UseProducts.ts","../../../../libs/shared/src/hooks/useVerifiedEmailRequiredErrorHandler.ts","../../src/shared/flight-requests/ReportRequests.ts","../../src/shared/views/generate-report/GenerateReportView.tsx"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.verifiedEmailError';\n\nexport class VerifiedEmailRequiredError extends DialogError {\n public message: string;\n public liteUrl: string;\n public hasLite: boolean;\n\n constructor(message: string, liteUrl: string, hasLite: boolean) {\n super('VerifiedEmailRequiredError');\n\n this.message = message;\n this.liteUrl = liteUrl;\n this.hasLite = hasLite;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'VerifiedEmailRequiredError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n const href = UrlHelper.safeUrlConcat(this.liteUrl, 'settings/account');\n\n return {\n title: LanguageService.getPhrase(namespace, 'heading'),\n text: this.hasLite ?\n `${this.message} ${LanguageService.getPhrase(namespace, 'visitSettings', { href })}` :\n this.message,\n buttons: [{\n text: LanguageService.getPhrase(namespace, 'close'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}\n","import { Flight } from 'libs/common/flight';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Product } from 'libs/shared/interfaces';\n\nexport type HasProductFunc = (productId: ProductId) => boolean;\n\nexport interface UseProductsResponse {\n hasProduct: (product: ProductId) => boolean;\n products: Flight.Response<Product[]>;\n isLoadingProducts: boolean;\n}\n\nexport const useProducts = (): UseProductsResponse => {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const products = Flight.useBasicFetch<Product[]>(currentUser.data?.isAuthenticated && ProductRequests.userProducts());\n const isLoadingProducts = !products.hasCompleted;\n\n const hasProduct = (productId: ProductId) => {\n if (isLoadingProducts || products.hasError)\n return false;\n\n if (!products.data?.length)\n return false;\n\n return products.data.some(product => product.id === productId);\n };\n\n return {\n hasProduct,\n products,\n isLoadingProducts\n };\n};\n","import { Core } from 'libs/common/backbone/index';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { VerifiedEmailRequiredError } from 'libs/shared/errors/general/verified-email/VerifiedEmailRequiredError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config } from 'libs/shared/interfaces';\n\nexport function useVerifiedEmailRequiredErrorHandler() {\n const alerts = useAlerts();\n const { hasProduct, isLoadingProducts } = useProducts();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n function handleGenerateReportError(xhr: Xhr, message: string, noEmailError: string) {\n if (!xhr.responseJSON || xhr.responseJSON?.type !== 'no-email') {\n alerts.error(message);\n return;\n }\n\n Core.ErrorHelper.throw(\n new VerifiedEmailRequiredError(noEmailError, config.data.liteUrl, hasProduct(ProductId.Primary))\n );\n }\n\n return {\n handleGenerateReportError,\n loading: !config.hasCompleted || isLoadingProducts\n };\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\ntype ReportVersion = 'v2' | 'v3';\n\ninterface DateRange {\n start: string;\n end: string;\n}\n\ninterface ReportRequestPayload {\n dateRange: DateRange;\n offsetInMin: number;\n userIds?: number[];\n groupsIds?: number[];\n}\n\nfunction formatReportRequest(filterParams: AnalyticsRequestFilter): ReportRequestPayload {\n return {\n dateRange: {\n start: filterParams.start,\n end: filterParams.end\n },\n offsetInMin: Math.abs(new Date().getTimezoneOffset())\n };\n}\n\nexport const ReportRequests = {\n videoViewsReport(\n filterParams: AnalyticsRequestFilter,\n version: ReportVersion\n ): Flight.Request {\n return {\n url: '{gateway}/v1/analytics/video-views/reports',\n key: 'video:views:report',\n type: HttpVerbs.POST,\n data: { ...formatReportRequest(filterParams), version },\n invalidationKeys: 'export',\n normalize: false\n };\n },\n\n loginsReport(\n filterParams: AnalyticsRequestFilter,\n success?: () => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/analytics/logins/reports',\n key: 'logins:report',\n data: formatReportRequest(filterParams),\n type: HttpVerbs.POST,\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n","import React from 'react';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useVerifiedEmailRequiredErrorHandler } from 'libs/shared/hooks/useVerifiedEmailRequiredErrorHandler';\nimport { PropsWithPopupViewProps } from 'libs/shared/interfaces';\n\nimport { ReportRequests } from 'shared/flight-requests/ReportRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsShared.generateReport';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getLangPhrase(type: GenerateReportType): string {\n switch (type) {\n case GenerateReportType.Logins:\n return 'loginsDescription';\n\n case GenerateReportType.VideoViews:\n return 'videosDescription';\n\n default:\n return '';\n }\n}\n\nexport function getReportFriendlyDate(date: string): string {\n const localDate = DateHelper.convertUTCToLocal(date).toString();\n return DateHelper.format(localDate, 'Do MMMM YYYY');\n}\n\nexport enum GenerateReportType {\n Logins,\n VideoViews\n}\n\ninterface GenerateReportViewProps {\n type: GenerateReportType;\n}\n\nexport function GenerateReportView(props: PropsWithPopupViewProps<GenerateReportViewProps>): JSX.Element {\n const videoViewsFilter = useGetRequestFilter('video-views');\n const loginsFilter = useGetRequestFilter('logins');\n const filterQueryParams = props.type === GenerateReportType.VideoViews ? videoViewsFilter : loginsFilter;\n const alerts = useAlerts();\n const { loading, handleGenerateReportError } = useVerifiedEmailRequiredErrorHandler();\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n function getRequest(): Flight.Request {\n switch (props.type) {\n case GenerateReportType.Logins:\n return ReportRequests.loginsReport(loginsFilter);\n\n case GenerateReportType.VideoViews:\n return ReportRequests.videoViewsReport(videoViewsFilter, 'v3');\n\n default:\n return null;\n }\n }\n\n function onClick() {\n fetchAsync(getRequest())\n .then(() => alerts.success(getPhrase('success')))\n .catch((xhr: Xhr) => handleGenerateReportError(xhr, getPhrase('error'), getPhrase('noEmailError')))\n .finally(props.closePopup);\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <Popup\n title={getPhrase('title')}\n showLoadingSpinner={loading}\n closePopup={props.closePopup}\n >\n <p>\n <Text phrase={getLangPhrase(props.type)} />\n </p>\n <p>\n <Text phrase='dateRange' options={({\n dateFrom: getReportFriendlyDate(filterQueryParams.start),\n dateTo: getReportFriendlyDate(filterQueryParams.end)\n })} />\n </p>\n <p>\n <Text phrase='emailDescription' />\n </p>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n variant='dark'\n onClick={onClick}\n text={getPhrase('generateReport')}\n />\n </PopupButtons>\n </Popup>\n </LanguageNamespaceContext.Provider>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"KkZBQL3G2.chunk.js","names":[],"sources":["../../../../libs/shared/src/errors/general/verified-email/VerifiedEmailRequiredError.ts","../../../../libs/shared/src/hooks/UseProducts.ts","../../../../libs/shared/src/hooks/useVerifiedEmailRequiredErrorHandler.ts","../../src/shared/flight-requests/ReportRequests.ts","../../src/shared/views/generate-report/GenerateReportView.tsx"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.verifiedEmailError';\n\nexport class VerifiedEmailRequiredError extends DialogError {\n public message: string;\n public liteUrl: string;\n public hasLite: boolean;\n\n constructor(message: string, liteUrl: string, hasLite: boolean) {\n super('VerifiedEmailRequiredError');\n\n this.message = message;\n this.liteUrl = liteUrl;\n this.hasLite = hasLite;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'VerifiedEmailRequiredError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n const href = UrlHelper.safeUrlConcat(this.liteUrl, 'settings/account');\n\n return {\n title: LanguageService.getPhrase(namespace, 'heading'),\n text: this.hasLite ?\n `${this.message} ${LanguageService.getPhrase(namespace, 'visitSettings', { href })}` :\n this.message,\n buttons: [{\n text: LanguageService.getPhrase(namespace, 'close'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}\n","import { Flight } from 'libs/common/flight';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Product } from 'libs/shared/interfaces';\n\nexport type HasProductFunc = (productId: ProductId) => boolean;\n\nexport interface UseProductsResponse {\n hasProduct: (product: ProductId) => boolean;\n products: Flight.Response<Product[]>;\n isLoadingProducts: boolean;\n}\n\nexport const useProducts = (): UseProductsResponse => {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const products = Flight.useBasicFetch<Product[]>(currentUser.data?.isAuthenticated && ProductRequests.userProducts());\n const isLoadingProducts = !products.hasCompleted;\n\n const hasProduct = (productId: ProductId) => {\n if (isLoadingProducts || products.hasError)\n return false;\n\n if (!products.data?.length)\n return false;\n\n return products.data.some(product => product.id === productId);\n };\n\n return {\n hasProduct,\n products,\n isLoadingProducts\n };\n};\n","import { Core } from 'libs/common/backbone/index';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { VerifiedEmailRequiredError } from 'libs/shared/errors/general/verified-email/VerifiedEmailRequiredError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config } from 'libs/shared/interfaces';\n\nexport function useVerifiedEmailRequiredErrorHandler() {\n const alerts = useAlerts();\n const { hasProduct, isLoadingProducts } = useProducts();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n function handleGenerateReportError(xhr: Xhr, message: string, noEmailError: string) {\n if (!xhr.responseJSON || xhr.responseJSON?.type !== 'no-email') {\n alerts.error(message);\n return;\n }\n\n Core.ErrorHelper.throw(\n new VerifiedEmailRequiredError(noEmailError, config.data.liteUrl, hasProduct(ProductId.Primary))\n );\n }\n\n return {\n handleGenerateReportError,\n loading: !config.hasCompleted || isLoadingProducts\n };\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\ntype ReportVersion = 'v2' | 'v3';\n\ninterface DateRange {\n start: string;\n end: string;\n}\n\ninterface ReportRequestPayload {\n dateRange: DateRange;\n offsetInMin: number;\n userIds?: number[];\n groupsIds?: number[];\n}\n\nfunction formatReportRequest(filterParams: AnalyticsRequestFilter): ReportRequestPayload {\n return {\n dateRange: {\n start: filterParams.start,\n end: filterParams.end\n },\n offsetInMin: Math.abs(new Date().getTimezoneOffset())\n };\n}\n\nexport const ReportRequests = {\n videoViewsReport(\n filterParams: AnalyticsRequestFilter,\n version: ReportVersion\n ): Flight.Request {\n return {\n url: '{gateway}/v1/analytics/video-views/reports',\n key: 'video:views:report',\n type: HttpVerbs.POST,\n data: { ...formatReportRequest(filterParams), version },\n invalidationKeys: 'export',\n normalize: false\n };\n },\n\n loginsReport(\n filterParams: AnalyticsRequestFilter,\n success?: () => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/analytics/logins/reports',\n key: 'logins:report',\n data: formatReportRequest(filterParams),\n type: HttpVerbs.POST,\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n","import React from 'react';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useVerifiedEmailRequiredErrorHandler } from 'libs/shared/hooks/useVerifiedEmailRequiredErrorHandler';\nimport { PropsWithPopupViewProps } from 'libs/shared/interfaces';\n\nimport { ReportRequests } from 'shared/flight-requests/ReportRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsShared.generateReport';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getLangPhrase(type: GenerateReportType): string {\n switch (type) {\n case GenerateReportType.Logins:\n return 'loginsDescription';\n\n case GenerateReportType.VideoViews:\n return 'videosDescription';\n\n default:\n return '';\n }\n}\n\nexport function getReportFriendlyDate(date: string): string {\n const localDate = DateHelper.convertUTCToLocal(date).toString();\n return DateHelper.format(localDate, 'Do MMMM YYYY');\n}\n\nexport enum GenerateReportType {\n Logins,\n VideoViews\n}\n\ninterface GenerateReportViewProps {\n type: GenerateReportType;\n}\n\nexport function GenerateReportView(props: PropsWithPopupViewProps<GenerateReportViewProps>): JSX.Element {\n const videoViewsFilter = useGetRequestFilter('video-views');\n const loginsFilter = useGetRequestFilter('logins');\n const filterQueryParams = props.type === GenerateReportType.VideoViews ? videoViewsFilter : loginsFilter;\n const alerts = useAlerts();\n const { loading, handleGenerateReportError } = useVerifiedEmailRequiredErrorHandler();\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n function getRequest(): Flight.Request {\n switch (props.type) {\n case GenerateReportType.Logins:\n return ReportRequests.loginsReport(loginsFilter);\n\n case GenerateReportType.VideoViews:\n return ReportRequests.videoViewsReport(videoViewsFilter, 'v3');\n\n default:\n return null;\n }\n }\n\n function onClick() {\n fetchAsync(getRequest())\n .then(() => alerts.success(getPhrase('success')))\n .catch((xhr: Xhr) => handleGenerateReportError(xhr, getPhrase('error'), getPhrase('noEmailError')))\n .finally(props.closePopup);\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <Popup\n title={getPhrase('title')}\n showLoadingSpinner={loading}\n closePopup={props.closePopup}\n >\n <p>\n <Text phrase={getLangPhrase(props.type)} />\n </p>\n <p>\n <Text phrase='dateRange' options={({\n dateFrom: getReportFriendlyDate(filterQueryParams.start),\n dateTo: getReportFriendlyDate(filterQueryParams.end)\n })} />\n </p>\n <p>\n <Text phrase='emailDescription' />\n </p>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n variant='dark'\n onClick={onClick}\n text={getPhrase('generateReport')}\n />\n </PopupButtons>\n </Popup>\n </LanguageNamespaceContext.Provider>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{N as e,P as t,at as n}from"./CrTgNROp.chunk.js";import{x as r}from"./CxNc1BDX.chunk.js";import{t as i}from"./o2slFZEB.chunk.js";import{at as a}from"./app-B1NVV4PT.js";n();var o=e();function s(e){let n=e.buttons.map(t=>({buttonText:t.text,className:t.className,onClick:()=>{t.success?r.isFunction(e.onDone)&&e.onDone():r.isFunction(e.onFail)&&e.onFail(),e.closePopup()},type:t.type,close:t.close}));return n=i.sortBy(n,`close`),(0,o.jsxs)(a,{title:e.title,closePopup:e.closePopup,children:[(0,o.jsx)(`p`,{dangerouslySetInnerHTML:{__html:t.sanitize(e.text)}}),(0,o.jsx)(`div`,{className:`d-flex justify-content-end border-top pt-3 px-3 mx-n3`,children:n.map((e,t)=>(0,o.jsx)(`button`,{className:e.className,onClick:e.onClick,type:e.type,children:e.buttonText},t))})]})}export{s as DialogView};
2
- //# sourceMappingURL=4ViYfbV7.chunk.js.map
1
+ import{N as e,P as t,at as n}from"./CrTgNROp.chunk.js";import{x as r}from"./CxNc1BDX.chunk.js";import{t as i}from"./o2slFZEB.chunk.js";import{at as a}from"./app-DW-nP8r1.js";n();var o=e();function s(e){let n=e.buttons.map(t=>({buttonText:t.text,className:t.className,onClick:()=>{t.success?r.isFunction(e.onDone)&&e.onDone():r.isFunction(e.onFail)&&e.onFail(),e.closePopup()},type:t.type,close:t.close}));return n=i.sortBy(n,`close`),(0,o.jsxs)(a,{title:e.title,closePopup:e.closePopup,children:[(0,o.jsx)(`p`,{dangerouslySetInnerHTML:{__html:t.sanitize(e.text)}}),(0,o.jsx)(`div`,{className:`d-flex justify-content-end border-top pt-3 px-3 mx-n3`,children:n.map((e,t)=>(0,o.jsx)(`button`,{className:e.className,onClick:e.onClick,type:e.type,children:e.buttonText},t))})]})}export{s as DialogView};
2
+ //# sourceMappingURL=TJTvGoAZ.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"4ViYfbV7.chunk.js","names":[],"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}\n"],"mappings":"4LAgBA,SAAgB,EAAW,EAAsC,CAC/D,IAAI,EAAU,EAAM,QAAQ,IAAI,IAUvB,CACL,WAAY,EAAE,KACd,UAAW,EAAE,UACb,YAZoB,CAChB,EAAE,QACJ,EAAe,WAAW,EAAM,MAAM,GAAK,EAAM,OAAO,EAExD,EAAe,WAAW,EAAM,MAAM,GAAK,EAAM,OAAO,EAE1D,EAAM,WAAW,CACnB,EAME,KAAM,EAAE,KACR,MAAO,EAAE,KACX,EACD,EAOD,MAFA,GAAU,EAAY,OAAO,EAAS,OAAO,GAG3C,EAAA,EAAA,KAAA,CAAC,EAAD,CAAO,MAAO,EAAM,MAAO,WAAY,EAAM,oBAA7C,EACE,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,wBAAyB,CAAE,OAAQ,EAAW,SAAS,EAAM,IAAI,CAAE,CAAI,CAAA,GAC1E,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,iEACZ,EAAQ,KAAK,EAAG,KACf,EAAA,EAAA,IAAA,CAAC,SAAD,CAAkB,UAAW,EAAE,UAAW,QAAS,EAAE,QAAS,KAAM,EAAE,cACnE,EAAE,UACG,EAFK,CAEL,CACT,CACE,CAAA,CACA,GAEX"}
1
+ {"version":3,"file":"TJTvGoAZ.chunk.js","names":[],"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}\n"],"mappings":"4LAgBA,SAAgB,EAAW,EAAsC,CAC/D,IAAI,EAAU,EAAM,QAAQ,IAAI,IAUvB,CACL,WAAY,EAAE,KACd,UAAW,EAAE,UACb,YAZoB,CAChB,EAAE,QACJ,EAAe,WAAW,EAAM,MAAM,GAAK,EAAM,OAAO,EAExD,EAAe,WAAW,EAAM,MAAM,GAAK,EAAM,OAAO,EAE1D,EAAM,WAAW,CACnB,EAME,KAAM,EAAE,KACR,MAAO,EAAE,KACX,EACD,EAOD,MAFA,GAAU,EAAY,OAAO,EAAS,OAAO,GAG3C,EAAA,EAAA,KAAA,CAAC,EAAD,CAAO,MAAO,EAAM,MAAO,WAAY,EAAM,oBAA7C,EACE,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,wBAAyB,CAAE,OAAQ,EAAW,SAAS,EAAM,IAAI,CAAE,CAAI,CAAA,GAC1E,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,iEACZ,EAAQ,KAAK,EAAG,KACf,EAAA,EAAA,IAAA,CAAC,SAAD,CAAkB,UAAW,EAAE,UAAW,QAAS,EAAE,QAAS,KAAM,EAAE,cACnE,EAAE,UACG,EAFK,CAEL,CACT,CACE,CAAA,CACA,GAEX"}