@clickview/lite 0.105.0-rc.0 → 0.105.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +676 -676
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{CsGcvd52.chunk.js → 7lrVefxF.chunk.js} +2 -2
- package/dist/scripts/{CsGcvd52.chunk.js.map → 7lrVefxF.chunk.js.map} +1 -1
- package/dist/scripts/{CHZLAcZ_2.chunk.js → B-V5u42C2.chunk.js} +3 -3
- package/dist/scripts/{CHZLAcZ_2.chunk.js.map → B-V5u42C2.chunk.js.map} +1 -1
- package/dist/scripts/{CKh-VEMl.chunk.js → B1rSJN7u.chunk.js} +2 -2
- package/dist/scripts/{CKh-VEMl.chunk.js.map → B1rSJN7u.chunk.js.map} +1 -1
- package/dist/scripts/{Dfo4EB26.chunk.js → BMSgkYr_.chunk.js} +2 -2
- package/dist/scripts/{Dfo4EB26.chunk.js.map → BMSgkYr_.chunk.js.map} +1 -1
- package/dist/scripts/{CUiXvqkf2.chunk.js → BNAB3zGE2.chunk.js} +2 -2
- package/dist/scripts/{CUiXvqkf2.chunk.js.map → BNAB3zGE2.chunk.js.map} +1 -1
- package/dist/scripts/{DMefg444.chunk.js → BObH8Qah.chunk.js} +2 -2
- package/dist/scripts/{DMefg444.chunk.js.map → BObH8Qah.chunk.js.map} +1 -1
- package/dist/scripts/{kjKFfyCC2.chunk.js → BS-WKys42.chunk.js} +2 -2
- package/dist/scripts/{kjKFfyCC2.chunk.js.map → BS-WKys42.chunk.js.map} +1 -1
- package/dist/scripts/{qhSE4Eld.chunk.js → BUdIzi2I.chunk.js} +2 -2
- package/dist/scripts/{qhSE4Eld.chunk.js.map → BUdIzi2I.chunk.js.map} +1 -1
- package/dist/scripts/{Bg-NmCOq.chunk.js → B_Au77Ey.chunk.js} +2 -2
- package/dist/scripts/{Bg-NmCOq.chunk.js.map → B_Au77Ey.chunk.js.map} +1 -1
- package/dist/scripts/{BNMFIMSB.chunk.js → B_v9mBnF.chunk.js} +2 -2
- package/dist/scripts/{BNMFIMSB.chunk.js.map → B_v9mBnF.chunk.js.map} +1 -1
- package/dist/scripts/{BT2nvPyG.chunk.js → BaN7PH04.chunk.js} +2 -2
- package/dist/scripts/{BT2nvPyG.chunk.js.map → BaN7PH04.chunk.js.map} +1 -1
- package/dist/scripts/{BfK63iLm2.chunk.js → BuzAbtqC2.chunk.js} +2 -2
- package/dist/scripts/{BfK63iLm2.chunk.js.map → BuzAbtqC2.chunk.js.map} +1 -1
- package/dist/scripts/{DyERxRJT2.chunk.js → Bz3CmGse2.chunk.js} +3 -3
- package/dist/scripts/{DyERxRJT2.chunk.js.map → Bz3CmGse2.chunk.js.map} +1 -1
- package/dist/scripts/{Bpgrfq1W2.chunk.js → C7sAao1u2.chunk.js} +2 -2
- package/dist/scripts/{Bpgrfq1W2.chunk.js.map → C7sAao1u2.chunk.js.map} +1 -1
- package/dist/scripts/{kitbrI3y.chunk.js → CH2FOD_Y.chunk.js} +2 -2
- package/dist/scripts/{kitbrI3y.chunk.js.map → CH2FOD_Y.chunk.js.map} +1 -1
- package/dist/scripts/{a9yj-pru.chunk.js → CIpKTjTa.chunk.js} +2 -2
- package/dist/scripts/{a9yj-pru.chunk.js.map → CIpKTjTa.chunk.js.map} +1 -1
- package/dist/scripts/{Bqi3bvPn.chunk.js → CMIWX3sc.chunk.js} +2 -2
- package/dist/scripts/{Bqi3bvPn.chunk.js.map → CMIWX3sc.chunk.js.map} +1 -1
- package/dist/scripts/{CLYwJpCJ.chunk.js → CyKAODDv.chunk.js} +2 -2
- package/dist/scripts/{CLYwJpCJ.chunk.js.map → CyKAODDv.chunk.js.map} +1 -1
- package/dist/scripts/{C35iCvXx2.chunk.js → Cys9_W-O2.chunk.js} +2 -2
- package/dist/scripts/{C35iCvXx2.chunk.js.map → Cys9_W-O2.chunk.js.map} +1 -1
- package/dist/scripts/{BnR_Hzcf.chunk.js → D9P9eNbi.chunk.js} +2 -2
- package/dist/scripts/{BnR_Hzcf.chunk.js.map → D9P9eNbi.chunk.js.map} +1 -1
- package/dist/scripts/{iEP6nnLh2.chunk.js → D9POCoFw2.chunk.js} +2 -2
- package/dist/scripts/{iEP6nnLh2.chunk.js.map → D9POCoFw2.chunk.js.map} +1 -1
- package/dist/scripts/{B6I8Vh8n.chunk.js → DB8xYV5H.chunk.js} +2 -2
- package/dist/scripts/{B6I8Vh8n.chunk.js.map → DB8xYV5H.chunk.js.map} +1 -1
- package/dist/scripts/{CTpJ4vP62.chunk.js → DT8lKxmy2.chunk.js} +2 -2
- package/dist/scripts/{CTpJ4vP62.chunk.js.map → DT8lKxmy2.chunk.js.map} +1 -1
- package/dist/scripts/{ByLl4bms2.chunk.js → DWQkljeD2.chunk.js} +2 -2
- package/dist/scripts/{ByLl4bms2.chunk.js.map → DWQkljeD2.chunk.js.map} +1 -1
- package/dist/scripts/{DQNW-R2Y.chunk.js → DdVzer9F.chunk.js} +2 -2
- package/dist/scripts/{DQNW-R2Y.chunk.js.map → DdVzer9F.chunk.js.map} +1 -1
- package/dist/scripts/{cu48iYhG.chunk.js → DkA7_vQC.chunk.js} +3 -3
- package/dist/scripts/{cu48iYhG.chunk.js.map → DkA7_vQC.chunk.js.map} +1 -1
- package/dist/scripts/{CecBf_FP.chunk.js → DqZVK9mn.chunk.js} +2 -2
- package/dist/scripts/{CecBf_FP.chunk.js.map → DqZVK9mn.chunk.js.map} +1 -1
- package/dist/scripts/{CB13vtRK.chunk.js → DuFYtiN6.chunk.js} +2 -2
- package/dist/scripts/{CB13vtRK.chunk.js.map → DuFYtiN6.chunk.js.map} +1 -1
- package/dist/scripts/{DcWcozji.chunk.js → DwNluqCs.chunk.js} +2 -2
- package/dist/scripts/{DcWcozji.chunk.js.map → DwNluqCs.chunk.js.map} +1 -1
- package/dist/scripts/{P9unbQX_2.chunk.js → FxuURp3k2.chunk.js} +2 -2
- package/dist/scripts/{P9unbQX_2.chunk.js.map → FxuURp3k2.chunk.js.map} +1 -1
- package/dist/scripts/{D_Txk-Lv.chunk.js → WDOpswDS.chunk.js} +2 -2
- package/dist/scripts/{D_Txk-Lv.chunk.js.map → WDOpswDS.chunk.js.map} +1 -1
- package/dist/scripts/{app-uVIoLFQW.js → app-Bsq2dxSw.js} +4 -4
- package/dist/scripts/{app-uVIoLFQW.js.map → app-Bsq2dxSw.js.map} +1 -1
- package/dist/scripts/{CZGYNiTy2.chunk.js → oqpijUVC2.chunk.js} +2 -2
- package/dist/scripts/{CZGYNiTy2.chunk.js.map → oqpijUVC2.chunk.js.map} +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./DAXXjFlN.chunk.js";import{n as e,t}from"./CvE4SVf2.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./e57H3T-k.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{d as s}from"./CEamUdnf.chunk.js";import{t as c}from"./CjA4Q5pm.chunk.js";import{U as l,a as u,l as d,y as f,z as p}from"./BHvdJc9z.chunk.js";import{t as m}from"./C5j5LRut2.chunk.js";import{t as h}from"./CVHQXNzi2.chunk.js";import{t as g}from"./quMwO3lt2.chunk.js";import{t as _}from"./C1HfCcUR.chunk.js";import{t as v}from"./C5kGxy6G.chunk.js";import{t as y}from"./By12qobm.chunk.js";import{t as b}from"./Bjt_-lTs.chunk.js";import{t as x}from"./CVtvY0gg.chunk.js";import{t as S}from"./D_gWf2lC.chunk.js";import{t as C}from"./Bbp2U9GK.chunk.js";import{t as w}from"./Dy8J1lcl.chunk.js";import{n as T,t as E}from"./BWWumAle.chunk.js";import{t as D}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import"./DAXXjFlN.chunk.js";import{n as e,t}from"./CvE4SVf2.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./e57H3T-k.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{d as s}from"./CEamUdnf.chunk.js";import{t as c}from"./CjA4Q5pm.chunk.js";import{U as l,a as u,l as d,y as f,z as p}from"./BHvdJc9z.chunk.js";import{t as m}from"./C5j5LRut2.chunk.js";import{t as h}from"./CVHQXNzi2.chunk.js";import{t as g}from"./quMwO3lt2.chunk.js";import{t as _}from"./C1HfCcUR.chunk.js";import{t as v}from"./C5kGxy6G.chunk.js";import{t as y}from"./By12qobm.chunk.js";import{t as b}from"./Bjt_-lTs.chunk.js";import{t as x}from"./CVtvY0gg.chunk.js";import{t as S}from"./D_gWf2lC.chunk.js";import{t as C}from"./Bbp2U9GK.chunk.js";import{t as w}from"./Dy8J1lcl.chunk.js";import{n as T,t as E}from"./BWWumAle.chunk.js";import{t as D}from"./B-V5u42C2.chunk.js";import{n as O,t as k}from"./CpFtf-tI2.chunk.js";import{t as A}from"./BxYKQEUG2.chunk.js";import{t as j}from"./jAbfamoi.chunk.js";import{t as M}from"./BqbRZ5hB.chunk.js";import{t as N}from"./tnBD84bg2.chunk.js";import{t as P}from"./CNSadWnT.chunk.js";import{t as F}from"./C9XBZFiR.chunk.js";import{t as I}from"./BJk-_glp2.chunk.js";import{n as L,r as R,t as z}from"./sTL-xC6d2.chunk.js";i();var B=j(),V={closeButton:`_closeButton_1bg8h_1`,descriptionBorder:`_descriptionBorder_1bg8h_7`},H=a(),U=`shared.videoDetails`,W=n.encloseNamespace(U);function G(e){let{label:t,items:n,className:r}=e;return n&&n.data&&n.data.length?(0,H.jsxs)(`div`,{className:r,children:[t,`: `,n.data.map(e=>e.name).join(`, `)]}):(0,H.jsx)(H.Fragment,{})}function K(e){let{video:t}=e;if(!g.isVideo(t)&&!g.isClip(t))return(0,H.jsx)(H.Fragment,{});let n=g.getParentVideo(t);return(0,H.jsxs)(`div`,{className:t.description?`col-md-5 ps-md-3 pt-3 pt-md-0`:`col-12`,children:[(0,H.jsx)(`h2`,{className:`h6 mb-1`,children:(0,H.jsx)(O,{phrase:`details`})}),!!n.productionYear&&(0,H.jsx)(`div`,{className:`mb-1`,children:(0,H.jsx)(O,{phrase:`productionYear`,options:{year:n.productionYear}})}),(0,H.jsx)(G,{label:W(`productionCompanies`,{smartCount:n.productionCompanies?.data?.length}),items:n.productionCompanies,className:`mb-1`}),(0,H.jsx)(G,{label:W(`distributors`,{smartCount:n.distributors?.data?.length}),items:n.distributors,className:`mb-1`}),(0,H.jsx)(G,{label:W(`producers`,{smartCount:n.producers?.data?.length}),items:n.producers,className:`mb-1`}),(0,H.jsx)(G,{label:W(`directors`,{smartCount:n.directors?.data?.length}),items:n.directors,className:`mb-1`}),!!n.dateBroadcast&&(0,H.jsx)(`div`,{className:`mb-1`,children:(0,H.jsx)(O,{phrase:`dateBroadcast`,options:{date:c.format(n.dateBroadcast,`DD/MM/YYYY`)}})}),!!n.channel&&(0,H.jsx)(`div`,{className:`mb-1`,children:(0,H.jsx)(O,{phrase:`channel`,options:{channel:n.channel.name}})}),g.canViewUploadDate(e.video)&&(0,H.jsx)(`div`,{className:`mb-1`,children:(0,H.jsx)(O,{phrase:`dateUploaded`,options:{date:c.format(t.dateCreated,`DD/MM/YYYY`)}})})]})}function q(e){let{video:t,maxHeight:n=368}=e,i=g.getParentVideo(t),a=!!e.video.description,o=z(e.video)||!!i.productionYear||!!i.dateBroadcast||!!i.channel||g.canViewUploadDate(e.video),s=typeof e.onClickClose==`function`,c=typeof e.onClickShowCurriculumLinks==`function`;function l(){return e.hideTags||g.isInteractive(e.video)||!e.video.tags?.data?.length?null:e.video.tags.data}return!a&&!o?(0,H.jsx)(H.Fragment,{}):(0,H.jsx)(k.Provider,{value:U,children:(0,H.jsxs)(`div`,{className:`rounded border p-3 mb-3 position-relative`,children:[(0,H.jsx)(B.Scrollbars,{autoHeight:!0,autoHeightMax:n,children:(0,H.jsxs)(`div`,{className:`row g-0`,children:[a&&(0,H.jsxs)(`div`,{className:o?`${V.descriptionBorder} pe-3 col-md-7`:`col-12`,children:[(0,H.jsxs)(`div`,{className:`d-flex align-items-center`,children:[(0,H.jsx)(`h2`,{className:`h6 mb-1`,children:(0,H.jsx)(O,{phrase:`description`})}),(0,H.jsx)(I,{text:t.description,title:t.name,className:`ps-2`,onLaunch:e.onLaunchImmersiveReader,onExit:e.onExitImmersiveReader,analyticsOptions:{location:f.PlayPage,entity:d.Video,actionType:p.Click,descriptor:u.LaunchImmersiveReader},analyticsData:{id:t.id,type:`description`}})]}),(0,H.jsx)(`p`,{className:`mb-0`,dangerouslySetInnerHTML:{__html:r.sanitize(N.linkifyText(e.video.description,{nl2br:!0}))}}),(0,H.jsx)(L,{tags:l(),...R.getTagActionProps(e.getTagAppLink,null,e.suppressInteractivity),className:`mt-1`}),c&&(0,H.jsx)(C,{onClick:e.onClickShowCurriculumLinks,className:`cursor-pointer d-inline-block fw-semibold text-info mt-2 mb-1`,children:(0,H.jsx)(O,{namespace:U,phrase:`seeCurriculumLinks`})})]}),o&&(0,H.jsx)(K,{...e})]})}),s&&(0,H.jsx)(`button`,{type:`button`,className:`btn-close ${V.closeButton}`,"aria-label":`Close`,onClick:e.onClickClose})]})})}var J=`userManager.studentsVideo`,Y=n.encloseNamespace(J);function X(e,t){return t.toString()===h.Clip.toString()?_.clip(e):t.toString()===h.Interactive.toString()?v.interactiveMetadata(e):y.video(e)}function Z(e){return e.toString()===h.Clip.toString()?`messageClip`:e.toString()===h.Interactive.toString()?`messageInteractive`:`messageVideo`}function Q(r){let i=s(P.getUser(r.userId)),a=s(X(r.id,r.typeId)),c=s(E.createViewKey(r.id,T.MasterObject)),u=s(S.config()),d=s(b.currentUser());F([i,a]),w({title:i.data?n.getPhrase(J,`pageTitle`,{name:m.getFullName(i.data)}):``});function h(){let e={entity:g.getAnalyticsEntity(a.data),location:f.ViewStudentVideos},t={id:a.data.id},n=[];return g.isVideo(a.data)&&n.push({order:1,label:Y(`download`),appLink:{application:o.VIDEOS,action:x.Videos.DOWNLOAD_VIDEO,args:[a.data.id]},analyticsOptions:{...e,actionType:p.Download,workflowPhase:l.Start},analyticsData:t}),n.push({order:2,label:Y(`delete`),appLink:{application:o.USER_MANAGER,action:x.UserManager.DELETE_STUDENTS_VIDEO,args:[r.id,a.data.id],params:{typeId:a.data.typeId}},className:`text-danger`,analyticsOptions:{...e,actionType:p.Delete,workflowPhase:l.Start},analyticsData:t}),n}return i.hasCompleted&&a.hasCompleted&&c.hasCompleted&&u.hasCompleted&&d.hasCompleted?(0,H.jsxs)(`div`,{className:`px-3`,children:[(0,H.jsx)(`div`,{className:`alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center`,role:`alert`,children:(0,H.jsxs)(`div`,{className:`d-flex align-items-center`,children:[(0,H.jsx)(t,{svg:A,size:e.Standard,className:`me-2 svg-container`}),(0,H.jsx)(`div`,{className:`w-100`,children:(0,H.jsx)(`p`,{className:`fw-semibold mb-0`,children:Y(Z(r.typeId),{name:m.getFullName(i.data),yearGroup:i.data.masterYearGroup?.name})})})]})}),(0,H.jsx)(`div`,{className:`mb-3`,children:(0,H.jsx)(D,{config:u.data,video:a.data,currentUser:d.data,viewKey:c.data,presentationSlug:null})}),(0,H.jsxs)(`div`,{className:`d-flex justify-content-between align-items-center mb-2`,children:[(0,H.jsx)(`div`,{children:(0,H.jsx)(`h1`,{className:`h3 d-inline-flex m-0 mb-2`,children:a.data.name})}),(0,H.jsx)(M,{actions:h(),actionsDropdownClassName:`btn btn-outline-dark`})]}),(0,H.jsx)(q,{video:a.data})]}):(0,H.jsx)(H.Fragment,{})}export{Q as StudentsVideoView};
|
|
2
|
+
//# sourceMappingURL=BMSgkYr_.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dfo4EB26.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/video-details/video-details.module.scss","../../../../libs/shared/src/components/video-details/VideoDetails.tsx","../../src/apps/user-manager/views/students-video/StudentsVideoView.tsx"],"sourcesContent":[":local {\n .closeButton {\n position: absolute;\n top: 1rem;\n right: map-get($spacers, 3);\n }\n \n @media (min-width: #{map-get($grid-breakpoints, md)}) {\n .descriptionBorder {\n border-right: 1px solid $gray-300;\n }\n }\n}","import * as React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ImmersiveReader } from 'libs/shared/components/immersive-reader/ImmersiveReader';\nimport { TagHelper } from 'libs/shared/components/tags/TagHelper';\nimport { TagList } from 'libs/shared/components/tags/TagList';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { BaseObject, BasePaginatedCollection, CurrentUser, Tag, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { hasPPDD } from './VideoDetailsUtils';\n\nimport styles from './video-details.module.scss';\n\nconst namespace = 'shared.videoDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CommaListProps {\n label: string;\n items: BasePaginatedCollection<BaseObject>;\n className?: string;\n}\n\nfunction CommaList(props: CommaListProps): React.ReactElement {\n const { label, items, className } = props;\n\n const hasItems = items && items.data && items.data.length;\n\n if (!hasItems)\n return <></>;\n\n const commaSeperated = items.data.map(i => i.name).join(', ');\n\n return (\n <div className={className}>{label}: {commaSeperated}</div>\n );\n}\n\nfunction DetailsSection(props: VideoDetailsWithScrollbarProps): React.ReactElement {\n const { video } = props;\n\n if (!VideoHelper.isVideo(video) && !VideoHelper.isClip(video))\n return <></>;\n\n const parentVideo = VideoHelper.getParentVideo(video);\n\n return (\n <div className={video.description ? 'col-md-5 ps-md-3 pt-3 pt-md-0' : 'col-12'}>\n <h2 className='h6 mb-1'><Text phrase='details' /></h2>\n {!!parentVideo.productionYear && (\n <div className='mb-1'>\n <Text phrase='productionYear' options={{ year: parentVideo.productionYear }} />\n </div>\n )}\n <CommaList\n label={getPhrase('productionCompanies', { smartCount: parentVideo.productionCompanies?.data?.length })}\n items={parentVideo.productionCompanies}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('distributors', { smartCount: parentVideo.distributors?.data?.length })}\n items={parentVideo.distributors}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('producers', { smartCount: parentVideo.producers?.data?.length })}\n items={parentVideo.producers}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('directors', { smartCount: parentVideo.directors?.data?.length })}\n items={parentVideo.directors}\n className='mb-1'\n />\n {!!parentVideo.dateBroadcast && (\n <div className='mb-1'>\n <Text phrase='dateBroadcast' options={{ date: DateHelper.format(parentVideo.dateBroadcast, 'DD/MM/YYYY') }} />\n </div>\n )}\n {!!parentVideo.channel && (\n <div className='mb-1'>\n <Text phrase='channel' options={{ channel: parentVideo.channel.name }} />\n </div>\n )}\n {VideoHelper.canViewUploadDate(props.video) && (\n <div className='mb-1'>\n <Text phrase='dateUploaded' options={{ date: DateHelper.format(video.dateCreated, 'DD/MM/YYYY') }} />\n </div>\n )}\n </div>\n );\n}\n\ninterface VideoDetailsWithScrollbarProps {\n video: VideoTypes;\n currentUser?: CurrentUser;\n getTagAppLink?: (tag: Tag) => Core.AppLink;\n onLaunchImmersiveReader?: () => void;\n onExitImmersiveReader?: () => void;\n onClickClose?: () => void;\n onClickShowCurriculumLinks?: () => void;\n maxHeight?: number;\n suppressInteractivity?: boolean;\n hideTags?: boolean;\n}\n\nexport function VideoDetailsWithScrollbar(props: VideoDetailsWithScrollbarProps): React.ReactElement {\n const { video, maxHeight = MINIMUM_GLANCE_HEIGHT } = props;\n\n const parentVideo = VideoHelper.getParentVideo(video);\n\n const showDescription = !!props.video.description;\n\n const showDetails = (\n hasPPDD(props.video) ||\n !!parentVideo.productionYear ||\n !!parentVideo.dateBroadcast ||\n !!parentVideo.channel ||\n VideoHelper.canViewUploadDate(props.video)\n );\n\n const canClose = typeof props.onClickClose === 'function';\n const showCurriculumLinks = typeof props.onClickShowCurriculumLinks === 'function';\n\n function getTags(): Tag[] {\n if (props.hideTags || VideoHelper.isInteractive(props.video) || !props.video.tags?.data?.length)\n return null;\n\n return props.video.tags.data;\n }\n\n if (!showDescription && !showDetails)\n return <></>;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='rounded border p-3 mb-3 position-relative'>\n <Scrollbars autoHeight autoHeightMax={maxHeight}>\n <div className='row g-0'>\n {showDescription && (\n <div className={showDetails ? `${styles.descriptionBorder} pe-3 col-md-7` : 'col-12'}>\n <div className='d-flex align-items-center'>\n <h2 className='h6 mb-1'>\n <Text phrase='description' />\n </h2>\n <ImmersiveReader\n text={video.description}\n title={video.name}\n className='ps-2'\n onLaunch={props.onLaunchImmersiveReader}\n onExit={props.onExitImmersiveReader}\n analyticsOptions={{\n location: LocationContext.PlayPage,\n entity: EntityType.Video,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.LaunchImmersiveReader\n }}\n analyticsData={{ id: video.id, type: 'description' }}\n />\n </div>\n <p className='mb-0' dangerouslySetInnerHTML={{ __html: TextHelper.sanitize(LinkifyHelper.linkifyText(props.video.description, { nl2br: true })) }} />\n <TagList\n tags={getTags()}\n {...TagHelper.getTagActionProps(props.getTagAppLink, null, props.suppressInteractivity)}\n className='mt-1'\n />\n {showCurriculumLinks && (\n <DivButton\n onClick={props.onClickShowCurriculumLinks}\n className='cursor-pointer d-inline-block fw-semibold text-info mt-2 mb-1'\n >\n <Text namespace={namespace} phrase='seeCurriculumLinks' />\n </DivButton>\n )}\n </div>\n )}\n\n {showDetails && (\n <DetailsSection {...props} />\n )}\n </div>\n </Scrollbars>\n\n {canClose && (\n <button\n type='button'\n className={`btn-close ${styles.closeButton}`}\n aria-label='Close'\n onClick={props.onClickClose}\n />\n )}\n </div>\n </LanguageNamespaceContext.Provider>\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 { AnalyticsOptions, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Actions as ActionsButtons } from 'libs/shared/components/actions/Actions';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoDetailsWithScrollbar } from 'libs/shared/components/video-details/VideoDetails';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { InfoSvg } from 'libs/shared/images/svg/status/InfoSvg';\nimport { Config, CurrentUser, PlayerViewKey, User, VideoTypes } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { LitePlayerView } from 'shared/views/lite-player/LitePlayerView';\n\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\n\nconst namespace = 'userManager.studentsVideo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getRequest(id: string, typeId: string): Flight.Request {\n if (typeId.toString() === MasterType.Clip.toString())\n return ClipRequests.clip(id);\n\n if (typeId.toString() === MasterType.Interactive.toString())\n return InteractiveRequests.interactiveMetadata(id);\n\n return VideoRequests.video(id);\n}\n\nfunction getMessagePhrase(typeId: string): string {\n if (typeId.toString() === MasterType.Clip.toString())\n return 'messageClip';\n\n if (typeId.toString() === MasterType.Interactive.toString())\n return 'messageInteractive';\n\n return 'messageVideo';\n}\n\ninterface StudentsVideoProps {\n userId: string;\n id: string;\n typeId: string;\n}\n\nexport function StudentsVideoView(props: StudentsVideoProps): JSX.Element {\n const user = Flight.useBasicFetch<User>(UserManagerRequests.getUser(props.userId));\n\n const video = Flight.useBasicFetch<VideoTypes>(getRequest(props.id, props.typeId));\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(PlayerRequests.createViewKey(props.id, MediaIdType.MasterObject));\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n useHandleObjectError([ user, video ]);\n useSetPageMetadata({\n title: user.data ?\n LanguageService.getPhrase(\n namespace,\n 'pageTitle',\n { name: UserHelper.getFullName(user.data) }\n ) :\n ''\n });\n\n function getVideoActions(): ActionOptions[] {\n const analyticsOptions: AnalyticsOptions = {\n entity: VideoHelper.getAnalyticsEntity(video.data),\n location: LocationContext.ViewStudentVideos\n };\n \n const analyticsData = {\n id: video.data.id\n };\n \n const actions: ActionOptions[] = [];\n \n if (VideoHelper.isVideo(video.data)) {\n actions.push({\n order: 1,\n label: getPhrase('download'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.DOWNLOAD_VIDEO, args: [video.data.id]},\n analyticsOptions: {\n ...analyticsOptions,\n actionType: UserAction.Download,\n workflowPhase: WorkflowPhase.Start\n },\n analyticsData\n });\n }\n \n actions.push({\n order: 2,\n label: getPhrase('delete'),\n appLink: {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.DELETE_STUDENTS_VIDEO,\n args: [ props.id, video.data.id ],\n params: { typeId: video.data.typeId }\n },\n className: 'text-danger',\n analyticsOptions: {\n ...analyticsOptions,\n actionType: UserAction.Delete,\n workflowPhase: WorkflowPhase.Start\n },\n analyticsData\n });\n \n return actions;\n }\n\n const dataLoaded = (\n user.hasCompleted &&\n video.hasCompleted &&\n viewKey.hasCompleted &&\n config.hasCompleted &&\n currentUser.hasCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <div className='px-3'>\n <div className='alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center' role='alert'>\n <div className='d-flex align-items-center'>\n <SvgContainer\n svg={InfoSvg}\n size={SvgContainerSize.Standard}\n className='me-2 svg-container'\n />\n \n <div className='w-100'>\n <p className='fw-semibold mb-0'>\n {getPhrase(\n getMessagePhrase(props.typeId),\n { name: UserHelper.getFullName(user.data), yearGroup: user.data.masterYearGroup?.name }\n )}\n </p>\n </div>\n </div>\n </div>\n <div className='mb-3'>\n <LitePlayerView\n config={config.data}\n video={video.data}\n currentUser={currentUser.data}\n viewKey={viewKey.data}\n presentationSlug={null}\n />\n </div>\n <div className='d-flex justify-content-between align-items-center mb-2'>\n <div>\n <h1 className='h3 d-inline-flex m-0 mb-2'>\n {video.data.name}\n </h1>\n </div>\n <ActionsButtons\n actions={getVideoActions()}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n </div>\n <VideoDetailsWithScrollbar video={video.data} />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BMSgkYr_.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/video-details/video-details.module.scss","../../../../libs/shared/src/components/video-details/VideoDetails.tsx","../../src/apps/user-manager/views/students-video/StudentsVideoView.tsx"],"sourcesContent":[":local {\n .closeButton {\n position: absolute;\n top: 1rem;\n right: map-get($spacers, 3);\n }\n \n @media (min-width: #{map-get($grid-breakpoints, md)}) {\n .descriptionBorder {\n border-right: 1px solid $gray-300;\n }\n }\n}","import * as React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ImmersiveReader } from 'libs/shared/components/immersive-reader/ImmersiveReader';\nimport { TagHelper } from 'libs/shared/components/tags/TagHelper';\nimport { TagList } from 'libs/shared/components/tags/TagList';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { BaseObject, BasePaginatedCollection, CurrentUser, Tag, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { hasPPDD } from './VideoDetailsUtils';\n\nimport styles from './video-details.module.scss';\n\nconst namespace = 'shared.videoDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CommaListProps {\n label: string;\n items: BasePaginatedCollection<BaseObject>;\n className?: string;\n}\n\nfunction CommaList(props: CommaListProps): React.ReactElement {\n const { label, items, className } = props;\n\n const hasItems = items && items.data && items.data.length;\n\n if (!hasItems)\n return <></>;\n\n const commaSeperated = items.data.map(i => i.name).join(', ');\n\n return (\n <div className={className}>{label}: {commaSeperated}</div>\n );\n}\n\nfunction DetailsSection(props: VideoDetailsWithScrollbarProps): React.ReactElement {\n const { video } = props;\n\n if (!VideoHelper.isVideo(video) && !VideoHelper.isClip(video))\n return <></>;\n\n const parentVideo = VideoHelper.getParentVideo(video);\n\n return (\n <div className={video.description ? 'col-md-5 ps-md-3 pt-3 pt-md-0' : 'col-12'}>\n <h2 className='h6 mb-1'><Text phrase='details' /></h2>\n {!!parentVideo.productionYear && (\n <div className='mb-1'>\n <Text phrase='productionYear' options={{ year: parentVideo.productionYear }} />\n </div>\n )}\n <CommaList\n label={getPhrase('productionCompanies', { smartCount: parentVideo.productionCompanies?.data?.length })}\n items={parentVideo.productionCompanies}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('distributors', { smartCount: parentVideo.distributors?.data?.length })}\n items={parentVideo.distributors}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('producers', { smartCount: parentVideo.producers?.data?.length })}\n items={parentVideo.producers}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('directors', { smartCount: parentVideo.directors?.data?.length })}\n items={parentVideo.directors}\n className='mb-1'\n />\n {!!parentVideo.dateBroadcast && (\n <div className='mb-1'>\n <Text phrase='dateBroadcast' options={{ date: DateHelper.format(parentVideo.dateBroadcast, 'DD/MM/YYYY') }} />\n </div>\n )}\n {!!parentVideo.channel && (\n <div className='mb-1'>\n <Text phrase='channel' options={{ channel: parentVideo.channel.name }} />\n </div>\n )}\n {VideoHelper.canViewUploadDate(props.video) && (\n <div className='mb-1'>\n <Text phrase='dateUploaded' options={{ date: DateHelper.format(video.dateCreated, 'DD/MM/YYYY') }} />\n </div>\n )}\n </div>\n );\n}\n\ninterface VideoDetailsWithScrollbarProps {\n video: VideoTypes;\n currentUser?: CurrentUser;\n getTagAppLink?: (tag: Tag) => Core.AppLink;\n onLaunchImmersiveReader?: () => void;\n onExitImmersiveReader?: () => void;\n onClickClose?: () => void;\n onClickShowCurriculumLinks?: () => void;\n maxHeight?: number;\n suppressInteractivity?: boolean;\n hideTags?: boolean;\n}\n\nexport function VideoDetailsWithScrollbar(props: VideoDetailsWithScrollbarProps): React.ReactElement {\n const { video, maxHeight = MINIMUM_GLANCE_HEIGHT } = props;\n\n const parentVideo = VideoHelper.getParentVideo(video);\n\n const showDescription = !!props.video.description;\n\n const showDetails = (\n hasPPDD(props.video) ||\n !!parentVideo.productionYear ||\n !!parentVideo.dateBroadcast ||\n !!parentVideo.channel ||\n VideoHelper.canViewUploadDate(props.video)\n );\n\n const canClose = typeof props.onClickClose === 'function';\n const showCurriculumLinks = typeof props.onClickShowCurriculumLinks === 'function';\n\n function getTags(): Tag[] {\n if (props.hideTags || VideoHelper.isInteractive(props.video) || !props.video.tags?.data?.length)\n return null;\n\n return props.video.tags.data;\n }\n\n if (!showDescription && !showDetails)\n return <></>;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='rounded border p-3 mb-3 position-relative'>\n <Scrollbars autoHeight autoHeightMax={maxHeight}>\n <div className='row g-0'>\n {showDescription && (\n <div className={showDetails ? `${styles.descriptionBorder} pe-3 col-md-7` : 'col-12'}>\n <div className='d-flex align-items-center'>\n <h2 className='h6 mb-1'>\n <Text phrase='description' />\n </h2>\n <ImmersiveReader\n text={video.description}\n title={video.name}\n className='ps-2'\n onLaunch={props.onLaunchImmersiveReader}\n onExit={props.onExitImmersiveReader}\n analyticsOptions={{\n location: LocationContext.PlayPage,\n entity: EntityType.Video,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.LaunchImmersiveReader\n }}\n analyticsData={{ id: video.id, type: 'description' }}\n />\n </div>\n <p className='mb-0' dangerouslySetInnerHTML={{ __html: TextHelper.sanitize(LinkifyHelper.linkifyText(props.video.description, { nl2br: true })) }} />\n <TagList\n tags={getTags()}\n {...TagHelper.getTagActionProps(props.getTagAppLink, null, props.suppressInteractivity)}\n className='mt-1'\n />\n {showCurriculumLinks && (\n <DivButton\n onClick={props.onClickShowCurriculumLinks}\n className='cursor-pointer d-inline-block fw-semibold text-info mt-2 mb-1'\n >\n <Text namespace={namespace} phrase='seeCurriculumLinks' />\n </DivButton>\n )}\n </div>\n )}\n\n {showDetails && (\n <DetailsSection {...props} />\n )}\n </div>\n </Scrollbars>\n\n {canClose && (\n <button\n type='button'\n className={`btn-close ${styles.closeButton}`}\n aria-label='Close'\n onClick={props.onClickClose}\n />\n )}\n </div>\n </LanguageNamespaceContext.Provider>\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 { AnalyticsOptions, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Actions as ActionsButtons } from 'libs/shared/components/actions/Actions';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoDetailsWithScrollbar } from 'libs/shared/components/video-details/VideoDetails';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { InfoSvg } from 'libs/shared/images/svg/status/InfoSvg';\nimport { Config, CurrentUser, PlayerViewKey, User, VideoTypes } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { LitePlayerView } from 'shared/views/lite-player/LitePlayerView';\n\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\n\nconst namespace = 'userManager.studentsVideo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getRequest(id: string, typeId: string): Flight.Request {\n if (typeId.toString() === MasterType.Clip.toString())\n return ClipRequests.clip(id);\n\n if (typeId.toString() === MasterType.Interactive.toString())\n return InteractiveRequests.interactiveMetadata(id);\n\n return VideoRequests.video(id);\n}\n\nfunction getMessagePhrase(typeId: string): string {\n if (typeId.toString() === MasterType.Clip.toString())\n return 'messageClip';\n\n if (typeId.toString() === MasterType.Interactive.toString())\n return 'messageInteractive';\n\n return 'messageVideo';\n}\n\ninterface StudentsVideoProps {\n userId: string;\n id: string;\n typeId: string;\n}\n\nexport function StudentsVideoView(props: StudentsVideoProps): JSX.Element {\n const user = Flight.useBasicFetch<User>(UserManagerRequests.getUser(props.userId));\n\n const video = Flight.useBasicFetch<VideoTypes>(getRequest(props.id, props.typeId));\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(PlayerRequests.createViewKey(props.id, MediaIdType.MasterObject));\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n useHandleObjectError([ user, video ]);\n useSetPageMetadata({\n title: user.data ?\n LanguageService.getPhrase(\n namespace,\n 'pageTitle',\n { name: UserHelper.getFullName(user.data) }\n ) :\n ''\n });\n\n function getVideoActions(): ActionOptions[] {\n const analyticsOptions: AnalyticsOptions = {\n entity: VideoHelper.getAnalyticsEntity(video.data),\n location: LocationContext.ViewStudentVideos\n };\n \n const analyticsData = {\n id: video.data.id\n };\n \n const actions: ActionOptions[] = [];\n \n if (VideoHelper.isVideo(video.data)) {\n actions.push({\n order: 1,\n label: getPhrase('download'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.DOWNLOAD_VIDEO, args: [video.data.id]},\n analyticsOptions: {\n ...analyticsOptions,\n actionType: UserAction.Download,\n workflowPhase: WorkflowPhase.Start\n },\n analyticsData\n });\n }\n \n actions.push({\n order: 2,\n label: getPhrase('delete'),\n appLink: {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.DELETE_STUDENTS_VIDEO,\n args: [ props.id, video.data.id ],\n params: { typeId: video.data.typeId }\n },\n className: 'text-danger',\n analyticsOptions: {\n ...analyticsOptions,\n actionType: UserAction.Delete,\n workflowPhase: WorkflowPhase.Start\n },\n analyticsData\n });\n \n return actions;\n }\n\n const dataLoaded = (\n user.hasCompleted &&\n video.hasCompleted &&\n viewKey.hasCompleted &&\n config.hasCompleted &&\n currentUser.hasCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <div className='px-3'>\n <div className='alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center' role='alert'>\n <div className='d-flex align-items-center'>\n <SvgContainer\n svg={InfoSvg}\n size={SvgContainerSize.Standard}\n className='me-2 svg-container'\n />\n \n <div className='w-100'>\n <p className='fw-semibold mb-0'>\n {getPhrase(\n getMessagePhrase(props.typeId),\n { name: UserHelper.getFullName(user.data), yearGroup: user.data.masterYearGroup?.name }\n )}\n </p>\n </div>\n </div>\n </div>\n <div className='mb-3'>\n <LitePlayerView\n config={config.data}\n video={video.data}\n currentUser={currentUser.data}\n viewKey={viewKey.data}\n presentationSlug={null}\n />\n </div>\n <div className='d-flex justify-content-between align-items-center mb-2'>\n <div>\n <h1 className='h3 d-inline-flex m-0 mb-2'>\n {video.data.name}\n </h1>\n </div>\n <ActionsButtons\n actions={getVideoActions()}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n </div>\n <VideoDetailsWithScrollbar video={video.data} />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e}from"./DAXXjFlN.chunk.js";import{n as t}from"./CvE4SVf2.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./wrLrTezN.chunk.js";import{t as a}from"./C1SLt-ar.chunk.js";import{n as o,t as s}from"./C5j5LRut2.chunk.js";import{t as c}from"./C1PTqhPY2.chunk.js";import{t as l}from"./DQgG9njb.chunk.js";import{t as ee}from"./Dxh97CrB2.chunk.js";import{n as te}from"./BIzu5ufQ.chunk.js";import{t as u}from"./B5TCUfQl.chunk.js";import{t as d}from"./Bas0iVyI.chunk.js";import{n as f}from"./CpFtf-tI2.chunk.js";import{t as p}from"./CSl1Z1eB.chunk.js";import{n as m,t as h}from"./C6hJ2iL42.chunk.js";import{t as ne}from"./BDG1Wu082.chunk.js";import{t as re}from"./7zYFiDUp.chunk.js";import{f as ie,i as ae,m as g,t as oe}from"./D_Txk-Lv.chunk.js";import{n as _,t as v}from"./qhSE4Eld.chunk.js";import"./CB13vtRK.chunk.js";import{a as y,c as b,i as x,n as S,o as C,r as se,s as ce,t as le}from"./CZYaLpaJ.chunk.js";import{n as w,t as T}from"./Dkw9Ir-p2.chunk.js";import{t as E}from"./v4yEqcBz2.chunk.js";import"./P9unbQX_2.chunk.js";var D=e(r()),O={heatMap:`_heatMap_u3po2_1`,avatarContainer:`_avatarContainer_u3po2_4`,cogIcon:`_cogIcon_u3po2_8`},k=i(),A=n.encloseNamespace(`shared.engagementTable`),j={heatMap:[],engagementRate:0,viewCount:0};function M(e){return(0,k.jsx)(`div`,{className:`${e.className??``}`,children:e.children})}function N(e){return(0,k.jsx)(M,{className:`d-inline-block ${e.column.isSorted?`fw-bold`:``}`,children:A(e.phraseKey)})}function P(e){let t=0;return e.forEach(e=>{let n=Math.max(...e.heatMap);n>t&&(t=n)}),t}function F(e){if(e.type)return e.type;if(e.userId===null||e.userId===void 0)return`anon`}function I(e){switch(e){case`student-reach`:return A(`classroomViews`);case`anon`:return A(`anonymous`);default:return null}}function L(e,t,n){if(n){let t=I(n);if(t&&!e?.name)return{name:t,surname:``}}let r=m(e,t).split(` `).filter(e=>!!e);return{name:r[0],surname:r.slice(1).join(` `)}}function R(e){if(!e)return null;let t=s.getUserRole(e);if([o.Admin,o.SuperAdmin].includes(t))return A(`adminRole`);let n=s.getUserType(e);return n===c.Learner?A(`studentRole`):n===c.Staff?A(`staffRole`):null}function z(e){return D.useMemo(()=>{let n=P(e.engagement),r=e.showSeparateNameColumns?[{id:`firstName`,Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`firstName`}),accessor:`user`,width:63,sortType:(t,n)=>{let r=F(t.original),i=F(n.original),{name:a}=L(t.values.firstName,e.anonymiseUsers,r),{name:o}=L(n.values.firstName,e.anonymiseUsers,i);return a>o?1:-1},Cell:({value:n,row:{original:r}})=>{let i=F(r),{name:a,surname:o}=L(n,e.anonymiseUsers,i);return(0,k.jsxs)(M,{className:`d-flex align-items-center h-100`,children:[(0,k.jsx)(`span`,{className:O.avatarContainer,children:(0,k.jsx)(h,{type:i,imageCdnUrl:e.imageCdnUrl,initials:s.getInitials(a,o),imageUrl:!e.anonymiseUsers&&!i&&n?.avatar?.url,anonymiseUsers:e.anonymiseUsers})}),(0,k.jsx)(`span`,{className:`ms-2 clamp-1`,children:a}),i===`student-reach`&&e.classroomViewsAppLink&&(0,k.jsx)(u,{customSize:!0,svg:E,svgSize:t.Standard,appLink:e.classroomViewsAppLink,className:O.cogIcon,tooltip:e.classroomViewsTooltip,tooltipTrigger:[`hover`],ariaLabel:e.classroomViewsTooltip})]})}},{id:`surname`,Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`surname`}),accessor:`user`,width:68,sortType:(t,n)=>{let r=F(t.original),i=F(n.original),{surname:a}=L(t.values.surname,e.anonymiseUsers,r),{surname:o}=L(n.values.surname,e.anonymiseUsers,i);return a>o?1:-1},Cell:({value:t,row:{original:n}})=>{let{surname:r}=L(t,e.anonymiseUsers,F(n));return(0,k.jsx)(M,{className:`d-flex align-items-center h-100`,children:(0,k.jsx)(`span`,{className:`clamp-1`,children:r||``})})}}]:[{id:`name`,Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`name`}),accessor:`user`,width:22,sortType:(t,n)=>{let r=F(t.original),i=F(n.original);return(r?I(r):m(t.values.user,e.anonymiseUsers))>(i?I(i):m(n.values.user,e.anonymiseUsers))?1:-1},Cell:({value:n,row:{original:r}})=>{let i=F(r),{name:a,surname:o}=L(n,e.anonymiseUsers,i);return(0,k.jsxs)(M,{className:`d-flex align-items-center h-100`,children:[(0,k.jsx)(`span`,{className:O.avatarContainer,children:(0,k.jsx)(h,{type:i,imageCdnUrl:e.imageCdnUrl,initials:s.getInitials(a,o),imageUrl:!e.anonymiseUsers&&!i&&n?.avatar?.url,anonymiseUsers:e.anonymiseUsers})}),(0,k.jsxs)(`span`,{className:`ms-2 clamp-1 me-1`,children:[a,` `,o]}),i===`student-reach`&&e.classroomViewsAppLink&&(0,k.jsx)(u,{customSize:!0,svg:E,svgSize:t.Standard,appLink:e.classroomViewsAppLink,className:O.cogIcon,tooltip:e.classroomViewsTooltip,ariaLabel:e.classroomViewsTooltip})]})}}],i=[];return e.showRole&&i.push({Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`role`}),accessor:`user`,width:20,Cell:({value:e})=>{let t=R(e);return(0,k.jsx)(M,{className:`d-flex align-items-center h-100`,children:t?(0,k.jsx)(`div`,{children:t}):(0,k.jsx)(`span`,{dangerouslySetInnerHTML:{__html:`‐`}})})}}),[...r,...i,{Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`views`}),accessor:`viewCount`,width:e.showSeparateNameColumns?47:15,sortType:`basic`,sortDescFirst:!0,Cell:({value:e})=>(0,k.jsx)(M,{className:`d-flex align-items-center h-100`,children:(0,k.jsx)(`div`,{children:e})})},{Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`engagement`}),accessor:`engagementRate`,width:e.showSeparateNameColumns?79:20,sortDescFirst:!0,Cell:({value:e})=>(0,k.jsx)(M,{className:`w-33`,children:(0,k.jsx)(T,{percentage:e,layout:w.LabelBefore})})},{Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`heatMap`}),accessor:`heatMap`,width:e.showSeparateNameColumns?230:48,disableSortBy:!0,Cell:({row:{original:e}})=>(0,k.jsx)(M,{className:`d-flex align-items-center h-100`,children:(0,k.jsx)(y,{engagement:e,max:n,className:`${O.heatMap} flex-grow-1`})})}]},[e.anonymiseUsers,e.showSeparateNameColumns])}function B(e,t,n){return D.useMemo(()=>{let r=[],i=new Set;if(e?.forEach(e=>{let n=t?.find(t=>t.id&&t.id===e.userId?(i.add(t.id),!0):!!(t.sessionId&&t.sessionId===e.sessionId));r.push({...e,user:n})}),n?.length){let e=n.filter(e=>!i.has(e.id)).map(e=>({...j,userId:e.id,user:e}));r.push(...e)}return r},[e,t,n])}var V={table:`bg-white rounded px-0`,header:`border-bottom`,headerCell:`m-3`,cell:`mx-3 my-2`};function H(e){let t=z({engagement:e.engagement,imageCdnUrl:e.imageCdnUrl,anonymiseUsers:e.anonymiseUsers,showSeparateNameColumns:e.showSeparateNameColumns,classroomViewsAppLink:e.classroomViewsAppLink,classroomViewsTooltip:e.classroomViewsTooltip,showRole:e.showRole}),n=B(e.engagement,e.users,e.classroomStudents);return n.length?(0,k.jsx)(ne,{columns:t,data:n,theme:{...V,table:e.border?`${V.table} border`:V.table},enableSort:e.enableSort}):(0,k.jsx)(k.Fragment,{})}function U(e){return(0,k.jsx)(T,{layout:e.layout,className:e.className,percentage:0,customLabel:`--%`})}var W=`shared.insightAmountWatched`,ue=n.encloseNamespace(W);function de(e){let t=ce(e.engagement),n=Math.round(t*100);return(0,k.jsx)(x,{title:ue(`title`),svg:l,svgClassName:`bg-light-green text-green`,children:(0,k.jsxs)(`div`,{className:`d-flex flex-column align-items-center my-auto gap-2`,children:[!!e.engagement&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(T,{percentage:t,layout:w.LabelInside}),(0,k.jsx)(`p`,{className:`text-center`,children:typeof t==`number`?(0,k.jsx)(f,{namespace:W,phrase:`everyoneWatched`,options:{percentage:n}}):(0,k.jsx)(f,{namespace:W,phrase:`notWatched`})})]}),!e.engagement&&(0,k.jsx)(k.Fragment,{children:(0,k.jsx)(U,{layout:w.LabelInside})})]})})}var G=e(se()),fe=S(),K=[`#FF9300`,`#38A2E8`,`#7A76E8`,`#B679C7`,`#F7847B`,`#D9584F`,`#FFCD52`,`#5DC786`,`#40BCC3`,`#40C2BB`];function pe(e){return e.map((e,t)=>({...e,color:K[t%K.length]}))}function me(e,t,n,r){let i={};return e[t]?.forEach(e=>{let t=e.name||`Unknown`;!t||n?.includes(t.toLowerCase())||(i[t]=i[t]??0,i[t]+=e.count)}),pe(a.sortBy(Object.keys(i).map(e=>({name:r?r(e):e,y:i[e],type:`pie`})),`name`))}function he(e){let t=e.findIndex(e=>e.name===`Staff`);if(t>-1){let[n]=e.splice(t,1);e.push(n)}return e.sort((e,t)=>parseInt(e.name.match(/\d+/)?.[0])-parseInt(t.name.match(/\d+/)?.[0]))}function ge(e){return e?.reduce((e,t)=>e+t.y,0)??null}var q=`shared.insightTotalViews`,J=n.encloseNamespace(q);function _e(e){return e===`Unknown`?J(`anon`):e}var ve={title:{text:null},credits:{enabled:!1},chart:{backgroundColor:`transparent`,spacing:[0,0,0,0]},legend:{itemStyle:le,itemDistance:8},plotOptions:{pie:{allowPointSelect:!0,cursor:`pointer`,dataLabels:{enabled:!1},showInLegend:!0,borderWidth:1,borderColor:`#ffffff`,borderRadius:0,size:`80%`}}};function ye(e){let t=he(me(e.events,`yearGroupCount`,e.hideStaffResults?[`staff`]:[],_e)),n=ge(t);function r(e){return{...ve,series:[{type:`pie`,name:J(`title`),data:e}]}}return(0,k.jsx)(x,{title:J(`title`),svgClassName:`bg-light-blue text-blue`,svg:p,children:t?.length?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`p`,{className:`mb-0`,children:(0,k.jsx)(f,{namespace:q,phrase:`totalViews`,options:{totalViews:n}})}),(0,k.jsx)(`div`,{className:`d-flex justify-content-center h-75`,children:(0,k.jsx)(fe.HighchartsReact,{highcharts:G.default,options:r(t),containerProps:{className:`w-100`}})})]}):(0,k.jsxs)(d,{className:`pt-0 my-auto`,children:[(0,k.jsx)(d.Image,{src:e.emptyStateImage,className:`w-75 h-auto`}),(0,k.jsx)(d.Heading,{className:`h4`,children:(0,k.jsx)(f,{namespace:q,phrase:`noViews`})}),(0,k.jsx)(d.Info,{className:`w-100`,children:(0,k.jsx)(f,{namespace:q,phrase:`notWatched`})})]})})}var Y={partialInsights:`_partialInsights_1vk2g_1`,videoContainer:`_videoContainer_1vk2g_4`};function be(){return(0,k.jsxs)(`div`,{children:[(0,k.jsxs)(`div`,{className:`row g-3 mb-3`,children:[(0,k.jsx)(`div`,{className:`col`,children:(0,k.jsx)(`div`,{className:`${Y.partialInsights} rounded partial-loading-background`})}),(0,k.jsx)(`div`,{className:`col`,children:(0,k.jsx)(`div`,{className:`${Y.partialInsights} rounded partial-loading-background`})}),(0,k.jsx)(`div`,{className:Y.videoContainer,children:(0,k.jsx)(`div`,{className:`${Y.partialInsights} rounded partial-loading-background`})})]}),(0,k.jsx)(`div`,{className:`row g-3 mb-5`,children:(0,k.jsx)(`div`,{className:`col-12`,children:(0,k.jsx)(`div`,{className:`${Y.partialInsights} rounded partial-loading-background`})})})]})}var xe=g.getComponent(`MenuItem`),X=class extends xe{constructor(e,t){super(e,t),this.overlayVisible=t.overlayVisible,this.toggle(this.overlayVisible)}handleToggle(){this.toggle(!this.overlayVisible)}toggle(e){e?this.toggleOn():this.toggleOff()}toggleOn(){g.dom.addClass(this.toggleEl,`on`),this.overlayVisible=!0,this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible),this.player().addClass(`cv-reports-player-overlay-visible`)}toggleOff(){g.dom.removeClass(this.toggleEl,`on`),this.overlayVisible=!1,this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible),this.player().removeClass(`cv-reports-player-overlay-visible`)}handleClick(e){e.stopImmediatePropagation()}createEl(e,t,n){this.handlerBound||=(this.handleToggle=this.handleToggle.bind(this),!0),this.toggleEl&&this.toggleEl.removeEventListener(`click`,this.handleToggle),this.toggleEl=g.dom.createEl(`div`,{className:`custom-toggle custom-toggle-info toggle-option float-end`,innerHTML:`<span class="handle"></span></div>`}),this.toggleEl.addEventListener(`click`,this.handleToggle);let r=super.createEl(e,{className:`vjs-menu-item cv-cog-menu-item`,innerHTML:`
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{n as t}from"./CvE4SVf2.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./wrLrTezN.chunk.js";import{t as a}from"./C1SLt-ar.chunk.js";import{n as o,t as s}from"./C5j5LRut2.chunk.js";import{t as c}from"./C1PTqhPY2.chunk.js";import{t as l}from"./DQgG9njb.chunk.js";import{t as ee}from"./Dxh97CrB2.chunk.js";import{n as te}from"./BIzu5ufQ.chunk.js";import{t as u}from"./B5TCUfQl.chunk.js";import{t as d}from"./Bas0iVyI.chunk.js";import{n as f}from"./CpFtf-tI2.chunk.js";import{t as p}from"./CSl1Z1eB.chunk.js";import{n as m,t as h}from"./C6hJ2iL42.chunk.js";import{t as ne}from"./BDG1Wu082.chunk.js";import{t as re}from"./7zYFiDUp.chunk.js";import{f as ie,i as ae,m as g,t as oe}from"./WDOpswDS.chunk.js";import{n as _,t as v}from"./BUdIzi2I.chunk.js";import"./DuFYtiN6.chunk.js";import{a as y,c as b,i as x,n as S,o as C,r as se,s as ce,t as le}from"./CZYaLpaJ.chunk.js";import{n as w,t as T}from"./Dkw9Ir-p2.chunk.js";import{t as E}from"./v4yEqcBz2.chunk.js";import"./FxuURp3k2.chunk.js";var D=e(r()),O={heatMap:`_heatMap_u3po2_1`,avatarContainer:`_avatarContainer_u3po2_4`,cogIcon:`_cogIcon_u3po2_8`},k=i(),A=n.encloseNamespace(`shared.engagementTable`),j={heatMap:[],engagementRate:0,viewCount:0};function M(e){return(0,k.jsx)(`div`,{className:`${e.className??``}`,children:e.children})}function N(e){return(0,k.jsx)(M,{className:`d-inline-block ${e.column.isSorted?`fw-bold`:``}`,children:A(e.phraseKey)})}function P(e){let t=0;return e.forEach(e=>{let n=Math.max(...e.heatMap);n>t&&(t=n)}),t}function F(e){if(e.type)return e.type;if(e.userId===null||e.userId===void 0)return`anon`}function I(e){switch(e){case`student-reach`:return A(`classroomViews`);case`anon`:return A(`anonymous`);default:return null}}function L(e,t,n){if(n){let t=I(n);if(t&&!e?.name)return{name:t,surname:``}}let r=m(e,t).split(` `).filter(e=>!!e);return{name:r[0],surname:r.slice(1).join(` `)}}function R(e){if(!e)return null;let t=s.getUserRole(e);if([o.Admin,o.SuperAdmin].includes(t))return A(`adminRole`);let n=s.getUserType(e);return n===c.Learner?A(`studentRole`):n===c.Staff?A(`staffRole`):null}function z(e){return D.useMemo(()=>{let n=P(e.engagement),r=e.showSeparateNameColumns?[{id:`firstName`,Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`firstName`}),accessor:`user`,width:63,sortType:(t,n)=>{let r=F(t.original),i=F(n.original),{name:a}=L(t.values.firstName,e.anonymiseUsers,r),{name:o}=L(n.values.firstName,e.anonymiseUsers,i);return a>o?1:-1},Cell:({value:n,row:{original:r}})=>{let i=F(r),{name:a,surname:o}=L(n,e.anonymiseUsers,i);return(0,k.jsxs)(M,{className:`d-flex align-items-center h-100`,children:[(0,k.jsx)(`span`,{className:O.avatarContainer,children:(0,k.jsx)(h,{type:i,imageCdnUrl:e.imageCdnUrl,initials:s.getInitials(a,o),imageUrl:!e.anonymiseUsers&&!i&&n?.avatar?.url,anonymiseUsers:e.anonymiseUsers})}),(0,k.jsx)(`span`,{className:`ms-2 clamp-1`,children:a}),i===`student-reach`&&e.classroomViewsAppLink&&(0,k.jsx)(u,{customSize:!0,svg:E,svgSize:t.Standard,appLink:e.classroomViewsAppLink,className:O.cogIcon,tooltip:e.classroomViewsTooltip,tooltipTrigger:[`hover`],ariaLabel:e.classroomViewsTooltip})]})}},{id:`surname`,Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`surname`}),accessor:`user`,width:68,sortType:(t,n)=>{let r=F(t.original),i=F(n.original),{surname:a}=L(t.values.surname,e.anonymiseUsers,r),{surname:o}=L(n.values.surname,e.anonymiseUsers,i);return a>o?1:-1},Cell:({value:t,row:{original:n}})=>{let{surname:r}=L(t,e.anonymiseUsers,F(n));return(0,k.jsx)(M,{className:`d-flex align-items-center h-100`,children:(0,k.jsx)(`span`,{className:`clamp-1`,children:r||``})})}}]:[{id:`name`,Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`name`}),accessor:`user`,width:22,sortType:(t,n)=>{let r=F(t.original),i=F(n.original);return(r?I(r):m(t.values.user,e.anonymiseUsers))>(i?I(i):m(n.values.user,e.anonymiseUsers))?1:-1},Cell:({value:n,row:{original:r}})=>{let i=F(r),{name:a,surname:o}=L(n,e.anonymiseUsers,i);return(0,k.jsxs)(M,{className:`d-flex align-items-center h-100`,children:[(0,k.jsx)(`span`,{className:O.avatarContainer,children:(0,k.jsx)(h,{type:i,imageCdnUrl:e.imageCdnUrl,initials:s.getInitials(a,o),imageUrl:!e.anonymiseUsers&&!i&&n?.avatar?.url,anonymiseUsers:e.anonymiseUsers})}),(0,k.jsxs)(`span`,{className:`ms-2 clamp-1 me-1`,children:[a,` `,o]}),i===`student-reach`&&e.classroomViewsAppLink&&(0,k.jsx)(u,{customSize:!0,svg:E,svgSize:t.Standard,appLink:e.classroomViewsAppLink,className:O.cogIcon,tooltip:e.classroomViewsTooltip,ariaLabel:e.classroomViewsTooltip})]})}}],i=[];return e.showRole&&i.push({Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`role`}),accessor:`user`,width:20,Cell:({value:e})=>{let t=R(e);return(0,k.jsx)(M,{className:`d-flex align-items-center h-100`,children:t?(0,k.jsx)(`div`,{children:t}):(0,k.jsx)(`span`,{dangerouslySetInnerHTML:{__html:`‐`}})})}}),[...r,...i,{Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`views`}),accessor:`viewCount`,width:e.showSeparateNameColumns?47:15,sortType:`basic`,sortDescFirst:!0,Cell:({value:e})=>(0,k.jsx)(M,{className:`d-flex align-items-center h-100`,children:(0,k.jsx)(`div`,{children:e})})},{Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`engagement`}),accessor:`engagementRate`,width:e.showSeparateNameColumns?79:20,sortDescFirst:!0,Cell:({value:e})=>(0,k.jsx)(M,{className:`w-33`,children:(0,k.jsx)(T,{percentage:e,layout:w.LabelBefore})})},{Header:({column:e})=>(0,k.jsx)(N,{column:e,phraseKey:`heatMap`}),accessor:`heatMap`,width:e.showSeparateNameColumns?230:48,disableSortBy:!0,Cell:({row:{original:e}})=>(0,k.jsx)(M,{className:`d-flex align-items-center h-100`,children:(0,k.jsx)(y,{engagement:e,max:n,className:`${O.heatMap} flex-grow-1`})})}]},[e.anonymiseUsers,e.showSeparateNameColumns])}function B(e,t,n){return D.useMemo(()=>{let r=[],i=new Set;if(e?.forEach(e=>{let n=t?.find(t=>t.id&&t.id===e.userId?(i.add(t.id),!0):!!(t.sessionId&&t.sessionId===e.sessionId));r.push({...e,user:n})}),n?.length){let e=n.filter(e=>!i.has(e.id)).map(e=>({...j,userId:e.id,user:e}));r.push(...e)}return r},[e,t,n])}var V={table:`bg-white rounded px-0`,header:`border-bottom`,headerCell:`m-3`,cell:`mx-3 my-2`};function H(e){let t=z({engagement:e.engagement,imageCdnUrl:e.imageCdnUrl,anonymiseUsers:e.anonymiseUsers,showSeparateNameColumns:e.showSeparateNameColumns,classroomViewsAppLink:e.classroomViewsAppLink,classroomViewsTooltip:e.classroomViewsTooltip,showRole:e.showRole}),n=B(e.engagement,e.users,e.classroomStudents);return n.length?(0,k.jsx)(ne,{columns:t,data:n,theme:{...V,table:e.border?`${V.table} border`:V.table},enableSort:e.enableSort}):(0,k.jsx)(k.Fragment,{})}function U(e){return(0,k.jsx)(T,{layout:e.layout,className:e.className,percentage:0,customLabel:`--%`})}var W=`shared.insightAmountWatched`,ue=n.encloseNamespace(W);function de(e){let t=ce(e.engagement),n=Math.round(t*100);return(0,k.jsx)(x,{title:ue(`title`),svg:l,svgClassName:`bg-light-green text-green`,children:(0,k.jsxs)(`div`,{className:`d-flex flex-column align-items-center my-auto gap-2`,children:[!!e.engagement&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(T,{percentage:t,layout:w.LabelInside}),(0,k.jsx)(`p`,{className:`text-center`,children:typeof t==`number`?(0,k.jsx)(f,{namespace:W,phrase:`everyoneWatched`,options:{percentage:n}}):(0,k.jsx)(f,{namespace:W,phrase:`notWatched`})})]}),!e.engagement&&(0,k.jsx)(k.Fragment,{children:(0,k.jsx)(U,{layout:w.LabelInside})})]})})}var G=e(se()),fe=S(),K=[`#FF9300`,`#38A2E8`,`#7A76E8`,`#B679C7`,`#F7847B`,`#D9584F`,`#FFCD52`,`#5DC786`,`#40BCC3`,`#40C2BB`];function pe(e){return e.map((e,t)=>({...e,color:K[t%K.length]}))}function me(e,t,n,r){let i={};return e[t]?.forEach(e=>{let t=e.name||`Unknown`;!t||n?.includes(t.toLowerCase())||(i[t]=i[t]??0,i[t]+=e.count)}),pe(a.sortBy(Object.keys(i).map(e=>({name:r?r(e):e,y:i[e],type:`pie`})),`name`))}function he(e){let t=e.findIndex(e=>e.name===`Staff`);if(t>-1){let[n]=e.splice(t,1);e.push(n)}return e.sort((e,t)=>parseInt(e.name.match(/\d+/)?.[0])-parseInt(t.name.match(/\d+/)?.[0]))}function ge(e){return e?.reduce((e,t)=>e+t.y,0)??null}var q=`shared.insightTotalViews`,J=n.encloseNamespace(q);function _e(e){return e===`Unknown`?J(`anon`):e}var ve={title:{text:null},credits:{enabled:!1},chart:{backgroundColor:`transparent`,spacing:[0,0,0,0]},legend:{itemStyle:le,itemDistance:8},plotOptions:{pie:{allowPointSelect:!0,cursor:`pointer`,dataLabels:{enabled:!1},showInLegend:!0,borderWidth:1,borderColor:`#ffffff`,borderRadius:0,size:`80%`}}};function ye(e){let t=he(me(e.events,`yearGroupCount`,e.hideStaffResults?[`staff`]:[],_e)),n=ge(t);function r(e){return{...ve,series:[{type:`pie`,name:J(`title`),data:e}]}}return(0,k.jsx)(x,{title:J(`title`),svgClassName:`bg-light-blue text-blue`,svg:p,children:t?.length?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`p`,{className:`mb-0`,children:(0,k.jsx)(f,{namespace:q,phrase:`totalViews`,options:{totalViews:n}})}),(0,k.jsx)(`div`,{className:`d-flex justify-content-center h-75`,children:(0,k.jsx)(fe.HighchartsReact,{highcharts:G.default,options:r(t),containerProps:{className:`w-100`}})})]}):(0,k.jsxs)(d,{className:`pt-0 my-auto`,children:[(0,k.jsx)(d.Image,{src:e.emptyStateImage,className:`w-75 h-auto`}),(0,k.jsx)(d.Heading,{className:`h4`,children:(0,k.jsx)(f,{namespace:q,phrase:`noViews`})}),(0,k.jsx)(d.Info,{className:`w-100`,children:(0,k.jsx)(f,{namespace:q,phrase:`notWatched`})})]})})}var Y={partialInsights:`_partialInsights_1vk2g_1`,videoContainer:`_videoContainer_1vk2g_4`};function be(){return(0,k.jsxs)(`div`,{children:[(0,k.jsxs)(`div`,{className:`row g-3 mb-3`,children:[(0,k.jsx)(`div`,{className:`col`,children:(0,k.jsx)(`div`,{className:`${Y.partialInsights} rounded partial-loading-background`})}),(0,k.jsx)(`div`,{className:`col`,children:(0,k.jsx)(`div`,{className:`${Y.partialInsights} rounded partial-loading-background`})}),(0,k.jsx)(`div`,{className:Y.videoContainer,children:(0,k.jsx)(`div`,{className:`${Y.partialInsights} rounded partial-loading-background`})})]}),(0,k.jsx)(`div`,{className:`row g-3 mb-5`,children:(0,k.jsx)(`div`,{className:`col-12`,children:(0,k.jsx)(`div`,{className:`${Y.partialInsights} rounded partial-loading-background`})})})]})}var xe=g.getComponent(`MenuItem`),X=class extends xe{constructor(e,t){super(e,t),this.overlayVisible=t.overlayVisible,this.toggle(this.overlayVisible)}handleToggle(){this.toggle(!this.overlayVisible)}toggle(e){e?this.toggleOn():this.toggleOff()}toggleOn(){g.dom.addClass(this.toggleEl,`on`),this.overlayVisible=!0,this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible),this.player().addClass(`cv-reports-player-overlay-visible`)}toggleOff(){g.dom.removeClass(this.toggleEl,`on`),this.overlayVisible=!1,this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible),this.player().removeClass(`cv-reports-player-overlay-visible`)}handleClick(e){e.stopImmediatePropagation()}createEl(e,t,n){this.handlerBound||=(this.handleToggle=this.handleToggle.bind(this),!0),this.toggleEl&&this.toggleEl.removeEventListener(`click`,this.handleToggle),this.toggleEl=g.dom.createEl(`div`,{className:`custom-toggle custom-toggle-info toggle-option float-end`,innerHTML:`<span class="handle"></span></div>`}),this.toggleEl.addEventListener(`click`,this.handleToggle);let r=super.createEl(e,{className:`vjs-menu-item cv-cog-menu-item`,innerHTML:`
|
|
2
2
|
<span class="vjs-menu-item-text">Heat Map</span>
|
|
3
3
|
<span class="cv-toggle-container"></span>`},n);return r.children[1].appendChild(this.toggleEl),r}};g.registerComponent(`EngagementOverlayMenuItem`,X);var Se=e(te(),1),Z=3;function Ce(e){let t=e.interactive.timepoints.find(t=>{let n=t.visibleAt/1e3;return Math.floor(e.time)===Math.floor(n)||Math.ceil(e.time)===Math.ceil(n)});if(!t?.interactions?.length)return(0,k.jsx)(k.Fragment,{});let n=t.interactions.length>Z?t.interactions.slice(0,Z-1):t.interactions,r=t.interactions.length-n.length;return(0,k.jsxs)(`div`,{className:`d-flex justify-content-end ms-2`,children:[n.map((e,t)=>(0,k.jsx)(re,{interaction:e,showQuestion:!1,iconClassName:`ms-1`},t)),!!r&&(0,k.jsx)(`div`,{className:`interaction-type-icon d-flex justify-content-center align-items-center border border-dark text-body ms-1`,children:`+${r}`})]})}var we={title:{text:null},xAxis:{visible:!1,minPadding:0,maxPadding:0},legend:{enabled:!1},credits:{enabled:!1},defs:{gradient:{tagName:`linearGradient`,id:`area-gradient`,x1:0,y1:1,x2:0,y2:0,children:[{tagName:`stop`,offset:0},{tagName:`stop`,offset:1}]}}};function Te(e,t){return{styledMode:!0,spacing:[15,0,0,0],width:e,height:t}}function Ee(e){return{max:Math.max(...e)*1.05,min:0,minPadding:0,maxPadding:0,allowDecimals:!0,startOnTick:!1,endOnTick:!1,visible:!1}}function De(e){return{formatter:function(){let t=e?Q(e,this.x):``;return`<div class="cv-engagement-tooltip bg-white rounded"><div class="d-flex justify-content-between"><strong>${ae(this.x)}</strong>${t}</div><div class="d-flex justify-content-between rounded bg-light cv-view-count-container"><strong>Views</strong> <span class="cv-view-count">${this.y}</span></div></div>`},positioner:function(e,t,n){let r=this.chart.plotWidth-e,i=n.plotX-e/2;return{x:Math.min(Math.max(i,0),r),y:this.chart.plotTop}},useHTML:!0,padding:0}}function Oe(e){return{area:{point:{events:{mouseOver:function(){e(this.x)},mouseOut:function(){e(null)}}}},series:{marker:{enabled:!1}}}}function Q(e,t){return(0,Se.renderToStaticMarkup)((0,k.jsx)(Ce,{time:t,interactive:e}))}var ke=g.getComponent(`Component`);G.default.AST.allowedTags.push(`g`),G.default.AST.allowedAttributes.push(`viewBox`,`transform`);var Ae=class extends ke{constructor(e,t){super(e,t),this.initialize(),this.bindListeners()}initialize(){this.player().ready(()=>this.buildChart())}buildCSSClass(){return`cv-engagement-overlay`}createEl(e,t,n){return super.createEl(e,{...t,className:this.buildCSSClass(),innerHTML:`<div class="cv-engagement-chart"></div><div class="cv-engagement-timepoint-indicator"></div>`},n)}toggleChart(e){e?this.buildChart():this.destroyChart()}bindListeners(){this.handleClick=this.handleClick.bind(this),this.resizeChart=this.resizeChart.bind(this),this.player().on(`playerresize`,this.resizeChart),this.on(this.el(),`mouseup`,this.handleClick),this.player().on(`dispose`,()=>{this.player().off(`playerresize`,this.resizeChart),this.off(this.el(),`mouseup`,this.handleClick)})}handleClick(e){if(g.dom.isSingleLeftClick(e)){if(this.player().paused()){this.player().play();return}this.player().pause()}}buildChart(){if(this.chart)return;let e=this.getChartDimensions();if(!e){this.player().one(`play`,()=>this.buildChart());return}let t=this.el().querySelector(`.cv-engagement-chart`);this.chart=G.default.chart(t,this.getHighchartOptions(e))}resizeChart(){let e=this.getChartDimensions();!this.chart||!e||this.chart.setSize(e.width,e.height)}destroyChart(){this.chart?.destroy(),this.chart=null}getChartDimensions(){let e=this.player().getChild(`collapserator`)?.currentHeight(),t=this.el().clientWidth;if(!e||!t)return null;let{height:n}=this.player().currentDimensions();return{width:t,height:n-e}}getHighchartOptions({width:e,height:t}){return{...we,chart:Te(e,t),yAxis:Ee(this.options_.heatMap),tooltip:De(this.options_.interactive),plotOptions:Oe(this.moveTimepointIndicator.bind(this)),series:[{type:`area`,data:this.options_.heatMap}]}}moveTimepointIndicator(e){this.options_.onTimepointHover&&this.options_.onTimepointHover(e);let t=this.el().querySelector(`.cv-engagement-timepoint-indicator`);if(e===null){g.dom.removeClass(t,`cv-engagement-timepoint-indicator-visible`);return}g.dom.addClass(t,`cv-engagement-timepoint-indicator-visible`),t.style.left=`${e/this.options_.heatMap.length*100}%`}};g.registerComponent(`EngagementOverlay`,Ae);var je=g.getPlugin(`plugin`),Me=class extends je{constructor(e,t){super(e,t),this.options=t,e.ready(()=>{this.initialize()})}initialize(){this.hasHeatMapData()&&(this.player.addChild(`engagementOverlay`,{heatMap:this.options.heatMap,interactive:this.options.interactive,onTimepointHover:this.options.onTimepointHover}),(this.player.getChild(`collapserator`)?.getChild(`cogButton`)).addItem({ctor:X,name:`EngagementOverlayMenuItem`,options:{overlayVisible:!0}}))}toggleOverlay(e){this.player.getChild(`engagementOverlay`)?.toggleChart(e)}hasHeatMapData(){return this.options.heatMap?.reduce((e,t)=>e+t,0)>0}};g.registerPlugin(`engagementOverlayPlugin`,Me);var Ne=g.getPlugin(`plugin`),Pe=class extends Ne{constructor(e,t){super(e),this.options=t,this.player.one(`loadedmetadata`,()=>this.player.ready(this.initialize.bind(this)))}initialize(){ie.useMetadataTrack(this.player,`interactive`,this.onTrackLoaded.bind(this)),this.player.addClass(`cv-interactive-plugin`)}onTrackLoaded(e){this.addChildren(e)}addChildren(e){this.player.controlBar.getChild(`progressControl`).getChild(`SeekBar`).addChild(new v(this.player,{interactive:this.options.interactive,track:e}))}};g.registerPlugin(`interactiveSeekBarPlugin`,Pe);var Fe=class extends oe{constructor(e,t){super(e,t)}getPlayerClassName(){return`cv-reports-player`}getAnalyticsPlayerType(){return`reports-player`}async additionalSetup(e){super.additionalSetup(e),this.setupEngagementOverlayPlugin(e),this.setupUpClipPlugin(e),this.setupInteractiveSeekBarPlugin(e)}setupEngagementOverlayPlugin(e){this.player.engagementOverlayPlugin({heatMap:this.options.heatMap,interactive:e.additionalData?.interactive,onTimepointHover:this.options.onTimepointHover})}setupUpClipPlugin(e){let t=e.mediaType===`MasterClip`,n=e.mediaType===`MasterInteractive`;if(!t&&!n)return;let r;if(t&&(r=e.additionalData),!(n&&(r=e.additionalData?.clipData,!r))){if(!r)throw Error(`Invalid clip data`);this.player.clipPlugin({startTime:r.startTime,endTime:r.endTime})}}setupInteractiveSeekBarPlugin(e){let t=e.additionalData?.interactive;e.additionalData?.interactive&&(this.track=_.getInteractiveTrack(this.player,e),this.player.interactiveSeekBarPlugin({interactive:t}))}getSeekBarOptions(){return{ignoreChapters:!0}}};function Ie(e){let t=D.useRef(null),n=D.useRef(null);return D.useEffect(()=>{n.current=new Fe(t.current,e)},[]),(0,k.jsx)(`div`,{ref:t})}var $={playerContainer:`_playerContainer_odup3_1`,playerPlaceholder:`_playerPlaceholder_odup3_8`,heatMap:`_heatMap_odup3_12`,heatMapTimepointIndicator:`_heatMapTimepointIndicator_odup3_15`,heatMapTimepointIndicatorVisible:`_heatMapTimepointIndicatorVisible_odup3_24`,partialLoadingContainer:`_partialLoadingContainer_odup3_28`},Le=n.encloseNamespace(`shared.videoEngagementOverlay`);function Re(e){let t=D.useRef(null),n=b(e.engagement);function r(e){let r=t.current;if(r){if(e===null){r.classList.remove($.heatMapTimepointIndicatorVisible);return}r.classList.add($.heatMapTimepointIndicatorVisible),r.style.left=`${e/n.length*100}%`}}return(0,k.jsxs)(`div`,{className:`bg-white border rounded overflow-hidden h-100`,children:[(0,k.jsxs)(`div`,{className:`position-relative`,children:[(0,k.jsx)(`div`,{className:$.playerPlaceholder}),(0,k.jsx)(`div`,{className:$.playerContainer,children:(0,k.jsx)(Ie,{viewKey:e.viewKey,playerApi:new URL(e.playerApiUrl),hotkeyElQuerySelector:`body`,heatMap:n,onTimepointHover:r,aspectRatio:`16:9`})})]}),(0,k.jsxs)(`div`,{className:`p-3`,children:[(0,k.jsxs)(`div`,{className:`position-relative`,children:[(0,k.jsx)(y,{engagement:e.engagement,className:$.heatMap}),(0,k.jsx)(`div`,{ref:t,className:$.heatMapTimepointIndicator})]}),(0,k.jsxs)(`div`,{className:`d-flex justify-content-between mt-2`,children:[(0,k.jsx)(`strong`,{children:Le(`heatmap`)}),(0,k.jsx)(`div`,{className:`w-33`,children:(0,k.jsx)(C,{})})]})]})]})}var ze={videoContainer:`_videoContainer_1lnnd_1`};function Be(e){return(0,k.jsxs)(k.Fragment,{children:[!e.hasDataLoaded&&(0,k.jsx)(be,{}),(0,k.jsxs)(`div`,{className:`row g-3 mb-3`,children:[e.hasDataLoaded&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`div`,{className:`col`,children:(0,k.jsx)(ye,{events:{yearGroupCount:e.yearGroups},emptyStateImage:ee.EmptyStates.MY_VIDEOS,hideStaffResults:e.hideStaffResults})}),(0,k.jsx)(`div`,{className:`col`,children:(0,k.jsx)(de,{engagement:e.individualEngagement})}),(0,k.jsx)(`div`,{className:ze.videoContainer,children:(0,k.jsx)(Re,{engagement:e.aggregateEngagement,viewKey:e.viewKey.viewKey,playerApiUrl:e.config.playerApiUrl,imageCdnUrl:e.config.imageCdnUrl})})]}),e.tableDataLoaded&&(0,k.jsx)(`div`,{className:`col-12`,children:(0,k.jsx)(H,{engagement:e.individualEngagement,users:e.users,imageCdnUrl:e.config?.imageCdnUrl,anonymiseUsers:e.anonymiseUsers,classroomStudents:e.classroomStudents,border:!0,enableSort:!0,showSeparateNameColumns:!0})})]})]})}export{Be as t};
|
|
4
|
-
//# sourceMappingURL=
|
|
4
|
+
//# sourceMappingURL=BNAB3zGE2.chunk.js.map
|