@clickview/lite 0.75.0-rc.2 → 0.75.0-rc.3

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 (160) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{119-lite-a1f592f602.chunk.css → 1243-lite-13eda8f6a0.chunk.css} +2 -4
  3. package/dist/css/{7230-lite-36ff6e6d53.chunk.css → 1867-lite-8baa8af02b.chunk.css} +3 -5
  4. package/dist/css/{5241-lite-baab687563.chunk.css → 4203-lite-9ffab89741.chunk.css} +3 -5
  5. package/dist/css/{8364-lite-99938dea56.chunk.css → 5193-lite-d434056013.chunk.css} +1 -0
  6. package/dist/css/{7339-lite-05c396fed3.chunk.css → 6756-lite-839687d3d7.chunk.css} +1 -0
  7. package/dist/css/{9527-lite-1d2221b6a8.chunk.css → 7103-lite-fef3024f61.chunk.css} +2 -4
  8. package/dist/css/{8856-lite-827b34aed7.chunk.css → 8856-lite-c114ab5c89.chunk.css} +1 -1
  9. package/dist/languages/en.json +1 -1
  10. package/dist/scripts/104-7abe2b09dd-lite.chunk.js +2 -0
  11. package/dist/scripts/104-7abe2b09dd-lite.chunk.js.map +1 -0
  12. package/dist/scripts/1074-2ab8b03e30-lite.chunk.js +2 -0
  13. package/dist/scripts/1074-2ab8b03e30-lite.chunk.js.map +1 -0
  14. package/dist/scripts/1087-861be5211f-lite.chunk.js +2 -0
  15. package/dist/scripts/1087-861be5211f-lite.chunk.js.map +1 -0
  16. package/dist/scripts/1199-6522b1d291-lite.chunk.js +2 -0
  17. package/dist/scripts/1199-6522b1d291-lite.chunk.js.map +1 -0
  18. package/dist/scripts/121-1b744469ee-lite.chunk.js +2 -0
  19. package/dist/scripts/121-1b744469ee-lite.chunk.js.map +1 -0
  20. package/dist/scripts/{1221-502395e693-lite.chunk.js → 1221-894d8474d5-lite.chunk.js} +3 -3
  21. package/dist/scripts/1221-894d8474d5-lite.chunk.js.map +1 -0
  22. package/dist/scripts/1243-ede924125c-lite.chunk.js +2 -0
  23. package/dist/scripts/1243-ede924125c-lite.chunk.js.map +1 -0
  24. package/dist/scripts/147-44ee7e9a78-lite.chunk.js +2 -0
  25. package/dist/scripts/147-44ee7e9a78-lite.chunk.js.map +1 -0
  26. package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js → 1610-bf848cce4d-lite.chunk.js} +2 -2
  27. package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js.map → 1610-bf848cce4d-lite.chunk.js.map} +1 -1
  28. package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js → 1867-3b447a1b85-lite.chunk.js} +2 -2
  29. package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js.map → 1867-3b447a1b85-lite.chunk.js.map} +1 -1
  30. package/dist/scripts/2258-ed7383502f-lite.chunk.js +3 -0
  31. package/dist/scripts/2258-ed7383502f-lite.chunk.js.map +1 -0
  32. package/dist/scripts/3268-2736356687-lite.chunk.js +2 -0
  33. package/dist/scripts/{3268-faca1bf46e-lite.chunk.js.map → 3268-2736356687-lite.chunk.js.map} +1 -1
  34. package/dist/scripts/3836-425334ab13-lite.chunk.js +2 -0
  35. package/dist/scripts/{3836-f2a0c9f713-lite.chunk.js.map → 3836-425334ab13-lite.chunk.js.map} +1 -1
  36. package/dist/scripts/3837-e4c5bb738b-lite.chunk.js +2 -0
  37. package/dist/scripts/3837-e4c5bb738b-lite.chunk.js.map +1 -0
  38. package/dist/scripts/4185-1f65c7adc9-lite.chunk.js +2 -0
  39. package/dist/scripts/4185-1f65c7adc9-lite.chunk.js.map +1 -0
  40. package/dist/scripts/4203-ee50e89841-lite.chunk.js +3 -0
  41. package/dist/scripts/4203-ee50e89841-lite.chunk.js.map +1 -0
  42. package/dist/scripts/4598-bcd3f6f8a7-lite.chunk.js +2 -0
  43. package/dist/scripts/{4598-2b1daca7ae-lite.chunk.js.map → 4598-bcd3f6f8a7-lite.chunk.js.map} +1 -1
  44. package/dist/scripts/4948-f21dad2ca1-lite.chunk.js +2 -0
  45. package/dist/scripts/4948-f21dad2ca1-lite.chunk.js.map +1 -0
  46. package/dist/scripts/{5153-079b4125ae-lite.chunk.js → 5153-acc6c13153-lite.chunk.js} +3 -3
  47. package/dist/scripts/5153-acc6c13153-lite.chunk.js.map +1 -0
  48. package/dist/scripts/6137-bc8b193237-lite.chunk.js +2 -0
  49. package/dist/scripts/6137-bc8b193237-lite.chunk.js.map +1 -0
  50. package/dist/scripts/6756-e90680dfcd-lite.chunk.js +3 -0
  51. package/dist/scripts/6756-e90680dfcd-lite.chunk.js.map +1 -0
  52. package/dist/scripts/6790-c8a9efba50-lite.chunk.js +2 -0
  53. package/dist/scripts/6790-c8a9efba50-lite.chunk.js.map +1 -0
  54. package/dist/scripts/705-10a85bae7a-lite.chunk.js +2 -0
  55. package/dist/scripts/705-10a85bae7a-lite.chunk.js.map +1 -0
  56. package/dist/scripts/7103-14bd3771d2-lite.chunk.js +2 -0
  57. package/dist/scripts/7103-14bd3771d2-lite.chunk.js.map +1 -0
  58. package/dist/scripts/7205-12a6b2ac55-lite.chunk.js +2 -0
  59. package/dist/scripts/7205-12a6b2ac55-lite.chunk.js.map +1 -0
  60. package/dist/scripts/7438-88d11bb89a-lite.chunk.js +2 -0
  61. package/dist/scripts/7438-88d11bb89a-lite.chunk.js.map +1 -0
  62. package/dist/scripts/7480-e0749592fc-lite.chunk.js +2 -0
  63. package/dist/scripts/7480-e0749592fc-lite.chunk.js.map +1 -0
  64. package/dist/scripts/8010-e9163f5bee-lite.chunk.js +2 -0
  65. package/dist/scripts/8010-e9163f5bee-lite.chunk.js.map +1 -0
  66. package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js +3 -0
  67. package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js.map +1 -0
  68. package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js +2 -0
  69. package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js.map +1 -0
  70. package/dist/scripts/8856-02dd2e486c-lite.chunk.js +2 -0
  71. package/dist/scripts/8856-02dd2e486c-lite.chunk.js.map +1 -0
  72. package/dist/scripts/9003-1db925f5ec-lite.chunk.js +2 -0
  73. package/dist/scripts/9003-1db925f5ec-lite.chunk.js.map +1 -0
  74. package/dist/scripts/9042-1a42fcbba2-lite.chunk.js +2 -0
  75. package/dist/scripts/9042-1a42fcbba2-lite.chunk.js.map +1 -0
  76. package/dist/scripts/9103-4eec16d73b-lite.chunk.js +2 -0
  77. package/dist/scripts/9103-4eec16d73b-lite.chunk.js.map +1 -0
  78. package/dist/scripts/9134-19912ca3ee-lite.chunk.js +2 -0
  79. package/dist/scripts/9134-19912ca3ee-lite.chunk.js.map +1 -0
  80. package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js +2 -0
  81. package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js.map +1 -0
  82. package/dist/scripts/9740-9d50d31b72-lite.chunk.js +2 -0
  83. package/dist/scripts/9740-9d50d31b72-lite.chunk.js.map +1 -0
  84. package/dist/scripts/{bundle-95a6fc2722.min.js → bundle-828ca65de8.min.js} +3 -3
  85. package/dist/scripts/{bundle-95a6fc2722.min.js.map → bundle-828ca65de8.min.js.map} +1 -1
  86. package/package.json +1 -1
  87. package/dist/scripts/104-b62a8447f0-lite.chunk.js +0 -2
  88. package/dist/scripts/104-b62a8447f0-lite.chunk.js.map +0 -1
  89. package/dist/scripts/107-989ac2dc47-lite.chunk.js +0 -2
  90. package/dist/scripts/107-989ac2dc47-lite.chunk.js.map +0 -1
  91. package/dist/scripts/119-e3a8bd94dd-lite.chunk.js +0 -2
  92. package/dist/scripts/119-e3a8bd94dd-lite.chunk.js.map +0 -1
  93. package/dist/scripts/1199-a2ac2338d0-lite.chunk.js +0 -2
  94. package/dist/scripts/1199-a2ac2338d0-lite.chunk.js.map +0 -1
  95. package/dist/scripts/121-bf7a153eb8-lite.chunk.js +0 -2
  96. package/dist/scripts/121-bf7a153eb8-lite.chunk.js.map +0 -1
  97. package/dist/scripts/1221-502395e693-lite.chunk.js.map +0 -1
  98. package/dist/scripts/2258-4d0639c9fe-lite.chunk.js +0 -3
  99. package/dist/scripts/2258-4d0639c9fe-lite.chunk.js.map +0 -1
  100. package/dist/scripts/3268-faca1bf46e-lite.chunk.js +0 -2
  101. package/dist/scripts/3836-f2a0c9f713-lite.chunk.js +0 -2
  102. package/dist/scripts/3837-fe321e8deb-lite.chunk.js +0 -2
  103. package/dist/scripts/3837-fe321e8deb-lite.chunk.js.map +0 -1
  104. package/dist/scripts/4025-306e0fbdd5-lite.chunk.js +0 -2
  105. package/dist/scripts/4025-306e0fbdd5-lite.chunk.js.map +0 -1
  106. package/dist/scripts/4164-5d3af57b67-lite.chunk.js +0 -2
  107. package/dist/scripts/4164-5d3af57b67-lite.chunk.js.map +0 -1
  108. package/dist/scripts/4185-e8e40dab72-lite.chunk.js +0 -2
  109. package/dist/scripts/4185-e8e40dab72-lite.chunk.js.map +0 -1
  110. package/dist/scripts/4562-545f04c53f-lite.chunk.js +0 -2
  111. package/dist/scripts/4562-545f04c53f-lite.chunk.js.map +0 -1
  112. package/dist/scripts/4598-2b1daca7ae-lite.chunk.js +0 -2
  113. package/dist/scripts/4948-66ba60c8e3-lite.chunk.js +0 -2
  114. package/dist/scripts/4948-66ba60c8e3-lite.chunk.js.map +0 -1
  115. package/dist/scripts/5153-079b4125ae-lite.chunk.js.map +0 -1
  116. package/dist/scripts/5241-163f5ac64c-lite.chunk.js +0 -3
  117. package/dist/scripts/5241-163f5ac64c-lite.chunk.js.map +0 -1
  118. package/dist/scripts/5349-bc0fcb4083-lite.chunk.js +0 -2
  119. package/dist/scripts/5349-bc0fcb4083-lite.chunk.js.map +0 -1
  120. package/dist/scripts/6135-a878a9cff0-lite.chunk.js +0 -3
  121. package/dist/scripts/6135-a878a9cff0-lite.chunk.js.map +0 -1
  122. package/dist/scripts/6509-23fdb20a4b-lite.chunk.js +0 -2
  123. package/dist/scripts/6509-23fdb20a4b-lite.chunk.js.map +0 -1
  124. package/dist/scripts/6790-5086b72662-lite.chunk.js +0 -2
  125. package/dist/scripts/6790-5086b72662-lite.chunk.js.map +0 -1
  126. package/dist/scripts/7205-2428f775a5-lite.chunk.js +0 -2
  127. package/dist/scripts/7205-2428f775a5-lite.chunk.js.map +0 -1
  128. package/dist/scripts/7339-5793c921bb-lite.chunk.js +0 -3
  129. package/dist/scripts/7339-5793c921bb-lite.chunk.js.map +0 -1
  130. package/dist/scripts/7438-a5f96e58fc-lite.chunk.js +0 -2
  131. package/dist/scripts/7438-a5f96e58fc-lite.chunk.js.map +0 -1
  132. package/dist/scripts/7926-6b040931aa-lite.chunk.js +0 -2
  133. package/dist/scripts/7926-6b040931aa-lite.chunk.js.map +0 -1
  134. package/dist/scripts/8536-f75009dd87-lite.chunk.js +0 -2
  135. package/dist/scripts/8536-f75009dd87-lite.chunk.js.map +0 -1
  136. package/dist/scripts/8856-df102acdff-lite.chunk.js +0 -2
  137. package/dist/scripts/8856-df102acdff-lite.chunk.js.map +0 -1
  138. package/dist/scripts/9134-42dc2390ce-lite.chunk.js +0 -2
  139. package/dist/scripts/9134-42dc2390ce-lite.chunk.js.map +0 -1
  140. package/dist/scripts/9266-c5d6705147-lite.chunk.js +0 -2
  141. package/dist/scripts/9266-c5d6705147-lite.chunk.js.map +0 -1
  142. package/dist/scripts/9284-402a14d41c-lite.chunk.js +0 -2
  143. package/dist/scripts/9284-402a14d41c-lite.chunk.js.map +0 -1
  144. package/dist/scripts/9470-11c8c2ca71-lite.chunk.js +0 -2
  145. package/dist/scripts/9470-11c8c2ca71-lite.chunk.js.map +0 -1
  146. package/dist/scripts/9527-111c8586a7-lite.chunk.js +0 -2
  147. package/dist/scripts/9527-111c8586a7-lite.chunk.js.map +0 -1
  148. package/dist/scripts/9591-230bcf0935-lite.chunk.js +0 -2
  149. package/dist/scripts/9591-230bcf0935-lite.chunk.js.map +0 -1
  150. /package/dist/css/{5349-lite-829df3b4e7.chunk.css → 6137-lite-829df3b4e7.chunk.css} +0 -0
  151. /package/dist/css/{9470-lite-edb2d29928.chunk.css → 8010-lite-edb2d29928.chunk.css} +0 -0
  152. /package/dist/css/{6135-lite-41bdd1c5a3.chunk.css → 8410-lite-41bdd1c5a3.chunk.css} +0 -0
  153. /package/dist/css/{121-lite-1337d9acf0.chunk.css → 9042-lite-1337d9acf0.chunk.css} +0 -0
  154. /package/dist/scripts/{1221-502395e693-lite.chunk.js.LICENSE.txt → 1221-894d8474d5-lite.chunk.js.LICENSE.txt} +0 -0
  155. /package/dist/scripts/{2258-4d0639c9fe-lite.chunk.js.LICENSE.txt → 2258-ed7383502f-lite.chunk.js.LICENSE.txt} +0 -0
  156. /package/dist/scripts/{5153-079b4125ae-lite.chunk.js.LICENSE.txt → 4203-ee50e89841-lite.chunk.js.LICENSE.txt} +0 -0
  157. /package/dist/scripts/{5241-163f5ac64c-lite.chunk.js.LICENSE.txt → 5153-acc6c13153-lite.chunk.js.LICENSE.txt} +0 -0
  158. /package/dist/scripts/{6135-a878a9cff0-lite.chunk.js.LICENSE.txt → 6756-e90680dfcd-lite.chunk.js.LICENSE.txt} +0 -0
  159. /package/dist/scripts/{7339-5793c921bb-lite.chunk.js.LICENSE.txt → 8410-1f1fd5ccf0-lite.chunk.js.LICENSE.txt} +0 -0
  160. /package/dist/scripts/{bundle-95a6fc2722.min.js.LICENSE.txt → bundle-828ca65de8.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1243],{39157:(e,t,r)=>{r.d(t,{HI:()=>m,R6:()=>s,Rt:()=>v,UU:()=>d,Zs:()=>u,nq:()=>f});var n=r(75896),a=r(94892),i=r(28972),o=r(8246),l=r(83140),c=r(80845);function s(e,t,r){var i={markingRequired:[],lowScore:[],highScore:[],completed:[],notCompleted:[]},o=(0,c.Q)(e),l=new Set(o.map((function(e){return e.id})));t.students.forEach((function(t){var o=Object.assign(Object.assign({},t),{summary:v(e,t)});o.summary.awaitingMarking?i.markingRequired.push(o):n.m.last(t.results).attempts.filter((function(e){var t;return!!l.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)})).length===l.size?(i.completed.push(o),o.summary.percentCorrect>=((null==r?void 0:r.HIGH)||a.i.HIGH)&&i.highScore.push(o),o.summary.percentCorrect<((null==r?void 0:r.MODERATE)||a.i.MODERATE)&&i.lowScore.push(o)):i.notCompleted.push(o)}));var s=n.m.sortBy(i.lowScore,(function(e){return e.summary.percentCorrect})),u=n.m.sortBy(i.highScore,(function(e){return-e.summary.percentCorrect}));return Object.assign(Object.assign({},i),{lowScore:s,highScore:u})}function u(e,t){return(0,c.Wn)(e).find((function(e){return e.id.toString()===t.toString()}))}function d(e){return"".concat(e.questionId,":").concat(e.resultId)}function m(e,t,r){var n=(0,c.j_)(t),a=(0,c.f6)(e,n);return(null==a?void 0:a.answers.every((function(e){var t;return(null===(t=r[d(e)])||void 0===t?void 0:t.status)===o.N.Correct})))?o.N.Correct:(null==a?void 0:a.answers.every((function(e){var t;return(null===(t=r[d(e)])||void 0===t?void 0:t.status)===o.N.Incorrect})))?o.N.Incorrect:void 0}function f(e,t){var r=t.students.length,n=0,a=0,o=0,s=0,u=0;return t.students.forEach((function(t){var r=(0,c.j_)(t);if(r){u+=t.results.length;var d=l.A.isInteractionCorrect(e,r);d===i.w.Correct&&n++,d===i.w.UnAnswered&&o++,d===i.w.AwaitingMarking&&s++,d!==i.w.UnAnswered&&a++}})),{percentCorrect:r>0?n/r:0,correct:n,answered:a,unanswered:o,awaitingMarking:s,attempts:u}}function v(e,t){var r=(0,c.j_)(t),n=(0,c.Q)(e),a=n.length,o=0,s=0;n.forEach((function(e){var t=l.A.isInteractionCorrect(e,r);t===i.w.Correct&&o++,t===i.w.AwaitingMarking&&s++}));var u=a>0?o/a:0,d=new Set(n.map((function(e){return e.id}))),m=r.attempts.filter((function(e){var t;return!!d.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)})).length;return{answered:m,attempts:t.results.length,unanswered:a-m,percentCorrect:u,correct:o,awaitingMarking:s}}},6748:(e,t,r)=>{r.d(t,{i:()=>I});var n=r(32735),a=r(42648),i=r(35509),o=r(91967),l=r(15611),c=r(17808),s=r(1287),u=r(83914),d=r(90281),m={opacity:"0.8",cursor:"grabbing"},f=r(35223);function v(e){return function(e){if(Array.isArray(e))return p(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){if(e){if("string"==typeof e)return p(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)?p(e,t):void 0}}function p(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 h(e){var t,r,n,a;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(r=e.current)||void 0===r?void 0:r.scrollLeft)+1<(null===(n=e.current)||void 0===n?void 0:n.scrollWidth)-(null===(a=e.current)||void 0===a?void 0:a.clientWidth)}}const b={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function y(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 w=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r};function S(e){var t,r;return e.column.canSort?n.createElement("span",{className:"".concat(b.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(r=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==r?r:"")},n.createElement(u.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?f.vn.ArrowRight:f.vn.ArrowLeft,size:u.S.Small})):n.createElement(n.Fragment,null)}function E(e){var t,r,a,u,d,f,g,p,h={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(h.initialState={selectedRowIds:(g=e.initialSelectedRowIds,p={},g.forEach((function(e){return p[e]=!0})),p)}),e.getRowId&&(h.getRowId=e.getRowId);var b,w=i.useTable.apply(void 0,[h].concat((b=function(e){var t=[i.useSortBy,i.useRowSelect,"flex"===e.layout?i.useFlexLayout:i.useBlockLayout];return e.allowFiltering&&(t=[].concat(v(t),[i.useFilters])),e.allowGlobalFiltering&&(t=[].concat(v(t),[i.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return y(e)}(b)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(b)||function(e,t){if(e){if("string"==typeof e)return y(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)?y(e,t):void 0}}(b)||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.")}()))),E=w.getTableProps,I=w.getTableBodyProps,C=w.headerGroups,R=w.rows,k=w.prepareRow,A=w.toggleAllRowsSelected,N=w.setGlobalFilter,O=w.setHiddenColumns,j=w.state.sortBy;function M(){return!R.length&&e.emptyState?e.emptyState:R.map((function(t){k(t);var r=function(t){var r,n,a,i,l,c=o.q.isFunction(null===(r=e.theme)||void 0===r?void 0:r.row)?e.theme.row(t):null!==(a=null===(n=e.theme)||void 0===n?void 0:n.row)&&void 0!==a?a:"";return t.isSelected&&(null===(i=e.theme)||void 0===i?void 0:i.selectedRow)&&(c+=" ".concat(null===(l=e.theme)||void 0===l?void 0:l.selectedRow)),e.onSelectRow&&(c+=" cursor-pointer"),e.enableSortableRows&&(c+=" cursor-grab"),c}(t),a=!!e.getRowAppLink&&e.getRowAppLink(t);function i(){e.onSelectRow&&(e.allowSelectMultipleRows||A(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function c(e,o){var c=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,o);return a?n.createElement("div",{role:"row",key:t.id},n.createElement(l.F,Object.assign({},e,c,{className:r,appLink:a}),U(t))):n.createElement("div",Object.assign({},e,c,{key:t.id,role:"row",className:r,onClick:i}),U(t))}var u=t.getRowProps();return e.enableSortableRows?n.createElement(s.W,{id:t.original.id,key:t.id,childProps:u,childComponent:n.forwardRef((function(e,t){return c(e,t)}))}):c(u)}))}function U(t){return t.cells.map((function(r){var a=function(t,r){var n,a,i="";return"function"==typeof(null===(n=e.theme)||void 0===n?void 0:n.cell)&&(i=e.theme.cell(t,r)),"string"==typeof(null===(a=e.theme)||void 0===a?void 0:a.cell)&&(i=e.theme.cell),e.onSelectCell&&(i+=" cursor-pointer"),i}(t,r);return n.createElement("div",Object.assign({key:r.column.id},r.getCellProps(),{className:a,onClick:function(){e.onSelectCell&&e.onSelectCell(r)}}),r.render("Cell"))}))}return n.useEffect((function(){e.onSort&&e.onSort(j)}),[j]),n.useEffect((function(){e.globalFilter&&N(e.globalFilter)}),[e.globalFilter]),n.useEffect((function(){e.hiddenColumns&&O(e.hiddenColumns)}),[e.hiddenColumns&&e.hiddenColumns.length]),n.createElement("div",Object.assign({},E(),{className:null!==(r=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==r?r:""}),n.createElement("div",{className:null!==(u=null===(a=e.theme)||void 0===a?void 0:a.header)&&void 0!==u?u:""},C.map((function(t){var r,a;return n.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(a=null===(r=e.theme)||void 0===r?void 0:r.headerRow)&&void 0!==a?a:""}),t.headers.map((function(t){var r,a;return n.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(a=null===(r=e.theme)||void 0===r?void 0:r.headerCell)&&void 0!==a?a:""}),t.render("Header",{renderSortIndicator:function(){return n.createElement(S,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&n.createElement(S,{column:t,theme:e.theme}))})))}))),n.createElement("div",Object.assign({},I(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?n.createElement(c.Q,{ids:R.map((function(e){return e.original.id})),getDragOverlay:function(t){var r,a,i=R.findIndex((function(e){return e.original.id===t})),o=R[i];return n.createElement("div",Object.assign({},e,{className:(r=e.theme,a="g-0 ",r&&(a+=r.row),a),style:m}),U(o))},onSortEnd:e.onSortingRowsEnd},M()):M()))}function I(e){var t=e.enableSlider,r=e.scrollIncrement,i=e.scrollable,l=w(e,["enableSlider","scrollIncrement","scrollable"]),c=function(){var e,t,r=n.useRef(null),a=(e=n.useState(h(r)),t=2,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,l=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||g(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.")}()),i=a[0],l=a[1],c=o.q.throttle((function(){l(h(r))}),200),s=n.useCallback((function(e){var t;r.current&&(null===(t=r.current)||void 0===t||t.removeEventListener("scroll",c)),e&&(l(h(r)),e.addEventListener("scroll",c)),r.current=e}),[]);return n.useEffect((function(){(null==r?void 0:r.current)&&l(h(r))}),[r]),{ref:s,scrollState:i,scroll:function(e){var t;null===(t=r.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),s=c.ref,u=c.scrollState,m=c.scroll;if(i)return n.createElement(a.$B,{renderTrackHorizontal:function(){return n.createElement("div",{className:b.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},n.createElement(E,Object.assign({},l)));if(!t)return n.createElement(E,Object.assign({},l));function f(e){m(r*("right"===e?1:-1))}return n.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},n.createElement("div",{className:"px-4"},n.createElement("div",{className:"position-relative"},n.createElement(d.W,{direction:d.f.Left,onClick:function(){return f("left")},hide:!u.canScrollLeft}),n.createElement("div",{className:"".concat(b.scrollContainer," ").concat(e.scrollContainerClassName),ref:s},n.createElement(E,Object.assign({},l))),n.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!u.canScrollRight}))))}I.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},28972:(e,t,r)=>{var n;r.d(t,{w:()=>n}),function(e){e[e.Correct=0]="Correct",e[e.Incorrect=1]="Incorrect",e[e.AwaitingMarking=2]="AwaitingMarking",e[e.Answered=3]="Answered",e[e.UnAnswered=4]="UnAnswered",e[e.NotApplicable=5]="NotApplicable"}(n||(n={}))},8246:(e,t,r)=>{var n;r.d(t,{N:()=>n}),function(e){e[e.Incorrect=0]="Incorrect",e[e.Correct=1]="Correct",e[e.PendingReview=2]="PendingReview"}(n||(n={}))},54405:(e,t,r)=>{r.d(t,{X:()=>n});var n={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},83140:(e,t,r)=>{r.d(t,{A:()=>g});var n=r(28972),a=r(8246),i=r(38129);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function l(e,t,r){return(t=function(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(){return n.w.NotApplicable}function s(e,t){var r=e.actionableItems.filter((function(e){return e.isCorrect}));return r.every((function(e){return!t(e.id)}))?n.w.UnAnswered:r.every((function(e){var r;return e.name.trim().toLowerCase()===(null===(r=t(e.id))||void 0===r?void 0:r.trim().toLowerCase())}))?n.w.Correct:n.w.Incorrect}function u(e,t){return e.actionableItems.every((function(e){return!t(e.id)}))?n.w.UnAnswered:e.actionableItems.filter((function(e){return e.isCorrect})).every((function(e){var r,n=t(e.id);return(null==n?void 0:n.toString())===(null===(r=e.id)||void 0===r?void 0:r.toString())||n===e.name}))?n.w.Correct:n.w.Incorrect}function d(e,t){return function(r){var n=null==t?void 0:t.attempts.find((function(t){return t.id===e.id}));return null==n?void 0:n.answers.find((function(e){return e.id===r}))}}function m(e,t){var r=d(e,t);return u(e,(function(e){var t=r(e);return null==t?void 0:t.text}))}function f(e,t){return function(e,t){var r;return e.actionableItems.forEach((function(e){var i=t(e.id);r=i?i.status!==a.N.Correct?i.status!==a.N.Incorrect?n.w.AwaitingMarking:n.w.Incorrect:n.w.Correct:n.w.UnAnswered})),r}(e,d(e,t))}var v=l(l(l(l(l(l(l({},i.Z9.Annotation,c),i.Z9.Image,c),i.Z9.MissingWord,(function(e,t){var r=d(e,t);return s(e,(function(e){var t=r(e);return null==t?void 0:t.text}))})),i.Z9.MultipleChoice,m),i.Z9.ShortAnswer,f),i.Z9.TrueOrFalse,m),i.Z9.Illustration,f),g={notApplicable:c,awaitingMarking:function(){return n.w.AwaitingMarking},isMissingWordCorrect:s,isMultipleChoiceCorrect:u,isInteractionCorrect:function(e,t){return(0,v[e.typeId])(e,t)}}},78057:(e,t,r)=>{r.d(t,{R:()=>C});var n=r(32735),a=r(75896),i=r(23481),o=r(97958),l=i.T.encloseNamespace("shared.studentResultsTable");function c(e){return"not_completed"===e.filter?n.createElement(o.u,{className:"bg-white rounded-bottom py-5"},n.createElement(o.u.Image,{src:e.notCompletedImageUrl,size:"small"}),n.createElement(o.u.Info,null,l("notCompletedDescription"))):"marking_required"===e.filter?n.createElement(o.u,{className:"bg-white rounded-bottom py-5"},n.createElement(o.u.Image,{src:e.markingRequiredImageUrl,size:"small"}),n.createElement(o.u.Info,null,l("markingRequiredDescription"))):"helping_hand"===e.filter?n.createElement(o.u,{className:"bg-white rounded-bottom py-5"},n.createElement(o.u.Image,{src:e.helpingHandImageUrl,size:"small"}),n.createElement(o.u.Info,null,l("helpingHandDescription"))):n.createElement(o.u,{className:"bg-white rounded-bottom py-5"},n.createElement(o.u.Image,{src:e.emptyStateImageUrl,size:"small"}),n.createElement(o.u.Heading,null,l("emptyStateHeading")),n.createElement(o.u.Info,null,l("emptyStateDescription")))}var s=r(83345),u="shared.studentResultsTable";function d(e){function t(t){var r=e.filter===t?null:t;e.setFilter(r)}function r(t){return"btn btn-outline-dark ".concat(function(t){return e.filter===t}(t)?"bg-dark text-white":"")}return n.createElement("div",{className:"d-flex align-items-center mb-3"},n.createElement("p",{className:"h6 mb-0"},n.createElement(s.x,{namespace:u,phrase:"filters"})),n.createElement("div",{className:"d-flex border-start ps-3 ms-3 gap-2"},n.createElement("button",{className:r("not_completed"),onClick:function(){return t("not_completed")}},n.createElement(s.x,{namespace:u,phrase:"notCompletedFilter"})),n.createElement("button",{className:r("marking_required"),onClick:function(){return t("marking_required")}},n.createElement(s.x,{namespace:u,phrase:"markingRequiredFilter"})),n.createElement("button",{className:r("helping_hand"),onClick:function(){return t("helping_hand")}},n.createElement(s.x,{namespace:u,phrase:"helpingHandFilter"}))))}var m=r(97364),f=r(6748),v=r(84806),g=r(19912);function p(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,l=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return h(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)?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 r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var b={table:"".concat(g.Z.fixedTable," bg-white rounded-start border border-end-0"),header:"".concat(g.Z.header," border-bottom"),headerRow:"h-100",headerCell:"d-flex align-items-center justify-content-start",row:g.Z.row},y={header:"".concat(g.Z.header," fw-bold"),headerRow:"h-100",headerCell:"".concat(g.Z.interactionHeaderCellOuter," bg-white border-bottom"),row:"".concat(g.Z.row," ").concat(g.Z.resultsRow),cell:g.Z.resultsCellOuter};function w(e){var t,r=p(n.useState((0,m.P)(e.sortBy,"score")),2),i=r[0],o=r[1],l=p(n.useState(e.filterBy),2),s=l[0],u=l[1],h=n.useRef(null),w=(0,v.R7)(e.results,e.anonymiseUsers,null===(t=e.config)||void 0===t?void 0:t.imageCdnUrl),S=(0,v.lE)(e.interactive,e.interactiveMetadata,e.results,(function(e){(0,v.bB)(h.current,e)}),e.refreshTable),E=(0,v.Fx)(e.interactive,e.results,e.refreshTable,e.anonymiseUsers,a.m.first(i),s);function I(e){(0,v.l8)(h.current,e)}return n.createElement("div",null,!!e.results.students.length&&n.createElement(d,{filter:s,setFilter:u}),!E.length&&n.createElement(c,{emptyStateImageUrl:e.emptyStateImageUrl,helpingHandImageUrl:e.helpingHandImageUrl,markingRequiredImageUrl:e.markingRequiredImageUrl,notCompletedImageUrl:e.notCompletedImageUrl,filter:s}),!!E.length&&n.createElement("div",{ref:h,className:"d-flex".concat(E.length?" ".concat(g.Z.hasResults):"")},n.createElement(f.i,{columns:w,data:E,theme:b,onSelectRow:function(t){var r=t.original;e.viewStudentResults(r.user,e.interactiveMetadata.id)},onRowMouseOver:function(e){return I(e.index)},onRowMouseLeave:function(){return I()},enableSort:!0,manualSort:!0,onSort:o,initialSortBy:i}),n.createElement(f.i,{columns:S,data:E,theme:y,enableSlider:!0,scrollIncrement:8*v.Ju,onSelectCell:function(t){e.viewStudentResults(t.row.original.user,e.interactiveMetadata.id,t.column.id)},scrollContainerClassName:"rounded-end border border-start-0 border"})))}var S=r(99742);const E={partialInsights:"qSeTe"};function I(){return n.createElement("div",null,n.createElement("div",{className:"d-flex align-items-center mb-3"},n.createElement("p",{className:"h6 px-4 mb-0 me-4 partial-loading-background"}," "),n.createElement("div",{className:"row g-2 w-50"},n.createElement("div",{className:"col-3"},n.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),n.createElement("div",{className:"col-3"},n.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),n.createElement("div",{className:"col-3"},n.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")))),n.createElement("div",{className:"row g-3 mb-5"},n.createElement("div",{className:"col-12"},n.createElement("div",{className:"".concat(E.partialInsights," rounded partial-loading-background")}))))}function C(e){return n.createElement(n.Fragment,null,!e.hasDataLoaded&&n.createElement(I,null),e.hasDataLoaded&&n.createElement(w,{interactive:e.interactive,interactiveMetadata:e.interactiveMetadata,results:e.results,refreshTable:e.isFetching,viewStudentResults:e.viewStudentResults,emptyStateImageUrl:S.W.Insights.NO_RESPONSES,sortBy:e.sortBy,filterBy:e.filterBy,anonymiseUsers:e.anonymiseUsers,notCompletedImageUrl:S.W.Insights.JIGSAW,markingRequiredImageUrl:S.W.Insights.CLIPBOARD,helpingHandImageUrl:S.W.Insights.SPEECH_BUBBLE_HEART,config:e.config}))}},9566:(e,t,r)=>{r.d(t,{G6:()=>m,GJ:()=>f,VE:()=>g});var n=r(23481),a=r(110),i=r(33518),o=r(2510),l=r(4594),c=r(35223),s=r(14070),u=r(97291),d=n.T.encloseNamespace("myShares.demoInsights"),m={type:o.y.Link,privacy:i.e.JustMySchool,objectId:"0",objectTypeId:l.E.Interactive,viewCount:28,accessCount:15,dateCreated:(new Date).toISOString(),expireDate:null,link:{shortenedEmbedUrl:"",shortenedUrl:""},shareId:"0",ownerCustomerId:0,ownerId:0,recipients:[],options:{preventScrubbing:!1,immediateFeedback:!1}},f={share:m,sharedObject:null,shareRecipients:null,dateShared:a.O.subtract(new Date,7,"days").toISOString()},v={application:u.O.MY_SHARES,action:s.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},g={svgName:c.vn.Analytics,label:d("demoInsights"),appLink:v,group:"insights",className:"btn btn-outline-dark"}},82433:(e,t,r)=>{r.r(t),r.d(t,{InteractiveInsightsStudentsDemoView:()=>E});var n=r(32735),a=r(81886),i=r(23481),o=r(2948),l=r(20354),c=r(26025),s=r(38143),u=r(39151),d=r(54405),m=r(93322),f=r(79612),v=r(14070),g=r(97291),p=r(9540),h=r(78057),b=r(9566),y=r(10447);function w(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=i.T.encloseNamespace("insights.interactiveInsightsStudents");function E(e){var t,r,i,E,I,C=(E=(0,o.D)(s.g.ANONYMISE_USERS),I=1,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,l=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(E,I)||function(e,t){if(e){if("string"==typeof e)return w(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)?w(e,t):void 0}}(E,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.")}())[0];(0,m.F)();var R=l.a.useBasicFetch(u.L.config()),k=l.a.useBasicFetch(d.X.interactiveMetadata()),A=l.a.useBasicFetch(d.X.interactive()),N=c.B.getAudienceAppLinkParams(),O=c.B.getDateRangeAppLinkParams(),j=l.a.useBasicFetch(d.X.interactiveResults()),M=A.data&&k.data&&!!j.data;(0,f.M)({title:k.data?S("pageTitle",{video:null===(t=k.data)||void 0===t?void 0:t.name}):null});var U=Object.assign(Object.assign({},N),O);return n.createElement("div",{className:"px-3"},n.createElement(p.j,{tabs:(0,y.aq)(null===(r=k.data)||void 0===r?void 0:r.id,"results",U),video:k.data,dateRangeAppLinkParams:O,share:Object.assign(Object.assign({},b.G6),{objectId:null===(i=k.data)||void 0===i?void 0:i.id}),yearGroups:[],isDemo:!0}),n.createElement(h.R,{interactiveMetadata:k.data,viewStudentResults:function(e,t,r){a.Q.C$.trigger({application:g.O.MY_SHARES,action:v.e.MyShares.INTERACTIVE_STUDENT_RESULTS_DEMO,params:{studentId:e.id,interactiveMetadataId:t,interactionId:r,sessionId:e.sessionId}})},interactive:A.data,results:j.data,filterBy:e.filterBy,sortBy:e.sortBy,isFetching:j.isFetching,anonymiseUsers:C,hasDataLoaded:M,config:R.data}))}}}]);
2
+ //# sourceMappingURL=1243-ede924125c-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/1243-ede924125c-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/utils/InteractiveUtils.ts","file:///app/packages/libs/shared/src/constants/DragOverlayStyles.ts","file:///app/packages/libs/shared/src/components/table/TableUtils.ts","file:///app/packages/libs/shared/src/components/table/table.scss","file:///app/packages/libs/shared/src/components/table/Table.tsx","file:///app/packages/libs/shared/src/enums/InteractionCorrectness.ts","file:///app/packages/libs/shared/src/enums/InteractiveAnswerStatus.ts","file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/libs/shared/src/utils/InteractiveCorrectnessHelper.ts","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsEmptyState.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsTableFilters.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsTable.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-students/partial-loading/partial-interactive-insights-students.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-students/partial-loading/PartialInteractiveInsightsStudents.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/interactive-insights-students/InteractiveInsightsStudents.tsx","file:///app/packages/projects/lite/src/apps/my-shares/constants/MySharesDemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/demo/students/InteractiveInsightsStudentsDemoView.tsx"],"sourcesContent":["import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { ScoreThresholdDefaults, ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { flattenInteractions, getInteractions, getStudentAttempt, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\ninterface StudentGroups {\n markingRequired: StudentResultsWithSummary[];\n lowScore: StudentResultsWithSummary[];\n highScore: StudentResultsWithSummary[];\n completed: StudentResultsWithSummary[];\n notCompleted: StudentResultsWithSummary[];\n}\n\nexport function groupStudents(\n interactive: Interactive,\n results: InteractiveResultSet,\n scoreThreshold?: ScoreThresholds\n): StudentGroups {\n const groups: StudentGroups = {\n markingRequired: [],\n lowScore: [],\n highScore: [],\n completed: [],\n notCompleted: []\n };\n\n const interactions = getInteractions(interactive);\n const interactionIds = new Set(interactions.map(i => i.id));\n \n results.students.forEach(s => {\n const withSummary = {\n ...s,\n summary: getStudentResultsSummary(interactive, s)\n };\n \n if (withSummary.summary.awaitingMarking) {\n groups.markingRequired.push(withSummary);\n return;\n }\n\n const result = ArrayHelper.last(s.results);\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n if (answeredInteractions === interactionIds.size) {\n groups.completed.push(withSummary);\n } else {\n groups.notCompleted.push(withSummary);\n return;\n }\n \n if (withSummary.summary.percentCorrect >= (scoreThreshold?.HIGH || ScoreThresholdDefaults.HIGH))\n groups.highScore.push(withSummary);\n \n if (withSummary.summary.percentCorrect < (scoreThreshold?.MODERATE || ScoreThresholdDefaults.MODERATE))\n groups.lowScore.push(withSummary);\n });\n \n const sortedLowScore = ArrayHelper.sortBy(groups.lowScore, s => s.summary.percentCorrect);\n const sortedHighScore = ArrayHelper.sortBy(groups.highScore, s => -s.summary.percentCorrect);\n \n return {\n ...groups,\n lowScore: sortedLowScore,\n highScore: sortedHighScore\n };\n}\n\nexport function getInteractionById(interactive: Interactive, interactionId: string): Interaction {\n const flattenedInteractions = flattenInteractions(interactive);\n return flattenedInteractions.find(i => i.id.toString() === interactionId.toString());\n}\n\n/**\n * We need to use the question and result ids as a list of one student's responses\n * to multiple questions will all have the same result id and a list of multiple\n * students responses to one question will all have the same questionId.\n */\nexport function getMarkedAnswerId(answer: StudentAnswer): string {\n return `${answer.questionId}:${answer.resultId}`;\n}\n\nexport function getMarkedStatus(\n interactionId: string,\n studentResults: StudentResults,\n markedAnswers: MarkedAnswerHash\n): InteractiveAnswerStatus {\n const result = getStudentResult(studentResults);\n const studentResponse = getStudentAttempt(interactionId, result);\n\n const isMarkedCorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Correct;\n });\n\n if (isMarkedCorrect)\n return InteractiveAnswerStatus.Correct;\n\n const isMarkedIncorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Incorrect;\n });\n\n if (isMarkedIncorrect)\n return InteractiveAnswerStatus.Incorrect;\n}\n\nexport function getInteractionResultsSummary(\n interaction: Interaction,\n results: InteractiveResultSet\n): ResultsSummary {\n const numStudents = results.students.length;\n let numCorrect = 0;\n let answered = 0;\n let unanswered = 0;\n let awaitingMarking = 0;\n let attempts = 0;\n\n results.students.forEach(s => {\n const result = getStudentResult(s);\n\n if (!result)\n return;\n\n attempts = attempts + s.results.length;\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(interaction, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.UnAnswered)\n unanswered++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n\n if (correctness !== InteractionCorrectness.UnAnswered)\n answered++;\n });\n\n\n const percentCorrect = numStudents > 0\n ? numCorrect / numStudents\n : 0;\n\n return {\n percentCorrect,\n correct: numCorrect,\n answered,\n unanswered,\n awaitingMarking,\n attempts\n };\n}\n\nexport function getStudentResultsSummary(interactive: Interactive, studentResults: StudentResults): ResultsSummary {\n const result = getStudentResult(studentResults);\n\n const interactions = getInteractions(interactive);\n\n const numInteractions = interactions.length;\n\n let numCorrect = 0;\n let awaitingMarking = 0;\n\n interactions.forEach(i => {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(i, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n });\n\n const percentCorrect = numInteractions > 0 ? numCorrect / numInteractions : 0;\n\n /**\n * Our interactions list has images and annotations filtered out.\n * We built a map of valid questions, so that we can calculate the unswered accurately.\n * We're doing this because of a bug that caused annotations and images to record answers in the player.\n * - Sha\n */\n const interactionIds = new Set(interactions.map(i => i.id));\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n return {\n answered: answeredInteractions,\n attempts: studentResults.results.length,\n unanswered: numInteractions - answeredInteractions,\n percentCorrect,\n correct: numCorrect,\n awaitingMarking\n };\n}","export const DragOverlayStyles = { opacity: '0.8', cursor: 'grabbing' };","import React from 'react';\nimport { PluginHook, useBlockLayout, useFilters, useFlexLayout, useGlobalFilter, useRowSelect, useSortBy } from 'react-table';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\ninterface PluginOptions {\n allowFiltering?: boolean;\n allowGlobalFiltering?: boolean;\n layout?: 'flex' | 'block';\n}\n\nexport function getPlugins<T extends HashObject>(props: PluginOptions): PluginHook<T>[] {\n let plugins: PluginHook<T>[] = [\n useSortBy,\n useRowSelect,\n props.layout === 'flex' ? useFlexLayout : useBlockLayout\n ];\n\n if (props.allowFiltering)\n plugins = [\n ...plugins,\n useFilters\n ];\n\n if (props.allowGlobalFiltering)\n plugins = [\n ...plugins,\n useGlobalFilter\n ];\n\n return plugins;\n}\n\nexport function getSelectedRowIds(ids: string[]): Record<string, boolean> {\n const idHash: Record<string, boolean> = {};\n\n ids.forEach(id => idHash[id] = true);\n\n return idHash;\n}\n\ninterface TableScrollState {\n canScrollLeft: boolean;\n canScrollRight: boolean;\n}\n\nfunction calculateScrollState(ref: React.MutableRefObject<HTMLDivElement>): TableScrollState {\n const canScrollLeft = ref.current?.scrollLeft > 0;\n const canScrollRight = (ref.current?.scrollLeft + 1) < ref.current?.scrollWidth - ref.current?.clientWidth;\n\n return { canScrollLeft, canScrollRight };\n}\n\ninterface UseTableScroll {\n ref: (el: HTMLDivElement) => void;\n scrollState: TableScrollState;\n scroll: (scrollBy: number) => void;\n}\n\nexport function useTableScroll(): UseTableScroll {\n const elRef = React.useRef<HTMLDivElement>(null);\n const [ scrollState, setScrollState ] = React.useState<TableScrollState>(calculateScrollState(elRef));\n\n function onScroll(): void {\n setScrollState(calculateScrollState(elRef));\n }\n\n function scroll(scrollBy: number): void {\n elRef.current?.scrollBy({ left: scrollBy, top: 0, behavior: 'smooth' });\n }\n\n const throttledOnScroll = FunctionHelper.throttle(onScroll, 200);\n\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (elRef.current) {\n elRef.current?.removeEventListener('scroll', throttledOnScroll);\n }\n\n if (el) {\n setScrollState(calculateScrollState(elRef));\n el.addEventListener('scroll', throttledOnScroll);\n }\n\n elRef.current = el;\n }, []);\n\n React.useEffect(() => {\n if (elRef?.current) {\n setScrollState(calculateScrollState(elRef));\n }\n }, [elRef]);\n\n return { ref, scrollState, scroll };\n}","// extracted by mini-css-extract-plugin\nexport default {\"sortIndicator\":\"gFhu0\",\"scrollContainer\":\"sWUp9\",\"scrollbarTrack\":\"Vn2qM\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport {\n Cell,\n Column as BaseColumn,\n HeaderGroup,\n HeaderProps as BaseHeaderProps,\n IdType,\n Row,\n SortingRule,\n TableOptions,\n TableRowProps,\n useTable } from 'react-table';\nimport { DragEndEvent } from '@dnd-kit/core';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { PropsWithSortableItemProps, SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { WidgetButton, WidgetButtonDirection } from 'libs/shared/components/widgets/widget-button/WidgetButton';\nimport { DragOverlayStyles } from 'libs/shared/constants/DragOverlayStyles';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getPlugins, getSelectedRowIds, useTableScroll } from './TableUtils';\n\nimport styles from './table.scss';\n\nexport interface TableTheme {\n table?: string;\n header?: string;\n headerRow?: string;\n headerCell?: string;\n body?: string;\n row?: string | ((row: Row<any>) => string);\n selectedRow?: string;\n cell?: string | ((row?: Row<any>, cell?: Cell<any, any>) => string);\n sortIndicator?: string;\n}\n\nexport type HeaderProps<T extends HashObject> = BaseHeaderProps<T> & {\n renderSortIndicator: () => void;\n}\n\nexport type Column<T extends HashObject> = BaseColumn<T> & {\n hideSortIndicator?: boolean;\n}\n\ninterface SortIndicatorProps<T extends HashObject> {\n column: HeaderGroup<T>;\n theme?: TableTheme;\n}\n\nfunction SortIndicator<T extends HashObject>(props: SortIndicatorProps<T>): JSX.Element {\n if (!props.column.canSort)\n return <></>;\n\n return (\n <span\n className={\n `${styles.sortIndicator}\n ${!props.column.isSorted ? 'text-secondary' : ''}\n ${props.theme?.sortIndicator ?? ''}`\n }\n >\n <SvgContainer\n svgName={(props.column.isSortedDesc || !props.column.isSorted)\n ? cvSvgLibrary.ArrowRight\n : cvSvgLibrary.ArrowLeft\n }\n size={SvgContainerSize.Small}\n />\n </span>\n );\n}\n\ninterface BaseTableProps<T extends HashObject> {\n /**\n * Must be memoized.\n */\n data: T[];\n\n /**\n * Must be memoized.\n * \n * For documentation on Column Options, see https://react-table.tanstack.com/docs/api/useTable#column-options\n */\n columns: Column<T>[];\n\n theme?: TableTheme;\n\n onSelectRow?: (row: Row<T>) => void;\n\n onSelectCell?: (cell: Cell<T>) => void;\n\n onRowMouseOver?: (row: Row<T>) => void;\n\n onRowMouseLeave?: (row: Row<T>) => void;\n\n allowSelectMultipleRows?: boolean;\n\n initialSelectedRowIds?: string[];\n\n getRowId?: (row: T) => string;\n\n getRowAppLink?: (row: Row<T>) => Core.AppLink;\n\n enableSort?: boolean;\n\n manualSort?: boolean;\n\n onSort?: (sortingRule: SortingRule<T>[]) => void;\n \n // Opt-in to utilise react-table's useFilter hook.\n allowFiltering?: boolean;\n\n // Opt-in to utilise react-table's useGlobalFilter hook.\n allowGlobalFiltering?: boolean;\n\n // Use either a flex layout or a block layout. Default is flex.\n layout?: 'flex' | 'block';\n\n // Used by useGlobalFilter hook, needs to be enabled by prop above.\n globalFilter?: string;\n\n // Set initial state of hidden columns in react-table.\n hiddenColumns?: IdType<T>[];\n\n // Determine whether hidden columns should be preserved on a table update event.\n autoResetHiddenColumns?: boolean;\n\n // Determine whether sort order state should be preserved on a table update event.\n autoResetSortBy?: boolean;\n\n // Determine whether rows are sortable by drag and drop\n enableSortableRows?: boolean;\n\n onSortingRowsEnd?: (event: DragEndEvent) => void;\n\n // Set initial state of sorting in react-table\n initialSortBy?: SortingRule<T>[];\n\n emptyState?: JSX.Element;\n}\n \ntype SortableRowProps = PropsWithSortableItemProps<TableRowProps>;\n\nfunction BaseTable<T extends HashObject>(props: BaseTableProps<T>): JSX.Element {\n const tableOptions: TableOptions<T> = {\n columns: props.columns,\n data: props.data,\n disableSortBy: !props.enableSort,\n manualSortBy: props.manualSort,\n autoResetHiddenColumns: props.autoResetHiddenColumns,\n autoResetSortBy: props.autoResetSortBy,\n initialState: {\n sortBy: props.initialSortBy || []\n }\n };\n\n if (props.initialSelectedRowIds)\n tableOptions.initialState = { selectedRowIds: getSelectedRowIds(props.initialSelectedRowIds) };\n\n if (props.getRowId)\n tableOptions.getRowId = props.getRowId;\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n toggleAllRowsSelected,\n setGlobalFilter,\n setHiddenColumns,\n state: { sortBy }\n } = useTable<T>(tableOptions, ...getPlugins<T>({ ...props }));\n\n function getTableRowsClass(row: Row<T>) {\n let className = FunctionHelper.isFunction(props.theme?.row)\n ? props.theme.row(row)\n : props.theme?.row ?? '';\n\n if (row.isSelected && props.theme?.selectedRow)\n className += ` ${props.theme?.selectedRow}`;\n\n if (props.onSelectRow)\n className += ' cursor-pointer';\n\n if (props.enableSortableRows)\n className += ' cursor-grab';\n\n return className;\n }\n\n function renderTableRows() {\n if (!rows.length && props.emptyState)\n return props.emptyState;\n \n return rows.map(row => {\n prepareRow(row);\n \n const className = getTableRowsClass(row);\n const rowAppLink = !!props.getRowAppLink && props.getRowAppLink(row);\n\n function onClickRow(): void {\n if (!props.onSelectRow)\n return;\n\n if (!props.allowSelectMultipleRows)\n toggleAllRowsSelected(false);\n \n props.onSelectRow(row);\n row.toggleRowSelected(true);\n }\n\n function getSortableProps(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any) {\n if ('dragAttributes' in props && 'dragListeners' in props) {\n return {\n ...props.dragAttributes,\n ...props.dragListeners,\n 'aria-roledescription': 'Sortable row',\n ref\n };\n }\n\n return {};\n }\n\n function renderRow(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any): JSX.Element {\n const sortableProps = getSortableProps(props, ref);\n\n if (rowAppLink) {\n return (\n <div\n role='row'\n key={row.id}\n >\n <AppLink\n {...props}\n {...sortableProps}\n className={className}\n appLink={rowAppLink}\n >\n {renderCells(row)}\n </AppLink>\n </div>\n );\n }\n\n return (\n <div\n {...props}\n {...sortableProps}\n key={row.id}\n role='row'\n className={className}\n onClick={onClickRow}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n const rowProps = row.getRowProps();\n\n if (props.enableSortableRows) {\n return (\n <SortableItemWrapper\n id={row.original.id}\n key={row.id}\n childProps={rowProps}\n childComponent={React.forwardRef(\n (props: SortableRowProps, ref: React.LegacyRef<HTMLDivElement>) => (renderRow(props, ref))\n )}\n />\n );\n }\n\n return renderRow(rowProps);\n });\n }\n\n function getDragOverlayClassName(theme: TableTheme): string {\n let className = 'g-0 ';\n\n if (theme)\n className += theme.row;\n\n return className;\n }\n\n function getDragOverlay(id: string) {\n const rowIndex = rows.findIndex(item => item.original.id === id);\n const row = rows[rowIndex];\n \n return (\n <div\n {...props}\n className={getDragOverlayClassName(props.theme)}\n style={DragOverlayStyles}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n function getCellClassName(row: Row<T>, cell: Cell<T>): string {\n let cellClassName = '';\n\n if (typeof props.theme?.cell === 'function')\n cellClassName = props.theme.cell(row, cell);\n\n if (typeof props.theme?.cell === 'string')\n cellClassName = props.theme.cell;\n\n if (props.onSelectCell)\n cellClassName += ' cursor-pointer';\n\n return cellClassName;\n }\n\n function renderCells(row: Row<T>): JSX.Element[] {\n return row.cells.map(cell => {\n const cellClassName = getCellClassName(row, cell);\n\n function onClickCell(): void {\n props.onSelectCell && props.onSelectCell(cell);\n }\n\n return (\n <div key={cell.column.id} {...cell.getCellProps()} className={cellClassName} onClick={onClickCell} >\n {cell.render('Cell')}\n </div>\n );\n });\n }\n\n React.useEffect(() => {\n if (!props.onSort)\n return;\n\n props.onSort(sortBy);\n }, [sortBy]);\n\n React.useEffect(() => {\n if (!props.globalFilter)\n return;\n\n setGlobalFilter(props.globalFilter);\n }, [props.globalFilter]);\n\n React.useEffect(() => {\n if (!props.hiddenColumns)\n return;\n\n setHiddenColumns(props.hiddenColumns);\n }, [props.hiddenColumns && props.hiddenColumns.length]);\n\n return (\n <div {...getTableProps()} className={props.theme?.table ?? ''}>\n <div className={props.theme?.header ?? ''}>\n {headerGroups.map(headerGroup => (\n <div {...headerGroup.getHeaderGroupProps()} className={props.theme?.headerRow ?? ''}>\n {headerGroup.headers.map(column => (\n <div {...column.getHeaderProps(column.getSortByToggleProps())} className={props.theme?.headerCell ?? ''}>\n {column.render('Header', { renderSortIndicator: () => <SortIndicator column={column} theme={props.theme} /> })}\n {!(column as Column<T>).hideSortIndicator &&\n <SortIndicator column={column} theme={props.theme} />\n }\n </div>\n ))}\n </div>\n ))}\n </div>\n <div {...getTableBodyProps()} className={props.theme?.body ?? ''}>\n { props.enableSortableRows ? (\n <SortableContainerWrapper\n ids={rows.map(row => row.original.id)}\n getDragOverlay={getDragOverlay}\n onSortEnd={props.onSortingRowsEnd}\n >\n {renderTableRows()}\n </SortableContainerWrapper>\n ) : (\n renderTableRows()\n )}\n </div>\n </div>\n );\n}\n\ninterface TableProps<T extends HashObject> extends BaseTableProps<T> {\n enableSlider?: boolean;\n scrollIncrement?: number;\n scrollContainerClassName?: string;\n scrollable?: boolean;\n initialSortBy?: SortingRule<T>[];\n}\n\nTable.defaultProps = {\n scrollIncrement: 250,\n scrollable: false,\n layout: 'flex'\n};\n\nexport function Table<T extends HashObject>(props: TableProps<T>): JSX.Element {\n const { enableSlider, scrollIncrement, scrollable, ...tableProps } = props;\n\n const { ref, scrollState, scroll } = useTableScroll();\n\n if (scrollable) {\n return (\n <Scrollbars\n renderTrackHorizontal={() => <div className={styles.scrollbarTrack} />}\n autoHeightMax={10000}\n autoHeight\n >\n <BaseTable {...tableProps} />\n </Scrollbars>\n );\n }\n\n if (!enableSlider)\n return <BaseTable {...tableProps} />;\n\n function onClickScroll(direction: 'left' | 'right'): void {\n scroll(scrollIncrement * (direction === 'right' ? 1 : -1));\n }\n\n return (\n <div className='mx-n4 overflow-x-hidden overflow-y-hidden'>\n <div className='px-4'>\n <div className='position-relative'>\n <WidgetButton\n direction={WidgetButtonDirection.Left}\n onClick={() => onClickScroll('left')}\n hide={!scrollState.canScrollLeft}\n />\n <div className={`${styles.scrollContainer} ${props.scrollContainerClassName}`} ref={ref}>\n <BaseTable {...tableProps } />\n </div>\n <WidgetButton\n direction={WidgetButtonDirection.Right}\n onClick={() => onClickScroll('right')}\n hide={!scrollState.canScrollRight}\n />\n </div>\n </div>\n </div>\n );\n}","export enum InteractionCorrectness {\n Correct,\n Incorrect,\n AwaitingMarking,\n \n Answered,\n UnAnswered,\n NotApplicable\n}","export enum InteractiveAnswerStatus {\n Incorrect = 0,\n Correct = 1,\n PendingReview = 2\n}","import { Flight } from 'libs/common/react/index';\n\nexport const InsightsDemoRequests = {\n interactive(): Flight.Request {\n return {\n url: `/mocks/insights/interactive.json`,\n key: `demo:interactive`,\n normalize: false\n };\n },\n\n interactiveMetadata(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-metadata.json`,\n key: `demo:interactive:metadata`,\n normalize: false\n };\n },\n\n interactiveResults(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-results.json`,\n key: `demo:interactive:results`,\n normalize: false\n };\n },\n\n videoViews(): Flight.Request {\n return {\n url: `/mocks/insights/video-views.json`,\n key: `demo:video:views`,\n normalize: false\n };\n },\n\n users(): Flight.Request {\n return {\n url: `/mocks/insights/users.json`,\n key: `demo:users`,\n normalize: false\n };\n },\n\n individualHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/individual-heatmap.json`,\n key: `demo:individual:heatmap`,\n normalize: false\n };\n },\n\n aggregateHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/aggregate-heatmap.json`,\n key: `demo:aggregate:heatmap`,\n normalize: false\n };\n }\n};","import { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, InteractionTypeId, InteractiveResult, StudentAnswer } from 'libs/shared/interfaces';\n\ntype GetStudentAnswerByActionableItemId = (id: string) => string;\n\nfunction notApplicable(): InteractionCorrectness {\n return InteractionCorrectness.NotApplicable;\n}\n\nfunction awaitingMarking(): InteractionCorrectness {\n return InteractionCorrectness.AwaitingMarking;\n}\n\nfunction isMissingWordCorrect(\n interaction: Interaction,\n getStudentAnswer: GetStudentAnswerByActionableItemId\n): InteractionCorrectness {\n const items = interaction.actionableItems.filter(a => a\n .isCorrect);\n\n if (items.every(a => !getStudentAnswer(a.id)))\n return InteractionCorrectness.UnAnswered;\n\n const correct = items.every(a => a.name.trim().toLowerCase() === getStudentAnswer(a.id)?.trim().toLowerCase());\n return correct ? InteractionCorrectness.Correct : InteractionCorrectness.Incorrect;\n}\n\nfunction isMultipleChoiceCorrect(\n interaction: Interaction,\n getStudentAnswer: GetStudentAnswerByActionableItemId\n): InteractionCorrectness {\n if (interaction.actionableItems.every(a => !getStudentAnswer(a.id)))\n return InteractionCorrectness.UnAnswered;\n \n const correctItems = interaction.actionableItems.filter(a => a.isCorrect);\n\n const correct = correctItems.every(a => {\n const studentAnswer = getStudentAnswer(a.id);\n\n /**\n * In the past we've only ever checked the answer name. But since we introduced the ability to have image interactions\n * with no question text, we've need to swap to saving the id. But past submissions still have the name\n * - Sha\n */\n return studentAnswer?.toString() === a.id?.toString() || studentAnswer === a.name;\n });\n return correct ? InteractionCorrectness.Correct : InteractionCorrectness.Incorrect;\n}\n\nfunction isMarkableAnswerMarkedCorrect(\n interaction: Interaction,\n getStudentAnswer: (id: string) => StudentAnswer\n): InteractionCorrectness {\n let correctness: InteractionCorrectness;\n\n // There should only be one actionableItem\n interaction.actionableItems.forEach(item => {\n const studentAnswer = getStudentAnswer(item.id);\n\n if (!studentAnswer) {\n correctness = InteractionCorrectness.UnAnswered;\n return;\n }\n\n if (studentAnswer.status === InteractiveAnswerStatus.Correct) {\n correctness = InteractionCorrectness.Correct;\n return;\n }\n\n if (studentAnswer.status === InteractiveAnswerStatus.Incorrect) {\n correctness = InteractionCorrectness.Incorrect;\n return;\n }\n\n correctness = InteractionCorrectness.AwaitingMarking;\n });\n\n return correctness;\n}\n\ntype IsCorrectFunction = (interaction: Interaction, result: InteractiveResult) => InteractionCorrectness;\n\nfunction getGetStudentAnswer(interaction: Interaction, result: InteractiveResult): (id: string) => StudentAnswer {\n return (id: string) => {\n const attempt = result?.attempts.find(a => a.id === interaction.id);\n return attempt?.answers.find(s => s.id === id);\n };\n}\n\nfunction wrapIsMissingWordCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n\n return isMissingWordCorrect(interaction, (id: string) => {\n const answer = getStudentAnswer(id);\n return answer?.text;\n });\n}\n\nfunction wrapIsMultipleChoiceCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n\n return isMultipleChoiceCorrect(interaction, (id: string) => {\n const answer = getStudentAnswer(id);\n return answer?.text;\n });\n}\n\nfunction wrapIsMarkableAnswerMarkedCorrect(\n interaction: Interaction,\n result: InteractiveResult\n): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n return isMarkableAnswerMarkedCorrect(interaction, getStudentAnswer);\n}\n\nconst IsCorrectLookup: {[typeId: number]: IsCorrectFunction} = {\n [InteractionTypeId.Annotation]: notApplicable,\n [InteractionTypeId.Image]: notApplicable,\n [InteractionTypeId.MissingWord]: wrapIsMissingWordCorrect,\n [InteractionTypeId.MultipleChoice]: wrapIsMultipleChoiceCorrect,\n [InteractionTypeId.ShortAnswer]: wrapIsMarkableAnswerMarkedCorrect,\n [InteractionTypeId.TrueOrFalse]: wrapIsMultipleChoiceCorrect,\n [InteractionTypeId.Illustration]: wrapIsMarkableAnswerMarkedCorrect\n};\n\nfunction isInteractionCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const isCorrectFn = IsCorrectLookup[interaction.typeId];\n\n return isCorrectFn(interaction, result);\n}\n\nexport const InteractiveCorrectnessHelper = {\n notApplicable,\n awaitingMarking,\n isMissingWordCorrect,\n isMultipleChoiceCorrect,\n isInteractionCorrect\n};\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\n\nconst namespace = 'shared.studentResultsTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResultsEmptyStateProps {\n filter: FilterStudentsBy;\n notCompletedImageUrl: string;\n helpingHandImageUrl: string;\n markingRequiredImageUrl: string;\n emptyStateImageUrl: string;\n}\n\nexport function StudentResultsEmptyState(props: StudentResultsEmptyStateProps) {\n if (props.filter === 'not_completed') {\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.notCompletedImageUrl} size='small' />\n <EmptyState.Info>\n {getPhrase('notCompletedDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n }\n if (props.filter === 'marking_required') {\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.markingRequiredImageUrl} size='small' />\n <EmptyState.Info>\n {getPhrase('markingRequiredDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n }\n\n if (props.filter === 'helping_hand') {\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.helpingHandImageUrl} size='small' />\n <EmptyState.Info>\n {getPhrase('helpingHandDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n }\n\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.emptyStateImageUrl} size='small' />\n <EmptyState.Heading>\n {getPhrase('emptyStateHeading')}\n </EmptyState.Heading>\n <EmptyState.Info>\n {getPhrase('emptyStateDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.studentResultsTable';\n\ninterface StudentResultsTableFiltersProps {\n filter: FilterStudentsBy;\n setFilter: (filter: FilterStudentsBy) => void;\n}\n\nexport function StudentResultsTableFilterButtons(props: StudentResultsTableFiltersProps) {\n function toggleFilter(selectedFilter: FilterStudentsBy) {\n const updatedFilter = props.filter === selectedFilter ? null : selectedFilter;\n\n props.setFilter(updatedFilter);\n }\n\n function isFilterSelected(filter: FilterStudentsBy) {\n return props.filter === filter;\n }\n\n function getClassName(filter: FilterStudentsBy) {\n return `btn btn-outline-dark ${isFilterSelected(filter) ? 'bg-dark text-white' : ''}`;\n }\n\n return (\n <div className='d-flex align-items-center mb-3'>\n <p className='h6 mb-0'><Text namespace={namespace} phrase='filters' /></p>\n <div className='d-flex border-start ps-3 ms-3 gap-2'>\n <button className={getClassName('not_completed')} onClick={() => toggleFilter('not_completed')}>\n <Text namespace={namespace} phrase='notCompletedFilter' />\n </button>\n <button className={getClassName('marking_required')} onClick={() => toggleFilter('marking_required')}>\n <Text namespace={namespace} phrase='markingRequiredFilter' />\n </button>\n <button className={getClassName('helping_hand')} onClick={() => toggleFilter('helping_hand')}>\n <Text namespace={namespace} phrase='helpingHandFilter' />\n </button>\n </div>\n </div>\n );\n}","import React from 'react';\nimport { Cell, Row, SortingRule } from 'react-table';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { StudentResultsEmptyState } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsEmptyState';\nimport { StudentResultsTableFilterButtons } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsTableFilters';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { FilterStudentsBy, getSortStudents, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { Config, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport {\n highlightColumns,\n highlightRows,\n RESULTS_COL_WIDTH,\n useGetFixedColumns,\n useGetResultColumns,\n useGetResultsTableData\n} from './StudentResultsTableUtils';\n\nimport styles from './student-results-table.scss';\n\nconst fixedTableTheme: TableTheme = {\n table: `${styles.fixedTable} bg-white rounded-start border border-end-0`,\n header: `${styles.header} border-bottom`,\n headerRow: 'h-100',\n headerCell: 'd-flex align-items-center justify-content-start',\n row: styles.row\n};\n\nconst resultsTableTheme: TableTheme = {\n header: `${styles.header} fw-bold`,\n headerRow: 'h-100',\n headerCell: `${styles.interactionHeaderCellOuter} bg-white border-bottom`,\n row: `${styles.row} ${styles.resultsRow}`,\n cell: styles.resultsCellOuter\n};\n\ninterface StudentResultsTableProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\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 config?: Config;\n selectedStudentId?: string;\n emptyStateImageUrl?: string;\n notCompletedImageUrl?: string;\n helpingHandImageUrl?: string;\n markingRequiredImageUrl?: string;\n anonymiseUsers?: boolean;\n sortBy?: SortStudentsBy;\n filterBy?: FilterStudentsBy;\n viewStudentResults: (\n student: AnonUser,\n interactiveMetadataId: string,\n interactionId?: string\n ) => void;\n}\n\nexport function StudentResultsTable(props: StudentResultsTableProps): JSX.Element {\n const [ sortBy, setSortBy ] = React.useState<SortingRule<StudentResultsWithSummary>[]>(\n getSortStudents(props.sortBy, 'score')\n );\n const [ filter, setFilter ] = React.useState<FilterStudentsBy>(props.filterBy);\n\n const ref = React.useRef<HTMLDivElement>(null);\n\n const fixedColumns = useGetFixedColumns(props.results, props.anonymiseUsers, props.config?.imageCdnUrl);\n const resultColumns = useGetResultColumns(\n props.interactive,\n props.interactiveMetadata,\n props.results,\n onColumnHover,\n props.refreshTable\n );\n const data = useGetResultsTableData(\n props.interactive,\n props.results,\n props.refreshTable,\n props.anonymiseUsers,\n ArrayHelper.first(sortBy),\n filter\n );\n\n function onSelectStudent({ original }: Row<StudentResultsWithSummary>): void {\n props.viewStudentResults(original.user, props.interactiveMetadata.id);\n }\n\n function onSelectStudentResponse(cell: Cell<StudentResultsWithSummary>): void {\n props.viewStudentResults(\n cell.row.original.user,\n props.interactiveMetadata.id,\n cell.column.id\n );\n }\n\n function onColumnHover(index?: number): void {\n highlightColumns(ref.current, index);\n }\n\n function onRowHover(index?: number): void {\n highlightRows(ref.current, index);\n }\n\n return (\n <div>\n {!!props.results.students.length && <StudentResultsTableFilterButtons filter={filter} setFilter={setFilter} />}\n\n {!data.length && (\n <StudentResultsEmptyState\n emptyStateImageUrl={props.emptyStateImageUrl}\n helpingHandImageUrl={props.helpingHandImageUrl}\n markingRequiredImageUrl={props.markingRequiredImageUrl}\n notCompletedImageUrl={props.notCompletedImageUrl}\n filter={filter}\n />\n )}\n\n {!!data.length && (\n <div ref={ref} className={`d-flex${data.length ? ` ${styles.hasResults}` : ''}`}>\n <Table\n columns={fixedColumns}\n data={data}\n theme={fixedTableTheme}\n onSelectRow={onSelectStudent}\n onRowMouseOver={row => onRowHover(row.index)}\n onRowMouseLeave={() => onRowHover()}\n enableSort\n manualSort\n onSort={setSortBy}\n initialSortBy={sortBy}\n />\n <Table\n columns={resultColumns}\n data={data}\n theme={resultsTableTheme}\n enableSlider\n scrollIncrement={RESULTS_COL_WIDTH * 8}\n onSelectCell={onSelectStudentResponse}\n scrollContainerClassName='rounded-end border border-start-0 border'\n />\n </div>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"qSeTe\"};","import React from 'react';\n\nimport styles from './partial-interactive-insights-students.scss';\n\nexport function PartialInteractiveInsightsStudents() {\n return (\n <div>\n <div className='d-flex align-items-center mb-3'>\n <p className='h6 px-4 mb-0 me-4 partial-loading-background'>&nbsp;</p>\n <div className='row g-2 w-50'>\n <div className='col-3'>\n <div className='p-2 rounded-1 partial-loading-background'>&nbsp;</div>\n </div>\n <div className='col-3'>\n <div className='p-2 rounded-1 partial-loading-background'>&nbsp;</div>\n </div>\n <div className='col-3'>\n <div className='p-2 rounded-1 partial-loading-background'>&nbsp;</div>\n </div>\n </div>\n </div>\n <div className='row g-3 mb-5'>\n <div className='col-12'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { StudentResultsTable } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsTable';\nimport { FilterStudentsBy, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Config, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { PartialInteractiveInsightsStudents } from 'apps/my-shares/components/interactive-insights-students/partial-loading/PartialInteractiveInsightsStudents';\n\ninterface InteractiveInsightsStudentsProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n isFetching: boolean;\n sortBy: SortStudentsBy;\n filterBy: FilterStudentsBy;\n anonymiseUsers: boolean;\n config: Config;\n viewStudentResults: (\n user: AnonUser,\n interactiveMetadataId: string,\n interactionId?: string\n ) => void;\n hasDataLoaded: boolean;\n}\n\nexport function InteractiveInsightsStudents(props: InteractiveInsightsStudentsProps) {\n return (\n <>\n {!props.hasDataLoaded &&\n <PartialInteractiveInsightsStudents />\n }\n\n {props.hasDataLoaded &&\n <StudentResultsTable\n interactive={props.interactive}\n interactiveMetadata={props.interactiveMetadata}\n results={props.results}\n refreshTable={props.isFetching}\n viewStudentResults={props.viewStudentResults}\n emptyStateImageUrl={ImageUrls.Insights.NO_RESPONSES}\n sortBy={props.sortBy}\n filterBy={props.filterBy}\n anonymiseUsers={props.anonymiseUsers}\n notCompletedImageUrl={ImageUrls.Insights.JIGSAW}\n markingRequiredImageUrl={ImageUrls.Insights.CLIPBOARD}\n helpingHandImageUrl={ImageUrls.Insights.SPEECH_BUBBLE_HEART}\n config={props.config}\n />\n }\n </>\n );\n}","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { MySharesTableData } from 'apps/my-shares/components/my-shares-table/MySharesTableUtils';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst DEMO_INSIGHT_DAYS_AGO = 7;\n\nexport const DEMO_INSIGHTS_SHARE: Share = {\n type: ShareType.Link,\n privacy: SharePrivacy.JustMySchool,\n objectId: '0',\n objectTypeId: MasterType.Interactive,\n viewCount: 28,\n accessCount: 15,\n dateCreated: new Date().toISOString(),\n expireDate: null,\n link: {\n shortenedEmbedUrl: '',\n shortenedUrl: ''\n },\n shareId: '0',\n ownerCustomerId: 0,\n ownerId: 0,\n recipients: [],\n options: {\n preventScrubbing: false,\n immediateFeedback: false\n }\n};\n\nexport const DEMO_INSIGHTS_SHARE_TABLE_DATA: MySharesTableData = {\n share: DEMO_INSIGHTS_SHARE,\n sharedObject: null,\n shareRecipients: null,\n dateShared: DateHelper.subtract(new Date(), DEMO_INSIGHT_DAYS_AGO, 'days').toISOString()\n};\n\nconst DEMO_INSIGHTS_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_DEMO\n};\n\nexport const DEMO_INSIGHTS_ACTION: ActionOptions = {\n svgName: cvSvgLibrary.Analytics,\n label: getPhrase('demoInsights'),\n appLink: DEMO_INSIGHTS_APPLINK,\n group: 'insights',\n className: 'btn btn-outline-dark'\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 { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { FilterStudentsBy, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InteractiveInsightsStudents } from 'apps/my-shares/components/interactive-insights-students/InteractiveInsightsStudents';\nimport { DEMO_INSIGHTS_SHARE } from 'apps/my-shares/constants/MySharesDemoInsights';\nimport { getInsightsDemoInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'insights.interactiveInsightsStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsStudentsViewProps {\n sortBy: SortStudentsBy;\n filterBy: FilterStudentsBy;\n}\n\nexport function InteractiveInsightsStudentsDemoView(props: InteractiveInsightsStudentsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(InsightsDemoRequests.interactiveMetadata());\n\n const interactive = Flight.useBasicFetch<Interactive>(InsightsDemoRequests.interactive());\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const results = Flight.useBasicFetch<InteractiveResultSet>(InsightsDemoRequests.interactiveResults());\n\n const hasDataLoaded = interactive.data && interactiveMetadata.data && !!results.data;\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n\n function viewStudentResults(\n user: AnonUser,\n interactiveMetadataId: string,\n interactionId?: string\n ) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_STUDENT_RESULTS_DEMO,\n params: {\n studentId: user.id,\n interactiveMetadataId,\n interactionId,\n sessionId: user.sessionId\n }\n });\n }\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n return (\n <div className='px-3'>\n <InsightsHeader\n tabs={getInsightsDemoInteractiveTabs(interactiveMetadata.data?.id, 'results', params)}\n video={interactiveMetadata.data}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n share={{\n ...DEMO_INSIGHTS_SHARE,\n objectId: interactiveMetadata.data?.id\n }}\n yearGroups={[]}\n isDemo\n />\n\n <InteractiveInsightsStudents\n interactiveMetadata={interactiveMetadata.data}\n viewStudentResults={viewStudentResults}\n interactive={interactive.data}\n results={results.data}\n filterBy={props.filterBy}\n sortBy={props.sortBy}\n isFetching={results.isFetching}\n anonymiseUsers={anonymiseUsers}\n hasDataLoaded={hasDataLoaded}\n config={config.data}\n />\n </div>\n );\n}"],"names":["groupStudents","interactive","results","scoreThreshold","groups","markingRequired","lowScore","highScore","completed","notCompleted","interactions","interactionIds","Set","map","i","id","students","forEach","s","withSummary","summary","getStudentResultsSummary","awaitingMarking","push","attempts","filter","a","has","answers","questionId","length","size","percentCorrect","HIGH","MODERATE","sortedLowScore","sortedHighScore","getInteractionById","interactionId","find","toString","getMarkedAnswerId","answer","resultId","getMarkedStatus","studentResults","markedAnswers","result","studentResponse","every","status","getInteractionResultsSummary","interaction","numStudents","numCorrect","answered","unanswered","correctness","correct","numInteractions","answeredInteractions","DragOverlayStyles","opacity","cursor","calculateScrollState","ref","canScrollLeft","current","scrollLeft","canScrollRight","scrollWidth","clientWidth","SortIndicator","props","column","canSort","className","isSorted","theme","sortIndicator","SvgContainer","svgName","isSortedDesc","S","BaseTable","ids","idHash","tableOptions","columns","data","disableSortBy","enableSort","manualSortBy","manualSort","autoResetHiddenColumns","autoResetSortBy","initialState","sortBy","initialSortBy","initialSelectedRowIds","selectedRowIds","getRowId","useTable","plugins","useSortBy","useRowSelect","layout","useFlexLayout","useBlockLayout","allowFiltering","useFilters","allowGlobalFiltering","useGlobalFilter","getPlugins","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","toggleAllRowsSelected","setGlobalFilter","setHiddenColumns","state","renderTableRows","emptyState","row","FunctionHelper","isSelected","selectedRow","onSelectRow","enableSortableRows","getTableRowsClass","rowAppLink","getRowAppLink","onClickRow","allowSelectMultipleRows","toggleRowSelected","renderRow","sortableProps","dragAttributes","dragListeners","getSortableProps","role","key","AppLink","appLink","renderCells","onClick","rowProps","getRowProps","SortableItemWrapper","original","childProps","childComponent","cells","cell","cellClassName","onSelectCell","getCellClassName","getCellProps","render","onSort","globalFilter","hiddenColumns","table","header","headerGroup","getHeaderGroupProps","headerRow","headers","getHeaderProps","getSortByToggleProps","headerCell","renderSortIndicator","hideSortIndicator","body","SortableContainerWrapper","getDragOverlay","rowIndex","findIndex","item","style","onSortEnd","onSortingRowsEnd","Table","enableSlider","scrollIncrement","scrollable","tableProps","elRef","scrollState","setScrollState","throttledOnScroll","el","removeEventListener","addEventListener","scroll","scrollBy","left","top","behavior","useTableScroll","renderTrackHorizontal","autoHeightMax","autoHeight","onClickScroll","direction","WidgetButton","W","hide","scrollContainerClassName","defaultProps","InteractionCorrectness","InteractiveAnswerStatus","InsightsDemoRequests","url","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","notApplicable","isMissingWordCorrect","getStudentAnswer","items","actionableItems","isCorrect","name","trim","toLowerCase","isMultipleChoiceCorrect","studentAnswer","getGetStudentAnswer","attempt","wrapIsMultipleChoiceCorrect","text","wrapIsMarkableAnswerMarkedCorrect","isMarkableAnswerMarkedCorrect","IsCorrectLookup","InteractiveCorrectnessHelper","isInteractionCorrect","isCorrectFn","typeId","getPhrase","LanguageService","StudentResultsEmptyState","EmptyState","src","notCompletedImageUrl","markingRequiredImageUrl","helpingHandImageUrl","emptyStateImageUrl","StudentResultsTableFilterButtons","toggleFilter","selectedFilter","updatedFilter","setFilter","getClassName","isFilterSelected","Text","namespace","phrase","fixedTableTheme","resultsTableTheme","StudentResultsTable","setSortBy","filterBy","fixedColumns","anonymiseUsers","config","imageCdnUrl","resultColumns","index","refreshTable","ArrayHelper","onRowHover","viewStudentResults","user","onRowMouseOver","onRowMouseLeave","PartialInteractiveInsightsStudents","InteractiveInsightsStudents","hasDataLoaded","isFetching","ImageUrls","DEMO_INSIGHTS_SHARE","type","privacy","objectId","objectTypeId","viewCount","accessCount","dateCreated","Date","toISOString","expireDate","link","shortenedEmbedUrl","shortenedUrl","shareId","ownerCustomerId","ownerId","recipients","options","preventScrubbing","immediateFeedback","DEMO_INSIGHTS_SHARE_TABLE_DATA","share","sharedObject","shareRecipients","dateShared","DEMO_INSIGHTS_APPLINK","application","action","DEMO_INSIGHTS_ACTION","label","group","InteractiveInsightsStudentsDemoView","audienceAppLinkParams","dateRangeAppLinkParams","title","video","params","tabs","yearGroups","isDemo","interactiveMetadataId","studentId","sessionId"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[147],{75097:(e,t,r)=>{r.d(t,{U:()=>o});var n=r(32735),a=r(13170);function o(e){var t=e.count,r=void 0===t?6:t;return n.createElement("div",{className:"d-flex"},n.createElement("div",{className:"d-flex ps-1"},Array(r).fill(null).map((function(e,t){return n.createElement("div",{key:t,className:"".concat(a.Z.partialButton," partial-loading-background mx-1")})}))))}},46711:(e,t,r)=>{r.d(t,{G:()=>Te});var n=r(32735),a=r(23481),o=r(81886),l=r(2948),i=r(49985),s=r(65858),c=r(34055),u=r(75097),d=r(10638),m=r(97958),p=r(83345),f="userManager.userManagerSearchEmptyState";function g(e){return n.createElement(m.u,null,n.createElement(m.u.Image,{src:e.imageUrl}),n.createElement(m.u.Heading,null,n.createElement(p.x,{namespace:f,phrase:"heading"})),n.createElement(m.u.Info,null,n.createElement(p.x,{namespace:f,phrase:"info"})))}const v={partialEntries:"TOmcn",partialCreateUser:"Yf4Wx",partialBulkUpload:"sp3ux",partialCheckbox:"REK11",partialYearGroup:"d2NEw",partialName:"qmSU8",partialEmail:"uHYQO",partialAvatar:"Y796I",lastActiveLabel:"aItB8",lastActiveDate:"RMdcx",partialAction:"jn0FO"};function b(){return n.createElement("li",{className:"d-flex align-items-center py-2"},n.createElement("div",{className:"ms-4 me-3 partial-loading-background ".concat(v.partialCheckbox)}),n.createElement("div",{className:"me-2 ms-n1 rounded-circle partial-loading-background ".concat(v.partialAvatar)}),n.createElement("div",{className:"d-flex flex-column justify-content-center me-auto"},n.createElement("div",{className:"pb-1 d-flex align-items-center"},n.createElement("div",null,n.createElement("div",{className:"partial-loading-background align-middle d-inline-block ".concat(v.partialName)}))),n.createElement("div",{className:"partial-loading-background me-1 align-middle d-inline-block ".concat(v.partialEmail)})),n.createElement("div",{className:"d-flex ps-1 me-3 d-flex justify-content-end"},n.createElement("div",{className:"partial-loading-background ".concat(v.partialYearGroup)})),n.createElement("span",{className:"d-flex flex-column me-3"},n.createElement("div",{className:"partial-loading-background mb-1 ".concat(v.lastActiveLabel)}),n.createElement("div",{className:"partial-loading-background ".concat(v.lastActiveDate)})),n.createElement("div",{className:"d-flex align-items-center"},n.createElement("div",{className:"partial-loading-background ".concat(v.partialAction)}),n.createElement("div",{className:"partial-loading-background ".concat(v.partialAction)})))}function y(){return n.createElement("ul",{className:"m-0 list-unstyled striped-list"},Array(20).fill(null).map((function(e,t){return n.createElement(b,{key:t})})))}var h=r(149),E=r(39739),k=r(76306),S=r(80247),C=r(89422),w=r(11607),A=r(83914),N=r(36532),T=r(35223);const R={iconContainer:"lUFJg",loadingContainer:"b0Mz5"};function x(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 U="shared.bulkSelectionSummary";function O(e){var t,r,o=(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,o,l,i=[],s=!0,c=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=o.call(r)).done)&&(i.push(n.value),i.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(c)throw a}}return i}}(t,r)||function(e,t){if(e){if("string"==typeof e)return x(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)?x(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=o[0],i=o[1];if(!e.selectedCount&&!e.showSelectingSpinner)return n.createElement(n.Fragment,null);var s=!!e.onClickSelectAll&&!e.allSelected&&0!==e.selectAllCount&&e.selectAllCount>C.K.USER_PAGE_LIMIT;return n.createElement("div",{className:"border border-dark rounded-3 d-flex justify-content-between align-items-center p-2 mb-3"},e.showSelectingSpinner?n.createElement("div",{className:"px-2 d-flex align-items-center ".concat(R.loadingContainer)},n.createElement(S.Z,{as:"div",size:"sm",animation:"border",role:"status"})):n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex align-items-center"},n.createElement("div",{className:"".concat(R.iconContainer," text-white rounded-circle bg-dark me-3 ms-2 d-flex justify-content-center align-items-center")},n.createElement(A.x,{svgName:T.vn.Group})),n.createElement(p.x,{namespace:U,phrase:"selectedCount",options:{smartCount:e.selectedCount,type:e.getTypeText(e.selectedCount)}}),s?l||void 0===e.selectAllCount?n.createElement("div",{className:"px-2 py-1"},n.createElement(S.Z,{as:"div",size:"sm",animation:"border",role:"status"})):n.createElement(w.L,{className:"info-link px-2",onClick:function(){i(!0),e.onClickSelectAll((function(){i(!1)}))}},n.createElement(p.x,{namespace:U,phrase:"selectAll",options:{smartCount:e.selectAllCount,type:e.getTypeText(e.selectAllCount)}})):n.createElement(n.Fragment,null)),n.createElement("div",{className:"d-flex"},n.createElement("button",{className:"btn btn-link me-2",onClick:e.onClickDeselectAll},n.createElement(p.x,{namespace:U,phrase:"deselectAll"})),n.createElement(N.u,{spanHack:!0,title:e.hasRostering?a.T.getPhrase(U,"disabled"):""},n.createElement("button",{className:e.hasRostering?"btn btn-outline-dark cursor-default disabled":"btn btn-outline-dark",onClick:e.onClickSelectBulk,disabled:e.hasRostering},n.createElement(p.x,{namespace:U,phrase:"selectBulkAction"}))))))}var j=r(89965),L=r(28469),P=r(38143),M=r(76881),I=r(26055),B=r(6748);function D(e){var t,r,a=(null===(r=null===(t=e.user.userProfile)||void 0===t?void 0:t.metadata)||void 0===r?void 0:r.jobTitle)||"-";return n.createElement("span",{className:"d-flex flex-column"},n.createElement("small",null,n.createElement(p.x,{namespace:"userManager.userList",phrase:"jobTitle"})),n.createElement("span",{className:"-"===a?"ms-3":""},a))}var Y=r(43820),V=r(12528),G=r(37967),F=r(110),_=r(40424),H=r(51530),W="userManager.userList";function Z(e){var t,r,o=function(e,t){if(!function(e,t){return!!e&&t===_.w.Active&&F.O.get(e,"year")>=2e3}(e,t))return"-";var r=F.O.fromNow(e);return"a day ago"===r?a.T.getPhrase(W,"yesterday"):r.includes("hour")?a.T.getPhrase(W,"today"):Number.isNaN(+r.substr(0,1))?r.substr(0,1).toUpperCase()+r.substr(1):r}(null===(t=e.user.metadata)||void 0===t?void 0:t.lastSignInTime,e.user.status),l=e.user.id.toString()===(null===(r=e.currentUser)||void 0===r?void 0:r.id.toString());return n.createElement("span",{className:"".concat(H.Z.lastActiveContainer," ").concat(l?H.Z.isCurrentUser:"")},n.createElement("span",{className:"d-flex flex-column"},n.createElement("small",null,n.createElement(p.x,{namespace:W,phrase:"lastActive"})),n.createElement("span",{className:"-"===o?"ms-3":""},o)))}var q=r(85402);function $(e){var t,r,o=n.useMemo((function(){var t;return null===(t=e.user.authenticationMethods)||void 0===t?void 0:t.sort((function(e){return e.local?1:-1}))}),[e.user.authenticationMethods]);if(!(null===(t=e.user.authenticationMethods)||void 0===t?void 0:t.length))return n.createElement(n.Fragment,null);var l=null===(r=e.user.authenticationMethods)||void 0===r?void 0:r.find((function(e){return!e.local}));return n.createElement("div",{className:"".concat(H.Z.authMethodContainer," d-flex flex-row-reverse justify-content-center ms-n3")},n.createElement(N.u,{title:a.T.getPhrase("userManager.userList",l?"ssoTooltip":"noSsoTooltip"),spanHack:!0},o.map((function(t,r){var a=t.backgroundColour?"#".concat(t.backgroundColour):"#fff";return n.createElement("div",{key:t.displayName,className:"".concat(H.Z.authMethodLogo," rounded-circle border"),style:{zIndex:e.user.authenticationMethods.length-r,backgroundImage:"url(".concat(t.logoUrl,")"),backgroundColor:a}})}))))}var Q=r(69843),z=r(76314);var K={table:"striped-list no-full-width pb-3",row:"striped-row rounded",cell:"d-flex align-items-center py-2"},X=n.memo((function(e){var t,r,a=n.useContext(I.A),o=(t=e.users,r=e.isChecked,t.map((function(e){return{user:e,checked:r(e.id),isCurrentUser:!1}}))),l=function(e,t,r,a,o,l,i,s,c,u,d,m){var p=[{id:"checkboxes",accessor:function(e){return{id:e.user.id,checked:e.checked}},Cell:function(t){return n.useMemo((function(){return n.createElement("div",{className:"w-100 text-center ms-3 ps-2"},n.createElement(j.X,{id:t.value.id,checked:t.value.checked,onChange:function(){return e(t.value.id)}}))}),[])},width:5},{accessor:"user",id:"avatar",Cell:function(e){var r=e.value;return n.useMemo((function(){return r.name?n.createElement("div",{className:"w-100"},n.createElement(z.u,{user:r,imageCdnUrl:t})):n.createElement("div",{className:"".concat("kq2Bn"," mx-2")},n.createElement(V.f,{svgName:T.vn.User,variant:"blue",svgSize:A.S.ExtraLarge,svgWrapperClassName:"p-1"}))}),[])},width:5},{accessor:"user",id:"basicDetails",Cell:function(e){var t=e.value;return n.useMemo((function(){return n.createElement("div",{className:"w-100"},n.createElement(G.t,{user:t,currentUser:r}))}),[])},width:50},{accessor:"user",id:"roleOrYearGroup",Cell:function(e){var t=e.value;return n.useMemo((function(){return n.createElement("div",{className:"w-100 text-end"},n.createElement(q.H,{userType:t.userType,user:t}))}),[])},width:11}];return m===Y.a.Curator&&p.push({accessor:"user",id:"jobTitle",Cell:function(e){var t=e.value;return n.useMemo((function(){return n.createElement("div",{className:"w-100"},n.createElement(D,{user:t}))}),[])},width:8}),p.push({accessor:"user",id:"lastActive",Cell:function(e){var t=e.value;return n.useMemo((function(){return n.createElement("div",{className:"w-100"},n.createElement(Z,{user:t,currentUser:r}))}),[])},width:8}),c&&p.push({accessor:"user",id:"authMethods",Cell:function(e){var t=e.value;return n.useMemo((function(){return n.createElement("div",{className:"w-100 d-flex justify-content-center"},n.createElement($,{user:t}))}),[])},width:6}),p.push({accessor:"user",id:"actions",Cell:function(e){var t=e.value;return n.useMemo((function(){return n.createElement("div",{className:"w-100"},n.createElement(Q.c,{user:t,userType:t.userType,appLinks:a,onClickSendResetEmail:i,onClickResendActivationEmail:l,onClickSendVerificationEmail:s,currentUser:r,ssoHelpArticle:u,products:o,hasRostering:d}))}),[])},width:8}),p}(e.onToggleCheckbox,e.imageCdnUrl,e.currentUser,e.appLinks,e.products,e.onClickResendActivationEmail,e.onClickSendResetEmail,e.onClickSendVerificationEmail,e.shouldDisplayAuthenticationMethods,e.ssoHelpArticle,e.hasRostering,a);return n.createElement(B.i,{columns:l,data:o,theme:K})})),J=r(20354),ee=r(48288),te=r(90911),re=r(19717);const ne={cell:"Vsgxg"};function ae(e){return ae="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},ae(e)}function oe(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 le(e,t,r){return(t=function(e){var t=function(e){if("object"!=ae(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ae(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ae(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ie=le(le(le({},M.Y.Learner,"userManager.selectStudentWithSpreadsheet"),M.Y.Staff,"userManager.selectStaffWithSpreadsheet"),M.Y.Unknown,"");function se(e){var t=ie[e.userType];return n.createElement(p.D.Provider,{value:t},n.createElement("div",{className:"pb-3"},n.createElement("div",{className:"h6"},n.createElement(p.x,{phrase:"downloadTemplateHeading"})),n.createElement("p",{className:"ms-n1 ps-3"},n.createElement(p.x,{phrase:"downloadTemplateInfo"})),n.createElement("div",{className:"ms-n1 ps-3"},n.createElement("a",{className:"btn btn-outline-dark mx-auto",download:!0,href:e.templateLink},n.createElement(A.x,{svgName:T.vn.Download,className:"svg-container std me-1 ms-n1 align-middle"}),n.createElement("div",{className:"align-middle d-inline-block"},n.createElement(p.x,{phrase:"downloadBtn"}))))),n.createElement("div",{className:"pb-3"},n.createElement("div",{className:"h6"},n.createElement(p.x,{phrase:"addUsersHeading"})),n.createElement("p",{className:"ms-n1 ps-3"},n.createElement(p.x,{phrase:"addUsersInfo"})),n.createElement("div",{className:"mx-n1 px-3"},n.createElement((function(){return n.createElement(p.D.Provider,{value:ie[e.userType]},n.createElement("table",{cellPadding:5},n.createElement("tbody",null,n.createElement("tr",{className:"text-center bg-light"},n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)},n.createElement(p.x,{phrase:"a"})),n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)},n.createElement(p.x,{phrase:"b"}))),n.createElement("tr",{className:"fw-semibold"},n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)},n.createElement(p.x,{phrase:"email"})),n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)},n.createElement(p.x,{phrase:"username"}))),n.createElement("tr",null,n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)},n.createElement(p.x,{phrase:"exampleEmail"})),n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)})),n.createElement("tr",null,n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)}),n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)},n.createElement(p.x,{phrase:"exampleUsername"}))))))}),null))),n.createElement("div",{className:"pb-3"},n.createElement("div",{className:"h6"},n.createElement(p.x,{phrase:"uploadHeading"})),n.createElement("div",{className:"d-inline-block ms-n1 ps-3 mt-1"},n.createElement("div",{className:"d-inline-block"},n.createElement(ee.H,{onSelectSpreadsheet:function(t){if(re.b.validateEmptySpreadsheetData(t))e.onClickCancel();else{var r=function(e){if(Array.isArray(e))return oe(e)}(c=t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||function(e,t){if(e){if("string"==typeof e)return oe(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)?oe(e,t):void 0}}(c)||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.")}(),n=r.shift(),a=re.b.validateSelectWithSpreadsheet(n,["Email","Username"]),l=a.isValid,i=a.errorMessage;if(!l)return o.Q.Ry.throw(new te.d(i)),void e.onClickCancel();var s=re.b.buildUserQueryFromSpreadsheet(n,r,e.userType);e.onSelectSpreadsheet(s,t.length)}var c}})))),n.createElement("div",null,n.createElement("div",{className:"h6"},n.createElement(p.x,{phrase:"matchesHeading"})),n.createElement("p",{className:"ms-n1 ps-3"},n.createElement(p.x,{phrase:"matchesInfo"}))))}var ce=r(9111);const ue={modalWidth:"KYu7Y"};var de="userManager.selectWithSpreadsheetPopup";function me(e){var t=e.checkboxHelper,r=J.a.useGetFetchAsync(),o=[],l=e.users.length;return n.createElement(ce.G,{closePopup:e.closePopup,title:a.T.getPhrase(de,"heading"),showLoadingSpinner:!l,dialogClassName:ue.modalWidth},l&&n.createElement(se,{userType:e.userType,onSelectSpreadsheet:function(n,a){e.setShowSelectingSpinner(!0);var l=n.map((function(t){return r(e.userRequest(t))}));Promise.all(l).then((function(r){r.forEach((function(e){o=o.concat(e)})),t.selectAll(o.map((function(e){return e.toString()}))),i.k.logUserAction({userType:e.userType,spreadsheetRowCount:a,totalUsersFound:o.length},{workflowPhase:s.eu.Complete,actionType:s.Vw.Select,entity:s.py.User,descriptor:s.yh.Bulk,location:s.LZ.Popup}),e.setShowSelectingSpinner(!1)})),e.closePopup()},onClickCancel:e.closePopup,templateLink:e.template}))}var pe=r(57900),fe=r(32562),ge=r(12458);function ve(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 be=r(299);function ye(e){return ye="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},ye(e)}function he(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 Ee=function(e,t){var r,a,o=(0,be.X)(e,t),l=(r=n.useState({}),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,l,i=[],s=!0,c=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=o.call(r)).done)&&(i.push(n.value),i.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(c)throw a}}return i}}(r,a)||function(e,t){if(e){if("string"==typeof e)return he(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)?he(e,t):void 0}}(r,a)||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.")}()),i=l[0],s=l[1];function c(){var e=t.queryParams,r=(e.cursor,e.sort,function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r}(e,["cursor","sort"]));return Object.keys(r).sort().map((function(e){var t=r[e];return Array.isArray(t)?t.sort().join(","):t})).join(":")}return Object.assign(Object.assign({},o),{selectAll:function(e){o.setSelected(e),s(Object.assign(Object.assign({},i),function(e,t,r){return(t=function(e){var t=function(e){if("object"!=ye(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ye(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ye(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}({},c(),!0)))},onToggleItem:function(e){o.isChecked(e)&&s({}),o.onToggleItem(e)},onToggleBulk:function(){o.bulkChecked&&s({}),(null==e?void 0:e.length)&&o.onToggleBulk()},reset:function(){s({}),o.reset()},allSelected:!!Object.keys(i).length&&(!!i[""]||i[c()])})};function ke(e){return ke="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},ke(e)}function Se(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,o,l,i=[],s=!0,c=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=o.call(r)).done)&&(i.push(n.value),i.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(c)throw a}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Ce(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)?Ce(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 Ce(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 we(e,t,r){return(t=function(e){var t=function(e){if("object"!=ke(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ke(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ke(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ae="userManager.manageUsers",Ne=we(we(we({},M.Y.Learner,"userManager.manageStudents"),M.Y.Staff,"userManager.manageStaff"),M.Y.Unknown,"");function Te(e){var t,r,m,p=s.LZ[e.userType===M.Y.Learner?"StudentManager":"StaffManager"],f=Ne[e.userType],v=e.userType===M.Y.Learner?s.LZ.StudentManager:s.LZ.StaffManager,b=Se((0,l.D)(P.g.BULK_USER_ACTIONS),2),S=b[0],w=b[1],A=Se(n.useState(!1),2),N=A[0],T=A[1],R=Se(n.useState(!1),2),x=R[0],U=R[1],I=Ee(e.users,{persistNamespace:"manage:users:".concat(e.userType),initialState:null==S?void 0:S.userIdMap,queryParams:e.queryParams}),B=function(e){var t,r,n,i,c=(n=(0,l.D)(P.g.BULK_USER_ACTIONS),i=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,l,i=[],s=!0,c=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=o.call(r)).done)&&(i.push(n.value),i.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(c)throw a}}return i}}(n,i)||function(e,t){if(e){if("string"==typeof e)return ve(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)?ve(e,t):void 0}}(n,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.")}())[1],u=s.LZ[e.userType===M.Y.Learner?"StudentManager":"StaffManager"],d=[{label:a.T.getPhrase(e.namespace,"export"),appLink:e.appLinks.exportUserList,analyticsOptions:{workflowPhase:s.eu.Start,actionType:s.Vw.Export,entity:s.py.User,location:u},analyticsData:{userType:e.userType}}];if(d.push({label:a.T.getPhrase(e.namespace,"auditLog"),appLink:e.appLinks.auditLog,onClick:function(){pe.SG.set(C.K.AUDIT_LOG_REFERRER_KEY,e.userType)}}),d.push({label:a.T.getPhrase(e.namespace,"selectWithSpreadsheet"),onClick:e.onSelectWithSpreadsheetSelect,analyticsOptions:{workflowPhase:s.eu.Start,actionType:s.Vw.Select,entity:s.py.User,descriptor:s.yh.Bulk,location:u},analyticsData:{userType:e.userType}}),e.userType===M.Y.Learner&&e.yearGroupRolloverStatus&&(null===(t=e.yearGroups)||void 0===t?void 0:t.length)>1){var m=!!(null===(r=e.yearGroupRolloverStatus)||void 0===r?void 0:r.canRollover)&&!e.hasRostering;d.push({label:a.T.getPhrase(e.namespace,"rollover"),appLink:m&&!e.hasRostering&&e.appLinks.bulkActionsActionDetails.yearGroupRollover,disabled:!!e.hasRostering,className:e.hasRostering?"cursor-default disabled":"",tooltip:e.hasRostering?a.T.getPhrase(e.namespace,"editControlledByRostering"):"",onClick:function(){var t;if(m){c({action:"yearGroupRollover",subAction:"yearGroupRollover"});var r=e.userType===M.Y.Learner?s.LZ.StudentManager:s.LZ.StaffManager;ge.I.logYearGroupRolloverEntry(r)}else{var n=new fe.H(null===(t=e.yearGroupRolloverStatus)||void 0===t?void 0:t.previousRolloverDate);o.Q.Ry.throw(n)}}})}return d}(Object.assign(Object.assign({},e),{onSelectWithSpreadsheetSelect:function(){return T(!0)},namespace:f,yearGroups:e.userType===M.Y.Learner?e.yearGroups:[]})),D=n.useRef(!0);function Y(){w("allUsersSelected",!1),w("allUsersCount",void 0)}n.useEffect((function(){return function(){D.current&&w("userIdMap",void 0)}}),[]),n.useEffect((function(){I.bulkChecked&&e.totalUsers===I.getSelectedCount()&&(w("allUsersSelected",!0),w("allUsersCount",e.totalUsers))}),[I.bulkChecked]);var V=n.useMemo((function(){return E.P.getFilters(e.userType,e.userType===M.Y.Learner?e.yearGroups:[])}),[null===(t=e.yearGroups)||void 0===t?void 0:t.length]),G=!(null===(r=e.currentUser)||void 0===r?void 0:r.id)||e.userType===M.Y.Learner&&!(null===(m=e.yearGroups)||void 0===m?void 0:m.length);return n.createElement(n.Fragment,null,e.hasRostering&&n.createElement(L.P,null),n.createElement("div",{className:"d-flex align-items-center pb-3"},n.createElement("div",{className:"ps-4 pe-1"},n.createElement(j.X,{id:"user-manager",name:"user-manager",checked:I.bulkChecked,onChange:function(){I.bulkChecked&&Y(),I.onToggleBulk()},indeterminate:I.hasSomeSelections()})),n.createElement("div",{className:"me-auto"},G?n.createElement(u.U,{count:3}):n.createElement(d.J,{queryParams:e.queryParams,mainFilters:V,appLink:e.appLinks.userManager,analyticsOptions:{entity:s.py.User,location:p},hideHeading:!0,hideDivider:!0,constantIndices:["user"]})),n.createElement("div",{className:"w-25"},n.createElement(c.W,{id:"user-manager-search-".concat(e.userType),name:"user-manager-search-".concat(e.userType),placeholder:a.T.getPhrase(Ae,"searchBarPlaceholder"),searchAppLink:e.appLinks.search,size:e.searchInputSize,searchIndices:["user"],analyticsOptions:{entity:s.py.User,location:p}})),n.createElement(k.m,{actions:B,dropdownToggleClassName:"btn btn-outline-dark ms-2"})),n.createElement(O,{getTypeText:function(e){return a.T.getPhrase(f,"bulkSelectLabel",{smartCount:e})},selectedCount:I.getSelectedCount(),onClickSelectAll:function(t){i.k.logUserAction({userCount:I.getSelectedCount()},{location:v,actionType:s.Vw.Click,descriptor:s._S.SelectAllUsers,entity:s.py.User}),e.fetchUserIds((function(r){I.selectAll(r);var n=!h.b.hasFilterOrQuery(e.queryParams);w("allUsersSelected",n),n&&w("allUsersCount",r.length),t()}))},selectAllCount:e.totalUsers,onClickDeselectAll:function(){Y(),I.reset()},onClickSelectBulk:function(){I.getSelectedCount()&&(i.k.logUserAction({userCount:I.getSelectedCount()},{location:v,entity:s.py.User,actionType:s.Vw.BulkAction,workflowPhase:s.eu.Start}),D.current=!1,w("userIdMap",I.getMap()),o.Q.C$.trigger(e.appLinks.bulkActionsReviewAccounts))},allSelected:I.allSelected,showSelectingSpinner:x,hasRostering:e.hasRostering}),e.users?e.users.length?n.createElement(X,{users:e.users,currentUser:e.currentUser,imageCdnUrl:e.config.imageCdnUrl,appLinks:e.appLinks,onClickResendActivationEmail:e.onClickResendActivationEmail,onClickSendResetEmail:e.onClickSendResetEmail,onClickSendVerificationEmail:e.onClickSendVerificationEmail,isChecked:I.isChecked,onToggleCheckbox:function(e){I.isChecked(e)&&Y(),I.onToggleItem(e)},ssoHelpArticle:e.ssoHelpArticle,shouldDisplayAuthenticationMethods:e.hasSso,products:e.products,hasRostering:e.hasRostering}):n.createElement(g,{imageUrl:e.searchEmptyState}):n.createElement(y,null),N&&n.createElement(me,{users:e.users,template:e.selectWithSpreadsheetTemplate,userType:e.userType,checkboxHelper:I,closePopup:function(){T(!1)},setShowSelectingSpinner:U,userRequest:e.userRequest}))}},69843:(e,t,r)=>{r.d(t,{c:()=>U});var n=r(32735),a=r(23481),o=r(81886),l=r(2948),i=r(49985),s=r(65858),c=r(26055),u=r(43820),d=r(14604),m=r(83345),p="userManager.ssoPasswordResetEmailNotAllowedError";function f(e){return n.createElement(d.W,null,n.createElement("p",{className:"mb-1 fw-semibold"},n.createElement(m.x,{namespace:p,phrase:"warning"})),e.helpArticle&&n.createElement("a",{href:e.helpArticle,target:"_blank",className:"info-link"},n.createElement(m.x,{namespace:p,phrase:"findMore"})))}var g=r(83657),v=r(38143),b=r(40424),y=r(12754),h=r(76881),E=r(42617);function k(e){return e&&e.groups?e.groups.map((function(e){return e.name})):[]}var S={isDev:function(e){return k(e).includes(E.j.Developer)},hasSubjectsAccess:function(e){return[E.j.Developer,E.j.Content,E.j.Curator,E.j.StreamableCurator].some((function(t){return k(e).includes(t)}))}},C=r(89961),w=r(35223),A=r(64818);function N(e){return function(e){if(Array.isArray(e))return R(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||T(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(e,t){if(e){if("string"==typeof e)return R(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)?R(e,t):void 0}}function R(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 x=a.T.encloseNamespace("userManager.userList");function U(e){var t=function(e){var t,r,a,d,m,p,g,E,k,R,U=n.useContext(c.A),O=function(t){return t===e.user.status},j=null===(t=e.user.metadata)||void 0===t?void 0:t.isEmailVerified,L=e.user.id==(null===(r=e.currentUser)||void 0===r?void 0:r.id),P=(k=(0,l.D)(v.g.BULK_REMOVE_USERS),R=2,function(e){if(Array.isArray(e))return e}(k)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,l,i=[],s=!0,c=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=o.call(r)).done)&&(i.push(n.value),i.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(c)throw a}}return i}}(k,R)||T(k,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.")}())[1];function M(t){i.k.logUserAction({id:e.user.id},i.k.mergeOptions({entity:s.py.User,workflowPhase:s.eu.Start,location:s.LZ[e.userType===h.Y.Learner?"StaffManagerListItem":"StudentManagerListItem"]},t))}var I=[];if(!e.isEditUserForm){var B=function(){return!(e.hasRostering||!O(b.w.Active)&&(!O(b.w.Inactive)||U!==u.a.Curator))};I.push({order:0,onClick:function(){var t;if(B()){M({actionType:s.Vw.Edit});var r=Object.assign(Object.assign({},e.appLinks.editUser),{args:[].concat(N(null!==(t=e.appLinks.editUser.args)&&void 0!==t?t:[]),[e.user.id])});o.Q.C$.trigger(r)}},svgName:w.vn.Edit,className:"btn btn-link svg-container ".concat(B()?"":"disabled"),tooltip:e.hasRostering?x("editControlledByRostering"):O(b.w.Disabled)?x("editUserDisabled"):O(b.w.Inactive)&&U!==u.a.Curator?x("editUserPending"):x("editUser"),button:!0})}return e.user.email&&O(b.w.Inactive)&&e.onClickResendActivationEmail&&I.push({order:5,disabled:e.hasRostering,tooltip:e.hasRostering?x("editControlledByRostering"):"",label:x("resendActivationEmail"),onClick:function(){M({actionType:s.Vw.SendEmail,descriptor:s.on.ActivateUser}),e.onClickResendActivationEmail(e.user)},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),e.user.email&&O(b.w.Active)&&!j&&I.push({order:5,label:x("sendVerificationEmail"),disabled:e.hasRostering,tooltip:e.hasRostering?x("editControlledByRostering"):"",onClick:function(){M({actionType:s.Vw.SendEmail,descriptor:s.on.VerifyEmail}),e.onClickSendVerificationEmail(e.user)},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),L||(j&&O(b.w.Active)&&e.onClickSendResetEmail&&I.push({order:5,label:x("sendResetEmail"),disabled:e.hasRostering,tooltip:e.hasRostering?x("editControlledByRostering"):"",onClick:function(){A.l.hasSso(e.user)?C.M.render(n.createElement(f,{helpArticle:e.ssoHelpArticle}),{title:x("sendResetEmail"),cancelButtonProps:{text:x("close"),variant:"dark"}}):(M({actionType:s.Vw.SendEmail,descriptor:s.on.ResetPasswordEmail}),e.onClickSendResetEmail(e.user))},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),O(b.w.Inactive)||I.push({order:10,label:x(O(b.w.Active)?"deactivate":"activate"),disabled:e.hasRostering,tooltip:e.hasRostering?x("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",onClick:function(){var t;M({actionType:s.Vw.Activate,descriptor:O(b.w.Active)?s.DL.Off:s.DL.On});var r=Object.assign(Object.assign({},e.appLinks.toggleStatus),{args:[].concat(N(null!==(t=e.appLinks.toggleStatus.args)&&void 0!==t?t:[]),[e.user.id])});o.Q.C$.trigger(r)}}),(U!==u.a.Primary||(null===(a=e.products)||void 0===a?void 0:a.includes(y.x.Online)))&&I.push({order:25,disabled:e.hasRostering,onClick:function(){O(b.w.Active)||(M({actionType:s.Vw.Delete,descriptor:s.yh.Single}),P({users:[e.user],totalUsers:1}),o.Q.C$.trigger(e.appLinks.deleteUser))},label:x("delete"),className:"btn btn-link text-danger ".concat(O(b.w.Active)||e.hasRostering?"cursor-default disabled":""),button:!1,tooltip:e.hasRostering?x("editControlledByRostering"):O(b.w.Active)?x("deleteDisabledTooltip"):null}),U!==u.a.Online&&!(null===(d=e.products)||void 0===d?void 0:d.includes(y.x.Online))&&I.push({order:25,disabled:e.hasRostering,onClick:function(){var t;if(!O(b.w.Active)){M({actionType:s.Vw.Remove,descriptor:s.yh.Single});var r=Object.assign(Object.assign({},e.appLinks.removeUser),{args:[].concat(N(null!==(t=e.appLinks.editUser.args)&&void 0!==t?t:[]),[e.user.id])});o.Q.C$.trigger(r)}},label:x("remove"),className:"btn btn-link text-danger ".concat(O(b.w.Active)||e.hasRostering?"cursor-default disabled":""),button:!1,tooltip:e.hasRostering?x("editControlledByRostering"):O(b.w.Active)?x("removeDisabledTooltip"):null})),U===u.a.Online&&e.userType===h.Y.Learner&&O(b.w.Active)&&I.push({order:15,label:x("viewWorkspace"),onClick:function(){return M({actionType:s.Vw.Click,descriptor:s._S.ViewStudentWorkspace})},appLink:Object.assign(Object.assign({},e.appLinks.viewStudentWorkspace),{params:{username:e.user.username}}),className:e.hasRostering?"cursor-default disabled":"btn btn-link",button:!1}),U!==u.a.Primary||e.userType!==h.Y.Learner||O(b.w.Inactive)||I.push({order:15,label:x("viewStudentsVideos"),onClick:function(){return M({actionType:s.Vw.Click,descriptor:s._S.ViewStudentWorkspace})},appLink:Object.assign(Object.assign({},e.appLinks.viewStudentWorkspace),{args:[e.user.id]}),className:"btn btn-link",button:!1}),O(b.w.Active)&&(e.userType===h.Y.Staff&&!j||e.userType===h.Y.Learner)&&I.push({order:20,disabled:e.hasRostering,label:x("changePassword"),className:e.hasRostering?"cursor-default disabled":"",onClick:function(){var t;M({actionType:s.Vw.ChangePassword});var r=Object.assign(Object.assign({},e.appLinks.changePassword),{args:[].concat(N(null!==(t=e.appLinks.changePassword.args)&&void 0!==t?t:[]),[e.user.id])});o.Q.C$.trigger(r)}}),U===u.a.Curator&&S.isDev(e.currentUser)&&I.push.apply(I,[{order:2,label:x("manageCuratorGroups"),disabled:e.hasRostering,tooltip:e.hasRostering?x("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",onClick:function(){M({actionType:s.Vw.ManageGroup}),o.Q.C$.trigger(Object.assign(Object.assign({},e.appLinks.manageUserCuratorGroups),{args:[e.user.id]}))}},{order:3,label:x("editUserOptions"),disabled:e.hasRostering,tooltip:e.hasRostering?x("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",appLink:Object.assign(Object.assign({},e.appLinks.editUserOptions),{args:[].concat(N(null!==(m=e.appLinks.editUserOptions.args)&&void 0!==m?m:[]),[e.user.id])})}]),U===u.a.Curator&&e.hasUserCredit&&I.push({order:4,label:x("editUserCredits"),appLink:Object.assign(Object.assign({},e.appLinks.userCredit),{args:[].concat(N(null!==(p=e.appLinks.userCredit.args)&&void 0!==p?p:[]),[e.user.id])})}),U===u.a.Curator&&(null===(g=e.user.metadata)||void 0===g?void 0:g.isEmailVerified)&&!O(b.w.Inactive)&&I.push({order:5,label:x("unverifyEmail"),disabled:e.hasRostering,tooltip:e.hasRostering?x("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",onClick:function(){var t;M({actionType:s.Vw.VerifyEmail,descriptor:s.hY.Remove}),o.Q.C$.trigger(Object.assign(Object.assign({},e.appLinks.deleteUserEmail),{args:[].concat(N(null!==(t=e.appLinks.deleteUserEmail.args)&&void 0!==t?t:[]),[e.user.id])}))}}),U===u.a.Curator&&e.isEditUserForm&&I.push({order:6,label:x("addToAnotherCustomer"),disabled:e.hasRostering,tooltip:e.hasRostering?x("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",appLink:Object.assign(Object.assign({},e.appLinks.addToAnotherCustomer),{args:[].concat(N(null!==(E=e.appLinks.addToAnotherCustomer.args)&&void 0!==E?E:[]),[e.user.id])})}),I}(e);return n.createElement(g.e,{actions:t,className:e.isEditUserForm?"mb-2":"pe-4",actionsDropdownClassName:e.isEditUserForm?"btn btn-outline-dark":"btn btn-link ms-1"})}},35495:(e,t,r)=>{r.d(t,{g:()=>h});var n=r(32735),a=r(23481),o=r(83345);const l={partialLoading:"mXgLg"};var i="userManager.userManagerEntries";function s(e){var t,r,a;return n.createElement("p",{className:"mb-0 fw-semibold"},n.createElement(o.x,{namespace:i,phrase:"users",options:{totalShowing:null!==(t=e.totalShowing)&&void 0!==t?t:0,totalUsers:null!==(r=e.totalUsers)&&void 0!==r?r:0,smartCount:null!==(a=e.totalUsers)&&void 0!==a?a:0}}))}function c(){return n.createElement("div",{className:"partial-loading-background ".concat(l.partialLoading," d-inline-block")})}var u=r(49935),d=r(91693),m=r(36532),p=r(76881),f=r(35223);function g(e){return g="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},g(e)}function v(e,t,r){return(t=function(e){var t=function(e){if("object"!=g(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=g(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==g(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var b="userManager.userManagerHeader",y=v(v(v({},p.Y.Learner,"userManager.studentManagerHeader"),p.Y.Staff,"userManager.staffManagerHeader"),p.Y.Unknown,"");function h(e){var t,r=y[e.userType],l=e.users&&"number"==typeof(null===(t=e.userCount)||void 0===t?void 0:t.count),i=l&&e.users.length;return n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex justify-content-between"},e.headingComponent?n.createElement(n.Fragment,null,e.headingComponent):n.createElement("span",null,n.createElement("h1",{className:"h2"},n.createElement(o.x,{namespace:r,phrase:"heading"})),n.createElement("div",{className:"pb-3"},n.createElement(u.Oo,{breadcrumbs:[{name:a.T.getPhrase(b,"settingsBreadcrumb"),appLink:e.appLinks.settings},{name:a.T.getPhrase(r,"managerBreadcrumb"),active:!0}]}))),n.createElement("span",null,n.createElement(m.u,{spanHack:!0,title:e.hasRostering?a.T.getPhrase(b,"disabled"):"",placement:"left"},n.createElement(d.h,{className:"btn btn-outline-dark",svgName:f.vn.Plus,appLink:e.hasSso?e.appLinks.ssoAddUserConfirm:e.appLinks.addNewUsers,disabled:e.hasRostering},n.createElement(o.x,{namespace:r,phrase:"addNew"}))),n.createElement("div",{className:"text-end mt-1"},l?n.createElement(s,{totalShowing:i,totalUsers:e.userCount.count}):n.createElement(c,null)))))}},14604:(e,t,r)=>{r.d(t,{W:()=>i});var n=r(32735),a=r(83914),o=r(35223);const l={icon:"eCi4v"};function i(e){return n.createElement("div",{className:"alert alert-warning d-flex align-items-center px-2 mb-3 ".concat(e.className||"")},n.createElement(a.x,{svgName:o.vn.WarningOutline,className:"svg-container me-2 ".concat(l.icon)}),n.createElement("div",null,e.children))}},32562:(e,t,r)=>{r.d(t,{H:()=>f});var n=r(23481),a=r(110),o=r(47663),l=r(12778);function i(e){return i="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},i(e)}function s(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,c(n.key),n)}}function c(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=i(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}function u(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(u=function(){return!!e})()}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function m(e,t){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},m(e,t)}var p="userManager.cannotYearGroupRolloverError",f=function(e){function t(e){var r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),r=function(e,t,r){return t=d(t),function(e,t){if(t&&("object"==i(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,u()?Reflect.construct(t,r||[],d(e).constructor):t.apply(e,r))}(this,t,["CannotYearGroupRolloverError"]);var n=a.O.convertUTCToLocal(e);return r.previousRolloverDate=a.O.format(n,"MMMM Do YYYY"),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&m(e,t)}(t,e),r=t,(o=[{key:"name",get:function(){return"CannotYearGroupRolloverError"}},{key:"dialogOptions",get:function(){return{title:n.T.getPhrase(p,"heading"),text:n.T.getPhrase(p,"text",{previousRolloverDate:this.previousRolloverDate,supportUrl:l.o.getSupportRequestUrl(),linkClass:"info-link"}),buttons:[{text:n.T.getPhrase(p,"okay"),className:"btn btn-dark",success:!0}]}}}])&&s(r.prototype,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,o}(o.S)},56138:(e,t,r)=>{r.d(t,{x:()=>o});var n=r(20354),a=r(31949),o=function(e){var t=n.a.useBasicFetch(a.N.currentUser());return n.a.useBasicFetch(t.data&&e.getUserCountRequest(t.data.customerId,t.data.id,e.userType,e.queryParams))}},12458:(e,t,r)=>{r.d(t,{I:()=>s});var n=r(1048),a=r(49985),o=r(65858),l=r(58739),i=["userIdMap","params","action","subAction","allUsersSelected","allUsersCount","scrollContainer"],s={getAnalyticsActionName:function(e){if(!(null==e?void 0:e.action))return null;switch(e.action){case"activation":return(null==e?void 0:e.subAction)?"deactivate"===e.subAction?"Deactivate":"Reactivate":"Deactivate / reactivate";case"addToClassroom":return"Add to classroom";case"changeYearGroup":return"Change year level";case"delete":return"Delete user";case"resetEmail":return"Send password reset email";case"activationEmail":return"Send account activation email";case"resetPassword":return"Reset password";case"yearGroupRollover":return"Annual year level rollover";case"removeFromSchool":return"Remove user";default:return null}},onClickNext:function(e,t){if(e){var r={userCount:e.userIdMap.size,step:t},l=s.getAnalyticsActionName(e);l&&(r.action=l);var c=n.t.omit(e,i);Object.keys(c).length&&(r.actionData=c),a.k.logUserAction(r,{location:o.LZ.BulkUserActionsWizard,workflowPhase:o.eu.Next,actionType:o.Vw.BulkAction,entity:o.py.User})}},logYearGroupRolloverEntry:function(e){a.k.logUserAction({action:s.getAnalyticsActionName({action:"yearGroupRollover"})},{entity:o.py.User,actionType:o.Vw.BulkAction,workflowPhase:o.eu.Start,location:e})},getJobStatus:function(e){switch(e){case l.K.Completed:return"Success";case l.K.CompletedWithError:return"Completed with some errors";case l.K.Failed:return"Failed";default:return null}}}},63112:(e,t,r)=>{r.d(t,{o:()=>o});var n=r(32735),a=r(14346),o=n.memo((function(e){var t=e.tagClass,r="partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ".concat(void 0===t?"":t," ").concat(a.Z.partialTag);return n.createElement("div",{className:"mt-1"},n.createElement("span",{className:r}," "))}))},30699:(e,t,r)=>{r.d(t,{a:()=>o});var n=r(32735),a=r(16035);function o(e){var t=e.selectedItems.find((function(t){return t.id===e.data.id}))?"bg-gray-900 text-white":"bg-light";return n.createElement(a.z,{tag:e.data,appLink:e.appLink,tagClass:"no-decoration ".concat(t," lh-1"),onClick:function(){return e.onClick(e.data)}})}},99705:(e,t,r)=>{var n,a;r.d(t,{b:()=>a}),function(e){e.AddToPlaylist="115005679748",e.EditSsoAccounts="8202508040345",e.LibraryEditor="360001974533",e.VideoAccess="360000153947",e.AddFromOnline="360011718234",e.UploadToLibraryEditor="360012069334",e.PBTErrorCodes="360012421153",e.ManuelReview="360020004534",e.LibraryReview="360000163788"}(n||(n={})),function(e){e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="27927466562201",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929",e.RssFeed="32567445635097",e.ManageGroupPermissions="35407217335705"}(a||(a={}))},299:(e,t,r)=>{r.d(t,{X:()=>l});var n=r(32735),a=r(69217),o=r(94631),l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.idField,l=void 0===r?"id":r,i=t.persistNamespace,s=t.initialState?t.initialState:new Map,c=n.useRef(s),u=(0,a.N)(),d=(0,o.D)(e),m=(0,o.D)(i);function p(){c.current.clear(),u()}function f(e){return"number"==typeof e?e=e.toString():"string"!=typeof e&&(e=e[l].toString()),c.current.get(e)}function g(){return!!(null==e?void 0:e.length)&&e.every(f)}function v(e){e.forEach((function(e){c.current.set(e,!0)})),u()}return n.useEffect((function(){t.initialState||i&&m===i||(null==d?void 0:d.map((function(e){return e[l]})).join())!==(null==e?void 0:e.map((function(e){return e[l]})).join())&&p()}),[d,m,e,t.initialState]),n.useEffect((function(){var e;(null===(e=t.preselectedIds)||void 0===e?void 0:e.length)&&v(t.preselectedIds)}),[]),{onToggleBulk:function(){var t=!g();e.forEach((function(e){t?c.current.set(e[l].toString(),!0):c.current.delete(e[l].toString())})),u()},onToggleItem:function(e){var t=!c.current.get(e.toString());t?c.current.set(e.toString(),t):c.current.delete(e.toString()),u()},getSelected:function(){return Array.from(c.current.keys())},isChecked:f,bulkChecked:g(),deselectAll:function(){(null==e?void 0:e.length)&&(e.forEach((function(e){c.current.delete(e[l].toString())})),u())},hasSomeSelections:function(){return!!(null==e?void 0:e.length)&&!!e.find((function(e){return f(e)}))},setSelected:v,getSelectedCount:function(){return c.current.size},reset:p,getMap:function(){return c.current}}}},48327:(e,t,r)=>{r.d(t,{d:()=>n});var n="/templates/Template_Select_With_Spreadsheet.csv"},51180:(e,t,r)=>{r.d(t,{T:()=>o});var n=r(20354),a=r(47288);function o(e,t,r){return n.a.useBasicFetch(function(){if(!e)return null;var n=Object.keys(t),o=1===n.length&&!!t.cursor||2===n.length&&n.includes("cursor")&&n.includes("previous"),l=1===n.length&&!!t.sort;return!Object.keys(t).length||o||l?a.N.getUsers(e.customerId,r,t,null==t?void 0:t.cursor):a.N.searchUsers(e.customerId,e.id,r,t,null==t?void 0:t.cursor)}())}}}]);
2
+ //# sourceMappingURL=147-44ee7e9a78-lite.chunk.js.map