@clickview/lite 0.70.1-dev.5 → 0.70.1-dev.6

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 (136) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{9583-lite-9eda71423d.chunk.css → 3878-lite-877e596a24.chunk.css} +3 -0
  3. package/dist/css/{5797-lite-1dfd2c337d.chunk.css → 5099-lite-7d7c063e62.chunk.css} +3 -0
  4. package/dist/css/{8191-lite-ee877f2ecd.chunk.css → 6984-lite-53c3fa4d18.chunk.css} +3 -0
  5. package/dist/css/{8723-lite-676baa8218.chunk.css → 7103-lite-ee0c975440.chunk.css} +3 -0
  6. package/dist/css/{7783-lite-1dfd2c337d.chunk.css → 7394-lite-7d7c063e62.chunk.css} +3 -0
  7. package/dist/css/7502-lite-9b2ed5bd56.chunk.css +4 -0
  8. package/dist/css/{5721-lite-9eda71423d.chunk.css → 7548-lite-877e596a24.chunk.css} +3 -0
  9. package/dist/css/{549-lite-b49bde8e4d.chunk.css → 7657-lite-ad909396f3.chunk.css} +3 -1
  10. package/dist/css/{6783-lite-e85973335b.chunk.css → 829-lite-27b58d07b3.chunk.css} +3 -0
  11. package/dist/css/{5635-lite-ee877f2ecd.chunk.css → 9673-lite-53c3fa4d18.chunk.css} +3 -0
  12. package/dist/scripts/1107-0fb4769540-lite.chunk.js +2 -0
  13. package/dist/scripts/1107-0fb4769540-lite.chunk.js.map +1 -0
  14. package/dist/scripts/1437-658ad1fe2b-lite.chunk.js +2 -0
  15. package/dist/scripts/1437-658ad1fe2b-lite.chunk.js.map +1 -0
  16. package/dist/scripts/1710-ef798f1e0d-lite.chunk.js +2 -0
  17. package/dist/scripts/1710-ef798f1e0d-lite.chunk.js.map +1 -0
  18. package/dist/scripts/2024-4fec8f175b-lite.chunk.js +2 -0
  19. package/dist/scripts/2024-4fec8f175b-lite.chunk.js.map +1 -0
  20. package/dist/scripts/2435-a846651e83-lite.chunk.js +2 -0
  21. package/dist/scripts/2435-a846651e83-lite.chunk.js.map +1 -0
  22. package/dist/scripts/2809-84ce060e14-lite.chunk.js +2 -0
  23. package/dist/scripts/2809-84ce060e14-lite.chunk.js.map +1 -0
  24. package/dist/scripts/3878-45fd0861cc-lite.chunk.js +2 -0
  25. package/dist/scripts/3878-45fd0861cc-lite.chunk.js.map +1 -0
  26. package/dist/scripts/4096-c834372efb-lite.chunk.js +2 -0
  27. package/dist/scripts/4096-c834372efb-lite.chunk.js.map +1 -0
  28. package/dist/scripts/4456-ada4977b41-lite.chunk.js +2 -0
  29. package/dist/scripts/4456-ada4977b41-lite.chunk.js.map +1 -0
  30. package/dist/scripts/4806-a05a2a3012-lite.chunk.js +2 -0
  31. package/dist/scripts/4806-a05a2a3012-lite.chunk.js.map +1 -0
  32. package/dist/scripts/5099-297f8cd028-lite.chunk.js +2 -0
  33. package/dist/scripts/5099-297f8cd028-lite.chunk.js.map +1 -0
  34. package/dist/scripts/5829-903613bbf0-lite.chunk.js +3 -0
  35. package/dist/scripts/5829-903613bbf0-lite.chunk.js.map +1 -0
  36. package/dist/scripts/5925-937fec8a93-lite.chunk.js +2 -0
  37. package/dist/scripts/5925-937fec8a93-lite.chunk.js.map +1 -0
  38. package/dist/scripts/6459-ac139cb154-lite.chunk.js +2 -0
  39. package/dist/scripts/6459-ac139cb154-lite.chunk.js.map +1 -0
  40. package/dist/scripts/6629-4edaed39c8-lite.chunk.js +3 -0
  41. package/dist/scripts/6629-4edaed39c8-lite.chunk.js.map +1 -0
  42. package/dist/scripts/6984-9d8b378bcc-lite.chunk.js +2 -0
  43. package/dist/scripts/6984-9d8b378bcc-lite.chunk.js.map +1 -0
  44. package/dist/scripts/7103-ef79582538-lite.chunk.js +2 -0
  45. package/dist/scripts/7103-ef79582538-lite.chunk.js.map +1 -0
  46. package/dist/scripts/7394-5448807e14-lite.chunk.js +2 -0
  47. package/dist/scripts/7394-5448807e14-lite.chunk.js.map +1 -0
  48. package/dist/scripts/7502-78b085caad-lite.chunk.js +2 -0
  49. package/dist/scripts/7502-78b085caad-lite.chunk.js.map +1 -0
  50. package/dist/scripts/7548-5eb0d3b7a0-lite.chunk.js +2 -0
  51. package/dist/scripts/7548-5eb0d3b7a0-lite.chunk.js.map +1 -0
  52. package/dist/scripts/7593-cc4e09c847-lite.chunk.js +2 -0
  53. package/dist/scripts/7593-cc4e09c847-lite.chunk.js.map +1 -0
  54. package/dist/scripts/7657-e302fda4f2-lite.chunk.js +2 -0
  55. package/dist/scripts/7657-e302fda4f2-lite.chunk.js.map +1 -0
  56. package/dist/scripts/8057-431c6be34c-lite.chunk.js +2 -0
  57. package/dist/scripts/8057-431c6be34c-lite.chunk.js.map +1 -0
  58. package/dist/scripts/8224-b9b5d3b1a5-lite.chunk.js +2 -0
  59. package/dist/scripts/8224-b9b5d3b1a5-lite.chunk.js.map +1 -0
  60. package/dist/scripts/829-aff9937989-lite.chunk.js +3 -0
  61. package/dist/scripts/829-aff9937989-lite.chunk.js.map +1 -0
  62. package/dist/scripts/{9250-ec244ab17a-lite.chunk.js → 8723-708f2373d6-lite.chunk.js} +3 -3
  63. package/dist/scripts/{9250-ec244ab17a-lite.chunk.js.map → 8723-708f2373d6-lite.chunk.js.map} +1 -1
  64. package/dist/scripts/8960-c159492ba3-lite.chunk.js +2 -0
  65. package/dist/scripts/8960-c159492ba3-lite.chunk.js.map +1 -0
  66. package/dist/scripts/9673-8a2740611a-lite.chunk.js +2 -0
  67. package/dist/scripts/9673-8a2740611a-lite.chunk.js.map +1 -0
  68. package/dist/scripts/9882-f1a9cc55ec-lite.chunk.js +2 -0
  69. package/dist/scripts/9882-f1a9cc55ec-lite.chunk.js.map +1 -0
  70. package/dist/scripts/{bundle-d2cf17c78d.min.js → bundle-5a89651ec2.min.js} +3 -3
  71. package/dist/scripts/{bundle-d2cf17c78d.min.js.map → bundle-5a89651ec2.min.js.map} +1 -1
  72. package/package.json +1 -1
  73. package/dist/css/7428-lite-e2d7497beb.chunk.css +0 -8
  74. package/dist/scripts/1565-ba78a2a25c-lite.chunk.js +0 -2
  75. package/dist/scripts/1565-ba78a2a25c-lite.chunk.js.map +0 -1
  76. package/dist/scripts/2024-abf6cf1842-lite.chunk.js +0 -2
  77. package/dist/scripts/2024-abf6cf1842-lite.chunk.js.map +0 -1
  78. package/dist/scripts/2072-50b656cb3b-lite.chunk.js +0 -2
  79. package/dist/scripts/2072-50b656cb3b-lite.chunk.js.map +0 -1
  80. package/dist/scripts/2574-02faf4a2d2-lite.chunk.js +0 -2
  81. package/dist/scripts/2574-02faf4a2d2-lite.chunk.js.map +0 -1
  82. package/dist/scripts/396-2ffc09cc70-lite.chunk.js +0 -2
  83. package/dist/scripts/396-2ffc09cc70-lite.chunk.js.map +0 -1
  84. package/dist/scripts/4377-001a8ee263-lite.chunk.js +0 -2
  85. package/dist/scripts/4377-001a8ee263-lite.chunk.js.map +0 -1
  86. package/dist/scripts/4806-c2dce3650d-lite.chunk.js +0 -2
  87. package/dist/scripts/4806-c2dce3650d-lite.chunk.js.map +0 -1
  88. package/dist/scripts/4948-30af9a446d-lite.chunk.js +0 -2
  89. package/dist/scripts/4948-30af9a446d-lite.chunk.js.map +0 -1
  90. package/dist/scripts/549-2d591052e3-lite.chunk.js +0 -2
  91. package/dist/scripts/549-2d591052e3-lite.chunk.js.map +0 -1
  92. package/dist/scripts/5635-6e2559f04d-lite.chunk.js +0 -2
  93. package/dist/scripts/5635-6e2559f04d-lite.chunk.js.map +0 -1
  94. package/dist/scripts/5679-80c1d8434e-lite.chunk.js +0 -2
  95. package/dist/scripts/5679-80c1d8434e-lite.chunk.js.map +0 -1
  96. package/dist/scripts/5721-2141ed4fb6-lite.chunk.js +0 -2
  97. package/dist/scripts/5721-2141ed4fb6-lite.chunk.js.map +0 -1
  98. package/dist/scripts/5797-f84ce545b9-lite.chunk.js +0 -2
  99. package/dist/scripts/5797-f84ce545b9-lite.chunk.js.map +0 -1
  100. package/dist/scripts/581-fe733617bd-lite.chunk.js +0 -2
  101. package/dist/scripts/581-fe733617bd-lite.chunk.js.map +0 -1
  102. package/dist/scripts/5829-689f5be5d1-lite.chunk.js +0 -3
  103. package/dist/scripts/5829-689f5be5d1-lite.chunk.js.map +0 -1
  104. package/dist/scripts/6046-5652117548-lite.chunk.js +0 -2
  105. package/dist/scripts/6046-5652117548-lite.chunk.js.map +0 -1
  106. package/dist/scripts/6629-910e316a83-lite.chunk.js +0 -3
  107. package/dist/scripts/6629-910e316a83-lite.chunk.js.map +0 -1
  108. package/dist/scripts/6783-7efd15103a-lite.chunk.js +0 -3
  109. package/dist/scripts/6783-7efd15103a-lite.chunk.js.map +0 -1
  110. package/dist/scripts/7064-f5e8bc71bc-lite.chunk.js +0 -2
  111. package/dist/scripts/7064-f5e8bc71bc-lite.chunk.js.map +0 -1
  112. package/dist/scripts/7428-546d62999f-lite.chunk.js +0 -2
  113. package/dist/scripts/7428-546d62999f-lite.chunk.js.map +0 -1
  114. package/dist/scripts/7482-9016f79093-lite.chunk.js +0 -2
  115. package/dist/scripts/7482-9016f79093-lite.chunk.js.map +0 -1
  116. package/dist/scripts/7757-9b72774917-lite.chunk.js +0 -2
  117. package/dist/scripts/7757-9b72774917-lite.chunk.js.map +0 -1
  118. package/dist/scripts/7783-18da4064c0-lite.chunk.js +0 -2
  119. package/dist/scripts/7783-18da4064c0-lite.chunk.js.map +0 -1
  120. package/dist/scripts/8191-ff27deee6c-lite.chunk.js +0 -2
  121. package/dist/scripts/8191-ff27deee6c-lite.chunk.js.map +0 -1
  122. package/dist/scripts/8672-094d54cbbd-lite.chunk.js +0 -2
  123. package/dist/scripts/8672-094d54cbbd-lite.chunk.js.map +0 -1
  124. package/dist/scripts/8723-c3aaa1643a-lite.chunk.js +0 -2
  125. package/dist/scripts/8723-c3aaa1643a-lite.chunk.js.map +0 -1
  126. package/dist/scripts/9583-3b2623e754-lite.chunk.js +0 -2
  127. package/dist/scripts/9583-3b2623e754-lite.chunk.js.map +0 -1
  128. /package/dist/css/{4377-lite-856c02f000.chunk.css → 1107-lite-856c02f000.chunk.css} +0 -0
  129. /package/dist/css/{581-lite-a1cdc302ab.chunk.css → 1437-lite-a1cdc302ab.chunk.css} +0 -0
  130. /package/dist/css/{7757-lite-856c02f000.chunk.css → 4456-lite-856c02f000.chunk.css} +0 -0
  131. /package/dist/css/{9250-lite-37216d4207.chunk.css → 8723-lite-37216d4207.chunk.css} +0 -0
  132. /package/dist/scripts/{5829-689f5be5d1-lite.chunk.js.LICENSE.txt → 5829-903613bbf0-lite.chunk.js.LICENSE.txt} +0 -0
  133. /package/dist/scripts/{6629-910e316a83-lite.chunk.js.LICENSE.txt → 6629-4edaed39c8-lite.chunk.js.LICENSE.txt} +0 -0
  134. /package/dist/scripts/{6783-7efd15103a-lite.chunk.js.LICENSE.txt → 829-aff9937989-lite.chunk.js.LICENSE.txt} +0 -0
  135. /package/dist/scripts/{9250-ec244ab17a-lite.chunk.js.LICENSE.txt → 8723-708f2373d6-lite.chunk.js.LICENSE.txt} +0 -0
  136. /package/dist/scripts/{bundle-d2cf17c78d.min.js.LICENSE.txt → bundle-5a89651ec2.min.js.LICENSE.txt} +0 -0
@@ -1,3 +0,0 @@
1
- /*! For license information please see 6783-7efd15103a-lite.chunk.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6783],{84621:(e,t,n)=>{n.d(t,{L:()=>a});var r=n(32735),o=n(83914);const i={icon:"sAmpy",count:"faDs4"};function a(e){return r.createElement("section",{className:"d-flex flex-column border rounded p-3 h-100"},r.createElement("div",{className:"d-flex ".concat(e.subtitle?"align-items-top":"align-items-center"," mb-2")},r.createElement("div",{className:"".concat(i.icon," ").concat(e.svgClassName," rounded-circle d-flex justify-content-center align-items-center")},r.createElement(o.x,{svgName:e.svgName,size:o.S.Small})),r.createElement("div",{className:"d-flex flex-column ms-2"},r.createElement("h2",{className:"h6 mb-0"},e.title)),"number"==typeof e.count&&r.createElement("div",{className:"".concat(i.count," d-flex justify-content-center align-items-center bg-light rounded-circle ms-auto")},e.count)),e.children)}},70072:(e,t,n)=>{n.d(t,{d:()=>r});var r={fontSize:"12px",fontFamily:'"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"',fontWeight:"400",color:"#313543"}},35274:(e,t,n)=>{n.d(t,{w:()=>De});var r=n(32735),o=n(50938),i=n(23481),a=n(84621),l=n(40782);function c(e){return r.createElement(l.O,{layout:e.layout,className:e.className,percentage:0,customLabel:"--%"})}var u=n(83345),s=n(35223),f="shared.insightAmountWatched",p=i.T.encloseNamespace(f);function h(e){var t,n=(null===(t=e.engagement)||void 0===t?void 0:t.engagementRate)>0?e.engagement.engagementRate:null,o=Math.round(100*e.engagement.engagementRate),i=!e.params.users&&!e.params.classrooms&&!e.params.classroomGroups;return r.createElement(a.L,{title:p("title"),svgName:s.vn.Timer,svgClassName:"bg-light-green text-green"},r.createElement("div",{className:"d-flex flex-column align-items-center my-auto gap-2"},!!e.engagement&&r.createElement(r.Fragment,null,r.createElement(l.O,{percentage:n,layout:l.I.LabelInside}),r.createElement("p",{className:"text-center"},"number"==typeof n?i?r.createElement(u.x,{namespace:f,phrase:"everyoneWatched",options:{percentage:o}}):r.createElement(u.x,{namespace:f,phrase:"usersWatched",options:{percentage:o}}):r.createElement(u.x,{namespace:f,phrase:"notWatched"}))),!e.engagement&&r.createElement(r.Fragment,null,r.createElement(c,{layout:l.I.LabelInside}))))}var y=n(72306),d=n.n(y),m=n(70312),v=n.n(m),g=n(70072),b=n(75896),w=["#FF9300","#38A2E8","#7A76E8","#B679C7","#F7847B","#D9584F","#FFCD52","#5DC786","#40BCC3","#40C2BB"];function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var O=n(97958),j="shared.insightTotalViews",S=i.T.encloseNamespace(j),P={title:{text:null},credits:{enabled:!1},chart:{backgroundColor:"transparent",spacing:[0,0,0,0]},legend:{itemStyle:g.d,itemDistance:8},plotOptions:{pie:{allowPointSelect:!0,cursor:"pointer",dataLabels:{enabled:!1},showInLegend:!0,borderWidth:0,size:"80%"}}};function k(e){var t,n,o,i,l,c,f,p=function(e){var t,n,r=e.findIndex((function(e){return"Staff"===e.name}));if(r>-1){var o=(t=e.splice(r,1),n=1,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return E(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?E(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];e.push(o)}return e.sort((function(e,t){var n,r;return parseInt(null===(n=e.name.match(/\d+/))||void 0===n?void 0:n[0])-parseInt(null===(r=t.name.match(/\d+/))||void 0===r?void 0:r[0])}))}((o=e.events,i=[],l=function(e){return"Unknown"===e?"Staff":e},c={},null==(f=o["yearGroupCount"])||f.forEach((function(e){var t;e.name&&!(null==i?void 0:i.includes(e.name.toLowerCase()))&&(c[e.name]=null!==(t=c[e.name])&&void 0!==t?t:0,c[e.name]+=e.count)})),b.m.sortBy(Object.keys(c).map((function(e){return{name:l?l(e):e,y:c[e],type:"pie"}})),"name").map((function(e,t){return Object.assign(Object.assign({},e),{color:w[t%w.length]})})))),h=null!==(n=null==(t=p)?void 0:t.reduce((function(e,t){return e+t.y}),0))&&void 0!==n?n:null;return r.createElement(a.L,{title:S("title"),svgClassName:"bg-light-blue text-blue",svgName:s.vn.VisibleOn},(null==p?void 0:p.length)?r.createElement(r.Fragment,null,r.createElement("p",{className:"mb-0"},r.createElement(u.x,{namespace:j,phrase:"totalViews",options:{totalViews:h}})),r.createElement("div",{className:"d-flex justify-content-center h-75"},r.createElement(v(),{highcharts:d(),options:function(e){return Object.assign(Object.assign({},P),{series:[{type:"pie",name:S("title"),data:e}]})}(p),containerProps:{className:"w-100"}}))):r.createElement(O.u,{className:"pt-0 my-auto"},r.createElement(O.u.Image,{src:e.emptyStateImage,className:"w-75 h-auto"}),r.createElement(O.u.Heading,{className:"h4"},r.createElement(u.x,{namespace:j,phrase:"noViews"})),r.createElement(O.u.Info,{className:"w-100"},r.createElement(u.x,{namespace:j,phrase:"notWatched"}))))}var C=n(49475),x=n(99742);const T={partialInsights:"nKLWa",videoContainer:"WF2iA"};function N(){return r.createElement("div",null,r.createElement("div",{className:"row g-3 mb-3"},r.createElement("div",{className:"col"},r.createElement("div",{className:"".concat(T.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:"col"},r.createElement("div",{className:"".concat(T.partialInsights," rounded partial-loading-background")})),r.createElement("div",{className:T.videoContainer},r.createElement("div",{className:"".concat(T.partialInsights," rounded partial-loading-background")}))),r.createElement("div",{className:"row g-3 mb-5"},r.createElement("div",{className:"col-12"},r.createElement("div",{className:"".concat(T.partialInsights," rounded partial-loading-background")}))))}var _=n(38307),L=n(8604),I=n(3596),M=n(41386),A=n(76032);function R(e){return R="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},R(e)}function D(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,B(r.key),r)}}function B(e){var t=function(e){if("object"!=R(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=R(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==R(t)?t:t+""}function F(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(F=function(){return!!e})()}function H(){return H="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=V(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},H.apply(null,arguments)}function V(e){return V=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},V(e)}function U(e,t){return U=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},U(e,t)}var z=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=V(t),function(e,t){if(t&&("object"==R(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,F()?Reflect.construct(t,n||[],V(e).constructor):t.apply(e,n))}(this,t,[e,n])).overlayVisible=n.overlayVisible,r.toggle(r.overlayVisible),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&U(e,t)}(t,e),n=t,r=[{key:"handleToggle",value:function(){this.toggle(!this.overlayVisible)}},{key:"toggle",value:function(e){e?this.toggleOn():this.toggleOff()}},{key:"toggleOn",value:function(){A.Z.dom.addClass(this.toggleEl,"on"),this.overlayVisible=!0,this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible),this.player().addClass("cv-reports-player-overlay-visible")}},{key:"toggleOff",value:function(){A.Z.dom.removeClass(this.toggleEl,"on"),this.overlayVisible=!1,this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible),this.player().removeClass("cv-reports-player-overlay-visible")}},{key:"handleClick",value:function(e){e.stopImmediatePropagation()}},{key:"createEl",value:function(e,n,r){this.handlerBound||(this.handleToggle=this.handleToggle.bind(this),this.handlerBound=!0),this.toggleEl&&this.toggleEl.removeEventListener("click",this.handleToggle),this.toggleEl=A.Z.dom.createEl("div",{className:"custom-toggle custom-toggle-info toggle-option float-end",innerHTML:'<span class="handle"></span></div>'}),this.toggleEl.addEventListener("click",this.handleToggle);var o,i,a,l=(o=t,i=this,"function"==typeof(a=H(V(1&3?o.prototype:o),"createEl",i))?function(e){return a.apply(i,e)}:a)([e,{className:"vjs-menu-item cv-cog-menu-item",innerHTML:'\n <span class="vjs-menu-item-text">Heat Map</span>\n <span class="cv-toggle-container"></span>'},r]);return l.children[1].appendChild(this.toggleEl),l}}],r&&D(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(A.Z.getComponent("MenuItem"));A.Z.registerComponent("EngagementOverlayMenuItem",z);var W=n(74161),Z=n(86572);function G(e){var t,n=e.interactive.timepoints.find((function(t){var n=t.visibleAt/1e3;return Math.floor(e.time)===Math.floor(n)||Math.ceil(e.time)===Math.ceil(n)}));if(!(null===(t=null==n?void 0:n.interactions)||void 0===t?void 0:t.length))return r.createElement(r.Fragment,null);var o=n.interactions.length>3?n.interactions.slice(0,2):n.interactions,i=n.interactions.length-o.length;return r.createElement("div",{className:"d-flex justify-content-end ms-2"},o.map((function(e,t){return r.createElement(Z.y,{key:t,interaction:e,showQuestion:!1,iconClassName:"ms-1"})})),!!i&&r.createElement("div",{className:"interaction-type-icon d-flex justify-content-center align-items-center border border-dark text-body ms-1"},"+".concat(i)))}var K=n(42503);function Y(e){return function(e){if(Array.isArray(e))return q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return q(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?q(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Q={title:{text:null},xAxis:{visible:!1,minPadding:0,maxPadding:0},legend:{enabled:!1},credits:{enabled:!1},defs:{gradient:{tagName:"linearGradient",id:"area-gradient",x1:0,y1:1,x2:0,y2:0,children:[{tagName:"stop",offset:0},{tagName:"stop",offset:1}]}}};function X(e,t){return{styledMode:!0,spacing:[15,0,0,0],width:e,height:t}}function $(e){return $="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$(e)}function J(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,ee(r.key),r)}}function ee(e){var t=function(e){if("object"!=$(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=$(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==$(t)?t:t+""}function te(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(te=function(){return!!e})()}function ne(){return ne="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=re(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},ne.apply(null,arguments)}function re(e){return re=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},re(e)}function oe(e,t){return oe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},oe(e,t)}var ie=A.Z.getComponent("Component");d().AST.allowedTags.push("g"),d().AST.allowedAttributes.push("viewBox","transform");var ae=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=re(t),function(e,t){if(t&&("object"==$(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,te()?Reflect.construct(t,n||[],re(e).constructor):t.apply(e,n))}(this,t,[e,n])).initialize(),r.bindListeners(),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&oe(e,t)}(t,e),n=t,o=[{key:"initialize",value:function(){var e=this;this.player().ready((function(){return e.buildChart()}))}},{key:"buildCSSClass",value:function(){return"cv-engagement-overlay"}},{key:"createEl",value:function(e,n,r){var o,i,a;return(o=t,i=this,"function"==typeof(a=ne(re(1&3?o.prototype:o),"createEl",i))?function(e){return a.apply(i,e)}:a)([e,Object.assign(Object.assign({},n),{className:this.buildCSSClass(),innerHTML:'<div class="cv-engagement-chart"></div><div class="cv-engagement-timepoint-indicator"></div>'}),r])}},{key:"toggleChart",value:function(e){e?this.buildChart():this.destroyChart()}},{key:"bindListeners",value:function(){var e=this;this.handleClick=this.handleClick.bind(this),this.resizeChart=this.resizeChart.bind(this),this.player().on("playerresize",this.resizeChart),this.on(this.el(),"mouseup",this.handleClick),this.player().on("dispose",(function(){e.player().off("playerresize",e.resizeChart),e.off(e.el(),"mouseup",e.handleClick)}))}},{key:"handleClick",value:function(e){A.Z.dom.isSingleLeftClick(e)&&(this.player().paused()?this.player().play():this.player().pause())}},{key:"buildChart",value:function(){var e=this;if(!this.chart){var t=this.getChartDimensions();if(t){var n=this.el().querySelector(".cv-engagement-chart");this.chart=d().chart(n,this.getHighchartOptions(t))}else this.player().one("play",(function(){return e.buildChart()}))}}},{key:"resizeChart",value:function(){var e=this.getChartDimensions();this.chart&&e&&this.chart.setSize(e.width,e.height)}},{key:"destroyChart",value:function(){var e;null===(e=this.chart)||void 0===e||e.destroy(),this.chart=null}},{key:"getChartDimensions",value:function(){var e=this.player().getChild("collapserator"),t=null==e?void 0:e.currentHeight(),n=this.el().clientWidth;return t&&n?{width:n,height:this.player().currentDimensions().height-t}:null}},{key:"getHighchartOptions",value:function(e){var t,n,o,i=e.width,a=e.height;return Object.assign(Object.assign({},Q),{chart:X(i,a),yAxis:(n=this.options_.heatMap,{max:1.05*Math.max.apply(Math,Y(n)),min:0,minPadding:0,maxPadding:0,allowDecimals:!0,startOnTick:!1,endOnTick:!1,visible:!1}),tooltip:(o=this.options_.interactive,{formatter:function(){var e=o?function(e,t){return(0,W.renderToStaticMarkup)(r.createElement(G,{time:t,interactive:e}))}(o,this.x):"";return'<div class="cv-engagement-tooltip bg-white rounded"><div class="d-flex justify-content-between">'+"<strong>".concat((0,K.m)(this.x),"</strong>")+"".concat(e)+'</div><div class="d-flex justify-content-between rounded bg-light cv-view-count-container">'+'<strong>Views</strong> <span class="cv-view-count">'.concat(this.y,"</span>")+"</div></div>"},positioner:function(e,t,n){var r=this.chart.plotWidth-e,o=n.plotX-e/2;return{x:Math.min(Math.max(o,0),r),y:this.chart.plotTop}},useHTML:!0,padding:0}),plotOptions:(t=this.moveTimepointIndicator.bind(this),{area:{point:{events:{mouseOver:function(){t(this.x)},mouseOut:function(){t(null)}}}},series:{marker:{enabled:!1}}}),series:[{type:"area",data:this.options_.heatMap}]})}},{key:"moveTimepointIndicator",value:function(e){this.options_.onTimepointHover&&this.options_.onTimepointHover(e);var t=this.el().querySelector(".cv-engagement-timepoint-indicator");null!==e?(A.Z.dom.addClass(t,"cv-engagement-timepoint-indicator-visible"),t.style.left="".concat(e/this.options_.heatMap.length*100,"%")):A.Z.dom.removeClass(t,"cv-engagement-timepoint-indicator-visible")}}],o&&J(n.prototype,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,o}(ie);function le(e){return le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},le(e)}function ce(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,ue(r.key),r)}}function ue(e){var t=function(e){if("object"!=le(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=le(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==le(t)?t:t+""}function se(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(se=function(){return!!e})()}function fe(e){return fe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},fe(e)}function pe(e,t){return pe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},pe(e,t)}A.Z.registerComponent("EngagementOverlay",ae);var he=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=fe(t),function(e,t){if(t&&("object"==le(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,se()?Reflect.construct(t,n||[],fe(e).constructor):t.apply(e,n))}(this,t,[e,n])).options=n,e.ready((function(){r.initialize()})),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&pe(e,t)}(t,e),n=t,(r=[{key:"initialize",value:function(){var e;this.hasHeatMapData()&&(this.player.addChild("engagementOverlay",{heatMap:this.options.heatMap,interactive:this.options.interactive,onTimepointHover:this.options.onTimepointHover}),(null===(e=this.player.getChild("collapserator"))||void 0===e?void 0:e.getChild("cogButton")).addItem({index:0,ctor:z,name:"EngagementOverlayMenuItem",options:{overlayVisible:!0}}))}},{key:"toggleOverlay",value:function(e){var t=this.player.getChild("engagementOverlay");null==t||t.toggleChart(e)}},{key:"hasHeatMapData",value:function(){var e;return(null===(e=this.options.heatMap)||void 0===e?void 0:e.reduce((function(e,t){return e+t}),0))>0}}])&&ce(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(A.Z.getPlugin("plugin"));A.Z.registerPlugin("engagementOverlayPlugin",he),n(16852);var ye=n(4271),de=n(10463);function me(e){return me="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},me(e)}function ve(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,ge(r.key),r)}}function ge(e){var t=function(e){if("object"!=me(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=me(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==me(t)?t:t+""}function be(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(be=function(){return!!e})()}function we(e){return we=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},we(e)}function Ee(e,t){return Ee=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Ee(e,t)}n(6994);var Oe=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=we(t),function(e,t){if(t&&("object"==me(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,be()?Reflect.construct(t,n||[],we(e).constructor):t.apply(e,n))}(this,t,[e])).options=n,r.player.one("loadedmetadata",(function(){return r.player.ready(r.initialize.bind(r))})),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Ee(e,t)}(t,e),n=t,(r=[{key:"initialize",value:function(){de.O.useMetadataTrack(this.player,"interactive",this.onTrackLoaded.bind(this)),this.player.addClass("cv-interactive-plugin")}},{key:"onTrackLoaded",value:function(e){this.addChildren(e)}},{key:"addChildren",value:function(e){this.player.controlBar.getChild("progressControl").getChild("SeekBar").addChild(new ye.N(this.player,{interactive:this.options.interactive,track:e}))}}])&&ve(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(A.Z.getPlugin("plugin"));function je(e){return je="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},je(e)}function Se(){Se=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",l=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function s(e,t,n,r){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),l=new N(r||[]);return o(a,"_invoke",{value:k(e,n,l)}),a}function f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=s;var p="suspendedStart",h="suspendedYield",y="executing",d="completed",m={};function v(){}function g(){}function b(){}var w={};u(w,a,(function(){return this}));var E=Object.getPrototypeOf,O=E&&E(E(_([])));O&&O!==n&&r.call(O,a)&&(w=O);var j=b.prototype=v.prototype=Object.create(w);function S(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function P(e,t){function n(o,i,a,l){var c=f(e[o],e,i);if("throw"!==c.type){var u=c.arg,s=u.value;return s&&"object"==je(s)&&r.call(s,"__await")?t.resolve(s.__await).then((function(e){n("next",e,a,l)}),(function(e){n("throw",e,a,l)})):t.resolve(s).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,l)}))}l(c.arg)}var i;o(this,"_invoke",{value:function(e,r){function o(){return new t((function(t,o){n(e,r,t,o)}))}return i=i?i.then(o,o):o()}})}function k(t,n,r){var o=p;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===d){if("throw"===i)throw a;return{value:e,done:!0}}for(r.method=i,r.arg=a;;){var l=r.delegate;if(l){var c=C(l,r);if(c){if(c===m)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===p)throw o=d,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=y;var u=f(t,n,r);if("normal"===u.type){if(o=r.done?d:h,u.arg===m)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(o=d,r.method="throw",r.arg=u.arg)}}}function C(t,n){var r=n.method,o=t.iterator[r];if(o===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,C(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),m;var i=f(o,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,m;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,m):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,m)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function _(t){if(t||""===t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,i=function n(){for(;++o<t.length;)if(r.call(t,o))return n.value=t[o],n.done=!1,n;return n.value=e,n.done=!0,n};return i.next=i}}throw new TypeError(je(t)+" is not iterable")}return g.prototype=b,o(j,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:g,configurable:!0}),g.displayName=u(b,c,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===g||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,u(e,c,"GeneratorFunction")),e.prototype=Object.create(j),e},t.awrap=function(e){return{__await:e}},S(P.prototype),u(P.prototype,l,(function(){return this})),t.AsyncIterator=P,t.async=function(e,n,r,o,i){void 0===i&&(i=Promise);var a=new P(s(e,n,r,o),i);return t.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},S(j),u(j,c,"Generator"),u(j,a,(function(){return this})),u(j,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=_,N.prototype={constructor:N,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(T),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function o(r,o){return l.type="throw",l.arg=t,n.next=r,o&&(n.method="next",n.arg=e),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],l=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,m):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),m},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),T(n),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;T(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:_(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),m}},t}function Pe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,ke(r.key),r)}}function ke(e){var t=function(e){if("object"!=je(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=je(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==je(t)?t:t+""}function Ce(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(Ce=function(){return!!e})()}function xe(){return xe="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=Te(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},xe.apply(null,arguments)}function Te(e){return Te=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Te(e)}function Ne(e,t){return Ne=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Ne(e,t)}A.Z.registerPlugin("interactiveSeekBarPlugin",Oe);var _e=function(e){function t(e,n){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t,n){return t=Te(t),function(e,t){if(t&&("object"==je(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Ce()?Reflect.construct(t,n||[],Te(e).constructor):t.apply(e,n))}(this,t,[e,n])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Ne(e,t)}(t,e),n=t,r=[{key:"getPlayerClassName",value:function(){return"cv-reports-player"}},{key:"getAnalyticsPlayerType",value:function(){return"reports-player"}},{key:"additionalSetup",value:function(e){var n,r,o,i,a=this,l=Object.create(null,{additionalSetup:{get:function(){return e=t,n=a,xe(Te(1&1?e.prototype:e),"additionalSetup",n);var e,n}}});return n=this,r=void 0,o=void 0,i=Se().mark((function t(){return Se().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:l.additionalSetup.call(this,e),this.setupEngagementOverlayPlugin(e),this.setupUpClipPlugin(e),this.setupInteractiveSeekBarPlugin(e);case 4:case"end":return t.stop()}}),t,this)})),new(o||(o=Promise))((function(e,t){function a(e){try{c(i.next(e))}catch(e){t(e)}}function l(e){try{c(i.throw(e))}catch(e){t(e)}}function c(t){var n;t.done?e(t.value):(n=t.value,n instanceof o?n:new o((function(e){e(n)}))).then(a,l)}c((i=i.apply(n,r||[])).next())}))}},{key:"setupEngagementOverlayPlugin",value:function(e){var t;this.player.engagementOverlayPlugin({heatMap:this.options.heatMap,interactive:null===(t=e.additionalData)||void 0===t?void 0:t.interactive,onTimepointHover:this.options.onTimepointHover})}},{key:"setupUpClipPlugin",value:function(e){var t,n,r="MasterClip"===e.mediaType,o="MasterInteractive"===e.mediaType;if((r||o)&&(r&&(n=e.additionalData),!o||(n=null===(t=e.additionalData)||void 0===t?void 0:t.clipData))){if(!n)throw Error("Invalid clip data");this.player.clipPlugin({startTime:n.startTime,endTime:n.endTime})}}},{key:"setupInteractiveSeekBarPlugin",value:function(e){var t,n,r=null===(t=e.additionalData)||void 0===t?void 0:t.interactive;(null===(n=e.additionalData)||void 0===n?void 0:n.interactive)&&(this.track=M.h.getInteractiveTrack(this.player,e),this.player.interactiveSeekBarPlugin({interactive:r}))}},{key:"getSeekBarOptions",value:function(){return{ignoreChapters:!0}}}],r&&Pe(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(I.r);function Le(e){var t=r.useRef(null),n=r.useRef(null);return r.useEffect((function(){n.current=new _e(t.current,e)}),[]),r.createElement("div",{ref:t})}const Ie={playerContainer:"fGWsk",playerPlaceholder:"v1MjE",heatMap:"lp1Yn",heatMapTimepointIndicator:"yOOK6",heatMapTimepointIndicatorVisible:"rTXmB",partialLoadingContainer:"gW1HU"};var Me=i.T.encloseNamespace("shared.videoEngagementOverlay");function Ae(e){var t=r.useRef(null),n=(0,L.O)(e.engagement);return r.createElement("div",{className:"bg-white border rounded overflow-hidden h-100"},r.createElement("div",{className:"position-relative"},r.createElement("div",{className:Ie.playerPlaceholder}),r.createElement("div",{className:Ie.playerContainer},r.createElement(Le,{viewKey:e.viewKey,playerApi:new URL(e.playerApiUrl),hotkeyElQuerySelector:"body",heatMap:n,onTimepointHover:function(e){var r=t.current;r&&(null!==e?(r.classList.add(Ie.heatMapTimepointIndicatorVisible),r.style.left="".concat(e/n.length*100,"%")):r.classList.remove(Ie.heatMapTimepointIndicatorVisible))},aspectRatio:"16:9"}))),r.createElement("div",{className:"p-3"},r.createElement("div",{className:"position-relative"},r.createElement(_.c,{engagement:e.engagement,className:Ie.heatMap}),r.createElement("div",{ref:t,className:Ie.heatMapTimepointIndicator})),r.createElement("div",{className:"d-flex justify-content-between mt-2"},r.createElement("strong",null,Me("heatmap")),r.createElement("div",{className:"w-33"},r.createElement(_.l,null)))))}const Re={videoContainer:"cpl68"};function De(e){var t;return r.createElement(r.Fragment,null,!e.hasDataLoaded&&r.createElement(N,null),r.createElement("div",{className:"row g-3 mb-3"},e.hasDataLoaded&&r.createElement(r.Fragment,null,r.createElement("div",{className:"col"},r.createElement(k,{events:e.videoViews,emptyStateImage:x.W.EmptyStates.MY_VIDEOS})),r.createElement("div",{className:"col"},r.createElement(h,{engagement:e.aggregateEngagement,params:e.audienceAppLinkParams})),r.createElement("div",{className:Re.videoContainer},r.createElement(Ae,{engagement:e.aggregateEngagement,viewKey:e.viewKey.viewKey,playerApiUrl:e.config.playerApiUrl,imageCdnUrl:e.config.imageCdnUrl}))),e.tableDataLoaded&&r.createElement("div",{className:"col-12"},r.createElement(o.z,{key:(0,C.u)(Object.assign(Object.assign({},e.audienceAppLinkParams),e.dateRangeAppLinkParams)),engagement:e.individualEngagement.data,users:e.users,imageCdnUrl:null===(t=e.config)||void 0===t?void 0:t.imageCdnUrl,anonymiseUsers:e.anonymiseUsers,border:!0,anonSessions:e.anonSessions}))))}}}]);
3
- //# sourceMappingURL=6783-7efd15103a-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/6783-7efd15103a-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/components/insight-card/insight-card.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insight-card/InsightCard.tsx","file:///app/packages/libs/shared/src/apps/analytics/constants/ChartStyles.ts","file:///app/packages/libs/shared/src/components/percentage-indicator/PartialPercentageIndicator.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/amount-watched/InsightAmountWatched.tsx","file:///app/packages/libs/shared/src/apps/analytics/utils/ChartColourUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/components/insights/total-views/InsightTotalViews.tsx","file:///app/packages/libs/shared/src/apps/analytics/utils/SharedUserActivityPieChartUtils.ts","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-heatmap/partial-loading/partial-insights-heatmap.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-heatmap/partial-loading/PartialInsightsHeatmap.tsx","file:///app/packages/projects/player/src/plugins/engagement-overlay-plugin/components/engagement-overlay-menu-item/engagement-overlay-menu-item.ts","file:///app/packages/projects/player/src/plugins/engagement-overlay-plugin/components/timepoint-interactions/timepoint-interactions.tsx","file:///app/packages/projects/player/src/plugins/engagement-overlay-plugin/components/engagement-overlay/engagement-overlay-chart-options.tsx","file:///app/packages/projects/player/src/plugins/engagement-overlay-plugin/components/engagement-overlay/engagement-overlay.ts","file:///app/packages/projects/player/src/plugins/engagement-overlay-plugin/engagement-overlay-plugin.ts","file:///app/packages/projects/player/src/plugins/interactive-plugin/interactive-seek-bar-plugin.ts","file:///app/packages/projects/player/src/players/reports/reports-player.ts","file:///app/packages/projects/player/src/react/ReportsPlayer.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/video-engagement-overlay/video-engagement-overlay.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/video-engagement-overlay/VideoEngagementOverlay.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-heatmap/insights-heatmap.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-heatmap/InsightsHeatmap.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"icon\":\"sAmpy\",\"count\":\"faDs4\"};","import React from 'react';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\n\nimport styles from './insight-card.scss';\n\ninterface InsightCardProps extends React.PropsWithChildren {\n svgName: string;\n svgClassName: string;\n title: string;\n subtitle?: string;\n count?: number;\n}\n\nexport function InsightCard(props: InsightCardProps) {\n return (\n <section className='d-flex flex-column border rounded p-3 h-100'>\n <div className={`d-flex ${props.subtitle ? 'align-items-top' : 'align-items-center'} mb-2`}>\n <div className={`${styles.icon} ${props.svgClassName} rounded-circle d-flex justify-content-center align-items-center`}>\n <SvgContainer svgName={props.svgName} size={SvgContainerSize.Small} />\n </div>\n <div className='d-flex flex-column ms-2'>\n <h2 className='h6 mb-0'>{props.title}</h2>\n </div>\n {typeof props.count === 'number' && (\n <div className={`${styles.count} d-flex justify-content-center align-items-center bg-light rounded-circle ms-auto`}>\n {props.count}\n </div>\n )}\n </div>\n {props.children}\n </section>\n );\n}","export const CHART_FONT_STYLES = {\n fontSize: '12px',\n fontFamily: `\"Inter\",-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",\"Liberation Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"`,\n fontWeight: '400',\n color: '#313543'\n};","import React from 'react';\n\nimport { PercentageIndicator, PercentageIndicatorLayout } from './PercentageIndicator';\n\ninterface PartialPercentageIndicatorProps {\n layout: PercentageIndicatorLayout;\n className?: string;\n}\n\nexport function PartialPercentageIndicator(props: PartialPercentageIndicatorProps): JSX.Element {\n return (\n <PercentageIndicator\n layout={props.layout}\n className={props.className}\n percentage={0}\n customLabel='--%'\n />\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\nimport { PartialPercentageIndicator } from 'libs/shared/components/percentage-indicator/PartialPercentageIndicator';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Engagement } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightAmountWatched';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightAmountWatchedProps {\n engagement: Engagement;\n params: FilterQueryParams;\n}\n\nexport function InsightAmountWatched(props: InsightAmountWatchedProps) {\n const engagementRate = props.engagement?.engagementRate > 0 ? props.engagement.engagementRate : null;\n const percentage = Math.round(props.engagement.engagementRate * 100);\n\n const everyoneSelected = !props.params.users\n && !props.params.classrooms\n && !props.params.classroomGroups;\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Timer}\n svgClassName='bg-light-green text-green'\n >\n <div className='d-flex flex-column align-items-center my-auto gap-2'>\n {!!props.engagement &&\n <>\n <PercentageIndicator\n percentage={engagementRate}\n layout={PercentageIndicatorLayout.LabelInside}\n />\n <p className='text-center'>\n {typeof engagementRate === 'number'\n ? everyoneSelected ?\n <Text namespace={namespace} phrase='everyoneWatched' options={{ percentage }} />\n : <Text namespace={namespace} phrase='usersWatched' options={{ percentage }} />\n : <Text namespace={namespace} phrase='notWatched' />\n }\n </p>\n </>\n }\n {!props.engagement &&\n <>\n <PartialPercentageIndicator layout={PercentageIndicatorLayout.LabelInside} />\n </>\n }\n </div>\n </InsightCard>\n );\n}","const CHART_COLOURS = [\n '#FF9300', // Pizazz\n '#38A2E8', // Picton Blue\n '#7A76E8', // Portage\n '#B679C7', // East Side\n '#F7847B', // Froly\n '#D9584F', // Red (Not in the Primary palette)\n '#FFCD52', // Yellow (Not in the Primary Palette)\n '#5DC786', // Emerald\n '#40BCC3', // Perolous\n '#40C2BB' // Puerto rico\n];\n\nexport function mixinSeriesColours<T>(data: T[]): T[] {\n return data.map((d, idx) => ({\n ...d,\n color: CHART_COLOURS[idx % CHART_COLOURS.length]\n }));\n}","import React from 'react';\nimport Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { CHART_FONT_STYLES } from 'libs/shared/apps/analytics/constants/ChartStyles';\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { getTotalEventCount, groupEvents, sortByYearGroup } from 'libs/shared/apps/analytics/utils/SharedUserActivityPieChartUtils';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightTotalViews';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst STATIC_CHART_OPTIONS: Highcharts.Options = {\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n chart: {\n backgroundColor: 'transparent',\n spacing: [ 0, 0, 0, 0 ]\n },\n legend: {\n itemStyle: CHART_FONT_STYLES,\n itemDistance: 8\n },\n plotOptions: {\n pie: {\n allowPointSelect: true,\n cursor: 'pointer',\n dataLabels: {\n enabled: false\n },\n showInLegend: true,\n borderWidth: 0,\n size: '80%'\n }\n }\n};\n\ninterface InsightTotalViewsProps {\n events: VideoViewEventResponse;\n emptyStateImage: string;\n}\n\nexport function InsightTotalViews(props: InsightTotalViewsProps) {\n const chartData = sortByYearGroup(groupEvents(props.events, 'yearGroupCount', [], getSeriesName));\n const totalViews = getTotalEventCount(chartData);\n\n function getChartOptions(\n data: Highcharts.PointOptionsObject[]\n ): Highcharts.Options {\n return {\n ...STATIC_CHART_OPTIONS,\n series: [{\n type: 'pie',\n name: getPhrase('title'),\n data\n }]\n };\n }\n\n function getSeriesName(group: string): string {\n return group === 'Unknown' ? 'Staff' : group;\n }\n\n return (\n <InsightCard\n title={getPhrase('title')}\n // Replace with ultra marine + light colour\n svgClassName='bg-light-blue text-blue'\n // Add visibility icon \n svgName={cvSvgLibrary.VisibleOn}\n >\n {chartData?.length ? (\n <>\n <p className='mb-0'><Text namespace={namespace} phrase='totalViews' options={{ totalViews }} /></p>\n\n <div className='d-flex justify-content-center h-75'>\n <HighchartsReact\n highcharts={Highcharts}\n options={getChartOptions(chartData)}\n containerProps={{\n className: `w-100`\n }}\n />\n </div>\n </>\n ) : (\n <EmptyState className='pt-0 my-auto'>\n <EmptyState.Image src={props.emptyStateImage} className='w-75 h-auto'></EmptyState.Image>\n <EmptyState.Heading className='h4'><Text namespace={namespace} phrase='noViews' /></EmptyState.Heading>\n <EmptyState.Info className='w-100'><Text namespace={namespace} phrase='notWatched' /></EmptyState.Info>\n </EmptyState>\n )}\n </InsightCard>\n );\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { BaseAnalyticsEventResponse, GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { UnionEventResponse } from 'libs/shared/apps/analytics/interfaces/UnionEvent';\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { mixinSeriesColours } from 'libs/shared/apps/analytics/utils/ChartColourUtils';\n\ntype EventResponseGroupByAttributes = keyof Pick<VideoViewEventResponse, 'contentTypeCount'>\n | keyof Pick<BaseAnalyticsEventResponse, 'userTypeCount' | 'yearGroupCount'>;\n\nexport function groupEvents(\n events: UnionEventResponse,\n groupBy: EventResponseGroupByAttributes,\n groupsToOmit?: string[],\n getSeriesName?: (group: string) => string\n): Highcharts.PointOptionsObject[] {\n const groups: HashObject<number> = {};\n\n const eventCounts = events[groupBy as keyof UnionEventResponse] as GroupedAnalyticsCount[];\n\n eventCounts?.forEach(ev => {\n if (!ev.name || groupsToOmit?.includes(ev.name.toLowerCase()))\n return;\n\n groups[ev.name] = groups[ev.name] ?? 0;\n groups[ev.name] += ev.count;\n });\n\n return mixinSeriesColours(ArrayHelper.sortBy(Object.keys(groups).map(group => ({\n name: getSeriesName ? getSeriesName(group) : group,\n y: groups[group],\n type: 'pie'\n })), 'name'));\n}\n\nexport function sortByYearGroup(data: Highcharts.PointOptionsObject[]) {\n const staffIndex = data.findIndex(group => group.name === 'Staff');\n\n // Move Staff to last index\n if (staffIndex > -1) {\n const [staffObject] = data.splice(staffIndex, 1);\n\n data.push(staffObject);\n }\n return data.sort((a, b) => {\n const numA = parseInt((a.name as string).match(/\\d+/)?.[0]);\n const numB = parseInt((b.name as string).match(/\\d+/)?.[0]);\n return numA - numB;\n });\n}\n\nexport function getTotalEventCount(data?: Highcharts.PointOptionsObject[]): number | null {\n return data?.reduce((a, b) => a + b.y, 0) ?? null;\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"nKLWa\",\"videoContainer\":\"WF2iA\"};","import React from 'react';\n\nimport styles from './partial-insights-heatmap.scss';\n\nexport function PartialInsightsHeatmap() {\n return (\n <div>\n <div className='row g-3 mb-3'>\n <div className='col'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className={styles.videoContainer}>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n\n <div className='row g-3 mb-5'>\n <div className='col-12'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n </div>\n );\n}","import videojs, { VideoJsPlayer } from 'video.js';\n\nconst MenuItem = videojs.getComponent('MenuItem');\n\ninterface EngagementOverlayMenuItemOptions extends videojs.MenuItemOptions {\n overlayVisible: boolean\n}\n\nexport class EngagementOverlayMenuItem extends MenuItem {\n private toggleEl: Element;\n private overlayVisible: boolean;\n\n /**\n * Because we want to bind our listener in createEl\n * and createEl runs in super. We store if we've bounud\n * our handler, so we only call bind once and \n * the call to removeEventListener will still work\n */\n private handlerBound: boolean;\n\n constructor(player: VideoJsPlayer, options: EngagementOverlayMenuItemOptions) {\n super(player, options);\n\n this.overlayVisible = options.overlayVisible;\n this.toggle(this.overlayVisible);\n }\n\n public handleToggle(): void {\n this.toggle(!this.overlayVisible);\n }\n\n private toggle(state: boolean): void {\n state ? this.toggleOn() : this.toggleOff();\n }\n\n private toggleOn(): void {\n videojs.dom.addClass(this.toggleEl, 'on');\n this.overlayVisible = true;\n this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible);\n this.player().addClass('cv-reports-player-overlay-visible');\n }\n\n private toggleOff(): void {\n videojs.dom.removeClass(this.toggleEl, 'on');\n this.overlayVisible = false;\n this.player().engagementOverlayPlugin().toggleOverlay(this.overlayVisible);\n this.player().removeClass('cv-reports-player-overlay-visible');\n }\n\n /**\n * Because we extend MenuItem which will close the menu by default\n * we need to halt the event propogation here\n */\n public handleClick(event: videojs.EventTarget.Event): void {\n event.stopImmediatePropagation();\n }\n\n public createEl(tagName?: string, properties?: any, attributes?: any): HTMLLIElement {\n /**\n * Bind our event listener only once\n * see the comment where handlerBound is defined\n */\n if (!this.handlerBound) {\n this.handleToggle = this.handleToggle.bind(this);\n this.handlerBound = true;\n }\n\n if (this.toggleEl)\n this.toggleEl.removeEventListener('click', this.handleToggle);\n\n this.toggleEl = videojs.dom.createEl('div', {\n className: `custom-toggle custom-toggle-info toggle-option float-end`,\n innerHTML: '<span class=\"handle\"></span></div>'\n });\n this.toggleEl.addEventListener('click', this.handleToggle);\n\n const innerHTML = `\n <span class=\"vjs-menu-item-text\">Heat Map</span>\n <span class=\"cv-toggle-container\"></span>`;\n\n const el = super.createEl(tagName, {\n className: 'vjs-menu-item cv-cog-menu-item',\n innerHTML\n }, attributes);\n\n /**\n * Indexing into the child this way is only safe to do because\n * we know that the el only has two children\n */\n el.children[1].appendChild(this.toggleEl);\n\n return el;\n }\n}\n\nvideojs.registerComponent('EngagementOverlayMenuItem', EngagementOverlayMenuItem);\n","import React from 'react';\n\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { Interactive } from 'libs/shared/interfaces';\n\nconst MAX_INTERACTIONS_TO_SHOW = 3;\n\ninterface TimepointInteractionsProps {\n interactive: Interactive;\n time: number;\n}\n\nexport function TimepointInteractions(props: TimepointInteractionsProps): JSX.Element {\n const timepoint = props.interactive.timepoints.find(t => {\n const timepointTime = t.visibleAt / 1000;\n \n return Math.floor(props.time) === Math.floor(timepointTime)\n || Math.ceil(props.time) === Math.ceil(timepointTime);\n });\n\n if (!timepoint?.interactions?.length)\n return <></>;\n\n const interactions = timepoint.interactions.length > MAX_INTERACTIONS_TO_SHOW\n ? timepoint.interactions.slice(0, MAX_INTERACTIONS_TO_SHOW - 1)\n : timepoint.interactions;\n\n const hiddenInteractions = timepoint.interactions.length - interactions.length;\n\n return (\n <div className='d-flex justify-content-end ms-2'>\n {interactions.map((i, idx) => (\n <InteractionLabel\n key={idx}\n interaction={i}\n showQuestion={false}\n iconClassName='ms-1'\n />\n ))}\n {!!hiddenInteractions &&\n <div\n className={'interaction-type-icon d-flex justify-content-center'\n + ' align-items-center border border-dark text-body ms-1'}\n >\n {`+${hiddenInteractions}`}\n </div>\n }\n </div>\n );\n}","import React from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport Highcharts from 'highcharts';\n\nimport { Interactive } from 'libs/shared/interfaces';\n\nimport { TimepointInteractions } from 'projects/player/plugins/engagement-overlay-plugin/components/timepoint-interactions/timepoint-interactions';\nimport { formatTime } from 'projects/player/utils/formatTime';\n\nexport const STATIC_CHART_OPTIONS: Highcharts.Options = {\n title: {\n text: null\n },\n xAxis: {\n visible: false,\n minPadding: 0,\n maxPadding: 0\n },\n legend: {\n enabled: false\n },\n credits: {\n enabled: false\n },\n defs: {\n gradient: ({\n tagName: 'linearGradient',\n id: 'area-gradient',\n x1: 0,\n y1: 1,\n x2: 0,\n y2: 0,\n children: [\n ({\n tagName: 'stop',\n offset: 0\n } as Highcharts.ASTNode),\n ({\n tagName: 'stop',\n offset: 1\n } as Highcharts.ASTNode)\n ]\n } as Highcharts.ASTNode)\n }\n};\n\nexport function getChartOptions(width: number, height: number): Highcharts.ChartOptions {\n return {\n styledMode: true,\n spacing: [ 15, 0, 0, 0 ],\n width,\n height\n };\n}\n\nexport function getYAxisChartOptions(heatMap: number[]): Highcharts.YAxisOptions {\n const maxValue = Math.max(...heatMap);\n\n return {\n /**\n * To prevent max values from being cut off, we pad them relative to the chart scale.\n */\n max: maxValue * 1.05,\n min: 0,\n minPadding: 0,\n maxPadding: 0,\n allowDecimals: true,\n startOnTick: false,\n endOnTick: false,\n visible: false\n };\n}\n\nexport function getTooltipOptions(interactive?: Interactive): Highcharts.TooltipOptions {\n return {\n formatter: function () {\n const timepointInteractionsHtml = interactive\n ? getTimepointInteractionsHtml(interactive, this.x)\n : '';\n\n return (\n '<div class=\"cv-engagement-tooltip bg-white rounded\">'\n + '<div class=\"d-flex justify-content-between\">'\n + `<strong>${formatTime(this.x)}</strong>`\n + `${timepointInteractionsHtml}`\n + '</div>'\n + '<div class=\"d-flex justify-content-between rounded bg-light cv-view-count-container\">'\n + `<strong>Views</strong> <span class=\"cv-view-count\">${this.y}</span>`\n + '</div>'\n + '</div>'\n );\n },\n positioner: function (\n labelWidth: number,\n labelHeight: number,\n point: Highcharts.TooltipPositionerPointObject\n ) {\n const minX = 0;\n const maxX = this.chart.plotWidth - labelWidth;\n const x = point.plotX - labelWidth / 2;\n \n return {\n // Clamp x between min and max\n x: Math.min(Math.max(x, minX), maxX),\n y: this.chart.plotTop\n };\n },\n useHTML: true,\n padding: 0\n };\n}\n\nexport function getPlotOptions(moveTimepointIndicator: (x: number | null) => void): Highcharts.PlotOptions {\n return {\n area: {\n point: {\n events: {\n mouseOver: function () {\n moveTimepointIndicator(this.x);\n },\n mouseOut: function () {\n moveTimepointIndicator(null);\n }\n }\n }\n },\n series: {\n marker: {\n enabled: false\n }\n }\n };\n}\n\nfunction getTimepointInteractionsHtml(interactive: Interactive, time: number): string {\n return renderToStaticMarkup(\n <TimepointInteractions time={time} interactive={interactive} />\n );\n}","import Highcharts from 'highcharts';\nimport videojs, { VideoJsPlayer } from 'video.js';\n\nimport { Interactive } from 'libs/shared/interfaces';\n\nimport {\n getChartOptions,\n getPlotOptions,\n getTooltipOptions,\n getYAxisChartOptions,\n STATIC_CHART_OPTIONS\n} from './engagement-overlay-chart-options';\n\nimport './engagement-overlay.scss';\n\nconst Component = videojs.getComponent('Component');\n\nHighcharts.AST.allowedTags.push('g');\nHighcharts.AST.allowedAttributes.push('viewBox', 'transform');\n\ninterface ChartDimensions {\n width: number;\n height: number;\n}\n\ninterface EngagementOverlayOptions extends videojs.ComponentOptions {\n heatMap: number[];\n interactive?: Interactive;\n onTimepointHover?: (time: number | null) => void;\n}\n\nexport class EngagementOverlay extends Component {\n public options_: EngagementOverlayOptions;\n private chart: Highcharts.Chart;\n\n constructor(player: VideoJsPlayer, options: EngagementOverlayOptions) {\n super(player, options);\n\n this.initialize();\n this.bindListeners();\n }\n\n public initialize(): void {\n this.player().ready(() => this.buildChart());\n }\n\n public buildCSSClass(): string {\n return 'cv-engagement-overlay';\n }\n\n public createEl(tagName?: string, properties?: any, attributes?: any): Element {\n const innerHTML = '<div class=\"cv-engagement-chart\"></div>'\n + '<div class=\"cv-engagement-timepoint-indicator\"></div>';\n\n return super.createEl(tagName, {\n ...properties,\n className: this.buildCSSClass(),\n innerHTML\n }, attributes);\n }\n\n public toggleChart(show: boolean): void {\n if (show)\n this.buildChart();\n else\n this.destroyChart();\n }\n\n private bindListeners(): void {\n this.handleClick = this.handleClick.bind(this);\n this.resizeChart = this.resizeChart.bind(this);\n\n this.player().on('playerresize', this.resizeChart);\n\n this.on(this.el(), 'mouseup', this.handleClick);\n\n this.player().on('dispose', () => {\n this.player().off('playerresize', this.resizeChart);\n\n this.off(this.el(), 'mouseup', this.handleClick);\n });\n }\n\n private handleClick(event: videojs.EventTarget.Event): void {\n if (!videojs.dom.isSingleLeftClick(event))\n return;\n\n if (this.player().paused()) {\n this.player().play();\n return;\n }\n\n this.player().pause();\n }\n\n private buildChart(): void {\n if (this.chart)\n return;\n\n const chartDimensions = this.getChartDimensions();\n\n /**\n * The dimensions calculation relies on the control bar and progress control\n * being visible, so if it isn't, we wait for the play event.\n */\n if (!chartDimensions) {\n this.player().one('play', () => this.buildChart());\n return;\n }\n\n const container: HTMLElement = this.el().querySelector('.cv-engagement-chart');\n\n this.chart = Highcharts.chart(container, this.getHighchartOptions(chartDimensions));\n }\n\n private resizeChart(): void {\n const chartDimensions = this.getChartDimensions();\n\n if (!this.chart || !chartDimensions)\n return;\n\n this.chart.setSize(chartDimensions.width, chartDimensions.height);\n }\n\n private destroyChart(): void {\n this.chart?.destroy();\n this.chart = null;\n }\n\n private getChartDimensions(): ChartDimensions {\n const collapserator = this.player().getChild('collapserator');\n const collapseratorHeight = collapserator?.currentHeight();\n\n const width = this.el().clientWidth;\n\n if (!collapseratorHeight || !width)\n return null;\n\n const { height } = this.player().currentDimensions();\n \n return {\n width,\n height: height - collapseratorHeight\n };\n }\n\n private getHighchartOptions({ width, height }: ChartDimensions): Highcharts.Options {\n return {\n ...STATIC_CHART_OPTIONS,\n chart: getChartOptions(width, height),\n yAxis: getYAxisChartOptions(this.options_.heatMap),\n tooltip: getTooltipOptions(this.options_.interactive),\n plotOptions: getPlotOptions(this.moveTimepointIndicator.bind(this)),\n series: [{\n type: 'area',\n data: this.options_.heatMap\n }]\n };\n }\n\n private moveTimepointIndicator(x: number | null): void {\n if (this.options_.onTimepointHover)\n this.options_.onTimepointHover(x);\n\n const indicator: HTMLDivElement = this.el().querySelector('.cv-engagement-timepoint-indicator');\n\n if (x === null) {\n videojs.dom.removeClass(indicator, 'cv-engagement-timepoint-indicator-visible');\n return;\n }\n\n videojs.dom.addClass(indicator, 'cv-engagement-timepoint-indicator-visible');\n indicator.style.left = `${x / this.options_.heatMap.length * 100}%`;\n }\n}\n\nvideojs.registerComponent('EngagementOverlay', EngagementOverlay);","import videojs, { VideoJsPlayer } from 'video.js';\n\nimport { Interactive } from 'libs/shared/interfaces';\n\nimport { CogButton } from 'projects/player/components/cog-button/cog-button';\nimport { EngagementOverlay } from 'projects/player/plugins/engagement-overlay-plugin/components/engagement-overlay/engagement-overlay';\nimport { EngagementOverlayMenuItem } from 'projects/player/plugins/engagement-overlay-plugin/components/engagement-overlay-menu-item/engagement-overlay-menu-item';\n\nimport 'projects/player/plugins/engagement-overlay-plugin/components/engagement-overlay/engagement-overlay';\n\nconst Plugin = videojs.getPlugin('plugin');\n\ninterface EngagementOverlayPluginOptions {\n heatMap: number[];\n interactive?: Interactive;\n onTimepointHover?: (time: number | null) => void;\n}\n\nclass EngagementOverlayPlugin extends Plugin {\n private options: EngagementOverlayPluginOptions;\n\n constructor(player: VideoJsPlayer, options: EngagementOverlayPluginOptions) {\n super(player, options);\n\n this.options = options;\n\n player.ready(() => {\n this.initialize();\n });\n }\n \n private initialize(): void {\n if (!this.hasHeatMapData())\n return;\n\n this.player.addChild('engagementOverlay', {\n heatMap: this.options.heatMap,\n interactive: this.options.interactive,\n onTimepointHover: this.options.onTimepointHover\n });\n\n const cogButton = this.player.getChild('collapserator')?.getChild('cogButton') as CogButton;\n cogButton.addItem({\n index: 0,\n ctor: EngagementOverlayMenuItem,\n name: 'EngagementOverlayMenuItem',\n options: { overlayVisible: true }\n });\n }\n\n public toggleOverlay(show: boolean): void {\n const engagementOverlay = this.player.getChild('engagementOverlay') as EngagementOverlay;\n engagementOverlay?.toggleChart(show);\n }\n\n private hasHeatMapData(): boolean {\n return this.options.heatMap?.reduce((acc, val) => acc + val, 0) > 0;\n }\n}\n\nvideojs.registerPlugin('engagementOverlayPlugin', EngagementOverlayPlugin);\n\ndeclare module 'video.js' {\n export interface VideoJsPlayer {\n engagementOverlayPlugin(options?: EngagementOverlayPluginOptions): EngagementOverlayPlugin;\n }\n}","import videojs, { VideoJsPlayer } from 'video.js';\n\nimport { Interactive } from 'libs/shared/interfaces';\n\nimport { InteractiveBarItems } from 'projects/player/plugins/interactive-plugin/components/seek-bar/interactive-bar-items';\nimport { TrackHelper } from 'projects/player/utils/track-helper';\n\nimport './interactive-plugin-styles.scss';\n\nconst Plugin = videojs.getPlugin('plugin');\n\ninterface InteractiveSeekBarPluginOptions {\n interactive: Interactive;\n}\n\n/**\n * This plugin will just render the interactive seek bar (i.e. just the interaction markers).\n * The user won't be able to interact with any of the interactions.\n * Currently this is just used in reports-player\n */\nclass InteractiveSeekBarPlugin extends Plugin {\n private options: InteractiveSeekBarPluginOptions;\n\n constructor(player: VideoJsPlayer, options: InteractiveSeekBarPluginOptions) {\n super(player);\n\n this.options = options;\n\n this.player.one('loadedmetadata', () => this.player.ready(this.initialize.bind(this)));\n }\n\n private initialize(): void {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n TrackHelper.useMetadataTrack(this.player, 'interactive', this.onTrackLoaded.bind(this));\n\n this.player.addClass('cv-interactive-plugin');\n }\n\n private onTrackLoaded(track: TextTrack): void {\n this.addChildren(track);\n }\n\n private addChildren(track: TextTrack): void {\n const seekBar = this.player.controlBar.getChild('progressControl').getChild('SeekBar');\n\n seekBar.addChild(new InteractiveBarItems(this.player, {\n interactive: this.options.interactive,\n track\n }));\n }\n}\n\nvideojs.registerPlugin('interactiveSeekBarPlugin', InteractiveSeekBarPlugin);\n\ndeclare module 'video.js' {\n export interface VideoJsPlayer {\n interactiveSeekBarPlugin(options?: InteractiveSeekBarPluginOptions): InteractiveSeekBarPlugin;\n }\n}","import { Interactive } from 'libs/shared/interfaces';\n\nimport { ClipData } from 'projects/player/interfaces/models/ClipData';\nimport { PlaybackObject } from 'projects/player/interfaces/models/PlaybackObject';\nimport { BasePlayer, BasePlayerOptions } from 'projects/player/players/base-player';\nimport { AnalyticsPlayerType } from 'projects/player/services/analytics-service';\nimport { InteractiveTrackHelper } from 'projects/player/utils/interactive-track-helper';\n\nimport './reports-player.scss';\n\nimport 'projects/player/plugins/engagement-overlay-plugin/engagement-overlay-plugin';\nimport 'projects/player/plugins/clip-plugin/clip-plugin';\nimport 'projects/player/plugins/interactive-plugin/interactive-seek-bar-plugin';\n\nexport interface ReportsPlayerOptions extends BasePlayerOptions {\n heatMap: number[];\n onTimepointHover?: (time: number | null) => void;\n}\n\nexport class ReportsPlayer extends BasePlayer {\n protected options: ReportsPlayerOptions;\n private track: TextTrack;\n\n constructor(id: string | Element, options: ReportsPlayerOptions) {\n super(id, options);\n }\n\n protected getPlayerClassName(): string {\n return 'cv-reports-player';\n }\n\n protected getAnalyticsPlayerType(): AnalyticsPlayerType {\n return 'reports-player';\n }\n\n protected async additionalSetup(playbackObject: PlaybackObject): Promise<void> {\n super.additionalSetup(playbackObject);\n\n this.setupEngagementOverlayPlugin(playbackObject);\n this.setupUpClipPlugin(playbackObject);\n this.setupInteractiveSeekBarPlugin(playbackObject);\n }\n\n private setupEngagementOverlayPlugin(playbackObject: PlaybackObject): void {\n this.player.engagementOverlayPlugin({\n heatMap: this.options.heatMap,\n interactive: playbackObject.additionalData?.interactive as Interactive,\n onTimepointHover: this.options.onTimepointHover\n });\n }\n\n private setupUpClipPlugin(playbackObject: PlaybackObject): void {\n const isClip = playbackObject.mediaType === 'MasterClip';\n const isInteractive = playbackObject.mediaType === 'MasterInteractive';\n\n if (!isClip && !isInteractive)\n return;\n\n let clipData: ClipData;\n if (isClip)\n clipData = playbackObject.additionalData;\n \n if (isInteractive) {\n clipData = playbackObject.additionalData?.clipData;\n\n // Not all interactives will have clip data\n if (!clipData)\n return;\n }\n\n if (!clipData)\n throw Error('Invalid clip data');\n\n this.player.clipPlugin({\n startTime: clipData.startTime,\n endTime: clipData.endTime\n });\n }\n\n private setupInteractiveSeekBarPlugin(playbackObject: PlaybackObject): void {\n const interactive = playbackObject.additionalData?.interactive as Interactive;\n\n if (!playbackObject.additionalData?.interactive)\n return;\n\n this.track = InteractiveTrackHelper.getInteractiveTrack(this.player, playbackObject);\n\n this.player.interactiveSeekBarPlugin({ interactive });\n }\n\n protected getSeekBarOptions(): any {\n return {\n ignoreChapters: true\n };\n }\n}\n","import React from 'react';\n\nimport { ReportsPlayer, ReportsPlayerOptions } from 'projects/player/players/reports/reports-player';\n\nexport function ClickViewReportsPlayer(props: ReportsPlayerOptions): React.ReactElement {\n const ref = React.useRef(null);\n const playerRef = React.useRef<ReportsPlayer>(null);\n\n React.useEffect(() => {\n playerRef.current = new ReportsPlayer(ref.current, props);\n }, []);\n\n return (\n <div ref={ref}></div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"playerContainer\":\"fGWsk\",\"playerPlaceholder\":\"v1MjE\",\"heatMap\":\"lp1Yn\",\"heatMapTimepointIndicator\":\"yOOK6\",\"heatMapTimepointIndicatorVisible\":\"rTXmB\",\"partialLoadingContainer\":\"gW1HU\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EngagementHeatMap, EngagementHeatMapLegend } from 'libs/shared/apps/analytics/components/engagement-heat-map/EngagementHeatMap';\nimport { getFullHeatMap } from 'libs/shared/apps/analytics/utils/EngagementUtils';\nimport { Engagement } from 'libs/shared/interfaces';\n\nimport { ClickViewReportsPlayer } from 'projects/player/react/ReportsPlayer';\n\nimport styles from './video-engagement-overlay.scss';\n\nconst namespace = 'shared.videoEngagementOverlay';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoEngagementOverlayProps {\n engagement: Engagement;\n viewKey: string;\n imageCdnUrl: string;\n playerApiUrl: string;\n}\n\nexport function VideoEngagementOverlay(props: VideoEngagementOverlayProps): JSX.Element {\n const timepointIndicatorRef = React.useRef<HTMLDivElement>(null);\n\n const heatMap = getFullHeatMap(props.engagement);\n\n function setHoverTimepoint(time: number | null): void {\n const el = timepointIndicatorRef.current;\n\n if (!el)\n return;\n\n if (time === null) {\n el.classList.remove(styles.heatMapTimepointIndicatorVisible);\n return;\n }\n\n el.classList.add(styles.heatMapTimepointIndicatorVisible);\n el.style.left = `${time / heatMap.length * 100}%`;\n }\n\n return (\n <div className='bg-white border rounded overflow-hidden h-100'>\n <div className='position-relative'>\n {/**\n * The below div is an empty 16:9 rectangle which maintains this component's\n * height while the player is loading.\n */\n }\n <div className={styles.playerPlaceholder} />\n <div className={styles.playerContainer}>\n <ClickViewReportsPlayer\n viewKey={props.viewKey}\n playerApi={new URL(props.playerApiUrl)}\n hotkeyElQuerySelector='body'\n heatMap={heatMap}\n onTimepointHover={setHoverTimepoint}\n aspectRatio='16:9'\n />\n </div>\n </div>\n <div className='p-3'>\n <div className='position-relative'>\n <EngagementHeatMap\n engagement={props.engagement}\n className={styles.heatMap}\n />\n <div ref={timepointIndicatorRef} className={styles.heatMapTimepointIndicator} />\n </div>\n <div className='d-flex justify-content-between mt-2'>\n <strong>\n {getPhrase('heatmap')}\n </strong>\n <div className='w-33'>\n <EngagementHeatMapLegend />\n </div>\n </div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"videoContainer\":\"cpl68\"};","import React from 'react';\n\nimport { EngagementTable } from 'libs/shared/apps/analytics/components/engagement-table/EngagementTable';\nimport { InsightAmountWatched } from 'libs/shared/apps/analytics/components/insights/amount-watched/InsightAmountWatched';\nimport { InsightTotalViews } from 'libs/shared/apps/analytics/components/insights/total-views/InsightTotalViews';\nimport { AnonSessions } from 'libs/shared/apps/analytics/hooks/UseAnonSessions';\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { getFilterParamsKey } from 'libs/shared/apps/analytics/utils/FilterParamUtils';\nimport { Config, Engagement, IndividualEngagementResponse, PlayerViewKey, User } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { PartialInsightsHeatmap } from 'apps/my-shares/components/insights-heatmap/partial-loading/PartialInsightsHeatmap';\nimport { VideoEngagementOverlay } from 'apps/my-shares/components/video-engagement-overlay/VideoEngagementOverlay';\n\nimport styles from './insights-heatmap.scss';\n\ninterface InsightsHeatmapProps {\n hasDataLoaded: boolean;\n tableDataLoaded: boolean;\n videoViews: VideoViewEventResponse;\n aggregateEngagement: Engagement;\n audienceAppLinkParams: AudienceQueryParams;\n dateRangeAppLinkParams: DateRangeQueryParams;\n individualEngagement: IndividualEngagementResponse;\n viewKey: PlayerViewKey;\n config: Config;\n users: User[];\n anonymiseUsers: boolean;\n anonSessions?: AnonSessions;\n}\n\nexport function InsightsHeatmap(props: InsightsHeatmapProps) {\n return (\n <>\n {!props.hasDataLoaded && <PartialInsightsHeatmap />}\n\n <div className='row g-3 mb-3'>\n {props.hasDataLoaded &&\n <>\n <div className='col'>\n <InsightTotalViews events={props.videoViews} emptyStateImage={ImageUrls.EmptyStates.MY_VIDEOS} />\n </div>\n <div className='col'>\n <InsightAmountWatched engagement={props.aggregateEngagement} params={props.audienceAppLinkParams} />\n </div>\n <div className={styles.videoContainer}>\n <VideoEngagementOverlay\n engagement={props.aggregateEngagement}\n viewKey={props.viewKey.viewKey}\n playerApiUrl={props.config.playerApiUrl}\n imageCdnUrl={props.config.imageCdnUrl}\n />\n </div>\n </>\n }\n\n {props.tableDataLoaded &&\n <div className='col-12'>\n <EngagementTable\n key={getFilterParamsKey({ ...props.audienceAppLinkParams, ...props.dateRangeAppLinkParams })}\n engagement={props.individualEngagement.data}\n users={props.users}\n imageCdnUrl={props.config?.imageCdnUrl}\n anonymiseUsers={props.anonymiseUsers}\n border\n anonSessions={props.anonSessions}\n />\n </div>\n }\n </div>\n </>\n );\n}"],"names":["InsightCard","props","className","subtitle","svgClassName","SvgContainer","svgName","size","S","title","count","children","CHART_FONT_STYLES","fontSize","fontFamily","fontWeight","color","PartialPercentageIndicator","PercentageIndicator","layout","percentage","customLabel","namespace","getPhrase","LanguageService","InsightAmountWatched","engagementRate","engagement","Math","round","everyoneSelected","params","users","classrooms","classroomGroups","Text","phrase","options","CHART_COLOURS","STATIC_CHART_OPTIONS","text","credits","enabled","chart","backgroundColor","spacing","legend","itemStyle","itemDistance","plotOptions","pie","allowPointSelect","cursor","dataLabels","showInLegend","borderWidth","InsightTotalViews","data","events","groupsToOmit","getSeriesName","groups","eventCounts","chartData","staffIndex","findIndex","group","name","staffObject","splice","push","sort","a","b","parseInt","match","sortByYearGroup","forEach","ev","includes","toLowerCase","ArrayHelper","Object","keys","map","y","type","d","idx","length","totalViews","reduce","highcharts","series","getChartOptions","containerProps","EmptyState","src","emptyStateImage","PartialInsightsHeatmap","EngagementOverlayMenuItem","player","overlayVisible","toggle","this","state","toggleOn","toggleOff","toggleEl","engagementOverlayPlugin","toggleOverlay","addClass","removeClass","event","stopImmediatePropagation","tagName","properties","attributes","handlerBound","handleToggle","bind","removeEventListener","innerHTML","addEventListener","el","appendChild","TimepointInteractions","timepoint","interactive","timepoints","find","t","timepointTime","visibleAt","floor","time","ceil","interactions","slice","MAX_INTERACTIONS_TO_SHOW","hiddenInteractions","i","InteractionLabel","key","interaction","showQuestion","iconClassName","xAxis","visible","minPadding","maxPadding","defs","gradient","id","x1","y1","x2","y2","offset","width","height","styledMode","Component","EngagementOverlay","initialize","bindListeners","ready","buildChart","buildCSSClass","show","destroyChart","handleClick","resizeChart","on","off","paused","play","pause","chartDimensions","getChartDimensions","container","querySelector","getHighchartOptions","one","setSize","destroy","collapserator","getChild","collapseratorHeight","currentHeight","clientWidth","currentDimensions","moveTimepointIndicator","heatMap","yAxis","options_","max","min","allowDecimals","startOnTick","endOnTick","tooltip","formatter","timepointInteractionsHtml","renderToStaticMarkup","getTimepointInteractionsHtml","x","formatTime","positioner","labelWidth","labelHeight","point","maxX","plotWidth","plotX","plotTop","useHTML","padding","area","mouseOver","mouseOut","marker","onTimepointHover","indicator","style","left","EngagementOverlayPlugin","hasHeatMapData","addChild","addItem","index","ctor","engagementOverlay","toggleChart","acc","val","InteractiveSeekBarPlugin","onTrackLoaded","track","addChildren","controlBar","ReportsPlayer","playbackObject","additionalSetup","setupEngagementOverlayPlugin","setupUpClipPlugin","setupInteractiveSeekBarPlugin","additionalData","clipData","isClip","mediaType","isInteractive","Error","clipPlugin","startTime","endTime","interactiveSeekBarPlugin","ignoreChapters","ClickViewReportsPlayer","ref","playerRef","current","VideoEngagementOverlay","timepointIndicatorRef","viewKey","playerApi","URL","playerApiUrl","hotkeyElQuerySelector","classList","add","remove","aspectRatio","EngagementHeatMap","InsightsHeatmap","hasDataLoaded","videoViews","ImageUrls","aggregateEngagement","audienceAppLinkParams","config","imageCdnUrl","tableDataLoaded","EngagementTable","dateRangeAppLinkParams","individualEngagement","anonymiseUsers","border","anonSessions"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7064],{69087:(e,t,n)=>{n.d(t,{d:()=>N});var r=n(32735),a=n(38129),s=n(23481),i=n(75896),o=n(83914),c=n(8246),u=n(35223);function l(e){var t=e.answer;return r.createElement("div",{key:t.id,className:"".concat(function(e){switch(e){case c.N.Correct:return"bg-light-green";case c.N.Incorrect:return"bg-light-red";case c.N.PendingReview:return"bg-light-blue"}}(t.status)," rounded p-2 mb-2")},r.createElement("div",{className:"d-flex align-items-center gap-2"},t.status===c.N.Correct&&r.createElement(o.x,{svgName:u.vn.Check,className:"svg-container flex-shrink-0 text-success"}),t.status===c.N.Incorrect&&r.createElement(o.x,{svgName:u.vn.Close,className:"svg-container flex-shrink-0 text-danger"}),!e.customAnswer&&r.createElement("span",{className:e.textClassName},t.text)),e.children)}var m=s.T.encloseNamespace("shared.interactionResponses");function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function f(e,t,n){return(t=function(e){var t=function(e){if("object"!=d(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=d(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==d(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v=function(){return r.createElement(r.Fragment,null)},g=f(f(f(f(f(f(f({},a.Z9.Annotation,v),a.Z9.Image,v),a.Z9.MissingWord,(function(e){return e.answers.length?r.createElement("ul",{className:"list-unstyled"},e.answers.map((function(e){return r.createElement("li",{key:e.id},r.createElement(l,{answer:e,textClassName:"bg-white p-1 border border-gray-300 rounded"}))}))):r.createElement(r.Fragment,null)})),a.Z9.MultipleChoice,(function(e){return e.answers.length?r.createElement("ul",{className:"list-unstyled"},e.answers.map((function(e){return r.createElement("li",{key:e.id},r.createElement(l,{answer:e}))}))):r.createElement(r.Fragment,null)})),a.Z9.TrueOrFalse,(function(e){var t=i.m.first(e.answers);return t?r.createElement(l,{answer:t}):r.createElement(r.Fragment,null)})),a.Z9.ShortAnswer,(function(e){var t=i.m.first(e.answers);return t?r.createElement(l,{answer:t},e.children):r.createElement(r.Fragment,null)})),a.Z9.Illustration,(function(e){var t=i.m.first(e.answers);return t?r.createElement(l,{answer:t,customAnswer:!0},r.createElement("div",{className:"ratio ratio-16x9"},r.createElement("img",{className:"img-fluid bg-white border rounded h-100 w-100",src:t.text,alt:"".concat(m("illustrationAlt"),": ").concat(e.interaction.name)})),e.children):r.createElement(r.Fragment,null)})),y=n(97408),p=n(44526),w=n(56151),h=n(3894),b=n(69737),E=n(83140),k=n(80845),C=n(64818);const S={avatarContainer:"O7oaA"};function N(e){var t,n,a,s,i,o,c=g[e.interaction.typeId];if(!c)return r.createElement(r.Fragment,null);var u=(0,k.j_)(e.studentResults),l=(0,k.f6)(e.interaction.id,u),m=E.A.isInteractionCorrect(e.interaction,u);return r.createElement("div",{className:"position-relative"},r.createElement("div",{className:"rounded ".concat(null!==(t=e.className)&&void 0!==t?t:"")},r.createElement("div",{className:"d-flex"},!!e.showStudentDetails&&r.createElement("div",{className:"me-2"},r.createElement("div",{className:S.avatarContainer},r.createElement(y.q,{imageCdnUrl:e.imageCdnUrl,initials:e.anonymisedUserName?C.l.getInitialsFromFullName(e.anonymisedUserName):C.l.getInitials(null===(n=e.studentResults.user)||void 0===n?void 0:n.name,null===(a=e.studentResults.user)||void 0===a?void 0:a.surname),imageUrl:e.anonymisedUserName?null:null===(i=null===(s=e.studentResults.user)||void 0===s?void 0:s.avatar)||void 0===i?void 0:i.url,showAnonymousUser:!!(null===(o=e.studentResults)||void 0===o?void 0:o.sessionId)}))),r.createElement("div",{className:"flex-grow-1"},!!e.showStudentDetails&&r.createElement(w.U,{studentResults:e.studentResults,correctness:m,anonymisedUserName:e.anonymisedUserName}),r.createElement("div",{className:"d-flex justify-content-between"},r.createElement("div",{className:"flex-grow-1 mb-2 ".concat(e.responseComponentClass?e.responseComponentClass:"")},l?r.createElement(c,{interaction:e.interaction,answers:l.answers,imageCdnUrl:e.imageCdnUrl,user:e.studentResults.user,showFeedback:e.showFeedback,showAvatar:e.showAvatar},r.createElement(h.Z,{studentAttempt:l,correctness:m,markInteraction:e.markInteraction,markedStatus:e.markedStatus})):r.createElement(b.R,null)),!e.showStudentDetails&&r.createElement(p.Y,{correctness:m}))))))}},71553:(e,t,n)=>{n.d(t,{I:()=>i});var r=n(99940),a=n(62875);function s(e,t){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:{start:t.start,end:t.end},userIds:t.userId,classroomsAndGroups:t.groupId}}var i={interactiveResultSet:function(e,t,n,i,o,c,u,l){return{url:o?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(t):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(t),key:(0,a.H)("interactive:result:set:".concat(e,":").concat(t),i),data:s(n,i),type:r.k.POST,normalize:!1,success:c,error:u,always:l}},mark:function(e,t,n,a,s,i,o){return{url:"/api/domain/v1/analytics/answers/".concat(n),key:"mark:answer:".concat(n,":").concat(a.resultId),type:r.k.PUT,data:a,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:s,error:i,always:o}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:r.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"{gateway}/v2/analytics/interactives/report",key:"interactive:results:report",data:e,type:r.k.POST,normalize:!1}}}},9193:(e,t,n)=>{n.d(t,{D:()=>f});var r=n(32735),a=n(70680),s=n(23481),i=n(20354),o=n(71553),c=n(39157),u=n(69883);function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var d=s.T.encloseNamespace("reportsShared.dataHooks"),f=function(e,t,n){var s,f,v=(s=(0,r.useState)({}),f=2,function(e){if(Array.isArray(e))return e}(s)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,s,i,o=[],c=!0,u=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw a}}return o}}(s,f)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(s,f)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=v[0],y=v[1],p=(0,a.I0)(),w=(0,u.Z)();return{markedAnswers:g,addMarkedAnswers:function(e,t){e.forEach((function(e){y((function(n){return Object.assign(Object.assign({},n),function(e,t,n){return(t=function(e){var t=function(e){if("object"!=l(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=l(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==l(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},(0,c.UU)(e),Object.assign(Object.assign({},e),{status:t})))}))}))},submitMarkedAnswers:function(){var r=Object.keys(g).map((function(e){return g[e]}));if(r.length){var a=0,s=0;r.forEach((function(n){var r=n.id,a=n.resultId,s=n.questionId,l=n.status;i.a.fetch(p,o.I.mark(e,t,r,{id:r,resultId:a,questionId:s,status:l},c,null,u))}))}function c(){s++}function u(){var e,t;++a===r.length&&(e="",t=!1,0===s&&(e=d("error",{smartCount:r.length}),t=!0),s<a&&(e=d("success",{smartCount:s})+" ".concat(d("partialError",{smartCount:a-s}))),s===a&&(e=d("success",{smartCount:s})),t?w.error(e):w.success(e),y({}),n&&n())}}}}},39157:(e,t,n)=>{n.d(t,{HI:()=>d,R6:()=>u,Rt:()=>v,UU:()=>m,Zs:()=>l,nq:()=>f});var r=n(75896),a=n(94892),s=n(28972),i=n(8246),o=n(83140),c=n(80845);function u(e,t,n){var s={markingRequired:[],lowScore:[],highScore:[],completed:[],notCompleted:[]},i=(0,c.Q)(e).length;t.students.forEach((function(t){var o=Object.assign(Object.assign({},t),{summary:v(e,t)});o.summary.awaitingMarking?s.markingRequired.push(o):r.m.last(t.results).attempts.length===i?(s.completed.push(o),o.summary.percentCorrect>=((null==n?void 0:n.HIGH)||a.i.HIGH)&&s.highScore.push(o),o.summary.percentCorrect<((null==n?void 0:n.MODERATE)||a.i.MODERATE)&&s.lowScore.push(o)):s.notCompleted.push(o)}));var o=r.m.sortBy(s.lowScore,(function(e){return e.summary.percentCorrect})),u=r.m.sortBy(s.highScore,(function(e){return-e.summary.percentCorrect}));return Object.assign(Object.assign({},s),{lowScore:o,highScore:u})}function l(e,t){return(0,c.Wn)(e).find((function(e){return e.id.toString()===t.toString()}))}function m(e){return"".concat(e.questionId,":").concat(e.resultId)}function d(e,t,n){var r=(0,c.j_)(t),a=(0,c.f6)(e,r);return(null==a?void 0:a.answers.every((function(e){var t;return(null===(t=n[m(e)])||void 0===t?void 0:t.status)===i.N.Correct})))?i.N.Correct:(null==a?void 0:a.answers.every((function(e){var t;return(null===(t=n[m(e)])||void 0===t?void 0:t.status)===i.N.Incorrect})))?i.N.Incorrect:void 0}function f(e,t){var n=t.students.length,r=0,a=0,i=0,u=0,l=0;return t.students.forEach((function(t){var n=(0,c.j_)(t);if(n){l+=t.results.length;var m=o.A.isInteractionCorrect(e,n);m===s.w.Correct&&r++,m===s.w.UnAnswered&&i++,m===s.w.AwaitingMarking&&u++,m!==s.w.UnAnswered&&a++}})),{percentCorrect:n>0?r/n:0,correct:r,answered:a,unanswered:i,awaitingMarking:u,attempts:l}}function v(e,t){var n=(0,c.j_)(t),r=(0,c.Q)(e),a=r.length,i=0,u=0;r.forEach((function(e){var t=o.A.isInteractionCorrect(e,n);t===s.w.Correct&&i++,t===s.w.AwaitingMarking&&u++}));var l=a>0?i/a:0,m=new Set(r.map((function(e){return e.id}))),d=n.attempts.filter((function(e){var t;return!!m.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)})).length;return{answered:n.attempts.length,attempts:t.results.length,unanswered:a-d,percentCorrect:l,correct:i,awaitingMarking:u}}},93322:(e,t,n)=>{n.d(t,{F:()=>s});var r=n(32735),a=n(13126);function s(){r.useEffect((function(){return a.e.lockContentWidth(),function(){return a.e.unlockContentWidth()}}),[])}}}]);
2
- //# sourceMappingURL=7064-f5e8bc71bc-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/7064-f5e8bc71bc-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/IllustrationResponse.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/MissingWordResponse.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/MultipleChoiceResponse.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/TrueOrFalseResponse.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/ShortAnswerResponse.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/interaction-response-item.scss","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/InteractionResponseItem.tsx","file:///app/packages/libs/shared/src/apps/analytics/flight-requests/InteractiveResultsRequests.ts","file:///app/packages/libs/shared/src/apps/analytics/hooks/UseMarkAnswers.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/InteractiveUtils.ts","file:///app/packages/libs/shared/src/hooks/useLockContentWidth.ts"],"sourcesContent":["import React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { StudentAnswer } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\ninterface AnswerContainerProps extends React.PropsWithChildren {\n answer: StudentAnswer;\n textClassName?: string;\n customAnswer?: boolean;\n}\n\nexport function AnswerContainer(props: AnswerContainerProps) {\n const { answer } = props;\n\n function getBgColour(status: InteractiveAnswerStatus) {\n switch (status) {\n case InteractiveAnswerStatus.Correct: return 'bg-light-green';\n case InteractiveAnswerStatus.Incorrect: return 'bg-light-red';\n case InteractiveAnswerStatus.PendingReview: return 'bg-light-blue';\n }\n }\n\n return (\n <div key={answer.id} className={`${getBgColour(answer.status)} rounded p-2 mb-2`}>\n <div className='d-flex align-items-center gap-2'>\n {answer.status === InteractiveAnswerStatus.Correct && <SvgContainer svgName={cvSvgLibrary.Check} className='svg-container flex-shrink-0 text-success' />}\n {answer.status === InteractiveAnswerStatus.Incorrect && <SvgContainer svgName={cvSvgLibrary.Close} className='svg-container flex-shrink-0 text-danger' />}\n {!props.customAnswer && <span className={props.textClassName}>{answer.text}</span>}\n </div>\n {props.children}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\nconst namespace = 'shared.interactionResponses';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function IllustrationResponse(props: ResponseItemComponentProps): JSX.Element {\n const answer = ArrayHelper.first(props.answers);\n\n if (!answer)\n return <></>;\n\n return (\n <AnswerContainer answer={answer} customAnswer>\n <div className='ratio ratio-16x9'>\n <img\n className='img-fluid bg-white border rounded h-100 w-100'\n src={answer.text}\n alt={`${getPhrase('illustrationAlt')}: ${props.interaction.name}`}\n />\n </div>\n {props.children}\n </AnswerContainer>\n );\n}","import React from 'react';\n\nimport { Interaction, InteractionTypeId, StudentAnswer, User } from 'libs/shared/interfaces';\n\nimport { IllustrationResponse } from './components/IllustrationResponse';\nimport { MissingWordResponse } from './components/MissingWordResponse';\nimport { MultipleChoiceResponse } from './components/MultipleChoiceResponse';\nimport { ShortAnswerResponse } from './components/ShortAnswerResponse';\nimport { TrueOrFalseResponse } from './components/TrueOrFalseResponse';\n\nexport interface ResponseItemComponentProps extends React.PropsWithChildren {\n interaction: Interaction;\n answers: StudentAnswer[];\n imageCdnUrl: string;\n user: User;\n showFeedback?: boolean;\n showAvatar?: boolean;\n anonymisedUserName?: string;\n}\nconst NoResponseRequired = () => <></>;\n\nexport const ResponseItemComponentLookup: {\n [typeId: number]: (props: ResponseItemComponentProps) => JSX.Element\n} = {\n [InteractionTypeId.Annotation]: NoResponseRequired,\n [InteractionTypeId.Image]: NoResponseRequired,\n [InteractionTypeId.MissingWord]: MissingWordResponse,\n [InteractionTypeId.MultipleChoice]: MultipleChoiceResponse,\n [InteractionTypeId.TrueOrFalse]: TrueOrFalseResponse,\n [InteractionTypeId.ShortAnswer]: ShortAnswerResponse,\n [InteractionTypeId.Illustration]: IllustrationResponse\n};","import React from 'react';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\n\nexport function MissingWordResponse(props: ResponseItemComponentProps) {\n if (!props.answers.length) return <></>;\n\n return (\n <ul className='list-unstyled'>\n {props.answers.map(answer => (\n <li key={answer.id}>\n <AnswerContainer\n answer={answer}\n textClassName='bg-white p-1 border border-gray-300 rounded'\n />\n </li>\n ))}\n </ul>\n );\n}","import React from 'react';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\nexport function MultipleChoiceResponse(props: ResponseItemComponentProps) {\n if (!props.answers.length) return <></>;\n\n return (\n <ul className='list-unstyled'>\n {props.answers.map(answer => (\n <li key={answer.id}>\n <AnswerContainer answer={answer} />\n </li>\n ))}\n </ul>\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\nexport function TrueOrFalseResponse(props: ResponseItemComponentProps) {\n const answer = ArrayHelper.first(props.answers);\n\n if (!answer)\n return <></>;\n\n return (\n <AnswerContainer answer={answer} />\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\nexport function ShortAnswerResponse(props: ResponseItemComponentProps): JSX.Element {\n const answer = ArrayHelper.first(props.answers);\n\n if (!answer)\n return <></>;\n\n return (\n <AnswerContainer answer={answer}>\n {props.children}\n </AnswerContainer>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"O7oaA\"};","import React from 'react';\n\nimport { ResponseItemComponentLookup } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { InteractionResponseCorrectness } from 'libs/shared/components/interaction-response/InteractionResponseCorrectness';\nimport { InteractionStudentDetailsHeader } from 'libs/shared/components/interaction-response/InteractionStudentDetailsHeader';\nimport { MarkResponse } from 'libs/shared/components/interaction-response/MarkResponse';\nimport { NoResponse } from 'libs/shared/components/interaction-response/response-types/NoResponse';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getStudentAttempt, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './interaction-response-item.scss';\n\ninterface InteractionResponseProps {\n interaction: Interaction;\n studentResults: StudentResults;\n imageCdnUrl: string;\n markInteraction: (answers: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n markedStatus?: InteractiveAnswerStatus;\n showStudentDetails?: boolean;\n className?: string;\n showFeedback?: boolean;\n showAvatar?: boolean;\n anonymisedUserName?: string;\n responseComponentClass?: string;\n}\n\nexport function InteractionResponseItem(props: InteractionResponseProps): JSX.Element {\n const ResponseItemComponent = ResponseItemComponentLookup[props.interaction.typeId];\n\n if (!ResponseItemComponent)\n return <></>;\n\n const result = getStudentResult(props.studentResults);\n\n const studentAttempt = getStudentAttempt(props.interaction.id, result);\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(props.interaction, result);\n\n return (\n <div className='position-relative'>\n <div className={`rounded ${props.className ?? ''}`}>\n <div className='d-flex'>\n {!!props.showStudentDetails &&\n <div className='me-2'>\n <div className={styles.avatarContainer}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={props.anonymisedUserName\n ? UserHelper.getInitialsFromFullName(props.anonymisedUserName)\n : UserHelper.getInitials(props.studentResults.user?.name, props.studentResults.user?.surname)\n }\n imageUrl={props.anonymisedUserName ? null : props.studentResults.user?.avatar?.url}\n showAnonymousUser={!!props.studentResults?.sessionId}\n />\n </div>\n \n </div>\n }\n <div className='flex-grow-1'>\n {!!props.showStudentDetails &&\n <InteractionStudentDetailsHeader\n studentResults={props.studentResults}\n correctness={correctness}\n anonymisedUserName={props.anonymisedUserName}\n />\n }\n <div className='d-flex justify-content-between'>\n <div className={`flex-grow-1 mb-2 ${props.responseComponentClass ? props.responseComponentClass : ''}`}>\n {studentAttempt\n ? <ResponseItemComponent\n interaction={props.interaction}\n answers={studentAttempt.answers}\n imageCdnUrl={props.imageCdnUrl}\n user={props.studentResults.user}\n showFeedback={props.showFeedback}\n showAvatar={props.showAvatar}\n >\n <MarkResponse\n studentAttempt={studentAttempt}\n correctness={correctness}\n markInteraction={props.markInteraction}\n markedStatus={props.markedStatus}\n />\n </ResponseItemComponent>\n : <NoResponse />\n }\n </div>\n {!props.showStudentDetails &&\n <InteractionResponseCorrectness correctness={correctness} />\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { MarkInteractiveAnswer } from 'libs/shared/apps/analytics/interfaces/MarkInteractiveAnswer';\nimport { InteractiveResultsReport } from 'libs/shared/apps/analytics/interfaces/requests/InteractiveResultsReport';\nimport { InteractivesPendingReviewsRequest } from 'libs/shared/apps/analytics/interfaces/requests/InteractivesPendingReviewsRequest';\nimport { AnalyticsRequestFilter, CurrentUser, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\ninterface InteractiveResultFilters {\n currentUserId: string;\n currentCustomerId: string;\n dateRange?: { start: string, end: string }\n userIds?: string | string[];\n classroomsAndGroups?: string | string[];\n}\n\nfunction getInteractiveResultFilters(\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter\n): InteractiveResultFilters {\n return {\n currentUserId: currentUser.id,\n currentCustomerId: currentUser.customerId,\n dateRange: { start: filter.start, end: filter.end },\n userIds: filter.userId,\n classroomsAndGroups: filter.groupId\n };\n}\n\nexport const InteractiveResultsRequests = {\n /** \n * This endpoint returns data with a lot of duplicated ids,\n * e.g. student answers to the same question will have the same id.\n * Because of that, we don't normalize.\n */\n interactiveResultSet(\n interactiveId: string,\n interactiveMetadataId: string,\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter,\n includePublicResults: boolean,\n success?: (data: InteractiveResultSet) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: includePublicResults ?\n `/api/domain/v3/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}` :\n `/api/domain/v2/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}`,\n key: getAnalyticsRequestKey(`interactive:result:set:${interactiveId}:${interactiveMetadataId}`, filter),\n data: getInteractiveResultFilters(currentUser, filter),\n type: HttpVerbs.POST,\n normalize: false,\n success,\n error,\n always\n };\n },\n \n /**\n * As the response from `interactiveResultSet` isn't normalised, we need to invalidate the cache\n * to update the results data.\n */\n mark(\n interactiveId: string,\n interactiveMetadataId: string,\n answerId: string,\n data: MarkInteractiveAnswer,\n success?: () => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/answers/${answerId}`,\n key: `mark:answer:${answerId}:${data.resultId}`,\n type: HttpVerbs.PUT,\n data,\n normalize: false,\n invalidationKeys: `interactive:result:set:${interactiveId}:${interactiveMetadataId}`,\n success,\n error,\n always\n };\n },\n\n pendingReviews(data: InteractivesPendingReviewsRequest): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/interactives/pending-reviews/summary`,\n key: `interactives:pending:reviews`,\n type: HttpVerbs.POST,\n data\n };\n },\n\n interactiveResultsReport(data: InteractiveResultsReport): Flight.Request {\n return {\n url: '{gateway}/v2/analytics/interactives/report',\n key: 'interactive:results:report',\n data,\n type: HttpVerbs.POST,\n normalize: false\n };\n }\n};","import { useState } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { getMarkedAnswerId } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { StudentAnswer } from 'libs/shared/interfaces';\n\nconst getPhrase = LanguageService.encloseNamespace('reportsShared.dataHooks');\n\nexport type MarkedAnswerHash = { [id: string]: StudentAnswer };\n\n/**\n * This hook manages the storing of a marked answer hash in state and then the submitting\n * of those answers via an api call.\n */\nexport const useMarkAnswers = (interactiveId: string, interactiveMetadataId: string, onDone?: () => void) => {\n const [ markedAnswers, setMarkedAnswers ] = useState<MarkedAnswerHash>({});\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n function addMarkedAnswers(answers: StudentAnswer[], status: InteractiveAnswerStatus): void {\n answers.forEach(a => {\n setMarkedAnswers(m => ({ ...m, [getMarkedAnswerId(a)]: { ...a, status } }));\n });\n }\n\n function submitMarkedAnswers(): void {\n const answers = Object.keys(markedAnswers).map(key => markedAnswers[key]);\n\n if (!answers.length)\n return;\n\n let completeCount = 0;\n let successCount = 0;\n\n function onSuccess(): void {\n successCount++;\n }\n\n function onAlways(): void {\n completeCount++;\n\n if (completeCount === answers.length)\n onComplete();\n }\n\n function onComplete(): void {\n let alertMessage = '';\n let useErrorAlert = false;\n\n if (successCount === 0) {\n alertMessage = getPhrase('error', { smartCount: answers.length });\n useErrorAlert = true;\n }\n\n if (successCount < completeCount) {\n alertMessage = getPhrase('success', { smartCount: successCount })\n + ` ${getPhrase('partialError', { smartCount: completeCount - successCount })}`;\n }\n\n if (successCount === completeCount) {\n alertMessage = getPhrase('success', { smartCount: successCount });\n }\n\n useErrorAlert\n ? alerts.error(alertMessage)\n : alerts.success(alertMessage);\n\n setMarkedAnswers({});\n\n onDone && onDone();\n }\n\n answers.forEach(({ id, resultId, questionId, status }) => {\n Flight.fetch(dispatch, InteractiveResultsRequests.mark(\n interactiveId,\n interactiveMetadataId,\n id,\n { id, resultId, questionId, status },\n onSuccess,\n null,\n onAlways\n ));\n });\n }\n\n return {\n markedAnswers,\n addMarkedAnswers,\n submitMarkedAnswers\n };\n};","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { ScoreThresholdDefaults, ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { flattenInteractions, getInteractions, getStudentAttempt, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\ninterface StudentGroups {\n markingRequired: StudentResultsWithSummary[];\n lowScore: StudentResultsWithSummary[];\n highScore: StudentResultsWithSummary[];\n completed: StudentResultsWithSummary[];\n notCompleted: StudentResultsWithSummary[];\n}\n\nexport function groupStudents(\n interactive: Interactive,\n results: InteractiveResultSet,\n scoreThreshold?: ScoreThresholds\n): StudentGroups {\n const groups: StudentGroups = {\n markingRequired: [],\n lowScore: [],\n highScore: [],\n completed: [],\n notCompleted: []\n };\n\n const interactions = getInteractions(interactive);\n\n const numInteractions = interactions.length;\n \n results.students.forEach(s => {\n const withSummary = {\n ...s,\n summary: getStudentResultsSummary(interactive, s)\n };\n \n if (withSummary.summary.awaitingMarking) {\n groups.markingRequired.push(withSummary);\n return;\n }\n\n if (ArrayHelper.last(s.results).attempts.length === numInteractions) {\n groups.completed.push(withSummary);\n } else {\n groups.notCompleted.push(withSummary);\n return;\n }\n \n if (withSummary.summary.percentCorrect >= (scoreThreshold?.HIGH || ScoreThresholdDefaults.HIGH))\n groups.highScore.push(withSummary);\n \n if (withSummary.summary.percentCorrect < (scoreThreshold?.MODERATE || ScoreThresholdDefaults.MODERATE))\n groups.lowScore.push(withSummary);\n });\n \n const sortedLowScore = ArrayHelper.sortBy(groups.lowScore, s => s.summary.percentCorrect);\n const sortedHighScore = ArrayHelper.sortBy(groups.highScore, s => -s.summary.percentCorrect);\n \n return {\n ...groups,\n lowScore: sortedLowScore,\n highScore: sortedHighScore\n };\n}\n\nexport function getInteractionById(interactive: Interactive, interactionId: string): Interaction {\n const flattenedInteractions = flattenInteractions(interactive);\n return flattenedInteractions.find(i => i.id.toString() === interactionId.toString());\n}\n\n/**\n * We need to use the question and result ids as a list of one student's responses\n * to multiple questions will all have the same result id and a list of multiple\n * students responses to one question will all have the same questionId.\n */\nexport function getMarkedAnswerId(answer: StudentAnswer): string {\n return `${answer.questionId}:${answer.resultId}`;\n}\n\nexport function getMarkedStatus(\n interactionId: string,\n studentResults: StudentResults,\n markedAnswers: MarkedAnswerHash\n): InteractiveAnswerStatus {\n const result = getStudentResult(studentResults);\n const studentResponse = getStudentAttempt(interactionId, result);\n\n const isMarkedCorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Correct;\n });\n\n if (isMarkedCorrect)\n return InteractiveAnswerStatus.Correct;\n\n const isMarkedIncorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Incorrect;\n });\n\n if (isMarkedIncorrect)\n return InteractiveAnswerStatus.Incorrect;\n}\n\nexport function getInteractionResultsSummary(\n interaction: Interaction,\n results: InteractiveResultSet\n): ResultsSummary {\n const numStudents = results.students.length;\n let numCorrect = 0;\n let answered = 0;\n let unanswered = 0;\n let awaitingMarking = 0;\n let attempts = 0;\n\n results.students.forEach(s => {\n const result = getStudentResult(s);\n\n if (!result)\n return;\n\n attempts = attempts + s.results.length;\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(interaction, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.UnAnswered)\n unanswered++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n\n if (correctness !== InteractionCorrectness.UnAnswered)\n answered++;\n });\n\n\n const percentCorrect = numStudents > 0\n ? numCorrect / numStudents\n : 0;\n\n return {\n percentCorrect,\n correct: numCorrect,\n answered,\n unanswered,\n awaitingMarking,\n attempts\n };\n}\n\nexport function getStudentResultsSummary(interactive: Interactive, studentResults: StudentResults): ResultsSummary {\n const result = getStudentResult(studentResults);\n\n const interactions = getInteractions(interactive);\n\n const numInteractions = interactions.length;\n\n let numCorrect = 0;\n let awaitingMarking = 0;\n\n interactions.forEach(i => {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(i, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n });\n\n const percentCorrect = numInteractions > 0 ? numCorrect / numInteractions : 0;\n\n /**\n * Our interactions list has images and annotations filtered out.\n * We built a map of valid questions, so that we can calculate the unswered accurately.\n * We're doing this because of a bug that caused annotations and images to record answers in the player.\n * - Sha\n */\n const interactionIds = new Set(interactions.map(i => i.id));\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n return {\n answered: result.attempts.length,\n attempts: studentResults.results.length,\n unanswered: numInteractions - answeredInteractions,\n percentCorrect,\n correct: numCorrect,\n awaitingMarking\n };\n}","import React from 'react';\n\nimport { LayoutHelper } from 'libs/shared/utils/LayoutHelper';\n\nexport function useLockContentWidth(): void {\n React.useEffect(() => {\n LayoutHelper.lockContentWidth();\n return () => LayoutHelper.unlockContentWidth();\n }, []);\n}"],"names":["AnswerContainer","props","answer","key","id","className","status","InteractiveAnswerStatus","getBgColour","SvgContainer","svgName","customAnswer","textClassName","text","children","getPhrase","LanguageService","NoResponseRequired","ResponseItemComponentLookup","answers","length","map","ArrayHelper","src","alt","interaction","name","InteractionResponseItem","ResponseItemComponent","typeId","result","studentResults","studentAttempt","correctness","InteractiveCorrectnessHelper","showStudentDetails","Avatar","imageCdnUrl","initials","anonymisedUserName","UserHelper","user","surname","imageUrl","avatar","url","showAnonymousUser","sessionId","InteractionStudentDetailsHeader","responseComponentClass","showFeedback","showAvatar","MarkResponse","markInteraction","markedStatus","NoResponse","InteractionResponseCorrectness","getInteractiveResultFilters","currentUser","filter","currentUserId","currentCustomerId","customerId","dateRange","start","end","userIds","userId","classroomsAndGroups","groupId","InteractiveResultsRequests","interactiveResultSet","interactiveId","interactiveMetadataId","includePublicResults","success","error","always","data","type","normalize","mark","answerId","resultId","invalidationKeys","pendingReviews","interactiveResultsReport","useMarkAnswers","onDone","useState","markedAnswers","setMarkedAnswers","dispatch","alerts","addMarkedAnswers","forEach","a","m","submitMarkedAnswers","Object","keys","completeCount","successCount","questionId","I","onSuccess","onAlways","alertMessage","useErrorAlert","smartCount","groupStudents","interactive","results","scoreThreshold","groups","markingRequired","lowScore","highScore","completed","notCompleted","numInteractions","students","s","withSummary","summary","getStudentResultsSummary","awaitingMarking","push","attempts","percentCorrect","HIGH","MODERATE","sortedLowScore","sortedHighScore","getInteractionById","interactionId","find","i","toString","getMarkedAnswerId","getMarkedStatus","studentResponse","every","getInteractionResultsSummary","numStudents","numCorrect","answered","unanswered","correct","interactions","interactionIds","Set","answeredInteractions","has","useLockContentWidth"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7428],{70376:(e,t,n)=>{"use strict";n.d(t,{W:()=>c});var r=n(32735),a=n(91967);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var o=5e3;function c(e){var t,n,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o,l=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=l[0],u=l[1],d=r.useRef(null),p=function(){u((function(e){return!e})),d.current=window.setTimeout(p,c)};return r.useEffect((function(){d.current=window.setTimeout(p,c)}),[]),r.useEffect((function(){a.q.isFunction(e)&&e()}),[s]),function(){return window.clearTimeout(d.current)}}},5255:(e,t,n)=>{"use strict";n.d(t,{Y:()=>c});var r=n(70376),a=n(20354),i=n(30439);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function c(e){var t,n=a.a.useGetFetch(),c=e&&i.o.getAnonSessions(e),l=a.a.useBasicFetch(c);return(0,r.W)((function(){return n(c)}),5e3),(null===(t=l.data)||void 0===t?void 0:t.length)?l.data.reduce((function(e,t){return Object.assign(Object.assign({},e),(n={},r=t.sessionId,a=t,(r=function(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}(r))in n?Object.defineProperty(n,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[r]=a,n));var n,r,a}),{}):{}}},4606:(e,t,n)=>{"use strict";n.d(t,{U:()=>o});var r=n(20354),a=n(75896),i=n(31949);function o(e){var t=a.m.chunk(null!=e?e:[],25),n=r.a.useBasicFetchAll(t.map((function(e){return i.N.getById(e)})));return{users:a.m.flatten(n.data),isLoading:!n.hasCompleted,usersResponse:n}}},9806:(e,t,n)=>{"use strict";n.d(t,{k:()=>O});var r=n(32735),a=n(65858),i=n(64249),o=n(15611),c=n(7432),l=n(11834),s=n(83345),u=n(56754),d=n(86348),p=n(7733),m=n(54610),v=n(4594),f=n(68626),y=n(9085),g=n(67453),b=n(31908);const h={thumbnailFallbackSvg:"D4JFs",posterFallbackSvg:"bjUWl",coverFallbackSvg:"kdLpt",thumbnailContainer:"d3CKN",insightsMask:"KM76U",requireMarking:"peLH7",badge:"mVu0E",bar:"zO3MS",a:"K1jW5",expandBar:"YITJl",b:"tCpLF",c:"lC0cq"};var w="shared.sharedObjectImage",E="rounded overflow-hidden";function k(){return r.createElement("div",{className:"d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center"},r.createElement("div",{className:"position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3"}),r.createElement("div",{className:"d-flex align-items-end gap-2 h-50 z-1"},r.createElement("div",{className:"d-flex align-items-end h-50"},r.createElement("div",{className:"".concat(h.bar," ").concat(h.a," rounded shadow")})),r.createElement("div",{className:"d-flex align-items-end h-75"},r.createElement("div",{className:"".concat(h.bar," ").concat(h.b," rounded shadow")})),r.createElement("div",{className:"d-flex align-items-end h-100"},r.createElement("div",{className:"".concat(h.bar," ").concat(h.c," rounded shadow")}))))}function O(e){var t=r.useCallback((function(t){var n;t&&e.fixedHeight&&(t.style.width="".concat(t.offsetHeight*(n=e.object,b.M.isVideoType(n)?16/9:n.typeId===v.E.Playlist?1:n.typeId===v.E.Series?9/16:void 0),"px"))}),[]),n=b.M.isVideoType(e.object),O=function(e){var t=g.j.getDisplayImageFromObject(e);if(b.M.isVideoType(e))return{image:t,imageType:m.__.Thumbnails,imageClassName:E,imageFallbackComponent:r.createElement(l.oy,{type:l.mS.Video})};switch(e.typeId){case v.E.Series:return{image:t,imageType:m.__.TallPosters,imageClassName:E,imageFallbackComponent:r.createElement(l.oy,{type:l.mS.Series,svgContainerClassName:h.posterFallbackSvg})};case v.E.Playlist:return{image:t,imageType:m.__.Covers,imageClassName:(null==t?void 0:t.url)?E:"".concat(E," ").concat((0,y.x)(e.name,p.o)),imageFallbackComponent:r.createElement(l.oy,{type:l.mS.Playlist,svgContainerClassName:(null==t?void 0:t.url)?h.coverFallbackSvg:"d-none",extraClasses:!(null==t?void 0:t.url)&&"bg-transparent"})}}}(e.object),S=O.image,j=O.imageType,x=O.imageClassName,C=O.imageFallbackComponent,I=e.showVideoMetadata?{}:{hideDuration:!0,hideMask:!0,hideRating:!0,hideVideoTypeBadge:!0};return r.createElement("div",{className:"d-flex align-items-center justify-content-center w-100 h-100"},r.createElement("div",{ref:t,className:e.fixedHeight?"h-100":"w-100"},n&&r.createElement("div",{className:"".concat(h.thumbnailContainer," position-relative")},e.showInsightsMask&&r.createElement(k,null),r.createElement(o.F,{appLink:e.appLink},r.createElement(d.u,Object.assign({video:e.object,size:e.thumbnailSize,imageOptions:e.imageOptions,textPosition:f.z.Independent,type:"cosmetic"},I))),!!e.requireMarking&&r.createElement("div",{className:"".concat(e.showInsightsMask&&h.requireMarking," position-absolute bottom-0 end-0 z-1 m-2")},r.createElement("div",{className:"".concat(h.badge," d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2")},r.createElement(s.x,{namespace:w,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))),!n&&r.createElement(r.Fragment,null,"videos"in e.object?r.createElement(u.I,{collection:e.object,imageOptions:e.imageOptions,appLink:e.appLink,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:i.I.getAnalyticsEntity(e.object.type),actionType:a.Vw.Click,location:e.locationContext},showMask:e.showCollectionMask,showVideoCount:e.showVideoCount}):r.createElement(c.Z,{data:null==S?void 0:S.url,imageType:j,imageOptions:e.imageOptions,appLink:e.appLink,className:x,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:i.I.getAnalyticsEntity(e.object.type),actionType:a.Vw.Click,location:e.locationContext}},C))))}O.defaultProps={imageOptions:{size:m.h2.Small}}},56754:(e,t,n)=>{"use strict";n.d(t,{I:()=>w});var r=n(32735),a=n(75896),i=n(65858),o=n(15611),c=n(83914),l=n(83345);const s={thumbnailTitle:"OsWjL"};function u(e){return r.createElement("h3",{title:e.title,className:"h6"},e.title)}function d(e){return e.appLink?r.createElement(o.F,{appLink:e.appLink,className:"".concat(s.thumbnailTitle)},r.createElement(u,Object.assign({},e))):r.createElement(u,Object.assign({},e))}var p=n(86348),m=n(62335),v=n(4594),f=n(68626),y=n(45778),g=n(35223);const b={badge:"M4zat",mask:"r0Ztg",thumbnailContainer:"uD9dz"};var h="shared.collectionThumbnail";function w(e){var t,n,s,u,w=function(){var t,n=null===(t=e.collection)||void 0===t?void 0:t.videos;if(n){if(!n.count&&e.collection.typeId===v.E.Playlist){var r=e.collection;r.clips.count&&(n=r.clips),r.interactives.count&&(n=r.interactives)}return a.m.first(n.data)}}(),E=function(){var t,n,r=0;if(e.collection.videos&&e.collection.videos.count&&(r+=e.collection.videos.count),e.collection.typeId===v.E.Playlist){var a=e.collection;(null===(t=a.interactives)||void 0===t?void 0:t.count)&&(r+=a.interactives.count),(null===(n=a.clips)||void 0===n?void 0:n.count)&&(r+=a.clips.count)}return r}(),k=(null===(t=e.title)||void 0===t?void 0:t.length)||(null===(n=e.subText)||void 0===n?void 0:n.length),O=Object.assign({id:e.collection.id.toString(),name:e.collection.name},e.analyticsData),S=Object.assign({actionType:i.Vw.Click,entity:(u=e.collection,y.G.isType(u,v.E.Playlist)?i.py.Playlist:y.G.isType(u,v.E.Series)?i.py.Series:void 0)},e.analyticsOptions);return r.createElement("div",null,r.createElement("div",{className:"position-relative ".concat(b.thumbnailContainer," z-1")},r.createElement(o.F,{appLink:e.appLink,analyticsData:O,analyticsOptions:S,preventFocus:!0},e.showMask&&r.createElement("div",{className:"".concat(b.mask," position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none")},r.createElement("div",{className:"".concat(b.badge," d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2")},r.createElement(c.x,{svgName:g.vn.Play,className:"svg-container text-white"}),r.createElement("p",{className:"d-inline fw-medium text-white mb-0"},(null===(s=e.hoverText)||void 0===s?void 0:s.length)?r.createElement("span",null,e.hoverText):r.createElement(l.x,{namespace:h,phrase:"playAll"})))),w&&r.createElement(p.u,{video:w,imageOptions:e.imageOptions,textPosition:f.z.Independent,type:"cosmetic",hideMask:!0,hideRating:!0,hideDuration:!0,hideVideoTypeBadge:!0}),!w&&r.createElement("div",{className:"ratio ratio-16x9 bg-light rounded-3"},r.createElement("div",{className:"d-flex justify-content-center align-items-center"},r.createElement(c.x,{svgName:g.vn.Play,className:"w-33 opacity-25 text-gray-400"}))),e.showVideoCount&&r.createElement("div",{className:"".concat(b.badge," d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2")},r.createElement(c.x,{svgName:g.vn.Series,className:"svg-container text-white me-1"}),r.createElement("p",{className:"d-inline fw-semibold text-white mb-0"},r.createElement(l.x,{namespace:h,phrase:"videos",options:{count:E,smartCount:E}}))))),k&&r.createElement("div",{className:"mt-2 d-flex flex-column"},e.subText&&r.createElement(m.m,{title:e.subText,appLink:e.subTextAppLink},e.subText),e.title&&r.createElement(d,{title:e.collection.name,appLink:e.titleAppLink})))}},94644:(e,t,n)=>{"use strict";n.d(t,{r:()=>u});var r=n(50242),a=n(81886),i=n(67058),o=n(14553),c=n(49267),l=n(49075),s={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:l._,internalServerError:l._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},s),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new o.badRequest):n.forbidden||a.Q.Ry.throw(new o.forbidden.privacy):n.notFound||a.Q.Ry.throw(new o.notFound):n.internalServerError||a.Q.Ry.throw(new l._))}}},17913:(e,t,n)=>{"use strict";n.d(t,{u:()=>o});var r=n(97395),a=n(110),i=n(62875),o={individualEngagement:function(e,t,n,a){var o=Object.assign({objectId:e},t);return n&&(o.sharerId=n),a&&(o.includeAnonViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/heat-map",o),key:(0,i.H)("engagement:".concat(e,":").concat(a),t,n),formatData:function(e){var t;return Object.assign(Object.assign({},e),{data:null===(t=e.data)||void 0===t?void 0:t.map((function(e){var t;return Object.assign(Object.assign({},e),{heatMap:null!==(t=e.heatMap)&&void 0!==t?t:[]})}))})},normalize:!1}},aggregateEngagement:function(e,t,n,a){var o=Object.assign({objectId:e},t);return n&&(o.sharerId=n),a&&(o.includeAnonViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/heat-map/aggregations",o),key:(0,i.H)("aggregate:engagement:".concat(e,":").concat(a),t,n),formatData:function(e){var t;return Object.assign(Object.assign({},e),{heatMap:null!==(t=e.heatMap)&&void 0!==t?t:[]})},normalize:!1}},views:function(e,t,n,o){var c=Object.assign(Object.assign({},e),{timeOffset:a.O.getTimezoneOffset()});return t&&(c.objectId=t),n&&(c.sharerId=n),o&&(c.includeAnonViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/video-views",c),key:(0,i.H)("video:views:".concat(t,":").concat(o),e,n),normalize:!1}}}},91286:(e,t,n)=>{"use strict";n.d(t,{v:()=>o});var r=n(32735),a=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,n){var o=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){o.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[i(o),t,n])}},63178:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ShareOptionsView:()=>X});var r=n(32735),a=n(70376),i=n(2948),o=n(20354),c=n(50938),l=n(5255),s=n(4606),u=n(26025),d=n(74901),p=n(40003),m=n(49475),v=n(91693),f=n(4594),y=n(16714),g=n(39151),b=n(5112),h=n(60011),w=n(31949),E=n(17913),k=n(3010),O=n(91286),S=n(93322),j=n(22902),x=n(79612),C=n(37802),I=n(35223),N=n(31908),P=n(99742),T=n(86702),L=n(88630),A=n(59087),R=n(39202),M=n(65858),D=n(9806),F=n(83914),V=n(54610),_=n(14070),z=n(97291),B=n(22490),U=n(4315);function W(e){var t,n,a,i,o,c,l,s,u,d,p=null!==(a=null===(n=null===(t=e.shareLink)||void 0===t?void 0:t.link)||void 0===n?void 0:n.shortenedUrl)&&void 0!==a?a:"",m=B.W.getAppLink(e.sharedObject),f=R.C$.getHref(m);return r.createElement("div",null,r.createElement("h3",null,"Share information"),r.createElement("div",{className:"mb-4 bg-light-blue p-3 rounded-3"},r.createElement("div",{className:"d-flex gap-3"},e.sharedObject&&r.createElement("div",{style:{minWidth:220},className:"d-flex flex-column"},r.createElement(D.k,{object:e.sharedObject,showVideoMetadata:!0,locationContext:M.LZ.Insights,imageOptions:{size:V.h2.Medium},showCollectionMask:!0,showVideoCount:!0,appLink:m})),r.createElement("div",{className:"d-flex flex-column justify-content-between"},r.createElement("div",{className:"d-flex align-items-center"},r.createElement("a",{href:f,className:"cursor-pointer h6 mb-0 d-inline me-2"},null===(i=e.sharedObject)||void 0===i?void 0:i.name),r.createElement(v.h,{svgName:I.vn.NewWindow,appLink:m,svgSize:F.S.Small,className:"d-inline-block",customSize:!0})),e.shareLink&&r.createElement(U.e,{shareLink:e.shareLink,classroomName:null===(o=e.classroom)||void 0===o?void 0:o.name}),r.createElement("div",{className:"d-flex gap-2"},r.createElement(v.h,{svgName:I.vn.Share,className:"btn btn-outline-dark",appLink:{application:z.O.SHARE_V2,action:_.e.ShareV2.LINK,args:[null===(c=e.sharedObject)||void 0===c?void 0:c.id],params:{entityType:null===(l=e.sharedObject)||void 0===l?void 0:l.type,shareId:null===(s=e.shareLink)||void 0===s?void 0:s.shareId}}},"Share a link or embed"),r.createElement(v.h,{svgName:I.vn.Download,className:"btn btn-outline-dark",appLink:{application:z.O.INSIGHTS,action:_.e.Insights.QR_CODE,params:{value:p}}},"QR code"))),r.createElement("div",{className:"flex-grow-1"}),e.pinCode&&r.createElement("div",{className:"border p-3 rounded-3 d-flex flex-column align-items-center bg-white"},r.createElement("p",null,"Go to ",r.createElement("a",{href:"https://staging.clickview.net/pin",target:"_blank",className:"text-info"},"staging.clickview.net/pin")," and enter PIN:"),r.createElement("div",{className:"d-flex align-items-center"},r.createElement("h4",{className:"mb-0 pb-0 me-1"},null===(u=e.pinCode)||void 0===u?void 0:u.code),r.createElement(A.CopyToClipboard,{text:null===(d=e.pinCode)||void 0===d?void 0:d.code},r.createElement(v.h,{svgName:I.vn.Copy,className:"btn"})),r.createElement(v.h,{svgName:I.vn.NewWindow,onClick:function(){console.log("Expanding code..")},className:"btn"}))))))}var G=n(53936),H=n(10447),q=n(93975),J=n(91574),Q=n(81969);function K(e){return K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},K(e)}function $(e){return function(e){if(Array.isArray(e))return Z(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Y(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Y(e,t){if(e){if("string"==typeof e)return Z(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Z(e,t):void 0}}function Z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function X(e){var t,n,A,R,M,D,F,V,_,z,B,U,Z,X,ee,te,ne,re,ae,ie=(re=(0,i.D)(T.y.ANONYMISE_USERS),ae=1,function(e){if(Array.isArray(e))return e}(re)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(re,ae)||Y(re,ae)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0],oe=o.a.useGetFetch(),ce=o.a.useBasicFetch(g.L.config()),le=o.a.useBasicFetch(e.shareId&&J.o.getShareLink(e.shareId)),se=o.a.useBasicFetch(e.shareId&&J.o.getPincodeByShareId(e.shareId)),ue=Q.R.getClassroomId(le.data),de=o.a.useBasicFetch(ue&&L.F.getClassroom(ue)),pe=(0,C.r)(null),me=pe.hasShareFlowV2,ve=pe.publicInteractiveAttempts,fe=(0,j.T)().hasPermissions,ye=[f.E.Video,f.E.Clip,f.E.Interactive].includes(e.typeId)&&N.M.getVideoRequest(e.objectId,e.typeId),ge=o.a.useBasicFetch(ye),be=o.a.useBasicFetch(w.N.currentUser()),he=e.typeId===f.E.Series&&h.J.series(e.objectId),we=o.a.useBasicFetch(he),Ee=e.typeId===f.E.Playlist&&b.C.getPlaylist(e.objectId),ke=o.a.useBasicFetch(Ee),Oe=u.B.getAudienceAppLinkParams(),Se=u.B.getDateRangeAppLinkParams(),je=Object.assign(Object.assign(Object.assign({},Oe),Se),{shareId:e.shareId}),xe=Object.assign(Object.assign({},(0,p.wO)((0,p.Hb)(),Se)),(0,d.K)(Oe)),Ce=be.data&&E.u.individualEngagement(e.objectId,xe,null===(t=be.data)||void 0===t?void 0:t.id,ve),Ie=o.a.useBasicFetch(Ce);(0,a.W)((function(){return oe(Ce)}),5e3);var Ne=(null===(A=null===(n=Ie.data)||void 0===n?void 0:n.data)||void 0===A?void 0:A.map((function(e){return e.userId})).filter(Boolean))||[],Pe=(0,s.U)(Ne),Te=Pe.users,Le=Pe.isLoading,Ae=(0,l.Y)(e.shareId),Re=function(e,t,n){var r,a,i,c,l,s,u=o.a.useGetFetch(),d=(null===(a=null===(r=null==t?void 0:t.recipients)||void 0===r?void 0:r[0])||void 0===a?void 0:a.recipientTypeId)===f.E.Classroom&&t.recipients[0].recipientId,p=function(e){return d&&L.F.getClassroomStudents(d,e)},m=(0,k.i)(p,(function(e){return u(p(e))})),v=null!==(c=null===(i=null==n?void 0:n.data)||void 0===i?void 0:i.reduce((function(e,t){return Object.assign(Object.assign({},e),function(e,t,n){return(t=function(e){var t=function(e){if("object"!=K(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=K(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==K(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},t.userId,t))}),{}))&&void 0!==c?c:{},y=(null===(l=m.items)||void 0===l?void 0:l.length)?m.items.map((function(t){return v[t.id]?null:{customerId:null==e?void 0:e.customerId,engagementRate:0,heatMap:[],userId:t.id,videoDuration:500,viewCount:0,videoId:null,userIds:[],sessionId:null,sessionIds:[],user:t}})).filter((function(e){return!!e})):[];return[].concat($(null!==(s=null==n?void 0:n.data)&&void 0!==s?s:[]),$(y))}(be.data,le.data,Ie.data);(0,S.F)(),(0,x.M)({title:null!==(F=null!==(M=null===(R=ge.data)||void 0===R?void 0:R.name)&&void 0!==M?M:null===(D=we.data)||void 0===D?void 0:D.name)&&void 0!==F?F:null===(V=ke.data)||void 0===V?void 0:V.name}),(0,O.v)([ge,we,ke]);var Me=!(!Ie.data||Ne.length&&Le),De=!Re.length,Fe=!Me||De;return console.log({individualEngagementLength:null===(_=Ie.data)||void 0===_?void 0:_.data.length,userIdsLength:Ne.length,anonSessionsLength:Object.keys(Ae).length,fakeEngagementLength:Re.length}),r.createElement("div",{className:"px-3"},r.createElement(G.j,{video:null!==(B=null!==(z=ge.data)&&void 0!==z?z:we.data)&&void 0!==B?B:ke.data,dateRangeAppLinkParams:Se,tabs:e.typeId===f.E.Interactive?(0,H.kj)(e.objectId,"shareOptions",je,me):e.typeId===f.E.Clip?(0,H.$o)(e.objectId,"shareOptions",je,me):e.typeId===f.E.Video?(0,H.$6)(e.objectId,"shareOptions",je,me):e.typeId===f.E.Series?(0,H.lo)(e.objectId,"shareOptions",je):e.typeId===f.E.Playlist?(0,H.W_)(e.objectId,"shareOptions",je):void 0,hasAnalytics:fe(y.C.ViewCustomerAnalytics),analyticsWebUrl:null===(U=ce.data)||void 0===U?void 0:U.analyticsWebUrl,hasShareFlowV2:me,shareId:e.shareId}),r.createElement(W,{sharedObject:null!==(X=null!==(Z=ge.data)&&void 0!==Z?Z:we.data)&&void 0!==X?X:ke.data,shareLink:le.data,pinCode:se.data,classroom:de.data}),r.createElement("div",{className:"d-flex align-items-center mt-5"},r.createElement("h3",{className:"p-0 m-0"},(null===(ee=le.data)||void 0===ee?void 0:ee.type)===q.y.Classroom?"All recipients":"Students who have viewed this video"),(null===(te=le.data)||void 0===te?void 0:te.type)===q.y.Classroom&&r.createElement(v.h,{svgName:I.vn.Plus,onClick:function(){return console.log("Add new student..")},className:"btn btn-outline-dark ms-auto"},"Add new student")),r.createElement("div",{className:"col-12 mt-2 mb-5"},r.createElement(c.z,{key:(0,m.u)(Object.assign(Object.assign({},Oe),Se)),engagement:Re,users:null!=Te?Te:[],imageCdnUrl:null===(ne=ce.data)||void 0===ne?void 0:ne.imageCdnUrl,anonymiseUsers:ie,border:!0,anonSessions:Ae,hideWhenEmpty:!1,theme:{header:Fe?"border-0":"border-bottom",table:Fe?"bg-white rounded px-0 rounded-bottom-0":"bg-white rounded px-0"}}),Fe&&function(){var e;return le.data?(null===(e=le.data)||void 0===e?void 0:e.type)===q.y.Open?r.createElement("div",{style:{minHeight:400},className:"d-flex flex-column align-items-center border border-top-0 rounded-1 rounded-top-0 pt-5 pb-5 text-center"},r.createElement("img",{style:{maxHeight:200},src:P.W.EmptyStates.SHARE_V2}),r.createElement("h4",{className:"mt-4"},"Share open session to start collecting student data")):r.createElement("div",{style:{minHeight:400},className:"border border-top-0 rounded-1 rounded-top-0 pt-5 pb-5 text-center"},r.createElement("h4",null,"Waiting for students to view...")):r.createElement("div",{style:{minHeight:400},className:"border border-top-0 rounded-1 rounded-top-0 pt-5 pb-5 text-center"})}()))}},4315:(e,t,n)=>{"use strict";n.d(t,{e:()=>p});var r=n(32735),a=n(12528),i=n(83914),o=n(4594),c=n(35223),l=n(42272),s=n(93975);function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function d(e,t,n){return(t=function(e){var t=function(e){if("object"!=u(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=u(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==u(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e){var t,n,c,u,d;return r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"d-flex align-items-center justify-content-center"},r.createElement("div",null,r.createElement(a.f,{svgName:m[e.shareLink.type],variant:v[e.shareLink.type],textVariant:"white",svgWrapperClassName:null!==(t=e.svgWrapperClassName)&&void 0!==t?t:"p-1",svgSize:null!==(n=e.svgSize)&&void 0!==n?n:i.S.Standard})),r.createElement("div",{className:"d-flex flex-column ms-2"},r.createElement("label",{className:"m-0"},(u=(c=e).shareLink,d=c.classroomName,u.type===s.y.Classroom&&d?d:f[u.type])),!e.hideSubtitle&&r.createElement("span",{className:"text-secondary"},function(e){var t,n,r,a,i=e.shareLink;if(i.type===s.y.Classroom){var c=null!==(n=null===(t=i.recipients)||void 0===t?void 0:t.filter((function(e){return e.recipientTypeId===o.E.ClassroomGroup})).length)&&void 0!==n?n:0,u=null!==(a=null===(r=i.recipients)||void 0===r?void 0:r.filter((function(e){return e.recipientTypeId===o.E.User})).length)&&void 0!==a?a:0;return c&&u?"".concat(c," ").concat(y(c,"group","groups"),", ").concat(u," ").concat(y(u,"student","students")," can view"):c?"".concat(c," ").concat(y(c,"group","groups")," can view"):u?"".concat(u," ").concat(y(u,"student","students")," can view"):"All students in classroom can view"}if(i.type===s.y.Open)return"Students watch using a PIN code";if(i.type===s.y.Link){if([l.e.JustMySchool,l.e.Protected].includes(i.privacy))return"Respect ratings and restrictions";if(i.privacy===l.e.JustMySchoolOverrideRestriction)return"Anyone in your school can view";if(i.privacy===l.e.ProtectedOverrideRestriction)return"Anyone signed into ClickView can view";if(i.privacy===l.e.Public)return"Anyone with a link can view";if(i.privacy===l.e.PinCode)return"Anyone with a PIN code can view"}return i.type===s.y.Live?"Live now":"Anyone signed into ClickView can view"}(e)))))}var m=d(d(d(d({},s.y.Open,c.vn.School),s.y.Link,c.vn.Link),s.y.Classroom,c.vn.Classrooms),s.y.Live,c.vn.Play),v=d(d(d(d({},s.y.Open,"blue"),s.y.Link,"black"),s.y.Classroom,"teal"),s.y.Live,"purple"),f=d(d(d(d({},s.y.Open,"Open classroom"),s.y.Link,"Link"),s.y.Classroom,"Classroom"),s.y.Live,"Live");function y(e,t,n){return 1===e?t:n}},42272:(e,t,n)=>{"use strict";var r;n.d(t,{e:()=>r}),function(e){e.Public="Public",e.PinCode="PinCode",e.PasswordProtected="PasswordProtected",e.ProtectedOverrideRestriction="ProtectedOverrideRestriction",e.JustMySchoolOverrideRestriction="JustMySchoolOverrideRestriction",e.Protected="Protected",e.JustMySchool="JustMySchool",e.Direct="Direct"}(r||(r={}))},93975:(e,t,n)=>{"use strict";var r;n.d(t,{y:()=>r}),function(e){e.Link="Link",e.Classroom="Classroom",e.Open="Open",e.Live="Live"}(r||(r={}))},91574:(e,t,n)=>{"use strict";n.d(t,{o:()=>o});var r=n(99940),a=n(97395),i={namespace:"share-v2"},o={createShareLink:function(e,t,n,a){return{url:"/api/share/v2/shares",key:"create:share-v2:link",type:r.k.POST,data:e,normalizeOptions:i,invalidationKeys:["share:link:object:".concat(e.objectId),"privacy:".concat(e.objectId),"sent:shares","get:share-v2:shares:object"],success:t,error:n,always:a}},getShareLink:function(e,t,n,a){return{url:"/api/share/v2/shares/".concat(e),key:"get:share-v2:link:".concat(e),type:r.k.GET,normalizeOptions:i,success:t,error:n,always:a}},getSharesByObjectId:function(e,t,n,a){return{url:"/api/share/v2/shares/objects/".concat(e),key:"get:share-v2:shares:object:".concat(e),type:r.k.GET,normalizeOptions:i,success:t,error:n,always:a}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0,o={scopeId:e.scopeId,limit:e.limit||25,offset:parseInt(e.cursor)||0},c=Object.values(o).join(":");return{url:a._.urlBuilder("/api/share/v2/shares/sent",o),key:"sent:shares-v2:".concat(c),formatData:function(e){return{data:e,count:e.length,pagination:{cursors:{next:o.offset+e.length}}}},type:r.k.GET,normalize:!1,success:t,error:n,always:i}},createPincode:function(e){return{url:"/api/share/v2/shares/".concat(e,"/pincode"),key:"create:share-v2:pincode",type:r.k.POST}},getPincode:function(e){return{url:"/api/share/v2/shares/pincode?code=".concat(e),key:"get:share-v2:pincode:".concat(e)}},getPincodeByShareId:function(e){return{url:"/api/share/v2/shares/".concat(e,"/pincode"),key:"get:share-v2:".concat(e,":pincode")}}}},81969:(e,t,n)=>{"use strict";n.d(t,{R:()=>v});var r=n(23481),a=n(110),i=n(4594),o=n(49080),c=n(26361),l=n(35223),s=n(31908),u=n(42272),d=n(93975);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var m=r.T.encloseNamespace("share.shareLinkInfo"),v={getPrivateIconAndText:function(e){var t=e.entityTypeId,n=e.privacy,r=e.hasStudentExp,a=e.entity,o=e.yearGroups;if(t===i.E.Topic||t===i.E.Series)return{icon:l.vn.VisibleOn,text:m(r?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(n))switch(n){case u.e.Public:return{icon:l.vn.VisibleOn,text:m("publicDescription")};case u.e.ProtectedOverrideRestriction:return{icon:l.vn.VisibleOn,text:m("clickViewOnly")};case u.e.Protected:return{icon:l.vn.Lock,text:v.getRespectRatingText(a,o,r)};case u.e.JustMySchoolOverrideRestriction:return{icon:l.vn.Lock,text:m(r?"justMySchoolTeachers":"justMySchoolDescription")};case u.e.JustMySchool:return{icon:l.vn.Lock,text:v.getRespectRatingText(a,o,r)};case u.e.PinCode:case u.e.PasswordProtected:return{icon:l.vn.Lock,text:m("privateDescription")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,n=e.isPasswordProtected,r=e.status;if(!t&&!n)return v.getPrivateIconAndText(e);if(!t)return{icon:l.vn.Lock,text:m("password")};var i=a.O.isToday(t),c=a.O.diffBetween(t,new Date,"day");if(!n){var s=i?m("expiryToday"):m("expiry",{days:c});return r===o.F.Expired&&(s=m("expired")),{icon:l.vn.Timer,text:s}}var u=i?m("passwordExpiryToday"):m("passwordExpiry",{days:c});return r===o.F.Expired&&(u=m("passwordExpired")),{icon:l.vn.Lock,text:u}},getRespectRatingText:function(e,t,n){var r;if(!e||!t)return null;if(n)return m("justMySchoolTeachers");if(!s.M.isVideoType(e))return m("collectionRating");var a=c.l.getWeightedRestriction(null===(r=e._restrictions)||void 0===r?void 0:r.value);if(a&&!a.yearGroup)return m("onlyAdmins");var i,o,l,u=s.M.getRating(e),d=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return p(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}(t);try{for(d.s();!(l=d.n()).done;){var v=l.value;(!i||v.value>i.value)&&(i=v),a&&v.value<=a.yearGroup||u&&v.rating.value<u.value||(!o||v.value<o.value)&&(o=v)}}catch(e){d.e(e)}finally{d.f()}return o?1===t.length?m("clickViewOnly"):o.value===i.value?m("maxYearGroup",{yearGroup:i.name}):m("yearGroupRange",{yearGroup:o.name}):m("onlyStaff")},getClassroomId:function(e){var t,n;if(!e)return"";if(e.type!==d.y.Classroom)return"";var r=null===(t=e.recipients)||void 0===t?void 0:t.find((function(e){return e.recipientTypeId===i.E.Classroom}));if(r)return r.recipientId.toString();var a=null===(n=e.recipients)||void 0===n?void 0:n.find((function(e){return e.scopeId}));return(null==a?void 0:a.scopeId.toString())||""}}},91969:(e,t,n)=>{"use strict";var r=n(47033),a={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,o,c,l,s,u=!1;t||(t={}),n=t.debug||!1;try{if(o=r(),c=document.createRange(),l=document.getSelection(),(s=document.createElement("span")).textContent=e,s.ariaHidden="true",s.style.all="unset",s.style.position="fixed",s.style.top=0,s.style.clip="rect(0, 0, 0, 0)",s.style.whiteSpace="pre",s.style.webkitUserSelect="text",s.style.MozUserSelect="text",s.style.msUserSelect="text",s.style.userSelect="text",s.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),void 0===r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=a[t.format]||a.default;window.clipboardData.setData(i,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(s),c.selectNodeContents(s),l.addRange(c),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(r){n&&console.error("unable to copy using execCommand: ",r),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(r){n&&console.error("unable to copy using clipboardData: ",r),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(c):l.removeAllRanges()),s&&document.body.removeChild(s),o()}return u}},44818:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var a=c(n(32735)),i=c(n(91969)),o=["text","onCopy","options","children"];function c(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){v(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t){return d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},d(e,t)}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var f=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&d(e,t)}(y,e);var t,n,c,l,f=(c=y,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=m(c);if(l){var n=m(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return p(e)}(this,e)});function y(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,y);for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return v(p(e=f.call.apply(f,[this].concat(n))),"onClick",(function(t){var n=e.props,r=n.text,o=n.onCopy,c=n.children,l=n.options,s=a.default.Children.only(c),u=(0,i.default)(r,l);o&&o(r,u),s&&s.props&&"function"==typeof s.props.onClick&&s.props.onClick(t)})),e}return t=y,(n=[{key:"render",value:function(){var e=this.props,t=(e.text,e.onCopy,e.options,e.children),n=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,o),r=a.default.Children.only(t);return a.default.cloneElement(r,s(s({},n),{},{onClick:this.onClick}))}}])&&u(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),y}(a.default.PureComponent);t.CopyToClipboard=f,v(f,"defaultProps",{onCopy:void 0,options:void 0})},59087:(e,t,n)=>{"use strict";var r=n(44818).CopyToClipboard;r.CopyToClipboard=r,e.exports=r},47033:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r<e.rangeCount;r++)n.push(e.getRangeAt(r));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||n.forEach((function(t){e.addRange(t)})),t&&t.focus()}}}}]);
2
- //# sourceMappingURL=7428-546d62999f-lite.chunk.js.map