@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{P as e,en as t,st as n}from"./BSV_W0cK.chunk.js";import{v as r}from"./COrUmz0l.chunk.js";import{d as i,n as a}from"./DLiesDxa.chunk.js";import{t as o}from"./Dhb09xKG.chunk.js";import{r as s,t as c}from"./BmJ66zOA.chunk.js";import{t as l}from"./Bqlm3yF_.chunk.js";import{n as u,r as d,t as f}from"./H5KLIhR_.chunk.js";import{t as p}from"./Du_kaCuU.chunk.js";import{r as m}from"./app-cakVQEAF.js";import{t as h}from"./PLyhtHwt2.chunk.js";import{i as g,n as _,o as v,r as y,s as b,t as x}from"./DcKDIHY92.chunk.js";var S={image:`_image_1a110_1`};n();var C=e(),w=l.encloseNamespace(`shared.streamsBarChartCardEmptyState`);function T(){return(0,C.jsxs)(p,{className:`flex-grow-1 justify-content-center`,children:[(0,C.jsx)(p.Image,{src:f.EmptyStates.Shared.BagQuestionOrange,className:S.image}),(0,C.jsx)(p.Heading,{className:`h6`,children:w(`heading`)}),(0,C.jsx)(p.Info,{className:`w-100`,children:w(`description`)})]})}var E=c(),D=`shared.streamsBarChartCard`,O=l.encloseNamespace(D);function k(e){let n=m(`video-views`),o=_(i(e.videoId?h.videoAggregation(e.videoId,e.type,n):h.aggregation(e.type,n)).data,y(e.type)),s=o?.reduce((e,t)=>e+t.y,0);return(0,C.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3`,children:o?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,C.jsx)(`h2`,{className:`h6 mb-1`,children:(0,C.jsx)(a,{namespace:D,phrase:`totalViews`,options:{views:s}})}),e.appLink&&e.appLinkText&&(0,C.jsx)(r,{appLink:e.appLink,className:`text-info`,children:e.appLinkText})]}),o.length?(0,C.jsx)(E.Scrollbars,{className:`position-relative`,children:(0,C.jsx)(`div`,{className:`position-absolute w-100 pe-2`,children:(0,C.jsx)(b,{data:o,labelAnnotations:{"Classroom views":{onClick:()=>{t.trigger({application:d.DEFAULT,action:u.Default.CLASSROOM_VIEWS_POPUP})},tooltip:O(`classroomViewsSettings`)}}})})}):(0,C.jsx)(T,{})]}):(0,C.jsx)(`div`,{className:`partial-loading-background d-block w-50`,children:`\xA0`})})}var A={MONTH:35,YEAR:365},j={day:`YYYY-MM-DD`,month:`YYYY-MM`,year:`YYYY`},M={day:`D MMM`,month:`MMM`,year:`YYYY`};function N(e){let t=o.diffBetween(e.end,e.start,`day`);return t>A.YEAR?`year`:t>A.MONTH?`month`:`day`}function P(e,t){let n=[],r=o.convertUTCToLocal(e.start),i=o.convertUTCToLocal(e.end),a=o.format(r,j[t]);for(;!o.isAfter(a,i,t);)n.push(a),a=o.format(o.add(a,1,t),j[t]);return n}function F(e,t,n){if(!e)return null;let r=N(t),i=P(t,r),a=new Map;e.forEach(e=>{let t=o.format(o.convertUTCToLocal(e.dateStreamed),j[r]),n=[s.System,`255`].includes(e.name)?null:e.name,i=a.get(n);i||a.set(n,i=new Map);let c=i.get(t)??0;i.set(t,c+e.count)});let c=[...a.keys()];if(!c.length)return{categories:i.map(e=>o.format(e,M[r])),data:[]};let l=y(n);return{categories:i.map(e=>o.format(e,M[r])),data:c.map(e=>({name:l(e),type:`line`,data:i.map(t=>a.get(e).get(t)??0),color:g(e)})).sort((e,t)=>v(e.name,t.name))}}var I=`reportsShared.streamsChartCard`,L=l.encloseNamespace(I);function R(e){let n=m(`video-views`),r=F(i(e.videoId?h.videoAggregationChart(e.videoId,e.type,n):h.aggregationChart(e.type,n)).data,n,e.type);return(0,C.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white rounded p-3 position-relative`,children:r?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`h2`,{className:`position-absolute h6 mb-1`,children:(0,C.jsx)(a,{namespace:I,phrase:`videoViews`})}),(0,C.jsx)(x,{categories:r.categories,data:r.data,legendAnnotations:{"Classroom views":{onClick:()=>{t.trigger({application:d.DEFAULT,action:u.Default.CLASSROOM_VIEWS_POPUP})},tooltip:L(`classroomViewsSettings`)}}})]}):(0,C.jsx)(`div`,{className:`partial-loading-background w-25`,children:`\xA0`})})}export{k as n,R as t};
2
- //# sourceMappingURL=CMQlrOon2.chunk.js.map
1
+ import{P as e,en as t,st as n}from"./BSV_W0cK.chunk.js";import{v as r}from"./COrUmz0l.chunk.js";import{d as i,n as a}from"./DLiesDxa.chunk.js";import{t as o}from"./Dhb09xKG.chunk.js";import{r as s,t as c}from"./BmJ66zOA.chunk.js";import{t as l}from"./Bqlm3yF_.chunk.js";import{n as u,r as d,t as f}from"./H5KLIhR_.chunk.js";import{t as p}from"./Du_kaCuU.chunk.js";import{r as m}from"./app-BeoBow2q.js";import{t as h}from"./BYLD2f9R2.chunk.js";import{i as g,n as _,o as v,r as y,s as b,t as x}from"./CkS0imTk2.chunk.js";var S={image:`_image_1a110_1`};n();var C=e(),w=l.encloseNamespace(`shared.streamsBarChartCardEmptyState`);function T(){return(0,C.jsxs)(p,{className:`flex-grow-1 justify-content-center`,children:[(0,C.jsx)(p.Image,{src:f.EmptyStates.Shared.BagQuestionOrange,className:S.image}),(0,C.jsx)(p.Heading,{className:`h6`,children:w(`heading`)}),(0,C.jsx)(p.Info,{className:`w-100`,children:w(`description`)})]})}var E=c(),D=`shared.streamsBarChartCard`,O=l.encloseNamespace(D);function k(e){let n=m(`video-views`),o=_(i(e.videoId?h.videoAggregation(e.videoId,e.type,n):h.aggregation(e.type,n)).data,y(e.type)),s=o?.reduce((e,t)=>e+t.y,0);return(0,C.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3`,children:o?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,C.jsx)(`h2`,{className:`h6 mb-1`,children:(0,C.jsx)(a,{namespace:D,phrase:`totalViews`,options:{views:s}})}),e.appLink&&e.appLinkText&&(0,C.jsx)(r,{appLink:e.appLink,className:`text-info`,children:e.appLinkText})]}),o.length?(0,C.jsx)(E.Scrollbars,{className:`position-relative`,children:(0,C.jsx)(`div`,{className:`position-absolute w-100 pe-2`,children:(0,C.jsx)(b,{data:o,labelAnnotations:{"Classroom views":{onClick:()=>{t.trigger({application:d.DEFAULT,action:u.Default.CLASSROOM_VIEWS_POPUP})},tooltip:O(`classroomViewsSettings`)}}})})}):(0,C.jsx)(T,{})]}):(0,C.jsx)(`div`,{className:`partial-loading-background d-block w-50`,children:`\xA0`})})}var A={MONTH:35,YEAR:365},j={day:`YYYY-MM-DD`,month:`YYYY-MM`,year:`YYYY`},M={day:`D MMM`,month:`MMM`,year:`YYYY`};function N(e){let t=o.diffBetween(e.end,e.start,`day`);return t>A.YEAR?`year`:t>A.MONTH?`month`:`day`}function P(e,t){let n=[],r=o.convertUTCToLocal(e.start),i=o.convertUTCToLocal(e.end),a=o.format(r,j[t]);for(;!o.isAfter(a,i,t);)n.push(a),a=o.format(o.add(a,1,t),j[t]);return n}function F(e,t,n){if(!e)return null;let r=N(t),i=P(t,r),a=new Map;e.forEach(e=>{let t=o.format(o.convertUTCToLocal(e.dateStreamed),j[r]),n=[s.System,`255`].includes(e.name)?null:e.name,i=a.get(n);i||a.set(n,i=new Map);let c=i.get(t)??0;i.set(t,c+e.count)});let c=[...a.keys()];if(!c.length)return{categories:i.map(e=>o.format(e,M[r])),data:[]};let l=y(n);return{categories:i.map(e=>o.format(e,M[r])),data:c.map(e=>({name:l(e),type:`line`,data:i.map(t=>a.get(e).get(t)??0),color:g(e)})).sort((e,t)=>v(e.name,t.name))}}var I=`reportsShared.streamsChartCard`,L=l.encloseNamespace(I);function R(e){let n=m(`video-views`),r=F(i(e.videoId?h.videoAggregationChart(e.videoId,e.type,n):h.aggregationChart(e.type,n)).data,n,e.type);return(0,C.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white rounded p-3 position-relative`,children:r?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`h2`,{className:`position-absolute h6 mb-1`,children:(0,C.jsx)(a,{namespace:I,phrase:`videoViews`})}),(0,C.jsx)(x,{categories:r.categories,data:r.data,legendAnnotations:{"Classroom views":{onClick:()=>{t.trigger({application:d.DEFAULT,action:u.Default.CLASSROOM_VIEWS_POPUP})},tooltip:L(`classroomViewsSettings`)}}})]}):(0,C.jsx)(`div`,{className:`partial-loading-background w-25`,children:`\xA0`})})}export{k as n,R as t};
2
+ //# sourceMappingURL=CllvFALa2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CMQlrOon2.chunk.js","names":[],"sources":["../../src/shared/views/overview-cards/streams-bar-chart-card/empty-state/total-views-by-group-card-empty-state.module.scss","../../src/shared/views/overview-cards/streams-bar-chart-card/empty-state/StreamsBarChartCardEmptyState.tsx","../../src/shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView.tsx","../../src/shared/views/overview-cards/streams-chart-card/StreamsChartCardViewUtils.ts","../../src/shared/views/overview-cards/streams-chart-card/StreamsChartCardView.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\nconst namespace = 'shared.streamsBarChartCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport styles from './total-views-by-group-card-empty-state.module.scss';\n\nexport function StreamsBarChartCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.BagQuestionOrange}\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';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\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 { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { VerticalBarChart } from 'shared/components/vertical-bar-chart/VerticalBarChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { getCountByGroup } from 'shared/utils/BarChartByGroupUtils';\nimport { getLabelMapper } from 'shared/utils/UserUtils';\nimport { StreamsBarChartCardEmptyState } from 'shared/views/overview-cards/streams-bar-chart-card/empty-state/StreamsBarChartCardEmptyState';\n\nconst namespace = 'shared.streamsBarChartCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TotalViewsByGroupViewProps {\n type: StreamAggregationType;\n videoId?: string;\n appLink?: Core.AppLink;\n appLinkText?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StreamsBarChartCardView(props: TotalViewsByGroupViewProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const chartData = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, props.type, requestFilter) :\n VideoViewsV2Requests.aggregation(props.type, requestFilter));\n\n const grouped = getCountByGroup(\n chartData.data,\n getLabelMapper(props.type)\n );\n const total = grouped?.reduce((acc, group) => (acc + group.y), 0);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {grouped ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-1'><Text namespace={namespace} phrase='totalViews' options={{ views: total }} /></h2>\n {props.appLink && props.appLinkText &&\n <AppLink\n appLink={props.appLink}\n className='text-info'\n >\n {props.appLinkText}\n </AppLink>\n }\n </div>\n\n {grouped.length ?\n <Scrollbars className='position-relative'>\n <div className='position-absolute w-100 pe-2'>\n <VerticalBarChart data={grouped} labelAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }} />\n </div>\n </Scrollbars> :\n <StreamsBarChartCardEmptyState />\n }\n </> :\n <div className='partial-loading-background d-block w-50'>&nbsp;</div>\n }\n </div >\n );\n}\n","import { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { GroupedAnalyticsChartCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nimport { compareGroupNames } from 'shared/utils/GroupSortUtils';\nimport { getLabelMapper, mapUserTypeToChartColour } from 'shared/utils/UserUtils';\n\nconst GroupByThresholds = {\n MONTH: 35,\n YEAR: 365\n};\n\nconst DateFormats = {\n day: 'YYYY-MM-DD',\n month: 'YYYY-MM',\n year: 'YYYY'\n};\n\nconst DisplayFormats = {\n day: 'D MMM',\n month: 'MMM',\n year: 'YYYY'\n};\n\ntype GroupBy = 'day' | 'month' | 'year';\n\ninterface ChartData {\n categories: string[];\n data: Highcharts.SeriesLineOptions[];\n}\n\nfunction getGroupBy(requestFilter: AnalyticsRequestFilter): GroupBy {\n const range = DateHelper.diffBetween(requestFilter.end, requestFilter.start, 'day');\n\n if (range > GroupByThresholds.YEAR)\n return 'year';\n\n if (range > GroupByThresholds.MONTH)\n return 'month';\n\n return 'day';\n}\n\nfunction getFullDateRange(requestFilter: AnalyticsRequestFilter, groupBy: GroupBy): string[] {\n const range: string[] = [];\n\n const localStart = DateHelper.convertUTCToLocal(requestFilter.start);\n const localEnd = DateHelper.convertUTCToLocal(requestFilter.end);\n\n let currentDate = DateHelper.format(localStart, DateFormats[groupBy]);\n\n while (!DateHelper.isAfter(currentDate, localEnd, groupBy)) {\n range.push(currentDate);\n currentDate = DateHelper.format(DateHelper.add(currentDate, 1, groupBy), DateFormats[groupBy]);\n }\n\n return range;\n}\n\nexport function getChartData(\n events: GroupedAnalyticsChartCount[],\n requestFilter: AnalyticsRequestFilter,\n type: StreamAggregationType\n): ChartData {\n if (!events) return null;\n\n const groupBy = getGroupBy(requestFilter);\n const fullDateRange = getFullDateRange(requestFilter, groupBy);\n \n const grouped = new Map<string, Map<string, number>>();\n \n events.forEach(ev => {\n const eventDate = DateHelper.format(DateHelper.convertUTCToLocal(ev.dateStreamed), DateFormats[groupBy]);\n \n // Bucketing System user data as Anonymous\n const name = [ UserGroup.System, '255' ].includes(ev.name) ? null : ev.name;\n\n let group = grouped.get(name);\n\n if (!group)\n grouped.set(name, group = new Map<string, number>);\n\n const oldCount = group.get(eventDate) ?? 0;\n group.set(eventDate, oldCount + ev.count);\n });\n\n const roles = [...grouped.keys()] as UserGroup[];\n\n if (!roles.length) return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data: []\n };\n\n const labelMapper = getLabelMapper(type);\n\n return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data:\n roles.map(r => ({\n name: labelMapper(r),\n type: 'line' as const,\n data: fullDateRange.map(d => grouped.get(r).get(d) ?? 0),\n color: mapUserTypeToChartColour(r)\n })).sort((a, b) => compareGroupNames(a.name, b.name))\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsChartCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { LineChart } from 'shared/components/line-chart/LineChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\nimport { getChartData } from './StreamsChartCardViewUtils';\n\nconst namespace = 'reportsShared.streamsChartCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StreamsChartCardViewProps {\n type: StreamAggregationType;\n videoId?: string;\n className?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StreamsChartCardView(props: StreamsChartCardViewProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsChartCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregationChart(props.videoId, props.type, requestFilter) :\n VideoViewsV2Requests.aggregationChart(props.type, requestFilter));\n\n const chartData = getChartData(viewsByGroup.data, requestFilter, props.type);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3 position-relative'>\n {chartData ?\n <>\n <h2 className='position-absolute h6 mb-1'><Text namespace={namespace} phrase='videoViews' /></h2>\n <LineChart\n categories={chartData.categories}\n data={chartData.data}\n legendAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }}\n />\n </> :\n <div className='partial-loading-background w-25'>&nbsp;</div>\n }\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CllvFALa2.chunk.js","names":[],"sources":["../../src/shared/views/overview-cards/streams-bar-chart-card/empty-state/total-views-by-group-card-empty-state.module.scss","../../src/shared/views/overview-cards/streams-bar-chart-card/empty-state/StreamsBarChartCardEmptyState.tsx","../../src/shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView.tsx","../../src/shared/views/overview-cards/streams-chart-card/StreamsChartCardViewUtils.ts","../../src/shared/views/overview-cards/streams-chart-card/StreamsChartCardView.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\nconst namespace = 'shared.streamsBarChartCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport styles from './total-views-by-group-card-empty-state.module.scss';\n\nexport function StreamsBarChartCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.BagQuestionOrange}\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';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\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 { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { VerticalBarChart } from 'shared/components/vertical-bar-chart/VerticalBarChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { getCountByGroup } from 'shared/utils/BarChartByGroupUtils';\nimport { getLabelMapper } from 'shared/utils/UserUtils';\nimport { StreamsBarChartCardEmptyState } from 'shared/views/overview-cards/streams-bar-chart-card/empty-state/StreamsBarChartCardEmptyState';\n\nconst namespace = 'shared.streamsBarChartCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TotalViewsByGroupViewProps {\n type: StreamAggregationType;\n videoId?: string;\n appLink?: Core.AppLink;\n appLinkText?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StreamsBarChartCardView(props: TotalViewsByGroupViewProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const chartData = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, props.type, requestFilter) :\n VideoViewsV2Requests.aggregation(props.type, requestFilter));\n\n const grouped = getCountByGroup(\n chartData.data,\n getLabelMapper(props.type)\n );\n const total = grouped?.reduce((acc, group) => (acc + group.y), 0);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {grouped ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-1'><Text namespace={namespace} phrase='totalViews' options={{ views: total }} /></h2>\n {props.appLink && props.appLinkText &&\n <AppLink\n appLink={props.appLink}\n className='text-info'\n >\n {props.appLinkText}\n </AppLink>\n }\n </div>\n\n {grouped.length ?\n <Scrollbars className='position-relative'>\n <div className='position-absolute w-100 pe-2'>\n <VerticalBarChart data={grouped} labelAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }} />\n </div>\n </Scrollbars> :\n <StreamsBarChartCardEmptyState />\n }\n </> :\n <div className='partial-loading-background d-block w-50'>&nbsp;</div>\n }\n </div >\n );\n}\n","import { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { GroupedAnalyticsChartCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nimport { compareGroupNames } from 'shared/utils/GroupSortUtils';\nimport { getLabelMapper, mapUserTypeToChartColour } from 'shared/utils/UserUtils';\n\nconst GroupByThresholds = {\n MONTH: 35,\n YEAR: 365\n};\n\nconst DateFormats = {\n day: 'YYYY-MM-DD',\n month: 'YYYY-MM',\n year: 'YYYY'\n};\n\nconst DisplayFormats = {\n day: 'D MMM',\n month: 'MMM',\n year: 'YYYY'\n};\n\ntype GroupBy = 'day' | 'month' | 'year';\n\ninterface ChartData {\n categories: string[];\n data: Highcharts.SeriesLineOptions[];\n}\n\nfunction getGroupBy(requestFilter: AnalyticsRequestFilter): GroupBy {\n const range = DateHelper.diffBetween(requestFilter.end, requestFilter.start, 'day');\n\n if (range > GroupByThresholds.YEAR)\n return 'year';\n\n if (range > GroupByThresholds.MONTH)\n return 'month';\n\n return 'day';\n}\n\nfunction getFullDateRange(requestFilter: AnalyticsRequestFilter, groupBy: GroupBy): string[] {\n const range: string[] = [];\n\n const localStart = DateHelper.convertUTCToLocal(requestFilter.start);\n const localEnd = DateHelper.convertUTCToLocal(requestFilter.end);\n\n let currentDate = DateHelper.format(localStart, DateFormats[groupBy]);\n\n while (!DateHelper.isAfter(currentDate, localEnd, groupBy)) {\n range.push(currentDate);\n currentDate = DateHelper.format(DateHelper.add(currentDate, 1, groupBy), DateFormats[groupBy]);\n }\n\n return range;\n}\n\nexport function getChartData(\n events: GroupedAnalyticsChartCount[],\n requestFilter: AnalyticsRequestFilter,\n type: StreamAggregationType\n): ChartData {\n if (!events) return null;\n\n const groupBy = getGroupBy(requestFilter);\n const fullDateRange = getFullDateRange(requestFilter, groupBy);\n \n const grouped = new Map<string, Map<string, number>>();\n \n events.forEach(ev => {\n const eventDate = DateHelper.format(DateHelper.convertUTCToLocal(ev.dateStreamed), DateFormats[groupBy]);\n \n // Bucketing System user data as Anonymous\n const name = [ UserGroup.System, '255' ].includes(ev.name) ? null : ev.name;\n\n let group = grouped.get(name);\n\n if (!group)\n grouped.set(name, group = new Map<string, number>);\n\n const oldCount = group.get(eventDate) ?? 0;\n group.set(eventDate, oldCount + ev.count);\n });\n\n const roles = [...grouped.keys()] as UserGroup[];\n\n if (!roles.length) return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data: []\n };\n\n const labelMapper = getLabelMapper(type);\n\n return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data:\n roles.map(r => ({\n name: labelMapper(r),\n type: 'line' as const,\n data: fullDateRange.map(d => grouped.get(r).get(d) ?? 0),\n color: mapUserTypeToChartColour(r)\n })).sort((a, b) => compareGroupNames(a.name, b.name))\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsChartCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { LineChart } from 'shared/components/line-chart/LineChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\nimport { getChartData } from './StreamsChartCardViewUtils';\n\nconst namespace = 'reportsShared.streamsChartCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StreamsChartCardViewProps {\n type: StreamAggregationType;\n videoId?: string;\n className?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StreamsChartCardView(props: StreamsChartCardViewProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsChartCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregationChart(props.videoId, props.type, requestFilter) :\n VideoViewsV2Requests.aggregationChart(props.type, requestFilter));\n\n const chartData = getChartData(viewsByGroup.data, requestFilter, props.type);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3 position-relative'>\n {chartData ?\n <>\n <h2 className='position-absolute h6 mb-1'><Text namespace={namespace} phrase='videoViews' /></h2>\n <LineChart\n categories={chartData.categories}\n data={chartData.data}\n legendAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }}\n />\n </> :\n <div className='partial-loading-background w-25'>&nbsp;</div>\n }\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{t as n}from"./BDdd6NA7.chunk.js";import{r}from"./BmJ66zOA.chunk.js";import{n as i}from"./CNQKHXPY.chunk.js";import{t as a}from"./DHk1ZJ0C.chunk.js";import{t as o}from"./B6C1sxIU.chunk.js";var s={"Academic Coach":`teacher`,"Assistant Head Teacher":`kdm`,"Consortium Leadership":`kdm`,"Curriculum Coordinator":`teacher`,"Curriculum Leader":`teacher`,"Deputy Head Teacher":`kdm`,"Deputy Principal":`kdm`,"Digital Technology Coordinator":`teacher`,"District Leadership":`kdm`,"e-Learning/ICT Coordinator":`teacher`,"Head of Department":`teacher`,"Head of Faculty":`teacher`,"Head of Key Stage":`teacher`,"Head of Subject":`teacher`,"Head Teacher":`kdm`,IT:`kdm`,"IT/LRC":`kdm`,"e-Learning Coordinator":`kdm`,"Instructional Technology Specialist":`teacher`,"Librarian / Teacher Librarian":`teacher`,Principal:`kdm`,"School Leadership":`kdm`,"Subject Lead":`teacher`,Teacher:`teacher`,"SSO / SLSO":`teacher`,"Assistant Principal":`kdm`,"IT / IT Specialist":`kdm`,"Learning Support":`teacher`,"Learning Assistant":`teacher`,"Educational Assistant (EA)":`teacher`,"Learning Support Teacher / Resource Teacher":`teacher`,"Department Head / Manager":`teacher`,"Curriculum Coordinator / Consultant":`teacher`,"School Counsellor / Guidance Counsellor":`teacher`,"Vice-Principal":`kdm`,Superintendent:`kdm`,"Director of Education":`kdm`,"Business Manager":`kdm`,Professor:`kdm`,Lecturer:`teacher`,"Course Coordinator / Administrator":`teacher`,"Digital Learning Manager":`teacher`,Tutor:`teacher`,"Teaching Fellow":`teacher`,Librarian:`teacher`,Researcher:`teacher`,"Learning Technologist":`teacher`,"Teaching Assistant":`teacher`},c=function(e){return e.Disabled=`Disabled`,e.Active=`Active`,e.Inactive=`Inactive`,e}({}),l=function(e){return e.Guest=`Guest`,e.User=`User`,e.Admin=`Admin`,e.SuperAdmin=`SuperAdmin`,e}({}),u=function(e){return e[e.Unknown=0]=`Unknown`,e[e.Staff=1]=`Staff`,e[e.Learner=2]=`Learner`,e[e.System=255]=`System`,e}(u||{}),d=function(e){return e[e.Guest=16]=`Guest`,e[e.User=32]=`User`,e[e.Admin=48]=`Admin`,e[e.SuperAdmin=64]=`SuperAdmin`,e}(d||{}),f=[`rm unify glow`,`glow`,`rm unify`],p={getInitials(e,t){let n=``;return e?.length&&(n=e[0]),t?.length&&(n+=t[0]),n.toUpperCase()},getInitialsFromFullName(e){let t=e?.split(` `)??[];if(!t.length)return``;let n=t[0],r=t.length>1?t[1]:``;return p.getInitials(n,r)},getFullName(e){return e?.name?`${e?.name??``} ${e?.surname??``}`.trim():``},getCommunityName(e){return e?.name?`${e.name} ${e.surname?.slice(0,1)}`:``},getUserType(e){let t=e.userType;if(typeof t==`number`)switch(t){case u.Unknown:t=r.Unknown;break;case u.Staff:t=r.Staff;break;case u.Learner:t=r.Learner;break;case u.System:t=r.System;break}return t},getUserStatus(e){let t=e.status;if(typeof t==`number`)switch(t){case 0:t=c.Disabled;break;case 1:t=c.Active;break;case 2:t=c.Inactive;break}return t},getUserStatusFromValue(e){if(typeof e==`number`)switch(e){case 0:e=c.Disabled;break;case 1:e=c.Active;break;case 2:e=c.Inactive;break}return e},getUserRole(e){let t;if(`userProfiles`in e&&e.userProfiles?.data?.[0]&&(t=e.userProfiles.data[0].role),`userProfile`in e&&e.userProfile&&(t=e.userProfile.role),!t)return l.User;if(typeof t==`number`)switch(t){case d.Guest:t=l.Guest;break;case d.User:t=l.User;break;case d.Admin:t=l.Admin;break;case d.SuperAdmin:t=l.SuperAdmin;break}return t},getUserRoleFromValue(e){if(!e&&e!==0)return l.User;if(typeof e==`number`)switch(e){case d.Guest:return l.Guest;case d.User:return l.User;case d.Admin:return l.Admin;case d.SuperAdmin:return l.SuperAdmin;default:return l.User}return e},getDisplayName(e){return e.metadata?.displayName?e.metadata?.displayName:p.getFullName(e)},getYearGroup(e){return e.masterYearGroup?.id?e.masterYearGroup:e.yearGroups?.data?.length?n.first(e.yearGroups.data):null},hasLegacySso(e){return e?.authenticationMethods?.length?e.authenticationMethods.some(e=>!e.local&&e.isLegacy):!1},hasNonLegacySso(e){return e?.authenticationMethods?.length?e.authenticationMethods.some(e=>!e.local&&!e.isLegacy):!1},hasSso(e){return p.hasLegacySso(e)||p.hasNonLegacySso(e)},hasRmUnifySso(e){return e?.authenticationMethods?.length?e.authenticationMethods.some(e=>f.includes(e.displayName?.toLowerCase())):!1},getPersonaFromJobTitle(e){if(!e)return`teacher`;let t={};for(let e in s)s.hasOwnProperty(e)&&(t[e.toLowerCase()]=s[e]);return t[e.toLowerCase()]||`teacher`},isKDM(e){return e?p.getPersonaFromJobTitle(e)===`kdm`:!1},getValidYearGroups(e){return e?e.filter(e=>e.value!==0):[]}},m=function(e){return e.ManageSubjectPreferences=`subjects.preferences.manage`,e.FollowSubjects=`subjects.follow`,e.ViewClassrooms=`classrooms.view`,e.ManageAllClassrooms=`classrooms.manage.all`,e.JoinClassroom=`classroom.join`,e.ShareToUsers=`share.direct.users`,e.ShareToClassrooms=`share.direct.classrooms`,e.ShareToClassroomGroups=`share.direct.classroomgroups`,e.ShareToOpenClassrooms=`share.direct.openclassrooms`,e.CreateClassrooms=`classrooms.create`,e.DeleteClassrooms=`classrooms.delete`,e.StudentExperience=`studentexperience`,e.ManageUsers=`users.manage`,e.ManageIntegrations=`integrations.manage`,e.EditProfileDetails=`profile.edit`,e.ManageCustomerSettings=`customersettings.manage`,e.ManageLocalCache=`localcache.manage`,e.ManageVideoAccess=`video.access.manage`,e.ManageNotificationSettings=`settings.notification.manage`,e.ManagePlaybackSettings=`playbacksettings.manage`,e.ViewSchoolAnalytics=`analytics.customeranalytics.view`,e.ViewAnalytics=`analytics.view`,e.ManageShareLinkSettings=`sharelink.settings.edit`,e.ViewProductBoard=`productboard.view`,e.CanSubmitFeedback=`feedback.submit`,e.ViewTrialDuration=`trial.duration.view`,e.ViewTrialBanner=`trial.banner.view`,e.ViewTrialUpgrade=`trial.upgrade.view`,e.ViewInviteColleague=`invitecolleague.view`,e.UploadVideo=`video.upload`,e.FavouriteVideo=`video.favourite`,e.ViewVideoPointsOfInterest=`video.pointsofinterest.view`,e.ViewVideoGlance=`video.glance.view`,e.ViewVideoInteractives=`video.interactives.view`,e.ViewVideoClips=`video.clips.view`,e.ViewCurriculums=`curriculums.view`,e.ManagePresentations=`presentations.switch`,e.ViewLibraries=`libraries.view`,e.ContributeVideo=`video.contribute`,e.ManageLibraries=`libraries.manage`,e.ViewOnboarding=`onboarding.view`,e.Exchange=`exchangetv.manage`,e.Rostering=`rostering.manage`,e.ViewMoviesTv=`moviestv.view`,e.ViewDiscover=`discover.view`,e.ViewSearch=`search.view`,e.ViewMyShares=`myshares.view`,e.CreateShareLink=`share.link.create`,e.ViewInsights=`insights.view`,e.ViewRestrictedMode=`restrictedmode.view`,e.GuestExperience=`guestexperience`,e.CreatePlaylist=`playlist.create`,e.ViewMyVideos=`myvideos.view`,e.ViewWatchHistory=`watchhistory.view`,e.ViewNotifications=`notifications.view`,e}({}),h={avatar:`_avatar_hdbap_1`,dot:`_dot_hdbap_11`};t();var g=e();function _(e,t){return t?o.createUrl(i.safeUrlConcat(e,`/v1/profile-images?initials=${t}`),{size:a.Small}):``}function v(e){let t=!e.anonymiseUsers&&e.imageUrl||_(e.imageCdnUrl,e.initials);return(0,g.jsxs)(`div`,{className:`position-relative h-100 w-100`,children:[(0,g.jsx)(`div`,{className:`${h.avatar} ${e?.extraClasses||``}`,style:{backgroundImage:`url('${t}')`},children:`\xA0`}),e.showDot&&(0,g.jsx)(`div`,{className:`${h.dot} rounded-circle bg-danger`})]})}function y(e){return(0,g.jsx)(`svg`,{...e,children:(0,g.jsx)(`path`,{d:`m11.959 10.641 4.402-4.296a.964.964 0 0 1 1.358 0 .95.95 0 0 1 0 1.35l-4.403 4.297 4.403 4.378a.95.95 0 0 1 0 1.35.964.964 0 0 1-1.358 0l-4.402-4.378-4.32 4.378a.964.964 0 0 1-1.358 0 .95.95 0 0 1 0-1.35l4.32-4.378-4.32-4.362a.95.95 0 0 1 0-1.35.964.964 0 0 1 1.358 0z`,fill:`currentColor`})})}var b={VIDEO_COLLECTION:`(videoCollection)`,SERIES:`tallposter,_rating,banner`,CLASSIFICATION_COLLECTION:`banner,cover,tallPoster,_theme[banner,cover,tallPoster,thumbnail,icon]`,CLASSIFICATION:e=>`banner,cover,tallPoster,thumbnail,_theme[banner,cover,tallPoster,thumbnail,icon],followers{id:${e}},pinnedVideos[count()]{limit:0},playlists[count()]{limit:0},series[count()]{limit:0},tags{tagType:curation}`,VIDEO:`channel,series,season,_rating,producers,glance,distributors[partnerprofiles[_slug,count()]{status:1}],owner,subjectPresentationAudiences,resources[thumbnail,pdf],tags,productionCompanies[partnerprofiles[_slug,count()]{status:1}],directors,links,thumbnail,_canUpdate,_videoProgress,_canBeConsumed,categories[libraries],libraries,_canAddToLibrary,_restrictions,_canDownload,_curationTags,contentLicences,_canCreateChild`,PLAYLIST:`cover,banner,owner,followers[count()]{limit:0}`,PLAYLIST_COLLECTION:`videos[count()]{status:[1,2],limit:0},interactives[count()]{status:[1,2],limit:0},clips[count()]{status:[1,2],limit:0},cover`,CLIP:`(clip)`,CLIP_COLLECTION:`(clipCollection)`,INTERACTIVE:`(interactive)`,INTERACTIVE_COLLECTION:`(interactiveCollection)`,LIBRARY_COLLECTION:`owner[logo]`,LIBRARY:`owner[logo],categorytree`,PARTNER_PROFILE:`company[banner,logo,partnerprofiles[count()]],person[partnerprofiles[count()]],_slug,contentregions,_logo,_banner,_cover,_colour,_videobanner,links`},x={CLASSIFICATION:`banner,cover,tallPoster,_theme[banner,cover,tallPoster,thumbnail,icon],pinnedVideos[count()]{limit:0},playlists[count()]{limit:0},series[count()]{limit:0},tags{tagType:curation}`,CLASSIFICATION_COLLECTION:`banner,cover,tallPoster,_theme[banner,cover,tallPoster,thumbnail,icon]`,VIDEO:`series,season,_rating,producers,glance,distributors[partnerprofiles[_slug,count()]{status:1}],subjectPresentationAudiences,resources[thumbnail,pdf],tags,productionCompanies[partnerprofiles[_slug,count()]{status:1}],directors,links,thumbnail,interactives[thumbnail,_canBeConsumed,_curationTags],clips[_canBeConsumed,_curationTags,_thumbnail],_canBeConsumed,_curationTags,categories,libraries`,VIDEO_COLLECTION:`thumbnail,_rating,series,season,subjectPresentationAudiences,subtitles{limit:1},_canBeConsumed`},S=function(e){return e[e.FilterOut=0]=`FilterOut`,e[e.StripMetadata=1]=`StripMetadata`,e}({});export{v as a,l as c,y as i,c as l,x as n,m as o,b as r,p as s,S as t};
2
- //# sourceMappingURL=Chh-4QFk.chunk.js.map
1
+ import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{t as n}from"./BDdd6NA7.chunk.js";import{r}from"./BmJ66zOA.chunk.js";import{n as i}from"./CNQKHXPY.chunk.js";import{t as a}from"./DHk1ZJ0C.chunk.js";import{t as o}from"./B6C1sxIU.chunk.js";var s={"Academic Coach":`teacher`,"Assistant Head Teacher":`kdm`,"Consortium Leadership":`kdm`,"Curriculum Coordinator":`teacher`,"Curriculum Leader":`teacher`,"Deputy Head Teacher":`kdm`,"Deputy Principal":`kdm`,"Digital Technology Coordinator":`teacher`,"District Leadership":`kdm`,"e-Learning/ICT Coordinator":`teacher`,"Head of Department":`teacher`,"Head of Faculty":`teacher`,"Head of Key Stage":`teacher`,"Head of Subject":`teacher`,"Head Teacher":`kdm`,IT:`kdm`,"IT/LRC":`kdm`,"e-Learning Coordinator":`kdm`,"Instructional Technology Specialist":`teacher`,"Librarian / Teacher Librarian":`teacher`,Principal:`kdm`,"School Leadership":`kdm`,"Subject Lead":`teacher`,Teacher:`teacher`,"SSO / SLSO":`teacher`,"Assistant Principal":`kdm`,"IT / IT Specialist":`kdm`,"Learning Support":`teacher`,"Learning Assistant":`teacher`,"Educational Assistant (EA)":`teacher`,"Learning Support Teacher / Resource Teacher":`teacher`,"Department Head / Manager":`teacher`,"Curriculum Coordinator / Consultant":`teacher`,"School Counsellor / Guidance Counsellor":`teacher`,"Vice-Principal":`kdm`,Superintendent:`kdm`,"Director of Education":`kdm`,"Business Manager":`kdm`,Professor:`kdm`,Lecturer:`teacher`,"Course Coordinator / Administrator":`teacher`,"Digital Learning Manager":`teacher`,Tutor:`teacher`,"Teaching Fellow":`teacher`,Librarian:`teacher`,Researcher:`teacher`,"Learning Technologist":`teacher`,"Teaching Assistant":`teacher`},c=function(e){return e.Disabled=`Disabled`,e.Active=`Active`,e.Inactive=`Inactive`,e}({}),l=function(e){return e.Guest=`Guest`,e.User=`User`,e.Admin=`Admin`,e.SuperAdmin=`SuperAdmin`,e}({}),u=function(e){return e[e.Unknown=0]=`Unknown`,e[e.Staff=1]=`Staff`,e[e.Learner=2]=`Learner`,e[e.System=255]=`System`,e}(u||{}),d=function(e){return e[e.Guest=16]=`Guest`,e[e.User=32]=`User`,e[e.Admin=48]=`Admin`,e[e.SuperAdmin=64]=`SuperAdmin`,e}(d||{}),f=[`rm unify glow`,`glow`,`rm unify`],p={getInitials(e,t){let n=``;return e?.length&&(n=e[0]),t?.length&&(n+=t[0]),n.toUpperCase()},getInitialsFromFullName(e){let t=e?.split(` `)??[];if(!t.length)return``;let n=t[0],r=t.length>1?t[1]:``;return p.getInitials(n,r)},getFullName(e){return e?.name?`${e?.name??``} ${e?.surname??``}`.trim():``},getCommunityName(e){return e?.name?`${e.name} ${e.surname?.slice(0,1)}`:``},getUserType(e){let t=e.userType;if(typeof t==`number`)switch(t){case u.Unknown:t=r.Unknown;break;case u.Staff:t=r.Staff;break;case u.Learner:t=r.Learner;break;case u.System:t=r.System;break}return t},getUserStatus(e){let t=e.status;if(typeof t==`number`)switch(t){case 0:t=c.Disabled;break;case 1:t=c.Active;break;case 2:t=c.Inactive;break}return t},getUserStatusFromValue(e){if(typeof e==`number`)switch(e){case 0:e=c.Disabled;break;case 1:e=c.Active;break;case 2:e=c.Inactive;break}return e},getUserRole(e){let t;if(`userProfiles`in e&&e.userProfiles?.data?.[0]&&(t=e.userProfiles.data[0].role),`userProfile`in e&&e.userProfile&&(t=e.userProfile.role),!t)return l.User;if(typeof t==`number`)switch(t){case d.Guest:t=l.Guest;break;case d.User:t=l.User;break;case d.Admin:t=l.Admin;break;case d.SuperAdmin:t=l.SuperAdmin;break}return t},getUserRoleFromValue(e){if(!e&&e!==0)return l.User;if(typeof e==`number`)switch(e){case d.Guest:return l.Guest;case d.User:return l.User;case d.Admin:return l.Admin;case d.SuperAdmin:return l.SuperAdmin;default:return l.User}return e},getDisplayName(e){return e.metadata?.displayName?e.metadata?.displayName:p.getFullName(e)},getYearGroup(e){return e.masterYearGroup?.id?e.masterYearGroup:e.yearGroups?.data?.length?n.first(e.yearGroups.data):null},hasLegacySso(e){return e?.authenticationMethods?.length?e.authenticationMethods.some(e=>!e.local&&e.isLegacy):!1},hasNonLegacySso(e){return e?.authenticationMethods?.length?e.authenticationMethods.some(e=>!e.local&&!e.isLegacy):!1},hasSso(e){return p.hasLegacySso(e)||p.hasNonLegacySso(e)},hasRmUnifySso(e){return e?.authenticationMethods?.length?e.authenticationMethods.some(e=>f.includes(e.displayName?.toLowerCase())):!1},getPersonaFromJobTitle(e){if(!e)return`teacher`;let t={};for(let e in s)s.hasOwnProperty(e)&&(t[e.toLowerCase()]=s[e]);return t[e.toLowerCase()]||`teacher`},isKDM(e){return e?p.getPersonaFromJobTitle(e)===`kdm`:!1},getValidYearGroups(e){return e?e.filter(e=>e.value!==0):[]}},m=function(e){return e.ManageSubjectPreferences=`subjects.preferences.manage`,e.FollowSubjects=`subjects.follow`,e.ViewClassrooms=`classrooms.view`,e.ManageAllClassrooms=`classrooms.manage.all`,e.JoinClassroom=`classroom.join`,e.ShareToUsers=`share.direct.users`,e.ShareToClassrooms=`share.direct.classrooms`,e.ShareToClassroomGroups=`share.direct.classroomgroups`,e.ShareToOpenClassrooms=`share.direct.openclassrooms`,e.CreateClassrooms=`classrooms.create`,e.DeleteClassrooms=`classrooms.delete`,e.StudentExperience=`studentexperience`,e.ManageUsers=`users.manage`,e.ManageIntegrations=`integrations.manage`,e.EditProfileDetails=`profile.edit`,e.ManageCustomerSettings=`customersettings.manage`,e.ManageLocalCache=`localcache.manage`,e.ManageVideoAccess=`video.access.manage`,e.ManageNotificationSettings=`settings.notification.manage`,e.ManagePlaybackSettings=`playbacksettings.manage`,e.ViewSchoolAnalytics=`analytics.customeranalytics.view`,e.ViewAnalytics=`analytics.view`,e.ManageShareLinkSettings=`sharelink.settings.edit`,e.ViewProductBoard=`productboard.view`,e.CanSubmitFeedback=`feedback.submit`,e.ViewTrialUpgrade=`trial.upgrade.view`,e.ViewInviteColleague=`invitecolleague.view`,e.UploadVideo=`video.upload`,e.FavouriteVideo=`video.favourite`,e.ViewVideoPointsOfInterest=`video.pointsofinterest.view`,e.ViewVideoGlance=`video.glance.view`,e.ViewVideoInteractives=`video.interactives.view`,e.ViewVideoClips=`video.clips.view`,e.ViewCurriculums=`curriculums.view`,e.ManagePresentations=`presentations.switch`,e.ViewLibraries=`libraries.view`,e.ContributeVideo=`video.contribute`,e.ManageLibraries=`libraries.manage`,e.ViewOnboarding=`onboarding.view`,e.Exchange=`exchangetv.manage`,e.Rostering=`rostering.manage`,e.ViewMoviesTv=`moviestv.view`,e.ViewDiscover=`discover.view`,e.ViewSearch=`search.view`,e.ViewMyShares=`myshares.view`,e.CreateShareLink=`share.link.create`,e.ViewInsights=`insights.view`,e.ViewRestrictedMode=`restrictedmode.view`,e.GuestExperience=`guestexperience`,e.CreatePlaylist=`playlist.create`,e.ViewMyVideos=`myvideos.view`,e.ViewWatchHistory=`watchhistory.view`,e.ViewNotifications=`notifications.view`,e}({}),h={avatar:`_avatar_hdbap_1`,dot:`_dot_hdbap_11`};t();var g=e();function _(e,t){return t?o.createUrl(i.safeUrlConcat(e,`/v1/profile-images?initials=${t}`),{size:a.Small}):``}function v(e){let t=!e.anonymiseUsers&&e.imageUrl||_(e.imageCdnUrl,e.initials);return(0,g.jsxs)(`div`,{className:`position-relative h-100 w-100`,children:[(0,g.jsx)(`div`,{className:`${h.avatar} ${e?.extraClasses||``}`,style:{backgroundImage:`url('${t}')`},children:`\xA0`}),e.showDot&&(0,g.jsx)(`div`,{className:`${h.dot} rounded-circle bg-danger`})]})}function y(e){return(0,g.jsx)(`svg`,{...e,children:(0,g.jsx)(`path`,{d:`m11.959 10.641 4.402-4.296a.964.964 0 0 1 1.358 0 .95.95 0 0 1 0 1.35l-4.403 4.297 4.403 4.378a.95.95 0 0 1 0 1.35.964.964 0 0 1-1.358 0l-4.402-4.378-4.32 4.378a.964.964 0 0 1-1.358 0 .95.95 0 0 1 0-1.35l4.32-4.378-4.32-4.362a.95.95 0 0 1 0-1.35.964.964 0 0 1 1.358 0z`,fill:`currentColor`})})}var b={VIDEO_COLLECTION:`(videoCollection)`,SERIES:`tallposter,_rating,banner`,CLASSIFICATION_COLLECTION:`banner,cover,tallPoster,_theme[banner,cover,tallPoster,thumbnail,icon]`,CLASSIFICATION:e=>`banner,cover,tallPoster,thumbnail,_theme[banner,cover,tallPoster,thumbnail,icon],followers{id:${e}},pinnedVideos[count()]{limit:0},playlists[count()]{limit:0},series[count()]{limit:0},tags{tagType:curation}`,VIDEO:`channel,series,season,_rating,producers,glance,distributors[partnerprofiles[_slug,count()]{status:1}],owner,subjectPresentationAudiences,resources[thumbnail,pdf],tags,productionCompanies[partnerprofiles[_slug,count()]{status:1}],directors,links,thumbnail,_canUpdate,_videoProgress,_canBeConsumed,categories[libraries],libraries,_canAddToLibrary,_restrictions,_canDownload,_curationTags,contentLicences,_canCreateChild`,PLAYLIST:`cover,banner,owner,followers[count()]{limit:0}`,PLAYLIST_COLLECTION:`videos[count()]{status:[1,2],limit:0},interactives[count()]{status:[1,2],limit:0},clips[count()]{status:[1,2],limit:0},cover`,CLIP:`(clip)`,CLIP_COLLECTION:`(clipCollection)`,INTERACTIVE:`(interactive)`,INTERACTIVE_COLLECTION:`(interactiveCollection)`,LIBRARY_COLLECTION:`owner[logo]`,LIBRARY:`owner[logo],categorytree`,PARTNER_PROFILE:`company[banner,logo,partnerprofiles[count()]],person[partnerprofiles[count()]],_slug,contentregions,_logo,_banner,_cover,_colour,_videobanner,links`},x={CLASSIFICATION:`banner,cover,tallPoster,_theme[banner,cover,tallPoster,thumbnail,icon],pinnedVideos[count()]{limit:0},playlists[count()]{limit:0},series[count()]{limit:0},tags{tagType:curation}`,CLASSIFICATION_COLLECTION:`banner,cover,tallPoster,_theme[banner,cover,tallPoster,thumbnail,icon]`,VIDEO:`series,season,_rating,producers,glance,distributors[partnerprofiles[_slug,count()]{status:1}],subjectPresentationAudiences,resources[thumbnail,pdf],tags,productionCompanies[partnerprofiles[_slug,count()]{status:1}],directors,links,thumbnail,interactives[thumbnail,_canBeConsumed,_curationTags],clips[_canBeConsumed,_curationTags,_thumbnail],_canBeConsumed,_curationTags,categories,libraries`,VIDEO_COLLECTION:`thumbnail,_rating,series,season,subjectPresentationAudiences,subtitles{limit:1},_canBeConsumed`},S=function(e){return e[e.FilterOut=0]=`FilterOut`,e[e.StripMetadata=1]=`StripMetadata`,e}({});export{v as a,l as c,y as i,c as l,x as n,m as o,b as r,p as s,S as t};
2
+ //# sourceMappingURL=CqVCiInU.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chh-4QFk.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/onboarding/constants/JobTitlePersonaMapping.ts","../../../../libs/shared/src/enums/ObjectStatus.ts","../../../../libs/shared/src/enums/UserRole.ts","../../../../libs/shared/src/utils/UserHelper.ts","../../../../libs/shared/src/enums/PermissionName.ts","../../../../libs/shared/src/components/avatar/avatar.module.scss","../../../../libs/shared/src/components/avatar/Avatar.tsx","../../../../libs/shared/src/images/svg/actions/CloseSvg.tsx","../../../../libs/shared/src/constants/WithStatements.ts","../../../../libs/shared/src/enums/PermissionFilterOption.ts"],"sourcesContent":["import { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\n\nexport type PersonaId = 'teacher' | 'kdm';\n\nexport const JobTitlePersonaMapping: Record<JobTitles, PersonaId> = {\n // K12\n 'Academic Coach': 'teacher',\n 'Assistant Head Teacher': 'kdm',\n 'Consortium Leadership': 'kdm',\n 'Curriculum Coordinator': 'teacher',\n 'Curriculum Leader': 'teacher',\n 'Deputy Head Teacher': 'kdm',\n 'Deputy Principal': 'kdm',\n 'Digital Technology Coordinator': 'teacher',\n 'District Leadership': 'kdm',\n 'e-Learning/ICT Coordinator': 'teacher',\n 'Head of Department': 'teacher',\n 'Head of Faculty': 'teacher',\n 'Head of Key Stage': 'teacher',\n 'Head of Subject': 'teacher',\n 'Head Teacher': 'kdm',\n 'IT': 'kdm',\n 'IT/LRC': 'kdm',\n 'e-Learning Coordinator': 'kdm',\n 'Instructional Technology Specialist': 'teacher',\n 'Librarian / Teacher Librarian': 'teacher',\n 'Principal': 'kdm',\n 'School Leadership': 'kdm',\n 'Subject Lead': 'teacher',\n 'Teacher': 'teacher',\n 'SSO / SLSO': 'teacher',\n 'Assistant Principal': 'kdm',\n 'IT / IT Specialist': 'kdm',\n 'Learning Support': 'teacher',\n 'Learning Assistant': 'teacher',\n 'Educational Assistant (EA)': 'teacher',\n 'Learning Support Teacher / Resource Teacher': 'teacher',\n 'Department Head / Manager': 'teacher',\n 'Curriculum Coordinator / Consultant': 'teacher',\n 'School Counsellor / Guidance Counsellor': 'teacher',\n 'Vice-Principal': 'kdm',\n 'Superintendent': 'kdm',\n 'Director of Education': 'kdm',\n 'Business Manager': 'kdm',\n\n // TODO: This list isn't approved\n // Tertiary\n 'Professor': 'kdm',\n 'Lecturer': 'teacher',\n 'Course Coordinator / Administrator': 'teacher',\n 'Digital Learning Manager': 'teacher',\n 'Tutor': 'teacher',\n 'Teaching Fellow': 'teacher',\n 'Librarian': 'teacher',\n 'Researcher': 'teacher',\n 'Learning Technologist': 'teacher',\n 'Teaching Assistant': 'teacher'\n};\n","// Copied directly from Master API\nexport enum ObjectStatus {\n // The object has been disabled but not deleted\n Disabled = 'Disabled',\n\n // The object is an active object\n Active = 'Active',\n\n // The object has not yet been activated\n Inactive = 'Inactive'\n}\n","export enum OnlineUserRole {\n Unspecified = 0,\n Student = 1,\n Staff = 2,\n Admin = 3,\n CVAdmin = 4,\n FreeUser = 6,\n ReadOnly = 8\n}\n\nexport enum UserRole {\n Guest = 'Guest',\n User = 'User',\n Admin = 'Admin',\n SuperAdmin = 'SuperAdmin'\n}\n","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { JobTitlePersonaMapping, PersonaId } from 'libs/shared/apps/onboarding/constants/JobTitlePersonaMapping';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { User, YearGroup } from 'libs/shared/interfaces';\n\nenum UserGroupNumber {\n Unknown = 0,\n Staff = 1,\n Learner = 2,\n System = 255\n}\n\nenum UserRoleNumber {\n Guest = 16,\n User = 32,\n Admin = 48,\n SuperAdmin = 64\n}\n\nconst RMUNIFY_SSO_DISPLAY_NAME = [ 'rm unify glow', 'glow', 'rm unify' ];\n\nexport const UserHelper = {\n getInitials(firstName: string, lastName: string): string {\n let initials = '';\n\n if (firstName?.length)\n initials = firstName[0];\n\n if (lastName?.length)\n initials += lastName[0];\n\n return initials.toUpperCase();\n },\n\n getInitialsFromFullName(name: string): string {\n const names = name?.split(' ') ?? [];\n \n if (!names.length)\n return '';\n \n const firstName = names[0];\n const lastName = names.length > 1 ? names[1] : '';\n \n return UserHelper.getInitials(firstName, lastName);\n },\n\n getFullName(user: User): string {\n if (!user?.name)\n return '';\n\n return `${user?.name ?? ''} ${user?.surname ?? ''}`.trim();\n },\n\n getCommunityName(user: User): string {\n if (!user?.name)\n return '';\n\n return `${user.name} ${user.surname?.slice(0, 1)}`;\n },\n\n /**\n * Some endpoints return userType as a string and others as a number\n * This function maps userType to the correct string value.\n */\n getUserType(user: User): UserGroup {\n let userType = user.userType;\n\n if (typeof (userType) === 'number') {\n switch (userType) {\n case UserGroupNumber.Unknown:\n userType = UserGroup.Unknown;\n break;\n case UserGroupNumber.Staff:\n userType = UserGroup.Staff;\n break;\n case UserGroupNumber.Learner:\n userType = UserGroup.Learner;\n break;\n case UserGroupNumber.System:\n userType = UserGroup.System;\n break;\n }\n }\n\n return userType;\n },\n\n getUserStatus(user: User): ObjectStatus {\n let status = user.status;\n\n if (typeof status === 'number') {\n switch (status) {\n case 0:\n status = ObjectStatus.Disabled;\n break;\n case 1:\n status = ObjectStatus.Active;\n break;\n case 2:\n status = ObjectStatus.Inactive;\n break;\n }\n }\n \n return status;\n },\n\n getUserStatusFromValue(status: ObjectStatus): ObjectStatus {\n if (typeof status === 'number') {\n switch (status) {\n case 0:\n status = ObjectStatus.Disabled;\n break;\n case 1:\n status = ObjectStatus.Active;\n break;\n case 2:\n status = ObjectStatus.Inactive;\n break;\n }\n }\n \n return status;\n },\n\n getUserRole(user: User): UserRole {\n let role;\n if ('userProfiles' in user && user.userProfiles?.data?.[0]) {\n role = user.userProfiles.data[0].role;\n }\n if ('userProfile' in user && user.userProfile) {\n role = user.userProfile.role;\n }\n\n /**\n * Handles if the user doesn't have a user profile. This may be because\n * the user is no longer in the current user's school.\n */\n if (!role)\n return UserRole.User;\n\n if (typeof (role) === 'number') {\n switch (role) {\n case UserRoleNumber.Guest:\n role = UserRole.Guest;\n break;\n case UserRoleNumber.User:\n role = UserRole.User;\n break;\n case UserRoleNumber.Admin:\n role = UserRole.Admin;\n break;\n case UserRoleNumber.SuperAdmin:\n role = UserRole.SuperAdmin;\n break;\n }\n }\n\n return role;\n },\n\n getUserRoleFromValue(role: number | UserRole): UserRole {\n if (!role && role !== 0)\n return UserRole.User;\n\n if (typeof role === 'number') {\n switch (role) {\n case UserRoleNumber.Guest:\n return UserRole.Guest;\n case UserRoleNumber.User:\n return UserRole.User;\n case UserRoleNumber.Admin:\n return UserRole.Admin;\n case UserRoleNumber.SuperAdmin:\n return UserRole.SuperAdmin;\n default:\n return UserRole.User;\n }\n }\n\n return role;\n },\n\n getDisplayName(user: User): string {\n if (user.metadata?.displayName)\n return user.metadata?.displayName;\n\n return UserHelper.getFullName(user);\n },\n\n /**\n * User API returns the `masterYearGroup` field.\n * Objects / Master API returns the `yearGroups` paginated collection.\n */\n getYearGroup(user: User): YearGroup {\n if (user.masterYearGroup?.id)\n return user.masterYearGroup;\n\n if (user.yearGroups?.data?.length)\n return ArrayHelper.first(user.yearGroups.data);\n\n return null;\n },\n\n hasLegacySso(user: User): boolean {\n if (!user?.authenticationMethods?.length)\n return false;\n\n return user.authenticationMethods.some(am => !am.local && am.isLegacy);\n },\n\n hasNonLegacySso(user: User): boolean {\n if (!user?.authenticationMethods?.length)\n return false;\n\n return user.authenticationMethods.some(am => !am.local && !am.isLegacy);\n },\n\n hasSso(user: User): boolean {\n return UserHelper.hasLegacySso(user) || UserHelper.hasNonLegacySso(user);\n },\n\n hasRmUnifySso(user: User): boolean {\n if (!user?.authenticationMethods?.length)\n return false;\n\n return user.authenticationMethods.some(am => RMUNIFY_SSO_DISPLAY_NAME.includes(am.displayName?.toLowerCase()));\n },\n\n getPersonaFromJobTitle(jobTitle: JobTitles | ''): PersonaId {\n if (!jobTitle)\n return 'teacher';\n\n const lowerCaseMappings: HashObject = {};\n\n for (const key in JobTitlePersonaMapping) {\n if (JobTitlePersonaMapping.hasOwnProperty(key)) {\n lowerCaseMappings[key.toLowerCase()] = JobTitlePersonaMapping[key as keyof typeof JobTitlePersonaMapping];\n }\n }\n\n const persona = lowerCaseMappings[jobTitle.toLowerCase()];\n\n if (!persona)\n return 'teacher';\n\n return persona;\n },\n\n /**\n * @todo Update this to use the currentUser role when available\n */\n isKDM(jobTitle: JobTitles | '') {\n if (!jobTitle)\n return false;\n\n const persona = UserHelper.getPersonaFromJobTitle(jobTitle);\n \n return persona === 'kdm';\n },\n\n getValidYearGroups(yearGroups?: YearGroup[]): YearGroup[] {\n if (!yearGroups)\n return [];\n\n return yearGroups.filter(yearGroup => yearGroup.value !== 0);\n }\n};\n","export type PermissionsLookup = {\n [key in PermissionName]: boolean;\n};\n\nexport type LocalPermissionsLookup = {\n [key in LocalPermissionName]: boolean;\n};\n\nexport type GatedPermission = 'hidden' | 'hard-gate' | 'soft-gate' | 'visible';\n\nexport enum PermissionName {\n // Topics permissions\n ManageSubjectPreferences = 'subjects.preferences.manage',\n FollowSubjects = 'subjects.follow',\n\n // Classrooms permissions\n ViewClassrooms = 'classrooms.view',\n ManageAllClassrooms = 'classrooms.manage.all',\n JoinClassroom = 'classroom.join',\n\n // Share permissions\n ShareToUsers = 'share.direct.users',\n ShareToClassrooms = 'share.direct.classrooms',\n ShareToClassroomGroups = 'share.direct.classroomgroups',\n ShareToOpenClassrooms = 'share.direct.openclassrooms',\n\n CreateClassrooms = 'classrooms.create',\n DeleteClassrooms = 'classrooms.delete',\n\n // Students\n StudentExperience = 'studentexperience',\n\n // Settings permissions\n ManageUsers = 'users.manage',\n ManageIntegrations = 'integrations.manage',\n EditProfileDetails = 'profile.edit',\n ManageCustomerSettings = 'customersettings.manage',\n ManageLocalCache = 'localcache.manage',\n ManageVideoAccess = 'video.access.manage',\n ManageNotificationSettings = 'settings.notification.manage',\n ManagePlaybackSettings = 'playbacksettings.manage',\n\n // Analytics\n ViewSchoolAnalytics = 'analytics.customeranalytics.view',\n ViewAnalytics = 'analytics.view',\n\n // Misc permissions\n ManageShareLinkSettings = 'sharelink.settings.edit',\n ViewProductBoard = 'productboard.view',\n CanSubmitFeedback = 'feedback.submit',\n\n // Trial\n ViewTrialDuration = 'trial.duration.view',\n ViewTrialBanner = 'trial.banner.view',\n ViewTrialUpgrade = 'trial.upgrade.view',\n\n // Invite Colleague\n ViewInviteColleague = 'invitecolleague.view',\n\n // Video\n UploadVideo = 'video.upload',\n FavouriteVideo = 'video.favourite',\n ViewVideoPointsOfInterest = 'video.pointsofinterest.view',\n ViewVideoGlance = 'video.glance.view',\n ViewVideoInteractives = 'video.interactives.view',\n ViewVideoClips = 'video.clips.view',\n\n // Curriculums\n ViewCurriculums = 'curriculums.view',\n ManagePresentations = 'presentations.switch',\n\n // Libraries\n ViewLibraries = 'libraries.view',\n ContributeVideo = 'video.contribute',\n ManageLibraries = 'libraries.manage',\n\n // Onboarding\n ViewOnboarding = 'onboarding.view',\n\n // Exchange\n Exchange = 'exchangetv.manage',\n\n // Rostering\n Rostering = 'rostering.manage',\n\n // Dashboards\n ViewMoviesTv = 'moviestv.view',\n ViewDiscover = 'discover.view',\n\n // Search\n ViewSearch = 'search.view',\n\n // Shares\n ViewMyShares = 'myshares.view',\n CreateShareLink = 'share.link.create',\n\n // Insights\n ViewInsights = 'insights.view',\n \n // Restricted mode\n ViewRestrictedMode = 'restrictedmode.view',\n\n // Guests\n GuestExperience = 'guestexperience',\n\n // Playlists\n CreatePlaylist = 'playlist.create',\n\n // My Videos\n ViewMyVideos = 'myvideos.view',\n\n // Watch History\n ViewWatchHistory = 'watchhistory.view',\n\n // Notifications\n ViewNotifications = 'notifications.view'\n}\n\n// Client-side permission checks currently governed by local data\nexport enum LocalPermissionName {\n ManagePublicPresentation = 'presentation.public.manage',\n ManageDiscoverPreferences = 'discover.preferences.manage',\n\n ViewMyFavouritesLanding = 'myfavourites.landing.view',\n ViewMySharesLanding = 'myshares.landing.view',\n\n WatchVideos = 'video.watch',\n UseVideoActions = 'video.actions',\n UseSeriesActions = 'series.actions',\n ViewVideoResourceItems = 'video.resourceitems.view',\n\n ViewTrendingTopics = 'classifications.trending.view',\n FollowComingSoonTopics = 'classifications.comingsoon.follow'\n}\n",":local {\n .avatar {\n border-radius: 50%;\n background-color: $teal;\n width: 100%;\n height: 100%;\n text-align: center;\n line-height: 100%;\n background-size: cover;\n background-position: top center;\n }\n\n .dot {\n position: absolute;\n top: -0.1rem;\n right: -0.1rem;\n width: 0.8rem;\n height: 0.8rem;\n }\n}","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './avatar.module.scss';\n\nfunction getFallBackImageUrl(imageCdnUrl: string, initials: string): string {\n // SOME users don't have a first or last name. In which case, requesting an avatar for them would error out.\n if (!initials)\n return '';\n\n return ImageHelper.createUrl(\n UrlHelper.safeUrlConcat(imageCdnUrl, `/v1/profile-images?initials=${initials}`),\n { size: ImageSize.Small }\n );\n}\n\ninterface AvatarProps {\n imageCdnUrl: string;\n initials: string;\n imageUrl?: string;\n extraClasses?: string;\n showDot?: boolean;\n anonymiseUsers?: boolean;\n}\n\nexport function Avatar(props: AvatarProps): JSX.Element {\n const imageUrl = !props.anonymiseUsers && props.imageUrl || getFallBackImageUrl(props.imageCdnUrl, props.initials);\n\n return (\n <div className='position-relative h-100 w-100'>\n <div className={`${styles.avatar} ${props?.extraClasses || ''}`} style={{ backgroundImage: `url('${imageUrl}')` }}>\n &nbsp;\n </div>\n\n {props.showDot && <div className={`${styles.dot} rounded-circle bg-danger`} />}\n </div>\n );\n}\n","import React from 'react';\n\nexport function CloseSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='m11.959 10.641 4.402-4.296a.964.964 0 0 1 1.358 0 .95.95 0 0 1 0 1.35l-4.403 4.297 4.403 4.378a.95.95 0 0 1 0 1.35.964.964 0 0 1-1.358 0l-4.402-4.378-4.32 4.378a.964.964 0 0 1-1.358 0 .95.95 0 0 1 0-1.35l4.32-4.378-4.32-4.362a.95.95 0 0 1 0-1.35.964.964 0 0 1 1.358 0z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","export const SharedWithStatements = {\n VIDEO_COLLECTION: '(videoCollection)',\n SERIES: 'tallposter,_rating,banner',\n CLASSIFICATION_COLLECTION: 'banner,cover,tallPoster,_theme[banner,cover,tallPoster,thumbnail,icon]',\n CLASSIFICATION: (userId: string) =>\n `banner,cover,tallPoster,thumbnail,_theme[banner,cover,tallPoster,thumbnail,icon],followers{id:${userId}},pinnedVideos[count()]{limit:0},playlists[count()]{limit:0},series[count()]{limit:0},tags{tagType:curation}`,\n VIDEO: `channel,series,season,_rating,producers,glance,distributors[partnerprofiles[_slug,count()]{status:1}],owner,subjectPresentationAudiences,resources[thumbnail,pdf],tags,productionCompanies[partnerprofiles[_slug,count()]{status:1}],directors,links,thumbnail,_canUpdate,_videoProgress,_canBeConsumed,categories[libraries],libraries,_canAddToLibrary,_restrictions,_canDownload,_curationTags,contentLicences,_canCreateChild`,\n\n PLAYLIST: `cover,banner,owner,followers[count()]{limit:0}`,\n PLAYLIST_COLLECTION: 'videos[count()]{status:[1,2],limit:0},interactives[count()]{status:[1,2],limit:0},clips[count()]{status:[1,2],limit:0},cover',\n CLIP: '(clip)',\n CLIP_COLLECTION: '(clipCollection)',\n INTERACTIVE: '(interactive)',\n INTERACTIVE_COLLECTION: '(interactiveCollection)',\n LIBRARY_COLLECTION: 'owner[logo]',\n LIBRARY: 'owner[logo],categorytree',\n PARTNER_PROFILE:\n 'company[banner,logo,partnerprofiles[count()]],person[partnerprofiles[count()]],_slug,contentregions,_logo,_banner,_cover,_colour,_videobanner,links'\n};\n\nexport const PublicWithStatement = {\n CLASSIFICATION:\n 'banner,cover,tallPoster,_theme[banner,cover,tallPoster,thumbnail,icon],pinnedVideos[count()]{limit:0},playlists[count()]{limit:0},series[count()]{limit:0},tags{tagType:curation}',\n CLASSIFICATION_COLLECTION: 'banner,cover,tallPoster,_theme[banner,cover,tallPoster,thumbnail,icon]',\n VIDEO: `series,season,_rating,producers,glance,distributors[partnerprofiles[_slug,count()]{status:1}],subjectPresentationAudiences,resources[thumbnail,pdf],tags,productionCompanies[partnerprofiles[_slug,count()]{status:1}],directors,links,thumbnail,interactives[thumbnail,_canBeConsumed,_curationTags],clips[_canBeConsumed,_curationTags,_thumbnail],_canBeConsumed,_curationTags,categories,libraries`,\n VIDEO_COLLECTION: 'thumbnail,_rating,series,season,subjectPresentationAudiences,subtitles{limit:1},_canBeConsumed'\n};\n","export enum PermissionFilterOption {\n FilterOut,\n StripMetadata\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CqVCiInU.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/onboarding/constants/JobTitlePersonaMapping.ts","../../../../libs/shared/src/enums/ObjectStatus.ts","../../../../libs/shared/src/enums/UserRole.ts","../../../../libs/shared/src/utils/UserHelper.ts","../../../../libs/shared/src/enums/PermissionName.ts","../../../../libs/shared/src/components/avatar/avatar.module.scss","../../../../libs/shared/src/components/avatar/Avatar.tsx","../../../../libs/shared/src/images/svg/actions/CloseSvg.tsx","../../../../libs/shared/src/constants/WithStatements.ts","../../../../libs/shared/src/enums/PermissionFilterOption.ts"],"sourcesContent":["import { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\n\nexport type PersonaId = 'teacher' | 'kdm';\n\nexport const JobTitlePersonaMapping: Record<JobTitles, PersonaId> = {\n // K12\n 'Academic Coach': 'teacher',\n 'Assistant Head Teacher': 'kdm',\n 'Consortium Leadership': 'kdm',\n 'Curriculum Coordinator': 'teacher',\n 'Curriculum Leader': 'teacher',\n 'Deputy Head Teacher': 'kdm',\n 'Deputy Principal': 'kdm',\n 'Digital Technology Coordinator': 'teacher',\n 'District Leadership': 'kdm',\n 'e-Learning/ICT Coordinator': 'teacher',\n 'Head of Department': 'teacher',\n 'Head of Faculty': 'teacher',\n 'Head of Key Stage': 'teacher',\n 'Head of Subject': 'teacher',\n 'Head Teacher': 'kdm',\n 'IT': 'kdm',\n 'IT/LRC': 'kdm',\n 'e-Learning Coordinator': 'kdm',\n 'Instructional Technology Specialist': 'teacher',\n 'Librarian / Teacher Librarian': 'teacher',\n 'Principal': 'kdm',\n 'School Leadership': 'kdm',\n 'Subject Lead': 'teacher',\n 'Teacher': 'teacher',\n 'SSO / SLSO': 'teacher',\n 'Assistant Principal': 'kdm',\n 'IT / IT Specialist': 'kdm',\n 'Learning Support': 'teacher',\n 'Learning Assistant': 'teacher',\n 'Educational Assistant (EA)': 'teacher',\n 'Learning Support Teacher / Resource Teacher': 'teacher',\n 'Department Head / Manager': 'teacher',\n 'Curriculum Coordinator / Consultant': 'teacher',\n 'School Counsellor / Guidance Counsellor': 'teacher',\n 'Vice-Principal': 'kdm',\n 'Superintendent': 'kdm',\n 'Director of Education': 'kdm',\n 'Business Manager': 'kdm',\n\n // TODO: This list isn't approved\n // Tertiary\n 'Professor': 'kdm',\n 'Lecturer': 'teacher',\n 'Course Coordinator / Administrator': 'teacher',\n 'Digital Learning Manager': 'teacher',\n 'Tutor': 'teacher',\n 'Teaching Fellow': 'teacher',\n 'Librarian': 'teacher',\n 'Researcher': 'teacher',\n 'Learning Technologist': 'teacher',\n 'Teaching Assistant': 'teacher'\n};\n","// Copied directly from Master API\nexport enum ObjectStatus {\n // The object has been disabled but not deleted\n Disabled = 'Disabled',\n\n // The object is an active object\n Active = 'Active',\n\n // The object has not yet been activated\n Inactive = 'Inactive'\n}\n","export enum OnlineUserRole {\n Unspecified = 0,\n Student = 1,\n Staff = 2,\n Admin = 3,\n CVAdmin = 4,\n FreeUser = 6,\n ReadOnly = 8\n}\n\nexport enum UserRole {\n Guest = 'Guest',\n User = 'User',\n Admin = 'Admin',\n SuperAdmin = 'SuperAdmin'\n}\n","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { JobTitlePersonaMapping, PersonaId } from 'libs/shared/apps/onboarding/constants/JobTitlePersonaMapping';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { User, YearGroup } from 'libs/shared/interfaces';\n\nenum UserGroupNumber {\n Unknown = 0,\n Staff = 1,\n Learner = 2,\n System = 255\n}\n\nenum UserRoleNumber {\n Guest = 16,\n User = 32,\n Admin = 48,\n SuperAdmin = 64\n}\n\nconst RMUNIFY_SSO_DISPLAY_NAME = [ 'rm unify glow', 'glow', 'rm unify' ];\n\nexport const UserHelper = {\n getInitials(firstName: string, lastName: string): string {\n let initials = '';\n\n if (firstName?.length)\n initials = firstName[0];\n\n if (lastName?.length)\n initials += lastName[0];\n\n return initials.toUpperCase();\n },\n\n getInitialsFromFullName(name: string): string {\n const names = name?.split(' ') ?? [];\n \n if (!names.length)\n return '';\n \n const firstName = names[0];\n const lastName = names.length > 1 ? names[1] : '';\n \n return UserHelper.getInitials(firstName, lastName);\n },\n\n getFullName(user: User): string {\n if (!user?.name)\n return '';\n\n return `${user?.name ?? ''} ${user?.surname ?? ''}`.trim();\n },\n\n getCommunityName(user: User): string {\n if (!user?.name)\n return '';\n\n return `${user.name} ${user.surname?.slice(0, 1)}`;\n },\n\n /**\n * Some endpoints return userType as a string and others as a number\n * This function maps userType to the correct string value.\n */\n getUserType(user: User): UserGroup {\n let userType = user.userType;\n\n if (typeof (userType) === 'number') {\n switch (userType) {\n case UserGroupNumber.Unknown:\n userType = UserGroup.Unknown;\n break;\n case UserGroupNumber.Staff:\n userType = UserGroup.Staff;\n break;\n case UserGroupNumber.Learner:\n userType = UserGroup.Learner;\n break;\n case UserGroupNumber.System:\n userType = UserGroup.System;\n break;\n }\n }\n\n return userType;\n },\n\n getUserStatus(user: User): ObjectStatus {\n let status = user.status;\n\n if (typeof status === 'number') {\n switch (status) {\n case 0:\n status = ObjectStatus.Disabled;\n break;\n case 1:\n status = ObjectStatus.Active;\n break;\n case 2:\n status = ObjectStatus.Inactive;\n break;\n }\n }\n \n return status;\n },\n\n getUserStatusFromValue(status: ObjectStatus): ObjectStatus {\n if (typeof status === 'number') {\n switch (status) {\n case 0:\n status = ObjectStatus.Disabled;\n break;\n case 1:\n status = ObjectStatus.Active;\n break;\n case 2:\n status = ObjectStatus.Inactive;\n break;\n }\n }\n \n return status;\n },\n\n getUserRole(user: User): UserRole {\n let role;\n if ('userProfiles' in user && user.userProfiles?.data?.[0]) {\n role = user.userProfiles.data[0].role;\n }\n if ('userProfile' in user && user.userProfile) {\n role = user.userProfile.role;\n }\n\n /**\n * Handles if the user doesn't have a user profile. This may be because\n * the user is no longer in the current user's school.\n */\n if (!role)\n return UserRole.User;\n\n if (typeof (role) === 'number') {\n switch (role) {\n case UserRoleNumber.Guest:\n role = UserRole.Guest;\n break;\n case UserRoleNumber.User:\n role = UserRole.User;\n break;\n case UserRoleNumber.Admin:\n role = UserRole.Admin;\n break;\n case UserRoleNumber.SuperAdmin:\n role = UserRole.SuperAdmin;\n break;\n }\n }\n\n return role;\n },\n\n getUserRoleFromValue(role: number | UserRole): UserRole {\n if (!role && role !== 0)\n return UserRole.User;\n\n if (typeof role === 'number') {\n switch (role) {\n case UserRoleNumber.Guest:\n return UserRole.Guest;\n case UserRoleNumber.User:\n return UserRole.User;\n case UserRoleNumber.Admin:\n return UserRole.Admin;\n case UserRoleNumber.SuperAdmin:\n return UserRole.SuperAdmin;\n default:\n return UserRole.User;\n }\n }\n\n return role;\n },\n\n getDisplayName(user: User): string {\n if (user.metadata?.displayName)\n return user.metadata?.displayName;\n\n return UserHelper.getFullName(user);\n },\n\n /**\n * User API returns the `masterYearGroup` field.\n * Objects / Master API returns the `yearGroups` paginated collection.\n */\n getYearGroup(user: User): YearGroup {\n if (user.masterYearGroup?.id)\n return user.masterYearGroup;\n\n if (user.yearGroups?.data?.length)\n return ArrayHelper.first(user.yearGroups.data);\n\n return null;\n },\n\n hasLegacySso(user: User): boolean {\n if (!user?.authenticationMethods?.length)\n return false;\n\n return user.authenticationMethods.some(am => !am.local && am.isLegacy);\n },\n\n hasNonLegacySso(user: User): boolean {\n if (!user?.authenticationMethods?.length)\n return false;\n\n return user.authenticationMethods.some(am => !am.local && !am.isLegacy);\n },\n\n hasSso(user: User): boolean {\n return UserHelper.hasLegacySso(user) || UserHelper.hasNonLegacySso(user);\n },\n\n hasRmUnifySso(user: User): boolean {\n if (!user?.authenticationMethods?.length)\n return false;\n\n return user.authenticationMethods.some(am => RMUNIFY_SSO_DISPLAY_NAME.includes(am.displayName?.toLowerCase()));\n },\n\n getPersonaFromJobTitle(jobTitle: JobTitles | ''): PersonaId {\n if (!jobTitle)\n return 'teacher';\n\n const lowerCaseMappings: HashObject = {};\n\n for (const key in JobTitlePersonaMapping) {\n if (JobTitlePersonaMapping.hasOwnProperty(key)) {\n lowerCaseMappings[key.toLowerCase()] = JobTitlePersonaMapping[key as keyof typeof JobTitlePersonaMapping];\n }\n }\n\n const persona = lowerCaseMappings[jobTitle.toLowerCase()];\n\n if (!persona)\n return 'teacher';\n\n return persona;\n },\n\n /**\n * @todo Update this to use the currentUser role when available\n */\n isKDM(jobTitle: JobTitles | '') {\n if (!jobTitle)\n return false;\n\n const persona = UserHelper.getPersonaFromJobTitle(jobTitle);\n \n return persona === 'kdm';\n },\n\n getValidYearGroups(yearGroups?: YearGroup[]): YearGroup[] {\n if (!yearGroups)\n return [];\n\n return yearGroups.filter(yearGroup => yearGroup.value !== 0);\n }\n};\n","export type PermissionsLookup = {\n [key in PermissionName]: boolean;\n};\n\nexport type LocalPermissionsLookup = {\n [key in LocalPermissionName]: boolean;\n};\n\nexport type GatedPermission = 'hidden' | 'hard-gate' | 'soft-gate' | 'visible';\n\nexport enum PermissionName {\n // Topics permissions\n ManageSubjectPreferences = 'subjects.preferences.manage',\n FollowSubjects = 'subjects.follow',\n\n // Classrooms permissions\n ViewClassrooms = 'classrooms.view',\n ManageAllClassrooms = 'classrooms.manage.all',\n JoinClassroom = 'classroom.join',\n\n // Share permissions\n ShareToUsers = 'share.direct.users',\n ShareToClassrooms = 'share.direct.classrooms',\n ShareToClassroomGroups = 'share.direct.classroomgroups',\n ShareToOpenClassrooms = 'share.direct.openclassrooms',\n\n CreateClassrooms = 'classrooms.create',\n DeleteClassrooms = 'classrooms.delete',\n\n // Students\n StudentExperience = 'studentexperience',\n\n // Settings permissions\n ManageUsers = 'users.manage',\n ManageIntegrations = 'integrations.manage',\n EditProfileDetails = 'profile.edit',\n ManageCustomerSettings = 'customersettings.manage',\n ManageLocalCache = 'localcache.manage',\n ManageVideoAccess = 'video.access.manage',\n ManageNotificationSettings = 'settings.notification.manage',\n ManagePlaybackSettings = 'playbacksettings.manage',\n\n // Analytics\n ViewSchoolAnalytics = 'analytics.customeranalytics.view',\n ViewAnalytics = 'analytics.view',\n\n // Misc permissions\n ManageShareLinkSettings = 'sharelink.settings.edit',\n ViewProductBoard = 'productboard.view',\n CanSubmitFeedback = 'feedback.submit',\n\n // Trial\n ViewTrialUpgrade = 'trial.upgrade.view',\n\n // Invite Colleague\n ViewInviteColleague = 'invitecolleague.view',\n\n // Video\n UploadVideo = 'video.upload',\n FavouriteVideo = 'video.favourite',\n ViewVideoPointsOfInterest = 'video.pointsofinterest.view',\n ViewVideoGlance = 'video.glance.view',\n ViewVideoInteractives = 'video.interactives.view',\n ViewVideoClips = 'video.clips.view',\n\n // Curriculums\n ViewCurriculums = 'curriculums.view',\n ManagePresentations = 'presentations.switch',\n\n // Libraries\n ViewLibraries = 'libraries.view',\n ContributeVideo = 'video.contribute',\n ManageLibraries = 'libraries.manage',\n\n // Onboarding\n ViewOnboarding = 'onboarding.view',\n\n // Exchange\n Exchange = 'exchangetv.manage',\n\n // Rostering\n Rostering = 'rostering.manage',\n\n // Dashboards\n ViewMoviesTv = 'moviestv.view',\n ViewDiscover = 'discover.view',\n\n // Search\n ViewSearch = 'search.view',\n\n // Shares\n ViewMyShares = 'myshares.view',\n CreateShareLink = 'share.link.create',\n\n // Insights\n ViewInsights = 'insights.view',\n \n // Restricted mode\n ViewRestrictedMode = 'restrictedmode.view',\n\n // Guests\n GuestExperience = 'guestexperience',\n\n // Playlists\n CreatePlaylist = 'playlist.create',\n\n // My Videos\n ViewMyVideos = 'myvideos.view',\n\n // Watch History\n ViewWatchHistory = 'watchhistory.view',\n\n // Notifications\n ViewNotifications = 'notifications.view'\n}\n\n// Client-side permission checks currently governed by local data\nexport enum LocalPermissionName {\n ManagePublicPresentation = 'presentation.public.manage',\n ManageDiscoverPreferences = 'discover.preferences.manage',\n\n ViewMyFavouritesLanding = 'myfavourites.landing.view',\n ViewMySharesLanding = 'myshares.landing.view',\n\n WatchVideos = 'video.watch',\n UseVideoActions = 'video.actions',\n UseSeriesActions = 'series.actions',\n ViewVideoResourceItems = 'video.resourceitems.view',\n\n ViewTrendingTopics = 'classifications.trending.view',\n FollowComingSoonTopics = 'classifications.comingsoon.follow'\n}\n",":local {\n .avatar {\n border-radius: 50%;\n background-color: $teal;\n width: 100%;\n height: 100%;\n text-align: center;\n line-height: 100%;\n background-size: cover;\n background-position: top center;\n }\n\n .dot {\n position: absolute;\n top: -0.1rem;\n right: -0.1rem;\n width: 0.8rem;\n height: 0.8rem;\n }\n}","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './avatar.module.scss';\n\nfunction getFallBackImageUrl(imageCdnUrl: string, initials: string): string {\n // SOME users don't have a first or last name. In which case, requesting an avatar for them would error out.\n if (!initials)\n return '';\n\n return ImageHelper.createUrl(\n UrlHelper.safeUrlConcat(imageCdnUrl, `/v1/profile-images?initials=${initials}`),\n { size: ImageSize.Small }\n );\n}\n\ninterface AvatarProps {\n imageCdnUrl: string;\n initials: string;\n imageUrl?: string;\n extraClasses?: string;\n showDot?: boolean;\n anonymiseUsers?: boolean;\n}\n\nexport function Avatar(props: AvatarProps): JSX.Element {\n const imageUrl = !props.anonymiseUsers && props.imageUrl || getFallBackImageUrl(props.imageCdnUrl, props.initials);\n\n return (\n <div className='position-relative h-100 w-100'>\n <div className={`${styles.avatar} ${props?.extraClasses || ''}`} style={{ backgroundImage: `url('${imageUrl}')` }}>\n &nbsp;\n </div>\n\n {props.showDot && <div className={`${styles.dot} rounded-circle bg-danger`} />}\n </div>\n );\n}\n","import React from 'react';\n\nexport function CloseSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='m11.959 10.641 4.402-4.296a.964.964 0 0 1 1.358 0 .95.95 0 0 1 0 1.35l-4.403 4.297 4.403 4.378a.95.95 0 0 1 0 1.35.964.964 0 0 1-1.358 0l-4.402-4.378-4.32 4.378a.964.964 0 0 1-1.358 0 .95.95 0 0 1 0-1.35l4.32-4.378-4.32-4.362a.95.95 0 0 1 0-1.35.964.964 0 0 1 1.358 0z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","export const SharedWithStatements = {\n VIDEO_COLLECTION: '(videoCollection)',\n SERIES: 'tallposter,_rating,banner',\n CLASSIFICATION_COLLECTION: 'banner,cover,tallPoster,_theme[banner,cover,tallPoster,thumbnail,icon]',\n CLASSIFICATION: (userId: string) =>\n `banner,cover,tallPoster,thumbnail,_theme[banner,cover,tallPoster,thumbnail,icon],followers{id:${userId}},pinnedVideos[count()]{limit:0},playlists[count()]{limit:0},series[count()]{limit:0},tags{tagType:curation}`,\n VIDEO: `channel,series,season,_rating,producers,glance,distributors[partnerprofiles[_slug,count()]{status:1}],owner,subjectPresentationAudiences,resources[thumbnail,pdf],tags,productionCompanies[partnerprofiles[_slug,count()]{status:1}],directors,links,thumbnail,_canUpdate,_videoProgress,_canBeConsumed,categories[libraries],libraries,_canAddToLibrary,_restrictions,_canDownload,_curationTags,contentLicences,_canCreateChild`,\n\n PLAYLIST: `cover,banner,owner,followers[count()]{limit:0}`,\n PLAYLIST_COLLECTION: 'videos[count()]{status:[1,2],limit:0},interactives[count()]{status:[1,2],limit:0},clips[count()]{status:[1,2],limit:0},cover',\n CLIP: '(clip)',\n CLIP_COLLECTION: '(clipCollection)',\n INTERACTIVE: '(interactive)',\n INTERACTIVE_COLLECTION: '(interactiveCollection)',\n LIBRARY_COLLECTION: 'owner[logo]',\n LIBRARY: 'owner[logo],categorytree',\n PARTNER_PROFILE:\n 'company[banner,logo,partnerprofiles[count()]],person[partnerprofiles[count()]],_slug,contentregions,_logo,_banner,_cover,_colour,_videobanner,links'\n};\n\nexport const PublicWithStatement = {\n CLASSIFICATION:\n 'banner,cover,tallPoster,_theme[banner,cover,tallPoster,thumbnail,icon],pinnedVideos[count()]{limit:0},playlists[count()]{limit:0},series[count()]{limit:0},tags{tagType:curation}',\n CLASSIFICATION_COLLECTION: 'banner,cover,tallPoster,_theme[banner,cover,tallPoster,thumbnail,icon]',\n VIDEO: `series,season,_rating,producers,glance,distributors[partnerprofiles[_slug,count()]{status:1}],subjectPresentationAudiences,resources[thumbnail,pdf],tags,productionCompanies[partnerprofiles[_slug,count()]{status:1}],directors,links,thumbnail,interactives[thumbnail,_canBeConsumed,_curationTags],clips[_canBeConsumed,_curationTags,_thumbnail],_canBeConsumed,_curationTags,categories,libraries`,\n VIDEO_COLLECTION: 'thumbnail,_rating,series,season,subjectPresentationAudiences,subtitles{limit:1},_canBeConsumed'\n};\n","export enum PermissionFilterOption {\n FilterOut,\n StripMetadata\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{t as n}from"./DmGbjBUG.chunk.js";import{t as r}from"./Du_kaCuU.chunk.js";import{F as i}from"./app-cakVQEAF.js";t();var a={container:`_container_nowrk_1`,subContainer:`_subContainer_nowrk_7`},o=e();function s(e){return n({title:e.error?.heading}),e.error?(0,o.jsx)(`div`,{style:{height:`85vh`},children:(0,o.jsx)(`div`,{style:{backgroundImage:`url(${e.imageUrl})`},className:a.container,children:(0,o.jsxs)(r,{className:a.subContainer,children:[(0,o.jsx)(r.Heading,{children:e.error.heading}),(0,o.jsx)(r.Info,{className:`w-33 mb-4`,children:e.error.description}),e.error.cta!==!1&&(0,o.jsx)(r.Cta,{text:e.error.cta.text,className:`btn btn-dark ${e.error.description?`mt-n2`:``}`,href:e.error.cta.url,icon:i,openInNewTab:!0})]})})}):(0,o.jsx)(o.Fragment,{})}export{s as NoClassroomsErrorView};
2
- //# sourceMappingURL=D4_Ou9e_.chunk.js.map
1
+ import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{t as n}from"./DmGbjBUG.chunk.js";import{t as r}from"./Du_kaCuU.chunk.js";import{F as i}from"./app-BeoBow2q.js";t();var a={container:`_container_nowrk_1`,subContainer:`_subContainer_nowrk_7`},o=e();function s(e){return n({title:e.error?.heading}),e.error?(0,o.jsx)(`div`,{style:{height:`85vh`},children:(0,o.jsx)(`div`,{style:{backgroundImage:`url(${e.imageUrl})`},className:a.container,children:(0,o.jsxs)(r,{className:a.subContainer,children:[(0,o.jsx)(r.Heading,{children:e.error.heading}),(0,o.jsx)(r.Info,{className:`w-33 mb-4`,children:e.error.description}),e.error.cta!==!1&&(0,o.jsx)(r.Cta,{text:e.error.cta.text,className:`btn btn-dark ${e.error.description?`mt-n2`:``}`,href:e.error.cta.url,icon:i,openInNewTab:!0})]})})}):(0,o.jsx)(o.Fragment,{})}export{s as NoClassroomsErrorView};
2
+ //# sourceMappingURL=DFxl2xgU.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"D4_Ou9e_.chunk.js","names":[],"sources":["../../src/apps/default/views/no-classrooms-error/no-classrooms-error.module.scss","../../src/apps/default/views/no-classrooms-error/NoClassroomsErrorView.tsx"],"sourcesContent":[":local {\n .container {\n height: 100%;\n background-size: 100%;\n background-repeat: no-repeat;\n position: relative;\n }\n \n .subContainer {\n position: absolute;\n top: 40%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n }\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\n\nimport styles from './no-classrooms-error.module.scss';\n\ninterface NoClassroomsErrorViewProps {\n error: ErrorPageError;\n imageUrl?: string;\n}\n\nexport function NoClassroomsErrorView(props: NoClassroomsErrorViewProps): React.ReactElement {\n useSetPageMetadata({ title: props.error?.heading });\n\n if (!props.error)\n return <></>;\n\n return (\n <div style={{ height: '85vh' }}>\n <div style={{ backgroundImage: `url(${props.imageUrl})` }} className={styles.container}>\n <EmptyState className={styles.subContainer}>\n <EmptyState.Heading>{props.error.heading}</EmptyState.Heading>\n\n <EmptyState.Info className='w-33 mb-4'>{props.error.description}</EmptyState.Info>\n\n {props.error.cta !== false &&\n <EmptyState.Cta\n text={props.error.cta.text}\n className={`btn btn-dark ${props.error.description ? 'mt-n2' : ''}`}\n href={props.error.cta.url}\n icon={NewWindowSvg}\n openInNewTab\n />\n }\n </EmptyState>\n </div>\n </div>\n );\n}\n"],"mappings":"4PCcA,SAAgB,EAAsB,EAAuD,CAM3F,OALA,EAAmB,CAAE,MAAO,EAAM,OAAO,QAAS,CAAC,CAE9C,EAAM,OAIT,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,OAAQ,OAAQ,WAC5B,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,gBAAiB,OAAO,EAAM,SAAS,GAAI,CAAE,UAAW,EAAO,oBAC3E,EAAA,EAAA,MAAC,EAAD,CAAY,UAAW,EAAO,sBAA9B,EACE,EAAA,EAAA,KAAC,EAAW,QAAZ,CAAA,SAAqB,EAAM,MAAM,QAA6B,CAAA,EAE9D,EAAA,EAAA,KAAC,EAAW,KAAZ,CAAiB,UAAU,qBAAa,EAAM,MAAM,YAA8B,CAAA,CAEjF,EAAM,MAAM,MAAQ,KACnB,EAAA,EAAA,KAAC,EAAW,IAAZ,CACE,KAAM,EAAM,MAAM,IAAI,KACtB,UAAW,gBAAgB,EAAM,MAAM,YAAc,QAAU,KAC/D,KAAM,EAAM,MAAM,IAAI,IACtB,KAAM,EACN,aAAA,GACA,CAAA,IAGF,CAAA,CACF,CAAA,EArBC,EAAA,EAAA,KAAA,EAAA,SAAA,EAAK,CAAA"}
1
+ {"version":3,"file":"DFxl2xgU.chunk.js","names":[],"sources":["../../src/apps/default/views/no-classrooms-error/no-classrooms-error.module.scss","../../src/apps/default/views/no-classrooms-error/NoClassroomsErrorView.tsx"],"sourcesContent":[":local {\n .container {\n height: 100%;\n background-size: 100%;\n background-repeat: no-repeat;\n position: relative;\n }\n \n .subContainer {\n position: absolute;\n top: 40%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n }\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\n\nimport styles from './no-classrooms-error.module.scss';\n\ninterface NoClassroomsErrorViewProps {\n error: ErrorPageError;\n imageUrl?: string;\n}\n\nexport function NoClassroomsErrorView(props: NoClassroomsErrorViewProps): React.ReactElement {\n useSetPageMetadata({ title: props.error?.heading });\n\n if (!props.error)\n return <></>;\n\n return (\n <div style={{ height: '85vh' }}>\n <div style={{ backgroundImage: `url(${props.imageUrl})` }} className={styles.container}>\n <EmptyState className={styles.subContainer}>\n <EmptyState.Heading>{props.error.heading}</EmptyState.Heading>\n\n <EmptyState.Info className='w-33 mb-4'>{props.error.description}</EmptyState.Info>\n\n {props.error.cta !== false &&\n <EmptyState.Cta\n text={props.error.cta.text}\n className={`btn btn-dark ${props.error.description ? 'mt-n2' : ''}`}\n href={props.error.cta.url}\n icon={NewWindowSvg}\n openInNewTab\n />\n }\n </EmptyState>\n </div>\n </div>\n );\n}\n"],"mappings":"4PCcA,SAAgB,EAAsB,EAAuD,CAM3F,OALA,EAAmB,CAAE,MAAO,EAAM,OAAO,QAAS,CAAC,CAE9C,EAAM,OAIT,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,OAAQ,OAAQ,WAC5B,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,gBAAiB,OAAO,EAAM,SAAS,GAAI,CAAE,UAAW,EAAO,oBAC3E,EAAA,EAAA,MAAC,EAAD,CAAY,UAAW,EAAO,sBAA9B,EACE,EAAA,EAAA,KAAC,EAAW,QAAZ,CAAA,SAAqB,EAAM,MAAM,QAA6B,CAAA,EAE9D,EAAA,EAAA,KAAC,EAAW,KAAZ,CAAiB,UAAU,qBAAa,EAAM,MAAM,YAA8B,CAAA,CAEjF,EAAM,MAAM,MAAQ,KACnB,EAAA,EAAA,KAAC,EAAW,IAAZ,CACE,KAAM,EAAM,MAAM,IAAI,KACtB,UAAW,gBAAgB,EAAM,MAAM,YAAc,QAAU,KAC/D,KAAM,EAAM,MAAM,IAAI,IACtB,KAAM,EACN,aAAA,GACA,CAAA,IAGF,CAAA,CACF,CAAA,EArBC,EAAA,EAAA,KAAA,EAAA,SAAA,EAAK,CAAA"}
@@ -1,2 +1,2 @@
1
- import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{f as n}from"./DcKDIHY92.chunk.js";t();var r=e();function i(e){return(0,r.jsx)(`svg`,{...e,children:(0,r.jsx)(`path`,{fill:`currentColor`,d:n})})}export{i as t};
2
- //# sourceMappingURL=CPw6bsFu2.chunk.js.map
1
+ import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{f as n}from"./CkS0imTk2.chunk.js";t();var r=e();function i(e){return(0,r.jsx)(`svg`,{...e,children:(0,r.jsx)(`path`,{fill:`currentColor`,d:n})})}export{i as t};
2
+ //# sourceMappingURL=DK50VHUW2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CPw6bsFu2.chunk.js","names":[],"sources":["../../../../libs/shared/src/images/svg/objects/CogSvg.tsx"],"sourcesContent":["import React from 'react';\n\nimport { COG_SVG_PATH } from './CogSvgPath';\n\nexport function CogSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path fill='currentColor' d={COG_SVG_PATH} />\n </svg>\n );\n}\n"],"mappings":"uGAIA,SAAgB,EAAO,EAAsC,CAC3D,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,GAAI,YACP,EAAA,EAAA,KAAC,OAAD,CAAM,KAAK,eAAe,EAAG,EAAgB,CAAA,CACzC,CAAA"}
1
+ {"version":3,"file":"DK50VHUW2.chunk.js","names":[],"sources":["../../../../libs/shared/src/images/svg/objects/CogSvg.tsx"],"sourcesContent":["import React from 'react';\n\nimport { COG_SVG_PATH } from './CogSvgPath';\n\nexport function CogSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path fill='currentColor' d={COG_SVG_PATH} />\n </svg>\n );\n}\n"],"mappings":"uGAIA,SAAgB,EAAO,EAAsC,CAC3D,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,GAAI,YACP,EAAA,EAAA,KAAC,OAAD,CAAM,KAAK,eAAe,EAAG,EAAgB,CAAA,CACzC,CAAA"}