@clickview/lite 0.82.1 → 0.82.2-rc.0

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 (142) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/2074-lite-ac8da6c78b.chunk.css +4 -0
  3. package/dist/languages/en.json +1 -1
  4. package/dist/scripts/{1199-01cc084886-lite.chunk.js → 1199-da55d69853-lite.chunk.js} +1 -1
  5. package/dist/scripts/{1199-01cc084886-lite.chunk.js.map → 1199-da55d69853-lite.chunk.js.map} +1 -1
  6. package/dist/scripts/1202-d96ad80884-lite.chunk.js +2 -0
  7. package/dist/scripts/1202-d96ad80884-lite.chunk.js.map +1 -0
  8. package/dist/scripts/{4208-0706461da6-lite.chunk.js → 1336-1826f6e582-lite.chunk.js} +2 -2
  9. package/dist/scripts/1336-1826f6e582-lite.chunk.js.map +1 -0
  10. package/dist/scripts/2074-39b86b9a22-lite.chunk.js +2 -0
  11. package/dist/scripts/2074-39b86b9a22-lite.chunk.js.map +1 -0
  12. package/dist/scripts/{2664-907153c03b-lite.chunk.js → 2664-87c8cbfa7f-lite.chunk.js} +2 -2
  13. package/dist/scripts/2664-87c8cbfa7f-lite.chunk.js.map +1 -0
  14. package/dist/scripts/2888-2596e106a5-lite.chunk.js +2 -0
  15. package/dist/scripts/2888-2596e106a5-lite.chunk.js.map +1 -0
  16. package/dist/scripts/289-669c0c8222-lite.chunk.js +2 -0
  17. package/dist/scripts/289-669c0c8222-lite.chunk.js.map +1 -0
  18. package/dist/scripts/{9911-8892b6dbfe-lite.chunk.js → 3612-8c6423bd51-lite.chunk.js} +2 -2
  19. package/dist/scripts/{9911-8892b6dbfe-lite.chunk.js.map → 3612-8c6423bd51-lite.chunk.js.map} +1 -1
  20. package/dist/scripts/3840-98c79fc0d8-lite.chunk.js +2 -0
  21. package/dist/scripts/3840-98c79fc0d8-lite.chunk.js.map +1 -0
  22. package/dist/scripts/3893-2856933742-lite.chunk.js +2 -0
  23. package/dist/scripts/3893-2856933742-lite.chunk.js.map +1 -0
  24. package/dist/scripts/4006-9dfe9cec1b-lite.chunk.js +3 -0
  25. package/dist/scripts/4006-9dfe9cec1b-lite.chunk.js.map +1 -0
  26. package/dist/scripts/{4177-2d876c7b14-lite.chunk.js → 4177-285ddf9ae3-lite.chunk.js} +2 -2
  27. package/dist/scripts/4177-285ddf9ae3-lite.chunk.js.map +1 -0
  28. package/dist/scripts/{4578-27028d26eb-lite.chunk.js → 4578-7578bcf17a-lite.chunk.js} +2 -2
  29. package/dist/scripts/4578-7578bcf17a-lite.chunk.js.map +1 -0
  30. package/dist/scripts/{4621-7fb0a05bcb-lite.chunk.js → 4621-1f79d94416-lite.chunk.js} +2 -2
  31. package/dist/scripts/4621-1f79d94416-lite.chunk.js.map +1 -0
  32. package/dist/scripts/4806-f36469abb7-lite.chunk.js +2 -0
  33. package/dist/scripts/4806-f36469abb7-lite.chunk.js.map +1 -0
  34. package/dist/scripts/{4948-ba684e5f4f-lite.chunk.js → 4948-de1c75e7fb-lite.chunk.js} +1 -1
  35. package/dist/scripts/{4948-ba684e5f4f-lite.chunk.js.map → 4948-de1c75e7fb-lite.chunk.js.map} +1 -1
  36. package/dist/scripts/4985-bdfa839f8f-lite.chunk.js +2 -0
  37. package/dist/scripts/4985-bdfa839f8f-lite.chunk.js.map +1 -0
  38. package/dist/scripts/{5554-f1f3baf822-lite.chunk.js → 5554-17bb3b86fc-lite.chunk.js} +2 -2
  39. package/dist/scripts/5554-17bb3b86fc-lite.chunk.js.map +1 -0
  40. package/dist/scripts/5579-a9c152057f-lite.chunk.js +2 -0
  41. package/dist/scripts/5579-a9c152057f-lite.chunk.js.map +1 -0
  42. package/dist/scripts/5712-e784cfe89c-lite.chunk.js +2 -0
  43. package/dist/scripts/5712-e784cfe89c-lite.chunk.js.map +1 -0
  44. package/dist/scripts/6070-a390fdce21-lite.chunk.js +2 -0
  45. package/dist/scripts/6070-a390fdce21-lite.chunk.js.map +1 -0
  46. package/dist/scripts/{6909-ba75701156-lite.chunk.js → 6909-a9b8930e37-lite.chunk.js} +2 -2
  47. package/dist/scripts/6909-a9b8930e37-lite.chunk.js.map +1 -0
  48. package/dist/scripts/7401-98135f09e8-lite.chunk.js +2 -0
  49. package/dist/scripts/7401-98135f09e8-lite.chunk.js.map +1 -0
  50. package/dist/scripts/{7617-211f084b70-lite.chunk.js → 7617-9d34c841e6-lite.chunk.js} +2 -2
  51. package/dist/scripts/7617-9d34c841e6-lite.chunk.js.map +1 -0
  52. package/dist/scripts/7742-342db3ce4f-lite.chunk.js +2 -0
  53. package/dist/scripts/7742-342db3ce4f-lite.chunk.js.map +1 -0
  54. package/dist/scripts/7843-f6033528ce-lite.chunk.js +2 -0
  55. package/dist/scripts/7843-f6033528ce-lite.chunk.js.map +1 -0
  56. package/dist/scripts/787-dcb3a0a26c-lite.chunk.js +2 -0
  57. package/dist/scripts/787-dcb3a0a26c-lite.chunk.js.map +1 -0
  58. package/dist/scripts/8077-9fdb522d7e-lite.chunk.js +2 -0
  59. package/dist/scripts/8077-9fdb522d7e-lite.chunk.js.map +1 -0
  60. package/dist/scripts/{3392-f7f8cb65e5-lite.chunk.js → 8133-ffcff3b7fc-lite.chunk.js} +3 -3
  61. package/dist/scripts/8133-ffcff3b7fc-lite.chunk.js.map +1 -0
  62. package/dist/scripts/8364-ff63447d36-lite.chunk.js +3 -0
  63. package/dist/scripts/8364-ff63447d36-lite.chunk.js.map +1 -0
  64. package/dist/scripts/8672-6967ce8a23-lite.chunk.js +2 -0
  65. package/dist/scripts/8672-6967ce8a23-lite.chunk.js.map +1 -0
  66. package/dist/scripts/{9042-fd7e79b891-lite.chunk.js → 9042-fdc5ecb459-lite.chunk.js} +1 -1
  67. package/dist/scripts/{9042-fd7e79b891-lite.chunk.js.map → 9042-fdc5ecb459-lite.chunk.js.map} +1 -1
  68. package/dist/scripts/9295-4242401e60-lite.chunk.js +2 -0
  69. package/dist/scripts/9295-4242401e60-lite.chunk.js.map +1 -0
  70. package/dist/scripts/{9742-3f6b75484a-lite.chunk.js → 9742-5f99d74bb0-lite.chunk.js} +2 -2
  71. package/dist/scripts/9742-5f99d74bb0-lite.chunk.js.map +1 -0
  72. package/dist/scripts/979-4b893e5603-lite.chunk.js +2 -0
  73. package/dist/scripts/979-4b893e5603-lite.chunk.js.map +1 -0
  74. package/dist/scripts/9911-9272b96e46-lite.chunk.js +2 -0
  75. package/dist/scripts/9911-9272b96e46-lite.chunk.js.map +1 -0
  76. package/dist/scripts/bundle-9a3e49399a.min.js +3 -0
  77. package/dist/scripts/{bundle-1187cb1e9f.min.js.map → bundle-9a3e49399a.min.js.map} +1 -1
  78. package/package.json +1 -1
  79. package/dist/scripts/1074-fdce06d863-lite.chunk.js +0 -2
  80. package/dist/scripts/1074-fdce06d863-lite.chunk.js.map +0 -1
  81. package/dist/scripts/2664-907153c03b-lite.chunk.js.map +0 -1
  82. package/dist/scripts/2970-024b1dd55d-lite.chunk.js +0 -2
  83. package/dist/scripts/2970-024b1dd55d-lite.chunk.js.map +0 -1
  84. package/dist/scripts/3392-f7f8cb65e5-lite.chunk.js.map +0 -1
  85. package/dist/scripts/3840-59e5e53cda-lite.chunk.js +0 -2
  86. package/dist/scripts/3840-59e5e53cda-lite.chunk.js.map +0 -1
  87. package/dist/scripts/4177-2d876c7b14-lite.chunk.js.map +0 -1
  88. package/dist/scripts/4208-0706461da6-lite.chunk.js.map +0 -1
  89. package/dist/scripts/4578-27028d26eb-lite.chunk.js.map +0 -1
  90. package/dist/scripts/4598-8f5266e4c2-lite.chunk.js +0 -2
  91. package/dist/scripts/4598-8f5266e4c2-lite.chunk.js.map +0 -1
  92. package/dist/scripts/4621-7fb0a05bcb-lite.chunk.js.map +0 -1
  93. package/dist/scripts/4806-a6f31d703c-lite.chunk.js +0 -2
  94. package/dist/scripts/4806-a6f31d703c-lite.chunk.js.map +0 -1
  95. package/dist/scripts/4985-7e02d5df40-lite.chunk.js +0 -2
  96. package/dist/scripts/4985-7e02d5df40-lite.chunk.js.map +0 -1
  97. package/dist/scripts/5554-f1f3baf822-lite.chunk.js.map +0 -1
  98. package/dist/scripts/5712-7cee70c6b4-lite.chunk.js +0 -2
  99. package/dist/scripts/5712-7cee70c6b4-lite.chunk.js.map +0 -1
  100. package/dist/scripts/6550-d99e0ed75d-lite.chunk.js +0 -2
  101. package/dist/scripts/6550-d99e0ed75d-lite.chunk.js.map +0 -1
  102. package/dist/scripts/6909-ba75701156-lite.chunk.js.map +0 -1
  103. package/dist/scripts/7148-1ced1b5dce-lite.chunk.js +0 -2
  104. package/dist/scripts/7148-1ced1b5dce-lite.chunk.js.map +0 -1
  105. package/dist/scripts/7568-55e9b01367-lite.chunk.js +0 -3
  106. package/dist/scripts/7568-55e9b01367-lite.chunk.js.map +0 -1
  107. package/dist/scripts/7617-211f084b70-lite.chunk.js.map +0 -1
  108. package/dist/scripts/7742-514844bd1a-lite.chunk.js +0 -2
  109. package/dist/scripts/7742-514844bd1a-lite.chunk.js.map +0 -1
  110. package/dist/scripts/7843-cbebf1a786-lite.chunk.js +0 -2
  111. package/dist/scripts/7843-cbebf1a786-lite.chunk.js.map +0 -1
  112. package/dist/scripts/8077-dfd239131d-lite.chunk.js +0 -2
  113. package/dist/scripts/8077-dfd239131d-lite.chunk.js.map +0 -1
  114. package/dist/scripts/843-4dbc5df109-lite.chunk.js +0 -3
  115. package/dist/scripts/843-4dbc5df109-lite.chunk.js.map +0 -1
  116. package/dist/scripts/8735-e74a148502-lite.chunk.js +0 -2
  117. package/dist/scripts/8735-e74a148502-lite.chunk.js.map +0 -1
  118. package/dist/scripts/8856-2d332952ae-lite.chunk.js +0 -2
  119. package/dist/scripts/8856-2d332952ae-lite.chunk.js.map +0 -1
  120. package/dist/scripts/904-2784e45cfc-lite.chunk.js +0 -2
  121. package/dist/scripts/904-2784e45cfc-lite.chunk.js.map +0 -1
  122. package/dist/scripts/9295-eb130a0b17-lite.chunk.js +0 -2
  123. package/dist/scripts/9295-eb130a0b17-lite.chunk.js.map +0 -1
  124. package/dist/scripts/9528-4e954d9dff-lite.chunk.js +0 -2
  125. package/dist/scripts/9528-4e954d9dff-lite.chunk.js.map +0 -1
  126. package/dist/scripts/9742-3f6b75484a-lite.chunk.js.map +0 -1
  127. package/dist/scripts/979-6a70a0e616-lite.chunk.js +0 -2
  128. package/dist/scripts/979-6a70a0e616-lite.chunk.js.map +0 -1
  129. package/dist/scripts/bundle-1187cb1e9f.min.js +0 -3
  130. /package/dist/css/{9528-lite-4a892bdbf2.chunk.css → 1202-lite-4a892bdbf2.chunk.css} +0 -0
  131. /package/dist/css/{7148-lite-856c02f000.chunk.css → 2888-lite-856c02f000.chunk.css} +0 -0
  132. /package/dist/css/{904-lite-2435a34b13.chunk.css → 289-lite-2435a34b13.chunk.css} +0 -0
  133. /package/dist/css/{9911-lite-2b4142796a.chunk.css → 3612-lite-2b4142796a.chunk.css} +0 -0
  134. /package/dist/css/{8856-lite-f8e496136d.chunk.css → 5579-lite-f8e496136d.chunk.css} +0 -0
  135. /package/dist/css/{6550-lite-45dc286aab.chunk.css → 6070-lite-45dc286aab.chunk.css} +0 -0
  136. /package/dist/css/{2970-lite-5a317efacd.chunk.css → 787-lite-5a317efacd.chunk.css} +0 -0
  137. /package/dist/css/{843-lite-db31e36b79.chunk.css → 8364-lite-db31e36b79.chunk.css} +0 -0
  138. /package/dist/css/{8735-lite-856c02f000.chunk.css → 9911-lite-856c02f000.chunk.css} +0 -0
  139. /package/dist/scripts/{3392-f7f8cb65e5-lite.chunk.js.LICENSE.txt → 4006-9dfe9cec1b-lite.chunk.js.LICENSE.txt} +0 -0
  140. /package/dist/scripts/{7568-55e9b01367-lite.chunk.js.LICENSE.txt → 8133-ffcff3b7fc-lite.chunk.js.LICENSE.txt} +0 -0
  141. /package/dist/scripts/{843-4dbc5df109-lite.chunk.js.LICENSE.txt → 8364-ff63447d36-lite.chunk.js.LICENSE.txt} +0 -0
  142. /package/dist/scripts/{bundle-1187cb1e9f.min.js.LICENSE.txt → bundle-9a3e49399a.min.js.LICENSE.txt} +0 -0
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7148],{41196:(e,t,n)=>{n.d(t,{W:()=>o});var r=n(20354),a=n(93479),i=n(20768),s=n(31949);function o(e,t,n){var o,l=r.a.useBasicFetch(s.N.currentUser()),u=r.a.useBasicFetch(!!e&&i.b.interactiveMetadata(e)),d=r.a.useBasicFetch(!!(null===(o=u.data)||void 0===o?void 0:o.interactiveId)&&i.b.interactive(u.data.interactiveId)),c=!!l.data&&!!d.data;return r.a.useBasicFetch(c&&a.I.interactiveResultSet(u.data.interactiveId,u.data.id,l.data,t,n))}},26136:(e,t,n)=>{n.d(t,{B:()=>o});var r=n(76198),a=n(23481),i=n(64818),s=a.T.encloseNamespace("shared.analyticsUtils");function o(e,t){return e?t?(0,r._8)((n=e.id,a=e.sessionId,o=+"".concat(n||function(e){if(!e)return 0;for(var t=0,n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return Math.abs(t)}(a)).concat(Math.floor((new Date).getMinutes()/5)),{dictionaries:[r.O9,r.yd],separator:" ",length:2,style:"capital",seed:o})):e.deleted?s("deleted"):i.l.getFullName(e)||s("anonUser"):s("anonUser");var n,a,o}},3218:(e,t,n)=>{n.d(t,{R:()=>k});var r=n(32735),a=n(69087),i=n(26136),s=n(39157),o=n(69186),l=n(86572),u=n(28972),d=n(83140),c=n(80845),m=n(23481),f=n(2102),v=n(36532),b=m.T.encloseNamespace("interactives.studentResponseList");function h(e){var t=Object.keys(e.markedAnswers).length;return r.createElement("div",{className:"d-flex justify-content-end pt-3"},r.createElement("div",null,!e.showSubmitButtonSpinner&&r.createElement("button",{className:"btn btn-link",onClick:e.onClickClose},b("close")),!!e.interactionsToMark.length&&r.createElement(r.Fragment,null,e.isDemo?r.createElement(v.u,{id:"submitAnswers",title:b("demoOnly"),spanHack:!0,spanHackClassName:"d-inline-flex"},r.createElement("button",{className:"btn btn-outline-dark pointer-events-none",disabled:!t},b("submitAnswers"))):r.createElement(f.m,{variant:"outline-dark",onClick:e.onClickSubmit,disabled:!t,showSpinner:e.showSubmitButtonSpinner},b("submitAnswers")))))}var y=m.T.encloseNamespace("interactives.studentResponseList");function p(e){var t=Object.keys(e.markedAnswers).length;return r.createElement("div",{className:"d-flex justify-content-between pb-3"},r.createElement("div",{className:"d-flex"},!!e.summary.unanswered&&r.createElement("div",{className:"bg-light rounded p-2 me-2"},r.createElement("strong",{className:"me-2"},y("unanswered")),e.summary.unanswered),r.createElement("div",{className:"bg-light rounded p-2 me-2"},r.createElement("strong",{className:"me-2"},y("score")),e.summary.awaitingMarking?r.createElement("em",null,y("pending")):"".concat(Math.round(100*e.summary.percentCorrect),"%"))),!!e.interactionsToMark.length&&r.createElement(r.Fragment,null,e.isDemo?r.createElement(v.u,{id:"submitAnswers",title:y("demoOnly"),spanHack:!0},r.createElement("button",{className:"btn btn-outline-dark pointer-events-none",disabled:!t},y("submitAnswers"))):r.createElement(f.m,{variant:"outline-dark",onClick:e.onClickSubmit,disabled:!t,showSpinner:e.showSubmitButtonSpinner},y("submitAnswers"))))}const g={awaitingMarking:"MvGb5"};function w(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,s,o=[],l=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){u=!0,a=e}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(u)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return S(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?S(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 S(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function k(e){var t,n,m,f,v=w(r.useState(!1),2),b=v[0],y=v[1],S=(t=r.useRef(null),n=w(r.useState(!1),2),m=n[0],f=n[1],r.useEffect(function(){t.current&&!m&&(f(!0),requestAnimationFrame(function(){return t.current.scrollIntoView({behavior:"smooth",block:"center"})}))},[t.current,m]),t),k=(0,s.Rt)(e.interactive,e.studentResults),A=(0,c.Q)(e.interactive),C=function(e,t){return e.filter(function(e){return d.A.isInteractionCorrect(e,(0,c.j_)(t))===u.w.AwaitingMarking})}(A,e.studentResults);function I(){y(!0),e.submitMarkedAnswers()}return r.createElement(r.Fragment,null,r.createElement(p,{summary:k,interactionsToMark:C,markedAnswers:e.markedAnswers,onClickSubmit:I,showSubmitButtonSpinner:b,isDemo:e.isDemo}),r.createElement("ul",{className:"list-unstyled"},A.map(function(t,n){var u,d=t.id.toString()===(null===(u=e.selectedInteractionId)||void 0===u?void 0:u.toString()),c=C.some(function(e){return e.id===t.id}),m=(0,i.B)(e.studentResults.user,e.anonymiseUsers),f="p-2 mb-3 rounded";return d&&(f+=" border-2 border-info shadow"),f+=c?" ".concat(g.awaitingMarking):" border",r.createElement("li",{key:n,className:f,ref:d?S:null},r.createElement("div",{className:"d-flex mb-2"},r.createElement(l.y,{interaction:t,iconClassName:"flex-shrink-0"})),e.reportsStyling?r.createElement(o.O,{interaction:t,studentResults:e.studentResults,markedStatus:(0,s.HI)(t.id,e.studentResults,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymisedUserName:m,className:"bg-light ps-2",showFeedback:!0,reportsStyling:!0,responseComponentClass:"mx-n2"}):r.createElement(a.d,{interaction:t,studentResults:e.studentResults,markedStatus:(0,s.HI)(t.id,e.studentResults,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymisedUserName:m,showFeedback:!0}))})),r.createElement(h,{interactionsToMark:C,markedAnswers:e.markedAnswers,onClickSubmit:I,onClickClose:e.onClickClose,showSubmitButtonSpinner:b,isDemo:e.isDemo}))}},94892:(e,t,n)=>{n.d(t,{T:()=>a,i:()=>r});var r={HIGH:.75,MODERATE:.5},a={HIGH:.7,MODERATE:.7}},94644:(e,t,n)=>{n.d(t,{r:()=>d});var r=n(50242),a=n(81886),i=n(67058),s=n(14553),o=n(49267),l=n(49075),u={notFound:i.d,forbidden:{rating:s.q,yearLevel:s.q,region:o.a,privacy:s.q},badRequest:l._,internalServerError:l._};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var s=Object.assign(Object.assign({},u),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new s.badRequest):n.forbidden||a.Q.Ry.throw(new s.forbidden.privacy):n.notFound||a.Q.Ry.throw(new s.notFound):n.internalServerError||a.Q.Ry.throw(new l._))}}},91286:(e,t,n)=>{n.d(t,{v:()=>s});var r=n(32735),a=n(94644);function i(e){return e.map(function(e){return e.statusCode}).join(":")}function s(e,t,n){var s=Array.isArray(e)?e:[e];(0,r.useEffect)(function(){s.forEach(function(e){(0,a.r)(e.statusCode,t,n)})},[i(s),t,n])}},9447:(e,t,n)=>{n.d(t,{Y:()=>s});var r=n(20354),a=n(30439);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function s(e){var t,n=r.a.useBasicFetch(a.o.getAnonSessions(e));return{items:(null===(t=n.data)||void 0===t?void 0:t.reduce(function(e,t){return Object.assign(Object.assign({},e),(n={},r=t.sessionId,a={sessionId:(s=t).sessionId,name:s.sessionName},(r=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(r))in n?Object.defineProperty(n,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[r]=a,n));var n,r,a,s},{}))||{},hasCompleted:n.hasCompleted,isFetching:n.isFetching}}},5780:(e,t,n)=>{n.d(t,{p:()=>u});var r=n(20354),a=n(2510),i=n(18488),s=n(4594),o=n(3010),l=n(88630);function u(e){var t,n,u,d,c=r.a.useGetFetch(),m=r.a.useBasicFetch(i.o.getShare(e)),f=(null===(t=m.data)||void 0===t?void 0:t.type)===a.y.Classroom&&(null===(d=null===(u=null===(n=m.data)||void 0===n?void 0:n.recipients)||void 0===u?void 0:u.find(function(e){return e.recipientTypeId===s.E.Classroom}))||void 0===d?void 0:d.recipientId),v=function(e){return l.F.getClassroomStudents(f,e)},b=(0,o.i)(f&&v,function(e){return c(v(e))});return Object.assign(Object.assign({},b),{hasCompleted:!f||b.hasCompleted})}},52389:(e,t,n)=>{n.d(t,{_:()=>v});var r=n(2948),a=n(20354),i=n(41196),s=n(18488),o=n(38143),l=n(91286),u=n(9447),d=n(5780);function c(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var f=[{id:"0",attempts:[{id:"0",answeredAt:0,answers:[]}]}];function v(e){var t,n,v,b,h=(v=(0,r.D)(o.g.HIDE_STAFF_RESULTS),b=1,function(e){if(Array.isArray(e))return e}(v)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,s,o=[],l=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){u=!0,a=e}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(u)throw a}}return o}}(v,b)||c(v,b)||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],y=a.a.useBasicFetch(s.o.getShare(e)),p=(0,i.W)(null===(t=y.data)||void 0===t?void 0:t.objectId,null,e),g=(0,u.Y)(e),w=(0,d.p)(e);(0,l.v)(p);var S=p.hasCompleted&&g.hasCompleted&&w.hasCompleted;if(!S)return{data:null,hasCompleted:!1};var k=new Set,A=p.data.students.map(function(e){var t,n=null===(t=e.user)||void 0===t?void 0:t.userType;return h&&1===n?null:e.user?(k.add(e.user.id),e):Object.assign(Object.assign({},e),{user:g.items[e.sessionId]||{sessionId:e.sessionId}})}).filter(function(e){return!!e});return(null===(n=null==w?void 0:w.items)||void 0===n?void 0:n.length)&&A.push.apply(A,function(e){return function(e){if(Array.isArray(e))return m(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(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.")}()}(w.items.filter(function(e){return!k.has(e.id)}).map(function(e){return{user:e,results:f,isPlaceholder:!0}}))),{hasCompleted:S,isFetching:y.isFetching||p.isFetching||g.isFetching||w.isFetching,data:Object.assign(Object.assign({},p.data),{students:A})}}},2900:(e,t,n)=>{n.r(t),n.d(t,{InsightsStudentResultsView:()=>g});var r=n(32735),a=n(23481),i=n(20354),s=n(2948),o=n(9193),l=n(26136),u=n(18488),d=n(3218),c=n(9111),m=n(38143),f=n(39151),v=n(20768),b=n(91286),h=n(52389);function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var p=a.T.encloseNamespace("shared.insightsStudentResults");function g(e){var t,n,a,g,w,S,k,A=(S=(0,s.D)(m.g.ANONYMISE_USERS),k=1,function(e){if(Array.isArray(e))return e}(S)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,s,o=[],l=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(e){u=!0,a=e}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(u)throw a}}return o}}(S,k)||function(e,t){if(e){if("string"==typeof e)return y(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(S,k)||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],C=i.a.useBasicFetch(f.L.config()),I=i.a.useBasicFetch(u.o.getShare(e.shareId)),E=i.a.useBasicFetch((null===(t=I.data)||void 0===t?void 0:t.objectId)&&v.b.interactiveMetadata(I.data.objectId)),j=i.a.useBasicFetch((null===(n=E.data)||void 0===n?void 0:n.interactiveId)&&v.b.interactive(E.data.interactiveId)),F=(0,h._)(e.shareId);(0,b.v)([I,j,E]);var R=(0,o.D)(null===(a=j.data)||void 0===a?void 0:a.id,null===(g=E.data)||void 0===g?void 0:g.id,e.closePopup),N=R.markedAnswers,O=R.addMarkedAnswers,M=R.submitMarkedAnswers,T=null===(w=F.data)||void 0===w?void 0:w.students.find(function(t){var n,r,a,i,s;return e.userId?(null===(r=null===(n=t.user)||void 0===n?void 0:n.id)||void 0===r?void 0:r.toString())===(null===(a=e.userId)||void 0===a?void 0:a.toString()):!!e.sessionId&&(null===(i=t.sessionId)||void 0===i?void 0:i.toString())===(null===(s=e.sessionId)||void 0===s?void 0:s.toString())}),B=T?p("heading",{studentName:(0,l.B)(T.user,A)}):"",U=C.hasCompleted&&I.hasCompleted&&E.hasCompleted&&j.hasCompleted&&F.hasCompleted;return r.createElement(c.G,{title:B,showLoadingSpinner:!U,closePopup:e.closePopup,size:"lg"},U&&r.createElement(d.R,{interactive:j.data,studentResults:T,markedAnswers:N,addMarkedAnswers:O,submitMarkedAnswers:M,imageCdnUrl:C.data.imageCdnUrl,selectedInteractionId:e.interactionId,onClickClose:e.closePopup,anonymiseUsers:A}))}}}]);
2
- //# sourceMappingURL=7148-1ced1b5dce-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/7148-1ced1b5dce-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/hooks/UseFetchInteractiveResults.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/AnonymiseUserUtils.ts","file:///app/packages/libs/shared/src/apps/student-response-list/StudentResponseListFooter.tsx","file:///app/packages/libs/shared/src/apps/student-response-list/StudentResponseListHeader.tsx","file:///app/packages/libs/shared/src/apps/student-response-list/student-response-list.scss","file:///app/packages/libs/shared/src/apps/student-response-list/StudentResponseList.tsx","file:///app/packages/libs/shared/src/constants/ScoreThresholds.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/apps/my-shares/hooks/useAnonSessions.ts","file:///app/packages/projects/lite/src/apps/my-shares/hooks/useInsightsClassroomStudents.ts","file:///app/packages/projects/lite/src/apps/my-shares/hooks/useInsightsInteractiveResults.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/interactive/insights-student-results/InsightsStudentResultsView.tsx"],"sourcesContent":["import { Flight } from 'libs/common/flight';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { AnalyticsRequestFilter, CurrentUser, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nexport function useFetchInteractiveResults(\n interactiveMetadataId: string,\n requestFilter?: AnalyticsRequestFilter,\n shareId?: string\n): Flight.Response<InteractiveResultSet> {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!interactiveMetadataId &&\n InteractiveRequests.interactiveMetadata(interactiveMetadataId));\n\n const interactive = Flight.useBasicFetch<Interactive>(!!interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const shouldFetchResults = !!currentUser.data && !!interactive.data;\n\n return Flight.useBasicFetch<InteractiveResultSet>(shouldFetchResults &&\n InteractiveResultsRequests.interactiveResultSet(\n interactiveMetadata.data.interactiveId,\n interactiveMetadata.data.id,\n currentUser.data,\n requestFilter,\n shareId\n ));\n}","import { animals, colors, Config as UniqueNamesConfig, uniqueNamesGenerator } from 'unique-names-generator';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nconst namespace = 'shared.analyticsUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction guidToSeed(guid: string): number {\n if (!guid)\n return 0;\n\n // Simple hash function (DJB2-like) for browsers\n let hash = 0;\n for (let i = 0; i < guid.length; i++) {\n const char = guid.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0; // Convert to 32bit integer\n }\n return Math.abs(hash);\n}\n\nfunction getUniqueNamesConfig(userId: string, sessionId: string): UniqueNamesConfig {\n /**\n * Generate a seed that is unique to each user but changes every 5 minutes.\n * \n * We use a seed so that if the same user's name is anonymised multiple times\n * in quick succession (e.g. multiple renders), the same name will be returned each time.\n * \n * We change the seed every 5 minutes so that students don't always have the same name.\n */\n const seed = +`${userId || guidToSeed(sessionId)}${Math.floor((new Date()).getMinutes() / 5)}`;\n\n return {\n dictionaries: [ colors, animals ],\n separator: ' ',\n length: 2,\n style: 'capital',\n seed\n };\n}\n\nexport function anonymiseUserName(user: AnonUser, shouldAnonymise: boolean): string {\n if (!user) {\n return getPhrase('anonUser');\n }\n\n if (!shouldAnonymise) {\n if (user.deleted)\n return getPhrase('deleted');\n\n return UserHelper.getFullName(user) || getPhrase('anonUser');\n }\n\n return uniqueNamesGenerator(getUniqueNamesConfig(user.id, user.sessionId));\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Interaction } from 'libs/shared/interfaces';\n\nconst namespace = 'interactives.studentResponseList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResponseListFooterProps {\n interactionsToMark: Interaction[];\n markedAnswers: MarkedAnswerHash;\n onClickSubmit: () => void;\n onClickClose: () => void;\n showSubmitButtonSpinner: boolean;\n isDemo?: boolean;\n}\n\nexport function StudentResponseListFooter(props: StudentResponseListFooterProps): JSX.Element {\n const numMarkedAnswers = Object.keys(props.markedAnswers).length;\n\n return (\n <div className='d-flex justify-content-end pt-3'>\n <div>\n {!props.showSubmitButtonSpinner &&\n <button className='btn btn-link' onClick={props.onClickClose}>\n {getPhrase('close')}\n </button>\n }\n {!!props.interactionsToMark.length && (\n <>\n {props.isDemo ? (\n <Tooltip\n id='submitAnswers'\n title={getPhrase('demoOnly')}\n spanHack\n spanHackClassName='d-inline-flex'\n >\n <button\n className='btn btn-outline-dark pointer-events-none'\n disabled={!numMarkedAnswers}\n >\n {getPhrase('submitAnswers')}\n </button>\n </Tooltip>\n ) : (\n <SpinnerButton\n variant='outline-dark'\n onClick={props.onClickSubmit}\n disabled={!numMarkedAnswers}\n showSpinner={props.showSubmitButtonSpinner}\n >\n {getPhrase('submitAnswers')}\n </SpinnerButton>\n )}\n </>\n )}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Interaction } from 'libs/shared/interfaces';\n\nconst namespace = 'interactives.studentResponseList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResponseListHeaderProps {\n summary: ResultsSummary;\n interactionsToMark: Interaction[];\n markedAnswers: MarkedAnswerHash;\n onClickSubmit: () => void;\n showSubmitButtonSpinner: boolean;\n isDemo?: boolean;\n}\n\nexport function StudentResponseListHeader(props: StudentResponseListHeaderProps): JSX.Element {\n const numMarkedAnswers = Object.keys(props.markedAnswers).length;\n\n return (\n <div className='d-flex justify-content-between pb-3'>\n <div className='d-flex'>\n {!!props.summary.unanswered &&\n <div className='bg-light rounded p-2 me-2'>\n <strong className='me-2'>{getPhrase('unanswered')}</strong>\n {props.summary.unanswered}\n </div>\n }\n <div className='bg-light rounded p-2 me-2'>\n <strong className='me-2'>{getPhrase('score')}</strong>\n {props.summary.awaitingMarking\n ? <em>{getPhrase('pending')}</em>\n : `${Math.round(props.summary.percentCorrect * 100)}%`\n }\n </div>\n </div>\n {!!props.interactionsToMark.length && (\n <>\n {props.isDemo ? (\n <Tooltip id='submitAnswers' title={getPhrase('demoOnly')} spanHack>\n <button\n className='btn btn-outline-dark pointer-events-none'\n disabled={!numMarkedAnswers}\n >\n {getPhrase('submitAnswers')}\n </button>\n </Tooltip>\n ) : (\n <SpinnerButton\n variant='outline-dark'\n onClick={props.onClickSubmit}\n disabled={!numMarkedAnswers}\n showSpinner={props.showSubmitButtonSpinner}\n >\n {getPhrase('submitAnswers')}\n </SpinnerButton>\n )}\n </>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"awaitingMarking\":\"MvGb5\"};","import React from 'react';\n\nimport { InteractionResponseItem } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/InteractionResponseItem';\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { getMarkedStatus, getStudentResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractionResponse } from 'libs/shared/components/interaction-response/InteractionResponse';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, Interactive, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getInteractions, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\nimport { StudentResponseListFooter } from './StudentResponseListFooter';\nimport { StudentResponseListHeader } from './StudentResponseListHeader';\n\nimport styles from './student-response-list.scss';\n\nfunction getInteractionsToMark(\n interactions: Interaction[],\n studentResults: StudentResults\n): Interaction[] {\n return interactions.filter(i => {\n return InteractiveCorrectnessHelper.isInteractionCorrect(\n i,\n getStudentResult(studentResults)\n ) === InteractionCorrectness.AwaitingMarking;\n });\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nfunction useScrollSelectedInteractionIntoView(): React.MutableRefObject<HTMLLIElement> {\n const ref = React.useRef<HTMLLIElement>(null);\n const [ scrolled, setScrolled ] = React.useState(false);\n\n // Only scroll once\n React.useEffect(() => {\n if (!ref.current || scrolled)\n return;\n\n setScrolled(true);\n requestAnimationFrame(() => ref.current.scrollIntoView({ behavior: 'smooth', block: 'center' }));\n }, [ ref.current, scrolled ]);\n\n return ref;\n}\n\ninterface StudentResponseListProps {\n interactive: Interactive;\n markedAnswers: MarkedAnswerHash;\n studentResults: StudentResults;\n addMarkedAnswers: (answer: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n submitMarkedAnswers: () => void;\n onClickClose: () => void;\n imageCdnUrl: string;\n selectedInteractionId?: string;\n anonymiseUsers: boolean;\n reportsStyling?: boolean;\n isDemo?: boolean;\n}\n\nexport function StudentResponseList(props: StudentResponseListProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n const selectedInteractionRef = useScrollSelectedInteractionIntoView();\n\n const summary = getStudentResultsSummary(props.interactive, props.studentResults);\n const interactions = getInteractions(props.interactive);\n const questionsToMark = getInteractionsToMark(interactions, props.studentResults);\n\n function onClickSubmit(): void {\n setShowSpinner(true);\n props.submitMarkedAnswers();\n }\n\n return (\n <>\n <StudentResponseListHeader\n summary={summary}\n interactionsToMark={questionsToMark}\n markedAnswers={props.markedAnswers}\n onClickSubmit={onClickSubmit}\n showSubmitButtonSpinner={showSpinner}\n isDemo={props.isDemo}\n />\n <ul className='list-unstyled'>\n {interactions.map((interaction, idx) => {\n const isSelected = interaction.id.toString() === props.selectedInteractionId?.toString();\n const markingRequired = questionsToMark.some(q => q.id === interaction.id);\n const anonymisedUserName = anonymiseUserName(\n props.studentResults.user,\n props.anonymiseUsers\n );\n\n let className = 'p-2 mb-3 rounded';\n\n if (isSelected)\n className += ' border-2 border-info shadow';\n\n if (markingRequired)\n className += ` ${styles.awaitingMarking}`;\n else\n className += ' border';\n\n return (\n <li key={idx} className={className} ref={isSelected ? selectedInteractionRef : null}>\n <div className='d-flex mb-2'>\n <InteractionLabel\n interaction={interaction}\n iconClassName='flex-shrink-0'\n />\n </div>\n {props.reportsStyling ? (\n <InteractionResponse\n interaction={interaction}\n studentResults={props.studentResults}\n markedStatus={getMarkedStatus(interaction.id, props.studentResults, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n anonymisedUserName={anonymisedUserName}\n className='bg-light ps-2'\n showFeedback\n reportsStyling\n responseComponentClass='mx-n2'\n />\n ) : (\n <InteractionResponseItem\n interaction={interaction}\n studentResults={props.studentResults}\n markedStatus={getMarkedStatus(interaction.id, props.studentResults, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n anonymisedUserName={anonymisedUserName}\n showFeedback\n />\n )}\n </li>\n );\n })}\n </ul>\n <StudentResponseListFooter\n interactionsToMark={questionsToMark}\n markedAnswers={props.markedAnswers}\n onClickSubmit={onClickSubmit}\n onClickClose={props.onClickClose}\n showSubmitButtonSpinner={showSpinner}\n isDemo={props.isDemo}\n />\n </>\n );\n}","export interface ScoreThresholds {\n HIGH: number;\n MODERATE: number;\n}\n\nexport const ScoreThresholdDefaults: ScoreThresholds = {\n HIGH: 0.75,\n MODERATE: 0.5\n};\n\nexport const ScoreThresholdInsights: ScoreThresholds = {\n HIGH: 0.7,\n MODERATE: 0.7\n};","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { AnonSession } from 'libs/shared/apps/share/interfaces/AnonSession';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nfunction toAnonUser(anonSession: AnonSession) {\n return { sessionId: anonSession.sessionId, name: anonSession.sessionName } as AnonUser;\n}\n\nexport function useAnonSessions(shareId: string) {\n const anonSessions = Flight.useBasicFetch<AnonSession[]>(ShareRequests.getAnonSessions(shareId));\n\n const anonSessionMap = anonSessions.data\n ?.reduce<Record<string, AnonUser>>((prev, next) => {\n return {\n ...prev,\n [next.sessionId]: toAnonUser(next)\n };\n }, {});\n\n return {\n items: anonSessionMap || {},\n hasCompleted: anonSessions.hasCompleted,\n isFetching: anonSessions.isFetching\n };\n}","import { Flight } from 'libs/common/react/index';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { User } from 'libs/shared/interfaces/models/User';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\n\nexport function useInsightsClassroomStudents(shareId: string) {\n const fetch = Flight.useGetFetch();\n\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(shareId));\n \n const classroomId = share.data?.type === ShareType.Classroom &&\n share.data?.recipients?.find(r => r.recipientTypeId === MasterType.Classroom)?.recipientId;\n\n const getRequest = (cursor: string) => ClassroomRequests.getClassroomStudents(classroomId, cursor);\n const result = useFetchAll<User>(classroomId && getRequest, cursor => fetch(getRequest(cursor)));\n\n return {\n ...result,\n hasCompleted: !classroomId || result.hasCompleted\n };\n}","import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { InteractiveResult, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport { useAnonSessions } from 'apps/my-shares/hooks/useAnonSessions';\nimport { useInsightsClassroomStudents } from 'apps/my-shares/hooks/useInsightsClassroomStudents';\n\nconst EMPTY_INTERACTIVE_RESULTS: InteractiveResult[] = [\n {\n id: '0',\n attempts: [{ id: '0', answeredAt: 0, answers: []}]\n }\n];\n\nexport function useInsightsInteractiveResults(shareId: string) {\n const [hideStaffResults] = useViewModel<boolean>(SharedViewModelKeys.HIDE_STAFF_RESULTS);\n\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(shareId));\n const results = useFetchInteractiveResults(share.data?.objectId, null, shareId);\n\n const anonSessions = useAnonSessions(shareId);\n\n const classroomStudents = useInsightsClassroomStudents(shareId);\n\n useHandleObjectError(results);\n\n const hasCompleted = (\n results.hasCompleted &&\n anonSessions.hasCompleted &&\n classroomStudents.hasCompleted\n );\n\n if (!hasCompleted) {\n return {\n data: null as InteractiveResultSet,\n hasCompleted: false\n };\n }\n\n const studentHash = new Set<string>();\n\n const students = results.data.students.map(s => {\n // Domain is returning userType as a number - Sha\n const userType = s.user?.userType as unknown as number;\n if (hideStaffResults && userType === 1)\n return null;\n\n if (s.user) {\n studentHash.add(s.user.id);\n return s;\n }\n\n /**\n * Set the user to our anon user, so we can display the name they entered\n * when completing the interactive - Sha\n */\n return {\n ...s,\n user: anonSessions.items[s.sessionId] || { sessionId: s.sessionId } as AnonUser\n };\n }).filter(s => !!s);\n\n /**\n * If we have classroom students, we're adding any students who haven't attempted to the list\n * with an empty attempt. This is so the student list can show all classroom students - Sha\n */\n if (classroomStudents?.items?.length) {\n students.push(...classroomStudents.items\n .filter(s => !studentHash.has(s.id))\n .map(user => ({ user, results: EMPTY_INTERACTIVE_RESULTS, isPlaceholder: true })));\n }\n\n const isFetching = share.isFetching\n || results.isFetching\n || anonSessions.isFetching\n || classroomStudents.isFetching;\n\n return {\n hasCompleted,\n isFetching,\n data: {\n ...results.data,\n students\n }\n };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { useMarkAnswers } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { StudentResponseList } from 'libs/shared/apps/student-response-list/StudentResponseList';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { Config, Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { useInsightsInteractiveResults } from 'apps/my-shares/hooks/useInsightsInteractiveResults';\n\nconst namespace = 'shared.insightsStudentResults';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveStudentResultsViewProps extends PopupViewProps {\n shareId: string;\n interactionId: string;\n userId: string;\n sessionId: string;\n}\n\nexport function InsightsStudentResultsView(props: InteractiveStudentResultsViewProps): JSX.Element {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n share.data?.objectId &&\n InteractiveRequests.interactiveMetadata(share.data.objectId)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(\n interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId)\n );\n\n const results = useInsightsInteractiveResults(props.shareId);\n\n useHandleObjectError([ share, interactive, interactiveMetadata ]);\n\n const { markedAnswers, addMarkedAnswers, submitMarkedAnswers } = useMarkAnswers(\n interactive.data?.id,\n interactiveMetadata.data?.id,\n props.closePopup\n );\n\n const studentResults = results.data?.students.find(s => {\n if (props.userId)\n return s.user?.id?.toString() === props.userId?.toString();\n\n if (props.sessionId)\n return s.sessionId?.toString() === props.sessionId?.toString();\n\n return false;\n });\n\n const popupTitle = studentResults\n ? getPhrase('heading', { studentName: anonymiseUserName(studentResults.user, anonymiseUsers) })\n : '';\n\n const dataLoaded = (\n config.hasCompleted &&\n share.hasCompleted &&\n interactiveMetadata.hasCompleted &&\n interactive.hasCompleted &&\n results.hasCompleted\n );\n\n return (\n <Popup\n title={popupTitle}\n showLoadingSpinner={!dataLoaded}\n closePopup={props.closePopup}\n size='lg'\n >\n {dataLoaded &&\n <StudentResponseList\n interactive={interactive.data}\n studentResults={studentResults}\n markedAnswers={markedAnswers}\n addMarkedAnswers={addMarkedAnswers}\n submitMarkedAnswers={submitMarkedAnswers}\n imageCdnUrl={config.data.imageCdnUrl}\n selectedInteractionId={props.interactionId}\n onClickClose={props.closePopup}\n anonymiseUsers={anonymiseUsers}\n />\n }\n </Popup>\n );\n}\n"],"names":["useFetchInteractiveResults","interactiveMetadataId","requestFilter","shareId","currentUser","interactiveMetadata","interactive","data","interactiveId","shouldFetchResults","I","id","getPhrase","anonymiseUserName","user","shouldAnonymise","userId","sessionId","seed","guid","hash","i","length","charCodeAt","Math","abs","guidToSeed","floor","Date","getMinutes","dictionaries","separator","style","deleted","LanguageService","StudentResponseListFooter","props","numMarkedAnswers","Object","keys","markedAnswers","className","showSubmitButtonSpinner","onClick","onClickClose","interactionsToMark","isDemo","Tooltip","title","spanHack","spanHackClassName","disabled","SpinnerButton","variant","onClickSubmit","showSpinner","StudentResponseListHeader","summary","unanswered","awaitingMarking","round","percentCorrect","StudentResponseList","ref","scrolled","setScrolled","setShowSpinner","selectedInteractionRef","current","requestAnimationFrame","scrollIntoView","behavior","block","studentResults","interactions","questionsToMark","filter","InteractiveCorrectnessHelper","InteractionCorrectness","getInteractionsToMark","submitMarkedAnswers","map","interaction","idx","isSelected","toString","selectedInteractionId","markingRequired","some","q","anonymisedUserName","anonymiseUsers","key","InteractionLabel","iconClassName","reportsStyling","InteractionResponse","markedStatus","markInteraction","addMarkedAnswers","imageCdnUrl","showFeedback","responseComponentClass","InteractionResponseItem","ScoreThresholdDefaults","HIGH","MODERATE","ScoreThresholdInsights","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","useAnonSessions","anonSessions","items","reduce","prev","next","anonSession","name","sessionName","hasCompleted","isFetching","useInsightsClassroomStudents","fetch","share","classroomId","type","recipients","find","r","recipientTypeId","recipientId","getRequest","cursor","result","EMPTY_INTERACTIVE_RESULTS","attempts","answeredAt","answers","useInsightsInteractiveResults","hideStaffResults","results","objectId","classroomStudents","studentHash","Set","students","s","userType","add","push","has","isPlaceholder","InsightsStudentResultsView","config","closePopup","popupTitle","studentName","dataLoaded","showLoadingSpinner","size","interactionId"],"sourceRoot":""}
@@ -1,3 +0,0 @@
1
- /*! For license information please see 7568-55e9b01367-lite.chunk.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7568],{8233:(e,t,n)=>{n.d(t,{R:()=>p});var r=n(23481),i=n(110),o=n(33518),a=n(4594),s=n(49080),c=n(26361),l=n(35223),u=n(31908);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var g=r.T.encloseNamespace("sharev2.utils"),p={getPrivateIconAndText:function(e){var t=e.entityTypeId,n=e.privacy,r=e.hasStudentExp,i=e.entity,s=e.yearGroups;if(t===a.E.Topic||t===a.E.Series)return{icon:l.vn.VisibleOn,text:g(r?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(n))switch(n){case o.e.Public:return{icon:l.vn.VisibleOn,text:g("publicDescription")};case o.e.ProtectedOverrideRestriction:return{icon:l.vn.VisibleOn,text:g("clickViewOnly")};case o.e.Protected:return{icon:l.vn.Lock,text:p.getRespectRatingText(i,s,r)};case o.e.JustMySchoolOverrideRestriction:return{icon:l.vn.Lock,text:g(r?"justMySchoolTeachers":"justMySchoolDescription")};case o.e.JustMySchool:return{icon:l.vn.Lock,text:p.getRespectRatingText(i,s,r)};case o.e.PinCode:return{icon:l.vn.Lock,text:g("pinDescription")};case o.e.PasswordProtected:return{icon:l.vn.Lock,text:g("password")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,n=e.isPasswordProtected,r=e.status;if(!t&&!n)return p.getPrivateIconAndText(e);if(!t)return{icon:l.vn.Lock,text:g("password")};var o=i.O.isToday(t),a=i.O.diffBetween(t,new Date,"day");if(!n){var c=o?g("expiryToday"):g("expiry",{days:a});return r===s.F.Expired&&(c=g("expired")),{icon:l.vn.Timer,text:c}}var u=o?g("passwordExpiryToday"):g("passwordExpiry",{days:a});return r===s.F.Expired&&(u=g("passwordExpired")),{icon:l.vn.Lock,text:u}},getRespectRatingText:function(e,t,n){var r;if(!e||!t)return null;if(n)return g("justMySchoolTeachers");if(!u.M.isVideoType(e))return g("collectionRating");var i=c.l.getWeightedRestriction(null===(r=e._restrictions)||void 0===r?void 0:r.value);if(i&&!i.yearGroup)return g("onlyAdmins");var o,a,s,l=u.M.getRating(e),p=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}(t);try{for(p.s();!(s=p.n()).done;){var m=s.value;(!o||m.value>o.value)&&(o=m),i&&m.value<=i.yearGroup||l&&m.rating.value<l.value||(!a||m.value<a.value)&&(a=m)}}catch(e){p.e(e)}finally{p.f()}return a?1===t.length?g("clickViewOnly"):a.value===o.value?g("maxYearGroup",{yearGroup:o.name}):g("yearGroupRange",{yearGroup:a.name}):g("onlyStaff")},getShareLinkAccessType:function(e){return e.isTvContent||e.isClickViewContent?"protected":e.canManageAccess?"owner":"private"}}},77568:(e,t,n)=>{n.r(t),n.d(t,{OpenClassroomFlowView:()=>Z});var r=n(32735),i=n(89067),o=n(82664),a=n(23481),s=n(65858),c=n(9111),l=n(99998),u=n(83351),d=n(7786),g=n(8233),p=n(32781),m=n(91693),f=n(12528),v=n(83914),y=n(83345),b=n(35223),h="assign.openClassroomFlowInfoHeader";function S(e){return r.createElement(y.D.Provider,{value:h},r.createElement("div",{className:"p-3 bg-light-blue rounded rounded-2 gap-3 d-flex flex-row"},r.createElement("div",{className:"d-none d-md-block"},r.createElement("div",null,r.createElement(f.f,{svgName:b.vn.Classrooms,svgSize:v.S.Standard,variant:"blue",textVariant:"white",svgWrapperClassName:"p-1"}))),r.createElement("div",{className:"position-relative w-100"},r.createElement("h3",{className:"h6"},r.createElement(y.x,{phrase:"title"})),r.createElement("p",{className:"mb-0"},r.createElement(y.x,{phrase:"description"})),r.createElement("div",{className:"position-absolute top-0 end-0"},r.createElement(m.h,{svgName:b.vn.Close,onClick:e.onClose,className:"btn-close p-2"})))))}var T=a.T.encloseNamespace("assign.openClassroomFlowSettings");function R(e){var t=g.R.getRespectRatingText(e.entity,e.yearGroups,e.hasStudentExp);return r.createElement("div",{className:"d-flex flex-column gap-4"},e.showHeader&&r.createElement(S,{onClose:e.closeHeader}),r.createElement(p.m,null,r.createElement(p.m.Input,{title:T("openClassroomNameTitle"),className:"col-lg-6",value:e.openClassroomName,onChange:e.onChangeOpenClassroomName,placeholder:T("openClassroomNamePlaceholder"),error:e.error.name})),r.createElement(p.m.Divider,{hide:e.hidePreventScrubbing&&e.hideImmediateFeedback}),r.createElement(p.m,{name:T("videoSettingsTitle"),hide:e.hidePreventScrubbing&&e.hideImmediateFeedback},r.createElement(p.m.Toggle,{hide:e.hidePreventScrubbing,title:T("preventScrubbingTitle"),description:T("preventScrubbingDescription"),onClick:e.onTogglePreventScrubbing,toggled:e.preventScrubbing,disabled:e.disablePreventScrubbing}),r.createElement(p.m.Toggle,{hide:e.hideImmediateFeedback,title:T("immediateFeedbackTitle"),description:T("immediateFeedbackDescription"),onClick:e.onToggleImmediateFeedback,toggled:e.immediateFeedback,disabled:e.disableImmediateFeedback})),r.createElement(p.m.Divider,{hide:e.hideRequiresStudentSignIn&&e.hideRespectRatingsAndRestrictions}),r.createElement(p.m,{name:T("studentAccessTitle"),hide:e.hideRequiresStudentSignIn&&e.hideRespectRatingsAndRestrictions},r.createElement(p.m.Toggle,{hide:e.hideRequiresStudentSignIn,title:T("requiresStudentSignInTitle"),description:T("requiresStudentSignInDescription"),onClick:e.onToggleRequiresStudentSignIn,toggled:e.toggleRequiresStudentSignIn,disabled:e.disableRequiresStudentSignIn}),r.createElement(p.m.Toggle,{hide:e.hideRespectRatingsAndRestrictions,title:T("respectRatingsAndRestrictionsTitle"),description:t,onClick:e.onToggleRespectRatingsAndRestrictions,toggled:e.toggleRespectRatingsAndRestrictions,disabled:e.disableRespectRatingsAndRestrictions})),r.createElement(p.m.Divider,{hide:e.hideRequiresStudentSignIn&&e.hideRespectRatingsAndRestrictions||e.hideMessage}),r.createElement(p.m,{name:T("moreOptionsTitle"),hide:e.hideMessage,childContainerClassName:"d-flex flex-column gap-2"},r.createElement(p.m.Toggle,{hide:e.hideMessage,title:T("messageTitle"),description:T("messageDescription"),onClick:e.onToggleMessage,toggled:e.toggleMessage,disabled:e.disableMessage},r.createElement(p.m.TextArea,{hide:!e.toggleMessage,placeholder:T("messagePlaceholder"),onChange:e.onChangeMessage,value:e.message}))))}var w=n(57900),x=n(2948),I=n(20354),k=n(80687),E=n(1666),A=n(69883),C=n(95890);function j(e){return j="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},j(e)}function O(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function o(n,r,i,o){var c=r&&r.prototype instanceof s?r:s,l=Object.create(c.prototype);return P(l,"_invoke",function(n,r,i){var o,s,c,l=0,u=i||[],d=!1,g={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,s=0,c=e,g.n=n,a}};function p(n,r){for(s=n,c=r,t=0;!d&&l&&!i&&t<u.length;t++){var i,o=u[t],p=g.p,m=o[2];n>3?(i=m===r)&&(c=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=p&&((i=n<2&&p<o[1])?(s=0,g.v=r,g.n=o[1]):p<m&&(i=n<3||o[0]>r||r>m)&&(o[4]=n,o[5]=r,g.n=m,s=0))}if(i||n>1)return a;throw d=!0,r}return function(i,u,m){if(l>1)throw TypeError("Generator is already running");for(d&&1===u&&p(u,m),s=u,c=m;(t=s<2?e:c)||!d;){o||(s?s<3?(s>1&&(g.n=-1),p(s,c)):g.n=c:g.v=c);try{if(l=2,o){if(s||(i="next"),t=o[i]){if(!(t=t.call(o,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(c=TypeError("The iterator does not provide a '"+i+"' method"),s=1);o=e}else if((t=(d=g.n<0)?c:n.call(r,g))!==a)break}catch(t){o=e,s=1,c=t}finally{l=1}}return{value:t,done:d}}}(n,i,o),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(P(t={},r,function(){return this}),t),d=l.prototype=s.prototype=Object.create(u);function g(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,P(e,i,"GeneratorFunction")),e.prototype=Object.create(d),e}return c.prototype=l,P(d,"constructor",l),P(l,"constructor",c),c.displayName="GeneratorFunction",P(l,i,"GeneratorFunction"),P(d),P(d,i,"Generator"),P(d,r,function(){return this}),P(d,"toString",function(){return"[object Generator]"}),(O=function(){return{w:o,m:g}})()}function P(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}P=function(e,t,n,r){if(t)i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var o=function(t,n){P(e,t,function(e){return this._invoke(t,n,e)})};o("next",0),o("throw",1),o("return",2)}},P(e,t,n,r)}function F(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,s=[],c=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw i}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return N(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?N(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 N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var M=function(e,t,n,r){return new(n||(n=Promise))(function(i,o){function a(e){try{c(r.next(e))}catch(e){o(e)}}function s(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,s)}c((r=r.apply(e,t||[])).next())})},D=a.T.encloseNamespace("assign.useOpenClassroomFlowData"),q={immediateFeedback:!1,preventScrubbing:!1,message:!1,requiresStudentSignIn:!1,respectRatingsAndRestrictions:!1},G=128,B="assign:open:classroom:flow:settings:header";function V(e){var t,n,i,o=(0,A.Z)(),a=F((0,x.D)(B,!0,{storage:w.Z1.LocalStorage}),2),s=a[0],c=a[1],l=(0,C._)({entityType:e.entityType,objectId:e.objectId}),u=I.a.useBasicFetch(E.h.yearGroups(null===(t=l.currentUser.data)||void 0===t?void 0:t.customerId)),d=(0,k.t)(e.objectId).createOpenSession,g=F(r.useState(Object.assign(Object.assign({},q),{preventScrubbing:(null===(n=l.interactive.data)||void 0===n?void 0:n.preventScrubbing)||!1,immediateFeedback:(null===(i=l.interactive.data)||void 0===i?void 0:i.immediateFeedback)||!1})),2),p=g[0],m=g[1],f=F(r.useState(""),2),v=f[0],y=f[1],b=F(r.useState(""),2),h=b[0],S=b[1],T=F(r.useState(!1),2),R=T[0],P=T[1],N=F(r.useState({}),2),V=N[0],L=N[1],_=0===Object.keys(V).length;return{data:{loaded:l.loaded&&!!u.data,entity:l.entity,yearGroups:u},showHeader:s,hasStudentExp:l.hasStudentExp,shouldShowSpinner:R,nextButtonText:D("nextButton"),name:v,message:h,settings:p,setMessage:S,setShowHeader:c,toggleSetting:function(e){!function(e,t){var n,r,i,o=(n={},i=t,(r=function(e){var t=function(e){if("object"!=j(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=j(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==j(t)?t:t+""}(r=e))in n?Object.defineProperty(n,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[r]=i,n);"respectRatingsAndRestrictions"===e&&(o.requiresStudentSignIn=t),m(function(e){return Object.assign(Object.assign({},e),o)})}(e,!p[e])},setOpenClassroomName:function(e){e.length>G?L(function(e){return Object.assign(Object.assign({},e),{name:D("errorNameTooLong")})}):L(function(e){return delete e.name,e}),y(e)},onShare:function(t){return M(this,void 0,void 0,O().m(function n(){var r;return O().w(function(n){for(;;)switch(n.n){case 0:if(_){n.n=1;break}return n.a(2);case 1:return P(!0),n.p=2,n.n=3,d({name:v,objectId:e.objectId,immediateFeedback:p.immediateFeedback,preventScrubbing:p.preventScrubbing,requireSignIn:p.requiresStudentSignIn,respectRatingsAndRestrictions:p.respectRatingsAndRestrictions});case 3:r=n.v,"function"==typeof t&&t(r),P(!1),n.n=5;break;case 4:n.p=4,n.v,o.error(D("createError"));case 5:return n.p=5,P(!1),n.f(5);case 6:return n.a(2)}},n,null,[[2,4,5,6]])}))},error:V,setError:L,isValid:_}}var L=a.T.encloseNamespace("assign.openClassroomFlowSettingsView");function _(e){var t=V({entityType:e.entityType,objectId:e.objectId}),n=(0,l.R)(),i=n.experience,o=n.loading,a=t.data,g=a.loaded,p=a.entity,m=a.yearGroups,f=(0,d.y)({data:{entity:{id:e.objectId,type:e.entityType}},analyticsOptions:{location:s.LZ.Popup}}).log,v=!g||o||e.loading;return r.createElement(c.G,{size:"lg",title:L("title"),showLoadingSpinner:v,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3",animation:e.animate},r.createElement(R,{entity:p.data,error:t.error,showHeader:t.showHeader,openClassroomName:t.name,onChangeOpenClassroomName:t.setOpenClassroomName,message:t.message,yearGroups:m.data,hasStudentExp:t.hasStudentExp,toggleMessage:t.settings.message,immediateFeedback:t.settings.immediateFeedback,preventScrubbing:t.settings.preventScrubbing,toggleRequiresStudentSignIn:t.settings.requiresStudentSignIn,toggleRespectRatingsAndRestrictions:t.settings.respectRatingsAndRestrictions,hideMessage:!0,onChangeMessage:t.setMessage,onToggleMessage:function(){return t.toggleSetting("message")},hidePreventScrubbing:"interactive"!==e.entityType,hideImmediateFeedback:"interactive"!==e.entityType,hideRequiresStudentSignIn:"full"!==i,hideRespectRatingsAndRestrictions:"full"!==i,onTogglePreventScrubbing:function(){return t.toggleSetting("preventScrubbing")},onToggleImmediateFeedback:function(){return t.toggleSetting("immediateFeedback")},onToggleRequiresStudentSignIn:function(){return t.toggleSetting("requiresStudentSignIn")},onToggleRespectRatingsAndRestrictions:function(){return t.toggleSetting("respectRatingsAndRestrictions")},closeHeader:function(){return t.setShowHeader(!1)},disableRequiresStudentSignIn:t.settings.respectRatingsAndRestrictions}),r.createElement(u.P,{hideCreateClassroomButton:!0,hideBackButton:e.hideBackButton,onClickBack:e.goToFlowSelector,onClickNext:function(){t.onShare(function(t){f({type:"create-open-classroom",share:t}),f({type:"share-open-classroom",id:t.objectId,shareId:t.shareId,shareType:t.type}),e.setShare(t),e.goToAssignDetails()})},nextButtonText:t.nextButtonText,showSpinner:t.shouldShowSpinner,disableNextButton:!t.isValid}))}function H(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,s=[],c=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw i}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return U(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?U(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 U(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Z(e){var t=H(r.useState("settings"),2),n=t[0],a=t[1],s=H(r.useState(),2),c=s[0],l=s[1],u={objectId:e.objectId,entityType:e.entityType,closePopup:e.closePopup,goToFlowSelector:e.goToFlowSelector,shareId:null==c?void 0:c.shareId,initialDetailsScreen:"share-link",goToAssignDetails:function(){return a("assign-details")},setShare:l};return r.createElement(i.r,{data:u,animate:!1,step:n,setStep:a,closePopup:e.closePopup,steps:{settings:{view:_},"assign-details":{view:o.AssignDetailsView}}})}}}]);
3
- //# sourceMappingURL=7568-55e9b01367-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/7568-55e9b01367-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareLinkHelper.ts","file:///app/packages/projects/lite/src/apps/assign/views/open-classroom-flow-settings-view/components/open-classroom-flow-info-header/OpenClassroomFlowInfoHeader.tsx","file:///app/packages/projects/lite/src/apps/assign/views/open-classroom-flow-settings-view/components/open-classroom-flow-settings/OpenClassroomFlowSettings.tsx","file:///app/packages/projects/lite/src/apps/assign/views/open-classroom-flow-settings-view/hooks/use-open-classroom-flow-settings-data/useOpenClassroomFlowSettingsData.ts","file:///app/packages/projects/lite/src/apps/assign/views/open-classroom-flow-settings-view/OpenClassroomFlowSettingsView.tsx","file:///app/packages/projects/lite/src/apps/assign/views/open-classroom-flow-view/OpenClassroomFlowView.tsx"],"sourcesContent":["import { 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 type { SharePrivacyResponse } from 'libs/shared/apps/share-v2/interfaces/SharePrivacyResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport type { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'sharev2.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetIconAndTextOptions {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacy;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\ninterface GetPrivateIconAndTextOptions {\n privacy: SharePrivacy;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetPrivateIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy) {\n case SharePrivacy.Public:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('publicDescription') };\n case SharePrivacy.ProtectedOverrideRestriction:\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('clickViewOnly') };\n case SharePrivacy.Protected:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.JustMySchoolOverrideRestriction:\n return { icon: cvSvgLibrary.Lock, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n case SharePrivacy.JustMySchool:\n return {\n icon: cvSvgLibrary.Lock,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case SharePrivacy.PinCode:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('pinDescription') };\n case SharePrivacy.PasswordProtected:\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: cvSvgLibrary.Timer, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: cvSvgLibrary.Lock, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n },\n\n getShareLinkAccessType(privacy: SharePrivacyResponse): 'private' | 'owner' | 'protected' {\n /**\n * If an entity is not a ClickView content and they cannot manage access\n * settings of the entity (which they can if its their private entity)\n * it means that its a TV content\n */\n if (privacy.isTvContent || privacy.isClickViewContent)\n return 'protected';\n\n if (privacy.canManageAccess)\n return 'owner';\n\n return 'private';\n }\n};","import React from 'react';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'assign.openClassroomFlowInfoHeader';\n\ninterface OpenClassroomFlowInfoHeaderProps {\n onClose: () => void;\n}\n\nexport function OpenClassroomFlowInfoHeader(props: OpenClassroomFlowInfoHeaderProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='p-3 bg-light-blue rounded rounded-2 gap-3 d-flex flex-row'>\n <div className='d-none d-md-block'>\n <div>\n <IconCircle\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Standard}\n variant='blue'\n textVariant='white'\n svgWrapperClassName='p-1'\n />\n </div>\n </div>\n <div className='position-relative w-100'>\n <h3 className='h6'><Text phrase='title' /></h3>\n <p className='mb-0'><Text phrase='description' /></p>\n <div className='position-absolute top-0 end-0'>\n <IconButton svgName={cvSvgLibrary.Close} onClick={props.onClose} className='btn-close p-2' />\n </div>\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ShareLinkHelper } from 'libs/shared/apps/share-v2/utils/ShareLinkHelper';\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { YearGroup } from 'libs/shared/interfaces';\n\nimport { FlowSettings } from 'apps/assign/components/flow-settings/FlowSettings';\n\nimport { OpenClassroomFlowSettingsError } from '../../hooks/use-open-classroom-flow-settings-data/useOpenClassroomFlowSettingsData';\nimport { OpenClassroomFlowInfoHeader } from '../open-classroom-flow-info-header/OpenClassroomFlowInfoHeader';\n\nconst namespace = 'assign.openClassroomFlowSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SettingsFieldProps {\n // Open classroom name field\n openClassroomName: string;\n onChangeOpenClassroomName: (name: string) => void;\n \n // Prevent scrubbing field\n hidePreventScrubbing?: boolean;\n disablePreventScrubbing?: boolean;\n onTogglePreventScrubbing: () => void;\n preventScrubbing: boolean;\n \n // Immediate feedback field\n hideImmediateFeedback?: boolean;\n disableImmediateFeedback?: boolean;\n onToggleImmediateFeedback: () => void;\n immediateFeedback: boolean;\n\n // Require student sign in field\n hideRequiresStudentSignIn?: boolean;\n disableRequiresStudentSignIn?: boolean;\n onToggleRequiresStudentSignIn: () => void;\n toggleRequiresStudentSignIn: boolean;\n\n // Respect ratings and restrictions field\n hideRespectRatingsAndRestrictions?: boolean;\n disableRespectRatingsAndRestrictions?: boolean;\n onToggleRespectRatingsAndRestrictions: () => void;\n toggleRespectRatingsAndRestrictions: boolean;\n \n // Message field\n hideMessage?: boolean;\n disableMessage?: boolean;\n message: string;\n onChangeMessage: (message: string) => void;\n onToggleMessage: () => void;\n toggleMessage: boolean;\n}\n\ninterface OpenClassroomFlowSettingsProps extends SettingsFieldProps {\n hasStudentExp: boolean;\n entity: SharableEntity;\n yearGroups: YearGroup[];\n closeHeader: () => void;\n showHeader: boolean;\n error: OpenClassroomFlowSettingsError;\n}\n\nexport function OpenClassroomFlowSettings(props: OpenClassroomFlowSettingsProps): JSX.Element {\n const respectRatingText = ShareLinkHelper.getRespectRatingText(\n props.entity,\n props.yearGroups,\n props.hasStudentExp\n );\n \n return (\n <div className='d-flex flex-column gap-4'>\n {props.showHeader &&\n <OpenClassroomFlowInfoHeader onClose={props.closeHeader} />\n }\n \n <FlowSettings>\n <FlowSettings.Input\n title={getPhrase('openClassroomNameTitle')}\n className='col-lg-6'\n value={props.openClassroomName}\n onChange={props.onChangeOpenClassroomName}\n placeholder={getPhrase('openClassroomNamePlaceholder')}\n error={props.error.name}\n />\n </FlowSettings>\n \n <FlowSettings.Divider hide={props.hidePreventScrubbing && props.hideImmediateFeedback} />\n \n <FlowSettings\n name={getPhrase('videoSettingsTitle')}\n hide={props.hidePreventScrubbing && props.hideImmediateFeedback}\n >\n <FlowSettings.Toggle\n hide={props.hidePreventScrubbing}\n title={getPhrase('preventScrubbingTitle')}\n description={getPhrase('preventScrubbingDescription')}\n onClick={props.onTogglePreventScrubbing}\n toggled={props.preventScrubbing}\n disabled={props.disablePreventScrubbing}\n />\n <FlowSettings.Toggle\n hide={props.hideImmediateFeedback}\n title={getPhrase('immediateFeedbackTitle')}\n description={getPhrase('immediateFeedbackDescription')}\n onClick={props.onToggleImmediateFeedback}\n toggled={props.immediateFeedback}\n disabled={props.disableImmediateFeedback}\n />\n </FlowSettings>\n\n <FlowSettings.Divider hide={props.hideRequiresStudentSignIn && props.hideRespectRatingsAndRestrictions} />\n\n <FlowSettings\n name={getPhrase('studentAccessTitle')}\n hide={props.hideRequiresStudentSignIn && props.hideRespectRatingsAndRestrictions}\n >\n <FlowSettings.Toggle\n hide={props.hideRequiresStudentSignIn}\n title={getPhrase('requiresStudentSignInTitle')}\n description={getPhrase('requiresStudentSignInDescription')}\n onClick={props.onToggleRequiresStudentSignIn}\n toggled={props.toggleRequiresStudentSignIn}\n disabled={props.disableRequiresStudentSignIn}\n />\n <FlowSettings.Toggle\n hide={props.hideRespectRatingsAndRestrictions}\n title={getPhrase('respectRatingsAndRestrictionsTitle')}\n description={respectRatingText}\n onClick={props.onToggleRespectRatingsAndRestrictions}\n toggled={props.toggleRespectRatingsAndRestrictions}\n disabled={props.disableRespectRatingsAndRestrictions}\n />\n </FlowSettings>\n \n <FlowSettings.Divider hide={\n (props.hideRequiresStudentSignIn && props.hideRespectRatingsAndRestrictions)\n || props.hideMessage}\n />\n \n <FlowSettings\n name={getPhrase('moreOptionsTitle')}\n hide={props.hideMessage}\n childContainerClassName='d-flex flex-column gap-2'\n >\n <FlowSettings.Toggle\n hide={props.hideMessage}\n title={getPhrase('messageTitle')}\n description={getPhrase('messageDescription')}\n onClick={props.onToggleMessage}\n toggled={props.toggleMessage}\n disabled={props.disableMessage}\n >\n <FlowSettings.TextArea\n hide={!props.toggleMessage}\n placeholder={getPhrase('messagePlaceholder')}\n onChange={props.onChangeMessage}\n value={props.message}\n />\n </FlowSettings.Toggle>\n </FlowSettings>\n \n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { useCreateShare } from 'libs/shared/apps/share-v2/hooks/useCreateShare';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { YearGroup } from 'libs/shared/interfaces';\n\nimport { useAssignSharedData } from 'apps/assign/hooks/useAssignSharedData';\n\nconst namespace = 'assign.useOpenClassroomFlowData';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UseOpenClassroomFlowDataOptions {\n objectId: string;\n entityType: SharableEntityType;\n}\n\ntype OpenClassroomFlowSettings = 'preventScrubbing' | 'immediateFeedback' | 'requiresStudentSignIn' | 'respectRatingsAndRestrictions' | 'message';\ntype OpenClassroomFlowSettingsMap = {[key in OpenClassroomFlowSettings]: boolean};\nexport type OpenClassroomFlowSettingsError = {\n name?: string\n};\n\nconst initialSettings: OpenClassroomFlowSettingsMap = {\n immediateFeedback: false,\n preventScrubbing: false,\n message: false,\n requiresStudentSignIn: false,\n respectRatingsAndRestrictions: false\n};\n\nconst MAX_OPEN_CLASSROOM_NAME_LENGTH = 128;\n\nconst VIEW_MODEL_KEY = 'assign:open:classroom:flow:settings:header';\n\nexport function useOpenClassroomFlowSettingsData(options: UseOpenClassroomFlowDataOptions) {\n const alert = useAlerts();\n\n /**\n * We store this in Local storage so that if they user deliberatly\n * closes this we dont show this again\n */\n const [ showHeader, setShowHeader ] = useViewModel(VIEW_MODEL_KEY, true, { storage: StorageType.LocalStorage });\n \n const sharedData = useAssignSharedData({\n entityType: options.entityType,\n objectId: options.objectId\n });\n\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n CustomerRequests.yearGroups(sharedData.currentUser.data?.customerId)\n );\n\n const { createOpenSession } = useCreateShare(options.objectId);\n \n const [ settings, setSettings ] = React.useState<OpenClassroomFlowSettingsMap>({\n ...initialSettings,\n preventScrubbing: sharedData.interactive.data?.preventScrubbing || false,\n immediateFeedback: sharedData.interactive.data?.immediateFeedback || false\n });\n const [ name, setName ] = React.useState('');\n const [ message, setMessage ] = React.useState('');\n const [ loading, setLoading ] = React.useState(false);\n const [ error, setError ] = React.useState<OpenClassroomFlowSettingsError>({});\n\n const isValid = Object.keys(error).length === 0;\n\n function onChangeSetting(setting: OpenClassroomFlowSettings, value: boolean) {\n const newSettings: Partial<OpenClassroomFlowSettingsMap> = {\n [setting]: value\n };\n /*\n * If respect ratings and restrictions is toggled\n * we always toggle requires student sign in option too\n * - Nish\n */\n if (setting === 'respectRatingsAndRestrictions') {\n newSettings['requiresStudentSignIn'] = value;\n }\n \n setSettings(prev => ({\n ...prev,\n ...newSettings\n }));\n }\n\n async function onShare(onSuccess?: (share: Share) => void) {\n if (!isValid) {\n return;\n }\n\n setLoading(true);\n try {\n const share = await createOpenSession({\n name,\n objectId: options.objectId,\n immediateFeedback: settings.immediateFeedback,\n preventScrubbing: settings.preventScrubbing,\n requireSignIn: settings.requiresStudentSignIn,\n respectRatingsAndRestrictions: settings.respectRatingsAndRestrictions\n });\n\n typeof onSuccess === 'function' && onSuccess(share);\n \n setLoading(false);\n } catch (ex: unknown) {\n alert.error(getPhrase('createError'));\n } finally {\n setLoading(false);\n }\n }\n\n function toggleSetting(setting: OpenClassroomFlowSettings) {\n onChangeSetting(setting, !settings[setting]);\n }\n\n function setOpenClassroomName(name: string) {\n if (name.length > MAX_OPEN_CLASSROOM_NAME_LENGTH) {\n setError(prev => ({\n ...prev,\n name: getPhrase('errorNameTooLong')\n }));\n } else {\n setError(prev => {\n delete prev.name;\n return prev;\n });\n }\n setName(name);\n }\n\n const loaded = sharedData.loaded\n && !!yearGroups.data;\n\n return {\n data: {\n loaded,\n entity: sharedData.entity,\n yearGroups: yearGroups\n },\n showHeader,\n hasStudentExp: sharedData.hasStudentExp,\n shouldShowSpinner: loading,\n nextButtonText: getPhrase('nextButton'),\n name,\n message,\n settings,\n setMessage,\n setShowHeader,\n toggleSetting,\n setOpenClassroomName,\n onShare,\n error,\n setError,\n isValid\n };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\n\nimport { useClassroomExperience } from 'shared/hooks/useClassroomExperience';\n\nimport { FlowControls } from 'apps/assign/components/flow-controls/FlowControls';\nimport { getAssignEventLogger } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { OpenClassroomFlowSettings } from './components/open-classroom-flow-settings/OpenClassroomFlowSettings';\nimport { useOpenClassroomFlowSettingsData } from './hooks/use-open-classroom-flow-settings-data/useOpenClassroomFlowSettingsData';\n\nconst namespace = 'assign.openClassroomFlowSettingsView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface OpenClassroomFlowSettingsViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n\n setShare: (share: Share) => void;\n goToFlowSelector: () => void;\n goToAssignDetails: () => void;\n hideBackButton?: boolean;\n}\n\nexport function OpenClassroomFlowSettingsView(props: OpenClassroomFlowSettingsViewProps): JSX.Element {\n const viewModel = useOpenClassroomFlowSettingsData({\n entityType: props.entityType,\n objectId: props.objectId\n });\n\n const { experience, loading: isLoadingExperience } = useClassroomExperience();\n\n const {\n loaded,\n entity,\n yearGroups\n } = viewModel.data;\n\n const { log } = getAssignEventLogger({\n data: {\n entity: {\n id: props.objectId,\n type: props.entityType\n }\n },\n analyticsOptions: {\n location: LocationContext.Popup\n }\n });\n\n function onClickNext() {\n viewModel.onShare(share => {\n // Create event is logged for EventAggregator to send emails - Sha\n log({\n type: 'create-open-classroom',\n share\n });\n // Share event is logged for continuity with the V1 share analytics - Sha\n log({\n type: 'share-open-classroom',\n id: share.objectId,\n shareId: share.shareId,\n shareType: share.type\n });\n \n props.setShare(share);\n props.goToAssignDetails();\n });\n }\n\n const loading = !loaded || isLoadingExperience || props.loading;\n\n return (\n <Popup\n size='lg'\n title={getPhrase('title')}\n showLoadingSpinner={loading}\n closePopup={props.closePopup}\n bodyClassName='d-flex flex-column gap-3'\n animation={props.animate}\n >\n <OpenClassroomFlowSettings\n entity={entity.data}\n error={viewModel.error}\n showHeader={viewModel.showHeader}\n openClassroomName={viewModel.name}\n onChangeOpenClassroomName={viewModel.setOpenClassroomName}\n message={viewModel.message}\n yearGroups={yearGroups.data}\n hasStudentExp={viewModel.hasStudentExp}\n toggleMessage={viewModel.settings.message}\n immediateFeedback={viewModel.settings.immediateFeedback}\n preventScrubbing={viewModel.settings.preventScrubbing}\n toggleRequiresStudentSignIn={viewModel.settings.requiresStudentSignIn}\n toggleRespectRatingsAndRestrictions={viewModel.settings.respectRatingsAndRestrictions}\n hideMessage={true} // Message field does nothing atm for open classroom\n onChangeMessage={viewModel.setMessage}\n onToggleMessage={() => viewModel.toggleSetting('message')}\n hidePreventScrubbing={props.entityType !== 'interactive'}\n hideImmediateFeedback={props.entityType !== 'interactive'}\n hideRequiresStudentSignIn={experience !== 'full'}\n hideRespectRatingsAndRestrictions={experience !== 'full'}\n onTogglePreventScrubbing={() => viewModel.toggleSetting('preventScrubbing')}\n onToggleImmediateFeedback={() => viewModel.toggleSetting('immediateFeedback')}\n onToggleRequiresStudentSignIn={() => viewModel.toggleSetting('requiresStudentSignIn')}\n onToggleRespectRatingsAndRestrictions={() => viewModel.toggleSetting('respectRatingsAndRestrictions')}\n closeHeader={() => viewModel.setShowHeader(false)}\n disableRequiresStudentSignIn={viewModel.settings.respectRatingsAndRestrictions}\n />\n <FlowControls\n hideCreateClassroomButton\n hideBackButton={props.hideBackButton}\n onClickBack={props.goToFlowSelector}\n onClickNext={onClickNext}\n nextButtonText={viewModel.nextButtonText}\n showSpinner={viewModel.shouldShowSpinner}\n disableNextButton={!viewModel.isValid}\n />\n </Popup>\n );\n}","import React from 'react';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopup, MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\n\nimport { OpenClassroomFlowSteps } from 'apps/assign/interfaces/Assign';\n\nimport { AssignDetailsView, AssignDetailsViewProps } from '../assign-details-view/AssignDetailsView';\nimport { OpenClassroomFlowSettingsView, OpenClassroomFlowSettingsViewProps } from '../open-classroom-flow-settings-view/OpenClassroomFlowSettingsView';\n\ntype AllOpenClassroomFlowViewProps =\n & OpenClassroomFlowSettingsViewProps\n & AssignDetailsViewProps;\nexport interface OpenClassroomFlowViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n goToFlowSelector: () => void;\n isEntry?: boolean;\n}\n\nexport function OpenClassroomFlowView(props: OpenClassroomFlowViewProps): JSX.Element {\n const [ flowStep, setFlowStep ] = React.useState<OpenClassroomFlowSteps>('settings');\n const [ share, setShare ] = React.useState<Share>();\n\n const data: AllOpenClassroomFlowViewProps = {\n objectId: props.objectId,\n entityType: props.entityType,\n closePopup: props.closePopup,\n goToFlowSelector: props.goToFlowSelector,\n \n shareId: share?.shareId,\n initialDetailsScreen: 'share-link',\n goToAssignDetails: () => setFlowStep('assign-details'),\n setShare\n };\n\n return (\n <MultiStepPopup<AllOpenClassroomFlowViewProps, OpenClassroomFlowSteps>\n data={data}\n animate={false}\n step={flowStep}\n setStep={setFlowStep}\n closePopup={props.closePopup}\n steps={{\n 'settings': { view: OpenClassroomFlowSettingsView },\n 'assign-details': { view: AssignDetailsView }\n }}\n />\n );\n}"],"names":["getPhrase","ShareLinkHelper","getPrivateIconAndText","options","entityTypeId","privacy","hasStudentExp","entity","yearGroups","icon","text","Array","isArray","getRespectRatingText","getIconAndText","linkExpireDate","isPasswordProtected","status","isToday","dayDifference","Date","days","video","restriction","_restrictions","value","yearGroup","maxYearGroup","minAllowedYearGroup","rating","length","name","getShareLinkAccessType","isTvContent","isClickViewContent","canManageAccess","namespace","OpenClassroomFlowInfoHeader","props","className","IconCircle","svgName","svgSize","SvgContainer","S","variant","textVariant","svgWrapperClassName","Text","phrase","IconButton","onClick","onClose","LanguageService","OpenClassroomFlowSettings","respectRatingText","showHeader","closeHeader","FlowSettings","title","openClassroomName","onChange","onChangeOpenClassroomName","placeholder","error","hide","hidePreventScrubbing","hideImmediateFeedback","description","onTogglePreventScrubbing","toggled","preventScrubbing","disabled","disablePreventScrubbing","onToggleImmediateFeedback","immediateFeedback","disableImmediateFeedback","hideRequiresStudentSignIn","hideRespectRatingsAndRestrictions","onToggleRequiresStudentSignIn","toggleRequiresStudentSignIn","disableRequiresStudentSignIn","onToggleRespectRatingsAndRestrictions","toggleRespectRatingsAndRestrictions","disableRespectRatingsAndRestrictions","hideMessage","childContainerClassName","onToggleMessage","toggleMessage","disableMessage","onChangeMessage","message","initialSettings","requiresStudentSignIn","respectRatingsAndRestrictions","MAX_OPEN_CLASSROOM_NAME_LENGTH","VIEW_MODEL_KEY","useOpenClassroomFlowSettingsData","alert","storage","setShowHeader","sharedData","useAssignSharedData","entityType","objectId","CustomerRequests","currentUser","data","customerId","createOpenSession","useCreateShare","interactive","settings","setSettings","setName","setMessage","loading","setLoading","setError","isValid","Object","keys","loaded","shouldShowSpinner","nextButtonText","toggleSetting","setting","newSettings","prev","onChangeSetting","setOpenClassroomName","onShare","onSuccess","requireSignIn","share","OpenClassroomFlowSettingsView","viewModel","useClassroomExperience","experience","isLoadingExperience","log","getAssignEventLogger","id","type","analyticsOptions","location","Popup","size","showLoadingSpinner","closePopup","bodyClassName","animation","animate","FlowControls","hideCreateClassroomButton","hideBackButton","onClickBack","goToFlowSelector","onClickNext","shareId","shareType","setShare","goToAssignDetails","showSpinner","disableNextButton","OpenClassroomFlowView","flowStep","setFlowStep","initialDetailsScreen","MultiStepPopup","step","setStep","steps","view","AssignDetailsView"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/7617-211f084b70-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/projects/lite/src/apps/my-shares/components/insights-admin-alert/InsightsAdminAlert.tsx","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/my-shares-demo-insights.scss","file:///app/packages/projects/lite/src/apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight.tsx","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/my-shares/empty-state/MySharesEmptyState.tsx","file:///app/packages/projects/lite/src/apps/my-shares/views/my-shares/MySharesView.tsx"],"sourcesContent":["export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\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 React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nconst namespace = 'lite.insightsAdminAlert';\n\ninterface InsightsAdminAlertProps {\n hasAnalytics: boolean;\n analyticsUrl: string;\n video?: VideoTypes;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsAdminAlert(props: InsightsAdminAlertProps) {\n const [ show, setShow ] = useViewModel(\n ViewModelKeys.INSIGHTS_ADMIN_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function onDismiss() {\n setShow(false);\n }\n\n function getAnalyticsUrl() {\n if (!props.video) return props.analyticsUrl;\n\n let videoRoute = '';\n\n if (props.video.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Video)\n videoRoute = `/videos/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Clip)\n videoRoute = `/clips/${props.video.id}/views`;\n\n return UrlHelper.safeUrlConcat(props.analyticsUrl, videoRoute);\n }\n\n if (!props.hasAnalytics || !show)\n return <></>;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4'>\n <div>\n <Text namespace={namespace} phrase='adminAlert' />\n <a className='text-info' href={getAnalyticsUrl()} target='_blank'>\n <Text namespace={namespace} phrase='analytics' />\n </a>.\n </div>\n <IconButton svgName={cvSvgLibrary.Close} className='text-blue' onClick={onDismiss} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"background\":\"HAuP3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { MySharesTableHeading, MySharesTableRow } from 'apps/my-shares/components/my-shares-table-row/MySharesTableRow';\nimport { DEMO_INTERACTIVE_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { DEMO_INSIGHTS_ACTION, DEMO_INSIGHTS_APPLINK, DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK, DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA, DEMO_INSIGHTS_SHARE_TABLE_DATA } from 'apps/my-shares/constants/MySharesDemoInsights';\n\nimport { MySharesTableData } from '../my-shares-table/MySharesTableUtils';\n\nimport styles from './my-shares-demo-insights.scss';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesDemoInsightProps {\n demoInteractive: InteractiveMetadata;\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n breakpoints: Breakpoints;\n className?: string;\n heading?: string;\n shareType?: ShareType;\n}\n\nexport function MySharesDemoInsight(props: MySharesDemoInsightProps) {\n const isMobile = props.breakpoints.xs || props.breakpoints.sm;\n\n const appLink = props.shareType === ShareType.Open ? DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK : DEMO_INSIGHTS_APPLINK;\n\n function getDemoInteractive() {\n return {\n ...props.demoInteractive,\n id: DEMO_INTERACTIVE_ID\n };\n }\n\n function getObjectActions() {\n return [\n {\n ...DEMO_INSIGHTS_ACTION,\n button: !isMobile,\n appLink\n }\n ];\n }\n\n const demoShareTableData = props.shareType === ShareType.Open\n ? DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA\n : DEMO_INSIGHTS_SHARE_TABLE_DATA;\n\n const shareData: MySharesTableData = {\n ...demoShareTableData,\n sharedObject: getDemoInteractive()\n };\n\n return (\n <div className={props.className}>\n <MySharesTableHeading heading={props.heading ?? getPhrase('demoHeading')} isFirst={true} />\n\n <div className={`${styles.background} rounded-3 mb-4`}>\n <MySharesTableRow\n shareData={shareData}\n getObjectActions={getObjectActions}\n imageCdnUrl={props.imageCdnUrl}\n yearGroups={props.yearGroups}\n breakpoints={props.breakpoints}\n className='bg-light-orange'\n appLink={(() => appLink)}\n />\n </div>\n </div>\n );\n}","export const DEMO_INTERACTIVE_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 dateShared: 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_OPEN_CLASSROOM_SHARE: Share = {\n ...DEMO_INSIGHTS_SHARE,\n type: ShareType.Open,\n expireDate: DateHelper.add(new Date(DEMO_INSIGHTS_SHARE.dateCreated), 30, 'days').toISOString(),\n privacy: SharePrivacy.PinCode\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\nexport const DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA: MySharesTableData = {\n ...DEMO_INSIGHTS_SHARE_TABLE_DATA,\n share: DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE\n};\n\nexport const DEMO_INSIGHTS_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_DEMO\n};\n\nexport const DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_OPEN_CLASSROOM_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';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myShares.mySharesEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function MySharesEmptyState() {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.MY_VIDEOS_PUBLIC} altText={getPhrase('heading')} />\n <EmptyState.Heading><Text namespace={namespace} phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text namespace={namespace} phrase='info' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'cta')}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.MySharesLanding,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n />\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAccessPolicy } from 'libs/shared/hooks/useAccessPolicy';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useClassroomExperience } from 'shared/hooks/useClassroomExperience';\nimport { useSharesTable } from 'shared/hooks/useSharesTable';\n\nimport { InsightsAdminAlert } from 'apps/my-shares/components/insights-admin-alert/InsightsAdminAlert';\nimport { MySharesDemoInsight } from 'apps/my-shares/components/my-shares-demo-insight/MySharesDemoInsight';\nimport { MySharesTableEmptyState } from 'apps/my-shares/components/my-shares-table/empty-state/MySharesTableEmptyState';\nimport { MySharesTable } from 'apps/my-shares/components/my-shares-table/MySharesTable';\nimport { PartialMySharesTable } from 'apps/my-shares/components/my-shares-table/partial-loading/PartialMySharesTable';\nimport { MySharesEmptyState } from 'apps/my-shares/views/my-shares/empty-state/MySharesEmptyState';\nimport { getShareObjectActions, getSharesParams } from 'apps/my-shares/views/my-shares/MySharesViewUtils';\n\nconst namespace = 'myShares.myShares';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MySharesViewProps {\n typeId: string | string[];\n}\n\nexport function MySharesView(props: MySharesViewProps) {\n // Shared hooks\n useSetPageMetadata({ title: getPhrase('myShares') });\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasShareFlowV2, hasClassrooms } = useSettings(null);\n const { isPlugin } = usePluginHelper();\n const breakpoints = useBreakpoints();\n const { accessPolicy } = useAccessPolicy();\n const { experience } = useClassroomExperience();\n\n const sharesParams = getSharesParams(props.typeId);\n\n // Local variables\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewMySharesLanding) ||\n hasPermissions(PermissionName.ViewMyShares) && hasShareFlowV2;\n const hasInsightsPermission = hasShareFlowV2 && hasPermissions(PermissionName.ViewInsights);\n const showDemoInsight = accessPolicy?.metadata?.hasDemoInsights || experience === 'minimal';\n\n // Flight fetching\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const demoInteractive = Flight.useBasicFetch<InteractiveMetadata>(showDemoInsight &&\n InsightsDemoRequests.interactiveMetadata());\n\n const shareData = useSharesTable({\n interactiveInsights: true,\n shouldFetch,\n params: {\n type: [ ShareType.Link, ShareType.LegacyDirect ]\n }\n });\n\n React.useEffect(() => {\n if (!(hasPermissions(PermissionName.ViewMyShares) && hasShareFlowV2))\n Core.LocationUtils.PageLoad('/');\n }, [shouldFetch]);\n\n if (!shouldFetch)\n return <MySharesEmptyState />;\n\n return (\n <div className='px-3'>\n <InsightsAdminAlert\n analyticsUrl={config.data?.analyticsWebUrl}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n />\n\n <div className='border-bottom pb-2 mb-4'>\n <h1 className='mb-2'><Text namespace={namespace} phrase='myShares' /></h1>\n {hasClassrooms && (\n <p className='mb-0'>\n <Text namespace={namespace} phrase='classroomsHint'/>\n &nbsp;\n <AppLink\n appLink={{ application: AppChannels.CLASSROOMS, action: Actions.Classrooms.HOME }}\n className='info-link'\n >\n <Text namespace={namespace} phrase='classroomsCta'/>\n </AppLink>\n </p>\n )}\n </div>\n\n {showDemoInsight && demoInteractive.data &&\n <MySharesDemoInsight\n demoInteractive={demoInteractive.data}\n breakpoints={breakpoints}\n imageCdnUrl={shareData.imageCdnUrl}\n yearGroups={yearGroups.data}\n shareType={ShareType.Link}\n />\n }\n\n {(() => {\n if (shareData.showPartialLoading)\n return <PartialMySharesTable />;\n\n if (!shareData.sentShares.length)\n return <MySharesTableEmptyState />;\n\n return (\n <>\n <MySharesTable\n sentShares={shareData.sentShares}\n sharedObjects={shareData.sharedObjects.items}\n shareRecipients={shareData.shareRecipients.items}\n interactivesPendingReview={shareData.interactivesPendingReview.itemsArr}\n getObjectActions={row => getShareObjectActions({\n share: row.share,\n sharedObject: row.sharedObject,\n audienceParams: sharesParams.audienceAppLinkParams,\n hasInsights: hasInsightsPermission,\n isPlugin,\n breakpoints\n })}\n groupByDateShared\n breakpoints={breakpoints}\n hasDemoInsights={showDemoInsight}\n imageCdnUrl={config.data?.imageCdnUrl}\n yearGroups={yearGroups.data}\n />\n {(shareData.hasMore || shareData.isFetching) &&\n <InfiniteScrollFooter\n isFetching={shareData.isFetching}\n fetchNext={shareData.fetchNext}\n nextCursor={shareData.nextCursor}\n />\n }\n </>\n );\n })()}\n </div>\n );\n}\n"],"names":["SharePrivacy","InsightsDemoRequests","interactive","url","key","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","namespace","InsightsAdminAlert","props","storage","show","setShow","hasAnalytics","role","className","phrase","href","video","analyticsUrl","videoRoute","typeId","id","getAnalyticsUrl","target","svgName","onClick","getPhrase","LanguageService","MySharesDemoInsight","isMobile","breakpoints","xs","sm","shareType","ShareType","demoShareTableData","shareData","sharedObject","demoInteractive","heading","isFirst","MySharesTableRow","getObjectActions","button","appLink","imageCdnUrl","yearGroups","DEMO_INTERACTIVE_ID","DEMO_INSIGHTS_SHARE","type","privacy","objectId","objectTypeId","viewCount","accessCount","dateCreated","Date","toISOString","dateShared","expireDate","link","shortenedEmbedUrl","shortenedUrl","shareId","ownerCustomerId","ownerId","recipients","options","preventScrubbing","immediateFeedback","DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE","DEMO_INSIGHTS_SHARE_TABLE_DATA","share","shareRecipients","DEMO_INSIGHTS_OPEN_CLASSROOM_SHARE_TABLE_DATA","DEMO_INSIGHTS_APPLINK","application","action","DEMO_INSIGHTS_OPEN_CLASSROOM_APPLINK","DEMO_INSIGHTS_ACTION","label","group","MySharesEmptyState","EmptyState","src","ImageUrls","altText","Text","text","analyticsData","analyticsOptions","actionType","location","entity","workflowPhase","descriptor","SignUp","MySharesView","useSetPageMetadata","title","usePermissions","hasPermissions","hasLocalPermissions","useSettings","hasShareFlowV2","hasClassrooms","isPlugin","usePluginHelper","useBreakpoints","accessPolicy","useAccessPolicy","experience","useClassroomExperience","sharesParams","shouldFetch","PermissionName","hasInsightsPermission","showDemoInsight","metadata","hasDemoInsights","config","ConfigRequests","currentUser","UserRequests","data","isAuthenticated","CustomerRequests","customerId","useSharesTable","interactiveInsights","params","analyticsWebUrl","AppLink","showPartialLoading","PartialMySharesTable","sentShares","length","MySharesTable","sharedObjects","items","interactivesPendingReview","itemsArr","row","audienceParams","audienceAppLinkParams","hasInsights","groupByDateShared","hasMore","isFetching","InfiniteScrollFooter","fetchNext","nextCursor","MySharesTableEmptyState"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7742],{39902:(e,t,n)=>{n.d(t,{FN:()=>f,SW:()=>v,fh:()=>p});var r=n(32735),i=n(20354),a=n(75896);function o(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(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 l(e,t){if(e){if("string"==typeof e)return c(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function s(e,t,n){return(t=function(e){var t=function(e){if("object"!=u(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=u(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==u(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n},m=50;function p(e,t){var n=a.m.chunk(e,m).map(function(e){return t(a.m.uniq(e))}),r=i.a.useBasicFetchAll(n),o=a.m.flatten(r.data),l=r.data.length?o.reduce(function(e,t){return Object.assign(Object.assign({},e),s({},t.id,t))},{}):null;return{itemsArr:o,items:l,isFetching:r.isFetching,hasCompleted:r.hasCompleted}}function f(e,t,n){var i=null!=n?n:function(e){return"object"===u(e)?e.id:e},a=v({getRequest:t,_getKey:n}),o=a.fetchItems,l=d(a,["fetchItems"]);return r.useEffect(function(){(null==e?void 0:e.length)&&o(e)},[null==e?void 0:e.map(i).join(",")]),l}function v(e){var t,n,c,d,p,f=null!==(t=e._getKey)&&void 0!==t?t:function(e){return"object"===u(e)?e.id:e},v=r.useRef(new Set),y=(d=r.useState([]),p=2,function(e){if(Array.isArray(e))return e}(d)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,l=[],c=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw i}}return l}}(d,p)||l(d,p)||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.")}()),h=y[0],g=y[1],b=i.a.useBasicFetchAll(h),E=a.m.flatten(b.data),k=b.data.length?E.reduce(function(e,t){return Object.assign(Object.assign({},e),s({},f(t),t))},{}):null;return{hasFirstRequestCompleted:!!(null===(c=null===(n=b.responses)||void 0===n?void 0:n[0])||void 0===c?void 0:c.hasCompleted),itemsArr:E,items:k,isFetching:b.isFetching,fetchItems:function(t){if(null==t?void 0:t.length){var n=[];t.forEach(function(e){var t=f(e);v.current.has(t)||(n.push(e),v.current.add(t))}),n.length&&g(function(t){return[].concat(o(t),o(a.m.chunk(n,m).map(e.getRequest)))})}}}}},37788:(e,t,n)=>{n.r(t),n.d(t,{MyVideosView:()=>X});var r=n(32735),i=n(70680),a=n(23481),o=n(20354),l=n(28400),c=n(65858),u=n(43500),s=n(73518),d=n(39958),m=n(1302),p=n(91693),f=n(37395),v=n(4201),y=n(83345),h=n(1860),g=n(30254),b=n(3534),E=n(51365),k=n(16714),V=n(183),A=n(31949),O=n(299),S=n(91286),w=n(22902),F=n(79612),M=n(35223),C=n(58535),j=n(14070),x=n(97291),I=n(58321),L=n(44110),N=n(97816),P=n(10741),D=n(22490),B=n(98860),R=n(12617),_=n(45967),T=n(65202),U=n(74796),q=n(14305),H=n(72363),Y=n(9218),W=n(18097);const K={uploadingList:"wg7hV"};var Q="default.myVideos";function X(e){var t,n,X,Z,$,J,z,G;(0,F.M)({title:a.T.getPhrase(Q,"pageTitle")});var ee=(0,i.I0)(),te=(0,I.U)({locationContext:c.LZ.VideoThumbnail}).commonVideoProps,ne=(0,w.T)(),re=ne.hasPermissions,ie=ne.hasLocalPermissions,ae=(0,_.q)().handleDragEnd,oe=(0,v.of)().focusSearchBar,le=o.a.useBasicFetch(A.N.currentUser()),ce=o.a.useBasicFetch((null===(t=le.data)||void 0===t?void 0:t.isAuthenticated)&&A.N.workspace()),ue=null===(X=null===(n=ce.data)||void 0===n?void 0:n.categoryTree)||void 0===X?void 0:X.id,se=(0,B.P)(ue),de=(0,H.y)(),me=(0,H.W)(null===(Z=ce.data)||void 0===Z?void 0:Z.id,null===($=ce.data)||void 0===$?void 0:$.categoryTree.id),pe=(0,L.i)(),fe=(0,U.f)(),ve=function(e,t){return ce.data?R.E.videos(ue,e,t):null},ye=!ie(k.E.ViewMyVideosLanding)&&le.hasCompleted,he=o.a.useBasicFetch(ye&&ve(e.cursor,e.typeFilter));(0,S.v)(he);var ge=(0,T.J)({onRemove:function(e,t){return o.a.getFetch(ee)(ve(e,t))}}),be=ge.uploadingVideos,Ee=ge.onClickAlternate,ke=ge.onClickDelete,Ve=ge.processingIds,Ae=(null===(J=he.data)||void 0===J?void 0:J.data.length)&&Ve?he.data.data.filter(function(e){return!Ve[e.id]}):[];(0,N.V)(Ae);var Oe=(0,O.X)(Ae);if(ie(k.E.ViewMyVideosLanding))return r.createElement(q.V,null);function Se(){return{action:j.e.MyVideos.MY_VIDEOS,application:x.O.MY_VIDEOS,params:{cursor:e.cursor,previous:e.previous,type:e.typeFilter}}}var we=!!(null===(z=null==se?void 0:se.items)||void 0===z?void 0:z.length);return r.createElement(E.M.Provider,{value:de},r.createElement("div",{className:"px-3"},r.createElement("div",{className:"d-flex justify-content-between"},r.createElement("h1",{className:"h2 mb-0"},r.createElement(y.x,{namespace:Q,phrase:"header"})),r.createElement("div",null,r.createElement("div",{className:"d-sm-none"},r.createElement(Y.c,{canUpload:re(k.C.UploadVideo)})),r.createElement("div",{className:"ms-2 d-sm-inline-block d-none"},r.createElement(p.h,{svgName:M.vn.Search,appLink:{application:x.O.SEARCH,action:j.e.Search.HOME,params:{source:u.fi.MyVideos}},className:"btn btn-outline-dark me-2",onClick:oe,analyticsData:{},analyticsOptions:{entity:c.py.SearchResults,location:c.LZ.MyVideos,actionType:c.Vw.Click,descriptor:c.Bk.MyVideos}},r.createElement(y.x,{namespace:Q,phrase:"searchMyVideos"})),r.createElement(p.h,{svgName:M.vn.Plus,appLink:{application:x.O.MY_VIDEOS,action:j.e.MyVideos.ADD_FOLDER,args:[null===(G=ce.data)||void 0===G?void 0:G.id]},className:"btn btn-outline-dark"},r.createElement(y.x,{namespace:Q,phrase:"addFolder"}))))),r.createElement("hr",null),r.createElement(s.p,{handleDragEnd:ae,dragOverlayComponent:C.U,source:ce.data},r.createElement("div",null,!(null==se?void 0:se.hasCompleted)&&r.createElement(m.i,null),we&&r.createElement("div",{className:"mx-n2"},r.createElement(d.$,{folders:se.items,getAppLink:function(e){return{application:x.O.MY_VIDEOS,action:j.e.MyVideos.MY_VIDEOS_FOLDER,args:[e.id,l.m.slugify(e.name)]}},expandFolders:!1,getFolderActions:function(e){return fe("folder",e)},drag:!0,drop:!0})),r.createElement(g.X,{allowBulkAction:!0,allowFilter:!0,checkboxHelper:Oe,getVideosBulkAction:me,locationContext:c.LZ.MyVideos,typeFilter:e.typeFilter,getAppLink:function(){return Se()}}),!!(null==be?void 0:be.length)&&r.createElement("div",{className:"position-relative ".concat(K.uploadingList)},be.map(function(e){return r.createElement(W.X,{item:e,onClickAlternate:Ee,onClickDelete:ke,key:e.id,allowBulkAction:!0,categoryId:null})})),function(){var t,n;return le.data&&he.data?(null==Ae?void 0:Ae.length)||(null==be?void 0:be.length)?r.createElement(r.Fragment,null,r.createElement(b.E4,{videos:Ae,getVideoAppLink:function(e,t){var n,r;return D.W.getAppLink(e,Object.assign(Object.assign({},t),{context:V.Q.CategoryTree,contextId:null===(n=ce.data)||void 0===n?void 0:n.categoryTree.id,includeContext:null===(r=le.data)||void 0===r?void 0:r.isAuthenticated}))},presentationAudiences:pe.data,canRemovePrivateVideos:!0,allowBulkAction:!0,getVideosBulkAction:me,typeFilter:e.typeFilter,checkboxHelper:Oe,hasPermissions:re,drag:we,getPreviewQuestionsAppLink:function(e){return P.j.getPreviewQuestionsAppLink(e)},commonVideoProps:te}),!!(null===(n=null===(t=he.data)||void 0===t?void 0:t.pagination)||void 0===n?void 0:n.cursors)&&r.createElement(f.t,{appLink:Se(),cursors:{next:he.data.pagination.cursors.next,previous:e.cursor},buttonVariant:"outline-dark",className:"py-2 float-end",prevHack:!0})):r.createElement(q.K,{canUpload:re(k.C.UploadVideo)}):r.createElement("div",{className:"mx-n2"},r.createElement(h.S,{allowBulkActions:!0}))}()))))}},97816:(e,t,n)=>{n.d(t,{V:()=>l,l:()=>c});var r=n(1575),i=n(39902),a=n(31908);function o(e){return e?Array.isArray(e)?e.filter(function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))}):"data"in e?e.data.filter(function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))}):[]:[]}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=o(e).map(function(e){return e.id});(0,i.FN)(n,function(e){return r.R.videoMixinAssocs(e,t.flightNamespace)},null)}function c(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,i.SW)({getRequest:function(t){return r.R.videoMixinAssocs(t,e.flightNamespace)}}).fetchItems;return{fetchObjects:function(e){return t(o(e).map(function(e){return e.id}))}}}}}]);
2
- //# sourceMappingURL=7742-514844bd1a-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/7742-514844bd1a-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/projects/lite/src/apps/my-videos/views/my-videos/my-videos.scss","file:///app/packages/projects/lite/src/apps/my-videos/views/my-videos/MyVideosView.tsx","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst CHUNK_SIZE = 50;\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n itemsArr: T[];\n items: { [key: string]: T} | null;\n isFetching: boolean;\n hasCompleted: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const chunks = ArrayHelper.chunk<string>(itemIds, CHUNK_SIZE);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n itemsArr,\n items,\n isFetching: responses.isFetching,\n hasCompleted: responses.hasCompleted\n };\n}\n\n/**\n * When you need the useBatchFetch() behavior, but your list of objects to hydrate\n * will grow, such as on a scrolling page. useGrowingBatchFetch() will use local state\n * to determine what we've already built a request for and what items are new\n * as to not re-fetch items - Sha\n */\nexport function useGrowingBatchFetch<TResponse, TObjects = string>(\n objs: TObjects[],\n getRequest: (items: TObjects[]) => Flight.Request,\n _getKey?: (obj: TObjects) => string\n) {\n const getKey = _getKey ?? ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const { fetchItems, ...data } = useGrowingBatchFetchFunc<TResponse, TObjects>({ getRequest, _getKey });\n\n React.useEffect(() => {\n if (!objs?.length)\n return;\n\n fetchItems(objs);\n }, [objs?.map(getKey).join(',')]);\n\n return data;\n}\n\ninterface UseGrowingBatchFetchFuncOptions<TObjects> {\n getRequest: (items: TObjects[]) => Flight.Request;\n _getKey?: (obj: TObjects) => string;\n}\n\n/**\n * When you need the useGrowingBatchFetch() behaviour, but need to trigger the\n * fetch manually and update the objects - Nish \n */\nexport function useGrowingBatchFetchFunc<TResponse, TObjects = string>(\n options: UseGrowingBatchFetchFuncOptions<TObjects>\n) {\n const getKey = options._getKey ?? ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const fetchedItems = React.useRef<Set<string>>(new Set<string>());\n const [ requests, setRequests ] = React.useState<Flight.Request[]>([]);\n\n function fetchItems(objs: TObjects[]) {\n if (!objs?.length)\n return;\n\n const unfetchedItems: TObjects[] = [];\n \n objs.forEach(obj => {\n const key = getKey(obj);\n\n if (fetchedItems.current.has(key))\n return;\n\n unfetchedItems.push(obj);\n fetchedItems.current.add(key);\n });\n \n if (!unfetchedItems.length)\n return;\n \n setRequests(r => ([ ...r, ...ArrayHelper.chunk<TObjects>(unfetchedItems, CHUNK_SIZE).map(options.getRequest) ]));\n }\n\n const responses = Flight.useBasicFetchAll<TResponse[]>(requests);\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce<Record<string, TResponse>>((acc, item) => ({ ...acc, [getKey(item)]: item }), {})\n : null;\n\n return {\n hasFirstRequestCompleted: !!responses.responses?.[0]?.hasCompleted,\n itemsArr,\n items,\n isFetching: responses.isFetching,\n fetchItems\n };\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"uploadingList\":\"wg7hV\"};","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Cursors } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { SearchIndices, SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { DragDropMoveContext } from 'libs/shared/components/drag-drop-move/DragDropMoveContext';\nimport { FolderList } from 'libs/shared/components/folder-list/FolderList';\nimport { PartialFolderList } from 'libs/shared/components/folder-list/partial-loading/PartialFolderList';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoListActions } from 'libs/shared/components/video-list/video-list-actions/VideoListActions';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { BulkCheckboxManager, useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BasePaginatedCollection, CurrentUser, Folder, Library, VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DragDropOverlay } from 'shared/components/drag-drop-overlay/DragDropOverlay';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { useFetchAllChildFolders } from 'apps/libraries/hooks/UseFetchAllChildFolders';\nimport { MyVideosRequests } from 'apps/my-videos/flight-requests/MyVideosRequests';\nimport { useDragDropMove } from 'apps/my-videos/hooks/useDragDropMove';\nimport { useUploadItems } from 'apps/my-videos/hooks/useUploadItems';\nimport { useGetFolderActions } from 'apps/my-videos/utils/getFolderActions';\nimport { MyVideosEmptyState, MyVideosPublicEmptyState } from 'apps/my-videos/views/my-videos/empty-state/MyVideosEmptyState';\nimport { useMyVideosViewActions, useMyVideosViewBulkActions } from 'apps/my-videos/views/my-videos/MyVideosViewUtils';\nimport { UploadFileSelect } from 'apps/upload/components/upload-file-select/UploadFileSelect';\nimport { UploadingItem } from 'apps/upload/components/uploading-item/UploadingItem';\n\nimport styles from './my-videos.scss';\n\nconst namespace = 'default.myVideos';\n\ninterface MyVideosViewProps {\n cursor?: string;\n previous?: string;\n typeFilter?: SearchIndices[];\n}\n\nexport function MyVideosView(props: MyVideosViewProps): JSX.Element {\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n\n const dispatch = useDispatch();\n\n const { commonVideoProps } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { handleDragEnd } = useDragDropMove();\n\n const { focusSearchBar } = useFocusSearchBar();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const workspace = Flight.useBasicFetch<Library>(\n currentUser.data?.isAuthenticated && UserRequests.workspace()\n );\n const folderId = workspace.data?.categoryTree?.id;\n const folders = useFetchAllChildFolders(folderId);\n \n const videoActions = useMyVideosViewActions();\n const getVideosAction = useMyVideosViewBulkActions(workspace.data?.id, workspace.data?.categoryTree.id);\n\n const audiences = usePresentationAudiences();\n const getFolderActions = useGetFolderActions();\n\n const getMyVideosRequest = (cursor?: string, typeFilter?: SearchIndices | SearchIndices[]) => {\n if (!workspace.data)\n return null;\n\n // Delete the above when master supports the new assoc types.\n return MyVideosRequests.videos(folderId, cursor, typeFilter);\n };\n\n const fetchNext = (cursor?: string, typeFilter?: SearchIndices | SearchIndices[]) => {\n return Flight.getFetch(dispatch)(getMyVideosRequest(cursor, typeFilter));\n };\n\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewMyVideosLanding) && currentUser.hasCompleted;\n\n const videos = Flight.useBasicFetch<BasePaginatedCollection<VideoTypes>>(\n shouldFetch && getMyVideosRequest(props.cursor, props.typeFilter)\n );\n\n useHandleObjectError(videos);\n\n const {\n uploadingVideos,\n onClickAlternate,\n onClickDelete,\n processingIds\n } = useUploadItems({ onRemove: fetchNext });\n\n const omittedVideos = videos.data?.data.length && processingIds\n ? videos.data.data.filter(v => !processingIds[v.id])\n : [];\n \n useVideoMixin(omittedVideos);\n\n const CheckboxHelper: BulkCheckboxManager = useBulkCheckboxManager(omittedVideos);\n\n if (hasLocalPermissions(LocalPermissionName.ViewMyVideosLanding))\n return <MyVideosPublicEmptyState />;\n\n function getMyVideosAppLink(): Core.AppLink {\n return {\n action: Actions.MyVideos.MY_VIDEOS,\n application: AppChannels.MY_VIDEOS,\n params: { cursor: props.cursor, previous: props.previous, type: props.typeFilter }\n };\n }\n\n function getCursors(): Cursors {\n return { next: videos.data.pagination.cursors.next, previous: props.cursor };\n }\n \n const hasFolders = !!folders?.items?.length;\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='px-3'>\n <div className='d-flex justify-content-between'>\n <h1 className='h2 mb-0'><Text namespace={namespace} phrase='header' /></h1>\n <div>\n <div className='d-sm-none'>\n <UploadFileSelect canUpload={hasPermissions(PermissionName.UploadVideo)} />\n </div>\n <div className='ms-2 d-sm-inline-block d-none'>\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.MyVideos\n }\n }}\n className='btn btn-outline-dark me-2'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.MyVideos,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.MyVideos\n }}\n >\n <Text namespace={namespace} phrase='searchMyVideos' />\n </IconButton>\n <IconButton\n svgName={cvSvgLibrary.Plus}\n appLink={{\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.ADD_FOLDER,\n args: [workspace.data?.id]\n }}\n className='btn btn-outline-dark'\n >\n <Text namespace={namespace} phrase='addFolder' />\n </IconButton>\n </div>\n </div>\n </div>\n <hr />\n <DragDropMoveContext\n handleDragEnd={handleDragEnd}\n dragOverlayComponent={DragDropOverlay}\n source={workspace.data}>\n <div>\n {!folders?.hasCompleted && <PartialFolderList />}\n {hasFolders &&\n <div className='mx-n2'>\n <FolderList\n folders={folders.items}\n getAppLink={(f: Folder) => ({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ f.id, TextHelper.slugify(f.name) ]\n })}\n expandFolders={false}\n getFolderActions={f => getFolderActions('folder', f)}\n drag\n drop\n />\n </div>\n }\n <VideoListActions\n allowBulkAction\n allowFilter\n checkboxHelper={CheckboxHelper}\n getVideosBulkAction={getVideosAction}\n locationContext={LocationContext.MyVideos}\n typeFilter={props.typeFilter}\n getAppLink={() => getMyVideosAppLink()}\n />\n {!!uploadingVideos?.length && (\n <div className={`position-relative ${styles.uploadingList}`}>\n {uploadingVideos.map(uploadingVideo => (\n <UploadingItem\n item={uploadingVideo}\n onClickAlternate={onClickAlternate}\n onClickDelete={onClickDelete}\n key={uploadingVideo.id}\n allowBulkAction\n categoryId={null}\n />\n ))}\n </div>\n )}\n {(() => {\n if (!currentUser.data || !videos.data)\n return <div className='mx-n2'><PartialVideoList allowBulkActions /></div>;\n\n if (!omittedVideos?.length && !uploadingVideos?.length)\n return <MyVideosEmptyState canUpload={hasPermissions(PermissionName.UploadVideo)} />;\n\n return (\n <>\n <VideoList\n videos={omittedVideos}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: RelatedVideosContext.CategoryTree,\n contextId: workspace.data?.categoryTree.id,\n includeContext: currentUser.data?.isAuthenticated\n })}\n presentationAudiences={audiences.data}\n canRemovePrivateVideos\n allowBulkAction\n getVideosBulkAction={getVideosAction}\n typeFilter={props.typeFilter}\n checkboxHelper={CheckboxHelper}\n hasPermissions={hasPermissions}\n drag={hasFolders}\n getPreviewQuestionsAppLink={interactive =>\n InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n commonVideoProps={commonVideoProps}\n />\n {!!videos.data?.pagination?.cursors && (\n <Pagination\n appLink={getMyVideosAppLink()}\n cursors={getCursors()}\n buttonVariant='outline-dark'\n className='py-2 float-end'\n prevHack\n />\n )}\n </>\n );\n })()}\n </div>\n </DragDropMoveContext>\n </div>\n </VideoActionsContext.Provider>\n );\n}\n","import { Flight } from 'libs/common/react/index';\n\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useGrowingBatchFetch, useGrowingBatchFetchFunc } from 'libs/shared/hooks/UseBatchFetch';\nimport { Clip, ClipCollection, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}) {\n const videoIds = getValidObjects(objects).map(v => v.id);\n\n useGrowingBatchFetch(\n videoIds,\n ids => VideoRequests.videoMixinAssocs(ids, options.flightNamespace),\n null\n );\n}\n\nexport function useVideoMixinFunc(options: VideoMixinOptions = {}) {\n function getRequest(ids: string[]): Flight.Request {\n return VideoRequests.videoMixinAssocs(ids, options.flightNamespace);\n }\n \n function fetchObjects(items: Types) {\n return fetchItems(getValidObjects(items).map(v => v.id));\n }\n\n const { fetchItems } = useGrowingBatchFetchFunc({ getRequest });\n\n return { fetchObjects };\n}"],"names":["CHUNK_SIZE","useBatchFetch","itemIds","getRequest","requests","map","chunk","responses","itemsArr","data","items","length","reduce","acc","item","id","isFetching","hasCompleted","useGrowingBatchFetch","objs","_getKey","getKey","obj","useGrowingBatchFetchFunc","fetchItems","join","options","fetchedItems","Set","setRequests","hasFirstRequestCompleted","unfetchedItems","forEach","key","current","has","push","add","r","namespace","MyVideosView","props","useSetPageMetadata","title","LanguageService","dispatch","commonVideoProps","useCommonVideoProps","locationContext","usePermissions","hasPermissions","hasLocalPermissions","handleDragEnd","useDragDropMove","focusSearchBar","currentUser","UserRequests","workspace","isAuthenticated","folderId","categoryTree","folders","videoActions","getVideosAction","audiences","usePresentationAudiences","getMyVideosRequest","cursor","typeFilter","MyVideosRequests","shouldFetch","videos","useUploadItems","onRemove","uploadingVideos","onClickAlternate","onClickDelete","processingIds","omittedVideos","filter","v","useVideoMixin","CheckboxHelper","useBulkCheckboxManager","getMyVideosAppLink","action","application","params","previous","type","hasFolders","VideoActionsContext","value","className","Text","phrase","UploadFileSelect","canUpload","PermissionName","IconButton","svgName","appLink","source","onClick","analyticsData","analyticsOptions","entity","location","actionType","descriptor","args","DragDropMoveContext","dragOverlayComponent","DragDropOverlay","PartialFolderList","FolderList","getAppLink","f","TextHelper","name","expandFolders","getFolderActions","drag","drop","VideoListActions","allowBulkAction","allowFilter","checkboxHelper","getVideosBulkAction","uploadingVideo","UploadingItem","categoryId","VideoList","getVideoAppLink","opts","VideoAppLinkHelper","context","RelatedVideosContext","contextId","includeContext","presentationAudiences","canRemovePrivateVideos","getPreviewQuestionsAppLink","interactive","InteractiveHelper","pagination","cursors","Pagination","next","buttonVariant","prevHack","MyVideosEmptyState","PartialVideoList","allowBulkActions","getValidObjects","objects","Array","isArray","o","videoIds","ids","flightNamespace","useVideoMixinFunc","fetchObjects"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7843],{33518:(e,a,t)=>{var s;t.d(a,{e:()=>s}),function(e){e.Public="Public",e.PinCode="PinCode",e.PasswordProtected="PasswordProtected",e.ProtectedOverrideRestriction="ProtectedOverrideRestriction",e.JustMySchoolOverrideRestriction="JustMySchoolOverrideRestriction",e.Protected="Protected",e.JustMySchool="JustMySchool",e.Direct="Direct"}(s||(s={}))},54405:(e,a,t)=>{t.d(a,{X:()=>s});var s={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}}}},35599:(e,a,t)=>{t.d(a,{k:()=>m});var s=t(32735),n=t(87801),r=t(16714),i=t(67467),o=t(5056),l=t(28001),c=t(69003);function m(e){var a,t,m=e.hasShareFlowV2&&e.hasPermissions(r.C.ViewInsights),d=(0,c.cl)([]),u=null!==(a=e.loadingState)&&void 0!==a?a:l.L,p=null!==(t=e.emptyState)&&void 0!==t?t:i.o;return e.loading||e.shareData.showPartialLoading?s.createElement(u,null):e.shareData.sentShares.length?s.createElement("div",{className:e.className},s.createElement(o.R,{sentShares:e.shareData.sentShares,sharedObjects:e.shareData.sharedObjects.items,shareRecipients:e.shareData.shareRecipients.items,interactivesPendingReview:e.shareData.interactivesPendingReview.itemsArr,getObjectActions:function(a){return(0,c.sD)({share:a.share,sharedObject:a.sharedObject,audienceParams:d.audienceAppLinkParams,hasInsights:m,isPlugin:e.isPlugin,breakpoints:e.breakpoints})},groupByDateShared:!0,breakpoints:e.breakpoints,imageCdnUrl:e.imageCdnUrl,yearGroups:e.yearGroups,hasDemoInsights:e.hasDemoInsight}),(e.shareData.hasMore||e.shareData.isFetching)&&s.createElement(n._,{isFetching:e.shareData.isFetching,fetchNext:e.shareData.fetchNext,nextCursor:e.shareData.nextCursor})):s.createElement(p,null)}},49221:(e,a,t)=>{t.r(a),t.d(a,{ClassroomsView:()=>ie});var s=t(32735),n=t(81886),r=t(67058),i=t(37802),o=t(99998),l=t(23481),c=t(20354),m=t(65858),d=t(2510),u=t(15611),p=t(83345),h=t(39151),g=t(1666),v=t(54405),E=t(44538),y=t(31949),b=t(79967),S=t(22902),f=t(79612),C=t(35223),O=t(14070),k=t(97291),w=t(46390),N=t(98623),x=t(31453),P=t(12528),I=t(83914),A=l.T.encloseNamespace("classrooms.classroomLabel"),F={"my-school-classrooms":"mySchoolClassrooms","favourite-classroom":"favouriteClassroom","open-classroom":"openClassroom"},L={"my-school-classrooms":"purple","favourite-classroom":"purple","open-classroom":"blue"};function R(e){var a;return s.createElement("div",{className:(0,x.A)("d-flex align-items-center gap-2",e.className)},s.createElement("div",null,s.createElement(P.f,{svgName:C.vn.Classrooms,svgSize:I.S.Standard,variant:L[e.type],textVariant:"white",svgWrapperClassName:"p-1"})),s.createElement("h2",{className:"h4 m-0"},null!==(a=e.text)&&void 0!==a?a:A(F[e.type])))}var T=t(59278),D=t(35599),j=t(7733),M=t(56644),V=t(9085),U="classrooms.pinnedClassroomsTiles";function _(){return s.createElement("div",{className:"py"},s.createElement(p.x,{namespace:U,phrase:"emptyPinnedClassrooms"}))}const G={pinnedClassroomTile:"jgtOl",pinnedClassroomTileImage:"TRhIX"};function B(){return s.createElement("div",{className:(0,x.A)("d-flex flex-column rounded overflow-hidden border border-gray-200",G.pinnedClassroomTile)},s.createElement("figure",{className:(0,x.A)("m-0",G.pinnedClassroomTileImage)}),s.createElement("div",{className:"d-flex flex-column gap-2 p-2"},s.createElement("span",{className:"partial-loading-background p-2 w-50"}),s.createElement("span",{className:"partial-loading-background p-2"})))}function z(e){return s.createElement("div",{className:"d-flex flex-row flex-wrap gap-3"},Array.from({length:e.size}).map(function(e,a){return s.createElement(B,{key:a})}))}var H="classrooms.pinnedClassroomsTiles";function J(e){var a=e.classroom.enrolments.data.filter(function(e){return e.role===M.tM.Student}).length,t=(0,V.s)(e.classroom.name,j.o);return s.createElement(u.F,{className:(0,x.A)("d-flex flex-column rounded overflow-hidden border border-gray-400",G.pinnedClassroomTile),appLink:{application:k.O.CLASSROOMS,action:O.e.Classrooms.CLASSROOM_HOME,args:[e.classroom.id]}},s.createElement("figure",{className:(0,x.A)("m-0",G.pinnedClassroomTileImage,t)}),s.createElement("div",{className:"d-flex flex-column gap-1 p-2"},s.createElement("span",{className:"fw-medium"},e.classroom.name),s.createElement("span",{className:"text-muted"},a?s.createElement(p.x,{namespace:H,phrase:"studentsCount",options:{smartCount:a}}):s.createElement(p.x,{namespace:H,phrase:"noStudents"}))))}function W(e){var a,t,n=null!==(a=e.emptyStateComponent)&&void 0!==a?a:_,r=null!==(t=e.loadingStateComponent)&&void 0!==t?t:z;return e.showPartialLoading?s.createElement(r,{size:5}):e.classrooms&&e.classrooms.length?s.createElement("div",{className:"d-flex flex-row flex-wrap gap-3"},e.classrooms.map(function(e){return s.createElement(J,{key:e.id,classroom:e})})):s.createElement(n,null)}var X=t(88630),Z=t(22767),q="classrooms.classroomsOverview",Y=l.T.encloseNamespace(q);function $(e){return s.createElement("div",{className:"d-flex flex-row justify-content-between align-items-center mb-3"},s.createElement(R,{type:e.type}),e.appLink&&!e.hideSeeAll&&s.createElement(u.F,{appLink:e.appLink},s.createElement(p.x,{namespace:q,phrase:"seeAll"})))}function K(){var e,a,t,n,r,o,u,p,x;(0,f.M)({title:Y("pageTitle")});var P=(0,b.k)(),I=(0,w.G)().isPlugin,A=(0,S.T)().hasPermissions,F=(0,i.r)(null).hasShareFlowV2,L=c.a.useBasicFetch(y.N.currentUser()),R=c.a.useBasicFetch(h.L.config()),j=c.a.useBasicFetch(v.X.interactiveMetadata()),M=c.a.useBasicFetch((null===(e=L.data)||void 0===e?void 0:e.isAuthenticated)&&g.h.yearGroups(L.data.customerId)),V=c.a.useBasicFetch(E.K.getRostering()),U=(null===(a=V.data)||void 0===a?void 0:a.status)&&"None"!==V.data.status,_=(0,N.a)({interactiveInsights:!0,shouldFetch:F,params:{type:[d.y.Open]}}),G=c.a.useBasicFetch(X.F.getPinnedClassrooms(null===(t=L.data)||void 0===t?void 0:t.id,null===(n=L.data)||void 0===n?void 0:n.customerId,{withStudents:!0,limit:5})),B=!!(R.data&&j.data&&M.data&&G.data);return s.createElement("div",{className:"px-3"},s.createElement(T.d,{activeTab:"overview",actions:[{label:l.T.getPhrase(q,"newClassroom"),appLink:{application:k.O.CLASSROOMS,action:O.e.Classrooms.NEW_CLASSROOM},svgName:C.vn.Plus,className:"btn btn-outline-dark",disabled:U,tooltip:U?Y("disabledByRostering"):"",analyticsOptions:{actionType:m.Vw.Create,entity:m.py.Classroom,workflowPhase:m.eu.Start,location:m.LZ.ClassroomsList},button:!P.xs}],hasRostering:U,hasShareFlowV2:F}),s.createElement("section",{className:"mb-4"},s.createElement($,{type:"favourite-classroom",appLink:{application:k.O.CLASSROOMS,action:O.e.Classrooms.VIEW_ALL},hideSeeAll:!(null===(o=null===(r=G.data)||void 0===r?void 0:r.data)||void 0===o?void 0:o.length)}),s.createElement(W,{showPartialLoading:!B,classrooms:null===(u=G.data)||void 0===u?void 0:u.data})),s.createElement("section",{className:"mb-4"},s.createElement($,{type:"open-classroom",appLink:{application:k.O.CLASSROOMS,action:O.e.Classrooms.OPEN_CLASSROOMS},hideSeeAll:!(null===(p=_.sentShares)||void 0===p?void 0:p.length)}),s.createElement(D.k,{loading:!B,shareData:_,hasShareFlowV2:F,hasPermissions:A,breakpoints:P,isPlugin:I,imageCdnUrl:null===(x=R.data)||void 0===x?void 0:x.imageCdnUrl,yearGroups:M.data,className:"mt-3",emptyState:function(){var e;return s.createElement(Z.l,{heading:Y("demoHeading"),demoInteractive:j.data,breakpoints:P,imageCdnUrl:null===(e=R.data)||void 0===e?void 0:e.imageCdnUrl,yearGroups:M.data,className:"mt-3",shareType:d.y.Open})}})))}var Q=t(91047),ee=t(86073),ae=t(98461),te="classrooms.minimalClassroomsExperience",se=l.T.encloseNamespace(te),ne="/product/integrations";function re(){var e,a,t,n;(0,f.M)({title:se("pageTitle")});var r=(0,b.k)(),o=(0,w.G)().isPlugin,l=(0,S.T)().hasPermissions,E=(0,i.r)(null).hasShareFlowV2,C=c.a.useBasicFetch(y.N.currentUser()),x=c.a.useBasicFetch(h.L.config()),P=c.a.useBasicFetch(v.X.interactiveMetadata()),I=c.a.useBasicFetch((null===(e=C.data)||void 0===e?void 0:e.isAuthenticated)&&g.h.yearGroups(C.data.customerId)),A=(0,N.a)({interactiveInsights:!0,shouldFetch:E,params:{type:[d.y.Open]}}),F=!!x.data&&!!P.data&&!!I.data;return s.createElement("div",{className:"px-3"},s.createElement(T.d,{activeTab:"classrooms",hasRostering:!1,hasShareFlowV2:E,hideTabs:!0}),s.createElement("section",{className:"mb-4"},s.createElement(R,{type:"my-school-classrooms"}),s.createElement("div",{className:"d-flex flex-column flex-sm-row justify-content-between gap-2 bg-light-blue rounded p-3 align-items-center mt-3"},s.createElement("div",null,s.createElement(p.x,{namespace:te,phrase:"myClassroomsNotice"})," ",s.createElement(ae.d,{href:ee._.safeUrlConcat(null===(a=x.data)||void 0===a?void 0:a.marketingSiteUrl,ne),className:"text-underline",newTab:!0},s.createElement(p.x,{namespace:te,phrase:"learnMore"}))),s.createElement("div",null,s.createElement(u.F,{className:"btn btn-outline-dark hover-bg-white",appLink:{application:k.O.SIGN_UP,action:O.e.SignUp.UPGRADE},analyticsData:{},analyticsOptions:{actionType:m.Vw.Click,location:m.LZ.Classroom,entity:m.py.AppLink,descriptor:m.Yu.Upgrade,workflowPhase:m.eu.Start}},s.createElement(p.x,{namespace:te,phrase:"requestFullAccess"}))))),s.createElement("section",{className:"mb-4"},s.createElement(R,{type:"open-classroom"}),F&&s.createElement(s.Fragment,null,s.createElement(Z.l,{heading:se("demoHeading"),demoInteractive:P.data,breakpoints:r,imageCdnUrl:null===(t=x.data)||void 0===t?void 0:t.imageCdnUrl,yearGroups:I.data,className:"mt-3",shareType:d.y.Open}),s.createElement(D.k,{shareData:A,hasShareFlowV2:E,hasPermissions:l,breakpoints:r,isPlugin:o,imageCdnUrl:null===(n=x.data)||void 0===n?void 0:n.imageCdnUrl,yearGroups:I.data,className:"mt-3",emptyState:function(){return s.createElement(s.Fragment,null)},hasDemoInsight:!0}))))}function ie(e){var a=(0,o.R)(),t=a.experience,l=a.loading,c=(0,i.r)(null).hasShareFlowV2;return l?s.createElement(s.Fragment,null):"none"===t?(n.Q.Ry.throw(new r.d),s.createElement(s.Fragment,null)):"full"===t&&c?s.createElement(K,null):"full"!==t||c?s.createElement(re,null):s.createElement(Q.FullClassroomsExperienceView,{query:e.query})}},22767:(e,a,t)=>{t.d(a,{l:()=>d});var s=t(32735),n=t(23481),r=t(2510),i=t(55219),o=t(18006),l=t(9566);const c={background:"HAuP3"};var m=n.T.encloseNamespace("myShares.demoInsights");function d(e){var a,t=e.breakpoints.xs||e.breakpoints.sm,n=e.shareType===r.y.Open?l.po:l.vJ,d=e.shareType===r.y.Open?l.$Z:l.GJ,u=Object.assign(Object.assign({},d),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:o.A})});return s.createElement("div",{className:e.className},s.createElement(i.g,{heading:null!==(a=e.heading)&&void 0!==a?a:m("demoHeading"),isFirst:!0}),s.createElement("div",{className:"".concat(c.background," rounded-3 mb-4")},s.createElement(i.F,{shareData:u,getObjectActions:function(){return[Object.assign(Object.assign({},l.VE),{button:!t,appLink:n})]},imageCdnUrl:e.imageCdnUrl,yearGroups:e.yearGroups,breakpoints:e.breakpoints,className:"bg-light-orange",appLink:function(){return n}})))}},18006:(e,a,t)=>{t.d(a,{A:()=>s});var s="GRWx6w"},9566:(e,a,t)=>{t.d(a,{$Z:()=>g,G6:()=>u,GJ:()=>h,VE:()=>y,_w:()=>p,po:()=>E,vJ:()=>v});var s=t(23481),n=t(110),r=t(33518),i=t(2510),o=t(4594),l=t(35223),c=t(14070),m=t(97291),d=s.T.encloseNamespace("myShares.demoInsights"),u={type:i.y.Link,privacy:r.e.JustMySchool,objectId:"0",objectTypeId:o.E.Interactive,viewCount:28,accessCount:15,dateCreated:(new Date).toISOString(),dateShared:(new Date).toISOString(),expireDate:null,link:{shortenedEmbedUrl:"",shortenedUrl:""},shareId:"0",ownerCustomerId:0,ownerId:0,recipients:[],options:{preventScrubbing:!1,immediateFeedback:!1}},p=Object.assign(Object.assign({},u),{type:i.y.Open,expireDate:n.O.add(new Date(u.dateCreated),30,"days").toISOString(),privacy:r.e.PinCode}),h={share:u,sharedObject:null,shareRecipients:null,dateShared:n.O.subtract(new Date,7,"days").toISOString()},g=Object.assign(Object.assign({},h),{share:p}),v={application:m.O.MY_SHARES,action:c.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},E={application:m.O.MY_SHARES,action:c.e.MyShares.INTERACTIVE_OVERVIEW_OPEN_CLASSROOM_DEMO},y={svgName:l.vn.Analytics,label:d("demoInsights"),appLink:v,group:"insights",className:"btn btn-outline-dark"}}}]);
2
- //# sourceMappingURL=7843-cbebf1a786-lite.chunk.js.map