@clickview/lite 0.49.6 → 0.49.8

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 (32) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/scripts/1285-db42ee1c76-lite.chunk.js +2 -0
  3. package/dist/scripts/1285-db42ee1c76-lite.chunk.js.map +1 -0
  4. package/dist/scripts/1863-bb98f2e617-lite.chunk.js +2 -0
  5. package/dist/scripts/1863-bb98f2e617-lite.chunk.js.map +1 -0
  6. package/dist/scripts/{2355-78b307e130-lite.chunk.js → 2355-b2345e9449-lite.chunk.js} +2 -2
  7. package/dist/scripts/{2355-78b307e130-lite.chunk.js.map → 2355-b2345e9449-lite.chunk.js.map} +1 -1
  8. package/dist/scripts/6741-dadd4903a8-lite.chunk.js +3 -0
  9. package/dist/scripts/6741-dadd4903a8-lite.chunk.js.map +1 -0
  10. package/dist/scripts/7301-49c2341e97-lite.chunk.js +2 -0
  11. package/dist/scripts/7301-49c2341e97-lite.chunk.js.map +1 -0
  12. package/dist/scripts/{7855-cbf70d4453-lite.chunk.js → 7855-76f000d339-lite.chunk.js} +2 -2
  13. package/dist/scripts/7855-76f000d339-lite.chunk.js.map +1 -0
  14. package/dist/scripts/8243-e9d7716ffe-lite.chunk.js +2 -0
  15. package/dist/scripts/8243-e9d7716ffe-lite.chunk.js.map +1 -0
  16. package/dist/scripts/{bundle-bcc136a91c.min.js → bundle-d3e8783756.min.js} +3 -3
  17. package/dist/scripts/bundle-d3e8783756.min.js.map +1 -0
  18. package/package.json +1 -1
  19. package/dist/scripts/1285-93d485e012-lite.chunk.js +0 -2
  20. package/dist/scripts/1285-93d485e012-lite.chunk.js.map +0 -1
  21. package/dist/scripts/1863-5502813c32-lite.chunk.js +0 -2
  22. package/dist/scripts/1863-5502813c32-lite.chunk.js.map +0 -1
  23. package/dist/scripts/6741-b54fd85e06-lite.chunk.js +0 -3
  24. package/dist/scripts/6741-b54fd85e06-lite.chunk.js.map +0 -1
  25. package/dist/scripts/7301-98679776b7-lite.chunk.js +0 -2
  26. package/dist/scripts/7301-98679776b7-lite.chunk.js.map +0 -1
  27. package/dist/scripts/7855-cbf70d4453-lite.chunk.js.map +0 -1
  28. package/dist/scripts/8243-ddaa0ed22d-lite.chunk.js +0 -2
  29. package/dist/scripts/8243-ddaa0ed22d-lite.chunk.js.map +0 -1
  30. package/dist/scripts/bundle-bcc136a91c.min.js.map +0 -1
  31. /package/dist/scripts/{6741-b54fd85e06-lite.chunk.js.LICENSE.txt → 6741-dadd4903a8-lite.chunk.js.LICENSE.txt} +0 -0
  32. /package/dist/scripts/{bundle-bcc136a91c.min.js.LICENSE.txt → bundle-d3e8783756.min.js.LICENSE.txt} +0 -0
package/dist/bundles.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "appBundle": "bundle-bcc136a91c.min.js",
2
+ "appBundle": "bundle-d3e8783756.min.js",
3
3
  "cssBundle": "lite-app-fca5f08fe7.css",
4
4
  "polyfillBundle": "polyfills-365f92d668.min.js"
5
5
  }
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1285],{92869:(e,t,a)=>{a.d(t,{t:()=>o});var n=a(48088),r=a(95846),o={preventScrollTop:function(){n.Radio.channel(r.G.SHELL).trigger("prevent:scroll:top")}}},37395:(e,t,a)=>{a.d(t,{t:()=>u});var n=a(32735),r=a(98269),o=a(92869),s=a(49985),l=a(65858),i=a(36848),c=a(83345);function d(e,t,a){var n;if(!t)return null;var r=null!==(n=e.params)&&void 0!==n?n:{};return a?(null==r?void 0:r.previous)?{application:e.application,action:e.action,args:e.args,params:Object.assign(Object.assign({},r),{cursor:null==r?void 0:r.previous,previous:null})}:{application:e.application,action:e.action,args:e.args,params:Object.assign(Object.assign({},r),{cursor:null,previous:null})}:{application:e.application,action:e.action,args:e.args,params:Object.assign(Object.assign({},r),{cursor:t,previous:r.cursor})}}function u(e){var t=e.appLink,a=e.cursors,u=e.className,m=e.buttonVariant,p=e.prevHack,g=e.scrollTop,f=e.onClick;function v(e){t&&!g&&o.t.preventScrollTop(),s.k.logUserAction({page:e},{location:l.LZ.Pagination,entity:l.py.Pagination,actionType:l.Vw.Navigate}),f&&f(a[e])}return t?n.createElement(c.D.Provider,{value:"shared.pagination"},n.createElement("div",{className:u},n.createElement(i.F,{appLink:d(t,a.previous,p),className:"btn btn-".concat(m," me-1 ").concat(a.previous?"":"disabled"),onClick:function(){return v("previous")},style:{display:"inline-block"}},n.createElement(c.x,{phrase:"previous"})),n.createElement(i.F,{appLink:d(t,a.next),className:"btn btn-".concat(m," ").concat(a.next?"":"disabled"),onClick:function(){return v("next")},style:{display:"inline-block"}},n.createElement(c.x,{phrase:"next"})))):n.createElement(c.D.Provider,{value:"shared.pagination"},n.createElement("div",{className:u},n.createElement(r.Z,{variant:m,className:"me-1 ".concat(a.previous?"":"disabled"),onClick:function(){return v("previous")}},n.createElement(c.x,{phrase:"previous"})),n.createElement(r.Z,{variant:m,className:"btn ".concat(a.next?"":"disabled"),onClick:function(){return v("next")}},n.createElement(c.x,{phrase:"next"}))))}u.defaultProps={className:"py-2",buttonVariant:"secondary"}},28469:(e,t,a)=>{a.d(t,{P:()=>o});var n=a(32735),r=a(23481).T.encloseNamespace("rostering.alert");function o(e){var t="classroom"===e.type?r("classroom"):r("hasRostering");return n.createElement("div",{className:"alert text-info bg-light-blue px-2 rounded-3 fw-semibold py-2 d-flex flex-wrap"},t," ")}},299:(e,t,a)=>{a.d(t,{X:()=>s});var n=a(32735),r=a(69217),o=a(94631),s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.idField,s=void 0===a?"id":a,l=t.persistNamespace,i=t.initialState?t.initialState:new Map,c=n.useRef(i),d=(0,r.N)(),u=(0,o.D)(e),m=(0,o.D)(l);function p(){c.current.clear(),d()}function g(e){return"number"==typeof e?e=e.toString():"string"!=typeof e&&(e=e[s].toString()),c.current.get(e)}function f(){return!!(null==e?void 0:e.length)&&e.every(g)}function v(e){e.forEach((function(e){c.current.set(e,!0)})),d()}return n.useEffect((function(){t.initialState||l&&m===l||(null==u?void 0:u.map((function(e){return e[s]})).join())!==(null==e?void 0:e.map((function(e){return e[s]})).join())&&p()}),[u,m,e,t.initialState]),n.useEffect((function(){var e;(null===(e=t.preselectedIds)||void 0===e?void 0:e.length)&&v(t.preselectedIds)}),[]),{onToggleBulk:function(){var t=!f();e.forEach((function(e){t?c.current.set(e[s].toString(),!0):c.current.delete(e[s].toString())})),d()},onToggleItem:function(e){var t=!c.current.get(e.toString());t?c.current.set(e.toString(),t):c.current.delete(e.toString()),d()},getSelected:function(){return Array.from(c.current.keys())},isChecked:g,bulkChecked:f(),deselectAll:function(){(null==e?void 0:e.length)&&(e.forEach((function(e){c.current.delete(e[s].toString())})),d())},hasSomeSelections:function(){return!!(null==e?void 0:e.length)&&!!e.find((function(e){return g(e)}))},setSelected:v,getSelectedCount:function(){return c.current.size},reset:p,getMap:function(){return c.current}}}},94631:(e,t,a)=>{a.d(t,{D:()=>r});var n=a(32735);function r(e){var t=n.useRef();return n.useEffect((function(){t.current=e})),t.current}},36511:(e,t,a)=>{a.d(t,{I:()=>r});var n=a(96787);function r(e){switch(e){case n.R.Pink:return"pink";case n.R.Orange:return"orange";case n.R.Green:return"green";case n.R.Blue:return"blue";case n.R.Purple:return"purple";case n.R.Indigo:return"indigo";default:return"pink"}}},6925:(e,t,a)=>{a.r(t),a.d(t,{ClassroomStudentsView:()=>Te});var n=a(32735),r=a(70680),o=a(23481),s=a(20354),l=a(49985),i=a(65858),c=a(37395),d=a(28469),u=a(16714),m=a(76881),p=a(39151),g=a(31949),f=a(22902),v=a(79612),E=a(14070),S=a(97291),h=a(23232),b=a(83345),y=a(35223),k=a(99742),C="classrooms.classroomsEmptyState";function N(e){return n.createElement(b.D.Provider,{value:C},n.createElement(h.u,null,n.createElement(h.u.Image,{src:k.W.EmptyStates.Classrooms.STUDENTS}),n.createElement(h.u.Heading,null,n.createElement(b.x,{phrase:"noStudentsHeading"})),n.createElement(h.u.Info,{className:"w-33 ".concat(e.canManageUsers?"":"mb-0")},n.createElement(b.x,{phrase:"noStudentsInfo"})),e.canManageUsers&&!e.isRostering&&n.createElement(h.u.Cta,{text:o.T.getPhrase(C,"noStudentsCta"),appLink:{application:S.O.USER_MANAGER,action:E.e.UserManager.STUDENTS}}),!e.canManageUsers&&!e.isRostering&&n.createElement(h.u.Info,null,n.createElement(b.x,{phrase:"askAdmin"})),e.isRostering&&n.createElement("a",{className:"btn btn-link info-link font-semibold",href:"",target:"_blank"},o.T.getPhrase(C,"rosteringCta"))))}var T="classrooms.manageClassroomStudentsEmptyState",O=o.T.encloseNamespace(T),x="https://static.clickview.com.au/Primary/Documents/Student-engagement-ideas.pdf",w="";function U(){return n.createElement(b.D.Provider,{value:T},n.createElement(h.u,null,n.createElement(h.u.Image,{src:k.W.EmptyStates.Classrooms.STUDENTS}),n.createElement(h.u.Heading,null,n.createElement(b.x,{phrase:"emptyStateHeading"})),n.createElement(h.u.Info,{className:"mb-2"},n.createElement(b.x,{phrase:"emptyStateInfo"})),n.createElement("a",{className:"btn btn-link info-link font-semibold",href:w,target:"_blank"},O("rosteringCta"))))}function I(e){return e.schoolHasNoStudents?n.createElement(N,{canManageUsers:e.canManageUsers}):n.createElement(b.D.Provider,{value:T},n.createElement(h.u,null,n.createElement(h.u.Image,{src:k.W.EmptyStates.Classrooms.STUDENTS}),n.createElement(h.u.Heading,null,n.createElement(b.x,{phrase:"emptyStateHeading"})),n.createElement(h.u.Info,null,n.createElement(b.x,{phrase:"emptyStateInfo"})),n.createElement(h.u.Cta,{text:o.T.getPhrase(T,"addStudents"),icon:y.vn.Plus,appLink:{application:S.O.CLASSROOMS,action:E.e.Classrooms.ADD_STUDENTS_CHOICES,args:[e.classroom.id]}}),n.createElement("a",{className:"btn btn-link info-link font-semibold",href:x,target:"_blank"},e.classroomIdeasText)))}var R=a(81886),M=a(11607),P=a(89965),L=a(10874),A=a(83914),F=a(76177),G=a(86764),D=a(69883),H=a(299),j=a(3747),_=a(34509),Z=a(36848),B=a(36511);function V(e){var t;return e.group?n.createElement("div",{className:"classroom-pill text-white bg-".concat((0,B.I)(null===(t=e.group.metadata)||void 0===t?void 0:t.colour))},e.group.name):n.createElement(n.Fragment,null)}function X(e){return e.count?n.createElement(M.L,{onClick:e.onClick,className:"classroom-pill bg-white border border-dark"},"+",e.count):n.createElement(n.Fragment,null)}var W="classrooms.classroomGroupDropdown",Y=function(e,t){return{application:S.O.CLASSROOMS,action:E.e.Classrooms.NEW_GROUP,args:[e],params:{addStudents:t.map((function(e){return e.id}))}}},q=function(e,t){return e.filter((function(e){return t.users.data.find((function(t){return t.id.toString()===e.id.toString()}))})).length};function Q(e){var t,a=(0,H.X)(e.groups,{preselectedIds:e.preselections.map((function(e){return e.id}))}),r=a.onToggleItem,s=a.isChecked;n.useEffect((function(){e.groups.forEach((function(t){var a=q(e.selectedStudents,t);(!a||a!==e.selectedStudents.length||s(t.id))&&(a||!s(t.id))||r(t.id)}))}));var c={align:e.alignRight?"end":"start"};return e.disabled&&(c.show=!1),n.createElement(_.Z,Object.assign({},c),n.createElement(_.Z.Toggle,{as:"div",id:e.id,className:"".concat(e.disabled?"text-light":"cursor-pointer"," ").concat("me-2 d-inline-block svg-container sm"," no-caret")},n.createElement(A.x,{svgName:y.vn.Group,title:e.disabled?e.disabledTooltips:o.T.getPhrase(W,"addToGroupTooltip"),tooltipPlacement:"top",tooltipSpanHack:!0,tooltipSpanHackClassName:""})),n.createElement(_.Z.Menu,null,!!(null===(t=e.groups)||void 0===t?void 0:t.length)&&n.createElement("div",{className:"px-2 border-bottom mb-1"},n.createElement("p",{className:"mb-0"},n.createElement(b.x,{namespace:W,phrase:"addToGroup"})),n.createElement("ul",{className:"list-unstyled pe-3"},e.groups.map((function(t){return n.createElement("li",{key:t.id,className:"d-flex align-items-center bg-white my-1"},n.createElement(P.X,{id:"".concat(e.id,":").concat(t.id),checked:s(t.id),onChange:function(){return function(t){var a=!s(t.id);e.onSelectGroup(t,a),r(t.id)}(t)},indeterminate:!!q(e.selectedStudents,t)}),n.createElement(V,{group:t}))})))),n.createElement(Z.F,{onClick:function(){e.disabled||l.k.logUserAction({},l.k.mergeOptions(e.analyticsOptions,{actionType:i.Vw.Create,workflowPhase:i.eu.Start,entity:i.py.ClassroomGroup}))},appLink:Y(e.classroom.id,e.selectedStudents),className:e.disabled?"disabled":"text-nowrap d-flex align-items-center px-2"},n.createElement(A.x,{svgName:y.vn.Plus}),n.createElement(b.x,{namespace:W,phrase:"createNew"}))))}Q.defaultProps={preselections:[]};var $=a(91967),z=a(83657),J=a(20789),K=a(10038),ee=a(64818);const te={avatarContainer:"rfVnC",name:"RYLWZ"};function ae(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,o,s,l=[],i=!0,c=!1;try{if(o=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;i=!1}else for(;!(i=(n=o.call(a)).done)&&(l.push(n.value),l.length!==t);i=!0);}catch(e){c=!0,r=e}finally{try{if(!i&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw r}}return l}}(e,t)||ne(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 ne(e,t){if(e){if("string"==typeof e)return re(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?re(e,t):void 0}}function re(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var oe=o.T.encloseNamespace("classrooms.manageClassroomStudentItem"),se=function(e){return{application:S.O.USER_MANAGER,action:E.e.UserManager.EDIT_USER,args:[e],params:{userType:m.Y.Learner}}},le=function(e,t){return{application:S.O.CLASSROOMS,action:E.e.Classrooms.REMOVE_STUDENTS,args:[t],params:{studentIds:[e]}}};function ie(e){var t,a=ae(n.useState(!1),2),r=a[0],o=a[1],s=ae(n.useState(!1),2),c=s[0],d=s[1],m=ae(n.useState({}),2),p=m[0],g=m[1],v=n.useRef(null),E=n.useRef(null),S=(0,f.T)().hasPermissions;n.useEffect((function(){y(),c||o(!0)}),[e.selectedGroups.length]);var h,b=$.q.throttle((function(){y(),o(!0)}),300);function y(){g(e.selectedGroups.reduce((function(e,t){return e[t.id]=!0,e}),{}))}return(0,K.H)((function(){c||b()})),n.useEffect((function(){if(v.current&&E.current&&r){var e=v.current.firstElementChild;if(e){var t,a,n=e.getBoundingClientRect().y,s={},l=function(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=ne(e))){a&&(e=a);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}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,s=!0,l=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return s=e.done,e},e:function(e){l=!0,o=e},f:function(){try{s||null==a.return||a.return()}finally{if(l)throw o}}}}(v.current.children);try{for(l.s();!(a=l.n()).done;){var i=a.value;i.id&&(s[i.id]=i.getBoundingClientRect().y===n,t=s[i.id]?i.id:t)}}catch(e){l.e(e)}finally{l.f()}E.current.getBoundingClientRect().y!==n&&(s[t]=!1),g(s),o(!1)}}}),[r]),n.createElement("div",{className:"d-flex align-items-center py-1 px-4"},n.createElement(P.X,{id:e.student.id,checked:e.checked,onChange:e.onToggleCheckbox,className:"me-2",disabled:e.readOnly}),n.createElement("div",{className:"".concat(te.avatarContainer," me-2")},n.createElement(J.q,{imageCdnUrl:e.config.imageCdnUrl,initials:ee.l.getInitials(e.student.name,e.student.surname),imageUrl:null===(t=e.student.avatar)||void 0===t?void 0:t.url})),n.createElement("p",{className:"me-2 ".concat(te.name," text-truncate mb-0 text-nowrap")},e.student.name," ",e.student.surname),n.createElement("div",{className:"".concat(r?"invisible":""," me-auto d-flex flex-wrap mt-n1"),ref:v},e.selectedGroups.map((function(e){return p[e.id]?n.createElement("div",{key:e.id,className:"me-1 mt-1",id:e.id},n.createElement(V,{group:e})):n.createElement(n.Fragment,{key:e.id})})),n.createElement("div",{ref:E,className:"me-1 mt-1"},n.createElement(X,{count:Object.keys(p).reduce((function(e,t){return p[t]||e++,e}),0),onClick:function(){d(!0),y()}}))),n.createElement(Q,{id:"add-group-".concat(e.student.id),classroom:e.classroom,groups:e.classroomGroups,selectedStudents:[e.student],preselections:e.selectedGroups,onSelectGroup:function(t,a){return e.onToggleGroup(e.student,t,a)},analyticsOptions:{location:i.LZ.ManageClassroomStudentListItem},alignRight:!0,disabled:e.readOnly,disabledTooltips:e.readOnlyTooltip}),n.createElement(z.e,{actions:(h=[],S(u.C.ManageUsers)&&h.push({label:oe("editStudent"),appLink:se(e.student.id),disabled:e.readOnly,className:e.readOnly?"disabled":"",tooltip:e.readOnly?e.readOnlyTooltip:"",onClick:function(){l.k.logUserAction({id:e.student.id},{actionType:i.Vw.Edit,entity:i.py.User,workflowPhase:i.eu.Start,location:i.LZ.ManageClassroomStudentListItem})}}),h.push({label:oe("removeStudent"),appLink:le(e.student.id,e.classroom.id),disabled:e.readOnly,className:e.readOnly?"disabled":"text-danger",tooltip:e.readOnly?e.readOnlyTooltip:"",onClick:function(){l.k.logUserAction({id:e.classroom.id,userId:e.student.id},{actionType:i.Vw.Dissociate,entity:i.py.Classroom,descriptor:i.iF.User,workflowPhase:i.eu.Start,location:i.LZ.ManageClassroomStudentListItem})}}),h),actionsDropdownClassName:"btn"}))}var ce=a(88630),de="classrooms.manageClassroomStudents",ue=o.T.encloseNamespace(de);function me(e){var t,a=e.classroom,c=e.students,d=e.groups,u=(0,r.I0)(),m=(0,D.Z)(),p=(0,H.X)(c.data),g=p.getSelected().length,f=d.filter((function(e){var t,a;if(!(null===(a=null===(t=e.users)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length))return!1;var n=!0,r=0,o=p.getSelected();if(o.length){var s=function(){var t=o[r];e.users.data.find((function(e){return e.id.toString()===t.toString()}))||(n=!1),r++};do{s()}while(r<o.length);return n}})),v=(0,j.a)(G.r.XLDown);return(null===(t=c.data)||void 0===t?void 0:t.length)?n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex align-items-center py-2 ".concat(v?"ps-2":"ps-4")},n.createElement(P.X,{id:"manage-classroom-students-bulk",onChange:p.onToggleBulk,checked:p.bulkChecked,className:"me-2",indeterminate:p.hasSomeSelections(),disabled:e.readOnly}),n.createElement(Q,{id:"bulk-add-group",classroom:a,selectedStudents:p.getSelected().map((function(t){return e.students.data.find((function(e){return e.id.toString()===t.toString()}))})),groups:d,onSelectGroup:function(e,t){var n=p.getSelected(),r=t?ce.F.addStudentsToGroup:ce.F.removeStudentsFromGroup;s.a.fetch(u,r(n,e.id,a.id,(function(){l.k.logUserAction({id:e.id,studentCount:n.length},{actionType:i.Vw.Associate,entity:i.py.ClassroomGroup,descriptor:i.iF.User,workflowPhase:i.eu.Complete,location:i.LZ.ManageClassroomStudents}),m.success(ue("addSuccess",{groupName:e.name,escapeText:!0}))}),(function(){m.error(ue("addError",{groupName:e.name,escapeText:!0}))})))},disabled:!g||e.readOnly,preselections:f,analyticsOptions:{location:i.LZ.ManageClassroomStudents},disabledTooltips:e.readOnly&&o.T.getPhrase(de,"disabledByRostering")}),n.createElement(M.L,{className:"me-auto ".concat(!g||e.readOnly?"text-light cursor-default":""),onClick:function(){if(g&&!e.readOnly){var t=p.getSelected();l.k.logUserAction({id:a.id,studentCount:t.length},{entity:i.py.Classroom,descriptor:i.iF.User,workflowPhase:i.eu.Start,actionType:i.Vw.Dissociate,location:i.LZ.ManageClassroomStudents}),R.Q.C$.trigger({application:S.O.CLASSROOMS,action:E.e.Classrooms.REMOVE_STUDENTS,args:[a.id],params:{studentIds:t}})}}},n.createElement(F.u,{spanHack:!0,title:e.readOnly?o.T.getPhrase(de,"disabledByRostering"):""},n.createElement(A.x,{svgName:y.vn.Delete,title:o.T.getPhrase(de,"delete"),tooltipPlacement:"top",tooltipSpanHack:!0}))),n.createElement(F.u,{spanHack:!0,title:e.readOnly?o.T.getPhrase(de,"disabledByRostering"):""},n.createElement(L.h,{onClick:function(){l.k.logUserAction({id:a.id},{entity:i.py.Classroom,descriptor:i.iF.User,workflowPhase:i.eu.Start,actionType:i.Vw.Associate,location:i.LZ.ManageClassroomStudents}),R.Q.C$.trigger({application:S.O.CLASSROOMS,action:E.e.Classrooms.ADD_STUDENTS_CHOICES,args:[a.id]})},svgName:y.vn.Plus,className:"btn btn-outline-dark",disabled:e.readOnly},n.createElement(b.x,{namespace:de,phrase:"addStudent"})))),n.createElement("ul",{className:"striped-list list-unstyled"},c.data.map((function(t){return n.createElement("li",{key:t.id},n.createElement(ie,{classroom:a,student:t,classroomGroups:e.groups,config:e.config,selectedGroups:e.groups.filter((function(e){return e.users.data.find((function(e){return e.id===t.id}))})),checked:p.isChecked(t.id),onToggleCheckbox:function(){return p.onToggleItem(t.id)},onToggleGroup:e.onToggleGroup,readOnly:e.readOnly,readOnlyTooltip:e.readOnly?ue("disabledByRostering"):""}))})))):n.createElement(I,{classroom:e.classroom,classroomIdeasText:ue("classroomIdeasText"),schoolHasNoStudents:e.schoolHasNoStudents,canManageUsers:e.canManageUsers})}var pe=a(49935),ge=a(5062);const fe="pJf6R",ve="MSvzY",Ee="IFmvc",Se="pOcvk";var he=n.memo((function(){return n.createElement("div",{className:"px-3"},n.createElement("div",{className:"mb-1 partial-loading-background ".concat("YrP_G")}),n.createElement("div",{className:"pb-3"},n.createElement(pe.b2,{numItems:2})),n.createElement("div",{className:"pb-2"},n.createElement(ge.Z,null)),n.createElement("div",{className:"d-flex align-items-center py-2"},n.createElement("div",{className:"mx-4 partial-loading-background ".concat(fe)}),n.createElement("div",{className:"me-2 partial-loading-background ".concat(ve)}),n.createElement("div",{className:"me-auto partial-loading-background ".concat(ve)}),n.createElement("div",{className:"partial-loading-background ".concat("j62jt")})),n.createElement("ul",{className:"striped-list list-unstyled"},Array(20).fill(null).map((function(e,t){return n.createElement("li",{key:t},n.createElement("div",{className:"d-flex align-items-center py-1 px-4"},n.createElement("div",{className:"me-2 partial-loading-background ".concat(fe)}),n.createElement("div",{className:"me-2 partial-loading-background ".concat("droqZ")}),n.createElement("div",{className:"w-25"},n.createElement("div",{className:"partial-loading-background ".concat("gorcb")})),n.createElement("div",{className:"me-auto d-flex"},Math.random()>.5?n.createElement(n.Fragment,null,n.createElement("div",{className:"partial-loading-background rounded-pill me-1 ".concat(Ee," ").concat("SdQ90")}),n.createElement("div",{className:"partial-loading-background rounded-pill ".concat(Ee," ").concat(Se)})):n.createElement("div",{className:"partial-loading-background rounded-pill ".concat(Ee," ").concat(Se)})),n.createElement("div",{className:"me-2 partial-loading-background ".concat(ve)}),n.createElement("div",{className:"partial-loading-background ".concat("S7p4K")})))}))))})),be=a(31491),ye=a(5289),ke=a(47288),Ce=o.T.encloseNamespace("classrooms.classroomStudents"),Ne={entity:i.py.ClassroomGroup,descriptor:i.iF.User,workflowPhase:i.eu.Complete,location:i.LZ.ManageClassroomStudentListItem};function Te(e){var t,a,o,h,b,y,k,C,N,T=s.a.useBasicFetch(g.N.currentUser()),O=s.a.useBasicFetch(T.data&&ce.F.getClassroom(e.id,T.data.id)),x=s.a.useBasicFetch(ce.F.getClassroomStudents(e.id,e.cursor)),w=s.a.useBasicFetch(T.data&&ke.N.getUsers(T.data.customerId,m.Y.Learner)),R=s.a.useBasicFetch(ce.F.getClassroomGroups(e.id)),M=s.a.useBasicFetch(p.L.config()),P=null===(a=null===(t=O.data)||void 0===t?void 0:t._integrations)||void 0===a?void 0:a.rostered,L=(0,r.I0)(),A=(0,f.T)().hasPermissions;function F(t,a,n){var r={id:a.id,studentCount:1},o=n?ce.F.addStudentsToGroup([t.id],a.id,e.id,(function(){l.k.logUserAction(r,Object.assign(Object.assign({},Ne),{actionType:i.Vw.Associate}))})):ce.F.removeStudentsFromGroup([t.id],a.id,e.id,(function(){l.k.logUserAction(r,Object.assign(Object.assign({},Ne),{actionType:i.Vw.Dissociate}))}));s.a.fetch(L,o)}return(0,v.M)({title:Ce("pageTitle",{classroomName:null===(o=O.data)||void 0===o?void 0:o.name})}),(0,be._)(O),O.data&&(null===(h=x.data)||void 0===h?void 0:h.data)&&(null===(b=R.data)||void 0===b?void 0:b.data)&&M.data&&w.data?n.createElement(ye.R,{classroom:O.data,currentUser:T.data,onTogglePin:function(e,t,a){if(!P){var n=e?ce.F.pinClassroom:ce.F.unpinClassroom;s.a.fetch(L,n(O.data,t,a))}},activeTab:"students",isRostered:P},function(){var e,t,a,r,o,s,l,i,c,m;return P?n.createElement(n.Fragment,null,n.createElement(d.P,{type:"classroom"}),(null===(t=null===(e=x.data)||void 0===e?void 0:e.data)||void 0===t?void 0:t.length)?n.createElement(me,{classroom:O.data,students:x.data,groups:R.data.data,onToggleGroup:F,config:M.data,schoolHasNoStudents:!(null===(r=null===(a=w.data)||void 0===a?void 0:a.data)||void 0===r?void 0:r.length),canManageUsers:A(u.C.ManageUsers),readOnly:!0}):n.createElement(U,null)):(null===(s=null===(o=x.data)||void 0===o?void 0:o.data)||void 0===s?void 0:s.length)?n.createElement(me,{classroom:O.data,students:x.data,groups:R.data.data,onToggleGroup:F,config:M.data,schoolHasNoStudents:!(null===(i=null===(l=w.data)||void 0===l?void 0:l.data)||void 0===i?void 0:i.length),canManageUsers:A(u.C.ManageUsers)}):n.createElement(I,{classroom:O.data,classroomIdeasText:Ce("classroomIdeasText"),schoolHasNoStudents:!(null===(m=null===(c=w.data)||void 0===c?void 0:c.data)||void 0===m?void 0:m.length),canManageUsers:A(u.C.ManageUsers)})}(),!!(null===(k=null===(y=x.data)||void 0===y?void 0:y.pagination)||void 0===k?void 0:k.cursors)&&n.createElement(c.t,{appLink:{application:S.O.CLASSROOMS,action:E.e.Classrooms.CLASSROOM_STUDENTS,args:[e.id]},cursors:null===(N=null===(C=x.data)||void 0===C?void 0:C.pagination)||void 0===N?void 0:N.cursors,buttonVariant:"outline-dark",className:"py-2 float-end",scrollTop:!0,prevHack:!0})):n.createElement(he,null)}}}]);
2
+ //# sourceMappingURL=1285-db42ee1c76-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/1285-db42ee1c76-lite.chunk.js","mappings":"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","sources":["file:///Users/joshua.taylor/Projects/clickview/packages/libs/common/src/backbone/utils/ScrollHelper.ts","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/components/pagination/Pagination.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/components/rostering/rostering-alert/RosteringAlert.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/hooks/useBulkCheckboxManager.ts","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/hooks/usePrevious.ts","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/utils/GroupHelper.ts","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/classrooms/views/classrooms/empty-state/ClassroomsNoStudentsState.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/classrooms/components/manage-classroom-students/empty-state/ManageClassroomStudentsEmptyState.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/classrooms/components/classroom-group-pill/ClassroomGroupPill.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/classrooms/components/classroom-group-dropdown/ClassroomGroupDropdown.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/classrooms/components/manage-classroom-student-item/manage-classroom-student-item.scss","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/classrooms/components/manage-classroom-student-item/ManageClassroomStudentItem.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/classrooms/components/manage-classroom-students/ManageClassroomStudents.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/classrooms/components/manage-classroom-students/partial-loading/partial-manage-classroom-students.scss","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/classrooms/components/manage-classroom-students/partial-loading/PartialManageClassroomStudents.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/classrooms/views/classroom-students/ClassroomStudentsView.tsx"],"sourcesContent":["import { Radio } from 'backbone';\n\nimport { CommonChannels } from '../constants/CommonChannels';\n\nexport const ScrollHelper = {\n // Will prevent scrolling to the top of the page when applinks are triggered\n preventScrollTop(): void {\n Radio.channel(CommonChannels.SHELL).trigger('prevent:scroll:top');\n }\n};","import * as React from 'react';\nimport { Button, ButtonProps } from 'react-bootstrap';\n\nimport { Cursors } from 'libs/common/backbone/interfaces';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nfunction buildCursor(appLink: Core.AppLink, cursorParam: string, prevHack?: boolean): Core.AppLink {\n if (!cursorParam)\n return null;\n\n const currentParams = appLink.params as HashObject ?? {};\n /* \n Currently the pagination for My Videos shows the previous cursor in the first page cursor,\n so instead of using the previous cursor from the response, the current cursor is being passed\n as the previous cursor in the app link\n */\n\n if (prevHack) {\n if (!currentParams?.previous) {\n return {\n application: appLink.application,\n action: appLink.action,\n args: appLink.args,\n params: {\n ...currentParams,\n cursor: null,\n previous: null\n }\n };\n }\n return {\n application: appLink.application,\n action: appLink.action,\n args: appLink.args,\n params: {\n ...currentParams,\n cursor: currentParams?.previous,\n previous: null\n }\n };\n }\n\n return {\n application: appLink.application,\n action: appLink.action,\n args: appLink.args,\n params: {\n ...currentParams,\n cursor: cursorParam,\n previous: currentParams.cursor\n }\n };\n}\n\ninterface CursorPaginationProps {\n cursors: Cursors;\n appLink?: Core.AppLink;\n className?: string;\n buttonVariant?: ButtonProps['variant'];\n prevHack?: boolean;\n scrollTop?: boolean;\n onClick?: (cursor: string) => void;\n}\n\nPagination.defaultProps = {\n className: 'py-2',\n buttonVariant: 'secondary'\n};\n\nexport function Pagination(\n { appLink, cursors, className, buttonVariant, prevHack, scrollTop, onClick }: CursorPaginationProps\n): JSX.Element {\n function onClickButton(page: 'next' | 'previous'): void {\n if (appLink && !scrollTop)\n ScrollHelper.preventScrollTop();\n\n AnalyticsHelper.logUserAction({ page }, {\n location: LocationContext.Pagination,\n entity: EntityType.Pagination,\n actionType: UserAction.Navigate\n });\n\n if (onClick)\n onClick(cursors[page]);\n }\n\n if (appLink) {\n return (\n <LanguageNamespaceContext.Provider value='shared.pagination'>\n <div className={className}>\n <AppLink\n appLink={buildCursor(appLink, cursors.previous, prevHack)}\n className={`btn btn-${buttonVariant} me-1 ${!cursors.previous ? 'disabled' : ''}`}\n onClick={() => onClickButton('previous')}\n // make sure disabled button and clickable button looks the same\n style={{ display: 'inline-block' }}\n >\n <Text phrase='previous' />\n </AppLink>\n \n <AppLink\n appLink={buildCursor(appLink, cursors.next)}\n className={`btn btn-${buttonVariant} ${!cursors.next ? 'disabled' : ''}`}\n onClick={() => onClickButton('next')}\n // make sure disabled button and clickable button looks the same\n style={{ display: 'inline-block' }}\n >\n <Text phrase='next' />\n </AppLink>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n }\n \n return (\n <LanguageNamespaceContext.Provider value='shared.pagination'>\n <div className={className}>\n <Button\n variant={buttonVariant}\n className={`me-1 ${!cursors.previous ? 'disabled' : ''}`}\n onClick={() => onClickButton('previous')}\n >\n <Text phrase='previous' />\n </Button>\n <Button\n variant={buttonVariant}\n className={`btn ${!cursors.next ? 'disabled' : ''}`}\n onClick={() => onClickButton('next')}\n >\n <Text phrase='next' />\n </Button>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'rostering.alert';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RosteringAlertProps {\n type?: 'classroom' | 'general';\n}\n\nexport function RosteringAlert(props: RosteringAlertProps) {\n const text = props.type === 'classroom' ? getPhrase('classroom') : getPhrase('hasRostering');\n\n return (\n <div className='alert text-info bg-light-blue px-2 rounded-3 fw-semibold py-2 d-flex flex-wrap'>\n {text}&nbsp;\n {/* todo add it back when KB article link is ready */}\n {/* <ExternalLink\n className='text-info text-underline'\n href={''}\n newTab\n >\n {LanguageService.getPhrase(namespace, 'learnMore')}\n </ExternalLink> */}\n </div>\n );\n}","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { usePrevious } from 'libs/shared/hooks/usePrevious';\n\ntype CheckboxItemsState = Map<string, boolean>;\n\nexport interface BulkCheckboxManager {\n onToggleBulk: () => void;\n onToggleItem: (id: string) => void;\n getSelected: () => string[];\n isChecked: (item: string | number | HashObject<string>) => boolean;\n bulkChecked: boolean;\n deselectAll: () => void;\n hasSomeSelections: () => boolean;\n setSelected: (ids: string[]) => void;\n getSelectedCount: () => number;\n reset: () => void;\n getMap: () => Map<string, boolean>;\n}\n\nexport interface BulkCheckboxManagerOptions {\n idField?: string; // For objects like `PresentationAudiences` that don't use `id` as their identifier field\n persistNamespace?: string;\n preselectedIds?: string[];\n initialState?: CheckboxItemsState;\n}\n\n/**\n * @param collection - The collection you are keeping track of with checkboxes\n * @param options - See interface above\n */\nexport const useBulkCheckboxManager = (collection: HashObject[], options: BulkCheckboxManagerOptions = {}) => {\n const { idField = 'id', persistNamespace } = options;\n\n const initial = options.initialState ? options.initialState : new Map<string, boolean>();\n\n const items = React.useRef<CheckboxItemsState>(initial);\n \n const forceUpdate = useForceUpdate();\n\n const prevCollection = usePrevious(collection);\n const prevNamespace = usePrevious(persistNamespace);\n\n /**\n * This hook will clear the state of this hook when a user navigates between pages\n * if a persistNamespace was not provided\n */\n React.useEffect(() => {\n /**\n * If we're being passed initial state, we don't want to clear the state\n */\n if (options.initialState)\n return;\n\n /**\n * If we've been given a persist namespace, we don't want to clear our\n * selections while the namespace stays the same\n */\n if (persistNamespace && prevNamespace === persistNamespace)\n return;\n\n /**\n * Don't reinitialize if the ids of the new and old collection\n * are identical\n */\n const prevIds = prevCollection?.map(i => i[idField]).join();\n const ids = collection?.map(i => i[idField]).join();\n\n if (prevIds === ids)\n return;\n\n reset();\n }, [ prevCollection, prevNamespace, collection, options.initialState ]);\n\n React.useEffect(() => {\n if (!options.preselectedIds?.length)\n return;\n\n setSelected(options.preselectedIds);\n }, []);\n\n function reset(): void {\n items.current.clear();\n forceUpdate();\n }\n\n // When toggled on, all checkbox items will be enabled. Vice versa if toggled off\n function onToggleBulk(): void {\n const setValue = !isBulkChecked();\n\n collection.forEach(item => {\n if (setValue)\n items.current.set(item[idField].toString(), true);\n else\n items.current.delete(item[idField].toString());\n });\n\n forceUpdate();\n }\n\n // Toggles a single item\n function onToggleItem(id: string): void {\n const nextItemState = !items.current.get(id.toString());\n\n if (nextItemState)\n items.current.set(id.toString(), nextItemState);\n else\n items.current.delete(id.toString());\n \n forceUpdate();\n }\n\n // Returns the state of the item passed in\n function isChecked(item: string | number | HashObject<string>): boolean {\n if (typeof item === 'number')\n item = item.toString();\n else if (typeof item !== 'string')\n item = item[idField].toString();\n\n return items.current.get(item);\n }\n\n function getSelected(): string[] {\n return Array.from(items.current.keys());\n }\n\n function deselectAll(): void {\n if (!collection?.length) return;\n\n collection.forEach(item => {\n items.current.delete(item[idField].toString());\n });\n forceUpdate();\n }\n\n // Returns true if at least 1 item is checked\n function hasSomeSelections(): boolean {\n if (!collection?.length)\n return false;\n\n return !!collection.find(item => isChecked(item));\n }\n\n function isBulkChecked(): boolean {\n if (!collection?.length)\n return false;\n\n return collection.every(isChecked);\n }\n\n function setSelected(ids: string[]): void {\n ids.forEach(id => {\n items.current.set(id, true);\n });\n forceUpdate();\n }\n\n function getSelectedCount(): number {\n return items.current.size;\n }\n\n function getMap(): Map<string, boolean> {\n return items.current;\n }\n\n return {\n onToggleBulk,\n onToggleItem,\n getSelected,\n isChecked,\n bulkChecked: isBulkChecked(),\n deselectAll,\n hasSomeSelections,\n setSelected,\n getSelectedCount,\n reset,\n getMap\n };\n};","import React from 'react';\n\n// https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\nexport function usePrevious<T>(value: T): T {\n const ref = React.useRef<T>();\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import { ButtonProps } from 'react-bootstrap';\n\nimport { ClassroomGroupColour } from 'libs/shared/interfaces';\n\nexport function mapColourToBsVariant(groupColour: ClassroomGroupColour): ButtonProps['variant'] {\n switch (groupColour) {\n case ClassroomGroupColour.Pink:\n return 'pink';\n case ClassroomGroupColour.Orange:\n return 'orange';\n case ClassroomGroupColour.Green:\n return 'green';\n case ClassroomGroupColour.Blue:\n return 'blue';\n case ClassroomGroupColour.Purple:\n return 'purple';\n case ClassroomGroupColour.Indigo:\n return 'indigo';\n default:\n return 'pink';\n }\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, 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 = 'classrooms.classroomsEmptyState';\n\ninterface ClassroomsNoStudentsStateProps {\n canManageUsers: boolean;\n isRostering?: boolean;\n}\n\nexport function ClassroomsNoStudentsState(props: ClassroomsNoStudentsStateProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Classrooms.STUDENTS} />\n\n <EmptyState.Heading><Text phrase='noStudentsHeading' /></EmptyState.Heading>\n <EmptyState.Info className={`w-33 ${!props.canManageUsers ? 'mb-0' : ''}`}>\n <Text phrase='noStudentsInfo' />\n </EmptyState.Info>\n\n {props.canManageUsers && !props.isRostering && (\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'noStudentsCta')}\n appLink={{\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.STUDENTS\n }}\n />\n )}\n {!props.canManageUsers && !props.isRostering && (\n <EmptyState.Info><Text phrase='askAdmin' /></EmptyState.Info>\n )}\n {props.isRostering && (\n <a className='btn btn-link info-link font-semibold' href={''} target='_blank'>\n {LanguageService.getPhrase(namespace, 'rosteringCta')}\n </a>\n )}\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomsNoStudentsState } from 'apps/classrooms/views/classrooms/empty-state/ClassroomsNoStudentsState';\n\nconst namespace = 'classrooms.manageClassroomStudentsEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst STUDENT_ENGAGEMENT_IDEAS_LINK = 'https://static.clickview.com.au/Primary/Documents/Student-engagement-ideas.pdf';\nconst ROSTERING_KB_ARTICLE_URL = '';\n\ninterface ManageClassroomStudentsEmptyStateProps {\n classroom: Classroom;\n classroomIdeasText: string;\n schoolHasNoStudents: boolean;\n canManageUsers: boolean;\n}\n\nexport function RosteredClassroomStudentsEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Classrooms.STUDENTS} />\n\n <EmptyState.Heading><Text phrase='emptyStateHeading' /></EmptyState.Heading>\n\n <EmptyState.Info className='mb-2' ><Text phrase='emptyStateInfo' /></EmptyState.Info>\n\n <a className='btn btn-link info-link font-semibold' href={ROSTERING_KB_ARTICLE_URL} target='_blank'>\n {getPhrase('rosteringCta')}\n </a>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n\nexport function ManageClassroomStudentsEmptyState(props: ManageClassroomStudentsEmptyStateProps): JSX.Element {\n if (props.schoolHasNoStudents)\n return <ClassroomsNoStudentsState canManageUsers={props.canManageUsers} />;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Classrooms.STUDENTS} />\n\n <EmptyState.Heading><Text phrase='emptyStateHeading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='emptyStateInfo' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'addStudents')}\n icon={cvSvgLibrary.Plus}\n appLink={{\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.ADD_STUDENTS_CHOICES,\n args: [props.classroom.id]\n }}\n />\n\n <a className='btn btn-link info-link font-semibold' href={STUDENT_ENGAGEMENT_IDEAS_LINK} target='_blank'>\n {props.classroomIdeasText}\n </a>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ClassroomGroup } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\n\ninterface ClassroomGroupProps {\n group: ClassroomGroup;\n}\n\nexport function ClassroomGroupPill(props: ClassroomGroupProps): JSX.Element {\n if (!props.group)\n return <></>;\n\n return (\n <div className={`classroom-pill text-white bg-${mapColourToBsVariant(props.group.metadata?.colour)}`}>\n {props.group.name}\n </div>\n );\n}\n\ninterface ClassroomGroupExpanderProps {\n count: number;\n onClick: () => void;\n}\n\nexport function ClassroomGroupExpander(props: ClassroomGroupExpanderProps): JSX.Element {\n if (!props.count)\n return <></>;\n\n return (\n <DivButton onClick={props.onClick} className={`classroom-pill bg-white border border-dark`}>\n +{props.count}\n </DivButton>\n );\n}","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { PropsWithAnalyticsOptions, User } from 'libs/shared/interfaces';\nimport { Classroom, ClassroomGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomGroupPill } from 'apps/classrooms/components/classroom-group-pill/ClassroomGroupPill';\n\nconst namespace = 'classrooms.classroomGroupDropdown';\n\nconst getNewGroupAppLink = (id: string, students: User[]) => ({\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.NEW_GROUP,\n args: [id],\n params: {\n addStudents: students.map(s => s.id)\n }\n});\n\nconst getCheckedStudentsForGroup = (students: User[], group: ClassroomGroup) => {\n const studentsInGroup = students.filter(student => {\n return group.users.data.find(u => u.id.toString() === student.id.toString());\n });\n\n return studentsInGroup.length;\n};\n\ntype ClassroomGroupDropdownProps = PropsWithAnalyticsOptions<{\n id: string;\n classroom: Classroom;\n selectedStudents: User[];\n groups: ClassroomGroup[];\n onSelectGroup: (group: ClassroomGroup, toggleOn?: boolean) => void;\n preselections?: ClassroomGroup[];\n\n alignRight?: boolean;\n disabled?: boolean;\n disabledTooltips?: string;\n}>;\n\nClassroomGroupDropdown.defaultProps = {\n preselections: []\n};\n\nexport function ClassroomGroupDropdown(props: ClassroomGroupDropdownProps): JSX.Element {\n const { onToggleItem, isChecked } = useBulkCheckboxManager(props.groups, {\n preselectedIds: props.preselections.map(s => s.id)\n });\n\n function onChange(group: ClassroomGroup): void {\n const shouldAdd = !isChecked(group.id);\n props.onSelectGroup(group, shouldAdd);\n\n onToggleItem(group.id);\n }\n\n function onClickCreateNewGroup(): void {\n if (props.disabled)\n return;\n\n AnalyticsHelper.logUserAction({}, AnalyticsHelper.mergeOptions(props.analyticsOptions, {\n actionType: UserAction.Create,\n workflowPhase: WorkflowPhase.Start,\n entity: EntityType.ClassroomGroup\n }));\n }\n\n React.useEffect(() => {\n // On each passthrough, validate that the checkbox states are valid\n // This is needed because the group/student state is managed in 2 separate places on the same page\n props.groups.forEach(g => {\n const totalCheckedForGroup = getCheckedStudentsForGroup(props.selectedStudents, g);\n\n // Validate if unchecked checkbox should be checked\n if (!!totalCheckedForGroup && totalCheckedForGroup === props.selectedStudents.length && !isChecked(g.id)) {\n onToggleItem(g.id);\n return;\n }\n\n // Validate if checked checkbox should be unchecked\n if (!totalCheckedForGroup && isChecked(g.id)) {\n onToggleItem(g.id);\n return;\n }\n });\n });\n\n const buttonClasses = 'me-2 d-inline-block svg-container sm';\n\n const dropdownProps: HashObject = {\n align: props.alignRight ? 'end' : 'start'\n };\n\n /**\n * This prop is applied like this so that when `props.disabled` it false, the prop is omitted altogether.\n * This is because we want `react-bootstrap` to control the open state, and if we used the `show` prop\n * at all times we'd be preventing that.\n */\n if (props.disabled)\n dropdownProps.show = false;\n\n return (\n <Dropdown {...dropdownProps}>\n <Dropdown.Toggle\n as='div'\n id={props.id}\n className={`${props.disabled ? 'text-light' : 'cursor-pointer'} ${buttonClasses} no-caret`}\n >\n <SvgContainer\n svgName={cvSvgLibrary.Group}\n title={props.disabled ? props.disabledTooltips : LanguageService.getPhrase(namespace, 'addToGroupTooltip')}\n tooltipPlacement='top'\n tooltipSpanHack\n tooltipSpanHackClassName=''\n />\n </Dropdown.Toggle>\n <Dropdown.Menu>\n {!!props.groups?.length && (\n <div className='px-2 border-bottom mb-1'>\n <p className='mb-0'><Text namespace={namespace} phrase='addToGroup' /></p>\n <ul className='list-unstyled pe-3'>\n {props.groups.map(group => (\n <li key={group.id} className='d-flex align-items-center bg-white my-1'>\n <Checkbox\n id={`${props.id}:${group.id}`}\n checked={isChecked(group.id)}\n onChange={() => onChange(group)}\n indeterminate={!!getCheckedStudentsForGroup(props.selectedStudents, group)}\n />\n <ClassroomGroupPill group={group} />\n </li>\n ))}\n </ul>\n </div>\n )}\n <AppLink\n onClick={onClickCreateNewGroup}\n appLink={getNewGroupAppLink(props.classroom.id, props.selectedStudents)}\n className={props.disabled ? 'disabled' : 'text-nowrap d-flex align-items-center px-2'}\n >\n <SvgContainer svgName={cvSvgLibrary.Plus} />\n <Text namespace={namespace} phrase='createNew' />\n </AppLink>\n </Dropdown.Menu>\n </Dropdown>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"rfVnC\",\"name\":\"RYLWZ\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AssocDescriptor, EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions, Actions as MoreActions } from 'libs/shared/components/actions/Actions';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useResizeListener } from 'libs/shared/hooks/UseResizeListener';\nimport { ClassroomGroup, Config } from 'libs/shared/interfaces';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { User } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomGroupDropdown } from 'apps/classrooms/components/classroom-group-dropdown/ClassroomGroupDropdown';\nimport { ClassroomGroupExpander, ClassroomGroupPill } from 'apps/classrooms/components/classroom-group-pill/ClassroomGroupPill';\n\nimport styles from './manage-classroom-student-item.scss';\n\ntype GroupVisibilityMapping = { [id: string]: boolean };\n\nconst namespace = 'classrooms.manageClassroomStudentItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst getEditStudentAppLink = (id: string) => ({\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.EDIT_USER,\n args: [id],\n params: { userType: UserGroup.Learner }\n});\n\nconst getRemoveStudentsAppLink = (studentId: string, classroomId: string) => ({\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.REMOVE_STUDENTS,\n args: [classroomId],\n params: {\n studentIds: [studentId]\n }\n});\n\ninterface ManageClassroomStudentItemProps {\n classroom: Classroom;\n student: User;\n classroomGroups: ClassroomGroup[];\n selectedGroups: ClassroomGroup[];\n config: Config;\n onToggleGroup: (student: User, group: ClassroomGroup, toggleOn: boolean) => void;\n onToggleCheckbox: () => void;\n checked: boolean;\n readOnly?: boolean;\n readOnlyTooltip?: string;\n}\n\nexport function ManageClassroomStudentItem(props: ManageClassroomStudentItemProps): JSX.Element {\n const [ isComputingTruncation, setIsComputingTruncation ] = React.useState(false);\n const [ hasExpandedGroups, setHasExpandedGroups ] = React.useState(false);\n\n // Maps a group to it's visibility state.\n const [ groupVisibilityMapping, setGroupVisibilityMapping ] = React.useState<GroupVisibilityMapping>({});\n\n const groupListRef = React.useRef<HTMLDivElement>(null);\n const expanderRef = React.useRef<HTMLDivElement>(null);\n\n const { hasPermissions } = usePermissions();\n\n // Every time the selected groups array changes, we want to re-compute which groups should be truncated\n React.useEffect(() => {\n renderAllGroups();\n\n if (hasExpandedGroups) // Don't re-compute if the user has expanded all groups\n return;\n\n setIsComputingTruncation(true);\n }, [props.selectedGroups.length]);\n\n function onResize(): void {\n renderAllGroups();\n setIsComputingTruncation(true);\n }\n\n const throttledResizeListener = FunctionHelper.throttle(onResize, 300);\n\n useResizeListener(() => {\n if (hasExpandedGroups) // Don't re-compute if the user has expanded all groups\n return;\n\n throttledResizeListener();\n });\n\n /**\n * This iterates through each group element, and detects if any of them don't\n * fit on the first row of items. The elements that don't will be hidden.\n */\n React.useEffect(() => {\n if (!groupListRef.current || !expanderRef.current || !isComputingTruncation)\n return;\n\n const firstGroupPill = groupListRef.current.firstElementChild as HTMLDivElement;\n if (!firstGroupPill) return;\n\n const topRowHeight = firstGroupPill.getBoundingClientRect().y;\n\n const nextGroupVisibilityMapping: { [id: string]: boolean } = {};\n\n /**\n * Here we're checking if the y-coordinate of any groups\n * don't match the y-coordinate of the first group (which should\n * always be on the first row). This way we know if they should be\n * hidden or not.\n */\n let lastVisibleId: string;\n for (const child of groupListRef.current.children) {\n if (child.id) {\n nextGroupVisibilityMapping[child.id] = child.getBoundingClientRect().y === topRowHeight;\n lastVisibleId = nextGroupVisibilityMapping[child.id] ? child.id : lastVisibleId;\n }\n }\n\n // If the expander button has also wrapped, we hide the last element that we were going to make visible.\n if (expanderRef.current.getBoundingClientRect().y !== topRowHeight)\n nextGroupVisibilityMapping[lastVisibleId] = false;\n\n setGroupVisibilityMapping(nextGroupVisibilityMapping);\n setIsComputingTruncation(false);\n }, [isComputingTruncation]);\n\n function onClickShowAllGroups(): void {\n setHasExpandedGroups(true);\n renderAllGroups();\n }\n\n // Updates the group visibility mapping to display all groups\n function renderAllGroups(): void {\n setGroupVisibilityMapping(props.selectedGroups.reduce((acc, group) => {\n acc[group.id] = true;\n return acc;\n }, {} as GroupVisibilityMapping));\n }\n\n // Returns the number of groups that are invisible\n function getInvisibleGroupCount(): number {\n return Object.keys(groupVisibilityMapping).reduce((count, groupId) => {\n if (!groupVisibilityMapping[groupId])\n count++;\n \n return count;\n }, 0);\n }\n\n function getActions(): ActionOptions[] {\n const actions: ActionOptions[] = [];\n\n if (hasPermissions(PermissionName.ManageUsers))\n actions.push({\n label: getPhrase('editStudent'),\n appLink: getEditStudentAppLink(props.student.id),\n disabled: props.readOnly,\n className: props.readOnly ? 'disabled' : '',\n tooltip: props.readOnly ? props.readOnlyTooltip : '',\n onClick: () => {\n AnalyticsHelper.logUserAction({ id: props.student.id }, {\n actionType: UserAction.Edit,\n entity: EntityType.User,\n workflowPhase: WorkflowPhase.Start,\n location: LocationContext.ManageClassroomStudentListItem\n });\n }\n });\n\n actions.push({\n label: getPhrase('removeStudent'),\n appLink: getRemoveStudentsAppLink(props.student.id, props.classroom.id),\n disabled: props.readOnly,\n className: props.readOnly ? 'disabled' : 'text-danger',\n tooltip: props.readOnly ? props.readOnlyTooltip : '',\n onClick: () => {\n AnalyticsHelper.logUserAction({ id: props.classroom.id, userId: props.student.id }, {\n actionType: UserAction.Dissociate,\n entity: EntityType.Classroom,\n descriptor: AssocDescriptor.User,\n workflowPhase: WorkflowPhase.Start,\n location: LocationContext.ManageClassroomStudentListItem\n });\n }\n });\n\n return actions;\n }\n\n return (\n <div className='d-flex align-items-center py-1 px-4'>\n <Checkbox\n id={props.student.id}\n checked={props.checked}\n onChange={props.onToggleCheckbox}\n className='me-2'\n disabled={props.readOnly}\n />\n\n <div className={`${styles.avatarContainer} me-2`}>\n <Avatar\n imageCdnUrl={props.config.imageCdnUrl}\n initials={UserHelper.getInitials(props.student.name, props.student.surname)}\n imageUrl={props.student.avatar?.url}\n />\n </div>\n\n <p className={`me-2 ${styles.name} text-truncate mb-0 text-nowrap`}>{props.student.name} {props.student.surname}</p>\n\n <div\n // When we are computing the truncation, we want all group elements to be rendered but invisible.\n className={`${isComputingTruncation ? 'invisible' : ''} me-auto d-flex flex-wrap mt-n1`}\n ref={groupListRef}\n >\n {props.selectedGroups.map(group => {\n if (!groupVisibilityMapping[group.id]) // Don't render any groups that are marked as hidden\n return <React.Fragment key={group.id}></React.Fragment>;\n\n return (\n <div key={group.id} className='me-1 mt-1' id={group.id}>\n <ClassroomGroupPill group={group} />\n </div>\n );\n })}\n <div ref={expanderRef} className='me-1 mt-1'>\n <ClassroomGroupExpander count={getInvisibleGroupCount()} onClick={onClickShowAllGroups} />\n </div>\n </div>\n\n <ClassroomGroupDropdown\n id={`add-group-${props.student.id}`}\n classroom={props.classroom}\n groups={props.classroomGroups}\n selectedStudents={[props.student]}\n preselections={props.selectedGroups}\n onSelectGroup={(group, toggleOn) => props.onToggleGroup(props.student, group, toggleOn)}\n analyticsOptions={{ location: LocationContext.ManageClassroomStudentListItem }}\n alignRight\n disabled={props.readOnly}\n disabledTooltips={props.readOnlyTooltip}\n />\n\n <MoreActions\n actions={getActions()}\n actionsDropdownClassName='btn'\n />\n </div>\n );\n}","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AssocDescriptor, EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { Classroom, Config } from 'libs/shared/interfaces';\nimport { ClassroomGroup, User, UserCollection } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomGroupDropdown } from 'apps/classrooms/components/classroom-group-dropdown/ClassroomGroupDropdown';\nimport { ManageClassroomStudentItem } from 'apps/classrooms/components/manage-classroom-student-item/ManageClassroomStudentItem';\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\n\nimport { ManageClassroomStudentsEmptyState } from './empty-state/ManageClassroomStudentsEmptyState';\n\nconst namespace = 'classrooms.manageClassroomStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ManageClassroomStudentsProps {\n classroom: Classroom;\n students: UserCollection;\n schoolHasNoStudents: boolean;\n canManageUsers: boolean;\n groups: ClassroomGroup[];\n config: Config;\n onToggleGroup: (student: User, group: ClassroomGroup, toggleOn: boolean) => void;\n readOnly?: boolean;\n}\n\nexport function ManageClassroomStudents(props: ManageClassroomStudentsProps): JSX.Element {\n const { classroom, students, groups } = props;\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const CheckboxHelper = useBulkCheckboxManager(students.data);\n const selectionCount = CheckboxHelper.getSelected().length;\n\n const bulkPreselections = groups.filter(group => {\n if (!group.users?.data?.length)\n return false;\n\n let allStudentsFound = true;\n let index = 0;\n\n const studentIds = CheckboxHelper.getSelected();\n\n if (!studentIds.length)\n return;\n\n do {\n const id = studentIds[index];\n if (!group.users.data.find((stu: any) => stu.id.toString() === id.toString()))\n allStudentsFound = false;\n\n index++;\n } while (index < studentIds.length);\n\n return allStudentsFound;\n });\n\n function onClickAddStudents(): void {\n AnalyticsHelper.logUserAction({ id: classroom.id }, {\n entity: EntityType.Classroom,\n descriptor: AssocDescriptor.User,\n workflowPhase: WorkflowPhase.Start,\n actionType: UserAction.Associate,\n location: LocationContext.ManageClassroomStudents\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.ADD_STUDENTS_CHOICES,\n args: [classroom.id]\n });\n }\n\n function onClickBulkRemoveStudents(): void {\n if (!selectionCount || props.readOnly)\n return;\n\n const studentIds = CheckboxHelper.getSelected();\n\n AnalyticsHelper.logUserAction({\n id: classroom.id,\n studentCount: studentIds.length\n }, {\n entity: EntityType.Classroom,\n descriptor: AssocDescriptor.User,\n workflowPhase: WorkflowPhase.Start,\n actionType: UserAction.Dissociate,\n location: LocationContext.ManageClassroomStudents\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.REMOVE_STUDENTS,\n args: [classroom.id],\n params: {\n studentIds\n }\n });\n }\n\n function onSelectGroup(group: ClassroomGroup, shouldAdd: boolean): void {\n const selectedStudentIds = CheckboxHelper.getSelected();\n\n const request = shouldAdd ? ClassroomRequests.addStudentsToGroup : ClassroomRequests.removeStudentsFromGroup;\n\n Flight.fetch(\n dispatch,\n request(selectedStudentIds, group.id, classroom.id, () => {\n AnalyticsHelper.logUserAction({\n id: group.id,\n studentCount: selectedStudentIds.length\n }, {\n actionType: UserAction.Associate,\n entity: EntityType.ClassroomGroup,\n descriptor: AssocDescriptor.User,\n workflowPhase: WorkflowPhase.Complete,\n location: LocationContext.ManageClassroomStudents\n });\n\n alerts.success(getPhrase('addSuccess', { groupName: group.name, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('addError', { groupName: group.name, escapeText: true }));\n })\n );\n }\n\n const edgeToEdge = useMediaQuery(MediaQueryStrings.XLDown);\n\n if (!students.data?.length) {\n return (\n <ManageClassroomStudentsEmptyState\n classroom={props.classroom}\n classroomIdeasText={getPhrase('classroomIdeasText')}\n schoolHasNoStudents={props.schoolHasNoStudents}\n canManageUsers={props.canManageUsers}\n />\n );\n }\n\n return (\n <>\n <div className={`d-flex align-items-center py-2 ${edgeToEdge ? 'ps-2' : 'ps-4'}`}>\n <Checkbox\n id='manage-classroom-students-bulk'\n onChange={CheckboxHelper.onToggleBulk}\n checked={CheckboxHelper.bulkChecked}\n className='me-2'\n indeterminate={CheckboxHelper.hasSomeSelections()}\n disabled={props.readOnly}\n />\n\n <ClassroomGroupDropdown\n id='bulk-add-group'\n classroom={classroom}\n selectedStudents={CheckboxHelper.getSelected().map(id => {\n return props.students.data.find(s => s.id.toString() === id.toString());\n })}\n groups={groups}\n onSelectGroup={onSelectGroup}\n disabled={!selectionCount || props.readOnly}\n preselections={bulkPreselections}\n analyticsOptions={{ location: LocationContext.ManageClassroomStudents }}\n disabledTooltips={props.readOnly && LanguageService.getPhrase(namespace, 'disabledByRostering')}\n />\n <DivButton\n className={`me-auto ${!selectionCount || props.readOnly ? 'text-light cursor-default' : ''}`}\n onClick={onClickBulkRemoveStudents}\n >\n <Tooltip\n spanHack\n title={props.readOnly ? LanguageService.getPhrase(namespace, 'disabledByRostering') : ''}\n >\n <SvgContainer\n svgName={cvSvgLibrary.Delete}\n title={LanguageService.getPhrase(namespace, 'delete')}\n tooltipPlacement='top'\n tooltipSpanHack\n />\n </Tooltip>\n </DivButton>\n <Tooltip\n spanHack\n title={props.readOnly ? LanguageService.getPhrase(namespace, 'disabledByRostering') : ''}\n >\n <IconButton\n onClick={onClickAddStudents}\n svgName={cvSvgLibrary.Plus}\n className='btn btn-outline-dark'\n disabled={props.readOnly}\n >\n <Text namespace={namespace} phrase='addStudent' />\n </IconButton>\n </Tooltip>\n </div>\n\n <ul className='striped-list list-unstyled'>\n {students.data.map(student => (\n <li key={student.id}>\n <ManageClassroomStudentItem\n classroom={classroom}\n student={student}\n classroomGroups={props.groups}\n config={props.config}\n selectedGroups={props.groups.filter(g => g.users.data.find(u => u.id === student.id))}\n checked={CheckboxHelper.isChecked(student.id)}\n onToggleCheckbox={() => CheckboxHelper.onToggleItem(student.id)}\n onToggleGroup={props.onToggleGroup}\n readOnly={props.readOnly}\n readOnlyTooltip={props.readOnly ? getPhrase('disabledByRostering') : ''}\n />\n </li>\n ))}\n </ul>\n </>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"heading\":\"YrP_G\",\"avatar\":\"droqZ\",\"checkbox\":\"pJf6R\",\"actionIcon\":\"MSvzY\",\"addStudents\":\"j62jt\",\"studentName\":\"gorcb\",\"group\":\"IFmvc\",\"sm\":\"pOcvk\",\"lg\":\"SdQ90\",\"moreActions\":\"S7p4K\"};","import React from 'react';\n\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PartialPillTabSelector } from 'libs/shared/components/pill-tab-selector/partial-loading/PartialPillTabSelector';\n\nimport styles from './partial-manage-classroom-students.scss';\n\nexport const PartialManageClassroomStudents = React.memo(function(): JSX.Element {\n return (\n <div className='px-3'>\n {/* Heading */}\n <div className={`mb-1 partial-loading-background ${styles.heading}`} />\n\n {/* Breadcrumbs */}\n <div className='pb-3'>\n <PartialBreadcrumbs numItems={2} />\n </div>\n\n {/* Pill tab selector */}\n <div className='pb-2'>\n <PartialPillTabSelector />\n </div>\n\n <div className='d-flex align-items-center py-2'>\n {/* Checkbox */}\n <div className={`mx-4 partial-loading-background ${styles.checkbox}`} />\n {/* Group selector */}\n <div className={`me-2 partial-loading-background ${styles.actionIcon}`} />\n {/* Delete action */}\n <div className={`me-auto partial-loading-background ${styles.actionIcon}`} />\n\n {/* Add new students button */}\n <div className={`partial-loading-background ${styles.addStudents}`} />\n </div>\n\n {/* Students list */}\n <ul className='striped-list list-unstyled'>\n {Array(20).fill(null).map((student, i) => (\n <li key={i}>\n <div className='d-flex align-items-center py-1 px-4'>\n {/* Checkbox */}\n <div className={`me-2 partial-loading-background ${styles.checkbox}`} />\n\n {/* Avatar */}\n <div className={`me-2 partial-loading-background ${styles.avatar}`} />\n\n {/* Student name */}\n <div className='w-25'>\n <div className={`partial-loading-background ${styles.studentName}`} />\n </div>\n\n {/* Groups list. Randomly renders either 1 or 2 groups. Group widths are randomly generated */}\n <div className='me-auto d-flex'>\n {Math.random() > 0.5\n ? (\n <>\n <div className={`partial-loading-background rounded-pill me-1 ${styles.group} ${styles.lg}`} />\n <div className={`partial-loading-background rounded-pill ${styles.group} ${styles.sm}`} />\n </>\n ) : <div className={`partial-loading-background rounded-pill ${styles.group} ${styles.sm}`} />\n }\n </div>\n\n {/* Group selector */}\n <div className={`me-2 partial-loading-background ${styles.actionIcon}`} />\n {/* More actions */}\n <div className={`partial-loading-background ${styles.moreActions}`} />\n </div>\n </li>\n ))}\n </ul>\n </div>\n );\n});","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AssocDescriptor, EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { RosteringAlert } from 'libs/shared/components/rostering/rostering-alert/RosteringAlert';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Classroom, ClassroomGroup, ClassroomGroupCollection, Config, CurrentUser, User, UserCollection } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ManageClassroomStudentsEmptyState, RosteredClassroomStudentsEmptyState } from 'apps/classrooms/components/manage-classroom-students/empty-state/ManageClassroomStudentsEmptyState';\nimport { ManageClassroomStudents } from 'apps/classrooms/components/manage-classroom-students/ManageClassroomStudents';\nimport { PartialManageClassroomStudents } from 'apps/classrooms/components/manage-classroom-students/partial-loading/PartialManageClassroomStudents';\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { useHandleClassroomErrors } from 'apps/classrooms/hooks/useHandleClassroomErrors';\nimport { ClassroomLayout } from 'apps/classrooms/layouts/ClassroomLayout';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\n\nconst namespace = 'classrooms.classroomStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst baseAnalyticsOptions = {\n entity: EntityType.ClassroomGroup,\n descriptor: AssocDescriptor.User,\n workflowPhase: WorkflowPhase.Complete,\n location: LocationContext.ManageClassroomStudentListItem\n};\n\ninterface ClassroomStudentsViewProps {\n id: string;\n cursor: string;\n}\n\nexport function ClassroomStudentsView(props: ClassroomStudentsViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const classroom = Flight.useBasicFetch<Classroom>(currentUser.data &&\n ClassroomRequests.getClassroom(props.id, currentUser.data.id));\n const students = Flight.useBasicFetch<UserCollection>(ClassroomRequests.getClassroomStudents(props.id, props.cursor));\n const allStudents = Flight.useBasicFetch<UserCollection>(currentUser.data &&\n UserManagerRequests.getUsers(currentUser.data.customerId, UserGroup.Learner));\n const groups = Flight.useBasicFetch<ClassroomGroupCollection>(ClassroomRequests.getClassroomGroups(props.id));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const isRostered = classroom.data?._integrations?.rostered;\n\n const dispatch = useDispatch();\n const { hasPermissions } = usePermissions();\n\n useSetPageMetadata({\n title: getPhrase('pageTitle', { classroomName: classroom.data?.name })\n });\n useHandleClassroomErrors(classroom);\n\n function onToggleGroup(student: User, group: ClassroomGroup, toggleOn: boolean): void {\n const analyticsData = {\n id: group.id,\n studentCount: 1\n };\n\n const request = toggleOn\n ? ClassroomRequests.addStudentsToGroup([student.id], group.id, props.id, () => {\n AnalyticsHelper.logUserAction(analyticsData, {\n ...baseAnalyticsOptions,\n actionType: UserAction.Associate\n });\n })\n : ClassroomRequests.removeStudentsFromGroup([student.id], group.id, props.id, () => {\n AnalyticsHelper.logUserAction(analyticsData, {\n ...baseAnalyticsOptions,\n actionType: UserAction.Dissociate\n });\n });\n\n Flight.fetch(dispatch, request);\n }\n\n function onTogglePin(shouldPin: boolean, onSuccess: () => void, onError: () => void): void {\n if (isRostered)\n return;\n const request = shouldPin\n ? ClassroomRequests.pinClassroom\n : ClassroomRequests.unpinClassroom;\n\n Flight.fetch(dispatch, request(classroom.data, onSuccess, onError));\n }\n\n if (\n !classroom.data\n || !students.data?.data\n || !groups.data?.data\n || !config.data\n || !allStudents.data\n )\n return <PartialManageClassroomStudents />;\n\n return (\n <ClassroomLayout\n classroom={classroom.data}\n currentUser={currentUser.data}\n onTogglePin={onTogglePin}\n activeTab='students'\n isRostered={isRostered}\n >\n {(() => {\n if (isRostered)\n return (\n <>\n <RosteringAlert type='classroom'/>\n {!students.data?.data?.length ? (\n <RosteredClassroomStudentsEmptyState />\n ) : (\n <ManageClassroomStudents\n classroom={classroom.data}\n students={students.data}\n groups={groups.data.data}\n onToggleGroup={onToggleGroup}\n config={config.data}\n schoolHasNoStudents={!allStudents.data?.data?.length}\n canManageUsers={hasPermissions(PermissionName.ManageUsers)}\n readOnly\n />\n )}\n </>\n );\n\n if (students.data?.data?.length) {\n return (\n <ManageClassroomStudents\n classroom={classroom.data}\n students={students.data}\n groups={groups.data.data}\n onToggleGroup={onToggleGroup}\n config={config.data}\n schoolHasNoStudents={!allStudents.data?.data?.length}\n canManageUsers={hasPermissions(PermissionName.ManageUsers)}\n />\n );\n }\n\n return (\n <ManageClassroomStudentsEmptyState\n classroom={classroom.data}\n classroomIdeasText={getPhrase('classroomIdeasText')}\n schoolHasNoStudents={!allStudents.data?.data?.length}\n canManageUsers={hasPermissions(PermissionName.ManageUsers)}\n />\n );\n })()}\n\n {!!students.data?.pagination?.cursors && (\n <Pagination\n appLink={{\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.CLASSROOM_STUDENTS,\n args: [props.id]\n }}\n cursors={students.data?.pagination?.cursors}\n buttonVariant='outline-dark'\n className='py-2 float-end'\n scrollTop\n prevHack\n />\n )}\n </ClassroomLayout>\n );\n}\n"],"names":["ScrollHelper","preventScrollTop","Radio","trigger","buildCursor","appLink","cursorParam","prevHack","currentParams","params","previous","application","action","args","cursor","Pagination","cursors","className","buttonVariant","scrollTop","onClick","onClickButton","page","location","entity","actionType","value","style","display","phrase","next","variant","defaultProps","getPhrase","RosteringAlert","props","text","type","useBulkCheckboxManager","collection","options","idField","persistNamespace","initial","initialState","Map","items","forceUpdate","prevCollection","prevNamespace","reset","current","clear","isChecked","item","toString","get","isBulkChecked","length","every","setSelected","ids","forEach","id","set","map","i","join","preselectedIds","onToggleBulk","setValue","onToggleItem","nextItemState","getSelected","Array","from","keys","bulkChecked","deselectAll","hasSomeSelections","find","getSelectedCount","size","getMap","usePrevious","ref","mapColourToBsVariant","groupColour","namespace","ClassroomsNoStudentsState","EmptyState","src","ImageUrls","Text","canManageUsers","isRostering","LanguageService","href","target","STUDENT_ENGAGEMENT_IDEAS_LINK","ROSTERING_KB_ARTICLE_URL","RosteredClassroomStudentsEmptyState","ManageClassroomStudentsEmptyState","schoolHasNoStudents","icon","classroom","classroomIdeasText","ClassroomGroupPill","group","metadata","colour","name","ClassroomGroupExpander","count","DivButton","getNewGroupAppLink","students","addStudents","s","getCheckedStudentsForGroup","filter","student","users","data","u","ClassroomGroupDropdown","groups","preselections","g","totalCheckedForGroup","selectedStudents","dropdownProps","align","alignRight","disabled","show","Dropdown","as","SvgContainer","svgName","title","disabledTooltips","tooltipPlacement","tooltipSpanHack","tooltipSpanHackClassName","key","Checkbox","checked","onChange","shouldAdd","onSelectGroup","indeterminate","AppLink","AnalyticsHelper","analyticsOptions","workflowPhase","getEditStudentAppLink","userType","UserGroup","getRemoveStudentsAppLink","studentId","classroomId","studentIds","ManageClassroomStudentItem","isComputingTruncation","setIsComputingTruncation","hasExpandedGroups","setHasExpandedGroups","groupVisibilityMapping","setGroupVisibilityMapping","groupListRef","expanderRef","hasPermissions","usePermissions","renderAllGroups","selectedGroups","actions","throttledResizeListener","FunctionHelper","reduce","acc","firstGroupPill","firstElementChild","lastVisibleId","topRowHeight","getBoundingClientRect","y","nextGroupVisibilityMapping","children","child","onToggleCheckbox","readOnly","Avatar","imageCdnUrl","config","initials","UserHelper","surname","imageUrl","avatar","url","Object","groupId","classroomGroups","toggleOn","onToggleGroup","readOnlyTooltip","PermissionName","push","label","tooltip","userId","descriptor","actionsDropdownClassName","ManageClassroomStudents","dispatch","alerts","CheckboxHelper","selectionCount","bulkPreselections","allStudentsFound","index","stu","edgeToEdge","selectedStudentIds","request","ClassroomRequests","studentCount","success","groupName","escapeText","error","Tooltip","spanHack","IconButton","PartialManageClassroomStudents","numItems","PartialPillTabSelector","fill","Math","random","baseAnalyticsOptions","ClassroomStudentsView","currentUser","UserRequests","allStudents","UserManagerRequests","customerId","ConfigRequests","isRostered","_integrations","rostered","analyticsData","useSetPageMetadata","classroomName","useHandleClassroomErrors","ClassroomLayout","onTogglePin","shouldPin","onSuccess","onError","activeTab","pagination"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1863],{82872:(e,t,n)=>{n.d(t,{t:()=>S});var r=n(32735),a=n(91967),o=n(11607),i=n(83914),l=n(4594),c=n(76881),s=n(36511),u=n(45778),m=n(35223),d=n(64818),f=n(80247),p=n(23481);const v={avatar:"srrS3"};function g(e){var t=e.imageUrl,n=e.initials,a={};return t&&(a.backgroundImage="url('".concat(t,"')")),r.createElement("div",{className:v.avatar,style:a},t?r.createElement(r.Fragment,null," "):n)}var y=n(76177);const h={svgContainer:"laVU4",selection:"vEOCt",expander:"d1NHd",iconContainer:"rFH4W",icon:"BarYz",bubble:"HF0E8",spinnerContainer:"iKeXW",remove:"pyzCM",removeBubble:"mgt6Y"};var b=p.T.encloseNamespace("shared.inputSelection");function E(e){var t,n="".concat(h.svgContainer," ").concat(h.icon);return e.typeId===l.E.Classroom?n+=" text-teal":n+=" text-".concat((0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour)),n}function C(e){var t,n=function(e){var t;switch(e.typeId){case l.E.Classroom:return"text-teal-hover";case l.E.ClassroomGroup:return"text-".concat((0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour),"-hover")}}(e.selection),a=e.selection.typeId===l.E.Classroom;if(!e.canExpand){if(!e.selection.typeId||e.selection.typeId===l.E.User){var c=e.selection;return r.createElement("div",{className:h.svgContainer},r.createElement(g,{imageUrl:null===(t=c.avatar)||void 0===t?void 0:t.url,initials:d.l.getInitials(e.selection.name,e.selection.surname)}))}return r.createElement(y.u,{title:b(a?"emptyClassroom":"emptyGroup")},r.createElement("div",{className:"align-items-center border border-white bg-white ".concat(h.iconContainer)},r.createElement(i.x,{className:E(e.selection),svgName:a?m.vn.Classrooms:m.vn.Group})))}return e.hasExpanded?r.createElement("div",{className:"d-flex align-items-center text-white ".concat(h.spinnerContainer," ").concat(h.svgContainer)},r.createElement(f.Z,{as:"div",size:"sm",animation:"border",role:"status"})):r.createElement(r.Fragment,null,r.createElement(o.L,{className:"align-items-center cursor-pointer text-white border border-white rounded-circle ".concat(h.expander," ").concat(n),onClick:e.onClickExpand},r.createElement(i.x,{svgName:m.vn.Plus,className:"d-flex align-items-center ".concat(h.svgContainer)})),r.createElement("div",{className:"align-items-center border border-white bg-white ".concat(h.iconContainer)},r.createElement(i.x,{className:E(e.selection),svgName:a?m.vn.Classrooms:m.vn.Group})))}function x(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,o,i,l=[],c=!0,s=!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)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return k(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)?k(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 k(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 N(e){var t;if(!e.typeId)return"dark-blue";switch(e.typeId){case l.E.User:return"number"==typeof e.userType?2===e.userType?"dark-blue":"indigo":e.userType===c.Y.Learner?"dark-blue":"indigo";case l.E.Classroom:return"teal";case l.E.ClassroomGroup:return(0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour)}}function S(e){var t,n,a,c=u.G.isType(e.selection,l.E.Classroom),s=u.G.isType(e.selection,l.E.ClassroomGroup),d=e.onClickExpand&&(c||s),f=!!(null===(t=e.selection.users||e.selection.enrolments)||void 0===t?void 0:t.count),p=!!(null===(a=null===(n=e.selection.users)||void 0===n?void 0:n.data)||void 0===a?void 0:a.length),v=x(r.useState(!1),2),g=v[0],y=v[1],b=x(r.useState(d&&f),2),E=b[0],C=b[1];if(r.useEffect((function(){C(d&&f)}),[d,f]),p){var k=e.selection,S=N(e.selection);return r.createElement("div",{className:"d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-".concat(S," text-").concat(S," ").concat(h.bubble)},k.users.data.map((function(t){return r.createElement(w,{key:"".concat(t.id,":").concat(e.selection.id),selection:t,colourVariant:S,hasStudentExperience:e.hasStudentExperience})})),r.createElement(o.L,{className:"cursor-pointer position-absolute text-".concat(S," ").concat(h.removeBubble),onClick:function(){return e.onClickRemove(e.selection)}},r.createElement(i.x,{svgName:m.vn.Close,className:"d-flex align-items-center ".concat(h.svgContainer)})))}return r.createElement(w,{selection:e.selection,canExpand:E,hasExpanded:g,onClickExpand:function(){y(!0),e.onClickExpand(e.selection.id)},onClickRemove:e.onClickRemove,colourVariant:N(e.selection),hasStudentExperience:e.hasStudentExperience})}function w(e){var t=e.colourVariant||N(e.selection),n=e.selection.name;return e.selection.typeId===l.E.User&&(n=e.hasStudentExperience?d.l.getDisplayName(e.selection):d.l.getFullName(e.selection)),r.createElement("div",{className:"".concat(h.selection," bg-").concat(t," rounded-pill text-").concat(t," d-flex align-items-center me-1 mt-1 overflow-hidden")},!e.hideExpander&&r.createElement(C,{canExpand:e.canExpand,hasExpanded:e.hasExpanded,onClickExpand:e.onClickExpand,selection:e.selection}),r.createElement("span",{className:"mx-1 text-white text-truncate"},n),a.q.isFunction(e.onClickRemove)&&r.createElement(o.L,{className:"d-flex align-items-center cursor-pointer align-self-stretch text-white ".concat(h.remove),onClick:function(){return e.onClickRemove(e.selection)}},r.createElement(i.x,{svgName:m.vn.Close,className:"d-flex align-items-center ".concat(h.svgContainer)})))}},36511:(e,t,n)=>{n.d(t,{I:()=>a});var r=n(96787);function a(e){switch(e){case r.R.Pink:return"pink";case r.R.Orange:return"orange";case r.R.Green:return"green";case r.R.Blue:return"blue";case r.R.Purple:return"purple";case r.R.Indigo:return"indigo";default:return"pink"}}},45398:(e,t,n)=>{n.r(t),n.d(t,{BulkUserActionsAddToClassroomConfirmationView:()=>N});var r=n(32735),a=n(70680),o=n(81886),i=n(20354),l=n(2948),c=n(82872),s=n(149),u=n(83345),m=n(36033),d=n(38143),f=n(3044);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var v="userManager.bulkUserActionsAddToClassroomConfirmation";function g(e){var t,n,a=(t=(0,l.D)(d.g.BULK_USER_ACTIONS),n=1,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!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)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];return s.b.useSetWizardConfirmationCallback(e.onClickConfirm),r.createElement(u.D.Provider,{value:v},r.createElement(m.s,null,r.createElement("p",{className:"fw-semibold"},r.createElement(u.x,{namespace:v,phrase:"heading",options:{smartCount:e.userCount}})),a.classroom&&r.createElement("div",{className:"rounded rounded-3 pb-2"},r.createElement("div",{className:"d-flex"},r.createElement(c.t,{selection:a.classroom})))),r.createElement(f.Q,{users:e.users,imageCdnUrl:e.imageCdnUrl,hasMore:e.hasMoreUsers,isFetching:e.isFetchingUsers,fetchNext:e.fetchNextUserPage,userType:e.userType,userCount:e.userCount}))}var y=n(58703),h=n(39151),b=n(31949),E=n(29613),C=n(88323),x=n(18087);function k(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 N(e){var t,n,c,u=(0,C.h)(e.userType),m=u.users,f=u.count,p=u.isFetching,v=u.hasMore,N=u.fetchNext,S=(n=(0,l.D)(d.g.BULK_USER_ACTIONS),c=1,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!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)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(n,c)||function(e,t){if(e){if("string"==typeof e)return k(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)?k(e,t):void 0}}(n,c)||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],w=i.a.useBasicFetch(b.N.currentUser()),I=i.a.useBasicFetch(h.L.config()),A=(0,a.I0)(),U=(0,x.Y)(e.userType),T=s.b.useCreateJobErrorAlert();function j(t){o.Q.C$.trigger(Object.assign(Object.assign({},U.bulkActionsStatus.polling),{params:{userType:e.userType,jobId:t.id}}))}return r.createElement(y.d,{appLinks:U,userType:e.userType,users:m,currentStep:"confirmation",userCount:f,loaded:!0},r.createElement(g,{users:m,imageCdnUrl:null===(t=I.data)||void 0===t?void 0:t.imageCdnUrl,hasMoreUsers:v,isFetchingUsers:p,fetchNextUserPage:N,userType:e.userType,onClickConfirm:function(){if(S){var t=s.b.getCreateJobRequestData(S,w.data.customerId,e.userType);i.a.fetch(A,E.q.createJob(t,j,T))}},userCount:f}))}}}]);
2
+ //# sourceMappingURL=1863-bb98f2e617-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/1863-bb98f2e617-lite.chunk.js","mappings":"2QACA,SAAgB,OAAS,SCQnB,SAAUA,EAAYC,GAC1B,IAAQC,EAAuBD,EAAvBC,SAAUC,EAAaF,EAAbE,SAEZC,EAA6B,CAAC,EAKpC,OAHIF,IACFE,EAAMC,gBAAkB,QAAH,OAAWH,EAAQ,OAGxC,uBAAKI,UAAW,SAAeF,MAAOA,GACnCF,EAAW,qCAAcC,EAGhC,C,eCrBA,SAAgB,aAAe,QAAQ,UAAY,QAAQ,SAAW,QAAQ,cAAgB,QAAQ,KAAO,QAAQ,OAAS,QAAQ,iBAAmB,QAAQ,OAAS,QAAQ,aAAe,SCgBjM,IAAMI,EAAYC,EAAA,mBAAiC,yBAcnD,SAASC,EAAqBC,G,MACxBC,EAAY,GAAH,OAAM,eAAmB,YAAI,QAO1C,OALID,EAAUE,SAAWC,EAAA,YACvBF,GAAa,aAEbA,GAAa,SAAJ,QAAa,OAA2D,QAArC,EAAAD,EAA6BI,gBAAQ,eAAEC,SAE9EJ,CACT,CASM,SAAUK,EAAuBf,G,MAC/BgB,EA/BR,SAAwCC,G,MACtC,OAAQA,EAAON,QACb,KAAKC,EAAA,YACH,MAAO,kBAGT,KAAKA,EAAA,iBACH,MAAO,QAAP,QAAe,OAAwD,QAAlC,EAAAK,EAA0BJ,gBAAQ,eAAEC,QAAO,UAGtF,CAqBsBI,CAA+BlB,EAAMS,WAEnDU,EAAcnB,EAAMS,UAAUE,SAAWC,EAAA,YAE/C,IAAKZ,EAAMoB,UAAW,CACpB,IAAKpB,EAAMS,UAAUE,QAAUX,EAAMS,UAAUE,SAAWC,EAAA,OAAiB,CACzE,IAAMS,EAAOrB,EAAMS,UAEnB,OACE,uBAAKJ,UAAW,gBACd,gBAACN,EAAW,CACVE,SAAqB,QAAX,EAAAoB,EAAKC,cAAM,eAAEC,IACvBrB,SAAUsB,EAAA,cAAuBxB,EAAMS,UAAUgB,KAAOzB,EAAMS,UAAmBiB,WAIxF,CAED,OACE,gBAACC,EAAA,EAAO,CAACC,MAAOtB,EAAUa,EAAc,iBAAmB,eACzD,uBAAKd,UAAS,0DAAqD,kBACjE,gBAACwB,EAAA,EAAY,CACXxB,UAAWG,EAAqBR,EAAMS,WACtCqB,QAASX,EAAc,gBAA0B,cAK1D,CAED,OAAKnB,EAAM+B,YAuBT,uBAAK1B,UAAS,+CAA0C,mBAAuB,YAAI,iBACjF,gBAAC2B,EAAA,EAAO,CAACC,GAAG,MAAMC,KAAK,KAAKC,UAAU,SAASC,KAAK,YAtBpD,gCAEE,gBAACC,EAAA,EAAS,CACRhC,UAAS,0FAAqF,WAAe,YAAIW,GACjHsB,QAAStC,EAAMuC,eAEf,gBAACV,EAAA,EAAY,CAACC,QAAS,UAAmBzB,UAAS,oCAA+B,mBAIpF,uBAAKA,UAAS,0DAAqD,kBACjE,gBAACwB,EAAA,EAAY,CACXxB,UAAWG,EAAqBR,EAAMS,WACtCqB,QAASX,EAAc,gBAA0B,cAY7D,C,ggCC1EA,SAASqB,EAAyBvB,G,MAChC,IAAKA,EAAON,OACV,MAAO,YAET,OAAQM,EAAON,QACb,KAAKC,EAAA,OAEH,MAAwC,iBAA7BK,EAAgBwB,SACqB,IAArCxB,EAAgBwB,SAAyB,YAAc,SAE7DxB,EAAgBwB,WAAaC,EAAA,UACzB,YAEF,SAGT,KAAK9B,EAAA,YACH,MAAO,OAGT,KAAKA,EAAA,iBACH,OAAO,OAAwD,QAAlC,EAAAK,EAA0BJ,gBAAQ,eAAEC,QAGvE,CASM,SAAU6B,EAAe3C,G,UACvBmB,EAAcyB,EAAA,SAAwB5C,EAAMS,UAAWG,EAAA,aACvDiC,EAAmBD,EAAA,SAAwB5C,EAAMS,UAAWG,EAAA,kBAC5DkC,EAAe9C,EAAMuC,gBAAkBpB,GAAe0B,GAMtDE,KAGL,QAHqB,EACnB/C,EAAMS,UAA6BuC,OACnChD,EAAMS,UAAwBwC,kBAChC,eAAEC,OACGC,KAAiF,QAA1D,EAAoD,QAArD,EAACnD,EAAMS,UAAyCuC,aAAK,eAAEI,YAAI,eAAEC,QAE5B,IAArB,YAAe,GAAM,GAArDtB,EAAW,KAAEuB,EAAc,KAC2C,IAA1C,WAAeR,GAAgBC,GAAW,GAAtE3B,EAAS,KAAEmC,EAAY,KAW/B,GATA,aAAgB,WACdA,EAAaT,GAAgBC,EAC/B,GAAG,CAAED,EAAcC,IAOfI,EAAmB,CACrB,IAAM1C,EAAwCT,EAAMS,UAE9C+C,EAAgBhB,EAAyBxC,EAAMS,WAErD,OACE,uBAAKJ,UAAS,gGAA2FmD,EAAa,iBAASA,EAAa,YAAI,WAC7I/C,EAAUuC,MAAMI,KAAKK,KAAI,SAAApC,GAAI,OAC5B,gBAACqC,EAAU,CACTC,IAAG,UAAKtC,EAAKuC,GAAE,YAAI5D,EAAMS,UAAUmD,IACnCnD,UAAWY,EACXmC,cAAeA,EACfK,qBAAsB7D,EAAM6D,sBAC5B,IAGJ,gBAACxB,EAAA,EAAS,CACRhC,UAAS,gDAA2CmD,EAAa,YAAI,gBACrElB,QAAS,kBAAMtC,EAAM8D,cAAc9D,EAAMS,UAAU,GAEnD,gBAACoB,EAAA,EAAY,CAACC,QAAS,WAAoBzB,UAAS,oCAA+B,mBAI1F,CAED,OACE,gBAACqD,EAAU,CACTjD,UAAWT,EAAMS,UACjBW,UAAWA,EACXW,YAAaA,EACbQ,cApCJ,WACEe,GAAe,GACftD,EAAMuC,cAAcvC,EAAMS,UAAUmD,GACtC,EAkCIE,cAAe9D,EAAM8D,cACrBN,cAAehB,EAAyBxC,EAAMS,WAC9CoD,qBAAsB7D,EAAM6D,sBAGlC,CAaM,SAAUH,EAA0C1D,GACxD,IAAMwD,EAAgBxD,EAAMwD,eAAiBhB,EAAyBxC,EAAMS,WAExEsD,EAAgB/D,EAAMS,UAAUgB,KAQpC,OANIzB,EAAMS,UAAUE,SAAWC,EAAA,SAC7BmD,EAAgB/D,EAAM6D,qBAClBrC,EAAA,iBAA0BxB,EAAMS,WAChCe,EAAA,cAAuBxB,EAAMS,YAIjC,uBAAKJ,UAAS,UAAK,YAAgB,eAAOmD,EAAa,8BAAsBA,EAAa,0DACtFxD,EAAMgE,cACN,gBAACjD,EAAsB,CACrBK,UAAWpB,EAAMoB,UACjBW,YAAa/B,EAAM+B,YACnBQ,cAAevC,EAAMuC,cACrB9B,UAAWT,EAAMS,YAIrB,wBAAMJ,UAAU,iCAAiC0D,GAEhDE,EAAA,aAA0BjE,EAAM8D,gBAC/B,gBAACzB,EAAA,EAAS,CACRhC,UAAS,iFAA4E,UACrFiC,QAAS,kBAAMtC,EAAM8D,cAAc9D,EAAMS,UAAU,GAEnD,gBAACoB,EAAA,EAAY,CAACC,QAAS,WAAoBzB,UAAS,oCAA+B,mBAK7F,C,kDC7KM,SAAU6D,EAAqBC,GACnC,OAAQA,GACN,KAAK,SACH,MAAO,OACT,KAAK,WACH,MAAO,SACT,KAAK,UACH,MAAO,QACT,KAAK,SACH,MAAO,OACT,KAAK,WACH,MAAO,SACT,KAAK,WACH,MAAO,SACT,QACE,MAAO,OAEb,C,qTCLA,IAAMC,EAAY,wDAaZ,SAAUC,EACdrE,GAEA,I,IAAOsE,G,GAAa,OAClBC,EAAA,qB,EACD,E,o4BAFe,GAMhB,OAFAC,EAAA,mCAAuDxE,EAAMyE,gBAG3D,gBAAC,aAAiC,CAACC,MAAON,GACxC,gBAACO,EAAA,EAAwB,KACvB,qBAAGtE,UAAU,eACX,gBAACuE,EAAA,EAAI,CACHR,UAAWA,EACXS,OAAO,UACPC,QAAS,CACPC,WAAY/E,EAAMgF,cASvBV,EAAUW,WACT,uBAAK5E,UAAS,0BACZ,uBAAKA,UAAU,UACb,gBAACsC,EAAA,EAAc,CAAClC,UAAW6D,EAAUW,eAM7C,gBAACC,EAAA,EAAmC,CAClClC,MAAOhD,EAAMgD,MACbmC,YAAanF,EAAMmF,YACnBC,QAASpF,EAAMqF,aACfC,WAAYtF,EAAMuF,gBAClBC,UAAWxF,EAAMyF,kBACjBhD,SAAUzC,EAAMyC,SAChBuC,UAAWhF,EAAMgF,YAIzB,C,4KCrDM,SAAUU,EAA8C1F,G,UAC5D,GAMI,EAAA2F,EAAA,GAA2B3F,EAAMyC,UALnCO,EAAK,EAALA,MACAE,EAAK,EAALA,MACAoC,EAAU,EAAVA,WACAF,EAAO,EAAPA,QACAI,EAAS,EAATA,UAGKlB,G,GAAa,OAClBC,EAAA,qB,EACD,E,o4BAFe,GAIVqB,EAAc,kBAAkCC,EAAA,iBAChDC,EAAS,kBAA6BC,EAAA,YAEtCC,GAAW,UAEXC,GAAW,OAAuBjG,EAAMyC,UAExCyD,EAAmB1B,EAAA,2BAczB,SAAS2B,EAAYC,GACnB,eAA2B,OAAD,wBACrBH,EAASI,kBAAkBC,SAAO,CACrCC,OAAQ,CACN9D,SAAUzC,EAAMyC,SAChB+D,MAAOJ,EAAIxC,MAGjB,CAEA,OACE,gBAAC6C,EAAA,EAA2B,CAC1BR,SAAUA,EACVxD,SAAUzC,EAAMyC,SAChBO,MAAOA,EACP0D,YAAY,eACZ1B,UAAW9B,EACXyD,QAAM,GAEN,gBAACtC,EAAyC,CACxCrB,MAAOA,EACPmC,YAAwB,QAAX,EAAAW,EAAO1C,YAAI,eAAE+B,YAC1BE,aAAcD,EACdG,gBAAiBD,EACjBG,kBAAmBD,EACnB/C,SAAUzC,EAAMyC,SAChBgC,eAvCN,WACE,GAAKH,EAAL,CAGA,IAAMlB,EAAOoB,EAAA,0BACXF,EACAsB,EAAYxC,KAAKwD,WACjB5G,EAAMyC,UAGR,UAAauD,EAAUa,EAAA,YAAsBzD,EAAM+C,EAAaD,GARxD,CASV,EA6BMlB,UAAW9B,IAInB,C","sources":["file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/white-avatar/white-avatar.scss","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/white-avatar/WhiteAvatar.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/tokenized-typeahead/input-selection.scss","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/tokenized-typeahead/InputSelectionExpander.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/share/components/tokenized-typeahead/InputSelection.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/utils/GroupHelper.ts","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/confirmation/add-to-classroom/BulkUserActionsAddToClassroomConfirmation.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/user-manager/views/wizard/confirmation/add-to-classroom/BulkUserActionsAddToClassroomConfirmationView.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"srrS3\"};","import React from 'react';\n\nimport styles from './white-avatar.scss';\n\ninterface WhiteAvatarProps {\n initials: string;\n imageUrl?: string;\n}\n\nexport function WhiteAvatar(props: WhiteAvatarProps): React.ReactElement {\n const { imageUrl, initials } = props;\n\n const style: React.CSSProperties = {};\n\n if (imageUrl)\n style.backgroundImage = `url('${imageUrl}')`;\n\n return (\n <div className={styles.avatar} style={style}>\n {imageUrl ? <>&nbsp;</> : initials}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"svgContainer\":\"laVU4\",\"selection\":\"vEOCt\",\"expander\":\"d1NHd\",\"iconContainer\":\"rFH4W\",\"icon\":\"BarYz\",\"bubble\":\"HF0E8\",\"spinnerContainer\":\"iKeXW\",\"remove\":\"pyzCM\",\"removeBubble\":\"mgt6Y\"};","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WhiteAvatar } from 'libs/shared/apps/share/components/white-avatar/WhiteAvatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './input-selection.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.inputSelection');\n\nfunction mapEntityTypeToForegroundColor(entity: BaseObject): string {\n switch (entity.typeId) {\n case MasterType.Classroom: {\n return 'text-teal-hover';\n }\n\n case MasterType.ClassroomGroup: {\n return `text-${mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour)}-hover`;\n }\n }\n}\n\nfunction getColouredIconClass(selection: Classroom | ClassroomGroup): string {\n let iconClass = `${styles.svgContainer} ${styles.icon}`;\n\n if (selection.typeId === MasterType.Classroom)\n iconClass += ' text-teal';\n else\n iconClass += ` text-${mapColourToBsVariant((selection as ClassroomGroup).metadata?.colour)}`;\n\n return iconClass;\n}\n\ninterface InputSelectionExpanderProps {\n canExpand: boolean;\n hasExpanded: boolean;\n selection: BaseObject;\n onClickExpand?: () => void;\n}\n\nexport function InputSelectionExpander(props: InputSelectionExpanderProps): JSX.Element {\n const colourClass = mapEntityTypeToForegroundColor(props.selection);\n\n const isClassroom = props.selection.typeId === MasterType.Classroom;\n\n if (!props.canExpand) {\n if (!props.selection.typeId || props.selection.typeId === MasterType.User) {\n const user = props.selection as User;\n\n return (\n <div className={styles.svgContainer}>\n <WhiteAvatar\n imageUrl={user.avatar?.url}\n initials={UserHelper.getInitials(props.selection.name, (props.selection as User).surname)}\n />\n </div>\n );\n }\n\n return (\n <Tooltip title={getPhrase(isClassroom ? 'emptyClassroom' : 'emptyGroup')}>\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svgName={isClassroom ? cvSvgLibrary.Classrooms : cvSvgLibrary.Group}\n />\n </div>\n </Tooltip>\n );\n }\n\n if (!props.hasExpanded) {\n return (\n <>\n {/* Visible on hover */}\n <DivButton\n className={`align-items-center cursor-pointer text-white border border-white rounded-circle ${styles.expander} ${colourClass}`}\n onClick={props.onClickExpand}\n >\n <SvgContainer svgName={cvSvgLibrary.Plus} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n\n {/* Visible when not hovering */}\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svgName={isClassroom ? cvSvgLibrary.Classrooms : cvSvgLibrary.Group}\n />\n </div>\n </>\n );\n }\n\n return (\n <div className={`d-flex align-items-center text-white ${styles.spinnerContainer} ${styles.svgContainer}`}>\n <Spinner as='div' size='sm' animation='border' role='status' />\n </div>\n );\n}","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { InputSelectionExpander } from './InputSelectionExpander';\n\nimport styles from './input-selection.scss';\n\n/**\n * TODO: This entire file needs to be refactored to work\n * better with non standard entities. ATM it's also being used\n * in the invite a colleague UI for trials. - Sha\n */\ninterface OtherEntity {\n id: never;\n typeId: never;\n name: string;\n}\n\ntype Entity = Classroom | ClassroomGroup | User | OtherEntity;\n\nfunction mapEntityTypeToBsVariant(entity: Entity): ButtonProps['variant'] {\n if (!entity.typeId)\n return 'dark-blue';\n\n switch (entity.typeId) {\n case MasterType.User: {\n // TODO: Delete this once https://clickview.atlassian.net/browse/INBOX-2151 is addressed\n if (typeof(entity as User).userType === 'number')\n return ((entity as User).userType as any) === 2 ? 'dark-blue' : 'indigo';\n\n if ((entity as User).userType === UserGroup.Learner)\n return 'dark-blue';\n\n return 'indigo';\n }\n\n case MasterType.Classroom: {\n return 'teal';\n }\n\n case MasterType.ClassroomGroup: {\n return mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour);\n }\n }\n}\n\ninterface InputSelectionProps {\n selection: Entity;\n onClickRemove?: (selection: Entity) => void;\n onClickExpand?: (id: string) => void;\n hasStudentExperience?: boolean;\n}\n\nexport function InputSelection(props: InputSelectionProps): JSX.Element {\n const isClassroom = MasterTypeHelper.isType(props.selection, MasterType.Classroom);\n const isClassroomGroup = MasterTypeHelper.isType(props.selection, MasterType.ClassroomGroup);\n const isExpandable = props.onClickExpand && (isClassroom || isClassroomGroup);\n\n /**\n * We only know that there are no members if props.selections.users.count exists\n * and is 0 as it is set to 0 in <MainShare /> after fetching the users.\n */\n const hasMembers = !!(\n (props.selection as ClassroomGroup).users ||\n (props.selection as Classroom).enrolments\n )?.count;\n const hasFetchedMembers = !!(props.selection as Classroom | ClassroomGroup).users?.data?.length;\n\n const [ hasExpanded, setHasExpanded ] = React.useState(false);\n const [ canExpand, setCanExpand ] = React.useState(isExpandable && hasMembers);\n\n React.useEffect(() => {\n setCanExpand(isExpandable && hasMembers);\n }, [ isExpandable, hasMembers ]);\n\n function onClickExpand(): void {\n setHasExpanded(true);\n props.onClickExpand(props.selection.id);\n }\n\n if (hasFetchedMembers) {\n const selection: Classroom | ClassroomGroup = props.selection as Classroom | ClassroomGroup;\n\n const colourVariant = mapEntityTypeToBsVariant(props.selection);\n\n return (\n <div className={`d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-${colourVariant} text-${colourVariant} ${styles.bubble}`}>\n {selection.users.data.map(user => (\n <InputToken\n key={`${user.id}:${props.selection.id}`}\n selection={user}\n colourVariant={colourVariant}\n hasStudentExperience={props.hasStudentExperience}\n />\n ))}\n\n <DivButton\n className={`cursor-pointer position-absolute text-${colourVariant} ${styles.removeBubble}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svgName={cvSvgLibrary.Close} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n </div>\n );\n }\n\n return (\n <InputToken\n selection={props.selection}\n canExpand={canExpand}\n hasExpanded={hasExpanded}\n onClickExpand={onClickExpand}\n onClickRemove={props.onClickRemove}\n colourVariant={mapEntityTypeToBsVariant(props.selection)}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n}\n\ninterface InputTokenProps<T extends HashObject> {\n selection: T | Entity;\n colourVariant: string;\n canExpand?: boolean;\n hasExpanded?: boolean;\n onClickExpand?: () => void;\n onClickRemove?: (selection: Entity) => void;\n hasStudentExperience?: boolean;\n hideExpander?: boolean;\n}\n\nexport function InputToken<T extends HashObject = Entity>(props: InputTokenProps<T>): JSX.Element {\n const colourVariant = props.colourVariant || mapEntityTypeToBsVariant(props.selection);\n\n let selectionName = props.selection.name;\n\n if (props.selection.typeId === MasterType.User) {\n selectionName = props.hasStudentExperience\n ? UserHelper.getDisplayName(props.selection as User)\n : UserHelper.getFullName(props.selection as User);\n }\n\n return (\n <div className={`${styles.selection} bg-${colourVariant} rounded-pill text-${colourVariant} d-flex align-items-center me-1 mt-1 overflow-hidden`}>\n {!props.hideExpander && (\n <InputSelectionExpander\n canExpand={props.canExpand}\n hasExpanded={props.hasExpanded}\n onClickExpand={props.onClickExpand}\n selection={props.selection}\n />\n )}\n\n <span className='mx-1 text-white text-truncate'>{selectionName}</span>\n\n {FunctionHelper.isFunction(props.onClickRemove) && (\n <DivButton\n className={`d-flex align-items-center cursor-pointer align-self-stretch text-white ${styles.remove}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svgName={cvSvgLibrary.Close} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n )}\n </div>\n );\n}","import { ButtonProps } from 'react-bootstrap';\n\nimport { ClassroomGroupColour } from 'libs/shared/interfaces';\n\nexport function mapColourToBsVariant(groupColour: ClassroomGroupColour): ButtonProps['variant'] {\n switch (groupColour) {\n case ClassroomGroupColour.Pink:\n return 'pink';\n case ClassroomGroupColour.Orange:\n return 'orange';\n case ClassroomGroupColour.Green:\n return 'green';\n case ClassroomGroupColour.Blue:\n return 'blue';\n case ClassroomGroupColour.Purple:\n return 'purple';\n case ClassroomGroupColour.Indigo:\n return 'indigo';\n default:\n return 'pink';\n }\n}\n","import React from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { UserGroup } from 'libs/analytics/interfaces';\n\nimport { InputSelection } from 'libs/shared/apps/share/components/tokenized-typeahead/InputSelection';\nimport { BulkUserActionsAddToClassroomViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { WizardConfirmationHeader } from 'libs/shared/components/wizard/confirmation-header/WizardConfirmationHeader';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { User } from 'libs/shared/interfaces';\n\nimport { BulkUserActionsConfirmationUserList } from '../user-list/BulkUserActionsConfirmationUserList';\n\nconst namespace = 'userManager.bulkUserActionsAddToClassroomConfirmation';\n\ninterface BulkUserActionsAddToClassroomConfirmationProps {\n users: User[];\n imageCdnUrl: string;\n userType: UserGroup;\n hasMoreUsers: boolean;\n isFetchingUsers: boolean;\n userCount: number;\n fetchNextUserPage: () => void;\n onClickConfirm: () => void;\n}\n\nexport function BulkUserActionsAddToClassroomConfirmation(\n props: BulkUserActionsAddToClassroomConfirmationProps\n): JSX.Element {\n const [viewModel] = useViewModel<BulkUserActionsAddToClassroomViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n BulkUserActionsHelper.useSetWizardConfirmationCallback(props.onClickConfirm);\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <WizardConfirmationHeader>\n <p className='fw-semibold'>\n <Text\n namespace={namespace}\n phrase='heading'\n options={{\n smartCount: props.userCount\n }}\n />\n </p>\n\n {/*\n * The viewModel gets cleared out when exiting the wizard, however this component requires a selection.\n * So we don't render our input selection if classroom is not set\n */}\n {viewModel.classroom &&\n <div className={`rounded rounded-3 pb-2`}>\n <div className='d-flex'>\n <InputSelection selection={viewModel.classroom} />\n </div>\n </div>\n }\n </WizardConfirmationHeader>\n\n <BulkUserActionsConfirmationUserList\n users={props.users}\n imageCdnUrl={props.imageCdnUrl}\n hasMore={props.hasMoreUsers}\n isFetching={props.isFetchingUsers}\n fetchNext={props.fetchNextUserPage}\n userType={props.userType}\n userCount={props.userCount}\n />\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkUserActionsAddToClassroomConfirmation } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/confirmation/add-to-classroom/BulkUserActionsAddToClassroomConfirmation';\nimport { BulkUserActionsWizardLayout } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserWizardParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserWizardParams';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { BatchJob, Config, CurrentUser } from 'libs/shared/interfaces';\n\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { useBulkActionsUsersWrapper } from 'apps/user-manager/hooks/useBulkActionsUsersWrapper';\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nexport function BulkUserActionsAddToClassroomConfirmationView(props: UserWizardParams): JSX.Element {\n const {\n users,\n count,\n isFetching,\n hasMore,\n fetchNext\n } = useBulkActionsUsersWrapper(props.userType);\n\n const [viewModel] = useViewModel<BulkUserActionsViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const dispatch = useDispatch();\n\n const appLinks = getUserManagerAppLinks(props.userType);\n\n const onCreateJobError = BulkUserActionsHelper.useCreateJobErrorAlert();\n function startBulkAction(): void {\n if (!viewModel)\n return;\n\n const data = BulkUserActionsHelper.getCreateJobRequestData(\n viewModel,\n currentUser.data.customerId,\n props.userType\n );\n\n Flight.fetch(dispatch, JobRequests.createJob(data, onCreateJob, onCreateJobError));\n }\n\n function onCreateJob(job: BatchJob): void {\n Core.AppLinkHelper.trigger({\n ...appLinks.bulkActionsStatus.polling,\n params: {\n userType: props.userType,\n jobId: job.id\n }\n });\n }\n\n return (\n <BulkUserActionsWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n users={users}\n currentStep='confirmation'\n userCount={count}\n loaded\n >\n <BulkUserActionsAddToClassroomConfirmation\n users={users}\n imageCdnUrl={config.data?.imageCdnUrl}\n hasMoreUsers={hasMore}\n isFetchingUsers={isFetching}\n fetchNextUserPage={fetchNext}\n userType={props.userType}\n onClickConfirm={startBulkAction}\n userCount={count}\n />\n </BulkUserActionsWizardLayout>\n );\n}"],"names":["WhiteAvatar","props","imageUrl","initials","style","backgroundImage","className","getPhrase","LanguageService","getColouredIconClass","selection","iconClass","typeId","MasterType","metadata","colour","InputSelectionExpander","colourClass","entity","mapEntityTypeToForegroundColor","isClassroom","canExpand","user","avatar","url","UserHelper","name","surname","Tooltip","title","SvgContainer","svgName","hasExpanded","Spinner","as","size","animation","role","DivButton","onClick","onClickExpand","mapEntityTypeToBsVariant","userType","UserGroup","InputSelection","MasterTypeHelper","isClassroomGroup","isExpandable","hasMembers","users","enrolments","count","hasFetchedMembers","data","length","setHasExpanded","setCanExpand","colourVariant","map","InputToken","key","id","hasStudentExperience","onClickRemove","selectionName","hideExpander","FunctionHelper","mapColourToBsVariant","groupColour","namespace","BulkUserActionsAddToClassroomConfirmation","viewModel","SharedViewModelKeys","BulkUserActionsHelper","onClickConfirm","value","WizardConfirmationHeader","Text","phrase","options","smartCount","userCount","classroom","BulkUserActionsConfirmationUserList","imageCdnUrl","hasMore","hasMoreUsers","isFetching","isFetchingUsers","fetchNext","fetchNextUserPage","BulkUserActionsAddToClassroomConfirmationView","useBulkActionsUsersWrapper","currentUser","UserRequests","config","ConfigRequests","dispatch","appLinks","onCreateJobError","onCreateJob","job","bulkActionsStatus","polling","params","jobId","BulkUserActionsWizardLayout","currentStep","loaded","customerId","JobRequests"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2355],{40955:(e,t,a)=>{a.d(t,{P:()=>i});var n=a(32735);function i(e){return e.audience?n.createElement("div",{className:"audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ".concat("border-"+e.border," ").concat(e.className?e.className:"")},e.audience.name):n.createElement(n.Fragment,null)}},17464:(e,t,a)=>{a.d(t,{c:()=>r});var n=a(32735),i=a(7121);function r(e){var t="d-flex align-items-center badge-list ".concat(i.Z.minHeight);return e.className&&(t+=" ".concat(e.className)),n.createElement("div",{className:t},e.children)}},89682:(e,t,a)=>{a.d(t,{I:()=>d,h:()=>u});var n=a(32735),i=a(91967),r=a(83914),o=a(35223),c=a(11607);const l={unchecked:"bup9I",outline:"ealw_",checked:"A1Ov0",checkMark:"c14lI"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var u;function d(e){var t,a,d=(t=n.useState(e.status===u.Complete),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(t,a)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?s(e,t):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),m=d[0],v=d[1];n.useEffect((function(){v(e.status===u.Complete)}),[e.status]);var p="cursor-pointer rounded-circle ".concat(m?l.checked:l.unchecked);return e.className&&(p+=" ".concat(e.className)),"outline"===e.style&&(p+=" ".concat(l.outline)),e.status&&e.status!==u.None&&i.q.isFunction(e.setStatus)?n.createElement(c.L,{className:p,onClick:function(){var t=!m;v(t);var a=t?u.Complete:u.Incomplete;e.setStatus(a).catch((function(){v(!t)}))},disabled:e.disabled},n.createElement(r.x,{svgName:o.vn.Check,className:"svg-container ".concat(l.checkMark)})):n.createElement(n.Fragment,null)}!function(e){e.None="None",e.Complete="Complete",e.Incomplete="Incomplete"}(u||(u={})),d.defaultProps={style:"filled"}},24900:(e,t,a)=>{a.d(t,{z:()=>l,O:()=>c});var n=a(32735),i=a(83914),r=a(35223);const o={mask:"qpc7L",small:"L8Oxs",video:"b8kJW",playlist:"eo2p2",maskContainer:"lpwag"};var c;function l(e){var t=e.type,a=e.size,l=function(e){return e===c.Video?o.video:e===c.Playlist?o.playlist:""}(t),s=function(e){return e===c.Video?r.vn.PlayCircle:""}(t);return n.createElement("div",{className:"".concat(o.maskContainer," ").concat("sm"===a?o.small:"")},n.createElement("div",{className:o.mask}),n.createElement(i.x,{svgName:s,className:l}))}!function(e){e[e.Video=0]="Video",e[e.Playlist=1]="Playlist",e[e.Series=2]="Series"}(c||(c={})),l.defaults={size:"md"}},22843:(e,t,a)=>{a.d(t,{h:()=>u});var n=a(32735),i=a(65858),r=a(36848),o=a(38647),c=a(11882),l=a(31908);const s={container:"r70GR",titleContainer:"rULXI",seriesTitleBox:"h9k1p",badgeContainer:"QaDDX",audienceBadge:"hvsne"};function u(e){var t=e.video,a=e.appLink,u=e.subTextAppLink,d=l.M.getCanBeConsumed(t).canNavigate;return n.createElement("div",{className:"mt-2 ".concat(s.container)},n.createElement("div",{className:"d-flex flex-column ".concat(s.titleContainer)},l.M.isVideo(t)&&n.createElement(c.$,{type:e.subTextType,className:"text-truncate ".concat(s.seriesTitleBox),video:t,appLink:u,analyticsOptions:{location:i.LZ.VideoThumbnail}}),n.createElement(r.F,{className:"h6 text-reset clamp-2 align-middle",appLink:d?a:null},t.name,n.createElement(o.m,{video:e.video,yearGroups:e.yearGroups,size:"sm"}))))}},72355:(e,t,a)=>{a.d(t,{u:()=>ue});var n=a(32735),i=a(1048),r=a(65858),o=a(18559),c=a(17464),l=a(23481),s=a(91967),u=a(11607),d=a(83914),m=a(69883),v=a(1643),p=a(35223),g=a(31908);const y={favourited:"t0svX",favouriteButton:"CFRo3",heart:"ZMMQu",heartOutline:"truFo"};function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var E=l.T.encloseNamespace("shared.favouriteButton");function h(e){var t,a,i=(0,m.Z)(),r=v.h.isFavouritedByCurrentUser(e.video),o=(t=n.useState(r),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(t,a)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?f(e,t):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=o[0],l=o[1];n.useEffect((function(){l(r)}),[r]);var h="".concat("d-flex align-items-center justify-content-center"," cursor-pointer ").concat(y.favouriteButton," ").concat(c?y.favourited:"");return e.className&&(h+=" ".concat(e.className)),s.q.isFunction(e.setFavourite)&&s.q.isFunction(e.canFavourite)&&e.canFavourite(e.video)?n.createElement(u.L,{className:h,onClick:function(){var t=!c;l(t),e.setFavourite(e.video,t,null,(function(){i.error(E(g.M.isClip(e.video)?t?"favouriteClipError":"unfavouriteClipError":g.M.isInteractive(e.video)?t?"favouriteInteractiveError":"unfavouriteInteractiveError":t?"favouriteVideoError":"unfavouriteVideoError")),l(!t)}),e.analyticsData,e.analyticsOptions)}},n.createElement(d.x,{svgName:p.vn.Heart,className:"svg-container ".concat(y.heart)}),n.createElement(d.x,{svgName:p.vn.HeartOutline,className:"svg-container ".concat(y.heartOutline)})):n.createElement(n.Fragment,null)}var b=a(75163),C=a(5465);function k(e){var t=g.M.getVideoProgress(e.video),a=t&&e.video.duration&&t/e.video.duration*1e5;return a?n.createElement("div",{className:"bg-primary h-100",style:{width:"".concat(a,"%")}}):n.createElement(n.Fragment,null)}const N={bottomBar:"YnXtZ"};function O(e){return g.M.isVideo(e.video)?n.createElement("div",{className:N.bottomBar},n.createElement(k,{video:e.video})):n.createElement(n.Fragment,null)}const x={padlock:"w4cg8",sm:"JpIYd"};function w(e){var t="sm"===e.size?d.S.Small:d.S.Standard;return n.createElement("div",{className:"".concat(x.padlock," ").concat("sm"===e.size?x.sm:""," bg-white cursor-default d-flex align-items-center justify-content-center")},n.createElement(d.x,{svgName:p.vn.Lock,size:t}))}var j=a(76177);const F={logo:"OA9ft",sm:"fyo2J"};function I(e){var t,a,i,r;if(!g.M.isVideo(e.video)||!e.companyLogoFallbackUrl)return n.createElement(n.Fragment,null);var o=null===(a=null===(t=e.video.productionCompanies)||void 0===t?void 0:t.data)||void 0===a?void 0:a[0],c=null!==(r=null===(i=null==o?void 0:o.logo)||void 0===i?void 0:i.url)&&void 0!==r?r:e.companyLogoFallbackUrl;return c?n.createElement("div",null,n.createElement(j.u,{title:null==o?void 0:o.name,spanHack:!0},n.createElement("div",{className:"".concat(F.logo," ").concat("sm"===e.size?F.sm:""),style:{backgroundImage:"url(".concat(c,")")}}))):n.createElement(n.Fragment,null)}I.defaultProps={size:"md"};var T=a(11882),S=a(4594),M=a(61150);function L(e){return g.M.isClip(e.video)?n.createElement(M.y,{typeId:S.E.Clip,size:e.size,inContainer:!0}):g.M.isInteractive(e.video)?n.createElement(M.y,{typeId:S.E.Interactive,status:e.video.status,size:e.size,inContainer:!0}):n.createElement(n.Fragment,null)}L.default={size:"md"};var z=a(10439),A=a(54610),D=a(49439);const P={overlayContainer:"qu3A3",topLeftContainer:"gjhMe",topRightContainer:"XAfZW",overlay:"NTrtm",downScale:"puKcM",title:"_6FukN",gradient:"rXzR8",playIcon:"dndOA",videoProgress:"yhWf4",badgeContainer:"AtgmC",clipProgress:"E2egN",interactiveProgress:"WycwR"};function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function B(e){var t="mb-1";return e&&(t+=P.downScale),t}function V(e){var t,a,l,s=e.video,u=e.appLink,m=e.imageOptions,y=e.setFavourite,f=e.canFavourite,E=e.preload,k=e.hovering,N=e.hoverToPlay,x=e.companyLogoFallbackUrl,F=g.M.getCanBeConsumed(e.video),S=F.canNavigate,M=F.canConsume,V=i.t.isObject(null==u?void 0:u.params)?null==u?void 0:u.params:{},H=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(s)}),_=v.h.showFavouriteButton(e.video,k),U=g.M.isVideo(s),Z=g.M.getRating(e.video),G=(a=(0,D.L)({delay:100}),l=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(a,l)||function(e,t){if(e){if("string"==typeof e)return R(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?R(e,t):void 0}}(a,l)||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.")}()),W=G[0],X=G[1]&&M&&N;return n.createElement(j.u,{title:g.M.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:""},n.createElement("div",{className:"position-relative rounded-3 overflow-hidden",ref:W},_&&n.createElement("div",{className:P.topRightContainer},n.createElement(h,{setFavourite:y,canFavourite:f,video:s,analyticsData:e.analyticsData,analyticsOptions:H})),!S&&n.createElement("div",{className:P.topRightContainer},n.createElement(w,null)),n.createElement("div",{className:"".concat(P.topLeftContainer," d-flex flex-no-wrap")},n.createElement(L,{video:s}),n.createElement(I,{video:s,companyLogoFallbackUrl:x})),n.createElement(b.Z,{data:g.M.getThumbnail(s),appLink:S?u:null,imageType:A.__.Thumbnails,imageOptions:m,preload:E,className:P.gradient,alt:("series"in s&&(null===(t=s.series)||void 0===t?void 0:t.name)?"".concat(s.series.name,": "):"")+s.name,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:s.id,name:s.name}),analyticsOptions:Object.assign(Object.assign({},H),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail})},!(!k||!S)&&n.createElement(d.x,{className:P.playIcon,svgName:p.vn.PlayCircle}),n.createElement(C.oy,{type:C.mS.Video}),n.createElement("div",{className:P.overlayContainer},n.createElement("div",{className:P.overlay},n.createElement("div",{className:"".concat(B(k)," ").concat(P.title)},U&&n.createElement(T.$,{type:e.subTextType,className:"text-shadow clamp-1",video:s,appLink:null,analyticsOptions:null}),n.createElement("span",{className:"h6 text-reset text-shadow clamp-1"},g.M.getTitle(s))),n.createElement(O,{video:s}),k&&n.createElement(c.c,{className:"mt-1"},g.M.isVideo(s)&&n.createElement(n.Fragment,null,n.createElement(o.C,{type:o.g.Rating,data:Z}),s.hasSubtitle&&n.createElement("span",{className:"badge p-0"},n.createElement(d.x,{svgName:p.vn.CloseCaptionBadge})),n.createElement(o.C,{type:o.g.Interactive,data:s.hasInteractives}),n.createElement(o.C,{type:o.g.DurationExact,data:g.M.getDuration(e.video)})))))),X&&n.createElement(z.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:V.context,contextId:V.contextId,moviesAndTv:V.mtv})))}var H=a(64446),_=a(40955);const U={badgeContainer:"fy9Un",sm:"Rb0TL"};function Z(e){var t=g.M.getRating(e.video),a=!!e.audience&&"sm"!==e.size,i=!a&&!e.hideRating&&!!t&&"sm"!==e.size;return!e.hideDuration||a||i?n.createElement(c.c,{className:"".concat(U.badgeContainer," ").concat("sm"===e.size?U.sm:"")},a&&n.createElement(_.P,{audience:e.audience,className:"bg-white text-dark",border:"dark"}),i&&n.createElement(o.C,{type:o.g.Rating,data:t}),!e.hideDuration&&n.createElement(o.C,{type:e.newDurationStyle?o.g.DurationApproximate:o.g.DurationExact,data:e.duration||g.M.getDuration(e.video)})):n.createElement(n.Fragment,null)}Z.defaultProps={newDurationStyle:!0,size:"md"};var G=a(22843),W=a(66190),X=a(77590),Q=a(59598);const q={preview:"whbhf",topLeftContainer:"wHY80",details:"vMaXP",isHovering:"tR1jA",videoGuidanceTags:"KJrT1",dropdown:"oZXV7",show:"EiQ04",topRightContainer:"FAuzc"};var K=function(e){var t,a=e.video,o=e.appLink,c=e.imageOptions,l=e.preload,s=e.setFavourite,u=e.canFavourite,d=e.isHovering,m=e.hoverToPlay,p=e.companyLogoFallbackUrl,y=i.t.isObject(null==o?void 0:o.params)?null==o?void 0:o.params:{},f=g.M.getCanBeConsumed(a),E=f.canNavigate,k=f.canConsume;function N(e){return Object.assign(Object.assign({},o),{params:Object.assign(Object.assign({},y),{scrollTo:e})})}n.useEffect((function(){return function(){var t;null===(t=e.cleanPortalNode)||void 0===t||t.call(e)}}),[]);var x="position-relative bg-white";e.extraClasses&&(x+=" ".concat(e.extraClasses)),d&&(x+=" rounded-3 shadow-lg");var F=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(a)}),T=e.isHovering&&k&&m,S=v.h.showFavouriteButton(e.video,d);return n.createElement("div",{className:x},S&&n.createElement("div",{className:q.topRightContainer},n.createElement(h,{setFavourite:s,canFavourite:u,video:a,analyticsData:e.analyticsData,analyticsOptions:F})),!E&&n.createElement("div",{className:q.topRightContainer},n.createElement(j.u,{title:g.M.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:""},n.createElement(w,null))),n.createElement("div",{className:"position-relative"},n.createElement(b.Z,{onClick:function(){var t;return null===(t=e.cleanPortalNode)||void 0===t?void 0:t.call(e)},data:g.M.getThumbnail(a),appLink:E?o:null,imageType:A.__.Thumbnails,imageOptions:c,preload:l,className:"overflow-hidden ".concat(d?q.preview:"rounded-3 ".concat(q.original)),alt:("series"in a&&(null===(t=a.series)||void 0===t?void 0:t.name)?"".concat(a.series.name,": "):"")+a.name,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:a.id,name:a.name}),analyticsOptions:Object.assign(Object.assign({},F),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail})},n.createElement(C.oy,{type:C.mS.Video}),n.createElement("div",{className:"p-absolute w-100 h-100 text-white"},n.createElement("div",{className:"".concat(q.topLeftContainer," d-flex flex-no-wrap")},n.createElement(L,{video:a}),n.createElement(I,{video:a,companyLogoFallbackUrl:p})),n.createElement(Z,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration}),n.createElement(O,{video:a}))),T&&n.createElement(z.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:y.context,contextId:y.contextId,moviesAndTv:y.mtv,location:"popout-video"})),!d&&!e.hideTitle&&n.createElement(G.h,Object.assign({},e)),n.createElement("div",{className:"".concat(q.details," ").concat(d?"".concat(q.isHovering," box-shadow"):"")},d&&n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(d?q.videoGuidanceTags:"")},n.createElement(G.h,Object.assign({},e)),e.showVideoGuidance&&d&&n.createElement("div",{className:"d-flex justify-content-start align-items-center pt-2"},n.createElement(X.x,{video:e.video,appLink:N(Q.K.Resources),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),n.createElement(W.Y,{video:e.video,appLink:N(Q.K.Interactives),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}))))))};function $(e){return n.createElement(n.Fragment,null,n.createElement(H.K,{hoverableComponent:K,componentProps:e,fixedHoverWidth:400,minHoverWidth:400,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:e.video.id,name:e.video.name}),analyticsOptions:Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(e.video)})}))}var J=a(36848),Y=a(24900),ee=a(89682);const te={container:"efxnE",cvIcon:"OJ_ZQ",action:"vWvGn"};function ae(e){return g.M.getCanBeConsumed(e.video).canNavigate?function(e){var t;return!(null===(t=g.M.getCanBeConsumed(e.video))||void 0===t?void 0:t.canConsume)||!(!s.q.isFunction(e.setFavourite)||!s.q.isFunction(e.canFavourite))||!!s.q.isFunction(e.setCheckMarkStatus)}(e)?n.createElement("div",{className:"".concat(te.container," d-flex align-items-center")},n.createElement(h,{setFavourite:e.setFavourite,canFavourite:e.canFavourite,video:e.video,className:te.action,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),n.createElement(ee.I,{status:e.checkMarkStatus,setStatus:e.setCheckMarkStatus,className:te.action})):n.createElement(n.Fragment,null):n.createElement("div",{className:te.container},n.createElement(w,{size:e.size}))}var ne=a(68626);const ie={titleOverlay:"krg9f",clip:"MPRU6",large:"g5_ww",interactive:"Zzo3e",titleBelow:"tZjPt",overlayContainer:"EElm1",topLeftContainer:"hrw3I",gradient:"LS_EH"};function re(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return oe(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?oe(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 oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var ce="shared.staticVideoThumbnail";function le(e){var t,a=e.video,i=e.subTextAppLink,o=e.textPosition,c=e.appLink,s=o===ne.z.Overlay,u=g.M.getCanBeConsumed(e.video).canNavigate,d="";return s?(d=ie.titleOverlay,u&&(g.M.isClip(a)&&(d+=" "+ie.clip),g.M.isInteractive(a)&&(d+=" "+ie.interactive))):d=ie.titleBelow,n.createElement("div",{className:d},g.M.isVideo(a)&&n.createElement(T.$,{type:e.subTextType,className:s?"text-shadow clamp-1":"clamp-2",video:a,appLink:s?null:i,analyticsOptions:{location:r.LZ.VideoThumbnail}}),s||!u?n.createElement("span",{className:"h6 text-reset text-shadow clamp-1"},null!==(t=a.name)&&void 0!==t?t:l.T.getPhrase(ce,"videoUnavailable")):n.createElement(J.F,{className:"h6 text-reset clamp-2",appLink:c},a.name))}function se(e){var t,a,o=e.video,c=e.appLink,l=e.textPosition,s=e.imageOptions,u=e.setFavourite,d=e.preload,m=e.hoverToPlay,p=i.t.isObject(null==c?void 0:c.params)?null==c?void 0:c.params:{},y=re((0,D.X)(),2),f=y[0],E=y[1],h=re((0,D.L)({delay:100}),2),k=h[0],N=h[1],x=g.M.getCanBeConsumed(o),w=x.canNavigate,F=x.canConsume,T=N&&F&&m,S=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(o)}),M=!!c&&!e.hideMask&&w,P=g.M.getPrivacyReasoning(e.video,e.showSignIn);return n.createElement(j.u,{title:P,spanHack:!0,spanHackClassName:""},n.createElement("div",{className:(a="position-relative",a+=c&&w?" cursor-pointer":"",e.extraClasses&&(a+=" ".concat(e.extraClasses)),l===ne.z.Overlay&&(a+=" rounded overflow-hidden"),a),ref:function(e){f.current=e,k.current=e}},n.createElement(ae,{video:o,checkMarkStatus:e.checkMarkStatus,setCheckMarkStatus:e.setCheckMarkStatus,setFavourite:u,canFavourite:function(){var t;return(null===(t=e.canFavourite)||void 0===t?void 0:t.call(e,e.video))&&v.h.showFavouriteButton(o,E)},analyticsData:e.analyticsData,analyticsOptions:S,size:e.size}),n.createElement(b.Z,{data:g.M.getThumbnail(o),appLink:w?c:null,imageType:A.__.Thumbnails,imageOptions:s,preload:d,className:function(){var t="overflow-hidden ".concat("sm"===e.size?"rounded":"rounded-3");return e.imageClassName&&(t+=" ".concat(e.imageClassName)),l===ne.z.Overlay&&(t+=" ".concat(ie.gradient)),t}(),alt:("series"in o&&(null===(t=o.series)||void 0===t?void 0:t.name)?"".concat(o.series.name,": "):"")+o.name,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:o.id,name:o.name}),analyticsOptions:Object.assign(Object.assign({},S),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail})},M&&n.createElement(Y.z,{type:Y.O.Video,size:e.size}),n.createElement(C.oy,{type:C.mS.Video}),n.createElement("div",{className:ie.overlayContainer},l===ne.z.Overlay&&n.createElement(le,Object.assign({},e)),n.createElement("div",{className:"".concat(ie.topLeftContainer," d-flex flex-no-wrap")},n.createElement(L,{video:o,size:e.size}),n.createElement(I,{video:o,companyLogoFallbackUrl:e.companyLogoFallbackUrl,size:e.size})),n.createElement(O,{video:o}),n.createElement(Z,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration,newDurationStyle:e.newDurationStyle,size:e.size}))),T&&n.createElement(z.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:p.context,contextId:p.contextId,moviesAndTv:p.mtv}),l===ne.z.Below&&n.createElement(le,Object.assign({},e))))}function ue(e){switch(e.type){case"static":return n.createElement(se,Object.assign({},e));case"cosmetic":return n.createElement(se,Object.assign({},e,{hoverToPlay:!1}));case"expandable":return n.createElement(V,Object.assign({},e));case"popout":return n.createElement($,Object.assign({},e));default:return}}ue.defaultProps={hideRating:!0,size:"md",hoverToPlay:!0}},61150:(e,t,a)=>{a.d(t,{y:()=>v});var n=a(32735),i=a(23481),r=a(83914),o=a(5960),c=a(4594),l=a(35223);const s={topLeftContainer:"iwBld",draft:"QBpxh",badge:"KcvGx",svg:"gW733",text:"QiH5Q",sm:"tn2BH"};var u=i.T.encloseNamespace("shared.typeBadge");function d(e){switch(e){case c.E.Clip:return l.vn.Clip;case c.E.Interactive:return l.vn.Interactive;case c.E.Resource:return l.vn.Resources;default:return""}}function m(e,t){switch(e){case c.E.Clip:return"bg-dark-blue";case c.E.Interactive:return t===o.X.Draft?s.draft:"bg-green";case c.E.Resource:return"bg-indigo";default:return""}}function v(e){var t="".concat(s.badge," rounded-pill text-white ps-0 ").concat("sm"===e.size?s.sm:"");return n.createElement("div",{className:e.inContainer?"":s.topLeftContainer},n.createElement("div",{className:"".concat(t," ").concat(m(e.typeId,e.status))},n.createElement(r.x,{className:"svg-container d-block ".concat(s.svg),size:"sm"===e.size?r.S.Small:r.S.Standard,svgName:d(e.typeId)}),n.createElement("span",{className:s.text},function(e){switch(e){case c.E.Clip:return u("clip");case c.E.Interactive:return u("interactive");case c.E.Resource:return u("resource");default:return""}}(e.typeId))))}v.default={size:"md"}},66190:(e,t,a)=>{a.d(t,{Y:()=>u});var n=a(32735),i=a(23481),r=a(65858),o=a(65720),c=a(35223),l=a(31908),s="shared.interactivesTag";function u(e){var t,a;if(!e.video||l.M.isInteractive(e.video))return n.createElement(n.Fragment,null);var u=(null===(a=null===(t=e.video.interactives)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length)||0;return u?n.createElement(o.m,{svgName:c.vn.Interactive,iconVariant:"green",text:i.T.getPhrase(s,"interactives",{smartCount:u}),appLink:e.appLink,appLinkAnalyticsData:Object.assign({videoGuidanceType:"interactive",videoGuidanceTotalItems:u},e.analyticsData),appLinkAnalyticsOptions:Object.assign({actionType:r.Vw.Click,entity:l.M.getAnalyticsEntity(e.video)},e.analyticsOptions)}):n.createElement(n.Fragment,null)}},77590:(e,t,a)=>{a.d(t,{x:()=>u});var n=a(32735),i=a(23481),r=a(65858),o=a(65720),c=a(35223),l=a(31908),s="shared.resourcesTag";function u(e){var t,a,u,d;if(!e.video||l.M.isInteractive(e.video))return n.createElement(n.Fragment,null);var m=((null===(a=null===(t=e.video.resources)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length)||0)+((null===(d=null===(u=e.video.links)||void 0===u?void 0:u.data)||void 0===d?void 0:d.length)||0);return m?n.createElement(o.m,{svgName:c.vn.Resources,iconVariant:"indigo",text:i.T.getPhrase(s,"resources",{smartCount:m}),appLink:e.appLink,appLinkAnalyticsData:Object.assign({videoGuidanceType:"resource",videoGuidanceTotalItems:m},e.analyticsData),appLinkAnalyticsOptions:Object.assign({actionType:r.Vw.Click,entity:l.M.getAnalyticsEntity(e.video)},e.analyticsOptions)}):n.createElement(n.Fragment,null)}},65720:(e,t,a)=>{a.d(t,{m:()=>c});var n=a(32735),i=a(83914),r=a(36848);const o={tag:"OjHQZ",icon:"SS2zL",active:"kD1xM"};function c(e){return e.appLink?n.createElement(r.F,{appLink:e.appLink,analyticsData:e.appLinkAnalyticsData,analyticsOptions:e.appLinkAnalyticsOptions,className:"\n p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer\n text-decoration-none ".concat(o.tag," ").concat(e.active?o.active:"","\n ")},n.createElement(l,Object.assign({},e))):n.createElement(l,Object.assign({},e))}function l(e){return n.createElement(n.Fragment,null,n.createElement(i.x,{className:"".concat(o.icon," rounded-circle bg-").concat(e.iconVariant," text-white"),svgName:e.svgName}),n.createElement("span",{className:"ps-1 text-nowrap user-select-none"},e.text))}},38647:(e,t,a)=>{a.d(t,{m:()=>s});var n=a(32735),i=a(83914),r=a(76177),o=a(26361),c=a(35223),l=a(31908);function s(e){if(!e.yearGroups)return n.createElement(n.Fragment,null);var t=o.l.mapRestrictionToText(e.video._restrictions,e.yearGroups);return l.M.getCanBeConsumed(e.video).canConsume&&t?n.createElement(r.u,{spanHack:!0,spanHackClassName:e.className||"d-inline-block ps-1",title:t,placement:e.tooltipPlacement||"top"},n.createElement(i.x,{svgName:c.vn.Lock,size:"sm"===e.size?i.S.Small:i.S.Standard})):n.createElement(n.Fragment,null)}},10439:(e,t,a)=>{a.d(t,{r:()=>c});var n=a(32735),i=a(17082),r=a(35429);const o={hoverContainer:"TzWQw",hovering:"gdTcW"};function c(e){var t,a=(0,r.g)();if(null===(t=a.useInitialize)||void 0===t||t.call(a,e),!a.hasProvider)return n.createElement(n.Fragment,null);if("picture-in-picture"===a.mode)return n.createElement(n.Fragment,null);if("hover"===e.mode&&a.isOnPlayPage)return n.createElement(n.Fragment,null);if("default"===a.mode||"play-page"===e.location)return n.createElement(i.t0,{node:a.portalNode});var c=a.started,l="rounded-3";"popout-video"===e.location&&(l="rounded-top-3");var s="".concat(o.hoverContainer," ").concat(c?o.hovering:""," ").concat(l," overflow-hidden");return n.createElement("div",{className:s},n.createElement(i.t0,{node:a.portalNode}))}},68626:(e,t,a)=>{var n;a.d(t,{z:()=>n}),function(e){e[e.Below=1]="Below",e[e.Overlay=2]="Overlay",e[e.Independent=3]="Independent"}(n||(n={}))},59598:(e,t,a)=>{var n;a.d(t,{K:()=>n}),function(e){e.Resources="resources",e.Interactives="interactives"}(n||(n={}))}}]);
2
- //# sourceMappingURL=2355-78b307e130-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2355],{40955:(e,t,a)=>{a.d(t,{P:()=>i});var n=a(32735);function i(e){return e.audience?n.createElement("div",{className:"audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ".concat("border-"+e.border," ").concat(e.className?e.className:"")},e.audience.name):n.createElement(n.Fragment,null)}},17464:(e,t,a)=>{a.d(t,{c:()=>r});var n=a(32735),i=a(7121);function r(e){var t="d-flex align-items-center badge-list ".concat(i.Z.minHeight);return e.className&&(t+=" ".concat(e.className)),n.createElement("div",{className:t},e.children)}},89682:(e,t,a)=>{a.d(t,{I:()=>d,h:()=>u});var n=a(32735),i=a(91967),r=a(83914),o=a(35223),c=a(11607);const l={unchecked:"bup9I",outline:"ealw_",checked:"A1Ov0",checkMark:"c14lI"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var u;function d(e){var t,a,d=(t=n.useState(e.status===u.Complete),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(t,a)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?s(e,t):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),m=d[0],v=d[1];n.useEffect((function(){v(e.status===u.Complete)}),[e.status]);var p="cursor-pointer rounded-circle ".concat(m?l.checked:l.unchecked);return e.className&&(p+=" ".concat(e.className)),"outline"===e.style&&(p+=" ".concat(l.outline)),e.status&&e.status!==u.None&&i.q.isFunction(e.setStatus)?n.createElement(c.L,{className:p,onClick:function(){var t=!m;v(t);var a=t?u.Complete:u.Incomplete;e.setStatus(a).catch((function(){v(!t)}))},disabled:e.disabled},n.createElement(r.x,{svgName:o.vn.Check,className:"svg-container ".concat(l.checkMark)})):n.createElement(n.Fragment,null)}!function(e){e.None="None",e.Complete="Complete",e.Incomplete="Incomplete"}(u||(u={})),d.defaultProps={style:"filled"}},24900:(e,t,a)=>{a.d(t,{z:()=>l,O:()=>c});var n=a(32735),i=a(83914),r=a(35223);const o={mask:"qpc7L",small:"L8Oxs",video:"b8kJW",playlist:"eo2p2",maskContainer:"lpwag"};var c;function l(e){var t=e.type,a=e.size,l=function(e){return e===c.Video?o.video:e===c.Playlist?o.playlist:""}(t),s=function(e){return e===c.Video?r.vn.PlayCircle:""}(t);return n.createElement("div",{className:"".concat(o.maskContainer," ").concat("sm"===a?o.small:"")},n.createElement("div",{className:o.mask}),n.createElement(i.x,{svgName:s,className:l}))}!function(e){e[e.Video=0]="Video",e[e.Playlist=1]="Playlist",e[e.Series=2]="Series"}(c||(c={})),l.defaults={size:"md"}},22843:(e,t,a)=>{a.d(t,{h:()=>u});var n=a(32735),i=a(65858),r=a(36848),o=a(38647),c=a(11882),l=a(31908);const s={container:"r70GR",titleContainer:"rULXI",seriesTitleBox:"h9k1p",badgeContainer:"QaDDX",audienceBadge:"hvsne"};function u(e){var t=e.video,a=e.appLink,u=e.subTextAppLink,d=l.M.getCanBeConsumed(t).canNavigate;return n.createElement("div",{className:"mt-2 ".concat(s.container)},n.createElement("div",{className:"d-flex flex-column ".concat(s.titleContainer)},l.M.isVideo(t)&&n.createElement(c.$,{type:e.subTextType,className:"text-truncate ".concat(s.seriesTitleBox),video:t,appLink:u,analyticsOptions:{location:i.LZ.VideoThumbnail}}),n.createElement(r.F,{className:"h6 text-reset clamp-2 align-middle",appLink:d?a:null},t.name,n.createElement(o.m,{video:e.video,yearGroups:e.yearGroups,size:"sm"}))))}},72355:(e,t,a)=>{a.d(t,{u:()=>ue});var n=a(32735),i=a(1048),r=a(65858),o=a(18559),c=a(17464),l=a(23481),s=a(91967),u=a(11607),d=a(83914),m=a(69883),v=a(1643),p=a(35223),g=a(31908);const y={favourited:"t0svX",favouriteButton:"CFRo3",heart:"ZMMQu",heartOutline:"truFo"};function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var E=l.T.encloseNamespace("shared.favouriteButton");function h(e){var t,a,i=(0,m.Z)(),r=v.h.isFavouritedByCurrentUser(e.video),o=(t=n.useState(r),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(t,a)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?f(e,t):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=o[0],l=o[1];n.useEffect((function(){l(r)}),[r]);var h="".concat("d-flex align-items-center justify-content-center"," cursor-pointer ").concat(y.favouriteButton," ").concat(c?y.favourited:"");return e.className&&(h+=" ".concat(e.className)),s.q.isFunction(e.setFavourite)&&s.q.isFunction(e.canFavourite)&&e.canFavourite(e.video)?n.createElement(u.L,{className:h,onClick:function(){var t=!c;l(t),e.setFavourite(e.video,t,null,(function(){i.error(E(g.M.isClip(e.video)?t?"favouriteClipError":"unfavouriteClipError":g.M.isInteractive(e.video)?t?"favouriteInteractiveError":"unfavouriteInteractiveError":t?"favouriteVideoError":"unfavouriteVideoError")),l(!t)}),e.analyticsData,e.analyticsOptions)}},n.createElement(d.x,{svgName:p.vn.Heart,className:"svg-container ".concat(y.heart)}),n.createElement(d.x,{svgName:p.vn.HeartOutline,className:"svg-container ".concat(y.heartOutline)})):n.createElement(n.Fragment,null)}var b=a(75163),C=a(5465);function k(e){var t=g.M.getVideoProgress(e.video),a=t&&e.video.duration&&t/e.video.duration*1e5;return a?n.createElement("div",{className:"bg-primary h-100",style:{width:"".concat(a,"%")}}):n.createElement(n.Fragment,null)}const N={bottomBar:"YnXtZ"};function O(e){return g.M.isVideo(e.video)?n.createElement("div",{className:N.bottomBar},n.createElement(k,{video:e.video})):n.createElement(n.Fragment,null)}const x={padlock:"w4cg8",sm:"JpIYd"};function w(e){var t="sm"===e.size?d.S.Small:d.S.Standard;return n.createElement("div",{className:"".concat(x.padlock," ").concat("sm"===e.size?x.sm:""," bg-white cursor-default d-flex align-items-center justify-content-center")},n.createElement(d.x,{svgName:p.vn.Lock,size:t}))}var j=a(76177);const F={logo:"OA9ft",sm:"fyo2J"};function I(e){var t,a,i,r;if(!g.M.isVideo(e.video)||!e.companyLogoFallbackUrl)return n.createElement(n.Fragment,null);var o=null===(a=null===(t=e.video.productionCompanies)||void 0===t?void 0:t.data)||void 0===a?void 0:a[0],c=null!==(r=null===(i=null==o?void 0:o.logo)||void 0===i?void 0:i.url)&&void 0!==r?r:e.companyLogoFallbackUrl;return c?n.createElement("div",null,n.createElement(j.u,{title:null==o?void 0:o.name,spanHack:!0},n.createElement("div",{className:"".concat(F.logo," ").concat("sm"===e.size?F.sm:""),style:{backgroundImage:"url(".concat(c,")")}}))):n.createElement(n.Fragment,null)}I.defaultProps={size:"md"};var T=a(11882),S=a(4594),M=a(61150);function L(e){return g.M.isClip(e.video)?n.createElement(M.y,{typeId:S.E.Clip,size:e.size,inContainer:!0}):g.M.isInteractive(e.video)?n.createElement(M.y,{typeId:S.E.Interactive,status:e.video.status,size:e.size,inContainer:!0}):n.createElement(n.Fragment,null)}L.default={size:"md"};var z=a(10439),A=a(54610),D=a(49439);const P={overlayContainer:"qu3A3",topLeftContainer:"gjhMe",topRightContainer:"XAfZW",overlay:"NTrtm",downScale:"puKcM",title:"_6FukN",gradient:"rXzR8",playIcon:"dndOA",videoProgress:"yhWf4",badgeContainer:"AtgmC",clipProgress:"E2egN",interactiveProgress:"WycwR"};function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function B(e){var t="mb-1";return e&&(t+=P.downScale),t}function V(e){var t,a,l,s=e.video,u=e.appLink,m=e.imageOptions,y=e.setFavourite,f=e.canFavourite,E=e.preload,k=e.hovering,N=e.hoverToPlay,x=e.companyLogoFallbackUrl,F=g.M.getCanBeConsumed(e.video),S=F.canNavigate,M=F.canConsume,V=i.t.isObject(null==u?void 0:u.params)?null==u?void 0:u.params:{},H=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(s)}),_=v.h.showFavouriteButton(e.video,k),U=g.M.isVideo(s),Z=g.M.getRating(e.video),G=(a=(0,D.L)({delay:100}),l=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(a,l)||function(e,t){if(e){if("string"==typeof e)return R(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?R(e,t):void 0}}(a,l)||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.")}()),W=G[0],X=G[1]&&M&&N;return n.createElement(j.u,{title:g.M.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:""},n.createElement("div",{className:"position-relative rounded-3 overflow-hidden",ref:W},_&&n.createElement("div",{className:P.topRightContainer},n.createElement(h,{setFavourite:y,canFavourite:f,video:s,analyticsData:e.analyticsData,analyticsOptions:H})),!S&&n.createElement("div",{className:P.topRightContainer},n.createElement(w,null)),n.createElement("div",{className:"".concat(P.topLeftContainer," d-flex flex-no-wrap")},n.createElement(L,{video:s}),n.createElement(I,{video:s,companyLogoFallbackUrl:x})),n.createElement(b.Z,{data:g.M.getThumbnail(s),appLink:S?u:null,imageType:A.__.Thumbnails,imageOptions:m,preload:E,className:P.gradient,alt:("series"in s&&(null===(t=s.series)||void 0===t?void 0:t.name)?"".concat(s.series.name,": "):"")+s.name,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:s.id,name:s.name}),analyticsOptions:Object.assign(Object.assign({},H),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail})},!(!k||!S)&&n.createElement(d.x,{className:P.playIcon,svgName:p.vn.PlayCircle}),n.createElement(C.oy,{type:C.mS.Video}),n.createElement("div",{className:P.overlayContainer},n.createElement("div",{className:P.overlay},n.createElement("div",{className:"".concat(B(k)," ").concat(P.title)},U&&n.createElement(T.$,{type:e.subTextType,className:"text-shadow clamp-1",video:s,appLink:null,analyticsOptions:null}),n.createElement("span",{className:"h6 text-reset text-shadow clamp-1"},g.M.getTitle(s))),n.createElement(O,{video:s}),k&&n.createElement(c.c,{className:"mt-1"},g.M.isVideo(s)&&n.createElement(n.Fragment,null,n.createElement(o.C,{type:o.g.Rating,data:Z}),s.hasSubtitle&&n.createElement("span",{className:"badge p-0"},n.createElement(d.x,{svgName:p.vn.CloseCaptionBadge})),n.createElement(o.C,{type:o.g.Interactive,data:s.hasInteractives}),n.createElement(o.C,{type:o.g.DurationExact,data:g.M.getDuration(e.video)})))))),X&&n.createElement(z.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:V.context,contextId:V.contextId,moviesAndTv:V.mtv})))}var H=a(64446),_=a(40955);const U={badgeContainer:"fy9Un",sm:"Rb0TL"};function Z(e){var t=g.M.getRating(e.video),a=!!e.audience&&"sm"!==e.size,i=!a&&!e.hideRating&&!!t&&"sm"!==e.size;return!e.hideDuration||a||i?n.createElement(c.c,{className:"".concat(U.badgeContainer," ").concat("sm"===e.size?U.sm:"")},a&&n.createElement(_.P,{audience:e.audience,className:"bg-white text-dark",border:"dark"}),i&&n.createElement(o.C,{type:o.g.Rating,data:t}),!e.hideDuration&&n.createElement(o.C,{type:e.newDurationStyle?o.g.DurationApproximate:o.g.DurationExact,data:e.duration||g.M.getDuration(e.video)})):n.createElement(n.Fragment,null)}Z.defaultProps={newDurationStyle:!0,size:"md"};var G=a(22843),W=a(66190),X=a(77590),Q=a(59598);const q={preview:"whbhf",topLeftContainer:"wHY80",details:"vMaXP",isHovering:"tR1jA",videoGuidanceTags:"KJrT1",dropdown:"oZXV7",show:"EiQ04",topRightContainer:"FAuzc"};var K=function(e){var t,a=e.video,o=e.appLink,c=e.imageOptions,l=e.preload,s=e.setFavourite,u=e.canFavourite,d=e.isHovering,m=e.hoverToPlay,p=e.companyLogoFallbackUrl,y=i.t.isObject(null==o?void 0:o.params)?null==o?void 0:o.params:{},f=g.M.getCanBeConsumed(a),E=f.canNavigate,k=f.canConsume;function N(e){return Object.assign(Object.assign({},o),{params:Object.assign(Object.assign({},y),{scrollTo:e})})}n.useEffect((function(){return function(){var t;null===(t=e.cleanPortalNode)||void 0===t||t.call(e)}}),[]);var x="position-relative bg-white";e.extraClasses&&(x+=" ".concat(e.extraClasses)),d&&(x+=" rounded-3 shadow-lg");var F=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(a)}),T=e.isHovering&&k&&m,S=v.h.showFavouriteButton(e.video,d);return n.createElement("div",{className:x},S&&n.createElement("div",{className:q.topRightContainer},n.createElement(h,{setFavourite:s,canFavourite:u,video:a,analyticsData:e.analyticsData,analyticsOptions:F})),!E&&n.createElement("div",{className:q.topRightContainer},n.createElement(j.u,{title:g.M.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:""},n.createElement(w,null))),n.createElement("div",{className:"position-relative"},n.createElement(b.Z,{onClick:function(){var t;return null===(t=e.cleanPortalNode)||void 0===t?void 0:t.call(e)},data:g.M.getThumbnail(a),appLink:E?o:null,imageType:A.__.Thumbnails,imageOptions:c,preload:l,className:"overflow-hidden ".concat(d?q.preview:"rounded-3 ".concat(q.original)),alt:("series"in a&&(null===(t=a.series)||void 0===t?void 0:t.name)?"".concat(a.series.name,": "):"")+a.name,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:a.id,name:a.name}),analyticsOptions:Object.assign(Object.assign({},F),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail})},n.createElement(C.oy,{type:C.mS.Video}),n.createElement("div",{className:"p-absolute w-100 h-100 text-white"},n.createElement("div",{className:"".concat(q.topLeftContainer," d-flex flex-no-wrap")},n.createElement(L,{video:a}),n.createElement(I,{video:a,companyLogoFallbackUrl:p})),n.createElement(Z,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration}),n.createElement(O,{video:a}))),T&&n.createElement(z.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:y.context,contextId:y.contextId,moviesAndTv:y.mtv,location:"popout-video"})),!d&&!e.hideTitle&&n.createElement(G.h,Object.assign({},e)),n.createElement("div",{className:"".concat(q.details," ").concat(d?"".concat(q.isHovering," box-shadow"):"")},d&&n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(d?q.videoGuidanceTags:"")},n.createElement(G.h,Object.assign({},e)),e.showVideoGuidance&&d&&n.createElement("div",{className:"d-flex justify-content-start align-items-center pt-2"},n.createElement(X.x,{video:e.video,appLink:N(Q.K.Resources),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),n.createElement(W.Y,{video:e.video,appLink:N(Q.K.Interactives),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}))))))};function $(e){return n.createElement(n.Fragment,null,n.createElement(H.K,{hoverableComponent:K,componentProps:e,fixedHoverWidth:400,minHoverWidth:400,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:e.video.id,name:e.video.name}),analyticsOptions:Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(e.video)})}))}var J=a(36848),Y=a(24900),ee=a(89682);const te={container:"efxnE",cvIcon:"OJ_ZQ",action:"vWvGn"};function ae(e){return g.M.getCanBeConsumed(e.video).canNavigate?function(e){var t;return!(null===(t=g.M.getCanBeConsumed(e.video))||void 0===t?void 0:t.canConsume)||!(!s.q.isFunction(e.setFavourite)||!s.q.isFunction(e.canFavourite))||!!s.q.isFunction(e.setCheckMarkStatus)}(e)?n.createElement("div",{className:"".concat(te.container," d-flex align-items-center")},n.createElement(h,{setFavourite:e.setFavourite,canFavourite:e.canFavourite,video:e.video,className:te.action,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),n.createElement(ee.I,{status:e.checkMarkStatus,setStatus:e.setCheckMarkStatus,className:te.action})):n.createElement(n.Fragment,null):n.createElement("div",{className:te.container},n.createElement(w,{size:e.size}))}var ne=a(68626);const ie={titleOverlay:"krg9f",clip:"MPRU6",large:"g5_ww",interactive:"Zzo3e",titleBelow:"tZjPt",overlayContainer:"EElm1",topLeftContainer:"hrw3I",gradient:"LS_EH"};function re(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return oe(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?oe(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 oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var ce="shared.staticVideoThumbnail";function le(e){var t,a=e.video,i=e.subTextAppLink,o=e.textPosition,c=e.appLink,s=o===ne.z.Overlay,u=g.M.getCanBeConsumed(e.video).canNavigate,d="";return s?(d=ie.titleOverlay,u&&(g.M.isClip(a)&&(d+=" "+ie.clip),g.M.isInteractive(a)&&(d+=" "+ie.interactive))):d=ie.titleBelow,n.createElement("div",{className:d},g.M.isVideo(a)&&n.createElement(T.$,{type:e.subTextType,className:s?"text-shadow clamp-1":"clamp-2",video:a,appLink:s?null:i,analyticsOptions:{location:r.LZ.VideoThumbnail}}),s||!u?n.createElement("span",{className:"h6 text-reset clamp-1"},null!==(t=a.name)&&void 0!==t?t:l.T.getPhrase(ce,"videoUnavailable")):n.createElement(J.F,{className:"h6 text-reset clamp-2",appLink:c},a.name))}function se(e){var t,a,o=e.video,c=e.appLink,l=e.textPosition,s=e.imageOptions,u=e.setFavourite,d=e.preload,m=e.hoverToPlay,p=i.t.isObject(null==c?void 0:c.params)?null==c?void 0:c.params:{},y=re((0,D.X)(),2),f=y[0],E=y[1],h=re((0,D.L)({delay:100}),2),k=h[0],N=h[1],x=g.M.getCanBeConsumed(o),w=x.canNavigate,F=x.canConsume,T=N&&F&&m,S=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(o)}),M=!!c&&!e.hideMask&&w,P=g.M.getPrivacyReasoning(e.video,e.showSignIn);return n.createElement(j.u,{title:P,spanHack:!0,spanHackClassName:""},n.createElement("div",{className:(a="position-relative",a+=c&&w?" cursor-pointer":"",e.extraClasses&&(a+=" ".concat(e.extraClasses)),l===ne.z.Overlay&&(a+=" rounded overflow-hidden"),a),ref:function(e){f.current=e,k.current=e}},n.createElement(ae,{video:o,checkMarkStatus:e.checkMarkStatus,setCheckMarkStatus:e.setCheckMarkStatus,setFavourite:u,canFavourite:function(){var t;return(null===(t=e.canFavourite)||void 0===t?void 0:t.call(e,e.video))&&v.h.showFavouriteButton(o,E)},analyticsData:e.analyticsData,analyticsOptions:S,size:e.size}),n.createElement(b.Z,{data:g.M.getThumbnail(o),appLink:w?c:null,imageType:A.__.Thumbnails,imageOptions:s,preload:d,className:function(){var t="overflow-hidden ".concat("sm"===e.size?"rounded":"rounded-3");return e.imageClassName&&(t+=" ".concat(e.imageClassName)),l===ne.z.Overlay&&(t+=" ".concat(ie.gradient)),t}(),alt:("series"in o&&(null===(t=o.series)||void 0===t?void 0:t.name)?"".concat(o.series.name,": "):"")+o.name,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:o.id,name:o.name}),analyticsOptions:Object.assign(Object.assign({},S),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail})},M&&n.createElement(Y.z,{type:Y.O.Video,size:e.size}),n.createElement(C.oy,{type:C.mS.Video}),n.createElement("div",{className:ie.overlayContainer},l===ne.z.Overlay&&n.createElement(le,Object.assign({},e)),n.createElement("div",{className:"".concat(ie.topLeftContainer," d-flex flex-no-wrap")},n.createElement(L,{video:o,size:e.size}),n.createElement(I,{video:o,companyLogoFallbackUrl:e.companyLogoFallbackUrl,size:e.size})),n.createElement(O,{video:o}),n.createElement(Z,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration,newDurationStyle:e.newDurationStyle,size:e.size}))),T&&n.createElement(z.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:p.context,contextId:p.contextId,moviesAndTv:p.mtv}),l===ne.z.Below&&n.createElement(le,Object.assign({},e))))}function ue(e){switch(e.type){case"static":return n.createElement(se,Object.assign({},e));case"cosmetic":return n.createElement(se,Object.assign({},e,{hoverToPlay:!1}));case"expandable":return n.createElement(V,Object.assign({},e));case"popout":return n.createElement($,Object.assign({},e));default:return}}ue.defaultProps={hideRating:!0,size:"md",hoverToPlay:!0}},61150:(e,t,a)=>{a.d(t,{y:()=>v});var n=a(32735),i=a(23481),r=a(83914),o=a(5960),c=a(4594),l=a(35223);const s={topLeftContainer:"iwBld",draft:"QBpxh",badge:"KcvGx",svg:"gW733",text:"QiH5Q",sm:"tn2BH"};var u=i.T.encloseNamespace("shared.typeBadge");function d(e){switch(e){case c.E.Clip:return l.vn.Clip;case c.E.Interactive:return l.vn.Interactive;case c.E.Resource:return l.vn.Resources;default:return""}}function m(e,t){switch(e){case c.E.Clip:return"bg-dark-blue";case c.E.Interactive:return t===o.X.Draft?s.draft:"bg-green";case c.E.Resource:return"bg-indigo";default:return""}}function v(e){var t="".concat(s.badge," rounded-pill text-white ps-0 ").concat("sm"===e.size?s.sm:"");return n.createElement("div",{className:e.inContainer?"":s.topLeftContainer},n.createElement("div",{className:"".concat(t," ").concat(m(e.typeId,e.status))},n.createElement(r.x,{className:"svg-container d-block ".concat(s.svg),size:"sm"===e.size?r.S.Small:r.S.Standard,svgName:d(e.typeId)}),n.createElement("span",{className:s.text},function(e){switch(e){case c.E.Clip:return u("clip");case c.E.Interactive:return u("interactive");case c.E.Resource:return u("resource");default:return""}}(e.typeId))))}v.default={size:"md"}},66190:(e,t,a)=>{a.d(t,{Y:()=>u});var n=a(32735),i=a(23481),r=a(65858),o=a(65720),c=a(35223),l=a(31908),s="shared.interactivesTag";function u(e){var t,a;if(!e.video||l.M.isInteractive(e.video))return n.createElement(n.Fragment,null);var u=(null===(a=null===(t=e.video.interactives)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length)||0;return u?n.createElement(o.m,{svgName:c.vn.Interactive,iconVariant:"green",text:i.T.getPhrase(s,"interactives",{smartCount:u}),appLink:e.appLink,appLinkAnalyticsData:Object.assign({videoGuidanceType:"interactive",videoGuidanceTotalItems:u},e.analyticsData),appLinkAnalyticsOptions:Object.assign({actionType:r.Vw.Click,entity:l.M.getAnalyticsEntity(e.video)},e.analyticsOptions)}):n.createElement(n.Fragment,null)}},77590:(e,t,a)=>{a.d(t,{x:()=>u});var n=a(32735),i=a(23481),r=a(65858),o=a(65720),c=a(35223),l=a(31908),s="shared.resourcesTag";function u(e){var t,a,u,d;if(!e.video||l.M.isInteractive(e.video))return n.createElement(n.Fragment,null);var m=((null===(a=null===(t=e.video.resources)||void 0===t?void 0:t.data)||void 0===a?void 0:a.length)||0)+((null===(d=null===(u=e.video.links)||void 0===u?void 0:u.data)||void 0===d?void 0:d.length)||0);return m?n.createElement(o.m,{svgName:c.vn.Resources,iconVariant:"indigo",text:i.T.getPhrase(s,"resources",{smartCount:m}),appLink:e.appLink,appLinkAnalyticsData:Object.assign({videoGuidanceType:"resource",videoGuidanceTotalItems:m},e.analyticsData),appLinkAnalyticsOptions:Object.assign({actionType:r.Vw.Click,entity:l.M.getAnalyticsEntity(e.video)},e.analyticsOptions)}):n.createElement(n.Fragment,null)}},65720:(e,t,a)=>{a.d(t,{m:()=>c});var n=a(32735),i=a(83914),r=a(36848);const o={tag:"OjHQZ",icon:"SS2zL",active:"kD1xM"};function c(e){return e.appLink?n.createElement(r.F,{appLink:e.appLink,analyticsData:e.appLinkAnalyticsData,analyticsOptions:e.appLinkAnalyticsOptions,className:"\n p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer\n text-decoration-none ".concat(o.tag," ").concat(e.active?o.active:"","\n ")},n.createElement(l,Object.assign({},e))):n.createElement(l,Object.assign({},e))}function l(e){return n.createElement(n.Fragment,null,n.createElement(i.x,{className:"".concat(o.icon," rounded-circle bg-").concat(e.iconVariant," text-white"),svgName:e.svgName}),n.createElement("span",{className:"ps-1 text-nowrap user-select-none"},e.text))}},38647:(e,t,a)=>{a.d(t,{m:()=>s});var n=a(32735),i=a(83914),r=a(76177),o=a(26361),c=a(35223),l=a(31908);function s(e){if(!e.yearGroups)return n.createElement(n.Fragment,null);var t=o.l.mapRestrictionToText(e.video._restrictions,e.yearGroups);return l.M.getCanBeConsumed(e.video).canConsume&&t?n.createElement(r.u,{spanHack:!0,spanHackClassName:e.className||"d-inline-block ps-1",title:t,placement:e.tooltipPlacement||"top"},n.createElement(i.x,{svgName:c.vn.Lock,size:"sm"===e.size?i.S.Small:i.S.Standard})):n.createElement(n.Fragment,null)}},10439:(e,t,a)=>{a.d(t,{r:()=>c});var n=a(32735),i=a(17082),r=a(35429);const o={hoverContainer:"TzWQw",hovering:"gdTcW"};function c(e){var t,a=(0,r.g)();if(null===(t=a.useInitialize)||void 0===t||t.call(a,e),!a.hasProvider)return n.createElement(n.Fragment,null);if("picture-in-picture"===a.mode)return n.createElement(n.Fragment,null);if("hover"===e.mode&&a.isOnPlayPage)return n.createElement(n.Fragment,null);if("default"===a.mode||"play-page"===e.location)return n.createElement(i.t0,{node:a.portalNode});var c=a.started,l="rounded-3";"popout-video"===e.location&&(l="rounded-top-3");var s="".concat(o.hoverContainer," ").concat(c?o.hovering:""," ").concat(l," overflow-hidden");return n.createElement("div",{className:s},n.createElement(i.t0,{node:a.portalNode}))}},68626:(e,t,a)=>{var n;a.d(t,{z:()=>n}),function(e){e[e.Below=1]="Below",e[e.Overlay=2]="Overlay",e[e.Independent=3]="Independent"}(n||(n={}))},59598:(e,t,a)=>{var n;a.d(t,{K:()=>n}),function(e){e.Resources="resources",e.Interactives="interactives"}(n||(n={}))}}]);
2
+ //# sourceMappingURL=2355-b2345e9449-lite.chunk.js.map