@clickview/reports 0.89.0-rc.0 → 0.89.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/.vite/manifest.json +262 -262
  2. package/dist/bundles.json +1 -1
  3. package/dist/en.json +1 -1
  4. package/dist/scripts/{B-Ygge5X2.chunk.js → 9w-0PYPT2.chunk.js} +2 -2
  5. package/dist/scripts/{B-Ygge5X2.chunk.js.map → 9w-0PYPT2.chunk.js.map} +1 -1
  6. package/dist/scripts/{B2vNpjBe2.chunk.js → B9pFKWJ02.chunk.js} +2 -2
  7. package/dist/scripts/{B2vNpjBe2.chunk.js.map → B9pFKWJ02.chunk.js.map} +1 -1
  8. package/dist/scripts/{CgRzcaPA2.chunk.js → BNN5pscb2.chunk.js} +2 -2
  9. package/dist/scripts/{CgRzcaPA2.chunk.js.map → BNN5pscb2.chunk.js.map} +1 -1
  10. package/dist/scripts/{CaEKrEVr.chunk.js → BnSjmWJq.chunk.js} +2 -2
  11. package/dist/scripts/{CaEKrEVr.chunk.js.map → BnSjmWJq.chunk.js.map} +1 -1
  12. package/dist/scripts/{DiGtRGOr.chunk.js → BnzWs-z6.chunk.js} +2 -2
  13. package/dist/scripts/{DiGtRGOr.chunk.js.map → BnzWs-z6.chunk.js.map} +1 -1
  14. package/dist/scripts/{Cn2gjFFW2.chunk.js → C2ypnyI02.chunk.js} +2 -2
  15. package/dist/scripts/{Cn2gjFFW2.chunk.js.map → C2ypnyI02.chunk.js.map} +1 -1
  16. package/dist/scripts/{DJcJp7v8.chunk.js → CLk46QjF.chunk.js} +2 -2
  17. package/dist/scripts/{DJcJp7v8.chunk.js.map → CLk46QjF.chunk.js.map} +1 -1
  18. package/dist/scripts/{CetIvuh92.chunk.js → CO_jJj0j2.chunk.js} +2 -2
  19. package/dist/scripts/{CetIvuh92.chunk.js.map → CO_jJj0j2.chunk.js.map} +1 -1
  20. package/dist/scripts/{BDvsE_VK2.chunk.js → CSucqxC_2.chunk.js} +2 -2
  21. package/dist/scripts/{BDvsE_VK2.chunk.js.map → CSucqxC_2.chunk.js.map} +1 -1
  22. package/dist/scripts/{CBsl5x752.chunk.js → CTdvdzIT2.chunk.js} +2 -2
  23. package/dist/scripts/{CBsl5x752.chunk.js.map → CTdvdzIT2.chunk.js.map} +1 -1
  24. package/dist/scripts/CcjaxIhQ.chunk.js +1 -0
  25. package/dist/scripts/{B1oWolq8.chunk.js → Ci_TQUTp.chunk.js} +2 -2
  26. package/dist/scripts/{B1oWolq8.chunk.js.map → Ci_TQUTp.chunk.js.map} +1 -1
  27. package/dist/scripts/{DeOoaF9L.chunk.js → CzyQ8kBM.chunk.js} +2 -2
  28. package/dist/scripts/{DeOoaF9L.chunk.js.map → CzyQ8kBM.chunk.js.map} +1 -1
  29. package/dist/scripts/{DStv8HCO.chunk.js → D09t8fP0.chunk.js} +2 -2
  30. package/dist/scripts/{DStv8HCO.chunk.js.map → D09t8fP0.chunk.js.map} +1 -1
  31. package/dist/scripts/{DW99FddT2.chunk.js → DD6DxO8_2.chunk.js} +2 -2
  32. package/dist/scripts/{DW99FddT2.chunk.js.map → DD6DxO8_2.chunk.js.map} +1 -1
  33. package/dist/scripts/{D9h-ARYb2.chunk.js → DFrb5tDP2.chunk.js} +2 -2
  34. package/dist/scripts/{D9h-ARYb2.chunk.js.map → DFrb5tDP2.chunk.js.map} +1 -1
  35. package/dist/scripts/{akSezG_a2.chunk.js → DMfhvxDs2.chunk.js} +2 -2
  36. package/dist/scripts/{akSezG_a2.chunk.js.map → DMfhvxDs2.chunk.js.map} +1 -1
  37. package/dist/scripts/{BJikOj1X.chunk.js → DNRNNhy3.chunk.js} +2 -2
  38. package/dist/scripts/{BJikOj1X.chunk.js.map → DNRNNhy3.chunk.js.map} +1 -1
  39. package/dist/scripts/{Dv0X7vtO.chunk.js → DRThGgko.chunk.js} +2 -2
  40. package/dist/scripts/{Dv0X7vtO.chunk.js.map → DRThGgko.chunk.js.map} +1 -1
  41. package/dist/scripts/{CiL7Usrw.chunk.js → DTga4UBD.chunk.js} +2 -2
  42. package/dist/scripts/{CiL7Usrw.chunk.js.map → DTga4UBD.chunk.js.map} +1 -1
  43. package/dist/scripts/DfzH_ahn.chunk.js +1 -0
  44. package/dist/scripts/{CXKHpDxD.chunk.js → DjoLfFO8.chunk.js} +2 -2
  45. package/dist/scripts/{CXKHpDxD.chunk.js.map → DjoLfFO8.chunk.js.map} +1 -1
  46. package/dist/scripts/{Bp2lnEra.chunk.js → DjtI-11t.chunk.js} +2 -2
  47. package/dist/scripts/{Bp2lnEra.chunk.js.map → DjtI-11t.chunk.js.map} +1 -1
  48. package/dist/scripts/{Du8vq00B.chunk.js → DnC9RoGV.chunk.js} +3 -3
  49. package/dist/scripts/{Du8vq00B.chunk.js.map → DnC9RoGV.chunk.js.map} +1 -1
  50. package/dist/scripts/{BSEHFBul.chunk.js → Pvqa-Uuo.chunk.js} +2 -2
  51. package/dist/scripts/{BSEHFBul.chunk.js.map → Pvqa-Uuo.chunk.js.map} +1 -1
  52. package/dist/scripts/{2K4rAC5A2.chunk.js → XIOc3Va_2.chunk.js} +2 -2
  53. package/dist/scripts/{2K4rAC5A2.chunk.js.map → XIOc3Va_2.chunk.js.map} +1 -1
  54. package/dist/scripts/{DzJf6gXa.chunk.js → ZeBQ-OW-.chunk.js} +2 -2
  55. package/dist/scripts/{DzJf6gXa.chunk.js.map → ZeBQ-OW-.chunk.js.map} +1 -1
  56. package/dist/scripts/{app-BBppvgGe.js → app-DomX9RS2.js} +3 -3
  57. package/dist/scripts/{app-BBppvgGe.js.map → app-DomX9RS2.js.map} +1 -1
  58. package/dist/scripts/{D4W-E97s2.chunk.js → hLeAzv3u2.chunk.js} +2 -2
  59. package/dist/scripts/{D4W-E97s2.chunk.js.map → hLeAzv3u2.chunk.js.map} +1 -1
  60. package/dist/scripts/{kFxyYsah.chunk.js → kAYaBqYw.chunk.js} +2 -2
  61. package/dist/scripts/{kFxyYsah.chunk.js.map → kAYaBqYw.chunk.js.map} +1 -1
  62. package/dist/scripts/{C-W6YIv-.chunk.js → kzm6epUV.chunk.js} +2 -2
  63. package/dist/scripts/{C-W6YIv-.chunk.js.map → kzm6epUV.chunk.js.map} +1 -1
  64. package/dist/scripts/{DVmy2mN0.chunk.js → vJbbo87R.chunk.js} +2 -2
  65. package/dist/scripts/{DVmy2mN0.chunk.js.map → vJbbo87R.chunk.js.map} +1 -1
  66. package/dist/scripts/{CMdB_3nq2.chunk.js → wJ4aGP5K2.chunk.js} +2 -2
  67. package/dist/scripts/{CMdB_3nq2.chunk.js.map → wJ4aGP5K2.chunk.js.map} +1 -1
  68. package/package.json +1 -1
  69. package/dist/scripts/CkdTzI6P.chunk.js +0 -1
  70. package/dist/scripts/DKeKn7Hr.chunk.js +0 -1
@@ -1,2 +1,2 @@
1
- import{qn as e,st as t}from"./Db8SRTe2.chunk.js";import{n}from"./DZAzLV_d.chunk.js";import{t as r}from"./Cn2gjFFW2.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=B2vNpjBe2.chunk.js.map
1
+ import{qn as e,st as t}from"./Db8SRTe2.chunk.js";import{n}from"./DZAzLV_d.chunk.js";import{t as r}from"./C2ypnyI02.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=B9pFKWJ02.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"B2vNpjBe2.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":"B9pFKWJ02.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,en as t,st as n}from"./Db8SRTe2.chunk.js";import{v as r}from"./B4CGL9yn.chunk.js";import{m as i,n as a}from"./ClFr_vFf.chunk.js";import{t as o}from"./DQnWJjP7.chunk.js";import{r as s,t as c}from"./r5AG2PFt.chunk.js";import{t as l}from"./BpIQdoUJ.chunk.js";import{n as u,r as d,t as f}from"./Drne0tRP.chunk.js";import{t as p}from"./Clx0FzVV.chunk.js";import{r as m}from"./app-BBppvgGe.js";import{t as h}from"./B2vNpjBe2.chunk.js";import{i as g,n as _,o as v,r as y,s as b,t as x}from"./D9h-ARYb2.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=CgRzcaPA2.chunk.js.map
1
+ import{P as e,en as t,st as n}from"./Db8SRTe2.chunk.js";import{v as r}from"./B4CGL9yn.chunk.js";import{m as i,n as a}from"./ClFr_vFf.chunk.js";import{t as o}from"./DQnWJjP7.chunk.js";import{r as s,t as c}from"./r5AG2PFt.chunk.js";import{t as l}from"./BpIQdoUJ.chunk.js";import{n as u,r as d,t as f}from"./Drne0tRP.chunk.js";import{t as p}from"./Clx0FzVV.chunk.js";import{r as m}from"./app-DomX9RS2.js";import{t as h}from"./B9pFKWJ02.chunk.js";import{i as g,n as _,o as v,r as y,s as b,t as x}from"./DFrb5tDP2.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=BNN5pscb2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CgRzcaPA2.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":"BNN5pscb2.chunk.js","names":[],"sources":["../../src/shared/views/overview-cards/streams-bar-chart-card/empty-state/total-views-by-group-card-empty-state.module.scss","../../src/shared/views/overview-cards/streams-bar-chart-card/empty-state/StreamsBarChartCardEmptyState.tsx","../../src/shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView.tsx","../../src/shared/views/overview-cards/streams-chart-card/StreamsChartCardViewUtils.ts","../../src/shared/views/overview-cards/streams-chart-card/StreamsChartCardView.tsx"],"sourcesContent":[":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nconst namespace = 'shared.streamsBarChartCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport styles from './total-views-by-group-card-empty-state.module.scss';\n\nexport function StreamsBarChartCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.BagQuestionOrange}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { VerticalBarChart } from 'shared/components/vertical-bar-chart/VerticalBarChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { getCountByGroup } from 'shared/utils/BarChartByGroupUtils';\nimport { getLabelMapper } from 'shared/utils/UserUtils';\nimport { StreamsBarChartCardEmptyState } from 'shared/views/overview-cards/streams-bar-chart-card/empty-state/StreamsBarChartCardEmptyState';\n\nconst namespace = 'shared.streamsBarChartCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TotalViewsByGroupViewProps {\n type: StreamAggregationType;\n videoId?: string;\n appLink?: Core.AppLink;\n appLinkText?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StreamsBarChartCardView(props: TotalViewsByGroupViewProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const chartData = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, props.type, requestFilter) :\n VideoViewsV2Requests.aggregation(props.type, requestFilter));\n\n const grouped = getCountByGroup(\n chartData.data,\n getLabelMapper(props.type)\n );\n const total = grouped?.reduce((acc, group) => (acc + group.y), 0);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {grouped ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-1'><Text namespace={namespace} phrase='totalViews' options={{ views: total }} /></h2>\n {props.appLink && props.appLinkText &&\n <AppLink\n appLink={props.appLink}\n className='text-info'\n >\n {props.appLinkText}\n </AppLink>\n }\n </div>\n\n {grouped.length ?\n <Scrollbars className='position-relative'>\n <div className='position-absolute w-100 pe-2'>\n <VerticalBarChart data={grouped} labelAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }} />\n </div>\n </Scrollbars> :\n <StreamsBarChartCardEmptyState />\n }\n </> :\n <div className='partial-loading-background d-block w-50'>&nbsp;</div>\n }\n </div >\n );\n}\n","import { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { GroupedAnalyticsChartCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nimport { compareGroupNames } from 'shared/utils/GroupSortUtils';\nimport { getLabelMapper, mapUserTypeToChartColour } from 'shared/utils/UserUtils';\n\nconst GroupByThresholds = {\n MONTH: 35,\n YEAR: 365\n};\n\nconst DateFormats = {\n day: 'YYYY-MM-DD',\n month: 'YYYY-MM',\n year: 'YYYY'\n};\n\nconst DisplayFormats = {\n day: 'D MMM',\n month: 'MMM',\n year: 'YYYY'\n};\n\ntype GroupBy = 'day' | 'month' | 'year';\n\ninterface ChartData {\n categories: string[];\n data: Highcharts.SeriesLineOptions[];\n}\n\nfunction getGroupBy(requestFilter: AnalyticsRequestFilter): GroupBy {\n const range = DateHelper.diffBetween(requestFilter.end, requestFilter.start, 'day');\n\n if (range > GroupByThresholds.YEAR)\n return 'year';\n\n if (range > GroupByThresholds.MONTH)\n return 'month';\n\n return 'day';\n}\n\nfunction getFullDateRange(requestFilter: AnalyticsRequestFilter, groupBy: GroupBy): string[] {\n const range: string[] = [];\n\n const localStart = DateHelper.convertUTCToLocal(requestFilter.start);\n const localEnd = DateHelper.convertUTCToLocal(requestFilter.end);\n\n let currentDate = DateHelper.format(localStart, DateFormats[groupBy]);\n\n while (!DateHelper.isAfter(currentDate, localEnd, groupBy)) {\n range.push(currentDate);\n currentDate = DateHelper.format(DateHelper.add(currentDate, 1, groupBy), DateFormats[groupBy]);\n }\n\n return range;\n}\n\nexport function getChartData(\n events: GroupedAnalyticsChartCount[],\n requestFilter: AnalyticsRequestFilter,\n type: StreamAggregationType\n): ChartData {\n if (!events) return null;\n\n const groupBy = getGroupBy(requestFilter);\n const fullDateRange = getFullDateRange(requestFilter, groupBy);\n \n const grouped = new Map<string, Map<string, number>>();\n \n events.forEach(ev => {\n const eventDate = DateHelper.format(DateHelper.convertUTCToLocal(ev.dateStreamed), DateFormats[groupBy]);\n \n // Bucketing System user data as Anonymous\n const name = [ UserGroup.System, '255' ].includes(ev.name) ? null : ev.name;\n\n let group = grouped.get(name);\n\n if (!group)\n grouped.set(name, group = new Map<string, number>);\n\n const oldCount = group.get(eventDate) ?? 0;\n group.set(eventDate, oldCount + ev.count);\n });\n\n const roles = [...grouped.keys()] as UserGroup[];\n\n if (!roles.length) return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data: []\n };\n\n const labelMapper = getLabelMapper(type);\n\n return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data:\n roles.map(r => ({\n name: labelMapper(r),\n type: 'line' as const,\n data: fullDateRange.map(d => grouped.get(r).get(d) ?? 0),\n color: mapUserTypeToChartColour(r)\n })).sort((a, b) => compareGroupNames(a.name, b.name))\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsChartCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { LineChart } from 'shared/components/line-chart/LineChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\nimport { getChartData } from './StreamsChartCardViewUtils';\n\nconst namespace = 'reportsShared.streamsChartCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StreamsChartCardViewProps {\n type: StreamAggregationType;\n videoId?: string;\n className?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StreamsChartCardView(props: StreamsChartCardViewProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsChartCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregationChart(props.videoId, props.type, requestFilter) :\n VideoViewsV2Requests.aggregationChart(props.type, requestFilter));\n\n const chartData = getChartData(viewsByGroup.data, requestFilter, props.type);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3 position-relative'>\n {chartData ?\n <>\n <h2 className='position-absolute h6 mb-1'><Text namespace={namespace} phrase='videoViews' /></h2>\n <LineChart\n categories={chartData.categories}\n data={chartData.data}\n legendAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }}\n />\n </> :\n <div className='partial-loading-background w-25'>&nbsp;</div>\n }\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{P as e,Yt as t,st as n}from"./Db8SRTe2.chunk.js";import{C as r,g as i,m as a,n as o,t as s}from"./ClFr_vFf.chunk.js";import{t as c}from"./DQnWJjP7.chunk.js";import{n as l}from"./DZAzLV_d.chunk.js";import{t as u}from"./DrG_pptQ.chunk.js";import{t as d}from"./BpIQdoUJ.chunk.js";import{t as f}from"./CsgnMveW.chunk.js";import{t as p}from"./BVk5nv9U.chunk.js";import{t as m}from"./Czi36umi.chunk.js";import{t as h}from"./NRdjeteL.chunk.js";import{at as g,r as _,tt as v}from"./app-BBppvgGe.js";import{t as y}from"./C2smR6gI2.chunk.js";var b=`shared.verifiedEmailError`,x=class extends p{constructor(e,t,n){super(`VerifiedEmailRequiredError`),this.message=e,this.liteUrl=t,this.hasLite=n}get name(){return`VerifiedEmailRequiredError`}get dialogOptions(){let e=l.safeUrlConcat(this.liteUrl,`settings/account`);return{title:d.getPhrase(b,`heading`),text:this.hasLite?`${this.message} ${d.getPhrase(b,`visitSettings`,{href:e})}`:this.message,buttons:[{text:d.getPhrase(b,`close`),className:`btn btn-dark`,success:!0}]}}},S=()=>{let e=a(a(u.currentUser()).data?.isAuthenticated&&v.userProducts()),t=!e.hasCompleted;return{hasProduct:n=>t||e.hasError||!e.data?.length?!1:e.data.some(e=>e.id===n),products:e,isLoadingProducts:t}};function C(){let e=y(),{hasProduct:n,isLoadingProducts:r}=S(),i=a(g.config());function o(r,a,o){if(!r.responseJSON||r.responseJSON?.type!==`no-email`){e.error(a);return}t.throw(new x(o,i.data.liteUrl,n(f.Primary)))}return{handleGenerateReportError:o,loading:!i.hasCompleted||r}}function w(e){return{dateRange:{start:e.start,end:e.end},offsetInMin:Math.abs(new Date().getTimezoneOffset())}}var T={videoViewsReport(e,t){return{url:`{gateway}/v1/analytics/video-views/reports`,key:`video:views:report`,type:r.POST,data:{...w(e),version:t},invalidationKeys:`export`,normalize:!1}},loginsReport(e,t,n,i){return{url:`{gateway}/v1/analytics/logins/reports`,key:`logins:report`,data:w(e),type:r.POST,normalize:!1,success:t,error:n,always:i}}};n();var E=e(),D=`reportsShared.generateReport`,O=d.encloseNamespace(D);function k(e){switch(e){case j.Logins:return`loginsDescription`;case j.VideoViews:return`videosDescription`;default:return``}}function A(e){let t=c.convertUTCToLocal(e).toString();return c.format(t,`Do MMMM YYYY`)}var j=function(e){return e[e.Logins=0]=`Logins`,e[e.VideoViews=1]=`VideoViews`,e}({});function M(e){let t=_(`video-views`),n=_(`logins`),r=e.type===j.VideoViews?t:n,a=y(),{loading:c,handleGenerateReportError:l}=C(),u=i();function d(){switch(e.type){case j.Logins:return T.loginsReport(n);case j.VideoViews:return T.videoViewsReport(t,`v3`);default:return null}}function f(){u(d()).then(()=>a.success(O(`success`))).catch(e=>l(e,O(`error`),O(`noEmailError`))).finally(e.closePopup)}return(0,E.jsx)(s.Provider,{value:D,children:(0,E.jsxs)(m,{title:O(`title`),showLoadingSpinner:c,closePopup:e.closePopup,children:[(0,E.jsx)(`p`,{children:(0,E.jsx)(o,{phrase:k(e.type)})}),(0,E.jsx)(`p`,{children:(0,E.jsx)(o,{phrase:`dateRange`,options:{dateFrom:A(r.start),dateTo:A(r.end)}})}),(0,E.jsx)(`p`,{children:(0,E.jsx)(o,{phrase:`emailDescription`})}),(0,E.jsxs)(h,{children:[(0,E.jsx)(h.Cancel,{onClick:e.closePopup}),(0,E.jsx)(h.Submit,{variant:`dark`,onClick:f,text:O(`generateReport`)})]})]})})}export{M as n,A as r,j as t};
2
- //# sourceMappingURL=CaEKrEVr.chunk.js.map
1
+ import{P as e,Yt as t,st as n}from"./Db8SRTe2.chunk.js";import{C as r,g as i,m as a,n as o,t as s}from"./ClFr_vFf.chunk.js";import{t as c}from"./DQnWJjP7.chunk.js";import{n as l}from"./DZAzLV_d.chunk.js";import{t as u}from"./DrG_pptQ.chunk.js";import{t as d}from"./BpIQdoUJ.chunk.js";import{t as f}from"./CsgnMveW.chunk.js";import{t as p}from"./BVk5nv9U.chunk.js";import{t as m}from"./Czi36umi.chunk.js";import{t as h}from"./NRdjeteL.chunk.js";import{at as g,r as _,tt as v}from"./app-DomX9RS2.js";import{t as y}from"./C2smR6gI2.chunk.js";var b=`shared.verifiedEmailError`,x=class extends p{constructor(e,t,n){super(`VerifiedEmailRequiredError`),this.message=e,this.liteUrl=t,this.hasLite=n}get name(){return`VerifiedEmailRequiredError`}get dialogOptions(){let e=l.safeUrlConcat(this.liteUrl,`settings/account`);return{title:d.getPhrase(b,`heading`),text:this.hasLite?`${this.message} ${d.getPhrase(b,`visitSettings`,{href:e})}`:this.message,buttons:[{text:d.getPhrase(b,`close`),className:`btn btn-dark`,success:!0}]}}},S=()=>{let e=a(a(u.currentUser()).data?.isAuthenticated&&v.userProducts()),t=!e.hasCompleted;return{hasProduct:n=>t||e.hasError||!e.data?.length?!1:e.data.some(e=>e.id===n),products:e,isLoadingProducts:t}};function C(){let e=y(),{hasProduct:n,isLoadingProducts:r}=S(),i=a(g.config());function o(r,a,o){if(!r.responseJSON||r.responseJSON?.type!==`no-email`){e.error(a);return}t.throw(new x(o,i.data.liteUrl,n(f.Primary)))}return{handleGenerateReportError:o,loading:!i.hasCompleted||r}}function w(e){return{dateRange:{start:e.start,end:e.end},offsetInMin:Math.abs(new Date().getTimezoneOffset())}}var T={videoViewsReport(e,t){return{url:`{gateway}/v1/analytics/video-views/reports`,key:`video:views:report`,type:r.POST,data:{...w(e),version:t},invalidationKeys:`export`,normalize:!1}},loginsReport(e,t,n,i){return{url:`{gateway}/v1/analytics/logins/reports`,key:`logins:report`,data:w(e),type:r.POST,normalize:!1,success:t,error:n,always:i}}};n();var E=e(),D=`reportsShared.generateReport`,O=d.encloseNamespace(D);function k(e){switch(e){case j.Logins:return`loginsDescription`;case j.VideoViews:return`videosDescription`;default:return``}}function A(e){let t=c.convertUTCToLocal(e).toString();return c.format(t,`Do MMMM YYYY`)}var j=function(e){return e[e.Logins=0]=`Logins`,e[e.VideoViews=1]=`VideoViews`,e}({});function M(e){let t=_(`video-views`),n=_(`logins`),r=e.type===j.VideoViews?t:n,a=y(),{loading:c,handleGenerateReportError:l}=C(),u=i();function d(){switch(e.type){case j.Logins:return T.loginsReport(n);case j.VideoViews:return T.videoViewsReport(t,`v3`);default:return null}}function f(){u(d()).then(()=>a.success(O(`success`))).catch(e=>l(e,O(`error`),O(`noEmailError`))).finally(e.closePopup)}return(0,E.jsx)(s.Provider,{value:D,children:(0,E.jsxs)(m,{title:O(`title`),showLoadingSpinner:c,closePopup:e.closePopup,children:[(0,E.jsx)(`p`,{children:(0,E.jsx)(o,{phrase:k(e.type)})}),(0,E.jsx)(`p`,{children:(0,E.jsx)(o,{phrase:`dateRange`,options:{dateFrom:A(r.start),dateTo:A(r.end)}})}),(0,E.jsx)(`p`,{children:(0,E.jsx)(o,{phrase:`emailDescription`})}),(0,E.jsxs)(h,{children:[(0,E.jsx)(h.Cancel,{onClick:e.closePopup}),(0,E.jsx)(h.Submit,{variant:`dark`,onClick:f,text:O(`generateReport`)})]})]})})}export{M as n,A as r,j as t};
2
+ //# sourceMappingURL=BnSjmWJq.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CaEKrEVr.chunk.js","names":[],"sources":["../../../../libs/shared/src/errors/general/verified-email/VerifiedEmailRequiredError.ts","../../../../libs/shared/src/hooks/UseProducts.ts","../../../../libs/shared/src/hooks/useVerifiedEmailRequiredErrorHandler.ts","../../src/shared/flight-requests/ReportRequests.ts","../../src/shared/views/generate-report/GenerateReportView.tsx"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.verifiedEmailError';\n\nexport class VerifiedEmailRequiredError extends DialogError {\n public message: string;\n public liteUrl: string;\n public hasLite: boolean;\n\n constructor(message: string, liteUrl: string, hasLite: boolean) {\n super('VerifiedEmailRequiredError');\n\n this.message = message;\n this.liteUrl = liteUrl;\n this.hasLite = hasLite;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'VerifiedEmailRequiredError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n const href = UrlHelper.safeUrlConcat(this.liteUrl, 'settings/account');\n\n return {\n title: LanguageService.getPhrase(namespace, 'heading'),\n text: this.hasLite ?\n `${this.message} ${LanguageService.getPhrase(namespace, 'visitSettings', { href })}` :\n this.message,\n buttons: [{\n text: LanguageService.getPhrase(namespace, 'close'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}\n","import { Flight } from 'libs/common/flight';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Product } from 'libs/shared/interfaces';\n\nexport type HasProductFunc = (productId: ProductId) => boolean;\n\nexport interface UseProductsResponse {\n hasProduct: (product: ProductId) => boolean;\n products: Flight.Response<Product[]>;\n isLoadingProducts: boolean;\n}\n\nexport const useProducts = (): UseProductsResponse => {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const products = Flight.useBasicFetch<Product[]>(currentUser.data?.isAuthenticated && ProductRequests.userProducts());\n const isLoadingProducts = !products.hasCompleted;\n\n const hasProduct = (productId: ProductId) => {\n if (isLoadingProducts || products.hasError)\n return false;\n\n if (!products.data?.length)\n return false;\n\n return products.data.some(product => product.id === productId);\n };\n\n return {\n hasProduct,\n products,\n isLoadingProducts\n };\n};\n","import { Core } from 'libs/common/backbone/index';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { VerifiedEmailRequiredError } from 'libs/shared/errors/general/verified-email/VerifiedEmailRequiredError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config } from 'libs/shared/interfaces';\n\nexport function useVerifiedEmailRequiredErrorHandler() {\n const alerts = useAlerts();\n const { hasProduct, isLoadingProducts } = useProducts();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n function handleGenerateReportError(xhr: Xhr, message: string, noEmailError: string) {\n if (!xhr.responseJSON || xhr.responseJSON?.type !== 'no-email') {\n alerts.error(message);\n return;\n }\n\n Core.ErrorHelper.throw(\n new VerifiedEmailRequiredError(noEmailError, config.data.liteUrl, hasProduct(ProductId.Primary))\n );\n }\n\n return {\n handleGenerateReportError,\n loading: !config.hasCompleted || isLoadingProducts\n };\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\ntype ReportVersion = 'v2' | 'v3';\n\ninterface DateRange {\n start: string;\n end: string;\n}\n\ninterface ReportRequestPayload {\n dateRange: DateRange;\n offsetInMin: number;\n userIds?: number[];\n groupsIds?: number[];\n}\n\nfunction formatReportRequest(filterParams: AnalyticsRequestFilter): ReportRequestPayload {\n return {\n dateRange: {\n start: filterParams.start,\n end: filterParams.end\n },\n offsetInMin: Math.abs(new Date().getTimezoneOffset())\n };\n}\n\nexport const ReportRequests = {\n videoViewsReport(\n filterParams: AnalyticsRequestFilter,\n version: ReportVersion\n ): Flight.Request {\n return {\n url: '{gateway}/v1/analytics/video-views/reports',\n key: 'video:views:report',\n type: HttpVerbs.POST,\n data: { ...formatReportRequest(filterParams), version },\n invalidationKeys: 'export',\n normalize: false\n };\n },\n\n loginsReport(\n filterParams: AnalyticsRequestFilter,\n success?: () => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/analytics/logins/reports',\n key: 'logins:report',\n data: formatReportRequest(filterParams),\n type: HttpVerbs.POST,\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n","import React from 'react';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useVerifiedEmailRequiredErrorHandler } from 'libs/shared/hooks/useVerifiedEmailRequiredErrorHandler';\nimport { PropsWithPopupViewProps } from 'libs/shared/interfaces';\n\nimport { ReportRequests } from 'shared/flight-requests/ReportRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsShared.generateReport';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getLangPhrase(type: GenerateReportType): string {\n switch (type) {\n case GenerateReportType.Logins:\n return 'loginsDescription';\n\n case GenerateReportType.VideoViews:\n return 'videosDescription';\n\n default:\n return '';\n }\n}\n\nexport function getReportFriendlyDate(date: string): string {\n const localDate = DateHelper.convertUTCToLocal(date).toString();\n return DateHelper.format(localDate, 'Do MMMM YYYY');\n}\n\nexport enum GenerateReportType {\n Logins,\n VideoViews\n}\n\ninterface GenerateReportViewProps {\n type: GenerateReportType;\n}\n\nexport function GenerateReportView(props: PropsWithPopupViewProps<GenerateReportViewProps>): JSX.Element {\n const videoViewsFilter = useGetRequestFilter('video-views');\n const loginsFilter = useGetRequestFilter('logins');\n const filterQueryParams = props.type === GenerateReportType.VideoViews ? videoViewsFilter : loginsFilter;\n const alerts = useAlerts();\n const { loading, handleGenerateReportError } = useVerifiedEmailRequiredErrorHandler();\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n function getRequest(): Flight.Request {\n switch (props.type) {\n case GenerateReportType.Logins:\n return ReportRequests.loginsReport(loginsFilter);\n\n case GenerateReportType.VideoViews:\n return ReportRequests.videoViewsReport(videoViewsFilter, 'v3');\n\n default:\n return null;\n }\n }\n\n function onClick() {\n fetchAsync(getRequest())\n .then(() => alerts.success(getPhrase('success')))\n .catch((xhr: Xhr) => handleGenerateReportError(xhr, getPhrase('error'), getPhrase('noEmailError')))\n .finally(props.closePopup);\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <Popup\n title={getPhrase('title')}\n showLoadingSpinner={loading}\n closePopup={props.closePopup}\n >\n <p>\n <Text phrase={getLangPhrase(props.type)} />\n </p>\n <p>\n <Text phrase='dateRange' options={({\n dateFrom: getReportFriendlyDate(filterQueryParams.start),\n dateTo: getReportFriendlyDate(filterQueryParams.end)\n })} />\n </p>\n <p>\n <Text phrase='emailDescription' />\n </p>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n variant='dark'\n onClick={onClick}\n text={getPhrase('generateReport')}\n />\n </PopupButtons>\n </Popup>\n </LanguageNamespaceContext.Provider>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BnSjmWJq.chunk.js","names":[],"sources":["../../../../libs/shared/src/errors/general/verified-email/VerifiedEmailRequiredError.ts","../../../../libs/shared/src/hooks/UseProducts.ts","../../../../libs/shared/src/hooks/useVerifiedEmailRequiredErrorHandler.ts","../../src/shared/flight-requests/ReportRequests.ts","../../src/shared/views/generate-report/GenerateReportView.tsx"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.verifiedEmailError';\n\nexport class VerifiedEmailRequiredError extends DialogError {\n public message: string;\n public liteUrl: string;\n public hasLite: boolean;\n\n constructor(message: string, liteUrl: string, hasLite: boolean) {\n super('VerifiedEmailRequiredError');\n\n this.message = message;\n this.liteUrl = liteUrl;\n this.hasLite = hasLite;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'VerifiedEmailRequiredError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n const href = UrlHelper.safeUrlConcat(this.liteUrl, 'settings/account');\n\n return {\n title: LanguageService.getPhrase(namespace, 'heading'),\n text: this.hasLite ?\n `${this.message} ${LanguageService.getPhrase(namespace, 'visitSettings', { href })}` :\n this.message,\n buttons: [{\n text: LanguageService.getPhrase(namespace, 'close'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}\n","import { Flight } from 'libs/common/flight';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Product } from 'libs/shared/interfaces';\n\nexport type HasProductFunc = (productId: ProductId) => boolean;\n\nexport interface UseProductsResponse {\n hasProduct: (product: ProductId) => boolean;\n products: Flight.Response<Product[]>;\n isLoadingProducts: boolean;\n}\n\nexport const useProducts = (): UseProductsResponse => {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const products = Flight.useBasicFetch<Product[]>(currentUser.data?.isAuthenticated && ProductRequests.userProducts());\n const isLoadingProducts = !products.hasCompleted;\n\n const hasProduct = (productId: ProductId) => {\n if (isLoadingProducts || products.hasError)\n return false;\n\n if (!products.data?.length)\n return false;\n\n return products.data.some(product => product.id === productId);\n };\n\n return {\n hasProduct,\n products,\n isLoadingProducts\n };\n};\n","import { Core } from 'libs/common/backbone/index';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { VerifiedEmailRequiredError } from 'libs/shared/errors/general/verified-email/VerifiedEmailRequiredError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config } from 'libs/shared/interfaces';\n\nexport function useVerifiedEmailRequiredErrorHandler() {\n const alerts = useAlerts();\n const { hasProduct, isLoadingProducts } = useProducts();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n function handleGenerateReportError(xhr: Xhr, message: string, noEmailError: string) {\n if (!xhr.responseJSON || xhr.responseJSON?.type !== 'no-email') {\n alerts.error(message);\n return;\n }\n\n Core.ErrorHelper.throw(\n new VerifiedEmailRequiredError(noEmailError, config.data.liteUrl, hasProduct(ProductId.Primary))\n );\n }\n\n return {\n handleGenerateReportError,\n loading: !config.hasCompleted || isLoadingProducts\n };\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\ntype ReportVersion = 'v2' | 'v3';\n\ninterface DateRange {\n start: string;\n end: string;\n}\n\ninterface ReportRequestPayload {\n dateRange: DateRange;\n offsetInMin: number;\n userIds?: number[];\n groupsIds?: number[];\n}\n\nfunction formatReportRequest(filterParams: AnalyticsRequestFilter): ReportRequestPayload {\n return {\n dateRange: {\n start: filterParams.start,\n end: filterParams.end\n },\n offsetInMin: Math.abs(new Date().getTimezoneOffset())\n };\n}\n\nexport const ReportRequests = {\n videoViewsReport(\n filterParams: AnalyticsRequestFilter,\n version: ReportVersion\n ): Flight.Request {\n return {\n url: '{gateway}/v1/analytics/video-views/reports',\n key: 'video:views:report',\n type: HttpVerbs.POST,\n data: { ...formatReportRequest(filterParams), version },\n invalidationKeys: 'export',\n normalize: false\n };\n },\n\n loginsReport(\n filterParams: AnalyticsRequestFilter,\n success?: () => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/analytics/logins/reports',\n key: 'logins:report',\n data: formatReportRequest(filterParams),\n type: HttpVerbs.POST,\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n","import React from 'react';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useVerifiedEmailRequiredErrorHandler } from 'libs/shared/hooks/useVerifiedEmailRequiredErrorHandler';\nimport { PropsWithPopupViewProps } from 'libs/shared/interfaces';\n\nimport { ReportRequests } from 'shared/flight-requests/ReportRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsShared.generateReport';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getLangPhrase(type: GenerateReportType): string {\n switch (type) {\n case GenerateReportType.Logins:\n return 'loginsDescription';\n\n case GenerateReportType.VideoViews:\n return 'videosDescription';\n\n default:\n return '';\n }\n}\n\nexport function getReportFriendlyDate(date: string): string {\n const localDate = DateHelper.convertUTCToLocal(date).toString();\n return DateHelper.format(localDate, 'Do MMMM YYYY');\n}\n\nexport enum GenerateReportType {\n Logins,\n VideoViews\n}\n\ninterface GenerateReportViewProps {\n type: GenerateReportType;\n}\n\nexport function GenerateReportView(props: PropsWithPopupViewProps<GenerateReportViewProps>): JSX.Element {\n const videoViewsFilter = useGetRequestFilter('video-views');\n const loginsFilter = useGetRequestFilter('logins');\n const filterQueryParams = props.type === GenerateReportType.VideoViews ? videoViewsFilter : loginsFilter;\n const alerts = useAlerts();\n const { loading, handleGenerateReportError } = useVerifiedEmailRequiredErrorHandler();\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n function getRequest(): Flight.Request {\n switch (props.type) {\n case GenerateReportType.Logins:\n return ReportRequests.loginsReport(loginsFilter);\n\n case GenerateReportType.VideoViews:\n return ReportRequests.videoViewsReport(videoViewsFilter, 'v3');\n\n default:\n return null;\n }\n }\n\n function onClick() {\n fetchAsync(getRequest())\n .then(() => alerts.success(getPhrase('success')))\n .catch((xhr: Xhr) => handleGenerateReportError(xhr, getPhrase('error'), getPhrase('noEmailError')))\n .finally(props.closePopup);\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <Popup\n title={getPhrase('title')}\n showLoadingSpinner={loading}\n closePopup={props.closePopup}\n >\n <p>\n <Text phrase={getLangPhrase(props.type)} />\n </p>\n <p>\n <Text phrase='dateRange' options={({\n dateFrom: getReportFriendlyDate(filterQueryParams.start),\n dateTo: getReportFriendlyDate(filterQueryParams.end)\n })} />\n </p>\n <p>\n <Text phrase='emailDescription' />\n </p>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n variant='dark'\n onClick={onClick}\n text={getPhrase('generateReport')}\n />\n </PopupButtons>\n </Popup>\n </LanguageNamespaceContext.Provider>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{P as e,en as t,st as n}from"./Db8SRTe2.chunk.js";import{m as r,n as i}from"./ClFr_vFf.chunk.js";import{r as a}from"./r5AG2PFt.chunk.js";import{t as o}from"./BpIQdoUJ.chunk.js";import{n as s,r as c,t as l}from"./Drne0tRP.chunk.js";import{t as u}from"./Clx0FzVV.chunk.js";import{r as d}from"./app-BBppvgGe.js";import{t as f}from"./B2vNpjBe2.chunk.js";import{a as p,d as m,i as h,l as g,o as _,u as v}from"./D9h-ARYb2.chunk.js";n();var y=e(),b={chart:{spacing:[20,0,4,0]},title:{text:null},tooltip:{enabled:!1},credits:{enabled:!1},yAxis:{gridLineWidth:0,labels:{enabled:!1},title:{text:null},endOnTick:!0,tickAmount:10},xAxis:{lineWidth:0,labels:{style:{...g,textOverflow:`none`,wordBreak:`break-word`}}},legend:{enabled:!1},plotOptions:{column:{borderRadius:4,dataLabels:{enabled:!0,style:g,inside:!1,crop:!1,overflow:`allow`},groupPadding:0,minPointLength:8}},series:[{type:`column`,label:{enabled:!1},states:{hover:{enabled:!1}}}]},x=(e,t,n)=>({...b,xAxis:{...b.xAxis,categories:e,labels:{...b.xAxis.labels,useHTML:!0,formatter:function(){return m(this.value,n)}}},series:[{type:`column`,label:{enabled:!1},states:{hover:{enabled:!1}},data:t}]});function S(e){return(0,y.jsx)(v,{options:x(e.data.map(e=>e.name),e.data,e.labelAnnotations),annotations:e.labelAnnotations,className:`h-100`,containerProps:{className:`h-100`}})}var C={image:`_image_1a110_1`},w=o.encloseNamespace(`reportsShared.totalViewsByRoleCardEmptyState`);function T(){return(0,y.jsxs)(u,{className:`flex-grow-1 justify-content-center`,children:[(0,y.jsx)(u.Image,{src:l.EmptyStates.Shared.Ticket,className:C.image}),(0,y.jsx)(u.Heading,{className:`h6`,children:w(`heading`)}),(0,y.jsx)(u.Info,{className:`w-100`,children:w(`description`)})]})}var E=`reportsShared.videoViewsByRoleCard`,D=o.encloseNamespace(E);function O(e){let n=d(`video-views`),o=r(e.videoId?f.videoAggregation(e.videoId,`user_type`,n):f.aggregation(`user_type`,n));function l(e){return e?e.reduce((e,t)=>{let n=[a.System,`255`].includes(t.name)?null:t.name,r=e.find(e=>e.name===n);return r?r.count+=t.count:e.push({name:n,count:t.count}),e},[]).map(e=>({name:p(e.name),y:e.count,color:h(e.name)})).sort((e,t)=>_(e.name,t.name)):null}let u=l(o.data);return(0,y.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white rounded p-3`,children:u?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`h2`,{className:`h6 mb-3`,children:(0,y.jsx)(i,{namespace:E,phrase:`videoViews`})}),u.length?(0,y.jsx)(`div`,{className:`flex-grow-1 position-relative`,children:(0,y.jsx)(`div`,{className:`position-absolute w-100 h-100`,children:(0,y.jsx)(S,{data:u,labelAnnotations:{"Classroom views":{onClick:()=>{t.trigger({application:c.DEFAULT,action:s.Default.CLASSROOM_VIEWS_POPUP})},tooltip:D(`classroomViewsSettings`)}}})})}):(0,y.jsx)(T,{})]}):(0,y.jsx)(`div`,{className:`partial-loading-background w-25`,children:`\xA0`})})}export{S as n,O as t};
2
- //# sourceMappingURL=DiGtRGOr.chunk.js.map
1
+ import{P as e,en as t,st as n}from"./Db8SRTe2.chunk.js";import{m as r,n as i}from"./ClFr_vFf.chunk.js";import{r as a}from"./r5AG2PFt.chunk.js";import{t as o}from"./BpIQdoUJ.chunk.js";import{n as s,r as c,t as l}from"./Drne0tRP.chunk.js";import{t as u}from"./Clx0FzVV.chunk.js";import{r as d}from"./app-DomX9RS2.js";import{t as f}from"./B9pFKWJ02.chunk.js";import{a as p,d as m,i as h,l as g,o as _,u as v}from"./DFrb5tDP2.chunk.js";n();var y=e(),b={chart:{spacing:[20,0,4,0]},title:{text:null},tooltip:{enabled:!1},credits:{enabled:!1},yAxis:{gridLineWidth:0,labels:{enabled:!1},title:{text:null},endOnTick:!0,tickAmount:10},xAxis:{lineWidth:0,labels:{style:{...g,textOverflow:`none`,wordBreak:`break-word`}}},legend:{enabled:!1},plotOptions:{column:{borderRadius:4,dataLabels:{enabled:!0,style:g,inside:!1,crop:!1,overflow:`allow`},groupPadding:0,minPointLength:8}},series:[{type:`column`,label:{enabled:!1},states:{hover:{enabled:!1}}}]},x=(e,t,n)=>({...b,xAxis:{...b.xAxis,categories:e,labels:{...b.xAxis.labels,useHTML:!0,formatter:function(){return m(this.value,n)}}},series:[{type:`column`,label:{enabled:!1},states:{hover:{enabled:!1}},data:t}]});function S(e){return(0,y.jsx)(v,{options:x(e.data.map(e=>e.name),e.data,e.labelAnnotations),annotations:e.labelAnnotations,className:`h-100`,containerProps:{className:`h-100`}})}var C={image:`_image_1a110_1`},w=o.encloseNamespace(`reportsShared.totalViewsByRoleCardEmptyState`);function T(){return(0,y.jsxs)(u,{className:`flex-grow-1 justify-content-center`,children:[(0,y.jsx)(u.Image,{src:l.EmptyStates.Shared.Ticket,className:C.image}),(0,y.jsx)(u.Heading,{className:`h6`,children:w(`heading`)}),(0,y.jsx)(u.Info,{className:`w-100`,children:w(`description`)})]})}var E=`reportsShared.videoViewsByRoleCard`,D=o.encloseNamespace(E);function O(e){let n=d(`video-views`),o=r(e.videoId?f.videoAggregation(e.videoId,`user_type`,n):f.aggregation(`user_type`,n));function l(e){return e?e.reduce((e,t)=>{let n=[a.System,`255`].includes(t.name)?null:t.name,r=e.find(e=>e.name===n);return r?r.count+=t.count:e.push({name:n,count:t.count}),e},[]).map(e=>({name:p(e.name),y:e.count,color:h(e.name)})).sort((e,t)=>_(e.name,t.name)):null}let u=l(o.data);return(0,y.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white rounded p-3`,children:u?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`h2`,{className:`h6 mb-3`,children:(0,y.jsx)(i,{namespace:E,phrase:`videoViews`})}),u.length?(0,y.jsx)(`div`,{className:`flex-grow-1 position-relative`,children:(0,y.jsx)(`div`,{className:`position-absolute w-100 h-100`,children:(0,y.jsx)(S,{data:u,labelAnnotations:{"Classroom views":{onClick:()=>{t.trigger({application:c.DEFAULT,action:s.Default.CLASSROOM_VIEWS_POPUP})},tooltip:D(`classroomViewsSettings`)}}})})}):(0,y.jsx)(T,{})]}):(0,y.jsx)(`div`,{className:`partial-loading-background w-25`,children:`\xA0`})})}export{S as n,O as t};
2
+ //# sourceMappingURL=BnzWs-z6.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DiGtRGOr.chunk.js","names":[],"sources":["../../src/shared/components/column-chart/ColumnChart.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/total-views-by-role-card-empty-state.module.scss","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView.tsx"],"sourcesContent":["import React from 'react';\nimport Highcharts from 'highcharts';\n\nimport { AnnotatedChart, formatAnnotatedLabel, LabelAnnotations } from 'shared/components/annotated-chart/AnnotatedChart';\nimport { CHART_FONT_STYLES } from 'shared/constants/ChartStyles';\n\nconst STATIC_COLUMN_CHART_OPTIONS: Highcharts.Options = {\n chart: {\n spacing: [ 20, 0, 4, 0 ]\n },\n title: {\n text: null\n },\n tooltip: {\n enabled: false\n },\n credits: {\n enabled: false\n },\n yAxis: {\n gridLineWidth: 0,\n labels: {\n enabled: false\n },\n title: {\n text: null\n },\n endOnTick: true,\n tickAmount: 10\n },\n xAxis: {\n lineWidth: 0,\n labels: {\n style: {\n ...CHART_FONT_STYLES,\n textOverflow: 'none',\n wordBreak: 'break-word'\n }\n }\n },\n legend: {\n enabled: false\n },\n plotOptions: {\n column: {\n borderRadius: 4,\n dataLabels: {\n enabled: true,\n style: CHART_FONT_STYLES,\n inside: false,\n crop: false,\n overflow: 'allow'\n },\n groupPadding: 0,\n minPointLength: 8\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n }\n }]\n};\n\nconst getChartOptions = (\n categories: string[],\n data: Highcharts.PointOptionsObject[],\n labelAnnotations?: LabelAnnotations\n): Highcharts.Options => ({\n ...STATIC_COLUMN_CHART_OPTIONS,\n xAxis: {\n ...STATIC_COLUMN_CHART_OPTIONS.xAxis,\n categories,\n labels: {\n ...(STATIC_COLUMN_CHART_OPTIONS.xAxis as Highcharts.XAxisOptions).labels,\n useHTML: true,\n // Must be a function and not an arrow function to access `this.value`\n formatter: function () {\n return formatAnnotatedLabel(this.value as string, labelAnnotations);\n }\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n },\n data\n }]\n});\n\ninterface ColumnChartProps {\n data: Highcharts.PointOptionsObject[];\n labelAnnotations?: LabelAnnotations;\n}\n\nexport function ColumnChart(props: ColumnChartProps) {\n const chartOptions = getChartOptions(props.data.map(data => data.name as string), props.data, props.labelAnnotations);\n\n return (\n <AnnotatedChart\n options={chartOptions}\n annotations={props.labelAnnotations}\n className='h-100'\n containerProps={{ className: 'h-100' }}\n />\n );\n}\n",":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './total-views-by-role-card-empty-state.module.scss';\n\nconst namespace = 'reportsShared.totalViewsByRoleCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TotalViewsByRoleCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.Ticket}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { 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 { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport { ColumnChart } from 'shared/components/column-chart/ColumnChart';\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 { compareGroupNames } from 'shared/utils/GroupSortUtils';\nimport { mapUserTypeToChartColour, mapUserTypeToChartLabel } from 'shared/utils/UserUtils';\nimport { TotalViewsByRoleCardEmptyState } from 'shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState';\n\nconst namespace = 'reportsShared.videoViewsByRoleCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoViewsByRoleCardProps {\n videoId?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoViewsByRoleCardView(props: VideoViewsByRoleCardProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, 'user_type', requestFilter) :\n VideoViewsV2Requests.aggregation('user_type', requestFilter));\n\n function getChartData(views: GroupedAnalyticsCount[]): Highcharts.PointOptionsObject[] {\n if (!views) return null;\n\n // Bucketing System user data as Anonymous\n const mergedViews = views.reduce((acc, val) => {\n const key = [ UserGroup.System, '255' ].includes(val.name) ? null : val.name;\n const existing = acc.find(v => v.name === key);\n\n if (existing)\n existing.count += val.count;\n else\n acc.push({ name: key, count: val.count });\n\n return acc;\n }, []);\n\n return mergedViews.map(group => ({\n name: mapUserTypeToChartLabel(group.name),\n y: group.count,\n color: mapUserTypeToChartColour(group.name as UserGroup)\n })).sort((a, b) => compareGroupNames(a.name, b.name));\n }\n\n const chartData = getChartData(viewsByGroup.data);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3'>\n {chartData ?\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='videoViews' /></h2>\n\n {chartData.length ?\n <div className='flex-grow-1 position-relative'>\n <div className='position-absolute w-100 h-100'>\n <ColumnChart data={chartData} 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 </div> :\n <TotalViewsByRoleCardEmptyState />\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":"BnzWs-z6.chunk.js","names":[],"sources":["../../src/shared/components/column-chart/ColumnChart.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/total-views-by-role-card-empty-state.module.scss","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView.tsx"],"sourcesContent":["import React from 'react';\nimport Highcharts from 'highcharts';\n\nimport { AnnotatedChart, formatAnnotatedLabel, LabelAnnotations } from 'shared/components/annotated-chart/AnnotatedChart';\nimport { CHART_FONT_STYLES } from 'shared/constants/ChartStyles';\n\nconst STATIC_COLUMN_CHART_OPTIONS: Highcharts.Options = {\n chart: {\n spacing: [ 20, 0, 4, 0 ]\n },\n title: {\n text: null\n },\n tooltip: {\n enabled: false\n },\n credits: {\n enabled: false\n },\n yAxis: {\n gridLineWidth: 0,\n labels: {\n enabled: false\n },\n title: {\n text: null\n },\n endOnTick: true,\n tickAmount: 10\n },\n xAxis: {\n lineWidth: 0,\n labels: {\n style: {\n ...CHART_FONT_STYLES,\n textOverflow: 'none',\n wordBreak: 'break-word'\n }\n }\n },\n legend: {\n enabled: false\n },\n plotOptions: {\n column: {\n borderRadius: 4,\n dataLabels: {\n enabled: true,\n style: CHART_FONT_STYLES,\n inside: false,\n crop: false,\n overflow: 'allow'\n },\n groupPadding: 0,\n minPointLength: 8\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n }\n }]\n};\n\nconst getChartOptions = (\n categories: string[],\n data: Highcharts.PointOptionsObject[],\n labelAnnotations?: LabelAnnotations\n): Highcharts.Options => ({\n ...STATIC_COLUMN_CHART_OPTIONS,\n xAxis: {\n ...STATIC_COLUMN_CHART_OPTIONS.xAxis,\n categories,\n labels: {\n ...(STATIC_COLUMN_CHART_OPTIONS.xAxis as Highcharts.XAxisOptions).labels,\n useHTML: true,\n // Must be a function and not an arrow function to access `this.value`\n formatter: function () {\n return formatAnnotatedLabel(this.value as string, labelAnnotations);\n }\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n },\n data\n }]\n});\n\ninterface ColumnChartProps {\n data: Highcharts.PointOptionsObject[];\n labelAnnotations?: LabelAnnotations;\n}\n\nexport function ColumnChart(props: ColumnChartProps) {\n const chartOptions = getChartOptions(props.data.map(data => data.name as string), props.data, props.labelAnnotations);\n\n return (\n <AnnotatedChart\n options={chartOptions}\n annotations={props.labelAnnotations}\n className='h-100'\n containerProps={{ className: 'h-100' }}\n />\n );\n}\n",":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './total-views-by-role-card-empty-state.module.scss';\n\nconst namespace = 'reportsShared.totalViewsByRoleCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TotalViewsByRoleCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.Ticket}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { 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 { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport { ColumnChart } from 'shared/components/column-chart/ColumnChart';\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 { compareGroupNames } from 'shared/utils/GroupSortUtils';\nimport { mapUserTypeToChartColour, mapUserTypeToChartLabel } from 'shared/utils/UserUtils';\nimport { TotalViewsByRoleCardEmptyState } from 'shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState';\n\nconst namespace = 'reportsShared.videoViewsByRoleCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoViewsByRoleCardProps {\n videoId?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoViewsByRoleCardView(props: VideoViewsByRoleCardProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, 'user_type', requestFilter) :\n VideoViewsV2Requests.aggregation('user_type', requestFilter));\n\n function getChartData(views: GroupedAnalyticsCount[]): Highcharts.PointOptionsObject[] {\n if (!views) return null;\n\n // Bucketing System user data as Anonymous\n const mergedViews = views.reduce((acc, val) => {\n const key = [ UserGroup.System, '255' ].includes(val.name) ? null : val.name;\n const existing = acc.find(v => v.name === key);\n\n if (existing)\n existing.count += val.count;\n else\n acc.push({ name: key, count: val.count });\n\n return acc;\n }, []);\n\n return mergedViews.map(group => ({\n name: mapUserTypeToChartLabel(group.name),\n y: group.count,\n color: mapUserTypeToChartColour(group.name as UserGroup)\n })).sort((a, b) => compareGroupNames(a.name, b.name));\n }\n\n const chartData = getChartData(viewsByGroup.data);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3'>\n {chartData ?\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='videoViews' /></h2>\n\n {chartData.length ?\n <div className='flex-grow-1 position-relative'>\n <div className='position-absolute w-100 h-100'>\n <ColumnChart data={chartData} 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 </div> :\n <TotalViewsByRoleCardEmptyState />\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{qn as e,st as t}from"./Db8SRTe2.chunk.js";import{n}from"./DtVx2WiO.chunk.js";import{M as r}from"./app-BBppvgGe.js";var i=e(t());function a(e){let[,t]=n(r.HEADER_TITLE);(0,i.useEffect)(()=>(t(e),()=>{t(null)}),[e])}function o(e,t,n){if(!t)return e;let r=`${e}:${t.start}:${t.end}`,i=Array.isArray(t.userId)?t.userId.sort().join(`:`):t.userId,a=Array.isArray(t.groupId)?t.groupId.sort().join(`:`):t.groupId,o=Array.isArray(t.customerId)?t.customerId.sort().join(`:`):t.customerId;return i&&(r+=`:${i}`),a&&(r+=`:${a}`),o&&(r+=`:${o}`),t.classroomSize&&(r+=`:cs${t.classroomSize}`),t.schoolStartTime&&(r+=`:ss${t.schoolStartTime}`),t.schoolEndTime&&(r+=`:se${t.schoolEndTime}`),t.timezone&&(r+=`:tz${t.timezone}`),n&&(r+=`:${n}`),r}export{a as n,o as t};
2
- //# sourceMappingURL=Cn2gjFFW2.chunk.js.map
1
+ import{qn as e,st as t}from"./Db8SRTe2.chunk.js";import{n}from"./DtVx2WiO.chunk.js";import{M as r}from"./app-DomX9RS2.js";var i=e(t());function a(e){let[,t]=n(r.HEADER_TITLE);(0,i.useEffect)(()=>(t(e),()=>{t(null)}),[e])}function o(e,t,n){if(!t)return e;let r=`${e}:${t.start}:${t.end}`,i=Array.isArray(t.userId)?t.userId.sort().join(`:`):t.userId,a=Array.isArray(t.groupId)?t.groupId.sort().join(`:`):t.groupId,o=Array.isArray(t.customerId)?t.customerId.sort().join(`:`):t.customerId;return i&&(r+=`:${i}`),a&&(r+=`:${a}`),o&&(r+=`:${o}`),t.classroomSize&&(r+=`:cs${t.classroomSize}`),t.schoolStartTime&&(r+=`:ss${t.schoolStartTime}`),t.schoolEndTime&&(r+=`:se${t.schoolEndTime}`),t.timezone&&(r+=`:tz${t.timezone}`),n&&(r+=`:${n}`),r}export{a as n,o as t};
2
+ //# sourceMappingURL=C2ypnyI02.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Cn2gjFFW2.chunk.js","names":[],"sources":["../../src/shared/hooks/UseSetHeaderTitle.ts","../../../../libs/shared/src/utils/AnalyticsRequestUtils.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\nexport function useSetHeaderTitle(title?: string): void {\n const [ , setTitle ] = useViewModel<string>(ViewModelKeys.HEADER_TITLE);\n\n useEffect(() => {\n setTitle(title);\n\n return () => {\n setTitle(null);\n };\n }, [title]);\n}\n","import { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nexport function getAnalyticsRequestKey(baseKey: string, filter: AnalyticsRequestFilter, extra?: string): string {\n if (!filter)\n return baseKey;\n\n let key = `${baseKey}:${filter.start}:${filter.end}`;\n\n const userIdKey = Array.isArray(filter.userId) ? filter.userId.sort().join(':') : filter.userId;\n const groupIdKey = Array.isArray(filter.groupId) ? filter.groupId.sort().join(':') : filter.groupId;\n const customerIdKey = Array.isArray(filter.customerId) ? filter.customerId.sort().join(':') : filter.customerId;\n\n if (userIdKey)\n key += `:${userIdKey}`;\n\n if (groupIdKey)\n key += `:${groupIdKey}`;\n\n if (customerIdKey)\n key += `:${customerIdKey}`;\n\n if (filter.classroomSize)\n key += `:cs${filter.classroomSize}`;\n\n if (filter.schoolStartTime)\n key += `:ss${filter.schoolStartTime}`;\n\n if (filter.schoolEndTime)\n key += `:se${filter.schoolEndTime}`;\n\n if (filter.timezone)\n key += `:tz${filter.timezone}`;\n\n if (extra)\n key += `:${extra}`;\n\n return key;\n}\n"],"mappings":"uIAMA,SAAgB,EAAkB,EAAsB,CACtD,GAAM,EAAI,GAAa,EAAqB,EAAc,aAAa,EAEvE,EAAA,EAAA,gBACE,EAAS,EAAM,KAEF,CACX,EAAS,KAAK,GAEf,CAAC,EAAM,CAAC,CCbb,SAAgB,EAAuB,EAAiB,EAAgC,EAAwB,CAC9G,GAAI,CAAC,EACH,OAAO,EAET,IAAI,EAAM,GAAG,EAAQ,GAAG,EAAO,MAAM,GAAG,EAAO,MAEzC,EAAY,MAAM,QAAQ,EAAO,OAAO,CAAG,EAAO,OAAO,MAAM,CAAC,KAAK,IAAI,CAAG,EAAO,OACnF,EAAa,MAAM,QAAQ,EAAO,QAAQ,CAAG,EAAO,QAAQ,MAAM,CAAC,KAAK,IAAI,CAAG,EAAO,QACtF,EAAgB,MAAM,QAAQ,EAAO,WAAW,CAAG,EAAO,WAAW,MAAM,CAAC,KAAK,IAAI,CAAG,EAAO,WA0BrG,OAxBI,IACF,GAAO,IAAI,KAET,IACF,GAAO,IAAI,KAET,IACF,GAAO,IAAI,KAET,EAAO,gBACT,GAAO,MAAM,EAAO,iBAElB,EAAO,kBACT,GAAO,MAAM,EAAO,mBAElB,EAAO,gBACT,GAAO,MAAM,EAAO,iBAElB,EAAO,WACT,GAAO,MAAM,EAAO,YAElB,IACF,GAAO,IAAI,KAEN"}
1
+ {"version":3,"file":"C2ypnyI02.chunk.js","names":[],"sources":["../../src/shared/hooks/UseSetHeaderTitle.ts","../../../../libs/shared/src/utils/AnalyticsRequestUtils.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\nexport function useSetHeaderTitle(title?: string): void {\n const [ , setTitle ] = useViewModel<string>(ViewModelKeys.HEADER_TITLE);\n\n useEffect(() => {\n setTitle(title);\n\n return () => {\n setTitle(null);\n };\n }, [title]);\n}\n","import { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nexport function getAnalyticsRequestKey(baseKey: string, filter: AnalyticsRequestFilter, extra?: string): string {\n if (!filter)\n return baseKey;\n\n let key = `${baseKey}:${filter.start}:${filter.end}`;\n\n const userIdKey = Array.isArray(filter.userId) ? filter.userId.sort().join(':') : filter.userId;\n const groupIdKey = Array.isArray(filter.groupId) ? filter.groupId.sort().join(':') : filter.groupId;\n const customerIdKey = Array.isArray(filter.customerId) ? filter.customerId.sort().join(':') : filter.customerId;\n\n if (userIdKey)\n key += `:${userIdKey}`;\n\n if (groupIdKey)\n key += `:${groupIdKey}`;\n\n if (customerIdKey)\n key += `:${customerIdKey}`;\n\n if (filter.classroomSize)\n key += `:cs${filter.classroomSize}`;\n\n if (filter.schoolStartTime)\n key += `:ss${filter.schoolStartTime}`;\n\n if (filter.schoolEndTime)\n key += `:se${filter.schoolEndTime}`;\n\n if (filter.timezone)\n key += `:tz${filter.timezone}`;\n\n if (extra)\n key += `:${extra}`;\n\n return key;\n}\n"],"mappings":"uIAMA,SAAgB,EAAkB,EAAsB,CACtD,GAAM,EAAI,GAAa,EAAqB,EAAc,aAAa,EAEvE,EAAA,EAAA,gBACE,EAAS,EAAM,KAEF,CACX,EAAS,KAAK,GAEf,CAAC,EAAM,CAAC,CCbb,SAAgB,EAAuB,EAAiB,EAAgC,EAAwB,CAC9G,GAAI,CAAC,EACH,OAAO,EAET,IAAI,EAAM,GAAG,EAAQ,GAAG,EAAO,MAAM,GAAG,EAAO,MAEzC,EAAY,MAAM,QAAQ,EAAO,OAAO,CAAG,EAAO,OAAO,MAAM,CAAC,KAAK,IAAI,CAAG,EAAO,OACnF,EAAa,MAAM,QAAQ,EAAO,QAAQ,CAAG,EAAO,QAAQ,MAAM,CAAC,KAAK,IAAI,CAAG,EAAO,QACtF,EAAgB,MAAM,QAAQ,EAAO,WAAW,CAAG,EAAO,WAAW,MAAM,CAAC,KAAK,IAAI,CAAG,EAAO,WA0BrG,OAxBI,IACF,GAAO,IAAI,KAET,IACF,GAAO,IAAI,KAET,IACF,GAAO,IAAI,KAET,EAAO,gBACT,GAAO,MAAM,EAAO,iBAElB,EAAO,kBACT,GAAO,MAAM,EAAO,mBAElB,EAAO,gBACT,GAAO,MAAM,EAAO,iBAElB,EAAO,WACT,GAAO,MAAM,EAAO,YAElB,IACF,GAAO,IAAI,KAEN"}
@@ -1,2 +1,2 @@
1
- import{$ as e,N as t,P as n,Q as r,R as i,U as a,V as o,W as s,en as c,et as l,nn as u,st as d,z as f}from"./Db8SRTe2.chunk.js";import{i as p,r as ee,t as m,v as h}from"./B4CGL9yn.chunk.js";import{m as g,n as _}from"./ClFr_vFf.chunk.js";import{t as te}from"./r5AG2PFt.chunk.js";import{n as v}from"./DZAzLV_d.chunk.js";import{r as ne,t as re}from"./DrG_pptQ.chunk.js";import{i as y}from"./vy77iKWZ.chunk.js";import{t as b}from"./DnyJJoBJ.chunk.js";import{t as x}from"./BpIQdoUJ.chunk.js";import{n as S,t as C}from"./BW0AXUwO.chunk.js";import{n as w,r as T}from"./Drne0tRP.chunk.js";import{t as ie}from"./CsgnMveW.chunk.js";import{t as ae}from"./44-tnsP5.chunk.js";import{t as E}from"./C9VmjKe5.chunk.js";import{$ as D,F as O,I as oe,N as k,P as A,a as se,at as j,d as ce,g as M,n as le,r as N,u as ue,x as de}from"./app-BBppvgGe.js";import{i as fe,n as pe,r as me,t as P}from"./BDvsE_VK2.chunk.js";import{t as he}from"./B2vNpjBe2.chunk.js";import{t as F}from"./BBRRG8Mn2.chunk.js";import{m as I}from"./D9h-ARYb2.chunk.js";import{n as L,t as R}from"./CetIvuh92.chunk.js";import{n as ge,t as _e}from"./Cn2gjFFW2.chunk.js";import{n as ve,t as ye}from"./CgRzcaPA2.chunk.js";import{t as be}from"./CMdB_3nq2.chunk.js";import{t as xe}from"./2K4rAC5A2.chunk.js";d();var z={video:`_video_x45yw_1`,button:`_button_x45yw_5`,content:`_content_x45yw_9`,partialHighlight:`_partialHighlight_x45yw_14`},B=n();function Se(){return(0,B.jsx)(`div`,{className:`w-100 ${z.partialHighlight}`,children:(0,B.jsxs)(`div`,{className:`row gx-3 h-100`,children:[(0,B.jsx)(`div`,{className:`col-lg-3 col-sm-5 col-12 align-self-start`,children:(0,B.jsx)(`div`,{className:`rounded-3 ${z.video} partial-loading-background`})}),(0,B.jsxs)(`div`,{className:`col-lg-9 col-sm-7 col-12 d-flex flex-column justify-content-between`,children:[(0,B.jsx)(`div`,{className:`${z.content} rounded-3 overflow-hidden mt-lg-0 mt-2 partial-loading-background`}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`${z.button} rounded-3 partial-loading-background me-2 d-inline-block`}),(0,B.jsx)(`div`,{className:`${z.button} rounded-3 partial-loading-background me-2 d-inline-block`})]})]})]})})}function Ce(e){return e.appLink?(0,B.jsx)(P,{video:e.video,commonVideoProps:e.commonVideoProps,appLink:e.appLink,analyticsOptions:{...e.analyticsOptions,location:e.locationContext},imageOptions:{size:E.Medium},type:`static`,size:`sm`,hideDuration:!0,hideRating:!0,hideBottomBar:!0,alwaysShowIcon:!0}):(0,B.jsx)(`a`,{href:e.redirectUrl,target:`_blank`,onClick:()=>{t.logUserAction({videoId:e.video?.id},{...e.analyticsOptions,location:e.locationContext})},children:(0,B.jsx)(P,{video:e.video,imageOptions:{size:E.Medium},type:`cosmetic`,size:`sm`,hideDuration:!0,hideRating:!0,hideBottomBar:!0})})}var V=`shared.videoHighlight`,we={actionType:r.Click,descriptor:s.DismissWidget,entity:f.Widget,eventVersion:o.V1,location:a.VideoHighlight,workflowPhase:l.Complete},H={actionType:r.Click,descriptor:e.ViewOriginalVideo,workflowPhase:l.Complete,entity:f.Thumbnail,location:a.VideoHighlight,eventVersion:o.V1},Te={actionType:r.Click,location:a.VideoHighlight,entity:f.AppLink,workflowPhase:l.Complete,descriptor:e.OpenInClickView,eventVersion:o.V1},Ee={actionType:r.Click,descriptor:i.SeeMore,workflowPhase:l.Complete,entity:f.AppLink,eventVersion:o.V1};function De(e){if(!e.video)return(0,B.jsx)(B.Fragment,{});function n(){t.logUserAction({videoId:e.video?.id},we),e.onDismiss()}function r(e,n,r={}){t.logUserAction(r,n),typeof e==`string`?u.PageLoad(e,!0):c.trigger(e)}return e.video?(0,B.jsxs)(`div`,{className:`position-relative p-3 rounded-3 ${e.bgColorClassName??``}`,children:[(0,B.jsxs)(`div`,{className:`row gx-3`,children:[(0,B.jsx)(`div`,{className:`col-lg-3 col-sm-5 col-12 align-self-start`,children:(0,B.jsx)(Ce,{video:e.video,analyticsOptions:H,appLink:e.appLink,redirectUrl:e.redirectUrl,commonVideoProps:e.commonVideoProps,locationContext:e.locationContext})}),(0,B.jsxs)(`div`,{className:`col-lg-9 col-sm-7 col-12 d-flex flex-column justify-content-between`,children:[(0,B.jsxs)(`div`,{className:`overflow-hidden mt-lg-0 mt-2`,children:[(0,B.jsx)(fe,{children:(0,B.jsx)(`span`,{onClick:()=>r(e.sharedPlaylistAppLink??e.redirectPlaylistUrl,Te),className:`cursor-pointer`,children:e.subtitle})}),(0,B.jsx)(`div`,{className:`h5 mb-0 clamp-1 d-block`,children:(0,B.jsx)(`span`,{onClick:()=>r(e.appLink??e.redirectUrl,H),className:`cursor-pointer`,children:e.video?.name})}),(0,B.jsx)(`div`,{className:`mt-1 mb-2`,children:e.video?.description??e.description})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`button`,{className:`btn btn-dark me-2`,onClick:()=>r(e.appLink??e.redirectUrl,H,{videoId:e.video?.id}),children:(0,B.jsx)(_,{namespace:V,phrase:`watch`})}),(0,B.jsx)(`button`,{className:`btn btn-outline-dark me-2`,onClick:()=>r(e.supportArticle,{...Ee,location:e.locationContext},{url:e.supportArticle}),children:(0,B.jsx)(_,{namespace:V,phrase:`learnMore`})}),(0,B.jsx)(`div`,{className:`btn btn-outline-dark d-sm-none`,onClick:n,children:(0,B.jsx)(_,{namespace:V,phrase:`dismiss`})})]})]})]}),(0,B.jsx)(`div`,{className:`position-absolute top-0 end-0 p-2 d-sm-inline d-none`,children:(0,B.jsx)(m,{svg:y,onClick:n})})]}):(0,B.jsx)(`div`,{className:`position-relative p-3 rounded-3 ${e.bgColorClassName??``}`,children:(0,B.jsx)(Se,{})})}var U=function(e){return e.SearchAndDiscover=`searchAndDiscover`,e.Analytics=`analytics`,e.OpenClassroom=`openClassroom`,e.CreateClassroom=`createClassroom`,e.UploadVideo=`uploadVideo`,e.Playlist=`playlist`,e.ShareVideo=`shareVideo`,e}({}),W={[U.Analytics]:S.HasDismissedAnalyticsTutorial,[U.OpenClassroom]:S.HasDismissedOpenClassroomsTutorial,[U.SearchAndDiscover]:S.HasDismissedSearchAndDiscoverTutorial,[U.CreateClassroom]:S.HasDismissedClassroomsTutorial,[U.Playlist]:S.HasDismissedPlaylistsTutorial,[U.ShareVideo]:S.HasDismissedMySharesTutorial,[U.UploadVideo]:S.HasDismissedMyVideosTutorial},G={OlympicsTopics:{18:{id:`Oq9WnjA`,name:`2026 Milano Cortina Winter Olympic Games`},9:{id:`EoAYjoR`,name:`2026 Milano Cortina Winter Olympic Games`}},CommonwealthGameTopics:{12:{id:`AO0j90j`,name:`Commonwealth Games Glasgow 2026`},24:{id:`ZJxKkg1`,name:`Commonwealth Games Glasgow 2026`},16:{id:`agD7d73`,name:`Commonwealth Games Glasgow 2026`},47:{id:`m6mpl27`,name:`Commonwealth Games Glasgow 2026`},18:{id:`3bRp6eA`,name:`Commonwealth Games Glasgow 2026`},9:{id:`7mjAxYR`,name:`Commonwealth Games Glasgow 2026`}},PublicTranscriptVideoIds:`78902422.8139055.32102562.36875667.3713657.9900524.48278572.39424302.3712691.54504550.23852726.3713563.3714027.51281358.58785149.7322586.3716774.36554689.54192890.6689791.10749459.3712691.81764158.43772092.43974358.48091365.6430651.3713735.54096131.57977558.78840166.57738254.51666370.49858722`.split(`.`),SpecialEvents:{dlL00b3:{id:`dlL00b3`,iconUrl:`https://img.clickviewapp.com/v2/covers/PGbNp0`}},Classifications:{Twig:{EnglandSecondary:{HUB:`yrg5vYN`},ScotlandSecondary:{HUB:`Y69j14M`},InternationalSecondary:{HUB:`MYM6GGM`},NewZealandSecondary:{HUB:`agNmRd9`},CanadaMiddle:{HUB:`3brl1mY`},CanadaHigh:{HUB:`kZJ9vkz`}},Tigtag:{EnglandPrimary:{HUB:`D1218zx`,TIGTAG_HUB:`odldxPJ`,TIGTAG_JUNIOR_HUB:`nENExnL`},ScotlandPrimary:{HUB:`JjAONbj`,TIGTAG_HUB:`3bNAGl1`,TIGTAG_JUNIOR_HUB:`K6GKp43`},InternationalPrimary:{HUB:`W1xqbk2`,TIGTAG_HUB:`ek3dJr8`,TIGTAG_JUNIOR_HUB:`PGyKzpn`},NewZealandPrimary:{HUB:`odnkREE`,TIGTAG_HUB:`kZJ4RPa`,TIGTAG_JUNIOR_HUB:`zMg80DR`},CanadaElementary:{HUB:`JjabmDE`,TIGTAG_HUB:`dq9Ewje`,TIGTAG_JUNIOR_HUB:`bmElWrb`},CanadaMiddle:{HUB:`dq9EwyZ`,TIGTAG_HUB:`K6abxjP`,TIGTAG_JUNIOR_HUB:`7mwxLdR`}}},PresentationIds:{DEFAULT:1,DEFAULT_CURRICULUM:10,AU_PRIMARY:18,AU_SECONDARY:9,AU_TERTIARY:81,US_ELEMENTARY:13,US_MIDDLE:14,US_HIGH:15,CA_ELEMENTARY:100,CA_MIDDLE:101,CA_HIGH:102,STREAMABLE_LEARNING:68,ENG_PRIMARY:16,ENG_SECONDARY:47,SCT_PRIMARY:12,SCT_SECONDARY:24,UK_TERTIARY:82,INT_PRIMARY:19,INT_SECONDARY:21,NZ_PRIMARY:96,NZ_SECONDARY:97},Libraries:{LICENCED_CONTENT_COLLECTION:`3700633`,AU_PRIMARY:`10066675`,AU_SECONDARY:`59401330`,AU_TERTIARY:`5836680`,US_ELEMENTARY:`38693445`,US_MIDDLE:`39642303`,US_HIGH:`38693435`,CA_ELEMENTARY:`92862332`,CA_MIDDLE:`92862334`,CA_HIGH:`92862344`,STREAMABLE_LEARNING:`78688869`,ENG_PRIMARY:`35340580`,ENG_SECONDARY:`59889793`,SCT_PRIMARY:`33386791`,SCT_SECONDARY:`59856733`,UK_TERTIARY:`5815036`,INT_PRIMARY:`3706428`,INT_SECONDARY:`3706459`,NZ_PRIMARY:`3705693`,NZ_SECONDARY:`3705710`,NZ_MTV:`26989676`,TWIG:`88117784`,TIGTAG:`80333935`},Rostering:{sources:{0:{name:`Unknown`,iconUrl:``},1:{name:`Clever`,iconUrl:`https://img.clickviewapp.com/v2/logos/LqlKgd`},2:{name:`ClassLink`,iconUrl:`https://img.clickviewapp.com/v2/logos/ZA2ew5`},3:{name:`Google`,iconUrl:`https://img.clickviewapp.com/v2/logos/l5x0jL`},4:{name:`Microsoft`,iconUrl:`https://img.clickviewapp.com/v2/logos/xAxGPP`},5:{name:`Schoology`,iconUrl:`https://img.clickviewapp.com/v2/logos/kZNEyz`},6:{name:`PowerSchool`,iconUrl:`https://img.clickviewapp.com/v2/logos/m6aDmR`}}},Images:{Level_1:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/dlM73E`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/WAe8MP`,TOPIC_TALL_POSTER:`https://img.clickviewapp.com/v2/tallposters/raRm7E`,NEW_RELEASES_BANNER:`https://img.clickviewapp.com/v2/banners/3kzeZ2`},Level_2:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/WAeKvP`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/9DAZJv`,TOPIC_TALL_POSTER:`https://img.clickviewapp.com/v2/tallposters/eKG2bq`,NEW_RELEASES_BANNER:`https://img.clickviewapp.com/v2/banners/xyn5eP`},Level_3:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/dl1d0g`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/R0Pz7A`,TOPIC_TALL_POSTER:`https://img.clickviewapp.com/v2/tallposters/8LYZ9R`,NEW_RELEASES_BANNER:`https://img.clickviewapp.com/v2/banners/nKDyRj`},Level_4:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/vYJPP5`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/PGPLLP`},TOPIC_DEFAULT_BANNER:`https://img.clickviewapp.com/v2/banners/yKvoG0`,STREAMABLE_TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/q6gnOn`,STREAMABLE_TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/age95g`},Onboarding:{Playlist:{COVER_FILE_ID:`G149g3`,BANNER_FILE_ID:`bmPLkn`},LOADING_THUMBNAILS:`https://img.clickviewapp.com/v2/thumbnails/7m34ne,https://img.clickviewapp.com/v2/thumbnails/W1bjqJ,https://img.clickviewapp.com/v2/thumbnails/G14M1e,https://img.clickviewapp.com/v2/thumbnails/2mnv5x,https://img.clickviewapp.com/v2/thumbnails/xAEG91,https://img.clickviewapp.com/v2/thumbnails/agnbyg,https://img.clickviewapp.com/v2/thumbnails/W13emP,https://img.clickviewapp.com/v2/thumbnails/Y6j2vy,https://img.clickviewapp.com/v2/thumbnails/W1MJGE,https://img.clickviewapp.com/v2/thumbnails/OqDJqG,https://img.clickviewapp.com/v2/thumbnails/1My9Wn,https://img.clickviewapp.com/v2/thumbnails/G14MRe,https://img.clickviewapp.com/v2/thumbnails/5bgKpl,https://img.clickviewapp.com/v2/thumbnails/agnbp9,https://img.clickviewapp.com/v2/thumbnails/G147R1,https://img.clickviewapp.com/v2/thumbnails/5bgMz5,https://img.clickviewapp.com/v2/thumbnails/G14Me5,https://img.clickviewapp.com/v2/thumbnails/5bEovE,https://img.clickviewapp.com/v2/thumbnails/odY4oZ,https://img.clickviewapp.com/v2/thumbnails/yrqwqD,https://img.clickviewapp.com/v2/thumbnails/K6pOmR,https://img.clickviewapp.com/v2/thumbnails/vYK3w4,https://img.clickviewapp.com/v2/thumbnails/agnD88,https://img.clickviewapp.com/v2/thumbnails/4rKmp7,https://img.clickviewapp.com/v2/thumbnails/0wM4r3,https://img.clickviewapp.com/v2/thumbnails/69A2jO,https://img.clickviewapp.com/v2/thumbnails/7m3Z3e,https://img.clickviewapp.com/v2/thumbnails/3bGL94,https://img.clickviewapp.com/v2/thumbnails/Y6jwLo,https://img.clickviewapp.com/v2/thumbnails/1MyPby`.split(`,`)},Tutorial:{cv:{staging:{[b.AU]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`},[b.NZ]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`},[b.UK]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`},[b.US]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`}},production:{[b.AU]:{PLAYLIST:`106743306`,SHARE:`DYXNQP`},[b.NZ]:{PLAYLIST:``,SHARE:``},[b.UK]:{PLAYLIST:`106743114`,SHARE:`DvwPAL`},[b.US]:{PLAYLIST:`106735465`,SHARE:`D6VOJX`}}},live:{staging:{[b.AU]:{PLAYLIST:`92210048`,SHARE:`DXvWdB`},[b.NZ]:{PLAYLIST:`92210048`,SHARE:`DXvWdB`},[b.UK]:{PLAYLIST:`92210048`,SHARE:`DXvWdB`},[b.US]:{PLAYLIST:`92210048`,SHARE:`DXvWdB`}},production:{[b.AU]:{PLAYLIST:`107404226`,SHARE:`bnp6en`},[b.NZ]:{PLAYLIST:`107404226`,SHARE:`bnp6en`},[b.UK]:{PLAYLIST:`107404226`,SHARE:`bnp6en`},[b.US]:{PLAYLIST:`107404226`,SHARE:`bnp6en`}}}},TutorialVideoHighlight:{analytics:{staging:{[b.US]:{VIDEO:`92095356`,SHARE:`DN8vMg`},[b.AU]:{VIDEO:`92095356`,SHARE:`DN8vMg`},[b.UK]:{VIDEO:`92095356`,SHARE:`DN8vMg`}},production:{[b.US]:{VIDEO:`107356113`,SHARE:`DNYxnm`},[b.AU]:{VIDEO:`107239339`,SHARE:`GmQgWQ`},[b.UK]:{VIDEO:`107324974`,SHARE:`bAKL6d`}}},searchAndDiscover:{staging:{[b.US]:{VIDEO:`92095348`,SHARE:`G2Ylra`},[b.AU]:{VIDEO:`92095348`,SHARE:`G2Ylra`},[b.UK]:{VIDEO:`92095348`,SHARE:`G2Ylra`}},production:{[b.US]:{VIDEO:`107310200`,SHARE:`Gp92A7`},[b.AU]:{VIDEO:`107219457`,SHARE:`GMY10v`},[b.UK]:{VIDEO:`107418074`,SHARE:`GgwWvY`}}},openClassroom:{staging:{[b.US]:{VIDEO:`92095362`,SHARE:`bwXY5w`},[b.AU]:{VIDEO:`92095362`,SHARE:`bwXY5w`},[b.UK]:{VIDEO:`92095362`,SHARE:`bwXY5w`}},production:{[b.US]:{VIDEO:`106302736`,SHARE:`Dkrvan`},[b.AU]:{VIDEO:`106898400`,SHARE:`Da9YRX`},[b.UK]:{VIDEO:`106898583`,SHARE:`G2Vxrk`}}},createClassroom:{staging:{[b.US]:{VIDEO:`92095338`,SHARE:`Gm0kXY`},[b.AU]:{VIDEO:`92095338`,SHARE:`Gm0kXY`},[b.UK]:{VIDEO:`92095338`,SHARE:`Gm0kXY`}},production:{[b.US]:{VIDEO:`102633076`,SHARE:`G2Vxvp`},[b.AU]:{VIDEO:`107239329`,SHARE:`b9dp00`},[b.UK]:{VIDEO:`107232174`,SHARE:`DYgRdV`}}},uploadVideo:{staging:{[b.US]:{VIDEO:`92095354`,SHARE:`Dk90O8`},[b.AU]:{VIDEO:`92095354`,SHARE:`Dk90O8`},[b.UK]:{VIDEO:`92095354`,SHARE:`Dk90O8`}},production:{[b.US]:{VIDEO:`106302713`,SHARE:`byNpd8`},[b.AU]:{VIDEO:`106826031`,SHARE:`GmQgXQ`},[b.UK]:{VIDEO:`106898590`,SHARE:`D6AgER`}}},playlist:{staging:{[b.US]:{VIDEO:`92095342`,SHARE:`b9P51m`},[b.AU]:{VIDEO:`92095342`,SHARE:`b9P51m`},[b.UK]:{VIDEO:`92095342`,SHARE:`b9P51m`}},production:{[b.US]:{VIDEO:`107357318`,SHARE:`DKYdz7`},[b.AU]:{VIDEO:`107221344`,SHARE:`Gp92ay`},[b.UK]:{VIDEO:`107221972`,SHARE:`GR9RxO`}}},shareVideo:{staging:{[b.US]:{VIDEO:`92095350`,SHARE:`DN8v4g`},[b.AU]:{VIDEO:`92095350`,SHARE:`DN8v4g`},[b.UK]:{VIDEO:`92095350`,SHARE:`DN8v4g`}},production:{[b.US]:{VIDEO:`106302709`,SHARE:`bwgdNk`},[b.AU]:{VIDEO:`106826023`,SHARE:`DvwPYO`},[b.UK]:{VIDEO:`106898587`,SHARE:`bzr05K`}}},welcomeToClickView:{staging:{[b.US]:{VIDEO:`92095344`,SHARE:`DaalVQ`},[b.AU]:{VIDEO:`92095342`,SHARE:`b9P51m`},[b.UK]:{VIDEO:`92095342`,SHARE:`b9P51m`}},production:{[b.US]:{VIDEO:`106302715`,SHARE:`DEleZo`},[b.AU]:{VIDEO:`107148652`,SHARE:`GR9RZL`},[b.UK]:{VIDEO:`107162361`,SHARE:`G084Qg`}}},welcomeToClickViewLive:{staging:{[b.US]:{VIDEO:`92095342`,SHARE:`b9P51m`}},production:{[b.US]:{VIDEO:`107493452`,SHARE:`bnp63m`}}}},UpsellVideo:{CLICKVIEW:`https://static.clickview.com.au/video-banners/clickview-banner.mp4`}};function Oe(e,t=!0){let n=g(re.currentUser()).data?.instanceRegion,r=g(j.config()),i=(r.data?.liteUrl.includes(`staging`)?G.TutorialVideoHighlight[e].staging:G.TutorialVideoHighlight[e].production)[n],o=(r.data?.liteUrl.includes(`staging`)?G.Tutorial.cv.staging[n]:G.Tutorial.cv.production[n])||{PLAYLIST:``,SHARE:``},{hasPermissions:s,isLoaded:c}=oe(),l=n&&i!==void 0&&c&&!s(ne.StudentExperience),u=g(l&&M.sharedVideo(i.VIDEO,i.SHARE)),d=C(a.VideoHighlight);if(!t||!Object.keys(W).includes(e))return{shouldShowVideo:l,tutorialVideo:u,videoIds:i,playlistIds:o};let f={[U.Analytics]:d.hasDismissedAnalyticsTutorial,[U.OpenClassroom]:d.hasDismissedOpenClassroomsTutorial,[U.SearchAndDiscover]:d.hasDismissedSearchAndDiscoverTutorial,[U.CreateClassroom]:d.hasDismissedClassroomsTutorial,[U.Playlist]:d.hasDismissedPlaylistsTutorial,[U.ShareVideo]:d.hasDismissedMySharesTutorial,[U.UploadVideo]:d.hasDismissedMyVideosTutorial},p=W[e];return{shouldShowVideo:l,tutorialVideo:u,videoIds:i,playlistIds:o,hasDismissedVideoHighlight:f[e]??null,dismissVideoHighlight:async()=>{!Object.keys(f).includes(e)||!p||await d.updateUserSettingAsync({name:p,value:!0,kind:se.Setting})}}}var ke={video(e,t){return{url:v.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`thumbnail`,shareId:t}),key:`video:${e}`}}},K=te(),Ae={topSearches(e,t,n,r){return{url:v.urlBuilder(`{gateway}/v1/analytics/search/top`,e),key:_e(`top:searches`,e),normalize:!1,success:t,error:n,always:r}}},je=`reportsDashboard.topSearchesCardEmptyStateV2`;function Me(){return(0,B.jsx)(`div`,{className:`d-flex align-items-center justify-content-center text-center h-100`,children:(0,B.jsx)(_,{namespace:je,phrase:`message`})})}function Ne(){return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`partial-loading-background w-50 mb-3`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-25`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-33`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-33`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-50`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-25`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-100`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-25`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-75`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-33`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-100`,children:`\xA0`})]})}var Pe=`reportsDashboard.topSearchesCardV2`;function Fe(){let e=N(`search`),t=g(Ae.topSearches(e)),n=I(D.getPrimarySearchUrl);return(0,B.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3`,children:t.data?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h2`,{className:`h6 mb-3`,children:(0,B.jsx)(_,{namespace:Pe,phrase:`topSearches`})}),t.data.length?(0,B.jsx)(B.Fragment,{children:(0,B.jsx)(K.Scrollbars,{className:`position-relative`,children:(0,B.jsx)(`ol`,{className:`position-absolute w-100 ps-4`,children:t.data.map((e,t)=>(0,B.jsx)(`li`,{className:`mb-3`,children:(0,B.jsxs)(`a`,{href:n(e.query),target:`_blank`,className:`position-relative d-flex justify-content-between align-items-center pe-5`,children:[(0,B.jsx)(`span`,{children:e.query}),(0,B.jsx)(`div`,{className:`position-absolute w-100 text-end opacity-0 opacity-100-hover pe-3`,children:(0,B.jsx)(ee,{svg:O})})]})},t))})})}):(0,B.jsx)(Me,{})]}):(0,B.jsx)(Ne,{})})}var Ie=`reportsDashboard.topStreamsCardEmptyState`;function Le(){return(0,B.jsx)(`div`,{className:`d-flex align-items-center justify-content-center text-center h-100`,children:(0,B.jsx)(_,{namespace:Ie,phrase:`message`})})}function Re(){return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`partial-loading-background w-50 mb-3`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`position-relative`,children:(0,B.jsx)(`ul`,{className:`list-unstyled position-absolute top-0 start-0 w-100 h-100`,children:Array(10).fill(null).map((e,t)=>(0,B.jsx)(`li`,{className:`mb-3`,children:(0,B.jsxs)(`div`,{className:`row g-0`,children:[(0,B.jsx)(`div`,{className:`col-5`,children:(0,B.jsx)(`div`,{className:`ratio ratio-16x9 rounded partial-loading-background`})}),(0,B.jsx)(`div`,{className:`col-7 d-flex align-items-center`,children:(0,B.jsxs)(`div`,{className:`mx-2 w-100`,children:[(0,B.jsx)(`div`,{className:`w-100 partial-loading-background mb-1`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`w-75 partial-loading-background`,children:`\xA0`})]})})]})},t))})})]})}var q=`reportsDashboard.topStreamsCard`,ze=x.encloseNamespace(q),J=10;function Be(){let e=le(),t=N(`video-views`),n=g(he.topStreams(J,t)),r=F(n.data?.map(e=>e.objectId)??[],M.videos);return(0,B.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden px-3 rounded pt-3`,children:n.hasCompleted&&!r.isFetching?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,B.jsx)(`h2`,{className:`h6 mb-3`,children:ze(`topVideos`)}),(0,B.jsx)(h,{appLink:{application:T.VIDEOS,action:w.Videos.TOP_VIDEOS},className:`text-info`,children:(0,B.jsx)(_,{namespace:q,phrase:`seeAll`})})]}),r.itemsArr?.length?(0,B.jsx)(K.Scrollbars,{className:`position-relative`,children:(0,B.jsx)(`div`,{className:`position-absolute w-100`,children:(0,B.jsx)(`ul`,{className:`list-unstyled`,children:n.data.map(t=>{let n=r.items[t.objectId];if(n)return(0,B.jsx)(`li`,{className:`mb-3`,children:(0,B.jsx)(h,{appLink:ue(n,e),children:(0,B.jsxs)(`div`,{className:`row g-0`,children:[(0,B.jsx)(`div`,{className:`col-5`,children:(0,B.jsx)(P,{video:n,imageOptions:{size:E.Small},textPosition:pe.Independent,type:`cosmetic`,hideMask:!0,size:`sm`})}),(0,B.jsx)(`div`,{className:`col-7`,children:(0,B.jsxs)(`div`,{className:`d-flex flex-column mx-2`,children:[ce.isVideoType(n)&&(0,B.jsx)(me,{type:`series`,video:n,analyticsOptions:null,className:`d-inline clamp-1`}),(0,B.jsx)(`span`,{className:`clamp-2 fw-medium`,children:n.name}),(0,B.jsx)(_,{namespace:q,phrase:`views`,options:{smartCount:t.combinedCount}})]})})]})})},n.id)})})})}):(0,B.jsx)(Le,{})]}):(0,B.jsx)(Re,{})})}var Ve={cogIcon:`_cogIcon_l8s08_1`},Y=`reportsDashboard.classroomViewsAlert`,X=x.encloseNamespace(Y);function He(e){let{alertVariant:t,dismissAlert:n}=xe(e.hasClassroomViews);return t===`none`?null:(0,B.jsxs)(`div`,{role:`alert`,className:`d-flex justify-content-between align-items-center bg-light-blue border border-info rounded p-2 mb-2`,children:[(0,B.jsx)(`div`,{className:`d-flex align-items-center gap-1 ms-1`,children:t===`info`?(0,B.jsx)(Ue,{}):(0,B.jsx)(We,{})}),(0,B.jsx)(m,{svg:y,className:`text-blue`,onClick:n})]})}function Z(){return(0,B.jsx)(m,{customSize:!0,svg:be,svgSize:p.Standard,appLink:{application:T.DEFAULT,action:w.Default.CLASSROOM_VIEWS_POPUP},className:Ve.cogIcon,tooltip:X(`settingsTitle`),tooltipTrigger:[`hover`],ariaLabel:X(`settingsTitle`)})}function Ue(){return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{className:`fw-bold`,children:(0,B.jsx)(_,{namespace:Y,phrase:`leadIn`})}),(0,B.jsx)(Z,{}),(0,B.jsx)(_,{namespace:Y,phrase:`description`}),(0,B.jsx)(`a`,{className:`text-info`,href:k.getLiteArticle(A.ClassroomViews),target:`_blank`,rel:`noopener noreferrer`,children:(0,B.jsx)(_,{namespace:Y,phrase:`link`})})]})}function We(){return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{className:`fw-bold`,children:(0,B.jsx)(_,{namespace:Y,phrase:`leadIn`})}),(0,B.jsx)(Z,{}),(0,B.jsx)(_,{namespace:Y,phrase:`reminderDescription`}),(0,B.jsx)(h,{appLink:{application:T.DEFAULT,action:w.Default.CLASSROOM_VIEWS_POPUP},className:`text-info hover-text-underline`,children:(0,B.jsx)(_,{namespace:Y,phrase:`reminderLink`})})]})}var Q={topRow:`_topRow_1oibi_1`,barChart:`_barChart_1oibi_4`,videoViews:`_videoViews_1oibi_8`,bottomRow:`_bottomRow_1oibi_12`,bottomColumn:`_bottomColumn_1oibi_15`},Ge=10,$=x.encloseNamespace(`reportsDashboard.schoolAnalyticsDashboard`);function Ke(){let e=de(),{hasStudentReach:t}=C(a.VideoHighlight),n=$(e?`tertiaryDashboard`:`dashboard`),{shouldShowVideo:r,videoIds:i,playlistIds:o,hasDismissedVideoHighlight:s,dismissVideoHighlight:c}=Oe(U.Analytics),l=g(r&&ke.video(i.VIDEO,i.SHARE)),u=I(D.getPrimaryObjectUrl),d=g(j.config()),f=D.getSharePlaylistUrl({id:ie.Primary,order:0,name:``,url:d.data?.liteUrl,imageUrl:``},o?.SHARE);return ae({title:n}),ge(n),(0,B.jsxs)(`div`,{className:`d-flex flex-column gap-3`,children:[(0,B.jsx)(He,{hasClassroomViews:t}),l?.data&&!s&&(0,B.jsx)(De,{video:l?.data,subtitle:$(`videoHighlightSubtitle`),description:$(`videoHighlightDescription`),bgColorClassName:`bg-light-blue`,supportArticle:k.getLiteArticle(A.ClassroomAnalytics),onDismiss:c,redirectUrl:u(l?.data),redirectPlaylistUrl:f,locationContext:a.VideoHighlight}),(0,B.jsxs)(`div`,{className:`d-flex gap-3 ${Q.topRow}`,children:[(0,B.jsx)(`div`,{className:Q.barChart,children:(0,B.jsx)(ve,{type:`year_group`,appLink:{application:T.VIDEOS,action:w.Videos.HOME},appLinkText:$(`seeOverview`)})}),(0,B.jsx)(`div`,{className:Q.videoViews,children:(0,B.jsx)(ye,{type:`user_type`})})]}),(0,B.jsxs)(`div`,{className:`d-flex gap-3 ${Q.bottomRow}`,children:[(0,B.jsx)(`div`,{className:Q.bottomColumn,children:(0,B.jsx)(Be,{})}),(0,B.jsx)(`div`,{className:Q.bottomColumn,children:(0,B.jsx)(R,{type:L.RootTopic,heading:$(`subjects`),appLink:{application:T.VIDEOS,action:w.Videos.HOME},appLinkText:$(`seeOverview`),emptyStateText:$(`emptySubjects`),limit:Ge})}),(0,B.jsx)(`div`,{className:Q.bottomColumn,children:(0,B.jsx)(Fe,{})})]})]})}export{Ke as SchoolAnalyticsDashboardView};
2
- //# sourceMappingURL=DJcJp7v8.chunk.js.map
1
+ import{$ as e,N as t,P as n,Q as r,R as i,U as a,V as o,W as s,en as c,et as l,nn as u,st as d,z as f}from"./Db8SRTe2.chunk.js";import{i as p,r as ee,t as m,v as h}from"./B4CGL9yn.chunk.js";import{m as g,n as _}from"./ClFr_vFf.chunk.js";import{t as te}from"./r5AG2PFt.chunk.js";import{n as v}from"./DZAzLV_d.chunk.js";import{r as ne,t as re}from"./DrG_pptQ.chunk.js";import{i as y}from"./vy77iKWZ.chunk.js";import{t as b}from"./DnyJJoBJ.chunk.js";import{t as x}from"./BpIQdoUJ.chunk.js";import{n as S,t as C}from"./BW0AXUwO.chunk.js";import{n as w,r as T}from"./Drne0tRP.chunk.js";import{t as ie}from"./CsgnMveW.chunk.js";import{t as ae}from"./44-tnsP5.chunk.js";import{t as E}from"./C9VmjKe5.chunk.js";import{$ as D,F as O,I as oe,N as k,P as A,a as se,at as j,d as ce,g as M,n as le,r as N,u as ue,x as de}from"./app-DomX9RS2.js";import{i as fe,n as pe,r as me,t as P}from"./CSucqxC_2.chunk.js";import{t as he}from"./B9pFKWJ02.chunk.js";import{t as F}from"./BBRRG8Mn2.chunk.js";import{m as I}from"./DFrb5tDP2.chunk.js";import{n as L,t as R}from"./CO_jJj0j2.chunk.js";import{n as ge,t as _e}from"./C2ypnyI02.chunk.js";import{n as ve,t as ye}from"./BNN5pscb2.chunk.js";import{t as be}from"./wJ4aGP5K2.chunk.js";import{t as xe}from"./XIOc3Va_2.chunk.js";d();var z={video:`_video_x45yw_1`,button:`_button_x45yw_5`,content:`_content_x45yw_9`,partialHighlight:`_partialHighlight_x45yw_14`},B=n();function Se(){return(0,B.jsx)(`div`,{className:`w-100 ${z.partialHighlight}`,children:(0,B.jsxs)(`div`,{className:`row gx-3 h-100`,children:[(0,B.jsx)(`div`,{className:`col-lg-3 col-sm-5 col-12 align-self-start`,children:(0,B.jsx)(`div`,{className:`rounded-3 ${z.video} partial-loading-background`})}),(0,B.jsxs)(`div`,{className:`col-lg-9 col-sm-7 col-12 d-flex flex-column justify-content-between`,children:[(0,B.jsx)(`div`,{className:`${z.content} rounded-3 overflow-hidden mt-lg-0 mt-2 partial-loading-background`}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`${z.button} rounded-3 partial-loading-background me-2 d-inline-block`}),(0,B.jsx)(`div`,{className:`${z.button} rounded-3 partial-loading-background me-2 d-inline-block`})]})]})]})})}function Ce(e){return e.appLink?(0,B.jsx)(P,{video:e.video,commonVideoProps:e.commonVideoProps,appLink:e.appLink,analyticsOptions:{...e.analyticsOptions,location:e.locationContext},imageOptions:{size:E.Medium},type:`static`,size:`sm`,hideDuration:!0,hideRating:!0,hideBottomBar:!0,alwaysShowIcon:!0}):(0,B.jsx)(`a`,{href:e.redirectUrl,target:`_blank`,onClick:()=>{t.logUserAction({videoId:e.video?.id},{...e.analyticsOptions,location:e.locationContext})},children:(0,B.jsx)(P,{video:e.video,imageOptions:{size:E.Medium},type:`cosmetic`,size:`sm`,hideDuration:!0,hideRating:!0,hideBottomBar:!0})})}var V=`shared.videoHighlight`,we={actionType:r.Click,descriptor:s.DismissWidget,entity:f.Widget,eventVersion:o.V1,location:a.VideoHighlight,workflowPhase:l.Complete},H={actionType:r.Click,descriptor:e.ViewOriginalVideo,workflowPhase:l.Complete,entity:f.Thumbnail,location:a.VideoHighlight,eventVersion:o.V1},Te={actionType:r.Click,location:a.VideoHighlight,entity:f.AppLink,workflowPhase:l.Complete,descriptor:e.OpenInClickView,eventVersion:o.V1},Ee={actionType:r.Click,descriptor:i.SeeMore,workflowPhase:l.Complete,entity:f.AppLink,eventVersion:o.V1};function De(e){if(!e.video)return(0,B.jsx)(B.Fragment,{});function n(){t.logUserAction({videoId:e.video?.id},we),e.onDismiss()}function r(e,n,r={}){t.logUserAction(r,n),typeof e==`string`?u.PageLoad(e,!0):c.trigger(e)}return e.video?(0,B.jsxs)(`div`,{className:`position-relative p-3 rounded-3 ${e.bgColorClassName??``}`,children:[(0,B.jsxs)(`div`,{className:`row gx-3`,children:[(0,B.jsx)(`div`,{className:`col-lg-3 col-sm-5 col-12 align-self-start`,children:(0,B.jsx)(Ce,{video:e.video,analyticsOptions:H,appLink:e.appLink,redirectUrl:e.redirectUrl,commonVideoProps:e.commonVideoProps,locationContext:e.locationContext})}),(0,B.jsxs)(`div`,{className:`col-lg-9 col-sm-7 col-12 d-flex flex-column justify-content-between`,children:[(0,B.jsxs)(`div`,{className:`overflow-hidden mt-lg-0 mt-2`,children:[(0,B.jsx)(fe,{children:(0,B.jsx)(`span`,{onClick:()=>r(e.sharedPlaylistAppLink??e.redirectPlaylistUrl,Te),className:`cursor-pointer`,children:e.subtitle})}),(0,B.jsx)(`div`,{className:`h5 mb-0 clamp-1 d-block`,children:(0,B.jsx)(`span`,{onClick:()=>r(e.appLink??e.redirectUrl,H),className:`cursor-pointer`,children:e.video?.name})}),(0,B.jsx)(`div`,{className:`mt-1 mb-2`,children:e.video?.description??e.description})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`button`,{className:`btn btn-dark me-2`,onClick:()=>r(e.appLink??e.redirectUrl,H,{videoId:e.video?.id}),children:(0,B.jsx)(_,{namespace:V,phrase:`watch`})}),(0,B.jsx)(`button`,{className:`btn btn-outline-dark me-2`,onClick:()=>r(e.supportArticle,{...Ee,location:e.locationContext},{url:e.supportArticle}),children:(0,B.jsx)(_,{namespace:V,phrase:`learnMore`})}),(0,B.jsx)(`div`,{className:`btn btn-outline-dark d-sm-none`,onClick:n,children:(0,B.jsx)(_,{namespace:V,phrase:`dismiss`})})]})]})]}),(0,B.jsx)(`div`,{className:`position-absolute top-0 end-0 p-2 d-sm-inline d-none`,children:(0,B.jsx)(m,{svg:y,onClick:n})})]}):(0,B.jsx)(`div`,{className:`position-relative p-3 rounded-3 ${e.bgColorClassName??``}`,children:(0,B.jsx)(Se,{})})}var U=function(e){return e.SearchAndDiscover=`searchAndDiscover`,e.Analytics=`analytics`,e.OpenClassroom=`openClassroom`,e.CreateClassroom=`createClassroom`,e.UploadVideo=`uploadVideo`,e.Playlist=`playlist`,e.ShareVideo=`shareVideo`,e}({}),W={[U.Analytics]:S.HasDismissedAnalyticsTutorial,[U.OpenClassroom]:S.HasDismissedOpenClassroomsTutorial,[U.SearchAndDiscover]:S.HasDismissedSearchAndDiscoverTutorial,[U.CreateClassroom]:S.HasDismissedClassroomsTutorial,[U.Playlist]:S.HasDismissedPlaylistsTutorial,[U.ShareVideo]:S.HasDismissedMySharesTutorial,[U.UploadVideo]:S.HasDismissedMyVideosTutorial},G={OlympicsTopics:{18:{id:`Oq9WnjA`,name:`2026 Milano Cortina Winter Olympic Games`},9:{id:`EoAYjoR`,name:`2026 Milano Cortina Winter Olympic Games`}},CommonwealthGameTopics:{12:{id:`AO0j90j`,name:`Commonwealth Games Glasgow 2026`},24:{id:`ZJxKkg1`,name:`Commonwealth Games Glasgow 2026`},16:{id:`agD7d73`,name:`Commonwealth Games Glasgow 2026`},47:{id:`m6mpl27`,name:`Commonwealth Games Glasgow 2026`},18:{id:`3bRp6eA`,name:`Commonwealth Games Glasgow 2026`},9:{id:`7mjAxYR`,name:`Commonwealth Games Glasgow 2026`}},PublicTranscriptVideoIds:`78902422.8139055.32102562.36875667.3713657.9900524.48278572.39424302.3712691.54504550.23852726.3713563.3714027.51281358.58785149.7322586.3716774.36554689.54192890.6689791.10749459.3712691.81764158.43772092.43974358.48091365.6430651.3713735.54096131.57977558.78840166.57738254.51666370.49858722`.split(`.`),SpecialEvents:{dlL00b3:{id:`dlL00b3`,iconUrl:`https://img.clickviewapp.com/v2/covers/PGbNp0`}},Classifications:{Twig:{EnglandSecondary:{HUB:`yrg5vYN`},ScotlandSecondary:{HUB:`Y69j14M`},InternationalSecondary:{HUB:`MYM6GGM`},NewZealandSecondary:{HUB:`agNmRd9`},CanadaMiddle:{HUB:`3brl1mY`},CanadaHigh:{HUB:`kZJ9vkz`}},Tigtag:{EnglandPrimary:{HUB:`D1218zx`,TIGTAG_HUB:`odldxPJ`,TIGTAG_JUNIOR_HUB:`nENExnL`},ScotlandPrimary:{HUB:`JjAONbj`,TIGTAG_HUB:`3bNAGl1`,TIGTAG_JUNIOR_HUB:`K6GKp43`},InternationalPrimary:{HUB:`W1xqbk2`,TIGTAG_HUB:`ek3dJr8`,TIGTAG_JUNIOR_HUB:`PGyKzpn`},NewZealandPrimary:{HUB:`odnkREE`,TIGTAG_HUB:`kZJ4RPa`,TIGTAG_JUNIOR_HUB:`zMg80DR`},CanadaElementary:{HUB:`JjabmDE`,TIGTAG_HUB:`dq9Ewje`,TIGTAG_JUNIOR_HUB:`bmElWrb`},CanadaMiddle:{HUB:`dq9EwyZ`,TIGTAG_HUB:`K6abxjP`,TIGTAG_JUNIOR_HUB:`7mwxLdR`}}},PresentationIds:{DEFAULT:1,DEFAULT_CURRICULUM:10,AU_PRIMARY:18,AU_SECONDARY:9,AU_TERTIARY:81,US_ELEMENTARY:13,US_MIDDLE:14,US_HIGH:15,CA_ELEMENTARY:100,CA_MIDDLE:101,CA_HIGH:102,STREAMABLE_LEARNING:68,ENG_PRIMARY:16,ENG_SECONDARY:47,SCT_PRIMARY:12,SCT_SECONDARY:24,UK_TERTIARY:82,INT_PRIMARY:19,INT_SECONDARY:21,NZ_PRIMARY:96,NZ_SECONDARY:97},Libraries:{LICENCED_CONTENT_COLLECTION:`3700633`,AU_PRIMARY:`10066675`,AU_SECONDARY:`59401330`,AU_TERTIARY:`5836680`,US_ELEMENTARY:`38693445`,US_MIDDLE:`39642303`,US_HIGH:`38693435`,CA_ELEMENTARY:`92862332`,CA_MIDDLE:`92862334`,CA_HIGH:`92862344`,STREAMABLE_LEARNING:`78688869`,ENG_PRIMARY:`35340580`,ENG_SECONDARY:`59889793`,SCT_PRIMARY:`33386791`,SCT_SECONDARY:`59856733`,UK_TERTIARY:`5815036`,INT_PRIMARY:`3706428`,INT_SECONDARY:`3706459`,NZ_PRIMARY:`3705693`,NZ_SECONDARY:`3705710`,NZ_MTV:`26989676`,TWIG:`88117784`,TIGTAG:`80333935`},Rostering:{sources:{0:{name:`Unknown`,iconUrl:``},1:{name:`Clever`,iconUrl:`https://img.clickviewapp.com/v2/logos/LqlKgd`},2:{name:`ClassLink`,iconUrl:`https://img.clickviewapp.com/v2/logos/ZA2ew5`},3:{name:`Google`,iconUrl:`https://img.clickviewapp.com/v2/logos/l5x0jL`},4:{name:`Microsoft`,iconUrl:`https://img.clickviewapp.com/v2/logos/xAxGPP`},5:{name:`Schoology`,iconUrl:`https://img.clickviewapp.com/v2/logos/kZNEyz`},6:{name:`PowerSchool`,iconUrl:`https://img.clickviewapp.com/v2/logos/m6aDmR`}}},Images:{Level_1:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/dlM73E`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/WAe8MP`,TOPIC_TALL_POSTER:`https://img.clickviewapp.com/v2/tallposters/raRm7E`,NEW_RELEASES_BANNER:`https://img.clickviewapp.com/v2/banners/3kzeZ2`},Level_2:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/WAeKvP`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/9DAZJv`,TOPIC_TALL_POSTER:`https://img.clickviewapp.com/v2/tallposters/eKG2bq`,NEW_RELEASES_BANNER:`https://img.clickviewapp.com/v2/banners/xyn5eP`},Level_3:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/dl1d0g`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/R0Pz7A`,TOPIC_TALL_POSTER:`https://img.clickviewapp.com/v2/tallposters/8LYZ9R`,NEW_RELEASES_BANNER:`https://img.clickviewapp.com/v2/banners/nKDyRj`},Level_4:{TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/vYJPP5`,TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/PGPLLP`},TOPIC_DEFAULT_BANNER:`https://img.clickviewapp.com/v2/banners/yKvoG0`,STREAMABLE_TOPIC_BANNER:`https://img.clickviewapp.com/v2/banners/q6gnOn`,STREAMABLE_TOPIC_COVER:`https://img.clickviewapp.com/v2/covers/age95g`},Onboarding:{Playlist:{COVER_FILE_ID:`G149g3`,BANNER_FILE_ID:`bmPLkn`},LOADING_THUMBNAILS:`https://img.clickviewapp.com/v2/thumbnails/7m34ne,https://img.clickviewapp.com/v2/thumbnails/W1bjqJ,https://img.clickviewapp.com/v2/thumbnails/G14M1e,https://img.clickviewapp.com/v2/thumbnails/2mnv5x,https://img.clickviewapp.com/v2/thumbnails/xAEG91,https://img.clickviewapp.com/v2/thumbnails/agnbyg,https://img.clickviewapp.com/v2/thumbnails/W13emP,https://img.clickviewapp.com/v2/thumbnails/Y6j2vy,https://img.clickviewapp.com/v2/thumbnails/W1MJGE,https://img.clickviewapp.com/v2/thumbnails/OqDJqG,https://img.clickviewapp.com/v2/thumbnails/1My9Wn,https://img.clickviewapp.com/v2/thumbnails/G14MRe,https://img.clickviewapp.com/v2/thumbnails/5bgKpl,https://img.clickviewapp.com/v2/thumbnails/agnbp9,https://img.clickviewapp.com/v2/thumbnails/G147R1,https://img.clickviewapp.com/v2/thumbnails/5bgMz5,https://img.clickviewapp.com/v2/thumbnails/G14Me5,https://img.clickviewapp.com/v2/thumbnails/5bEovE,https://img.clickviewapp.com/v2/thumbnails/odY4oZ,https://img.clickviewapp.com/v2/thumbnails/yrqwqD,https://img.clickviewapp.com/v2/thumbnails/K6pOmR,https://img.clickviewapp.com/v2/thumbnails/vYK3w4,https://img.clickviewapp.com/v2/thumbnails/agnD88,https://img.clickviewapp.com/v2/thumbnails/4rKmp7,https://img.clickviewapp.com/v2/thumbnails/0wM4r3,https://img.clickviewapp.com/v2/thumbnails/69A2jO,https://img.clickviewapp.com/v2/thumbnails/7m3Z3e,https://img.clickviewapp.com/v2/thumbnails/3bGL94,https://img.clickviewapp.com/v2/thumbnails/Y6jwLo,https://img.clickviewapp.com/v2/thumbnails/1MyPby`.split(`,`)},Tutorial:{cv:{staging:{[b.AU]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`},[b.NZ]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`},[b.UK]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`},[b.US]:{PLAYLIST:`92095406`,SHARE:`bwXYNM`}},production:{[b.AU]:{PLAYLIST:`106743306`,SHARE:`DYXNQP`},[b.NZ]:{PLAYLIST:``,SHARE:``},[b.UK]:{PLAYLIST:`106743114`,SHARE:`DvwPAL`},[b.US]:{PLAYLIST:`106735465`,SHARE:`D6VOJX`}}},live:{staging:{[b.AU]:{PLAYLIST:`92210048`,SHARE:`DXvWdB`},[b.NZ]:{PLAYLIST:`92210048`,SHARE:`DXvWdB`},[b.UK]:{PLAYLIST:`92210048`,SHARE:`DXvWdB`},[b.US]:{PLAYLIST:`92210048`,SHARE:`DXvWdB`}},production:{[b.AU]:{PLAYLIST:`107404226`,SHARE:`bnp6en`},[b.NZ]:{PLAYLIST:`107404226`,SHARE:`bnp6en`},[b.UK]:{PLAYLIST:`107404226`,SHARE:`bnp6en`},[b.US]:{PLAYLIST:`107404226`,SHARE:`bnp6en`}}}},TutorialVideoHighlight:{analytics:{staging:{[b.US]:{VIDEO:`92095356`,SHARE:`DN8vMg`},[b.AU]:{VIDEO:`92095356`,SHARE:`DN8vMg`},[b.UK]:{VIDEO:`92095356`,SHARE:`DN8vMg`}},production:{[b.US]:{VIDEO:`107356113`,SHARE:`DNYxnm`},[b.AU]:{VIDEO:`107239339`,SHARE:`GmQgWQ`},[b.UK]:{VIDEO:`107324974`,SHARE:`bAKL6d`}}},searchAndDiscover:{staging:{[b.US]:{VIDEO:`92095348`,SHARE:`G2Ylra`},[b.AU]:{VIDEO:`92095348`,SHARE:`G2Ylra`},[b.UK]:{VIDEO:`92095348`,SHARE:`G2Ylra`}},production:{[b.US]:{VIDEO:`107310200`,SHARE:`Gp92A7`},[b.AU]:{VIDEO:`107219457`,SHARE:`GMY10v`},[b.UK]:{VIDEO:`107418074`,SHARE:`GgwWvY`}}},openClassroom:{staging:{[b.US]:{VIDEO:`92095362`,SHARE:`bwXY5w`},[b.AU]:{VIDEO:`92095362`,SHARE:`bwXY5w`},[b.UK]:{VIDEO:`92095362`,SHARE:`bwXY5w`}},production:{[b.US]:{VIDEO:`106302736`,SHARE:`Dkrvan`},[b.AU]:{VIDEO:`106898400`,SHARE:`Da9YRX`},[b.UK]:{VIDEO:`106898583`,SHARE:`G2Vxrk`}}},createClassroom:{staging:{[b.US]:{VIDEO:`92095338`,SHARE:`Gm0kXY`},[b.AU]:{VIDEO:`92095338`,SHARE:`Gm0kXY`},[b.UK]:{VIDEO:`92095338`,SHARE:`Gm0kXY`}},production:{[b.US]:{VIDEO:`102633076`,SHARE:`G2Vxvp`},[b.AU]:{VIDEO:`107239329`,SHARE:`b9dp00`},[b.UK]:{VIDEO:`107232174`,SHARE:`DYgRdV`}}},uploadVideo:{staging:{[b.US]:{VIDEO:`92095354`,SHARE:`Dk90O8`},[b.AU]:{VIDEO:`92095354`,SHARE:`Dk90O8`},[b.UK]:{VIDEO:`92095354`,SHARE:`Dk90O8`}},production:{[b.US]:{VIDEO:`106302713`,SHARE:`byNpd8`},[b.AU]:{VIDEO:`106826031`,SHARE:`GmQgXQ`},[b.UK]:{VIDEO:`106898590`,SHARE:`D6AgER`}}},playlist:{staging:{[b.US]:{VIDEO:`92095342`,SHARE:`b9P51m`},[b.AU]:{VIDEO:`92095342`,SHARE:`b9P51m`},[b.UK]:{VIDEO:`92095342`,SHARE:`b9P51m`}},production:{[b.US]:{VIDEO:`107357318`,SHARE:`DKYdz7`},[b.AU]:{VIDEO:`107221344`,SHARE:`Gp92ay`},[b.UK]:{VIDEO:`107221972`,SHARE:`GR9RxO`}}},shareVideo:{staging:{[b.US]:{VIDEO:`92095350`,SHARE:`DN8v4g`},[b.AU]:{VIDEO:`92095350`,SHARE:`DN8v4g`},[b.UK]:{VIDEO:`92095350`,SHARE:`DN8v4g`}},production:{[b.US]:{VIDEO:`106302709`,SHARE:`bwgdNk`},[b.AU]:{VIDEO:`106826023`,SHARE:`DvwPYO`},[b.UK]:{VIDEO:`106898587`,SHARE:`bzr05K`}}},welcomeToClickView:{staging:{[b.US]:{VIDEO:`92095344`,SHARE:`DaalVQ`},[b.AU]:{VIDEO:`92095342`,SHARE:`b9P51m`},[b.UK]:{VIDEO:`92095342`,SHARE:`b9P51m`}},production:{[b.US]:{VIDEO:`106302715`,SHARE:`DEleZo`},[b.AU]:{VIDEO:`107148652`,SHARE:`GR9RZL`},[b.UK]:{VIDEO:`107162361`,SHARE:`G084Qg`}}},welcomeToClickViewLive:{staging:{[b.US]:{VIDEO:`92095342`,SHARE:`b9P51m`}},production:{[b.US]:{VIDEO:`107493452`,SHARE:`bnp63m`}}}},UpsellVideo:{CLICKVIEW:`https://static.clickview.com.au/video-banners/clickview-banner.mp4`}};function Oe(e,t=!0){let n=g(re.currentUser()).data?.instanceRegion,r=g(j.config()),i=(r.data?.liteUrl.includes(`staging`)?G.TutorialVideoHighlight[e].staging:G.TutorialVideoHighlight[e].production)[n],o=(r.data?.liteUrl.includes(`staging`)?G.Tutorial.cv.staging[n]:G.Tutorial.cv.production[n])||{PLAYLIST:``,SHARE:``},{hasPermissions:s,isLoaded:c}=oe(),l=n&&i!==void 0&&c&&!s(ne.StudentExperience),u=g(l&&M.sharedVideo(i.VIDEO,i.SHARE)),d=C(a.VideoHighlight);if(!t||!Object.keys(W).includes(e))return{shouldShowVideo:l,tutorialVideo:u,videoIds:i,playlistIds:o};let f={[U.Analytics]:d.hasDismissedAnalyticsTutorial,[U.OpenClassroom]:d.hasDismissedOpenClassroomsTutorial,[U.SearchAndDiscover]:d.hasDismissedSearchAndDiscoverTutorial,[U.CreateClassroom]:d.hasDismissedClassroomsTutorial,[U.Playlist]:d.hasDismissedPlaylistsTutorial,[U.ShareVideo]:d.hasDismissedMySharesTutorial,[U.UploadVideo]:d.hasDismissedMyVideosTutorial},p=W[e];return{shouldShowVideo:l,tutorialVideo:u,videoIds:i,playlistIds:o,hasDismissedVideoHighlight:f[e]??null,dismissVideoHighlight:async()=>{!Object.keys(f).includes(e)||!p||await d.updateUserSettingAsync({name:p,value:!0,kind:se.Setting})}}}var ke={video(e,t){return{url:v.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`thumbnail`,shareId:t}),key:`video:${e}`}}},K=te(),Ae={topSearches(e,t,n,r){return{url:v.urlBuilder(`{gateway}/v1/analytics/search/top`,e),key:_e(`top:searches`,e),normalize:!1,success:t,error:n,always:r}}},je=`reportsDashboard.topSearchesCardEmptyStateV2`;function Me(){return(0,B.jsx)(`div`,{className:`d-flex align-items-center justify-content-center text-center h-100`,children:(0,B.jsx)(_,{namespace:je,phrase:`message`})})}function Ne(){return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`partial-loading-background w-50 mb-3`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-25`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-33`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-33`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-50`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-25`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-100`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-25`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-75`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-33`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`partial-loading-background mb-3 w-100`,children:`\xA0`})]})}var Pe=`reportsDashboard.topSearchesCardV2`;function Fe(){let e=N(`search`),t=g(Ae.topSearches(e)),n=I(D.getPrimarySearchUrl);return(0,B.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3`,children:t.data?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h2`,{className:`h6 mb-3`,children:(0,B.jsx)(_,{namespace:Pe,phrase:`topSearches`})}),t.data.length?(0,B.jsx)(B.Fragment,{children:(0,B.jsx)(K.Scrollbars,{className:`position-relative`,children:(0,B.jsx)(`ol`,{className:`position-absolute w-100 ps-4`,children:t.data.map((e,t)=>(0,B.jsx)(`li`,{className:`mb-3`,children:(0,B.jsxs)(`a`,{href:n(e.query),target:`_blank`,className:`position-relative d-flex justify-content-between align-items-center pe-5`,children:[(0,B.jsx)(`span`,{children:e.query}),(0,B.jsx)(`div`,{className:`position-absolute w-100 text-end opacity-0 opacity-100-hover pe-3`,children:(0,B.jsx)(ee,{svg:O})})]})},t))})})}):(0,B.jsx)(Me,{})]}):(0,B.jsx)(Ne,{})})}var Ie=`reportsDashboard.topStreamsCardEmptyState`;function Le(){return(0,B.jsx)(`div`,{className:`d-flex align-items-center justify-content-center text-center h-100`,children:(0,B.jsx)(_,{namespace:Ie,phrase:`message`})})}function Re(){return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`partial-loading-background w-50 mb-3`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`position-relative`,children:(0,B.jsx)(`ul`,{className:`list-unstyled position-absolute top-0 start-0 w-100 h-100`,children:Array(10).fill(null).map((e,t)=>(0,B.jsx)(`li`,{className:`mb-3`,children:(0,B.jsxs)(`div`,{className:`row g-0`,children:[(0,B.jsx)(`div`,{className:`col-5`,children:(0,B.jsx)(`div`,{className:`ratio ratio-16x9 rounded partial-loading-background`})}),(0,B.jsx)(`div`,{className:`col-7 d-flex align-items-center`,children:(0,B.jsxs)(`div`,{className:`mx-2 w-100`,children:[(0,B.jsx)(`div`,{className:`w-100 partial-loading-background mb-1`,children:`\xA0`}),(0,B.jsx)(`div`,{className:`w-75 partial-loading-background`,children:`\xA0`})]})})]})},t))})})]})}var q=`reportsDashboard.topStreamsCard`,ze=x.encloseNamespace(q),J=10;function Be(){let e=le(),t=N(`video-views`),n=g(he.topStreams(J,t)),r=F(n.data?.map(e=>e.objectId)??[],M.videos);return(0,B.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white overflow-hidden px-3 rounded pt-3`,children:n.hasCompleted&&!r.isFetching?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,B.jsx)(`h2`,{className:`h6 mb-3`,children:ze(`topVideos`)}),(0,B.jsx)(h,{appLink:{application:T.VIDEOS,action:w.Videos.TOP_VIDEOS},className:`text-info`,children:(0,B.jsx)(_,{namespace:q,phrase:`seeAll`})})]}),r.itemsArr?.length?(0,B.jsx)(K.Scrollbars,{className:`position-relative`,children:(0,B.jsx)(`div`,{className:`position-absolute w-100`,children:(0,B.jsx)(`ul`,{className:`list-unstyled`,children:n.data.map(t=>{let n=r.items[t.objectId];if(n)return(0,B.jsx)(`li`,{className:`mb-3`,children:(0,B.jsx)(h,{appLink:ue(n,e),children:(0,B.jsxs)(`div`,{className:`row g-0`,children:[(0,B.jsx)(`div`,{className:`col-5`,children:(0,B.jsx)(P,{video:n,imageOptions:{size:E.Small},textPosition:pe.Independent,type:`cosmetic`,hideMask:!0,size:`sm`})}),(0,B.jsx)(`div`,{className:`col-7`,children:(0,B.jsxs)(`div`,{className:`d-flex flex-column mx-2`,children:[ce.isVideoType(n)&&(0,B.jsx)(me,{type:`series`,video:n,analyticsOptions:null,className:`d-inline clamp-1`}),(0,B.jsx)(`span`,{className:`clamp-2 fw-medium`,children:n.name}),(0,B.jsx)(_,{namespace:q,phrase:`views`,options:{smartCount:t.combinedCount}})]})})]})})},n.id)})})})}):(0,B.jsx)(Le,{})]}):(0,B.jsx)(Re,{})})}var Ve={cogIcon:`_cogIcon_l8s08_1`},Y=`reportsDashboard.classroomViewsAlert`,X=x.encloseNamespace(Y);function He(e){let{alertVariant:t,dismissAlert:n}=xe(e.hasClassroomViews);return t===`none`?null:(0,B.jsxs)(`div`,{role:`alert`,className:`d-flex justify-content-between align-items-center bg-light-blue border border-info rounded p-2 mb-2`,children:[(0,B.jsx)(`div`,{className:`d-flex align-items-center gap-1 ms-1`,children:t===`info`?(0,B.jsx)(Ue,{}):(0,B.jsx)(We,{})}),(0,B.jsx)(m,{svg:y,className:`text-blue`,onClick:n})]})}function Z(){return(0,B.jsx)(m,{customSize:!0,svg:be,svgSize:p.Standard,appLink:{application:T.DEFAULT,action:w.Default.CLASSROOM_VIEWS_POPUP},className:Ve.cogIcon,tooltip:X(`settingsTitle`),tooltipTrigger:[`hover`],ariaLabel:X(`settingsTitle`)})}function Ue(){return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{className:`fw-bold`,children:(0,B.jsx)(_,{namespace:Y,phrase:`leadIn`})}),(0,B.jsx)(Z,{}),(0,B.jsx)(_,{namespace:Y,phrase:`description`}),(0,B.jsx)(`a`,{className:`text-info`,href:k.getLiteArticle(A.ClassroomViews),target:`_blank`,rel:`noopener noreferrer`,children:(0,B.jsx)(_,{namespace:Y,phrase:`link`})})]})}function We(){return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{className:`fw-bold`,children:(0,B.jsx)(_,{namespace:Y,phrase:`leadIn`})}),(0,B.jsx)(Z,{}),(0,B.jsx)(_,{namespace:Y,phrase:`reminderDescription`}),(0,B.jsx)(h,{appLink:{application:T.DEFAULT,action:w.Default.CLASSROOM_VIEWS_POPUP},className:`text-info hover-text-underline`,children:(0,B.jsx)(_,{namespace:Y,phrase:`reminderLink`})})]})}var Q={topRow:`_topRow_1oibi_1`,barChart:`_barChart_1oibi_4`,videoViews:`_videoViews_1oibi_8`,bottomRow:`_bottomRow_1oibi_12`,bottomColumn:`_bottomColumn_1oibi_15`},Ge=10,$=x.encloseNamespace(`reportsDashboard.schoolAnalyticsDashboard`);function Ke(){let e=de(),{hasStudentReach:t}=C(a.VideoHighlight),n=$(e?`tertiaryDashboard`:`dashboard`),{shouldShowVideo:r,videoIds:i,playlistIds:o,hasDismissedVideoHighlight:s,dismissVideoHighlight:c}=Oe(U.Analytics),l=g(r&&ke.video(i.VIDEO,i.SHARE)),u=I(D.getPrimaryObjectUrl),d=g(j.config()),f=D.getSharePlaylistUrl({id:ie.Primary,order:0,name:``,url:d.data?.liteUrl,imageUrl:``},o?.SHARE);return ae({title:n}),ge(n),(0,B.jsxs)(`div`,{className:`d-flex flex-column gap-3`,children:[(0,B.jsx)(He,{hasClassroomViews:t}),l?.data&&!s&&(0,B.jsx)(De,{video:l?.data,subtitle:$(`videoHighlightSubtitle`),description:$(`videoHighlightDescription`),bgColorClassName:`bg-light-blue`,supportArticle:k.getLiteArticle(A.ClassroomAnalytics),onDismiss:c,redirectUrl:u(l?.data),redirectPlaylistUrl:f,locationContext:a.VideoHighlight}),(0,B.jsxs)(`div`,{className:`d-flex gap-3 ${Q.topRow}`,children:[(0,B.jsx)(`div`,{className:Q.barChart,children:(0,B.jsx)(ve,{type:`year_group`,appLink:{application:T.VIDEOS,action:w.Videos.HOME},appLinkText:$(`seeOverview`)})}),(0,B.jsx)(`div`,{className:Q.videoViews,children:(0,B.jsx)(ye,{type:`user_type`})})]}),(0,B.jsxs)(`div`,{className:`d-flex gap-3 ${Q.bottomRow}`,children:[(0,B.jsx)(`div`,{className:Q.bottomColumn,children:(0,B.jsx)(Be,{})}),(0,B.jsx)(`div`,{className:Q.bottomColumn,children:(0,B.jsx)(R,{type:L.RootTopic,heading:$(`subjects`),appLink:{application:T.VIDEOS,action:w.Videos.HOME},appLinkText:$(`seeOverview`),emptyStateText:$(`emptySubjects`),limit:Ge})}),(0,B.jsx)(`div`,{className:Q.bottomColumn,children:(0,B.jsx)(Fe,{})})]})]})}export{Ke as SchoolAnalyticsDashboardView};
2
+ //# sourceMappingURL=CLk46QjF.chunk.js.map