@clickview/lite 0.75.0-rc.10 → 0.75.0-rc.11

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 (62) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{7103-lite-fef3024f61.chunk.css → 2878-lite-d8e0bf912a.chunk.css} +1 -1
  3. package/dist/css/{1243-lite-13eda8f6a0.chunk.css → 3615-lite-240342ff8e.chunk.css} +1 -1
  4. package/dist/css/{1867-lite-8baa8af02b.chunk.css → 4630-lite-0157b1c437.chunk.css} +1 -1
  5. package/dist/css/{4203-lite-9ffab89741.chunk.css → 8362-lite-10810fdef2.chunk.css} +1 -1
  6. package/dist/languages/en.json +1 -1
  7. package/dist/scripts/{104-7ee25cbbb8-lite.chunk.js → 104-da7394bcfa-lite.chunk.js} +2 -2
  8. package/dist/scripts/104-da7394bcfa-lite.chunk.js.map +1 -0
  9. package/dist/scripts/{1192-6ed5c80d8a-lite.chunk.js → 1192-bb27568f21-lite.chunk.js} +2 -2
  10. package/dist/scripts/1192-bb27568f21-lite.chunk.js.map +1 -0
  11. package/dist/scripts/1199-cf2cb206b5-lite.chunk.js +2 -0
  12. package/dist/scripts/1199-cf2cb206b5-lite.chunk.js.map +1 -0
  13. package/dist/scripts/1502-9836df10cd-lite.chunk.js +2 -0
  14. package/dist/scripts/1502-9836df10cd-lite.chunk.js.map +1 -0
  15. package/dist/scripts/{1610-9ccecc428a-lite.chunk.js → 1610-0edaa98d40-lite.chunk.js} +2 -2
  16. package/dist/scripts/{1610-9ccecc428a-lite.chunk.js.map → 1610-0edaa98d40-lite.chunk.js.map} +1 -1
  17. package/dist/scripts/{7103-3b181ec69b-lite.chunk.js → 2878-487c4a8e1a-lite.chunk.js} +2 -2
  18. package/dist/scripts/2878-487c4a8e1a-lite.chunk.js.map +1 -0
  19. package/dist/scripts/{1243-72f3d31787-lite.chunk.js → 3615-a0da361aa5-lite.chunk.js} +2 -2
  20. package/dist/scripts/3615-a0da361aa5-lite.chunk.js.map +1 -0
  21. package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js +2 -0
  22. package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js.map +1 -0
  23. package/dist/scripts/4598-e25e9e03d6-lite.chunk.js +2 -0
  24. package/dist/scripts/4598-e25e9e03d6-lite.chunk.js.map +1 -0
  25. package/dist/scripts/{1867-0823a787c3-lite.chunk.js → 4630-4a35ecbf2b-lite.chunk.js} +2 -2
  26. package/dist/scripts/4630-4a35ecbf2b-lite.chunk.js.map +1 -0
  27. package/dist/scripts/6475-f019242ec2-lite.chunk.js +2 -0
  28. package/dist/scripts/6475-f019242ec2-lite.chunk.js.map +1 -0
  29. package/dist/scripts/6756-3c7f911759-lite.chunk.js +3 -0
  30. package/dist/scripts/6756-3c7f911759-lite.chunk.js.map +1 -0
  31. package/dist/scripts/{4203-83f90f92f3-lite.chunk.js → 8362-ed5df8f4fc-lite.chunk.js} +3 -3
  32. package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.map → 8362-ed5df8f4fc-lite.chunk.js.map} +1 -1
  33. package/dist/scripts/8856-08061bbec5-lite.chunk.js +2 -0
  34. package/dist/scripts/8856-08061bbec5-lite.chunk.js.map +1 -0
  35. package/dist/scripts/{9042-544d97a05d-lite.chunk.js → 9042-7c30ffd4f0-lite.chunk.js} +2 -2
  36. package/dist/scripts/9042-7c30ffd4f0-lite.chunk.js.map +1 -0
  37. package/dist/scripts/{bundle-3fc0b29cd5.min.js → bundle-941a464ef0.min.js} +3 -3
  38. package/dist/scripts/{bundle-3fc0b29cd5.min.js.map → bundle-941a464ef0.min.js.map} +1 -1
  39. package/package.json +1 -1
  40. package/dist/scripts/104-7ee25cbbb8-lite.chunk.js.map +0 -1
  41. package/dist/scripts/1074-ac4057b68e-lite.chunk.js +0 -2
  42. package/dist/scripts/1074-ac4057b68e-lite.chunk.js.map +0 -1
  43. package/dist/scripts/1192-6ed5c80d8a-lite.chunk.js.map +0 -1
  44. package/dist/scripts/1199-dc45a88be8-lite.chunk.js +0 -2
  45. package/dist/scripts/1199-dc45a88be8-lite.chunk.js.map +0 -1
  46. package/dist/scripts/1243-72f3d31787-lite.chunk.js.map +0 -1
  47. package/dist/scripts/1867-0823a787c3-lite.chunk.js.map +0 -1
  48. package/dist/scripts/4598-f5120153c2-lite.chunk.js +0 -2
  49. package/dist/scripts/4598-f5120153c2-lite.chunk.js.map +0 -1
  50. package/dist/scripts/6475-502e390010-lite.chunk.js +0 -2
  51. package/dist/scripts/6475-502e390010-lite.chunk.js.map +0 -1
  52. package/dist/scripts/6756-a71d33bfcf-lite.chunk.js +0 -3
  53. package/dist/scripts/6756-a71d33bfcf-lite.chunk.js.map +0 -1
  54. package/dist/scripts/7103-3b181ec69b-lite.chunk.js.map +0 -1
  55. package/dist/scripts/8856-361fe76b7a-lite.chunk.js +0 -2
  56. package/dist/scripts/8856-361fe76b7a-lite.chunk.js.map +0 -1
  57. package/dist/scripts/9003-36ab592cc5-lite.chunk.js +0 -2
  58. package/dist/scripts/9003-36ab592cc5-lite.chunk.js.map +0 -1
  59. package/dist/scripts/9042-544d97a05d-lite.chunk.js.map +0 -1
  60. /package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.LICENSE.txt → 6756-3c7f911759-lite.chunk.js.LICENSE.txt} +0 -0
  61. /package/dist/scripts/{6756-a71d33bfcf-lite.chunk.js.LICENSE.txt → 8362-ed5df8f4fc-lite.chunk.js.LICENSE.txt} +0 -0
  62. /package/dist/scripts/{bundle-3fc0b29cd5.min.js.LICENSE.txt → bundle-941a464ef0.min.js.LICENSE.txt} +0 -0
@@ -1,2 +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-72f3d31787-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3615],{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(63619),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:[],markingRequired:!0,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=3615-a0da361aa5-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/3615-a0da361aa5-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 markingRequired\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([[4125],{26025:(e,t,r)=>{r.d(t,{B:()=>a});var i=r(1048),n=r(75795),a={getAudienceAppLinkParams:function(){var e=n.O.getCurrentRoute().appLink,t=i.t.isObject(e.params)?e.params:{},r=t.users,a=t.classrooms,o=t.classroomGroups,s=function(e){var r=t[e];if(r)return Array.isArray(r)?r:[r]},l={};return r&&(l.users=s("users")),a&&(l.classrooms=s("classrooms")),o&&(l.classroomGroups=s("classroomGroups")),l},getDateRangeAppLinkParams:function(){var e=n.O.getCurrentRoute().appLink,t=i.t.isObject(e.params)?e.params:{},r=t.from,a=t.to,o=t.rangeName,s={};return r&&(s.from=r),a&&(s.to=a),o&&(s.rangeName=o),s}}},49087:(e,t,r)=>{r.d(t,{G:()=>a});var i=r(1048),n=r(4594),a={isPlaylist:function(e){return(null==e?void 0:e.typeId)===n.E.Playlist},isOwner:function(e,t){var r;return!(!t||!e||i.t.isEmpty(e._liteOwner))&&e._liteOwner.id.toString()===(null===(r=t.id)||void 0===r?void 0:r.toString())},getVideoCount:function(e){var t,r,i;if(e){var n=0;return(null===(t=e.videos)||void 0===t?void 0:t.count)&&(n+=e.videos.count),(null===(r=e.clips)||void 0===r?void 0:r.count)&&(n+=e.clips.count),(null===(i=e.interactives)||void 0===i?void 0:i.count)&&(n+=e.interactives.count),n}}}},41889:(e,t,r)=>{r.d(t,{B:()=>y});var i=r(32735),n=r(23481),a=r(110),o=r(21789),s=r(36532);const l={indicator:"sybF_"};function p(e){return p="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},p(e)}function c(e,t,r){return(t=function(e){var t=function(e){if("object"!=p(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=p(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==p(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var u,d=n.T.encloseNamespace("share-v2.shareStatusIndicator");!function(e){e[e.Active=0]="Active",e[e.Expired=1]="Expired",e[e.MarkingRequired=2]="MarkingRequired"}(u||(u={}));var m=c(c(c({},u.Active,function(){return d("activeStatusLabel")}),u.Expired,function(){return d("expiredStatusLabel")}),u.MarkingRequired,function(){return d("markingRequiredStatusLabel")}),S=c(c(c({},u.Active,"bg-success"),u.Expired,"bg-danger"),u.MarkingRequired,"bg-blue"),v=c(c(c({},u.Active,function(){return d("activeStatusTooltip")}),u.Expired,function(){return d("expiredStatusTooltip")}),u.MarkingRequired,function(){return d("markingRequiredStatusTooltip")});function y(e){var t,r=function(e){return e.markingRequired?u.MarkingRequired:o.x.hasShareExpired(e.share)?u.Expired:u.Active}(e),n=function(e,t){if(e===u.Active&&t){var r=a.O.convertUTCToLocal(t),i=a.O.format(r,"MMMM Do");return d("expiryTooltip",{date:i})}return v[e]()}(r,e.share.expireDate),p=S[r];return i.createElement(s.u,{title:n,spanHack:!0,spanHackClassName:"d-inline-flex"},i.createElement("div",{className:"d-flex align-items-center border rounded-pill px-2 ".concat(null!==(t=e.className)&&void 0!==t?t:"")},i.createElement("div",{className:"".concat(l.indicator," ").concat(p," me-2 flex-shrink-0")}),function(){var t=m[r](),n=e.share.expireDate;if(r===u.Active&&n){var a=o.x.calculateDaysToExpiry(e.share),s=d("expiryHint",{smartCount:a});return i.createElement("p",{className:"mb-0"},t," ",s)}return i.createElement("p",{className:"mb-0"},t)}()))}},2510:(e,t,r)=>{var i;r.d(t,{y:()=>i}),function(e){e.Link="Link",e.Classroom="Classroom",e.Open="Open",e.Live="Live",e.LegacyDirect="LegacyDirect"}(i||(i={}))},21789:(e,t,r)=>{r.d(t,{x:()=>o});var i=r(75896),n=r(110),a=r(4594),o={getFlattenedRecipients:function(e){return i.m.flatten(e.map(function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))},getFlattenedUniqueScopes:function(e){var t=o.getFlattenedRecipients(e);return i.m.uniq(t.map(function(e){var t;return null===(t=e.scopeId)||void 0===t?void 0:t.toString()})).filter(function(e){return!!e})},getClassroomIdFromShare:function(e){var t,r=null===(t=e.recipients)||void 0===t?void 0:t[0];if(r)return r.scopeId?r.scopeId.toString():r.recipientId&&r.recipientTypeId===a.E.Classroom?r.recipientId.toString():void 0},getClassroomForShare:function(e,t){var r=o.getClassroomIdFromShare(e);if(r)return t.find(function(e){return e.id.toString()===r.toString()})},getRecipientsCount:function(e,t){var r,i,n,a;return t?null!==(a=null===(n=e.recipients)||void 0===n?void 0:n.filter(function(e){return e.recipientTypeId===t}).length)&&void 0!==a?a:0:null!==(i=null===(r=e.recipients)||void 0===r?void 0:r.length)&&void 0!==i?i:0},hasShareExpired:function(e){if(e.expireDate){var t=new Date,r=new Date(e.expireDate);if(n.O.isAfter(t,r))return!0}return!1},calculateDaysToExpiry:function(e){if(e.expireDate){var t=n.O.diffBetween(new Date(e.expireDate),new Date,"day")||1;return 0===t?1:t}},getShareLocalExpiry:function(e,t){if(!e.expireDate)return null;var r=n.O.convertUTCToLocal(e.expireDate);return n.O.format(r,t)}}},69003:(e,t,r)=>{r.d(t,{cl:()=>b,sD:()=>I});var i=r(23481),n=r(65858),a=r(26025),o=r(49087),s=r(2510),l=r(21789),p=r(4594),c=r(45778),u=r(26860),d=r(35223),m=r(31908),S=r(14070),v=r(97291),y=r(86099);function g(e){return function(e){if(Array.isArray(e))return O(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return O(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)?O(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,i=Array(t);r<t;r++)i[r]=e[r];return i}var f=i.T.encloseNamespace("myShares.myShares");function I(e){var t,r=e.isPlugin,i=e.breakpoints,n=(null==i?void 0:i.xs)||(null==i?void 0:i.sm),a={button:!n,className:"btn btn-outline-dark"};return(r?[E]:[h,(t=e.sharedObject,(c.G.isType(t,p.E.Video)||c.G.isType(t,p.E.Clip)||c.G.isType(t,p.E.Interactive))&&L),!e.hideShareOptionsActions&&A,T]).reduce(function(t,r){return"function"!=typeof r?t:[].concat(g(t),g(r(Object.assign(Object.assign({},e),{buttonProps:a,isMobile:n}))))},[])}function b(e){var t=function(e){return e?"string"==typeof e?[+e]:e.map(function(e){return+e})||[]:[]}(e),r=a.B.getAudienceAppLinkParams();return{typeIdAppLinkParams:t,audienceAppLinkParams:r,currentAppLink:{application:v.O.MY_SHARES,action:S.e.MyShares.HOME,params:Object.assign(Object.assign({},r),{typeId:t})},sentSharesParams:{recipientUserId:null==r?void 0:r.users,recipientGroupId:[].concat(g((null==r?void 0:r.classroomGroups)||[]),g((null==r?void 0:r.classrooms)||[])),objectTypeId:t.length?t:void 0}}}function E(e){var t=e.sharedObject,r=e.buttonProps;return m.M.isVideoType(t)&&m.M.getCanBeConsumed(t).canConsume?[Object.assign(Object.assign({label:f("embedVideo"),appLink:{application:v.O.DEFAULT,action:S.e.Default.PLUGIN_SHARE,args:[t.id],params:{entityType:t.type}}},r),{analyticsOptions:{actionType:n.Vw.Share,descriptor:n.YM.PluginEmbed,workflowPhase:n.eu.Start,eventVersion:n.eq.V5}})]:[]}function h(e){var t=e.sharedObject,r=e.breakpoints,i=e.buttonProps;return m.M.isVideoType(t)?m.M.getCanBeConsumed(t).canConsume?[Object.assign({label:!(null==r?void 0:r.md)&&f("viewVideo"),tooltip:(null==r?void 0:r.md)&&f("viewVideo"),svgName:d.vn.Video,appLink:(0,y.Qh)(t),group:"main"},i)]:[]:u.v.isSeries(t)?[Object.assign({label:!(null==r?void 0:r.md)&&f("viewSeries"),tooltip:(null==r?void 0:r.md)&&f("viewSeries"),svgName:d.vn.Series,appLink:(0,y.Qh)(t),group:"main"},i)]:o.G.isPlaylist(t)?[Object.assign({label:!(null==r?void 0:r.md)&&f("viewPlaylist"),tooltip:(null==r?void 0:r.md)&&f("viewPlaylist"),svgName:d.vn.Playlist,appLink:(0,y.Qh)(t),group:"main"},i)]:[]}function L(e){var t=e.share,r=e.audienceParams,i=e.hasInsights,n=e.breakpoints,a=e.buttonProps;return i?[Object.assign({svgName:d.vn.Analytics,label:!(null==n?void 0:n.md)&&f("viewInsights"),tooltip:(null==n?void 0:n.md)&&f("viewInsights"),appLink:(0,y.pY)(t,r),group:"main"},a)]:[]}function A(e){var t=e.share,r=e.breakpoints,i=e.buttonProps;return l.x.hasShareExpired(t)||t.type===s.y.LegacyDirect?[]:t.type===s.y.Link?[Object.assign({label:!(null==r?void 0:r.md)&&f("shareLink"),tooltip:(null==r?void 0:r.md)&&f("shareLink"),svgName:d.vn.Link,appLink:(0,y.Zm)(t),group:"main"},i)]:t.type===s.y.Classroom||t.type===s.y.Open?[Object.assign({label:!(null==r?void 0:r.md)&&f("shareOptions"),tooltip:(null==r?void 0:r.md)&&f("shareOptions"),svgName:d.vn.Share,appLink:(0,y.Zm)(t),group:"main"},i)]:[]}function T(e){var t=e.share,r=e.breakpoints,i=e.buttonProps;return t.type===s.y.Link?[Object.assign(Object.assign({label:!(null==r?void 0:r.md)&&f("deleteShareLink"),tooltip:(null==r?void 0:r.md)&&f("deleteShareLink"),svgName:d.vn.Delete,appLink:(0,y.BR)(t),group:"danger"},i),{className:"btn btn-outline-dark text-danger"})]:t.type===s.y.Classroom?[Object.assign(Object.assign({label:!(null==r?void 0:r.md)&&f("deleteAssignment"),tooltip:(null==r?void 0:r.md)&&f("deleteAssignment"),svgName:d.vn.Delete,appLink:(0,y.BR)(t),group:"danger"},i),{className:"btn btn-outline-dark text-danger"})]:t.type===s.y.Open?[Object.assign(Object.assign({label:!(null==r?void 0:r.md)&&f("deleteOpenClassroom"),tooltip:(null==r?void 0:r.md)&&f("deleteOpenClassroom"),svgName:d.vn.Delete,appLink:(0,y.BR)(t),group:"danger"},i),{className:"btn btn-outline-dark text-danger"})]:t.type===s.y.LegacyDirect?[Object.assign(Object.assign({label:!(null==r?void 0:r.md)&&f("deleteLegacyShare"),tooltip:(null==r?void 0:r.md)&&f("deleteLegacyShare"),svgName:d.vn.Delete,appLink:(0,y.BR)(t),group:"danger"},i),{className:"btn btn-outline-dark text-danger"})]:[]}},86099:(e,t,r)=>{r.d(t,{BR:()=>b,Qh:()=>v,Rv:()=>g,Sj:()=>O,Zm:()=>I,pY:()=>y,rq:()=>f});var i=r(23481),n=r(28400),a=r(2510),o=r(21789),s=r(4594),l=r(31908),p=r(14070),c=r(97291),u=r(40254),d=r(82431),m=i.T.encloseNamespace("shared.utils"),S=[s.E.Video,s.E.Clip,s.E.Interactive];function v(e){return l.M.isInteractive(e)?{application:c.O.INTERACTIVES,action:p.e.Interactives.VIEW_INTERACTIVE,args:[e.id,n.m.slugify(e.name)]}:l.M.isClip(e)?{application:c.O.CLIPS,action:p.e.Clips.PLAY_CLIP,args:[e.id,n.m.slugify(e.name)]}:l.M.isVideo(e)?{application:c.O.VIDEOS,action:p.e.Videos.PLAY_VIDEO,args:[e.id,n.m.slugify(e.name)]}:e.typeId===s.E.Playlist?{application:c.O.PLAYLISTS,action:p.e.Playlists.PLAYLIST,args:[e.id,n.m.slugify(e.name)]}:e.typeId===s.E.Series?d.j.getSeriesAppLink(e):void 0}function y(e,t){if(!e)return null;if(!S.includes(e.objectTypeId))return v({id:e.objectId.toString(),typeId:e.objectTypeId});if(e.type===a.y.Classroom){var r=o.x.getClassroomIdFromShare(e);return{application:c.O.CLASSROOMS,action:p.e.Classrooms.INSIGHTS_OVERVIEW,args:[r,e.shareId],params:t}}return e.type===a.y.Open?{application:c.O.CLASSROOMS,action:p.e.Classrooms.OPEN_CLASSROOM_INSIGHTS_OVERVIEW,args:[e.shareId],params:t}:{application:c.O.MY_SHARES,action:p.e.MyShares.INSIGHTS_OVERVIEW,args:[e.shareId],params:t}}function g(e,t){if(!e)return null;if(!S.includes(e.objectTypeId))return v({id:e.objectId.toString(),typeId:e.objectTypeId});if(e.type===a.y.Classroom){var r=o.x.getClassroomIdFromShare(e);return{application:c.O.CLASSROOMS,action:p.e.Classrooms.INSIGHTS_HEATMAP,args:[r,e.shareId],params:t}}return e.type===a.y.Open?{application:c.O.CLASSROOMS,action:p.e.Classrooms.OPEN_CLASSROOM_INSIGHTS_HEATMAP,args:[e.shareId],params:t}:{application:c.O.MY_SHARES,action:p.e.MyShares.INSIGHTS_HEATMAP,args:[e.shareId],params:t}}function O(e,t){if(!e)return null;if(!S.includes(e.objectTypeId))return v({id:e.objectId.toString(),typeId:e.objectTypeId});if(e.type===a.y.Classroom){var r=o.x.getClassroomIdFromShare(e);return{application:c.O.CLASSROOMS,action:p.e.Classrooms.INSIGHTS_QUESTIONS,args:[r,e.shareId],params:t}}return e.type===a.y.Open?{application:c.O.CLASSROOMS,action:p.e.Classrooms.OPEN_CLASSROOM_INSIGHTS_QUESTIONS,args:[e.shareId],params:t}:{application:c.O.MY_SHARES,action:p.e.MyShares.INSIGHTS_QUESTIONS,args:[e.shareId],params:t}}function f(e,t){if(!e)return null;if(!S.includes(e.objectTypeId))return v({id:e.objectId.toString(),typeId:e.objectTypeId});if(e.type===a.y.Classroom){var r=o.x.getClassroomIdFromShare(e);return{application:c.O.CLASSROOMS,action:p.e.Classrooms.INSIGHTS_STUDENTS,args:[r,e.shareId],params:t}}return e.type===a.y.Open?{application:c.O.CLASSROOMS,action:p.e.Classrooms.OPEN_CLASSROOM_INSIGHTS_STUDENTS,args:[e.shareId],params:t}:{application:c.O.MY_SHARES,action:p.e.MyShares.INSIGHTS_STUDENTS,args:[e.shareId],params:t}}function I(e){if(e&&e.type!==a.y.LegacyDirect){var t=E(e);return e.type===a.y.Link?{application:c.O.SHARE,action:p.e.Share.SHARE,args:[e.objectId],params:{entityType:t}}:u.W.assignDetails({objectId:e.objectId.toString(),shareId:e.shareId,entityType:t,detailsTitle:m("shareOptions")})}}function b(e){if(e){var t=E(e);return e.type===a.y.Link?{application:c.O.SHARE,action:p.e.Share.DELETE_SHARE_LINK,args:[e.objectId],params:{entityType:t,previousAppLink:{application:c.O.MY_SHARES,action:p.e.MyShares.HOME}}}:e.type===a.y.LegacyDirect?{application:c.O.SHARE,action:p.e.Share.DELETE_LEGACY_SHARE,args:[e.shareId],params:{previousAppLink:{application:c.O.MY_SHARES,action:p.e.MyShares.HOME}}}:e.type===a.y.Classroom?{application:c.O.SHARE,action:p.e.Share.DELETE_ASSIGNMENT,args:[e.shareId],params:{previousAppLink:{application:c.O.CLASSROOMS,action:p.e.Classrooms.CLASSROOM_HOME,args:[o.x.getClassroomIdFromShare(e)]}}}:e.type===a.y.Open?{application:c.O.SHARE,action:p.e.Share.DELETE_OPEN_CLASSROOM,args:[e.shareId],params:{previousAppLink:{application:c.O.CLASSROOMS,action:p.e.Classrooms.OPEN_CLASSROOMS,args:[o.x.getClassroomIdFromShare(e)]}}}:void 0}}function E(e){return e.objectTypeId===s.E.Video?"video":e.objectTypeId===s.E.Interactive?"interactive":e.objectTypeId===s.E.Clip?"clip":e.objectTypeId===s.E.Series?"series":e.objectTypeId===s.E.Playlist?"playlist":void 0}}}]);
2
+ //# sourceMappingURL=4125-6d34b8b8f2-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/4125-6d34b8b8f2-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/utils/AnalyticsFilterUtils.ts","file:///app/packages/libs/shared/src/apps/playlists/utils/PlaylistHelper.ts","file:///app/packages/libs/shared/src/apps/share-v2/components/share-status-indicator/share-status-indicator.scss","file:///app/packages/libs/shared/src/apps/share-v2/components/share-status-indicator/ShareStatusIndicator.tsx","file:///app/packages/libs/shared/src/apps/share-v2/enums/ShareType.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareHelper.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/MySharesViewUtils.ts","file:///app/packages/projects/lite/src/shared/utils/ObjectAppLinkHelper.ts"],"sourcesContent":["import { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nexport const AnalyticsFilterHelper = {\n getAudienceAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { users, classrooms, classroomGroups } = params;\n\n const getParam = (key: keyof AudienceQueryParams) => {\n const param = params[key];\n\n if (!param)\n return;\n\n return Array.isArray(param) ? param : [param];\n };\n\n const audienceFilters: AudienceQueryParams = {};\n\n if (users)\n audienceFilters.users = getParam('users');\n\n if (classrooms)\n audienceFilters.classrooms = getParam('classrooms');\n\n if (classroomGroups)\n audienceFilters.classroomGroups = getParam('classroomGroups');\n\n return audienceFilters;\n },\n getDateRangeAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { from, to, rangeName } = params;\n\n const dateRangeFilters: DateRangeQueryParams = {};\n\n if (from)\n dateRangeFilters.from = from;\n\n if (to)\n dateRangeFilters.to = to;\n\n if (rangeName)\n dateRangeFilters.rangeName = rangeName;\n\n return dateRangeFilters;\n }\n};","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, CurrentUser, Playlist } from 'libs/shared/interfaces';\n\nexport const PlaylistHelper = {\n isPlaylist(obj: BaseObject): obj is Playlist {\n return obj?.typeId === MasterType.Playlist;\n },\n\n isOwner(playlist: Playlist, currentUser: CurrentUser): boolean {\n if (!currentUser || !playlist || ObjectHelper.isEmpty(playlist._liteOwner))\n return false;\n\n return playlist._liteOwner.id.toString() === currentUser.id?.toString();\n },\n\n getVideoCount(playlist: Playlist): number {\n if (!playlist)\n return;\n\n let count = 0;\n\n if (playlist.videos?.count)\n count += playlist.videos.count;\n\n if (playlist.clips?.count)\n count += playlist.clips.count;\n\n if (playlist.interactives?.count)\n count += playlist.interactives.count;\n\n return count;\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"indicator\":\"sybF_\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nimport styles from './share-status-indicator.scss';\n\nconst namespace = 'share-v2.shareStatusIndicator';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nenum ShareIndicatorStatus {\n Active,\n Expired,\n MarkingRequired\n}\n\nconst statusIndicatorLabels = {\n [ShareIndicatorStatus.Active]: () => getPhrase('activeStatusLabel'),\n [ShareIndicatorStatus.Expired]: () => getPhrase('expiredStatusLabel'),\n [ShareIndicatorStatus.MarkingRequired]: () => getPhrase('markingRequiredStatusLabel')\n};\n\nconst statusIndicatorColors = {\n [ShareIndicatorStatus.Active]: 'bg-success',\n [ShareIndicatorStatus.Expired]: 'bg-danger',\n [ShareIndicatorStatus.MarkingRequired]: 'bg-blue'\n};\n\nconst statusIndicatorTooltips = {\n [ShareIndicatorStatus.Active]: () => getPhrase('activeStatusTooltip'),\n [ShareIndicatorStatus.Expired]: () => getPhrase('expiredStatusTooltip'),\n [ShareIndicatorStatus.MarkingRequired]: () => getPhrase('markingRequiredStatusTooltip')\n};\n\nfunction determineStatus(props: ShareStatusIndicatorProps): ShareIndicatorStatus {\n if (props.markingRequired)\n return ShareIndicatorStatus.MarkingRequired;\n\n if (ShareHelper.hasShareExpired(props.share))\n return ShareIndicatorStatus.Expired;\n\n return ShareIndicatorStatus.Active;\n}\n\nfunction getTooltip(status: ShareIndicatorStatus, expireDate: string): string {\n if (status === ShareIndicatorStatus.Active && expireDate) {\n const localDate = DateHelper.convertUTCToLocal(expireDate);\n const formattedDate = DateHelper.format(localDate, 'MMMM Do');\n\n return getPhrase('expiryTooltip', { date: formattedDate });\n }\n\n return statusIndicatorTooltips[status]();\n}\n\ninterface ShareStatusIndicatorProps {\n share: Share;\n markingRequired: boolean;\n className?: string;\n}\n\nexport function ShareStatusIndicator(props: ShareStatusIndicatorProps) {\n const status = determineStatus(props);\n const tooltip = getTooltip(status, props.share.expireDate);\n const color = statusIndicatorColors[status];\n\n function renderDisplayText() {\n const label = statusIndicatorLabels[status]();\n const expireDate = props.share.expireDate;\n \n if (status === ShareIndicatorStatus.Active && expireDate) {\n const remainingDays = ShareHelper.calculateDaysToExpiry(props.share);\n const hint = getPhrase('expiryHint', { smartCount: remainingDays });\n\n return (\n <p className='mb-0'>\n {label} {hint}\n </p>\n );\n }\n\n return (\n <p className='mb-0'>\n {label}\n </p>\n );\n }\n\n return (\n <Tooltip title={tooltip} spanHack spanHackClassName='d-inline-flex' >\n <div className={`d-flex align-items-center border rounded-pill px-2 ${props.className ?? ''}`}>\n <div className={`${styles.indicator} ${color} me-2 flex-shrink-0`} />\n {renderDisplayText()}\n </div>\n </Tooltip>\n );\n}","export enum ShareType {\n Link = 'Link',\n Classroom = 'Classroom',\n Open = 'Open',\n Live = 'Live',\n LegacyDirect = 'LegacyDirect',\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareRecipient } from 'libs/shared/apps/share-v2/interfaces/ShareRecipient';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Classroom } from 'libs/shared/interfaces';\n\nexport const ShareHelper = {\n getFlattenedRecipients(shares: Share[]): ShareRecipient[] {\n return ArrayHelper.flatten(shares.map(s => s.recipients ?? []));\n },\n\n getFlattenedUniqueScopes(shares: Share[]): string[] {\n const recipients = ShareHelper.getFlattenedRecipients(shares);\n return ArrayHelper.uniq(recipients.map(r => r.scopeId?.toString())).filter(x => !!x);\n },\n \n getClassroomIdFromShare(share: Share): string | undefined {\n const firstRecipient = share.recipients?.[0];\n \n if (!firstRecipient) return;\n \n if (firstRecipient.scopeId)\n return firstRecipient.scopeId.toString();\n \n if (firstRecipient.recipientId && firstRecipient.recipientTypeId === MasterType.Classroom)\n return firstRecipient.recipientId.toString();\n },\n\n getClassroomForShare(share: Share, classrooms: Classroom[]): Classroom | undefined {\n const classroomId = ShareHelper.getClassroomIdFromShare(share);\n \n if (!classroomId) return;\n \n return classrooms.find(classroom => classroom.id.toString() === classroomId.toString());\n },\n\n getRecipientsCount(share: Share, type?: MasterType.ClassroomGroup | MasterType.User): number {\n if (!type) return share.recipients?.length ?? 0;\n \n return share.recipients?.filter(r => r.recipientTypeId === type).length ?? 0;\n },\n\n hasShareExpired(share: Share): boolean {\n if (share.expireDate) {\n const now = new Date();\n const expireDate = new Date(share.expireDate);\n\n if (DateHelper.isAfter(now, expireDate))\n return true;\n }\n\n return false;\n },\n\n calculateDaysToExpiry(share: Share): number | undefined {\n if (!share.expireDate) return;\n\n const remainingDays = DateHelper.diffBetween(new Date(share.expireDate), new Date(), 'day') || 1;\n const smartCount = remainingDays === 0 ? 1 : remainingDays; // Prevent zero count\n\n return smartCount;\n },\n\n getShareLocalExpiry(share: Share, format: string): string | null {\n if (!share.expireDate)\n return null;\n \n const localDate = DateHelper.convertUTCToLocal(share.expireDate);\n return DateHelper.format(localDate, format);\n }\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EventVersion, ShareDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { PlaylistHelper } from 'libs/shared/apps/playlists/utils/PlaylistHelper';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { SeriesHelper } from 'libs/shared/utils/SeriesHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { getObjectAppLink } from 'shared/utils/ObjectAppLinkHelper';\nimport { getDeleteShareAppLink, getInsightsOverviewAppLink, getShareOptionsAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function hasInsightsActions(sharedObject: BaseObject): boolean {\n return (\n MasterTypeHelper.isType(sharedObject, MasterType.Video) ||\n MasterTypeHelper.isType(sharedObject, MasterType.Clip) ||\n MasterTypeHelper.isType(sharedObject, MasterType.Interactive)\n );\n}\n\ninterface ShareObjectActionsOptions {\n share: Share;\n sharedObject: BaseObject;\n audienceParams?: AudienceQueryParams;\n hasInsights?: boolean;\n isPlugin?: boolean;\n breakpoints?: Breakpoints;\n hideShareOptionsActions?: boolean;\n}\n\nexport function getShareObjectActions(options: ShareObjectActionsOptions): ActionOptions[] {\n const { isPlugin, breakpoints } = options;\n const isMobile = breakpoints?.xs || breakpoints?.sm;\n const buttonProps = {\n button: !isMobile,\n className: 'btn btn-outline-dark'\n };\n\n const actionProviders = isPlugin ? [getActionsForPlugin] : [\n getMediaActions,\n hasInsightsActions(options.sharedObject) && getInsightsActions,\n !options.hideShareOptionsActions && getShareOptionsActions,\n getDeleteActions\n ];\n\n return actionProviders.reduce((actions, getActionFn) => {\n if (typeof getActionFn !== 'function')\n return actions;\n \n return [ ...actions, ...getActionFn({ ...options, buttonProps, isMobile }) ];\n }, [] as ActionOptions[]);\n}\n\nexport function getTypeIdParams(typeId: string | string[]): MasterType[] {\n if (!typeId) return [];\n\n if (typeof typeId === 'string')\n return [+typeId];\n\n return typeId.map(typeId => +typeId) || [];\n}\n\nexport function getSharesParams(typeId: string | string[]) {\n const typeIdAppLinkParams = getTypeIdParams(typeId);\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const currentAppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME,\n params: {\n ...audienceAppLinkParams,\n typeId: typeIdAppLinkParams\n }\n };\n const sentSharesParams = {\n recipientUserId: audienceAppLinkParams?.users,\n recipientGroupId: [ ...audienceAppLinkParams?.classroomGroups || [], ...audienceAppLinkParams?.classrooms || [] ],\n objectTypeId: typeIdAppLinkParams.length ? typeIdAppLinkParams : undefined\n };\n\n return {\n typeIdAppLinkParams,\n audienceAppLinkParams,\n currentAppLink,\n sentSharesParams\n };\n}\n\ninterface ShareActionHanderOptions extends ShareObjectActionsOptions {\n isMobile: boolean;\n buttonProps: {\n button: boolean;\n className: string;\n }\n}\n\nfunction getActionsForPlugin(options: ShareActionHanderOptions): ActionOptions[] {\n const { sharedObject, buttonProps } = options;\n\n if (VideoHelper.isVideoType(sharedObject)) {\n const { canConsume } = VideoHelper.getCanBeConsumed(sharedObject);\n\n if (!canConsume)\n return [];\n\n return [{\n label: getPhrase('embedVideo'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.PLUGIN_SHARE,\n args: [sharedObject.id],\n params: { entityType: sharedObject.type }\n },\n ...buttonProps,\n analyticsOptions: {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.PluginEmbed,\n workflowPhase: WorkflowPhase.Start,\n eventVersion: EventVersion.V5\n }\n }];\n }\n\n return [];\n}\n\nfunction getMediaActions(options: ShareActionHanderOptions): ActionOptions[] {\n const { sharedObject, breakpoints, buttonProps } = options;\n\n if (VideoHelper.isVideoType(sharedObject)) {\n const { canConsume } = VideoHelper.getCanBeConsumed(sharedObject);\n\n if (!canConsume)\n return [];\n\n return [{\n label: !breakpoints?.md && getPhrase('viewVideo'),\n tooltip: breakpoints?.md && getPhrase('viewVideo'),\n svgName: cvSvgLibrary.Video,\n appLink: getObjectAppLink(sharedObject),\n group: 'main',\n ...buttonProps\n }];\n }\n \n if (SeriesHelper.isSeries(sharedObject)) {\n return [{\n label: !breakpoints?.md && getPhrase('viewSeries'),\n tooltip: breakpoints?.md && getPhrase('viewSeries'),\n svgName: cvSvgLibrary.Series,\n appLink: getObjectAppLink(sharedObject),\n group: 'main',\n ...buttonProps\n }];\n }\n \n if (PlaylistHelper.isPlaylist(sharedObject)) {\n return [{\n label: !breakpoints?.md && getPhrase('viewPlaylist'),\n tooltip: breakpoints?.md && getPhrase('viewPlaylist'),\n svgName: cvSvgLibrary.Playlist,\n appLink: getObjectAppLink(sharedObject),\n group: 'main',\n ...buttonProps\n }];\n }\n \n return [];\n}\n\nfunction getInsightsActions(options: ShareActionHanderOptions): ActionOptions[] {\n const { share, audienceParams, hasInsights, breakpoints, buttonProps } = options;\n\n if (!hasInsights)\n return [];\n\n return [{\n svgName: cvSvgLibrary.Analytics,\n label: !breakpoints?.md && getPhrase('viewInsights'),\n tooltip: breakpoints?.md && getPhrase('viewInsights'),\n appLink: getInsightsOverviewAppLink(share, audienceParams),\n group: 'main',\n ...buttonProps\n }];\n}\n\nfunction getShareOptionsActions(options: ShareActionHanderOptions): ActionOptions[] {\n const { share, breakpoints, buttonProps } = options;\n\n if (ShareHelper.hasShareExpired(share))\n return [];\n\n if (share.type === ShareType.LegacyDirect)\n return [];\n\n if (share.type === ShareType.Link) {\n return [{\n label: !breakpoints?.md && getPhrase('shareLink'),\n tooltip: breakpoints?.md && getPhrase('shareLink'),\n svgName: cvSvgLibrary.Link,\n appLink: getShareOptionsAppLink(share),\n group: 'main',\n ...buttonProps\n }];\n }\n\n if (share.type === ShareType.Classroom) {\n return [{\n label: !breakpoints?.md && getPhrase('shareOptions'),\n tooltip: breakpoints?.md && getPhrase('shareOptions'),\n svgName: cvSvgLibrary.Share,\n appLink: getShareOptionsAppLink(share),\n group: 'main',\n ...buttonProps\n }];\n }\n\n if (share.type === ShareType.Open) {\n return [{\n label: !breakpoints?.md && getPhrase('shareOptions'),\n tooltip: breakpoints?.md && getPhrase('shareOptions'),\n svgName: cvSvgLibrary.Share,\n appLink: getShareOptionsAppLink(share),\n group: 'main',\n ...buttonProps\n }];\n }\n\n return [];\n}\n\nfunction getDeleteActions(options: ShareActionHanderOptions): ActionOptions[] {\n const { share, breakpoints, buttonProps } = options;\n \n if (share.type === ShareType.Link) {\n return [{\n label: !breakpoints?.md && getPhrase('deleteShareLink'),\n tooltip: breakpoints?.md && getPhrase('deleteShareLink'),\n svgName: cvSvgLibrary.Delete,\n appLink: getDeleteShareAppLink(share),\n group: 'danger',\n ...buttonProps,\n className: 'btn btn-outline-dark text-danger'\n }];\n }\n\n if (share.type === ShareType.Classroom) {\n return [{\n label: !breakpoints?.md && getPhrase('deleteAssignment'),\n tooltip: breakpoints?.md && getPhrase('deleteAssignment'),\n svgName: cvSvgLibrary.Delete,\n appLink: getDeleteShareAppLink(share),\n group: 'danger',\n ...buttonProps,\n className: 'btn btn-outline-dark text-danger'\n }];\n }\n\n if (share.type === ShareType.Open) {\n return [{\n label: !breakpoints?.md && getPhrase('deleteOpenClassroom'),\n tooltip: breakpoints?.md && getPhrase('deleteOpenClassroom'),\n svgName: cvSvgLibrary.Delete,\n appLink: getDeleteShareAppLink(share),\n group: 'danger',\n ...buttonProps,\n className: 'btn btn-outline-dark text-danger'\n }];\n }\n\n if (share.type === ShareType.LegacyDirect) {\n return [{\n label: !breakpoints?.md && getPhrase('deleteLegacyShare'),\n tooltip: breakpoints?.md && getPhrase('deleteLegacyShare'),\n svgName: cvSvgLibrary.Delete,\n appLink: getDeleteShareAppLink(share),\n group: 'danger',\n ...buttonProps,\n className: 'btn btn-outline-dark text-danger'\n }];\n }\n\n return [];\n}","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Series } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { AssignAppLinkHelper } from 'apps/assign/utils/AssignAppLinkHelper';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'shared.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst INSIGHTS_WHITELIST = [\n MasterType.Video,\n MasterType.Clip,\n MasterType.Interactive\n];\n\nexport function getObjectAppLink(object: BaseObject): Core.AppLink {\n if (VideoHelper.isInteractive(object)) {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (VideoHelper.isClip(object)) {\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (VideoHelper.isVideo(object)) {\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (object.typeId === MasterType.Playlist) {\n return {\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ object.id, TextHelper.slugify(object.name) ]\n };\n }\n\n if (object.typeId === MasterType.Series) {\n return SeriesAppLinkHelper.getSeriesAppLink(object as Series);\n }\n}\n\nexport function getInsightsOverviewAppLink(share: Share, params?: HashObject): Core.AppLink {\n if (!share)\n return null;\n\n if (!INSIGHTS_WHITELIST.includes(share.objectTypeId))\n return getObjectAppLink({ id: share.objectId.toString(), typeId: share.objectTypeId });\n\n if (share.type === ShareType.Classroom) {\n const classroomId = ShareHelper.getClassroomIdFromShare(share);\n\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.INSIGHTS_OVERVIEW,\n args: [ classroomId, share.shareId ],\n params\n };\n }\n\n if (share.type === ShareType.Open) {\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOM_INSIGHTS_OVERVIEW,\n args: [share.shareId],\n params\n };\n }\n\n return {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INSIGHTS_OVERVIEW,\n args: [share.shareId],\n params\n };\n}\n\nexport function getInsightsHeatmapAppLink(share: Share, params?: HashObject): Core.AppLink {\n if (!share)\n return null;\n\n if (!INSIGHTS_WHITELIST.includes(share.objectTypeId))\n return getObjectAppLink({ id: share.objectId.toString(), typeId: share.objectTypeId });\n\n if (share.type === ShareType.Classroom) {\n const classroomId = ShareHelper.getClassroomIdFromShare(share);\n\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.INSIGHTS_HEATMAP,\n args: [ classroomId, share.shareId ],\n params\n };\n }\n\n if (share.type === ShareType.Open) {\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOM_INSIGHTS_HEATMAP,\n args: [share.shareId],\n params\n };\n }\n\n return {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INSIGHTS_HEATMAP,\n args: [share.shareId],\n params\n };\n}\n\nexport function getInsightsQuestionsAppLink(share: Share, params?: HashObject): Core.AppLink {\n if (!share)\n return null;\n\n if (!INSIGHTS_WHITELIST.includes(share.objectTypeId))\n return getObjectAppLink({ id: share.objectId.toString(), typeId: share.objectTypeId });\n\n if (share.type === ShareType.Classroom) {\n const classroomId = ShareHelper.getClassroomIdFromShare(share);\n\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.INSIGHTS_QUESTIONS,\n args: [ classroomId, share.shareId ],\n params\n };\n }\n\n if (share.type === ShareType.Open) {\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOM_INSIGHTS_QUESTIONS,\n args: [share.shareId],\n params\n };\n }\n\n return {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INSIGHTS_QUESTIONS,\n args: [share.shareId],\n params\n };\n}\n\nexport function getInsightsStudentsAppLink(share: Share, params?: HashObject): Core.AppLink {\n if (!share)\n return null;\n \n if (!INSIGHTS_WHITELIST.includes(share.objectTypeId))\n return getObjectAppLink({ id: share.objectId.toString(), typeId: share.objectTypeId });\n\n if (share.type === ShareType.Classroom) {\n const classroomId = ShareHelper.getClassroomIdFromShare(share);\n\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.INSIGHTS_STUDENTS,\n args: [ classroomId, share.shareId ],\n params\n };\n }\n\n if (share.type === ShareType.Open) {\n return {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOM_INSIGHTS_STUDENTS,\n args: [share.shareId],\n params\n };\n }\n\n return {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INSIGHTS_STUDENTS,\n args: [share.shareId],\n params\n };\n}\n\nexport function getShareOptionsAppLink(share: Share): Core.AppLink {\n if (!share) return;\n if (share.type === ShareType.LegacyDirect) return;\n\n const entityType = getSharableEntityType(share);\n\n if (share.type === ShareType.Link) {\n return {\n application: AppChannels.SHARE,\n action: Actions.Share.SHARE,\n args: [share.objectId],\n params: { entityType }\n };\n }\n\n return AssignAppLinkHelper.assignDetails({\n objectId: share.objectId.toString(),\n shareId: share.shareId,\n entityType,\n detailsTitle: getPhrase('shareOptions')\n });\n}\n\nexport function getDeleteShareAppLink(share: Share): Core.AppLink {\n if (!share) return;\n\n const entityType = getSharableEntityType(share);\n\n if (share.type === ShareType.Link) {\n return {\n application: AppChannels.SHARE,\n action: Actions.Share.DELETE_SHARE_LINK,\n args: [share.objectId],\n params: {\n entityType,\n previousAppLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME\n } as Core.AppLink\n }\n };\n }\n\n if (share.type === ShareType.LegacyDirect) {\n return {\n application: AppChannels.SHARE,\n action: Actions.Share.DELETE_LEGACY_SHARE,\n args: [share.shareId],\n params: {\n previousAppLink: {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.HOME\n } as Core.AppLink\n }\n };\n }\n\n if (share.type === ShareType.Classroom) {\n return {\n application: AppChannels.SHARE,\n action: Actions.Share.DELETE_ASSIGNMENT,\n args: [share.shareId],\n params: {\n previousAppLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.CLASSROOM_HOME,\n args: [ShareHelper.getClassroomIdFromShare(share)]\n } as Core.AppLink\n }\n };\n }\n\n if (share.type === ShareType.Open) {\n return {\n application: AppChannels.SHARE,\n action: Actions.Share.DELETE_OPEN_CLASSROOM,\n args: [share.shareId],\n params: {\n previousAppLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.OPEN_CLASSROOMS,\n args: [ShareHelper.getClassroomIdFromShare(share)]\n } as Core.AppLink\n }\n };\n }\n}\n\nexport function getInsightsReportAppLink(share: Share): Core.AppLink {\n if (!share) return;\n if (share.objectTypeId !== MasterType.Interactive) return;\n\n return {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_GENERATE_REPORT,\n args: [share.objectId]\n };\n}\n\nfunction getSharableEntityType(share: Share): SharableEntityType {\n if (share.objectTypeId === MasterType.Video)\n return 'video';\n\n if (share.objectTypeId === MasterType.Interactive)\n return 'interactive';\n \n if (share.objectTypeId === MasterType.Clip)\n return 'clip';\n\n if (share.objectTypeId === MasterType.Series)\n return 'series';\n\n if (share.objectTypeId === MasterType.Playlist)\n return 'playlist';\n}"],"names":["AnalyticsFilterHelper","getAudienceAppLinkParams","appLink","params","users","classrooms","classroomGroups","getParam","key","param","Array","isArray","audienceFilters","getDateRangeAppLinkParams","from","to","rangeName","dateRangeFilters","PlaylistHelper","isPlaylist","obj","typeId","isOwner","playlist","currentUser","_liteOwner","id","toString","getVideoCount","count","videos","clips","interactives","ShareIndicatorStatus","getPhrase","LanguageService","statusIndicatorLabels","Active","Expired","MarkingRequired","statusIndicatorColors","statusIndicatorTooltips","ShareStatusIndicator","props","status","markingRequired","ShareHelper","share","determineStatus","tooltip","expireDate","localDate","DateHelper","formattedDate","date","getTooltip","color","Tooltip","title","spanHack","spanHackClassName","className","label","remainingDays","hint","smartCount","renderDisplayText","ShareType","getFlattenedRecipients","shares","map","s","recipients","getFlattenedUniqueScopes","r","scopeId","filter","x","getClassroomIdFromShare","firstRecipient","recipientId","recipientTypeId","getClassroomForShare","classroomId","find","classroom","getRecipientsCount","type","length","hasShareExpired","now","Date","calculateDaysToExpiry","getShareLocalExpiry","format","getShareObjectActions","options","sharedObject","isPlugin","breakpoints","isMobile","xs","sm","buttonProps","button","getActionsForPlugin","getMediaActions","getInsightsActions","hideShareOptionsActions","getShareOptionsActions","getDeleteActions","reduce","actions","getActionFn","getSharesParams","typeIdAppLinkParams","getTypeIdParams","audienceAppLinkParams","currentAppLink","application","action","sentSharesParams","recipientUserId","recipientGroupId","objectTypeId","undefined","canConsume","args","entityType","analyticsOptions","actionType","descriptor","workflowPhase","eventVersion","md","svgName","group","audienceParams","hasInsights","INSIGHTS_WHITELIST","getObjectAppLink","object","name","getInsightsOverviewAppLink","includes","objectId","shareId","getInsightsHeatmapAppLink","getInsightsQuestionsAppLink","getInsightsStudentsAppLink","getShareOptionsAppLink","getSharableEntityType","detailsTitle","getDeleteShareAppLink","previousAppLink"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4598],{54405:(e,a,t)=>{t.d(a,{X:()=>i});var i={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}}}},18006:(e,a,t)=>{t.d(a,{c:()=>i,q:()=>n});var i="D8qRe7",n="GRWx6w"},9566:(e,a,t)=>{t.d(a,{G6:()=>m,GJ:()=>v,VE:()=>h});var i=t(23481),n=t(110),r=t(33518),s=t(2510),o=t(4594),c=t(35223),d=t(14070),u=t(97291),l=i.T.encloseNamespace("myShares.demoInsights"),m={type:s.y.Link,privacy:r.e.JustMySchool,objectId:"0",objectTypeId:o.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}},v={share:m,sharedObject:null,shareRecipients:null,dateShared:n.O.subtract(new Date,7,"days").toISOString()},g={application:u.O.MY_SHARES,action:d.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},h={svgName:c.vn.Analytics,label:l("demoInsights"),appLink:g,group:"insights",className:"btn btn-outline-dark"}},44183:(e,a,t)=>{t.r(a),t.d(a,{InsightsHeatmapDemoView:()=>S});var i=t(32735),n=t(23481),r=t(2948),s=t(20354),o=t(26025),c=t(60051),d=t(39151),u=t(54405),l=t(47812),m=t(31949),v=t(93322),g=t(79612),h=t(86702),p=t(63619),y=t(17132),f=t(18006),b=t(9566),k=t(10447);function w(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,i=Array(a);t<a;t++)i[t]=e[t];return i}var j=n.T.encloseNamespace("shared.insightsHeatmap");function S(){var e,a,t,n,S,I,E,O=(I=(0,r.D)(h.y.ANONYMISE_USERS),E=1,function(e){if(Array.isArray(e))return e}(I)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var i,n,r,s,o=[],c=!0,d=!1;try{if(r=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;c=!1}else for(;!(c=(i=r.call(t)).done)&&(o.push(i.value),o.length!==a);c=!0);}catch(e){d=!0,n=e}finally{try{if(!c&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(d)throw n}}return o}}(I,E)||function(e,a){if(e){if("string"==typeof e)return w(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?w(e,a):void 0}}(I,E)||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,v.F)();var A=s.a.useBasicFetch(m.N.currentUser()),D=s.a.useBasicFetch(u.X.interactiveMetadata()),R=s.a.useBasicFetch(d.L.config()),B=o.B.getAudienceAppLinkParams(),F=o.B.getDateRangeAppLinkParams(),C=s.a.useBasicFetch(u.X.aggregateHeatmap()),M=s.a.useBasicFetch(u.X.individualHeatmap()),N=s.a.useBasicFetch(u.X.users()),L=s.a.useBasicFetch(u.X.videoViews()),V=s.a.useBasicFetch(D.data&&l.k.createViewKey(function(){var e;return(null===(e=R.data)||void 0===e?void 0:e.liteUrl.includes("staging"))?f.c:f.q}(),c.f.Share));(0,g.M)({title:D.data?j("pageTitle",{video:null===(e=D.data)||void 0===e?void 0:e.name}):null});var _=!!(A.data&&L.data&&D.data&&C.data&&V.data&&N.data),z=!!M.data,G=Object.assign(Object.assign({},B),F),H=Object.assign(Object.assign({},b.G6),{objectId:null===(a=D.data)||void 0===a?void 0:a.id});return i.createElement("div",{className:"px-3"},i.createElement(p.j,{video:D.data,tabs:(0,k.aq)(null===(t=D.data)||void 0===t?void 0:t.id,"heatmap",G),dateRangeAppLinkParams:F,share:H,yearGroups:[],markingRequired:!0,isDemo:!0}),i.createElement(y.w,{aggregateEngagement:C.data,individualEngagement:null===(n=M.data)||void 0===n?void 0:n.data,yearGroups:null===(S=L.data)||void 0===S?void 0:S.yearGroupCount,config:R.data,users:N.data,viewKey:V.data,hasDataLoaded:_,tableDataLoaded:z,anonymiseUsers:O}))}}}]);
2
+ //# sourceMappingURL=4598-e25e9e03d6-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/4598-e25e9e03d6-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/DemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/MySharesDemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/demo/heatmap/InsightsHeatmapDemoView.tsx"],"sourcesContent":["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};","export const DEMO_INTERACTIVE_STAGING_ID = 'D8qRe7';\nexport const DEMO_INTERACTIVE_PROD_ID = 'GRWx6w';","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 { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Engagement, IndividualEngagementResponse, InteractiveMetadata, PlayerViewKey } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InsightsHeatmap } from 'apps/my-shares/components/insights-heatmap/InsightsHeatmap';\nimport { DEMO_INTERACTIVE_PROD_ID, DEMO_INTERACTIVE_STAGING_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { DEMO_INSIGHTS_SHARE } from 'apps/my-shares/constants/MySharesDemoInsights';\nimport { getInsightsDemoInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'shared.insightsHeatmap';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function InsightsHeatmapDemoView() {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n InsightsDemoRequests.aggregateHeatmap()\n );\n\n const individualEngagement = Flight.useBasicFetch<IndividualEngagementResponse>(\n InsightsDemoRequests.individualHeatmap()\n );\n\n const users = Flight.useBasicFetch<AnonUser[]>(InsightsDemoRequests.users());\n\n const videoViews = Flight.useBasicFetch<VideoViewEventResponse>(InsightsDemoRequests.videoViews());\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(video.data &&\n PlayerRequests.createViewKey(getDemoInteractiveId(), MediaIdType.Share));\n\n useSetPageMetadata({ title: video.data ? getPhrase('pageTitle', { video: video.data?.name }) : null });\n\n const hasDataLoaded =\n !!currentUser.data &&\n !!videoViews.data &&\n !!video.data &&\n !!aggregateEngagement.data &&\n !!viewKey.data &&\n !!users.data;\n\n const tableDataLoaded = !!individualEngagement.data;\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n function getDemoInteractiveId() {\n if (config.data?.liteUrl.includes('staging')) return DEMO_INTERACTIVE_STAGING_ID;\n\n return DEMO_INTERACTIVE_PROD_ID;\n }\n\n const share = {\n ...DEMO_INSIGHTS_SHARE,\n objectId: video.data?.id\n };\n\n return (\n <div className='px-3'>\n <InsightsHeader\n video={video.data}\n tabs={getInsightsDemoInteractiveTabs(video.data?.id, 'heatmap', params)}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n share={share}\n yearGroups={[]}\n markingRequired\n isDemo\n />\n\n <InsightsHeatmap\n aggregateEngagement={aggregateEngagement.data}\n individualEngagement={individualEngagement.data?.data}\n yearGroups={videoViews.data?.yearGroupCount}\n config={config.data}\n users={users.data}\n viewKey={viewKey.data}\n hasDataLoaded={hasDataLoaded}\n tableDataLoaded={tableDataLoaded}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n );\n}"],"names":["InsightsDemoRequests","interactive","url","key","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","DEMO_INTERACTIVE_STAGING_ID","DEMO_INTERACTIVE_PROD_ID","getPhrase","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","svgName","label","appLink","group","className","InsightsHeatmapDemoView","anonymiseUsers","currentUser","video","config","audienceAppLinkParams","dateRangeAppLinkParams","aggregateEngagement","individualEngagement","viewKey","data","liteUrl","includes","getDemoInteractiveId","title","name","hasDataLoaded","tableDataLoaded","params","id","tabs","yearGroups","markingRequired","isDemo","yearGroupCount"],"sourceRoot":""}