@clickview/reports 0.86.0-rc.0 → 0.87.0-rc.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 (85) hide show
  1. package/dist/.vite/manifest.json +304 -295
  2. package/dist/bundles.json +1 -1
  3. package/dist/en.json +1 -1
  4. package/dist/scripts/{BV2ee_KR.chunk.js → 28JMpJbt.chunk.js} +2 -2
  5. package/dist/scripts/{BV2ee_KR.chunk.js.map → 28JMpJbt.chunk.js.map} +1 -1
  6. package/dist/scripts/{CglHgfcX.chunk.js → BLzQ085A.chunk.js} +2 -2
  7. package/dist/scripts/{CglHgfcX.chunk.js.map → BLzQ085A.chunk.js.map} +1 -1
  8. package/dist/scripts/{BWJBtdAK2.chunk.js → BOGodQXj2.chunk.js} +2 -2
  9. package/dist/scripts/{BWJBtdAK2.chunk.js.map → BOGodQXj2.chunk.js.map} +1 -1
  10. package/dist/scripts/{dMt3Yeox.chunk.js → BQLCt3Ad.chunk.js} +4 -4
  11. package/dist/scripts/{dMt3Yeox.chunk.js.map → BQLCt3Ad.chunk.js.map} +1 -1
  12. package/dist/scripts/{oPoOD_J-2.chunk.js → BQcTfbZm2.chunk.js} +2 -2
  13. package/dist/scripts/{oPoOD_J-2.chunk.js.map → BQcTfbZm2.chunk.js.map} +1 -1
  14. package/dist/scripts/BSV_W0cK.chunk.js.map +1 -1
  15. package/dist/scripts/{PLyhtHwt2.chunk.js → BYLD2f9R2.chunk.js} +2 -2
  16. package/dist/scripts/{PLyhtHwt2.chunk.js.map → BYLD2f9R2.chunk.js.map} +1 -1
  17. package/dist/scripts/B_HlStqa2.chunk.js +2 -0
  18. package/dist/scripts/B_HlStqa2.chunk.js.map +1 -0
  19. package/dist/scripts/{Cv9H330A2.chunk.js → BbTaGrM02.chunk.js} +2 -2
  20. package/dist/scripts/{Cv9H330A2.chunk.js.map → BbTaGrM02.chunk.js.map} +1 -1
  21. package/dist/scripts/{B2L2H3g9.chunk.js → Bn4Go0UF.chunk.js} +2 -2
  22. package/dist/scripts/{B2L2H3g9.chunk.js.map → Bn4Go0UF.chunk.js.map} +1 -1
  23. package/dist/scripts/{DQamsoU_2.chunk.js → Bs_S7mFn2.chunk.js} +2 -2
  24. package/dist/scripts/{DQamsoU_2.chunk.js.map → Bs_S7mFn2.chunk.js.map} +1 -1
  25. package/dist/scripts/{BHTp9hJG.chunk.js → BxKrer6h.chunk.js} +2 -2
  26. package/dist/scripts/{BHTp9hJG.chunk.js.map → BxKrer6h.chunk.js.map} +1 -1
  27. package/dist/scripts/{DsnkNBu62.chunk.js → C1m-1G6w2.chunk.js} +2 -2
  28. package/dist/scripts/{DsnkNBu62.chunk.js.map → C1m-1G6w2.chunk.js.map} +1 -1
  29. package/dist/scripts/{CmiQpwgd2.chunk.js → C2ZUZoNE2.chunk.js} +2 -2
  30. package/dist/scripts/{CmiQpwgd2.chunk.js.map → C2ZUZoNE2.chunk.js.map} +1 -1
  31. package/dist/scripts/{BVgajZti.chunk.js → C7rNnvPs.chunk.js} +2 -2
  32. package/dist/scripts/{BVgajZti.chunk.js.map → C7rNnvPs.chunk.js.map} +1 -1
  33. package/dist/scripts/{BQjyL0qS2.chunk.js → CItOH7dg2.chunk.js} +2 -2
  34. package/dist/scripts/{BQjyL0qS2.chunk.js.map → CItOH7dg2.chunk.js.map} +1 -1
  35. package/dist/scripts/{CudCJxPc2.chunk.js → CKTy7NJ92.chunk.js} +2 -2
  36. package/dist/scripts/{CudCJxPc2.chunk.js.map → CKTy7NJ92.chunk.js.map} +1 -1
  37. package/dist/scripts/CZQnIbqt.chunk.js +1 -0
  38. package/dist/scripts/CfPosTww.chunk.js +2 -0
  39. package/dist/scripts/CfPosTww.chunk.js.map +1 -0
  40. package/dist/scripts/{DcKDIHY92.chunk.js → CkS0imTk2.chunk.js} +3 -3
  41. package/dist/scripts/CkS0imTk2.chunk.js.map +1 -0
  42. package/dist/scripts/{CMQlrOon2.chunk.js → CllvFALa2.chunk.js} +2 -2
  43. package/dist/scripts/{CMQlrOon2.chunk.js.map → CllvFALa2.chunk.js.map} +1 -1
  44. package/dist/scripts/{Chh-4QFk.chunk.js → CqVCiInU.chunk.js} +2 -2
  45. package/dist/scripts/{Chh-4QFk.chunk.js.map → CqVCiInU.chunk.js.map} +1 -1
  46. package/dist/scripts/{D4_Ou9e_.chunk.js → DFxl2xgU.chunk.js} +2 -2
  47. package/dist/scripts/{D4_Ou9e_.chunk.js.map → DFxl2xgU.chunk.js.map} +1 -1
  48. package/dist/scripts/{CPw6bsFu2.chunk.js → DK50VHUW2.chunk.js} +2 -2
  49. package/dist/scripts/{CPw6bsFu2.chunk.js.map → DK50VHUW2.chunk.js.map} +1 -1
  50. package/dist/scripts/{D68hdbWD2.chunk.js → DfhaG70Z2.chunk.js} +3 -3
  51. package/dist/scripts/{D68hdbWD2.chunk.js.map → DfhaG70Z2.chunk.js.map} +1 -1
  52. package/dist/scripts/DkXQWig4.chunk.js +2 -0
  53. package/dist/scripts/DkXQWig4.chunk.js.map +1 -0
  54. package/dist/scripts/{BPVl1Je7.chunk.js → DldsJ3cq.chunk.js} +2 -2
  55. package/dist/scripts/{BPVl1Je7.chunk.js.map → DldsJ3cq.chunk.js.map} +1 -1
  56. package/dist/scripts/{cBssbttB.chunk.js → Du87dvla.chunk.js} +2 -2
  57. package/dist/scripts/{cBssbttB.chunk.js.map → Du87dvla.chunk.js.map} +1 -1
  58. package/dist/scripts/{Dj68Q14w.chunk.js → DuQ74iFu.chunk.js} +2 -2
  59. package/dist/scripts/{Dj68Q14w.chunk.js.map → DuQ74iFu.chunk.js.map} +1 -1
  60. package/dist/scripts/{BCPzswJq.chunk.js → DxBCBFh3.chunk.js} +2 -2
  61. package/dist/scripts/{BCPzswJq.chunk.js.map → DxBCBFh3.chunk.js.map} +1 -1
  62. package/dist/scripts/SNiCkvSP.chunk.js +2 -0
  63. package/dist/scripts/SNiCkvSP.chunk.js.map +1 -0
  64. package/dist/scripts/{D3WnBGZG.chunk.js → WxjzAHzM.chunk.js} +2 -2
  65. package/dist/scripts/{D3WnBGZG.chunk.js.map → WxjzAHzM.chunk.js.map} +1 -1
  66. package/dist/scripts/ao_3LgdP.chunk.js +1 -0
  67. package/dist/scripts/{app-cakVQEAF.js → app-BeoBow2q.js} +6 -6
  68. package/dist/scripts/app-BeoBow2q.js.map +1 -0
  69. package/dist/scripts/{DrBRL2aF.chunk.js → rdbFZIyT.chunk.js} +2 -2
  70. package/dist/scripts/{DrBRL2aF.chunk.js.map → rdbFZIyT.chunk.js.map} +1 -1
  71. package/dist/scripts/{CFA2yuiv.chunk.js → rtCrJwRm.chunk.js} +2 -2
  72. package/dist/scripts/{CFA2yuiv.chunk.js.map → rtCrJwRm.chunk.js.map} +1 -1
  73. package/dist/scripts/{BLy0WwGy.chunk.js → yklF-2M1.chunk.js} +2 -2
  74. package/dist/scripts/{BLy0WwGy.chunk.js.map → yklF-2M1.chunk.js.map} +1 -1
  75. package/package.json +1 -1
  76. package/dist/scripts/296Drw6z.chunk.js +0 -2
  77. package/dist/scripts/296Drw6z.chunk.js.map +0 -1
  78. package/dist/scripts/CyRTALRJ.chunk.js +0 -1
  79. package/dist/scripts/DNKj09Lh2.chunk.js +0 -2
  80. package/dist/scripts/DNKj09Lh2.chunk.js.map +0 -1
  81. package/dist/scripts/DcKDIHY92.chunk.js.map +0 -1
  82. package/dist/scripts/DhJ5lhcc.chunk.js +0 -2
  83. package/dist/scripts/DhJ5lhcc.chunk.js.map +0 -1
  84. package/dist/scripts/Dm7M2BT8.chunk.js +0 -1
  85. package/dist/scripts/app-cakVQEAF.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{Kn as e,N as t,P as n,Q as r,U as i,et as a,st as o,z as s}from"./BSV_W0cK.chunk.js";import{n as c,p as l}from"./DLiesDxa.chunk.js";import{t as u}from"./Bqlm3yF_.chunk.js";import{t as d}from"./Btl_wt9M.chunk.js";import{t as f}from"./DjcvhO-s.chunk.js";import{b as p,s as m}from"./app-cakVQEAF.js";import{t as h}from"./DPmS69Mt2.chunk.js";var g=e(o()),_=n(),v=`reports.removeLogo`,y=u.encloseNamespace(v);function b(e){let[n,o]=g.useState(!1),u=l(),b=h(),x=p();async function S(){o(!0);try{await u(m.removeLogo(e.customerId,e.logoId)),b.success(y(x?`successTertiary`:`success`)),t.logUserAction({id:e.logoId},{actionType:r.Remove,entity:s.Logo,workflowPhase:a.Complete,location:i.Popup}),e.closePopup()}catch{b.success(y(x?`errorTertiary`:`error`)),o(!1)}}return(0,_.jsxs)(d,{closePopup:e.closePopup,title:y(x?`removeSchoolCrestTertiary`:`removeSchoolCrest`),children:[(0,_.jsx)(`p`,{children:(0,_.jsx)(c,{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:n,variant:`danger`})]})]})}export{b as RemoveLogoView};
2
- //# sourceMappingURL=cBssbttB.chunk.js.map
1
+ import{Kn as e,N as t,P as n,Q as r,U as i,et as a,st as o,z as s}from"./BSV_W0cK.chunk.js";import{n as c,p as l}from"./DLiesDxa.chunk.js";import{t as u}from"./Bqlm3yF_.chunk.js";import{t as d}from"./Btl_wt9M.chunk.js";import{t as f}from"./DjcvhO-s.chunk.js";import{b as p,s as m}from"./app-BeoBow2q.js";import{t as h}from"./DPmS69Mt2.chunk.js";var g=e(o()),_=n(),v=`reports.removeLogo`,y=u.encloseNamespace(v);function b(e){let[n,o]=g.useState(!1),u=l(),b=h(),x=p();async function S(){o(!0);try{await u(m.removeLogo(e.customerId,e.logoId)),b.success(y(x?`successTertiary`:`success`)),t.logUserAction({id:e.logoId},{actionType:r.Remove,entity:s.Logo,workflowPhase:a.Complete,location:i.Popup}),e.closePopup()}catch{b.success(y(x?`errorTertiary`:`error`)),o(!1)}}return(0,_.jsxs)(d,{closePopup:e.closePopup,title:y(x?`removeSchoolCrestTertiary`:`removeSchoolCrest`),children:[(0,_.jsx)(`p`,{children:(0,_.jsx)(c,{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:n,variant:`danger`})]})]})}export{b as RemoveLogoView};
2
+ //# sourceMappingURL=Du87dvla.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cBssbttB.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":"4WAiBM,EAAY,qBACZ,EAAY,EAAgB,iBAAiB,EAAU,CAO7D,SAAgB,EAAe,EAAyC,CACtE,GAAM,CAAE,EAAa,GAAA,EAAyB,SAAS,GAAM,CAEvD,EAAa,GAAyB,CAEtC,EAAS,GAAW,CACpB,EAAa,GAAe,CAElC,eAAe,GAA+B,CAC5C,EAAe,GAAK,CAEpB,GAAI,CACF,MAAM,EAAW,EAAa,WAAW,EAAM,WAAY,EAAM,OAAO,CAAC,CAEzE,EAAO,QAAQ,EAAU,EAAa,kBAAoB,UAAU,CAAC,CAErE,EAAgB,cAAc,CAC5B,GAAI,EAAM,OACX,CAAE,CACD,WAAY,EAAW,OACvB,OAAQ,EAAW,KACnB,cAAe,EAAc,SAC7B,SAAU,EAAgB,MAC3B,CAAC,CAEF,EAAM,YAAY,MACZ,CACN,EAAO,QAAQ,EAAU,EAAa,gBAAkB,QAAQ,CAAC,CACjE,EAAe,GAAM,EAIzB,OACE,EAAA,EAAA,MAAC,EAAD,CACE,WAAY,EAAM,WAClB,MAAoB,EAAb,EAAuB,4BAAyC,oBAAoB,UAF7F,EAIE,EAAA,EAAA,KAAC,IAAD,CAAA,UAAG,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAQ,EAAa,qBAAuB,aAAgB,CAAA,CAAI,CAAA,EAE/F,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAa,OAAd,CAAqB,QAAS,EAAM,WAAc,CAAA,EAClD,EAAA,EAAA,KAAC,EAAa,OAAd,CACE,QAAS,EACT,KAAM,EAAU,SAAS,CACZ,cACb,QAAQ,SACR,CAAA,CACW,CAAA,CAAA,CACT"}
1
+ {"version":3,"file":"Du87dvla.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":"4WAiBM,EAAY,qBACZ,EAAY,EAAgB,iBAAiB,EAAU,CAO7D,SAAgB,EAAe,EAAyC,CACtE,GAAM,CAAE,EAAa,GAAA,EAAyB,SAAS,GAAM,CAEvD,EAAa,GAAyB,CAEtC,EAAS,GAAW,CACpB,EAAa,GAAe,CAElC,eAAe,GAA+B,CAC5C,EAAe,GAAK,CAEpB,GAAI,CACF,MAAM,EAAW,EAAa,WAAW,EAAM,WAAY,EAAM,OAAO,CAAC,CAEzE,EAAO,QAAQ,EAAU,EAAa,kBAAoB,UAAU,CAAC,CAErE,EAAgB,cAAc,CAC5B,GAAI,EAAM,OACX,CAAE,CACD,WAAY,EAAW,OACvB,OAAQ,EAAW,KACnB,cAAe,EAAc,SAC7B,SAAU,EAAgB,MAC3B,CAAC,CAEF,EAAM,YAAY,MACZ,CACN,EAAO,QAAQ,EAAU,EAAa,gBAAkB,QAAQ,CAAC,CACjE,EAAe,GAAM,EAIzB,OACE,EAAA,EAAA,MAAC,EAAD,CACE,WAAY,EAAM,WAClB,MAAoB,EAAb,EAAuB,4BAAyC,oBAAoB,UAF7F,EAIE,EAAA,EAAA,KAAC,IAAD,CAAA,UAAG,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAQ,EAAa,qBAAuB,aAAgB,CAAA,CAAI,CAAA,EAE/F,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAa,OAAd,CAAqB,QAAS,EAAM,WAAc,CAAA,EAClD,EAAA,EAAA,KAAC,EAAa,OAAd,CACE,QAAS,EACT,KAAM,EAAU,SAAS,CACZ,cACb,QAAQ,SACR,CAAA,CACW,CAAA,CAAA,CACT"}
@@ -1,2 +1,2 @@
1
- import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{d as n,n as r}from"./DLiesDxa.chunk.js";import{t as i}from"./Bqlm3yF_.chunk.js";import{t as a}from"./H5KLIhR_.chunk.js";import{t as o}from"./DmGbjBUG.chunk.js";import{t as s}from"./Du_kaCuU.chunk.js";import{r as c}from"./app-cakVQEAF.js";import{t as l}from"./PLyhtHwt2.chunk.js";import{c as u}from"./DcKDIHY92.chunk.js";import{n as d,t as f}from"./oPoOD_J-2.chunk.js";import{n as p}from"./BWJBtdAK2.chunk.js";import{n as m,t as h}from"./CMQlrOon2.chunk.js";import{i as g,n as _}from"./BCPzswJq.chunk.js";import{t as v}from"./D3WnBGZG.chunk.js";import{n as y,t as b}from"./CFA2yuiv.chunk.js";t();var x={image:`_image_1a110_1`},S=e(),C=i.encloseNamespace(`reportsShared.totalViewsByContentCardEmptyState`);function w(){return(0,S.jsxs)(s,{className:`flex-grow-1 justify-content-center`,children:[(0,S.jsx)(s.Image,{src:a.EmptyStates.Shared.PuzzleGroup,className:x.image}),(0,S.jsx)(s.Heading,{className:`h6`,children:C(`heading`)}),(0,S.jsx)(s.Info,{className:`w-100`,children:C(`description`)})]})}var T=`reportsShared.videoViewsByContentCard`,E=i.encloseNamespace(T),D=function(e){return e.ClickView=`ClickView content`,e.TV=`TV content`,e.UserGenerated=`User generated content`,e}(D||{});function O(){let e=c(`video-views`),t=n(l.aggregation(`content_type`,e));function i(e){switch(e){case D.ClickView:return u.YELLOW;case D.TV:return u.PURPLE;case D.UserGenerated:return u.GREEN}}function a(e){switch(e){case D.ClickView:return E(`clickview`);case D.TV:return E(`tv`);case D.UserGenerated:return E(`userGenerated`)}}function o(e){return e?e.filter(e=>e.name===D.ClickView||e.name===D.TV||e.name===D.UserGenerated).map(e=>({name:a(e.name),y:e.count,color:i(e.name)})):null}let s=o(t.data);return(0,S.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white rounded p-3`,children:s?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`h2`,{className:`h6 mb-3`,children:(0,S.jsx)(r,{namespace:T,phrase:`videoViews`})}),s.length?(0,S.jsx)(y,{data:s}):(0,S.jsx)(w,{})]}):(0,S.jsx)(`div`,{className:`partial-loading-background w-25`,children:`\xA0`})})}var k={column1:`_column1_1s749_1`,column2:`_column2_1s749_4`,videoViewsCard:`_videoViewsCard_1s749_7`},A=i.encloseNamespace(`videos.schoolVideoOverview`),j=50;function M(){return o({title:A(`videos`)}),p(A(`videos`)),g(_()),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(v,{}),(0,S.jsxs)(`div`,{className:`d-flex gap-3`,children:[(0,S.jsxs)(`div`,{className:`d-flex flex-column gap-3 ${k.column1}`,children:[(0,S.jsx)(`div`,{className:k.videoViewsCard,children:(0,S.jsx)(m,{type:`year_group`})}),(0,S.jsx)(`div`,{className:k.videoViewsCard,children:(0,S.jsx)(b,{})}),(0,S.jsx)(`div`,{className:k.videoViewsCard,children:(0,S.jsx)(O,{})})]}),(0,S.jsxs)(`div`,{className:`d-flex flex-column gap-3 ${k.column2}`,children:[(0,S.jsx)(`div`,{className:k.videoViewsCard,children:(0,S.jsx)(h,{type:`user_type`})}),(0,S.jsx)(`div`,{className:k.videoViewsCard,children:(0,S.jsx)(f,{type:d.RootTopic,heading:A(`totalViewsSubject`),emptyStateText:A(`emptySubjects`),limit:j})}),(0,S.jsx)(`div`,{className:k.videoViewsCard,children:(0,S.jsx)(f,{type:d.ChildTopic,heading:A(`totalViewsTopic`),emptyStateText:A(`emptyTopics`),limit:j})})]})]})]})}export{M as SchoolVideoOverviewView};
2
- //# sourceMappingURL=Dj68Q14w.chunk.js.map
1
+ import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{d as n,n as r}from"./DLiesDxa.chunk.js";import{t as i}from"./Bqlm3yF_.chunk.js";import{t as a}from"./H5KLIhR_.chunk.js";import{t as o}from"./DmGbjBUG.chunk.js";import{t as s}from"./Du_kaCuU.chunk.js";import{r as c}from"./app-BeoBow2q.js";import{t as l}from"./BYLD2f9R2.chunk.js";import{c as u}from"./CkS0imTk2.chunk.js";import{n as d,t as f}from"./BQcTfbZm2.chunk.js";import{n as p}from"./BOGodQXj2.chunk.js";import{n as m,t as h}from"./CllvFALa2.chunk.js";import{i as g,n as _}from"./DxBCBFh3.chunk.js";import{t as v}from"./WxjzAHzM.chunk.js";import{n as y,t as b}from"./rtCrJwRm.chunk.js";t();var x={image:`_image_1a110_1`},S=e(),C=i.encloseNamespace(`reportsShared.totalViewsByContentCardEmptyState`);function w(){return(0,S.jsxs)(s,{className:`flex-grow-1 justify-content-center`,children:[(0,S.jsx)(s.Image,{src:a.EmptyStates.Shared.PuzzleGroup,className:x.image}),(0,S.jsx)(s.Heading,{className:`h6`,children:C(`heading`)}),(0,S.jsx)(s.Info,{className:`w-100`,children:C(`description`)})]})}var T=`reportsShared.videoViewsByContentCard`,E=i.encloseNamespace(T),D=function(e){return e.ClickView=`ClickView content`,e.TV=`TV content`,e.UserGenerated=`User generated content`,e}(D||{});function O(){let e=c(`video-views`),t=n(l.aggregation(`content_type`,e));function i(e){switch(e){case D.ClickView:return u.YELLOW;case D.TV:return u.PURPLE;case D.UserGenerated:return u.GREEN}}function a(e){switch(e){case D.ClickView:return E(`clickview`);case D.TV:return E(`tv`);case D.UserGenerated:return E(`userGenerated`)}}function o(e){return e?e.filter(e=>e.name===D.ClickView||e.name===D.TV||e.name===D.UserGenerated).map(e=>({name:a(e.name),y:e.count,color:i(e.name)})):null}let s=o(t.data);return(0,S.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white rounded p-3`,children:s?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`h2`,{className:`h6 mb-3`,children:(0,S.jsx)(r,{namespace:T,phrase:`videoViews`})}),s.length?(0,S.jsx)(y,{data:s}):(0,S.jsx)(w,{})]}):(0,S.jsx)(`div`,{className:`partial-loading-background w-25`,children:`\xA0`})})}var k={column1:`_column1_1s749_1`,column2:`_column2_1s749_4`,videoViewsCard:`_videoViewsCard_1s749_7`},A=i.encloseNamespace(`videos.schoolVideoOverview`),j=50;function M(){return o({title:A(`videos`)}),p(A(`videos`)),g(_()),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(v,{}),(0,S.jsxs)(`div`,{className:`d-flex gap-3`,children:[(0,S.jsxs)(`div`,{className:`d-flex flex-column gap-3 ${k.column1}`,children:[(0,S.jsx)(`div`,{className:k.videoViewsCard,children:(0,S.jsx)(m,{type:`year_group`})}),(0,S.jsx)(`div`,{className:k.videoViewsCard,children:(0,S.jsx)(b,{})}),(0,S.jsx)(`div`,{className:k.videoViewsCard,children:(0,S.jsx)(O,{})})]}),(0,S.jsxs)(`div`,{className:`d-flex flex-column gap-3 ${k.column2}`,children:[(0,S.jsx)(`div`,{className:k.videoViewsCard,children:(0,S.jsx)(h,{type:`user_type`})}),(0,S.jsx)(`div`,{className:k.videoViewsCard,children:(0,S.jsx)(f,{type:d.RootTopic,heading:A(`totalViewsSubject`),emptyStateText:A(`emptySubjects`),limit:j})}),(0,S.jsx)(`div`,{className:k.videoViewsCard,children:(0,S.jsx)(f,{type:d.ChildTopic,heading:A(`totalViewsTopic`),emptyStateText:A(`emptyTopics`),limit:j})})]})]})]})}export{M as SchoolVideoOverviewView};
2
+ //# sourceMappingURL=DuQ74iFu.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dj68Q14w.chunk.js","names":[],"sources":["../../src/shared/views/overview-cards/video-views-by-content-card/empty-state/total-views-by-content-card-empty-state.module.scss","../../src/shared/views/overview-cards/video-views-by-content-card/empty-state/TotalViewsByContentCardEmptyState.tsx","../../src/shared/views/overview-cards/video-views-by-content-card/VideoViewsByContentCard.tsx","../../src/apps/videos/views/school-video-overview/school-video-overview.module.scss","../../src/apps/videos/views/school-video-overview/SchoolVideoOverviewView.tsx"],"sourcesContent":[":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './total-views-by-content-card-empty-state.module.scss';\n\nconst namespace = 'reportsShared.totalViewsByContentCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TotalViewsByContentCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.PuzzleGroup}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ColumnChart } from 'shared/components/column-chart/ColumnChart';\nimport { CHART_COLOUR } from 'shared/constants/ChartStyles';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TotalViewsByContentCardEmptyState } from 'shared/views/overview-cards/video-views-by-content-card/empty-state/TotalViewsByContentCardEmptyState';\n\nconst namespace = 'reportsShared.videoViewsByContentCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nenum ContentType {\n ClickView = 'ClickView content',\n TV = 'TV content',\n UserGenerated = 'User generated content'\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoViewsByContentCardView() {\n const requestFilter = useGetRequestFilter('video-views');\n\n const contentTypeCount = Flight.useBasicFetch<GroupedAnalyticsCount[]>(\n VideoViewsV2Requests.aggregation('content_type', requestFilter)\n );\n\n function mapContentTypeToChartColour(contentType: string) {\n switch (contentType) {\n case ContentType.ClickView: return CHART_COLOUR.YELLOW;\n case ContentType.TV: return CHART_COLOUR.PURPLE;\n case ContentType.UserGenerated: return CHART_COLOUR.GREEN;\n }\n }\n\n function mapContentTypeToLabel(contentType: string) {\n switch (contentType) {\n case ContentType.ClickView: return getPhrase('clickview');\n case ContentType.TV: return getPhrase('tv');\n case ContentType.UserGenerated: return getPhrase('userGenerated');\n }\n }\n\n function getChartData(contentTypeCount: GroupedAnalyticsCount[]) {\n if (!contentTypeCount) return null;\n\n const mappedGroups = contentTypeCount.filter(group => (\n group.name === ContentType.ClickView ||\n group.name === ContentType.TV ||\n group.name === ContentType.UserGenerated\n )).map(group => ({\n name: mapContentTypeToLabel(group.name),\n y: group.count,\n color: mapContentTypeToChartColour(group.name)\n }));\n\n return mappedGroups;\n }\n\n const chartData = getChartData(contentTypeCount.data);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3'>\n {chartData ?\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='videoViews' /></h2>\n\n {chartData.length ?\n <ColumnChart data={chartData} /> :\n <TotalViewsByContentCardEmptyState />\n }\n </> :\n <div className='partial-loading-background w-25'>&nbsp;</div>\n }\n </div>\n );\n}\n",":local {\n .column1 {\n flex: 3 0;\n }\n \n .column2 {\n flex: 4 0;\n }\n\n .videoViewsCard {\n height: 20rem;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { getVideoHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { StreamsBarChartCardView } from 'shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView';\nimport { StreamsChartCardView } from 'shared/views/overview-cards/streams-chart-card/StreamsChartCardView';\nimport { TopClassificationsCardView } from 'shared/views/overview-cards/top-classifications-card/TopClassificationsCardView';\nimport { VideoViewsByContentCardView } from 'shared/views/overview-cards/video-views-by-content-card/VideoViewsByContentCard';\nimport { VideoViewsByRoleCardView } from 'shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView';\n\nimport { SchoolVideosNav } from 'apps/videos/components/school-videos-nav/SchoolVideosNav';\n\nimport styles from './school-video-overview.module.scss';\n\nconst namespace = 'videos.schoolVideoOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst TOP_CLASSIFICATIONS_LIMIT = 50;\n\nexport function SchoolVideoOverviewView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('videos') });\n useSetHeaderTitle(getPhrase('videos'));\n useSetHeaderActions(getVideoHeaderActions());\n\n return (\n <div>\n <SchoolVideosNav />\n <div className='d-flex gap-3'>\n <div className={`d-flex flex-column gap-3 ${styles.column1}`}>\n <div className={styles.videoViewsCard}>\n <StreamsBarChartCardView type='year_group' />\n </div>\n <div className={styles.videoViewsCard}>\n <VideoViewsByRoleCardView />\n </div>\n <div className={styles.videoViewsCard}>\n <VideoViewsByContentCardView />\n </div>\n </div>\n <div className={`d-flex flex-column gap-3 ${styles.column2}`}>\n <div className={styles.videoViewsCard}>\n <StreamsChartCardView type='user_type' />\n </div>\n <div className={styles.videoViewsCard}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.RootTopic}\n heading={getPhrase('totalViewsSubject')}\n emptyStateText={getPhrase('emptySubjects')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n <div className={styles.videoViewsCard}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.ChildTopic}\n heading={getPhrase('totalViewsTopic')}\n emptyStateText={getPhrase('emptyTopics')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"+qBCWM,EAAY,EAAgB,iBADhB,kDAC2C,CAE7D,SAAgB,GAAoC,CAClD,OACE,EAAA,EAAA,MAAC,EAAD,CAAY,UAAU,8CAAtB,EACE,EAAA,EAAA,KAAC,EAAW,MAAZ,CACE,IAAK,EAAU,YAAY,OAAO,YAClC,UAAW,EAAO,MAClB,CAAA,EACF,EAAA,EAAA,KAAC,EAAW,QAAZ,CAAoB,UAAU,cAC3B,EAAU,UAAU,CACF,CAAA,EACrB,EAAA,EAAA,KAAC,EAAW,KAAZ,CAAiB,UAAU,iBACxB,EAAU,cAAc,CACT,CAAA,CACP,GCZjB,IAAM,EAAY,wCACZ,EAAY,EAAgB,iBAAiB,EAAU,CAExD,EAAL,SAAA,EAAA,OACE,GAAA,UAAA,oBACA,EAAA,GAAA,aACA,EAAA,cAAA,4BAHG,GAAA,EAAA,CAIJ,CAGD,SAAgB,GAA8B,CAC5C,IAAM,EAAgB,EAAoB,cAAc,CAElD,EAAmB,EACvB,EAAqB,YAAY,eAAgB,EAAc,CAChE,CAED,SAAS,EAA4B,EAAqB,CACxD,OAAQ,EAAR,CACE,KAAK,EAAY,UAAW,OAAO,EAAa,OAChD,KAAK,EAAY,GAAI,OAAO,EAAa,OACzC,KAAK,EAAY,cAAe,OAAO,EAAa,OAIxD,SAAS,EAAsB,EAAqB,CAClD,OAAQ,EAAR,CACE,KAAK,EAAY,UAAW,OAAO,EAAU,YAAY,CACzD,KAAK,EAAY,GAAI,OAAO,EAAU,KAAK,CAC3C,KAAK,EAAY,cAAe,OAAO,EAAU,gBAAgB,EAIrE,SAAS,EAAa,EAA2C,CAa/D,OAZK,EAEgB,EAAiB,OAAO,GAC3C,EAAM,OAAS,EAAY,WAC3B,EAAM,OAAS,EAAY,IAC3B,EAAM,OAAS,EAAY,cAC3B,CAAC,IAAI,IAAU,CACf,KAAM,EAAsB,EAAM,KAAK,CACvC,EAAG,EAAM,MACT,MAAO,EAA4B,EAAM,KAAK,CAC/C,EAAE,CAV2B,KAehC,IAAM,EAAY,EAAa,EAAiB,KAAK,CAErD,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,yDACZ,GACC,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,oBAAU,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,aAAe,CAAA,CAAK,CAAA,CAE9E,EAAU,QACT,EAAA,EAAA,KAAC,EAAD,CAAa,KAAM,EAAa,CAAA,EAChC,EAAA,EAAA,KAAC,EAAD,EAAqC,CAAA,CAEtC,CAAA,CAAA,EACH,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,2CAAkC,OAAY,CAAA,CAE3D,CAAA,wGEzDJ,EAAY,EAAgB,iBADhB,6BAC2C,CAEvD,EAA4B,GAElC,SAAgB,GAAuC,CAKrD,OAJA,EAAmB,CAAE,MAAO,EAAU,SAAS,CAAE,CAAC,CAClD,EAAkB,EAAU,SAAS,CAAC,CACtC,EAAoB,GAAuB,CAAC,EAG1C,EAAA,EAAA,MAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAD,EAAmB,CAAA,EACnB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,wBAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,4BAA4B,EAAO,mBAAnD,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,yBACrB,EAAA,EAAA,KAAC,EAAD,CAAyB,KAAK,aAAe,CAAA,CACzC,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,yBACrB,EAAA,EAAA,KAAC,EAAD,EAA4B,CAAA,CACxB,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,yBACrB,EAAA,EAAA,KAAC,EAAD,EAA+B,CAAA,CAC3B,CAAA,KAER,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,4BAA4B,EAAO,mBAAnD,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,yBACrB,EAAA,EAAA,KAAC,EAAD,CAAsB,KAAK,YAAc,CAAA,CACrC,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,yBACrB,EAAA,EAAA,KAAC,EAAD,CACE,KAAM,EAAmB,UACzB,QAAS,EAAU,oBAAoB,CACvC,eAAgB,EAAU,gBAAgB,CAC1C,MAAO,EACP,CAAA,CACE,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAO,yBACrB,EAAA,EAAA,KAAC,EAAD,CACE,KAAM,EAAmB,WACzB,QAAS,EAAU,kBAAkB,CACrC,eAAgB,EAAU,cAAc,CACxC,MAAO,EACP,CAAA,CACE,CAAA,OAGN,CAAA,CAAA"}
1
+ {"version":3,"file":"DuQ74iFu.chunk.js","names":[],"sources":["../../src/shared/views/overview-cards/video-views-by-content-card/empty-state/total-views-by-content-card-empty-state.module.scss","../../src/shared/views/overview-cards/video-views-by-content-card/empty-state/TotalViewsByContentCardEmptyState.tsx","../../src/shared/views/overview-cards/video-views-by-content-card/VideoViewsByContentCard.tsx","../../src/apps/videos/views/school-video-overview/school-video-overview.module.scss","../../src/apps/videos/views/school-video-overview/SchoolVideoOverviewView.tsx"],"sourcesContent":[":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './total-views-by-content-card-empty-state.module.scss';\n\nconst namespace = 'reportsShared.totalViewsByContentCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TotalViewsByContentCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.PuzzleGroup}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ColumnChart } from 'shared/components/column-chart/ColumnChart';\nimport { CHART_COLOUR } from 'shared/constants/ChartStyles';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TotalViewsByContentCardEmptyState } from 'shared/views/overview-cards/video-views-by-content-card/empty-state/TotalViewsByContentCardEmptyState';\n\nconst namespace = 'reportsShared.videoViewsByContentCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nenum ContentType {\n ClickView = 'ClickView content',\n TV = 'TV content',\n UserGenerated = 'User generated content'\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoViewsByContentCardView() {\n const requestFilter = useGetRequestFilter('video-views');\n\n const contentTypeCount = Flight.useBasicFetch<GroupedAnalyticsCount[]>(\n VideoViewsV2Requests.aggregation('content_type', requestFilter)\n );\n\n function mapContentTypeToChartColour(contentType: string) {\n switch (contentType) {\n case ContentType.ClickView: return CHART_COLOUR.YELLOW;\n case ContentType.TV: return CHART_COLOUR.PURPLE;\n case ContentType.UserGenerated: return CHART_COLOUR.GREEN;\n }\n }\n\n function mapContentTypeToLabel(contentType: string) {\n switch (contentType) {\n case ContentType.ClickView: return getPhrase('clickview');\n case ContentType.TV: return getPhrase('tv');\n case ContentType.UserGenerated: return getPhrase('userGenerated');\n }\n }\n\n function getChartData(contentTypeCount: GroupedAnalyticsCount[]) {\n if (!contentTypeCount) return null;\n\n const mappedGroups = contentTypeCount.filter(group => (\n group.name === ContentType.ClickView ||\n group.name === ContentType.TV ||\n group.name === ContentType.UserGenerated\n )).map(group => ({\n name: mapContentTypeToLabel(group.name),\n y: group.count,\n color: mapContentTypeToChartColour(group.name)\n }));\n\n return mappedGroups;\n }\n\n const chartData = getChartData(contentTypeCount.data);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3'>\n {chartData ?\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='videoViews' /></h2>\n\n {chartData.length ?\n <ColumnChart data={chartData} /> :\n <TotalViewsByContentCardEmptyState />\n }\n </> :\n <div className='partial-loading-background w-25'>&nbsp;</div>\n }\n </div>\n );\n}\n",":local {\n .column1 {\n flex: 3 0;\n }\n \n .column2 {\n flex: 4 0;\n }\n\n .videoViewsCard {\n height: 20rem;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { getVideoHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { StreamsBarChartCardView } from 'shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView';\nimport { StreamsChartCardView } from 'shared/views/overview-cards/streams-chart-card/StreamsChartCardView';\nimport { TopClassificationsCardView } from 'shared/views/overview-cards/top-classifications-card/TopClassificationsCardView';\nimport { VideoViewsByContentCardView } from 'shared/views/overview-cards/video-views-by-content-card/VideoViewsByContentCard';\nimport { VideoViewsByRoleCardView } from 'shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView';\n\nimport { SchoolVideosNav } from 'apps/videos/components/school-videos-nav/SchoolVideosNav';\n\nimport styles from './school-video-overview.module.scss';\n\nconst namespace = 'videos.schoolVideoOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst TOP_CLASSIFICATIONS_LIMIT = 50;\n\nexport function SchoolVideoOverviewView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('videos') });\n useSetHeaderTitle(getPhrase('videos'));\n useSetHeaderActions(getVideoHeaderActions());\n\n return (\n <div>\n <SchoolVideosNav />\n <div className='d-flex gap-3'>\n <div className={`d-flex flex-column gap-3 ${styles.column1}`}>\n <div className={styles.videoViewsCard}>\n <StreamsBarChartCardView type='year_group' />\n </div>\n <div className={styles.videoViewsCard}>\n <VideoViewsByRoleCardView />\n </div>\n <div className={styles.videoViewsCard}>\n <VideoViewsByContentCardView />\n </div>\n </div>\n <div className={`d-flex flex-column gap-3 ${styles.column2}`}>\n <div className={styles.videoViewsCard}>\n <StreamsChartCardView type='user_type' />\n </div>\n <div className={styles.videoViewsCard}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.RootTopic}\n heading={getPhrase('totalViewsSubject')}\n emptyStateText={getPhrase('emptySubjects')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n <div className={styles.videoViewsCard}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.ChildTopic}\n heading={getPhrase('totalViewsTopic')}\n emptyStateText={getPhrase('emptyTopics')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{Kn as e,P as t,st as n}from"./BSV_W0cK.chunk.js";import{r}from"./COrUmz0l.chunk.js";import{n as i}from"./CammdB53.chunk.js";import{t as a}from"./Bqlm3yF_.chunk.js";import{n as o,r as s}from"./H5KLIhR_.chunk.js";import{n as c}from"./DjcvhO-s.chunk.js";import{$ as l,F as u,M as d}from"./app-cakVQEAF.js";import{m as f}from"./DcKDIHY92.chunk.js";import{t as p}from"./B2L2H3g9.chunk.js";var m=e(n());function h(e){let[,t]=i(d.HEADER_ACTIONS);(0,m.useEffect)(()=>(t(e),()=>{t(null)}),[!!e])}var g=t(),_=a.encloseNamespace(`reportsShared.anonymiseAction`);function v(){let[e,t]=i(d.ANONYMISE_USERS,!1);return(0,g.jsxs)(`div`,{className:`d-flex align-items center justify-content-between`,onClick:()=>t(!e),children:[(0,g.jsx)(`span`,{className:`me-3`,children:_(`hideNames`)}),(0,g.jsx)(c,{on:e,onClick:()=>{}})]})}var y=a.encloseNamespace(`reportsShared.utils`);function b(e){let t=f(l.getPrimaryObjectUrl);if(!e)return;let n=[];return t&&n.push({label:()=>(0,g.jsxs)(`span`,{className:`d-flex justify-content-between align-items-center`,children:[(0,g.jsx)(`span`,{className:`me-2`,children:y(`seeVideo`)}),(0,g.jsx)(r,{svg:u})]}),href:t(e),openInNewTab:!0}),n.push({label:()=>(0,g.jsx)(v,{})}),n}function x(){return[{label:y(`generateReport`),appLink:{application:s.DEFAULT,action:o.Default.GENERATE_REPORT,params:{type:p.VideoViews}}}]}function S(){return[{label:y(`generateReport`),appLink:{application:s.DEFAULT,action:o.Default.GENERATE_REPORT,params:{type:p.Logins}}}]}export{h as i,x as n,b as r,S as t};
2
- //# sourceMappingURL=BCPzswJq.chunk.js.map
1
+ import{Kn as e,P as t,st as n}from"./BSV_W0cK.chunk.js";import{r}from"./COrUmz0l.chunk.js";import{n as i}from"./CammdB53.chunk.js";import{t as a}from"./Bqlm3yF_.chunk.js";import{n as o,r as s}from"./H5KLIhR_.chunk.js";import{n as c}from"./DjcvhO-s.chunk.js";import{$ as l,F as u,M as d}from"./app-BeoBow2q.js";import{m as f}from"./CkS0imTk2.chunk.js";import{t as p}from"./Bn4Go0UF.chunk.js";var m=e(n());function h(e){let[,t]=i(d.HEADER_ACTIONS);(0,m.useEffect)(()=>(t(e),()=>{t(null)}),[!!e])}var g=t(),_=a.encloseNamespace(`reportsShared.anonymiseAction`);function v(){let[e,t]=i(d.ANONYMISE_USERS,!1);return(0,g.jsxs)(`div`,{className:`d-flex align-items center justify-content-between`,onClick:()=>t(!e),children:[(0,g.jsx)(`span`,{className:`me-3`,children:_(`hideNames`)}),(0,g.jsx)(c,{on:e,onClick:()=>{}})]})}var y=a.encloseNamespace(`reportsShared.utils`);function b(e){let t=f(l.getPrimaryObjectUrl);if(!e)return;let n=[];return t&&n.push({label:()=>(0,g.jsxs)(`span`,{className:`d-flex justify-content-between align-items-center`,children:[(0,g.jsx)(`span`,{className:`me-2`,children:y(`seeVideo`)}),(0,g.jsx)(r,{svg:u})]}),href:t(e),openInNewTab:!0}),n.push({label:()=>(0,g.jsx)(v,{})}),n}function x(){return[{label:y(`generateReport`),appLink:{application:s.DEFAULT,action:o.Default.GENERATE_REPORT,params:{type:p.VideoViews}}}]}function S(){return[{label:y(`generateReport`),appLink:{application:s.DEFAULT,action:o.Default.GENERATE_REPORT,params:{type:p.Logins}}}]}export{h as i,x as n,b as r,S as t};
2
+ //# sourceMappingURL=DxBCBFh3.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BCPzswJq.chunk.js","names":[],"sources":["../../src/shared/hooks/UseSetHeaderActions.ts","../../src/shared/components/anonymise-action/AnonymiseAction.tsx","../../src/shared/utils/HeaderActionUtils.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { DropdownActionOptions } from 'libs/shared/components/actions/ActionsDropdown';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\n/**\n * This hook will only set the actions on the initial render.\n * If the actions are dynamic, either this hook will need to be updated\n * or useViewModel used directly.\n */\nexport function useSetHeaderActions(actions?: DropdownActionOptions[]): void {\n const [ , setActions ] = useViewModel<DropdownActionOptions[]>(ViewModelKeys.HEADER_ACTIONS);\n\n useEffect(() => {\n setActions(actions);\n\n return () => {\n setActions(null);\n };\n }, [!!actions]);\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\nconst namespace = 'reportsShared.anonymiseAction';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AnonymiseAction(): JSX.Element {\n const [ anonymiseUsers, setAnonymiseUsers ] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS, false);\n\n return (\n <div\n className='d-flex align-items center justify-content-between'\n onClick={() => setAnonymiseUsers(!anonymiseUsers)}\n >\n <span className='me-3'>\n {getPhrase('hideNames')}\n </span>\n <ToggleSwitch on={anonymiseUsers} onClick={() => {}} />\n </div>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DropdownActionOptions } from 'libs/shared/components/actions/ActionsDropdown';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useGetExternalUrl } from 'libs/shared/hooks/UseGetExternalUrl';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { AnonymiseAction } from 'shared/components/anonymise-action/AnonymiseAction';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { GenerateReportType } from 'shared/views/generate-report/GenerateReportView';\n\nimport { ExternalRouteHelper } from './ExternalRouteHelper';\n\nconst namespace = 'reportsShared.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useGetObjectHeaderActions(object?: BaseObject): DropdownActionOptions[] {\n const getObjectUrl = useGetExternalUrl(ExternalRouteHelper.getPrimaryObjectUrl);\n if (!object)\n return;\n\n const actions: DropdownActionOptions[] = [];\n\n if (getObjectUrl)\n actions.push({\n label: () => (\n <span\n className='d-flex justify-content-between align-items-center'\n >\n <span className='me-2'>\n {/* // TODO: once we have non-video types this will need to be updated. */}\n {getPhrase('seeVideo')}\n </span>\n <SvgContainer svg={NewWindowSvg} />\n </span>\n ),\n href: getObjectUrl(object),\n openInNewTab: true\n });\n\n actions.push({\n label: () => <AnonymiseAction />\n });\n\n return actions;\n}\n\nexport function getVideoHeaderActions(): DropdownActionOptions[] {\n return [{\n label: getPhrase('generateReport'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.GENERATE_REPORT,\n params: { type: GenerateReportType.VideoViews }\n }\n }];\n}\n\nexport function getLoginHeaderActions(): DropdownActionOptions[] {\n return [{\n label: getPhrase('generateReport'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.GENERATE_REPORT,\n params: { type: GenerateReportType.Logins }\n }\n }];\n}\n"],"mappings":"oZAaA,SAAgB,EAAoB,EAAyC,CAC3E,GAAM,EAAI,GAAe,EAAsC,EAAc,eAAe,EAE5F,EAAA,EAAA,gBACE,EAAW,EAAQ,KAEN,CACX,EAAW,KAAK,GAEjB,CAAC,CAAC,CAAC,EAAQ,CAAC,WCZX,EAAY,EAAgB,iBADhB,gCAC2C,CAE7D,SAAgB,GAA+B,CAC7C,GAAM,CAAE,EAAgB,GAAsB,EAAsB,EAAc,gBAAiB,GAAM,CAEzG,OACE,EAAA,EAAA,MAAC,MAAD,CACE,UAAU,oDACV,YAAe,EAAkB,CAAC,EAAe,UAFnD,EAIE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,gBACb,EAAU,YAAY,CAClB,CAAA,EACP,EAAA,EAAA,KAAC,EAAD,CAAc,GAAI,EAAgB,YAAe,GAAM,CAAA,CACnD,GCNV,IAAM,EAAY,EAAgB,iBADhB,sBAC2C,CAE7D,SAAgB,EAA0B,EAA8C,CACtF,IAAM,EAAe,EAAkB,EAAoB,oBAAoB,CAC/E,GAAI,CAAC,EACH,OAEF,IAAM,EAAmC,EAAE,CAuB3C,OArBI,GACF,EAAQ,KAAK,CACX,WACE,EAAA,EAAA,MAAC,OAAD,CACE,UAAU,6DADZ,EAGE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,gBAEb,EAAU,WAAW,CACjB,CAAA,EACP,EAAA,EAAA,KAAC,EAAD,CAAc,IAAK,EAAgB,CAAA,CAC9B,GAET,KAAM,EAAa,EAAO,CAC1B,aAAc,GACf,CAAC,CAEJ,EAAQ,KAAK,CACX,WAAa,EAAA,EAAA,KAAC,EAAD,EAAmB,CAAA,CACjC,CAAC,CAEK,EAGT,SAAgB,GAAiD,CAC/D,MAAO,CAAC,CACN,MAAO,EAAU,iBAAiB,CAClC,QAAS,CACP,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,gBACxB,OAAQ,CAAE,KAAM,EAAmB,WAAY,CAChD,CACF,CAAC,CAGJ,SAAgB,GAAiD,CAC/D,MAAO,CAAC,CACN,MAAO,EAAU,iBAAiB,CAClC,QAAS,CACP,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,gBACxB,OAAQ,CAAE,KAAM,EAAmB,OAAQ,CAC5C,CACF,CAAC"}
1
+ {"version":3,"file":"DxBCBFh3.chunk.js","names":[],"sources":["../../src/shared/hooks/UseSetHeaderActions.ts","../../src/shared/components/anonymise-action/AnonymiseAction.tsx","../../src/shared/utils/HeaderActionUtils.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { DropdownActionOptions } from 'libs/shared/components/actions/ActionsDropdown';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\n/**\n * This hook will only set the actions on the initial render.\n * If the actions are dynamic, either this hook will need to be updated\n * or useViewModel used directly.\n */\nexport function useSetHeaderActions(actions?: DropdownActionOptions[]): void {\n const [ , setActions ] = useViewModel<DropdownActionOptions[]>(ViewModelKeys.HEADER_ACTIONS);\n\n useEffect(() => {\n setActions(actions);\n\n return () => {\n setActions(null);\n };\n }, [!!actions]);\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\nconst namespace = 'reportsShared.anonymiseAction';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AnonymiseAction(): JSX.Element {\n const [ anonymiseUsers, setAnonymiseUsers ] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS, false);\n\n return (\n <div\n className='d-flex align-items center justify-content-between'\n onClick={() => setAnonymiseUsers(!anonymiseUsers)}\n >\n <span className='me-3'>\n {getPhrase('hideNames')}\n </span>\n <ToggleSwitch on={anonymiseUsers} onClick={() => {}} />\n </div>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DropdownActionOptions } from 'libs/shared/components/actions/ActionsDropdown';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useGetExternalUrl } from 'libs/shared/hooks/UseGetExternalUrl';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { AnonymiseAction } from 'shared/components/anonymise-action/AnonymiseAction';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { GenerateReportType } from 'shared/views/generate-report/GenerateReportView';\n\nimport { ExternalRouteHelper } from './ExternalRouteHelper';\n\nconst namespace = 'reportsShared.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useGetObjectHeaderActions(object?: BaseObject): DropdownActionOptions[] {\n const getObjectUrl = useGetExternalUrl(ExternalRouteHelper.getPrimaryObjectUrl);\n if (!object)\n return;\n\n const actions: DropdownActionOptions[] = [];\n\n if (getObjectUrl)\n actions.push({\n label: () => (\n <span\n className='d-flex justify-content-between align-items-center'\n >\n <span className='me-2'>\n {/* // TODO: once we have non-video types this will need to be updated. */}\n {getPhrase('seeVideo')}\n </span>\n <SvgContainer svg={NewWindowSvg} />\n </span>\n ),\n href: getObjectUrl(object),\n openInNewTab: true\n });\n\n actions.push({\n label: () => <AnonymiseAction />\n });\n\n return actions;\n}\n\nexport function getVideoHeaderActions(): DropdownActionOptions[] {\n return [{\n label: getPhrase('generateReport'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.GENERATE_REPORT,\n params: { type: GenerateReportType.VideoViews }\n }\n }];\n}\n\nexport function getLoginHeaderActions(): DropdownActionOptions[] {\n return [{\n label: getPhrase('generateReport'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.GENERATE_REPORT,\n params: { type: GenerateReportType.Logins }\n }\n }];\n}\n"],"mappings":"oZAaA,SAAgB,EAAoB,EAAyC,CAC3E,GAAM,EAAI,GAAe,EAAsC,EAAc,eAAe,EAE5F,EAAA,EAAA,gBACE,EAAW,EAAQ,KAEN,CACX,EAAW,KAAK,GAEjB,CAAC,CAAC,CAAC,EAAQ,CAAC,WCZX,EAAY,EAAgB,iBADhB,gCAC2C,CAE7D,SAAgB,GAA+B,CAC7C,GAAM,CAAE,EAAgB,GAAsB,EAAsB,EAAc,gBAAiB,GAAM,CAEzG,OACE,EAAA,EAAA,MAAC,MAAD,CACE,UAAU,oDACV,YAAe,EAAkB,CAAC,EAAe,UAFnD,EAIE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,gBACb,EAAU,YAAY,CAClB,CAAA,EACP,EAAA,EAAA,KAAC,EAAD,CAAc,GAAI,EAAgB,YAAe,GAAM,CAAA,CACnD,GCNV,IAAM,EAAY,EAAgB,iBADhB,sBAC2C,CAE7D,SAAgB,EAA0B,EAA8C,CACtF,IAAM,EAAe,EAAkB,EAAoB,oBAAoB,CAC/E,GAAI,CAAC,EACH,OAEF,IAAM,EAAmC,EAAE,CAuB3C,OArBI,GACF,EAAQ,KAAK,CACX,WACE,EAAA,EAAA,MAAC,OAAD,CACE,UAAU,6DADZ,EAGE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,gBAEb,EAAU,WAAW,CACjB,CAAA,EACP,EAAA,EAAA,KAAC,EAAD,CAAc,IAAK,EAAgB,CAAA,CAC9B,GAET,KAAM,EAAa,EAAO,CAC1B,aAAc,GACf,CAAC,CAEJ,EAAQ,KAAK,CACX,WAAa,EAAA,EAAA,KAAC,EAAD,EAAmB,CAAA,CACjC,CAAC,CAEK,EAGT,SAAgB,GAAiD,CAC/D,MAAO,CAAC,CACN,MAAO,EAAU,iBAAiB,CAClC,QAAS,CACP,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,gBACxB,OAAQ,CAAE,KAAM,EAAmB,WAAY,CAChD,CACF,CAAC,CAGJ,SAAgB,GAAiD,CAC/D,MAAO,CAAC,CACN,MAAO,EAAU,iBAAiB,CAClC,QAAS,CACP,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,gBACxB,OAAQ,CAAE,KAAM,EAAmB,OAAQ,CAC5C,CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{N as e,Q as t,Wt as n,Yt as r,z as i}from"./BSV_W0cK.chunk.js";import{i as a}from"./DVHj6R3-.chunk.js";import{a as o,b as s,d as c,h as l}from"./DLiesDxa.chunk.js";import{t as u}from"./BDdd6NA7.chunk.js";var d={get(e,t){return e?.[t]?.value},getCustomerSettingsRequest(e,t){return e?.isAuthenticated?m.customerSettings(t?.success,t?.error):m._publicCustomerSettings(t?.success,t?.error)},getUserSettingsRequest(e,t){return e?.isAuthenticated?m.userSettings(t?.success,t?.error):m._publicUserSettings(t?.success,t?.error)},formatSettings(e){return e.reduce((e,t)=>(e[t.name]=t,e),{})}},f=[{name:`new_classification_view`,value:!0},{name:`must_complete_onboarding`,value:!1},{name:`has_completed_onboarding`,value:!0},{name:`has_displayed_presentation_switcher_spotlight`,value:!0},{name:`has_curated_discover_dashboards`,value:!0},{name:`has_special_event_calendar`,value:!0},{name:`new_movies_and_tv`,value:!0},{name:`has_partner_profiles`,value:!0}],p=()=>(r.throw(new n(`SettingRequests.setPublicFormatSettings must be called before using public requests in SettingRequests`)),null),m={setPublicFormatSettings(e){e&&(p=e)},organisationSettings(e,t,n){return{key:`settings:organisation:${e}`,url:`{gateway}/v1/organisations/${e}/settings`,normalizeOptions:{idAttribute:`name`},formatData:d.formatSettings,success:t,error:n}},customerSetting(e,t,n){return{key:`settings:customer:${e}`,url:`{gateway}/v1/customers/me/settings?type=${e}`,normalizeOptions:{idAttribute:`name`},formatData:e=>u.first(e),success:t,error:n}},customerSettings(e,t){return{key:`customer:settings`,url:`{gateway}/v1/customers/me/settings?(customerSettings)`,normalizeOptions:{idAttribute:`name`},formatData:d.formatSettings,success:e,error:t}},_publicCustomerSettings(e,t){return{key:`customer:settings`,url:`simulated:/api/domain/v3/settings/public`,normalizeOptions:{idAttribute:`name`},formatData:p,success:e,error:t,successResponse:()=>f}},_publicUserSettings(e,t){return{key:`user:settings`,url:`simulated:/api/domain/v3/settings/public`,normalizeOptions:{idAttribute:`name`},formatData:p,success:e,error:t,successResponse:()=>f}},userSetting(e,t,n){return{key:`settings:user:${e}`,url:`{gateway}/v1/customers/me/settings?type=${e}`,normalizeOptions:{idAttribute:`name`},formatData:e=>u.first(e),success:t,error:n}},userSettings(e,t){return{key:`user:settings`,url:`{gateway}/v1/users/me/settings?(userSettings)`,normalizeOptions:{idAttribute:`name`},formatData:d.formatSettings,success:e,error:t}},updateUserSetting(e,t,n,r){return{key:`update:user:setting:${e.name}`,url:`{gateway}/v1/users/me/settings`,data:e,type:s.PUT,formatData:()=>e,normalizeOptions:{idAttribute:`name`},success:t,error:n,always:r}},updateCustomerSetting(e,t,n,r){return{key:`update:customer:setting:${e.name}`,url:`{gateway}/v1/customers/me/settings`,data:e,type:s.PUT,formatData:()=>e,normalizeOptions:{idAttribute:`name`},success:t,error:n,always:r}}},h=function(e){return e.MustCompleteOnboarding=`must_complete_onboarding`,e.StudentWorkspaceSharing=`student_ws_sharing`,e.StudentToStudentMessaging=`student_to_student_messaging`,e.HideResourcesForStudents=`hide_resources_for_students`,e.LibraryReview=`library_review`,e.SchoolMessaging=`school_messaging`,e.LegacyTvNaming=`legacy_tv_naming`,e.HideHostedLibraries=`hide_hosted_libraries`,e.MaxCustomLibraries=`max_custom_libraries`,e.AutoCaptioning=`auto_captioning`,e.Topics=`subjects`,e.NewDashboards=`new_dashboards`,e.ShareToGoogleClassroom=`share_to_google_classroom`,e.ShareToMicrosoftTeams=`share_to_microsoft_teams`,e.DefaultPlaybackQuality=`playback_quality_default`,e.DefaultLocalCachePlaybackQuality=`playback_quality_local_cache_default`,e.EnableSubtitlesDefault=`playback_subtitles_enabled_default`,e.LTI=`lti`,e.HasNewClassificationView=`new_classification_view`,e.HasCuratedDiscoverDashboards=`has_curated_discover_dashboards`,e.HasLiteSearchDropdown=`has_lite_search_dropdown`,e.HasSpecialEventCalendar=`has_special_event_calendar`,e.PreviewVideos=`preview_videos`,e.DomainSettings=`domain_settings`,e.InviteColleague=`invite_colleague`,e.ExchangeTvProductOption=`exchange_tv_product_option`,e.MyVideosFolders=`my_videos_folders`,e.TvRegion=`tv_region`,e.ShareOverrideRestrictions=`share_override_restrictions`,e.HasTopicDirectories=`has_topic_directories`,e.MessageFrequencyOption=`message_frequency`,e.HasTopicVideoListFeature=`has_topic_video_list_feature`,e.HasManageGrouPermissions=`has_manage_group_permissions`,e.ExperimentalInteractiveQuestions=`experimental_interactive_questions`,e.PublicInteractiveAttempts=`public_interactive_attempts`,e.HasClassrooms=`has_classrooms`,e.HasNewSearch=`has_new_search`,e.HasPlayPageTranscript=`has_play_page_transcript`,e.HasShareFlowV2=`has_share_flow_v2`,e.HasPartnerProfiles=`has_partner_profiles`,e.PreferredTheme=`preferred_theme`,e.HasHubEntry=`has_hub_entry`,e.HasEnabledViviPlayback=`has_enabled_vivi_playback`,e.HasEnabledViviStudentCasting=`has_enabled_vivi_student_casting`,e.HasEnabledAppleTvPlayback=`has_enabled_apple_tv_playback`,e.HasDisplayedTutorialVideosProductTip=`has_displayed_tutorial_videos_spotlight`,e.HasDisplayedSLMigratedProductTip=`has_displayed_sl_migrated`,e.HasDismissedAnalyticsTutorial=`has_dismissed_analytics_tutorial`,e.HasDismissedOpenClassroomsTutorial=`has_dismissed_open_classrooms_tutorial`,e.HasDismissedSearchAndDiscoverTutorial=`has_dismissed_search_and_discover_tutorial`,e.HasDismissedClassroomsTutorial=`has_dismissed_classrooms_tutorial`,e.HasDismissedMySharesTutorial=`has_dismissed_my_shares_tutorial`,e.HasDismissedMyVideosTutorial=`has_dismissed_my_videos_tutorial`,e.HasDismissedPlaylistsTutorial=`has_dismissed_playlists_tutorial`,e.ShowExchangeSearchResultsUser=`show_exchange_search_results_user`,e.UserEnabledPreviewVideos=`user_enabled_preview_videos`,e.LiteUpgradeTypeCustomer=`lite_upgrade_type_customer`,e.PolicyEndTime=`policy_end_time`,e.ReferralCount=`referral_count`,e.HasCompletedOnboardingV1=`has_completed_onboarding`,e.BulkOnboardingPreferencesState=`bulk_onboarding_preferences_state`,e.HasCompletedOnboardingV2=`has_completed_onboarding_v2`,e.HasExitedOnboarding=`has_exited_onboarding`,e.HasCompletedOnboardingStepSelectRole=`has_completed_onboarding_step_select_role`,e.HasCompletedOnboardingStepSchoolLevel=`has_completed_onboarding_step_school_level`,e.HasCompletedOnboardingStepAudiencePreferences=`has_completed_onboarding_step_audience_preferences`,e.HasCompletedOnboardingStepSelectCurriculum=`has_completed_onboarding_step_select_curriculum`,e.HasCompletedOnboardingStepSubjects=`has_completed_onboarding_step_subjects`,e.StudentInteractives=`student_interactives`,e.ExpandSchoolLibrary=`expand_school_library`,e.PrimaryProduct=`primary_product`,e.ImmediateFeedbackInteractives=`immediate_feedback_interactives`,e.LiteStudentCustomLibraries=`lite_student_custom_libraries`,e.HasEnabledRostering=`has_enabled_rostering`,e.DefaultCitationStyle=`default_citation_style`,e.HasStudentReach=`has_student_reach`,e.StudentReachClassroomSize=`student_reach_classroom_size`,e.SchoolStartTime=`school_start_time`,e.SchoolEndTime=`school_end_time`,e.Timezone=`timezone_iana`,e.ClickViewLive=`clickview_live`,e.HasStudentLowerPresentations=`students_lower_presentations`,e.VideoExportEmailDownloadLinkOnly=`video_export_email_download_link_only`,e}({}),g=n=>{let r=c(a.currentUser()),s=c(r.hasCompleted&&d.getCustomerSettingsRequest(r.data)),u=c(r.hasCompleted&&d.getUserSettingsRequest(r.data)),f=l(),p=!!s.hasCompleted&&!!u.hasCompleted,g=e=>{if(!p||s.hasError||u.hasError)return null;let t=s.data?.[e];if(t)return t?.value;let n=u.data?.[e];return n?n?.value:null};function _(e,t,n,r,i){return e===`user`?m.updateUserSetting(t,n,r,i):m.updateCustomerSetting(t,n,r,i)}let v=(r,a,s,c,l)=>{function u(){e.logUserAction({name:a.name,value:a.value},{location:n,entity:i.UserSetting,actionType:t.Edit}),s?.()}o(f,_(r,a,u,c,l))},y=(e,t)=>new Promise((n,r)=>{v(e,t,n,r)}),b=(e,t,n,r)=>v(`user`,e,t,n,r),x=(e,t,n,r)=>v(`customer`,e,t,n,r),S=e=>y(`user`,e),C=e=>y(`customer`,e);function w(){return r.data?.isAuthenticated?g(h.HasTopicDirectories):!0}return{isLoadingSettings:!p,updateUserSetting:b,updateUserSettingAsync:S,updateCustomerSetting:x,updateCustomerSettingAsync:C,userSettings:u,shareToGoogleClassroom:g(h.ShareToGoogleClassroom),shareToMicrosoftTeams:g(h.ShareToMicrosoftTeams),hasLti:g(h.LTI),defaultPlaybackQuality:g(h.DefaultPlaybackQuality),defaultLocalCachePlaybackQuality:g(h.DefaultLocalCachePlaybackQuality),enableSubtitlesDefault:g(h.EnableSubtitlesDefault),hasCompletedOnboardingV1:g(h.HasCompletedOnboardingV1),hasCompletedOnboardingV2:g(h.HasCompletedOnboardingV2),liteUpgradeTypeCustomer:g(h.LiteUpgradeTypeCustomer),hasNewClassificationView:g(h.HasNewClassificationView),hasCuratedDiscoverDashboards:g(h.HasCuratedDiscoverDashboards),hasSpecialEventCalendar:g(h.HasSpecialEventCalendar),hasLiteSearchDropdown:g(h.HasLiteSearchDropdown),policyEndTime:g(h.PolicyEndTime),bulkOnboardingPreferencesState:g(h.BulkOnboardingPreferencesState),hasOnlineTopics:g(h.Topics),hasPreviewVideos:g(h.PreviewVideos),hasUserEnabledPreviewVideos:g(h.UserEnabledPreviewVideos),domainSettings:g(h.DomainSettings),inviteColleague:g(h.InviteColleague),myVideosFolders:g(h.MyVideosFolders),exchangeTvProductOption:g(h.ExchangeTvProductOption),messageFrequencyOption:g(h.MessageFrequencyOption),tvRegion:g(h.TvRegion),preferredTheme:g(h.PreferredTheme),hasHubEntry:g(h.HasHubEntry),hasEnabledViviStudentCasting:g(h.HasEnabledViviStudentCasting),hasEnabledViviPlayback:g(h.HasEnabledViviPlayback),hasEnabledAppleTvPlayback:g(h.HasEnabledAppleTvPlayback),hasDisplayedTutorialVideosProductTip:g(h.HasDisplayedTutorialVideosProductTip),hasDisplayedSLMigratedProductTip:g(h.HasDisplayedSLMigratedProductTip),hasDismissedAnalyticsTutorial:g(h.HasDismissedAnalyticsTutorial),hasDismissedOpenClassroomsTutorial:g(h.HasDismissedOpenClassroomsTutorial),hasDismissedSearchAndDiscoverTutorial:g(h.HasDismissedSearchAndDiscoverTutorial),hasDismissedClassroomsTutorial:g(h.HasDismissedClassroomsTutorial),hasDismissedMySharesTutorial:g(h.HasDismissedMySharesTutorial),hasDismissedMyVideosTutorial:g(h.HasDismissedMyVideosTutorial),hasDismissedPlaylistsTutorial:g(h.HasDismissedPlaylistsTutorial),showExchangeSearchResults:g(h.ShowExchangeSearchResultsUser),shareOverrideRestrictions:g(h.ShareOverrideRestrictions),hasTopicDirectories:w(),hasTopicVideoListFeature:g(h.HasTopicVideoListFeature),hasManageGroupPermissions:g(h.HasManageGrouPermissions),experimentalInteractiveQuestions:g(h.ExperimentalInteractiveQuestions),hasClassrooms:g(h.HasClassrooms),hasNewSearch:g(h.HasNewSearch),hasPlayPageTranscript:g(h.HasPlayPageTranscript),hasShareFlowV2:g(h.HasShareFlowV2),referralCount:g(h.ReferralCount),hasPartnerProfiles:g(h.HasPartnerProfiles),defaultCitationStyle:g(h.DefaultCitationStyle),hasStudentReach:g(h.HasStudentReach),studentReachClassroomSize:g(h.StudentReachClassroomSize),schoolStartTime:g(h.SchoolStartTime),schoolEndTime:g(h.SchoolEndTime),timezone:g(h.Timezone),clickViewLive:g(h.ClickViewLive),hasStudentLowerPresentations:g(h.HasStudentLowerPresentations)}};export{h as n,m as r,g as t};
2
+ //# sourceMappingURL=SNiCkvSP.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SNiCkvSP.chunk.js","names":[],"sources":["../../../../libs/shared/src/utils/SettingsHelper.ts","../../../../libs/shared/src/flight-requests/simulated/PublicSettingResponse.json","../../../../libs/shared/src/flight-requests/SettingRequests.ts","../../../../libs/shared/src/enums/SettingName.ts","../../../../libs/shared/src/hooks/useSettings.ts"],"sourcesContent":["import { Flight } from 'libs/common/react/index';\n\nimport { SettingName, SettingsLookup } from 'libs/shared/enums/SettingName';\n\nimport { SettingRequests } from '../flight-requests/SettingRequests';\nimport { CurrentUser, EntitySetting } from '../interfaces';\n\ninterface GetCustomerRequestOptions {\n success?: (data: SettingsLookup) => void;\n error?: () => void;\n}\n\nexport const SettingsHelper = {\n get<TValue = any>(settings: SettingsLookup, name: SettingName): TValue {\n return settings?.[name]?.value;\n },\n\n /**\n * Used to get public or authenticated customer request\n */\n getCustomerSettingsRequest(\n currentUser: CurrentUser,\n options?: GetCustomerRequestOptions\n ): Flight.Request | Flight.SimulatedRequest {\n if (currentUser?.isAuthenticated)\n return SettingRequests.customerSettings(options?.success, options?.error);\n\n return SettingRequests._publicCustomerSettings(options?.success, options?.error);\n },\n\n /**\n * Used to get public or authenticated user request\n */\n getUserSettingsRequest(\n currentUser: CurrentUser,\n options?: GetCustomerRequestOptions\n ): Flight.Request | Flight.SimulatedRequest {\n if (currentUser?.isAuthenticated)\n return SettingRequests.userSettings(options?.success, options?.error);\n\n return SettingRequests._publicUserSettings(options?.success, options?.error);\n },\n\n formatSettings(settings: Array<EntitySetting<any>>): SettingsLookup {\n return settings.reduce((acc: SettingsLookup, setting) => {\n acc[setting.name] = setting;\n return acc;\n }, {} as SettingsLookup);\n }\n};\n","[\n {\n \"name\": \"new_classification_view\",\n \"value\": true\n },\n {\n \"name\": \"must_complete_onboarding\",\n \"value\": false\n },\n {\n \"name\": \"has_completed_onboarding\",\n \"value\": true\n },\n {\n \"name\": \"has_displayed_presentation_switcher_spotlight\",\n \"value\": true\n },\n {\n \"name\": \"has_curated_discover_dashboards\",\n \"value\": true\n },\n {\n \"name\": \"has_special_event_calendar\",\n \"value\": true\n },\n {\n \"name\": \"new_movies_and_tv\",\n \"value\": true\n },\n {\n \"name\": \"has_partner_profiles\",\n \"value\": true\n }\n]","import { ErrorHelper } from 'libs/common/backbone/core';\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { SettingName, SettingsLookup } from 'libs/shared/enums/SettingName';\nimport { EntitySetting } from 'libs/shared/interfaces';\n\nimport { SettingsHelper } from '../utils/SettingsHelper';\n\nimport PublicSettingResponse from './simulated/PublicSettingResponse.json';\n\ntype FormatSettingsFunc = (settings: Array<EntitySetting<any>>) => SettingsLookup | [];\n\n/**\n * This function is used to format settings data for public settings requests.\n * It allows us to control if we want to filter out any settings before using the default\n * `PublicSettingResponse` data in each public facing projects like Lite and Streamable Learning.\n */\nlet formatPublicSettings: any = (): any => {\n ErrorHelper.throw(\n new DevError('SettingRequests.setPublicFormatSettings must be called before using public requests in SettingRequests')\n );\n\n return null;\n};\n \nexport interface UpdateSettingRequest<TValue = any> {\n displayName?: string;\n name: SettingName;\n value: TValue;\n kind: SettingKind;\n}\n\nexport const SettingRequests = {\n setPublicFormatSettings(func: FormatSettingsFunc): void {\n if (!func)\n return;\n\n formatPublicSettings = func;\n },\n\n organisationSettings(\n id: string,\n success?: (data: SettingsLookup) => void,\n error?: () => void\n ): Flight.Request {\n return {\n key: `settings:organisation:${id}`,\n url: `{gateway}/v1/organisations/${id}/settings`,\n normalizeOptions: {\n idAttribute: 'name'\n },\n formatData: SettingsHelper.formatSettings,\n success,\n error\n };\n },\n\n customerSetting(\n name: SettingName,\n success?: (data: EntitySetting<any>) => void,\n error?: () => void\n ): Flight.Request {\n return {\n key: `settings:customer:${name}`,\n url: `{gateway}/v1/customers/me/settings?type=${name}`,\n normalizeOptions: {\n idAttribute: 'name'\n },\n formatData: (data: EntitySetting[]) => {\n return ArrayHelper.first(data);\n },\n success,\n error\n };\n },\n \n customerSettings(\n success?: (data: SettingsLookup) => void,\n error?: () => void\n ): Flight.Request {\n return {\n key: `customer:settings`,\n url: `{gateway}/v1/customers/me/settings?(customerSettings)`,\n normalizeOptions: {\n idAttribute: 'name'\n },\n formatData: SettingsHelper.formatSettings,\n success,\n error\n };\n },\n\n /**\n * This is only used to fetch hardcoded public settings for the customer \n */\n _publicCustomerSettings(\n success?: (data: SettingsLookup) => void,\n error?: () => void\n ): Flight.SimulatedRequest {\n return {\n key: `customer:settings`,\n url: `simulated:/api/domain/v3/settings/public`,\n normalizeOptions: {\n idAttribute: 'name'\n },\n formatData: formatPublicSettings,\n success,\n error,\n successResponse: () => PublicSettingResponse\n };\n },\n\n /**\n * This is only used to fetch hardcoded public settings for the user \n */\n _publicUserSettings(\n success?: (data: SettingsLookup) => void,\n error?: () => void\n ): Flight.SimulatedRequest {\n return {\n key: `user:settings`,\n url: `simulated:/api/domain/v3/settings/public`,\n normalizeOptions: {\n idAttribute: 'name'\n },\n formatData: formatPublicSettings,\n success,\n error,\n successResponse: () => PublicSettingResponse\n };\n },\n\n userSetting(\n name: SettingName,\n success?: (data: EntitySetting<any>) => void,\n error?: () => void\n ): Flight.Request {\n return {\n key: `settings:user:${name}`,\n url: `{gateway}/v1/customers/me/settings?type=${name}`,\n normalizeOptions: {\n idAttribute: 'name'\n },\n formatData: (data: EntitySetting[]) => {\n return ArrayHelper.first(data);\n },\n success,\n error\n };\n },\n\n userSettings(\n success?: (data: SettingsLookup) => void,\n error?: () => void\n ): Flight.Request {\n return {\n key: `user:settings`,\n url: `{gateway}/v1/users/me/settings?(userSettings)`,\n normalizeOptions: {\n idAttribute: 'name'\n },\n formatData: SettingsHelper.formatSettings,\n success,\n error\n };\n },\n\n updateUserSetting<TValue = any>(\n data: UpdateSettingRequest<TValue>,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: `update:user:setting:${data.name}`,\n url: `{gateway}/v1/users/me/settings`,\n data,\n type: HttpVerbs.PUT,\n formatData: () => data,\n normalizeOptions: {\n idAttribute: 'name'\n },\n success,\n error,\n always\n };\n },\n\n updateCustomerSetting<TValue = any>(\n data: UpdateSettingRequest<TValue>,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: `update:customer:setting:${data.name}`,\n url: `{gateway}/v1/customers/me/settings`,\n data,\n type: HttpVerbs.PUT,\n formatData: () => data,\n normalizeOptions: {\n idAttribute: 'name'\n },\n success,\n error,\n always\n };\n }\n};\n","import { EntitySetting } from 'libs/shared/interfaces';\n\nexport type SettingsLookup = {\n [key in SettingName]: EntitySetting<any>;\n};\n\nexport enum SettingName {\n // Customer settings\n MustCompleteOnboarding = 'must_complete_onboarding',\n StudentWorkspaceSharing = 'student_ws_sharing',\n StudentToStudentMessaging = 'student_to_student_messaging',\n HideResourcesForStudents = 'hide_resources_for_students',\n LibraryReview = 'library_review',\n SchoolMessaging = 'school_messaging',\n LegacyTvNaming = 'legacy_tv_naming',\n HideHostedLibraries = 'hide_hosted_libraries',\n MaxCustomLibraries = 'max_custom_libraries',\n AutoCaptioning = 'auto_captioning',\n Topics = 'subjects',\n NewDashboards = 'new_dashboards',\n ShareToGoogleClassroom = 'share_to_google_classroom',\n ShareToMicrosoftTeams = 'share_to_microsoft_teams',\n DefaultPlaybackQuality = 'playback_quality_default',\n DefaultLocalCachePlaybackQuality = 'playback_quality_local_cache_default',\n EnableSubtitlesDefault = 'playback_subtitles_enabled_default',\n LTI = 'lti',\n HasNewClassificationView = 'new_classification_view',\n HasCuratedDiscoverDashboards = 'has_curated_discover_dashboards',\n HasLiteSearchDropdown = 'has_lite_search_dropdown',\n HasSpecialEventCalendar = 'has_special_event_calendar',\n PreviewVideos = 'preview_videos',\n DomainSettings = 'domain_settings',\n InviteColleague = 'invite_colleague',\n ExchangeTvProductOption = 'exchange_tv_product_option',\n MyVideosFolders = 'my_videos_folders',\n TvRegion = 'tv_region',\n ShareOverrideRestrictions = 'share_override_restrictions',\n HasTopicDirectories = 'has_topic_directories',\n MessageFrequencyOption = 'message_frequency',\n HasTopicVideoListFeature = 'has_topic_video_list_feature',\n HasManageGrouPermissions = 'has_manage_group_permissions',\n ExperimentalInteractiveQuestions = 'experimental_interactive_questions',\n PublicInteractiveAttempts = 'public_interactive_attempts',\n HasClassrooms = 'has_classrooms',\n HasNewSearch = 'has_new_search',\n HasPlayPageTranscript = 'has_play_page_transcript',\n HasShareFlowV2 = 'has_share_flow_v2',\n HasPartnerProfiles = 'has_partner_profiles',\n PreferredTheme = 'preferred_theme',\n HasHubEntry = 'has_hub_entry',\n\n // Devices\n HasEnabledViviPlayback = 'has_enabled_vivi_playback',\n HasEnabledViviStudentCasting = 'has_enabled_vivi_student_casting',\n HasEnabledAppleTvPlayback = 'has_enabled_apple_tv_playback',\n\n // Product tips\n HasDisplayedTutorialVideosProductTip = 'has_displayed_tutorial_videos_spotlight',\n HasDisplayedSLMigratedProductTip = 'has_displayed_sl_migrated',\n\n // Tutorial Video Highlight\n HasDismissedAnalyticsTutorial = 'has_dismissed_analytics_tutorial',\n HasDismissedOpenClassroomsTutorial = 'has_dismissed_open_classrooms_tutorial',\n HasDismissedSearchAndDiscoverTutorial = 'has_dismissed_search_and_discover_tutorial',\n HasDismissedClassroomsTutorial = 'has_dismissed_classrooms_tutorial',\n HasDismissedMySharesTutorial = 'has_dismissed_my_shares_tutorial',\n HasDismissedMyVideosTutorial = 'has_dismissed_my_videos_tutorial',\n HasDismissedPlaylistsTutorial = 'has_dismissed_playlists_tutorial',\n\n // User settings\n ShowExchangeSearchResultsUser = 'show_exchange_search_results_user',\n UserEnabledPreviewVideos = 'user_enabled_preview_videos',\n\n // Lite Upgrade - We keep this setting around to know if a customer went through the list upgrade\n LiteUpgradeTypeCustomer = 'lite_upgrade_type_customer',\n\n // Trials\n PolicyEndTime = 'policy_end_time',\n ReferralCount = 'referral_count',\n\n // Onboarding - V1\n HasCompletedOnboardingV1 = 'has_completed_onboarding', // This is deprecated for the new product\n BulkOnboardingPreferencesState = 'bulk_onboarding_preferences_state',\n\n // Onboarding - V2\n HasCompletedOnboardingV2 = 'has_completed_onboarding_v2',\n HasExitedOnboarding = 'has_exited_onboarding',\n HasCompletedOnboardingStepSelectRole = 'has_completed_onboarding_step_select_role',\n HasCompletedOnboardingStepSchoolLevel = 'has_completed_onboarding_step_school_level',\n HasCompletedOnboardingStepAudiencePreferences = 'has_completed_onboarding_step_audience_preferences',\n HasCompletedOnboardingStepSelectCurriculum = 'has_completed_onboarding_step_select_curriculum',\n HasCompletedOnboardingStepSubjects = 'has_completed_onboarding_step_subjects',\n\n StudentInteractives = 'student_interactives',\n ExpandSchoolLibrary = 'expand_school_library',\n PrimaryProduct = 'primary_product',\n ImmediateFeedbackInteractives = 'immediate_feedback_interactives',\n LiteStudentCustomLibraries = 'lite_student_custom_libraries',\n\n // Organisation level\n HasEnabledRostering = 'has_enabled_rostering',\n\n // Citations\n DefaultCitationStyle = 'default_citation_style',\n\n // Reports\n HasStudentReach = 'has_student_reach',\n StudentReachClassroomSize = 'student_reach_classroom_size',\n SchoolStartTime = 'school_start_time',\n SchoolEndTime = 'school_end_time',\n Timezone = 'timezone_iana',\n\n ClickViewLive = 'clickview_live',\n HasStudentLowerPresentations = 'students_lower_presentations',\n \n VideoExportEmailDownloadLinkOnly = 'video_export_email_download_link_only'\n}\n","import { useDispatch } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { BulkOnboardingPreferencesState } from 'libs/shared/enums/BulkOnboardingPreferencesState';\nimport { SettingName, SettingsLookup } from 'libs/shared/enums/SettingName';\nimport { SettingRequests, UpdateSettingRequest } from 'libs/shared/flight-requests/SettingRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, DefaultPlaybackQuality, EntitySetting } from 'libs/shared/interfaces';\nimport { ExchangeTvProductOption } from 'libs/shared/interfaces/ExchangeTvProductOption';\nimport { MessageFrequencyOption } from 'libs/shared/interfaces/models/MessageFrequencyOption';\nimport { PreferredTheme } from 'libs/shared/interfaces/PreferredTheme';\n\nimport { SettingsHelper } from '../utils/SettingsHelper';\n\ntype SettingType = 'user' | 'customer';\n\n/**\n * Location context is only required if you're using updateSetting() or you need log analytics;\n */\nexport const useSettings = (locationContext: LocationContext | null) => {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const customerSettings = Flight.useBasicFetch<SettingsLookup>(\n currentUser.hasCompleted &&\n SettingsHelper.getCustomerSettingsRequest(currentUser.data)\n );\n\n const userSettings = Flight.useBasicFetch<SettingsLookup>(\n currentUser.hasCompleted &&\n SettingsHelper.getUserSettingsRequest(currentUser.data)\n );\n\n const dispatch = useDispatch();\n\n const hasLoaded = !!customerSettings.hasCompleted && !!userSettings.hasCompleted;\n\n const getSetting = <TValue = any>(name: SettingName): TValue | null => {\n if (!hasLoaded)\n return null;\n\n if (customerSettings.hasError || userSettings.hasError)\n return null;\n\n const customerSetting = customerSettings.data?.[name] as EntitySetting<TValue>;\n\n if (customerSetting)\n return customerSetting?.value;\n\n const userSetting = userSettings.data?.[name] as EntitySetting<TValue>;\n\n if (userSetting)\n return userSetting?.value;\n\n return null;\n };\n\n function _getRequest<TValue>(\n type: SettingType,\n data: UpdateSettingRequest<TValue>,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n if (type === 'user')\n return SettingRequests.updateUserSetting(data, success, error, always);\n\n return SettingRequests.updateCustomerSetting(data, success, error, always);\n }\n\n const _updateSetting = <TValue = any>(\n type: SettingType,\n data: UpdateSettingRequest<TValue>,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ) => {\n function onSuccess(): void {\n AnalyticsHelper.logUserAction({\n name: data.name,\n value: data.value\n }, {\n location: locationContext,\n entity: EntityType.UserSetting,\n actionType: UserAction.Edit\n });\n\n success?.();\n }\n\n Flight.fetch(dispatch, _getRequest(type, data, onSuccess, error, always));\n };\n\n const _updateSettingAsync = <TValue = any>(\n type: SettingType,\n data: UpdateSettingRequest<TValue>\n ): Promise<void> => {\n return new Promise((resolve, reject) => {\n _updateSetting(\n type,\n data,\n resolve,\n reject\n );\n });\n };\n\n const updateUserSetting = <TValue = any>(\n data: UpdateSettingRequest<TValue>,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ) => _updateSetting('user', data, success, error, always);\n\n const updateCustomerSetting = <TValue = any>(\n data: UpdateSettingRequest<TValue>,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ) => _updateSetting('customer', data, success, error, always);\n\n const updateUserSettingAsync = <TValue = any>(\n data: UpdateSettingRequest<TValue>\n ): Promise<void> => _updateSettingAsync('user', data);\n \n const updateCustomerSettingAsync = <TValue = any>(\n data: UpdateSettingRequest<TValue>\n ): Promise<void> => _updateSettingAsync('customer', data);\n \n /**\n * AU, US, and UK have access to this, but international doesn't.\n * This means anon users also have access, which is why this custom\n * function is needed.\n */\n function hasTopicDirectories(): boolean {\n if (currentUser.data?.isAuthenticated)\n return getSetting<boolean>(SettingName.HasTopicDirectories);\n\n return true;\n }\n\n return {\n isLoadingSettings: !hasLoaded,\n updateUserSetting,\n updateUserSettingAsync,\n updateCustomerSetting,\n updateCustomerSettingAsync,\n userSettings,\n shareToGoogleClassroom: getSetting<boolean>(SettingName.ShareToGoogleClassroom),\n shareToMicrosoftTeams: getSetting<boolean>(SettingName.ShareToMicrosoftTeams),\n hasLti: getSetting<boolean>(SettingName.LTI),\n defaultPlaybackQuality: getSetting<DefaultPlaybackQuality>(SettingName.DefaultPlaybackQuality),\n defaultLocalCachePlaybackQuality: getSetting<DefaultPlaybackQuality>(SettingName.DefaultLocalCachePlaybackQuality),\n enableSubtitlesDefault: getSetting<boolean>(SettingName.EnableSubtitlesDefault),\n hasCompletedOnboardingV1: getSetting<boolean>(SettingName.HasCompletedOnboardingV1),\n hasCompletedOnboardingV2: getSetting<boolean>(SettingName.HasCompletedOnboardingV2),\n\n liteUpgradeTypeCustomer: getSetting<string>(SettingName.LiteUpgradeTypeCustomer),\n\n hasNewClassificationView: getSetting<boolean>(SettingName.HasNewClassificationView),\n hasCuratedDiscoverDashboards: getSetting<boolean>(SettingName.HasCuratedDiscoverDashboards),\n hasSpecialEventCalendar: getSetting<boolean>(SettingName.HasSpecialEventCalendar),\n hasLiteSearchDropdown: getSetting<boolean>(SettingName.HasLiteSearchDropdown),\n policyEndTime: getSetting<string>(SettingName.PolicyEndTime),\n bulkOnboardingPreferencesState: (\n getSetting<BulkOnboardingPreferencesState>(SettingName.BulkOnboardingPreferencesState)\n ),\n hasOnlineTopics: getSetting<boolean>(SettingName.Topics),\n hasPreviewVideos: getSetting<boolean>(SettingName.PreviewVideos),\n hasUserEnabledPreviewVideos: getSetting<boolean>(SettingName.UserEnabledPreviewVideos),\n domainSettings: getSetting<boolean>(SettingName.DomainSettings),\n inviteColleague: getSetting<boolean>(SettingName.InviteColleague),\n myVideosFolders: getSetting<boolean>(SettingName.MyVideosFolders),\n exchangeTvProductOption: getSetting<ExchangeTvProductOption>(SettingName.ExchangeTvProductOption),\n messageFrequencyOption: getSetting<MessageFrequencyOption>(SettingName.MessageFrequencyOption),\n tvRegion: getSetting<string>(SettingName.TvRegion),\n preferredTheme: getSetting<PreferredTheme>(SettingName.PreferredTheme),\n hasHubEntry: getSetting<boolean>(SettingName.HasHubEntry),\n\n // Devices\n hasEnabledViviStudentCasting: getSetting<boolean>(SettingName.HasEnabledViviStudentCasting),\n hasEnabledViviPlayback: getSetting<boolean>(SettingName.HasEnabledViviPlayback),\n hasEnabledAppleTvPlayback: getSetting<boolean>(SettingName.HasEnabledAppleTvPlayback),\n\n // Product tips\n hasDisplayedTutorialVideosProductTip: getSetting<boolean>(SettingName.HasDisplayedTutorialVideosProductTip),\n hasDisplayedSLMigratedProductTip: getSetting<boolean>(SettingName.HasDisplayedSLMigratedProductTip),\n\n // Tutorial video highlight\n hasDismissedAnalyticsTutorial: getSetting<boolean>(SettingName.HasDismissedAnalyticsTutorial),\n hasDismissedOpenClassroomsTutorial: getSetting<boolean>(SettingName.HasDismissedOpenClassroomsTutorial),\n hasDismissedSearchAndDiscoverTutorial: getSetting<boolean>(SettingName.HasDismissedSearchAndDiscoverTutorial),\n hasDismissedClassroomsTutorial: getSetting<boolean>(SettingName.HasDismissedClassroomsTutorial),\n hasDismissedMySharesTutorial: getSetting<boolean>(SettingName.HasDismissedMySharesTutorial),\n hasDismissedMyVideosTutorial: getSetting<boolean>(SettingName.HasDismissedMyVideosTutorial),\n hasDismissedPlaylistsTutorial: getSetting<boolean>(SettingName.HasDismissedPlaylistsTutorial),\n\n // This has to be enabled both on the customer and user level for exchange results to show\n showExchangeSearchResults: getSetting<boolean>(SettingName.ShowExchangeSearchResultsUser),\n shareOverrideRestrictions:\n getSetting<boolean>(SettingName.ShareOverrideRestrictions),\n hasTopicDirectories: hasTopicDirectories(),\n hasTopicVideoListFeature: getSetting<boolean>(SettingName.HasTopicVideoListFeature),\n hasManageGroupPermissions: getSetting<boolean>(SettingName.HasManageGrouPermissions),\n experimentalInteractiveQuestions:\n getSetting<boolean>(SettingName.ExperimentalInteractiveQuestions),\n hasClassrooms: getSetting<boolean>(SettingName.HasClassrooms),\n hasNewSearch: getSetting<boolean>(SettingName.HasNewSearch),\n hasPlayPageTranscript: getSetting<boolean>(SettingName.HasPlayPageTranscript),\n hasShareFlowV2: getSetting<boolean>(SettingName.HasShareFlowV2),\n referralCount: getSetting<number>(SettingName.ReferralCount),\n hasPartnerProfiles: getSetting<boolean>(SettingName.HasPartnerProfiles),\n\n defaultCitationStyle: getSetting<string>(SettingName.DefaultCitationStyle),\n\n hasStudentReach: getSetting<boolean>(SettingName.HasStudentReach),\n studentReachClassroomSize: getSetting<number>(SettingName.StudentReachClassroomSize),\n schoolStartTime: getSetting<string>(SettingName.SchoolStartTime),\n schoolEndTime: getSetting<string>(SettingName.SchoolEndTime),\n timezone: getSetting<string>(SettingName.Timezone),\n clickViewLive: getSetting<boolean>(SettingName.ClickViewLive),\n hasStudentLowerPresentations: getSetting<boolean>(SettingName.HasStudentLowerPresentations)\n };\n};\n\nexport type SettingsHash = Partial<ReturnType<typeof useSettings>>;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import{Kn as e,N as t,P as n,en as r,st as i}from"./BSV_W0cK.chunk.js";import{r as a,v as o,y as s}from"./COrUmz0l.chunk.js";import{t as c}from"./Bqlm3yF_.chunk.js";import{n as l,r as u}from"./H5KLIhR_.chunk.js";import{L as d,et as f,n as p}from"./app-cakVQEAF.js";import{n as m,t as h}from"./DsnkNBu62.chunk.js";var g={pillTabSelector:`_pillTabSelector_a6f6x_1`,tab:`_tab_a6f6x_4`,minWidth:`_minWidth_a6f6x_21`,radiusSmall:`_radiusSmall_a6f6x_24`,tabLink:`_tabLink_a6f6x_35`},_=e(i()),v=n();function y(e){return(0,v.jsxs)(v.Fragment,{children:[!!e.tab.svg&&(0,v.jsx)(`div`,{className:e.tab.name?`pe-1`:``,children:(0,v.jsx)(a,{svg:e.tab.svg,size:e.tab.svgSize})}),e.formatDisplayText?.(e.tab.name)??e.tab.name,typeof e.tab.count==`number`&&(0,v.jsx)(`div`,{className:`ps-2`,children:(0,v.jsx)(h,{type:m.Count,data:e.tab.count})})]})}function b(e){let{borderRadius:n=`lg`}=e,i=d();function a(e){e.analyticsData&&e.analyticsOptions&&t.logUserAction(e.analyticsData,e.analyticsOptions)}function c(e){e.active||!e.onSelect||(e.onSelect(),a(e))}function l(t){let n=t.target.value,i=e.tabs.find(e=>e.name===n);!i||i.active||(a(i),r.trigger(i.appLink))}let u=e.tabs.find(e=>e.active),f=e.forceSmallScreenDropdown||e.enableSmallScreenSupport&&(i.sm||i.xs);return(0,v.jsxs)(`nav`,{className:e.className??``,children:[f&&(0,v.jsx)(`select`,{className:`form-select`,onChange:l,value:u?.name,style:{minWidth:`150px`},children:e.tabs.map((t,n)=>t.hide?(0,v.jsx)(_.Fragment,{},n):(0,v.jsx)(`option`,{value:t.name,children:e.formatDisplayText?.(t.name)??t.name},n))}),!f&&(0,v.jsx)(`ul`,{className:`
1
+ import{Kn as e,N as t,P as n,en as r,st as i}from"./BSV_W0cK.chunk.js";import{r as a,v as o,y as s}from"./COrUmz0l.chunk.js";import{t as c}from"./Bqlm3yF_.chunk.js";import{n as l,r as u}from"./H5KLIhR_.chunk.js";import{L as d,et as f,n as p}from"./app-BeoBow2q.js";import{n as m,t as h}from"./C1m-1G6w2.chunk.js";var g={pillTabSelector:`_pillTabSelector_a6f6x_1`,tab:`_tab_a6f6x_4`,minWidth:`_minWidth_a6f6x_21`,radiusSmall:`_radiusSmall_a6f6x_24`,tabLink:`_tabLink_a6f6x_35`},_=e(i()),v=n();function y(e){return(0,v.jsxs)(v.Fragment,{children:[!!e.tab.svg&&(0,v.jsx)(`div`,{className:e.tab.name?`pe-1`:``,children:(0,v.jsx)(a,{svg:e.tab.svg,size:e.tab.svgSize})}),e.formatDisplayText?.(e.tab.name)??e.tab.name,typeof e.tab.count==`number`&&(0,v.jsx)(`div`,{className:`ps-2`,children:(0,v.jsx)(h,{type:m.Count,data:e.tab.count})})]})}function b(e){let{borderRadius:n=`lg`}=e,i=d();function a(e){e.analyticsData&&e.analyticsOptions&&t.logUserAction(e.analyticsData,e.analyticsOptions)}function c(e){e.active||!e.onSelect||(e.onSelect(),a(e))}function l(t){let n=t.target.value,i=e.tabs.find(e=>e.name===n);!i||i.active||(a(i),r.trigger(i.appLink))}let u=e.tabs.find(e=>e.active),f=e.forceSmallScreenDropdown||e.enableSmallScreenSupport&&(i.sm||i.xs);return(0,v.jsxs)(`nav`,{className:e.className??``,children:[f&&(0,v.jsx)(`select`,{className:`form-select`,onChange:l,value:u?.name,style:{minWidth:`150px`},children:e.tabs.map((t,n)=>t.hide?(0,v.jsx)(_.Fragment,{},n):(0,v.jsx)(`option`,{value:t.name,children:e.formatDisplayText?.(t.name)??t.name},n))}),!f&&(0,v.jsx)(`ul`,{className:`
2
2
  list-unstyled d-inline-block m-0 ${g.pillTabSelector}
3
3
  ${n?g.radiusSmall:``}
4
4
  ${e.listClassName}
@@ -12,4 +12,4 @@ import{Kn as e,N as t,P as n,en as r,st as i}from"./BSV_W0cK.chunk.js";import{r
12
12
  cursor-pointer d-flex align-items-center justify-content-center
13
13
  text-decoration-none text-reset px-2 text-nowrap ${g.tabLink}
14
14
  `,onClick:()=>c(t),children:(0,v.jsx)(y,{tab:t,formatDisplayText:e.formatDisplayText})})},n))})]})}function x(e){return(0,v.jsx)(b,{className:`pb-3`,tabs:e.items.map(e=>({name:e.label,onSelect:()=>r.trigger(e.appLink),active:e.appLink.action===f.getCurrentRoute()?.appLink?.action}))})}var S=c.encloseNamespace(`reportsVideos.schoolVideosNav`);function C(e){return[{label:S(`overview`),appLink:{application:u.VIDEOS,action:l.Videos.HOME,params:e}},{label:S(`views`),appLink:{application:u.VIDEOS,action:l.Videos.TOP_VIDEOS,params:e}}]}function w(){return(0,v.jsx)(x,{items:C(p())})}export{w as t};
15
- //# sourceMappingURL=D3WnBGZG.chunk.js.map
15
+ //# sourceMappingURL=WxjzAHzM.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"D3WnBGZG.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/pill-tab-selector/pill-tab-selector.module.scss","../../../../libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","../../src/shared/components/sub-nav/SubNav.tsx","../../src/apps/videos/components/school-videos-nav/SchoolVideosNav.tsx"],"sourcesContent":[":local {\n $pill-tab-min-width: 7rem;\n\n .pillTabSelector {\n border-radius: $border-radius-lg;\n\n .tab {\n border-radius: 0;\n\n &:first-child {\n border-top-left-radius: $border-radius-lg;\n border-bottom-left-radius: $border-radius-lg;\n }\n\n &:last-child {\n border-top-right-radius: $border-radius-lg;\n border-bottom-right-radius: $border-radius-lg;\n }\n\n &:not(:first-child) {\n border-left: none;\n }\n\n &:not(:last-child) {\n border-right: none;\n }\n\n &.minWidth {\n min-width: $pill-tab-min-width;\n }\n }\n\n &.radiusSmall {\n border-radius: $border-radius;\n\n li {\n &:first-child {\n border-top-left-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n }\n \n &:last-child {\n border-top-right-radius: $border-radius;\n border-bottom-right-radius: $border-radius;\n }\n }\n }\n\n .tabLink {\n padding-top: $input-btn-padding-y;\n padding-bottom: $input-btn-padding-y;\n }\n }\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.module.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n formatDisplayText?: (name: string) => string;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svg && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svg={props.tab.svg} size={props.tab.svgSize} />\n </div>\n )}\n\n {props.formatDisplayText?.(props.tab.name) ?? props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svg?: SvgIcon;\n svgSize?: SvgContainerSize;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n\n hide?: boolean;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg';\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n forceSmallScreenDropdown?: boolean;\n}\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n const { borderRadius = 'lg' } = props;\n \n const breakpoints = useBreakpoints();\n \n function logAnalytics(tab: PillTab): void {\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n \n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n logAnalytics(tab);\n }\n\n function onChangeSelect(event: React.ChangeEvent<HTMLSelectElement>): void {\n const value = event.target.value;\n const tab = props.tabs.find(tab => tab.name === value);\n if (!tab || tab.active)\n return;\n \n logAnalytics(tab);\n AppLinkHelper.trigger(tab.appLink);\n }\n\n const selectedTab = props.tabs.find(tab => tab.active);\n const showSelectDropdown = props.forceSmallScreenDropdown\n || (props.enableSmallScreenSupport && (breakpoints.sm || breakpoints.xs));\n\n return (\n <nav className={props.className ?? ''}>\n {showSelectDropdown && (\n <select className='form-select' onChange={onChangeSelect} value={selectedTab?.name} style={{ minWidth: '150px' }}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n\n return (\n <option\n key={index}\n value={tab.name}>\n {props.formatDisplayText?.(tab.name) ?? tab.name}\n </option>\n );\n })}\n </select>\n )}\n \n {!showSelectDropdown && (\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n \n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} formatDisplayText={props.formatDisplayText} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} formatDisplayText={props.formatDisplayText} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </nav>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { ContextService } from 'libs/shared/services/ContextService';\nexport interface SubNavItem {\n label: string;\n appLink: Core.AppLink;\n}\n\ninterface SubNavProps {\n items: SubNavItem[];\n}\n\nexport function SubNav(props: SubNavProps): JSX.Element {\n const tabs: PillTab[] = props.items.map(i => ({\n name: i.label,\n onSelect: () => Core.AppLinkHelper.trigger(i.appLink),\n active: i.appLink.action === ContextService.getCurrentRoute()?.appLink?.action\n }));\n\n return <PillTabSelector className='pb-3' tabs={tabs} />;\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\n\nimport { SubNav, SubNavItem } from 'shared/components/sub-nav/SubNav';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsVideos.schoolVideosNav';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getNavItems(params: FilterQueryParams): SubNavItem[] {\n return [\n {\n label: getPhrase('overview'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.HOME, params }\n },\n {\n label: getPhrase('views'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.TOP_VIDEOS, params }\n }\n ];\n}\n\nexport function SchoolVideosNav(): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const navItems = getNavItems(filterQueryParams);\n\n return (\n <SubNav items={navItems} />\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"WxjzAHzM.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/pill-tab-selector/pill-tab-selector.module.scss","../../../../libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","../../src/shared/components/sub-nav/SubNav.tsx","../../src/apps/videos/components/school-videos-nav/SchoolVideosNav.tsx"],"sourcesContent":[":local {\n $pill-tab-min-width: 7rem;\n\n .pillTabSelector {\n border-radius: $border-radius-lg;\n\n .tab {\n border-radius: 0;\n\n &:first-child {\n border-top-left-radius: $border-radius-lg;\n border-bottom-left-radius: $border-radius-lg;\n }\n\n &:last-child {\n border-top-right-radius: $border-radius-lg;\n border-bottom-right-radius: $border-radius-lg;\n }\n\n &:not(:first-child) {\n border-left: none;\n }\n\n &:not(:last-child) {\n border-right: none;\n }\n\n &.minWidth {\n min-width: $pill-tab-min-width;\n }\n }\n\n &.radiusSmall {\n border-radius: $border-radius;\n\n li {\n &:first-child {\n border-top-left-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n }\n \n &:last-child {\n border-top-right-radius: $border-radius;\n border-bottom-right-radius: $border-radius;\n }\n }\n }\n\n .tabLink {\n padding-top: $input-btn-padding-y;\n padding-bottom: $input-btn-padding-y;\n }\n }\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.module.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n formatDisplayText?: (name: string) => string;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svg && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svg={props.tab.svg} size={props.tab.svgSize} />\n </div>\n )}\n\n {props.formatDisplayText?.(props.tab.name) ?? props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svg?: SvgIcon;\n svgSize?: SvgContainerSize;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n\n hide?: boolean;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg';\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n forceSmallScreenDropdown?: boolean;\n}\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n const { borderRadius = 'lg' } = props;\n \n const breakpoints = useBreakpoints();\n \n function logAnalytics(tab: PillTab): void {\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n \n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n logAnalytics(tab);\n }\n\n function onChangeSelect(event: React.ChangeEvent<HTMLSelectElement>): void {\n const value = event.target.value;\n const tab = props.tabs.find(tab => tab.name === value);\n if (!tab || tab.active)\n return;\n \n logAnalytics(tab);\n AppLinkHelper.trigger(tab.appLink);\n }\n\n const selectedTab = props.tabs.find(tab => tab.active);\n const showSelectDropdown = props.forceSmallScreenDropdown\n || (props.enableSmallScreenSupport && (breakpoints.sm || breakpoints.xs));\n\n return (\n <nav className={props.className ?? ''}>\n {showSelectDropdown && (\n <select className='form-select' onChange={onChangeSelect} value={selectedTab?.name} style={{ minWidth: '150px' }}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n\n return (\n <option\n key={index}\n value={tab.name}>\n {props.formatDisplayText?.(tab.name) ?? tab.name}\n </option>\n );\n })}\n </select>\n )}\n \n {!showSelectDropdown && (\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n \n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} formatDisplayText={props.formatDisplayText} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} formatDisplayText={props.formatDisplayText} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </nav>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { ContextService } from 'libs/shared/services/ContextService';\nexport interface SubNavItem {\n label: string;\n appLink: Core.AppLink;\n}\n\ninterface SubNavProps {\n items: SubNavItem[];\n}\n\nexport function SubNav(props: SubNavProps): JSX.Element {\n const tabs: PillTab[] = props.items.map(i => ({\n name: i.label,\n onSelect: () => Core.AppLinkHelper.trigger(i.appLink),\n active: i.appLink.action === ContextService.getCurrentRoute()?.appLink?.action\n }));\n\n return <PillTabSelector className='pb-3' tabs={tabs} />;\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\n\nimport { SubNav, SubNavItem } from 'shared/components/sub-nav/SubNav';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsVideos.schoolVideosNav';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getNavItems(params: FilterQueryParams): SubNavItem[] {\n return [\n {\n label: getPhrase('overview'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.HOME, params }\n },\n {\n label: getPhrase('views'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.TOP_VIDEOS, params }\n }\n ];\n}\n\nexport function SchoolVideosNav(): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const navItems = getNavItems(filterQueryParams);\n\n return (\n <SubNav items={navItems} />\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{n as e}from"./Bn4Go0UF.chunk.js";export{e as GenerateReportView};