@clickview/reports 0.86.0-rc.0 → 0.86.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 (73) hide show
  1. package/dist/.vite/manifest.json +252 -252
  2. package/dist/bundles.json +1 -1
  3. package/dist/en.json +1 -1
  4. package/dist/scripts/{D4_Ou9e_.chunk.js → B3BAH-B8.chunk.js} +2 -2
  5. package/dist/scripts/{D4_Ou9e_.chunk.js.map → B3BAH-B8.chunk.js.map} +1 -1
  6. package/dist/scripts/{BWJBtdAK2.chunk.js → B9u-BJ_k2.chunk.js} +2 -2
  7. package/dist/scripts/{BWJBtdAK2.chunk.js.map → B9u-BJ_k2.chunk.js.map} +1 -1
  8. package/dist/scripts/BIvkuRmF.chunk.js +1 -0
  9. package/dist/scripts/{BLy0WwGy.chunk.js → BLILOa4O.chunk.js} +2 -2
  10. package/dist/scripts/{BLy0WwGy.chunk.js.map → BLILOa4O.chunk.js.map} +1 -1
  11. package/dist/scripts/{BVgajZti.chunk.js → BNQGo_Gd.chunk.js} +2 -2
  12. package/dist/scripts/{BVgajZti.chunk.js.map → BNQGo_Gd.chunk.js.map} +1 -1
  13. package/dist/scripts/{296Drw6z.chunk.js → BTLhY0Si.chunk.js} +2 -2
  14. package/dist/scripts/BTLhY0Si.chunk.js.map +1 -0
  15. package/dist/scripts/{BV2ee_KR.chunk.js → Bf4DlBxT.chunk.js} +2 -2
  16. package/dist/scripts/{BV2ee_KR.chunk.js.map → Bf4DlBxT.chunk.js.map} +1 -1
  17. package/dist/scripts/{DQamsoU_2.chunk.js → Bl6b6nAn2.chunk.js} +2 -2
  18. package/dist/scripts/{DQamsoU_2.chunk.js.map → Bl6b6nAn2.chunk.js.map} +1 -1
  19. package/dist/scripts/{DhJ5lhcc.chunk.js → Bv4pM4sp.chunk.js} +2 -2
  20. package/dist/scripts/{DhJ5lhcc.chunk.js.map → Bv4pM4sp.chunk.js.map} +1 -1
  21. package/dist/scripts/{CmiQpwgd2.chunk.js → C-4Pza2l2.chunk.js} +2 -2
  22. package/dist/scripts/{CmiQpwgd2.chunk.js.map → C-4Pza2l2.chunk.js.map} +1 -1
  23. package/dist/scripts/{CMQlrOon2.chunk.js → C21pODi22.chunk.js} +2 -2
  24. package/dist/scripts/{CMQlrOon2.chunk.js.map → C21pODi22.chunk.js.map} +1 -1
  25. package/dist/scripts/{PLyhtHwt2.chunk.js → C46TEWQx2.chunk.js} +2 -2
  26. package/dist/scripts/{PLyhtHwt2.chunk.js.map → C46TEWQx2.chunk.js.map} +1 -1
  27. package/dist/scripts/{DsnkNBu62.chunk.js → CMw7H8FK2.chunk.js} +2 -2
  28. package/dist/scripts/{DsnkNBu62.chunk.js.map → CMw7H8FK2.chunk.js.map} +1 -1
  29. package/dist/scripts/{cBssbttB.chunk.js → CQNeP_Yp.chunk.js} +2 -2
  30. package/dist/scripts/{cBssbttB.chunk.js.map → CQNeP_Yp.chunk.js.map} +1 -1
  31. package/dist/scripts/{Cv9H330A2.chunk.js → ClDdEKYV2.chunk.js} +2 -2
  32. package/dist/scripts/{Cv9H330A2.chunk.js.map → ClDdEKYV2.chunk.js.map} +1 -1
  33. package/dist/scripts/{CglHgfcX.chunk.js → Cu6M80aY.chunk.js} +2 -2
  34. package/dist/scripts/{CglHgfcX.chunk.js.map → Cu6M80aY.chunk.js.map} +1 -1
  35. package/dist/scripts/{dMt3Yeox.chunk.js → D0Iup4vX.chunk.js} +3 -3
  36. package/dist/scripts/{dMt3Yeox.chunk.js.map → D0Iup4vX.chunk.js.map} +1 -1
  37. package/dist/scripts/{BCPzswJq.chunk.js → D5SnHbk-.chunk.js} +2 -2
  38. package/dist/scripts/{BCPzswJq.chunk.js.map → D5SnHbk-.chunk.js.map} +1 -1
  39. package/dist/scripts/{CudCJxPc2.chunk.js → DHGyxAjV2.chunk.js} +2 -2
  40. package/dist/scripts/{CudCJxPc2.chunk.js.map → DHGyxAjV2.chunk.js.map} +1 -1
  41. package/dist/scripts/{B2L2H3g9.chunk.js → DMQIqlrn.chunk.js} +2 -2
  42. package/dist/scripts/{B2L2H3g9.chunk.js.map → DMQIqlrn.chunk.js.map} +1 -1
  43. package/dist/scripts/{CFA2yuiv.chunk.js → DSOStB3B.chunk.js} +2 -2
  44. package/dist/scripts/{CFA2yuiv.chunk.js.map → DSOStB3B.chunk.js.map} +1 -1
  45. package/dist/scripts/{CPw6bsFu2.chunk.js → DaN1d6Pn2.chunk.js} +2 -2
  46. package/dist/scripts/{CPw6bsFu2.chunk.js.map → DaN1d6Pn2.chunk.js.map} +1 -1
  47. package/dist/scripts/{D68hdbWD2.chunk.js → DeAZkXBA2.chunk.js} +2 -2
  48. package/dist/scripts/{D68hdbWD2.chunk.js.map → DeAZkXBA2.chunk.js.map} +1 -1
  49. package/dist/scripts/{BPVl1Je7.chunk.js → DeQ431eX.chunk.js} +2 -2
  50. package/dist/scripts/{BPVl1Je7.chunk.js.map → DeQ431eX.chunk.js.map} +1 -1
  51. package/dist/scripts/DuNznK6r.chunk.js +1 -0
  52. package/dist/scripts/{oPoOD_J-2.chunk.js → Duq0DLsG2.chunk.js} +2 -2
  53. package/dist/scripts/{oPoOD_J-2.chunk.js.map → Duq0DLsG2.chunk.js.map} +1 -1
  54. package/dist/scripts/{BHTp9hJG.chunk.js → Dxi0YECT.chunk.js} +2 -2
  55. package/dist/scripts/{BHTp9hJG.chunk.js.map → Dxi0YECT.chunk.js.map} +1 -1
  56. package/dist/scripts/{D3WnBGZG.chunk.js → KApJ0N8H.chunk.js} +2 -2
  57. package/dist/scripts/{D3WnBGZG.chunk.js.map → KApJ0N8H.chunk.js.map} +1 -1
  58. package/dist/scripts/{DcKDIHY92.chunk.js → LH8waKdJ2.chunk.js} +2 -2
  59. package/dist/scripts/{DcKDIHY92.chunk.js.map → LH8waKdJ2.chunk.js.map} +1 -1
  60. package/dist/scripts/{DNKj09Lh2.chunk.js → O4R5nbYC2.chunk.js} +2 -2
  61. package/dist/scripts/{DNKj09Lh2.chunk.js.map → O4R5nbYC2.chunk.js.map} +1 -1
  62. package/dist/scripts/{BQjyL0qS2.chunk.js → VhnfG4dU2.chunk.js} +2 -2
  63. package/dist/scripts/{BQjyL0qS2.chunk.js.map → VhnfG4dU2.chunk.js.map} +1 -1
  64. package/dist/scripts/{app-cakVQEAF.js → app-DLh9RnwX.js} +4 -4
  65. package/dist/scripts/{app-cakVQEAF.js.map → app-DLh9RnwX.js.map} +1 -1
  66. package/dist/scripts/{Dj68Q14w.chunk.js → e3pgZZ_n.chunk.js} +2 -2
  67. package/dist/scripts/{Dj68Q14w.chunk.js.map → e3pgZZ_n.chunk.js.map} +1 -1
  68. package/dist/scripts/{DrBRL2aF.chunk.js → mKkhzqL1.chunk.js} +2 -2
  69. package/dist/scripts/{DrBRL2aF.chunk.js.map → mKkhzqL1.chunk.js.map} +1 -1
  70. package/package.json +1 -1
  71. package/dist/scripts/296Drw6z.chunk.js.map +0 -1
  72. package/dist/scripts/CyRTALRJ.chunk.js +0 -1
  73. package/dist/scripts/Dm7M2BT8.chunk.js +0 -1
@@ -1,2 +1,2 @@
1
- import{P as e,en as t,st as n}from"./BSV_W0cK.chunk.js";import{v as r}from"./COrUmz0l.chunk.js";import{d as i,n as a}from"./DLiesDxa.chunk.js";import{t as o}from"./Dhb09xKG.chunk.js";import{r as s,t as c}from"./BmJ66zOA.chunk.js";import{t as l}from"./Bqlm3yF_.chunk.js";import{n as u,r as d,t as f}from"./H5KLIhR_.chunk.js";import{t as p}from"./Du_kaCuU.chunk.js";import{r as m}from"./app-cakVQEAF.js";import{t as h}from"./PLyhtHwt2.chunk.js";import{i as g,n as _,o as v,r as y,s as b,t as x}from"./DcKDIHY92.chunk.js";var S={image:`_image_1a110_1`};n();var C=e(),w=l.encloseNamespace(`shared.streamsBarChartCardEmptyState`);function T(){return(0,C.jsxs)(p,{className:`flex-grow-1 justify-content-center`,children:[(0,C.jsx)(p.Image,{src:f.EmptyStates.Shared.BagQuestionOrange,className:S.image}),(0,C.jsx)(p.Heading,{className:`h6`,children:w(`heading`)}),(0,C.jsx)(p.Info,{className:`w-100`,children:w(`description`)})]})}var E=c(),D=`shared.streamsBarChartCard`,O=l.encloseNamespace(D);function k(e){let n=m(`video-views`),o=_(i(e.videoId?h.videoAggregation(e.videoId,e.type,n):h.aggregation(e.type,n)).data,y(e.type)),s=o?.reduce((e,t)=>e+t.y,0);return(0,C.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3`,children:o?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,C.jsx)(`h2`,{className:`h6 mb-1`,children:(0,C.jsx)(a,{namespace:D,phrase:`totalViews`,options:{views:s}})}),e.appLink&&e.appLinkText&&(0,C.jsx)(r,{appLink:e.appLink,className:`text-info`,children:e.appLinkText})]}),o.length?(0,C.jsx)(E.Scrollbars,{className:`position-relative`,children:(0,C.jsx)(`div`,{className:`position-absolute w-100 pe-2`,children:(0,C.jsx)(b,{data:o,labelAnnotations:{"Classroom views":{onClick:()=>{t.trigger({application:d.DEFAULT,action:u.Default.CLASSROOM_VIEWS_POPUP})},tooltip:O(`classroomViewsSettings`)}}})})}):(0,C.jsx)(T,{})]}):(0,C.jsx)(`div`,{className:`partial-loading-background d-block w-50`,children:`\xA0`})})}var A={MONTH:35,YEAR:365},j={day:`YYYY-MM-DD`,month:`YYYY-MM`,year:`YYYY`},M={day:`D MMM`,month:`MMM`,year:`YYYY`};function N(e){let t=o.diffBetween(e.end,e.start,`day`);return t>A.YEAR?`year`:t>A.MONTH?`month`:`day`}function P(e,t){let n=[],r=o.convertUTCToLocal(e.start),i=o.convertUTCToLocal(e.end),a=o.format(r,j[t]);for(;!o.isAfter(a,i,t);)n.push(a),a=o.format(o.add(a,1,t),j[t]);return n}function F(e,t,n){if(!e)return null;let r=N(t),i=P(t,r),a=new Map;e.forEach(e=>{let t=o.format(o.convertUTCToLocal(e.dateStreamed),j[r]),n=[s.System,`255`].includes(e.name)?null:e.name,i=a.get(n);i||a.set(n,i=new Map);let c=i.get(t)??0;i.set(t,c+e.count)});let c=[...a.keys()];if(!c.length)return{categories:i.map(e=>o.format(e,M[r])),data:[]};let l=y(n);return{categories:i.map(e=>o.format(e,M[r])),data:c.map(e=>({name:l(e),type:`line`,data:i.map(t=>a.get(e).get(t)??0),color:g(e)})).sort((e,t)=>v(e.name,t.name))}}var I=`reportsShared.streamsChartCard`,L=l.encloseNamespace(I);function R(e){let n=m(`video-views`),r=F(i(e.videoId?h.videoAggregationChart(e.videoId,e.type,n):h.aggregationChart(e.type,n)).data,n,e.type);return(0,C.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white rounded p-3 position-relative`,children:r?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`h2`,{className:`position-absolute h6 mb-1`,children:(0,C.jsx)(a,{namespace:I,phrase:`videoViews`})}),(0,C.jsx)(x,{categories:r.categories,data:r.data,legendAnnotations:{"Classroom views":{onClick:()=>{t.trigger({application:d.DEFAULT,action:u.Default.CLASSROOM_VIEWS_POPUP})},tooltip:L(`classroomViewsSettings`)}}})]}):(0,C.jsx)(`div`,{className:`partial-loading-background w-25`,children:`\xA0`})})}export{k as n,R as t};
2
- //# sourceMappingURL=CMQlrOon2.chunk.js.map
1
+ import{P as e,en as t,st as n}from"./BSV_W0cK.chunk.js";import{v as r}from"./COrUmz0l.chunk.js";import{d as i,n as a}from"./DLiesDxa.chunk.js";import{t as o}from"./Dhb09xKG.chunk.js";import{r as s,t as c}from"./BmJ66zOA.chunk.js";import{t as l}from"./Bqlm3yF_.chunk.js";import{n as u,r as d,t as f}from"./H5KLIhR_.chunk.js";import{t as p}from"./Du_kaCuU.chunk.js";import{r as m}from"./app-DLh9RnwX.js";import{t as h}from"./C46TEWQx2.chunk.js";import{i as g,n as _,o as v,r as y,s as b,t as x}from"./LH8waKdJ2.chunk.js";var S={image:`_image_1a110_1`};n();var C=e(),w=l.encloseNamespace(`shared.streamsBarChartCardEmptyState`);function T(){return(0,C.jsxs)(p,{className:`flex-grow-1 justify-content-center`,children:[(0,C.jsx)(p.Image,{src:f.EmptyStates.Shared.BagQuestionOrange,className:S.image}),(0,C.jsx)(p.Heading,{className:`h6`,children:w(`heading`)}),(0,C.jsx)(p.Info,{className:`w-100`,children:w(`description`)})]})}var E=c(),D=`shared.streamsBarChartCard`,O=l.encloseNamespace(D);function k(e){let n=m(`video-views`),o=_(i(e.videoId?h.videoAggregation(e.videoId,e.type,n):h.aggregation(e.type,n)).data,y(e.type)),s=o?.reduce((e,t)=>e+t.y,0);return(0,C.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3`,children:o?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,C.jsx)(`h2`,{className:`h6 mb-1`,children:(0,C.jsx)(a,{namespace:D,phrase:`totalViews`,options:{views:s}})}),e.appLink&&e.appLinkText&&(0,C.jsx)(r,{appLink:e.appLink,className:`text-info`,children:e.appLinkText})]}),o.length?(0,C.jsx)(E.Scrollbars,{className:`position-relative`,children:(0,C.jsx)(`div`,{className:`position-absolute w-100 pe-2`,children:(0,C.jsx)(b,{data:o,labelAnnotations:{"Classroom views":{onClick:()=>{t.trigger({application:d.DEFAULT,action:u.Default.CLASSROOM_VIEWS_POPUP})},tooltip:O(`classroomViewsSettings`)}}})})}):(0,C.jsx)(T,{})]}):(0,C.jsx)(`div`,{className:`partial-loading-background d-block w-50`,children:`\xA0`})})}var A={MONTH:35,YEAR:365},j={day:`YYYY-MM-DD`,month:`YYYY-MM`,year:`YYYY`},M={day:`D MMM`,month:`MMM`,year:`YYYY`};function N(e){let t=o.diffBetween(e.end,e.start,`day`);return t>A.YEAR?`year`:t>A.MONTH?`month`:`day`}function P(e,t){let n=[],r=o.convertUTCToLocal(e.start),i=o.convertUTCToLocal(e.end),a=o.format(r,j[t]);for(;!o.isAfter(a,i,t);)n.push(a),a=o.format(o.add(a,1,t),j[t]);return n}function F(e,t,n){if(!e)return null;let r=N(t),i=P(t,r),a=new Map;e.forEach(e=>{let t=o.format(o.convertUTCToLocal(e.dateStreamed),j[r]),n=[s.System,`255`].includes(e.name)?null:e.name,i=a.get(n);i||a.set(n,i=new Map);let c=i.get(t)??0;i.set(t,c+e.count)});let c=[...a.keys()];if(!c.length)return{categories:i.map(e=>o.format(e,M[r])),data:[]};let l=y(n);return{categories:i.map(e=>o.format(e,M[r])),data:c.map(e=>({name:l(e),type:`line`,data:i.map(t=>a.get(e).get(t)??0),color:g(e)})).sort((e,t)=>v(e.name,t.name))}}var I=`reportsShared.streamsChartCard`,L=l.encloseNamespace(I);function R(e){let n=m(`video-views`),r=F(i(e.videoId?h.videoAggregationChart(e.videoId,e.type,n):h.aggregationChart(e.type,n)).data,n,e.type);return(0,C.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white rounded p-3 position-relative`,children:r?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`h2`,{className:`position-absolute h6 mb-1`,children:(0,C.jsx)(a,{namespace:I,phrase:`videoViews`})}),(0,C.jsx)(x,{categories:r.categories,data:r.data,legendAnnotations:{"Classroom views":{onClick:()=>{t.trigger({application:d.DEFAULT,action:u.Default.CLASSROOM_VIEWS_POPUP})},tooltip:L(`classroomViewsSettings`)}}})]}):(0,C.jsx)(`div`,{className:`partial-loading-background w-25`,children:`\xA0`})})}export{k as n,R as t};
2
+ //# sourceMappingURL=C21pODi22.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CMQlrOon2.chunk.js","names":[],"sources":["../../src/shared/views/overview-cards/streams-bar-chart-card/empty-state/total-views-by-group-card-empty-state.module.scss","../../src/shared/views/overview-cards/streams-bar-chart-card/empty-state/StreamsBarChartCardEmptyState.tsx","../../src/shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView.tsx","../../src/shared/views/overview-cards/streams-chart-card/StreamsChartCardViewUtils.ts","../../src/shared/views/overview-cards/streams-chart-card/StreamsChartCardView.tsx"],"sourcesContent":[":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nconst namespace = 'shared.streamsBarChartCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport styles from './total-views-by-group-card-empty-state.module.scss';\n\nexport function StreamsBarChartCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.BagQuestionOrange}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { VerticalBarChart } from 'shared/components/vertical-bar-chart/VerticalBarChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { getCountByGroup } from 'shared/utils/BarChartByGroupUtils';\nimport { getLabelMapper } from 'shared/utils/UserUtils';\nimport { StreamsBarChartCardEmptyState } from 'shared/views/overview-cards/streams-bar-chart-card/empty-state/StreamsBarChartCardEmptyState';\n\nconst namespace = 'shared.streamsBarChartCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TotalViewsByGroupViewProps {\n type: StreamAggregationType;\n videoId?: string;\n appLink?: Core.AppLink;\n appLinkText?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StreamsBarChartCardView(props: TotalViewsByGroupViewProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const chartData = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, props.type, requestFilter) :\n VideoViewsV2Requests.aggregation(props.type, requestFilter));\n\n const grouped = getCountByGroup(\n chartData.data,\n getLabelMapper(props.type)\n );\n const total = grouped?.reduce((acc, group) => (acc + group.y), 0);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {grouped ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-1'><Text namespace={namespace} phrase='totalViews' options={{ views: total }} /></h2>\n {props.appLink && props.appLinkText &&\n <AppLink\n appLink={props.appLink}\n className='text-info'\n >\n {props.appLinkText}\n </AppLink>\n }\n </div>\n\n {grouped.length ?\n <Scrollbars className='position-relative'>\n <div className='position-absolute w-100 pe-2'>\n <VerticalBarChart data={grouped} labelAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }} />\n </div>\n </Scrollbars> :\n <StreamsBarChartCardEmptyState />\n }\n </> :\n <div className='partial-loading-background d-block w-50'>&nbsp;</div>\n }\n </div >\n );\n}\n","import { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { GroupedAnalyticsChartCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nimport { compareGroupNames } from 'shared/utils/GroupSortUtils';\nimport { getLabelMapper, mapUserTypeToChartColour } from 'shared/utils/UserUtils';\n\nconst GroupByThresholds = {\n MONTH: 35,\n YEAR: 365\n};\n\nconst DateFormats = {\n day: 'YYYY-MM-DD',\n month: 'YYYY-MM',\n year: 'YYYY'\n};\n\nconst DisplayFormats = {\n day: 'D MMM',\n month: 'MMM',\n year: 'YYYY'\n};\n\ntype GroupBy = 'day' | 'month' | 'year';\n\ninterface ChartData {\n categories: string[];\n data: Highcharts.SeriesLineOptions[];\n}\n\nfunction getGroupBy(requestFilter: AnalyticsRequestFilter): GroupBy {\n const range = DateHelper.diffBetween(requestFilter.end, requestFilter.start, 'day');\n\n if (range > GroupByThresholds.YEAR)\n return 'year';\n\n if (range > GroupByThresholds.MONTH)\n return 'month';\n\n return 'day';\n}\n\nfunction getFullDateRange(requestFilter: AnalyticsRequestFilter, groupBy: GroupBy): string[] {\n const range: string[] = [];\n\n const localStart = DateHelper.convertUTCToLocal(requestFilter.start);\n const localEnd = DateHelper.convertUTCToLocal(requestFilter.end);\n\n let currentDate = DateHelper.format(localStart, DateFormats[groupBy]);\n\n while (!DateHelper.isAfter(currentDate, localEnd, groupBy)) {\n range.push(currentDate);\n currentDate = DateHelper.format(DateHelper.add(currentDate, 1, groupBy), DateFormats[groupBy]);\n }\n\n return range;\n}\n\nexport function getChartData(\n events: GroupedAnalyticsChartCount[],\n requestFilter: AnalyticsRequestFilter,\n type: StreamAggregationType\n): ChartData {\n if (!events) return null;\n\n const groupBy = getGroupBy(requestFilter);\n const fullDateRange = getFullDateRange(requestFilter, groupBy);\n \n const grouped = new Map<string, Map<string, number>>();\n \n events.forEach(ev => {\n const eventDate = DateHelper.format(DateHelper.convertUTCToLocal(ev.dateStreamed), DateFormats[groupBy]);\n \n // Bucketing System user data as Anonymous\n const name = [ UserGroup.System, '255' ].includes(ev.name) ? null : ev.name;\n\n let group = grouped.get(name);\n\n if (!group)\n grouped.set(name, group = new Map<string, number>);\n\n const oldCount = group.get(eventDate) ?? 0;\n group.set(eventDate, oldCount + ev.count);\n });\n\n const roles = [...grouped.keys()] as UserGroup[];\n\n if (!roles.length) return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data: []\n };\n\n const labelMapper = getLabelMapper(type);\n\n return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data:\n roles.map(r => ({\n name: labelMapper(r),\n type: 'line' as const,\n data: fullDateRange.map(d => grouped.get(r).get(d) ?? 0),\n color: mapUserTypeToChartColour(r)\n })).sort((a, b) => compareGroupNames(a.name, b.name))\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsChartCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { LineChart } from 'shared/components/line-chart/LineChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\nimport { getChartData } from './StreamsChartCardViewUtils';\n\nconst namespace = 'reportsShared.streamsChartCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StreamsChartCardViewProps {\n type: StreamAggregationType;\n videoId?: string;\n className?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StreamsChartCardView(props: StreamsChartCardViewProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsChartCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregationChart(props.videoId, props.type, requestFilter) :\n VideoViewsV2Requests.aggregationChart(props.type, requestFilter));\n\n const chartData = getChartData(viewsByGroup.data, requestFilter, props.type);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3 position-relative'>\n {chartData ?\n <>\n <h2 className='position-absolute h6 mb-1'><Text namespace={namespace} phrase='videoViews' /></h2>\n <LineChart\n categories={chartData.categories}\n data={chartData.data}\n legendAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }}\n />\n </> :\n <div className='partial-loading-background w-25'>&nbsp;</div>\n }\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"C21pODi22.chunk.js","names":[],"sources":["../../src/shared/views/overview-cards/streams-bar-chart-card/empty-state/total-views-by-group-card-empty-state.module.scss","../../src/shared/views/overview-cards/streams-bar-chart-card/empty-state/StreamsBarChartCardEmptyState.tsx","../../src/shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView.tsx","../../src/shared/views/overview-cards/streams-chart-card/StreamsChartCardViewUtils.ts","../../src/shared/views/overview-cards/streams-chart-card/StreamsChartCardView.tsx"],"sourcesContent":[":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nconst namespace = 'shared.streamsBarChartCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport styles from './total-views-by-group-card-empty-state.module.scss';\n\nexport function StreamsBarChartCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.BagQuestionOrange}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { VerticalBarChart } from 'shared/components/vertical-bar-chart/VerticalBarChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { getCountByGroup } from 'shared/utils/BarChartByGroupUtils';\nimport { getLabelMapper } from 'shared/utils/UserUtils';\nimport { StreamsBarChartCardEmptyState } from 'shared/views/overview-cards/streams-bar-chart-card/empty-state/StreamsBarChartCardEmptyState';\n\nconst namespace = 'shared.streamsBarChartCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TotalViewsByGroupViewProps {\n type: StreamAggregationType;\n videoId?: string;\n appLink?: Core.AppLink;\n appLinkText?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StreamsBarChartCardView(props: TotalViewsByGroupViewProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const chartData = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, props.type, requestFilter) :\n VideoViewsV2Requests.aggregation(props.type, requestFilter));\n\n const grouped = getCountByGroup(\n chartData.data,\n getLabelMapper(props.type)\n );\n const total = grouped?.reduce((acc, group) => (acc + group.y), 0);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {grouped ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-1'><Text namespace={namespace} phrase='totalViews' options={{ views: total }} /></h2>\n {props.appLink && props.appLinkText &&\n <AppLink\n appLink={props.appLink}\n className='text-info'\n >\n {props.appLinkText}\n </AppLink>\n }\n </div>\n\n {grouped.length ?\n <Scrollbars className='position-relative'>\n <div className='position-absolute w-100 pe-2'>\n <VerticalBarChart data={grouped} labelAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }} />\n </div>\n </Scrollbars> :\n <StreamsBarChartCardEmptyState />\n }\n </> :\n <div className='partial-loading-background d-block w-50'>&nbsp;</div>\n }\n </div >\n );\n}\n","import { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { GroupedAnalyticsChartCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nimport { compareGroupNames } from 'shared/utils/GroupSortUtils';\nimport { getLabelMapper, mapUserTypeToChartColour } from 'shared/utils/UserUtils';\n\nconst GroupByThresholds = {\n MONTH: 35,\n YEAR: 365\n};\n\nconst DateFormats = {\n day: 'YYYY-MM-DD',\n month: 'YYYY-MM',\n year: 'YYYY'\n};\n\nconst DisplayFormats = {\n day: 'D MMM',\n month: 'MMM',\n year: 'YYYY'\n};\n\ntype GroupBy = 'day' | 'month' | 'year';\n\ninterface ChartData {\n categories: string[];\n data: Highcharts.SeriesLineOptions[];\n}\n\nfunction getGroupBy(requestFilter: AnalyticsRequestFilter): GroupBy {\n const range = DateHelper.diffBetween(requestFilter.end, requestFilter.start, 'day');\n\n if (range > GroupByThresholds.YEAR)\n return 'year';\n\n if (range > GroupByThresholds.MONTH)\n return 'month';\n\n return 'day';\n}\n\nfunction getFullDateRange(requestFilter: AnalyticsRequestFilter, groupBy: GroupBy): string[] {\n const range: string[] = [];\n\n const localStart = DateHelper.convertUTCToLocal(requestFilter.start);\n const localEnd = DateHelper.convertUTCToLocal(requestFilter.end);\n\n let currentDate = DateHelper.format(localStart, DateFormats[groupBy]);\n\n while (!DateHelper.isAfter(currentDate, localEnd, groupBy)) {\n range.push(currentDate);\n currentDate = DateHelper.format(DateHelper.add(currentDate, 1, groupBy), DateFormats[groupBy]);\n }\n\n return range;\n}\n\nexport function getChartData(\n events: GroupedAnalyticsChartCount[],\n requestFilter: AnalyticsRequestFilter,\n type: StreamAggregationType\n): ChartData {\n if (!events) return null;\n\n const groupBy = getGroupBy(requestFilter);\n const fullDateRange = getFullDateRange(requestFilter, groupBy);\n \n const grouped = new Map<string, Map<string, number>>();\n \n events.forEach(ev => {\n const eventDate = DateHelper.format(DateHelper.convertUTCToLocal(ev.dateStreamed), DateFormats[groupBy]);\n \n // Bucketing System user data as Anonymous\n const name = [ UserGroup.System, '255' ].includes(ev.name) ? null : ev.name;\n\n let group = grouped.get(name);\n\n if (!group)\n grouped.set(name, group = new Map<string, number>);\n\n const oldCount = group.get(eventDate) ?? 0;\n group.set(eventDate, oldCount + ev.count);\n });\n\n const roles = [...grouped.keys()] as UserGroup[];\n\n if (!roles.length) return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data: []\n };\n\n const labelMapper = getLabelMapper(type);\n\n return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data:\n roles.map(r => ({\n name: labelMapper(r),\n type: 'line' as const,\n data: fullDateRange.map(d => grouped.get(r).get(d) ?? 0),\n color: mapUserTypeToChartColour(r)\n })).sort((a, b) => compareGroupNames(a.name, b.name))\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsChartCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { LineChart } from 'shared/components/line-chart/LineChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\nimport { getChartData } from './StreamsChartCardViewUtils';\n\nconst namespace = 'reportsShared.streamsChartCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StreamsChartCardViewProps {\n type: StreamAggregationType;\n videoId?: string;\n className?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StreamsChartCardView(props: StreamsChartCardViewProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsChartCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregationChart(props.videoId, props.type, requestFilter) :\n VideoViewsV2Requests.aggregationChart(props.type, requestFilter));\n\n const chartData = getChartData(viewsByGroup.data, requestFilter, props.type);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3 position-relative'>\n {chartData ?\n <>\n <h2 className='position-absolute h6 mb-1'><Text namespace={namespace} phrase='videoViews' /></h2>\n <LineChart\n categories={chartData.categories}\n data={chartData.data}\n legendAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }}\n />\n </> :\n <div className='partial-loading-background w-25'>&nbsp;</div>\n }\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{Kn as e,st as t}from"./BSV_W0cK.chunk.js";import{n}from"./CNQKHXPY.chunk.js";import{t as r}from"./BWJBtdAK2.chunk.js";var i=e(t(),1),a=new Map,o=new WeakMap,s=0,c=void 0;function l(e){return e?o.has(e)?o.get(e):(s+=1,o.set(e,s.toString()),o.get(e)):`0`}function u(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t===`root`?l(e.root):e[t]}`).toString()}function d(e){let t=u(e),n=a.get(t);if(!n){let r=new Map,i,o=new IntersectionObserver(t=>{t.forEach(t=>{var n;let a=t.isIntersecting&&i.some(e=>t.intersectionRatio>=e);e.trackVisibility&&t.isVisible===void 0&&(t.isVisible=a),(n=r.get(t.target))==null||n.forEach(e=>{e(a,t)})})},e);i=o.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:o,elements:r},a.set(t,n)}return n}function f(e,t,n={},r=c){if(window.IntersectionObserver===void 0&&r!==void 0){let i=e.getBoundingClientRect();return t(r,{isIntersecting:r,target:e,intersectionRatio:typeof n.threshold==`number`?n.threshold:0,time:0,boundingClientRect:i,intersectionRect:i,rootBounds:i}),()=>{}}let{id:i,observer:o,elements:s}=d(n),l=s.get(e)||[];return s.has(e)||s.set(e,l),l.push(t),o.observe(e),function(){l.splice(l.indexOf(t),1),l.length===0&&(s.delete(e),o.unobserve(e)),s.size===0&&(o.disconnect(),a.delete(i))}}function p({threshold:e,delay:t,trackVisibility:n,rootMargin:r,root:a,triggerOnce:o,skip:s,initialInView:c,fallbackInView:l,onChange:u}={}){let[d,p]=i.useState(null),m=i.useRef(),[h,g]=i.useState({inView:!!c,entry:void 0});m.current=u,i.useEffect(()=>{if(s||!d)return;let i;return i=f(d,(e,t)=>{g({inView:e,entry:t}),m.current&&m.current(e,t),t.isIntersecting&&o&&i&&(i(),i=void 0)},{root:a,rootMargin:r,threshold:e,trackVisibility:n,delay:t},l),()=>{i&&i()}},[Array.isArray(e)?e.toString():e,d,a,r,o,s,n,l,t]);let _=h.entry?.target,v=i.useRef();!d&&_&&!o&&!s&&v.current!==_&&(v.current=_,g({inView:!!c,entry:void 0}));let y=[p,h.inView,h.entry];return y.ref=y[0],y.inView=y[1],y.entry=y[2],y}function m(e){let{userId:t,customerId:n,...r}=e;return{...r,uid:t,cid:n}}var h={aggregation(e,t){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/aggregation/${e}`,m(t)),key:r(`video:views:v2:aggregation`,t,e),normalize:!1}},videoAggregation(e,t,i){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/videos/${e}/aggregation/${t}`,m(i)),key:r(`video:views:v2:aggregation:${e}`,i,t),normalize:!1}},aggregationChart(e,t){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/aggregation/${e}/chart`,m(t)),key:r(`video:views:v2:aggregation:chart`,t,e),normalize:!1}},videoAggregationChart(e,t,i){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/videos/${e}/aggregation/${t}/chart`,m(i)),key:r(`video:views:v2:aggregation:chart:${e}`,i,t),normalize:!1}},topStreams(e,t){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/top`,{...m(t),limit:e}),key:r(`video:views:v2:top:streams:${e}`,t),normalize:!1}},videoHeatMap(e,t,i){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/videos/${e}/heat-map`,{...m(t),cursor:i}),key:r(`video:views:v2:heatmap:${e}`,t,i),normalize:!1}},videoHeatMapAggregation(e,t){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/videos/${e}/aggregation/heat-map`,m(t)),key:r(`video:views:v2:aggregation:heatmap:${e}`,t),normalize:!1}}};export{p as n,h as t};
2
- //# sourceMappingURL=PLyhtHwt2.chunk.js.map
1
+ import{Kn as e,st as t}from"./BSV_W0cK.chunk.js";import{n}from"./CNQKHXPY.chunk.js";import{t as r}from"./B9u-BJ_k2.chunk.js";var i=e(t(),1),a=new Map,o=new WeakMap,s=0,c=void 0;function l(e){return e?o.has(e)?o.get(e):(s+=1,o.set(e,s.toString()),o.get(e)):`0`}function u(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t===`root`?l(e.root):e[t]}`).toString()}function d(e){let t=u(e),n=a.get(t);if(!n){let r=new Map,i,o=new IntersectionObserver(t=>{t.forEach(t=>{var n;let a=t.isIntersecting&&i.some(e=>t.intersectionRatio>=e);e.trackVisibility&&t.isVisible===void 0&&(t.isVisible=a),(n=r.get(t.target))==null||n.forEach(e=>{e(a,t)})})},e);i=o.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:o,elements:r},a.set(t,n)}return n}function f(e,t,n={},r=c){if(window.IntersectionObserver===void 0&&r!==void 0){let i=e.getBoundingClientRect();return t(r,{isIntersecting:r,target:e,intersectionRatio:typeof n.threshold==`number`?n.threshold:0,time:0,boundingClientRect:i,intersectionRect:i,rootBounds:i}),()=>{}}let{id:i,observer:o,elements:s}=d(n),l=s.get(e)||[];return s.has(e)||s.set(e,l),l.push(t),o.observe(e),function(){l.splice(l.indexOf(t),1),l.length===0&&(s.delete(e),o.unobserve(e)),s.size===0&&(o.disconnect(),a.delete(i))}}function p({threshold:e,delay:t,trackVisibility:n,rootMargin:r,root:a,triggerOnce:o,skip:s,initialInView:c,fallbackInView:l,onChange:u}={}){let[d,p]=i.useState(null),m=i.useRef(),[h,g]=i.useState({inView:!!c,entry:void 0});m.current=u,i.useEffect(()=>{if(s||!d)return;let i;return i=f(d,(e,t)=>{g({inView:e,entry:t}),m.current&&m.current(e,t),t.isIntersecting&&o&&i&&(i(),i=void 0)},{root:a,rootMargin:r,threshold:e,trackVisibility:n,delay:t},l),()=>{i&&i()}},[Array.isArray(e)?e.toString():e,d,a,r,o,s,n,l,t]);let _=h.entry?.target,v=i.useRef();!d&&_&&!o&&!s&&v.current!==_&&(v.current=_,g({inView:!!c,entry:void 0}));let y=[p,h.inView,h.entry];return y.ref=y[0],y.inView=y[1],y.entry=y[2],y}function m(e){let{userId:t,customerId:n,...r}=e;return{...r,uid:t,cid:n}}var h={aggregation(e,t){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/aggregation/${e}`,m(t)),key:r(`video:views:v2:aggregation`,t,e),normalize:!1}},videoAggregation(e,t,i){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/videos/${e}/aggregation/${t}`,m(i)),key:r(`video:views:v2:aggregation:${e}`,i,t),normalize:!1}},aggregationChart(e,t){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/aggregation/${e}/chart`,m(t)),key:r(`video:views:v2:aggregation:chart`,t,e),normalize:!1}},videoAggregationChart(e,t,i){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/videos/${e}/aggregation/${t}/chart`,m(i)),key:r(`video:views:v2:aggregation:chart:${e}`,i,t),normalize:!1}},topStreams(e,t){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/top`,{...m(t),limit:e}),key:r(`video:views:v2:top:streams:${e}`,t),normalize:!1}},videoHeatMap(e,t,i){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/videos/${e}/heat-map`,{...m(t),cursor:i}),key:r(`video:views:v2:heatmap:${e}`,t,i),normalize:!1}},videoHeatMapAggregation(e,t){return{url:n.urlBuilder(`{gateway}/v2/analytics/streams/videos/${e}/aggregation/heat-map`,m(t)),key:r(`video:views:v2:aggregation:heatmap:${e}`,t),normalize:!1}}};export{p as n,h as t};
2
+ //# sourceMappingURL=C46TEWQx2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PLyhtHwt2.chunk.js","names":[],"sources":["../../../../../node_modules/react-intersection-observer/index.mjs","../../src/shared/flight-requests/VideoViewsV2Requests.ts"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\n\n// src/InView.tsx\nimport * as React from \"react\";\n\n// src/observe.ts\nvar observerMap = /* @__PURE__ */ new Map();\nvar RootIds = /* @__PURE__ */ new WeakMap();\nvar rootId = 0;\nvar unsupportedValue = void 0;\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\nfunction getRootId(root) {\n if (!root)\n return \"0\";\n if (RootIds.has(root))\n return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(\n (key) => options[key] !== void 0\n ).map((key) => {\n return `${key}_${key === \"root\" ? getRootId(options.root) : options[key]}`;\n }).toString();\n}\nfunction createObserver(options) {\n const id = optionsToId(options);\n let instance = observerMap.get(id);\n if (!instance) {\n const elements = /* @__PURE__ */ new Map();\n let thresholds;\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n var _a;\n const inView = entry.isIntersecting && thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n if (options.trackVisibility && typeof entry.isVisible === \"undefined\") {\n entry.isVisible = inView;\n }\n (_a = elements.get(entry.target)) == null ? void 0 : _a.forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id,\n observer,\n elements\n };\n observerMap.set(id, instance);\n }\n return instance;\n}\nfunction observe(element, callback, options = {}, fallbackInView = unsupportedValue) {\n if (typeof window.IntersectionObserver === \"undefined\" && fallbackInView !== void 0) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === \"number\" ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return () => {\n };\n }\n const { id, observer, elements } = createObserver(options);\n const callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n callbacks.splice(callbacks.indexOf(callback), 1);\n if (callbacks.length === 0) {\n elements.delete(element);\n observer.unobserve(element);\n }\n if (elements.size === 0) {\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n\n// src/InView.tsx\nfunction isPlainChildren(props) {\n return typeof props.children !== \"function\";\n}\nvar InView = class extends React.Component {\n constructor(props) {\n super(props);\n __publicField(this, \"node\", null);\n __publicField(this, \"_unobserveCb\", null);\n __publicField(this, \"handleNode\", (node) => {\n if (this.node) {\n this.unobserve();\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n this.setState({ inView: !!this.props.initialInView, entry: void 0 });\n }\n }\n this.node = node ? node : null;\n this.observeNode();\n });\n __publicField(this, \"handleChange\", (inView, entry) => {\n if (inView && this.props.triggerOnce) {\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n this.props.onChange(inView, entry);\n }\n });\n this.state = {\n inView: !!props.initialInView,\n entry: void 0\n };\n }\n componentDidMount() {\n this.unobserve();\n this.observeNode();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n }\n componentWillUnmount() {\n this.unobserve();\n }\n observeNode() {\n if (!this.node || this.props.skip)\n return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView\n } = this.props;\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n }\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n render() {\n const { children } = this.props;\n if (typeof children === \"function\") {\n const { inView, entry } = this.state;\n return children({ inView, entry, ref: this.handleNode });\n }\n const {\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props;\n return React.createElement(\n as || \"div\",\n { ref: this.handleNode, ...props },\n children\n );\n }\n};\n\n// src/useInView.tsx\nimport * as React2 from \"react\";\nfunction useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange\n} = {}) {\n var _a;\n const [ref, setRef] = React2.useState(null);\n const callback = React2.useRef();\n const [state, setState] = React2.useState({\n inView: !!initialInView,\n entry: void 0\n });\n callback.current = onChange;\n React2.useEffect(\n () => {\n if (skip || !ref)\n return;\n let unobserve;\n unobserve = observe(\n ref,\n (inView, entry) => {\n setState({\n inView,\n entry\n });\n if (callback.current)\n callback.current(inView, entry);\n if (entry.isIntersecting && triggerOnce && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay\n ]\n );\n const entryTarget = (_a = state.entry) == null ? void 0 : _a.target;\n const previousEntryTarget = React2.useRef();\n if (!ref && entryTarget && !triggerOnce && !skip && previousEntryTarget.current !== entryTarget) {\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: void 0\n });\n }\n const result = [setRef, state.inView, state.entry];\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\nexport {\n InView,\n defaultFallbackInView,\n observe,\n useInView\n};\n//# sourceMappingURL=index.mjs.map","\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/react/index';\n\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\n/**\n * Becasue the V2 endpoints take the user context,\n * userId and customerId cannot be used for these values so instead\n * we are using uid and cid - sha\n */\nfunction formatFilter(filter: AnalyticsRequestFilter) {\n const { userId, customerId, ...rest } = filter;\n return { ...rest, uid: userId, cid: customerId };\n}\n\nexport const VideoViewsV2Requests = {\n aggregation(\n type: StreamAggregationType,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/aggregation/${type}`, formatFilter(filter)),\n key: getAnalyticsRequestKey('video:views:v2:aggregation', filter, type),\n normalize: false\n };\n },\n\n videoAggregation(\n videoId: string,\n type: StreamAggregationType,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/videos/${videoId}/aggregation/${type}`, formatFilter(filter)),\n key: getAnalyticsRequestKey(`video:views:v2:aggregation:${videoId}`, filter, type),\n normalize: false\n };\n },\n\n aggregationChart(\n type: StreamAggregationType,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/aggregation/${type}/chart`, formatFilter(filter)),\n key: getAnalyticsRequestKey('video:views:v2:aggregation:chart', filter, type),\n normalize: false\n };\n },\n\n videoAggregationChart(\n videoId: string,\n type: StreamAggregationType,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/videos/${videoId}/aggregation/${type}/chart`, formatFilter(filter)),\n key: getAnalyticsRequestKey(`video:views:v2:aggregation:chart:${videoId}`, filter, type),\n normalize: false\n };\n },\n\n topStreams(limit: number, filter: AnalyticsRequestFilter): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/top`, { ...formatFilter(filter), limit }),\n key: getAnalyticsRequestKey(`video:views:v2:top:streams:${limit}`, filter),\n normalize: false\n };\n },\n\n videoHeatMap(\n videoId: string,\n filter: AnalyticsRequestFilter,\n cursor?: string\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/videos/${videoId}/heat-map`, { ...formatFilter(filter), cursor }),\n key: getAnalyticsRequestKey(`video:views:v2:heatmap:${videoId}`, filter, cursor),\n normalize: false\n };\n },\n\n videoHeatMapAggregation(\n videoId: string,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/videos/${videoId}/aggregation/heat-map`, formatFilter(filter)),\n key: getAnalyticsRequestKey(`video:views:v2:aggregation:heatmap:${videoId}`, filter),\n normalize: false\n };\n }\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"C46TEWQx2.chunk.js","names":[],"sources":["../../../../../node_modules/react-intersection-observer/index.mjs","../../src/shared/flight-requests/VideoViewsV2Requests.ts"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\n\n// src/InView.tsx\nimport * as React from \"react\";\n\n// src/observe.ts\nvar observerMap = /* @__PURE__ */ new Map();\nvar RootIds = /* @__PURE__ */ new WeakMap();\nvar rootId = 0;\nvar unsupportedValue = void 0;\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\nfunction getRootId(root) {\n if (!root)\n return \"0\";\n if (RootIds.has(root))\n return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(\n (key) => options[key] !== void 0\n ).map((key) => {\n return `${key}_${key === \"root\" ? getRootId(options.root) : options[key]}`;\n }).toString();\n}\nfunction createObserver(options) {\n const id = optionsToId(options);\n let instance = observerMap.get(id);\n if (!instance) {\n const elements = /* @__PURE__ */ new Map();\n let thresholds;\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n var _a;\n const inView = entry.isIntersecting && thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n if (options.trackVisibility && typeof entry.isVisible === \"undefined\") {\n entry.isVisible = inView;\n }\n (_a = elements.get(entry.target)) == null ? void 0 : _a.forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id,\n observer,\n elements\n };\n observerMap.set(id, instance);\n }\n return instance;\n}\nfunction observe(element, callback, options = {}, fallbackInView = unsupportedValue) {\n if (typeof window.IntersectionObserver === \"undefined\" && fallbackInView !== void 0) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === \"number\" ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return () => {\n };\n }\n const { id, observer, elements } = createObserver(options);\n const callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n callbacks.splice(callbacks.indexOf(callback), 1);\n if (callbacks.length === 0) {\n elements.delete(element);\n observer.unobserve(element);\n }\n if (elements.size === 0) {\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n\n// src/InView.tsx\nfunction isPlainChildren(props) {\n return typeof props.children !== \"function\";\n}\nvar InView = class extends React.Component {\n constructor(props) {\n super(props);\n __publicField(this, \"node\", null);\n __publicField(this, \"_unobserveCb\", null);\n __publicField(this, \"handleNode\", (node) => {\n if (this.node) {\n this.unobserve();\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n this.setState({ inView: !!this.props.initialInView, entry: void 0 });\n }\n }\n this.node = node ? node : null;\n this.observeNode();\n });\n __publicField(this, \"handleChange\", (inView, entry) => {\n if (inView && this.props.triggerOnce) {\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n this.props.onChange(inView, entry);\n }\n });\n this.state = {\n inView: !!props.initialInView,\n entry: void 0\n };\n }\n componentDidMount() {\n this.unobserve();\n this.observeNode();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n }\n componentWillUnmount() {\n this.unobserve();\n }\n observeNode() {\n if (!this.node || this.props.skip)\n return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView\n } = this.props;\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n }\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n render() {\n const { children } = this.props;\n if (typeof children === \"function\") {\n const { inView, entry } = this.state;\n return children({ inView, entry, ref: this.handleNode });\n }\n const {\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props;\n return React.createElement(\n as || \"div\",\n { ref: this.handleNode, ...props },\n children\n );\n }\n};\n\n// src/useInView.tsx\nimport * as React2 from \"react\";\nfunction useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange\n} = {}) {\n var _a;\n const [ref, setRef] = React2.useState(null);\n const callback = React2.useRef();\n const [state, setState] = React2.useState({\n inView: !!initialInView,\n entry: void 0\n });\n callback.current = onChange;\n React2.useEffect(\n () => {\n if (skip || !ref)\n return;\n let unobserve;\n unobserve = observe(\n ref,\n (inView, entry) => {\n setState({\n inView,\n entry\n });\n if (callback.current)\n callback.current(inView, entry);\n if (entry.isIntersecting && triggerOnce && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay\n ]\n );\n const entryTarget = (_a = state.entry) == null ? void 0 : _a.target;\n const previousEntryTarget = React2.useRef();\n if (!ref && entryTarget && !triggerOnce && !skip && previousEntryTarget.current !== entryTarget) {\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: void 0\n });\n }\n const result = [setRef, state.inView, state.entry];\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\nexport {\n InView,\n defaultFallbackInView,\n observe,\n useInView\n};\n//# sourceMappingURL=index.mjs.map","\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/react/index';\n\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\n/**\n * Becasue the V2 endpoints take the user context,\n * userId and customerId cannot be used for these values so instead\n * we are using uid and cid - sha\n */\nfunction formatFilter(filter: AnalyticsRequestFilter) {\n const { userId, customerId, ...rest } = filter;\n return { ...rest, uid: userId, cid: customerId };\n}\n\nexport const VideoViewsV2Requests = {\n aggregation(\n type: StreamAggregationType,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/aggregation/${type}`, formatFilter(filter)),\n key: getAnalyticsRequestKey('video:views:v2:aggregation', filter, type),\n normalize: false\n };\n },\n\n videoAggregation(\n videoId: string,\n type: StreamAggregationType,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/videos/${videoId}/aggregation/${type}`, formatFilter(filter)),\n key: getAnalyticsRequestKey(`video:views:v2:aggregation:${videoId}`, filter, type),\n normalize: false\n };\n },\n\n aggregationChart(\n type: StreamAggregationType,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/aggregation/${type}/chart`, formatFilter(filter)),\n key: getAnalyticsRequestKey('video:views:v2:aggregation:chart', filter, type),\n normalize: false\n };\n },\n\n videoAggregationChart(\n videoId: string,\n type: StreamAggregationType,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/videos/${videoId}/aggregation/${type}/chart`, formatFilter(filter)),\n key: getAnalyticsRequestKey(`video:views:v2:aggregation:chart:${videoId}`, filter, type),\n normalize: false\n };\n },\n\n topStreams(limit: number, filter: AnalyticsRequestFilter): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/top`, { ...formatFilter(filter), limit }),\n key: getAnalyticsRequestKey(`video:views:v2:top:streams:${limit}`, filter),\n normalize: false\n };\n },\n\n videoHeatMap(\n videoId: string,\n filter: AnalyticsRequestFilter,\n cursor?: string\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/videos/${videoId}/heat-map`, { ...formatFilter(filter), cursor }),\n key: getAnalyticsRequestKey(`video:views:v2:heatmap:${videoId}`, filter, cursor),\n normalize: false\n };\n },\n\n videoHeatMapAggregation(\n videoId: string,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/videos/${videoId}/aggregation/heat-map`, formatFilter(filter)),\n key: getAnalyticsRequestKey(`video:views:v2:aggregation:heatmap:${videoId}`, filter),\n normalize: false\n };\n }\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{i as n,n as r,o as i,r as a}from"./COrUmz0l.chunk.js";import{t as o}from"./Bqlm3yF_.chunk.js";import{n as s,t as c}from"./CvNkMOyE.chunk.js";import{d as l,m as u,y as d}from"./app-cakVQEAF.js";import{n as f,t as p}from"./CbaXvmNl2.chunk.js";var m=function(e){return e.Exchange=`exchange`,e.Streamable=`streamable`,e.MoviesAndTv=`movies_and_tv`,e.Twig=`twig`,e}({});t();var h=e();function g(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{fill:`currentColor`,fillRule:`evenodd`,d:`M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z`,clipRule:`evenodd`})})}function _(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z`,fill:`currentColor`})})}var v=function(e){return e.Folder=`category`,e.CategoryTree=`category_tree`,e.CustomLibrary=`custom_library`,e.HostedLibrary=`hosted_library`,e.Exchange=`exchange`,e.Workspace=`workspace`,e.Video=`video`,e.Clip=`clip`,e.Interactive=`interactive`,e}({}),y=function(e){return e.Pdf=`pdf`,e.Image=`image`,e.PowerPoint=`powerpoint`,e.Document=`document`,e.Excel=`excel`,e.Zip=`archive`,e.File=`text`,e}({});function b(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z`,fill:`currentColor`})})}function x(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39`,fill:`currentColor`})})}function S(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z`,fill:`currentColor`})})}function C(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z`,fill:`currentColor`})})}function w(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z`,fill:`currentColor`})})}function T(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z`,fill:`currentColor`})})}var E=`shared.shared-utils`,D={mapRatingToClass(e){return e?(e=>{switch(!0){case e<32:return`bg-purple`;case e<48:return`bg-green`;case e<80:return`bg-blue`;case e<96:return`bg-red`;case e<128:return`bg-pink`;case e>=128:return`bg-yellow`;default:return``}})(e):``},mapSourceToDisplayName(e,t){switch(e.type){case v.HostedLibrary:case v.CustomLibrary:return e.name;case v.Exchange:return o.getPhrase(E,`exchange`);case v.Workspace:return o.getPhrase(E,t?`myVideos`:`workspace`);default:return``}},mapSourceToClass(e){switch(e){case v.HostedLibrary:case v.CustomLibrary:return`bg-blue`;case v.Exchange:return`bg-green`;case v.Workspace:default:return`bg-red`}},isInteractive(e){return!!e?.interactives?.data?.length},mapTypeToSvg(e){let t={[y.Pdf]:x,[y.Image]:f,[y.PowerPoint]:S,[y.Document]:w,[y.Excel]:b,[y.Zip]:T,[y.File]:C}[e];return t||=p,t},mapTypeToClass(e){switch(e){case y.Pdf:return`icon-red`;case y.Image:return`icon-purple`;case y.Document:return`icon-blue`;case y.Excel:return`icon-green`;case y.PowerPoint:return`icon-orange`;case y.Zip:return`icon-teal`;case y.File:return`icon-gray`;default:return``}},mapTypeToExtension(e){return e?{pdf:`pdf`,image:`png`,powerpoint:`pptx`}[e.toLowerCase()]:``},mapTypeToName(e){if(!e)return``;switch(e){case y.Pdf:return o.getPhrase(E,`pdf`);case y.Image:return o.getPhrase(E,`image`);case y.Document:return o.getPhrase(E,`document`);case y.Excel:return o.getPhrase(E,`spreadsheet`);case y.PowerPoint:return o.getPhrase(E,`presentation`);case y.Zip:return o.getPhrase(E,`zipArchive`);case y.File:return o.getPhrase(E,`file`);default:return``}}},O=o.encloseNamespace(`shared.badges`),k=function(e){return e.DurationExact=`duration-exact`,e.DurationApproximate=`duration-approximate`,e.Interactive=`interactive`,e.Rating=`rating`,e.ProductionYear=`production-year`,e.Captions=`captions`,e.Status=`status`,e.Trending=`trending`,e.Count=`count`,e.Restriction=`restriction`,e.Source=`source`,e}({}),A={xs:n.ExtraSmall,sm:n.Small,std:n.Standard,lg:n.Large},j={xs:`badge-xs`,sm:`badge-sm`,std:`badge-std`,lg:`badge-lg`};function M(e){switch(e){case d.Published:case s.Published:return`bg-success`;case d.Archived:case d.Rejected:case s.Archived:return`bg-danger`;case d.Draft:case s.Draft:return`draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center`;case d.Pending:case d.Processing:return`bg-warning`}}function N(e){return e.includes(m.Streamable)?`px-1 text-nowrap d-flex align-items-center ${u.streamable}`:e.includes(m.MoviesAndTv)?`bg-indigo text-white px-1 text-nowrap d-flex align-items-center`:e.includes(m.Exchange)?`bg-orange text-white px-1 text-nowrap d-flex align-items-center`:e.includes(m.Twig)?`bg-pink text-white px-1 text-nowrap d-flex align-items-center`:``}function P(e,t,n){let i=j[n],a=``;return e===k.DurationApproximate&&(a=`duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center`),e===k.DurationExact&&(a=`duration-badge`),e===k.Interactive&&(a=`interactive-badge`),e===k.Rating&&(a=`rating-badge text-shadow ${D.mapRatingToClass(t.value)}`),e===k.ProductionYear&&(a=`production-year-badge text-shadow`),e===k.Captions?`p-0`:e===k.Status?`badge ${M(t)}`:e===k.Trending?`trending-badge px-1 d-flex align-items-center ${i}`:(e===k.Count&&(a=`count-badge px-1 rounded`),e===k.Restriction?r(`restriction-badge rounded-pill px-2 d-flex align-items-center`,l.mapRestrictionToClass(t.restrictions)):(e===k.Source&&(a=N(t)),r(`badge`,a)))}function F(e,t,n){if(e===k.Interactive)return O(`interactive`);if(e===k.DurationApproximate)return c.ToDisplayDurationNewStyle(t);if(e===k.DurationExact)return c.ToDisplayDuration(t);if(e===k.Rating)return t.code;if(e===k.ProductionYear)return t;if(e===k.Captions)return(0,h.jsx)(a,{svg:_});if(e===k.Status)return typeof t==`number`?d[t]:t;if(e===k.Trending)return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(a,{svg:g,size:A[n]}),(0,h.jsx)(`span`,{className:`ps-1`,children:t})]});if(e===k.Count)return t;if(e===k.Restriction)return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(a,{svg:l.mapRestrictionToSvg(t.restrictions)}),(0,h.jsx)(`span`,{children:l.mapRestrictionToText(t.restrictions,t.yearGroups)})]});if(e===k.Source){let e=t;return e.includes(m.Streamable)?`streamable`:e.includes(m.MoviesAndTv)?`movies + tv`:e.includes(m.Exchange)?`exchange`:e.includes(m.Twig)?`twig`:`-`}}function I(e,t){return e===k.Rating?{title:t.name,placement:`top`}:null}function L(e,t){return typeof t==`boolean`?!!t:e===k.Rating?t&&!!t.value:e===k.Interactive||e===k.Captions?!!t?.length||!!t?.data?.length:e===k.Status?typeof t==`number`||typeof t==`string`:!!t}function R(e){let{type:t,data:n,size:r=`std`}=e;if(!L(t,n))return(0,h.jsx)(h.Fragment,{});let a=P(t,n,r);a=`${a} ${e.inline?`d-inline-block`:`d-flex justify-content-center`} ${e.className||``}`;let o=F(t,n,r),s=I(t,n),c=e.inline&&`d-inline-block`;return s?(0,h.jsx)(`div`,{className:`badge-wrapper d-inline`,children:(0,h.jsx)(i,{...s,spanHack:!0,spanHackClassName:c,children:(0,h.jsx)(`span`,{className:a,children:o})})}):(0,h.jsx)(`span`,{className:`${a} badge-wrapper`,children:o})}export{k as n,_ as r,R as t};
2
- //# sourceMappingURL=DsnkNBu62.chunk.js.map
1
+ import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{i as n,n as r,o as i,r as a}from"./COrUmz0l.chunk.js";import{t as o}from"./Bqlm3yF_.chunk.js";import{n as s,t as c}from"./CvNkMOyE.chunk.js";import{d as l,m as u,y as d}from"./app-DLh9RnwX.js";import{n as f,t as p}from"./CbaXvmNl2.chunk.js";var m=function(e){return e.Exchange=`exchange`,e.Streamable=`streamable`,e.MoviesAndTv=`movies_and_tv`,e.Twig=`twig`,e}({});t();var h=e();function g(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{fill:`currentColor`,fillRule:`evenodd`,d:`M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z`,clipRule:`evenodd`})})}function _(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z`,fill:`currentColor`})})}var v=function(e){return e.Folder=`category`,e.CategoryTree=`category_tree`,e.CustomLibrary=`custom_library`,e.HostedLibrary=`hosted_library`,e.Exchange=`exchange`,e.Workspace=`workspace`,e.Video=`video`,e.Clip=`clip`,e.Interactive=`interactive`,e}({}),y=function(e){return e.Pdf=`pdf`,e.Image=`image`,e.PowerPoint=`powerpoint`,e.Document=`document`,e.Excel=`excel`,e.Zip=`archive`,e.File=`text`,e}({});function b(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z`,fill:`currentColor`})})}function x(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39`,fill:`currentColor`})})}function S(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z`,fill:`currentColor`})})}function C(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z`,fill:`currentColor`})})}function w(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z`,fill:`currentColor`})})}function T(e){return(0,h.jsx)(`svg`,{...e,children:(0,h.jsx)(`path`,{d:`M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z`,fill:`currentColor`})})}var E=`shared.shared-utils`,D={mapRatingToClass(e){return e?(e=>{switch(!0){case e<32:return`bg-purple`;case e<48:return`bg-green`;case e<80:return`bg-blue`;case e<96:return`bg-red`;case e<128:return`bg-pink`;case e>=128:return`bg-yellow`;default:return``}})(e):``},mapSourceToDisplayName(e,t){switch(e.type){case v.HostedLibrary:case v.CustomLibrary:return e.name;case v.Exchange:return o.getPhrase(E,`exchange`);case v.Workspace:return o.getPhrase(E,t?`myVideos`:`workspace`);default:return``}},mapSourceToClass(e){switch(e){case v.HostedLibrary:case v.CustomLibrary:return`bg-blue`;case v.Exchange:return`bg-green`;case v.Workspace:default:return`bg-red`}},isInteractive(e){return!!e?.interactives?.data?.length},mapTypeToSvg(e){let t={[y.Pdf]:x,[y.Image]:f,[y.PowerPoint]:S,[y.Document]:w,[y.Excel]:b,[y.Zip]:T,[y.File]:C}[e];return t||=p,t},mapTypeToClass(e){switch(e){case y.Pdf:return`icon-red`;case y.Image:return`icon-purple`;case y.Document:return`icon-blue`;case y.Excel:return`icon-green`;case y.PowerPoint:return`icon-orange`;case y.Zip:return`icon-teal`;case y.File:return`icon-gray`;default:return``}},mapTypeToExtension(e){return e?{pdf:`pdf`,image:`png`,powerpoint:`pptx`}[e.toLowerCase()]:``},mapTypeToName(e){if(!e)return``;switch(e){case y.Pdf:return o.getPhrase(E,`pdf`);case y.Image:return o.getPhrase(E,`image`);case y.Document:return o.getPhrase(E,`document`);case y.Excel:return o.getPhrase(E,`spreadsheet`);case y.PowerPoint:return o.getPhrase(E,`presentation`);case y.Zip:return o.getPhrase(E,`zipArchive`);case y.File:return o.getPhrase(E,`file`);default:return``}}},O=o.encloseNamespace(`shared.badges`),k=function(e){return e.DurationExact=`duration-exact`,e.DurationApproximate=`duration-approximate`,e.Interactive=`interactive`,e.Rating=`rating`,e.ProductionYear=`production-year`,e.Captions=`captions`,e.Status=`status`,e.Trending=`trending`,e.Count=`count`,e.Restriction=`restriction`,e.Source=`source`,e}({}),A={xs:n.ExtraSmall,sm:n.Small,std:n.Standard,lg:n.Large},j={xs:`badge-xs`,sm:`badge-sm`,std:`badge-std`,lg:`badge-lg`};function M(e){switch(e){case d.Published:case s.Published:return`bg-success`;case d.Archived:case d.Rejected:case s.Archived:return`bg-danger`;case d.Draft:case s.Draft:return`draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center`;case d.Pending:case d.Processing:return`bg-warning`}}function N(e){return e.includes(m.Streamable)?`px-1 text-nowrap d-flex align-items-center ${u.streamable}`:e.includes(m.MoviesAndTv)?`bg-indigo text-white px-1 text-nowrap d-flex align-items-center`:e.includes(m.Exchange)?`bg-orange text-white px-1 text-nowrap d-flex align-items-center`:e.includes(m.Twig)?`bg-pink text-white px-1 text-nowrap d-flex align-items-center`:``}function P(e,t,n){let i=j[n],a=``;return e===k.DurationApproximate&&(a=`duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center`),e===k.DurationExact&&(a=`duration-badge`),e===k.Interactive&&(a=`interactive-badge`),e===k.Rating&&(a=`rating-badge text-shadow ${D.mapRatingToClass(t.value)}`),e===k.ProductionYear&&(a=`production-year-badge text-shadow`),e===k.Captions?`p-0`:e===k.Status?`badge ${M(t)}`:e===k.Trending?`trending-badge px-1 d-flex align-items-center ${i}`:(e===k.Count&&(a=`count-badge px-1 rounded`),e===k.Restriction?r(`restriction-badge rounded-pill px-2 d-flex align-items-center`,l.mapRestrictionToClass(t.restrictions)):(e===k.Source&&(a=N(t)),r(`badge`,a)))}function F(e,t,n){if(e===k.Interactive)return O(`interactive`);if(e===k.DurationApproximate)return c.ToDisplayDurationNewStyle(t);if(e===k.DurationExact)return c.ToDisplayDuration(t);if(e===k.Rating)return t.code;if(e===k.ProductionYear)return t;if(e===k.Captions)return(0,h.jsx)(a,{svg:_});if(e===k.Status)return typeof t==`number`?d[t]:t;if(e===k.Trending)return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(a,{svg:g,size:A[n]}),(0,h.jsx)(`span`,{className:`ps-1`,children:t})]});if(e===k.Count)return t;if(e===k.Restriction)return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(a,{svg:l.mapRestrictionToSvg(t.restrictions)}),(0,h.jsx)(`span`,{children:l.mapRestrictionToText(t.restrictions,t.yearGroups)})]});if(e===k.Source){let e=t;return e.includes(m.Streamable)?`streamable`:e.includes(m.MoviesAndTv)?`movies + tv`:e.includes(m.Exchange)?`exchange`:e.includes(m.Twig)?`twig`:`-`}}function I(e,t){return e===k.Rating?{title:t.name,placement:`top`}:null}function L(e,t){return typeof t==`boolean`?!!t:e===k.Rating?t&&!!t.value:e===k.Interactive||e===k.Captions?!!t?.length||!!t?.data?.length:e===k.Status?typeof t==`number`||typeof t==`string`:!!t}function R(e){let{type:t,data:n,size:r=`std`}=e;if(!L(t,n))return(0,h.jsx)(h.Fragment,{});let a=P(t,n,r);a=`${a} ${e.inline?`d-inline-block`:`d-flex justify-content-center`} ${e.className||``}`;let o=F(t,n,r),s=I(t,n),c=e.inline&&`d-inline-block`;return s?(0,h.jsx)(`div`,{className:`badge-wrapper d-inline`,children:(0,h.jsx)(i,{...s,spanHack:!0,spanHackClassName:c,children:(0,h.jsx)(`span`,{className:a,children:o})})}):(0,h.jsx)(`span`,{className:`${a} badge-wrapper`,children:o})}export{k as n,_ as r,R as t};
2
+ //# sourceMappingURL=CMw7H8FK2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DsnkNBu62.chunk.js","names":[],"sources":["../../../../libs/shared/src/enums/VideoSource.ts","../../../../libs/shared/src/images/svg/objects/TrendingSvg.tsx","../../../../libs/shared/src/images/svg/status/CloseCaptionBadgeSvg.tsx","../../../../libs/shared/src/enums/MasterObjectTypes.ts","../../../../libs/shared/src/enums/ResourceFileType.ts","../../../../libs/shared/src/images/svg/objects/FileExcelSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePdfSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePptSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileWordSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileZipSvg.tsx","../../../../libs/shared/src/utils/VideoDetailsHelper.ts","../../../../libs/shared/src/components/badges/Badge.tsx"],"sourcesContent":["export enum VideoSource {\n Exchange = 'exchange',\n Streamable = 'streamable',\n MoviesAndTv = 'movies_and_tv',\n Twig = 'twig'\n}\n","import React from 'react';\n\nexport function TrendingSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function CloseCaptionBadgeSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","export enum MasterObjectTypes {\n Folder = 'category',\n CategoryTree = 'category_tree',\n CustomLibrary = 'custom_library',\n HostedLibrary = 'hosted_library',\n Exchange = 'exchange',\n Workspace = 'workspace',\n Video = 'video',\n Clip = 'clip',\n Interactive = 'interactive'\n}\n","// File types match metadata for a resource FileApi\nexport enum ResourceFileType {\n Pdf = 'pdf',\n Image = 'image',\n PowerPoint = 'powerpoint',\n Document = 'document',\n Excel = 'excel',\n Zip = 'archive',\n File = 'text'\n}\n","import React from 'react';\n\nexport function FileExcelSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePdfSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePptSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileWordSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileZipSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { Library, Video } from 'libs/shared/interfaces';\n\nimport { FileExcelSvg } from '../images/svg/objects/FileExcelSvg';\nimport { FileImgSvg } from '../images/svg/objects/FileImgSvg';\nimport { FilePdfSvg } from '../images/svg/objects/FilePdfSvg';\nimport { FilePptSvg } from '../images/svg/objects/FilePptSvg';\nimport { FileSvg } from '../images/svg/objects/FileSvg';\nimport { FileWordSvg } from '../images/svg/objects/FileWordSvg';\nimport { FileZipSvg } from '../images/svg/objects/FileZipSvg';\nimport { FolderSvg } from '../images/svg/objects/FolderSvg';\n\nconst lang = 'shared.shared-utils';\n\nexport const VideoDetailsHelper = {\n mapRatingToClass(ratingValue: number): string {\n if (!ratingValue) return '';\n\n const ratings = (rating: number): string => {\n switch (true) {\n case (rating < 32):\n return 'bg-purple';\n case (rating < 48):\n return 'bg-green';\n case (rating < 80):\n return 'bg-blue';\n case (rating < 96):\n return 'bg-red';\n case (rating < 128):\n return 'bg-pink';\n case (rating >= 128):\n return 'bg-yellow';\n default:\n return ''; // Handles unrated\n }\n };\n\n return ratings(ratingValue);\n },\n\n mapSourceToDisplayName(library: Library, hasLite?: boolean): string {\n switch (library.type) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return library.name;\n case MasterObjectTypes.Exchange:\n return LanguageService.getPhrase(lang, 'exchange');\n case MasterObjectTypes.Workspace:\n return LanguageService.getPhrase(lang, hasLite ? 'myVideos' : 'workspace');\n default:\n return '';\n }\n },\n\n mapSourceToClass(sourceType: MasterObjectTypes | 'online_supplementary_library'): string {\n switch (sourceType) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return 'bg-blue';\n case MasterObjectTypes.Exchange:\n return 'bg-green';\n case MasterObjectTypes.Workspace:\n default:\n return 'bg-red';\n }\n },\n\n isInteractive(video: Video): boolean {\n return !!video?.interactives?.data?.length;\n },\n\n mapTypeToSvg(type: string): any {\n const types: HashObject = {\n [ResourceFileType.Pdf]: FilePdfSvg,\n [ResourceFileType.Image]: FileImgSvg,\n [ResourceFileType.PowerPoint]: FilePptSvg,\n [ResourceFileType.Document]: FileWordSvg,\n [ResourceFileType.Excel]: FileExcelSvg,\n [ResourceFileType.Zip]: FileZipSvg,\n [ResourceFileType.File]: FileSvg\n };\n\n let mappedType = types[type];\n\n if (!mappedType)\n mappedType = FolderSvg;\n\n return mappedType;\n },\n\n mapTypeToClass(type: string): any {\n switch (type) {\n case ResourceFileType.Pdf:\n return 'icon-red';\n\n case ResourceFileType.Image:\n return 'icon-purple';\n\n case ResourceFileType.Document:\n return 'icon-blue';\n\n case ResourceFileType.Excel:\n return 'icon-green';\n\n case ResourceFileType.PowerPoint:\n return 'icon-orange';\n\n case ResourceFileType.Zip:\n return 'icon-teal';\n\n case ResourceFileType.File:\n return 'icon-gray';\n\n default:\n return '';\n }\n },\n\n mapTypeToExtension(type: string): string {\n if (!type) return '';\n\n const extensions: HashObject = {\n pdf: 'pdf',\n image: 'png',\n powerpoint: 'pptx'\n };\n\n return extensions[type.toLowerCase()];\n },\n\n mapTypeToName(type: string): string {\n if (!type) return '';\n\n switch (type) {\n case ResourceFileType.Pdf: return LanguageService.getPhrase(lang, 'pdf');\n case ResourceFileType.Image: return LanguageService.getPhrase(lang, 'image');\n case ResourceFileType.Document: return LanguageService.getPhrase(lang, 'document');\n case ResourceFileType.Excel: return LanguageService.getPhrase(lang, 'spreadsheet');\n case ResourceFileType.PowerPoint: return LanguageService.getPhrase(lang, 'presentation');\n case ResourceFileType.Zip: return LanguageService.getPhrase(lang, 'zipArchive');\n case ResourceFileType.File: return LanguageService.getPhrase(lang, 'file');\n\n default:\n return '';\n }\n }\n};\n","import * as React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { VideoSource } from 'libs/shared/enums/VideoSource';\nimport { TrendingSvg } from 'libs/shared/images/svg/objects/TrendingSvg';\nimport { CloseCaptionBadgeSvg } from 'libs/shared/images/svg/status/CloseCaptionBadgeSvg';\nimport { DashboardStatus, Rating } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoDetailsHelper } from 'libs/shared/utils/VideoDetailsHelper';\n\nimport styles from './badge.module.scss';\n\nconst namespace = 'shared.badges';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport enum BadgeType {\n DurationExact = 'duration-exact',\n DurationApproximate = 'duration-approximate',\n Interactive = 'interactive',\n Rating = 'rating',\n ProductionYear = 'production-year',\n Captions = 'captions',\n Status = 'status',\n Trending = 'trending',\n Count = 'count',\n Restriction = 'restriction',\n Source = 'source'\n}\n\ntype BadgeSize = 'xs' | 'sm' | 'std' | 'lg';\n\ninterface BadgeProps {\n type: BadgeType;\n data: any;\n inline?: boolean;\n className?: string;\n /**\n * Only Trending badge supports this attribute atm\n */\n size?: BadgeSize;\n}\n\ninterface TooltipOptions {\n placement: Placement;\n title: string;\n}\n\nconst badgeSvgContainerSizeMap: {[key in BadgeSize]: SvgContainerSize } = {\n xs: SvgContainerSize.ExtraSmall,\n sm: SvgContainerSize.Small,\n std: SvgContainerSize.Standard,\n lg: SvgContainerSize.Large\n};\n\nconst badgeSizeClassNameMap: {[key in BadgeSize]: string } = {\n xs: 'badge-xs',\n sm: 'badge-sm',\n std: 'badge-std',\n lg: 'badge-lg'\n};\n\nfunction getStatusClassName(status: CurationStatus | DashboardStatus): string {\n switch (status) {\n case CurationStatus.Published:\n case DashboardStatus.Published:\n return 'bg-success';\n\n case CurationStatus.Archived:\n case CurationStatus.Rejected:\n case DashboardStatus.Archived:\n return 'bg-danger';\n\n case CurationStatus.Draft:\n case DashboardStatus.Draft:\n return 'draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n case CurationStatus.Pending:\n case CurationStatus.Processing:\n return 'bg-warning';\n }\n}\n\nfunction getSourceClassName(sources: VideoSource[]): string {\n if (sources.includes(VideoSource.Streamable))\n return `px-1 text-nowrap d-flex align-items-center ${styles.streamable}`;\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'bg-indigo text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Exchange))\n return 'bg-orange text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Twig))\n return `bg-pink text-white px-1 text-nowrap d-flex align-items-center`;\n\n return '';\n}\n\nfunction getClassName(type: BadgeType, data: any, size: BadgeSize): string {\n const baseClass = 'badge';\n const sizeClass = badgeSizeClassNameMap[size];\n\n let typeClass = '';\n\n if (type === BadgeType.DurationApproximate)\n typeClass = 'duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n if (type === BadgeType.DurationExact)\n typeClass = 'duration-badge';\n\n if (type === BadgeType.Interactive)\n typeClass = 'interactive-badge';\n\n if (type === BadgeType.Rating)\n typeClass = `rating-badge text-shadow ${VideoDetailsHelper.mapRatingToClass((data as Rating).value)}`;\n\n if (type === BadgeType.ProductionYear)\n typeClass = 'production-year-badge text-shadow';\n\n if (type === BadgeType.Captions)\n return 'p-0';\n\n if (type === BadgeType.Status)\n return `badge ${getStatusClassName(data)}`;\n\n if (type === BadgeType.Trending)\n return `trending-badge px-1 d-flex align-items-center ${sizeClass}`;\n\n if (type === BadgeType.Count)\n typeClass = 'count-badge px-1 rounded';\n\n if (type === BadgeType.Restriction) {\n const restrictionBgClass = RestrictionHelper.mapRestrictionToClass(data.restrictions);\n return classNames('restriction-badge rounded-pill px-2 d-flex align-items-center', restrictionBgClass);\n }\n \n if (type === BadgeType.Source)\n typeClass = getSourceClassName(data);\n\n return classNames(baseClass, typeClass);\n}\n\nfunction getBadgeContent(type: BadgeType, data: any, size: BadgeSize): string | JSX.Element {\n if (type === BadgeType.Interactive)\n return getPhrase('interactive');\n\n if (type === BadgeType.DurationApproximate)\n return DurationHelper.ToDisplayDurationNewStyle(data);\n\n if (type === BadgeType.DurationExact)\n return DurationHelper.ToDisplayDuration(data);\n\n if (type === BadgeType.Rating)\n return (data as Rating).code; // data expected to be a rating object\n\n if (type === BadgeType.ProductionYear)\n return data; // data should be the production year\n\n if (type === BadgeType.Captions)\n return <SvgContainer svg={CloseCaptionBadgeSvg} />;\n\n if (type === BadgeType.Status) {\n if (typeof(data) === 'number') {\n return CurationStatus[data];\n }\n return data;\n }\n\n if (type === BadgeType.Trending)\n return (\n <>\n <SvgContainer svg={TrendingSvg} size={badgeSvgContainerSizeMap[size]} />\n <span className='ps-1'>{data}</span>\n </>\n );\n\n if (type === BadgeType.Count)\n return data;\n\n if (type === BadgeType.Restriction)\n return (\n <>\n <SvgContainer\n svg={RestrictionHelper.mapRestrictionToSvg(data.restrictions)}\n />\n <span>\n {RestrictionHelper.mapRestrictionToText(data.restrictions, data.yearGroups)}\n </span>\n </>\n );\n\n if (type === BadgeType.Source) {\n const sources = data as VideoSource[];\n\n if (sources.includes(VideoSource.Streamable))\n return 'streamable';\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'movies + tv';\n\n if (sources.includes(VideoSource.Exchange))\n return 'exchange';\n\n if (sources.includes(VideoSource.Twig))\n return 'twig';\n\n return '-';\n }\n}\n\nfunction getTooltip(type: BadgeType, data: any): TooltipOptions {\n if (type === BadgeType.Rating)\n return {\n title: (data as Rating).name,\n placement: 'top'\n };\n\n return null;\n}\n\nfunction hasData(type: BadgeType, data: any): boolean {\n if (typeof(data) === 'boolean')\n return !!data;\n\n if (type === BadgeType.Rating)\n return data && !!(data as Rating).value;\n\n if (type === BadgeType.Interactive)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Captions)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Status)\n return typeof(data) === 'number' || typeof(data) === 'string';\n\n return !!data;\n}\n\nexport function Badge(props: BadgeProps): JSX.Element {\n const { type, data, size = 'std' } = props;\n \n if (!hasData(type, data))\n return <></>;\n\n let className = getClassName(type, data, size);\n className = `${className} ${props.inline ? 'd-inline-block' : 'd-flex justify-content-center'} ${props.className || ''}`;\n const content = getBadgeContent(type, data, size);\n const tooltip = getTooltip(type, data);\n const spanHackClassName = props.inline && 'd-inline-block';\n\n if (tooltip) {\n return (\n <div className='badge-wrapper d-inline'>\n <Tooltip {...tooltip} spanHack spanHackClassName={spanHackClassName}>\n <span className={className}>{content}</span>\n </Tooltip>\n </div>\n );\n }\n\n return <span className={`${className} badge-wrapper`}>{content}</span>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CMw7H8FK2.chunk.js","names":[],"sources":["../../../../libs/shared/src/enums/VideoSource.ts","../../../../libs/shared/src/images/svg/objects/TrendingSvg.tsx","../../../../libs/shared/src/images/svg/status/CloseCaptionBadgeSvg.tsx","../../../../libs/shared/src/enums/MasterObjectTypes.ts","../../../../libs/shared/src/enums/ResourceFileType.ts","../../../../libs/shared/src/images/svg/objects/FileExcelSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePdfSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePptSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileWordSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileZipSvg.tsx","../../../../libs/shared/src/utils/VideoDetailsHelper.ts","../../../../libs/shared/src/components/badges/Badge.tsx"],"sourcesContent":["export enum VideoSource {\n Exchange = 'exchange',\n Streamable = 'streamable',\n MoviesAndTv = 'movies_and_tv',\n Twig = 'twig'\n}\n","import React from 'react';\n\nexport function TrendingSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function CloseCaptionBadgeSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","export enum MasterObjectTypes {\n Folder = 'category',\n CategoryTree = 'category_tree',\n CustomLibrary = 'custom_library',\n HostedLibrary = 'hosted_library',\n Exchange = 'exchange',\n Workspace = 'workspace',\n Video = 'video',\n Clip = 'clip',\n Interactive = 'interactive'\n}\n","// File types match metadata for a resource FileApi\nexport enum ResourceFileType {\n Pdf = 'pdf',\n Image = 'image',\n PowerPoint = 'powerpoint',\n Document = 'document',\n Excel = 'excel',\n Zip = 'archive',\n File = 'text'\n}\n","import React from 'react';\n\nexport function FileExcelSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePdfSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePptSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileWordSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileZipSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { Library, Video } from 'libs/shared/interfaces';\n\nimport { FileExcelSvg } from '../images/svg/objects/FileExcelSvg';\nimport { FileImgSvg } from '../images/svg/objects/FileImgSvg';\nimport { FilePdfSvg } from '../images/svg/objects/FilePdfSvg';\nimport { FilePptSvg } from '../images/svg/objects/FilePptSvg';\nimport { FileSvg } from '../images/svg/objects/FileSvg';\nimport { FileWordSvg } from '../images/svg/objects/FileWordSvg';\nimport { FileZipSvg } from '../images/svg/objects/FileZipSvg';\nimport { FolderSvg } from '../images/svg/objects/FolderSvg';\n\nconst lang = 'shared.shared-utils';\n\nexport const VideoDetailsHelper = {\n mapRatingToClass(ratingValue: number): string {\n if (!ratingValue) return '';\n\n const ratings = (rating: number): string => {\n switch (true) {\n case (rating < 32):\n return 'bg-purple';\n case (rating < 48):\n return 'bg-green';\n case (rating < 80):\n return 'bg-blue';\n case (rating < 96):\n return 'bg-red';\n case (rating < 128):\n return 'bg-pink';\n case (rating >= 128):\n return 'bg-yellow';\n default:\n return ''; // Handles unrated\n }\n };\n\n return ratings(ratingValue);\n },\n\n mapSourceToDisplayName(library: Library, hasLite?: boolean): string {\n switch (library.type) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return library.name;\n case MasterObjectTypes.Exchange:\n return LanguageService.getPhrase(lang, 'exchange');\n case MasterObjectTypes.Workspace:\n return LanguageService.getPhrase(lang, hasLite ? 'myVideos' : 'workspace');\n default:\n return '';\n }\n },\n\n mapSourceToClass(sourceType: MasterObjectTypes | 'online_supplementary_library'): string {\n switch (sourceType) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return 'bg-blue';\n case MasterObjectTypes.Exchange:\n return 'bg-green';\n case MasterObjectTypes.Workspace:\n default:\n return 'bg-red';\n }\n },\n\n isInteractive(video: Video): boolean {\n return !!video?.interactives?.data?.length;\n },\n\n mapTypeToSvg(type: string): any {\n const types: HashObject = {\n [ResourceFileType.Pdf]: FilePdfSvg,\n [ResourceFileType.Image]: FileImgSvg,\n [ResourceFileType.PowerPoint]: FilePptSvg,\n [ResourceFileType.Document]: FileWordSvg,\n [ResourceFileType.Excel]: FileExcelSvg,\n [ResourceFileType.Zip]: FileZipSvg,\n [ResourceFileType.File]: FileSvg\n };\n\n let mappedType = types[type];\n\n if (!mappedType)\n mappedType = FolderSvg;\n\n return mappedType;\n },\n\n mapTypeToClass(type: string): any {\n switch (type) {\n case ResourceFileType.Pdf:\n return 'icon-red';\n\n case ResourceFileType.Image:\n return 'icon-purple';\n\n case ResourceFileType.Document:\n return 'icon-blue';\n\n case ResourceFileType.Excel:\n return 'icon-green';\n\n case ResourceFileType.PowerPoint:\n return 'icon-orange';\n\n case ResourceFileType.Zip:\n return 'icon-teal';\n\n case ResourceFileType.File:\n return 'icon-gray';\n\n default:\n return '';\n }\n },\n\n mapTypeToExtension(type: string): string {\n if (!type) return '';\n\n const extensions: HashObject = {\n pdf: 'pdf',\n image: 'png',\n powerpoint: 'pptx'\n };\n\n return extensions[type.toLowerCase()];\n },\n\n mapTypeToName(type: string): string {\n if (!type) return '';\n\n switch (type) {\n case ResourceFileType.Pdf: return LanguageService.getPhrase(lang, 'pdf');\n case ResourceFileType.Image: return LanguageService.getPhrase(lang, 'image');\n case ResourceFileType.Document: return LanguageService.getPhrase(lang, 'document');\n case ResourceFileType.Excel: return LanguageService.getPhrase(lang, 'spreadsheet');\n case ResourceFileType.PowerPoint: return LanguageService.getPhrase(lang, 'presentation');\n case ResourceFileType.Zip: return LanguageService.getPhrase(lang, 'zipArchive');\n case ResourceFileType.File: return LanguageService.getPhrase(lang, 'file');\n\n default:\n return '';\n }\n }\n};\n","import * as React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { VideoSource } from 'libs/shared/enums/VideoSource';\nimport { TrendingSvg } from 'libs/shared/images/svg/objects/TrendingSvg';\nimport { CloseCaptionBadgeSvg } from 'libs/shared/images/svg/status/CloseCaptionBadgeSvg';\nimport { DashboardStatus, Rating } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoDetailsHelper } from 'libs/shared/utils/VideoDetailsHelper';\n\nimport styles from './badge.module.scss';\n\nconst namespace = 'shared.badges';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport enum BadgeType {\n DurationExact = 'duration-exact',\n DurationApproximate = 'duration-approximate',\n Interactive = 'interactive',\n Rating = 'rating',\n ProductionYear = 'production-year',\n Captions = 'captions',\n Status = 'status',\n Trending = 'trending',\n Count = 'count',\n Restriction = 'restriction',\n Source = 'source'\n}\n\ntype BadgeSize = 'xs' | 'sm' | 'std' | 'lg';\n\ninterface BadgeProps {\n type: BadgeType;\n data: any;\n inline?: boolean;\n className?: string;\n /**\n * Only Trending badge supports this attribute atm\n */\n size?: BadgeSize;\n}\n\ninterface TooltipOptions {\n placement: Placement;\n title: string;\n}\n\nconst badgeSvgContainerSizeMap: {[key in BadgeSize]: SvgContainerSize } = {\n xs: SvgContainerSize.ExtraSmall,\n sm: SvgContainerSize.Small,\n std: SvgContainerSize.Standard,\n lg: SvgContainerSize.Large\n};\n\nconst badgeSizeClassNameMap: {[key in BadgeSize]: string } = {\n xs: 'badge-xs',\n sm: 'badge-sm',\n std: 'badge-std',\n lg: 'badge-lg'\n};\n\nfunction getStatusClassName(status: CurationStatus | DashboardStatus): string {\n switch (status) {\n case CurationStatus.Published:\n case DashboardStatus.Published:\n return 'bg-success';\n\n case CurationStatus.Archived:\n case CurationStatus.Rejected:\n case DashboardStatus.Archived:\n return 'bg-danger';\n\n case CurationStatus.Draft:\n case DashboardStatus.Draft:\n return 'draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n case CurationStatus.Pending:\n case CurationStatus.Processing:\n return 'bg-warning';\n }\n}\n\nfunction getSourceClassName(sources: VideoSource[]): string {\n if (sources.includes(VideoSource.Streamable))\n return `px-1 text-nowrap d-flex align-items-center ${styles.streamable}`;\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'bg-indigo text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Exchange))\n return 'bg-orange text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Twig))\n return `bg-pink text-white px-1 text-nowrap d-flex align-items-center`;\n\n return '';\n}\n\nfunction getClassName(type: BadgeType, data: any, size: BadgeSize): string {\n const baseClass = 'badge';\n const sizeClass = badgeSizeClassNameMap[size];\n\n let typeClass = '';\n\n if (type === BadgeType.DurationApproximate)\n typeClass = 'duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n if (type === BadgeType.DurationExact)\n typeClass = 'duration-badge';\n\n if (type === BadgeType.Interactive)\n typeClass = 'interactive-badge';\n\n if (type === BadgeType.Rating)\n typeClass = `rating-badge text-shadow ${VideoDetailsHelper.mapRatingToClass((data as Rating).value)}`;\n\n if (type === BadgeType.ProductionYear)\n typeClass = 'production-year-badge text-shadow';\n\n if (type === BadgeType.Captions)\n return 'p-0';\n\n if (type === BadgeType.Status)\n return `badge ${getStatusClassName(data)}`;\n\n if (type === BadgeType.Trending)\n return `trending-badge px-1 d-flex align-items-center ${sizeClass}`;\n\n if (type === BadgeType.Count)\n typeClass = 'count-badge px-1 rounded';\n\n if (type === BadgeType.Restriction) {\n const restrictionBgClass = RestrictionHelper.mapRestrictionToClass(data.restrictions);\n return classNames('restriction-badge rounded-pill px-2 d-flex align-items-center', restrictionBgClass);\n }\n \n if (type === BadgeType.Source)\n typeClass = getSourceClassName(data);\n\n return classNames(baseClass, typeClass);\n}\n\nfunction getBadgeContent(type: BadgeType, data: any, size: BadgeSize): string | JSX.Element {\n if (type === BadgeType.Interactive)\n return getPhrase('interactive');\n\n if (type === BadgeType.DurationApproximate)\n return DurationHelper.ToDisplayDurationNewStyle(data);\n\n if (type === BadgeType.DurationExact)\n return DurationHelper.ToDisplayDuration(data);\n\n if (type === BadgeType.Rating)\n return (data as Rating).code; // data expected to be a rating object\n\n if (type === BadgeType.ProductionYear)\n return data; // data should be the production year\n\n if (type === BadgeType.Captions)\n return <SvgContainer svg={CloseCaptionBadgeSvg} />;\n\n if (type === BadgeType.Status) {\n if (typeof(data) === 'number') {\n return CurationStatus[data];\n }\n return data;\n }\n\n if (type === BadgeType.Trending)\n return (\n <>\n <SvgContainer svg={TrendingSvg} size={badgeSvgContainerSizeMap[size]} />\n <span className='ps-1'>{data}</span>\n </>\n );\n\n if (type === BadgeType.Count)\n return data;\n\n if (type === BadgeType.Restriction)\n return (\n <>\n <SvgContainer\n svg={RestrictionHelper.mapRestrictionToSvg(data.restrictions)}\n />\n <span>\n {RestrictionHelper.mapRestrictionToText(data.restrictions, data.yearGroups)}\n </span>\n </>\n );\n\n if (type === BadgeType.Source) {\n const sources = data as VideoSource[];\n\n if (sources.includes(VideoSource.Streamable))\n return 'streamable';\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'movies + tv';\n\n if (sources.includes(VideoSource.Exchange))\n return 'exchange';\n\n if (sources.includes(VideoSource.Twig))\n return 'twig';\n\n return '-';\n }\n}\n\nfunction getTooltip(type: BadgeType, data: any): TooltipOptions {\n if (type === BadgeType.Rating)\n return {\n title: (data as Rating).name,\n placement: 'top'\n };\n\n return null;\n}\n\nfunction hasData(type: BadgeType, data: any): boolean {\n if (typeof(data) === 'boolean')\n return !!data;\n\n if (type === BadgeType.Rating)\n return data && !!(data as Rating).value;\n\n if (type === BadgeType.Interactive)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Captions)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Status)\n return typeof(data) === 'number' || typeof(data) === 'string';\n\n return !!data;\n}\n\nexport function Badge(props: BadgeProps): JSX.Element {\n const { type, data, size = 'std' } = props;\n \n if (!hasData(type, data))\n return <></>;\n\n let className = getClassName(type, data, size);\n className = `${className} ${props.inline ? 'd-inline-block' : 'd-flex justify-content-center'} ${props.className || ''}`;\n const content = getBadgeContent(type, data, size);\n const tooltip = getTooltip(type, data);\n const spanHackClassName = props.inline && 'd-inline-block';\n\n if (tooltip) {\n return (\n <div className='badge-wrapper d-inline'>\n <Tooltip {...tooltip} spanHack spanHackClassName={spanHackClassName}>\n <span className={className}>{content}</span>\n </Tooltip>\n </div>\n );\n }\n\n return <span className={`${className} badge-wrapper`}>{content}</span>;\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{Kn as e,N as t,P as n,Q as r,U as i,et as a,st as o,z as s}from"./BSV_W0cK.chunk.js";import{n as c,p as l}from"./DLiesDxa.chunk.js";import{t as u}from"./Bqlm3yF_.chunk.js";import{t as d}from"./Btl_wt9M.chunk.js";import{t as f}from"./DjcvhO-s.chunk.js";import{b as p,s as m}from"./app-cakVQEAF.js";import{t as h}from"./DPmS69Mt2.chunk.js";var g=e(o()),_=n(),v=`reports.removeLogo`,y=u.encloseNamespace(v);function b(e){let[n,o]=g.useState(!1),u=l(),b=h(),x=p();async function S(){o(!0);try{await u(m.removeLogo(e.customerId,e.logoId)),b.success(y(x?`successTertiary`:`success`)),t.logUserAction({id:e.logoId},{actionType:r.Remove,entity:s.Logo,workflowPhase:a.Complete,location:i.Popup}),e.closePopup()}catch{b.success(y(x?`errorTertiary`:`error`)),o(!1)}}return(0,_.jsxs)(d,{closePopup:e.closePopup,title:y(x?`removeSchoolCrestTertiary`:`removeSchoolCrest`),children:[(0,_.jsx)(`p`,{children:(0,_.jsx)(c,{namespace:v,phrase:x?`areYouSureTertiary`:`areYouSure`})}),(0,_.jsxs)(f,{children:[(0,_.jsx)(f.Cancel,{onClick:e.closePopup}),(0,_.jsx)(f.Submit,{onClick:S,text:y(`remove`),showSpinner:n,variant:`danger`})]})]})}export{b as RemoveLogoView};
2
- //# sourceMappingURL=cBssbttB.chunk.js.map
1
+ import{Kn as e,N as t,P as n,Q as r,U as i,et as a,st as o,z as s}from"./BSV_W0cK.chunk.js";import{n as c,p as l}from"./DLiesDxa.chunk.js";import{t as u}from"./Bqlm3yF_.chunk.js";import{t as d}from"./Btl_wt9M.chunk.js";import{t as f}from"./DjcvhO-s.chunk.js";import{b as p,s as m}from"./app-DLh9RnwX.js";import{t as h}from"./DPmS69Mt2.chunk.js";var g=e(o()),_=n(),v=`reports.removeLogo`,y=u.encloseNamespace(v);function b(e){let[n,o]=g.useState(!1),u=l(),b=h(),x=p();async function S(){o(!0);try{await u(m.removeLogo(e.customerId,e.logoId)),b.success(y(x?`successTertiary`:`success`)),t.logUserAction({id:e.logoId},{actionType:r.Remove,entity:s.Logo,workflowPhase:a.Complete,location:i.Popup}),e.closePopup()}catch{b.success(y(x?`errorTertiary`:`error`)),o(!1)}}return(0,_.jsxs)(d,{closePopup:e.closePopup,title:y(x?`removeSchoolCrestTertiary`:`removeSchoolCrest`),children:[(0,_.jsx)(`p`,{children:(0,_.jsx)(c,{namespace:v,phrase:x?`areYouSureTertiary`:`areYouSure`})}),(0,_.jsxs)(f,{children:[(0,_.jsx)(f.Cancel,{onClick:e.closePopup}),(0,_.jsx)(f.Submit,{onClick:S,text:y(`remove`),showSpinner:n,variant:`danger`})]})]})}export{b as RemoveLogoView};
2
+ //# sourceMappingURL=CQNeP_Yp.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cBssbttB.chunk.js","names":[],"sources":["../../src/shared/views/remove-logo/RemoveLogoView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { LogoRequests } from 'shared/flight-requests/LogoRequests';\nimport { useIsTertiary } from 'shared/hooks/useIsTertiary';\n\nconst namespace = 'reports.removeLogo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RemoveLogoViewProps extends PopupViewProps {\n logoId: string;\n customerId: string;\n}\n\nexport function RemoveLogoView(props: RemoveLogoViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const alerts = useAlerts();\n const isTertiary = useIsTertiary();\n\n async function onClickRemove(): Promise<void> {\n setShowSpinner(true);\n\n try {\n await fetchAsync(LogoRequests.removeLogo(props.customerId, props.logoId));\n\n alerts.success(getPhrase(isTertiary ? 'successTertiary' : 'success'));\n\n AnalyticsHelper.logUserAction({\n id: props.logoId\n }, {\n actionType: UserAction.Remove,\n entity: EntityType.Logo,\n workflowPhase: WorkflowPhase.Complete,\n location: LocationContext.Popup\n });\n\n props.closePopup();\n } catch {\n alerts.success(getPhrase(isTertiary ? 'errorTertiary' : 'error'));\n setShowSpinner(false);\n }\n }\n\n return (\n <Popup\n closePopup={props.closePopup}\n title={isTertiary ? getPhrase('removeSchoolCrestTertiary') : getPhrase('removeSchoolCrest')}\n >\n <p><Text namespace={namespace} phrase={isTertiary ? 'areYouSureTertiary' : 'areYouSure'} /></p>\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n onClick={onClickRemove}\n text={getPhrase('remove')}\n showSpinner={showSpinner}\n variant='danger'\n />\n </PopupButtons>\n </Popup>\n );\n}\n"],"mappings":"4WAiBM,EAAY,qBACZ,EAAY,EAAgB,iBAAiB,EAAU,CAO7D,SAAgB,EAAe,EAAyC,CACtE,GAAM,CAAE,EAAa,GAAA,EAAyB,SAAS,GAAM,CAEvD,EAAa,GAAyB,CAEtC,EAAS,GAAW,CACpB,EAAa,GAAe,CAElC,eAAe,GAA+B,CAC5C,EAAe,GAAK,CAEpB,GAAI,CACF,MAAM,EAAW,EAAa,WAAW,EAAM,WAAY,EAAM,OAAO,CAAC,CAEzE,EAAO,QAAQ,EAAU,EAAa,kBAAoB,UAAU,CAAC,CAErE,EAAgB,cAAc,CAC5B,GAAI,EAAM,OACX,CAAE,CACD,WAAY,EAAW,OACvB,OAAQ,EAAW,KACnB,cAAe,EAAc,SAC7B,SAAU,EAAgB,MAC3B,CAAC,CAEF,EAAM,YAAY,MACZ,CACN,EAAO,QAAQ,EAAU,EAAa,gBAAkB,QAAQ,CAAC,CACjE,EAAe,GAAM,EAIzB,OACE,EAAA,EAAA,MAAC,EAAD,CACE,WAAY,EAAM,WAClB,MAAoB,EAAb,EAAuB,4BAAyC,oBAAoB,UAF7F,EAIE,EAAA,EAAA,KAAC,IAAD,CAAA,UAAG,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAQ,EAAa,qBAAuB,aAAgB,CAAA,CAAI,CAAA,EAE/F,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAa,OAAd,CAAqB,QAAS,EAAM,WAAc,CAAA,EAClD,EAAA,EAAA,KAAC,EAAa,OAAd,CACE,QAAS,EACT,KAAM,EAAU,SAAS,CACZ,cACb,QAAQ,SACR,CAAA,CACW,CAAA,CAAA,CACT"}
1
+ {"version":3,"file":"CQNeP_Yp.chunk.js","names":[],"sources":["../../src/shared/views/remove-logo/RemoveLogoView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { LogoRequests } from 'shared/flight-requests/LogoRequests';\nimport { useIsTertiary } from 'shared/hooks/useIsTertiary';\n\nconst namespace = 'reports.removeLogo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RemoveLogoViewProps extends PopupViewProps {\n logoId: string;\n customerId: string;\n}\n\nexport function RemoveLogoView(props: RemoveLogoViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const alerts = useAlerts();\n const isTertiary = useIsTertiary();\n\n async function onClickRemove(): Promise<void> {\n setShowSpinner(true);\n\n try {\n await fetchAsync(LogoRequests.removeLogo(props.customerId, props.logoId));\n\n alerts.success(getPhrase(isTertiary ? 'successTertiary' : 'success'));\n\n AnalyticsHelper.logUserAction({\n id: props.logoId\n }, {\n actionType: UserAction.Remove,\n entity: EntityType.Logo,\n workflowPhase: WorkflowPhase.Complete,\n location: LocationContext.Popup\n });\n\n props.closePopup();\n } catch {\n alerts.success(getPhrase(isTertiary ? 'errorTertiary' : 'error'));\n setShowSpinner(false);\n }\n }\n\n return (\n <Popup\n closePopup={props.closePopup}\n title={isTertiary ? getPhrase('removeSchoolCrestTertiary') : getPhrase('removeSchoolCrest')}\n >\n <p><Text namespace={namespace} phrase={isTertiary ? 'areYouSureTertiary' : 'areYouSure'} /></p>\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n onClick={onClickRemove}\n text={getPhrase('remove')}\n showSpinner={showSpinner}\n variant='danger'\n />\n </PopupButtons>\n </Popup>\n );\n}\n"],"mappings":"4WAiBM,EAAY,qBACZ,EAAY,EAAgB,iBAAiB,EAAU,CAO7D,SAAgB,EAAe,EAAyC,CACtE,GAAM,CAAE,EAAa,GAAA,EAAyB,SAAS,GAAM,CAEvD,EAAa,GAAyB,CAEtC,EAAS,GAAW,CACpB,EAAa,GAAe,CAElC,eAAe,GAA+B,CAC5C,EAAe,GAAK,CAEpB,GAAI,CACF,MAAM,EAAW,EAAa,WAAW,EAAM,WAAY,EAAM,OAAO,CAAC,CAEzE,EAAO,QAAQ,EAAU,EAAa,kBAAoB,UAAU,CAAC,CAErE,EAAgB,cAAc,CAC5B,GAAI,EAAM,OACX,CAAE,CACD,WAAY,EAAW,OACvB,OAAQ,EAAW,KACnB,cAAe,EAAc,SAC7B,SAAU,EAAgB,MAC3B,CAAC,CAEF,EAAM,YAAY,MACZ,CACN,EAAO,QAAQ,EAAU,EAAa,gBAAkB,QAAQ,CAAC,CACjE,EAAe,GAAM,EAIzB,OACE,EAAA,EAAA,MAAC,EAAD,CACE,WAAY,EAAM,WAClB,MAAoB,EAAb,EAAuB,4BAAyC,oBAAoB,UAF7F,EAIE,EAAA,EAAA,KAAC,IAAD,CAAA,UAAG,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAQ,EAAa,qBAAuB,aAAgB,CAAA,CAAI,CAAA,EAE/F,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAa,OAAd,CAAqB,QAAS,EAAM,WAAc,CAAA,EAClD,EAAA,EAAA,KAAC,EAAa,OAAd,CACE,QAAS,EACT,KAAM,EAAU,SAAS,CACZ,cACb,QAAQ,SACR,CAAA,CACW,CAAA,CAAA,CACT"}
@@ -1,2 +1,2 @@
1
- import{Kn as e,P as t,ot as n,st as r}from"./BSV_W0cK.chunk.js";import{f as i}from"./DLiesDxa.chunk.js";import{t as a}from"./BDdd6NA7.chunk.js";import"./CammdB53.chunk.js";import"./296Drw6z.chunk.js";var o=e(r()),s=e(n()),c=(function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})(),l=`html`,u=`svg`,d=`http://www.w3.org/2000/svg`,f=function(e,t){if(t===l)return e instanceof HTMLElement;if(t===u)return e instanceof SVGElement;throw Error(`Unrecognized element type "`+t+`" for validateElementType.`)},p=function(e,t){var n={},r,i,a;if(e===l)a=document.createElement(`div`);else if(e===u)a=document.createElementNS(d,`g`);else throw Error(`Invalid element type "`+e+`" for createPortalNode: must be "html" or "svg".`);if(t&&typeof t==`object`)for(var o=0,s=Object.entries(t.attributes);o<s.length;o++){var c=s[o],p=c[0],m=c[1];a.setAttribute(p,m)}var h={element:a,elementType:e,setPortalProps:function(e){n=e},getInitialPortalProps:function(){return n},mount:function(t,n){if(n!==i){if(h.unmount(),t!==r&&!f(t,e))throw Error(`Invalid element type for portal: "`+e+`" portalNodes must be used with `+e+` elements, but OutPortal is within <`+t.tagName+`>.`);t.replaceChild(h.element,n),r=t,i=n}},unmount:function(e){e&&e!==i||r&&i&&(r.replaceChild(i,h.element),r=void 0,i=void 0)}};return h},m=function(e){c(t,e);function t(t){var n=e.call(this,t)||this;return n.addPropsChannel=function(){Object.assign(n.props.node,{setPortalProps:function(e){n.setState({nodeProps:e})}})},n.state={nodeProps:n.props.node.getInitialPortalProps()},n}return t.prototype.componentDidMount=function(){this.addPropsChannel()},t.prototype.componentDidUpdate=function(){this.addPropsChannel()},t.prototype.render=function(){var e=this,t=this.props,n=t.children,r=t.node;return s.createPortal(o.Children.map(n,function(t){return o.isValidElement(t)?o.cloneElement(t,e.state.nodeProps):t}),r.element)},t}(o.PureComponent),h=function(e){c(t,e);function t(t){var n=e.call(this,t)||this;return n.placeholderNode=o.createRef(),n.passPropsThroughPortal(),n}return t.prototype.passPropsThroughPortal=function(){var e=Object.assign({},this.props,{node:void 0});this.props.node.setPortalProps(e)},t.prototype.componentDidMount=function(){var e=this.props.node;this.currentPortalNode=e;var t=this.placeholderNode.current,n=t.parentNode;e.mount(n,t),this.passPropsThroughPortal()},t.prototype.componentDidUpdate=function(){var e=this.props.node;this.currentPortalNode&&e!==this.currentPortalNode&&(this.currentPortalNode.unmount(this.placeholderNode.current),this.currentPortalNode.setPortalProps({}),this.currentPortalNode=e);var t=this.placeholderNode.current,n=t.parentNode;e.mount(n,t),this.passPropsThroughPortal()},t.prototype.componentWillUnmount=function(){var e=this.props.node;e.unmount(this.placeholderNode.current),e.setPortalProps({})},t.prototype.render=function(){return o.createElement(`div`,{ref:this.placeholderNode})},t}(o.PureComponent),g=p.bind(null,l);p.bind(null,u),t();var _=o.createContext({hasProvider:!1});function v(){return o.useContext(_)}var y=50;function b(e,t){let n=i(a.chunk(e,y).map(e=>t(a.uniq(e)))),r=a.flatten(n.data);return{itemsArr:r,items:n.data.length?r.reduce((e,t)=>({...e,[t.id]:t}),{}):null,isFetching:n.isFetching,hasCompleted:n.hasCompleted}}function x(e,t,n){let r=n??(e=>typeof e==`object`?e.id:e),{fetchItems:i,...a}=S({getRequest:t,_getKey:n});return o.useEffect(()=>{e?.length&&i(e)},[e?.map(r).join(`,`)]),a}function S(e){let t=e._getKey??(e=>typeof e==`object`?e.id:e),n=o.useRef(new Set),[r,s]=o.useState([]);function c(r){if(!r?.length)return;let i=[];r.forEach(e=>{let r=t(e);n.current.has(r)||(i.push(e),n.current.add(r))}),i.length&&s(t=>[...t,...a.chunk(i,y).map(e.getRequest)])}let l=i(r),u=a.flatten(l.data),d=l.data.length?u.reduce((e,n)=>({...e,[t(n)]:n}),{}):null;return{hasFirstRequestCompleted:!!l.responses?.[0]?.hasCompleted,itemsArr:u,items:d,isFetching:l.isFetching,fetchItems:c}}export{h as a,m as i,x as n,g as o,v as r,b as t};
2
- //# sourceMappingURL=Cv9H330A2.chunk.js.map
1
+ import{Kn as e,P as t,ot as n,st as r}from"./BSV_W0cK.chunk.js";import{f as i}from"./DLiesDxa.chunk.js";import{t as a}from"./BDdd6NA7.chunk.js";import"./CammdB53.chunk.js";import"./BTLhY0Si.chunk.js";var o=e(r()),s=e(n()),c=(function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})(),l=`html`,u=`svg`,d=`http://www.w3.org/2000/svg`,f=function(e,t){if(t===l)return e instanceof HTMLElement;if(t===u)return e instanceof SVGElement;throw Error(`Unrecognized element type "`+t+`" for validateElementType.`)},p=function(e,t){var n={},r,i,a;if(e===l)a=document.createElement(`div`);else if(e===u)a=document.createElementNS(d,`g`);else throw Error(`Invalid element type "`+e+`" for createPortalNode: must be "html" or "svg".`);if(t&&typeof t==`object`)for(var o=0,s=Object.entries(t.attributes);o<s.length;o++){var c=s[o],p=c[0],m=c[1];a.setAttribute(p,m)}var h={element:a,elementType:e,setPortalProps:function(e){n=e},getInitialPortalProps:function(){return n},mount:function(t,n){if(n!==i){if(h.unmount(),t!==r&&!f(t,e))throw Error(`Invalid element type for portal: "`+e+`" portalNodes must be used with `+e+` elements, but OutPortal is within <`+t.tagName+`>.`);t.replaceChild(h.element,n),r=t,i=n}},unmount:function(e){e&&e!==i||r&&i&&(r.replaceChild(i,h.element),r=void 0,i=void 0)}};return h},m=function(e){c(t,e);function t(t){var n=e.call(this,t)||this;return n.addPropsChannel=function(){Object.assign(n.props.node,{setPortalProps:function(e){n.setState({nodeProps:e})}})},n.state={nodeProps:n.props.node.getInitialPortalProps()},n}return t.prototype.componentDidMount=function(){this.addPropsChannel()},t.prototype.componentDidUpdate=function(){this.addPropsChannel()},t.prototype.render=function(){var e=this,t=this.props,n=t.children,r=t.node;return s.createPortal(o.Children.map(n,function(t){return o.isValidElement(t)?o.cloneElement(t,e.state.nodeProps):t}),r.element)},t}(o.PureComponent),h=function(e){c(t,e);function t(t){var n=e.call(this,t)||this;return n.placeholderNode=o.createRef(),n.passPropsThroughPortal(),n}return t.prototype.passPropsThroughPortal=function(){var e=Object.assign({},this.props,{node:void 0});this.props.node.setPortalProps(e)},t.prototype.componentDidMount=function(){var e=this.props.node;this.currentPortalNode=e;var t=this.placeholderNode.current,n=t.parentNode;e.mount(n,t),this.passPropsThroughPortal()},t.prototype.componentDidUpdate=function(){var e=this.props.node;this.currentPortalNode&&e!==this.currentPortalNode&&(this.currentPortalNode.unmount(this.placeholderNode.current),this.currentPortalNode.setPortalProps({}),this.currentPortalNode=e);var t=this.placeholderNode.current,n=t.parentNode;e.mount(n,t),this.passPropsThroughPortal()},t.prototype.componentWillUnmount=function(){var e=this.props.node;e.unmount(this.placeholderNode.current),e.setPortalProps({})},t.prototype.render=function(){return o.createElement(`div`,{ref:this.placeholderNode})},t}(o.PureComponent),g=p.bind(null,l);p.bind(null,u),t();var _=o.createContext({hasProvider:!1});function v(){return o.useContext(_)}var y=50;function b(e,t){let n=i(a.chunk(e,y).map(e=>t(a.uniq(e)))),r=a.flatten(n.data);return{itemsArr:r,items:n.data.length?r.reduce((e,t)=>({...e,[t.id]:t}),{}):null,isFetching:n.isFetching,hasCompleted:n.hasCompleted}}function x(e,t,n){let r=n??(e=>typeof e==`object`?e.id:e),{fetchItems:i,...a}=S({getRequest:t,_getKey:n});return o.useEffect(()=>{e?.length&&i(e)},[e?.map(r).join(`,`)]),a}function S(e){let t=e._getKey??(e=>typeof e==`object`?e.id:e),n=o.useRef(new Set),[r,s]=o.useState([]);function c(r){if(!r?.length)return;let i=[];r.forEach(e=>{let r=t(e);n.current.has(r)||(i.push(e),n.current.add(r))}),i.length&&s(t=>[...t,...a.chunk(i,y).map(e.getRequest)])}let l=i(r),u=a.flatten(l.data),d=l.data.length?u.reduce((e,n)=>({...e,[t(n)]:n}),{}):null;return{hasFirstRequestCompleted:!!l.responses?.[0]?.hasCompleted,itemsArr:u,items:d,isFetching:l.isFetching,fetchItems:c}}export{h as a,m as i,x as n,g as o,v as r,b as t};
2
+ //# sourceMappingURL=ClDdEKYV2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Cv9H330A2.chunk.js","names":[],"sources":["../../../../../node_modules/react-reverse-portal/dist/web/index.js","../../../../libs/shared/src/context/player-context/PlayerContext.tsx","../../../../libs/shared/src/hooks/UseBatchFetch.ts"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n// Internally, the portalNode must be for either HTML or SVG elements\nvar ELEMENT_TYPE_HTML = 'html';\nvar ELEMENT_TYPE_SVG = 'svg';\n// ReactDOM can handle several different namespaces, but they're not exported publicly\n// https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/DOMNamespaces.js#L8-L10\nvar SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nvar validateElementType = function (domElement, elementType) {\n if (elementType === ELEMENT_TYPE_HTML) {\n return domElement instanceof HTMLElement;\n }\n if (elementType === ELEMENT_TYPE_SVG) {\n return domElement instanceof SVGElement;\n }\n throw new Error(\"Unrecognized element type \\\"\" + elementType + \"\\\" for validateElementType.\");\n};\n// This is the internal implementation: the public entry points set elementType to an appropriate value\nvar createPortalNode = function (elementType, options) {\n var initialProps = {};\n var parent;\n var lastPlaceholder;\n var element;\n if (elementType === ELEMENT_TYPE_HTML) {\n element = document.createElement('div');\n }\n else if (elementType === ELEMENT_TYPE_SVG) {\n element = document.createElementNS(SVG_NAMESPACE, 'g');\n }\n else {\n throw new Error(\"Invalid element type \\\"\" + elementType + \"\\\" for createPortalNode: must be \\\"html\\\" or \\\"svg\\\".\");\n }\n if (options && typeof options === \"object\") {\n for (var _i = 0, _a = Object.entries(options.attributes); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n element.setAttribute(key, value);\n }\n }\n var portalNode = {\n element: element,\n elementType: elementType,\n setPortalProps: function (props) {\n initialProps = props;\n },\n getInitialPortalProps: function () {\n return initialProps;\n },\n mount: function (newParent, newPlaceholder) {\n if (newPlaceholder === lastPlaceholder) {\n // Already mounted - noop.\n return;\n }\n portalNode.unmount();\n // To support SVG and other non-html elements, the portalNode's elementType needs to match\n // the elementType it's being rendered into\n if (newParent !== parent) {\n if (!validateElementType(newParent, elementType)) {\n throw new Error(\"Invalid element type for portal: \\\"\" + elementType + \"\\\" portalNodes must be used with \" + elementType + \" elements, but OutPortal is within <\" + newParent.tagName + \">.\");\n }\n }\n newParent.replaceChild(portalNode.element, newPlaceholder);\n parent = newParent;\n lastPlaceholder = newPlaceholder;\n },\n unmount: function (expectedPlaceholder) {\n if (expectedPlaceholder && expectedPlaceholder !== lastPlaceholder) {\n // Skip unmounts for placeholders that aren't currently mounted\n // They will have been automatically unmounted already by a subsequent mount()\n return;\n }\n if (parent && lastPlaceholder) {\n parent.replaceChild(lastPlaceholder, portalNode.element);\n parent = undefined;\n lastPlaceholder = undefined;\n }\n }\n };\n return portalNode;\n};\nvar InPortal = /** @class */ (function (_super) {\n __extends(InPortal, _super);\n function InPortal(props) {\n var _this = _super.call(this, props) || this;\n _this.addPropsChannel = function () {\n Object.assign(_this.props.node, {\n setPortalProps: function (props) {\n // Rerender the child node here if/when the out portal props change\n _this.setState({ nodeProps: props });\n }\n });\n };\n _this.state = {\n nodeProps: _this.props.node.getInitialPortalProps(),\n };\n return _this;\n }\n InPortal.prototype.componentDidMount = function () {\n this.addPropsChannel();\n };\n InPortal.prototype.componentDidUpdate = function () {\n this.addPropsChannel();\n };\n InPortal.prototype.render = function () {\n var _this = this;\n var _a = this.props, children = _a.children, node = _a.node;\n return ReactDOM.createPortal(React.Children.map(children, function (child) {\n if (!React.isValidElement(child))\n return child;\n return React.cloneElement(child, _this.state.nodeProps);\n }), node.element);\n };\n return InPortal;\n}(React.PureComponent));\nvar OutPortal = /** @class */ (function (_super) {\n __extends(OutPortal, _super);\n function OutPortal(props) {\n var _this = _super.call(this, props) || this;\n _this.placeholderNode = React.createRef();\n _this.passPropsThroughPortal();\n return _this;\n }\n OutPortal.prototype.passPropsThroughPortal = function () {\n var propsForTarget = Object.assign({}, this.props, { node: undefined });\n this.props.node.setPortalProps(propsForTarget);\n };\n OutPortal.prototype.componentDidMount = function () {\n var node = this.props.node;\n this.currentPortalNode = node;\n var placeholder = this.placeholderNode.current;\n var parent = placeholder.parentNode;\n node.mount(parent, placeholder);\n this.passPropsThroughPortal();\n };\n OutPortal.prototype.componentDidUpdate = function () {\n // We re-mount on update, just in case we were unmounted (e.g. by\n // a second OutPortal, which has now been removed)\n var node = this.props.node;\n // If we're switching portal nodes, we need to clean up the current one first.\n if (this.currentPortalNode && node !== this.currentPortalNode) {\n this.currentPortalNode.unmount(this.placeholderNode.current);\n this.currentPortalNode.setPortalProps({});\n this.currentPortalNode = node;\n }\n var placeholder = this.placeholderNode.current;\n var parent = placeholder.parentNode;\n node.mount(parent, placeholder);\n this.passPropsThroughPortal();\n };\n OutPortal.prototype.componentWillUnmount = function () {\n var node = this.props.node;\n node.unmount(this.placeholderNode.current);\n node.setPortalProps({});\n };\n OutPortal.prototype.render = function () {\n // Render a placeholder to the DOM, so we can get a reference into\n // our location in the DOM, and swap it out for the portaled node.\n // A <div> placeholder works fine even for SVG.\n return React.createElement(\"div\", { ref: this.placeholderNode });\n };\n return OutPortal;\n}(React.PureComponent));\nvar createHtmlPortalNode = createPortalNode.bind(null, ELEMENT_TYPE_HTML);\nvar createSvgPortalNode = createPortalNode.bind(null, ELEMENT_TYPE_SVG);\nexport { createHtmlPortalNode, createSvgPortalNode, InPortal, OutPortal, };\n//# sourceMappingURL=index.js.map","import React from 'react';\nimport { createHtmlPortalNode, HtmlPortalNode } from 'react-reverse-portal';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { DefaultDisplayMode, PlayerInitializationData } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { PlayerContextState } from 'libs/shared/context/player-context/interfaces/PlayerContextState';\nimport { PlayerMode } from 'libs/shared/context/player-context/interfaces/PlayerMode';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { playerContextReducer } from 'libs/shared/context/player-context/reducer/PlayerContextReducer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nconst _THEATRE_MODE = 'play-page-theatre-mode';\n\nexport interface PlayerContextValues extends PlayerContextState {\n playerRef?: React.MutableRefObject<PlayerReference>;\n portalNode?: HtmlPortalNode;\n questionListPortalNode?: HtmlPortalNode;\n\n useInitialize?: (initializeData: PlayerInitializationData) => void;\n dispose?: () => void;\n setPlayerRef?: (player: any) => void;\n setPlayerMode?: (mode: PlayerMode) => void;\n setDefaultDisplayMode?: (displayMode: DefaultDisplayMode) => void;\n setStarted?: (started: boolean) => void;\n setPersist?: () => void;\n\n /**\n * Tells components if an instance of <PlayerContextProvider /> exists\n * above them in the tree. I.e. When this is used in curator.\n */\n hasProvider: boolean;\n}\n\nconst PlayerContext = React.createContext<PlayerContextValues>({ hasProvider: false });\n\nexport function usePlayerContext() {\n return React.useContext(PlayerContext);\n}\n\nfunction getInitialState(): PlayerContextState {\n const hasSavedTheatreMode = LocalStorageHelper.get(_THEATRE_MODE);\n\n return {\n defaultDisplayMode: hasSavedTheatreMode ? 'theatre' : 'normal'\n };\n}\n\nexport function PlayerContextProvider(props: React.PropsWithChildren) {\n const [ state, dispatch ] = React.useReducer(playerContextReducer, getInitialState());\n const { hasPreviewVideos } = useSettings(null);\n\n const playerRef = React.useRef<any>(null);\n\n const portalNode = React.useMemo(() => createHtmlPortalNode(\n { attributes: { class: 'cv-theatre-mode-video-container' } }\n ), []);\n\n const questionListPortalNode = React.useMemo(createHtmlPortalNode, []);\n\n function setPlayerRef(player: PlayerReference) {\n playerRef.current = player;\n }\n\n function useInitialize(initializeData: PlayerInitializationData) {\n const enabled = hasPreviewVideos || initializeData.mode !== 'hover';\n\n React.useEffect(() => {\n if (!enabled)\n return;\n\n /**\n * Cannot initialize a hover player if we already have a player elsewhere.\n */\n if (initializeData.mode === 'hover' && state.mode)\n return;\n\n /**\n * No hover to play on interactives. This feature is ComingSoon™️ - Sha\n */\n if (initializeData.mode === 'hover' && initializeData.objectTypeId === MasterType.Interactive)\n return;\n\n dispatch({\n type: 'initialize',\n data: initializeData\n });\n\n return disposeInternal;\n }, []);\n }\n\n function setPlayerMode(mode: PlayerMode) {\n dispatch({ type: 'mode', data: { mode } });\n }\n\n function setDefaultDisplayMode(defaultDisplayMode: DefaultDisplayMode) {\n LocalStorageHelper.set(_THEATRE_MODE, defaultDisplayMode === 'theatre');\n\n dispatch({ type: 'defaultDisplayMode', data: { defaultDisplayMode } });\n }\n\n function setStarted(): void {\n dispatch({ type: 'started' });\n }\n\n function disposeInternal(force: boolean = false): void {\n if (force) {\n playerRef.current = null;\n }\n\n dispatch({ type: 'dispose', data: { force: force } });\n }\n\n function setPersist(): void {\n dispatch({ type: 'persist' });\n }\n\n /**\n * If anything external calls dispose, we ignore the persist flag and force a disposal\n */\n function dispose(): void {\n disposeInternal(true);\n }\n\n const playerContextValues: PlayerContextValues = {\n ...state,\n playerRef,\n setPlayerRef,\n portalNode,\n questionListPortalNode,\n useInitialize,\n setPlayerMode,\n setDefaultDisplayMode,\n setStarted,\n dispose,\n setPersist,\n hasProvider: true\n };\n\n return (\n <PlayerContext.Provider value={playerContextValues}>\n {props.children}\n </PlayerContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst CHUNK_SIZE = 50;\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n itemsArr: T[];\n items: {[key: string]: T } | null;\n isFetching: boolean;\n hasCompleted: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const chunks = ArrayHelper.chunk<string>(itemIds, CHUNK_SIZE);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length ?\n itemsArr.reduce((acc, item) => ({ ...acc, [item.id]: item }), {}) :\n null;\n\n return {\n itemsArr,\n items,\n isFetching: responses.isFetching,\n hasCompleted: responses.hasCompleted\n };\n}\n\n/**\n * When you need the useBatchFetch() behavior, but your list of objects to hydrate\n * will grow, such as on a scrolling page. useGrowingBatchFetch() will use local state\n * to determine what we've already built a request for and what items are new\n * as to not re-fetch items - Sha\n */\nexport function useGrowingBatchFetch<TResponse, TObjects = string>(\n objs: TObjects[],\n getRequest: (items: TObjects[]) => Flight.Request,\n _getKey?: (obj: TObjects) => string\n) {\n const getKey = _getKey ?? ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const { fetchItems, ...data } = useGrowingBatchFetchFunc<TResponse, TObjects>({ getRequest, _getKey });\n\n React.useEffect(() => {\n if (!objs?.length)\n return;\n\n fetchItems(objs);\n }, [objs?.map(getKey).join(',')]);\n\n return data;\n}\n\ninterface UseGrowingBatchFetchFuncOptions<TObjects> {\n getRequest: (items: TObjects[]) => Flight.Request;\n _getKey?: (obj: TObjects) => string;\n}\n\n/**\n * When you need the useGrowingBatchFetch() behaviour, but need to trigger the\n * fetch manually and update the objects - Nish \n */\nexport function useGrowingBatchFetchFunc<TResponse, TObjects = string>(\n options: UseGrowingBatchFetchFuncOptions<TObjects>\n) {\n const getKey = options._getKey ?? ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const fetchedItems = React.useRef<Set<string>>(new Set<string>());\n const [ requests, setRequests ] = React.useState<Flight.Request[]>([]);\n\n function fetchItems(objs: TObjects[]) {\n if (!objs?.length)\n return;\n\n const unfetchedItems: TObjects[] = [];\n \n objs.forEach(obj => {\n const key = getKey(obj);\n\n if (fetchedItems.current.has(key))\n return;\n\n unfetchedItems.push(obj);\n fetchedItems.current.add(key);\n });\n \n if (!unfetchedItems.length)\n return;\n \n setRequests(r => ([ ...r, ...ArrayHelper.chunk<TObjects>(unfetchedItems, CHUNK_SIZE).map(options.getRequest) ]));\n }\n\n const responses = Flight.useBasicFetchAll<TResponse[]>(requests);\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length ?\n itemsArr.reduce<Record<string, TResponse>>((acc, item) => ({ ...acc, [getKey(item)]: item }), {}) :\n null;\n\n return {\n hasFirstRequestCompleted: !!responses.responses?.[0]?.hasCompleted,\n itemsArr,\n items,\n isFetching: responses.isFetching,\n fetchItems\n };\n}\n"],"x_google_ignoreList":[0],"mappings":"8NAAI,GAAyC,UAAY,CACrD,IAAI,EAAgB,SAAU,EAAG,EAAG,CAIhC,MAHA,GAAgB,OAAO,gBAClB,CAAE,UAAW,EAAE,CAAE,WAAY,OAAS,SAAU,EAAG,EAAG,CAAE,EAAE,UAAY,IACvE,SAAU,EAAG,EAAG,CAAE,IAAK,IAAI,KAAK,EAAO,EAAE,eAAe,EAAE,GAAE,EAAE,GAAK,EAAE,KAClE,EAAc,EAAG,EAAE,EAE9B,OAAO,SAAU,EAAG,EAAG,CACnB,EAAc,EAAG,EAAE,CACnB,SAAS,GAAK,CAAE,KAAK,YAAc,EACnC,EAAE,UAAY,IAAM,KAAO,OAAO,OAAO,EAAE,EAAI,EAAG,UAAY,EAAE,UAAW,IAAI,OAEnF,CAIA,EAAoB,OACpB,EAAmB,MAGnB,EAAgB,6BAChB,EAAsB,SAAU,EAAY,EAAa,CACzD,GAAI,IAAgB,EAChB,OAAO,aAAsB,YAEjC,GAAI,IAAgB,EAChB,OAAO,aAAsB,WAEjC,MAAU,MAAM,8BAAiC,EAAc,6BAA8B,EAG7F,EAAmB,SAAU,EAAa,EAAS,CACnD,IAAI,EAAe,EAAE,CACjB,EACA,EACA,EACJ,GAAI,IAAgB,EAChB,EAAU,SAAS,cAAc,MAAM,SAElC,IAAgB,EACrB,EAAU,SAAS,gBAAgB,EAAe,IAAI,MAGtD,MAAU,MAAM,yBAA4B,EAAc,mDAAwD,CAEtH,GAAI,GAAW,OAAO,GAAY,SAC9B,IAAK,IAAI,EAAK,EAAG,EAAK,OAAO,QAAQ,EAAQ,WAAW,CAAE,EAAK,EAAG,OAAQ,IAAM,CAC5E,IAAI,EAAK,EAAG,GAAK,EAAM,EAAG,GAAI,EAAQ,EAAG,GACzC,EAAQ,aAAa,EAAK,EAAM,CAGxC,IAAI,EAAa,CACJ,UACI,cACb,eAAgB,SAAU,EAAO,CAC7B,EAAe,GAEnB,sBAAuB,UAAY,CAC/B,OAAO,GAEX,MAAO,SAAU,EAAW,EAAgB,CACpC,OAAmB,EAOvB,IAHA,EAAW,SAAS,CAGhB,IAAc,GACV,CAAC,EAAoB,EAAW,EAAY,CAC5C,MAAU,MAAM,qCAAwC,EAAc,mCAAsC,EAAc,uCAAyC,EAAU,QAAU,KAAK,CAGpM,EAAU,aAAa,EAAW,QAAS,EAAe,CAC1D,EAAS,EACT,EAAkB,IAEtB,QAAS,SAAU,EAAqB,CAChC,GAAuB,IAAwB,GAK/C,GAAU,IACV,EAAO,aAAa,EAAiB,EAAW,QAAQ,CACxD,EAAS,IAAA,GACT,EAAkB,IAAA,KAG7B,CACD,OAAO,GAEP,EAA0B,SAAU,EAAQ,CAC5C,EAAU,EAAU,EAAO,CAC3B,SAAS,EAAS,EAAO,CACrB,IAAI,EAAQ,EAAO,KAAK,KAAM,EAAM,EAAI,KAYxC,MAXA,GAAM,gBAAkB,UAAY,CAChC,OAAO,OAAO,EAAM,MAAM,KAAM,CAC5B,eAAgB,SAAU,EAAO,CAE7B,EAAM,SAAS,CAAE,UAAW,EAAO,CAAC,EAE3C,CAAC,EAEN,EAAM,MAAQ,CACV,UAAW,EAAM,MAAM,KAAK,uBAAuB,CACtD,CACM,EAiBX,MAfA,GAAS,UAAU,kBAAoB,UAAY,CAC/C,KAAK,iBAAiB,EAE1B,EAAS,UAAU,mBAAqB,UAAY,CAChD,KAAK,iBAAiB,EAE1B,EAAS,UAAU,OAAS,UAAY,CACpC,IAAI,EAAQ,KACR,EAAK,KAAK,MAAO,EAAW,EAAG,SAAU,EAAO,EAAG,KACvD,OAAA,EAAgB,aAAA,EAAmB,SAAS,IAAI,EAAU,SAAU,EAAO,CAGvE,OAFI,EAAO,eAAe,EAAM,CAEhC,EAAa,aAAa,EAAO,EAAM,MAAM,UAAU,CAD5C,GAEb,CAAE,EAAK,QAAQ,EAEd,KACH,cAAc,CAClB,EAA2B,SAAU,EAAQ,CAC7C,EAAU,EAAW,EAAO,CAC5B,SAAS,EAAU,EAAO,CACtB,IAAI,EAAQ,EAAO,KAAK,KAAM,EAAM,EAAI,KAGxC,MAFA,GAAM,gBAAA,EAAwB,WAAW,CACzC,EAAM,wBAAwB,CACvB,EAwCX,MAtCA,GAAU,UAAU,uBAAyB,UAAY,CACrD,IAAI,EAAiB,OAAO,OAAO,EAAE,CAAE,KAAK,MAAO,CAAE,KAAM,IAAA,GAAW,CAAC,CACvE,KAAK,MAAM,KAAK,eAAe,EAAe,EAElD,EAAU,UAAU,kBAAoB,UAAY,CAChD,IAAI,EAAO,KAAK,MAAM,KACtB,KAAK,kBAAoB,EACzB,IAAI,EAAc,KAAK,gBAAgB,QACnC,EAAS,EAAY,WACzB,EAAK,MAAM,EAAQ,EAAY,CAC/B,KAAK,wBAAwB,EAEjC,EAAU,UAAU,mBAAqB,UAAY,CAGjD,IAAI,EAAO,KAAK,MAAM,KAElB,KAAK,mBAAqB,IAAS,KAAK,oBACxC,KAAK,kBAAkB,QAAQ,KAAK,gBAAgB,QAAQ,CAC5D,KAAK,kBAAkB,eAAe,EAAE,CAAC,CACzC,KAAK,kBAAoB,GAE7B,IAAI,EAAc,KAAK,gBAAgB,QACnC,EAAS,EAAY,WACzB,EAAK,MAAM,EAAQ,EAAY,CAC/B,KAAK,wBAAwB,EAEjC,EAAU,UAAU,qBAAuB,UAAY,CACnD,IAAI,EAAO,KAAK,MAAM,KACtB,EAAK,QAAQ,KAAK,gBAAgB,QAAQ,CAC1C,EAAK,eAAe,EAAE,CAAC,EAE3B,EAAU,UAAU,OAAS,UAAY,CAIrC,OAAA,EAAa,cAAc,MAAO,CAAE,IAAK,KAAK,gBAAiB,CAAC,EAE7D,KACH,cAAc,CAClB,EAAuB,EAAiB,KAAK,KAAM,EAAkB,CAC/C,EAAiB,KAAK,KAAM,EAAiB,KC5IvE,IAAM,EAAA,EAAsB,cAAmC,CAAE,YAAa,GAAO,CAAC,CAEtF,SAAgB,GAAmB,CACjC,OAAA,EAAa,WAAW,EAAc,CC/BxC,IAAM,EAAa,GAkBnB,SAAgB,EACd,EACA,EACwB,CAKxB,IAAM,EAAY,EAJH,EAAY,MAAc,EAAS,EAAW,CAErC,IAAI,GAAS,EAAW,EAAY,KAAK,EAAM,CAAC,CAAC,CAEjB,CAElD,EAAW,EAAY,QAAQ,EAAU,KAAK,CAKpD,MAAO,CACL,WACA,MANY,EAAU,KAAK,OAC3B,EAAS,QAAQ,EAAK,KAAU,CAAE,GAAG,GAAM,EAAK,IAAK,EAAM,EAAG,EAAE,CAAC,CACjE,KAKA,WAAY,EAAU,WACtB,aAAc,EAAU,aACzB,CASH,SAAgB,EACd,EACA,EACA,EACA,CACA,IAAM,EAAS,IAAa,GACtB,OAAO,GAAQ,SACV,EAAI,GAEN,GAGH,CAAE,aAAY,GAAG,GAAS,EAA8C,CAAE,aAAY,UAAS,CAAC,CAStG,OAPA,EAAM,cAAgB,CACf,GAAM,QAGX,EAAW,EAAK,EACf,CAAC,GAAM,IAAI,EAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAE1B,EAYT,SAAgB,EACd,EACA,CACA,IAAM,EAAS,EAAQ,UAAa,GAC9B,OAAO,GAAQ,SACV,EAAI,GAEN,GAGH,EAAA,EAAqB,OAAoB,IAAI,IAAc,CAC3D,CAAE,EAAU,GAAA,EAAsB,SAA2B,EAAE,CAAC,CAEtE,SAAS,EAAW,EAAkB,CACpC,GAAI,CAAC,GAAM,OACT,OAEF,IAAM,EAA6B,EAAE,CAErC,EAAK,QAAQ,GAAO,CAClB,IAAM,EAAM,EAAO,EAAI,CAEnB,EAAa,QAAQ,IAAI,EAAI,GAGjC,EAAe,KAAK,EAAI,CACxB,EAAa,QAAQ,IAAI,EAAI,GAC7B,CAEG,EAAe,QAGpB,EAAY,GAAM,CAAE,GAAG,EAAG,GAAG,EAAY,MAAgB,EAAgB,EAAW,CAAC,IAAI,EAAQ,WAAW,CAAE,CAAE,CAGlH,IAAM,EAAY,EAAqC,EAAS,CAC1D,EAAW,EAAY,QAAQ,EAAU,KAAK,CAC9C,EAAQ,EAAU,KAAK,OAC3B,EAAS,QAAmC,EAAK,KAAU,CAAE,GAAG,GAAM,EAAO,EAAK,EAAG,EAAM,EAAG,EAAE,CAAC,CACjG,KAEF,MAAO,CACL,yBAA0B,CAAC,CAAC,EAAU,YAAY,IAAI,aACtD,WACA,QACA,WAAY,EAAU,WACtB,aACD"}
1
+ {"version":3,"file":"ClDdEKYV2.chunk.js","names":[],"sources":["../../../../../node_modules/react-reverse-portal/dist/web/index.js","../../../../libs/shared/src/context/player-context/PlayerContext.tsx","../../../../libs/shared/src/hooks/UseBatchFetch.ts"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n// Internally, the portalNode must be for either HTML or SVG elements\nvar ELEMENT_TYPE_HTML = 'html';\nvar ELEMENT_TYPE_SVG = 'svg';\n// ReactDOM can handle several different namespaces, but they're not exported publicly\n// https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/DOMNamespaces.js#L8-L10\nvar SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nvar validateElementType = function (domElement, elementType) {\n if (elementType === ELEMENT_TYPE_HTML) {\n return domElement instanceof HTMLElement;\n }\n if (elementType === ELEMENT_TYPE_SVG) {\n return domElement instanceof SVGElement;\n }\n throw new Error(\"Unrecognized element type \\\"\" + elementType + \"\\\" for validateElementType.\");\n};\n// This is the internal implementation: the public entry points set elementType to an appropriate value\nvar createPortalNode = function (elementType, options) {\n var initialProps = {};\n var parent;\n var lastPlaceholder;\n var element;\n if (elementType === ELEMENT_TYPE_HTML) {\n element = document.createElement('div');\n }\n else if (elementType === ELEMENT_TYPE_SVG) {\n element = document.createElementNS(SVG_NAMESPACE, 'g');\n }\n else {\n throw new Error(\"Invalid element type \\\"\" + elementType + \"\\\" for createPortalNode: must be \\\"html\\\" or \\\"svg\\\".\");\n }\n if (options && typeof options === \"object\") {\n for (var _i = 0, _a = Object.entries(options.attributes); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n element.setAttribute(key, value);\n }\n }\n var portalNode = {\n element: element,\n elementType: elementType,\n setPortalProps: function (props) {\n initialProps = props;\n },\n getInitialPortalProps: function () {\n return initialProps;\n },\n mount: function (newParent, newPlaceholder) {\n if (newPlaceholder === lastPlaceholder) {\n // Already mounted - noop.\n return;\n }\n portalNode.unmount();\n // To support SVG and other non-html elements, the portalNode's elementType needs to match\n // the elementType it's being rendered into\n if (newParent !== parent) {\n if (!validateElementType(newParent, elementType)) {\n throw new Error(\"Invalid element type for portal: \\\"\" + elementType + \"\\\" portalNodes must be used with \" + elementType + \" elements, but OutPortal is within <\" + newParent.tagName + \">.\");\n }\n }\n newParent.replaceChild(portalNode.element, newPlaceholder);\n parent = newParent;\n lastPlaceholder = newPlaceholder;\n },\n unmount: function (expectedPlaceholder) {\n if (expectedPlaceholder && expectedPlaceholder !== lastPlaceholder) {\n // Skip unmounts for placeholders that aren't currently mounted\n // They will have been automatically unmounted already by a subsequent mount()\n return;\n }\n if (parent && lastPlaceholder) {\n parent.replaceChild(lastPlaceholder, portalNode.element);\n parent = undefined;\n lastPlaceholder = undefined;\n }\n }\n };\n return portalNode;\n};\nvar InPortal = /** @class */ (function (_super) {\n __extends(InPortal, _super);\n function InPortal(props) {\n var _this = _super.call(this, props) || this;\n _this.addPropsChannel = function () {\n Object.assign(_this.props.node, {\n setPortalProps: function (props) {\n // Rerender the child node here if/when the out portal props change\n _this.setState({ nodeProps: props });\n }\n });\n };\n _this.state = {\n nodeProps: _this.props.node.getInitialPortalProps(),\n };\n return _this;\n }\n InPortal.prototype.componentDidMount = function () {\n this.addPropsChannel();\n };\n InPortal.prototype.componentDidUpdate = function () {\n this.addPropsChannel();\n };\n InPortal.prototype.render = function () {\n var _this = this;\n var _a = this.props, children = _a.children, node = _a.node;\n return ReactDOM.createPortal(React.Children.map(children, function (child) {\n if (!React.isValidElement(child))\n return child;\n return React.cloneElement(child, _this.state.nodeProps);\n }), node.element);\n };\n return InPortal;\n}(React.PureComponent));\nvar OutPortal = /** @class */ (function (_super) {\n __extends(OutPortal, _super);\n function OutPortal(props) {\n var _this = _super.call(this, props) || this;\n _this.placeholderNode = React.createRef();\n _this.passPropsThroughPortal();\n return _this;\n }\n OutPortal.prototype.passPropsThroughPortal = function () {\n var propsForTarget = Object.assign({}, this.props, { node: undefined });\n this.props.node.setPortalProps(propsForTarget);\n };\n OutPortal.prototype.componentDidMount = function () {\n var node = this.props.node;\n this.currentPortalNode = node;\n var placeholder = this.placeholderNode.current;\n var parent = placeholder.parentNode;\n node.mount(parent, placeholder);\n this.passPropsThroughPortal();\n };\n OutPortal.prototype.componentDidUpdate = function () {\n // We re-mount on update, just in case we were unmounted (e.g. by\n // a second OutPortal, which has now been removed)\n var node = this.props.node;\n // If we're switching portal nodes, we need to clean up the current one first.\n if (this.currentPortalNode && node !== this.currentPortalNode) {\n this.currentPortalNode.unmount(this.placeholderNode.current);\n this.currentPortalNode.setPortalProps({});\n this.currentPortalNode = node;\n }\n var placeholder = this.placeholderNode.current;\n var parent = placeholder.parentNode;\n node.mount(parent, placeholder);\n this.passPropsThroughPortal();\n };\n OutPortal.prototype.componentWillUnmount = function () {\n var node = this.props.node;\n node.unmount(this.placeholderNode.current);\n node.setPortalProps({});\n };\n OutPortal.prototype.render = function () {\n // Render a placeholder to the DOM, so we can get a reference into\n // our location in the DOM, and swap it out for the portaled node.\n // A <div> placeholder works fine even for SVG.\n return React.createElement(\"div\", { ref: this.placeholderNode });\n };\n return OutPortal;\n}(React.PureComponent));\nvar createHtmlPortalNode = createPortalNode.bind(null, ELEMENT_TYPE_HTML);\nvar createSvgPortalNode = createPortalNode.bind(null, ELEMENT_TYPE_SVG);\nexport { createHtmlPortalNode, createSvgPortalNode, InPortal, OutPortal, };\n//# sourceMappingURL=index.js.map","import React from 'react';\nimport { createHtmlPortalNode, HtmlPortalNode } from 'react-reverse-portal';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { DefaultDisplayMode, PlayerInitializationData } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { PlayerContextState } from 'libs/shared/context/player-context/interfaces/PlayerContextState';\nimport { PlayerMode } from 'libs/shared/context/player-context/interfaces/PlayerMode';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { playerContextReducer } from 'libs/shared/context/player-context/reducer/PlayerContextReducer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nconst _THEATRE_MODE = 'play-page-theatre-mode';\n\nexport interface PlayerContextValues extends PlayerContextState {\n playerRef?: React.MutableRefObject<PlayerReference>;\n portalNode?: HtmlPortalNode;\n questionListPortalNode?: HtmlPortalNode;\n\n useInitialize?: (initializeData: PlayerInitializationData) => void;\n dispose?: () => void;\n setPlayerRef?: (player: any) => void;\n setPlayerMode?: (mode: PlayerMode) => void;\n setDefaultDisplayMode?: (displayMode: DefaultDisplayMode) => void;\n setStarted?: (started: boolean) => void;\n setPersist?: () => void;\n\n /**\n * Tells components if an instance of <PlayerContextProvider /> exists\n * above them in the tree. I.e. When this is used in curator.\n */\n hasProvider: boolean;\n}\n\nconst PlayerContext = React.createContext<PlayerContextValues>({ hasProvider: false });\n\nexport function usePlayerContext() {\n return React.useContext(PlayerContext);\n}\n\nfunction getInitialState(): PlayerContextState {\n const hasSavedTheatreMode = LocalStorageHelper.get(_THEATRE_MODE);\n\n return {\n defaultDisplayMode: hasSavedTheatreMode ? 'theatre' : 'normal'\n };\n}\n\nexport function PlayerContextProvider(props: React.PropsWithChildren) {\n const [ state, dispatch ] = React.useReducer(playerContextReducer, getInitialState());\n const { hasPreviewVideos } = useSettings(null);\n\n const playerRef = React.useRef<any>(null);\n\n const portalNode = React.useMemo(() => createHtmlPortalNode(\n { attributes: { class: 'cv-theatre-mode-video-container' } }\n ), []);\n\n const questionListPortalNode = React.useMemo(createHtmlPortalNode, []);\n\n function setPlayerRef(player: PlayerReference) {\n playerRef.current = player;\n }\n\n function useInitialize(initializeData: PlayerInitializationData) {\n const enabled = hasPreviewVideos || initializeData.mode !== 'hover';\n\n React.useEffect(() => {\n if (!enabled)\n return;\n\n /**\n * Cannot initialize a hover player if we already have a player elsewhere.\n */\n if (initializeData.mode === 'hover' && state.mode)\n return;\n\n /**\n * No hover to play on interactives. This feature is ComingSoon™️ - Sha\n */\n if (initializeData.mode === 'hover' && initializeData.objectTypeId === MasterType.Interactive)\n return;\n\n dispatch({\n type: 'initialize',\n data: initializeData\n });\n\n return disposeInternal;\n }, []);\n }\n\n function setPlayerMode(mode: PlayerMode) {\n dispatch({ type: 'mode', data: { mode } });\n }\n\n function setDefaultDisplayMode(defaultDisplayMode: DefaultDisplayMode) {\n LocalStorageHelper.set(_THEATRE_MODE, defaultDisplayMode === 'theatre');\n\n dispatch({ type: 'defaultDisplayMode', data: { defaultDisplayMode } });\n }\n\n function setStarted(): void {\n dispatch({ type: 'started' });\n }\n\n function disposeInternal(force: boolean = false): void {\n if (force) {\n playerRef.current = null;\n }\n\n dispatch({ type: 'dispose', data: { force: force } });\n }\n\n function setPersist(): void {\n dispatch({ type: 'persist' });\n }\n\n /**\n * If anything external calls dispose, we ignore the persist flag and force a disposal\n */\n function dispose(): void {\n disposeInternal(true);\n }\n\n const playerContextValues: PlayerContextValues = {\n ...state,\n playerRef,\n setPlayerRef,\n portalNode,\n questionListPortalNode,\n useInitialize,\n setPlayerMode,\n setDefaultDisplayMode,\n setStarted,\n dispose,\n setPersist,\n hasProvider: true\n };\n\n return (\n <PlayerContext.Provider value={playerContextValues}>\n {props.children}\n </PlayerContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst CHUNK_SIZE = 50;\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n itemsArr: T[];\n items: {[key: string]: T } | null;\n isFetching: boolean;\n hasCompleted: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const chunks = ArrayHelper.chunk<string>(itemIds, CHUNK_SIZE);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length ?\n itemsArr.reduce((acc, item) => ({ ...acc, [item.id]: item }), {}) :\n null;\n\n return {\n itemsArr,\n items,\n isFetching: responses.isFetching,\n hasCompleted: responses.hasCompleted\n };\n}\n\n/**\n * When you need the useBatchFetch() behavior, but your list of objects to hydrate\n * will grow, such as on a scrolling page. useGrowingBatchFetch() will use local state\n * to determine what we've already built a request for and what items are new\n * as to not re-fetch items - Sha\n */\nexport function useGrowingBatchFetch<TResponse, TObjects = string>(\n objs: TObjects[],\n getRequest: (items: TObjects[]) => Flight.Request,\n _getKey?: (obj: TObjects) => string\n) {\n const getKey = _getKey ?? ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const { fetchItems, ...data } = useGrowingBatchFetchFunc<TResponse, TObjects>({ getRequest, _getKey });\n\n React.useEffect(() => {\n if (!objs?.length)\n return;\n\n fetchItems(objs);\n }, [objs?.map(getKey).join(',')]);\n\n return data;\n}\n\ninterface UseGrowingBatchFetchFuncOptions<TObjects> {\n getRequest: (items: TObjects[]) => Flight.Request;\n _getKey?: (obj: TObjects) => string;\n}\n\n/**\n * When you need the useGrowingBatchFetch() behaviour, but need to trigger the\n * fetch manually and update the objects - Nish \n */\nexport function useGrowingBatchFetchFunc<TResponse, TObjects = string>(\n options: UseGrowingBatchFetchFuncOptions<TObjects>\n) {\n const getKey = options._getKey ?? ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const fetchedItems = React.useRef<Set<string>>(new Set<string>());\n const [ requests, setRequests ] = React.useState<Flight.Request[]>([]);\n\n function fetchItems(objs: TObjects[]) {\n if (!objs?.length)\n return;\n\n const unfetchedItems: TObjects[] = [];\n \n objs.forEach(obj => {\n const key = getKey(obj);\n\n if (fetchedItems.current.has(key))\n return;\n\n unfetchedItems.push(obj);\n fetchedItems.current.add(key);\n });\n \n if (!unfetchedItems.length)\n return;\n \n setRequests(r => ([ ...r, ...ArrayHelper.chunk<TObjects>(unfetchedItems, CHUNK_SIZE).map(options.getRequest) ]));\n }\n\n const responses = Flight.useBasicFetchAll<TResponse[]>(requests);\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length ?\n itemsArr.reduce<Record<string, TResponse>>((acc, item) => ({ ...acc, [getKey(item)]: item }), {}) :\n null;\n\n return {\n hasFirstRequestCompleted: !!responses.responses?.[0]?.hasCompleted,\n itemsArr,\n items,\n isFetching: responses.isFetching,\n fetchItems\n };\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{m as n}from"./app-cakVQEAF.js";t();var r=e();function i(e){let t=`d-flex align-items-center badge-list ${n.minHeight}`;return e.className&&(t+=` ${e.className}`),(0,r.jsx)(`div`,{className:t,children:e.children})}export{i as t};
2
- //# sourceMappingURL=CglHgfcX.chunk.js.map
1
+ import{P as e,st as t}from"./BSV_W0cK.chunk.js";import{m as n}from"./app-DLh9RnwX.js";t();var r=e();function i(e){let t=`d-flex align-items-center badge-list ${n.minHeight}`;return e.className&&(t+=` ${e.className}`),(0,r.jsx)(`div`,{className:t,children:e.children})}export{i as t};
2
+ //# sourceMappingURL=Cu6M80aY.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CglHgfcX.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/badges/BadgeListContainer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport styles from './badge.module.scss';\n\ninterface BadgeListContainerProps {\n className?: string;\n}\n\nexport function BadgeListContainer(props: React.PropsWithChildren<BadgeListContainerProps>): JSX.Element {\n let className = `d-flex align-items-center badge-list ${styles.minHeight}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n return (\n <div className={className}>\n {props.children}\n </div>\n );\n}\n"],"mappings":"oGAQA,SAAgB,EAAmB,EAAsE,CACvG,IAAI,EAAY,wCAAwC,EAAO,YAK/D,OAHI,EAAM,YACR,GAAa,IAAI,EAAM,cAGvB,EAAA,EAAA,KAAC,MAAD,CAAgB,qBACb,EAAM,SACH,CAAA"}
1
+ {"version":3,"file":"Cu6M80aY.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/badges/BadgeListContainer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport styles from './badge.module.scss';\n\ninterface BadgeListContainerProps {\n className?: string;\n}\n\nexport function BadgeListContainer(props: React.PropsWithChildren<BadgeListContainerProps>): JSX.Element {\n let className = `d-flex align-items-center badge-list ${styles.minHeight}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n return (\n <div className={className}>\n {props.children}\n </div>\n );\n}\n"],"mappings":"oGAQA,SAAgB,EAAmB,EAAsE,CACvG,IAAI,EAAY,wCAAwC,EAAO,YAK/D,OAHI,EAAM,YACR,GAAa,IAAI,EAAM,cAGvB,EAAA,EAAA,KAAC,MAAD,CAAgB,qBACb,EAAM,SACH,CAAA"}