@clickview/reports 0.90.0-rc.4 → 0.90.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/.vite/manifest.json +210 -210
  2. package/dist/bundles.json +1 -1
  3. package/dist/en.json +1 -1
  4. package/dist/scripts/{med1nnv82.chunk.js → B2NaDejJ2.chunk.js} +2 -2
  5. package/dist/scripts/{med1nnv82.chunk.js.map → B2NaDejJ2.chunk.js.map} +1 -1
  6. package/dist/scripts/{DATsYYMP.chunk.js → B7UvjDWk.chunk.js} +2 -2
  7. package/dist/scripts/{DATsYYMP.chunk.js.map → B7UvjDWk.chunk.js.map} +1 -1
  8. package/dist/scripts/{CGYMpd9x2.chunk.js → BBC0heb12.chunk.js} +2 -2
  9. package/dist/scripts/{CGYMpd9x2.chunk.js.map → BBC0heb12.chunk.js.map} +1 -1
  10. package/dist/scripts/{BcjF3S7y.chunk.js → BBromGRt.chunk.js} +2 -2
  11. package/dist/scripts/{BcjF3S7y.chunk.js.map → BBromGRt.chunk.js.map} +1 -1
  12. package/dist/scripts/{CEM-Xsc32.chunk.js → BM1rCX722.chunk.js} +2 -2
  13. package/dist/scripts/{CEM-Xsc32.chunk.js.map → BM1rCX722.chunk.js.map} +1 -1
  14. package/dist/scripts/{D63nJT6V.chunk.js → BT26h7xG.chunk.js} +2 -2
  15. package/dist/scripts/{D63nJT6V.chunk.js.map → BT26h7xG.chunk.js.map} +1 -1
  16. package/dist/scripts/{B9syewbL.chunk.js → BhnToJrk.chunk.js} +2 -2
  17. package/dist/scripts/{B9syewbL.chunk.js.map → BhnToJrk.chunk.js.map} +1 -1
  18. package/dist/scripts/{CXyHtApp2.chunk.js → Bq-KpJWX2.chunk.js} +2 -2
  19. package/dist/scripts/{CXyHtApp2.chunk.js.map → Bq-KpJWX2.chunk.js.map} +1 -1
  20. package/dist/scripts/{C_gBUP2y2.chunk.js → Bzfy_cw32.chunk.js} +2 -2
  21. package/dist/scripts/{C_gBUP2y2.chunk.js.map → Bzfy_cw32.chunk.js.map} +1 -1
  22. package/dist/scripts/{DGuSwgQf2.chunk.js → C3yKN7vY2.chunk.js} +2 -2
  23. package/dist/scripts/{DGuSwgQf2.chunk.js.map → C3yKN7vY2.chunk.js.map} +1 -1
  24. package/dist/scripts/{DqX2L2fn2.chunk.js → CEL9EOPh2.chunk.js} +2 -2
  25. package/dist/scripts/{DqX2L2fn2.chunk.js.map → CEL9EOPh2.chunk.js.map} +1 -1
  26. package/dist/scripts/{BHwx99h9.chunk.js → COeneeRO.chunk.js} +2 -2
  27. package/dist/scripts/{BHwx99h9.chunk.js.map → COeneeRO.chunk.js.map} +1 -1
  28. package/dist/scripts/{C5nG9HKq2.chunk.js → CiMD5u2s2.chunk.js} +2 -2
  29. package/dist/scripts/{C5nG9HKq2.chunk.js.map → CiMD5u2s2.chunk.js.map} +1 -1
  30. package/dist/scripts/{q1iKm4P4.chunk.js → Coxg-CDT.chunk.js} +2 -2
  31. package/dist/scripts/{q1iKm4P4.chunk.js.map → Coxg-CDT.chunk.js.map} +1 -1
  32. package/dist/scripts/{DKgzSSZ12.chunk.js → D5JcKzGf2.chunk.js} +2 -2
  33. package/dist/scripts/{DKgzSSZ12.chunk.js.map → D5JcKzGf2.chunk.js.map} +1 -1
  34. package/dist/scripts/{DBpZNnAI2.chunk.js → DDXdEuUF2.chunk.js} +2 -2
  35. package/dist/scripts/{DBpZNnAI2.chunk.js.map → DDXdEuUF2.chunk.js.map} +1 -1
  36. package/dist/scripts/{C_nTmCTH2.chunk.js → DLWxPapJ2.chunk.js} +2 -2
  37. package/dist/scripts/{C_nTmCTH2.chunk.js.map → DLWxPapJ2.chunk.js.map} +1 -1
  38. package/dist/scripts/{CeSe3AP62.chunk.js → Da6u6D2M2.chunk.js} +3 -3
  39. package/dist/scripts/{CeSe3AP62.chunk.js.map → Da6u6D2M2.chunk.js.map} +1 -1
  40. package/dist/scripts/{CWVwHN-C2.chunk.js → DhSEOAnJ2.chunk.js} +2 -2
  41. package/dist/scripts/{CWVwHN-C2.chunk.js.map → DhSEOAnJ2.chunk.js.map} +1 -1
  42. package/dist/scripts/{Cv7tjWWS.chunk.js → IG-rboYg.chunk.js} +2 -2
  43. package/dist/scripts/{Cv7tjWWS.chunk.js.map → IG-rboYg.chunk.js.map} +1 -1
  44. package/dist/scripts/{CDx9_B5h2.chunk.js → KkZBQL3G2.chunk.js} +2 -2
  45. package/dist/scripts/{CDx9_B5h2.chunk.js.map → KkZBQL3G2.chunk.js.map} +1 -1
  46. package/dist/scripts/{CCdxPE8F.chunk.js → TJTvGoAZ.chunk.js} +2 -2
  47. package/dist/scripts/{CCdxPE8F.chunk.js.map → TJTvGoAZ.chunk.js.map} +1 -1
  48. package/dist/scripts/{app-F8o5al1q.js → app-DW-nP8r1.js} +3 -3
  49. package/dist/scripts/{app-F8o5al1q.js.map → app-DW-nP8r1.js.map} +1 -1
  50. package/dist/scripts/{DJpo4rMq2.chunk.js → i1FSKHH62.chunk.js} +2 -2
  51. package/dist/scripts/{DJpo4rMq2.chunk.js.map → i1FSKHH62.chunk.js.map} +1 -1
  52. package/dist/scripts/{B_QHbZ3D2.chunk.js → niZatQNI2.chunk.js} +2 -2
  53. package/dist/scripts/{B_QHbZ3D2.chunk.js.map → niZatQNI2.chunk.js.map} +1 -1
  54. package/dist/scripts/{BDLgF915.chunk.js → nup2thXk.chunk.js} +2 -2
  55. package/dist/scripts/{BDLgF915.chunk.js.map → nup2thXk.chunk.js.map} +1 -1
  56. package/dist/scripts/{r68VJd6w.chunk.js → qhfEmD0O.chunk.js} +2 -2
  57. package/dist/scripts/{r68VJd6w.chunk.js.map → qhfEmD0O.chunk.js.map} +1 -1
  58. package/dist/scripts/{J0H9O8cX.chunk.js → t8ONdKoR.chunk.js} +2 -2
  59. package/dist/scripts/{J0H9O8cX.chunk.js.map → t8ONdKoR.chunk.js.map} +1 -1
  60. package/dist/scripts/{CLDXLTBe.chunk.js → v01tmPE-.chunk.js} +2 -2
  61. package/dist/scripts/{CLDXLTBe.chunk.js.map → v01tmPE-.chunk.js.map} +1 -1
  62. package/dist/scripts/{DHz5C_j8.chunk.js → xV42YE03.chunk.js} +2 -2
  63. package/dist/scripts/{DHz5C_j8.chunk.js.map → xV42YE03.chunk.js.map} +1 -1
  64. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import{Dr as e,M as t,N as n,Qt as r,at as i}from"./CrTgNROp.chunk.js";import{r as a,v as o,y as s}from"./CxNc1BDX.chunk.js";import{t as c}from"./BIVEB8w0.chunk.js";import{Tt as l,V as u,i as d,kt as f,wt as p}from"./app-F8o5al1q.js";import{c as m,s as h}from"./DATsYYMP.chunk.js";var g=e(i()),_={pillTabSelector:`_pillTabSelector_a6f6x_1`,tab:`_tab_a6f6x_4`,minWidth:`_minWidth_a6f6x_21`,radiusSmall:`_radiusSmall_a6f6x_24`,tabLink:`_tabLink_a6f6x_35`},v=n();function y(e){return typeof e.tab.count==`number`?e.badgeType===m.RoundCount?(0,v.jsx)(`div`,{className:`ps-2`,children:(0,v.jsx)(h,{type:e.badgeType,data:e.tab.count,className:e.className})}):(0,v.jsx)(`div`,{className:`ps-2`,children:(0,v.jsx)(h,{type:m.Count,data:e.tab.count,className:e.className})}):(0,v.jsx)(v.Fragment,{})}function b(e){return(0,v.jsxs)(v.Fragment,{children:[!!e.tab.svg&&(0,v.jsx)(`div`,{className:e.tab.name?`pe-1`:``,children:(0,v.jsx)(a,{svg:e.tab.svg,size:e.tab.svgSize})}),e.formatDisplayText?.(e.tab.name)??e.tab.name,(0,v.jsx)(y,{tab:e.tab,badgeType:e.badgeType,className:e.badgeClassName})]})}function x(e){let{borderRadius:n=`lg`}=e,i=u();function a(e){e.analyticsData&&e.analyticsOptions&&t.logUserAction(e.analyticsData,e.analyticsOptions)}function c(e){e.active||!e.onSelect||(e.onSelect(),a(e))}function l(t){let n=t.target.value,i=e.tabs.find(e=>e.name===n);!i||i.active||(a(i),r.trigger(i.appLink))}let d=e.tabs.find(e=>e.active),f=e.forceSmallScreenDropdown||e.enableSmallScreenSupport&&(i.sm||i.xs);return(0,v.jsxs)(`nav`,{className:e.className??``,children:[f&&(0,v.jsx)(`select`,{className:`form-select`,onChange:l,value:d?.name,style:{minWidth:`150px`},children:e.tabs.map((t,n)=>t.hide?(0,v.jsx)(g.Fragment,{},n):(0,v.jsx)(`option`,{value:t.name,children:e.formatDisplayText?.(t.name)??t.name},n))}),!f&&(0,v.jsx)(`ul`,{className:`
1
+ import{Dr as e,M as t,N as n,Qt as r,at as i}from"./CrTgNROp.chunk.js";import{r as a,v as o,y as s}from"./CxNc1BDX.chunk.js";import{t as c}from"./BIVEB8w0.chunk.js";import{Tt as l,V as u,i as d,kt as f,wt as p}from"./app-DW-nP8r1.js";import{c as m,s as h}from"./B7UvjDWk.chunk.js";var g=e(i()),_={pillTabSelector:`_pillTabSelector_a6f6x_1`,tab:`_tab_a6f6x_4`,minWidth:`_minWidth_a6f6x_21`,radiusSmall:`_radiusSmall_a6f6x_24`,tabLink:`_tabLink_a6f6x_35`},v=n();function y(e){return typeof e.tab.count==`number`?e.badgeType===m.RoundCount?(0,v.jsx)(`div`,{className:`ps-2`,children:(0,v.jsx)(h,{type:e.badgeType,data:e.tab.count,className:e.className})}):(0,v.jsx)(`div`,{className:`ps-2`,children:(0,v.jsx)(h,{type:m.Count,data:e.tab.count,className:e.className})}):(0,v.jsx)(v.Fragment,{})}function b(e){return(0,v.jsxs)(v.Fragment,{children:[!!e.tab.svg&&(0,v.jsx)(`div`,{className:e.tab.name?`pe-1`:``,children:(0,v.jsx)(a,{svg:e.tab.svg,size:e.tab.svgSize})}),e.formatDisplayText?.(e.tab.name)??e.tab.name,(0,v.jsx)(y,{tab:e.tab,badgeType:e.badgeType,className:e.badgeClassName})]})}function x(e){let{borderRadius:n=`lg`}=e,i=u();function a(e){e.analyticsData&&e.analyticsOptions&&t.logUserAction(e.analyticsData,e.analyticsOptions)}function c(e){e.active||!e.onSelect||(e.onSelect(),a(e))}function l(t){let n=t.target.value,i=e.tabs.find(e=>e.name===n);!i||i.active||(a(i),r.trigger(i.appLink))}let d=e.tabs.find(e=>e.active),f=e.forceSmallScreenDropdown||e.enableSmallScreenSupport&&(i.sm||i.xs);return(0,v.jsxs)(`nav`,{className:e.className??``,children:[f&&(0,v.jsx)(`select`,{className:`form-select`,onChange:l,value:d?.name,style:{minWidth:`150px`},children:e.tabs.map((t,n)=>t.hide?(0,v.jsx)(g.Fragment,{},n):(0,v.jsx)(`option`,{value:t.name,children:e.formatDisplayText?.(t.name)??t.name},n))}),!f&&(0,v.jsx)(`ul`,{className:`
2
2
  list-unstyled d-inline-block m-0 ${_.pillTabSelector}
3
3
  ${n?_.radiusSmall:``}
4
4
  ${e.listClassName}
@@ -12,4 +12,4 @@ import{Dr as e,M as t,N as n,Qt as r,at as i}from"./CrTgNROp.chunk.js";import{r
12
12
  cursor-pointer d-flex align-items-center justify-content-center
13
13
  text-decoration-none text-reset px-2 text-nowrap ${_.tabLink}
14
14
  `,onClick:()=>c(t),children:(0,v.jsx)(b,{tab:t,formatDisplayText:e.formatDisplayText,badgeClassName:e.badgeClassName,badgeType:e.badgeType})})},n))})]})}function S(e){return(0,v.jsx)(x,{className:`pb-3`,tabs:e.items.map(e=>({name:e.label,onSelect:()=>r.trigger(e.appLink),active:e.appLink.action===l.getCurrentRoute()?.appLink?.action}))})}var C=c.encloseNamespace(`reportsVideos.schoolVideosNav`);function w(e){return[{label:C(`overview`),appLink:{application:f.VIDEOS,action:p.Videos.HOME,params:e}},{label:C(`views`),appLink:{application:f.VIDEOS,action:p.Videos.TOP_VIDEOS,params:e}}]}function T(){return(0,v.jsx)(S,{items:w(d())})}export{T as t};
15
- //# sourceMappingURL=DGuSwgQf2.chunk.js.map
15
+ //# sourceMappingURL=C3yKN7vY2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DGuSwgQf2.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/pill-tab-selector/pill-tab-selector.module.scss","../../../../libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","../../src/shared/components/sub-nav/SubNav.tsx","../../src/apps/videos/components/school-videos-nav/SchoolVideosNav.tsx"],"sourcesContent":[":local {\n $pill-tab-min-width: 7rem;\n\n .pillTabSelector {\n border-radius: $border-radius-lg;\n\n .tab {\n border-radius: 0;\n\n &:first-child {\n border-top-left-radius: $border-radius-lg;\n border-bottom-left-radius: $border-radius-lg;\n }\n\n &:last-child {\n border-top-right-radius: $border-radius-lg;\n border-bottom-right-radius: $border-radius-lg;\n }\n\n &:not(:first-child) {\n border-left: none;\n }\n\n &:not(:last-child) {\n border-right: none;\n }\n\n &.minWidth {\n min-width: $pill-tab-min-width;\n }\n }\n\n &.radiusSmall {\n border-radius: $border-radius;\n\n li {\n &:first-child {\n border-top-left-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n }\n \n &:last-child {\n border-top-right-radius: $border-radius;\n border-bottom-right-radius: $border-radius;\n }\n }\n }\n\n .tabLink {\n padding-top: $input-btn-padding-y;\n padding-bottom: $input-btn-padding-y;\n }\n }\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.module.scss';\n\ninterface TabContentComplicationProps {\n badgeType?: BadgeType;\n className?: string;\n tab: PillTab;\n}\n\nfunction TabContentComplication(props: TabContentComplicationProps) {\n if (typeof (props.tab.count) !== 'number')\n return <></>;\n\n if (props.badgeType === BadgeType.RoundCount) {\n return (\n <div className='ps-2'>\n <Badge type={props.badgeType} data={props.tab.count} className={props.className}/>\n </div>\n );\n }\n\n return (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} className={props.className}/>\n </div>\n );\n}\n\ninterface TabContentsProps {\n tab: PillTab;\n formatDisplayText?: (name: string) => string;\n badgeClassName?: string;\n badgeType?: BadgeType;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svg && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svg={props.tab.svg} size={props.tab.svgSize} />\n </div>\n )}\n\n {props.formatDisplayText?.(props.tab.name) ?? props.tab.name}\n\n <TabContentComplication\n tab={props.tab}\n badgeType={props.badgeType}\n className={props.badgeClassName}\n />\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svg?: SvgIcon;\n svgSize?: SvgContainerSize;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n\n hide?: boolean;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg';\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n forceSmallScreenDropdown?: boolean;\n badgeClassName?: string;\n badgeType?: BadgeType;\n}\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n const { borderRadius = 'lg' } = props;\n \n const breakpoints = useBreakpoints();\n \n function logAnalytics(tab: PillTab): void {\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n \n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n logAnalytics(tab);\n }\n\n function onChangeSelect(event: React.ChangeEvent<HTMLSelectElement>): void {\n const value = event.target.value;\n const tab = props.tabs.find(tab => tab.name === value);\n if (!tab || tab.active)\n return;\n \n logAnalytics(tab);\n AppLinkHelper.trigger(tab.appLink);\n }\n\n const selectedTab = props.tabs.find(tab => tab.active);\n const showSelectDropdown = props.forceSmallScreenDropdown\n || (props.enableSmallScreenSupport && (breakpoints.sm || breakpoints.xs));\n\n return (\n <nav className={props.className ?? ''}>\n {showSelectDropdown && (\n <select className='form-select' onChange={onChangeSelect} value={selectedTab?.name} style={{ minWidth: '150px' }}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n\n return (\n <option\n key={index}\n value={tab.name}>\n {props.formatDisplayText?.(tab.name) ?? tab.name}\n </option>\n );\n })}\n </select>\n )}\n \n {!showSelectDropdown && (\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n \n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} formatDisplayText={props.formatDisplayText} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents\n tab={tab}\n formatDisplayText={props.formatDisplayText}\n badgeClassName={props.badgeClassName}\n badgeType={props.badgeType}\n />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </nav>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { ContextService } from 'libs/shared/services/ContextService';\nexport interface SubNavItem {\n label: string;\n appLink: Core.AppLink;\n}\n\ninterface SubNavProps {\n items: SubNavItem[];\n}\n\nexport function SubNav(props: SubNavProps): JSX.Element {\n const tabs: PillTab[] = props.items.map(i => ({\n name: i.label,\n onSelect: () => Core.AppLinkHelper.trigger(i.appLink),\n active: i.appLink.action === ContextService.getCurrentRoute()?.appLink?.action\n }));\n\n return <PillTabSelector className='pb-3' tabs={tabs} />;\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\n\nimport { SubNav, SubNavItem } from 'shared/components/sub-nav/SubNav';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsVideos.schoolVideosNav';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getNavItems(params: FilterQueryParams): SubNavItem[] {\n return [\n {\n label: getPhrase('overview'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.HOME, params }\n },\n {\n label: getPhrase('views'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.TOP_VIDEOS, params }\n }\n ];\n}\n\nexport function SchoolVideosNav(): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const navItems = getNavItems(filterQueryParams);\n\n return (\n <SubNav items={navItems} />\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"C3yKN7vY2.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/pill-tab-selector/pill-tab-selector.module.scss","../../../../libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","../../src/shared/components/sub-nav/SubNav.tsx","../../src/apps/videos/components/school-videos-nav/SchoolVideosNav.tsx"],"sourcesContent":[":local {\n $pill-tab-min-width: 7rem;\n\n .pillTabSelector {\n border-radius: $border-radius-lg;\n\n .tab {\n border-radius: 0;\n\n &:first-child {\n border-top-left-radius: $border-radius-lg;\n border-bottom-left-radius: $border-radius-lg;\n }\n\n &:last-child {\n border-top-right-radius: $border-radius-lg;\n border-bottom-right-radius: $border-radius-lg;\n }\n\n &:not(:first-child) {\n border-left: none;\n }\n\n &:not(:last-child) {\n border-right: none;\n }\n\n &.minWidth {\n min-width: $pill-tab-min-width;\n }\n }\n\n &.radiusSmall {\n border-radius: $border-radius;\n\n li {\n &:first-child {\n border-top-left-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n }\n \n &:last-child {\n border-top-right-radius: $border-radius;\n border-bottom-right-radius: $border-radius;\n }\n }\n }\n\n .tabLink {\n padding-top: $input-btn-padding-y;\n padding-bottom: $input-btn-padding-y;\n }\n }\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.module.scss';\n\ninterface TabContentComplicationProps {\n badgeType?: BadgeType;\n className?: string;\n tab: PillTab;\n}\n\nfunction TabContentComplication(props: TabContentComplicationProps) {\n if (typeof (props.tab.count) !== 'number')\n return <></>;\n\n if (props.badgeType === BadgeType.RoundCount) {\n return (\n <div className='ps-2'>\n <Badge type={props.badgeType} data={props.tab.count} className={props.className}/>\n </div>\n );\n }\n\n return (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} className={props.className}/>\n </div>\n );\n}\n\ninterface TabContentsProps {\n tab: PillTab;\n formatDisplayText?: (name: string) => string;\n badgeClassName?: string;\n badgeType?: BadgeType;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svg && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svg={props.tab.svg} size={props.tab.svgSize} />\n </div>\n )}\n\n {props.formatDisplayText?.(props.tab.name) ?? props.tab.name}\n\n <TabContentComplication\n tab={props.tab}\n badgeType={props.badgeType}\n className={props.badgeClassName}\n />\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svg?: SvgIcon;\n svgSize?: SvgContainerSize;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n\n hide?: boolean;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg';\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n forceSmallScreenDropdown?: boolean;\n badgeClassName?: string;\n badgeType?: BadgeType;\n}\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n const { borderRadius = 'lg' } = props;\n \n const breakpoints = useBreakpoints();\n \n function logAnalytics(tab: PillTab): void {\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n \n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n logAnalytics(tab);\n }\n\n function onChangeSelect(event: React.ChangeEvent<HTMLSelectElement>): void {\n const value = event.target.value;\n const tab = props.tabs.find(tab => tab.name === value);\n if (!tab || tab.active)\n return;\n \n logAnalytics(tab);\n AppLinkHelper.trigger(tab.appLink);\n }\n\n const selectedTab = props.tabs.find(tab => tab.active);\n const showSelectDropdown = props.forceSmallScreenDropdown\n || (props.enableSmallScreenSupport && (breakpoints.sm || breakpoints.xs));\n\n return (\n <nav className={props.className ?? ''}>\n {showSelectDropdown && (\n <select className='form-select' onChange={onChangeSelect} value={selectedTab?.name} style={{ minWidth: '150px' }}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n\n return (\n <option\n key={index}\n value={tab.name}>\n {props.formatDisplayText?.(tab.name) ?? tab.name}\n </option>\n );\n })}\n </select>\n )}\n \n {!showSelectDropdown && (\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n if (tab.hide)\n return <React.Fragment key={index}/>;\n \n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} formatDisplayText={props.formatDisplayText} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents\n tab={tab}\n formatDisplayText={props.formatDisplayText}\n badgeClassName={props.badgeClassName}\n badgeType={props.badgeType}\n />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </nav>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { ContextService } from 'libs/shared/services/ContextService';\nexport interface SubNavItem {\n label: string;\n appLink: Core.AppLink;\n}\n\ninterface SubNavProps {\n items: SubNavItem[];\n}\n\nexport function SubNav(props: SubNavProps): JSX.Element {\n const tabs: PillTab[] = props.items.map(i => ({\n name: i.label,\n onSelect: () => Core.AppLinkHelper.trigger(i.appLink),\n active: i.appLink.action === ContextService.getCurrentRoute()?.appLink?.action\n }));\n\n return <PillTabSelector className='pb-3' tabs={tabs} />;\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\n\nimport { SubNav, SubNavItem } from 'shared/components/sub-nav/SubNav';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsVideos.schoolVideosNav';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getNavItems(params: FilterQueryParams): SubNavItem[] {\n return [\n {\n label: getPhrase('overview'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.HOME, params }\n },\n {\n label: getPhrase('views'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.TOP_VIDEOS, params }\n }\n ];\n}\n\nexport function SchoolVideosNav(): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const navItems = getNavItems(filterQueryParams);\n\n return (\n <SubNav items={navItems} />\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{N as e,at as t}from"./CrTgNROp.chunk.js";import{n,r,z as i}from"./app-F8o5al1q.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=DqX2L2fn2.chunk.js.map
1
+ import{N as e,at as t}from"./CrTgNROp.chunk.js";import{n,r,z as i}from"./app-DW-nP8r1.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=CEL9EOPh2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DqX2L2fn2.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":"gLCcA,SAAgB,EAAsB,EAAuD,CAM3F,OALA,EAAmB,CAAE,MAAO,EAAM,OAAO,OAAQ,CAAC,EAE7C,EAAM,OAIT,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,MAAO,CAAE,OAAQ,MAAO,YAC3B,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,MAAO,CAAE,gBAAiB,OAAO,EAAM,SAAS,EAAG,EAAG,UAAW,EAAO,oBAC3E,EAAA,EAAA,KAAA,CAAC,EAAD,CAAY,UAAW,EAAO,sBAA9B,EACE,EAAA,EAAA,IAAA,CAAC,EAAW,QAAZ,CAAA,SAAqB,EAAM,MAAM,OAA4B,CAAA,GAE7D,EAAA,EAAA,IAAA,CAAC,EAAW,KAAZ,CAAiB,UAAU,qBAAa,EAAM,MAAM,WAA6B,CAAA,EAEhF,EAAM,MAAM,MAAQ,KACnB,EAAA,EAAA,IAAA,CAAC,EAAW,IAAZ,CACE,KAAM,EAAM,MAAM,IAAI,KACtB,UAAW,gBAAgB,EAAM,MAAM,YAAc,QAAU,KAC/D,KAAM,EAAM,MAAM,IAAI,IACtB,KAAM,EACN,aAAA,EACD,CAAA,CAEO,GACT,CAAA,CACF,CAAA,GArBE,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAuBf"}
1
+ {"version":3,"file":"CEL9EOPh2.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":"gLCcA,SAAgB,EAAsB,EAAuD,CAM3F,OALA,EAAmB,CAAE,MAAO,EAAM,OAAO,OAAQ,CAAC,EAE7C,EAAM,OAIT,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,MAAO,CAAE,OAAQ,MAAO,YAC3B,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,MAAO,CAAE,gBAAiB,OAAO,EAAM,SAAS,EAAG,EAAG,UAAW,EAAO,oBAC3E,EAAA,EAAA,KAAA,CAAC,EAAD,CAAY,UAAW,EAAO,sBAA9B,EACE,EAAA,EAAA,IAAA,CAAC,EAAW,QAAZ,CAAA,SAAqB,EAAM,MAAM,OAA4B,CAAA,GAE7D,EAAA,EAAA,IAAA,CAAC,EAAW,KAAZ,CAAiB,UAAU,qBAAa,EAAM,MAAM,WAA6B,CAAA,EAEhF,EAAM,MAAM,MAAQ,KACnB,EAAA,EAAA,IAAA,CAAC,EAAW,IAAZ,CACE,KAAM,EAAM,MAAM,IAAI,KACtB,UAAW,gBAAgB,EAAM,MAAM,YAAc,QAAU,KAC/D,KAAM,EAAM,MAAM,IAAI,IACtB,KAAM,EACN,aAAA,EACD,CAAA,CAEO,GACT,CAAA,CACF,CAAA,GArBE,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAuBf"}
@@ -1,2 +1,2 @@
1
- import{N as e,Tr as t,at as n}from"./CrTgNROp.chunk.js";import{i as r,r as i}from"./CxNc1BDX.chunk.js";import{t as a}from"./BIVEB8w0.chunk.js";import{Ft as o,H as s,j as c}from"./app-F8o5al1q.js";var l=t(((e,t)=>{function n(){return t.exports=n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},t.exports.__esModule=!0,t.exports.default=t.exports,n.apply(null,arguments)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})),u={colours:`amber.apricot.aqua.azure.black.blue.bronze.brown.chocolate.copper.coral.cream.crimson.cyan.emerald.gold.green.grey.indigo.ivory.jade.lavender.lime.maroon.mint.navy.olive.orange.peach.pink.plum.purple.red.rose.ruby.sage.salmon.sapphire.scarlet.silver.sky.teal.turquoise.violet.white.yellow`.split(`.`),animals:`aardvark.albatross.alligator.alpaca.ant.anteater.antelope.ape.armadillo.baboon.badger.bat.bear.beaver.bee.beetle.bison.blackbird.boar.bobcat.bonobo.buffalo.butterfly.camel.canary.capybara.caribou.cat.caterpillar.chameleon.cheetah.chimpanzee.chinchilla.chipmunk.clownfish.cockatoo.cougar.cow.coyote.crab.crane.crocodile.crow.deer.dingo.dog.dolphin.donkey.dove.dragonfly.duck.eagle.elephant.elk.emu.falcon.ferret.finch.firefly.fish.flamingo.fox.frog.gazelle.gecko.gerbil.giraffe.goat.goldfish.goose.gorilla.grasshopper.gull.hamster.hare.hawk.hedgehog.heron.hippopotamus.horse.hummingbird.iguana.impala.jaguar.jellyfish.kangaroo.kingfisher.kiwi.koala.koi.ladybug.lemur.leopard.lion.lizard.llama.lobster.lynx.macaw.magpie.manatee.mandrill.marlin.meerkat.mole.mongoose.monkey.moose.mouse.mule.narwhal.newt.nightingale.ocelot.octopus.orangutan.orca.ostrich.otter.owl.ox.panda.panther.parakeet.parrot.peacock.pelican.penguin.pheasant.pigeon.platypus.pony.porcupine.possum.pufferfish.puffin.puma.quail.rabbit.raccoon.raven.reindeer.rhinoceros.roadrunner.robin.rooster.salamander.salmon.seahorse.seal.shark.sheep.sloth.snail.snake.sparrow.squid.squirrel.starfish.stingray.stork.swallow.swan.swordfish.tapir.tiger.toad.tortoise.toucan.trout.tuna.turtle.wallaby.walrus.weasel.whale.wildebeest.wolf.wolverine.woodpecker.yak.zebra`.split(`.`)},d=a.encloseNamespace(`shared.analyticsUtils`);function f(e){return e.charAt(0).toUpperCase()+e.slice(1)}function p(e){if(!e)return 0;let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t|=0}return Math.abs(t)}function m(e,t){let n=Math.floor(new Date().getMinutes()/5),r=p(`${e||t}-${n}`),i=u.colours[r%u.colours.length],a=u.animals[Math.floor(r/u.colours.length)%u.animals.length];return`${f(i)} ${f(a)}`}function h(e,t){return e?t?m(e.id,e.sessionId):e.deleted?d(`deleted`):o.getFullName(e)||d(`anonUser`):d(`anonUser`)}n();var g=e();function _(e){return(0,g.jsx)(`svg`,{...e,children:(0,g.jsx)(`path`,{d:`m16.837 9.842-1.138-3.678a1.65 1.65 0 0 0-.887-1.01 1.67 1.67 0 0 0-1.348-.02l-1.14.486a.8.8 0 0 1-.647 0l-1.14-.488a1.67 1.67 0 0 0-1.348.021 1.65 1.65 0 0 0-.887 1.01L7.164 9.842a7.17 7.17 0 0 0-3.062 1.85.41.41 0 0 0 .314.683h15.17c.162 0 .31-.094.376-.241a.41.41 0 0 0-.064-.44 7.17 7.17 0 0 0-3.061-1.852M9.094 6.404a.836.836 0 0 1 1.117-.516l1.135.484c.416.181.89.181 1.306 0l1.137-.485a.836.836 0 0 1 1.117.516l.976 3.153a16.17 16.17 0 0 0-7.764 0zm-3.59 5.148c1.455-1.019 3.866-1.645 6.497-1.645a14.5 14.5 0 0 1 4.41.651c.74.229 1.444.563 2.087.994zm9.807 1.645a2.9 2.9 0 0 0-2.508 1.447 1.61 1.61 0 0 0-1.604 0c-.763-1.323-2.425-1.835-3.807-1.173s-2.016 2.272-1.452 3.69a2.93 2.93 0 0 0 3.6 1.704 2.906 2.906 0 0 0 1.968-3.445.88.88 0 0 1 .986 0 2.87 2.87 0 0 0 1.269 3.088 2.91 2.91 0 0 0 3.351-.176c.966-.762 1.341-2.048.935-3.204s-1.505-1.932-2.738-1.93m-6.62 4.936c-1.143 0-2.07-.92-2.07-2.056s.927-2.057 2.07-2.057 2.069.92 2.069 2.057a2.065 2.065 0 0 1-2.07 2.056m6.62 0c-1.142 0-2.069-.92-2.069-2.056s.927-2.057 2.07-2.057 2.068.92 2.068 2.057a2.065 2.065 0 0 1-2.069 2.056`,fill:`currentColor`})})}var v={iconCircle:`_iconCircle_186sk_1`,dot:`_dot_186sk_8`};function y(e){let t=e.type===`anon`;return e.type===`student-reach`?(0,g.jsx)(`div`,{className:`position-relative h-100 w-100`,children:(0,g.jsx)(`div`,{className:`${v.iconCircle} bg-orange text-light ${e.extraClasses||``}`,children:(0,g.jsx)(i,{svg:c,size:e.anonymousSvgSize||r.Large,className:`svg-container w-100 h-100`})})}):t?(0,g.jsxs)(`div`,{className:`position-relative h-100 w-100`,children:[(0,g.jsx)(`div`,{className:`${v.iconCircle} bg-gray-700 text-light ${e.extraClasses||``}`,children:(0,g.jsx)(i,{svg:_,size:e.anonymousSvgSize||r.Large,className:`svg-container w-100 h-100`})}),e.showDot&&(0,g.jsx)(`div`,{className:`${v.dot} rounded-circle bg-danger`})]}):(0,g.jsx)(s,{imageCdnUrl:e.imageCdnUrl,initials:e.initials,imageUrl:e.imageUrl,extraClasses:e.extraClasses,showDot:e.showDot,anonymiseUsers:e.anonymiseUsers})}export{h as n,l as r,y as t};
2
- //# sourceMappingURL=BHwx99h9.chunk.js.map
1
+ import{N as e,Tr as t,at as n}from"./CrTgNROp.chunk.js";import{i as r,r as i}from"./CxNc1BDX.chunk.js";import{t as a}from"./BIVEB8w0.chunk.js";import{Ft as o,H as s,j as c}from"./app-DW-nP8r1.js";var l=t(((e,t)=>{function n(){return t.exports=n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},t.exports.__esModule=!0,t.exports.default=t.exports,n.apply(null,arguments)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})),u={colours:`amber.apricot.aqua.azure.black.blue.bronze.brown.chocolate.copper.coral.cream.crimson.cyan.emerald.gold.green.grey.indigo.ivory.jade.lavender.lime.maroon.mint.navy.olive.orange.peach.pink.plum.purple.red.rose.ruby.sage.salmon.sapphire.scarlet.silver.sky.teal.turquoise.violet.white.yellow`.split(`.`),animals:`aardvark.albatross.alligator.alpaca.ant.anteater.antelope.ape.armadillo.baboon.badger.bat.bear.beaver.bee.beetle.bison.blackbird.boar.bobcat.bonobo.buffalo.butterfly.camel.canary.capybara.caribou.cat.caterpillar.chameleon.cheetah.chimpanzee.chinchilla.chipmunk.clownfish.cockatoo.cougar.cow.coyote.crab.crane.crocodile.crow.deer.dingo.dog.dolphin.donkey.dove.dragonfly.duck.eagle.elephant.elk.emu.falcon.ferret.finch.firefly.fish.flamingo.fox.frog.gazelle.gecko.gerbil.giraffe.goat.goldfish.goose.gorilla.grasshopper.gull.hamster.hare.hawk.hedgehog.heron.hippopotamus.horse.hummingbird.iguana.impala.jaguar.jellyfish.kangaroo.kingfisher.kiwi.koala.koi.ladybug.lemur.leopard.lion.lizard.llama.lobster.lynx.macaw.magpie.manatee.mandrill.marlin.meerkat.mole.mongoose.monkey.moose.mouse.mule.narwhal.newt.nightingale.ocelot.octopus.orangutan.orca.ostrich.otter.owl.ox.panda.panther.parakeet.parrot.peacock.pelican.penguin.pheasant.pigeon.platypus.pony.porcupine.possum.pufferfish.puffin.puma.quail.rabbit.raccoon.raven.reindeer.rhinoceros.roadrunner.robin.rooster.salamander.salmon.seahorse.seal.shark.sheep.sloth.snail.snake.sparrow.squid.squirrel.starfish.stingray.stork.swallow.swan.swordfish.tapir.tiger.toad.tortoise.toucan.trout.tuna.turtle.wallaby.walrus.weasel.whale.wildebeest.wolf.wolverine.woodpecker.yak.zebra`.split(`.`)},d=a.encloseNamespace(`shared.analyticsUtils`);function f(e){return e.charAt(0).toUpperCase()+e.slice(1)}function p(e){if(!e)return 0;let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t|=0}return Math.abs(t)}function m(e,t){let n=Math.floor(new Date().getMinutes()/5),r=p(`${e||t}-${n}`),i=u.colours[r%u.colours.length],a=u.animals[Math.floor(r/u.colours.length)%u.animals.length];return`${f(i)} ${f(a)}`}function h(e,t){return e?t?m(e.id,e.sessionId):e.deleted?d(`deleted`):o.getFullName(e)||d(`anonUser`):d(`anonUser`)}n();var g=e();function _(e){return(0,g.jsx)(`svg`,{...e,children:(0,g.jsx)(`path`,{d:`m16.837 9.842-1.138-3.678a1.65 1.65 0 0 0-.887-1.01 1.67 1.67 0 0 0-1.348-.02l-1.14.486a.8.8 0 0 1-.647 0l-1.14-.488a1.67 1.67 0 0 0-1.348.021 1.65 1.65 0 0 0-.887 1.01L7.164 9.842a7.17 7.17 0 0 0-3.062 1.85.41.41 0 0 0 .314.683h15.17c.162 0 .31-.094.376-.241a.41.41 0 0 0-.064-.44 7.17 7.17 0 0 0-3.061-1.852M9.094 6.404a.836.836 0 0 1 1.117-.516l1.135.484c.416.181.89.181 1.306 0l1.137-.485a.836.836 0 0 1 1.117.516l.976 3.153a16.17 16.17 0 0 0-7.764 0zm-3.59 5.148c1.455-1.019 3.866-1.645 6.497-1.645a14.5 14.5 0 0 1 4.41.651c.74.229 1.444.563 2.087.994zm9.807 1.645a2.9 2.9 0 0 0-2.508 1.447 1.61 1.61 0 0 0-1.604 0c-.763-1.323-2.425-1.835-3.807-1.173s-2.016 2.272-1.452 3.69a2.93 2.93 0 0 0 3.6 1.704 2.906 2.906 0 0 0 1.968-3.445.88.88 0 0 1 .986 0 2.87 2.87 0 0 0 1.269 3.088 2.91 2.91 0 0 0 3.351-.176c.966-.762 1.341-2.048.935-3.204s-1.505-1.932-2.738-1.93m-6.62 4.936c-1.143 0-2.07-.92-2.07-2.056s.927-2.057 2.07-2.057 2.069.92 2.069 2.057a2.065 2.065 0 0 1-2.07 2.056m6.62 0c-1.142 0-2.069-.92-2.069-2.056s.927-2.057 2.07-2.057 2.068.92 2.068 2.057a2.065 2.065 0 0 1-2.069 2.056`,fill:`currentColor`})})}var v={iconCircle:`_iconCircle_186sk_1`,dot:`_dot_186sk_8`};function y(e){let t=e.type===`anon`;return e.type===`student-reach`?(0,g.jsx)(`div`,{className:`position-relative h-100 w-100`,children:(0,g.jsx)(`div`,{className:`${v.iconCircle} bg-orange text-light ${e.extraClasses||``}`,children:(0,g.jsx)(i,{svg:c,size:e.anonymousSvgSize||r.Large,className:`svg-container w-100 h-100`})})}):t?(0,g.jsxs)(`div`,{className:`position-relative h-100 w-100`,children:[(0,g.jsx)(`div`,{className:`${v.iconCircle} bg-gray-700 text-light ${e.extraClasses||``}`,children:(0,g.jsx)(i,{svg:_,size:e.anonymousSvgSize||r.Large,className:`svg-container w-100 h-100`})}),e.showDot&&(0,g.jsx)(`div`,{className:`${v.dot} rounded-circle bg-danger`})]}):(0,g.jsx)(s,{imageCdnUrl:e.imageCdnUrl,initials:e.initials,imageUrl:e.imageUrl,extraClasses:e.extraClasses,showDot:e.showDot,anonymiseUsers:e.anonymiseUsers})}export{h as n,l as r,y as t};
2
+ //# sourceMappingURL=COeneeRO.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BHwx99h9.chunk.js","names":[],"sources":["../../../../../node_modules/@babel/runtime/helpers/extends.js","../../../../libs/shared/src/apps/analytics/utils/anon-name-dictionaries.json","../../../../libs/shared/src/apps/analytics/utils/AnonymiseUserUtils.ts","../../../../libs/shared/src/images/svg/objects/AnonymousSvg.tsx","../../../../libs/shared/src/components/engagement-avatar/engagement-avatar.module.scss","../../../../libs/shared/src/components/engagement-avatar/EngagementAvatar.tsx"],"sourcesContent":["function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","{\n \"colours\": [\n \"amber\",\n \"apricot\",\n \"aqua\",\n \"azure\",\n \"black\",\n \"blue\",\n \"bronze\",\n \"brown\",\n \"chocolate\",\n \"copper\",\n \"coral\",\n \"cream\",\n \"crimson\",\n \"cyan\",\n \"emerald\",\n \"gold\",\n \"green\",\n \"grey\",\n \"indigo\",\n \"ivory\",\n \"jade\",\n \"lavender\",\n \"lime\",\n \"maroon\",\n \"mint\",\n \"navy\",\n \"olive\",\n \"orange\",\n \"peach\",\n \"pink\",\n \"plum\",\n \"purple\",\n \"red\",\n \"rose\",\n \"ruby\",\n \"sage\",\n \"salmon\",\n \"sapphire\",\n \"scarlet\",\n \"silver\",\n \"sky\",\n \"teal\",\n \"turquoise\",\n \"violet\",\n \"white\",\n \"yellow\"\n ],\n \"animals\": [\n \"aardvark\", \"albatross\", \"alligator\", \"alpaca\", \"ant\", \"anteater\", \"antelope\", \"ape\", \"armadillo\",\n \"baboon\", \"badger\", \"bat\", \"bear\", \"beaver\", \"bee\", \"beetle\", \"bison\", \"blackbird\", \"boar\", \"bobcat\", \"bonobo\", \"buffalo\", \"butterfly\",\n \"camel\", \"canary\", \"capybara\", \"caribou\", \"cat\", \"caterpillar\", \"chameleon\",\n \"cheetah\", \"chimpanzee\", \"chinchilla\", \"chipmunk\", \"clownfish\", \"cockatoo\", \"cougar\", \"cow\", \"coyote\",\n \"crab\", \"crane\", \"crocodile\", \"crow\",\n \"deer\", \"dingo\", \"dog\", \"dolphin\", \"donkey\", \"dove\", \"dragonfly\", \"duck\",\n \"eagle\", \"elephant\", \"elk\", \"emu\",\n \"falcon\", \"ferret\", \"finch\", \"firefly\", \"fish\", \"flamingo\", \"fox\", \"frog\",\n \"gazelle\", \"gecko\", \"gerbil\", \"giraffe\", \"goat\", \"goldfish\", \"goose\", \"gorilla\", \"grasshopper\", \"gull\",\n \"hamster\", \"hare\", \"hawk\", \"hedgehog\", \"heron\", \"hippopotamus\", \"horse\", \"hummingbird\",\n \"iguana\", \"impala\",\n \"jaguar\", \"jellyfish\",\n \"kangaroo\", \"kingfisher\", \"kiwi\", \"koala\", \"koi\",\n \"ladybug\", \"lemur\", \"leopard\", \"lion\", \"lizard\", \"llama\", \"lobster\", \"lynx\",\n \"macaw\", \"magpie\", \"manatee\", \"mandrill\", \"marlin\", \"meerkat\", \"mole\", \"mongoose\", \"monkey\", \"moose\", \"mouse\", \"mule\",\n \"narwhal\", \"newt\", \"nightingale\",\n \"ocelot\", \"octopus\", \"orangutan\", \"orca\", \"ostrich\", \"otter\", \"owl\", \"ox\",\n \"panda\", \"panther\", \"parakeet\", \"parrot\", \"peacock\", \"pelican\", \"penguin\", \"pheasant\", \"pigeon\", \"platypus\",\n \"pony\", \"porcupine\", \"possum\", \"pufferfish\", \"puffin\", \"puma\",\n \"quail\",\n \"rabbit\", \"raccoon\", \"raven\", \"reindeer\", \"rhinoceros\", \"roadrunner\", \"robin\", \"rooster\",\n \"salamander\", \"salmon\", \"seahorse\", \"seal\", \"shark\", \"sheep\", \"sloth\", \"snail\", \"snake\", \"sparrow\",\n \"squid\", \"squirrel\", \"starfish\", \"stingray\", \"stork\", \"swallow\", \"swan\", \"swordfish\",\n \"tapir\", \"tiger\", \"toad\", \"tortoise\", \"toucan\", \"trout\", \"tuna\", \"turtle\",\n \"wallaby\", \"walrus\", \"weasel\", \"whale\", \"wildebeest\", \"wolf\", \"wolverine\", \"woodpecker\",\n \"yak\",\n \"zebra\"\n ]\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport dictionaries from './anon-name-dictionaries.json';\n\nconst namespace = 'shared.analyticsUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction capitalize(word: string): string {\n return word.charAt(0).toUpperCase() + word.slice(1);\n}\n\nfunction stringToSeed(input: string): number {\n if (!input)\n return 0;\n\n // Simple hash function (DJB2-like) for browsers\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0; // Convert to 32bit integer\n }\n return Math.abs(hash);\n}\n\nfunction generateAnonName(userId: string, sessionId: string): string {\n /**\n * Generate a seed that is unique to each user but changes every 5 minutes.\n *\n * We use a seed so that if the same user's name is anonymised multiple times\n * in quick succession (e.g. multiple renders), the same name will be returned each time.\n *\n * We change the seed every 5 minutes so that students don't always have the same name.\n */\n const bucket = Math.floor((new Date()).getMinutes() / 5);\n const seed = stringToSeed(`${userId || sessionId}-${bucket}`);\n // Treat the seed as a mixed-radix number: the low \"digit\" (mod) picks the colour, the next\n // \"digit\" (quotient) picks the animal. This decorrelates the two indices so every pair is\n // reachable and consecutive seeds cycle through all colours before the animal advances.\n const colour = dictionaries.colours[seed % dictionaries.colours.length];\n const animal = dictionaries.animals[Math.floor(seed / dictionaries.colours.length) % dictionaries.animals.length];\n return `${capitalize(colour)} ${capitalize(animal)}`;\n}\n\nexport function anonymiseUserName(user: AnonUser, shouldAnonymise: boolean): string {\n if (!user) {\n return getPhrase('anonUser');\n }\n\n if (!shouldAnonymise) {\n if (user.deleted)\n return getPhrase('deleted');\n\n return UserHelper.getFullName(user) || getPhrase('anonUser');\n }\n\n return generateAnonName(user.id, user.sessionId);\n}\n","import React from 'react';\n\nexport function AnonymousSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}\n >\n <path\n d='m16.837 9.842-1.138-3.678a1.65 1.65 0 0 0-.887-1.01 1.67 1.67 0 0 0-1.348-.02l-1.14.486a.8.8 0 0 1-.647 0l-1.14-.488a1.67 1.67 0 0 0-1.348.021 1.65 1.65 0 0 0-.887 1.01L7.164 9.842a7.17 7.17 0 0 0-3.062 1.85.41.41 0 0 0 .314.683h15.17c.162 0 .31-.094.376-.241a.41.41 0 0 0-.064-.44 7.17 7.17 0 0 0-3.061-1.852M9.094 6.404a.836.836 0 0 1 1.117-.516l1.135.484c.416.181.89.181 1.306 0l1.137-.485a.836.836 0 0 1 1.117.516l.976 3.153a16.17 16.17 0 0 0-7.764 0zm-3.59 5.148c1.455-1.019 3.866-1.645 6.497-1.645a14.5 14.5 0 0 1 4.41.651c.74.229 1.444.563 2.087.994zm9.807 1.645a2.9 2.9 0 0 0-2.508 1.447 1.61 1.61 0 0 0-1.604 0c-.763-1.323-2.425-1.835-3.807-1.173s-2.016 2.272-1.452 3.69a2.93 2.93 0 0 0 3.6 1.704 2.906 2.906 0 0 0 1.968-3.445.88.88 0 0 1 .986 0 2.87 2.87 0 0 0 1.269 3.088 2.91 2.91 0 0 0 3.351-.176c.966-.762 1.341-2.048.935-3.204s-1.505-1.932-2.738-1.93m-6.62 4.936c-1.143 0-2.07-.92-2.07-2.056s.927-2.057 2.07-2.057 2.069.92 2.069 2.057a2.065 2.065 0 0 1-2.07 2.056m6.62 0c-1.142 0-2.069-.92-2.069-2.056s.927-2.057 2.07-2.057 2.068.92 2.068 2.057a2.065 2.065 0 0 1-2.069 2.056'\n fill='currentColor'\n />\n </svg>\n );\n}\n",":local {\n .iconCircle {\n border-radius: 50%;\n width: 100%;\n height: 100%;\n text-align: center;\n line-height: 100%;\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}\n","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { AnonymousSvg } from 'libs/shared/images/svg/objects/AnonymousSvg';\nimport { GroupSvg } from 'libs/shared/images/svg/objects/GroupSvg';\nimport { EngagementType } from 'libs/shared/interfaces';\n\nimport styles from './engagement-avatar.module.scss';\n\ninterface EngagementAvatarProps {\n imageCdnUrl: string;\n initials: string;\n imageUrl?: string;\n extraClasses?: string;\n showDot?: boolean;\n anonymiseUsers?: boolean;\n /** When set, determines the avatar icon based on engagement type. */\n type?: EngagementType;\n anonymousSvgSize?: SvgContainerSize;\n}\n\nexport function EngagementAvatar(props: EngagementAvatarProps): JSX.Element {\n const isAnonymous = props.type === 'anon';\n const isClassroomViews = props.type === 'student-reach';\n\n if (isClassroomViews) {\n return (\n <div className='position-relative h-100 w-100'>\n <div className={`${styles.iconCircle} bg-orange text-light ${props.extraClasses || ''}`}>\n <SvgContainer\n svg={GroupSvg}\n size={props.anonymousSvgSize || SvgContainerSize.Large}\n className='svg-container w-100 h-100'\n />\n </div>\n </div>\n );\n }\n\n if (isAnonymous) {\n return (\n <div className='position-relative h-100 w-100'>\n <div className={`${styles.iconCircle} bg-gray-700 text-light ${props.extraClasses || ''}`}>\n <SvgContainer\n svg={AnonymousSvg}\n size={props.anonymousSvgSize || SvgContainerSize.Large}\n className='svg-container w-100 h-100'\n />\n </div>\n {props.showDot && <div className={`${styles.dot} rounded-circle bg-danger`} />}\n </div>\n );\n }\n\n return (\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={props.initials}\n imageUrl={props.imageUrl}\n extraClasses={props.extraClasses}\n showDot={props.showDot}\n anonymiseUsers={props.anonymiseUsers}\n />\n );\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"COeneeRO.chunk.js","names":[],"sources":["../../../../../node_modules/@babel/runtime/helpers/extends.js","../../../../libs/shared/src/apps/analytics/utils/anon-name-dictionaries.json","../../../../libs/shared/src/apps/analytics/utils/AnonymiseUserUtils.ts","../../../../libs/shared/src/images/svg/objects/AnonymousSvg.tsx","../../../../libs/shared/src/components/engagement-avatar/engagement-avatar.module.scss","../../../../libs/shared/src/components/engagement-avatar/EngagementAvatar.tsx"],"sourcesContent":["function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","{\n \"colours\": [\n \"amber\",\n \"apricot\",\n \"aqua\",\n \"azure\",\n \"black\",\n \"blue\",\n \"bronze\",\n \"brown\",\n \"chocolate\",\n \"copper\",\n \"coral\",\n \"cream\",\n \"crimson\",\n \"cyan\",\n \"emerald\",\n \"gold\",\n \"green\",\n \"grey\",\n \"indigo\",\n \"ivory\",\n \"jade\",\n \"lavender\",\n \"lime\",\n \"maroon\",\n \"mint\",\n \"navy\",\n \"olive\",\n \"orange\",\n \"peach\",\n \"pink\",\n \"plum\",\n \"purple\",\n \"red\",\n \"rose\",\n \"ruby\",\n \"sage\",\n \"salmon\",\n \"sapphire\",\n \"scarlet\",\n \"silver\",\n \"sky\",\n \"teal\",\n \"turquoise\",\n \"violet\",\n \"white\",\n \"yellow\"\n ],\n \"animals\": [\n \"aardvark\", \"albatross\", \"alligator\", \"alpaca\", \"ant\", \"anteater\", \"antelope\", \"ape\", \"armadillo\",\n \"baboon\", \"badger\", \"bat\", \"bear\", \"beaver\", \"bee\", \"beetle\", \"bison\", \"blackbird\", \"boar\", \"bobcat\", \"bonobo\", \"buffalo\", \"butterfly\",\n \"camel\", \"canary\", \"capybara\", \"caribou\", \"cat\", \"caterpillar\", \"chameleon\",\n \"cheetah\", \"chimpanzee\", \"chinchilla\", \"chipmunk\", \"clownfish\", \"cockatoo\", \"cougar\", \"cow\", \"coyote\",\n \"crab\", \"crane\", \"crocodile\", \"crow\",\n \"deer\", \"dingo\", \"dog\", \"dolphin\", \"donkey\", \"dove\", \"dragonfly\", \"duck\",\n \"eagle\", \"elephant\", \"elk\", \"emu\",\n \"falcon\", \"ferret\", \"finch\", \"firefly\", \"fish\", \"flamingo\", \"fox\", \"frog\",\n \"gazelle\", \"gecko\", \"gerbil\", \"giraffe\", \"goat\", \"goldfish\", \"goose\", \"gorilla\", \"grasshopper\", \"gull\",\n \"hamster\", \"hare\", \"hawk\", \"hedgehog\", \"heron\", \"hippopotamus\", \"horse\", \"hummingbird\",\n \"iguana\", \"impala\",\n \"jaguar\", \"jellyfish\",\n \"kangaroo\", \"kingfisher\", \"kiwi\", \"koala\", \"koi\",\n \"ladybug\", \"lemur\", \"leopard\", \"lion\", \"lizard\", \"llama\", \"lobster\", \"lynx\",\n \"macaw\", \"magpie\", \"manatee\", \"mandrill\", \"marlin\", \"meerkat\", \"mole\", \"mongoose\", \"monkey\", \"moose\", \"mouse\", \"mule\",\n \"narwhal\", \"newt\", \"nightingale\",\n \"ocelot\", \"octopus\", \"orangutan\", \"orca\", \"ostrich\", \"otter\", \"owl\", \"ox\",\n \"panda\", \"panther\", \"parakeet\", \"parrot\", \"peacock\", \"pelican\", \"penguin\", \"pheasant\", \"pigeon\", \"platypus\",\n \"pony\", \"porcupine\", \"possum\", \"pufferfish\", \"puffin\", \"puma\",\n \"quail\",\n \"rabbit\", \"raccoon\", \"raven\", \"reindeer\", \"rhinoceros\", \"roadrunner\", \"robin\", \"rooster\",\n \"salamander\", \"salmon\", \"seahorse\", \"seal\", \"shark\", \"sheep\", \"sloth\", \"snail\", \"snake\", \"sparrow\",\n \"squid\", \"squirrel\", \"starfish\", \"stingray\", \"stork\", \"swallow\", \"swan\", \"swordfish\",\n \"tapir\", \"tiger\", \"toad\", \"tortoise\", \"toucan\", \"trout\", \"tuna\", \"turtle\",\n \"wallaby\", \"walrus\", \"weasel\", \"whale\", \"wildebeest\", \"wolf\", \"wolverine\", \"woodpecker\",\n \"yak\",\n \"zebra\"\n ]\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport dictionaries from './anon-name-dictionaries.json';\n\nconst namespace = 'shared.analyticsUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction capitalize(word: string): string {\n return word.charAt(0).toUpperCase() + word.slice(1);\n}\n\nfunction stringToSeed(input: string): number {\n if (!input)\n return 0;\n\n // Simple hash function (DJB2-like) for browsers\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0; // Convert to 32bit integer\n }\n return Math.abs(hash);\n}\n\nfunction generateAnonName(userId: string, sessionId: string): string {\n /**\n * Generate a seed that is unique to each user but changes every 5 minutes.\n *\n * We use a seed so that if the same user's name is anonymised multiple times\n * in quick succession (e.g. multiple renders), the same name will be returned each time.\n *\n * We change the seed every 5 minutes so that students don't always have the same name.\n */\n const bucket = Math.floor((new Date()).getMinutes() / 5);\n const seed = stringToSeed(`${userId || sessionId}-${bucket}`);\n // Treat the seed as a mixed-radix number: the low \"digit\" (mod) picks the colour, the next\n // \"digit\" (quotient) picks the animal. This decorrelates the two indices so every pair is\n // reachable and consecutive seeds cycle through all colours before the animal advances.\n const colour = dictionaries.colours[seed % dictionaries.colours.length];\n const animal = dictionaries.animals[Math.floor(seed / dictionaries.colours.length) % dictionaries.animals.length];\n return `${capitalize(colour)} ${capitalize(animal)}`;\n}\n\nexport function anonymiseUserName(user: AnonUser, shouldAnonymise: boolean): string {\n if (!user) {\n return getPhrase('anonUser');\n }\n\n if (!shouldAnonymise) {\n if (user.deleted)\n return getPhrase('deleted');\n\n return UserHelper.getFullName(user) || getPhrase('anonUser');\n }\n\n return generateAnonName(user.id, user.sessionId);\n}\n","import React from 'react';\n\nexport function AnonymousSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}\n >\n <path\n d='m16.837 9.842-1.138-3.678a1.65 1.65 0 0 0-.887-1.01 1.67 1.67 0 0 0-1.348-.02l-1.14.486a.8.8 0 0 1-.647 0l-1.14-.488a1.67 1.67 0 0 0-1.348.021 1.65 1.65 0 0 0-.887 1.01L7.164 9.842a7.17 7.17 0 0 0-3.062 1.85.41.41 0 0 0 .314.683h15.17c.162 0 .31-.094.376-.241a.41.41 0 0 0-.064-.44 7.17 7.17 0 0 0-3.061-1.852M9.094 6.404a.836.836 0 0 1 1.117-.516l1.135.484c.416.181.89.181 1.306 0l1.137-.485a.836.836 0 0 1 1.117.516l.976 3.153a16.17 16.17 0 0 0-7.764 0zm-3.59 5.148c1.455-1.019 3.866-1.645 6.497-1.645a14.5 14.5 0 0 1 4.41.651c.74.229 1.444.563 2.087.994zm9.807 1.645a2.9 2.9 0 0 0-2.508 1.447 1.61 1.61 0 0 0-1.604 0c-.763-1.323-2.425-1.835-3.807-1.173s-2.016 2.272-1.452 3.69a2.93 2.93 0 0 0 3.6 1.704 2.906 2.906 0 0 0 1.968-3.445.88.88 0 0 1 .986 0 2.87 2.87 0 0 0 1.269 3.088 2.91 2.91 0 0 0 3.351-.176c.966-.762 1.341-2.048.935-3.204s-1.505-1.932-2.738-1.93m-6.62 4.936c-1.143 0-2.07-.92-2.07-2.056s.927-2.057 2.07-2.057 2.069.92 2.069 2.057a2.065 2.065 0 0 1-2.07 2.056m6.62 0c-1.142 0-2.069-.92-2.069-2.056s.927-2.057 2.07-2.057 2.068.92 2.068 2.057a2.065 2.065 0 0 1-2.069 2.056'\n fill='currentColor'\n />\n </svg>\n );\n}\n",":local {\n .iconCircle {\n border-radius: 50%;\n width: 100%;\n height: 100%;\n text-align: center;\n line-height: 100%;\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}\n","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { AnonymousSvg } from 'libs/shared/images/svg/objects/AnonymousSvg';\nimport { GroupSvg } from 'libs/shared/images/svg/objects/GroupSvg';\nimport { EngagementType } from 'libs/shared/interfaces';\n\nimport styles from './engagement-avatar.module.scss';\n\ninterface EngagementAvatarProps {\n imageCdnUrl: string;\n initials: string;\n imageUrl?: string;\n extraClasses?: string;\n showDot?: boolean;\n anonymiseUsers?: boolean;\n /** When set, determines the avatar icon based on engagement type. */\n type?: EngagementType;\n anonymousSvgSize?: SvgContainerSize;\n}\n\nexport function EngagementAvatar(props: EngagementAvatarProps): JSX.Element {\n const isAnonymous = props.type === 'anon';\n const isClassroomViews = props.type === 'student-reach';\n\n if (isClassroomViews) {\n return (\n <div className='position-relative h-100 w-100'>\n <div className={`${styles.iconCircle} bg-orange text-light ${props.extraClasses || ''}`}>\n <SvgContainer\n svg={GroupSvg}\n size={props.anonymousSvgSize || SvgContainerSize.Large}\n className='svg-container w-100 h-100'\n />\n </div>\n </div>\n );\n }\n\n if (isAnonymous) {\n return (\n <div className='position-relative h-100 w-100'>\n <div className={`${styles.iconCircle} bg-gray-700 text-light ${props.extraClasses || ''}`}>\n <SvgContainer\n svg={AnonymousSvg}\n size={props.anonymousSvgSize || SvgContainerSize.Large}\n className='svg-container w-100 h-100'\n />\n </div>\n {props.showDot && <div className={`${styles.dot} rounded-circle bg-danger`} />}\n </div>\n );\n }\n\n return (\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={props.initials}\n imageUrl={props.imageUrl}\n extraClasses={props.extraClasses}\n showDot={props.showDot}\n anonymiseUsers={props.anonymiseUsers}\n />\n );\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{Dr as e,H as t,N as n,at as r}from"./CrTgNROp.chunk.js";import{n as i}from"./CxNc1BDX.chunk.js";import{n as a}from"./Dwe-4MVf.chunk.js";import{t as o}from"./Dsv_eF8a.chunk.js";import{t as s}from"./BIVEB8w0.chunk.js";import{L as c,Q as l,R as u,Z as d,at as f,c as p,lt as m,o as h}from"./app-F8o5al1q.js";import{t as g}from"./B0BRYUl5.chunk.js";import{t as _}from"./DBpZNnAI2.chunk.js";var v=e(r(),1),y=n(),b=`reportsDefault.classroomSizeSelector`,x=10,S=40;function C(e){return(0,y.jsxs)(`div`,{className:i(`border rounded-3 p-3`,e.className),children:[(0,y.jsx)(`h3`,{className:`h6 fw-semibold mb-1`,children:(0,y.jsx)(a,{namespace:b,phrase:`classroomSizeTitle`})}),(0,y.jsx)(`p`,{className:`text-secondary mb-3`,children:(0,y.jsx)(a,{namespace:b,phrase:`classroomSizeDescription`})}),(0,y.jsx)(`label`,{className:`mb-1`,htmlFor:`classroomSize`,children:(0,y.jsx)(a,{namespace:b,phrase:`classroomSizeLabel`})}),(0,y.jsx)(m.Range,{id:`classroomSize`,min:x,max:S,step:1,value:e.classroomSize,onChange:t=>e.onClassroomSizeChanged(Number(t.target.value))}),(0,y.jsxs)(`div`,{className:`d-flex justify-content-between small mb-2`,children:[(0,y.jsx)(`span`,{children:x}),(0,y.jsx)(`span`,{children:S})]}),(0,y.jsx)(`p`,{className:`text-secondary mb-0`,children:(0,y.jsx)(a,{namespace:b,phrase:`classroomSizeSummary`,options:{count:e.classroomSize}})})]})}var w=`reportsDefault.classroomViewsToggle`;function T(e){return(0,y.jsxs)(`div`,{className:i(`border rounded-3 p-3 d-flex align-items-center gap-3`,e.className),children:[(0,y.jsxs)(`div`,{className:`flex-grow-1`,children:[(0,y.jsx)(`h3`,{className:`h6 fw-semibold mb-1`,children:(0,y.jsx)(a,{namespace:w,phrase:`title`})}),(0,y.jsx)(`p`,{className:`text-secondary mb-0`,children:(0,y.jsx)(a,{namespace:w,phrase:`description`})})]}),(0,y.jsx)(l,{on:e.enabled,floatEnd:!1,onClick:()=>e.onEnabledChanged(!e.enabled)})]})}var E=`reportsDefault.schoolHoursSelector`,D=[6,7,8,9,10,11,12,13,14,15,16,17,18],O=p.getTimezones();function k(e){let[t,n]=v.useState(!1),r=e.startHour<e.endHour;return(0,y.jsxs)(`div`,{className:i(`border rounded-3 p-3`,e.className),children:[(0,y.jsx)(`h3`,{className:`h6 fw-semibold mb-1`,children:(0,y.jsx)(a,{namespace:E,phrase:`schoolHoursTitle`})}),(0,y.jsx)(`p`,{className:`text-secondary mb-3`,children:(0,y.jsx)(a,{namespace:E,phrase:`schoolHoursDescription`})}),(0,y.jsxs)(`div`,{className:`d-flex align-items-end gap-3 mb-2`,children:[(0,y.jsxs)(`div`,{className:`flex-grow-1`,children:[(0,y.jsx)(`label`,{className:`small mb-1 d-block`,children:(0,y.jsx)(a,{namespace:E,phrase:`startTimeLabel`})}),(0,y.jsx)(`select`,{className:`form-select`,value:e.startHour,onChange:t=>e.onStartHourChanged(Number(t.target.value)),children:D.map(e=>(0,y.jsx)(`option`,{value:e,children:o.hourToFriendlyString(e)},e))})]}),(0,y.jsx)(`span`,{className:`pb-2`,children:(0,y.jsx)(a,{namespace:E,phrase:`schoolHoursTo`})}),(0,y.jsxs)(`div`,{className:`flex-grow-1`,children:[(0,y.jsx)(`label`,{className:`small mb-1 d-block`,children:(0,y.jsx)(a,{namespace:E,phrase:`endTimeLabel`})}),(0,y.jsx)(`select`,{className:`form-select`,value:e.endHour,onChange:t=>e.onEndHourChanged(Number(t.target.value)),children:D.map(e=>(0,y.jsx)(`option`,{value:e,children:o.hourToFriendlyString(e)},e))})]})]}),r?(0,y.jsx)(`p`,{className:`text-secondary mb-0`,children:(0,y.jsx)(a,{namespace:E,phrase:`schoolHoursSummary`,options:{startTime:o.hourToFriendlyString(e.startHour),endTime:o.hourToFriendlyString(e.endHour)}})}):(0,y.jsx)(`p`,{className:`text-danger mb-0`,children:(0,y.jsx)(a,{namespace:E,phrase:`schoolHoursValidation`})}),(0,y.jsx)(`div`,{className:`mt-3`,children:t?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`label`,{className:`mb-1 d-block`,children:(0,y.jsx)(a,{namespace:E,phrase:`timezoneLabel`})}),(0,y.jsx)(`select`,{className:`form-select`,value:e.timezone,onChange:t=>e.onTimezoneChanged(t.target.value),children:O.map(e=>(0,y.jsx)(`option`,{value:e,children:e},e))})]}):(0,y.jsxs)(`span`,{className:`text-secondary`,children:[(0,y.jsx)(a,{namespace:E,phrase:`timezoneCurrent`,options:{timezone:e.timezone}}),` — `,(0,y.jsx)(`button`,{className:`btn btn-link text-info p-0 align-baseline`,onClick:()=>n(!0),children:(0,y.jsx)(a,{namespace:E,phrase:`timezoneChange`})})]})})]})}var A=`reports.classroomViewsPopup`,j=s.encloseNamespace(A);function M(e){let n=h(t.ClassroomViewsPopup),{enableAlert:r}=_(n.hasClassroomViews),i=g(),s=o.timeStringToHour(n.schoolStartTime),l=o.timeStringToHour(n.schoolEndTime),[p,m]=v.useState(n.hasClassroomViews),[b,x]=v.useState(n.classroomSize),[S,w]=v.useState(n.timezone),[E,D]=v.useState(s),[O,M]=v.useState(l),[N,P]=v.useState(!1),F=!p||E<O&&S,I=p!==n.hasClassroomViews||b!==n.classroomSize||S!==n.timezone||E!==s||O!==l;async function L(){try{P(!0),await n.updateSettingsAsync({hasClassroomViews:p,schoolStartTime:o.hourToTimeString(E),schoolEndTime:o.hourToTimeString(O),timezone:S,classroomSize:b}),i.success(j(`success`)),p||r(),e.closePopup()}catch{i.error(j(`error`))}finally{P(!1)}}return(0,y.jsxs)(f,{closePopup:e.closePopup,title:j(`title`),size:`lg`,children:[(0,y.jsx)(`p`,{children:(0,y.jsx)(a,{namespace:A,phrase:`description1`})}),(0,y.jsx)(`p`,{children:(0,y.jsx)(a,{namespace:A,phrase:`description2`})}),(0,y.jsx)(T,{className:`my-3`,enabled:p,onEnabledChanged:m}),p&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(C,{className:`mb-3`,classroomSize:b,onClassroomSizeChanged:x}),(0,y.jsx)(k,{className:`mb-3`,startHour:E,endHour:O,timezone:S,onStartHourChanged:D,onEndHourChanged:M,onTimezoneChanged:w})]}),(0,y.jsxs)(d,{className:`justify-content-between`,children:[(0,y.jsx)(`a`,{href:c.getLiteArticle(u.ClassroomViews),target:`_blank`,rel:`noopener noreferrer`,className:`text-info`,children:(0,y.jsx)(a,{namespace:A,phrase:`learnMore`})}),(0,y.jsxs)(`div`,{className:`d-flex`,children:[(0,y.jsx)(d.Cancel,{onClick:e.closePopup,text:j(`close`)}),(0,y.jsx)(d.Submit,{onClick:L,text:j(`save`),showSpinner:N,variant:`dark`,disabled:!F||!I})]})]})]})}export{M as ClassroomViewsPopupView};
2
- //# sourceMappingURL=C5nG9HKq2.chunk.js.map
1
+ import{Dr as e,H as t,N as n,at as r}from"./CrTgNROp.chunk.js";import{n as i}from"./CxNc1BDX.chunk.js";import{n as a}from"./Dwe-4MVf.chunk.js";import{t as o}from"./Dsv_eF8a.chunk.js";import{t as s}from"./BIVEB8w0.chunk.js";import{L as c,Q as l,R as u,Z as d,at as f,c as p,lt as m,o as h}from"./app-DW-nP8r1.js";import{t as g}from"./B0BRYUl5.chunk.js";import{t as _}from"./DDXdEuUF2.chunk.js";var v=e(r(),1),y=n(),b=`reportsDefault.classroomSizeSelector`,x=10,S=40;function C(e){return(0,y.jsxs)(`div`,{className:i(`border rounded-3 p-3`,e.className),children:[(0,y.jsx)(`h3`,{className:`h6 fw-semibold mb-1`,children:(0,y.jsx)(a,{namespace:b,phrase:`classroomSizeTitle`})}),(0,y.jsx)(`p`,{className:`text-secondary mb-3`,children:(0,y.jsx)(a,{namespace:b,phrase:`classroomSizeDescription`})}),(0,y.jsx)(`label`,{className:`mb-1`,htmlFor:`classroomSize`,children:(0,y.jsx)(a,{namespace:b,phrase:`classroomSizeLabel`})}),(0,y.jsx)(m.Range,{id:`classroomSize`,min:x,max:S,step:1,value:e.classroomSize,onChange:t=>e.onClassroomSizeChanged(Number(t.target.value))}),(0,y.jsxs)(`div`,{className:`d-flex justify-content-between small mb-2`,children:[(0,y.jsx)(`span`,{children:x}),(0,y.jsx)(`span`,{children:S})]}),(0,y.jsx)(`p`,{className:`text-secondary mb-0`,children:(0,y.jsx)(a,{namespace:b,phrase:`classroomSizeSummary`,options:{count:e.classroomSize}})})]})}var w=`reportsDefault.classroomViewsToggle`;function T(e){return(0,y.jsxs)(`div`,{className:i(`border rounded-3 p-3 d-flex align-items-center gap-3`,e.className),children:[(0,y.jsxs)(`div`,{className:`flex-grow-1`,children:[(0,y.jsx)(`h3`,{className:`h6 fw-semibold mb-1`,children:(0,y.jsx)(a,{namespace:w,phrase:`title`})}),(0,y.jsx)(`p`,{className:`text-secondary mb-0`,children:(0,y.jsx)(a,{namespace:w,phrase:`description`})})]}),(0,y.jsx)(l,{on:e.enabled,floatEnd:!1,onClick:()=>e.onEnabledChanged(!e.enabled)})]})}var E=`reportsDefault.schoolHoursSelector`,D=[6,7,8,9,10,11,12,13,14,15,16,17,18],O=p.getTimezones();function k(e){let[t,n]=v.useState(!1),r=e.startHour<e.endHour;return(0,y.jsxs)(`div`,{className:i(`border rounded-3 p-3`,e.className),children:[(0,y.jsx)(`h3`,{className:`h6 fw-semibold mb-1`,children:(0,y.jsx)(a,{namespace:E,phrase:`schoolHoursTitle`})}),(0,y.jsx)(`p`,{className:`text-secondary mb-3`,children:(0,y.jsx)(a,{namespace:E,phrase:`schoolHoursDescription`})}),(0,y.jsxs)(`div`,{className:`d-flex align-items-end gap-3 mb-2`,children:[(0,y.jsxs)(`div`,{className:`flex-grow-1`,children:[(0,y.jsx)(`label`,{className:`small mb-1 d-block`,children:(0,y.jsx)(a,{namespace:E,phrase:`startTimeLabel`})}),(0,y.jsx)(`select`,{className:`form-select`,value:e.startHour,onChange:t=>e.onStartHourChanged(Number(t.target.value)),children:D.map(e=>(0,y.jsx)(`option`,{value:e,children:o.hourToFriendlyString(e)},e))})]}),(0,y.jsx)(`span`,{className:`pb-2`,children:(0,y.jsx)(a,{namespace:E,phrase:`schoolHoursTo`})}),(0,y.jsxs)(`div`,{className:`flex-grow-1`,children:[(0,y.jsx)(`label`,{className:`small mb-1 d-block`,children:(0,y.jsx)(a,{namespace:E,phrase:`endTimeLabel`})}),(0,y.jsx)(`select`,{className:`form-select`,value:e.endHour,onChange:t=>e.onEndHourChanged(Number(t.target.value)),children:D.map(e=>(0,y.jsx)(`option`,{value:e,children:o.hourToFriendlyString(e)},e))})]})]}),r?(0,y.jsx)(`p`,{className:`text-secondary mb-0`,children:(0,y.jsx)(a,{namespace:E,phrase:`schoolHoursSummary`,options:{startTime:o.hourToFriendlyString(e.startHour),endTime:o.hourToFriendlyString(e.endHour)}})}):(0,y.jsx)(`p`,{className:`text-danger mb-0`,children:(0,y.jsx)(a,{namespace:E,phrase:`schoolHoursValidation`})}),(0,y.jsx)(`div`,{className:`mt-3`,children:t?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`label`,{className:`mb-1 d-block`,children:(0,y.jsx)(a,{namespace:E,phrase:`timezoneLabel`})}),(0,y.jsx)(`select`,{className:`form-select`,value:e.timezone,onChange:t=>e.onTimezoneChanged(t.target.value),children:O.map(e=>(0,y.jsx)(`option`,{value:e,children:e},e))})]}):(0,y.jsxs)(`span`,{className:`text-secondary`,children:[(0,y.jsx)(a,{namespace:E,phrase:`timezoneCurrent`,options:{timezone:e.timezone}}),` — `,(0,y.jsx)(`button`,{className:`btn btn-link text-info p-0 align-baseline`,onClick:()=>n(!0),children:(0,y.jsx)(a,{namespace:E,phrase:`timezoneChange`})})]})})]})}var A=`reports.classroomViewsPopup`,j=s.encloseNamespace(A);function M(e){let n=h(t.ClassroomViewsPopup),{enableAlert:r}=_(n.hasClassroomViews),i=g(),s=o.timeStringToHour(n.schoolStartTime),l=o.timeStringToHour(n.schoolEndTime),[p,m]=v.useState(n.hasClassroomViews),[b,x]=v.useState(n.classroomSize),[S,w]=v.useState(n.timezone),[E,D]=v.useState(s),[O,M]=v.useState(l),[N,P]=v.useState(!1),F=!p||E<O&&S,I=p!==n.hasClassroomViews||b!==n.classroomSize||S!==n.timezone||E!==s||O!==l;async function L(){try{P(!0),await n.updateSettingsAsync({hasClassroomViews:p,schoolStartTime:o.hourToTimeString(E),schoolEndTime:o.hourToTimeString(O),timezone:S,classroomSize:b}),i.success(j(`success`)),p||r(),e.closePopup()}catch{i.error(j(`error`))}finally{P(!1)}}return(0,y.jsxs)(f,{closePopup:e.closePopup,title:j(`title`),size:`lg`,children:[(0,y.jsx)(`p`,{children:(0,y.jsx)(a,{namespace:A,phrase:`description1`})}),(0,y.jsx)(`p`,{children:(0,y.jsx)(a,{namespace:A,phrase:`description2`})}),(0,y.jsx)(T,{className:`my-3`,enabled:p,onEnabledChanged:m}),p&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(C,{className:`mb-3`,classroomSize:b,onClassroomSizeChanged:x}),(0,y.jsx)(k,{className:`mb-3`,startHour:E,endHour:O,timezone:S,onStartHourChanged:D,onEndHourChanged:M,onTimezoneChanged:w})]}),(0,y.jsxs)(d,{className:`justify-content-between`,children:[(0,y.jsx)(`a`,{href:c.getLiteArticle(u.ClassroomViews),target:`_blank`,rel:`noopener noreferrer`,className:`text-info`,children:(0,y.jsx)(a,{namespace:A,phrase:`learnMore`})}),(0,y.jsxs)(`div`,{className:`d-flex`,children:[(0,y.jsx)(d.Cancel,{onClick:e.closePopup,text:j(`close`)}),(0,y.jsx)(d.Submit,{onClick:L,text:j(`save`),showSpinner:N,variant:`dark`,disabled:!F||!I})]})]})]})}export{M as ClassroomViewsPopupView};
2
+ //# sourceMappingURL=CiMD5u2s2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"C5nG9HKq2.chunk.js","names":[],"sources":["../../src/apps/default/views/classroom-views-popup/components/classroom-size-selector/ClassroomSizeSelector.tsx","../../src/apps/default/views/classroom-views-popup/components/classroom-views-toggle/ClassroomViewsToggle.tsx","../../src/apps/default/views/classroom-views-popup/components/school-hours-selector/SchoolHoursSelector.tsx","../../src/apps/default/views/classroom-views-popup/ClassroomViewsPopupView.tsx"],"sourcesContent":["import React from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'reportsDefault.classroomSizeSelector';\n\nconst MIN_CLASSROOM_SIZE = 10;\nconst MAX_CLASSROOM_SIZE = 40;\n\ninterface ClassroomSizeSelectorProps {\n className?: string;\n classroomSize: number;\n onClassroomSizeChanged: (size: number) => void;\n}\n\nexport function ClassroomSizeSelector(props: ClassroomSizeSelectorProps) {\n return (\n <div className={classNames('border rounded-3 p-3', props.className)}>\n <h3 className='h6 fw-semibold mb-1'><Text namespace={namespace} phrase='classroomSizeTitle' /></h3>\n <p className='text-secondary mb-3'><Text namespace={namespace} phrase='classroomSizeDescription' /></p>\n\n <label className='mb-1' htmlFor='classroomSize'><Text namespace={namespace} phrase='classroomSizeLabel' /></label>\n\n <Form.Range\n id='classroomSize'\n min={MIN_CLASSROOM_SIZE}\n max={MAX_CLASSROOM_SIZE}\n step={1}\n value={props.classroomSize}\n onChange={e => props.onClassroomSizeChanged(Number(e.target.value))}\n />\n <div className='d-flex justify-content-between small mb-2'>\n <span>{MIN_CLASSROOM_SIZE}</span>\n <span>{MAX_CLASSROOM_SIZE}</span>\n </div>\n\n <p className='text-secondary mb-0'>\n <Text namespace={namespace} phrase='classroomSizeSummary' options={{ count: props.classroomSize }} />\n </p>\n </div>\n );\n}\n","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\n\nconst namespace = 'reportsDefault.classroomViewsToggle';\n\ninterface ClassroomViewsToggleProps {\n className?: string;\n enabled: boolean;\n onEnabledChanged: (enabled: boolean) => void;\n}\n\nexport function ClassroomViewsToggle(props: ClassroomViewsToggleProps) {\n return (\n <div className={classNames('border rounded-3 p-3 d-flex align-items-center gap-3', props.className)}>\n <div className='flex-grow-1'>\n <h3 className='h6 fw-semibold mb-1'><Text namespace={namespace} phrase='title' /></h3>\n <p className='text-secondary mb-0'><Text namespace={namespace} phrase='description' /></p>\n </div>\n\n <ToggleSwitch\n on={props.enabled}\n floatEnd={false}\n onClick={() => props.onEnabledChanged(!props.enabled)}\n />\n </div>\n );\n}\n","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'reportsDefault.schoolHoursSelector';\n\nconst SCHOOL_HOURS = [ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ];\nconst ALL_TIMEZONES = TimezoneHelper.getTimezones();\n\ninterface SchoolHoursSelectorProps {\n className?: string;\n startHour: number;\n endHour: number;\n timezone: string;\n onStartHourChanged: (hour: number) => void;\n onEndHourChanged: (hour: number) => void;\n onTimezoneChanged: (tz: string) => void;\n}\n\nexport function SchoolHoursSelector(props: SchoolHoursSelectorProps) {\n const [ showTimezoneSelect, setShowTimezoneSelect ] = React.useState(false);\n\n const isTimeRangeValid = props.startHour < props.endHour;\n\n return (\n <div className={classNames('border rounded-3 p-3', props.className)}>\n <h3 className='h6 fw-semibold mb-1'><Text namespace={namespace} phrase='schoolHoursTitle' /></h3>\n <p className='text-secondary mb-3'><Text namespace={namespace} phrase='schoolHoursDescription' /></p>\n\n <div className='d-flex align-items-end gap-3 mb-2'>\n <div className='flex-grow-1'>\n <label className='small mb-1 d-block'><Text namespace={namespace} phrase='startTimeLabel' /></label>\n <select\n className='form-select'\n value={props.startHour}\n onChange={e => props.onStartHourChanged(Number(e.target.value))}\n >\n {SCHOOL_HOURS.map(hour => (\n <option key={hour} value={hour}>{DateHelper.hourToFriendlyString(hour)}</option>\n ))}\n </select>\n </div>\n <span className='pb-2'><Text namespace={namespace} phrase='schoolHoursTo' /></span>\n <div className='flex-grow-1'>\n <label className='small mb-1 d-block'><Text namespace={namespace} phrase='endTimeLabel' /></label>\n <select\n className='form-select'\n value={props.endHour}\n onChange={e => props.onEndHourChanged(Number(e.target.value))}\n >\n {SCHOOL_HOURS.map(hour => (\n <option key={hour} value={hour}>{DateHelper.hourToFriendlyString(hour)}</option>\n ))}\n </select>\n </div>\n </div>\n\n {isTimeRangeValid ? (\n <p className='text-secondary mb-0'>\n <Text\n namespace={namespace}\n phrase='schoolHoursSummary'\n options={{\n startTime: DateHelper.hourToFriendlyString(props.startHour),\n endTime: DateHelper.hourToFriendlyString(props.endHour)\n }}\n />\n </p>\n ) : (\n <p className='text-danger mb-0'>\n <Text namespace={namespace} phrase='schoolHoursValidation' />\n </p>\n )}\n\n <div className='mt-3'>\n {showTimezoneSelect ? (\n <>\n <label className='mb-1 d-block'><Text namespace={namespace} phrase='timezoneLabel' /></label>\n <select className='form-select' value={props.timezone} onChange={e => props.onTimezoneChanged(e.target.value)}>\n {ALL_TIMEZONES.map(tz => (\n <option key={tz} value={tz}>{tz}</option>\n ))}\n </select>\n </>\n ) : (\n <span className='text-secondary'>\n <Text namespace={namespace} phrase='timezoneCurrent' options={{ timezone: props.timezone }} />\n {' — '}\n <button className='btn btn-link text-info p-0 align-baseline' onClick={() => setShowTimezoneSelect(true)}>\n <Text namespace={namespace} phrase='timezoneChange' />\n </button>\n </span>\n )}\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { useClassroomViewsAlert } from 'shared/hooks/useClassroomViewsAlert';\nimport { useClassroomViewsSettings } from 'shared/hooks/useClassroomViewsSettings';\n\nimport { ClassroomSizeSelector } from './components/classroom-size-selector/ClassroomSizeSelector';\nimport { ClassroomViewsToggle } from './components/classroom-views-toggle/ClassroomViewsToggle';\nimport { SchoolHoursSelector } from './components/school-hours-selector/SchoolHoursSelector';\n\nconst namespace = 'reports.classroomViewsPopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function ClassroomViewsPopupView(props: PopupViewProps): JSX.Element {\n const classroomViewsSettings = useClassroomViewsSettings(LocationContext.ClassroomViewsPopup);\n const { enableAlert } = useClassroomViewsAlert(classroomViewsSettings.hasClassroomViews);\n const alerts = useAlerts();\n\n const initialStartHour = DateHelper.timeStringToHour(classroomViewsSettings.schoolStartTime);\n const initialEndHour = DateHelper.timeStringToHour(classroomViewsSettings.schoolEndTime);\n \n const [ hasClassroomViews, setHasClassroomViews ] = React.useState(classroomViewsSettings.hasClassroomViews);\n const [ classroomSize, setClassroomSize ] = React.useState(classroomViewsSettings.classroomSize);\n const [ timezone, setTimezone ] = React.useState(classroomViewsSettings.timezone);\n const [ schoolStartHour, setSchoolStartHour ] = React.useState(initialStartHour);\n const [ schoolEndHour, setSchoolEndHour ] = React.useState(initialEndHour);\n const [ isSaving, setIsSaving ] = React.useState(false);\n\n const isFormValid = hasClassroomViews ? (schoolStartHour < schoolEndHour && timezone) : true;\n const isDirty = hasClassroomViews !== classroomViewsSettings.hasClassroomViews\n || classroomSize !== classroomViewsSettings.classroomSize\n || timezone !== classroomViewsSettings.timezone\n || schoolStartHour !== initialStartHour\n || schoolEndHour !== initialEndHour;\n\n async function onSave() {\n try {\n setIsSaving(true);\n \n await classroomViewsSettings.updateSettingsAsync({\n hasClassroomViews,\n schoolStartTime: DateHelper.hourToTimeString(schoolStartHour),\n schoolEndTime: DateHelper.hourToTimeString(schoolEndHour),\n timezone,\n classroomSize\n });\n \n alerts.success(getPhrase('success'));\n\n // We re-enable the alert if the user has just turned off Classroom Views, \n // to give them a reminder about the feature and how to turn it back on..\n if (!hasClassroomViews)\n enableAlert();\n \n props.closePopup();\n } catch {\n alerts.error(getPhrase('error'));\n } finally {\n setIsSaving(false);\n }\n }\n\n return (\n <Popup\n closePopup={props.closePopup}\n title={getPhrase('title')}\n size='lg'\n >\n <p><Text namespace={namespace} phrase='description1' /></p>\n <p><Text namespace={namespace} phrase='description2' /></p>\n\n <ClassroomViewsToggle\n className='my-3'\n enabled={hasClassroomViews}\n onEnabledChanged={setHasClassroomViews}\n />\n\n {hasClassroomViews && (\n <>\n <ClassroomSizeSelector\n className='mb-3'\n classroomSize={classroomSize}\n onClassroomSizeChanged={setClassroomSize}\n />\n\n <SchoolHoursSelector\n className='mb-3'\n startHour={schoolStartHour}\n endHour={schoolEndHour}\n timezone={timezone}\n onStartHourChanged={setSchoolStartHour}\n onEndHourChanged={setSchoolEndHour}\n onTimezoneChanged={setTimezone}\n />\n </>\n )}\n\n <PopupButtons className='justify-content-between'>\n <a href={ArticleHelper.getLiteArticle(LiteSupportArticle.ClassroomViews)} target='_blank' rel='noopener noreferrer' className='text-info'>\n <Text namespace={namespace} phrase='learnMore' />\n </a>\n <div className='d-flex'>\n <PopupButtons.Cancel onClick={props.closePopup} text={getPhrase('close')} />\n <PopupButtons.Submit onClick={onSave} text={getPhrase('save')} showSpinner={isSaving} variant='dark' disabled={!isFormValid || !isDirty} />\n </div>\n </PopupButtons>\n </Popup>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CiMD5u2s2.chunk.js","names":[],"sources":["../../src/apps/default/views/classroom-views-popup/components/classroom-size-selector/ClassroomSizeSelector.tsx","../../src/apps/default/views/classroom-views-popup/components/classroom-views-toggle/ClassroomViewsToggle.tsx","../../src/apps/default/views/classroom-views-popup/components/school-hours-selector/SchoolHoursSelector.tsx","../../src/apps/default/views/classroom-views-popup/ClassroomViewsPopupView.tsx"],"sourcesContent":["import React from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'reportsDefault.classroomSizeSelector';\n\nconst MIN_CLASSROOM_SIZE = 10;\nconst MAX_CLASSROOM_SIZE = 40;\n\ninterface ClassroomSizeSelectorProps {\n className?: string;\n classroomSize: number;\n onClassroomSizeChanged: (size: number) => void;\n}\n\nexport function ClassroomSizeSelector(props: ClassroomSizeSelectorProps) {\n return (\n <div className={classNames('border rounded-3 p-3', props.className)}>\n <h3 className='h6 fw-semibold mb-1'><Text namespace={namespace} phrase='classroomSizeTitle' /></h3>\n <p className='text-secondary mb-3'><Text namespace={namespace} phrase='classroomSizeDescription' /></p>\n\n <label className='mb-1' htmlFor='classroomSize'><Text namespace={namespace} phrase='classroomSizeLabel' /></label>\n\n <Form.Range\n id='classroomSize'\n min={MIN_CLASSROOM_SIZE}\n max={MAX_CLASSROOM_SIZE}\n step={1}\n value={props.classroomSize}\n onChange={e => props.onClassroomSizeChanged(Number(e.target.value))}\n />\n <div className='d-flex justify-content-between small mb-2'>\n <span>{MIN_CLASSROOM_SIZE}</span>\n <span>{MAX_CLASSROOM_SIZE}</span>\n </div>\n\n <p className='text-secondary mb-0'>\n <Text namespace={namespace} phrase='classroomSizeSummary' options={{ count: props.classroomSize }} />\n </p>\n </div>\n );\n}\n","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\n\nconst namespace = 'reportsDefault.classroomViewsToggle';\n\ninterface ClassroomViewsToggleProps {\n className?: string;\n enabled: boolean;\n onEnabledChanged: (enabled: boolean) => void;\n}\n\nexport function ClassroomViewsToggle(props: ClassroomViewsToggleProps) {\n return (\n <div className={classNames('border rounded-3 p-3 d-flex align-items-center gap-3', props.className)}>\n <div className='flex-grow-1'>\n <h3 className='h6 fw-semibold mb-1'><Text namespace={namespace} phrase='title' /></h3>\n <p className='text-secondary mb-0'><Text namespace={namespace} phrase='description' /></p>\n </div>\n\n <ToggleSwitch\n on={props.enabled}\n floatEnd={false}\n onClick={() => props.onEnabledChanged(!props.enabled)}\n />\n </div>\n );\n}\n","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'reportsDefault.schoolHoursSelector';\n\nconst SCHOOL_HOURS = [ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ];\nconst ALL_TIMEZONES = TimezoneHelper.getTimezones();\n\ninterface SchoolHoursSelectorProps {\n className?: string;\n startHour: number;\n endHour: number;\n timezone: string;\n onStartHourChanged: (hour: number) => void;\n onEndHourChanged: (hour: number) => void;\n onTimezoneChanged: (tz: string) => void;\n}\n\nexport function SchoolHoursSelector(props: SchoolHoursSelectorProps) {\n const [ showTimezoneSelect, setShowTimezoneSelect ] = React.useState(false);\n\n const isTimeRangeValid = props.startHour < props.endHour;\n\n return (\n <div className={classNames('border rounded-3 p-3', props.className)}>\n <h3 className='h6 fw-semibold mb-1'><Text namespace={namespace} phrase='schoolHoursTitle' /></h3>\n <p className='text-secondary mb-3'><Text namespace={namespace} phrase='schoolHoursDescription' /></p>\n\n <div className='d-flex align-items-end gap-3 mb-2'>\n <div className='flex-grow-1'>\n <label className='small mb-1 d-block'><Text namespace={namespace} phrase='startTimeLabel' /></label>\n <select\n className='form-select'\n value={props.startHour}\n onChange={e => props.onStartHourChanged(Number(e.target.value))}\n >\n {SCHOOL_HOURS.map(hour => (\n <option key={hour} value={hour}>{DateHelper.hourToFriendlyString(hour)}</option>\n ))}\n </select>\n </div>\n <span className='pb-2'><Text namespace={namespace} phrase='schoolHoursTo' /></span>\n <div className='flex-grow-1'>\n <label className='small mb-1 d-block'><Text namespace={namespace} phrase='endTimeLabel' /></label>\n <select\n className='form-select'\n value={props.endHour}\n onChange={e => props.onEndHourChanged(Number(e.target.value))}\n >\n {SCHOOL_HOURS.map(hour => (\n <option key={hour} value={hour}>{DateHelper.hourToFriendlyString(hour)}</option>\n ))}\n </select>\n </div>\n </div>\n\n {isTimeRangeValid ? (\n <p className='text-secondary mb-0'>\n <Text\n namespace={namespace}\n phrase='schoolHoursSummary'\n options={{\n startTime: DateHelper.hourToFriendlyString(props.startHour),\n endTime: DateHelper.hourToFriendlyString(props.endHour)\n }}\n />\n </p>\n ) : (\n <p className='text-danger mb-0'>\n <Text namespace={namespace} phrase='schoolHoursValidation' />\n </p>\n )}\n\n <div className='mt-3'>\n {showTimezoneSelect ? (\n <>\n <label className='mb-1 d-block'><Text namespace={namespace} phrase='timezoneLabel' /></label>\n <select className='form-select' value={props.timezone} onChange={e => props.onTimezoneChanged(e.target.value)}>\n {ALL_TIMEZONES.map(tz => (\n <option key={tz} value={tz}>{tz}</option>\n ))}\n </select>\n </>\n ) : (\n <span className='text-secondary'>\n <Text namespace={namespace} phrase='timezoneCurrent' options={{ timezone: props.timezone }} />\n {' — '}\n <button className='btn btn-link text-info p-0 align-baseline' onClick={() => setShowTimezoneSelect(true)}>\n <Text namespace={namespace} phrase='timezoneChange' />\n </button>\n </span>\n )}\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { useClassroomViewsAlert } from 'shared/hooks/useClassroomViewsAlert';\nimport { useClassroomViewsSettings } from 'shared/hooks/useClassroomViewsSettings';\n\nimport { ClassroomSizeSelector } from './components/classroom-size-selector/ClassroomSizeSelector';\nimport { ClassroomViewsToggle } from './components/classroom-views-toggle/ClassroomViewsToggle';\nimport { SchoolHoursSelector } from './components/school-hours-selector/SchoolHoursSelector';\n\nconst namespace = 'reports.classroomViewsPopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function ClassroomViewsPopupView(props: PopupViewProps): JSX.Element {\n const classroomViewsSettings = useClassroomViewsSettings(LocationContext.ClassroomViewsPopup);\n const { enableAlert } = useClassroomViewsAlert(classroomViewsSettings.hasClassroomViews);\n const alerts = useAlerts();\n\n const initialStartHour = DateHelper.timeStringToHour(classroomViewsSettings.schoolStartTime);\n const initialEndHour = DateHelper.timeStringToHour(classroomViewsSettings.schoolEndTime);\n \n const [ hasClassroomViews, setHasClassroomViews ] = React.useState(classroomViewsSettings.hasClassroomViews);\n const [ classroomSize, setClassroomSize ] = React.useState(classroomViewsSettings.classroomSize);\n const [ timezone, setTimezone ] = React.useState(classroomViewsSettings.timezone);\n const [ schoolStartHour, setSchoolStartHour ] = React.useState(initialStartHour);\n const [ schoolEndHour, setSchoolEndHour ] = React.useState(initialEndHour);\n const [ isSaving, setIsSaving ] = React.useState(false);\n\n const isFormValid = hasClassroomViews ? (schoolStartHour < schoolEndHour && timezone) : true;\n const isDirty = hasClassroomViews !== classroomViewsSettings.hasClassroomViews\n || classroomSize !== classroomViewsSettings.classroomSize\n || timezone !== classroomViewsSettings.timezone\n || schoolStartHour !== initialStartHour\n || schoolEndHour !== initialEndHour;\n\n async function onSave() {\n try {\n setIsSaving(true);\n \n await classroomViewsSettings.updateSettingsAsync({\n hasClassroomViews,\n schoolStartTime: DateHelper.hourToTimeString(schoolStartHour),\n schoolEndTime: DateHelper.hourToTimeString(schoolEndHour),\n timezone,\n classroomSize\n });\n \n alerts.success(getPhrase('success'));\n\n // We re-enable the alert if the user has just turned off Classroom Views, \n // to give them a reminder about the feature and how to turn it back on..\n if (!hasClassroomViews)\n enableAlert();\n \n props.closePopup();\n } catch {\n alerts.error(getPhrase('error'));\n } finally {\n setIsSaving(false);\n }\n }\n\n return (\n <Popup\n closePopup={props.closePopup}\n title={getPhrase('title')}\n size='lg'\n >\n <p><Text namespace={namespace} phrase='description1' /></p>\n <p><Text namespace={namespace} phrase='description2' /></p>\n\n <ClassroomViewsToggle\n className='my-3'\n enabled={hasClassroomViews}\n onEnabledChanged={setHasClassroomViews}\n />\n\n {hasClassroomViews && (\n <>\n <ClassroomSizeSelector\n className='mb-3'\n classroomSize={classroomSize}\n onClassroomSizeChanged={setClassroomSize}\n />\n\n <SchoolHoursSelector\n className='mb-3'\n startHour={schoolStartHour}\n endHour={schoolEndHour}\n timezone={timezone}\n onStartHourChanged={setSchoolStartHour}\n onEndHourChanged={setSchoolEndHour}\n onTimezoneChanged={setTimezone}\n />\n </>\n )}\n\n <PopupButtons className='justify-content-between'>\n <a href={ArticleHelper.getLiteArticle(LiteSupportArticle.ClassroomViews)} target='_blank' rel='noopener noreferrer' className='text-info'>\n <Text namespace={namespace} phrase='learnMore' />\n </a>\n <div className='d-flex'>\n <PopupButtons.Cancel onClick={props.closePopup} text={getPhrase('close')} />\n <PopupButtons.Submit onClick={onSave} text={getPhrase('save')} showSpinner={isSaving} variant='dark' disabled={!isFormValid || !isDirty} />\n </div>\n </PopupButtons>\n </Popup>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{C as e,Dr as t,E as n,N as r,at as i,n as a,s as o,x as s}from"./CrTgNROp.chunk.js";import{ft as c,mt as l,n as u,pt as d}from"./app-F8o5al1q.js";var f=t(i()),p=t(n()),m=r(),h=l(`h4`);h.displayName=`DivStyledAsH4`;var g=f.forwardRef(({className:e,bsPrefix:t,as:n=h,...r},i)=>(t=s(t,`alert-heading`),(0,m.jsx)(n,{ref:i,className:(0,p.default)(e,t),...r})));g.displayName=`AlertHeading`;var _=f.forwardRef(({className:e,bsPrefix:t,as:n=d,...r},i)=>(t=s(t,`alert-link`),(0,m.jsx)(n,{ref:i,className:(0,p.default)(e,t),...r})));_.displayName=`AlertLink`;var v=f.forwardRef((t,n)=>{let{bsPrefix:r,show:i=!0,closeLabel:l=`Close alert`,closeVariant:u,className:d,children:f,variant:h=`primary`,onClose:g,dismissible:_,transition:v=a,...y}=e(t,{show:`onClose`}),b=s(r,`alert`),x=o(e=>{g&&g(!1,e)}),S=v===!0?a:v,C=(0,m.jsxs)(`div`,{role:`alert`,...S?void 0:y,ref:n,className:(0,p.default)(d,b,h&&`${b}-${h}`,_&&`${b}-dismissible`),children:[_&&(0,m.jsx)(c,{onClick:x,"aria-label":l,variant:u}),f]});return S?(0,m.jsx)(S,{unmountOnExit:!0,...y,ref:void 0,in:i,children:C}):i?C:null});v.displayName=`Alert`;var y=Object.assign(v,{Link:_,Heading:g});function b({error:e}){return u({title:`Dev Error`}),e?(0,m.jsxs)(`div`,{className:`px-3`,children:[(0,m.jsx)(`h1`,{children:e.name}),(0,m.jsx)(y,{variant:`danger`,children:(0,m.jsx)(`h2`,{children:e.message})}),(0,m.jsxs)(y,{variant:`warning`,children:[(0,m.jsx)(`h3`,{children:`Call stack`}),(0,m.jsx)(`code`,{children:e.stack})]})]}):(0,m.jsx)(m.Fragment,{})}export{b as DevErrorView};
2
- //# sourceMappingURL=q1iKm4P4.chunk.js.map
1
+ import{C as e,Dr as t,E as n,N as r,at as i,n as a,s as o,x as s}from"./CrTgNROp.chunk.js";import{ft as c,mt as l,n as u,pt as d}from"./app-DW-nP8r1.js";var f=t(i()),p=t(n()),m=r(),h=l(`h4`);h.displayName=`DivStyledAsH4`;var g=f.forwardRef(({className:e,bsPrefix:t,as:n=h,...r},i)=>(t=s(t,`alert-heading`),(0,m.jsx)(n,{ref:i,className:(0,p.default)(e,t),...r})));g.displayName=`AlertHeading`;var _=f.forwardRef(({className:e,bsPrefix:t,as:n=d,...r},i)=>(t=s(t,`alert-link`),(0,m.jsx)(n,{ref:i,className:(0,p.default)(e,t),...r})));_.displayName=`AlertLink`;var v=f.forwardRef((t,n)=>{let{bsPrefix:r,show:i=!0,closeLabel:l=`Close alert`,closeVariant:u,className:d,children:f,variant:h=`primary`,onClose:g,dismissible:_,transition:v=a,...y}=e(t,{show:`onClose`}),b=s(r,`alert`),x=o(e=>{g&&g(!1,e)}),S=v===!0?a:v,C=(0,m.jsxs)(`div`,{role:`alert`,...S?void 0:y,ref:n,className:(0,p.default)(d,b,h&&`${b}-${h}`,_&&`${b}-dismissible`),children:[_&&(0,m.jsx)(c,{onClick:x,"aria-label":l,variant:u}),f]});return S?(0,m.jsx)(S,{unmountOnExit:!0,...y,ref:void 0,in:i,children:C}):i?C:null});v.displayName=`Alert`;var y=Object.assign(v,{Link:_,Heading:g});function b({error:e}){return u({title:`Dev Error`}),e?(0,m.jsxs)(`div`,{className:`px-3`,children:[(0,m.jsx)(`h1`,{children:e.name}),(0,m.jsx)(y,{variant:`danger`,children:(0,m.jsx)(`h2`,{children:e.message})}),(0,m.jsxs)(y,{variant:`warning`,children:[(0,m.jsx)(`h3`,{children:`Call stack`}),(0,m.jsx)(`code`,{children:e.stack})]})]}):(0,m.jsx)(m.Fragment,{})}export{b as DevErrorView};
2
+ //# sourceMappingURL=Coxg-CDT.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"q1iKm4P4.chunk.js","names":["divWithClassName"],"sources":["../../../../../node_modules/react-bootstrap/esm/AlertHeading.js","../../../../../node_modules/react-bootstrap/esm/AlertLink.js","../../../../../node_modules/react-bootstrap/esm/Alert.js","../../../../libs/shared/src/views/dev-error/DevErrorView.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nconst AlertHeading = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-heading');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertHeading.displayName = 'AlertHeading';\nexport default AlertHeading;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AlertLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = Anchor,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertLink.displayName = 'AlertLink';\nexport default AlertLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AlertHeading from './AlertHeading';\nimport AlertLink from './AlertLink';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Alert = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n bsPrefix,\n show = true,\n closeLabel = 'Close alert',\n closeVariant,\n className,\n children,\n variant = 'primary',\n onClose,\n dismissible,\n transition = Fade,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'alert');\n const handleClose = useEventCallback(e => {\n if (onClose) {\n onClose(false, e);\n }\n });\n const Transition = transition === true ? Fade : transition;\n const alert = /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n ...(!Transition ? props : undefined),\n ref: ref,\n className: classNames(className, prefix, variant && `${prefix}-${variant}`, dismissible && `${prefix}-dismissible`),\n children: [dismissible && /*#__PURE__*/_jsx(CloseButton, {\n onClick: handleClose,\n \"aria-label\": closeLabel,\n variant: closeVariant\n }), children]\n });\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/_jsx(Transition, {\n unmountOnExit: true,\n ...props,\n ref: undefined,\n in: show,\n children: alert\n });\n});\nAlert.displayName = 'Alert';\nexport default Object.assign(Alert, {\n Link: AlertLink,\n Heading: AlertHeading\n});","import * as React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\ninterface DevErrorViewProps {\n error: Error;\n}\n\nexport function DevErrorView({ error }: DevErrorViewProps): React.ReactElement {\n useSetPageMetadata({ title: 'Dev Error' });\n\n if (!error)\n return <></>;\n\n return (\n <div className='px-3'>\n <h1>{error.name}</h1>\n <Alert variant='danger'>\n <h2>{error.message}</h2>\n </Alert>\n <Alert variant='warning'>\n <h3>Call stack</h3>\n <code>{error.stack}</code>\n </Alert>\n </div>\n );\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"qLAOM,EAAgBA,EAAiB,IAAI,EAC3C,EAAc,YAAc,gBAC5B,IAAM,EAA4B,EAAM,YAAY,CAClD,YACA,WACA,GAAI,EAAY,EAChB,GAAG,GACF,KACD,EAAW,EAAmB,EAAU,eAAe,GACnC,EAAA,EAAA,IAAA,CAAK,EAAW,CAC7B,MACL,WAAA,EAAA,EAAA,QAAA,CAAsB,EAAW,CAAQ,EACzC,GAAG,CACL,CAAC,EACF,EACD,EAAa,YAAc,eCf3B,IAAM,EAAyB,EAAM,YAAY,CAC/C,YACA,WACA,GAAI,EAAY,EAChB,GAAG,GACF,KACD,EAAW,EAAmB,EAAU,YAAY,GAChC,EAAA,EAAA,IAAA,CAAK,EAAW,CAC7B,MACL,WAAA,EAAA,EAAA,QAAA,CAAsB,EAAW,CAAQ,EACzC,GAAG,CACL,CAAC,EACF,EACD,EAAU,YAAc,YCPxB,IAAM,EAAqB,EAAM,YAAY,EAAmB,IAAQ,CACtE,GAAM,CACJ,WACA,OAAO,GACP,aAAa,cACb,eACA,YACA,WACA,UAAU,UACV,UACA,cACA,aAAa,EACb,GAAG,GACD,EAAgB,EAAmB,CACrC,KAAM,SACR,CAAC,EACK,EAAS,EAAmB,EAAU,OAAO,EAC7C,EAAc,EAAiB,GAAK,CACpC,GACF,EAAQ,GAAO,CAAC,CAEpB,CAAC,EACK,EAAa,IAAe,GAAO,EAAO,EAC1C,GAAqB,EAAA,EAAA,KAAA,CAAM,MAAO,CACtC,KAAM,QACN,GAAK,EAAqB,IAAA,GAAR,EACb,MACL,WAAA,EAAA,EAAA,QAAA,CAAsB,EAAW,EAAQ,GAAW,GAAG,EAAO,GAAG,IAAW,GAAe,GAAG,EAAO,aAAa,EAClH,SAAU,CAAC,IAA4B,EAAA,EAAA,IAAA,CAAK,EAAa,CACvD,QAAS,EACT,aAAc,EACd,QAAS,CACX,CAAC,EAAG,CAAQ,CACd,CAAC,EAED,OADK,GACe,EAAA,EAAA,IAAA,CAAK,EAAY,CACnC,cAAe,GACf,GAAG,EACH,IAAK,IAAA,GACL,GAAI,EACJ,SAAU,CACZ,CAAC,EAPuB,EAAO,EAAQ,IAQzC,CAAC,EACD,EAAM,YAAc,QACpB,IAAA,EAAe,OAAO,OAAO,EAAO,CAClC,KAAM,EACN,QAAS,CACX,CAAC,ECnDD,SAAgB,EAAa,CAAE,SAAgD,CAM7E,OALA,EAAmB,CAAE,MAAO,WAAY,CAAC,EAEpC,GAIH,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,gBAAf,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAM,IAAS,CAAA,GACpB,EAAA,EAAA,IAAA,CAAC,EAAD,CAAO,QAAQ,mBACb,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAM,OAAY,CAAA,CAClB,CAAA,GACP,EAAA,EAAA,KAAA,CAAC,EAAD,CAAO,QAAQ,mBAAf,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAI,YAAc,CAAA,GAClB,EAAA,EAAA,IAAA,CAAC,OAAD,CAAA,SAAO,EAAM,KAAY,CAAA,CACpB,GACJ,KAZE,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAcf"}
1
+ {"version":3,"file":"Coxg-CDT.chunk.js","names":["divWithClassName"],"sources":["../../../../../node_modules/react-bootstrap/esm/AlertHeading.js","../../../../../node_modules/react-bootstrap/esm/AlertLink.js","../../../../../node_modules/react-bootstrap/esm/Alert.js","../../../../libs/shared/src/views/dev-error/DevErrorView.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nconst AlertHeading = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-heading');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertHeading.displayName = 'AlertHeading';\nexport default AlertHeading;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AlertLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = Anchor,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertLink.displayName = 'AlertLink';\nexport default AlertLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AlertHeading from './AlertHeading';\nimport AlertLink from './AlertLink';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Alert = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n bsPrefix,\n show = true,\n closeLabel = 'Close alert',\n closeVariant,\n className,\n children,\n variant = 'primary',\n onClose,\n dismissible,\n transition = Fade,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'alert');\n const handleClose = useEventCallback(e => {\n if (onClose) {\n onClose(false, e);\n }\n });\n const Transition = transition === true ? Fade : transition;\n const alert = /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n ...(!Transition ? props : undefined),\n ref: ref,\n className: classNames(className, prefix, variant && `${prefix}-${variant}`, dismissible && `${prefix}-dismissible`),\n children: [dismissible && /*#__PURE__*/_jsx(CloseButton, {\n onClick: handleClose,\n \"aria-label\": closeLabel,\n variant: closeVariant\n }), children]\n });\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/_jsx(Transition, {\n unmountOnExit: true,\n ...props,\n ref: undefined,\n in: show,\n children: alert\n });\n});\nAlert.displayName = 'Alert';\nexport default Object.assign(Alert, {\n Link: AlertLink,\n Heading: AlertHeading\n});","import * as React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\ninterface DevErrorViewProps {\n error: Error;\n}\n\nexport function DevErrorView({ error }: DevErrorViewProps): React.ReactElement {\n useSetPageMetadata({ title: 'Dev Error' });\n\n if (!error)\n return <></>;\n\n return (\n <div className='px-3'>\n <h1>{error.name}</h1>\n <Alert variant='danger'>\n <h2>{error.message}</h2>\n </Alert>\n <Alert variant='warning'>\n <h3>Call stack</h3>\n <code>{error.stack}</code>\n </Alert>\n </div>\n );\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"qLAOM,EAAgBA,EAAiB,IAAI,EAC3C,EAAc,YAAc,gBAC5B,IAAM,EAA4B,EAAM,YAAY,CAClD,YACA,WACA,GAAI,EAAY,EAChB,GAAG,GACF,KACD,EAAW,EAAmB,EAAU,eAAe,GACnC,EAAA,EAAA,IAAA,CAAK,EAAW,CAC7B,MACL,WAAA,EAAA,EAAA,QAAA,CAAsB,EAAW,CAAQ,EACzC,GAAG,CACL,CAAC,EACF,EACD,EAAa,YAAc,eCf3B,IAAM,EAAyB,EAAM,YAAY,CAC/C,YACA,WACA,GAAI,EAAY,EAChB,GAAG,GACF,KACD,EAAW,EAAmB,EAAU,YAAY,GAChC,EAAA,EAAA,IAAA,CAAK,EAAW,CAC7B,MACL,WAAA,EAAA,EAAA,QAAA,CAAsB,EAAW,CAAQ,EACzC,GAAG,CACL,CAAC,EACF,EACD,EAAU,YAAc,YCPxB,IAAM,EAAqB,EAAM,YAAY,EAAmB,IAAQ,CACtE,GAAM,CACJ,WACA,OAAO,GACP,aAAa,cACb,eACA,YACA,WACA,UAAU,UACV,UACA,cACA,aAAa,EACb,GAAG,GACD,EAAgB,EAAmB,CACrC,KAAM,SACR,CAAC,EACK,EAAS,EAAmB,EAAU,OAAO,EAC7C,EAAc,EAAiB,GAAK,CACpC,GACF,EAAQ,GAAO,CAAC,CAEpB,CAAC,EACK,EAAa,IAAe,GAAO,EAAO,EAC1C,GAAqB,EAAA,EAAA,KAAA,CAAM,MAAO,CACtC,KAAM,QACN,GAAK,EAAqB,IAAA,GAAR,EACb,MACL,WAAA,EAAA,EAAA,QAAA,CAAsB,EAAW,EAAQ,GAAW,GAAG,EAAO,GAAG,IAAW,GAAe,GAAG,EAAO,aAAa,EAClH,SAAU,CAAC,IAA4B,EAAA,EAAA,IAAA,CAAK,EAAa,CACvD,QAAS,EACT,aAAc,EACd,QAAS,CACX,CAAC,EAAG,CAAQ,CACd,CAAC,EAED,OADK,GACe,EAAA,EAAA,IAAA,CAAK,EAAY,CACnC,cAAe,GACf,GAAG,EACH,IAAK,IAAA,GACL,GAAI,EACJ,SAAU,CACZ,CAAC,EAPuB,EAAO,EAAQ,IAQzC,CAAC,EACD,EAAM,YAAc,QACpB,IAAA,EAAe,OAAO,OAAO,EAAO,CAClC,KAAM,EACN,QAAS,CACX,CAAC,ECnDD,SAAgB,EAAa,CAAE,SAAgD,CAM7E,OALA,EAAmB,CAAE,MAAO,WAAY,CAAC,EAEpC,GAIH,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,gBAAf,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAM,IAAS,CAAA,GACpB,EAAA,EAAA,IAAA,CAAC,EAAD,CAAO,QAAQ,mBACb,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAM,OAAY,CAAA,CAClB,CAAA,GACP,EAAA,EAAA,KAAA,CAAC,EAAD,CAAO,QAAQ,mBAAf,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAI,YAAc,CAAA,GAClB,EAAA,EAAA,IAAA,CAAC,OAAD,CAAA,SAAO,EAAM,KAAY,CAAA,CACpB,GACJ,KAZE,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAcf"}
@@ -1,2 +1,2 @@
1
- import{N as e,at as t}from"./CrTgNROp.chunk.js";import{m as n,n as r}from"./Dwe-4MVf.chunk.js";import{t as i}from"./BIVEB8w0.chunk.js";import{t as a}from"./J0H9O8cX.chunk.js";import{a as o,n as s,r as c,xt as l}from"./app-F8o5al1q.js";import{c as u}from"./B9syewbL.chunk.js";import{n as d,t as f}from"./Cv7tjWWS.chunk.js";import{n as p}from"./r68VJd6w.chunk.js";import{n as m,t as h}from"./CLDXLTBe.chunk.js";import{i as g,n as _}from"./B_QHbZ3D2.chunk.js";import{t as v}from"./DGuSwgQf2.chunk.js";import{n as y,t as b}from"./C_gBUP2y2.chunk.js";t();var x={image:`_image_1a110_1`},S=e(),C=i.encloseNamespace(`reportsShared.totalViewsByContentCardEmptyState`);function w(){return(0,S.jsxs)(c,{className:`flex-grow-1 justify-content-center`,children:[(0,S.jsx)(c.Image,{src:l.EmptyStates.Shared.PuzzleGroup,className:x.image}),(0,S.jsx)(c.Heading,{className:`h6`,children:C(`heading`)}),(0,S.jsx)(c.Info,{className:`w-100`,children:C(`description`)})]})}var T=`reportsShared.videoViewsByContentCard`,E=i.encloseNamespace(T);function D(){let e=o(`video-views`),t=n(a.aggregation(`content_type`,e));function i(e){switch(e){case`ClickView content`:return u.YELLOW;case`TV content`:return u.PURPLE;case`User generated content`:return u.GREEN}}function s(e){switch(e){case`ClickView content`:return E(`clickview`);case`TV content`:return E(`tv`);case`User generated content`:return E(`userGenerated`)}}function c(e){return e?e.filter(e=>e.name===`ClickView content`||e.name===`TV content`||e.name===`User generated content`).map(e=>({name:s(e.name),y:e.count,color:i(e.name)})):null}let l=c(t.data);return(0,S.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white rounded p-3`,children:l?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`h2`,{className:`h6 mb-3`,children:(0,S.jsx)(r,{namespace:T,phrase:`videoViews`})}),l.length?(0,S.jsx)(y,{data:l}):(0,S.jsx)(w,{})]}):(0,S.jsx)(`div`,{className:`partial-loading-background w-25`,children:`\xA0`})})}var O={column1:`_column1_1s749_1`,column2:`_column2_1s749_4`,videoViewsCard:`_videoViewsCard_1s749_7`},k=i.encloseNamespace(`videos.schoolVideoOverview`),A=50;function j(){return s({title:k(`videos`)}),p(k(`videos`)),g(_()),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(v,{}),(0,S.jsxs)(`div`,{className:`d-flex gap-3`,children:[(0,S.jsxs)(`div`,{className:`d-flex flex-column gap-3 ${O.column1}`,children:[(0,S.jsx)(`div`,{className:O.videoViewsCard,children:(0,S.jsx)(m,{type:`year_group`})}),(0,S.jsx)(`div`,{className:O.videoViewsCard,children:(0,S.jsx)(b,{})}),(0,S.jsx)(`div`,{className:O.videoViewsCard,children:(0,S.jsx)(D,{})})]}),(0,S.jsxs)(`div`,{className:`d-flex flex-column gap-3 ${O.column2}`,children:[(0,S.jsx)(`div`,{className:O.videoViewsCard,children:(0,S.jsx)(h,{type:`user_type`})}),(0,S.jsx)(`div`,{className:O.videoViewsCard,children:(0,S.jsx)(f,{type:d.RootTopic,heading:k(`totalViewsSubject`),emptyStateText:k(`emptySubjects`),limit:A})}),(0,S.jsx)(`div`,{className:O.videoViewsCard,children:(0,S.jsx)(f,{type:d.ChildTopic,heading:k(`totalViewsTopic`),emptyStateText:k(`emptyTopics`),limit:A})})]})]})]})}export{j as SchoolVideoOverviewView};
2
- //# sourceMappingURL=DKgzSSZ12.chunk.js.map
1
+ import{N as e,at as t}from"./CrTgNROp.chunk.js";import{m as n,n as r}from"./Dwe-4MVf.chunk.js";import{t as i}from"./BIVEB8w0.chunk.js";import{t as a}from"./t8ONdKoR.chunk.js";import{a as o,n as s,r as c,xt as l}from"./app-DW-nP8r1.js";import{c as u}from"./BhnToJrk.chunk.js";import{n as d,t as f}from"./IG-rboYg.chunk.js";import{n as p}from"./qhfEmD0O.chunk.js";import{n as m,t as h}from"./v01tmPE-.chunk.js";import{i as g,n as _}from"./niZatQNI2.chunk.js";import{t as v}from"./C3yKN7vY2.chunk.js";import{n as y,t as b}from"./Bzfy_cw32.chunk.js";t();var x={image:`_image_1a110_1`},S=e(),C=i.encloseNamespace(`reportsShared.totalViewsByContentCardEmptyState`);function w(){return(0,S.jsxs)(c,{className:`flex-grow-1 justify-content-center`,children:[(0,S.jsx)(c.Image,{src:l.EmptyStates.Shared.PuzzleGroup,className:x.image}),(0,S.jsx)(c.Heading,{className:`h6`,children:C(`heading`)}),(0,S.jsx)(c.Info,{className:`w-100`,children:C(`description`)})]})}var T=`reportsShared.videoViewsByContentCard`,E=i.encloseNamespace(T);function D(){let e=o(`video-views`),t=n(a.aggregation(`content_type`,e));function i(e){switch(e){case`ClickView content`:return u.YELLOW;case`TV content`:return u.PURPLE;case`User generated content`:return u.GREEN}}function s(e){switch(e){case`ClickView content`:return E(`clickview`);case`TV content`:return E(`tv`);case`User generated content`:return E(`userGenerated`)}}function c(e){return e?e.filter(e=>e.name===`ClickView content`||e.name===`TV content`||e.name===`User generated content`).map(e=>({name:s(e.name),y:e.count,color:i(e.name)})):null}let l=c(t.data);return(0,S.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white rounded p-3`,children:l?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`h2`,{className:`h6 mb-3`,children:(0,S.jsx)(r,{namespace:T,phrase:`videoViews`})}),l.length?(0,S.jsx)(y,{data:l}):(0,S.jsx)(w,{})]}):(0,S.jsx)(`div`,{className:`partial-loading-background w-25`,children:`\xA0`})})}var O={column1:`_column1_1s749_1`,column2:`_column2_1s749_4`,videoViewsCard:`_videoViewsCard_1s749_7`},k=i.encloseNamespace(`videos.schoolVideoOverview`),A=50;function j(){return s({title:k(`videos`)}),p(k(`videos`)),g(_()),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(v,{}),(0,S.jsxs)(`div`,{className:`d-flex gap-3`,children:[(0,S.jsxs)(`div`,{className:`d-flex flex-column gap-3 ${O.column1}`,children:[(0,S.jsx)(`div`,{className:O.videoViewsCard,children:(0,S.jsx)(m,{type:`year_group`})}),(0,S.jsx)(`div`,{className:O.videoViewsCard,children:(0,S.jsx)(b,{})}),(0,S.jsx)(`div`,{className:O.videoViewsCard,children:(0,S.jsx)(D,{})})]}),(0,S.jsxs)(`div`,{className:`d-flex flex-column gap-3 ${O.column2}`,children:[(0,S.jsx)(`div`,{className:O.videoViewsCard,children:(0,S.jsx)(h,{type:`user_type`})}),(0,S.jsx)(`div`,{className:O.videoViewsCard,children:(0,S.jsx)(f,{type:d.RootTopic,heading:k(`totalViewsSubject`),emptyStateText:k(`emptySubjects`),limit:A})}),(0,S.jsx)(`div`,{className:O.videoViewsCard,children:(0,S.jsx)(f,{type:d.ChildTopic,heading:k(`totalViewsTopic`),emptyStateText:k(`emptyTopics`),limit:A})})]})]})]})}export{j as SchoolVideoOverviewView};
2
+ //# sourceMappingURL=D5JcKzGf2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DKgzSSZ12.chunk.js","names":[],"sources":["../../src/shared/views/overview-cards/video-views-by-content-card/empty-state/total-views-by-content-card-empty-state.module.scss","../../src/shared/views/overview-cards/video-views-by-content-card/empty-state/TotalViewsByContentCardEmptyState.tsx","../../src/shared/views/overview-cards/video-views-by-content-card/VideoViewsByContentCard.tsx","../../src/apps/videos/views/school-video-overview/school-video-overview.module.scss","../../src/apps/videos/views/school-video-overview/SchoolVideoOverviewView.tsx"],"sourcesContent":[":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './total-views-by-content-card-empty-state.module.scss';\n\nconst namespace = 'reportsShared.totalViewsByContentCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TotalViewsByContentCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.PuzzleGroup}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ColumnChart } from 'shared/components/column-chart/ColumnChart';\nimport { CHART_COLOUR } from 'shared/constants/ChartStyles';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TotalViewsByContentCardEmptyState } from 'shared/views/overview-cards/video-views-by-content-card/empty-state/TotalViewsByContentCardEmptyState';\n\nconst namespace = 'reportsShared.videoViewsByContentCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nenum ContentType {\n ClickView = 'ClickView content',\n TV = 'TV content',\n UserGenerated = 'User generated content'\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoViewsByContentCardView() {\n const requestFilter = useGetRequestFilter('video-views');\n\n const contentTypeCount = Flight.useBasicFetch<GroupedAnalyticsCount[]>(\n VideoViewsV2Requests.aggregation('content_type', requestFilter)\n );\n\n function mapContentTypeToChartColour(contentType: string) {\n switch (contentType) {\n case ContentType.ClickView: return CHART_COLOUR.YELLOW;\n case ContentType.TV: return CHART_COLOUR.PURPLE;\n case ContentType.UserGenerated: return CHART_COLOUR.GREEN;\n }\n }\n\n function mapContentTypeToLabel(contentType: string) {\n switch (contentType) {\n case ContentType.ClickView: return getPhrase('clickview');\n case ContentType.TV: return getPhrase('tv');\n case ContentType.UserGenerated: return getPhrase('userGenerated');\n }\n }\n\n function getChartData(contentTypeCount: GroupedAnalyticsCount[]) {\n if (!contentTypeCount) return null;\n\n const mappedGroups = contentTypeCount.filter(group => (\n group.name === ContentType.ClickView ||\n group.name === ContentType.TV ||\n group.name === ContentType.UserGenerated\n )).map(group => ({\n name: mapContentTypeToLabel(group.name),\n y: group.count,\n color: mapContentTypeToChartColour(group.name)\n }));\n\n return mappedGroups;\n }\n\n const chartData = getChartData(contentTypeCount.data);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3'>\n {chartData ?\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='videoViews' /></h2>\n\n {chartData.length ?\n <ColumnChart data={chartData} /> :\n <TotalViewsByContentCardEmptyState />\n }\n </> :\n <div className='partial-loading-background w-25'>&nbsp;</div>\n }\n </div>\n );\n}\n",":local {\n .column1 {\n flex: 3 0;\n }\n \n .column2 {\n flex: 4 0;\n }\n\n .videoViewsCard {\n height: 20rem;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { getVideoHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { StreamsBarChartCardView } from 'shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView';\nimport { StreamsChartCardView } from 'shared/views/overview-cards/streams-chart-card/StreamsChartCardView';\nimport { TopClassificationsCardView } from 'shared/views/overview-cards/top-classifications-card/TopClassificationsCardView';\nimport { VideoViewsByContentCardView } from 'shared/views/overview-cards/video-views-by-content-card/VideoViewsByContentCard';\nimport { VideoViewsByRoleCardView } from 'shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView';\n\nimport { SchoolVideosNav } from 'apps/videos/components/school-videos-nav/SchoolVideosNav';\n\nimport styles from './school-video-overview.module.scss';\n\nconst namespace = 'videos.schoolVideoOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst TOP_CLASSIFICATIONS_LIMIT = 50;\n\nexport function SchoolVideoOverviewView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('videos') });\n useSetHeaderTitle(getPhrase('videos'));\n useSetHeaderActions(getVideoHeaderActions());\n\n return (\n <div>\n <SchoolVideosNav />\n <div className='d-flex gap-3'>\n <div className={`d-flex flex-column gap-3 ${styles.column1}`}>\n <div className={styles.videoViewsCard}>\n <StreamsBarChartCardView type='year_group' />\n </div>\n <div className={styles.videoViewsCard}>\n <VideoViewsByRoleCardView />\n </div>\n <div className={styles.videoViewsCard}>\n <VideoViewsByContentCardView />\n </div>\n </div>\n <div className={`d-flex flex-column gap-3 ${styles.column2}`}>\n <div className={styles.videoViewsCard}>\n <StreamsChartCardView type='user_type' />\n </div>\n <div className={styles.videoViewsCard}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.RootTopic}\n heading={getPhrase('totalViewsSubject')}\n emptyStateText={getPhrase('emptySubjects')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n <div className={styles.videoViewsCard}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.ChildTopic}\n heading={getPhrase('totalViewsTopic')}\n emptyStateText={getPhrase('emptyTopics')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"D5JcKzGf2.chunk.js","names":[],"sources":["../../src/shared/views/overview-cards/video-views-by-content-card/empty-state/total-views-by-content-card-empty-state.module.scss","../../src/shared/views/overview-cards/video-views-by-content-card/empty-state/TotalViewsByContentCardEmptyState.tsx","../../src/shared/views/overview-cards/video-views-by-content-card/VideoViewsByContentCard.tsx","../../src/apps/videos/views/school-video-overview/school-video-overview.module.scss","../../src/apps/videos/views/school-video-overview/SchoolVideoOverviewView.tsx"],"sourcesContent":[":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './total-views-by-content-card-empty-state.module.scss';\n\nconst namespace = 'reportsShared.totalViewsByContentCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TotalViewsByContentCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.PuzzleGroup}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ColumnChart } from 'shared/components/column-chart/ColumnChart';\nimport { CHART_COLOUR } from 'shared/constants/ChartStyles';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TotalViewsByContentCardEmptyState } from 'shared/views/overview-cards/video-views-by-content-card/empty-state/TotalViewsByContentCardEmptyState';\n\nconst namespace = 'reportsShared.videoViewsByContentCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nenum ContentType {\n ClickView = 'ClickView content',\n TV = 'TV content',\n UserGenerated = 'User generated content'\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoViewsByContentCardView() {\n const requestFilter = useGetRequestFilter('video-views');\n\n const contentTypeCount = Flight.useBasicFetch<GroupedAnalyticsCount[]>(\n VideoViewsV2Requests.aggregation('content_type', requestFilter)\n );\n\n function mapContentTypeToChartColour(contentType: string) {\n switch (contentType) {\n case ContentType.ClickView: return CHART_COLOUR.YELLOW;\n case ContentType.TV: return CHART_COLOUR.PURPLE;\n case ContentType.UserGenerated: return CHART_COLOUR.GREEN;\n }\n }\n\n function mapContentTypeToLabel(contentType: string) {\n switch (contentType) {\n case ContentType.ClickView: return getPhrase('clickview');\n case ContentType.TV: return getPhrase('tv');\n case ContentType.UserGenerated: return getPhrase('userGenerated');\n }\n }\n\n function getChartData(contentTypeCount: GroupedAnalyticsCount[]) {\n if (!contentTypeCount) return null;\n\n const mappedGroups = contentTypeCount.filter(group => (\n group.name === ContentType.ClickView ||\n group.name === ContentType.TV ||\n group.name === ContentType.UserGenerated\n )).map(group => ({\n name: mapContentTypeToLabel(group.name),\n y: group.count,\n color: mapContentTypeToChartColour(group.name)\n }));\n\n return mappedGroups;\n }\n\n const chartData = getChartData(contentTypeCount.data);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3'>\n {chartData ?\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='videoViews' /></h2>\n\n {chartData.length ?\n <ColumnChart data={chartData} /> :\n <TotalViewsByContentCardEmptyState />\n }\n </> :\n <div className='partial-loading-background w-25'>&nbsp;</div>\n }\n </div>\n );\n}\n",":local {\n .column1 {\n flex: 3 0;\n }\n \n .column2 {\n flex: 4 0;\n }\n\n .videoViewsCard {\n height: 20rem;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { getVideoHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { StreamsBarChartCardView } from 'shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView';\nimport { StreamsChartCardView } from 'shared/views/overview-cards/streams-chart-card/StreamsChartCardView';\nimport { TopClassificationsCardView } from 'shared/views/overview-cards/top-classifications-card/TopClassificationsCardView';\nimport { VideoViewsByContentCardView } from 'shared/views/overview-cards/video-views-by-content-card/VideoViewsByContentCard';\nimport { VideoViewsByRoleCardView } from 'shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView';\n\nimport { SchoolVideosNav } from 'apps/videos/components/school-videos-nav/SchoolVideosNav';\n\nimport styles from './school-video-overview.module.scss';\n\nconst namespace = 'videos.schoolVideoOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst TOP_CLASSIFICATIONS_LIMIT = 50;\n\nexport function SchoolVideoOverviewView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('videos') });\n useSetHeaderTitle(getPhrase('videos'));\n useSetHeaderActions(getVideoHeaderActions());\n\n return (\n <div>\n <SchoolVideosNav />\n <div className='d-flex gap-3'>\n <div className={`d-flex flex-column gap-3 ${styles.column1}`}>\n <div className={styles.videoViewsCard}>\n <StreamsBarChartCardView type='year_group' />\n </div>\n <div className={styles.videoViewsCard}>\n <VideoViewsByRoleCardView />\n </div>\n <div className={styles.videoViewsCard}>\n <VideoViewsByContentCardView />\n </div>\n </div>\n <div className={`d-flex flex-column gap-3 ${styles.column2}`}>\n <div className={styles.videoViewsCard}>\n <StreamsChartCardView type='user_type' />\n </div>\n <div className={styles.videoViewsCard}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.RootTopic}\n heading={getPhrase('totalViewsSubject')}\n emptyStateText={getPhrase('emptySubjects')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n <div className={styles.videoViewsCard}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.ChildTopic}\n heading={getPhrase('totalViewsTopic')}\n emptyStateText={getPhrase('emptyTopics')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{n as e,s as t}from"./HeoWyBUD.chunk.js";import{I as n}from"./app-F8o5al1q.js";function r(r){let[i,a]=e(n.CLASSROOM_VIEWS_ALERT,!0,{storage:t.LocalStorage});function o(){a(!1)}function s(){a(!0)}let c=`none`;return i&&(c=r?`info`:`reminder`),{alertVariant:c,dismissAlert:o,enableAlert:s}}export{r as t};
2
- //# sourceMappingURL=DBpZNnAI2.chunk.js.map
1
+ import{n as e,s as t}from"./HeoWyBUD.chunk.js";import{I as n}from"./app-DW-nP8r1.js";function r(r){let[i,a]=e(n.CLASSROOM_VIEWS_ALERT,!0,{storage:t.LocalStorage});function o(){a(!1)}function s(){a(!0)}let c=`none`;return i&&(c=r?`info`:`reminder`),{alertVariant:c,dismissAlert:o,enableAlert:s}}export{r as t};
2
+ //# sourceMappingURL=DDXdEuUF2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DBpZNnAI2.chunk.js","names":[],"sources":["../../src/shared/hooks/useClassroomViewsAlert.ts"],"sourcesContent":["import { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\nexport type ClassroomViewsAlertVariant = 'info' | 'reminder' | 'none';\n\ninterface ClassroomViewsAlert {\n alertVariant: ClassroomViewsAlertVariant;\n dismissAlert: () => void;\n enableAlert: () => void;\n}\n\nexport function useClassroomViewsAlert(hasClassroomViews: boolean): ClassroomViewsAlert {\n const [ alertVisible, setAlertVisible ] = useViewModel<boolean>(\n ViewModelKeys.CLASSROOM_VIEWS_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function dismissAlert(): void {\n setAlertVisible(false);\n }\n\n function enableAlert(): void {\n setAlertVisible(true);\n }\n\n let alertVariant: ClassroomViewsAlertVariant = 'none';\n\n if (alertVisible)\n alertVariant = hasClassroomViews ? 'info' : 'reminder';\n\n return { alertVariant, dismissAlert, enableAlert };\n}\n"],"mappings":"qFAaA,SAAgB,EAAuB,EAAiD,CACtF,GAAM,CAAE,EAAc,GAAoB,EACxC,EAAc,sBACd,GACA,CAAE,QAAS,EAAY,YAAa,CACtC,EAEA,SAAS,GAAqB,CAC5B,EAAgB,EAAK,CACvB,CAEA,SAAS,GAAoB,CAC3B,EAAgB,EAAI,CACtB,CAEA,IAAI,EAA2C,OAK/C,OAHI,IACF,EAAe,EAAoB,OAAS,YAEvC,CAAE,eAAc,eAAc,aAAY,CACnD"}
1
+ {"version":3,"file":"DDXdEuUF2.chunk.js","names":[],"sources":["../../src/shared/hooks/useClassroomViewsAlert.ts"],"sourcesContent":["import { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\nexport type ClassroomViewsAlertVariant = 'info' | 'reminder' | 'none';\n\ninterface ClassroomViewsAlert {\n alertVariant: ClassroomViewsAlertVariant;\n dismissAlert: () => void;\n enableAlert: () => void;\n}\n\nexport function useClassroomViewsAlert(hasClassroomViews: boolean): ClassroomViewsAlert {\n const [ alertVisible, setAlertVisible ] = useViewModel<boolean>(\n ViewModelKeys.CLASSROOM_VIEWS_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function dismissAlert(): void {\n setAlertVisible(false);\n }\n\n function enableAlert(): void {\n setAlertVisible(true);\n }\n\n let alertVariant: ClassroomViewsAlertVariant = 'none';\n\n if (alertVisible)\n alertVariant = hasClassroomViews ? 'info' : 'reminder';\n\n return { alertVariant, dismissAlert, enableAlert };\n}\n"],"mappings":"qFAaA,SAAgB,EAAuB,EAAiD,CACtF,GAAM,CAAE,EAAc,GAAoB,EACxC,EAAc,sBACd,GACA,CAAE,QAAS,EAAY,YAAa,CACtC,EAEA,SAAS,GAAqB,CAC5B,EAAgB,EAAK,CACvB,CAEA,SAAS,GAAoB,CAC3B,EAAgB,EAAI,CACtB,CAEA,IAAI,EAA2C,OAK/C,OAHI,IACF,EAAe,EAAoB,OAAS,YAEvC,CAAE,eAAc,eAAc,aAAY,CACnD"}
@@ -1,2 +1,2 @@
1
- import{N as e,at as t}from"./CrTgNROp.chunk.js";import{f as n}from"./B9syewbL.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=C_nTmCTH2.chunk.js.map
1
+ import{N as e,at as t}from"./CrTgNROp.chunk.js";import{f as n}from"./BhnToJrk.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=DLWxPapJ2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"C_nTmCTH2.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":"sGAIA,SAAgB,EAAO,EAAsC,CAC3D,OACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,GAAI,YACP,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,KAAK,eAAe,EAAG,CAAe,CAAA,CACzC,CAAA,CAET"}
1
+ {"version":3,"file":"DLWxPapJ2.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":"sGAIA,SAAgB,EAAO,EAAsC,CAC3D,OACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,GAAI,YACP,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,KAAK,eAAe,EAAG,CAAe,CAAA,CACzC,CAAA,CAET"}