@clickview/lite 0.75.0-rc.9 → 0.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/css/{7103-lite-fef3024f61.chunk.css → 2878-lite-d8e0bf912a.chunk.css} +1 -1
- package/dist/css/{1243-lite-13eda8f6a0.chunk.css → 3615-lite-240342ff8e.chunk.css} +1 -1
- package/dist/css/{1867-lite-8baa8af02b.chunk.css → 4630-lite-0157b1c437.chunk.css} +1 -1
- package/dist/css/{4203-lite-9ffab89741.chunk.css → 8362-lite-10810fdef2.chunk.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{104-7ee25cbbb8-lite.chunk.js → 104-da7394bcfa-lite.chunk.js} +2 -2
- package/dist/scripts/104-da7394bcfa-lite.chunk.js.map +1 -0
- package/dist/scripts/1192-bb27568f21-lite.chunk.js +2 -0
- package/dist/scripts/1192-bb27568f21-lite.chunk.js.map +1 -0
- package/dist/scripts/1199-cf2cb206b5-lite.chunk.js +2 -0
- package/dist/scripts/1199-cf2cb206b5-lite.chunk.js.map +1 -0
- package/dist/scripts/1502-9836df10cd-lite.chunk.js +2 -0
- package/dist/scripts/1502-9836df10cd-lite.chunk.js.map +1 -0
- package/dist/scripts/{1610-9ccecc428a-lite.chunk.js → 1610-0edaa98d40-lite.chunk.js} +2 -2
- package/dist/scripts/{1610-9ccecc428a-lite.chunk.js.map → 1610-0edaa98d40-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7103-3b181ec69b-lite.chunk.js → 2878-487c4a8e1a-lite.chunk.js} +2 -2
- package/dist/scripts/2878-487c4a8e1a-lite.chunk.js.map +1 -0
- package/dist/scripts/{3057-1ae8087b3a-lite.chunk.js → 3057-a5bc753736-lite.chunk.js} +1 -1
- package/dist/scripts/{3057-1ae8087b3a-lite.chunk.js.map → 3057-a5bc753736-lite.chunk.js.map} +1 -1
- package/dist/scripts/3268-7be966dc82-lite.chunk.js +3 -0
- package/dist/scripts/3268-7be966dc82-lite.chunk.js.map +1 -0
- package/dist/scripts/{1243-72f3d31787-lite.chunk.js → 3615-a0da361aa5-lite.chunk.js} +2 -2
- package/dist/scripts/3615-a0da361aa5-lite.chunk.js.map +1 -0
- package/dist/scripts/{3872-6fe7371d39-lite.chunk.js → 3872-cf9a6bdae8-lite.chunk.js} +1 -1
- package/dist/scripts/{3872-6fe7371d39-lite.chunk.js.map → 3872-cf9a6bdae8-lite.chunk.js.map} +1 -1
- package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js +2 -0
- package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js.map +1 -0
- package/dist/scripts/4598-e25e9e03d6-lite.chunk.js +2 -0
- package/dist/scripts/4598-e25e9e03d6-lite.chunk.js.map +1 -0
- package/dist/scripts/{1867-0823a787c3-lite.chunk.js → 4630-4a35ecbf2b-lite.chunk.js} +2 -2
- package/dist/scripts/4630-4a35ecbf2b-lite.chunk.js.map +1 -0
- package/dist/scripts/6475-f019242ec2-lite.chunk.js +2 -0
- package/dist/scripts/6475-f019242ec2-lite.chunk.js.map +1 -0
- package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js → 6695-4ae0acad94-lite.chunk.js} +1 -1
- package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js.map → 6695-4ae0acad94-lite.chunk.js.map} +1 -1
- package/dist/scripts/6756-3c7f911759-lite.chunk.js +3 -0
- package/dist/scripts/6756-3c7f911759-lite.chunk.js.map +1 -0
- package/dist/scripts/6790-1695fcf576-lite.chunk.js +2 -0
- package/dist/scripts/6790-1695fcf576-lite.chunk.js.map +1 -0
- package/dist/scripts/7438-35b887a48e-lite.chunk.js +2 -0
- package/dist/scripts/7438-35b887a48e-lite.chunk.js.map +1 -0
- package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js → 8323-5694456903-lite.chunk.js} +2 -2
- package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.map → 8323-5694456903-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4203-83f90f92f3-lite.chunk.js → 8362-ed5df8f4fc-lite.chunk.js} +3 -3
- package/dist/scripts/8362-ed5df8f4fc-lite.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.map → 8362-ed5df8f4fc-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8732-3e8332e620-lite.chunk.js → 8732-dc5182fb69-lite.chunk.js} +1 -1
- package/dist/scripts/{8732-3e8332e620-lite.chunk.js.map → 8732-dc5182fb69-lite.chunk.js.map} +1 -1
- package/dist/scripts/8856-08061bbec5-lite.chunk.js +2 -0
- package/dist/scripts/8856-08061bbec5-lite.chunk.js.map +1 -0
- package/dist/scripts/{8957-bc83ea1180-lite.chunk.js → 8957-b3f0dbb85d-lite.chunk.js} +1 -1
- package/dist/scripts/{8957-bc83ea1180-lite.chunk.js.map → 8957-b3f0dbb85d-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9042-544d97a05d-lite.chunk.js → 9042-7c30ffd4f0-lite.chunk.js} +2 -2
- package/dist/scripts/9042-7c30ffd4f0-lite.chunk.js.map +1 -0
- package/dist/scripts/9134-b0ae877597-lite.chunk.js +2 -0
- package/dist/scripts/9134-b0ae877597-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-cf4c360278.min.js → bundle-941a464ef0.min.js} +3 -3
- package/dist/scripts/{bundle-cf4c360278.min.js.map → bundle-941a464ef0.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/104-7ee25cbbb8-lite.chunk.js.map +0 -1
- package/dist/scripts/1074-6dadbd8187-lite.chunk.js +0 -2
- package/dist/scripts/1074-6dadbd8187-lite.chunk.js.map +0 -1
- package/dist/scripts/1192-6ac54d734b-lite.chunk.js +0 -2
- package/dist/scripts/1192-6ac54d734b-lite.chunk.js.map +0 -1
- package/dist/scripts/1199-dc45a88be8-lite.chunk.js +0 -2
- package/dist/scripts/1199-dc45a88be8-lite.chunk.js.map +0 -1
- package/dist/scripts/1243-72f3d31787-lite.chunk.js.map +0 -1
- package/dist/scripts/1867-0823a787c3-lite.chunk.js.map +0 -1
- package/dist/scripts/3268-aa893d0068-lite.chunk.js +0 -2
- package/dist/scripts/3268-aa893d0068-lite.chunk.js.map +0 -1
- package/dist/scripts/4598-f5120153c2-lite.chunk.js +0 -2
- package/dist/scripts/4598-f5120153c2-lite.chunk.js.map +0 -1
- package/dist/scripts/6475-502e390010-lite.chunk.js +0 -2
- package/dist/scripts/6475-502e390010-lite.chunk.js.map +0 -1
- package/dist/scripts/6756-20c0ab9591-lite.chunk.js +0 -3
- package/dist/scripts/6756-20c0ab9591-lite.chunk.js.map +0 -1
- package/dist/scripts/6790-df00506bec-lite.chunk.js +0 -2
- package/dist/scripts/6790-df00506bec-lite.chunk.js.map +0 -1
- package/dist/scripts/7103-3b181ec69b-lite.chunk.js.map +0 -1
- package/dist/scripts/7438-1162aba8b6-lite.chunk.js +0 -2
- package/dist/scripts/7438-1162aba8b6-lite.chunk.js.map +0 -1
- package/dist/scripts/8856-361fe76b7a-lite.chunk.js +0 -2
- package/dist/scripts/8856-361fe76b7a-lite.chunk.js.map +0 -1
- package/dist/scripts/9003-36ab592cc5-lite.chunk.js +0 -2
- package/dist/scripts/9003-36ab592cc5-lite.chunk.js.map +0 -1
- package/dist/scripts/9042-544d97a05d-lite.chunk.js.map +0 -1
- package/dist/scripts/9134-7037c2c47a-lite.chunk.js +0 -2
- package/dist/scripts/9134-7037c2c47a-lite.chunk.js.map +0 -1
- /package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.LICENSE.txt → 3268-7be966dc82-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6756-20c0ab9591-lite.chunk.js.LICENSE.txt → 6756-3c7f911759-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.LICENSE.txt → 8323-5694456903-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-cf4c360278.min.js.LICENSE.txt → bundle-941a464ef0.min.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6695],{27150:(e,t,r)=>{r.d(t,{A:()=>U,$:()=>w});var n=r(32735),a=r(23481),s=r(81886),i=r(15611),o=r(83345),l="userManager.userWizardBackButtons";function c(e){return"status"===e.currentStep?n.createElement(n.Fragment,null):n.createElement(i.F,{className:"btn btn-link me-2",appLink:e.appLinks.userManager},n.createElement(o.x,{namespace:l,phrase:"cancel"}))}var u=r(98269),d=r(24453),p=r(45541),m=r(96728),v="userManager.userWizardHeader";function b(e){var t=(0,p.V)(),r=t.duplicateSets,a=t.hasExistingUsers,s=n.useContext(m.e),l=s.disableNext,c=s.onClickConfirm,b=!!(null==r?void 0:r.length),f=d.O.getCurrentContext().appLink;return f.action===e.appLinks.userUploadStatus.polling.action||f.action===e.appLinks.userUploadStatus.complete.action?n.createElement(n.Fragment,null):function(){switch(f.action){case e.appLinks.userUploadPopup.action:case e.appLinks.userUploadReviewAccounts.action:return!b&&!a;case e.appLinks.userUploadFixDuplicates.action:case e.appLinks.userUploadReviewExistingAccounts.action:return!a;default:return!0}}()?n.createElement(u.Z,{className:l?"disabled":"",variant:"dark",onClick:c,disabled:l},n.createElement(o.x,{namespace:v,phrase:"create"})):n.createElement(i.F,{className:"btn btn-dark ".concat(l?"disabled":""),appLink:function(){switch(f.action){case e.appLinks.userUploadReviewAccounts.action:if(b)return e.appLinks.userUploadFixDuplicates;if(a&&e.canAddExistingUsers)return e.appLinks.userUploadReviewExistingAccounts;case e.appLinks.userUploadFixDuplicates.action:if(a&&e.canAddExistingUsers)return e.appLinks.userUploadReviewExistingAccounts;case e.appLinks.userUploadReviewExistingAccounts.action:if(e.canAddExistingUsers)return e.appLinks.userUploadConfirmation;default:return null}}(),disabled:l},n.createElement(o.x,{namespace:v,phrase:"next"}))}var f=r(19717),g=r(17291),y=r(79352),h=r(76881),k=r(89476);const E={wizardContent:"hHr3C"};var x="userManager.bulkUserUploadWizardLayout",U="bulk:user:upload:nav:lock";function w(e){var t=(0,p.V)(),r=t.users,i=t.setUsers,o=(0,k.f)();return n.useEffect(function(){if(r)return o.lock({id:U,title:a.T.getPhrase(x,"navLockTitle"),text:a.T.getPhrase(x,"navLockBody"),appLinkWhitelist:f.b.getWizardAppLinks(e.appLinks),onConfirmUnlock:function(){i(null)}}),function(){o.unlock(U)};s.Q.C$.trigger(e.appLinks.userManager,{replace:!0})},[]),n.useEffect(function(){(null==r?void 0:r.length)||(o.unlock(U),s.Q.C$.trigger(e.appLinks.userManager,{replace:!0}))},[null==r?void 0:r.length]),r?n.createElement(m.D,null,n.createElement("div",{className:"px-3"},n.createElement(g.C,{title:a.T.getPhrase(x,"bulkUpload"),currentStep:e.currentStep,loaded:!0,continueButton:n.createElement(b,{currentStep:e.currentStep,appLinks:e.appLinks,canAddExistingUsers:e.canAddExistingUsers}),backButton:n.createElement(c,{currentStep:e.currentStep,appLinks:e.appLinks}),breadcrumbs:[{name:a.T.getPhrase(x,"settingsBreadcrumb"),appLink:e.appLinks.settings},{name:a.T.getPhrase(x,e.userType===h.Y.Learner?"studentManager":"staffManager"),appLink:e.appLinks.userManager},{name:a.T.getPhrase(x,"bulkUpload"),active:!0}]}),n.createElement("div",{className:"row g-0"},n.createElement("div",{className:"col-2"},n.createElement(y.a,{steps:f.b.getSteps(e.userType,e.canAddExistingUsers),currentStep:e.currentStep})),n.createElement("div",{className:"col-10 ".concat(E.wizardContent)},e.children)))):n.createElement(n.Fragment,null)}},26055:(e,t,r)=>{r.d(t,{A:()=>n});var n=r(32735).createContext(null)},45541:(e,t,r)=>{r.d(t,{V:()=>u});var n=r(2948),a=r(38143),s=r(39739);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function o(e,t,r){return(t=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=i(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function c(e,t){return Object.keys(e||{}).reduce(function(r,n){return t[n]||(r[n]=e[n]),r},{})}var u=function(){var e,t,r,i=(t=(0,n.D)(a.g.BULK_USER_UPLOAD),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,s,i,o=[],l=!0,c=!1;try{if(s=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=s.call(r)).done)&&(o.push(n.value),o.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw a}}return o}}(t,r)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=i[0],d=i[1];function p(e){var t=s.P.getNewDuplicates(e);d("duplicateSets",t)}return{users:null==u?void 0:u.users,invalidUsers:null==u?void 0:u.invalidUsers,hasValidatedUsers:!!(null==u?void 0:u.invalidUsers),existingUsersHash:(null==u?void 0:u.existingUsersHash)||{},hasExistingUsers:!!Object.keys((null==u?void 0:u.existingUsersHash)||{}).length,existingUserToAdd:null==u?void 0:u.existingUserToAdd,duplicateSets:null==u?void 0:u.duplicateSets,newUsers:(null===(e=null==u?void 0:u.users)||void 0===e?void 0:e.filter(function(e){var t;return!(null===(t=null==u?void 0:u.existingUsersHash)||void 0===t?void 0:t[e.lookupId])}))||[],setUsers:function(e){d({users:e,invalidUsers:null,existingUsersHash:null}),p(e)},setInvalidUsers:function(e){return d("invalidUsers",e)},setExistingUsers:function(e){return d("existingUsersHash",e)},updateUser:function(e){var t=u.users.map(function(t){return t.lookupId!==e.lookupId?t:e});d({users:t,invalidUsers:c(null==u?void 0:u.invalidUsers,o({},e.lookupId,!0)),existingUsersHash:null==u?void 0:u.existingUsersHash}),p(t)},deleteUsers:function(e){var t,r=e.reduce(function(e,t){return e[t]=!0,e},{}),n=u.users.filter(function(e){return!r[e.lookupId]});d({users:n,invalidUsers:c(null==u?void 0:u.invalidUsers,r),existingUsersHash:c(null==u?void 0:u.existingUsersHash,r),existingUserToAdd:null===(t=null==u?void 0:u.existingUserToAdd)||void 0===t?void 0:t.filter(function(e){return!!(null==u?void 0:u.existingUsersHash[e.lookupId])})}),p(n)}}}},17291:(e,t,r)=>{r.d(t,{C:()=>i});var n=r(32735),a=r(49935),s=r(96728);function i(e){var t=n.useContext(s.e).showButtons;return n.createElement("div",{className:"d-flex justify-content-between"},e.hideHeader?n.createElement("div",null):n.createElement("div",null,n.createElement("h1",{className:"h2"},e.title),e.breadcrumbs&&n.createElement("div",{className:"pb-3"},n.createElement(a.Oo,{breadcrumbs:e.breadcrumbs}))),e.loaded&&t&&n.createElement("div",{className:"d-flex align-items-center"},e.backButton,e.continueButton))}},14177:(e,t,r)=>{r.d(t,{$:()=>w});var n=r(32735),a=r(70680),s=r(81886),i=r(20354),o=r(79447),l=r(83914),c=r(83345),u=r(4594),d=r(76881),p=r(35223),m="userManager.wizardInProgress";function v(e){var t=Math.floor(e.totalItemsComplete/e.totalItems*100)||0;return n.createElement("div",null,n.createElement("div",{className:"d-flex align-items-center mb-2"},n.createElement("h2",{className:"h5 mb-0"},n.createElement(c.x,{namespace:m,phrase:"heading",options:{percentage:t,actionName:e.actionName}})),n.createElement(l.x,{svgName:p.vn.CheckCircle})),n.createElement("p",null,n.createElement(c.x,{namespace:m,phrase:"info".concat(e.actionVerb)})),n.createElement("p",{className:"mb-1"},n.createElement("span",{className:"text-info"},e.progressVerbPhrase?n.createElement("span",null,e.progressVerbPhrase):n.createElement(c.x,{namespace:m,phrase:"progressVerb".concat(e.actionVerb)}))," ",e.objectType===u.E.User&&e.userType?n.createElement(c.x,{namespace:m,phrase:e.userType===d.Y.Learner?"progressStudents":"progressStaff",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}}):e.objectType===u.E.Video?n.createElement(c.x,{namespace:m,phrase:"progressVideos",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}}):n.createElement(c.x,{namespace:m,phrase:"progressItems",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}})),n.createElement(o.Z,{variant:"info",now:t}))}var b="userManager.wizardSubmitted";function f(e){return n.createElement("div",null,n.createElement("div",{className:"d-flex align-items-center mb-2"},n.createElement("h2",{className:"h5 mb-0"},e.actionName?n.createElement(c.x,{namespace:b,phrase:"heading",options:{actionName:e.actionName}}):n.createElement(c.x,{namespace:b,phrase:"headingGeneric"})),n.createElement(l.x,{svgName:p.vn.CheckCircle})),n.createElement("p",null,n.createElement(c.x,{namespace:b,phrase:"info".concat(e.actionVerb)})),n.createElement("p",{className:"mb-1 text-info"},n.createElement(c.x,{namespace:b,phrase:"preparing"})),n.createElement(o.Z,{variant:"info",now:0}))}var g=r(58739),y=r(94644),h=r(89476);function k(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,s,i,o=[],l=!0,c=!1;try{if(s=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=s.call(r)).done)&&(o.push(n.value),o.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return E(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?E(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 E(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var x=2e3,U=3;function w(e){var t=k(n.useState(null),2),r=t[0],o=t[1],l=k(n.useState(0),2),c=l[0],u=l[1],d=n.useRef(null),p=(0,h.f)(),m=(0,a.I0)();function b(){e.pollJob(E,w)}function E(t){o(t),t.status===g.K.Completed||t.status===g.K.CompletedWithError||t.status===g.K.Failed?window.setTimeout(function(){!function(){var t;e.navLockId&&p.unlock(e.navLockId);var r={jobId:e.jobId};e.userType&&(r.userType=e.userType,m({type:i.a.Actions.INVALIDATE,keys:["school:users","user:count","search:aggregation","search:users"],request:null})),e.statusCompleteAppLink?s.Q.C$.trigger(Object.assign(Object.assign({},e.statusCompleteAppLink),{params:r})):null===(t=e.onStatusCompleted)||void 0===t||t.call(e)}()},2e3):d.current=window.setTimeout(b,x)}function w(t){c===U&&(window.clearTimeout(d.current),e.navLockId&&p.unlock(e.navLockId),(0,y.r)(t)),u(function(e){return e+1}),d.current=window.setTimeout(b,x)}return n.useEffect(function(){return b(),function(){d.current&&window.clearTimeout(d.current)}},[]),r&&r.status!==g.K.Submitted&&r.status!==g.K.Queued&&r.status!==g.K.Pending&&0!==r.totalItems?n.createElement(v,{totalItems:r.totalItems,totalItemsComplete:r.processedItems,userType:e.userType,objectType:e.objectType,actionName:e.actionName,actionVerb:e.actionVerb,progressVerbPhrase:e.progressVerbPhrase}):n.createElement(f,{actionName:e.actionName,actionVerb:e.actionVerb})}},79352:(e,t,r)=>{r.d(t,{a:()=>l});var n=r(32735),a=r(23481),s=r(15611),i=a.T.encloseNamespace("shared.wizardStepList");function o(e){var t,r,a,i,o,l=n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex"},!e.hideStepNumber&&n.createElement("div",{className:"flex-shrink-0 flex-grow-0"},"".concat(e.index+1,".")," "),n.createElement("div",null,e.text)),e.subText&&n.createElement("div",{className:"ms-2 ps-1 pt-1"},e.subText)),c="px-2 py-1 mb-1 rounded d-inline-block";return e.isSelected&&(c+=" ".concat((null===(t=e.theme)||void 0===t?void 0:t.isSelectedOverride)||"bg-light-blue fw-semibold")),!e.isSelected&&e.isCompleted&&(c+=" ".concat((null===(r=e.theme)||void 0===r?void 0:r.isCompletedOverride)||"text-info")),n.createElement("li",{className:null===(a=e.theme)||void 0===a?void 0:a.item},e.isCompleted&&e.appLink?n.createElement(s.F,{appLink:e.appLink,className:"".concat(c," ").concat((null===(i=e.theme)||void 0===i?void 0:i.itemContent)||"")},l):n.createElement("div",{className:"".concat(c," ").concat((null===(o=e.theme)||void 0===o?void 0:o.itemContent)||"")},l))}function l(e){var t,r=e.steps.reduce(function(t,r,n){return r.id===e.currentStep&&(t=n+1),t},1);return n.createElement(n.Fragment,null,n.createElement("h2",{className:"h4"},i("stepNumber",{currentStep:r,totalSteps:e.steps.length})),n.createElement("ol",{className:"list-unstyled ".concat((null===(t=e.theme)||void 0===t?void 0:t.itemsContainer)||"")},e.steps.map(function(t,a){var s=t.id===e.currentStep,i=r>a+1;return n.createElement(o,{index:a,key:t.id,text:t.text,subText:t.subText,isSelected:s,isCompleted:i,appLink:!e.disableAppLinks&&t.appLink,disabled:t.disabled,theme:e.theme})})))}},58739:(e,t,r)=>{var n;r.d(t,{K:()=>n}),function(e){e[e.Submitted=0]="Submitted",e[e.Queued=1]="Queued",e[e.Pending=2]="Pending",e[e.InProgress=3]="InProgress",e[e.Completed=4]="Completed",e[e.CompletedWithError=5]="CompletedWithError",e[e.Failed=6]="Failed"}(n||(n={}))},94644:(e,t,r)=>{r.d(t,{r:()=>u});var n=r(50242),a=r(81886),s=r(67058),i=r(14553),o=r(49267),l=r(49075),c={notFound:s.d,forbidden:{rating:i.q,yearLevel:i.q,region:o.a,privacy:i.q},badRequest:l._,internalServerError:l._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var s;s="number"==typeof e?e:e.status;var i=Object.assign(Object.assign({},c),t);s&&a.Q.Ry.isStatusCodeError(s)&&(s!==n.o.InternalServer?s!==n.o.NotFound?s!==n.o.Forbidden?r.badRequest||a.Q.Ry.throw(new i.badRequest):r.forbidden||a.Q.Ry.throw(new i.forbidden.privacy):r.notFound||a.Q.Ry.throw(new i.notFound):r.internalServerError||a.Q.Ry.throw(new l._))}}},16695:(e,t,r)=>{r.r(t),r.d(t,{BulkUserUploadStatusPollingView:()=>f});var n=r(32735),a=r(70680),s=r(23481),i=r(20354),o=r(27150),l=r(26055),c=r(43820),u=r(14177),d=r(4594),p=r(79612),m=r(29613),v=r(18087),b="userManager.bulkUserUploadStatusPolling";function f(e){var t=(0,a.I0)(),r=(0,v.Y)(e.userType);return(0,p.M)({title:s.T.getPhrase(b,"pageTitle")}),n.createElement(l.A.Provider,{value:c.a.Primary},n.createElement(o.$,{appLinks:r,userType:e.userType,currentStep:"status",canAddExistingUsers:!0},n.createElement(u.$,{jobId:e.jobId,pollJob:function(r,n){i.a.fetch(t,m.q.getJobProgress(e.jobId,r,n))},objectType:d.E.User,userType:e.userType,statusCompleteAppLink:r.userUploadStatus.complete,actionName:s.T.getPhrase(b,"bulkUpload"),navLockId:o.A,actionVerb:"Create"})))}},29613:(e,t,r)=>{r.d(t,{q:()=>i});var n=r(99940),a=r(97395),s=r(149),i={createJob:function(e,t,r){return{url:"{gateway}/v1/batch/jobs",key:"create:job",type:n.k.POST,data:e,success:t,error:r}},getJobs:function(e){var t={},r=[],n=[];return e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.bulkActionType?(r=Array.isArray(e.bulkActionType)?e.bulkActionType:[e.bulkActionType],t.type=r):t.type=s.O,e.userType&&(n=Array.isArray(e.userType)?e.userType:[e.userType],t.dataType=n),{url:a._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"batch:jobs:".concat(e.cursor,":").concat(e.sort,":").concat(r.sort().join(":"),":").concat(n.sort().join(":"))}},getJob:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e),key:"job:".concat(e)}},getJobProgress:function(e,t,r){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/progress"),key:"job:".concat(e,":progress"),invalidationKeys:"job:".concat(e,":progress"),success:t,error:r}},getJobResults:function(e,t,r,n,s){var i={status:t};return r&&(i.cursor=r),{url:a._.urlBuilder("{gateway}/v1/batch/jobs/".concat(e,"/results"),i),key:"job:".concat(e,":results:").concat(t,":").concat(r),success:n,error:s}},getYearGroupRolloverStatus:function(e){return{url:"{gateway}/v1/batch/validations/customers/".concat(e,"/year-group-roll-over"),key:"year:group:rollover:status"}},sendJobReports:function(e){return{url:"{gateway}/v1/batch/results/export",key:"send:job:reports:".concat(e.sort().join(":")),type:n.k.POST,data:{jobIds:e}}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}}}},79447:(e,t,r)=>{r.d(t,{Z:()=>p});var n=r(95685),a=r.n(n),s=r(32735),i=r(46304),o=r(58661),l=r(74512);function c(e,t,r){const n=(e-t)/(r-t)*100;return Math.round(1e3*n)/1e3}function u({min:e,now:t,max:r,label:n,visuallyHidden:s,striped:i,animated:o,className:u,style:d,variant:p,bsPrefix:m,...v},b){return(0,l.jsx)("div",{ref:b,...v,role:"progressbar",className:a()(u,`${m}-bar`,{[`bg-${p}`]:p,[`${m}-bar-animated`]:o,[`${m}-bar-striped`]:o||i}),style:{width:`${c(t,e,r)}%`,...d},"aria-valuenow":t,"aria-valuemin":e,"aria-valuemax":r,children:s?(0,l.jsx)("span",{className:"visually-hidden",children:n}):n})}const d=s.forwardRef(({isChild:e=!1,...t},r)=>{const n={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...t};if(n.bsPrefix=(0,i.vE)(n.bsPrefix,"progress"),e)return u(n,r);const{min:c,now:d,max:p,label:m,visuallyHidden:v,striped:b,animated:f,bsPrefix:g,variant:y,className:h,children:k,...E}=n;return(0,l.jsx)("div",{ref:r,...E,className:a()(h,g),children:k?(0,o.UI)(k,e=>(0,s.cloneElement)(e,{isChild:!0})):u({min:c,now:d,max:p,label:m,visuallyHidden:v,striped:b,animated:f,bsPrefix:g,variant:y},r)})});d.displayName="ProgressBar";const p=d}}]);
|
|
2
|
-
//# sourceMappingURL=6695-
|
|
2
|
+
//# sourceMappingURL=6695-4ae0acad94-lite.chunk.js.map
|
package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js.map → 6695-4ae0acad94-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6695-4e01b4a18c-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/header/back-buttons/BulkUserUploadBackButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/header/continue-buttons/BulkUserUploadContinueButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/layout/bulk-user-upload-wizard-layout.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout.tsx","file:///app/packages/libs/shared/src/apps/user-manager/context/UserManagerClientContext.ts","file:///app/packages/libs/shared/src/apps/user-manager/hooks/useBulkUploadUsers.ts","file:///app/packages/libs/shared/src/components/wizard/header/WizardHeader.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/in-progress/WizardInProgress.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/submitted/WizardSubmitted.tsx","file:///app/packages/libs/shared/src/components/wizard/status/polling/WizardPolling.tsx","file:///app/packages/libs/shared/src/components/wizard/step-list/WizardStepList.tsx","file:///app/packages/libs/shared/src/enums/BatchJobStatus.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/projects/lite/src/apps/user-manager/views/bulk-user-upload/status/polling/BulkUserUploadStatusPollingView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts","file:///app/node_modules/react-bootstrap/esm/ProgressBar.js"],"sourcesContent":["import React from 'react';\n\nimport { BulkUserUploadStepId } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'userManager.userWizardBackButtons';\n\ninterface BulkUserUploadBackButtonProps {\n currentStep: BulkUserUploadStepId;\n appLinks: UserManagerAppLinks;\n}\n\nexport function BulkUserUploadBackButton(props: BulkUserUploadBackButtonProps): JSX.Element {\n if (props.currentStep === 'status')\n return <></>;\n\n return (\n <AppLink\n className='btn btn-link me-2'\n appLink={props.appLinks.userManager}\n >\n <Text namespace={namespace} phrase='cancel' />\n </AppLink>\n );\n}","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { ContextService } from 'libs/analytics/services/ContextService';\n\nimport { BulkUserUploadStepId } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\n\nconst namespace = 'userManager.userWizardHeader';\n\ninterface BulkUserUploadContinueButtonProps {\n currentStep: BulkUserUploadStepId;\n appLinks: UserManagerAppLinks;\n canAddExistingUsers: boolean;\n}\n\nexport function BulkUserUploadContinueButton(props: BulkUserUploadContinueButtonProps): JSX.Element {\n const { duplicateSets, hasExistingUsers } = useBulkUploadUsers();\n const { disableNext, onClickConfirm } = React.useContext(WizardLayoutContext);\n\n const spreadsheetHasDuplicates = !!duplicateSets?.length;\n\n const currentAppLink = ContextService.getCurrentContext().appLink;\n\n if (currentAppLink.action === props.appLinks.userUploadStatus.polling.action)\n return <></>;\n\n // we hide the button cuz we have one in the success component\n if (currentAppLink.action === props.appLinks.userUploadStatus.complete.action)\n return <></>;\n\n function willUploadOnNext(): boolean {\n switch (currentAppLink.action) {\n case props.appLinks.userUploadPopup.action:\n case props.appLinks.userUploadReviewAccounts.action:\n return !spreadsheetHasDuplicates && !hasExistingUsers;\n\n case props.appLinks.userUploadFixDuplicates.action:\n return !hasExistingUsers;\n\n case props.appLinks.userUploadReviewExistingAccounts.action:\n return !hasExistingUsers;\n\n default:\n return true;\n }\n }\n\n if (willUploadOnNext()) {\n return (\n <Button\n className={disableNext ? 'disabled' : ''}\n variant='dark'\n onClick={onClickConfirm}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='create'\n />\n </Button>\n );\n }\n\n function getNextAppLink() {\n switch (currentAppLink.action) {\n case props.appLinks.userUploadReviewAccounts.action:\n if (spreadsheetHasDuplicates)\n return props.appLinks.userUploadFixDuplicates;\n if (hasExistingUsers && props.canAddExistingUsers)\n return props.appLinks.userUploadReviewExistingAccounts;\n\n case props.appLinks.userUploadFixDuplicates.action:\n if (hasExistingUsers && props.canAddExistingUsers)\n return props.appLinks.userUploadReviewExistingAccounts;\n\n case props.appLinks.userUploadReviewExistingAccounts.action:\n if (props.canAddExistingUsers)\n return props.appLinks.userUploadConfirmation;\n\n default:\n return null;\n }\n }\n\n return (\n <AppLink\n className={`btn btn-dark ${disableNext ? 'disabled' : ''}`}\n appLink={getNextAppLink()}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='next'\n />\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"wizardContent\":\"hHr3C\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { BulkUserUploadBackButton } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/header/back-buttons/BulkUserUploadBackButton';\nimport { BulkUserUploadContinueButton } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/header/continue-buttons/BulkUserUploadContinueButton';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { WizardHeader } from 'libs/shared/components/wizard/header/WizardHeader';\nimport { WizardStepList } from 'libs/shared/components/wizard/step-list/WizardStepList';\nimport { WizardLayoutContextProvider } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\n\nimport styles from './bulk-user-upload-wizard-layout.scss';\n\nexport type BulkUserUploadStepId = 'review-accounts' | 'fix-duplicates' | 'review-existing-accounts' | 'confirmation' |'status';\n\nconst namespace = 'userManager.bulkUserUploadWizardLayout';\nexport const BULK_USER_UPLOAD_NAV_LOCK_ID = 'bulk:user:upload:nav:lock';\n\ntype BulkUserUploadWizardLayoutProps = React.PropsWithChildren<{\n appLinks: UserManagerAppLinks;\n userType: UserGroup;\n currentStep: BulkUserUploadStepId;\n canAddExistingUsers?: boolean;\n}>;\n\nexport function BulkUserUploadWizardLayout(props: BulkUserUploadWizardLayoutProps): JSX.Element {\n const { users, setUsers } = useBulkUploadUsers();\n\n const navLock = useNavLock();\n\n React.useEffect(() => {\n // If there is no view model, redirect away\n if (!users) {\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n return;\n }\n\n navLock.lock({\n id: BULK_USER_UPLOAD_NAV_LOCK_ID,\n title: LanguageService.getPhrase(namespace, 'navLockTitle'),\n text: LanguageService.getPhrase(namespace, 'navLockBody'),\n appLinkWhitelist: BulkUserUploadHelper.getWizardAppLinks(props.appLinks),\n onConfirmUnlock: () => {\n setUsers(null);\n }\n });\n\n return () => {\n navLock.unlock(BULK_USER_UPLOAD_NAV_LOCK_ID);\n };\n }, []);\n\n React.useEffect(() => {\n if (users?.length)\n return;\n\n navLock.unlock(BULK_USER_UPLOAD_NAV_LOCK_ID);\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n }, [users?.length]);\n\n if (!users)\n return <></>;\n\n return (\n <WizardLayoutContextProvider>\n <div className='px-3'>\n <WizardHeader<BulkUserUploadStepId>\n title={LanguageService.getPhrase(namespace, 'bulkUpload')}\n currentStep={props.currentStep}\n loaded\n continueButton={\n <BulkUserUploadContinueButton\n currentStep={props.currentStep}\n appLinks={props.appLinks}\n canAddExistingUsers={props.canAddExistingUsers}\n />\n }\n backButton={<BulkUserUploadBackButton currentStep={props.currentStep} appLinks={props.appLinks} />}\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: props.appLinks.settings\n },\n {\n name: LanguageService.getPhrase(namespace, props.userType === UserGroup.Learner ? 'studentManager' : 'staffManager'),\n appLink: props.appLinks.userManager\n },\n {\n name: LanguageService.getPhrase(namespace, 'bulkUpload'),\n active: true\n }\n ]}\n />\n\n <div className='row g-0'>\n <div className='col-2'>\n <WizardStepList<BulkUserUploadStepId>\n steps={BulkUserUploadHelper.getSteps(props.userType, props.canAddExistingUsers)}\n currentStep={props.currentStep}\n />\n </div>\n\n <div className={`col-10 ${styles.wizardContent}`}>\n {props.children}\n </div>\n </div>\n </div>\n </WizardLayoutContextProvider>\n );\n}","import React from 'react';\n\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\n\nexport const UserManagerClientContext = React.createContext<UserManagerClient>(null);","import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\n\nimport { EditUserRequest } from '../interfaces';\nimport { BulkUserUploadViewModel, UserHash } from '../interfaces/viewmodels/BulkUserUploadViewModel';\nimport { UserManagerHelper } from '../utils/UserManagerHelper';\n\nfunction updateUserHash(userHash: UserHash, updatedUserIdsHash: HashObject<boolean>): UserHash {\n const updatedUsers = Object.keys(userHash || {}).reduce((updatedObj: UserHash, lookupId) => {\n if (!updatedUserIdsHash[lookupId])\n updatedObj[lookupId] = userHash[lookupId];\n return updatedObj;\n }, {});\n\n return updatedUsers;\n}\n\nexport const useBulkUploadUsers = () => {\n const [ viewModel, setViewModel ] = useViewModel<BulkUserUploadViewModel>(SharedViewModelKeys.BULK_USER_UPLOAD);\n\n function initializeUsers(users?: EditUserRequest[]): void {\n setViewModel({\n users,\n invalidUsers: null,\n existingUsersHash: null\n });\n\n updateDuplicates(users);\n }\n\n function updateUser(updatedUser: EditUserRequest): void {\n const updatedUsers = viewModel.users.map(user => {\n if (user.lookupId !== updatedUser.lookupId)\n return user;\n\n return updatedUser;\n });\n\n setViewModel({\n users: updatedUsers,\n invalidUsers: updateUserHash(viewModel?.invalidUsers, { [updatedUser.lookupId]: true }),\n existingUsersHash: viewModel?.existingUsersHash\n });\n\n updateDuplicates(updatedUsers);\n }\n\n function deleteUsers(deletedUsers: string[]): void {\n const userIdHash = deletedUsers.reduce((prev: HashObject, curr) => {\n prev[curr] = true;\n return prev;\n }, {});\n\n const updatedUsers = viewModel.users.filter(user => !userIdHash[user.lookupId]);\n\n setViewModel({\n users: updatedUsers,\n invalidUsers: updateUserHash(viewModel?.invalidUsers, userIdHash),\n existingUsersHash: updateUserHash(viewModel?.existingUsersHash, userIdHash),\n existingUserToAdd: viewModel?.existingUserToAdd?.filter(u => !!viewModel?.existingUsersHash[u.lookupId])\n });\n\n updateDuplicates(updatedUsers);\n }\n\n function updateDuplicates(users?: EditUserRequest[]): void {\n const duplicateSets = UserManagerHelper.getNewDuplicates(users);\n setViewModel('duplicateSets', duplicateSets);\n }\n\n return {\n users: viewModel?.users,\n invalidUsers: viewModel?.invalidUsers,\n hasValidatedUsers: !!viewModel?.invalidUsers,\n existingUsersHash: viewModel?.existingUsersHash || {},\n hasExistingUsers: !!Object.keys(viewModel?.existingUsersHash || {}).length,\n existingUserToAdd: viewModel?.existingUserToAdd,\n duplicateSets: viewModel?.duplicateSets,\n newUsers: viewModel?.users?.filter(u => !viewModel?.existingUsersHash?.[u.lookupId]) || [],\n\n setUsers: initializeUsers,\n setInvalidUsers: (invalidUsers: UserHash) => setViewModel('invalidUsers', invalidUsers),\n setExistingUsers: (existingUsers: UserHash) => setViewModel('existingUsersHash', existingUsers),\n updateUser,\n deleteUsers\n };\n};","import React from 'react';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\n\ninterface WizardHeaderProps<TStepId> {\n currentStep: TStepId;\n title: string;\n continueButton: JSX.Element;\n backButton: JSX.Element;\n breadcrumbs?: Breadcrumb[];\n hideHeader?: boolean;\n loaded: boolean;\n}\n\nexport function WizardHeader<TStepId>(props: WizardHeaderProps<TStepId>): JSX.Element {\n const { showButtons } = React.useContext(WizardLayoutContext);\n\n return (\n <div className='d-flex justify-content-between'>\n {!props.hideHeader ? (\n <div>\n <h1 className='h2'>{props.title}</h1>\n\n {props.breadcrumbs &&\n <div className='pb-3'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n }\n </div>\n ) : <div/>}\n\n {props.loaded && showButtons && (\n <div className='d-flex align-items-center'>\n {props.backButton}\n {props.continueButton}\n </div>\n )}\n </div>\n );\n}","import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.wizardInProgress';\n\ninterface WizardInProgressProps {\n userType?: UserGroup;\n totalItems: number;\n totalItemsComplete: number;\n actionName: string;\n actionVerb: WizardActionVerb;\n objectType?: MasterType;\n progressVerbPhrase?: string;\n}\n\nexport function WizardInProgress(props: WizardInProgressProps): JSX.Element {\n const percentage = Math.floor(props.totalItemsComplete / props.totalItems * 100) || 0;\n\n function renderProgressText() {\n if (props.objectType === MasterType.User && props.userType) {\n return (\n <Text\n namespace={namespace}\n phrase={props.userType === UserGroup.Learner ? 'progressStudents' : 'progressStaff'}\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n if (props.objectType === MasterType.Video) {\n return (\n <Text\n namespace={namespace}\n phrase='progressVideos'\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n return (\n <Text\n namespace={namespace}\n phrase='progressItems'\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n return (\n <div>\n <div className='d-flex align-items-center mb-2'>\n <h2 className='h5 mb-0'>\n <Text namespace={namespace} phrase='heading' options={{ percentage, actionName: props.actionName }} />\n </h2>\n <SvgContainer svgName={cvSvgLibrary.CheckCircle} />\n </div>\n\n <p>\n <Text namespace={namespace} phrase={`info${props.actionVerb}`} />\n </p>\n\n <p className='mb-1'>\n <span className='text-info'>\n {props.progressVerbPhrase ? (\n <span>{props.progressVerbPhrase}</span>\n ) : (\n <Text namespace={namespace} phrase={`progressVerb${props.actionVerb}`} />\n )}\n </span>\n \n {renderProgressText()}\n </p>\n <ProgressBar variant='info' now={percentage} />\n </div>\n );\n}","import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.wizardSubmitted';\n\ninterface WizardSubmittedProps {\n actionName?: string;\n actionVerb: WizardActionVerb;\n}\n\nexport function WizardSubmitted(props: WizardSubmittedProps): JSX.Element {\n return (\n <div>\n <div className='d-flex align-items-center mb-2'>\n <h2 className='h5 mb-0'>\n {props.actionName\n ? <Text namespace={namespace} phrase='heading' options={{ actionName: props.actionName }} />\n : <Text namespace={namespace} phrase='headingGeneric' />\n }\n </h2>\n <SvgContainer svgName={cvSvgLibrary.CheckCircle} />\n </div>\n\n <p>\n <Text namespace={namespace} phrase={`info${props.actionVerb}`} />\n </p>\n\n <p className='mb-1 text-info'>\n <Text namespace={namespace} phrase='preparing' />\n </p>\n <ProgressBar variant='info' now={0} />\n </div>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { WizardInProgress } from 'libs/shared/components/wizard/status/statuses/in-progress/WizardInProgress';\nimport { WizardSubmitted } from 'libs/shared/components/wizard/status/statuses/submitted/WizardSubmitted';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { BatchJobProgress, WizardActionVerb } from 'libs/shared/interfaces';\n\nconst POLLING_INTERVAL = 2000;\nconst MAX_CONSECUTIVE_ERROR_COUNT = 3; // If the polling endpoint errors 3 times in a row, we will cancel\n\nexport type WizardPollJobFn = (onSuccess: (progress: BatchJobProgress) => void, onError: (xhr: Xhr) => void) => void;\n\ninterface WizardPollingProps {\n jobId: string;\n userType?: UserGroup;\n statusCompleteAppLink?: Core.AppLink;\n onStatusCompleted?: () => void;\n pollJob: WizardPollJobFn;\n actionName: string;\n navLockId?: string;\n actionVerb: WizardActionVerb;\n objectType?: MasterType;\n progressVerbPhrase?: string;\n}\n\nexport function WizardPolling(props: WizardPollingProps): JSX.Element {\n const [ progress, setProgress ] = React.useState<BatchJobProgress>(null);\n const [ consecutiveErrorCount, setConsecutiveErrorCount ] = React.useState(0);\n\n const timeoutIdRef = React.useRef<number>(null);\n\n const navLock = useNavLock();\n const dispatch = useDispatch();\n\n // Kick off polling for the running batch job. Polling will be stopped if user navigates away.\n React.useEffect(() => {\n pollJob();\n\n return () => {\n if (!timeoutIdRef.current)\n return;\n\n window.clearTimeout(timeoutIdRef.current);\n };\n }, []);\n\n function pollJob(): void {\n props.pollJob(onPollSuccess, onPollError);\n }\n\n function onPollSuccess(currentProgress: BatchJobProgress): void {\n setProgress(currentProgress);\n\n // Job is considered completed if status matches any of the following values\n const jobHasCompleted = (\n currentProgress.status === BatchJobStatus.Completed ||\n currentProgress.status === BatchJobStatus.CompletedWithError ||\n currentProgress.status === BatchJobStatus.Failed\n );\n\n if (!jobHasCompleted) {\n timeoutIdRef.current = window.setTimeout(pollJob, POLLING_INTERVAL);\n return;\n }\n\n /**\n * When the job progress is 100%, we want to provide 2 seconds for the\n * progress bar animation to complete before navigating to the \"complete\"\n * view. Otherwise it's a little bit jarring.\n */\n window.setTimeout(() => {\n onCompleteJob();\n }, 2000);\n }\n\n function onPollError(xhr: Xhr): void {\n if (consecutiveErrorCount === MAX_CONSECUTIVE_ERROR_COUNT) {\n window.clearTimeout(timeoutIdRef.current);\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n handleHttpError(xhr);\n }\n\n setConsecutiveErrorCount(currentVal => currentVal + 1);\n timeoutIdRef.current = window.setTimeout(pollJob, POLLING_INTERVAL);\n }\n\n function onCompleteJob(): void {\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n\n const params: HashObject = { jobId: props.jobId };\n\n if (props.userType) {\n params.userType = props.userType;\n\n // Clear all user's in flight cache. This way any users updated in bulk actions will have up to date data.\n dispatch({\n type: Flight.Actions.INVALIDATE,\n keys: [ 'school:users', 'user:count', 'search:aggregation', 'search:users' ],\n request: null\n });\n }\n if (props.statusCompleteAppLink) {\n Core.AppLinkHelper.trigger({\n ...props.statusCompleteAppLink,\n params: params\n });\n return;\n }\n\n props.onStatusCompleted?.();\n }\n\n const hasNotStarted = !!(\n !progress ||\n progress.status === BatchJobStatus.Submitted ||\n progress.status === BatchJobStatus.Queued ||\n progress.status === BatchJobStatus.Pending\n );\n\n if (hasNotStarted || progress.totalItems === 0)\n return <WizardSubmitted actionName={props.actionName} actionVerb={props.actionVerb} />;\n\n return (\n <WizardInProgress\n totalItems={progress.totalItems}\n totalItemsComplete={progress.processedItems}\n userType={props.userType}\n objectType={props.objectType}\n actionName={props.actionName}\n actionVerb={props.actionVerb}\n progressVerbPhrase={props.progressVerbPhrase}\n />\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nconst namespace = 'shared.wizardStepList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface WizardStep<StepId extends string> {\n id: StepId;\n text: string;\n appLink?: Core.AppLink;\n subText?: string;\n disabled?: boolean;\n}\n\ninterface WizardStepListTheme {\n item?: string;\n itemsContainer?: string;\n itemContent?: string;\n isSelectedOverride?: string;\n isCompletedOverride?: string;\n}\n\ninterface WizardStepListItemProps {\n appLink: Core.AppLink;\n isSelected: boolean;\n isCompleted: boolean;\n text: string;\n subText?: string;\n disabled: boolean;\n index: number;\n hideStepNumber?: boolean;\n theme?: WizardStepListTheme;\n}\n\nfunction WizardStepListItem(props: WizardStepListItemProps): JSX.Element {\n const content = (\n <>\n <div className='d-flex'>\n {!props.hideStepNumber && <div className='flex-shrink-0 flex-grow-0'>{`${props.index + 1}.`} </div>}\n <div>{props.text}</div>\n </div>\n\n {props.subText && (\n <div className='ms-2 ps-1 pt-1'>\n {props.subText}\n </div>\n )}\n </>\n );\n\n \n let className = 'px-2 py-1 mb-1 rounded d-inline-block';\n\n if (props.isSelected) {\n className += ` ${props.theme?.isSelectedOverride || 'bg-light-blue fw-semibold'}`;\n }\n\n if ((!props.isSelected && props.isCompleted))\n className += ` ${props.theme?.isCompletedOverride || 'text-info'}`;\n\n return (\n <li className={props.theme?.item}>\n {(props.isCompleted && props.appLink)\n ? (\n <AppLink appLink={props.appLink} className={`${className} ${props.theme?.itemContent || ''}`}>\n {content}\n </AppLink>\n ) : (\n <div className={`${className} ${props.theme?.itemContent || ''}`}>\n {content}\n </div>\n )\n }\n </li>\n );\n}\n\ninterface WizardStepListProps<StepId extends string> {\n currentStep: StepId;\n steps: WizardStep<StepId>[];\n disableAppLinks?: boolean;\n theme?: WizardStepListTheme;\n}\n\nexport function WizardStepList<StepId extends string>(props: WizardStepListProps<StepId>): JSX.Element {\n const currentStepNumber = props.steps.reduce((acc, step, i) => {\n if (step.id === props.currentStep)\n acc = i + 1;\n\n return acc;\n }, 1);\n\n return (\n <>\n <h2 className='h4'>\n {getPhrase('stepNumber', { currentStep: currentStepNumber, totalSteps: props.steps.length })}\n </h2>\n\n <ol className={`list-unstyled ${props.theme?.itemsContainer || ''}`}>\n {props.steps.map((step, i) => {\n const isSelected = step.id === props.currentStep;\n const isCompleted = currentStepNumber > i + 1;\n\n return (\n <WizardStepListItem\n index={i}\n key={step.id}\n text={step.text}\n subText={step.subText}\n isSelected={isSelected}\n isCompleted={isCompleted}\n appLink={!props.disableAppLinks && step.appLink}\n disabled={step.disabled}\n theme={props.theme}\n />\n );\n })}\n </ol>\n </>\n );\n}","export enum BatchJobStatus {\n Submitted = 0,\n Queued = 1,\n Pending = 2,\n InProgress = 3,\n Completed = 4,\n CompletedWithError = 5,\n Failed = 6\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { BULK_USER_UPLOAD_NAV_LOCK_ID, BulkUserUploadWizardLayout } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { UserWizardStatusParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserWizardParams';\nimport { WizardPolling } from 'libs/shared/components/wizard/status/polling/WizardPolling';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJobProgress } from 'libs/shared/interfaces';\n\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespace = 'userManager.bulkUserUploadStatusPolling';\n\nexport function BulkUserUploadStatusPollingView(props: UserWizardStatusParams): JSX.Element {\n const dispatch = useDispatch();\n const appLinks = getUserManagerAppLinks(props.userType);\n\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n\n function pollJob(onSuccess: (progress: BatchJobProgress) => void, onError: (xhr: Xhr) => void): void {\n Flight.fetch(dispatch, JobRequests.getJobProgress(props.jobId, onSuccess, onError));\n }\n\n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <BulkUserUploadWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n currentStep='status'\n canAddExistingUsers\n >\n <WizardPolling\n jobId={props.jobId}\n pollJob={pollJob}\n objectType={MasterType.User}\n userType={props.userType}\n statusCompleteAppLink={appLinks.userUploadStatus.complete}\n actionName={LanguageService.getPhrase(namespace, 'bulkUpload')}\n navLockId={BULK_USER_UPLOAD_NAV_LOCK_ID}\n actionVerb='Create'\n />\n </BulkUserUploadWizardLayout>\n </UserManagerClientContext.Provider>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { SUPPORTED_BATCH_JOB_TYPES } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, BatchJob, BatchJobProgress, BatchJobResultsResponse, CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const JobRequests = {\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'create:job',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n\n getJobs(queryParams: UserAuditLogQueryParams): Flight.Request {\n const params: HashObject = {};\n\n let bulkActionTypes: BatchJobType[] = [];\n let userTypes: UserGroup[] = [];\n\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.bulkActionType) {\n bulkActionTypes = Array.isArray(queryParams.bulkActionType)\n ? queryParams.bulkActionType\n : [queryParams.bulkActionType];\n\n params.type = bulkActionTypes;\n } else {\n // only show supported type in the table by default\n params.type = SUPPORTED_BATCH_JOB_TYPES;\n }\n\n if (queryParams.userType) {\n userTypes = Array.isArray(queryParams.userType)\n ? queryParams.userType\n : [queryParams.userType];\n\n params.dataType = userTypes;\n }\n \n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `batch:jobs:${queryParams.cursor}:${queryParams.sort}:${bulkActionTypes.sort().join(':')}:${userTypes.sort().join(':')}`\n };\n },\n\n getJob(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}`,\n key: `job:${id}`\n };\n },\n\n getJobProgress(\n id: string,\n success?: (progress: BatchJobProgress) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/progress`,\n key: `job:${id}:progress`,\n invalidationKeys: `job:${id}:progress`,\n success,\n error\n };\n },\n\n getJobResults<TObject extends BaseObject>(\n id: string,\n status: BatchJobResultStatus,\n cursor?: string,\n success?: (results: BatchJobResultsResponse<TObject>) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n const params: HashObject = {\n status\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/batch/jobs/${id}/results`, params),\n key: `job:${id}:results:${status}:${cursor}`,\n success,\n error\n };\n },\n\n getYearGroupRolloverStatus(customerId: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/validations/customers/${customerId}/year-group-roll-over`,\n key: 'year:group:rollover:status'\n };\n },\n\n sendJobReports(ids: string[]): Flight.Request {\n return {\n url: '{gateway}/v1/batch/results/export',\n key: `send:job:reports:${ids.sort().join(':')}`,\n type: HttpVerbs.POST,\n data: {\n jobIds: ids\n }\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n }\n};","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { map } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ROUND_PRECISION = 1000;\n\n/**\n * Validate that children, if any, are instances of `ProgressBar`.\n */\nfunction onlyProgressBar(props, propName, componentName) {\n const children = props[propName];\n if (!children) {\n return null;\n }\n let error = null;\n React.Children.forEach(children, child => {\n if (error) {\n return;\n }\n\n /**\n * Compare types in a way that works with libraries that patch and proxy\n * components like react-hot-loader.\n *\n * see https://github.com/gaearon/react-hot-loader#checking-element-types\n */\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const element = /*#__PURE__*/_jsx(ProgressBar, {});\n if (child.type === element.type) return;\n const childType = child.type;\n const childIdentifier = /*#__PURE__*/React.isValidElement(child) ? childType.displayName || childType.name || childType : child;\n error = new Error(`Children of ${componentName} can contain only ProgressBar ` + `components. Found ${childIdentifier}.`);\n });\n return error;\n}\nfunction getPercentage(now, min, max) {\n const percentage = (now - min) / (max - min) * 100;\n return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\nfunction renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n className,\n style,\n variant,\n bsPrefix,\n ...props\n}, ref) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...props,\n role: \"progressbar\",\n className: classNames(className, `${bsPrefix}-bar`, {\n [`bg-${variant}`]: variant,\n [`${bsPrefix}-bar-animated`]: animated,\n [`${bsPrefix}-bar-striped`]: animated || striped\n }),\n style: {\n width: `${getPercentage(now, min, max)}%`,\n ...style\n },\n \"aria-valuenow\": now,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n children: visuallyHidden ? /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: label\n }) : label\n });\n}\nconst ProgressBar = /*#__PURE__*/React.forwardRef(({\n isChild = false,\n ...rest\n}, ref) => {\n const props = {\n min: 0,\n max: 100,\n animated: false,\n visuallyHidden: false,\n striped: false,\n ...rest\n };\n props.bsPrefix = useBootstrapPrefix(props.bsPrefix, 'progress');\n if (isChild) {\n return renderProgressBar(props, ref);\n }\n const {\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant,\n className,\n children,\n ...wrapperProps\n } = props;\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...wrapperProps,\n className: classNames(className, bsPrefix),\n children: children ? map(children, child => /*#__PURE__*/cloneElement(child, {\n isChild: true\n })) : renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant\n }, ref)\n });\n});\nProgressBar.displayName = 'ProgressBar';\nexport default ProgressBar;"],"names":["namespace","BulkUserUploadBackButton","props","currentStep","AppLink","className","appLink","appLinks","userManager","Text","phrase","BulkUserUploadContinueButton","useBulkUploadUsers","duplicateSets","hasExistingUsers","WizardLayoutContext","disableNext","onClickConfirm","spreadsheetHasDuplicates","length","currentAppLink","ContextService","action","userUploadStatus","polling","complete","userUploadPopup","userUploadReviewAccounts","userUploadFixDuplicates","userUploadReviewExistingAccounts","willUploadOnNext","Button","variant","onClick","disabled","canAddExistingUsers","userUploadConfirmation","getNextAppLink","BULK_USER_UPLOAD_NAV_LOCK_ID","BulkUserUploadWizardLayout","users","setUsers","navLock","useNavLock","lock","id","title","LanguageService","text","appLinkWhitelist","BulkUserUploadHelper","onConfirmUnlock","unlock","replace","WizardHeader","loaded","continueButton","backButton","breadcrumbs","name","settings","userType","UserGroup","active","WizardStepList","steps","children","UserManagerClientContext","updateUserHash","userHash","updatedUserIdsHash","Object","keys","reduce","updatedObj","lookupId","viewModel","setViewModel","updateDuplicates","invalidUsers","hasValidatedUsers","existingUsersHash","existingUserToAdd","newUsers","filter","u","setInvalidUsers","setExistingUsers","existingUsers","updateUser","updatedUser","updatedUsers","map","user","deleteUsers","deletedUsers","userIdHash","prev","curr","showButtons","hideHeader","WizardInProgress","percentage","Math","floor","totalItemsComplete","totalItems","options","actionName","SvgContainer","svgName","actionVerb","progressVerbPhrase","objectType","MasterType","totalComplete","total","smartCount","ProgressBar","now","WizardSubmitted","POLLING_INTERVAL","MAX_CONSECUTIVE_ERROR_COUNT","WizardPolling","progress","setProgress","consecutiveErrorCount","setConsecutiveErrorCount","timeoutIdRef","dispatch","pollJob","onPollSuccess","onPollError","currentProgress","status","BatchJobStatus","window","setTimeout","navLockId","params","jobId","type","request","statusCompleteAppLink","onStatusCompleted","onCompleteJob","current","xhr","clearTimeout","currentVal","processedItems","getPhrase","WizardStepListItem","content","hideStepNumber","index","subText","isSelected","theme","isSelectedOverride","isCompleted","isCompletedOverride","item","itemContent","currentStepNumber","acc","step","i","totalSteps","itemsContainer","key","disableAppLinks","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","BulkUserUploadStatusPollingView","value","onSuccess","onError","JobRequests","createJob","data","success","error","url","getJobs","queryParams","bulkActionTypes","userTypes","cursor","sort","order","bulkActionType","Array","isArray","dataType","join","getJob","getJobProgress","invalidationKeys","getJobResults","getYearGroupRolloverStatus","customerId","sendJobReports","ids","jobIds","getJobSummary","getPercentage","min","max","round","renderProgressBar","label","visuallyHidden","striped","animated","style","bsPrefix","ref","role","width","isChild","rest","wrapperProps","child","cloneElement","displayName"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/6695-4ae0acad94-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/header/back-buttons/BulkUserUploadBackButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/header/continue-buttons/BulkUserUploadContinueButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/layout/bulk-user-upload-wizard-layout.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout.tsx","file:///app/packages/libs/shared/src/apps/user-manager/context/UserManagerClientContext.ts","file:///app/packages/libs/shared/src/apps/user-manager/hooks/useBulkUploadUsers.ts","file:///app/packages/libs/shared/src/components/wizard/header/WizardHeader.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/in-progress/WizardInProgress.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/submitted/WizardSubmitted.tsx","file:///app/packages/libs/shared/src/components/wizard/status/polling/WizardPolling.tsx","file:///app/packages/libs/shared/src/components/wizard/step-list/WizardStepList.tsx","file:///app/packages/libs/shared/src/enums/BatchJobStatus.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/projects/lite/src/apps/user-manager/views/bulk-user-upload/status/polling/BulkUserUploadStatusPollingView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts","file:///app/node_modules/react-bootstrap/esm/ProgressBar.js"],"sourcesContent":["import React from 'react';\n\nimport { BulkUserUploadStepId } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'userManager.userWizardBackButtons';\n\ninterface BulkUserUploadBackButtonProps {\n currentStep: BulkUserUploadStepId;\n appLinks: UserManagerAppLinks;\n}\n\nexport function BulkUserUploadBackButton(props: BulkUserUploadBackButtonProps): JSX.Element {\n if (props.currentStep === 'status')\n return <></>;\n\n return (\n <AppLink\n className='btn btn-link me-2'\n appLink={props.appLinks.userManager}\n >\n <Text namespace={namespace} phrase='cancel' />\n </AppLink>\n );\n}","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { ContextService } from 'libs/analytics/services/ContextService';\n\nimport { BulkUserUploadStepId } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\n\nconst namespace = 'userManager.userWizardHeader';\n\ninterface BulkUserUploadContinueButtonProps {\n currentStep: BulkUserUploadStepId;\n appLinks: UserManagerAppLinks;\n canAddExistingUsers: boolean;\n}\n\nexport function BulkUserUploadContinueButton(props: BulkUserUploadContinueButtonProps): JSX.Element {\n const { duplicateSets, hasExistingUsers } = useBulkUploadUsers();\n const { disableNext, onClickConfirm } = React.useContext(WizardLayoutContext);\n\n const spreadsheetHasDuplicates = !!duplicateSets?.length;\n\n const currentAppLink = ContextService.getCurrentContext().appLink;\n\n if (currentAppLink.action === props.appLinks.userUploadStatus.polling.action)\n return <></>;\n\n // we hide the button cuz we have one in the success component\n if (currentAppLink.action === props.appLinks.userUploadStatus.complete.action)\n return <></>;\n\n function willUploadOnNext(): boolean {\n switch (currentAppLink.action) {\n case props.appLinks.userUploadPopup.action:\n case props.appLinks.userUploadReviewAccounts.action:\n return !spreadsheetHasDuplicates && !hasExistingUsers;\n\n case props.appLinks.userUploadFixDuplicates.action:\n return !hasExistingUsers;\n\n case props.appLinks.userUploadReviewExistingAccounts.action:\n return !hasExistingUsers;\n\n default:\n return true;\n }\n }\n\n if (willUploadOnNext()) {\n return (\n <Button\n className={disableNext ? 'disabled' : ''}\n variant='dark'\n onClick={onClickConfirm}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='create'\n />\n </Button>\n );\n }\n\n function getNextAppLink() {\n switch (currentAppLink.action) {\n case props.appLinks.userUploadReviewAccounts.action:\n if (spreadsheetHasDuplicates)\n return props.appLinks.userUploadFixDuplicates;\n if (hasExistingUsers && props.canAddExistingUsers)\n return props.appLinks.userUploadReviewExistingAccounts;\n\n case props.appLinks.userUploadFixDuplicates.action:\n if (hasExistingUsers && props.canAddExistingUsers)\n return props.appLinks.userUploadReviewExistingAccounts;\n\n case props.appLinks.userUploadReviewExistingAccounts.action:\n if (props.canAddExistingUsers)\n return props.appLinks.userUploadConfirmation;\n\n default:\n return null;\n }\n }\n\n return (\n <AppLink\n className={`btn btn-dark ${disableNext ? 'disabled' : ''}`}\n appLink={getNextAppLink()}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='next'\n />\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"wizardContent\":\"hHr3C\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { BulkUserUploadBackButton } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/header/back-buttons/BulkUserUploadBackButton';\nimport { BulkUserUploadContinueButton } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/header/continue-buttons/BulkUserUploadContinueButton';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { WizardHeader } from 'libs/shared/components/wizard/header/WizardHeader';\nimport { WizardStepList } from 'libs/shared/components/wizard/step-list/WizardStepList';\nimport { WizardLayoutContextProvider } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\n\nimport styles from './bulk-user-upload-wizard-layout.scss';\n\nexport type BulkUserUploadStepId = 'review-accounts' | 'fix-duplicates' | 'review-existing-accounts' | 'confirmation' |'status';\n\nconst namespace = 'userManager.bulkUserUploadWizardLayout';\nexport const BULK_USER_UPLOAD_NAV_LOCK_ID = 'bulk:user:upload:nav:lock';\n\ntype BulkUserUploadWizardLayoutProps = React.PropsWithChildren<{\n appLinks: UserManagerAppLinks;\n userType: UserGroup;\n currentStep: BulkUserUploadStepId;\n canAddExistingUsers?: boolean;\n}>;\n\nexport function BulkUserUploadWizardLayout(props: BulkUserUploadWizardLayoutProps): JSX.Element {\n const { users, setUsers } = useBulkUploadUsers();\n\n const navLock = useNavLock();\n\n React.useEffect(() => {\n // If there is no view model, redirect away\n if (!users) {\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n return;\n }\n\n navLock.lock({\n id: BULK_USER_UPLOAD_NAV_LOCK_ID,\n title: LanguageService.getPhrase(namespace, 'navLockTitle'),\n text: LanguageService.getPhrase(namespace, 'navLockBody'),\n appLinkWhitelist: BulkUserUploadHelper.getWizardAppLinks(props.appLinks),\n onConfirmUnlock: () => {\n setUsers(null);\n }\n });\n\n return () => {\n navLock.unlock(BULK_USER_UPLOAD_NAV_LOCK_ID);\n };\n }, []);\n\n React.useEffect(() => {\n if (users?.length)\n return;\n\n navLock.unlock(BULK_USER_UPLOAD_NAV_LOCK_ID);\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n }, [users?.length]);\n\n if (!users)\n return <></>;\n\n return (\n <WizardLayoutContextProvider>\n <div className='px-3'>\n <WizardHeader<BulkUserUploadStepId>\n title={LanguageService.getPhrase(namespace, 'bulkUpload')}\n currentStep={props.currentStep}\n loaded\n continueButton={\n <BulkUserUploadContinueButton\n currentStep={props.currentStep}\n appLinks={props.appLinks}\n canAddExistingUsers={props.canAddExistingUsers}\n />\n }\n backButton={<BulkUserUploadBackButton currentStep={props.currentStep} appLinks={props.appLinks} />}\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: props.appLinks.settings\n },\n {\n name: LanguageService.getPhrase(namespace, props.userType === UserGroup.Learner ? 'studentManager' : 'staffManager'),\n appLink: props.appLinks.userManager\n },\n {\n name: LanguageService.getPhrase(namespace, 'bulkUpload'),\n active: true\n }\n ]}\n />\n\n <div className='row g-0'>\n <div className='col-2'>\n <WizardStepList<BulkUserUploadStepId>\n steps={BulkUserUploadHelper.getSteps(props.userType, props.canAddExistingUsers)}\n currentStep={props.currentStep}\n />\n </div>\n\n <div className={`col-10 ${styles.wizardContent}`}>\n {props.children}\n </div>\n </div>\n </div>\n </WizardLayoutContextProvider>\n );\n}","import React from 'react';\n\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\n\nexport const UserManagerClientContext = React.createContext<UserManagerClient>(null);","import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\n\nimport { EditUserRequest } from '../interfaces';\nimport { BulkUserUploadViewModel, UserHash } from '../interfaces/viewmodels/BulkUserUploadViewModel';\nimport { UserManagerHelper } from '../utils/UserManagerHelper';\n\nfunction updateUserHash(userHash: UserHash, updatedUserIdsHash: HashObject<boolean>): UserHash {\n const updatedUsers = Object.keys(userHash || {}).reduce((updatedObj: UserHash, lookupId) => {\n if (!updatedUserIdsHash[lookupId])\n updatedObj[lookupId] = userHash[lookupId];\n return updatedObj;\n }, {});\n\n return updatedUsers;\n}\n\nexport const useBulkUploadUsers = () => {\n const [ viewModel, setViewModel ] = useViewModel<BulkUserUploadViewModel>(SharedViewModelKeys.BULK_USER_UPLOAD);\n\n function initializeUsers(users?: EditUserRequest[]): void {\n setViewModel({\n users,\n invalidUsers: null,\n existingUsersHash: null\n });\n\n updateDuplicates(users);\n }\n\n function updateUser(updatedUser: EditUserRequest): void {\n const updatedUsers = viewModel.users.map(user => {\n if (user.lookupId !== updatedUser.lookupId)\n return user;\n\n return updatedUser;\n });\n\n setViewModel({\n users: updatedUsers,\n invalidUsers: updateUserHash(viewModel?.invalidUsers, { [updatedUser.lookupId]: true }),\n existingUsersHash: viewModel?.existingUsersHash\n });\n\n updateDuplicates(updatedUsers);\n }\n\n function deleteUsers(deletedUsers: string[]): void {\n const userIdHash = deletedUsers.reduce((prev: HashObject, curr) => {\n prev[curr] = true;\n return prev;\n }, {});\n\n const updatedUsers = viewModel.users.filter(user => !userIdHash[user.lookupId]);\n\n setViewModel({\n users: updatedUsers,\n invalidUsers: updateUserHash(viewModel?.invalidUsers, userIdHash),\n existingUsersHash: updateUserHash(viewModel?.existingUsersHash, userIdHash),\n existingUserToAdd: viewModel?.existingUserToAdd?.filter(u => !!viewModel?.existingUsersHash[u.lookupId])\n });\n\n updateDuplicates(updatedUsers);\n }\n\n function updateDuplicates(users?: EditUserRequest[]): void {\n const duplicateSets = UserManagerHelper.getNewDuplicates(users);\n setViewModel('duplicateSets', duplicateSets);\n }\n\n return {\n users: viewModel?.users,\n invalidUsers: viewModel?.invalidUsers,\n hasValidatedUsers: !!viewModel?.invalidUsers,\n existingUsersHash: viewModel?.existingUsersHash || {},\n hasExistingUsers: !!Object.keys(viewModel?.existingUsersHash || {}).length,\n existingUserToAdd: viewModel?.existingUserToAdd,\n duplicateSets: viewModel?.duplicateSets,\n newUsers: viewModel?.users?.filter(u => !viewModel?.existingUsersHash?.[u.lookupId]) || [],\n\n setUsers: initializeUsers,\n setInvalidUsers: (invalidUsers: UserHash) => setViewModel('invalidUsers', invalidUsers),\n setExistingUsers: (existingUsers: UserHash) => setViewModel('existingUsersHash', existingUsers),\n updateUser,\n deleteUsers\n };\n};","import React from 'react';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\n\ninterface WizardHeaderProps<TStepId> {\n currentStep: TStepId;\n title: string;\n continueButton: JSX.Element;\n backButton: JSX.Element;\n breadcrumbs?: Breadcrumb[];\n hideHeader?: boolean;\n loaded: boolean;\n}\n\nexport function WizardHeader<TStepId>(props: WizardHeaderProps<TStepId>): JSX.Element {\n const { showButtons } = React.useContext(WizardLayoutContext);\n\n return (\n <div className='d-flex justify-content-between'>\n {!props.hideHeader ? (\n <div>\n <h1 className='h2'>{props.title}</h1>\n\n {props.breadcrumbs &&\n <div className='pb-3'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n }\n </div>\n ) : <div/>}\n\n {props.loaded && showButtons && (\n <div className='d-flex align-items-center'>\n {props.backButton}\n {props.continueButton}\n </div>\n )}\n </div>\n );\n}","import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.wizardInProgress';\n\ninterface WizardInProgressProps {\n userType?: UserGroup;\n totalItems: number;\n totalItemsComplete: number;\n actionName: string;\n actionVerb: WizardActionVerb;\n objectType?: MasterType;\n progressVerbPhrase?: string;\n}\n\nexport function WizardInProgress(props: WizardInProgressProps): JSX.Element {\n const percentage = Math.floor(props.totalItemsComplete / props.totalItems * 100) || 0;\n\n function renderProgressText() {\n if (props.objectType === MasterType.User && props.userType) {\n return (\n <Text\n namespace={namespace}\n phrase={props.userType === UserGroup.Learner ? 'progressStudents' : 'progressStaff'}\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n if (props.objectType === MasterType.Video) {\n return (\n <Text\n namespace={namespace}\n phrase='progressVideos'\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n return (\n <Text\n namespace={namespace}\n phrase='progressItems'\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n return (\n <div>\n <div className='d-flex align-items-center mb-2'>\n <h2 className='h5 mb-0'>\n <Text namespace={namespace} phrase='heading' options={{ percentage, actionName: props.actionName }} />\n </h2>\n <SvgContainer svgName={cvSvgLibrary.CheckCircle} />\n </div>\n\n <p>\n <Text namespace={namespace} phrase={`info${props.actionVerb}`} />\n </p>\n\n <p className='mb-1'>\n <span className='text-info'>\n {props.progressVerbPhrase ? (\n <span>{props.progressVerbPhrase}</span>\n ) : (\n <Text namespace={namespace} phrase={`progressVerb${props.actionVerb}`} />\n )}\n </span>\n \n {renderProgressText()}\n </p>\n <ProgressBar variant='info' now={percentage} />\n </div>\n );\n}","import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.wizardSubmitted';\n\ninterface WizardSubmittedProps {\n actionName?: string;\n actionVerb: WizardActionVerb;\n}\n\nexport function WizardSubmitted(props: WizardSubmittedProps): JSX.Element {\n return (\n <div>\n <div className='d-flex align-items-center mb-2'>\n <h2 className='h5 mb-0'>\n {props.actionName\n ? <Text namespace={namespace} phrase='heading' options={{ actionName: props.actionName }} />\n : <Text namespace={namespace} phrase='headingGeneric' />\n }\n </h2>\n <SvgContainer svgName={cvSvgLibrary.CheckCircle} />\n </div>\n\n <p>\n <Text namespace={namespace} phrase={`info${props.actionVerb}`} />\n </p>\n\n <p className='mb-1 text-info'>\n <Text namespace={namespace} phrase='preparing' />\n </p>\n <ProgressBar variant='info' now={0} />\n </div>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { WizardInProgress } from 'libs/shared/components/wizard/status/statuses/in-progress/WizardInProgress';\nimport { WizardSubmitted } from 'libs/shared/components/wizard/status/statuses/submitted/WizardSubmitted';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { BatchJobProgress, WizardActionVerb } from 'libs/shared/interfaces';\n\nconst POLLING_INTERVAL = 2000;\nconst MAX_CONSECUTIVE_ERROR_COUNT = 3; // If the polling endpoint errors 3 times in a row, we will cancel\n\nexport type WizardPollJobFn = (onSuccess: (progress: BatchJobProgress) => void, onError: (xhr: Xhr) => void) => void;\n\ninterface WizardPollingProps {\n jobId: string;\n userType?: UserGroup;\n statusCompleteAppLink?: Core.AppLink;\n onStatusCompleted?: () => void;\n pollJob: WizardPollJobFn;\n actionName: string;\n navLockId?: string;\n actionVerb: WizardActionVerb;\n objectType?: MasterType;\n progressVerbPhrase?: string;\n}\n\nexport function WizardPolling(props: WizardPollingProps): JSX.Element {\n const [ progress, setProgress ] = React.useState<BatchJobProgress>(null);\n const [ consecutiveErrorCount, setConsecutiveErrorCount ] = React.useState(0);\n\n const timeoutIdRef = React.useRef<number>(null);\n\n const navLock = useNavLock();\n const dispatch = useDispatch();\n\n // Kick off polling for the running batch job. Polling will be stopped if user navigates away.\n React.useEffect(() => {\n pollJob();\n\n return () => {\n if (!timeoutIdRef.current)\n return;\n\n window.clearTimeout(timeoutIdRef.current);\n };\n }, []);\n\n function pollJob(): void {\n props.pollJob(onPollSuccess, onPollError);\n }\n\n function onPollSuccess(currentProgress: BatchJobProgress): void {\n setProgress(currentProgress);\n\n // Job is considered completed if status matches any of the following values\n const jobHasCompleted = (\n currentProgress.status === BatchJobStatus.Completed ||\n currentProgress.status === BatchJobStatus.CompletedWithError ||\n currentProgress.status === BatchJobStatus.Failed\n );\n\n if (!jobHasCompleted) {\n timeoutIdRef.current = window.setTimeout(pollJob, POLLING_INTERVAL);\n return;\n }\n\n /**\n * When the job progress is 100%, we want to provide 2 seconds for the\n * progress bar animation to complete before navigating to the \"complete\"\n * view. Otherwise it's a little bit jarring.\n */\n window.setTimeout(() => {\n onCompleteJob();\n }, 2000);\n }\n\n function onPollError(xhr: Xhr): void {\n if (consecutiveErrorCount === MAX_CONSECUTIVE_ERROR_COUNT) {\n window.clearTimeout(timeoutIdRef.current);\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n handleHttpError(xhr);\n }\n\n setConsecutiveErrorCount(currentVal => currentVal + 1);\n timeoutIdRef.current = window.setTimeout(pollJob, POLLING_INTERVAL);\n }\n\n function onCompleteJob(): void {\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n\n const params: HashObject = { jobId: props.jobId };\n\n if (props.userType) {\n params.userType = props.userType;\n\n // Clear all user's in flight cache. This way any users updated in bulk actions will have up to date data.\n dispatch({\n type: Flight.Actions.INVALIDATE,\n keys: [ 'school:users', 'user:count', 'search:aggregation', 'search:users' ],\n request: null\n });\n }\n if (props.statusCompleteAppLink) {\n Core.AppLinkHelper.trigger({\n ...props.statusCompleteAppLink,\n params: params\n });\n return;\n }\n\n props.onStatusCompleted?.();\n }\n\n const hasNotStarted = !!(\n !progress ||\n progress.status === BatchJobStatus.Submitted ||\n progress.status === BatchJobStatus.Queued ||\n progress.status === BatchJobStatus.Pending\n );\n\n if (hasNotStarted || progress.totalItems === 0)\n return <WizardSubmitted actionName={props.actionName} actionVerb={props.actionVerb} />;\n\n return (\n <WizardInProgress\n totalItems={progress.totalItems}\n totalItemsComplete={progress.processedItems}\n userType={props.userType}\n objectType={props.objectType}\n actionName={props.actionName}\n actionVerb={props.actionVerb}\n progressVerbPhrase={props.progressVerbPhrase}\n />\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nconst namespace = 'shared.wizardStepList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface WizardStep<StepId extends string> {\n id: StepId;\n text: string;\n appLink?: Core.AppLink;\n subText?: string;\n disabled?: boolean;\n openInNewTab?: boolean;\n}\n\ninterface WizardStepListTheme {\n item?: string;\n itemsContainer?: string;\n itemContent?: string;\n isSelectedOverride?: string;\n isCompletedOverride?: string;\n}\n\ninterface WizardStepListItemProps {\n appLink: Core.AppLink;\n isSelected: boolean;\n isCompleted: boolean;\n text: string;\n subText?: string;\n disabled: boolean;\n index: number;\n hideStepNumber?: boolean;\n theme?: WizardStepListTheme;\n}\n\nfunction WizardStepListItem(props: WizardStepListItemProps): JSX.Element {\n const content = (\n <>\n <div className='d-flex'>\n {!props.hideStepNumber && <div className='flex-shrink-0 flex-grow-0'>{`${props.index + 1}.`} </div>}\n <div>{props.text}</div>\n </div>\n\n {props.subText && (\n <div className='ms-2 ps-1 pt-1'>\n {props.subText}\n </div>\n )}\n </>\n );\n\n \n let className = 'px-2 py-1 mb-1 rounded d-inline-block';\n\n if (props.isSelected) {\n className += ` ${props.theme?.isSelectedOverride || 'bg-light-blue fw-semibold'}`;\n }\n\n if ((!props.isSelected && props.isCompleted))\n className += ` ${props.theme?.isCompletedOverride || 'text-info'}`;\n\n return (\n <li className={props.theme?.item}>\n {(props.isCompleted && props.appLink)\n ? (\n <AppLink appLink={props.appLink} className={`${className} ${props.theme?.itemContent || ''}`}>\n {content}\n </AppLink>\n ) : (\n <div className={`${className} ${props.theme?.itemContent || ''}`}>\n {content}\n </div>\n )\n }\n </li>\n );\n}\n\ninterface WizardStepListProps<StepId extends string> {\n currentStep: StepId;\n steps: WizardStep<StepId>[];\n disableAppLinks?: boolean;\n theme?: WizardStepListTheme;\n}\n\nexport function WizardStepList<StepId extends string>(props: WizardStepListProps<StepId>): JSX.Element {\n const currentStepNumber = props.steps.reduce((acc, step, i) => {\n if (step.id === props.currentStep)\n acc = i + 1;\n\n return acc;\n }, 1);\n\n return (\n <>\n <h2 className='h4'>\n {getPhrase('stepNumber', { currentStep: currentStepNumber, totalSteps: props.steps.length })}\n </h2>\n\n <ol className={`list-unstyled ${props.theme?.itemsContainer || ''}`}>\n {props.steps.map((step, i) => {\n const isSelected = step.id === props.currentStep;\n const isCompleted = currentStepNumber > i + 1;\n\n return (\n <WizardStepListItem\n index={i}\n key={step.id}\n text={step.text}\n subText={step.subText}\n isSelected={isSelected}\n isCompleted={isCompleted}\n appLink={!props.disableAppLinks && step.appLink}\n disabled={step.disabled}\n theme={props.theme}\n />\n );\n })}\n </ol>\n </>\n );\n}","export enum BatchJobStatus {\n Submitted = 0,\n Queued = 1,\n Pending = 2,\n InProgress = 3,\n Completed = 4,\n CompletedWithError = 5,\n Failed = 6\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { BULK_USER_UPLOAD_NAV_LOCK_ID, BulkUserUploadWizardLayout } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { UserWizardStatusParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserWizardParams';\nimport { WizardPolling } from 'libs/shared/components/wizard/status/polling/WizardPolling';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJobProgress } from 'libs/shared/interfaces';\n\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespace = 'userManager.bulkUserUploadStatusPolling';\n\nexport function BulkUserUploadStatusPollingView(props: UserWizardStatusParams): JSX.Element {\n const dispatch = useDispatch();\n const appLinks = getUserManagerAppLinks(props.userType);\n\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n\n function pollJob(onSuccess: (progress: BatchJobProgress) => void, onError: (xhr: Xhr) => void): void {\n Flight.fetch(dispatch, JobRequests.getJobProgress(props.jobId, onSuccess, onError));\n }\n\n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <BulkUserUploadWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n currentStep='status'\n canAddExistingUsers\n >\n <WizardPolling\n jobId={props.jobId}\n pollJob={pollJob}\n objectType={MasterType.User}\n userType={props.userType}\n statusCompleteAppLink={appLinks.userUploadStatus.complete}\n actionName={LanguageService.getPhrase(namespace, 'bulkUpload')}\n navLockId={BULK_USER_UPLOAD_NAV_LOCK_ID}\n actionVerb='Create'\n />\n </BulkUserUploadWizardLayout>\n </UserManagerClientContext.Provider>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { SUPPORTED_BATCH_JOB_TYPES } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, BatchJob, BatchJobProgress, BatchJobResultsResponse, CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const JobRequests = {\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'create:job',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n\n getJobs(queryParams: UserAuditLogQueryParams): Flight.Request {\n const params: HashObject = {};\n\n let bulkActionTypes: BatchJobType[] = [];\n let userTypes: UserGroup[] = [];\n\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.bulkActionType) {\n bulkActionTypes = Array.isArray(queryParams.bulkActionType)\n ? queryParams.bulkActionType\n : [queryParams.bulkActionType];\n\n params.type = bulkActionTypes;\n } else {\n // only show supported type in the table by default\n params.type = SUPPORTED_BATCH_JOB_TYPES;\n }\n\n if (queryParams.userType) {\n userTypes = Array.isArray(queryParams.userType)\n ? queryParams.userType\n : [queryParams.userType];\n\n params.dataType = userTypes;\n }\n \n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `batch:jobs:${queryParams.cursor}:${queryParams.sort}:${bulkActionTypes.sort().join(':')}:${userTypes.sort().join(':')}`\n };\n },\n\n getJob(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}`,\n key: `job:${id}`\n };\n },\n\n getJobProgress(\n id: string,\n success?: (progress: BatchJobProgress) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/progress`,\n key: `job:${id}:progress`,\n invalidationKeys: `job:${id}:progress`,\n success,\n error\n };\n },\n\n getJobResults<TObject extends BaseObject>(\n id: string,\n status: BatchJobResultStatus,\n cursor?: string,\n success?: (results: BatchJobResultsResponse<TObject>) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n const params: HashObject = {\n status\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/batch/jobs/${id}/results`, params),\n key: `job:${id}:results:${status}:${cursor}`,\n success,\n error\n };\n },\n\n getYearGroupRolloverStatus(customerId: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/validations/customers/${customerId}/year-group-roll-over`,\n key: 'year:group:rollover:status'\n };\n },\n\n sendJobReports(ids: string[]): Flight.Request {\n return {\n url: '{gateway}/v1/batch/results/export',\n key: `send:job:reports:${ids.sort().join(':')}`,\n type: HttpVerbs.POST,\n data: {\n jobIds: ids\n }\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n }\n};","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { map } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ROUND_PRECISION = 1000;\n\n/**\n * Validate that children, if any, are instances of `ProgressBar`.\n */\nfunction onlyProgressBar(props, propName, componentName) {\n const children = props[propName];\n if (!children) {\n return null;\n }\n let error = null;\n React.Children.forEach(children, child => {\n if (error) {\n return;\n }\n\n /**\n * Compare types in a way that works with libraries that patch and proxy\n * components like react-hot-loader.\n *\n * see https://github.com/gaearon/react-hot-loader#checking-element-types\n */\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const element = /*#__PURE__*/_jsx(ProgressBar, {});\n if (child.type === element.type) return;\n const childType = child.type;\n const childIdentifier = /*#__PURE__*/React.isValidElement(child) ? childType.displayName || childType.name || childType : child;\n error = new Error(`Children of ${componentName} can contain only ProgressBar ` + `components. Found ${childIdentifier}.`);\n });\n return error;\n}\nfunction getPercentage(now, min, max) {\n const percentage = (now - min) / (max - min) * 100;\n return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\nfunction renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n className,\n style,\n variant,\n bsPrefix,\n ...props\n}, ref) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...props,\n role: \"progressbar\",\n className: classNames(className, `${bsPrefix}-bar`, {\n [`bg-${variant}`]: variant,\n [`${bsPrefix}-bar-animated`]: animated,\n [`${bsPrefix}-bar-striped`]: animated || striped\n }),\n style: {\n width: `${getPercentage(now, min, max)}%`,\n ...style\n },\n \"aria-valuenow\": now,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n children: visuallyHidden ? /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: label\n }) : label\n });\n}\nconst ProgressBar = /*#__PURE__*/React.forwardRef(({\n isChild = false,\n ...rest\n}, ref) => {\n const props = {\n min: 0,\n max: 100,\n animated: false,\n visuallyHidden: false,\n striped: false,\n ...rest\n };\n props.bsPrefix = useBootstrapPrefix(props.bsPrefix, 'progress');\n if (isChild) {\n return renderProgressBar(props, ref);\n }\n const {\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant,\n className,\n children,\n ...wrapperProps\n } = props;\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...wrapperProps,\n className: classNames(className, bsPrefix),\n children: children ? map(children, child => /*#__PURE__*/cloneElement(child, {\n isChild: true\n })) : renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant\n }, ref)\n });\n});\nProgressBar.displayName = 'ProgressBar';\nexport default ProgressBar;"],"names":["namespace","BulkUserUploadBackButton","props","currentStep","AppLink","className","appLink","appLinks","userManager","Text","phrase","BulkUserUploadContinueButton","useBulkUploadUsers","duplicateSets","hasExistingUsers","WizardLayoutContext","disableNext","onClickConfirm","spreadsheetHasDuplicates","length","currentAppLink","ContextService","action","userUploadStatus","polling","complete","userUploadPopup","userUploadReviewAccounts","userUploadFixDuplicates","userUploadReviewExistingAccounts","willUploadOnNext","Button","variant","onClick","disabled","canAddExistingUsers","userUploadConfirmation","getNextAppLink","BULK_USER_UPLOAD_NAV_LOCK_ID","BulkUserUploadWizardLayout","users","setUsers","navLock","useNavLock","lock","id","title","LanguageService","text","appLinkWhitelist","BulkUserUploadHelper","onConfirmUnlock","unlock","replace","WizardHeader","loaded","continueButton","backButton","breadcrumbs","name","settings","userType","UserGroup","active","WizardStepList","steps","children","UserManagerClientContext","updateUserHash","userHash","updatedUserIdsHash","Object","keys","reduce","updatedObj","lookupId","viewModel","setViewModel","updateDuplicates","invalidUsers","hasValidatedUsers","existingUsersHash","existingUserToAdd","newUsers","filter","u","setInvalidUsers","setExistingUsers","existingUsers","updateUser","updatedUser","updatedUsers","map","user","deleteUsers","deletedUsers","userIdHash","prev","curr","showButtons","hideHeader","WizardInProgress","percentage","Math","floor","totalItemsComplete","totalItems","options","actionName","SvgContainer","svgName","actionVerb","progressVerbPhrase","objectType","MasterType","totalComplete","total","smartCount","ProgressBar","now","WizardSubmitted","POLLING_INTERVAL","MAX_CONSECUTIVE_ERROR_COUNT","WizardPolling","progress","setProgress","consecutiveErrorCount","setConsecutiveErrorCount","timeoutIdRef","dispatch","pollJob","onPollSuccess","onPollError","currentProgress","status","BatchJobStatus","window","setTimeout","navLockId","params","jobId","type","request","statusCompleteAppLink","onStatusCompleted","onCompleteJob","current","xhr","clearTimeout","currentVal","processedItems","getPhrase","WizardStepListItem","content","hideStepNumber","index","subText","isSelected","theme","isSelectedOverride","isCompleted","isCompletedOverride","item","itemContent","currentStepNumber","acc","step","i","totalSteps","itemsContainer","key","disableAppLinks","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","BulkUserUploadStatusPollingView","value","onSuccess","onError","JobRequests","createJob","data","success","error","url","getJobs","queryParams","bulkActionTypes","userTypes","cursor","sort","order","bulkActionType","Array","isArray","dataType","join","getJob","getJobProgress","invalidationKeys","getJobResults","getYearGroupRolloverStatus","customerId","sendJobReports","ids","jobIds","getJobSummary","getPercentage","min","max","round","renderProgressBar","label","visuallyHidden","striped","animated","style","bsPrefix","ref","role","width","isChild","rest","wrapperProps","child","cloneElement","displayName"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 6756-3c7f911759-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6756,5193],{1619:(e,t,n)=>{n.d(t,{e:()=>y});var r=n(32735),a=n(23481),o=n(31453),i=n(12528),s=n(83914),l=n(35223),c=n(33518),u=n(2510);function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function m(e,t,n){return(t=function(e){var t=function(e){if("object"!=d(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=d(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==d(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var p=a.T.encloseNamespace("sharev2.shareAvatar"),f=m(m(m(m(m({},u.y.Open,l.vn.Classrooms),u.y.Link,l.vn.Link),u.y.Classroom,l.vn.Classrooms),u.y.Live,l.vn.Play),u.y.LegacyDirect,l.vn.Share),g=m(m(m(m(m({},u.y.Open,"blue"),u.y.Link,"black"),u.y.Classroom,"teal"),u.y.Live,"purple"),u.y.LegacyDirect,"indigo"),v=m(m(m(m(m({},u.y.Open,"openShareType"),u.y.Link,"linkShareType"),u.y.Classroom,"classroomShareType"),u.y.Live,"liveShareType"),u.y.LegacyDirect,"legacyDirectShareType");function y(e){var t,n;return r.createElement("div",{className:(0,o.A)("d-flex align-items-center gap-2",e.className)},r.createElement("div",null,r.createElement(i.f,{svgName:f[e.type],variant:g[e.type],textVariant:"white",svgWrapperClassName:"p-1",svgSize:null!==(t=e.svgSize)&&void 0!==t?t:s.S.Standard})),r.createElement("div",{className:"d-flex flex-column"},r.createElement("p",{className:"m-0"},function(e){var t=e.type,n=e.classroomName,r=e.additionalTitleText;if(t===u.y.Classroom&&n)return n;var a=p(v[t]);return r&&(a+=" "+r),a}(e)),!e.hideSubtitle&&r.createElement("span",{className:"text-secondary"},null!==(n=e.subtitleText)&&void 0!==n?n:function(e){var t=e.type,n=e.privacy,r=e.studentCount,a=void 0===r?0:r,o=e.classroomGroupCount,i=void 0===o?0:o;switch(t){case u.y.Classroom:return function(e,t){return e&&t?"".concat(p("classroomGroupCount",{smartCount:e}),", ").concat(p("studentSubTitle",{smartCount:t})):e?p("groupSubTitle",{smartCount:e}):t?p("studentSubTitle",{smartCount:t}):p("allStudentsSubTitle")}(i,a);case u.y.Open:return p("openShareTypeSubTitle");case u.y.Link:return function(e){return[c.e.JustMySchool,c.e.Protected].includes(e)?p("respectRatingsSubTitle"):e===c.e.JustMySchoolOverrideRestriction?p("anyoneInSchoolSubTitle"):e===c.e.ProtectedOverrideRestriction?p("anyoneSignedInSubTitle"):e===c.e.Public?p("anyoneWithLinkSubTitle"):e===c.e.PinCode?p("anyoneWithPinSubTitle"):void 0}(n);case u.y.Live:return p("liveShareTypeSubTitle");case u.y.LegacyDirect:return p("legacyDirectTypeSubTitle");default:return p("publicShareTypeSubTitle")}}(e))))}},8233:(e,t,n)=>{n.d(t,{R:()=>p});var r=n(23481),a=n(110),o=n(33518),i=n(4594),s=n(49080),l=n(26361),c=n(35223),u=n(31908);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var m=r.T.encloseNamespace("sharev2.utils"),p={getPrivateIconAndText:function(e){var t=e.entityTypeId,n=e.privacy,r=e.hasStudentExp,a=e.entity,s=e.yearGroups;if(t===i.E.Topic||t===i.E.Series)return{icon:c.vn.VisibleOn,text:m(r?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(n))switch(n){case o.e.Public:return{icon:c.vn.VisibleOn,text:m("publicDescription")};case o.e.ProtectedOverrideRestriction:return{icon:c.vn.VisibleOn,text:m("clickViewOnly")};case o.e.Protected:return{icon:c.vn.Lock,text:p.getRespectRatingText(a,s,r)};case o.e.JustMySchoolOverrideRestriction:return{icon:c.vn.Lock,text:m(r?"justMySchoolTeachers":"justMySchoolDescription")};case o.e.JustMySchool:return{icon:c.vn.Lock,text:p.getRespectRatingText(a,s,r)};case o.e.PinCode:return{icon:c.vn.Lock,text:m("pinDescription")};case o.e.PasswordProtected:return{icon:c.vn.Lock,text:m("password")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,n=e.isPasswordProtected,r=e.status;if(!t&&!n)return p.getPrivateIconAndText(e);if(!t)return{icon:c.vn.Lock,text:m("password")};var o=a.O.isToday(t),i=a.O.diffBetween(t,new Date,"day");if(!n){var l=o?m("expiryToday"):m("expiry",{days:i});return r===s.F.Expired&&(l=m("expired")),{icon:c.vn.Timer,text:l}}var u=o?m("passwordExpiryToday"):m("passwordExpiry",{days:i});return r===s.F.Expired&&(u=m("passwordExpired")),{icon:c.vn.Lock,text:u}},getRespectRatingText:function(e,t,n){var r;if(!e||!t)return null;if(n)return m("justMySchoolTeachers");if(!u.M.isVideoType(e))return m("collectionRating");var a=l.l.getWeightedRestriction(null===(r=e._restrictions)||void 0===r?void 0:r.value);if(a&&!a.yearGroup)return m("onlyAdmins");var o,i,s,c=u.M.getRating(e),p=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}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,i=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){s=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(s)throw o}}}}(t);try{for(p.s();!(s=p.n()).done;){var f=s.value;(!o||f.value>o.value)&&(o=f),a&&f.value<=a.yearGroup||c&&f.rating.value<c.value||(!i||f.value<i.value)&&(i=f)}}catch(e){p.e(e)}finally{p.f()}return i?1===t.length?m("clickViewOnly"):i.value===o.value?m("maxYearGroup",{yearGroup:o.name}):m("yearGroupRange",{yearGroup:i.name}):m("onlyStaff")},getShareLinkAccessType:function(e){return e.isTvContent||e.isClickViewContent?"protected":e.canManageAccess?"owner":"private"}}},89067:(e,t,n)=>{n.d(t,{r:()=>o});var r=n(32735);function a(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 o(e){var t,n,o,i,s=(o=r.useState(null===(t=e.animate)||void 0===t||t),i=2,function(e){if(Array.isArray(e))return e}(o)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(o,i)||function(e,t){if(e){if("string"==typeof e)return a(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)?a(e,t):void 0}}(o,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=s[0],c=s[1],u=e.steps[e.step],d=void 0!==e.loading?{loading:e.loading}:{},m=Object.assign(Object.assign(Object.assign({},e.data),d),{animate:null!==(n=e.animate)&&void 0!==n?n:l,closePopup:function(){e.closePopup()},setStep:function(t){c(!1),e.setStep(t)}});if(!u)return r.createElement(r.Fragment,null);var p=u.view;return r.createElement(p,Object.assign({},m))}},94644:(e,t,n)=>{n.d(t,{r:()=>u});var r=n(50242),a=n(81886),o=n(67058),i=n(14553),s=n(49267),l=n(49075),c={notFound:o.d,forbidden:{rating:i.q,yearLevel:i.q,region:s.a,privacy:i.q},badRequest:l._,internalServerError:l._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var i=Object.assign(Object.assign({},c),t);o&&a.Q.Ry.isStatusCodeError(o)&&(o!==r.o.InternalServer?o!==r.o.NotFound?o!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new i.badRequest):n.forbidden||a.Q.Ry.throw(new i.forbidden.privacy):n.notFound||a.Q.Ry.throw(new i.notFound):n.internalServerError||a.Q.Ry.throw(new l._))}}},60115:(e,t,n)=>{n.d(t,{K:()=>c});var r=n(32735),a=n(50242),o=n(91967),i=400,s=n(45719);function l(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 c(e,t,n,c,u,d){var m,p,f,g,v=(m=(0,r.useState)(0),p=2,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(m,p)||function(e,t){if(e){if("string"==typeof e)return l(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)?l(e,t):void 0}}(m,p)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),y=v[0],h=v[1],b=t,S=(0,s.P)(function(t){if(!e)return null;var n=e(t);return n?n.key:null},c,u);return f={fetchNextPage:function(){if(t&&e&&S)return h(function(e){return e+1}),b(S.nextCursor)},hasMore:!!(null==S?void 0:S.nextCursor),isFetching:null==S?void 0:S.isFetching,scrollContainer:d},g=function(){if(!f.isFetching){if(f.scrollContainer){var e=f.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-i)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-i)return;f.fetchNextPage()}},(0,r.useEffect)(function(){var e=o.q.throttle(g,200),t=f.scrollContainer||window;return f.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}},[f.hasMore,f.fetchNextPage,f.scrollContainer]),(0,r.useEffect)(function(){S&&S.shouldInitialFetch&&t&&(b(),h(function(e){return e+1}))},[null==S?void 0:S.shouldInitialFetch,t]),(0,r.useEffect)(function(){var e,t;if((null==S?void 0:S.statusCode)&&o.q.isFunction(n)){var r=+(null===(t=null===(e=S.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));r!==a.k.ClientError&&r!==a.k.ServerError||n(y,S.statusCode)}},[null==S?void 0:S.statusCode]),{items:null==S?void 0:S.items,hasMore:!!(null==S?void 0:S.nextCursor),nextCursor:null==S?void 0:S.nextCursor,isFetching:null==S?void 0:S.isFetching,totalItems:null==S?void 0:S.totalItems,hasFirstPageCompleted:null==S?void 0:S.hasFirstPageCompleted}}},36511:(e,t,n)=>{n.d(t,{I:()=>a});var r=n(38129);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"}}},35690:(e,t,n)=>{n.d(t,{QD:()=>k,Qv:()=>N,__:()=>w});var r=n(32735),a=n(68050),o=n(69111),i=n(42648),s=n(82602),l=n(31453),c=n(1619),u=n(83345),d=n(4594),m="sharev2.shareViewCount";function p(e){return[d.E.Playlist,d.E.Series].includes(e.share.objectTypeId)?r.createElement("span",null,"-"):r.createElement(u.x,{namespace:m,phrase:"viewCount",options:{smartCount:e.share.viewCount||0}})}var f=n(2510),g=n(83914),v=n(35223);function y(e){return[d.E.Playlist,d.E.Series].includes(e.share.objectTypeId)?r.createElement("span",null,"-"):r.createElement("span",{className:"d-inline-flex flex-row gap-2 align-items-center"},r.createElement(g.x,{svgName:v.vn.User}),r.createElement("span",null,function(){var t=e.share.accessCount||0;if(e.share.type===f.y.Open)return"".concat(t);if(e.share.type===f.y.Classroom){var n=e.share.recipients.length;return"".concat(t,"/").concat(n)}return"".concat(t)}()))}var h=n(21789),b=n(15611),S=n(91693);const C={shareListItem:"vLROV",visibleOnHover:"o2KJH"};var E="assign.previousAssignments";function x(e){return r.createElement("div",{className:(0,l.A)("d-flex align-items-center justify-content-between",e.show&&"mb-3")},r.createElement("h3",{className:"h6 m-0 p-0"},r.createElement(u.x,{namespace:E,phrase:"heading",options:{count:e.count}})),r.createElement(S.h,{svgName:e.show?v.vn.ChevronUp:v.vn.ChevronDown,onClick:e.onToggle}))}function w(){var e="d-flex align-items-end justify-content-start fw-medium";return r.createElement(u.D.Provider,{value:E},r.createElement(a.Z,{className:"gx-2 px-3 mb-2"},r.createElement(o.Z,{xs:4,className:e},r.createElement(u.x,{phrase:"assignedTo"})),r.createElement(o.Z,{xs:2,className:e},r.createElement(u.x,{phrase:"views"})),r.createElement(o.Z,{xs:2,className:e},r.createElement(u.x,{phrase:"viewedBy"})),r.createElement(o.Z,{xs:4,className:e},r.createElement(u.x,{phrase:"dateCreated"}))))}function T(e){var t,n=h.x.getClassroomForShare(e.share,e.classrooms),i=null===(t=e.getItemAnalytics)||void 0===t?void 0:t.call(e,e.share);return r.createElement(b.F,{key:e.share.shareId,appLink:e.getItemAppLink(e.share),analyticsData:null==i?void 0:i.data,analyticsOptions:null==i?void 0:i.options,className:(0,l.A)("d-block p-3 hover-bg-light-blue border border-top-0 no-hover-text-underline",C.shareListItem,e.className)},r.createElement(a.Z,{className:"gx-2"},r.createElement(o.Z,{xs:4,className:"d-flex align-items-center"},r.createElement(c.e,{type:e.share.type,privacy:e.share.privacy,classroomName:null==n?void 0:n.name,svgSize:g.S.Small,hideSubtitle:!0})),r.createElement(o.Z,{xs:2,className:"d-flex align-items-center justify-content-start"},r.createElement(p,{share:e.share})),r.createElement(o.Z,{xs:2,className:"d-flex align-items-center justify-content-start"},r.createElement(y,{share:e.share})),r.createElement(o.Z,{xs:4,lg:3,className:"d-flex align-items-center justify-content-start"},r.createElement("span",null,(0,s.WU)(e.share.dateCreated))),r.createElement(o.Z,{lg:1,className:"align-items-center justify-content-end d-none d-lg-flex"},r.createElement("span",{className:(0,l.A)("cursor-pointer text-info hover-text-underline",C.visibleOnHover)},r.createElement(u.x,{namespace:E,phrase:"view"})))))}function N(e){var t;return r.createElement("div",{className:(0,l.A)("d-flex flex-column border-top rounded-top overflow-hidden")},r.createElement(i.ZP,{autoHeight:!0,autoHeightMin:0,autoHeightMax:null!==(t=e.scrollHeightMax)&&void 0!==t?t:215,autoHide:!0},e.assignments.map(function(t,n){return r.createElement(T,{share:t,classrooms:e.classrooms,getItemAppLink:e.getItemAppLink,getItemAnalytics:function(t){var r;return null===(r=e.getItemAnalytics)||void 0===r?void 0:r.call(e,t,n)},className:(0,l.A)(n%2==0&&"bg-gray-100"),key:t.shareId})})))}function k(e){if(!e.assignments.length)return r.createElement(r.Fragment,null);var t=e.show&&e.assignments.length>3;return r.createElement("div",{className:(0,l.A)("bg-white rounded-3 p-3",t&&"pb-0")},r.createElement(x,{count:e.assignments.length,onToggle:e.onToggle,show:e.show}),e.show&&r.createElement(r.Fragment,null,r.createElement(w,null),r.createElement(N,Object.assign({},e))))}},15970:(e,t,n)=>{n.r(t),n.d(t,{AssignFlowView:()=>Jt});var r=n(32735),a=n(89067),o=n(23481),i=n(65858),s=n(95890),l=n(7786),c=n(9103),u=n(64197),d=n(9111),m=n(83351),p=n(85287),f=n(83345);function g(e){return r.createElement(f.D.Provider,{value:"classroomCreatePromptView.createPrompt"},r.createElement("div",{className:"d-flex flex-column align-items-center"},r.createElement("h6",{className:"mb-2"},r.createElement(f.x,{phrase:"title"})),r.createElement("p",{className:"mb-3"},r.createElement(f.x,{phrase:"description"})),r.createElement("button",{className:"btn btn-outline-dark px-4",onClick:e.onClick},r.createElement(f.x,{phrase:"createBtn"}))))}var v=n(88382);function y(e){return r.createElement(f.D.Provider,{value:"classroomCreatePromptView.integrationsPrompt"},r.createElement("div",{className:"d-flex flex-column align-items-center"},r.createElement("h6",{className:"mb-2"},r.createElement(f.x,{phrase:"title"})),r.createElement("p",{className:"mb-3 text-center w-75"},r.createElement(f.x,{phrase:"description"})),r.createElement(v.g,{itemClassName:"col-12 col-sm-6 col-lg-4",maxHeight:200,instanceRegion:e.instanceRegion,contactSupportLink:e.contactSupportLink})))}var h=o.T.encloseNamespace("assign.classroomCreatePromptView"),b=n(83914),S=n(35223),C=n(42648),E=n(97958),x=n(87801),w=n(50023),T=n(99742),N=n(68050),k=n(69111),A=n(80130),I=n(31453),j=n(12528),O=n(98269),P=n(36532),F="assign.narrowSelectionButton",R=o.T.encloseNamespace(F);function M(e){return r.createElement(P.u,{title:R("noStudentsTooltip"),spanHack:!0,placement:"top",disable:e.hasRecipients},r.createElement(O.Z,{variant:"link",className:(0,I.A)("py-0 px-2",e.hasRecipients?"cursor-pointer text-info hover-text-underline":"text-secondary"),onClick:function(){e.hasRecipients&&e.onClickSelectGroupsOrStudents()},disabled:!e.hasRecipients},r.createElement(f.x,{namespace:F,phrase:"narrowSelectionPrompt"})))}function G(e){return r.createElement(N.Z,{className:(0,I.A)("px-2 py-1 g-0 w-100 rounded cursor-pointer mb-1",e.isSelected?"bg-light":"bg-light-hover"),onClick:e.onSelected},r.createElement(k.Z,{md:7,className:"d-flex align-items-center gap-2"},r.createElement(A.Z.Check,{type:"radio",name:"classroom-radio",id:"classroom-radio",className:"form-check",value:e.id,onChange:e.onSelected,checked:e.isSelected}),r.createElement("div",{className:"d-flex align-items-center gap-2"},r.createElement("div",null,r.createElement(j.f,{svgName:S.vn.Classrooms,svgSize:b.S.Standard,variant:"teal",textVariant:"white",svgWrapperClassName:"p-1"})),r.createElement("div",{className:"w-100"},r.createElement("label",{className:"m-0"},e.name),r.createElement("p",{className:"m-0 text-muted font-size-sm"},r.createElement(f.x,{namespace:"assign.classroomSelectorListItem",phrase:"studentsCount",options:{smartCount:e.studentsCount}}))))),r.createElement(k.Z,{md:5,className:(0,I.A)(e.studentsCount?"d-inline-block":"d-none",e.isSelected&&"py-2 py-md-0","d-md-flex justify-content-center align-items-center")},e.isSelected&&r.createElement(M,{hasRecipients:!!e.studentsCount,onClickSelectGroupsOrStudents:e.onClickSelectGroupsOrStudents})))}var L="assign.classroomSelectorList";function D(e){var t=!e.classrooms.hasFirstPageCompleted,n=e.classrooms.items;return t||n.length?r.createElement("div",{className:"d-flex flex-column gap-2"},r.createElement("h3",{className:"h6 m-0"},r.createElement(f.x,{namespace:L,phrase:"listTitle"})),r.createElement("div",null,t&&r.createElement(w.E,null),!t&&r.createElement(C.ZP,{autoHeight:!0,autoHeightMin:300,autoHeightMax:300},n.map(function(t){var n;return r.createElement(G,{key:t.id,id:t.id,isSelected:(null===(n=e.selectedClassroom)||void 0===n?void 0:n.id)===t.id,name:t.name,onClickSelectGroupsOrStudents:e.onClickSelectGroupsOrStudents,onSelected:function(){return e.onClassroomSelected(t)},studentsCount:e.getStudentsCount(t)})}),(e.classrooms.hasMore||e.classrooms.isFetching)&&r.createElement(x._,{isFetching:e.classrooms.isFetching,fetchNext:e.classrooms.fetchNext,nextCursor:e.classrooms.nextCursor,fetchOnScroll:!0})))):r.createElement(E.u,null,r.createElement(E.u.Image,{src:T.W.EmptyStates.Search.RESULTS,size:"small",altText:"No results found"}),r.createElement("h3",{role:"status"},r.createElement(f.x,{phrase:"noResultsTitle",namespace:L,options:{query:e.searchQuery}})),r.createElement(E.u.Info,null,r.createElement(f.x,{namespace:L,phrase:"contactAdminInfo"})," ",r.createElement("a",{className:"p-0 text-info cursor-pointer",onClick:e.onClickCreateOpenClassroom},r.createElement(f.x,{namespace:L,phrase:"createOpenClassroom"}))))}var _=n(16714),B=n(28329),Z=n(22902),U=n(63578);function q(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=o.T.encloseNamespace("assign.classroomSelectorView"),z=n(95685),H=n.n(z),$=n(46304),W=n(61548),Q=n(95960),X=n(74512);const J=r.forwardRef(({className:e,bsPrefix:t,as:n="span",...r},a)=>(t=(0,$.vE)(t,"input-group-text"),(0,X.jsx)(n,{ref:a,className:H()(e,t),...r})));J.displayName="InputGroupText";const Y=J,K=r.forwardRef(({bsPrefix:e,size:t,hasValidation:n,className:a,as:o="div",...i},s)=>{e=(0,$.vE)(e,"input-group");const l=(0,r.useMemo)(()=>({}),[]);return(0,X.jsx)(Q.Z.Provider,{value:l,children:(0,X.jsx)(o,{ref:s,...i,className:H()(a,e,t&&`${e}-${t}`,n&&"has-validation")})})});K.displayName="InputGroup";const ee=Object.assign(K,{Text:Y,Radio:e=>(0,X.jsx)(Y,{children:(0,X.jsx)(W.Z,{type:"radio",...e})}),Checkbox:e=>(0,X.jsx)(Y,{children:(0,X.jsx)(W.Z,{type:"checkbox",...e})})});var te=n(92802),ne=n(20354),re=n(88630),ae=n(27787);function oe(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 ie="assign.createNewClassroomView",se=o.T.encloseNamespace(ie),le=n(89965);function ce(e){if(!e.hide)return r.createElement(N.Z,{className:(0,I.A)("flow-setting-item-group gap-3 gx-0",e.className)},r.createElement(k.Z,{xs:12,className:"h6 m-0"},e.name),r.createElement("div",{className:(0,I.A)("d-flex flex-column gap-3",e.childContainerClassName)},e.children))}ce.Toggle=function(e){var t=r.useId();if(!e.hide)return r.createElement(k.Z,{xs:12,className:(0,I.A)(e.className)},r.createElement("div",{className:"d-flex w-100"},r.createElement(le.X,{id:t,name:t,onChange:e.onClick,checked:e.toggled,disabled:e.disabled}),r.createElement("div",{className:"w-100"},r.createElement("div",{className:"mb-1"},r.createElement("label",{className:"mb-1",htmlFor:t},e.title),r.createElement("p",{className:"m-0 text-secondary"},e.description)),e.children)))},ce.TextArea=function(e){if(!e.hide)return r.createElement(k.Z,{xs:12},r.createElement("textarea",{className:(0,I.A)("form-control","icGmN"),placeholder:e.placeholder,value:e.value,onChange:function(t){return e.onChange(t.target.value)}}))},ce.Divider=function(e){if(!e.hide)return r.createElement("hr",{className:(0,I.A)(!e.withMargins&&"m-0")})};var ue=n(1619),de=n(33518),me=n(2510);function pe(e){var t,n,a;return r.createElement("div",{className:"d-flex align-items-center w-100 gap-2 justify-content-between"},r.createElement("div",{className:"flex-grow-1"},r.createElement(ue.e,{type:me.y.Classroom,privacy:de.e.Direct,classroomName:e.classroom.name,studentCount:null===(n=null===(t=e.classroom)||void 0===t?void 0:t.enrolments)||void 0===n?void 0:n.count,subtitleText:e.subtitleText,hideSubtitle:null===(a=e.hideSubtitle)||void 0===a||a})),"function"==typeof e.onClickChangeClassroom&&r.createElement(O.Z,{variant:"link",className:"text-info hover-text-underline",onClick:e.onClickChangeClassroom},r.createElement(f.x,{namespace:"assign.selectedClassroomHeader",phrase:"changeClassroomButton"})))}var fe=o.T.encloseNamespace("assign.existingClassroomFlowSettings");function ge(e){var t,n,a;return r.createElement("div",{className:"d-flex flex-column gap-4"},r.createElement(pe,{classroom:e.selectedClassroom,hideSubtitle:!1,subtitleText:fe("studentsCount",{smartCount:null!==(a=null===(n=null===(t=e.selectedClassroom)||void 0===t?void 0:t.enrolments)||void 0===n?void 0:n.count)&&void 0!==a?a:0})}),r.createElement(ce,{name:fe("videoSettingsTitle"),hide:e.hidePreventScrubbing&&e.hideImmediateFeedback},r.createElement(ce.Toggle,{hide:e.hidePreventScrubbing,title:fe("preventScrubbingTitle"),description:fe("preventScrubbingDescription"),onClick:e.onTogglePreventScrubbing,toggled:e.preventScrubbing,disabled:e.disablePreventScrubbing}),r.createElement(ce.Toggle,{hide:e.hideImmediateFeedback,title:fe("immediateFeedbackTitle"),description:fe("immediateFeedbackDescription"),onClick:e.onToggleImmediateFeedback,toggled:e.immediateFeedback,disabled:e.disableImmediateFeedback})),r.createElement(ce.Divider,{hide:e.hidePreventScrubbing&&e.hideImmediateFeedback}),r.createElement(ce,{name:fe("moreOptionsTitle"),hide:e.hideMessage,childContainerClassName:"d-flex flex-column gap-2"},r.createElement(ce.Toggle,{hide:e.hideMessage,title:fe("messageTitle"),description:fe("messageDescription"),onClick:e.onToggleMessage,toggled:e.toggleMessage,disabled:e.disableMessage},r.createElement(ce.TextArea,{hide:!e.toggleMessage,placeholder:fe("messagePlaceholder"),onChange:e.onChangeMessage,value:e.message}))))}var ve=n(30439),ye=n(18488);function he(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function o(n,r,a,o){var l=r&&r.prototype instanceof s?r:s,c=Object.create(l.prototype);return be(c,"_invoke",function(n,r,a){var o,s,l,c=0,u=a||[],d=!1,m={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,s=0,l=e,m.n=n,i}};function p(n,r){for(s=n,l=r,t=0;!d&&c&&!a&&t<u.length;t++){var a,o=u[t],p=m.p,f=o[2];n>3?(a=f===r)&&(l=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=p&&((a=n<2&&p<o[1])?(s=0,m.v=r,m.n=o[1]):p<f&&(a=n<3||o[0]>r||r>f)&&(o[4]=n,o[5]=r,m.n=f,s=0))}if(a||n>1)return i;throw d=!0,r}return function(a,u,f){if(c>1)throw TypeError("Generator is already running");for(d&&1===u&&p(u,f),s=u,l=f;(t=s<2?e:l)||!d;){o||(s?s<3?(s>1&&(m.n=-1),p(s,l)):m.n=l:m.v=l);try{if(c=2,o){if(s||(a="next"),t=o[a]){if(!(t=t.call(o,l)))throw TypeError("iterator result is not an object");if(!t.done)return t;l=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(l=TypeError("The iterator does not provide a '"+a+"' method"),s=1);o=e}else if((t=(d=m.n<0)?l:n.call(r,m))!==i)break}catch(t){o=e,s=1,l=t}finally{c=1}}return{value:t,done:d}}}(n,a,o),!0),c}var i={};function s(){}function l(){}function c(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(be(t={},r,function(){return this}),t),d=c.prototype=s.prototype=Object.create(u);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,be(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return l.prototype=c,be(d,"constructor",c),be(c,"constructor",l),l.displayName="GeneratorFunction",be(c,a,"GeneratorFunction"),be(d),be(d,a,"Generator"),be(d,r,function(){return this}),be(d,"toString",function(){return"[object Generator]"}),(he=function(){return{w:o,m}})()}function be(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}be=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var o=function(t,n){be(e,t,function(e){return this._invoke(t,n,e)})};o("next",0),o("throw",1),o("return",2)}},be(e,t,n,r)}var Se=function(e,t,n,r){return new(n||(n=Promise))(function(a,o){function i(e){try{l(r.next(e))}catch(e){o(e)}}function s(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,s)}l((r=r.apply(e,t||[])).next())})};function Ce(e){var t,n=ne.a.useBasicFetch(ve.o.getPrivacy(e)),r=ne.a.useGetFetchAsync(),a=null===(t=n.data)||void 0===t?void 0:t.canManageAccess;function o(e){return Se(this,void 0,void 0,he().m(function t(){return he().w(function(t){for(;;)switch(t.n){case 0:return t.n=1,r(ye.o.createSharePincode(e.shareId));case 1:return t.a(2,t.v)}},t)}))}return{createDirectShare:function(e){return Se(this,void 0,void 0,he().m(function t(){var a,i;return he().w(function(t){for(;;)switch(t.n){case 0:if(n.data){t.n=1;break}return t.a(2);case 1:return a=e.requireSignIn?de.e.Direct:de.e.PinCode,t.n=2,r(ye.o.createShare({objectId:e.objectId,type:me.y.Classroom,privacy:a,optionRequest:{preventScrubbing:e.preventScrubbing,immediateFeedback:e.immediateFeedback},recipientRequest:e.recipients.map(function(t){return{recipientId:t,message:e.message,scopeId:e.scopeId}})}));case 2:if(i=t.v,a!==de.e.PinCode){t.n=3;break}return t.n=3,o({shareId:i.shareId});case 3:return t.a(2,i)}},t)}))},createOpenSession:function(e){return Se(this,void 0,void 0,he().m(function t(){var i,s;return he().w(function(t){for(;;)switch(t.n){case 0:if(n.data){t.n=1;break}return t.a(2);case 1:return i=de.e.PinCode,e.requireSignIn&&(i=e.respectRatingsAndRestrictions?a?de.e.JustMySchool:de.e.Protected:a?de.e.JustMySchoolOverrideRestriction:de.e.ProtectedOverrideRestriction),t.n=2,r(ye.o.createShare({objectId:e.objectId,type:me.y.Open,privacy:i,optionRequest:{preventScrubbing:e.preventScrubbing,immediateFeedback:e.immediateFeedback}}));case 2:if(s=t.v,i!==de.e.PinCode){t.n=3;break}return t.n=3,o({shareId:s.shareId});case 3:return t.a(2,s)}},t)}))},canManageAccess:a,hasCompleted:n.hasCompleted}}var Ee=n(1666);function xe(e){return xe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},xe(e)}function we(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function o(n,r,a,o){var l=r&&r.prototype instanceof s?r:s,c=Object.create(l.prototype);return Te(c,"_invoke",function(n,r,a){var o,s,l,c=0,u=a||[],d=!1,m={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,s=0,l=e,m.n=n,i}};function p(n,r){for(s=n,l=r,t=0;!d&&c&&!a&&t<u.length;t++){var a,o=u[t],p=m.p,f=o[2];n>3?(a=f===r)&&(l=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=p&&((a=n<2&&p<o[1])?(s=0,m.v=r,m.n=o[1]):p<f&&(a=n<3||o[0]>r||r>f)&&(o[4]=n,o[5]=r,m.n=f,s=0))}if(a||n>1)return i;throw d=!0,r}return function(a,u,f){if(c>1)throw TypeError("Generator is already running");for(d&&1===u&&p(u,f),s=u,l=f;(t=s<2?e:l)||!d;){o||(s?s<3?(s>1&&(m.n=-1),p(s,l)):m.n=l:m.v=l);try{if(c=2,o){if(s||(a="next"),t=o[a]){if(!(t=t.call(o,l)))throw TypeError("iterator result is not an object");if(!t.done)return t;l=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(l=TypeError("The iterator does not provide a '"+a+"' method"),s=1);o=e}else if((t=(d=m.n<0)?l:n.call(r,m))!==i)break}catch(t){o=e,s=1,l=t}finally{c=1}}return{value:t,done:d}}}(n,a,o),!0),c}var i={};function s(){}function l(){}function c(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(Te(t={},r,function(){return this}),t),d=c.prototype=s.prototype=Object.create(u);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,Te(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return l.prototype=c,Te(d,"constructor",c),Te(c,"constructor",l),l.displayName="GeneratorFunction",Te(c,a,"GeneratorFunction"),Te(d),Te(d,a,"Generator"),Te(d,r,function(){return this}),Te(d,"toString",function(){return"[object Generator]"}),(we=function(){return{w:o,m}})()}function Te(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}Te=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var o=function(t,n){Te(e,t,function(e){return this._invoke(t,n,e)})};o("next",0),o("throw",1),o("return",2)}},Te(e,t,n,r)}function Ne(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,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ke(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)?ke(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 ke(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 Ae(e){var t,n,a,o=(0,s._)({entityType:e.entityType,objectId:e.objectId}),i=ne.a.useBasicFetch(Ee.h.yearGroups(null===(t=o.currentUser.data)||void 0===t?void 0:t.customerId)),l=Ce(e.objectId).createDirectShare,c=Ne(r.useState(!1),2),u=c[0],d=c[1],m=Ne(r.useState({preventScrubbing:(null===(n=o.interactive.data)||void 0===n?void 0:n.preventScrubbing)||!1,immediateFeedback:(null===(a=o.interactive.data)||void 0===a?void 0:a.immediateFeedback)||!1,message:!1}),2),p=m[0],f=m[1],g=Ne(r.useState(""),2),v=g[0],y=g[1];return{data:{loaded:o.loaded&&!!i.data,config:o.config,entity:o.entity,yearGroups:i},message:v,settings:p,shouldShowSpinner:u,hasStudentExp:o.hasStudentExp,toggleSetting:function(e){!function(e,t){f(function(n){return Object.assign(Object.assign({},n),(r={},o=t,(a=function(e){var t=function(e){if("object"!=xe(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=xe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==xe(t)?t:t+""}(a=e))in r?Object.defineProperty(r,a,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[a]=o,r));var r,a,o})}(e,!p[e])},onChangeMessage:function(e){y(e)},onShare:function(t){var n,r,a,o,i,s;return a=this,o=void 0,i=void 0,s=we().m(function a(){var o;return we().w(function(a){for(;;)switch(a.n){case 0:if(e.selectedClassroom){a.n=1;break}return a.a(2);case 1:return d(!0),a.p=2,a.n=3,l({objectId:e.objectId,preventScrubbing:p.preventScrubbing,immediateFeedback:p.immediateFeedback,requireSignIn:!0,message:v,recipients:e.recipients.length?e.recipients:[null===(n=e.selectedClassroom)||void 0===n?void 0:n.id],scopeId:null===(r=e.selectedClassroom)||void 0===r?void 0:r.id});case 3:o=a.v,"function"==typeof t&&t(o),d(!1),a.n=5;break;case 4:a.p=4,a.v,console.error("Could not create");case 5:return a.p=5,d(!1),a.f(5);case 6:return a.a(2)}},a,null,[[2,4,5,6]])}),new(i||(i=Promise))(function(e,t){function n(e){try{l(s.next(e))}catch(e){t(e)}}function r(e){try{l(s.throw(e))}catch(e){t(e)}}function l(t){var a;t.done?e(t.value):(a=t.value,a instanceof i?a:new i(function(e){e(a)})).then(n,r)}l((s=s.apply(a,o||[])).next())})}}}var Ie,je=o.T.encloseNamespace("assign.existingClassroomFlowSettingsView"),Oe=n(36511);!function(e){e.Groups="groups",e.Students="students"}(Ie||(Ie={}));var Pe=n(91693);function Fe(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 Re(e){return r.createElement("div",{className:"d-flex flex-column gap-2"},e.children)}Re.Item=function(e){var t,n,a=(t=r.useState(e.intialShow||!1),n=2,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,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return Fe(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)?Fe(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.")}()),o=a[0],i=a[1];return r.createElement("div",null,r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h3",{className:"h6 m-0 p-0"},e.title),r.createElement(Pe.h,{svgName:o?S.vn.ChevronUp:S.vn.ChevronDown,onClick:function(){return i(!o)}})),o&&r.createElement("div",null,e.children))};var Me=n(11607);function Ge(e){var t=e.isDisabled&&e.isSelected&&!!e.tooltipText;return r.createElement(Me.L,{className:(0,I.A)("d-flex align-items-center px-2 py-1 w-100 rounded gap-2 cursor-pointer justify-content-between",!e.isDisabled&&"bg-light-hover"),onClick:e.onClick,disabled:e.isDisabled},r.createElement(P.u,{placement:"right",title:e.tooltipText,disable:!t,spanHack:!0,trigger:["hover","focus"]},r.createElement("div",{className:(0,I.A)("d-flex align-items-center",t&&"pe-2")},r.createElement(le.X,{name:e.entity.id,id:e.entity.id,onChange:e.onClick,checked:e.isSelected,disabled:e.isDisabled}),r.createElement("div",{className:"d-flex align-items-center gap-2"},r.createElement("div",null,e.icon),r.createElement("div",{className:"w-100"},e.title)))))}function Le(e){return e.entities.length?r.createElement("div",{className:"d-flex flex-column"},r.createElement(C.ZP,{autoHeight:!0,autoHeightMin:0,autoHeightMax:120},e.entities.map(function(t){var n=!!e.selectedEntities.find(function(e){return t.id.toString()===e.id.toString()}),a=n&&e.disableSelected,o="function"==typeof e.renderTitle?e.renderTitle(t,n,a):r.createElement("span",{className:"m-0"},t.name);return r.createElement(Ge,{key:t.id,entity:t,title:o,isDisabled:a,isSelected:n,icon:e.renderIcon(t,n,a),onClick:function(){return e.onSelectEntity(t)},tooltipText:e.tooltipText})}))):r.createElement(r.Fragment,null,e.emptyState)}function De(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,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return _e(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)?_e(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 _e(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 Be="assign.narrowClassroomSelectionControls",Ze=o.T.encloseNamespace(Be);function Ue(e){var t=De(r.useState(Ie.Students),2),n=t[0],a=t[1],o=De(r.useState([]),2),i=o[0],s=o[1],l=De(r.useState([]),2),c=l[0],u=l[1],d=c.length===e.learners.length;return r.createElement(r.Fragment,null,r.createElement("div",{className:"d-flex flex-column gap-3"},r.createElement("h3",{className:"h6 m-0"},r.createElement(f.x,{namespace:Be,phrase:"shareToStudents",options:{smartCount:e.learners.length}})),r.createElement("div",null,r.createElement(le.X,{id:"all",checked:n!==Ie.Groups&&d,label:Ze("allStudentsLabel",{smartCount:e.learners.length}),onChange:function(){if(s([]),a(Ie.Students),d)return u([]),void e.setRecipients([]);u(e.learners),e.setRecipients(p.z.getRecipients(e.learners))},indeterminate:n===Ie.Groups}))),r.createElement(Re,null,r.createElement(Re.Item,{intialShow:!0,title:Ze("groupsTitle",{selected:i.length,smartCount:e.groups.length})},r.createElement(Le,{entities:e.groups,selectedEntities:i,onSelectEntity:function(t){var n=p.z.getSelectedEntities(i,t);n.length?a(Ie.Groups):a(null),s(n),u(p.z.getLearnersForGroups(n)),e.setRecipients(p.z.getRecipients(n))},emptyState:r.createElement("div",null,r.createElement(f.x,{namespace:Be,phrase:"emptyGroups"})),renderIcon:function(e){var t;return r.createElement(j.f,{svgName:S.vn.Group,svgSize:b.S.Small,variant:(0,Oe.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour),textVariant:"white",svgWrapperClassName:"p-1"})}})),r.createElement(Re.Item,{intialShow:!0,title:Ze("studentsTitle",{selected:c.length,smartCount:e.learners.length})},r.createElement(Le,{entities:e.learners,selectedEntities:c,onSelectEntity:function(t){var n=p.z.getSelectedEntities(c,t);n.length?a(Ie.Students):a(null),s([]),u(n),e.setRecipients(p.z.getRecipients(n))},emptyState:r.createElement("div",null,r.createElement(f.x,{namespace:Be,phrase:"emptyStudents"})),renderIcon:function(){return r.createElement(j.f,{svgName:S.vn.User,svgSize:b.S.Small,variant:"primary",textVariant:"white",svgWrapperClassName:"p-1"})},disableSelected:n===Ie.Groups,tooltipText:Ze("studentInSelectedGroup")}))))}var qe=o.T.encloseNamespace("assign.narrowClassroomSelectionView"),Ve=n(9806),ze=n(15611),He=n(14070),$e=n(97291);var We="assign.noStudentsDetailsView";function Qe(e){return r.createElement("div",{className:"position-relative mb-3"},r.createElement("figure",{className:"LP0Xh",style:{backgroundImage:"url(".concat(T.W.Assign.NO_STUDENTS.BACKGROUND,")")}}),r.createElement("div",{className:(0,I.A)("position-absolute bottom-0","OPnkT")},r.createElement("figure",{className:(0,I.A)("position-absolute m-0","Xtv19"),style:{backgroundImage:"url(".concat(T.W.Assign.NO_STUDENTS.PLANE,")")}}),r.createElement("div",{className:(0,I.A)("position-absolute","UX2aX")},r.createElement(Ve.k,{object:e.entity,locationContext:i.LZ.AssignFlowView,imageClassName:"border border-dark",thumbnailSize:"sm",fixedHeight:!0})),r.createElement("figure",{className:(0,I.A)("position-absolute m-0","MaOad"),style:{backgroundImage:"url(".concat(T.W.Assign.NO_STUDENTS.PLANE_FLAP,")")}})))}var Xe={"create-classroom":{view:function(e){var t,n,a=(0,s._)({objectId:e.objectId,entityType:e.entityType}),o=p.z.getContactSupportUrl(null===(t=a.config.data)||void 0===t?void 0:t.marketingSiteUrl,null===(n=a.currentUser.data)||void 0===n?void 0:n.instanceRegion),i=e.loading||!a.loaded;return r.createElement(d.G,{size:"lg",animation:e.animate,showLoadingSpinner:i,closePopup:e.closePopup,title:h("title"),bodyClassName:"d-flex flex-column gap-3"},r.createElement(g,{onClick:e.goToCreateClassroomForm}),r.createElement(u.i,null),r.createElement("div",null,r.createElement(y,{instanceRegion:e.instanceRegion,contactSupportLink:o}),r.createElement(m.P,{onClickBack:e.goToFlowSelector,hideNextButton:!0,hideCreateClassroomButton:!0})))}},"create-classroom-form":{view:function(e){var t,n,a=ne.a.useGetFetchAsync(),o=(0,l.y)({analyticsOptions:{entity:i.py.Assign,location:i.LZ.Popup},data:{entity:{id:e.objectId,type:e.entityType}}}).log,s=(t=r.useState(!1),n=2,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,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return oe(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)?oe(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.")}()),c=s[0],u=s[1],p=(0,te.TA)({initialValues:{name:""},onSubmit:function(t){!c&&p.isValid&&(u(!0),a(re.F.createClassroom({name:t.name})).then(function(t){o({type:"create-new-classroom",classroom:t}),e.onCreateNewClassroom(t)}).catch(function(){p.setFieldError("name",se("createClassroomError",{name:t.name}))}).finally(function(){u(!1)}))},validationSchema:ae.G,validateOnChange:!0});return r.createElement(d.G,{size:"lg",title:se("title"),showLoadingSpinner:e.loading,animation:e.animate,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3"},r.createElement(A.Z,{className:"w-100",onSubmit:p.handleSubmit},r.createElement(A.Z.Group,null,r.createElement(A.Z.Label,{htmlFor:"name",className:"mb-1"},r.createElement(f.x,{namespace:ie,phrase:"newClassroomLabel"})),r.createElement(ee,{hasValidation:!0},r.createElement(A.Z.Control,{type:"text",className:"form-control",name:"name",id:"name",placeholder:se("newClassroomPlaceholder"),value:p.values.name,onChange:p.handleChange,maxLength:255,isInvalid:!!p.errors.name}),r.createElement(A.Z.Control.Feedback,{type:"invalid"},p.errors.name)))),r.createElement(m.P,{hideCreateClassroomButton:!0,onClickBack:e.goToPrevStep,onClickNext:p.submitForm,disableNextButton:!p.isValid||c||!p.values.name.length,showSpinner:c,nextButtonText:se("nextButton")}))}},"select-classroom":{view:function(e){var t,n,a,o,s,c,u,p,f,g=(0,l.y)({analyticsOptions:{entity:i.py.Assign,location:i.LZ.Popup},data:{entity:{id:e.objectId,type:e.entityType}}}).log,v=(t={selectedClassroom:e.selectedClassroom,setSelectedClassroom:e.setSelectedClassroom,goToNarrowSelection:function(){g({type:"select-narrow-selection",classroom:e.selectedClassroom}),e.goToNarrowSelection()}},n=(0,Z.T)().hasPermissions,p=r.useState(""),f=2,a=function(e){if(Array.isArray(e))return e}(p)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(p,f)||function(e,t){if(e){if("string"==typeof e)return q(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)?q(e,t):void 0}}(p,f)||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.")}(),o=a[0],s=a[1],c=(0,B.N)(o,300),u=c.length>=2,{data:{classrooms:(0,U.Y)(u&&c,{withStudentsCount:!0})},query:o,debouncedQuery:c,canCreateClassrooms:n(_.C.CreateClassrooms),setQuery:s,getStudentsCount:function(e){var t,n,r=null===(t=e.enrolments)||void 0===t?void 0:t.count;return u&&(r=null===(n=e.users)||void 0===n?void 0:n.count),r||0},onClassroomSelected:function(e){t.setSelectedClassroom(e)},onClickSelectGroupsOrStudents:function(){t.selectedClassroom&&t.goToNarrowSelection()}}),y=v.data.classrooms;return r.createElement(d.G,{size:"lg",title:V("title"),showLoadingSpinner:e.loading,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3",animation:e.animate},r.createElement("div",{className:"position-relative"},r.createElement("div",{className:"position-absolute top-50 start-0 translate-middle-y p-1"},r.createElement(b.x,{svgName:S.vn.Search,size:b.S.Standard})),r.createElement("input",{type:"text",value:v.query,placeholder:V("inputPlaceholder"),onChange:function(e){return v.setQuery(e.target.value)},className:"form-control pe-1 py-2 border-dark ".concat("aDvD8")})),r.createElement(D,{searchQuery:v.debouncedQuery,classrooms:y,selectedClassroom:e.selectedClassroom,getStudentsCount:v.getStudentsCount,onClassroomSelected:v.onClassroomSelected,onClickCreateOpenClassroom:e.goToOpenClassroomFlow,onClickSelectGroupsOrStudents:v.onClickSelectGroupsOrStudents}),r.createElement(m.P,{hideCreateClassroomButton:!v.canCreateClassrooms,onClickBack:e.goToFlowSelector,onClickNext:e.goToSettings,disableNextButton:!e.selectedClassroom,onClickCreateClassroom:e.goToCreateClassroomForm}))}},"narrow-selection":{view:function(e){var t=function(e){var t,n,r=ne.a.useBasicFetch(e.selectedClassroom&&re.F.getClassroomStudents(e.selectedClassroom.id)),a=ne.a.useBasicFetch(e.selectedClassroom&&re.F.getClassroomGroups(e.selectedClassroom.id)),o=(null===(t=r.data)||void 0===t?void 0:t.data)||[],i=(null===(n=a.data)||void 0===n?void 0:n.data)||[];return{data:{loaded:!!a.data&&!!r.data,groups:i,learners:o}}}({selectedClassroom:e.selectedClassroom}).data,n=t.loaded,a=t.groups,o=t.learners;return r.createElement(d.G,{size:"lg",title:qe("title"),showLoadingSpinner:!n||e.loading,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3",animation:e.animate},r.createElement(pe,{classroom:e.selectedClassroom,onClickChangeClassroom:e.goToSelectClassroom}),r.createElement(Ue,{groups:a,learners:o,setRecipients:e.onChangeRecipients}),r.createElement(m.P,{hideCreateClassroomButton:!0,onClickBack:e.goToPrevStep,onClickNext:e.goToSettings,nextButtonTooltip:!e.recipients.length&&qe("noRecipients"),disableNextButton:!e.selectedClassroom||!e.recipients.length}))}},settings:{view:function(e){var t=Ae({entityType:e.entityType,objectId:e.objectId,recipients:e.recipients,selectedClassroom:e.selectedClassroom}),n=t.data.loaded;return r.createElement(d.G,{size:"lg",title:je("title"),showLoadingSpinner:!n||e.loading,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3",animation:e.animate},r.createElement(ge,{selectedClassroom:e.selectedClassroom,message:t.message,toggleMessage:t.settings.message,immediateFeedback:t.settings.immediateFeedback,preventScrubbing:t.settings.preventScrubbing,onChangeMessage:t.onChangeMessage,onToggleMessage:function(){return t.toggleSetting("message")},hideImmediateFeedback:"interactive"!==e.entityType,hidePreventScrubbing:"interactive"!==e.entityType,onTogglePreventScrubbing:function(){return t.toggleSetting("preventScrubbing")},onToggleImmediateFeedback:function(){return t.toggleSetting("immediateFeedback")}}),r.createElement(m.P,{hideCreateClassroomButton:!0,onClickBack:e.goToPrevStep,onClickNext:function(){t.onShare(e.onShare)},nextButtonText:je("assignButton"),showSpinner:t.shouldShowSpinner}))}},"assign-details":{view:c.AssignDetailsView},"no-students-details":{view:function(e){var t=(0,s._)({entityType:e.entityType,objectId:e.objectId}),n=t.entity,a=t.loaded,o={application:$e.O.CLASSROOMS,action:He.e.Classrooms.CLASSROOM_STUDENTS,args:[e.selectedClassroom.id]};return r.createElement(d.G,{size:"lg",showLoadingSpinner:!a||e.loading,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3",animation:e.animate,hideTitle:!0},r.createElement("div",{className:"d-flex flex-column align-items-center justify-content-center py-2 text-center"},r.createElement(Qe,{entity:n.data}),r.createElement("h3",{className:"mb-3"},r.createElement(f.x,{namespace:We,phrase:"title"})),r.createElement("p",{className:(0,I.A)("mb-4","sXT7V")},r.createElement(f.x,{namespace:We,phrase:"description"})),r.createElement(ze.F,{appLink:o,className:"btn btn-dark"},r.createElement(f.x,{namespace:We,phrase:"addStudentsButton",options:{classroomName:e.selectedClassroom.name}}))))}}};function Je(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function o(n,r,a,o){var l=r&&r.prototype instanceof s?r:s,c=Object.create(l.prototype);return Ye(c,"_invoke",function(n,r,a){var o,s,l,c=0,u=a||[],d=!1,m={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,s=0,l=e,m.n=n,i}};function p(n,r){for(s=n,l=r,t=0;!d&&c&&!a&&t<u.length;t++){var a,o=u[t],p=m.p,f=o[2];n>3?(a=f===r)&&(l=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=p&&((a=n<2&&p<o[1])?(s=0,m.v=r,m.n=o[1]):p<f&&(a=n<3||o[0]>r||r>f)&&(o[4]=n,o[5]=r,m.n=f,s=0))}if(a||n>1)return i;throw d=!0,r}return function(a,u,f){if(c>1)throw TypeError("Generator is already running");for(d&&1===u&&p(u,f),s=u,l=f;(t=s<2?e:l)||!d;){o||(s?s<3?(s>1&&(m.n=-1),p(s,l)):m.n=l:m.v=l);try{if(c=2,o){if(s||(a="next"),t=o[a]){if(!(t=t.call(o,l)))throw TypeError("iterator result is not an object");if(!t.done)return t;l=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(l=TypeError("The iterator does not provide a '"+a+"' method"),s=1);o=e}else if((t=(d=m.n<0)?l:n.call(r,m))!==i)break}catch(t){o=e,s=1,l=t}finally{c=1}}return{value:t,done:d}}}(n,a,o),!0),c}var i={};function s(){}function l(){}function c(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(Ye(t={},r,function(){return this}),t),d=c.prototype=s.prototype=Object.create(u);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,Ye(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return l.prototype=c,Ye(d,"constructor",c),Ye(c,"constructor",l),l.displayName="GeneratorFunction",Ye(c,a,"GeneratorFunction"),Ye(d),Ye(d,a,"Generator"),Ye(d,r,function(){return this}),Ye(d,"toString",function(){return"[object Generator]"}),(Je=function(){return{w:o,m}})()}function Ye(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}Ye=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var o=function(t,n){Ye(e,t,function(e){return this._invoke(t,n,e)})};o("next",0),o("throw",1),o("return",2)}},Ye(e,t,n,r)}function Ke(e){return function(e){if(Array.isArray(e))return nt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||tt(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function et(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,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||tt(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 tt(e,t){if(e){if("string"==typeof e)return nt(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)?nt(e,t):void 0}}function nt(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 rt=function(e,t,n,r){return new(n||(n=Promise))(function(a,o){function i(e){try{l(r.next(e))}catch(e){o(e)}}function s(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,s)}l((r=r.apply(e,t||[])).next())})},at=o.T.encloseNamespace("assign.existingClassroomFlowView");function ot(e){var t,n,o=(0,s._)({entityType:e.entityType,objectId:e.objectId}),c=(0,l.y)({analyticsOptions:{entity:i.py.Assign,location:i.LZ.Popup},data:{entity:{id:e.objectId,type:e.entityType}}}).log,u=function(e){var t,n=ne.a.useGetFetchAsync(),a=et(r.useState(null!==(t=e.initialStep)&&void 0!==t?t:"select-classroom"),2),o=a[0],i=a[1],s=et(r.useState(),2),l=s[0],c=s[1],u=et(r.useState([]),2),d=u[0],m=u[1],p=et(r.useState(),2),f=p[0],g=p[1],v=et(r.useState([]),2),y=v[0],h=v[1],b=!!d.length;function S(){return rt(this,void 0,void 0,Je().m(function e(){var t;return Je().w(function(e){for(;;)switch(e.n){case 0:if(f){e.n=1;break}return e.a(2,!1);case 1:return e.n=2,n(re.F.getClassroomStudents(f.id));case 2:return t=e.v,e.a(2,!!t.data.length)}},e)}))}return{step:o,share:l,recipients:y,hasPrevStep:b,selectedClassroom:f,onShare:function(t){return rt(this,void 0,void 0,Je().m(function n(){var r;return Je().w(function(n){for(;;)switch(n.n){case 0:return c(t),r="assign-details",n.p=1,n.n=2,S();case 2:if(n.v){n.n=3;break}return r="no-students-details",n.a(2);case 3:return n.p=3,e.log({type:"create-existing-classroom",share:t,nextStep:r}),i(r),n.f(3);case 4:return n.a(2)}},n,null,[[1,,3,4]])}))},setShare:c,goToPrevStep:function(){if(b){var e=Ke(d);i(e.pop()),m(e)}},onChangeRecipients:function(e){h(e)},setSelectedClassroom:g,setStep:function(e){m([].concat(Ke(d),[o])),i(e)},onCreateNewClassroom:function(e){g(e),i("settings")}}}({initialStep:e.initialStep,log:c}),d={objectId:e.objectId,entityType:e.entityType,closePopup:e.closePopup,goToFlowSelector:e.goToFlowSelector,goToOpenClassroomFlow:e.goToOpenClassroomFlow,shareId:null===(t=u.share)||void 0===t?void 0:t.shareId,loading:!o.loaded,recipients:u.recipients,instanceRegion:null===(n=o.currentUser.data)||void 0===n?void 0:n.instanceRegion,selectedClassroom:u.selectedClassroom,detailsTitle:at("existingClassroomTitle"),onShare:u.onShare,onChangeRecipients:u.onChangeRecipients,setSelectedClassroom:u.setSelectedClassroom,goToPrevStep:u.goToPrevStep,onCreateNewClassroom:u.onCreateNewClassroom,goToSettings:function(){return u.setStep("settings")},goToSelectClassroom:function(){return u.setStep("select-classroom")},goToNarrowSelection:function(){return u.setStep("narrow-selection")},goToCreateClassroomForm:function(){return u.setStep("create-classroom-form")}};return r.createElement(a.r,{data:d,loading:!o.loaded,animate:!1,step:u.step,setStep:u.setStep,closePopup:e.closePopup,steps:Xe})}var it=n(35690),st="shared.newBadge";function lt(e){return r.createElement("span",{className:(0,I.A)("badge badge-wrapper rounded-pill d-flex justify-content-center","fw-medium text-green","sm"===e.size?"badge-sm":"badge-std",e.invert?"bg-white":"bg-light-green")},r.createElement(f.x,{phrase:"new",namespace:st}))}var ct="shared.recommendedBadge";function ut(e){return r.createElement("span",{className:(0,I.A)("badge badge-wrapper rounded-pill d-flex justify-content-center","fw-medium text-blue","sm"===e.size?"badge-sm":"badge-std",e.invert?"bg-white":"bg-light-blue")},r.createElement(f.x,{phrase:"recommended",namespace:ct}))}function dt(e){return"existing-classroom"===e.type?e.hasClassrooms?r.createElement(ut,{size:"sm",invert:e.hovered}):null:"open-classroom"===e.type?e.hasClassrooms?r.createElement(lt,{size:"sm",invert:e.hovered}):r.createElement("div",{className:"d-flex align-items-center gap-2"},r.createElement(lt,{size:"sm",invert:e.hovered}),r.createElement(ut,{size:"sm",invert:e.hovered})):null}var mt=n(37963);const pt={optionImage:"iFoIG",optionItem:"Lu2bY"};function ft(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 gt(e){var t,n,a=(t=(0,mt.X)(),n=2,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,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return ft(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)?ft(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.")}()),o=a[0],i=a[1],s=e.item.badgeComponent;return r.createElement(Me.L,{onClick:function(){return e.onClick(e.item)},className:(0,I.A)("d-flex flex-column gap-4 align-items-center align-self-stretch justify-content-center","text-center cursor-pointer p-3 border rounded-3 user-select-none hover-bg-light-blue",pt.optionItem),ref:o},!!s&&r.createElement(s,{hovered:i}),r.createElement("img",{src:e.item.imageUrl,className:(0,I.A)("img-fluid w-50 d-none d-lg-block",pt.optionImage),draggable:!1}),r.createElement("div",{className:"d-flex flex-column gap-2"},r.createElement("h3",{className:"h4 mb-0"},e.item.title),e.item.subTitle&&r.createElement("p",{className:"mb-0 text-gray-900"},e.item.subTitle),e.item.linkText&&r.createElement("span",{className:"text-dark text-underline",onClick:function(){return e.onClick(e.item)}},e.item.linkText)))}function vt(e){return r.createElement("div",{className:"bg-white rounded-bottom-3 p-3 d-flex flex-column gap-3 justify-content-center align-items-center"},!!e.title&&r.createElement("h2",{className:"h4 m-0"},e.title),r.createElement("div",{className:"d-flex flex-column flex-lg-row justify-content-center align-items-center gap-3 w-100"},e.options.map(function(t){return r.createElement(gt,{item:t,onClick:e.onClick,key:t.id})})))}var yt=n(2948),ht=n(75896),bt=n(21789),St=n(37802),Ct=n(86099);function Et(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 xt="show:previous:assignments",wt=o.T.encloseNamespace("assign.flowSelectorView");function Tt(e){var t=function(e){var t,n,r,a,o,i,l=(o=(0,yt.D)(xt,!1),i=2,function(e){if(Array.isArray(e))return e}(o)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(o,i)||function(e,t){if(e){if("string"==typeof e)return Et(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)?Et(e,t):void 0}}(o,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=l[0],u=l[1],d=(0,s._)({entityType:e.entityType,objectId:e.objectId}),m=(0,St.r)(null),p=m.isLoadingSettings,f=m.hasClassrooms,g=ne.a.useBasicFetch(ye.o.getSharesByObjectId(e.objectId)),v=(null===(t=g.data)||void 0===t?void 0:t.filter(function(e){return[me.y.Classroom,me.y.Open].includes(e.type)}))||[],y=ht.m.uniq(v.map(bt.x.getClassroomIdFromShare).filter(function(e){return!!e})),h=ne.a.useBasicFetch(g.hasCompleted&&re.F.getClassroomsByIds(y,null===(n=d.currentUser.data)||void 0===n?void 0:n.customerId)),b=ne.a.useBasicFetch(f&&re.F.getPublished(null===(r=d.currentUser.data)||void 0===r?void 0:r.customerId));return{data:{loaded:d.loaded&&!p&&!!g.data&&!!h.data&&!!b.data,previousAssignments:v,previousAssignmentClassrooms:h},showPreviousAssignments:c,hasClassrooms:f&&!!(null===(a=b.data)||void 0===a?void 0:a.data.length),canCreateClassrooms:d.canCreateClassrooms,getPreviousAssignItemAppLink:function(e){var t=(0,Ct.pY)(e);if(t)return t},onTogglePreviousAssignment:function(){u(!c)}}}({entityType:e.entityType,objectId:e.objectId}),n=t.data,a=n.loaded,o=n.previousAssignmentClassrooms,c=n.previousAssignments,u=(0,l.y)({data:{entity:{id:e.objectId,type:e.entityType}},analyticsOptions:{location:i.LZ.Popup,entity:i.py.Assign}}),m=u.log,p=u.getData,f=[{id:"existing-classroom",title:wt("existingClassroomTitle"),subTitle:wt("existingClassroomDescription"),imageUrl:T.W.Assign.EXISTING_CLASSROOM,linkText:wt("learnMore"),badgeComponent:function(e){var n=e.hovered;return r.createElement(dt,{type:"existing-classroom",hasClassrooms:t.hasClassrooms&&t.canCreateClassrooms,hovered:n})}},{id:"open-classroom",title:wt("openClassroomTitle"),subTitle:wt("openClassroomDescription"),imageUrl:T.W.Assign.OPEN_CLASSROOM,linkText:wt("learnMore"),badgeComponent:function(e){var n=e.hovered;return r.createElement(dt,{type:"open-classroom",hasClassrooms:t.hasClassrooms&&t.canCreateClassrooms,hovered:n})}}];return r.createElement(d.G,{size:"lg",animation:e.animate,title:wt("title"),closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3 p-0",contentClassName:(0,I.A)(a&&"bg-transparent border-0"),showLoadingSpinner:!a||e.loading},r.createElement(vt,{options:f,onClick:function(n){"existing-classroom"===n.id?(!t.hasClassrooms&&t.canCreateClassrooms?e.goToCreateClassroomPrompt():e.goToExistingClassroomFlow(),m({type:"select-existing-classroom-flow"})):"open-classroom"===n.id&&(e.goToOpenClassroomFlow(),m({type:"select-open-classroom-flow"}))}}),r.createElement(it.QD,{assignments:c.reverse(),show:t.showPreviousAssignments,classrooms:o.data,onToggle:t.onTogglePreviousAssignment,getItemAppLink:t.getPreviousAssignItemAppLink,getItemAnalytics:function(e,t){var n=p({type:"view-previous-assignment",share:e,yIndex:t}),r=n.analyticsOptions;return{data:n.data,options:r}}}))}var Nt=n(8233),kt="assign.openClassroomFlowInfoHeader",At=o.T.encloseNamespace(kt);function It(e){return r.createElement(f.D.Provider,{value:kt},r.createElement(N.Z,{className:"p-3 bg-light-green rounded rounded-2 gx-0"},r.createElement(k.Z,{lg:2,className:"d-none d-lg-block align-self-stretch"},r.createElement("div",{className:"h-100 d-flex align-items-center justify-content-center me-4"},r.createElement("img",{src:T.W.Assign.OPEN_CLASSROOM,alt:At("alt"),className:"w-100 h-auto"}))),r.createElement(k.Z,{xs:12,lg:10,className:"position-relative"},r.createElement("h3",{className:"h6"},r.createElement(f.x,{phrase:"title"})),r.createElement("p",{className:"mb-0"},r.createElement(f.x,{phrase:"description"})),r.createElement("div",{className:"position-absolute top-0 end-0"},r.createElement(Pe.h,{svgName:S.vn.Close,onClick:e.onClose,className:"btn-close p-2"})))))}var jt=o.T.encloseNamespace("assign.openClassroomFlowSettings");function Ot(e){var t=Nt.R.getRespectRatingText(e.entity,e.yearGroups,e.hasStudentExp);return r.createElement("div",{className:"d-flex flex-column gap-4"},r.createElement(It,{onClose:e.closeHeader}),r.createElement(ce,{name:jt("videoSettingsTitle"),hide:e.hidePreventScrubbing&&e.hideImmediateFeedback},r.createElement(ce.Toggle,{hide:e.hidePreventScrubbing,title:jt("preventScrubbingTitle"),description:jt("preventScrubbingDescription"),onClick:e.onTogglePreventScrubbing,toggled:e.preventScrubbing,disabled:e.disablePreventScrubbing}),r.createElement(ce.Toggle,{hide:e.hideImmediateFeedback,title:jt("immediateFeedbackTitle"),description:jt("immediateFeedbackDescription"),onClick:e.onToggleImmediateFeedback,toggled:e.immediateFeedback,disabled:e.disableImmediateFeedback})),r.createElement(ce.Divider,{hide:e.hidePreventScrubbing&&e.hideImmediateFeedback}),r.createElement(ce,{name:jt("studentAccessTitle"),hide:e.hideRequiresStudentSignIn&&e.hideRespectRatingsAndRestrictions},r.createElement(ce.Toggle,{hide:e.hideRequiresStudentSignIn,title:jt("requiresStudentSignInTitle"),description:jt("requiresStudentSignInDescription"),onClick:e.onToggleRequiresStudentSignIn,toggled:e.toggleRequiresStudentSignIn,disabled:e.disableRequiresStudentSignIn}),r.createElement(ce.Toggle,{hide:e.hideRespectRatingsAndRestrictions,title:jt("respectRatingsAndRestrictionsTitle"),description:t,onClick:e.onToggleRespectRatingsAndRestrictions,toggled:e.toggleRespectRatingsAndRestrictions,disabled:e.disableRespectRatingsAndRestrictions})),r.createElement(ce.Divider,{hide:e.hideRequiresStudentSignIn&&e.hideRespectRatingsAndRestrictions||e.hideMessage}),r.createElement(ce,{name:jt("moreOptionsTitle"),hide:e.hideMessage,childContainerClassName:"d-flex flex-column gap-2"},r.createElement(ce.Toggle,{hide:e.hideMessage,title:jt("messageTitle"),description:jt("messageDescription"),onClick:e.onToggleMessage,toggled:e.toggleMessage,disabled:e.disableMessage},r.createElement(ce.TextArea,{hide:!e.toggleMessage,placeholder:jt("messagePlaceholder"),onChange:e.onChangeMessage,value:e.message}))))}var Pt=n(57900),Ft=n(69883);function Rt(e){return Rt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Rt(e)}function Mt(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function o(n,r,a,o){var l=r&&r.prototype instanceof s?r:s,c=Object.create(l.prototype);return Gt(c,"_invoke",function(n,r,a){var o,s,l,c=0,u=a||[],d=!1,m={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,s=0,l=e,m.n=n,i}};function p(n,r){for(s=n,l=r,t=0;!d&&c&&!a&&t<u.length;t++){var a,o=u[t],p=m.p,f=o[2];n>3?(a=f===r)&&(l=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=p&&((a=n<2&&p<o[1])?(s=0,m.v=r,m.n=o[1]):p<f&&(a=n<3||o[0]>r||r>f)&&(o[4]=n,o[5]=r,m.n=f,s=0))}if(a||n>1)return i;throw d=!0,r}return function(a,u,f){if(c>1)throw TypeError("Generator is already running");for(d&&1===u&&p(u,f),s=u,l=f;(t=s<2?e:l)||!d;){o||(s?s<3?(s>1&&(m.n=-1),p(s,l)):m.n=l:m.v=l);try{if(c=2,o){if(s||(a="next"),t=o[a]){if(!(t=t.call(o,l)))throw TypeError("iterator result is not an object");if(!t.done)return t;l=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(l=TypeError("The iterator does not provide a '"+a+"' method"),s=1);o=e}else if((t=(d=m.n<0)?l:n.call(r,m))!==i)break}catch(t){o=e,s=1,l=t}finally{c=1}}return{value:t,done:d}}}(n,a,o),!0),c}var i={};function s(){}function l(){}function c(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(Gt(t={},r,function(){return this}),t),d=c.prototype=s.prototype=Object.create(u);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,Gt(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return l.prototype=c,Gt(d,"constructor",c),Gt(c,"constructor",l),l.displayName="GeneratorFunction",Gt(c,a,"GeneratorFunction"),Gt(d),Gt(d,a,"Generator"),Gt(d,r,function(){return this}),Gt(d,"toString",function(){return"[object Generator]"}),(Mt=function(){return{w:o,m}})()}function Gt(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}Gt=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var o=function(t,n){Gt(e,t,function(e){return this._invoke(t,n,e)})};o("next",0),o("throw",1),o("return",2)}},Gt(e,t,n,r)}function Lt(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,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Dt(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)?Dt(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 Dt(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 _t=function(e,t,n,r){return new(n||(n=Promise))(function(a,o){function i(e){try{l(r.next(e))}catch(e){o(e)}}function s(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,s)}l((r=r.apply(e,t||[])).next())})},Bt=o.T.encloseNamespace("assign.useOpenClassroomFlowData"),Zt={immediateFeedback:!1,preventScrubbing:!1,message:!1,requiresStudentSignIn:!1,respectRatingsAndRestrictions:!1},Ut="assign:open:classroom:flow:settings:header";function qt(e){var t,n,a,o=(0,Ft.Z)(),i=Lt((0,yt.D)(Ut,!0,{storage:Pt.Z1.LocalStorage}),2),l=i[0],c=i[1],u=(0,s._)({entityType:e.entityType,objectId:e.objectId}),d=ne.a.useBasicFetch(Ee.h.yearGroups(null===(t=u.currentUser.data)||void 0===t?void 0:t.customerId)),m=Ce(e.objectId).createOpenSession,p=Lt(r.useState(Object.assign(Object.assign({},Zt),{preventScrubbing:(null===(n=u.interactive.data)||void 0===n?void 0:n.preventScrubbing)||!1,immediateFeedback:(null===(a=u.interactive.data)||void 0===a?void 0:a.immediateFeedback)||!1})),2),f=p[0],g=p[1],v=Lt(r.useState(""),2),y=v[0],h=v[1],b=Lt(r.useState(!1),2),S=b[0],C=b[1];return{data:{loaded:u.loaded&&!!d.data,entity:u.entity,yearGroups:d},showHeader:l,hasStudentExp:u.hasStudentExp,shouldShowSpinner:S,nextButtonText:Bt("nextButton"),message:y,settings:f,setMessage:h,setShowHeader:c,toggleSetting:function(e){!function(e,t){var n,r,a,o=(n={},a=t,(r=function(e){var t=function(e){if("object"!=Rt(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Rt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Rt(t)?t:t+""}(r=e))in n?Object.defineProperty(n,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[r]=a,n);"respectRatingsAndRestrictions"===e&&(o.requiresStudentSignIn=t),g(function(e){return Object.assign(Object.assign({},e),o)})}(e,!f[e])},onShare:function(t){return _t(this,void 0,void 0,Mt().m(function n(){var r;return Mt().w(function(n){for(;;)switch(n.n){case 0:return C(!0),n.p=1,n.n=2,m({objectId:e.objectId,immediateFeedback:f.immediateFeedback,preventScrubbing:f.preventScrubbing,requireSignIn:f.requiresStudentSignIn,respectRatingsAndRestrictions:f.respectRatingsAndRestrictions});case 2:r=n.v,"function"==typeof t&&t(r),C(!1),n.n=4;break;case 3:n.p=3,n.v,o.error(Bt("createError"));case 4:return n.p=4,C(!1),n.f(4);case 5:return n.a(2)}},n,null,[[1,3,4,5]])}))}}}var Vt=o.T.encloseNamespace("assign.openClassroomFlowSettingsView");function zt(e){var t=qt({entityType:e.entityType,objectId:e.objectId}),n=t.data,a=n.loaded,o=n.entity,s=n.yearGroups,c=(0,l.y)({data:{entity:{id:e.objectId,type:e.entityType}},analyticsOptions:{location:i.LZ.Popup,entity:i.py.Assign}}).log;return r.createElement(d.G,{size:"lg",title:Vt("title"),showLoadingSpinner:!a||e.loading,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3",animation:e.animate},r.createElement(Ot,{entity:o.data,message:t.message,yearGroups:s.data,hasStudentExp:t.hasStudentExp,toggleMessage:t.settings.message,immediateFeedback:t.settings.immediateFeedback,preventScrubbing:t.settings.preventScrubbing,toggleRequiresStudentSignIn:t.settings.requiresStudentSignIn,toggleRespectRatingsAndRestrictions:t.settings.respectRatingsAndRestrictions,hideMessage:!0,onChangeMessage:t.setMessage,onToggleMessage:function(){return t.toggleSetting("message")},hidePreventScrubbing:"interactive"!==e.entityType,hideImmediateFeedback:"interactive"!==e.entityType,onTogglePreventScrubbing:function(){return t.toggleSetting("preventScrubbing")},onToggleImmediateFeedback:function(){return t.toggleSetting("immediateFeedback")},onToggleRequiresStudentSignIn:function(){return t.toggleSetting("requiresStudentSignIn")},onToggleRespectRatingsAndRestrictions:function(){return t.toggleSetting("respectRatingsAndRestrictions")},closeHeader:function(){return t.setShowHeader(!1)},disableRequiresStudentSignIn:t.settings.respectRatingsAndRestrictions}),r.createElement(m.P,{hideCreateClassroomButton:!0,onClickBack:e.goToFlowSelector,onClickNext:function(){t.onShare(function(t){c({type:"create-open-classroom",share:t}),e.setShare(t),e.goToAssignDetails()})},nextButtonText:t.nextButtonText,showSpinner:t.shouldShowSpinner}))}function Ht(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,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return $t(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)?$t(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 $t(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 Wt(e){var t=Ht(r.useState("settings"),2),n=t[0],o=t[1],i=Ht(r.useState(),2),s=i[0],l=i[1],u={objectId:e.objectId,entityType:e.entityType,closePopup:e.closePopup,goToFlowSelector:e.goToFlowSelector,shareId:null==s?void 0:s.shareId,initialDetailsScreen:"share-link",goToAssignDetails:function(){return o("assign-details")},setShare:l};return r.createElement(a.r,{data:u,animate:!1,step:n,setStep:o,closePopup:e.closePopup,steps:{settings:{view:zt},"assign-details":{view:c.AssignDetailsView}}})}function Qt(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,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Xt(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)?Xt(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 Xt(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 Jt(e){var t,n=Qt(r.useState(null!==(t=e.selectedFlow)&&void 0!==t?t:"flow-selector"),2),o=n[0],i=n[1],s=Qt(r.useState(!1),2),l=s[0],c=s[1],u=Qt(r.useState(!0),2),d=u[0],m=u[1];function p(e){m(!1),i(e)}var f={objectId:e.objectId,entityType:e.entityType,closePopup:e.closePopup,initialStep:l?"create-classroom":null,goToCreateClassroomPrompt:function(){c(!0),p("existing-classroom")},goToExistingClassroomFlow:function(){return p("existing-classroom")},goToFlowSelector:function(){return p("flow-selector")},goToOpenClassroomFlow:function(){return p("open-classroom")}};return r.createElement(a.r,{data:f,step:o,setStep:p,closePopup:e.closePopup,animate:d,steps:{"flow-selector":{view:Tt},"open-classroom":{view:Wt},"existing-classroom":{view:ot}}})}},63578:(e,t,n)=>{n.d(t,{Y:()=>m});var r=n(70680),a=n(23481),o=n(20354),i=n(94644),s=n(31949),l=n(69883),c=n(60115),u=n(88630),d=n(1211),m=function(e,t){var n=o.a.useBasicFetch(s.N.currentUser()),m=(0,l.Z)(),p=(0,r.I0)(),f=function(r){return e?(null==t?void 0:t.withStudentsCount)?d.J.searchClassroomsV4(e,r):d.J.searchClassrooms(e,n.data.customerId,r):(null==t?void 0:t.withStudentsCount)?u.F.getPublishedWithStudents(n.data.id,r):u.F.getPublished(n.data.id,r)},g=function(e){return o.a.getFetch(p)(f(e))},v=(0,c.K)(!!n.data&&f,g,function(e,t){if(1===e)return(0,i.r)(t);m.error(a.T.getPhrase("classrooms.hooks","error"))},function(t){return e?t.results:t.data});return Object.assign(Object.assign({},v),{fetchNext:g})}},27787:(e,t,n)=>{n.d(t,{G:()=>o});var r=n(5173),a=n(23481).T.encloseNamespace("classrooms.classroomValidation"),o=(0,r.Ry)().shape({name:(0,r.Z_)().max(255,function(){return a("nameExceeds")}).required(function(){return a("nameRequired")}).default("")})},82602:(e,t,n)=>{n.d(t,{WU:()=>c});var r=["second","minute","hour","day","week","month","year"],a=["秒","分钟","小时","天","周","个月","年"],o={},i=function(e,t){o[e]=t},s=[60,60,24,7,365/7/12,12];function l(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}var c=function(e,t,n){var r=function(e,t){return(+(t?l(t):new Date)-+l(e))/1e3}(e,n&&n.relativeDate);return function(e,t){for(var n=e<0?1:0,r=e=Math.abs(e),a=0;e>=s[a]&&a<s.length;a++)e/=s[a];return(e=Math.floor(e))>(0==(a*=2)?9:1)&&(a+=1),t(e,a,r)[n].replace("%s",e.toString())}(r,function(e){return o[e]||o.en_US}(t))};i("en_US",function(e,t){if(0===t)return["just now","right now"];var n=r[Math.floor(t/2)];return e>1&&(n+="s"),[e+" "+n+" ago","in "+e+" "+n]}),i("zh_CN",function(e,t){if(0===t)return["刚刚","片刻后"];var n=a[~~(t/2)];return[e+" "+n+"前",e+" "+n+"后"]})}}]);
|
|
3
|
+
//# sourceMappingURL=6756-3c7f911759-lite.chunk.js.map
|