@clickview/lite 0.57.2-rc.0 → 0.57.2-rc.2

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 (100) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/{3918-lite-9bd35b2c4c.chunk.css → 3918-lite-88ef54ffc6.chunk.css} +3 -1
  3. package/dist/css/{1057-lite-04173a371f.chunk.css → 8849-lite-1ad0b22428.chunk.css} +2 -1
  4. package/dist/css/{lite-app-5335e8e07a.css → lite-app-560655620c.css} +1 -1
  5. package/dist/languages/en.json +1 -1
  6. package/dist/scripts/1734-f5ffd39591-lite.chunk.js +2 -0
  7. package/dist/scripts/1734-f5ffd39591-lite.chunk.js.map +1 -0
  8. package/dist/scripts/2506-aee0b1f275-lite.chunk.js +2 -0
  9. package/dist/scripts/2506-aee0b1f275-lite.chunk.js.map +1 -0
  10. package/dist/scripts/{2564-cd82320188-lite.chunk.js → 2564-98ba0d782a-lite.chunk.js} +3 -3
  11. package/dist/scripts/{2564-cd82320188-lite.chunk.js.map → 2564-98ba0d782a-lite.chunk.js.map} +1 -1
  12. package/dist/scripts/2615-e9b2938c18-lite.chunk.js +3 -0
  13. package/dist/scripts/2615-e9b2938c18-lite.chunk.js.map +1 -0
  14. package/dist/scripts/2788-86687fd69d-lite.chunk.js +2 -0
  15. package/dist/scripts/2788-86687fd69d-lite.chunk.js.map +1 -0
  16. package/dist/scripts/2820-b3d1688da0-lite.chunk.js +2 -0
  17. package/dist/scripts/2820-b3d1688da0-lite.chunk.js.map +1 -0
  18. package/dist/scripts/2978-b7bcc3eac4-lite.chunk.js +2 -0
  19. package/dist/scripts/2978-b7bcc3eac4-lite.chunk.js.map +1 -0
  20. package/dist/scripts/3391-5e26ca5ece-lite.chunk.js +2 -0
  21. package/dist/scripts/3391-5e26ca5ece-lite.chunk.js.map +1 -0
  22. package/dist/scripts/{3667-f9f546136c-lite.chunk.js → 3667-149e98454c-lite.chunk.js} +3 -3
  23. package/dist/scripts/{3667-f9f546136c-lite.chunk.js.map → 3667-149e98454c-lite.chunk.js.map} +1 -1
  24. package/dist/scripts/3918-43b95cb315-lite.chunk.js +2 -0
  25. package/dist/scripts/3918-43b95cb315-lite.chunk.js.map +1 -0
  26. package/dist/scripts/4113-d6411052c4-lite.chunk.js +2 -0
  27. package/dist/scripts/4113-d6411052c4-lite.chunk.js.map +1 -0
  28. package/dist/scripts/4137-bef0be4a57-lite.chunk.js +3 -0
  29. package/dist/scripts/4137-bef0be4a57-lite.chunk.js.map +1 -0
  30. package/dist/scripts/4266-42463e0c33-lite.chunk.js +3 -0
  31. package/dist/scripts/4266-42463e0c33-lite.chunk.js.map +1 -0
  32. package/dist/scripts/5817-84b8e83c19-lite.chunk.js +3 -0
  33. package/dist/scripts/5817-84b8e83c19-lite.chunk.js.map +1 -0
  34. package/dist/scripts/{6433-ff27a3c867-lite.chunk.js → 6433-ad3992c23a-lite.chunk.js} +2 -2
  35. package/dist/scripts/{6433-ff27a3c867-lite.chunk.js.map → 6433-ad3992c23a-lite.chunk.js.map} +1 -1
  36. package/dist/scripts/7434-34137ad94a-lite.chunk.js +2 -0
  37. package/dist/scripts/7434-34137ad94a-lite.chunk.js.map +1 -0
  38. package/dist/scripts/{7556-79099a07fc-lite.chunk.js → 7556-69f8cb3b20-lite.chunk.js} +3 -3
  39. package/dist/scripts/7556-69f8cb3b20-lite.chunk.js.map +1 -0
  40. package/dist/scripts/{8095-777a5c5ddf-lite.chunk.js → 8095-afb976fac0-lite.chunk.js} +2 -2
  41. package/dist/scripts/8095-afb976fac0-lite.chunk.js.map +1 -0
  42. package/dist/scripts/839-f8478d27f8-lite.chunk.js +2 -0
  43. package/dist/scripts/839-f8478d27f8-lite.chunk.js.map +1 -0
  44. package/dist/scripts/8489-7779fd40b3-lite.chunk.js +3 -0
  45. package/dist/scripts/8489-7779fd40b3-lite.chunk.js.map +1 -0
  46. package/dist/scripts/8849-020bfd8cdd-lite.chunk.js +2 -0
  47. package/dist/scripts/8849-020bfd8cdd-lite.chunk.js.map +1 -0
  48. package/dist/scripts/bundle-fb8200eefd.min.js +3 -0
  49. package/dist/scripts/bundle-fb8200eefd.min.js.map +1 -0
  50. package/package.json +1 -1
  51. package/dist/scripts/1057-3c48d4553a-lite.chunk.js +0 -2
  52. package/dist/scripts/1057-3c48d4553a-lite.chunk.js.map +0 -1
  53. package/dist/scripts/1683-57c0175d4e-lite.chunk.js +0 -2
  54. package/dist/scripts/1683-57c0175d4e-lite.chunk.js.map +0 -1
  55. package/dist/scripts/1734-bbca52585c-lite.chunk.js +0 -2
  56. package/dist/scripts/1734-bbca52585c-lite.chunk.js.map +0 -1
  57. package/dist/scripts/232-278263e5f8-lite.chunk.js +0 -3
  58. package/dist/scripts/232-278263e5f8-lite.chunk.js.map +0 -1
  59. package/dist/scripts/2615-90d4cdd835-lite.chunk.js +0 -3
  60. package/dist/scripts/2615-90d4cdd835-lite.chunk.js.map +0 -1
  61. package/dist/scripts/2788-013bbba554-lite.chunk.js +0 -2
  62. package/dist/scripts/2788-013bbba554-lite.chunk.js.map +0 -1
  63. package/dist/scripts/312-2458059ebb-lite.chunk.js +0 -2
  64. package/dist/scripts/312-2458059ebb-lite.chunk.js.map +0 -1
  65. package/dist/scripts/3918-2855f0da2a-lite.chunk.js +0 -2
  66. package/dist/scripts/3918-2855f0da2a-lite.chunk.js.map +0 -1
  67. package/dist/scripts/4137-f0ac17da1f-lite.chunk.js +0 -3
  68. package/dist/scripts/4137-f0ac17da1f-lite.chunk.js.map +0 -1
  69. package/dist/scripts/4654-6fedfb863f-lite.chunk.js +0 -2
  70. package/dist/scripts/4654-6fedfb863f-lite.chunk.js.map +0 -1
  71. package/dist/scripts/5817-900efca702-lite.chunk.js +0 -3
  72. package/dist/scripts/5817-900efca702-lite.chunk.js.map +0 -1
  73. package/dist/scripts/7237-86c18f2701-lite.chunk.js +0 -2
  74. package/dist/scripts/7237-86c18f2701-lite.chunk.js.map +0 -1
  75. package/dist/scripts/7434-366d4ae5e0-lite.chunk.js +0 -2
  76. package/dist/scripts/7434-366d4ae5e0-lite.chunk.js.map +0 -1
  77. package/dist/scripts/7556-79099a07fc-lite.chunk.js.map +0 -1
  78. package/dist/scripts/8095-777a5c5ddf-lite.chunk.js.map +0 -1
  79. package/dist/scripts/839-889090dc50-lite.chunk.js +0 -2
  80. package/dist/scripts/839-889090dc50-lite.chunk.js.map +0 -1
  81. package/dist/scripts/8489-6e8c4dd60f-lite.chunk.js +0 -3
  82. package/dist/scripts/8489-6e8c4dd60f-lite.chunk.js.map +0 -1
  83. package/dist/scripts/897-399a877281-lite.chunk.js +0 -2
  84. package/dist/scripts/897-399a877281-lite.chunk.js.map +0 -1
  85. package/dist/scripts/9201-899c885914-lite.chunk.js +0 -2
  86. package/dist/scripts/9201-899c885914-lite.chunk.js.map +0 -1
  87. package/dist/scripts/bundle-4b58e56927.min.js +0 -3
  88. package/dist/scripts/bundle-4b58e56927.min.js.map +0 -1
  89. /package/dist/css/{1683-lite-bdd5b6edf8.chunk.css → 2506-lite-bdd5b6edf8.chunk.css} +0 -0
  90. /package/dist/css/{7237-lite-a8e87f096f.chunk.css → 2820-lite-a8e87f096f.chunk.css} +0 -0
  91. /package/dist/scripts/{2564-cd82320188-lite.chunk.js.LICENSE.txt → 2564-98ba0d782a-lite.chunk.js.LICENSE.txt} +0 -0
  92. /package/dist/scripts/{2615-90d4cdd835-lite.chunk.js.LICENSE.txt → 2615-e9b2938c18-lite.chunk.js.LICENSE.txt} +0 -0
  93. /package/dist/scripts/{3667-f9f546136c-lite.chunk.js.LICENSE.txt → 3667-149e98454c-lite.chunk.js.LICENSE.txt} +0 -0
  94. /package/dist/scripts/{4137-f0ac17da1f-lite.chunk.js.LICENSE.txt → 4137-bef0be4a57-lite.chunk.js.LICENSE.txt} +0 -0
  95. /package/dist/scripts/{232-278263e5f8-lite.chunk.js.LICENSE.txt → 4266-42463e0c33-lite.chunk.js.LICENSE.txt} +0 -0
  96. /package/dist/scripts/{5817-900efca702-lite.chunk.js.LICENSE.txt → 5817-84b8e83c19-lite.chunk.js.LICENSE.txt} +0 -0
  97. /package/dist/scripts/{6433-ff27a3c867-lite.chunk.js.LICENSE.txt → 6433-ad3992c23a-lite.chunk.js.LICENSE.txt} +0 -0
  98. /package/dist/scripts/{7556-79099a07fc-lite.chunk.js.LICENSE.txt → 7556-69f8cb3b20-lite.chunk.js.LICENSE.txt} +0 -0
  99. /package/dist/scripts/{8489-6e8c4dd60f-lite.chunk.js.LICENSE.txt → 8489-7779fd40b3-lite.chunk.js.LICENSE.txt} +0 -0
  100. /package/dist/scripts/{bundle-4b58e56927.min.js.LICENSE.txt → bundle-fb8200eefd.min.js.LICENSE.txt} +0 -0
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3918],{53353:(e,t,a)=>{a.d(t,{c:()=>f,l:()=>h});var n=a(32735),r=a(232),s=a.n(r),i=a(8604),l=a(83345);const c={heatMap:"epapa",legend:"uhH4p"};function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var o="shared.engagementHeatMap",d="#f1f1f1",u=s().scale(["#daf07d","#08bd1a"]),g=[0,.01,.25,.5,.75,1];function p(e,t){return e?u(e/t).hex():d}function v(e,t){for(var a=[],n=0;n<e.length;n++){var r=n>0&&e[n-1],s=e[n],i=n<e.length-1&&e[n+1];s===r&&s===i||a.push("".concat(p(s,t)," ").concat(100/e.length*n,"%"))}return"linear-gradient(to right, ".concat(a.join(","),")")}function h(){var e=Math.max.apply(Math,g),t=100/g.length;return n.createElement("div",{className:"d-flex justify-content-between w-100"},n.createElement(l.x,{namespace:o,phrase:"less"}),n.createElement("div",{className:"d-flex mx-1 flex-grow-1 ".concat(c.legend)},g.map((function(a,r){return n.createElement("div",{key:r,style:{width:"".concat(t,"%"),backgroundColor:p(a,e)}})}))),n.createElement(l.x,{namespace:o,phrase:"more"}))}function f(e){var t,a,r,s=(0,i.O)(e.engagement),l=null!==(t=e.max)&&void 0!==t?t:Math.max.apply(Math,function(e){if(Array.isArray(e))return m(e)}(r=s)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?m(e,t):void 0}}(r)||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.")}());return n.createElement("div",{className:"border rounded ".concat(c.heatMap," ").concat(null!==(a=e.className)&&void 0!==a?a:""),style:{background:v(s,l)}})}},25216:(e,t,a)=>{a.d(t,{L:()=>i});var n=a(32735),r=a(83914);const s={icon:"sAmpy",count:"faDs4"};function i(e){return n.createElement("section",{className:"d-flex flex-column border border-light rounded p-3 h-100"},n.createElement("div",{className:"d-flex align-items-center mb-2"},n.createElement("div",{className:"".concat(s.icon," ").concat(e.svgClassName," rounded-circle d-flex align-items-center justify-content-center")},n.createElement(r.x,{svgName:e.svgName})),n.createElement("div",{className:"d-flex flex-column ms-2"},n.createElement("h2",{className:"h6 mb-0"},e.title),e.subtitle&&n.createElement("p",{className:"text-secondary font-size-sm mb-0"},e.subtitle)),"number"==typeof e.count&&n.createElement("div",{className:"".concat(s.count," d-flex justify-content-center align-items-center bg-light rounded-circle ms-auto")},e.count)),e.children)}},461:(e,t,a)=>{a.d(t,{y:()=>m});var n=a(32735),r=a(77640),s=a(36848),i=a(40782);const l={avatar:"uMuZt",image:"WdKiU"};var c=3;function m(e){return n.createElement(n.Fragment,null,e.students.length?n.createElement("ul",{className:"list-unstyled mb-2"},e.students.slice(0,c).map((function(t){return n.createElement("li",{key:t.id,className:"d-flex align-items-center mb-2"},n.createElement(r.t,{user:t,imageCdnUrl:e.imageCdnUrl,avatarClassName:l.avatar,detailsClassName:"ms-2",showDisplayName:!0,showSubText:!1,anonymiseUsers:e.anonymiseUsers}),n.createElement("div",{className:"d-flex align-items-center ms-auto"},n.createElement("span",{className:"me-1"},void 0===t.percentage?"- ":Math.round(100*t.percentage),"%"),n.createElement(i.O,{percentage:t.percentage})))}))):n.createElement("div",{className:"text-center"},n.createElement("img",{className:"".concat(l.image," mb-2"),src:e.imageUrl}),n.createElement("p",{className:"text-secondary mb-0"},e.description)),!!e.students.length&&n.createElement(s.F,{appLink:e.appLink,className:"text-info mt-auto"},e.appLinkText))}},94652:(e,t,a)=>{a.d(t,{b:()=>g});var n=a(32735),r=a(23481),s=a(53353),i=a(25216),l=a(36848),c=a(83345),m=a(35223);const o={heatMap:"Rfr9N",heatMapTimepointIndicator:"s6JbA",heatMapTimepointIndicatorVisible:"mgjWX"};var d="shared.insightHeatmap",u=r.T.encloseNamespace(d);function g(e){var t=e.engagement.engagementRate>0?Math.round(100*e.engagement.engagementRate):null;return n.createElement(i.L,{title:u("title"),svgName:m.vn.Timer,svgClassName:"bg-light-green text-green"},n.createElement("div",{className:"mb-2"},n.createElement("p",{className:"mb-0"},t?n.createElement(c.x,{namespace:d,phrase:"everyoneWatched",options:{engagementRate:t}}):n.createElement(c.x,{namespace:d,phrase:"notWatched"})),t&&n.createElement(l.F,{appLink:e.heatmapAppLink,className:"text-info"},n.createElement(c.x,{namespace:d,phrase:"viewHeatmap"}))),n.createElement("div",{className:"mb-2"},n.createElement(s.c,{engagement:e.engagement,className:o.heatMap})),n.createElement("p",{className:"h3 text-center mb-2"},t||"--","%"),n.createElement("p",{className:"text-center mb-0 font-size-sm"},n.createElement(c.x,{namespace:d,phrase:"amountWatched"})))}},8604:(e,t,a)=>{function n(e){return new Array(Math.ceil(e.videoDuration)).fill(null).map((function(t,a){return e.heatMap[a]||0}))}a.d(t,{O:()=>n})},77640:(e,t,a)=>{a.d(t,{t:()=>u});var n=a(32735),r=a(23481),s=a(26136),i=a(20789),l=a(76881),c=a(86613),m=a(64818),o=a(94831),d=r.T.encloseNamespace("shared.userRecipientItemMetadata");function u(e){var t;return n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(o.Z.avatarContainer," ").concat(e.avatarClassName," d-inline-block")},n.createElement(i.q,{imageUrl:null===(t=e.user.avatar)||void 0===t?void 0:t.url,imageCdnUrl:e.imageCdnUrl,initials:m.l.getInitials(e.user.name,e.user.surname)})),n.createElement("div",{className:e.detailsClassName},n.createElement("h4",{className:"font-size-normal fw-normal m-0"},e.anonymiseUsers?(0,s.B)(e.user,!0):e.showDisplayName?m.l.getDisplayName(e.user):m.l.getFullName(e.user)),e.showSubText&&n.createElement("p",{className:"text-secondary m-0"},e.getSubText?e.getSubText(e.user):function(e){var t=m.l.getUserType(e),a=m.l.getUserRole(e);if(t===l.Y.Staff)return a===c.i.Admin?d("admin"):d("staff");var n=m.l.getYearGroup(e);return(null==n?void 0:n.name)?n.name:d("student")}(e.user))))}u.defaults={showSubText:!0}},17913:(e,t,a)=>{a.d(t,{u:()=>i});var n=a(97395),r=a(110),s=a(62875),i={individualEngagement:function(e,t,a,r,i,l){var c=Object.assign({objectId:e},t);return a&&(c.sharerId=a),{url:n._.urlBuilder("{gateway}/v1/analytics/heat-map",c),key:(0,s.H)("engagement:".concat(e),t,a),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,success:r,error:i,always:l}},aggregateEngagement:function(e,t,a,r,i,l){var c=Object.assign({objectId:e},t);return a&&(c.sharerId=a),{url:n._.urlBuilder("{gateway}/v1/analytics/heat-map/aggregations",c),key:(0,s.H)("aggregate:engagement:".concat(e),t,a),formatData:function(e){var t;return Object.assign(Object.assign({},e),{heatMap:null!==(t=e.heatMap)&&void 0!==t?t:[]})},normalize:!1,success:r,error:i,always:l}},views:function(e,t,a,i,l,c){var m="video:views";t&&(m+=":".concat(t));var o=Object.assign(Object.assign({objectId:t},e),{timeOffset:r.O.getTimezoneOffset()});return a&&(o.sharerId=a),{url:n._.urlBuilder("{gateway}/v1/analytics/video-views",o),key:(0,s.H)(m,e,a),normalize:!1,success:i,error:l,always:c}}}},38545:(e,t,a)=>{a.r(t),a.d(t,{VideoInsightsOverviewView:()=>R});var n=a(32735),r=a(2948),s=a(20354),i=a(75896),l=a(94652),c=a(23481),m=a(25216),o=a(461),d=a(35223),u=c.T.encloseNamespace("shared.insightStudentsNotWatched");function g(e){var t,a=(null===(t=e.students)||void 0===t?void 0:t.filter((function(t){var a;return!(null===(a=e.watchedIds)||void 0===a?void 0:a.includes(t.id))})))||[];return n.createElement(m.L,{title:u("title"),svgName:d.vn.Trending,svgClassName:"bg-light-teal text-teal"},n.createElement(o.y,{students:a,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:u("studentsDisplay"),appLink:e.heatmapAppLink,appLinkText:u("viewAll"),anonymiseUsers:e.anonymiseUsers}))}var p=c.T.encloseNamespace("shared.insightStudentsWatched");function v(e){return n.createElement(m.L,{title:p("title"),svgName:d.vn.Flag,svgClassName:"bg-light-indigo text-indigo",count:e.students.length},n.createElement(o.y,{students:e.students,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:p("studentsDisplay"),appLink:e.heatmapAppLink,appLinkText:p("viewAll"),anonymiseUsers:e.anonymiseUsers}))}var h=a(26025),f=a(74901),b=a(40003),y=a(30439),E=a(83345),N=a(38143),x=a(4594),w=a(39151),A=a(31949),I=a(17913),k=a(31908),U=a(99742),C=a(88630),O=a(5672),j=a(83590),M=a(14070),L=a(97291);function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var T="insights.videoInsightsOverview";function R(e){var t,a,c,m,o,d=(m=(0,r.D)(N.g.ANONYMISE_USERS),o=1,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,s,i,l=[],c=!0,m=!1;try{if(s=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=s.call(a)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){m=!0,r=e}finally{try{if(!c&&null!=a.return&&(i=a.return(),Object(i)!==i))return}finally{if(m)throw r}}return l}}(m,o)||function(e,t){if(e){if("string"==typeof e)return S(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?S(e,t):void 0}}(m,o)||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],u=s.a.useBasicFetch(A.N.currentUser()),p=s.a.useBasicFetch(w.L.config()),R=k.M.getVideoRequest(e.videoId,e.typeId),B=s.a.useBasicFetch(R),D=h.B.getAudienceAppLinkParams(),F=h.B.getDateRangeAppLinkParams(),H=s.a.useBasicFetch(I.u.aggregateEngagement(e.videoId,Object.assign(Object.assign({},(0,b.wO)((0,b.Hb)(),F)),(0,f.K)(D)),u.data.id)),V=1===(null===(t=D.classrooms)||void 0===t?void 0:t.length)&&!(null===(a=D.classroomGroups)||void 0===a?void 0:a.length),W=s.a.useBasicFetch(V&&C.F.getClassroomStudents(i.m.first(D.classrooms))),_=s.a.useBasicFetch((null===(c=H.data)||void 0===c?void 0:c.userIds)&&y.o.getRecipientsById(H.data.userIds,u.data.customerId));function z(){return _.data?Object.values(_.data):[]}if(!(u.data&&p.data&&B.data&&H.data)||V&&!W.data)return n.createElement(n.Fragment,null);var P=Object.assign(Object.assign({},D),F),Z=function(e,t){return{heatmapAppLink:{application:L.O.INSIGHTS,action:M.e.Insights.VIDEO_HEATMAP,args:[e],params:t}}}(e.videoId,P);return n.createElement("div",{className:"px-3"},n.createElement(j.m,{video:B.data,audienceAppLinkParams:D,dateRangeAppLinkParams:F,tabs:B.data.typeId===x.E.Clip?(0,O.$o)(B.data.id,"overview",P):(0,O.$6)(B.data.id,"overview",P)}),n.createElement("section",{className:"mb-5"},n.createElement("h2",{className:"h4"},n.createElement(E.x,{namespace:T,phrase:"studentViewing"}),n.createElement("span",null,": ",z().length,W.data?"/".concat(W.data.data.length):"")),n.createElement("div",{className:"row g-3"},V&&n.createElement("div",{className:"col-12 col-md"},n.createElement(g,{students:W.data.data,watchedIds:H.data.userIds,imageCdnUrl:p.data.imageCdnUrl,heatmapAppLink:Z.heatmapAppLink,imageUrl:U.W.Insights.AVATAR,anonymiseUsers:d})),n.createElement("div",{className:"col-12 col-md"},n.createElement(v,{students:z(),imageCdnUrl:p.data.imageCdnUrl,heatmapAppLink:Z.heatmapAppLink,imageUrl:U.W.Insights.AVATAR,anonymiseUsers:d})))),n.createElement("section",{className:"mb-5"},n.createElement("h2",{className:"h4"},n.createElement(E.x,{namespace:T,phrase:"classEngagement"})),n.createElement(l.b,{engagement:H.data,heatmapAppLink:Z.heatmapAppLink})))}},94831:(e,t,a)=>{a.d(t,{Z:()=>n});const n={removeRecipient:"mCbMC",recipientItem:"kdcb0",showSpinner:"xH6Mu",avatarContainer:"Zcpg3",recipientDetails:"v5EmV",recipientDetailsWithRemoveButton:"_V928"}}}]);
2
- //# sourceMappingURL=3918-2855f0da2a-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/3918-2855f0da2a-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/components/engagement-heat-map/engagement-heat-map.scss","file:///app/packages/libs/shared/src/apps/analytics/components/engagement-heat-map/EngagementHeatMap.tsx","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/components/insight-student-list/insight-student-list.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insight-student-list/InsightStudentList.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/heatmap/insight-heatmap.scss","file:///app/packages/libs/shared/src/apps/analytics/components/insights/heatmap/InsightHeatmap.tsx","file:///app/packages/libs/shared/src/apps/analytics/utils/EngagementUtils.ts","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/user-recipient-item-metadata/UserRecipientItemMetadata.tsx","file:///app/packages/libs/shared/src/flight-requests/VideoViewRequests.ts","file:///app/packages/libs/shared/src/apps/analytics/components/insights/students-not-watched/InsightStudentsNotWatched.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/students-watched/InsightStudentsWatched.tsx","file:///app/packages/projects/lite/src/apps/insights/views/video/overview/VideoInsightsOverviewView.tsx","file:///app/packages/projects/lite/src/apps/insights/views/video/overview/VideoInsightsOverviewUtils.ts","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/recipient-item.scss"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"heatMap\":\"epapa\",\"legend\":\"uhH4p\"};","import React from 'react';\nimport chroma from 'chroma-js';\n\nimport { getFullHeatMap } from 'libs/shared/apps/analytics/utils/EngagementUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Engagement } from 'libs/shared/interfaces';\n\nimport styles from './engagement-heat-map.scss';\n\nconst namespace = 'shared.engagementHeatMap';\n\nconst ZERO_COLOUR = '#f1f1f1';\nconst MIN_COLOUR = '#daf07d';\nconst MAX_COLOUR = '#08bd1a';\n\nconst COLOUR_SCALE = chroma.scale([ MIN_COLOUR, MAX_COLOUR ]);\n\nconst LEGEND_VALUES = [ 0, 0.01, 0.25, 0.5, 0.75, 1 ];\n\nfunction getBackgroundColor(value: number, max: number): string {\n if (!value)\n return ZERO_COLOUR;\n\n return COLOUR_SCALE(value / max).hex();\n}\n\nfunction getGradient(data: number[], max: number): string {\n const gradient: string[] = [];\n\n for (let i = 0; i < data.length; i++) {\n const previousValue = i > 0 && data[i - 1];\n const currentValue = data[i];\n const nextValue = i < data.length - 1 && data[i + 1];\n\n /**\n * We want to capture colour changes but if a value has the same value\n * of both of its neighbours, we can skip it.\n */\n if (currentValue === previousValue && currentValue === nextValue)\n continue;\n\n gradient.push(`${getBackgroundColor(currentValue, max)} ${100 / data.length * i}%`);\n }\n\n return `linear-gradient(to right, ${gradient.join(',')})`;\n}\n\nexport function EngagementHeatMapLegend(): JSX.Element {\n const max = Math.max(...LEGEND_VALUES);\n const legendSquareWidthPercentage = 100 / LEGEND_VALUES.length;\n\n return (\n <div className='d-flex justify-content-between w-100'>\n <Text namespace={namespace} phrase='less' />\n <div className={`d-flex mx-1 flex-grow-1 ${styles.legend}`}>\n {LEGEND_VALUES.map((val, idx) => (\n <div\n key={idx}\n style={{\n width: `${legendSquareWidthPercentage}%`,\n backgroundColor: getBackgroundColor(val, max)\n }}\n />\n ))}\n </div>\n <Text namespace={namespace} phrase='more' />\n </div>\n );\n}\n\ninterface EngagementHeatMapProps {\n engagement: Engagement;\n max?: number;\n className?: string;\n}\n\nexport function EngagementHeatMap(props: EngagementHeatMapProps): JSX.Element {\n const heatMap = getFullHeatMap(props.engagement);\n const max = props.max ?? Math.max(...heatMap);\n\n return (\n <div\n className={`border rounded ${styles.heatMap} ${props.className ?? ''}`}\n style={{\n background: getGradient(heatMap, max)\n }}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"icon\":\"sAmpy\",\"count\":\"faDs4\"};","import React from 'react';\n\nimport { SvgContainer } 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 border-light rounded p-3 h-100'>\n <div className='d-flex align-items-center mb-2'>\n <div className={`${styles.icon} ${props.svgClassName} rounded-circle d-flex align-items-center justify-content-center`}>\n <SvgContainer svgName={props.svgName} />\n </div>\n <div className='d-flex flex-column ms-2'>\n <h2 className='h6 mb-0'>{props.title}</h2>\n {props.subtitle && <p className='text-secondary font-size-sm mb-0'>{props.subtitle}</p>}\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}","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"uMuZt\",\"image\":\"WdKiU\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { UserRecipientItemMetadata } from 'libs/shared/apps/share/components/recipient-item/user-recipient-item-metadata/UserRecipientItemMetadata';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PercentageIndicator } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { User } from 'libs/shared/interfaces';\n\nimport styles from './insight-student-list.scss';\n\nconst MAX_ITEMS = 3;\n\ninterface UserPercentage extends User {\n percentage?: number;\n}\n\ninterface InsightStudentListProps {\n students: UserPercentage[];\n imageUrl: string;\n imageCdnUrl: string;\n appLink: Core.AppLink;\n description: string;\n appLinkText: string;\n percentages?: number[];\n anonymiseUsers: boolean;\n}\n\nexport function InsightStudentList(props: InsightStudentListProps) {\n return (\n <>\n {props.students.length ? (\n <ul className='list-unstyled mb-2'>\n {props.students.slice(0, MAX_ITEMS).map(student => (\n <li key={student.id} className='d-flex align-items-center mb-2'>\n <UserRecipientItemMetadata\n user={student}\n imageCdnUrl={props.imageCdnUrl}\n avatarClassName={styles.avatar}\n detailsClassName='ms-2'\n showDisplayName\n showSubText={false}\n anonymiseUsers={props.anonymiseUsers}\n />\n\n <div className='d-flex align-items-center ms-auto'>\n <span className='me-1'>{student.percentage === undefined ? '- ' : Math.round(student.percentage * 100)}%</span>\n <PercentageIndicator percentage={student.percentage} />\n </div>\n </li>\n ))}\n </ul>\n ) : (\n <div className='text-center'>\n <img className={`${styles.image} mb-2`} src={props.imageUrl} />\n <p className='text-secondary mb-0'>{props.description}</p>\n </div>\n )}\n\n {!!props.students.length && (\n <AppLink appLink={props.appLink} className='text-info mt-auto'>\n {props.appLinkText}\n </AppLink>\n )}\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"heatMap\":\"Rfr9N\",\"heatMapTimepointIndicator\":\"s6JbA\",\"heatMapTimepointIndicatorVisible\":\"mgjWX\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EngagementHeatMap } from 'libs/shared/apps/analytics/components/engagement-heat-map/EngagementHeatMap';\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Engagement } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './insight-heatmap.scss';\n\nconst namespace = 'shared.insightHeatmap';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightHeatmapProps {\n engagement: Engagement;\n heatmapAppLink: Core.AppLink;\n}\n\nexport function InsightHeatmap(props: InsightHeatmapProps) {\n const engagementRate = props.engagement.engagementRate > 0 ? Math.round(props.engagement.engagementRate * 100) : null;\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Timer}\n svgClassName='bg-light-green text-green'\n >\n <div className='mb-2'>\n <p className='mb-0'>\n {engagementRate\n ? (\n <Text namespace={namespace} phrase='everyoneWatched' options={{ engagementRate }} />\n )\n : <Text namespace={namespace} phrase='notWatched' />\n }\n </p>\n {engagementRate &&\n <AppLink appLink={props.heatmapAppLink} className='text-info'>\n <Text namespace={namespace} phrase='viewHeatmap' />\n </AppLink>\n }\n </div>\n\n <div className='mb-2'>\n <EngagementHeatMap\n engagement={props.engagement}\n className={styles.heatMap}\n />\n </div>\n\n <p className='h3 text-center mb-2'>{engagementRate || '--'}%</p>\n <p className='text-center mb-0 font-size-sm'><Text namespace={namespace} phrase='amountWatched' /></p>\n </InsightCard>\n );\n}","import { Engagement } from 'libs/shared/interfaces';\n\n/**\n * The heat map in the API response won't contain trailing zeros so we need to add those\n * in manually.\n */\nexport function getFullHeatMap(engagement: Engagement): number[] {\n return (new Array(Math.ceil(engagement.videoDuration))).fill(null).map((t, idx) => engagement.heatMap[idx] || 0);\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { BaseObject, User } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from '../recipient-item.scss';\n\nconst namespace = 'shared.userRecipientItemMetadata';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSubText(user: User): string {\n const userType = UserHelper.getUserType(user);\n const role = UserHelper.getUserRole(user);\n\n if (userType === UserGroup.Staff) {\n if (role === UserRole.Admin)\n return getPhrase('admin');\n\n return getPhrase('staff');\n }\n\n const yearGroup = UserHelper.getYearGroup(user);\n\n if (yearGroup?.name)\n return yearGroup.name;\n\n return getPhrase('student');\n}\n\nUserRecipientItemMetadata.defaults = {\n showSubText: true\n};\n\ninterface UserRecipientItemMetadataProps {\n user: User;\n imageCdnUrl: string;\n detailsClassName?: string;\n avatarClassName?: string;\n showDisplayName: boolean;\n showSubText?: boolean;\n anonymiseUsers?: boolean;\n getSubText?: (user: BaseObject) => string;\n}\n\nexport function UserRecipientItemMetadata(props: UserRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} ${props.avatarClassName} d-inline-block`}>\n <Avatar\n imageUrl={props.user.avatar?.url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.user.name, props.user.surname)}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.anonymiseUsers\n ? anonymiseUserName(props.user, true)\n : props.showDisplayName\n ? UserHelper.getDisplayName(props.user)\n : UserHelper.getFullName(props.user)\n }\n </h4>\n {props.showSubText && <p className='text-secondary m-0'>{props.getSubText ? props.getSubText(props.user) : getSubText(props.user)}</p>}\n </div>\n </>\n );\n}","import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { AnalyticsRequestFilter, Engagement, IndividualEngagementResponse } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nexport const VideoViewRequests = {\n individualEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n success?: (data: IndividualEngagementResponse) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map', queryParams),\n key: getAnalyticsRequestKey(`engagement:${objectId}`, filter, sharerId),\n formatData: (data: any) => {\n return {\n ...data,\n data: data.data?.map((d: any) => ({\n ...d,\n heatMap: d.heatMap ?? []\n }))\n };\n },\n normalize: false,\n success,\n error,\n always\n };\n },\n \n aggregateEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n success?: (data: Engagement) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map/aggregations', queryParams),\n key: getAnalyticsRequestKey(`aggregate:engagement:${objectId}`, filter, sharerId),\n formatData: (data: Engagement) => {\n return {\n ...data,\n heatMap: data.heatMap ?? []\n };\n },\n normalize: false,\n success,\n error,\n always\n };\n },\n \n views(\n filter: AnalyticsRequestFilter,\n objectId?: string,\n sharerId?: string,\n success?: (data: VideoViewEventResponse) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n let baseKey = 'video:views';\n\n if (objectId)\n baseKey += `:${objectId}`;\n\n const queryParams: HashObject = {\n objectId,\n ...filter,\n timeOffset: DateHelper.getTimezoneOffset()\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/video-views', queryParams),\n key: getAnalyticsRequestKey(baseKey, filter, sharerId),\n normalize: false,\n success,\n error,\n always\n };\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightStudentsNotWatched';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightStudentsNotWatchedProps {\n students: User[];\n imageCdnUrl: string;\n imageUrl: string;\n heatmapAppLink: Core.AppLink;\n watchedIds: string[];\n anonymiseUsers: boolean;\n}\n\nexport function InsightStudentsNotWatched(props: InsightStudentsNotWatchedProps) {\n const studentsNotWatched = props.students?.filter(student => !props.watchedIds?.includes(student.id)) || [];\n\n return (\n <InsightCard\n title={getPhrase('title')}\n // TODO: Replace icon\n svgName={cvSvgLibrary.Trending}\n svgClassName='bg-light-teal text-teal'\n >\n <InsightStudentList\n students={studentsNotWatched}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('studentsDisplay')}\n appLink={props.heatmapAppLink}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightStudentsWatched';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightWatchedProps {\n students: User[];\n imageCdnUrl: string;\n heatmapAppLink: Core.AppLink;\n imageUrl: string;\n anonymiseUsers: boolean;\n}\n\nexport function InsightStudentsWatched(props: InsightWatchedProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Flag}\n svgClassName='bg-light-indigo text-indigo'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('studentsDisplay')}\n appLink={props.heatmapAppLink}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightHeatmap } from 'libs/shared/apps/analytics/components/insights/heatmap/InsightHeatmap';\nimport { InsightStudentsNotWatched } from 'libs/shared/apps/analytics/components/insights/students-not-watched/InsightStudentsNotWatched';\nimport { InsightStudentsWatched } from 'libs/shared/apps/analytics/components/insights/students-watched/InsightStudentsWatched';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { BasePaginatedCollection, Config, CurrentUser, Engagement, User, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { getInsightsClipTabs, getInsightsVideoTabs } from 'apps/insights/utils/InsightsAppLinkUtils';\nimport { InsightsHeaderView } from 'apps/insights/views/header/InsightsHeaderView';\nimport { getVideoInsightsAppLinks } from 'apps/insights/views/video/overview/VideoInsightsOverviewUtils';\n\nconst namespace = 'insights.videoInsightsOverview';\n\ninterface VideoInsightsViewProps {\n videoId: string;\n typeId: MasterType;\n}\n\nexport function VideoInsightsOverviewView(props: VideoInsightsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const videoRequest = VideoHelper.getVideoRequest(props.videoId, props.typeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n VideoViewRequests.aggregateEngagement(\n props.videoId,\n {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n },\n currentUser.data.id\n )\n );\n\n const classroomFilterOnly =\n audienceAppLinkParams.classrooms?.length === 1 && !audienceAppLinkParams.classroomGroups?.length;\n const classroomStudents = Flight.useBasicFetch<BasePaginatedCollection<User>>(classroomFilterOnly &&\n ClassroomRequests.getClassroomStudents(ArrayHelper.first(audienceAppLinkParams.classrooms)));\n\n const shareRecipients = Flight.useBasicFetch<User[]>(aggregateEngagement.data?.userIds &&\n ShareRequests.getRecipientsById(aggregateEngagement.data.userIds, currentUser.data.customerId));\n\n function getStudentsList() {\n if (!shareRecipients.data) return [];\n\n return Object.values(shareRecipients.data);\n }\n\n const hasDataLoaded =\n currentUser.data &&\n config.data &&\n video.data &&\n aggregateEngagement.data &&\n (!classroomFilterOnly || classroomStudents.data);\n\n if (!hasDataLoaded) return <></>;\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n const videoInsightsAppLinks = getVideoInsightsAppLinks(props.videoId, params);\n\n function getInsightsOverviewTabs() {\n if (video.data.typeId === MasterType.Clip) {\n return getInsightsClipTabs(video.data.id, 'overview', params);\n }\n\n return getInsightsVideoTabs(video.data.id, 'overview', params);\n }\n\n return (\n <div className='px-3'>\n <InsightsHeaderView\n video={video.data}\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsOverviewTabs()}\n />\n\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='studentViewing' />\n <span>: {getStudentsList().length}{classroomStudents.data ? `/${classroomStudents.data.data.length}` : ''}</span>\n </h2>\n <div className='row g-3'>\n {classroomFilterOnly && (\n <div className='col-12 col-md'>\n <InsightStudentsNotWatched\n students={classroomStudents.data.data}\n watchedIds={aggregateEngagement.data.userIds}\n imageCdnUrl={config.data.imageCdnUrl}\n heatmapAppLink={videoInsightsAppLinks.heatmapAppLink}\n imageUrl={ImageUrls.Insights.AVATAR}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n )}\n <div className='col-12 col-md'>\n <InsightStudentsWatched\n students={getStudentsList()}\n imageCdnUrl={config.data.imageCdnUrl}\n heatmapAppLink={videoInsightsAppLinks.heatmapAppLink}\n imageUrl={ImageUrls.Insights.AVATAR}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n </div>\n </section>\n\n <section className='mb-5'>\n <h2 className='h4'><Text namespace={namespace} phrase='classEngagement' /></h2>\n <InsightHeatmap\n engagement={aggregateEngagement.data}\n heatmapAppLink={videoInsightsAppLinks.heatmapAppLink}\n />\n </section>\n </div>\n );\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getVideoInsightsAppLinks(id: string, params?: HashObject) {\n return {\n heatmapAppLink: {\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.VIDEO_HEATMAP,\n args: [id],\n params\n }\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"removeRecipient\":\"mCbMC\",\"recipientItem\":\"kdcb0\",\"showSpinner\":\"xH6Mu\",\"avatarContainer\":\"Zcpg3\",\"recipientDetails\":\"v5EmV\",\"recipientDetailsWithRemoveButton\":\"_V928\"};"],"names":["namespace","ZERO_COLOUR","COLOUR_SCALE","LEGEND_VALUES","getBackgroundColor","value","max","hex","getGradient","data","gradient","i","length","previousValue","currentValue","nextValue","push","join","EngagementHeatMapLegend","Math","legendSquareWidthPercentage","className","Text","phrase","map","val","idx","key","style","width","backgroundColor","EngagementHeatMap","props","heatMap","engagement","background","InsightCard","svgClassName","SvgContainer","svgName","title","subtitle","count","children","MAX_ITEMS","InsightStudentList","students","slice","student","id","UserRecipientItemMetadata","user","imageCdnUrl","avatarClassName","detailsClassName","showDisplayName","showSubText","anonymiseUsers","undefined","percentage","round","PercentageIndicator","src","imageUrl","description","AppLink","appLink","appLinkText","getPhrase","LanguageService","InsightHeatmap","engagementRate","options","heatmapAppLink","getFullHeatMap","Array","ceil","videoDuration","fill","t","avatar","url","initials","name","surname","getSubText","userType","role","yearGroup","defaults","VideoViewRequests","individualEngagement","objectId","filter","sharerId","success","error","always","queryParams","formatData","d","normalize","aggregateEngagement","views","baseKey","timeOffset","InsightStudentsNotWatched","studentsNotWatched","watchedIds","includes","InsightStudentsWatched","VideoInsightsOverviewView","SharedViewModelKeys","currentUser","UserRequests","config","ConfigRequests","videoRequest","VideoHelper","videoId","typeId","video","audienceAppLinkParams","dateRangeAppLinkParams","classroomFilterOnly","classrooms","classroomGroups","classroomStudents","ClassroomRequests","ArrayHelper","shareRecipients","userIds","ShareRequests","customerId","getStudentsList","Object","values","params","videoInsightsAppLinks","application","action","args","getVideoInsightsAppLinks","InsightsHeaderView","tabs","MasterType","ImageUrls"],"sourceRoot":""}
@@ -1,3 +0,0 @@
1
- /*! For license information please see 4137-f0ac17da1f-lite.chunk.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4137],{34079:(e,t,r)=>{r.d(t,{O:()=>l});var n=r(32735),a=r(23481),i=r(40782),o=r(36532),c=a.T.encloseNamespace("interactives.pendingIndicator");function s(e){var t="d-flex align-items-center h-100";return t+=e.showLabel?" justify-content-between":" justify-content-center",e.className&&(t+=" ".concat(e.className)),t}function l(e){var t=function(){return n.createElement("div",{className:s(e)},!!e.showLabel&&n.createElement("em",null,c("pending")),n.createElement(i.O,null))};return e.title?n.createElement(o.u,{title:e.title,spanHack:!0,spanHackClassName:e.tooltipClassName||"h-100 w-100 d-flex align-items-center"},n.createElement(t,null)):n.createElement(t,null)}},83134:(e,t,r)=>{function n(e,t){switch(e){case"score_desc":return[{id:t,desc:!0}];case"score_asc":return[{id:t,desc:!1}];default:return[]}}r.d(t,{P:()=>n})},1704:(e,t,r)=>{r.d(t,{l:()=>l});var n=r(32735),a=r(23481),i=r(9111),o=r(13876);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var s=a.T.encloseNamespace("shared.confirmationPopup");function l(e){var t,r,a=(t=n.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,c=[],s=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}(t,r)||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.")}()),l=a[0],u=a[1];return n.createElement(i.G,{title:e.title,closePopup:e.closePopup},n.createElement(n.Fragment,null,e.children,n.createElement(o.u,null,n.createElement(o.u.Cancel,{onClick:e.closePopup,variant:e.cancelButtonVariant,text:e.cancelButtonText||s("cancel")}),n.createElement(o.u.Submit,{onClick:function(){u(!0),e.onClickConfirm()},text:e.confirmButtonText||s("confirm"),variant:e.confirmButtonVariant,showSpinner:l,disabled:e.disabledConfirmButton}))))}l.defaultProps={confirmButtonVariant:"primary",cancelButtonVariant:"link"}},11165:(e,t,r)=>{r.r(t),r.d(t,{InteractiveInsightsQuestionsView:()=>pe});var n=r(32735),a=r(81886),i=r(23481),o=r(2948),c=r(20354),s=r(75896),l=r(72915),u=r(86572),m=i.T.encloseNamespace("interactives.interactionResponseListHeader");function d(e){var t,r=null===(t=e.interaction.data)||void 0===t?void 0:t.suggestedResponse;return n.createElement("div",{className:"rounded bg-white"},n.createElement("div",{className:"p-2 position-relative"},n.createElement("div",{className:"d-flex"},n.createElement(u.y,{interaction:e.interaction,iconClassName:"flex-shrink-0"})),!!r&&n.createElement("div",{className:"mt-2"},n.createElement("strong",null,m("suggestedResponse")),n.createElement("p",{className:"m-0"},r))))}var f=i.T.encloseNamespace("shared.submitMarkedAnswers");function p(e){return n.createElement("div",{className:"d-flex justify-content-end"},n.createElement("button",{className:"btn btn-outline-dark",onClick:e.submit,disabled:e.disabled},f("submitAnswers")))}var h=r(26136),g=r(39157),v=r(23232),y=r(80897),b=r(83345),w=r(28972),E=r(83140),N=r(80845);const S={awaitingMarking:"PPNkp"};var k="shared.interactionResponseList",x=i.T.encloseNamespace(k);function I(e){var t,r,a=(r=e.interaction,e.results.students.filter((function(e){return E.A.isInteractionCorrect(r,(0,N.j_)(e))===w.w.AwaitingMarking}))),i=Object.keys(e.markedAnswers).length;return(null===(t=e.results.students)||void 0===t?void 0:t.length)?n.createElement(n.Fragment,null,e.reportsStyling&&n.createElement(d,{interaction:e.interaction}),n.createElement("div",{className:e.reportsStyling?"d-flex justify-content-end":"d-flex align-items-center justify-content-between border-bottom border-light px-3 py-2"},!e.reportsStyling&&n.createElement("p",{className:"fw-semibold mb-0"},n.createElement(b.x,{namespace:k,phrase:"studentAnswers"})),!!a.length&&n.createElement(p,{submit:e.submitMarkedAnswers,disabled:!i})),n.createElement(n.Fragment,null,n.createElement("ul",{className:"list-unstyled mb-0"},e.results.students.map((function(t,r){var i=a.some((function(e){return e.user.id===t.user.id})),o=e.reportsStyling?"bg-white p-2":"bg-white px-3 pt-3 pb-2";return i&&(o+=" ".concat(S.awaitingMarking)),n.createElement("li",{key:r,className:e.reportsStyling?"position-relative mt-2":"position-relative border-bottom border-light"},e.reportsStyling?n.createElement(y.O,{interaction:e.interaction,studentResults:t,markedStatus:(0,g.HI)(e.interaction.id,t,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,showStudentDetails:!0,anonymisedUserName:e.anonymiseUsers?(0,h.B)(t.user,!0):null,className:o,showFeedback:!0,reportsStyling:!0,responseComponentClass:"mx-n2"}):n.createElement(l.d,{interaction:e.interaction,studentResults:t,markedStatus:(0,g.HI)(e.interaction.id,t,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,showStudentDetails:!0,anonymisedUserName:e.anonymiseUsers?(0,h.B)(t.user,!0):null,className:o,showFeedback:!0}))}))),!!a.length&&n.createElement(p,{submit:e.submitMarkedAnswers,disabled:!i}))):n.createElement("div",{className:"d-flex flex-column h-100"},n.createElement(v.u,{className:"bg-white rounded mt-2 py-5 flex-grow-1 justify-content-center"},n.createElement(v.u.Image,{src:e.emptyStateImageUrl}),n.createElement(v.u.Heading,null,x("emptyStateHeading")),n.createElement(v.u.Info,{className:"w-100"},x("emptyStateDescription"))))}var A=i.T.encloseNamespace("shared.selectedInteractionEmptyState");function C(e){return n.createElement(v.u,{className:"rounded h-100 bg-white justify-content-center py-4"},n.createElement(v.u.Image,{src:e.emptyStateUrl,className:"w-75 h-auto"}),n.createElement(v.u.Info,{className:"w-100"},A("emptyStateText")))}var O=r(83134),j=r(69674),L=r(57266),T=r(34079),U=r(10874),M=r(83914),P=r(40424),R=r(35223);const _={row:"it1bR",answerImage:"WveSa",answerWidth:"xMLqI",svgFill:"yi9Ev"};var B="shared.questionTable";function F(e){var t;function r(e){return String.fromCharCode(e+"A".charCodeAt(0))}switch(e.interaction.typeId){case P.Z9.MultipleChoice:return n.createElement("ul",{className:"".concat(_.answerWidth," list-unstyled row g-2")},e.interaction.actionableItems.map((function(e){var t;return(null===(t=e.data)||void 0===t?void 0:t.imageUrl)?n.createElement("li",{key:e.id,className:"col-6 position-relative"},n.createElement("div",{className:"".concat(_.svgFill," position-absolute top-0 start-0 px-2 pt-1 z-1")},e.isCorrect?n.createElement(M.x,{svgName:R.vn.CheckCircle,size:M.S.XXL,className:"svg-container text-success"}):n.createElement(M.x,{svgName:R.vn.CrossCircleFilled,size:M.S.Large,className:"svg-container text-red"})),n.createElement("div",{className:"".concat(e.isCorrect?"":"opacity-50"," d-flex flex-column rounded-3 overflow-hidden shadow h-100")},n.createElement("img",{src:e.data.imageUrl,className:"".concat(_.answerImage," w-100")}),n.createElement("div",{className:"bg-white flex-grow-1"},n.createElement("p",{className:"p-2 mb-0"},e.name)))):n.createElement("li",{key:e.id,className:"col-12"},n.createElement("div",{className:"".concat(e.isCorrect?"bg-light-green border-green":"bg-light-red border-red"," rounded border py-1 px-2 m-0")},n.createElement("span",{className:"fw-semibold"},r(e.order),". "),n.createElement("span",null,e.name)))})));case P.Z9.TrueOrFalse:return n.createElement("ul",{className:"list-unstyled d-flex gap-2"},e.interaction.actionableItems.map((function(e){return n.createElement("li",{key:e.id,className:"".concat(e.isCorrect?"bg-light-green border-green":"bg-light-red border-red"," rounded border px-2 py-1 mb-2 w-50")},n.createElement("span",{className:"fw-semibold"},r(e.order),". "),n.createElement("span",null,e.name))})));case P.Z9.ShortAnswer:var a=null===(t=e.interaction.data)||void 0===t?void 0:t.suggestedResponse;return a?n.createElement("div",{className:"".concat(_.answerWidth," bg-light-blue rounded p-2 mb-2")},n.createElement("div",{className:"d-flex justify-content-between"},n.createElement("p",{className:"fw-semibold mb-2"},n.createElement(b.x,{namespace:B,phrase:"suggestedResponse"})),n.createElement(U.h,{svgName:R.vn.Edit,onClick:function(){return e.editSuggestedResponse()}})),n.createElement("p",{className:"mb-0"},a)):n.createElement(U.h,{svgName:R.vn.Edit,className:"btn btn-outline-dark mb-2",onClick:e.editSuggestedResponse},n.createElement(b.x,{namespace:B,phrase:"createSuggestedResponse"}));case P.Z9.MissingWord:return n.createElement("div",null,n.createElement("p",{className:"mb-0"},e.interaction.data.sentence.split(/({\d+})/).map((function(t,r){var a=t.match(/{(\d+)}/);if(a){var i=a[1],o=e.interaction.actionableItems.find((function(e){return+e.order==+i}));if(o)return n.createElement("span",{className:"bg-white border border-gray-300 rounded p-1 lh-lg",key:r},o.name)}return t}))))}}var G=r(40782),H=i.T.encloseNamespace("shared.questionTable");function D(e,t,r){console.log(e),console.log(t);var n=e.cells.find((function(e){return e.column.id===r})).value,a=t.cells.find((function(e){return e.column.id===r})).value;return n.awaitingMarking?-1:a.awaitingMarking||n.percentCorrect>=a.percentCorrect?1:-1}function W(e){var t;return n.createElement("div",{className:"d-flex ".concat(null!==(t=e.className)&&void 0!==t?t:"")},e.children)}function q(e){return n.createElement(W,{className:e.column.isSorted&&"fw-bold"},H(e.phraseKey))}function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function Q(e){var t,r,a,i,o=(a=n.useState((0,O.P)(e.sortBy,"correctlyAnswered")),i=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,c=[],s=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(a,i)||function(e,t){if(e){if("string"==typeof e)return V(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?V(e,t):void 0}}(a,i)||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.")}()),c=o[0],l=o[1],m=function(e,t,r,a){return n.useMemo((function(){var r=(0,N.Q)(e).map((function(e){return Object.assign(Object.assign({},e),{resultsSummary:(0,g.nq)(e,t)})}));if("correctlyAnswered"===(null==a?void 0:a.id)){var n=s.m.sortBy(r,(function(e){return e.resultsSummary.awaitingMarking?-1:e.resultsSummary.percentCorrect}));return a.desc?n.reverse():n}return r}),[r,a])}(e.interactive,e.results,e.refreshTable,s.m.first(c)),d=e.selectedInteractionId&&(0,g.Zs)(e.interactive,e.selectedInteractionId);return n.createElement("div",{className:"row"},n.createElement("div",{className:"col-6"},n.createElement(j.i,{key:e.selectedInteractionId,columns:(t=e.showAnswersInTable,r=e.editSuggestedResponse,[{Header:function(e){var t=e.column;return n.createElement(q,{column:t,phraseKey:"#"})},accessor:"data",id:"index",Cell:function(e){var t=e.row.index;return n.createElement(W,null,t+1,".")},width:15,disableSortBy:!0},{Header:function(e){var t=e.column;return n.createElement(q,{column:t,phraseKey:"question"})},accessor:"data",Cell:function(e){var a=e.row.original,i=e.initialState.selectedRowIds,o=null==i?void 0:i[null==a?void 0:a.id];return n.createElement(W,{className:"flex-column"},n.createElement("div",{className:"".concat(o?"":"clamp-1"," pe-2")},n.createElement(u.y,{interaction:a,containerClassName:o?"d-flex":""})),t&&o&&n.createElement("div",{className:"mt-3 w-100"},n.createElement(F,{interaction:a,editSuggestedResponse:r})))},disableSortBy:!0},{Header:function(e){var t=e.column;return n.createElement(q,{column:t,phraseKey:"score"})},accessor:"resultsSummary",id:"correctlyAnswered",Cell:function(e){var t=e.value,r=t.percentCorrect;return t.awaitingMarking?n.createElement(T.O,{title:H("markingRequired"),className:"flex-grow-1",tooltipClassName:"d-block",showLabel:!0}):n.createElement(G.O,{percentage:r,layout:G.I.LabelBefore})},width:60,sortDescFirst:!0,sortType:D}]),data:m,theme:e.theme,onSelectRow:function(e){var t=e.original;L.e.updateParams({interactionId:t.id},{merge:!0})},initialSelectedRowIds:d?[d.id]:null,getRowId:function(e){return e.id},enableSort:!0,manualSort:!0,onSort:l,initialSortBy:c})),n.createElement("div",{className:"col-6"},n.createElement("div",{className:"border border-light rounded h-100"},!!d&&n.createElement(I,{interaction:d,results:e.results,markedAnswers:e.markedAnswers,addMarkedAnswers:e.addMarkedAnswers,submitMarkedAnswers:e.submitMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymiseUsers:e.anonymiseUsers,emptyStateImageUrl:e.emptyStateImageUrl,reportsStyling:e.reportsStyling}),!d&&n.createElement(C,{emptyStateUrl:e.selectQuestionImageUrl}))))}var K=r(41196),Z=r(9193),$=r(26025),z=r(74901),Y=r(40003),X=r(1704),J=r(38143),ee=r(39151),te=r(20768),re=r(99742),ne=r(14070),ae=r(97291),ie=r(5672),oe=r(83590);function ce(e){return ce="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},ce(e)}function se(){se=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function u(e,t,r,n){var i=t&&t.prototype instanceof v?t:v,o=Object.create(i.prototype),c=new j(n||[]);return a(o,"_invoke",{value:I(e,r,c)}),o}function m(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var d="suspendedStart",f="suspendedYield",p="executing",h="completed",g={};function v(){}function y(){}function b(){}var w={};l(w,o,(function(){return this}));var E=Object.getPrototypeOf,N=E&&E(E(L([])));N&&N!==r&&n.call(N,o)&&(w=N);var S=b.prototype=v.prototype=Object.create(w);function k(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function r(a,i,o,c){var s=m(e[a],e,i);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==ce(u)&&n.call(u,"__await")?t.resolve(u.__await).then((function(e){r("next",e,o,c)}),(function(e){r("throw",e,o,c)})):t.resolve(u).then((function(e){l.value=e,o(l)}),(function(e){return r("throw",e,o,c)}))}c(s.arg)}var i;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return i=i?i.then(a,a):a()}})}function I(t,r,n){var a=d;return function(i,o){if(a===p)throw Error("Generator is already running");if(a===h){if("throw"===i)throw o;return{value:e,done:!0}}for(n.method=i,n.arg=o;;){var c=n.delegate;if(c){var s=A(c,n);if(s){if(s===g)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===d)throw a=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=p;var l=m(t,r,n);if("normal"===l.type){if(a=n.done?h:f,l.arg===g)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(a=h,n.method="throw",n.arg=l.arg)}}}function A(t,r){var n=r.method,a=t.iterator[n];if(a===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,A(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var i=m(a,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,g;var o=i.arg;return o?o.done?(r[t.resultName]=o.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,g):o:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,g)}function C(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 O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function j(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(C,this),this.reset(!0)}function L(t){if(t||""===t){var r=t[o];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,i=function r(){for(;++a<t.length;)if(n.call(t,a))return r.value=t[a],r.done=!1,r;return r.value=e,r.done=!0,r};return i.next=i}}throw new TypeError(ce(t)+" is not iterable")}return y.prototype=b,a(S,"constructor",{value:b,configurable:!0}),a(b,"constructor",{value:y,configurable:!0}),y.displayName=l(b,s,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,l(e,s,"GeneratorFunction")),e.prototype=Object.create(S),e},t.awrap=function(e){return{__await:e}},k(x.prototype),l(x.prototype,c,(function(){return this})),t.AsyncIterator=x,t.async=function(e,r,n,a,i){void 0===i&&(i=Promise);var o=new x(u(e,r,n,a),i);return t.isGeneratorFunction(r)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},k(S),l(S,s,"Generator"),l(S,o,(function(){return this})),l(S,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=L,j.prototype={constructor:j,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(O),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=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 r=this;function a(n,a){return c.type="throw",c.arg=t,r.next=n,a&&(r.method="next",r.arg=e),!!a}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],c=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var s=n.call(o,"catchLoc"),l=n.call(o,"finallyLoc");if(s&&l){if(this.prev<o.catchLoc)return a(o.catchLoc,!0);if(this.prev<o.finallyLoc)return a(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return a(o.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return a(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var i=a;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,g):this.complete(o)},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),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),O(r),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;O(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),g}},t}function le(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,c=[],s=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ue(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ue(e,t):void 0}}(e,t)||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.")}()}function ue(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var me=function(e,t,r,n){return new(r||(r=Promise))((function(a,i){function o(e){try{s(n.next(e))}catch(e){i(e)}}function c(e){try{s(n.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,c)}s((n=n.apply(e,t||[])).next())}))},de=i.T.encloseNamespace("shared.interactiveInsightsQuestions"),fe={table:"bg-white rounded border border-light pb-2",header:"border-bottom px-3 py-2 mb-2",headerCell:"d-flex align-items-center",cell:"",row:"px-3 py-2 bg-light-blue-hover",selectedRow:"bg-gray-100",sortIndicator:"ms-2"};function pe(e){var t,r,i,s,l=le((0,o.D)(J.g.ANONYMISE_USERS),1)[0],u=le(n.useState(!1),2),m=u[0],d=u[1],f=c.a.useBasicFetch(ee.L.config()),p=c.a.useBasicFetch(te.b.interactiveMetadata(e.interactiveId)),h=c.a.useBasicFetch((null===(t=p.data)||void 0===t?void 0:t.interactiveId)&&te.b.interactive(p.data.interactiveId)),g=$.B.getAudienceAppLinkParams(),v=$.B.getDateRangeAppLinkParams(),y=(0,K.W)(e.interactiveId,Object.assign(Object.assign({},(0,Y.wO)((0,Y.Hb)(),v)),(0,z.K)(g))),b=(0,Z.D)(null===(r=h.data)||void 0===r?void 0:r.id,null===(i=p.data)||void 0===i?void 0:i.id,(function(){return d(!1)})),w=b.markedAnswers,E=b.addMarkedAnswers,N=b.submitMarkedAnswers;if(!(h.data&&p.data&&y.data))return n.createElement(n.Fragment,null);var S=Object.assign(Object.assign({},g),v);return n.createElement("div",{className:"px-3"},n.createElement(oe.m,{audienceAppLinkParams:g,dateRangeAppLinkParams:v,tabs:(0,ie.kj)(e.interactiveId,"questions",S),video:p.data}),n.createElement(Q,{interactive:h.data,results:y.data,markedAnswers:w,addMarkedAnswers:E,submitMarkedAnswers:function(){return d(!0)},imageCdnUrl:f.data.imageCdnUrl,selectedInteractionId:e.interactionId,refreshTable:y.isFetching||h.isFetching,emptyStateImageUrl:re.W.Insights.NO_RESPONSES,selectQuestionImageUrl:re.W.Insights.NO_DATA,anonymiseUsers:l,editSuggestedResponse:function(){return me(this,void 0,void 0,se().mark((function t(){return se().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:a.Q.C$.trigger({application:ae.O.INSIGHTS,action:ne.e.Insights.INTERACTIVE_SUGGESTED_RESPONSE,args:[e.interactiveId],params:{interactionId:e.interactionId}});case 1:case"end":return t.stop()}}),t)})))},sortBy:e.sortBy,showAnswersInTable:!0,theme:fe}),m&&n.createElement(X.l,{title:de("markPopupTitle",{smartCount:null!==(s=Object.keys(w).length)&&void 0!==s?s:0}),closePopup:function(){return d(!1)},confirmButtonText:de("submit"),confirmButtonVariant:"dark",onClickConfirm:N},n.createElement("p",null,de("markPopupBody"))))}}}]);
3
- //# sourceMappingURL=4137-f0ac17da1f-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/4137-f0ac17da1f-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/components/pending-indicator/PendingIndicator.tsx","file:///app/packages/libs/shared/src/apps/analytics/utils/StudentTableSortUtils.ts","file:///app/packages/libs/shared/src/components/confirmation-popup/ConfirmationPopup.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseListHeader.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/submit-marked-answers/SubmitMarkedAnswers.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-list/interaction-response-list.scss","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseList.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/selected-interaction-empty-state/SelectedInteractionEmptyState.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/question-table.scss","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/QuestionTableAnswers.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/QuestionTableUtils.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/question-table/QuestionTable.tsx","file:///app/packages/projects/lite/src/apps/insights/views/interactive/questions/InteractiveInsightsQuestionsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PercentageIndicator } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'interactives.pendingIndicator';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getClassName(props: PendingIndicatorProps): string {\n let className = 'd-flex align-items-center h-100';\n\n className += props.showLabel ? ' justify-content-between' : ' justify-content-center';\n\n if (props.className)\n className += ` ${props.className}`;\n\n return className;\n}\n\ninterface PendingIndicatorProps {\n title?: string;\n className?: string;\n showLabel?: boolean;\n tooltipClassName?: string;\n}\n\nexport function PendingIndicator(props: PendingIndicatorProps): JSX.Element {\n const Indicator = () => (\n <div className={getClassName(props)}>\n {!!props.showLabel &&\n <em>{getPhrase('pending')}</em>\n }\n <PercentageIndicator />\n </div>\n );\n\n if (!props.title)\n return <Indicator />;\n\n return (\n <Tooltip title={props.title} spanHack spanHackClassName={props.tooltipClassName || 'h-100 w-100 d-flex align-items-center'}>\n <Indicator />\n </Tooltip>\n );\n}","import { SortingRule } from 'react-table';\n\nexport type SortStudentsBy = 'score_desc' | 'score_asc';\n\nexport function getSortStudents(sortBy: SortStudentsBy, id: string): SortingRule<any>[] {\n switch (sortBy) {\n case 'score_desc': return [{ id, desc: true }];\n case 'score_asc': return [{ id, desc: false }];\n default: return [];\n }\n}","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.confirmationPopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ConfirmationPopupProps {\n title: string;\n onClickConfirm: () => void;\n confirmButtonText?: string;\n cancelButtonText?: string;\n confirmButtonVariant?: ButtonProps['variant'];\n cancelButtonVariant?: ButtonProps['variant'];\n disabledConfirmButton?: boolean;\n}\n\nConfirmationPopup.defaultProps = {\n confirmButtonVariant: 'primary',\n cancelButtonVariant: 'link'\n};\n\ntype PropTypes = React.PropsWithChildren<ConfirmationPopupProps & PopupViewProps>;\n\nexport function ConfirmationPopup(props: PropTypes): React.ReactElement {\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\n\n return (\n <Popup title={props.title} closePopup={props.closePopup}>\n <>\n {props.children}\n <PopupButtons>\n <PopupButtons.Cancel\n onClick={props.closePopup}\n variant={props.cancelButtonVariant}\n text={props.cancelButtonText || getPhrase('cancel')}\n />\n <PopupButtons.Submit\n onClick={() => { setShowButtonSpinner(true); props.onClickConfirm(); }}\n text={props.confirmButtonText || getPhrase('confirm')}\n variant={props.confirmButtonVariant}\n showSpinner={showButtonSpinner}\n disabled={props.disabledConfirmButton}\n />\n </PopupButtons>\n </>\n </Popup>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { Interaction } from 'libs/shared/interfaces';\n\nconst namespace = 'interactives.interactionResponseListHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractionResponseListHeaderProps {\n interaction: Interaction;\n}\n\nexport function InteractionResponseListHeader(props: InteractionResponseListHeaderProps): JSX.Element {\n const suggestedResponse = props.interaction.data?.suggestedResponse;\n\n return (\n <div className='rounded bg-white'>\n <div className='p-2 position-relative'>\n <div className='d-flex'>\n <InteractionLabel\n interaction={props.interaction}\n iconClassName='flex-shrink-0'\n />\n </div>\n {!!suggestedResponse &&\n <div className='mt-2'>\n <strong>{getPhrase('suggestedResponse')}</strong>\n <p className='m-0'>{suggestedResponse}</p>\n </div>\n }\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'shared.submitMarkedAnswers';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SubmitMarkedAnswersProps {\n submit: () => void;\n disabled: boolean\n}\n\nexport function SubmitMarkedAnswers(props: SubmitMarkedAnswersProps): JSX.Element {\n return (\n <div className='d-flex justify-content-end'>\n <button\n className='btn btn-outline-dark'\n onClick={props.submit}\n disabled={props.disabled}\n >\n {getPhrase('submitAnswers')}\n </button>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"awaitingMarking\":\"PPNkp\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InteractionResponseItem } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/InteractionResponseItem';\nimport { InteractionResponseListHeader } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseListHeader';\nimport { SubmitMarkedAnswers } from 'libs/shared/apps/analytics/components/questions-list/submit-marked-answers/SubmitMarkedAnswers';\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { getMarkedStatus } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { InteractionResponse } from 'libs/shared/components/interaction-response/InteractionResponse';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, InteractiveResultSet, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\nimport styles from './interaction-response-list.scss';\n\nconst namespace = 'shared.interactionResponseList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getResponsesToMark(\n interaction: Interaction,\n studentResults: StudentResults[]\n): StudentResults[] {\n return studentResults.filter(s =>\n InteractiveCorrectnessHelper.isInteractionCorrect(\n interaction,\n getStudentResult(s)\n ) === InteractionCorrectness.AwaitingMarking);\n}\ninterface InteractionResponseListProps {\n interaction: Interaction\n results: InteractiveResultSet;\n markedAnswers: MarkedAnswerHash;\n addMarkedAnswers: (answer: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n submitMarkedAnswers: () => void;\n imageCdnUrl: string;\n anonymiseUsers: boolean;\n emptyStateImageUrl: string;\n reportsStyling?: boolean;\n}\n\nexport function InteractionResponseList(props: InteractionResponseListProps): JSX.Element {\n const responsesToMark = getResponsesToMark(props.interaction, props.results.students);\n const numMarkedAnswers = Object.keys(props.markedAnswers).length;\n\n if (!props.results.students?.length)\n return (\n <div className='d-flex flex-column h-100'>\n <EmptyState className='bg-white rounded mt-2 py-5 flex-grow-1 justify-content-center'>\n <EmptyState.Image src={props.emptyStateImageUrl} />\n <EmptyState.Heading>\n {getPhrase('emptyStateHeading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('emptyStateDescription')}\n </EmptyState.Info>\n </EmptyState>\n </div>\n );\n\n return (\n <>\n {props.reportsStyling && <InteractionResponseListHeader interaction={props.interaction} />}\n <div className={props.reportsStyling\n ? 'd-flex justify-content-end'\n : 'd-flex align-items-center justify-content-between border-bottom border-light px-3 py-2'\n }>\n {!props.reportsStyling && <p className='fw-semibold mb-0'><Text namespace={namespace} phrase='studentAnswers' /></p>}\n {!!responsesToMark.length &&\n <SubmitMarkedAnswers submit={props.submitMarkedAnswers} disabled={!numMarkedAnswers} />\n }\n </div>\n <>\n <ul className='list-unstyled mb-0'>\n {props.results.students.map((s, idx) => {\n const markingRequired = responsesToMark.some(r => r.user.id === s.user.id);\n\n let className = props.reportsStyling ? 'bg-white p-2' : 'bg-white px-3 pt-3 pb-2';\n\n if (markingRequired)\n className += ` ${styles.awaitingMarking}`;\n\n return (\n <li key={idx} className={props.reportsStyling ? 'position-relative mt-2' : 'position-relative border-bottom border-light'}>\n {props.reportsStyling ? (\n <InteractionResponse\n interaction={props.interaction}\n studentResults={s}\n markedStatus={getMarkedStatus(props.interaction.id, s, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n showStudentDetails\n anonymisedUserName={props.anonymiseUsers ? anonymiseUserName(s.user, true) : null}\n className={className}\n showFeedback\n reportsStyling\n responseComponentClass='mx-n2'\n />\n ) : (\n <InteractionResponseItem\n interaction={props.interaction}\n studentResults={s}\n markedStatus={getMarkedStatus(props.interaction.id, s, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n showStudentDetails\n anonymisedUserName={props.anonymiseUsers ? anonymiseUserName(s.user, true) : null}\n className={className}\n showFeedback\n />\n )}\n </li>\n );\n })}\n </ul>\n {!!responsesToMark.length &&\n <SubmitMarkedAnswers submit={props.submitMarkedAnswers} disabled={!numMarkedAnswers} />\n }\n </>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nconst namespace = 'shared.selectedInteractionEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SelectedInteractionEmptyStateProps {\n emptyStateUrl: string;\n}\n\nexport function SelectedInteractionEmptyState(props: SelectedInteractionEmptyStateProps): JSX.Element {\n return (\n <EmptyState className='rounded h-100 bg-white justify-content-center py-4'>\n <EmptyState.Image\n src={props.emptyStateUrl}\n className='w-75 h-auto'\n />\n <EmptyState.Info className='w-100'>\n {getPhrase('emptyStateText')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"row\":\"it1bR\",\"answerImage\":\"WveSa\",\"answerWidth\":\"xMLqI\",\"svgFill\":\"yi9Ev\"};","import React from 'react';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Interaction, InteractionTypeId } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './question-table.scss';\n\nconst namespace = 'shared.questionTable';\n\ninterface QuestionTableAnswersProps {\n interaction: Interaction;\n editSuggestedResponse?: () => void;\n}\n\nexport function QuestionTableAnswers(props: QuestionTableAnswersProps) {\n function indexToLetter(index: number) {\n return String.fromCharCode(index + 'A'.charCodeAt(0));\n }\n\n switch (props.interaction.typeId) {\n case InteractionTypeId.MultipleChoice: return (\n <ul className={`${styles.answerWidth} list-unstyled row g-2`}>\n {props.interaction.actionableItems.map(option => {\n if (option.data?.imageUrl) {\n return (\n <li key={option.id} className='col-6 position-relative'>\n <div className={`${styles.svgFill} position-absolute top-0 start-0 px-2 pt-1 z-1`}>\n {option.isCorrect\n ? <SvgContainer svgName={cvSvgLibrary.CheckCircle} size={SvgContainerSize.XXL} className='svg-container text-success' />\n : <SvgContainer svgName={cvSvgLibrary.CrossCircleFilled} size={SvgContainerSize.Large} className='svg-container text-red' />\n }\n\n </div>\n <div className={`${!option.isCorrect ? 'opacity-50' : ''} d-flex flex-column rounded-3 overflow-hidden shadow h-100`}>\n <img src={option.data.imageUrl} className={`${styles.answerImage} w-100`} />\n <div className='bg-white flex-grow-1'>\n <p className='p-2 mb-0'>{option.name}</p>\n </div>\n </div>\n </li>\n );\n }\n\n\n return (\n <li key={option.id} className='col-12'>\n <div className={`${option.isCorrect ? 'bg-light-green border-green' : 'bg-light-red border-red'} rounded border py-1 px-2 m-0`}>\n <span className='fw-semibold'>{indexToLetter(option.order)}. </span>\n <span>{option.name}</span>\n </div>\n </li>\n );\n })}\n </ul>\n );\n case InteractionTypeId.TrueOrFalse: return (\n <ul className='list-unstyled d-flex gap-2'>\n {props.interaction.actionableItems.map(option => {\n return (\n <li\n key={option.id}\n className={`${option.isCorrect ? 'bg-light-green border-green' : 'bg-light-red border-red'} rounded border px-2 py-1 mb-2 w-50`}\n >\n <span className='fw-semibold'>{indexToLetter(option.order)}. </span>\n <span>{option.name}</span>\n </li>\n );\n })}\n </ul>\n );\n case InteractionTypeId.ShortAnswer: {\n const suggestedResponse = props.interaction.data?.suggestedResponse;\n\n if (!suggestedResponse) {\n return (\n <IconButton svgName={cvSvgLibrary.Edit} className='btn btn-outline-dark mb-2' onClick={props.editSuggestedResponse}>\n <Text namespace={namespace} phrase='createSuggestedResponse' />\n </IconButton>\n );\n }\n\n return (\n <div className={`${styles.answerWidth} bg-light-blue rounded p-2 mb-2`}>\n <div className='d-flex justify-content-between'>\n <p className='fw-semibold mb-2'>\n <Text namespace={namespace} phrase='suggestedResponse' />\n </p>\n\n <IconButton svgName={cvSvgLibrary.Edit} onClick={() => props.editSuggestedResponse()} />\n </div>\n\n <p className='mb-0'>{suggestedResponse}</p>\n </div>\n );\n }\n case InteractionTypeId.MissingWord: {\n const replacePlaceholders = (str: string) => {\n return str.split(/({\\d+})/).map((part, index) => {\n const match = part.match(/{(\\d+)}/);\n\n if (match) {\n const key = match[1];\n\n const replacement = props.interaction.actionableItems.find(answer => +answer.order === +key);\n\n\n if (replacement) {\n return <span className='bg-white border border-gray-300 rounded p-1 lh-lg' key={index}>{replacement.name}</span>;\n }\n }\n\n return part;\n });\n };\n\n return (\n <div>\n <p className='mb-0'>{replacePlaceholders(props.interaction.data.sentence)}</p>\n </div>\n );\n }\n }\n}","import React from 'react';\nimport { Column, ColumnInstance, Row, SortingRule } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PendingIndicator } from 'libs/shared/apps/analytics/components/pending-indicator/PendingIndicator';\nimport { QuestionTableAnswers } from 'libs/shared/apps/analytics/components/questions-list/question-table/QuestionTableAnswers';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\n\nconst namespace = 'shared.questionTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction sortScore(\n rowA: Row<InteractionWithResultsSummary>,\n rowB: Row<InteractionWithResultsSummary>,\n columnId: string\n): 1 | -1 {\n console.log(rowA);\n console.log(rowB);\n const cellA = rowA.cells.find(cell => cell.column.id === columnId).value;\n const cellB = rowB.cells.find(cell => cell.column.id === columnId).value;\n\n if (cellA.awaitingMarking)\n return -1;\n\n if (cellB.awaitingMarking)\n return 1;\n\n return cellA.percentCorrect >= cellB.percentCorrect\n ? 1\n : -1;\n}\ninterface CellWrapperProps {\n className?: string;\n}\n\nfunction CellWrapper(props: React.PropsWithChildren<CellWrapperProps>): JSX.Element {\n return (\n <div className={`d-flex ${props.className ?? ''}`}>\n {props.children}\n </div>\n );\n}\n\ninterface HeaderCellProps {\n column: ColumnInstance<InteractionWithResultsSummary>;\n phraseKey: string;\n}\n\nfunction HeaderCell(props: HeaderCellProps): JSX.Element {\n return (\n <CellWrapper className={props.column.isSorted && 'fw-bold'}>\n {getPhrase(props.phraseKey)}\n </CellWrapper>\n );\n}\n\nexport function getColumns(\n showAnswersInTable: boolean,\n editSuggestedResponse?: () => void\n): Column<InteractionWithResultsSummary>[] {\n return [\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='#' />,\n accessor: 'data', // This isn't used but it's needed for the typings on row\n id: 'index',\n Cell: ({ row: { index } }) => <CellWrapper>{index + 1}.</CellWrapper>,\n width: 15,\n disableSortBy: true\n },\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='question' />,\n accessor: 'data', // This isn't used but it's needed for the typings on row,\n Cell: ({ row: { original: interaction }, initialState: { selectedRowIds } }) => {\n const selectedRow = selectedRowIds?.[interaction?.id];\n\n return (\n <CellWrapper className='flex-column'>\n <div className={`${!selectedRow ? 'clamp-1' : ''} pe-2`}>\n <InteractionLabel interaction={interaction} containerClassName={selectedRow ? 'd-flex' : ''} />\n </div>\n\n {showAnswersInTable && selectedRow && (\n <div className='mt-3 w-100'>\n <QuestionTableAnswers interaction={interaction} editSuggestedResponse={editSuggestedResponse} />\n </div>\n )}\n </CellWrapper>\n );\n },\n disableSortBy: true\n },\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='score' />,\n accessor: 'resultsSummary',\n id: 'correctlyAnswered',\n Cell: ({ value: { percentCorrect, awaitingMarking } }) => {\n if (awaitingMarking) {\n return (\n <PendingIndicator\n title={getPhrase('markingRequired')}\n className='flex-grow-1'\n tooltipClassName='d-block'\n showLabel\n />\n );\n }\n\n return (\n <PercentageIndicator\n percentage={percentCorrect}\n layout={PercentageIndicatorLayout.LabelBefore}\n />\n );\n },\n width: 60,\n sortDescFirst: true,\n sortType: sortScore\n }\n ];\n}\n\n/**\n * Returns memoized table data. To trigger a recalculation, toggle the value of `refreshData`.\n */\nexport function useGetTableData(\n interactive: Interactive,\n results: InteractiveResultSet,\n refreshData: boolean,\n sortBy?: SortingRule<InteractionWithResultsSummary>\n): InteractionWithResultsSummary[] {\n return React.useMemo(() => {\n const interactions = getInteractions(interactive).map(i => ({\n ...i,\n resultsSummary: getInteractionResultsSummary(i, results)\n }));\n\n if (sortBy?.id === 'correctlyAnswered') {\n const sorted = ArrayHelper.sortBy(interactions, interaction => {\n if (interaction.resultsSummary.awaitingMarking)\n return -1;\n\n return interaction.resultsSummary.percentCorrect;\n });\n\n return sortBy.desc ? sorted.reverse() : sorted;\n }\n\n return interactions;\n }, [ refreshData, sortBy ]);\n}","import React from 'react';\nimport { Row, SortingRule } from 'react-table';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InteractionResponseList } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-list/InteractionResponseList';\nimport { SelectedInteractionEmptyState } from 'libs/shared/apps/analytics/components/questions-list/selected-interaction-empty-state/SelectedInteractionEmptyState';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionById } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { getSortStudents, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableSortUtils';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interactive, InteractiveResultSet, StudentAnswer } from 'libs/shared/interfaces';\nimport { AppRouteHelper } from 'libs/shared/utils/AppRouteHelper';\n\nimport { getColumns, useGetTableData } from './QuestionTableUtils';\n\ninterface QuestionTableProps {\n interactive: Interactive;\n results: InteractiveResultSet;\n markedAnswers: { [id: string]: StudentAnswer };\n addMarkedAnswers: (answer: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n submitMarkedAnswers: () => void;\n editSuggestedResponse?: () => void;\n imageCdnUrl: string;\n emptyStateImageUrl: string;\n selectQuestionImageUrl: string;\n anonymiseUsers: boolean;\n sortBy?: SortStudentsBy;\n\n /**\n * As the table data is memoized, it must be prompted to recalculate.\n * Toggle `refreshTable` to do so.\n */\n refreshTable: boolean;\n selectedInteractionId?: string;\n showAnswersInTable?: boolean;\n theme: TableTheme;\n reportsStyling?: boolean;\n}\n\nexport function QuestionTable(props: QuestionTableProps): JSX.Element {\n const [ sortBy, setSortBy ] = React.useState<SortingRule<InteractionWithResultsSummary>[]>(\n getSortStudents(props.sortBy, 'correctlyAnswered')\n );\n const data = useGetTableData(props.interactive, props.results, props.refreshTable, ArrayHelper.first(sortBy));\n\n const selectedInteraction = props.selectedInteractionId &&\n getInteractionById(props.interactive, props.selectedInteractionId);\n\n function onSelectRow({ original: interaction }: Row<InteractionWithResultsSummary>): void {\n AppRouteHelper.updateParams(\n { interactionId: interaction.id },\n { merge: true }\n );\n }\n\n return (\n <div className='row'>\n <div className='col-6'>\n <Table\n key={props.selectedInteractionId}\n columns={getColumns(props.showAnswersInTable, props.editSuggestedResponse)}\n data={data}\n theme={props.theme}\n onSelectRow={onSelectRow}\n initialSelectedRowIds={selectedInteraction ? [selectedInteraction.id] : null}\n getRowId={(row: InteractionWithResultsSummary) => row.id}\n enableSort\n manualSort\n onSort={setSortBy}\n initialSortBy={sortBy}\n />\n </div>\n <div className='col-6'>\n <div className='border border-light rounded h-100'>\n {!!selectedInteraction &&\n <InteractionResponseList\n interaction={selectedInteraction}\n results={props.results}\n markedAnswers={props.markedAnswers}\n addMarkedAnswers={props.addMarkedAnswers}\n submitMarkedAnswers={props.submitMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n anonymiseUsers={props.anonymiseUsers}\n emptyStateImageUrl={props.emptyStateImageUrl}\n reportsStyling={props.reportsStyling}\n />\n }\n {!selectedInteraction && <SelectedInteractionEmptyState emptyStateUrl={props.selectQuestionImageUrl} />}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { QuestionTable } from 'libs/shared/apps/analytics/components/questions-list/question-table/QuestionTable';\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { useMarkAnswers } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableSortUtils';\nimport { ConfirmationPopup } from 'libs/shared/components/confirmation-popup/ConfirmationPopup';\nimport { TableTheme } from 'libs/shared/components/table/Table';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { Config, Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { getInsightsInteractiveTabs } from 'apps/insights/utils/InsightsAppLinkUtils';\nimport { InsightsHeaderView } from 'apps/insights/views/header/InsightsHeaderView';\n\nconst namespace = 'shared.interactiveInsightsQuestions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\nconst theme: TableTheme = {\n table: 'bg-white rounded border border-light pb-2',\n header: 'border-bottom px-3 py-2 mb-2',\n headerCell: 'd-flex align-items-center',\n cell: '',\n row: `px-3 py-2 bg-light-blue-hover`,\n selectedRow: 'bg-gray-100',\n sortIndicator: 'ms-2'\n};\n\ninterface InteractiveInsightsQuestionsViewProps {\n interactiveId: string;\n interactionId: string;\n sortBy: SortStudentsBy;\n}\n\nexport function InteractiveInsightsQuestionsView(props: InteractiveInsightsQuestionsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n const [ showMarkConfirmationPopup, setShowMarkConfirmationPopup ] = React.useState(false);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveId)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const results = useFetchInteractiveResults(props.interactiveId, {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n });\n\n const { markedAnswers, addMarkedAnswers, submitMarkedAnswers } = useMarkAnswers(\n interactive.data?.id,\n interactiveMetadata.data?.id,\n () => setShowMarkConfirmationPopup(false)\n );\n\n const dataLoaded = interactive.data && interactiveMetadata.data && results.data;\n\n if (!dataLoaded) return <></>;\n\n async function editSuggestedResponse() {\n Core.AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_SUGGESTED_RESPONSE,\n args: [props.interactiveId],\n params: { interactionId: props.interactionId }\n });\n }\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n return (\n <div className='px-3'>\n <InsightsHeaderView\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsInteractiveTabs(props.interactiveId, 'questions', params)}\n video={interactiveMetadata.data}\n />\n\n <QuestionTable\n interactive={interactive.data}\n results={results.data}\n markedAnswers={markedAnswers}\n addMarkedAnswers={addMarkedAnswers}\n submitMarkedAnswers={() => setShowMarkConfirmationPopup(true)}\n imageCdnUrl={config.data.imageCdnUrl}\n selectedInteractionId={props.interactionId}\n refreshTable={results.isFetching || interactive.isFetching}\n emptyStateImageUrl={ImageUrls.Insights.NO_RESPONSES}\n selectQuestionImageUrl={ImageUrls.Insights.NO_DATA}\n anonymiseUsers={anonymiseUsers}\n editSuggestedResponse={editSuggestedResponse}\n sortBy={props.sortBy}\n showAnswersInTable\n theme={theme}\n />\n\n {showMarkConfirmationPopup &&\n <ConfirmationPopup\n title={getPhrase('markPopupTitle', { smartCount: Object.keys(markedAnswers).length ?? 0 })}\n closePopup={() => setShowMarkConfirmationPopup(false)}\n confirmButtonText={getPhrase('submit')}\n confirmButtonVariant='dark'\n onClickConfirm={submitMarkedAnswers}\n >\n <p>{getPhrase('markPopupBody')}</p>\n </ConfirmationPopup>\n }\n </div>\n );\n}"],"names":["getPhrase","getClassName","props","className","showLabel","PendingIndicator","Indicator","title","spanHack","spanHackClassName","tooltipClassName","getSortStudents","sortBy","id","desc","ConfirmationPopup","showButtonSpinner","setShowButtonSpinner","closePopup","children","onClick","variant","cancelButtonVariant","text","cancelButtonText","onClickConfirm","confirmButtonText","confirmButtonVariant","showSpinner","disabled","disabledConfirmButton","defaultProps","LanguageService","InteractionResponseListHeader","suggestedResponse","interaction","data","InteractionLabel","iconClassName","SubmitMarkedAnswers","submit","InteractionResponseList","responsesToMark","results","students","filter","s","InteractiveCorrectnessHelper","InteractionCorrectness","numMarkedAnswers","Object","keys","markedAnswers","length","reportsStyling","Text","namespace","phrase","submitMarkedAnswers","map","idx","markingRequired","some","r","user","key","InteractionResponse","studentResults","markedStatus","markInteraction","addMarkedAnswers","imageCdnUrl","showStudentDetails","anonymisedUserName","anonymiseUsers","showFeedback","responseComponentClass","InteractionResponseItem","EmptyState","src","emptyStateImageUrl","SelectedInteractionEmptyState","emptyStateUrl","QuestionTableAnswers","indexToLetter","index","String","fromCharCode","charCodeAt","typeId","actionableItems","option","imageUrl","isCorrect","SvgContainer","svgName","size","S","name","order","IconButton","editSuggestedResponse","sentence","split","part","match","replacement","find","answer","sortScore","rowA","rowB","columnId","console","log","cellA","cells","cell","column","value","cellB","awaitingMarking","percentCorrect","CellWrapper","HeaderCell","isSorted","phraseKey","QuestionTable","showAnswersInTable","setSortBy","interactive","refreshData","interactions","i","resultsSummary","sorted","ArrayHelper","reverse","useGetTableData","refreshTable","selectedInteraction","selectedInteractionId","Table","columns","Header","accessor","Cell","row","width","disableSortBy","original","selectedRowIds","initialState","selectedRow","containerClassName","PercentageIndicator","percentage","layout","sortDescFirst","sortType","theme","onSelectRow","AppRouteHelper","interactionId","merge","initialSelectedRowIds","getRowId","enableSort","manualSort","onSort","initialSortBy","selectQuestionImageUrl","table","header","headerCell","sortIndicator","InteractiveInsightsQuestionsView","SharedViewModelKeys","showMarkConfirmationPopup","setShowMarkConfirmationPopup","config","ConfigRequests","interactiveMetadata","InteractiveRequests","interactiveId","audienceAppLinkParams","dateRangeAppLinkParams","params","InsightsHeaderView","tabs","video","isFetching","ImageUrls","application","action","args","smartCount"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4654],{40391:(e,t,n)=>{n.d(t,{m9:()=>y,Ad:()=>b,Kh:()=>C});var a=n(32735),r=n(23481),l=n(75896),i=n(20789),c=n(18995),o=n(60376),s=n(83914),u=n(36532),m=n(4594),d=n(36511),f=n(35223),v=n(64818);const p={avatarContainer:"ByxQa"};var g=r.T.encloseNamespace("reportsShare.sharedToAvatarList");function E(e){var t=l.m.countBy(e,"typeId"),n=t[m.E.User],a=t[m.E.Classroom],r=t[m.E.ClassroomGroup];return n&&a&&r?g("classroomsGroupsAndUsers",{userCount:n,classroomCount:a,groupCount:r}):n&&a?g("classroomsAndUsers",{userCount:n,classroomCount:a}):n&&r?g("groupsAndUsers",{userCount:n,groupCount:r}):a&&r?g("classroomsAndGroups",{classroomCount:a,groupCount:r}):n?g("users",{userCount:n}):a?g("classrooms",{classroomCount:a}):r?g("groups",{groupCount:r}):void 0}function h(e){var t,n,r,l,c,g=(null===(t=e.item)||void 0===t?void 0:t.typeId)===m.E.User&&e.item,E=(null===(n=e.item)||void 0===n?void 0:n.typeId)===m.E.Classroom&&e.item,h=(null===(r=e.item)||void 0===r?void 0:r.typeId)===m.E.ClassroomGroup&&e.item,y="d-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100";return a.createElement("div",{className:"".concat(p.avatarContainer," position-relative d-inline-block")},a.createElement("div",{className:"".concat(p.avatarWrapper," position-absolute w-100 h-100 bg-white rounded-circle"),style:{left:"".concat(-15*e.index,"%"),zIndex:e.maxAvatars-e.index}},!!g&&a.createElement(u.u,{title:"".concat(g.name," ").concat(g.surname),spanHack:!0,spanHackClassName:"h-100 w-100"},a.createElement(i.q,{imageUrl:null===(l=g.avatar)||void 0===l?void 0:l.url,imageCdnUrl:e.imageCdnUrl,initials:v.l.getInitials(g.name,g.surname)})),!!E&&a.createElement(u.u,{title:E.name,spanHack:!0,spanHackClassName:"h-100 w-100"},a.createElement("div",{className:y},a.createElement(o.f,{svgName:f.vn.Classrooms,svgSize:s.S.Large,variant:"teal"}))),!!h&&a.createElement(u.u,{title:h.name,spanHack:!0,spanHackClassName:"h-100 w-100"},a.createElement("div",{className:y},a.createElement(o.f,{svgName:f.vn.Group,variant:(0,d.I)(null===(c=h.metadata)||void 0===c?void 0:c.colour)})))))}function y(){return a.createElement("div",{className:p.avatarContainer},a.createElement(u.u,{title:g("anonymous"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100"},a.createElement(s.x,{svgName:f.vn.Anonymous})))}function b(){return a.createElement("div",{className:p.avatarContainer},a.createElement(u.u,{title:g("sharedLink"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100"},a.createElement(s.x,{svgName:f.vn.Link})))}function C(e){return a.createElement("div",null,a.createElement(c.e,Object.assign({},e,{items:e.recipients,avatarItem:h,avatarContainerClassname:p.avatarContainer,getHiddenTooltip:E})))}C.defaultProps={maxAvatars:5}},18995:(e,t,n)=>{n.d(t,{e:()=>c});var a=n(32735),r=n(23481),l=n(36532),i=r.T.encloseNamespace("shared.avatarList");function c(e){var t=e.items.length>e.maxAvatars?e.items.slice(0,e.maxAvatars-1):e.items,n=e.items.length>t.length?e.items.slice(e.maxAvatars-1):[],r=e.avatarItem,c=n.length;return 0===t.length?a.createElement(a.Fragment,null):a.createElement("div",null,t.map((function(t,n){return a.createElement("div",{className:"".concat(e.avatarContainerClassname||""," position-relative d-inline-block"),key:t.id},a.createElement("div",{className:"position-absolute w-100 h-100 bg-white rounded-circle",style:{left:"".concat(-15*n,"%"),zIndex:e.maxAvatars-n}},a.createElement(r,{item:t,imageCdnUrl:e.imageCdnUrl,index:n,maxAvatars:e.maxAvatars})))})),!!n.length&&a.createElement("div",{className:"".concat(e.avatarContainerClassname||""," position-relative d-inline-block")},a.createElement("div",{className:"position-absolute w-100 h-100 bg-white rounded-circle",style:{left:"".concat(-15*t.length,"%"),zIndex:e.maxAvatars-t.length}},a.createElement(l.u,{title:e.getHiddenTooltip?e.getHiddenTooltip(n):e.roleToDisplay?i("staff"===e.roleToDisplay?"staff":"student",{count:c,smartCount:c}):i("users",{count:c,smartCount:c}),spanHack:!0,spanHackClassName:"h-100 w-100"},a.createElement("div",{className:"d-flex justify-content-center align-items-center border border-dark rounded-circle h-100 w-100 ".concat(e.numberClassname||"")},"+".concat(n.length))))))}c.defaultProps={maxAvatars:5}},39902:(e,t,n)=>{n.d(t,{f:()=>o});var a=n(32735),r=n(70680),l=n(20354);function i(e,t){if(e){if("string"==typeof e)return c(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)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function o(e,t){var n,o,s=(n=a.useState([]),o=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,l,i,c=[],o=!0,s=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(a=l.call(n)).done)&&(c.push(a.value),c.length!==t);o=!0);}catch(e){s=!0,r=e}finally{try{if(!o&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return c}}(n,o)||i(n,o)||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.")}()),u=s[0],m=s[1];a.useEffect((function(){if(null==e?void 0:e.length){var t=function(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||i(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.")}()}(u);t.push([]),e.forEach((function(e){t.find((function(t){return t.find((function(t){return t===e}))}))||t[t.length-1].push(e)})),m(t.filter((function(e){return e.length})))}}),[e?e.join(","):null]);var d=(0,r.I0)(),f=(0,r.v9)((function(e){return e}));if(a.useEffect((function(){u.forEach((function(e){var n=t(e);l.a.getResponse(f,n.key).shouldFetch&&l.a.fetch(d,n)}))}),[null==u?void 0:u.length]),!(null==u?void 0:u.length))return{items:null,isFetching:!1};var v={},p={};return u.forEach((function(e,n){var a=t(e),r=l.a.getResponse(f,a.key);p[n]=r,r.data&&r.data.forEach((function(e){return v[e.id]=e}))})),{items:Object.keys(p).some((function(e){return!!p[e].data}))?v:null,isFetching:!!Object.keys(p).some((function(e){return p[e].isFetching}))}}},70227:(e,t,n)=>{n.d(t,{c:()=>l});var a=n(97395),r=n(4594),l={getObjectUrl:function(e,t){var n=e.analyticsWebUrl;if(n){var l="";switch(t.typeId){case r.E.Video:l="/videos/".concat(t.id,"/overview");break;case r.E.Clip:l="/clips/".concat(t.id,"/overview");break;case r.E.Interactive:l="/interactives/".concat(t.id,"/overview")}if(l)return a._.safeUrlConcat(n,l)}}}},66607:(e,t,n)=>{n.d(t,{x:()=>l});var a=n(75896),r=n(85063),l={getDirectShares:function(e){var t;return null!==(t=null==e?void 0:e.filter((function(e){return e.type===r.y.DirectShare})))&&void 0!==t?t:[]},getRecipientIds:function(e){return a.m.uniq(a.m.flatten(l.getDirectShares(e).map((function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))),"id").map((function(e){return e.id}))}}},63153:(e,t,n)=>{n.d(t,{Qh:()=>C,UG:()=>A,bT:()=>b,o0:()=>I});var a=n(32735),r=n(23481),l=n(20354),i=n(28400),c=n(83914),o=n(36532),s=n(4594),u=n(39151),m=n(70227),d=n(35223),f=n(31908),v=n(14070),p=n(97291),g=n(82431);function E(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,l,i,c=[],o=!0,s=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(a=l.call(n)).done)&&(c.push(a.value),c.length!==t);o=!0);}catch(e){s=!0,r=e}finally{try{if(!o&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}(e,t)||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.")}()}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var y=r.T.encloseNamespace("liteShare.sharedByMe");function b(e){return e.items?Object.values(e.items):[]}function C(e){return f.M.isInteractive(e)?{application:p.O.INTERACTIVES,action:v.e.Interactives.VIEW_INTERACTIVE,args:[e.id,i.m.slugify(e.name)]}:f.M.isClip(e)?{application:p.O.CLIPS,action:v.e.Clips.PLAY_CLIP,args:[e.id,i.m.slugify(e.name)]}:f.M.isVideo(e)?{application:p.O.VIDEOS,action:v.e.Videos.PLAY_VIDEO,args:[e.id,i.m.slugify(e.name)]}:e.typeId===s.E.Playlist?{application:p.O.PLAYLISTS,action:v.e.Playlists.PLAYLIST,args:[e.id,i.m.slugify(e.name)]}:e.typeId===s.E.Series?g.j.getSeriesAppLink(e):void 0}function N(e,t){return{label:y("editShareSettings"),appLink:{application:p.O.DEFAULT,action:v.e.Default.SHARE,args:[e.id],params:{entityType:t}}}}function k(e){return a.createElement(o.u,{title:e.label,spanHack:!0},a.createElement("a",{href:e.url,target:"_blank"},a.createElement(c.x,{svgName:d.vn.Chart})))}function A(e){var t=l.a.useBasicFetch(u.L.config()),n=e.xs||e.sm;return a.useCallback((function(e){return function(e,t,n){var r,l="viewUsage";if(f.M.isVideo(e)&&(r="video"),f.M.isInteractive(e)&&(r="interactive",l="viewResults"),f.M.isClip(e)&&(r="clip"),e.typeId===s.E.Series&&(r="series"),e.typeId===s.E.Playlist&&(r="playlist"),f.M.isVideoType(e)&&!f.M.getCanBeConsumed(e).canConsume)return[];var i=[N(e,r)],c=m.c.getObjectUrl(t,e);return c&&i.push({label:n?y(l):function(){return a.createElement(k,{label:y(l),url:c})},className:"btn btn-link",button:!n,href:c,openInNewTab:!0}),i}(e,t.data,n)}),[n])}function I(e,t,n,r,l){var i=E(a.useState(t),2),c=i[0],o=i[1],s=E(a.useState(r),2),u=s[0],m=s[1];return a.useEffect((function(){t&&o(!0)}),[t]),a.useEffect((function(){r&&m(!0)}),[r]),!(e&&!e.length)&&(!e||!c||n.length&&!u||!l.data)}},82202:(e,t,n)=>{n.d(t,{N:()=>c});var a=n(32735);const r={imageColumn:"uIOaA",nameColumn:"Nta2B",sharedToColumn:"XTJBC",dateSharedColumn:"HdARK",actionsColumn:"DXyZw",heading:"XZ6o7",image:"MolfU",name:"MM43m",avatar:"EboYM",date:"by_XM",actions:"_S2M_"};function l(){return a.createElement("div",{className:"d-flex striped-row rounded"},a.createElement("div",{className:"d-flex align-items-center justify-content-center p-2 ".concat(r.imageColumn)},a.createElement("div",{className:"partial-loading-background rounded w-100 ".concat(r.image)})),a.createElement("div",{className:"d-flex align-items-center p-2 ".concat(r.nameColumn)},a.createElement("div",{className:"partial-loading-background w-75 ".concat(r.name)})),a.createElement("div",{className:"d-flex align-items-center p-2 ".concat(r.sharedToColumn)},a.createElement("div",{className:"partial-loading-background ".concat(r.avatar)})),a.createElement("div",{className:"d-none d-md-flex align-items-center p-2 ".concat(r.dateSharedColumn)},a.createElement("div",{className:"partial-loading-background ".concat(r.date)})),a.createElement("div",{className:"d-flex align-items-center justify-content-end p-2 ".concat(r.actionsColumn)},a.createElement("div",{className:"partial-loading-background rounded me-2 ".concat(r.actions)})))}function i(e){return a.createElement("div",{className:"d-flex mb-1"},a.createElement("div",{className:"".concat(r.imageColumn," p-2")},a.createElement("div",{className:"partial-loading-background ".concat(r.heading)})),a.createElement("div",{className:"".concat(r.nameColumn," p-2")}," "),a.createElement("div",{className:"".concat(r.sharedToColumn," p-2")},e.fullHeader?a.createElement("div",{className:"partial-loading-background ".concat(r.heading)}):a.createElement(a.Fragment,null," ")),a.createElement("div",{className:"".concat(r.dateSharedColumn," p-2 d-none d-md-flex")},e.fullHeader?a.createElement("div",{className:"partial-loading-background ".concat(r.heading)}):a.createElement(a.Fragment,null," ")),a.createElement("div",{className:"".concat(r.actionsColumn," p-2")}," "))}function c(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"mb-3"},a.createElement(i,{fullHeader:!0}),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(l,null),a.createElement(l,null),a.createElement(l,null))),a.createElement("div",{className:"mb-3"},a.createElement(i,null),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(l,null),a.createElement(l,null),a.createElement(l,null),a.createElement(l,null))),a.createElement("div",{className:"mb-3"},a.createElement(i,null),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(l,null),a.createElement(l,null),a.createElement(l,null),a.createElement(l,null),a.createElement(l,null),a.createElement(l,null),a.createElement(l,null),a.createElement(l,null),a.createElement(l,null),a.createElement(l,null))))}}}]);
2
- //# sourceMappingURL=4654-6fedfb863f-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/4654-6fedfb863f-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/shared-to-avatar-list/shared-to-avatar-list.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-to-avatar-list/SharedToAvatarList.tsx","file:///app/packages/libs/shared/src/components/avatar-list/AvatarList.tsx","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/utils/AnalyticsRouteHelper.ts","file:///app/packages/libs/shared/src/utils/ShareHelper.ts","file:///app/packages/projects/lite/src/apps/share/views/shared-by-me/SharedByMeViewUtils.tsx","file:///app/packages/projects/lite/src/apps/share/views/shared-by-me/partial-loading/partial-shared-by-me-table.scss","file:///app/packages/projects/lite/src/apps/share/views/shared-by-me/partial-loading/PartialSharedByMeTable.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"ByxQa\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { AvatarItemProps, AvatarList } from 'libs/shared/components/avatar-list/AvatarList';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './shared-to-avatar-list.scss';\n\nconst namespace = 'reportsShare.sharedToAvatarList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getHiddenRecipientText(hiddenRecipients: BaseObject[]): string {\n const counts = ArrayHelper.countBy(hiddenRecipients, 'typeId');\n const userCount = counts[MasterType.User];\n const classroomCount = counts[MasterType.Classroom];\n const groupCount = counts[MasterType.ClassroomGroup];\n\n if (userCount && classroomCount && groupCount)\n return getPhrase('classroomsGroupsAndUsers', { userCount, classroomCount, groupCount });\n\n if (userCount && classroomCount)\n return getPhrase('classroomsAndUsers', { userCount, classroomCount });\n\n if (userCount && groupCount)\n return getPhrase('groupsAndUsers', { userCount, groupCount });\n\n if (classroomCount && groupCount)\n return getPhrase('classroomsAndGroups', { classroomCount, groupCount });\n\n if (userCount)\n return getPhrase('users', { userCount });\n\n if (classroomCount)\n return getPhrase('classrooms', { classroomCount });\n\n if (groupCount)\n return getPhrase('groups', { groupCount });\n}\n\nfunction SharedToAvatar(props: AvatarItemProps): JSX.Element {\n const user: User = props.item?.typeId === MasterType.User && props.item as User;\n const classroom: Classroom = props.item?.typeId === MasterType.Classroom && props.item as Classroom;\n const classroomGroup: ClassroomGroup = props.item?.typeId === MasterType.ClassroomGroup\n && props.item as ClassroomGroup;\n\n const svgContainerClassName = 'd-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100';\n\n return (\n <div className={`${styles.avatarContainer} position-relative d-inline-block`}>\n <div\n className={`${styles.avatarWrapper} position-absolute w-100 h-100 bg-white rounded-circle`}\n style={{ left: `${props.index * -15}%`, zIndex: props.maxAvatars - props.index }}\n >\n {!!user &&\n <Tooltip title={`${user.name} ${user.surname}`} spanHack spanHackClassName='h-100 w-100'>\n <Avatar\n imageUrl={user.avatar?.url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(user.name, user.surname)}\n />\n </Tooltip>\n }\n {!!classroom &&\n <Tooltip title={classroom.name} spanHack spanHackClassName='h-100 w-100'>\n <div className={svgContainerClassName}>\n <IconCircle\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Large}\n variant='teal'\n />\n </div>\n </Tooltip>\n }\n {!!classroomGroup &&\n <Tooltip title={classroomGroup.name} spanHack spanHackClassName='h-100 w-100'>\n <div className={svgContainerClassName}>\n <IconCircle\n svgName={cvSvgLibrary.Group}\n variant={mapColourToBsVariant(classroomGroup.metadata?.colour)}\n />\n </div>\n </Tooltip>\n }\n </div>\n </div>\n );\n}\n\nexport function AnonymousSharedToAvatar(): JSX.Element {\n return (\n <div className={styles.avatarContainer}>\n <Tooltip\n title={getPhrase('anonymous')}\n spanHack\n spanHackClassName='bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100'\n >\n <SvgContainer svgName={cvSvgLibrary.Anonymous} />\n </Tooltip>\n </div>\n );\n}\n\nexport function SharedLinkAvatar(): JSX.Element {\n return (\n <div className={styles.avatarContainer}>\n <Tooltip\n title={getPhrase('sharedLink')}\n spanHack\n spanHackClassName='bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100'\n >\n <SvgContainer svgName={cvSvgLibrary.Link} />\n </Tooltip>\n </div>\n );\n}\n\ninterface SharedToAvatarListProps {\n recipients: BaseObject[];\n imageCdnUrl: string;\n maxAvatars?: number;\n}\n\nSharedToAvatarList.defaultProps = {\n maxAvatars: 5\n};\n\nexport function SharedToAvatarList(props: SharedToAvatarListProps): JSX.Element {\n return (\n <div>\n <AvatarList\n {...props}\n items={props.recipients}\n avatarItem={SharedToAvatar}\n avatarContainerClassname={styles.avatarContainer}\n getHiddenTooltip={getHiddenRecipientText}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.avatarList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface AvatarItemProps {\n imageCdnUrl: string;\n index: number;\n item?: BaseObject;\n hiddenItems?: BaseObject[];\n maxAvatars?: number;\n}\n\ninterface AvatarListProps {\n items: BaseObject[];\n imageCdnUrl: string;\n maxAvatars?: number;\n avatarItem?: (props: AvatarItemProps) => JSX.Element;\n getHiddenTooltip?: (hiddenItems: BaseObject[]) => string;\n numberClassname?: string;\n avatarContainerClassname?: string;\n roleToDisplay?: 'student'|'staff';\n}\n\nAvatarList.defaultProps = {\n maxAvatars: 5\n};\n\nexport function AvatarList(props: AvatarListProps): JSX.Element {\n const itemsToDisplay = props.items.length > props.maxAvatars\n ? props.items.slice(0, props.maxAvatars - 1)\n : props.items;\n\n const hiddenItems = props.items.length > itemsToDisplay.length\n ? props.items.slice(props.maxAvatars - 1)\n : [];\n\n const AvatarItem = props.avatarItem;\n const hiddenItemsCounts = hiddenItems.length;\n\n function getTooltip() {\n if (props.getHiddenTooltip)\n return props.getHiddenTooltip(hiddenItems);\n\n if (props.roleToDisplay)\n return getPhrase(props.roleToDisplay === 'staff' ? 'staff' : 'student', { count: hiddenItemsCounts, smartCount: hiddenItemsCounts });\n\n return getPhrase('users', { count: hiddenItemsCounts, smartCount: hiddenItemsCounts });\n }\n\n if (itemsToDisplay.length === 0)\n return <></>;\n\n return (\n <div>\n {itemsToDisplay.map((item, idx) => (\n <div className={`${props.avatarContainerClassname || ''} position-relative d-inline-block`} key={item.id}>\n <div\n className='position-absolute w-100 h-100 bg-white rounded-circle'\n style={{ left: `${idx * -15}%`, zIndex: props.maxAvatars - idx }}\n >\n <AvatarItem\n item={item}\n imageCdnUrl={props.imageCdnUrl}\n index={idx}\n maxAvatars={props.maxAvatars}\n />\n </div>\n </div>\n ))}\n\n {!!hiddenItems.length && (\n <div className={`${props.avatarContainerClassname || ''} position-relative d-inline-block`}>\n <div\n className='position-absolute w-100 h-100 bg-white rounded-circle'\n style={{ left: `${itemsToDisplay.length * -15}%`, zIndex: props.maxAvatars - itemsToDisplay.length }}\n >\n <Tooltip title={getTooltip()} spanHack spanHackClassName='h-100 w-100'>\n <div className={`d-flex justify-content-center align-items-center border border-dark rounded-circle h-100 w-100 ${props.numberClassname || ''}`}>\n {`+${hiddenItems.length}`}\n </div>\n </Tooltip>\n </div>\n </div>\n )}\n </div>\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\nimport { ApplicationState, HashObject } from 'libs/common/react/interfaces';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const [ idBatches, setIdBatches ] = React.useState<string[][]>([]);\n\n React.useEffect(() => {\n if (!itemIds?.length)\n return;\n\n const newBatches = [...idBatches];\n newBatches.push([]);\n\n itemIds.forEach(id => {\n if (newBatches.find(batch => batch.find(_id => _id === id)))\n return;\n\n newBatches[newBatches.length - 1].push(id);\n });\n\n setIdBatches(newBatches.filter(batch => batch.length));\n }, [itemIds ? itemIds.join(',') : null]);\n\n const dispatch = useDispatch();\n\n const state = useSelector((state: ApplicationState) => state);\n\n React.useEffect(() => {\n idBatches.forEach(idBatch => {\n const request = getRequest(idBatch);\n const response = Flight.getResponse<T[]>(state, request.key);\n\n if (response.shouldFetch)\n Flight.fetch(dispatch, request);\n });\n }, [idBatches?.length]);\n\n if (!idBatches?.length)\n return { items: null, isFetching: false };\n \n const items: { [key: string]: T} = {};\n\n /* Used locally to only return our items if we've fetched all of them */\n const responses: HashObject<Flight.Response<T[]>> = {};\n \n idBatches.forEach((idBatch, i) => {\n const request = getRequest(idBatch);\n const response = Flight.getResponse<T[]>(state, request.key);\n responses[i] = response;\n\n if (response.data)\n response.data.forEach(v => items[v.id] = v);\n });\n\n return {\n items: Object.keys(responses).some(k => !!responses[k].data) ? items : null,\n isFetching: !!Object.keys(responses).some(k => responses[k].isFetching)\n };\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Config } from 'libs/shared/interfaces';\n\nexport const AnalyticsRouteHelper = {\n getObjectUrl(config: Config, object: BaseObject): string {\n const baseUrl = config.analyticsWebUrl;\n\n if (!baseUrl)\n return;\n\n let relativeUrl = '';\n\n switch (object.typeId) {\n case MasterType.Video:\n relativeUrl = `/videos/${object.id}/overview`;\n break;\n\n case MasterType.Clip:\n relativeUrl = `/clips/${object.id}/overview`;\n break;\n\n case MasterType.Interactive:\n relativeUrl = `/interactives/${object.id}/overview`;\n break;\n }\n\n if (!relativeUrl)\n return;\n\n return UrlHelper.safeUrlConcat(baseUrl, relativeUrl);\n }\n};","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ShareType } from 'libs/shared/enums/ShareType';\nimport { DirectShare, UnionShareObject } from 'libs/shared/interfaces';\n\nexport const ShareHelper = {\n getDirectShares(sentShares: UnionShareObject[]): DirectShare[] {\n return sentShares?.filter(s => s.type === ShareType.DirectShare) as DirectShare[] ?? [];\n },\n \n getRecipientIds(sentShares: UnionShareObject[]): string[] {\n return ArrayHelper.uniq(ArrayHelper.flatten(ShareHelper.getDirectShares(sentShares).map(d => d.recipients ?? [])), 'id').map(r => r.id);\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UseBatchFetchResult } from 'libs/shared/hooks/UseBatchFetch';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject, Config, Series, UnionShareObject } from 'libs/shared/interfaces';\nimport { AnalyticsRouteHelper } from 'libs/shared/utils/AnalyticsRouteHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'liteShare.sharedByMe';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function getBatchFetchResultAsArray(result: UseBatchFetchResult<BaseObject>): BaseObject[] {\n return result.items ? Object.values(result.items) : [];\n}\n\nexport function getObjectAppLink(object: BaseObject): Core.AppLink {\n if (VideoHelper.isInteractive(object)) {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (VideoHelper.isClip(object)) {\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (VideoHelper.isVideo(object)) {\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (object.typeId === MasterType.Playlist) {\n return {\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (object.typeId === MasterType.Series) {\n return SeriesAppLinkHelper.getSeriesAppLink(object as Series);\n }\n}\n\nfunction getShareActionOptions(sharedObject: BaseObject, entityType: SharableEntityType): ActionOptions {\n return {\n label: getPhrase('editShareSettings'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.SHARE,\n args: [sharedObject.id],\n params: { entityType }\n }\n };\n}\n\ninterface SeeUsageActionProps {\n label: string;\n url?: string;\n}\n\nfunction SeeUsageAction(props: SeeUsageActionProps): JSX.Element {\n return (\n <Tooltip title={props.label} spanHack>\n <a\n href={props.url}\n target='_blank'\n >\n <SvgContainer svgName={cvSvgLibrary.Chart} />\n </a>\n </Tooltip>\n );\n}\n\nfunction getSharedObjectActions(sharedObject: BaseObject, config: Config, isMobile: boolean): ActionOptions[] {\n let entityType: SharableEntityType;\n let seeUsagePhrase = 'viewUsage';\n\n if (VideoHelper.isVideo(sharedObject))\n entityType = 'video';\n\n if (VideoHelper.isInteractive(sharedObject)) {\n entityType = 'interactive';\n seeUsagePhrase = 'viewResults';\n }\n\n if (VideoHelper.isClip(sharedObject))\n entityType = 'clip';\n\n if (sharedObject.typeId === MasterType.Series)\n entityType = 'series';\n\n if (sharedObject.typeId === MasterType.Playlist)\n entityType = 'playlist';\n\n if (VideoHelper.isVideoType(sharedObject)) {\n const { canConsume } = VideoHelper.getCanBeConsumed(sharedObject);\n\n if (!canConsume)\n return [];\n }\n \n const sharedObjectActions = [getShareActionOptions(sharedObject, entityType)];\n\n const objectUrl = AnalyticsRouteHelper.getObjectUrl(config, sharedObject);\n if (objectUrl)\n sharedObjectActions.push({\n label: !isMobile\n ? () => <SeeUsageAction label={getPhrase(seeUsagePhrase)} url={objectUrl} />\n : getPhrase(seeUsagePhrase),\n className: 'btn btn-link',\n button: !isMobile,\n href: objectUrl,\n openInNewTab: true\n });\n\n return sharedObjectActions;\n}\n\nexport function useGetSharedObjectActions(breakpoints: Breakpoints): ((object: BaseObject) => ActionOptions[]) | null {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const isMobile = breakpoints.xs || breakpoints.sm;\n\n return React.useCallback((object: BaseObject) => getSharedObjectActions(object, config.data, isMobile), [isMobile]);\n}\n\n/**\n * As we are displaying data in an infinite list, we only want to show partial loading\n * on the initial fetch.\n * Whenever a new page is fetched, `sharedObjects.data` and `recipients.data` will be `undefined`,\n * as their key will change. So instead of using those values to determine whether or not to\n * show partial loading, we save the first time that they load in state and then use that.\n */\nexport function usePartialLoading(\n sentShare: UnionShareObject[],\n hasFetchedSharedObjects: boolean,\n recipientIds: string[],\n hasFetchedRecipients: boolean,\n config: Flight.Response<Config>\n): boolean {\n const [ initialSharedObjectsLoaded, setInitialSharedObjectsLoaded ] = React.useState(hasFetchedSharedObjects);\n const [ initialRecipientsLoaded, setInitialRecipientsLoaded ] = React.useState(hasFetchedRecipients);\n\n React.useEffect(() => {\n if (hasFetchedSharedObjects)\n setInitialSharedObjectsLoaded(true);\n }, [hasFetchedSharedObjects]);\n\n React.useEffect(() => {\n if (hasFetchedRecipients)\n setInitialRecipientsLoaded(true);\n }, [hasFetchedRecipients]);\n\n if (sentShare && !sentShare.length)\n return false;\n\n return !sentShare\n || !initialSharedObjectsLoaded\n || (recipientIds.length && !initialRecipientsLoaded)\n || !config.data;\n}","// extracted by mini-css-extract-plugin\nexport default {\"imageColumn\":\"uIOaA\",\"nameColumn\":\"Nta2B\",\"sharedToColumn\":\"XTJBC\",\"dateSharedColumn\":\"HdARK\",\"actionsColumn\":\"DXyZw\",\"heading\":\"XZ6o7\",\"image\":\"MolfU\",\"name\":\"MM43m\",\"avatar\":\"EboYM\",\"date\":\"by_XM\",\"actions\":\"_S2M_\"};","import React from 'react';\n\nimport styles from './partial-shared-by-me-table.scss';\n\nfunction PartialRow(): JSX.Element {\n return (\n <div className={`d-flex striped-row rounded`}>\n <div className={`d-flex align-items-center justify-content-center p-2 ${styles.imageColumn}`}>\n <div className={`partial-loading-background rounded w-100 ${styles.image}`} />\n </div>\n <div className={`d-flex align-items-center p-2 ${styles.nameColumn}`}>\n <div className={`partial-loading-background w-75 ${styles.name}`} />\n </div>\n <div className={`d-flex align-items-center p-2 ${styles.sharedToColumn}`}>\n <div className={`partial-loading-background ${styles.avatar}`} />\n </div>\n <div className={`d-none d-md-flex align-items-center p-2 ${styles.dateSharedColumn}`}>\n <div className={`partial-loading-background ${styles.date}`} />\n </div>\n <div className={`d-flex align-items-center justify-content-end p-2 ${styles.actionsColumn}`}>\n <div className={`partial-loading-background rounded me-2 ${styles.actions}`} />\n </div>\n </div>\n );\n}\n\ninterface PartialHeaderProps {\n fullHeader?: boolean;\n}\n\nfunction PartialHeader(props: PartialHeaderProps): JSX.Element {\n return (\n <div className='d-flex mb-1'>\n <div className={`${styles.imageColumn} p-2`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.nameColumn} p-2`}>\n &nbsp;\n </div>\n <div className={`${styles.sharedToColumn} p-2`}>\n {props.fullHeader\n ? <div className={`partial-loading-background ${styles.heading}`} />\n : <>&nbsp;</>\n }\n </div>\n <div className={`${styles.dateSharedColumn} p-2 d-none d-md-flex`}>\n {props.fullHeader\n ? <div className={`partial-loading-background ${styles.heading}`} />\n : <>&nbsp;</>\n }\n </div>\n <div className={`${styles.actionsColumn} p-2`}>\n &nbsp;\n </div>\n </div>\n );\n}\n\nexport function PartialSharedByMeTable(): JSX.Element {\n return (\n <>\n <div className='mb-3'>\n <PartialHeader fullHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n\n <div className='mb-3'>\n <PartialHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n\n <div className='mb-3'>\n <PartialHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n </>\n );\n}"],"names":["getPhrase","LanguageService","getHiddenRecipientText","hiddenRecipients","counts","ArrayHelper","userCount","MasterType","classroomCount","groupCount","SharedToAvatar","props","user","item","typeId","classroom","classroomGroup","svgContainerClassName","className","style","left","index","zIndex","maxAvatars","Tooltip","title","name","surname","spanHack","spanHackClassName","Avatar","imageUrl","avatar","url","imageCdnUrl","initials","UserHelper","IconCircle","svgName","svgSize","SvgContainer","S","variant","metadata","colour","AnonymousSharedToAvatar","SharedLinkAvatar","SharedToAvatarList","AvatarList","items","recipients","avatarItem","avatarContainerClassname","getHiddenTooltip","defaultProps","itemsToDisplay","length","slice","hiddenItems","AvatarItem","hiddenItemsCounts","map","idx","key","id","roleToDisplay","count","smartCount","numberClassname","useBatchFetch","itemIds","getRequest","idBatches","setIdBatches","newBatches","push","forEach","find","batch","_id","filter","join","dispatch","state","idBatch","request","shouldFetch","isFetching","responses","i","response","data","v","Object","keys","some","k","AnalyticsRouteHelper","getObjectUrl","config","object","baseUrl","analyticsWebUrl","relativeUrl","ShareHelper","getDirectShares","sentShares","s","type","getRecipientIds","d","r","getBatchFetchResultAsArray","result","values","getObjectAppLink","application","action","args","getShareActionOptions","sharedObject","entityType","label","appLink","params","SeeUsageAction","href","target","useGetSharedObjectActions","breakpoints","isMobile","xs","sm","seeUsagePhrase","canConsume","sharedObjectActions","objectUrl","button","openInNewTab","getSharedObjectActions","usePartialLoading","sentShare","hasFetchedSharedObjects","recipientIds","hasFetchedRecipients","initialSharedObjectsLoaded","setInitialSharedObjectsLoaded","initialRecipientsLoaded","setInitialRecipientsLoaded","PartialRow","PartialHeader","fullHeader","PartialSharedByMeTable"],"sourceRoot":""}