@clickview/lite 0.74.0-rc.0 → 0.74.0-rc.2
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/{3816-lite-f459e281d1.chunk.css → 7577-lite-efcdc36bde.chunk.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{2126-4a3a267af7-lite.chunk.js → 2126-d77b244321-lite.chunk.js} +2 -2
- package/dist/scripts/{2126-4a3a267af7-lite.chunk.js.map → 2126-d77b244321-lite.chunk.js.map} +1 -1
- package/dist/scripts/2258-6851fce9d7-lite.chunk.js +3 -0
- package/dist/scripts/2258-6851fce9d7-lite.chunk.js.map +1 -0
- package/dist/scripts/{2541-9104968024-lite.chunk.js → 2541-d2d0da16cf-lite.chunk.js} +1 -1
- package/dist/scripts/{2541-9104968024-lite.chunk.js.map → 2541-d2d0da16cf-lite.chunk.js.map} +1 -1
- package/dist/scripts/3677-aadf9fd2cc-lite.chunk.js +2 -0
- package/dist/scripts/3677-aadf9fd2cc-lite.chunk.js.map +1 -0
- package/dist/scripts/3978-0e2106b5aa-lite.chunk.js +2 -0
- package/dist/scripts/3978-0e2106b5aa-lite.chunk.js.map +1 -0
- package/dist/scripts/4400-7381394a2e-lite.chunk.js +2 -0
- package/dist/scripts/4400-7381394a2e-lite.chunk.js.map +1 -0
- package/dist/scripts/5135-9fa172bfc3-lite.chunk.js +2 -0
- package/dist/scripts/5135-9fa172bfc3-lite.chunk.js.map +1 -0
- package/dist/scripts/{5434-671d92b4e3-lite.chunk.js → 5434-20de24cb39-lite.chunk.js} +1 -1
- package/dist/scripts/{5434-671d92b4e3-lite.chunk.js.map → 5434-20de24cb39-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5780-eb7c4d1db7-lite.chunk.js → 5780-3ee0f5d974-lite.chunk.js} +2 -2
- package/dist/scripts/5780-3ee0f5d974-lite.chunk.js.map +1 -0
- package/dist/scripts/5870-057fef9e27-lite.chunk.js +3 -0
- package/dist/scripts/5870-057fef9e27-lite.chunk.js.map +1 -0
- package/dist/scripts/618-33ead82bb3-lite.chunk.js +2 -0
- package/dist/scripts/618-33ead82bb3-lite.chunk.js.map +1 -0
- package/dist/scripts/{6282-62e8305b89-lite.chunk.js → 6282-2e7901a54a-lite.chunk.js} +1 -1
- package/dist/scripts/{6282-62e8305b89-lite.chunk.js.map → 6282-2e7901a54a-lite.chunk.js.map} +1 -1
- package/dist/scripts/6379-1fac9e5c3c-lite.chunk.js +2 -0
- package/dist/scripts/6379-1fac9e5c3c-lite.chunk.js.map +1 -0
- package/dist/scripts/647-cf8ade72c6-lite.chunk.js +2 -0
- package/dist/scripts/647-cf8ade72c6-lite.chunk.js.map +1 -0
- package/dist/scripts/{6741-969accd2bc-lite.chunk.js → 6741-9ccafc6ff5-lite.chunk.js} +3 -3
- package/dist/scripts/{6741-969accd2bc-lite.chunk.js.map → 6741-9ccafc6ff5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{690-aeaed228cb-lite.chunk.js → 690-e3a972ec48-lite.chunk.js} +1 -1
- package/dist/scripts/{690-aeaed228cb-lite.chunk.js.map → 690-e3a972ec48-lite.chunk.js.map} +1 -1
- package/dist/scripts/6909-0cc76e0fcc-lite.chunk.js +2 -0
- package/dist/scripts/6909-0cc76e0fcc-lite.chunk.js.map +1 -0
- package/dist/scripts/{6948-3eab72b8e2-lite.chunk.js → 6948-9121ca4b39-lite.chunk.js} +3 -3
- package/dist/scripts/{6948-3eab72b8e2-lite.chunk.js.map → 6948-9121ca4b39-lite.chunk.js.map} +1 -1
- package/dist/scripts/7234-4fdc8f5ae3-lite.chunk.js +2 -0
- package/dist/scripts/7234-4fdc8f5ae3-lite.chunk.js.map +1 -0
- package/dist/scripts/7577-a930db95e5-lite.chunk.js +2 -0
- package/dist/scripts/7577-a930db95e5-lite.chunk.js.map +1 -0
- package/dist/scripts/7742-8a303defe5-lite.chunk.js +2 -0
- package/dist/scripts/7742-8a303defe5-lite.chunk.js.map +1 -0
- package/dist/scripts/{8-f1d9aa4678-lite.chunk.js → 8-9f5e438ed9-lite.chunk.js} +2 -2
- package/dist/scripts/{8-f1d9aa4678-lite.chunk.js.map → 8-9f5e438ed9-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8280-2e8afc8fa9-lite.chunk.js → 8280-6d9466991b-lite.chunk.js} +1 -1
- package/dist/scripts/{8280-2e8afc8fa9-lite.chunk.js.map → 8280-6d9466991b-lite.chunk.js.map} +1 -1
- package/dist/scripts/8451-9ab30b6e35-lite.chunk.js +2 -0
- package/dist/scripts/8451-9ab30b6e35-lite.chunk.js.map +1 -0
- package/dist/scripts/9241-c523dc7aac-lite.chunk.js +2 -0
- package/dist/scripts/9241-c523dc7aac-lite.chunk.js.map +1 -0
- package/dist/scripts/9345-df0cbb196f-lite.chunk.js +3 -0
- package/dist/scripts/9345-df0cbb196f-lite.chunk.js.map +1 -0
- package/dist/scripts/9630-6bcd453382-lite.chunk.js +2 -0
- package/dist/scripts/9630-6bcd453382-lite.chunk.js.map +1 -0
- package/dist/scripts/{9649-29507ab972-lite.chunk.js → 9649-fc995e7732-lite.chunk.js} +1 -1
- package/dist/scripts/{9649-29507ab972-lite.chunk.js.map → 9649-fc995e7732-lite.chunk.js.map} +1 -1
- package/dist/scripts/9767-a23d603cc5-lite.chunk.js +2 -0
- package/dist/scripts/9767-a23d603cc5-lite.chunk.js.map +1 -0
- package/dist/scripts/{9963-f2ce3a321f-lite.chunk.js → 9963-8c527743bb-lite.chunk.js} +1 -1
- package/dist/scripts/{9963-f2ce3a321f-lite.chunk.js.map → 9963-8c527743bb-lite.chunk.js.map} +1 -1
- package/dist/scripts/{bundle-5b65703152.min.js → bundle-6a0c1aecd5.min.js} +3 -3
- package/dist/scripts/{bundle-5b65703152.min.js.map → bundle-6a0c1aecd5.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1362-56810ef4c8-lite.chunk.js +0 -3
- package/dist/scripts/1362-56810ef4c8-lite.chunk.js.map +0 -1
- package/dist/scripts/3677-4904f30c6a-lite.chunk.js +0 -2
- package/dist/scripts/3677-4904f30c6a-lite.chunk.js.map +0 -1
- package/dist/scripts/3816-15829f9da8-lite.chunk.js +0 -2
- package/dist/scripts/3816-15829f9da8-lite.chunk.js.map +0 -1
- package/dist/scripts/3978-a551dd2648-lite.chunk.js +0 -2
- package/dist/scripts/3978-a551dd2648-lite.chunk.js.map +0 -1
- package/dist/scripts/4400-755a158a52-lite.chunk.js +0 -2
- package/dist/scripts/4400-755a158a52-lite.chunk.js.map +0 -1
- package/dist/scripts/5135-166ec46620-lite.chunk.js +0 -2
- package/dist/scripts/5135-166ec46620-lite.chunk.js.map +0 -1
- package/dist/scripts/5780-eb7c4d1db7-lite.chunk.js.map +0 -1
- package/dist/scripts/5870-eae3bb745c-lite.chunk.js +0 -3
- package/dist/scripts/5870-eae3bb745c-lite.chunk.js.map +0 -1
- package/dist/scripts/618-996d8b560b-lite.chunk.js +0 -2
- package/dist/scripts/618-996d8b560b-lite.chunk.js.map +0 -1
- package/dist/scripts/6379-3414d6c295-lite.chunk.js +0 -2
- package/dist/scripts/6379-3414d6c295-lite.chunk.js.map +0 -1
- package/dist/scripts/647-6a592af19b-lite.chunk.js +0 -2
- package/dist/scripts/647-6a592af19b-lite.chunk.js.map +0 -1
- package/dist/scripts/6909-6805b6a0d9-lite.chunk.js +0 -2
- package/dist/scripts/6909-6805b6a0d9-lite.chunk.js.map +0 -1
- package/dist/scripts/7234-bcddfe2112-lite.chunk.js +0 -2
- package/dist/scripts/7234-bcddfe2112-lite.chunk.js.map +0 -1
- package/dist/scripts/7742-9e79cc452b-lite.chunk.js +0 -2
- package/dist/scripts/7742-9e79cc452b-lite.chunk.js.map +0 -1
- package/dist/scripts/8451-0103210a8f-lite.chunk.js +0 -2
- package/dist/scripts/8451-0103210a8f-lite.chunk.js.map +0 -1
- package/dist/scripts/9241-2386134dd3-lite.chunk.js +0 -2
- package/dist/scripts/9241-2386134dd3-lite.chunk.js.map +0 -1
- package/dist/scripts/9345-0a7f58bb53-lite.chunk.js +0 -3
- package/dist/scripts/9345-0a7f58bb53-lite.chunk.js.map +0 -1
- package/dist/scripts/9630-ca2a850260-lite.chunk.js +0 -2
- package/dist/scripts/9630-ca2a850260-lite.chunk.js.map +0 -1
- package/dist/scripts/9767-1b583ceb6c-lite.chunk.js +0 -2
- package/dist/scripts/9767-1b583ceb6c-lite.chunk.js.map +0 -1
- /package/dist/css/{1362-lite-7aa2f8a851.chunk.css → 2258-lite-7aa2f8a851.chunk.css} +0 -0
- /package/dist/scripts/{1362-56810ef4c8-lite.chunk.js.LICENSE.txt → 2258-6851fce9d7-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5870-eae3bb745c-lite.chunk.js.LICENSE.txt → 5870-057fef9e27-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6741-969accd2bc-lite.chunk.js.LICENSE.txt → 6741-9ccafc6ff5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6948-3eab72b8e2-lite.chunk.js.LICENSE.txt → 6948-9121ca4b39-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9345-0a7f58bb53-lite.chunk.js.LICENSE.txt → 9345-df0cbb196f-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-5b65703152.min.js.LICENSE.txt → bundle-6a0c1aecd5.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 5870-057fef9e27-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5870],{2968:(e,t,r)=>{r.d(t,{H:()=>te});var n=r(32735),a=r(92802),i=r(23481),o=r(75896),s=r(70226),l=r(98461),c=r(66122),u=r(12778),d=i.T.encloseNamespace("userManager.userEmailContactSupport");function m(e){var t=e.error.validationCode===s.x.Rostered;return n.createElement(c.A,{name:e.name},n.createElement("span",null,d(t?"rostering":"alreadyExists")," "),e.isInBulkEditing?n.createElement("span",null,d("contactSupport")):n.createElement(l.d,{className:"info-link",href:u.o.getSupportRequestUrl(),newTab:!0},d("contactSupport")),n.createElement("span",null," ",d("forAssistance")))}var f=i.T.encloseNamespace("userManager.editingUserExists");function p(e){return n.createElement(c.A,{name:e.name},n.createElement("span",null,f("alreadyExists")," "))}var h=r(15611),g=r(82644),v=r(76881),b=i.T.encloseNamespace("userManager.userExistsInSchool");function y(e){var t=(0,g.b)(),r=e.appLinks.studentManager.params||{};return e.error.user.userType===v.Y.Learner?n.createElement(c.A,{name:e.name},n.createElement("span",null,b("emailExistsSameSchoolStudent")," "),e.isInBulkEditing?n.createElement("span",null,b("studentManager")):n.createElement(h.F,{appLink:Object.assign(Object.assign({},e.appLinks.studentManager),{params:Object.assign(Object.assign({},r),{query:t.values.email})}),className:"info-link",onClick:e.onClickCancel},b("studentManager"))):n.createElement(c.A,{name:e.name},n.createElement("span",null,b("emailExistsSameSchoolStaff")," "),e.isInBulkEditing?n.createElement("span",null,b("staffManager")):n.createElement(h.F,{appLink:Object.assign(Object.assign({},e.appLinks.staffManager),{params:Object.assign(Object.assign({},r),{query:t.values.email})}),className:"info-link",onClick:e.onClickCancel},b("staffManager")))}var E=i.T.encloseNamespace("userManager.userTypeMismatch");function w(e){return e.error.user.userType===v.Y.Learner?n.createElement(c.A,{name:e.name},n.createElement("span",null,E("alreadyExistsStudent")," "),e.isInBulkEditing?n.createElement("span",null,E("studentManager")):n.createElement(h.F,{appLink:e.appLinks.studentManager,className:"info-link",onClick:e.onClickCancel},E("studentManager"))):n.createElement(c.A,{name:e.name},n.createElement("span",null,E("alreadyExistsStaff")," "),e.isInBulkEditing?n.createElement("span",null,E("staffManager")):n.createElement(h.F,{appLink:e.appLinks.staffManager,className:"info-link",onClick:e.onClickCancel},E("staffManager")))}function k(e){if(!e.isNew)return n.createElement(p,Object.assign({},e));switch(e.error.validationCode){case s.x.UserAlreadyExistsInCustomer:return n.createElement(y,Object.assign({},e));case s.x.UserTypeMismatch:return n.createElement(w,Object.assign({},e));case s.x.UserInCustomerWithOnline:case s.x.CustomerFoundInOnline:case s.x.InvalidUserStatus:case s.x.Rostered:return n.createElement(m,Object.assign({},e))}return n.createElement(n.Fragment,null)}var S=r(69843),C=r(26055),x=r(43820),N=r(29057),O=r(13876),L=r(83523),T=r(40424),j=r(86613),R=r(64818);function A(e){return A="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},A(e)}function I(){I=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,n){var i=t&&t.prototype instanceof v?t:v,o=Object.create(i.prototype),s=new j(n||[]);return a(o,"_invoke",{value:N(e,r,s)}),o}function d(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var m="suspendedStart",f="suspendedYield",p="executing",h="completed",g={};function v(){}function b(){}function y(){}var E={};c(E,o,(function(){return this}));var w=Object.getPrototypeOf,k=w&&w(w(R([])));k&&k!==r&&n.call(k,o)&&(E=k);var S=y.prototype=v.prototype=Object.create(E);function C(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function r(a,i,o,s){var l=d(e[a],e,i);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==A(u)&&n.call(u,"__await")?t.resolve(u.__await).then((function(e){r("next",e,o,s)}),(function(e){r("throw",e,o,s)})):t.resolve(u).then((function(e){c.value=e,o(c)}),(function(e){return r("throw",e,o,s)}))}s(l.arg)}var i;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return i=i?i.then(a,a):a()}})}function N(t,r,n){var a=m;return function(i,o){if(a===p)throw Error("Generator is already running");if(a===h){if("throw"===i)throw o;return{value:e,done:!0}}for(n.method=i,n.arg=o;;){var s=n.delegate;if(s){var l=O(s,n);if(l){if(l===g)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===m)throw a=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=p;var c=d(t,r,n);if("normal"===c.type){if(a=n.done?h:f,c.arg===g)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(a=h,n.method="throw",n.arg=c.arg)}}}function O(t,r){var n=r.method,a=t.iterator[n];if(a===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,O(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var i=d(a,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,g;var o=i.arg;return o?o.done?(r[t.resultName]=o.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,g):o:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,g)}function L(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function j(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function R(t){if(t||""===t){var r=t[o];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,i=function r(){for(;++a<t.length;)if(n.call(t,a))return r.value=t[a],r.done=!1,r;return r.value=e,r.done=!0,r};return i.next=i}}throw new TypeError(A(t)+" is not iterable")}return b.prototype=y,a(S,"constructor",{value:y,configurable:!0}),a(y,"constructor",{value:b,configurable:!0}),b.displayName=c(y,l,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===b||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,y):(e.__proto__=y,c(e,l,"GeneratorFunction")),e.prototype=Object.create(S),e},t.awrap=function(e){return{__await:e}},C(x.prototype),c(x.prototype,s,(function(){return this})),t.AsyncIterator=x,t.async=function(e,r,n,a,i){void 0===i&&(i=Promise);var o=new x(u(e,r,n,a),i);return t.isGeneratorFunction(r)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},C(S),c(S,l,"Generator"),c(S,o,(function(){return this})),c(S,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=R,j.prototype={constructor:j,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(T),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function a(n,a){return s.type="throw",s.arg=t,r.next=n,a&&(r.method="next",r.arg=e),!!a}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],s=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),c=n.call(o,"finallyLoc");if(l&&c){if(this.prev<o.catchLoc)return a(o.catchLoc,!0);if(this.prev<o.finallyLoc)return a(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return a(o.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return a(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var i=a;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,g):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),T(r),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;T(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:R(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),g}},t}function U(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return V(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)?V(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 V(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 P=function(e,t,r,n){return new(r||(r=Promise))((function(a,i){function o(e){try{l(n.next(e))}catch(e){i(e)}}function s(e){try{l(n.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,s)}l((n=n.apply(e,t||[])).next())}))},F="userManager.userDetailsForm",_=i.T.encloseNamespace(F),M=[s.x.UserAlreadyExistsInCustomer,s.x.CustomerFoundInOnline,s.x.UserInCustomerWithOnline,s.x.UserTypeMismatch,s.x.InvalidUserStatus,s.x.UserCanBeAddedInCustomer,s.x.Rostered],G="firstName";function W(e){var t,r,l,c,u,d,m=e.onClickCancel,f=e.isNew,p=e.userType,h=e.yearGroups,b=e.submitText,y=e.currentUser,E=R.l.getValidYearGroups(h),w=U(n.useState(null),2),A=w[0],V=w[1],W=U(n.useState(!1),2),B=W[0],D=W[1],z=U(n.useState(!1),2),q=z[0],Y=z[1],Z=n.useRef({}),$=n.useContext(C.A),Q=(0,g.b)();n.useEffect((function(){Q.values.password&&Q.values.email&&Q.setFieldValue("password","")}),[Q.values.email,Q.values.password]),n.useEffect((function(){if(Q.touched.email&&!B){var e=document.getElementById(G);e&&e.focus()}}),[B]);var H=(null===(t=e.user)||void 0===t?void 0:t.status)===T.w.Disabled,K=!e.isNew&&y.id.toString()===(null===(r=Q.values.userId)||void 0===r?void 0:r.toString());return n.createElement(a.l0,null,n.createElement(N.W,{label:_("emailAddress"),type:"text",name:"email",id:"email",placeholder:_("emailAddressPlaceholder"),value:Q.values.email,showRequiredStar:e.emailRequired,disabled:!e.canEditEmail||H,formSize:e.formSize,infoText:function(){if($===x.a.Curator&&!e.isNew&&Q.initialValues.email)return _(e.canEditEmail?"emailNotVerified":"cannotEditVerifiedEmail")}(),onBlur:function(t){return P(this,void 0,void 0,I().mark((function r(){var n,a;return I().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if((n=t.currentTarget.value)!==Q.initialValues.email){r.next=3;break}return r.abrupt("return");case 3:if(Q.setFieldTouched("email",!0),$===x.a.Primary&&e.validateEmail){r.next=6;break}return r.abrupt("return");case 6:return r.next=8,Q.validateForm();case 8:if(!r.sent.email&&n){r.next=12;break}return A&&V(null),r.abrupt("return");case 12:if(D(!0),r.prev=13,a=Z.current[n]){r.next=21;break}return r.t0=o.m,r.next=19,e.validateEmail(n);case 19:r.t1=r.sent,a=r.t0.first.call(r.t0,r.t1);case 21:if(Z.current[n]=a,!e.isNew||a.validationCode!==s.x.UserCanBeAddedInCustomer){r.next=25;break}return e.onDetectValidUser(a.user),r.abrupt("return");case 25:if(M.includes(a.validationCode)){r.next=29;break}return A&&V(null),D(!1),r.abrupt("return");case 29:V(a),D(!1),r.next=36;break;case 33:r.prev=33,r.t2=r.catch(13),D(!1);case 36:case"end":return r.stop()}}),r,null,[[13,33]])})))},onChange:function(e){var t=e.currentTarget.value;Q.setFieldValue("email",t),A&&V(null)},showLoadingSpinner:B,className:A?"is-invalid":"",autoFocus:!0}),!!A&&n.createElement("div",{className:"mt-n2 mb-2"},n.createElement(k,{name:"email",isNew:e.isNew,error:A,appLinks:e.appLinks,emailRequired:e.emailRequired,onClickCancel:e.onClickCancel,isInBulkEditing:e.isInBulkEditing})),n.createElement(N.W,{label:_("firstName"),type:"text",name:"firstName",id:G,placeholder:_("firstNamePlaceholder"),value:Q.values.firstName,showRequiredStar:!0,formSize:e.formSize,disabled:H||B||R.l.hasLegacySso(e.user)&&!q}),n.createElement(N.W,{label:_("lastName"),type:"text",name:"surname",id:"surname",placeholder:_("lastNamePlaceholder"),value:Q.values.surname,showRequiredStar:!0,formSize:e.formSize,disabled:H||B||R.l.hasLegacySso(e.user)&&!q}),e.showDisplayNameField&&n.createElement(N.W,{label:_("displayName"),type:"text",name:"displayName",id:"displayName",placeholder:_("displayNamePlaceholder"),formSize:e.formSize,disabled:H||B,infoText:_("displayNameInfo")}),n.createElement(N.W,{label:_("username"),type:"text",name:"username",id:"username",placeholder:_("usernamePlaceholder"),value:Q.values.username,infoTooltip:f?_("usernameInfo"):null,formSize:e.formSize,disabled:!f||H||B}),e.showPasswordField&&n.createElement(N.W,{label:_("password"),type:"password",name:"password",id:"password",placeholder:_("passwordPlaceholder"),value:Q.values.password,disabled:!!Q.values.email||B,infoTooltip:Q.values.email?_("passwordDisabledInfo"):_("passwordGenerateInfo"),formSize:e.formSize}),p===v.Y.Learner&&n.createElement(N.W,{as:"select",label:_("yearGroup"),name:"masterYearGroup",value:null!==(c=null===(l=Q.values.masterYearGroup)||void 0===l?void 0:l.id)&&void 0!==c?c:"",className:(null===(u=Q.values.masterYearGroup)||void 0===u?void 0:u.id)?"":"text-secondary",showRequiredStar:!0,disabled:H||B||R.l.hasSso(e.user)&&!q&&0!==(null===(d=Q.initialValues.masterYearGroup)||void 0===d?void 0:d.value),onChange:function(e){var t=e.target.value,r=h.find((function(e){return e.id.toString()===(null==t?void 0:t.toString())}));r?Q.setFieldValue("masterYearGroup",{id:r.id,name:r.name,description:r.description,value:r.value}):Q.setFieldValue("masterYearGroup",null)}},n.createElement("option",{className:"text-secondary",value:""},i.T.getPhrase(F,"selectYearGroup")),E.map((function(e){return n.createElement("option",{key:e.id,value:e.id,className:"text-dark"},e.name)}))),n.createElement("div",{className:"d-flex justify-content-between align-items-center"},p!==v.Y.Staff||K?n.createElement("div",null," "):n.createElement(N.W,{id:"masterRole",name:"masterRole",disabled:H||B||R.l.hasNonLegacySso(e.user)&&!q},(function(){return n.createElement("div",{className:"d-flex align-items-center"},n.createElement(L.Z,{onClick:function(){return Q.setFieldValue("masterRole",Q.values.masterRole===j.i.User?j.i.Admin:j.i.User)},on:Q.values.masterRole===j.i.Admin,disabled:H||R.l.hasNonLegacySso(e.user)&&!q,showStateWhenDisabled:!0}),n.createElement("span",{className:"fw-semibold ms-2"},_("admin")))})),function(e){return!(e.isNew||!e.showActions||!e.appLinks||!e.user||!e.onClickResendActivationEmail)}(e)&&n.createElement(S.c,{user:e.user,userType:p,appLinks:e.appLinks,onClickSendResetEmail:e.onClickSendResetEmail,onClickResendActivationEmail:e.onClickResendActivationEmail,onClickSendVerificationEmail:e.onClickSendVerificationEmail,currentUser:y,products:e.products,isEditUserForm:!0,hasUserCredit:e.hasUserCredit})),n.createElement(O.u,null,!!e.onToggleNextCheckbox&&n.createElement(O.u.Checkbox,{id:"edit-next-user",onToggle:e.onToggleNextCheckbox,label:e.goToNextText||_("goToNext"),checked:e.shouldGoToNext}),!!e.canEditSsoFields&&n.createElement(O.u.Toggle,{on:q,onClick:function(){return Y((function(e){return!e}))},label:_("editSsoFields"),disabled:!R.l.hasSso(e.user),tooltip:R.l.hasSso(e.user)?"":"This user doesn't sign in with SSO"}),n.createElement(O.u.Cancel,{onClick:m}),n.createElement(O.u.Submit,{isNew:f,text:b,variant:"dark",disabled:!!A||void 0})))}var B=r(39739),D=r(5173),z=/^(?![._])(?!.*[._]$)(?!.*?\.\.)(?!.*?__)[a-zA-Z0-9_.]+$/,q=/^[\w0-9'\-,.():;&][^_!¡?÷¿/\\+=@#$%ˆ*{}|~<>[\]]{0,}$/,Y=i.T.encloseNamespace("userManager.validation"),Z=function(e){return(0,D.Z_)().max(255,(function(){return Y("nameExceeds")})).required((function(){return Y("nameRequired")})).default("").test({name:"name-invalid",message:Y("nameInvalid"),test:function(t){return!(!(null==e?void 0:e.userId)||e.firstName!==t)||q.test(t)}})},$=function(e){return(0,D.Z_)().max(255,(function(){return Y("surnameExceeds")})).required((function(){return Y("surnameRequired")})).default("").test({name:"surname-invalid",message:Y("surnameInvalid"),test:function(t){return!(!(null==e?void 0:e.userId)||e.surname!==t)||q.test(t)}})},Q=function(e,t){var r=(0,D.Z_)().max(255,(function(){return Y("emailExceeds")})).email((function(){return Y("emailInvalidLong")})).default("");return e!==v.Y.Staff||(null==t?void 0:t.userId)&&!t.email||(r=r.required((function(){return Y("emailRequired")}))),r},H=function(e){var t=!(null==e?void 0:e.userId);return(0,D.Z_)().default("").test({name:"username-too-long",message:Y("usernameExceeds"),test:function(r){return!t&&e.username===r||r.length<=200}}).test({name:"username-too-short",message:Y("usernameTooShort"),test:function(r){return!t&&e.username===r||!(!t||r)||r.length>=5}}).test({name:"username-invalid",message:Y("usernameInvalidLong"),test:function(r){return!(!t||r)||!t&&e.username===r||z.test(r)}})},K=function(e,t){var r=(0,D.Z_)().default("");return(null==t?void 0:t.userId)||(r=r.test({name:"password-short",message:Y("passwordTooShort",{minLength:e}),test:function(t){return!t||t.length>=e}})),r},J=function(e){if(e!==v.Y.Staff)return(0,D.Ry)().required((function(){return Y("yearGroupRequired")})).nullable()},X=function(e,t,r){return(0,D.Ry)().shape({firstName:Z(r),surname:$(r),email:Q(e,r),username:H(r),password:K(t,r),displayName:(0,D.Z_)().max(70,(function(){return Y("displayNameExceeds")})).notRequired().nullable().default("").test({name:"display-name-short",message:Y("displayNameTooShort"),test:function(e){return!e||e.length>=2}}),masterYearGroup:J(e)})},ee=r(95815);function te(e){var t={};Object.keys(e.initialErrors||{}).forEach((function(e){t[e]=!0}));var r,a,i=!e.initialValues.userId,o=!!i||!(null===(a=null===(r=e.user)||void 0===r?void 0:r.metadata)||void 0===a?void 0:a.isEmailVerified),s=B.P.getMinimumPasswordLength(e.passwordPolicy,e.userType,j.i.User),l=R.l.getValidYearGroups(e.yearGroups);return n.createElement("div",null,!i&&R.l.hasSso(e.user)&&n.createElement(ee.D,{helpArticle:e.editSsoUserHelpArticle,userType:e.userType,isNew:i}),n.createElement(g.n,{initialValues:e.initialValues,initialErrors:e.initialErrors,initialTouched:t,onSubmit:e.onSubmit,validationSchema:X(e.userType,s,e.initialValues)},n.createElement(W,{isNew:i,user:e.user,userType:e.userType,yearGroups:l,onClickCancel:e.onClickCancel,submitText:e.submitText,shouldGoToNext:e.shouldGoToNext,onToggleNextCheckbox:e.onToggleNextCheckbox,goToNextText:e.goToNextText,currentUser:e.currentUser,formSize:e.formSize,showPasswordField:e.showPasswordField,canEditEmail:o,showActions:e.showActions,appLinks:e.appLinks,onClickResendActivationEmail:e.onClickResendActivationEmail,onClickSendResetEmail:e.onClickSendResetEmail,onClickSendVerificationEmail:e.onClickSendVerificationEmail,emailRequired:e.emailRequired,showDisplayNameField:e.showDisplayNameField,canEditSsoFields:e.canEditSsoFields,validateEmail:e.validateEmail,onDetectValidUser:e.onDetectValidUser,isInBulkEditing:e.isInBulkEditing,products:e.products,hasUserCredit:e.hasUserCredit})))}},95815:(e,t,r)=>{r.d(t,{D:()=>u});var n=r(32735),a=r(83345),i=r(76881),o=r(26055),s=r(43820),l=r(14604),c="userManager.editSsoUserWarning";function u(e){var t=n.useContext(o.A);return n.createElement(l.W,null,n.createElement(a.x,{namespace:c,phrase:e.isNew?t===s.a.Curator?"ssoWarningCreateCurator":e.userType===i.Y.Learner?"ssoWarningCreateStudent":"ssoWarningCreateStaff":t===s.a.Curator?"ssoWarningEditCurator":"ssoWarningEditUser"}),!!e.helpArticle&&n.createElement("a",{className:"info-link d-block",href:e.helpArticle,target:"_blank"},n.createElement(a.x,{namespace:c,phrase:e.isNew?"kbArticleEdit":"kbArticleCreate"})))}},69843:(e,t,r)=>{r.d(t,{c:()=>j});var n=r(32735),a=r(23481),i=r(81886),o=r(2948),s=r(49985),l=r(65858),c=r(26055),u=r(43820),d=r(14604),m=r(83345),f="userManager.ssoPasswordResetEmailNotAllowedError";function p(e){return n.createElement(d.W,null,n.createElement("p",{className:"mb-1 fw-semibold"},n.createElement(m.x,{namespace:f,phrase:"warning"})),e.helpArticle&&n.createElement("a",{href:e.helpArticle,target:"_blank",className:"info-link"},n.createElement(m.x,{namespace:f,phrase:"findMore"})))}var h=r(83657),g=r(38143),v=r(40424),b=r(12754),y=r(76881),E=r(42617);function w(e){return e&&e.groups?e.groups.map((function(e){return e.name})):[]}var k={isDev:function(e){return w(e).includes(E.j.Developer)},hasSubjectsAccess:function(e){return[E.j.Developer,E.j.Content,E.j.Curator,E.j.StreamableCurator].some((function(t){return w(e).includes(t)}))}},S=r(89961),C=r(35223),x=r(64818);function N(e){return function(e){if(Array.isArray(e))return L(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||O(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(e,t){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}}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}var T=a.T.encloseNamespace("userManager.userList");function j(e){var t=function(e){var t,r,a,d,m,f,h,E,w,L,j=n.useContext(c.A),R=function(t){return t===e.user.status},A=null===(t=e.user.metadata)||void 0===t?void 0:t.isEmailVerified,I=e.user.id==(null===(r=e.currentUser)||void 0===r?void 0:r.id),U=(w=(0,o.D)(g.g.BULK_REMOVE_USERS),L=2,function(e){if(Array.isArray(e))return e}(w)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(c)throw a}}return s}}(w,L)||O(w,L)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[1];function V(t){s.k.logUserAction({id:e.user.id},s.k.mergeOptions({entity:l.py.User,workflowPhase:l.eu.Start,location:l.LZ[e.userType===y.Y.Learner?"StaffManagerListItem":"StudentManagerListItem"]},t))}var P=[];if(!e.isEditUserForm){var F=function(){return!(e.hasRostering||!R(v.w.Active)&&(!R(v.w.Inactive)||j!==u.a.Curator))};P.push({order:0,onClick:function(){var t;if(F()){V({actionType:l.Vw.Edit});var r=Object.assign(Object.assign({},e.appLinks.editUser),{args:[].concat(N(null!==(t=e.appLinks.editUser.args)&&void 0!==t?t:[]),[e.user.id])});i.Q.C$.trigger(r)}},svgName:C.vn.Edit,className:"btn btn-link svg-container ".concat(F()?"":"disabled"),tooltip:e.hasRostering?T("editControlledByRostering"):R(v.w.Disabled)?T("editUserDisabled"):R(v.w.Inactive)&&j!==u.a.Curator?T("editUserPending"):T("editUser"),button:!0})}return e.user.email&&R(v.w.Inactive)&&e.onClickResendActivationEmail&&P.push({order:5,disabled:e.hasRostering,tooltip:e.hasRostering?T("editControlledByRostering"):"",label:T("resendActivationEmail"),onClick:function(){V({actionType:l.Vw.SendEmail,descriptor:l.on.ActivateUser}),e.onClickResendActivationEmail(e.user)},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),e.user.email&&R(v.w.Active)&&!A&&P.push({order:5,label:T("sendVerificationEmail"),disabled:e.hasRostering,tooltip:e.hasRostering?T("editControlledByRostering"):"",onClick:function(){V({actionType:l.Vw.SendEmail,descriptor:l.on.VerifyEmail}),e.onClickSendVerificationEmail(e.user)},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),I||(A&&R(v.w.Active)&&e.onClickSendResetEmail&&P.push({order:5,label:T("sendResetEmail"),disabled:e.hasRostering,tooltip:e.hasRostering?T("editControlledByRostering"):"",onClick:function(){x.l.hasSso(e.user)?S.M.render(n.createElement(p,{helpArticle:e.ssoHelpArticle}),{title:T("sendResetEmail"),cancelButtonProps:{text:T("close"),variant:"dark"}}):(V({actionType:l.Vw.SendEmail,descriptor:l.on.ResetPasswordEmail}),e.onClickSendResetEmail(e.user))},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),R(v.w.Inactive)||P.push({order:10,label:T(R(v.w.Active)?"deactivate":"activate"),disabled:e.hasRostering,tooltip:e.hasRostering?T("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",onClick:function(){var t;V({actionType:l.Vw.Activate,descriptor:R(v.w.Active)?l.DL.Off:l.DL.On});var r=Object.assign(Object.assign({},e.appLinks.toggleStatus),{args:[].concat(N(null!==(t=e.appLinks.toggleStatus.args)&&void 0!==t?t:[]),[e.user.id])});i.Q.C$.trigger(r)}}),(j!==u.a.Primary||(null===(a=e.products)||void 0===a?void 0:a.includes(b.x.Online)))&&P.push({order:25,disabled:e.hasRostering,onClick:function(){R(v.w.Active)||(V({actionType:l.Vw.Delete,descriptor:l.yh.Single}),U({users:[e.user],totalUsers:1}),i.Q.C$.trigger(e.appLinks.deleteUser))},label:T("delete"),className:"btn btn-link text-danger ".concat(R(v.w.Active)||e.hasRostering?"cursor-default disabled":""),button:!1,tooltip:e.hasRostering?T("editControlledByRostering"):R(v.w.Active)?T("deleteDisabledTooltip"):null}),j!==u.a.Online&&!(null===(d=e.products)||void 0===d?void 0:d.includes(b.x.Online))&&P.push({order:25,disabled:e.hasRostering,onClick:function(){var t;if(!R(v.w.Active)){V({actionType:l.Vw.Remove,descriptor:l.yh.Single});var r=Object.assign(Object.assign({},e.appLinks.removeUser),{args:[].concat(N(null!==(t=e.appLinks.editUser.args)&&void 0!==t?t:[]),[e.user.id])});i.Q.C$.trigger(r)}},label:T("remove"),className:"btn btn-link text-danger ".concat(R(v.w.Active)||e.hasRostering?"cursor-default disabled":""),button:!1,tooltip:e.hasRostering?T("editControlledByRostering"):R(v.w.Active)?T("removeDisabledTooltip"):null})),j===u.a.Online&&e.userType===y.Y.Learner&&R(v.w.Active)&&P.push({order:15,label:T("viewWorkspace"),onClick:function(){return V({actionType:l.Vw.Click,descriptor:l._S.ViewStudentWorkspace})},appLink:Object.assign(Object.assign({},e.appLinks.viewStudentWorkspace),{params:{username:e.user.username}}),className:e.hasRostering?"cursor-default disabled":"btn btn-link",button:!1}),j!==u.a.Primary||e.userType!==y.Y.Learner||R(v.w.Inactive)||P.push({order:15,label:T("viewStudentsVideos"),onClick:function(){return V({actionType:l.Vw.Click,descriptor:l._S.ViewStudentWorkspace})},appLink:Object.assign(Object.assign({},e.appLinks.viewStudentWorkspace),{args:[e.user.id]}),className:"btn btn-link",button:!1}),R(v.w.Active)&&(e.userType===y.Y.Staff&&!A||e.userType===y.Y.Learner)&&P.push({order:20,disabled:e.hasRostering,label:T("changePassword"),className:e.hasRostering?"cursor-default disabled":"",onClick:function(){var t;V({actionType:l.Vw.ChangePassword});var r=Object.assign(Object.assign({},e.appLinks.changePassword),{args:[].concat(N(null!==(t=e.appLinks.changePassword.args)&&void 0!==t?t:[]),[e.user.id])});i.Q.C$.trigger(r)}}),j===u.a.Curator&&k.isDev(e.currentUser)&&P.push.apply(P,[{order:2,label:T("manageCuratorGroups"),disabled:e.hasRostering,tooltip:e.hasRostering?T("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",onClick:function(){V({actionType:l.Vw.ManageGroup}),i.Q.C$.trigger(Object.assign(Object.assign({},e.appLinks.manageUserCuratorGroups),{args:[e.user.id]}))}},{order:3,label:T("editUserOptions"),disabled:e.hasRostering,tooltip:e.hasRostering?T("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",appLink:Object.assign(Object.assign({},e.appLinks.editUserOptions),{args:[].concat(N(null!==(m=e.appLinks.editUserOptions.args)&&void 0!==m?m:[]),[e.user.id])})}]),j===u.a.Curator&&e.hasUserCredit&&P.push({order:4,label:T("editUserCredits"),appLink:Object.assign(Object.assign({},e.appLinks.userCredit),{args:[].concat(N(null!==(f=e.appLinks.userCredit.args)&&void 0!==f?f:[]),[e.user.id])})}),j===u.a.Curator&&(null===(h=e.user.metadata)||void 0===h?void 0:h.isEmailVerified)&&!R(v.w.Inactive)&&P.push({order:5,label:T("unverifyEmail"),disabled:e.hasRostering,tooltip:e.hasRostering?T("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",onClick:function(){var t;V({actionType:l.Vw.VerifyEmail,descriptor:l.hY.Remove}),i.Q.C$.trigger(Object.assign(Object.assign({},e.appLinks.deleteUserEmail),{args:[].concat(N(null!==(t=e.appLinks.deleteUserEmail.args)&&void 0!==t?t:[]),[e.user.id])}))}}),j===u.a.Curator&&e.isEditUserForm&&P.push({order:6,label:T("addToAnotherCustomer"),disabled:e.hasRostering,tooltip:e.hasRostering?T("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",appLink:Object.assign(Object.assign({},e.appLinks.addToAnotherCustomer),{args:[].concat(N(null!==(E=e.appLinks.addToAnotherCustomer.args)&&void 0!==E?E:[]),[e.user.id])})}),P}(e);return n.createElement(h.e,{actions:t,className:e.isEditUserForm?"mb-2":"pe-4",actionsDropdownClassName:e.isEditUserForm?"btn btn-outline-dark":"btn btn-link ms-1"})}},14604:(e,t,r)=>{r.d(t,{W:()=>s});var n=r(32735),a=r(83914),i=r(35223);const o={icon:"eCi4v"};function s(e){return n.createElement("div",{className:"alert alert-warning d-flex align-items-center px-2 mb-3 ".concat(e.className||"")},n.createElement(a.x,{svgName:i.vn.WarningOutline,className:"svg-container me-2 ".concat(o.icon)}),n.createElement("div",null,e.children))}},26055:(e,t,r)=>{r.d(t,{A:()=>n});var n=r(32735).createContext(null)},66122:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(32735);function a(e){return n.createElement("span",{id:"".concat(e.name,"Error"),className:"".concat(e.className," invalid-feedback d-block"),role:"status"},e.children)}},29057:(e,t,r)=>{r.d(t,{n:()=>w,W:()=>k});var n=r(32735),a=r(80247),i=r(80130),o=r(92802),s=r(91967),l=r(1048),c=r(15611),u=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r};function d(e){var t=e.label,r=e.checkboxLabelClassName,a=e.checkboxLabelFontWeight,o=e.className,s=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return n.createElement(i.Z.Group,{className:"form-group"},n.createElement("div",{className:"form-check ".concat(o||"")},n.createElement(w,Object.assign({className:"form-check-input"},s)),n.createElement(i.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===a?"fw-normal":""," \n ").concat(r),htmlFor:s.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&n.createElement(n.Fragment,null,n.createElement("span",null," "),n.createElement(c.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var m=r(83914),f=r(83345),p=r(73814),h=r(35223);function g(e){var t=(0,o.u6)().values,r=l.t.get(t,e.fieldName);return"string"!=typeof r?n.createElement(n.Fragment,null):n.createElement("div",{className:"float-end text-secondary fw-normal"},r.length,"/",e.limit," characters")}const v={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function b(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 y=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r},E="shared.formField";function w(e){var t,r,i=e.children,c=e.showLoadingSpinner,u=y(e,["children","showLoadingSpinner"]),d=(t=n.useState(e.type),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,i,o,s=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(c)throw a}}return s}}(t,r)||function(e,t){if(e){if("string"==typeof e)return b(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)?b(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.")}()),f=d[0],p=d[1],g=s.q.isFunction(i)?function(e){return i(e)}:n.Children.count(i)?i:null;if("password"!==u.type)return c?n.createElement("div",{className:"position-relative"},n.createElement(o.gN,Object.assign({},l.t.omit(u,["formSize"])),g),n.createElement("div",{className:v.spinner},n.createElement(a.Z,{animation:"border",size:"sm"}))):n.createElement(o.gN,Object.assign({},l.t.omit(u,["formSize"])),g);var E="position-relative ".concat(v.passwordContainer);return u.className&&(E+=" ".concat(u.className)),u.disabled&&(E+=" ".concat(v.passwordContainerDisabled)),n.createElement("div",{className:E},n.createElement(o.gN,Object.assign({},l.t.omit(u,["formSize","type","className"]),{type:f,className:"".concat(v.passwordInput," border-0 w-100 h-100 outline-none rounded")}),g),"password"===u.type&&n.createElement(m.x,{svgName:"password"===f?h.vn.VisibleOn:h.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(v.revealPassword),onClick:function(){p("password"===f?"text":"password")}}))}function k(e){var t=e.label,r=e.className,a=e.showCharacterCounter,s=e.showRequiredStar,c=e.infoTooltip,u=e.infoTooltipPlacement,b=e.infoText,k=e.formSize,S=e.showOptionalLabel,C=e.formGroupClassname,x=y(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","formGroupClassname"]),N=(0,o.u6)(),O=N.errors,L=N.touched,T=function(){};if("checkbox"===x.type){var j=l.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(j.onChange=T),n.createElement(d,Object.assign({},j))}var R=Object.assign(Object.assign({},x),{className:p.w.getCustomFormControlClassName(O,L,x.name,k,r,"string"==typeof e.as?e.as:null)});return e.disabled&&(R.onChange=T),n.createElement(i.Z.Group,{className:"form-group ".concat(C)},!!t&&n.createElement(i.Z.Label,{htmlFor:x.id,className:"d-flex align-items-center"},t,s&&n.createElement("span",{className:"text-danger"},"*"),c&&n.createElement(m.x,{className:"svg-container text-secondary ".concat(v.infoTooltip),svgName:h.vn.Info,title:c,tooltipPlacement:u,tooltipSpanHack:!0}),S&&n.createElement("span",{className:"text-secondary"}," ",n.createElement(f.x,{namespace:E,phrase:"optional"})),!!a&&!!x.maxLength&&n.createElement("div",{className:"ms-auto"},n.createElement(g,{fieldName:x.name,limit:x.maxLength}))),n.createElement(w,Object.assign({},R,{"aria-errormessage":"".concat(x.name,"Error")})),!!b&&n.createElement(i.Z.Text,{className:"text-secondary"},b),n.createElement(o.Bc,{name:x.name},(function(e){return n.createElement(i.Z.Control.Feedback,{id:"".concat(x.name,"Error"),type:"invalid",role:"status"},e)})))}w.defaultProps={autoComplete:"off"},k.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,r)=>{r.d(t,{b:()=>u,n:()=>c});var n=r(32735),a=r(92802),i=r(91967),o=r(1048);function s(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 l=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r};function c(e){var t=e.castInitialValues,r=e.castValuesOnSubmit,c=e.initialValues,u=e.onSubmit,d=l(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),m=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=o.t.deepClone(e);return function e(r){Object.keys(t).forEach((function(n){t.hasOwnProperty(n)&&(o.t.isObject(r[n])?e(r[n]):null===t[n]&&delete t[n])}))}(t),t}(c)):c,f={allowInitialSubmit:e.allowInitialSubmit};return n.createElement(a.J9,Object.assign({enableReinitialize:!0},d,{initialValues:m,onSubmit:function(t,n){var a=n.setSubmitting,i=n.resetForm,o=n.setFieldError,l=r&&e.validationSchema?e.validationSchema.cast(t):t;u(l,(function(){var e,t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(r.reset&&i(),r.errors)for(var n=0,l=Object.entries(r.errors);n<l.length;n++){var c=(e=l[n],t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return s(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)?s(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=c[0],d=c[1];o(u,d)}a(!1)}))},initialStatus:f}),i.q.isFunction(e.children)?function(t){return e.children(t)}:n.Children.count(e.children)?e.children:null)}function u(){return(0,a.u6)()}c.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},73814:(e,t,r)=>{r.d(t,{w:()=>a});var n=r(92802),a={getCustomFormControlClassName:function(e,t,r,a,i,o){var s="";return s=function(e,t){var r="";return r="select"===e?"form-select":"form-control","sm"===t&&(r+=" ".concat(r,"-sm")),"lg"===t&&(r+=" ".concat(r,"-lg")),r}(o,a),(0,n.u9)(t,r)&&(0,n.u9)(e,r)&&(s+=" is-invalid"),i&&(s+=" ".concat(i)),s}}},80658:(e,t,r)=>{r.d(t,{F:()=>a});var n=r(99940),a={getCustomerSecuritySettings:function(e,t,r){return{url:"{gateway}/v1/customers/".concat(e,"/settings/security"),key:"customers:security:settings",normalize:!1,success:t,error:r}},setCustomerSecuritySettings:function(e,t,r,a){return{url:"{gateway}/v1/customers/".concat(e,"/settings/security"),key:"update:security:settings",invalidationKeys:"customers:security:settings",type:n.k.PUT,normalize:!1,data:t,success:r,error:a}}}}}]);
|
|
3
|
+
//# sourceMappingURL=5870-057fef9e27-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/5870-057fef9e27-lite.chunk.js","mappings":";gOAWMA,EAAYC,EAAA,mBADA,uCAGZ,SAAUC,EAA+BC,GAC7C,IAAMC,EAAaD,EAAME,MAAMC,iBAAmBC,EAAA,WAElD,OACE,gBAACC,EAAA,EAAY,CAACC,KAAMN,EAAMM,MACxB,4BACGT,EAAUI,EAAa,YAAc,iBAAgB,KAItDD,EAAMO,gBAKN,4BAAOV,EAAU,mBAJjB,gBAACW,EAAA,EAAY,CAACC,UAAU,YAAYC,KAAMC,EAAA,yBAAsCC,QAAM,GACnFf,EAAU,mBAMf,gCACSA,EAAU,kBAIzB,CC7BA,IACM,EAAYC,EAAA,mBADA,iCAGZ,SAAUe,EAA8Bb,GAC5C,OACE,gBAACK,EAAA,EAAY,CAACC,KAAMN,EAAMM,MACxB,4BACG,EAAU,iBAAgB,KAInC,sCCLM,EAAYR,EAAA,mBADA,kCAGZ,SAAUgB,EAA+Bd,GAC7C,IAAMe,GAAc,SAEdC,EAAiBhB,EAAMiB,SAASC,eAAeC,QAAU,CAAC,EAKhE,OAAInB,EAAME,MAAMkB,KAAKC,WAAaC,EAAA,UAE9B,gBAACjB,EAAA,EAAY,CAACC,KAAMN,EAAMM,MACxB,4BAAO,EAAU,gCAA+B,KAC9CN,EAAMO,gBAeN,4BAAO,EAAU,mBAdjB,gBAACgB,EAAA,EAAO,CACNC,QAAO,+BACFxB,EAAMiB,SAASC,gBAAc,CAChCC,OAAQ,OAAF,wBACDH,GAAa,CAChBS,MAAOV,EAAYW,OAAOC,UAG9BlB,UAAW,YACXmB,QAAS5B,EAAM6B,eAEd,EAAU,oBAUnB,gBAACxB,EAAA,EAAY,CAACC,KAAMN,EAAMM,MACxB,4BAAO,EAAU,8BAA6B,KAC5CN,EAAMO,gBAeN,4BAAO,EAAU,iBAdjB,gBAACgB,EAAA,EAAO,CACNC,QAAO,+BACFxB,EAAMiB,SAASa,cAAY,CAC9BX,OAAQ,OAAF,wBACDH,GAAa,CAChBS,MAAOV,EAAYW,OAAOC,UAG9BlB,UAAW,YACXmB,QAAS5B,EAAM6B,eAEd,EAAU,iBAOrB,CC7DA,IACM,EAAY/B,EAAA,mBADA,gCAGZ,SAAUiC,EAA6B/B,GAC3C,OAAIA,EAAME,MAAMkB,KAAKC,WAAaC,EAAA,UAE9B,gBAACjB,EAAA,EAAY,CAACC,KAAMN,EAAMM,MACxB,4BACG,EAAU,wBAAuB,KAElCN,EAAMO,gBASN,4BAAO,EAAU,mBARjB,gBAACgB,EAAA,EAAO,CACNC,QAASxB,EAAMiB,SAASC,eACxBT,UAAU,YACVmB,QAAS5B,EAAM6B,eAEd,EAAU,oBAUnB,gBAACxB,EAAA,EAAY,CAACC,KAAMN,EAAMM,MACxB,4BACG,EAAU,sBAAqB,KAEhCN,EAAMO,gBAQN,4BAAO,EAAU,iBARQ,gBAACgB,EAAA,EAAO,CACjCC,QAASxB,EAAMiB,SAASa,aACxBrB,UAAU,YACVmB,QAAS5B,EAAM6B,eAEd,EAAU,iBAOnB,CChCM,SAAUG,EAAqBhC,GAEnC,IAAKA,EAAMiC,MACT,OAAO,gBAACpB,EAA6B,iBAAKb,IAG5C,OAAQA,EAAME,MAAMC,gBAElB,KAAKC,EAAA,8BACH,OAAO,gBAACU,EAA8B,iBAAKd,IAG7C,KAAKI,EAAA,mBACH,OAAO,gBAAC2B,EAA4B,iBAAK/B,IAG3C,KAAKI,EAAA,2BAEL,KAAKA,EAAA,wBAEL,KAAKA,EAAA,oBAEL,KAAKA,EAAA,WACH,OAAO,gBAACL,EAA8B,iBAAKC,IAG/C,OAAO,gCACT,s9PCvBM,EAAY,8BACZ,EAAYF,EAAA,mBAAiC,GAE7CoC,EAAoB,CACxB9B,EAAA,8BACAA,EAAA,wBACAA,EAAA,2BACAA,EAAA,mBACAA,EAAA,oBACAA,EAAA,2BACAA,EAAA,YAGI+B,EAAsB,YA0CtB,SAAUC,EAAgBpC,mBACtB6B,EAAwE7B,EAAxE6B,cAAeI,EAAyDjC,EAAzDiC,MAAOZ,EAAkDrB,EAAlDqB,SAAUgB,EAAwCrC,EAAxCqC,WAAYC,EAA4BtC,EAA5BsC,WAAYC,EAAgBvC,EAAhBuC,YAE1DC,EAAkBC,EAAA,qBAA8BJ,GAE4B,IAA5C,WAAuC,MAAK,GAA1EK,EAAU,KAAEC,EAAa,KACwC,IAArB,YAAe,GAAM,GAAjEC,EAAiB,KAAEC,EAAoB,KAEkB,IAArB,YAAe,GAAM,GAAzDC,EAAa,KAAEC,EAAgB,KAEjCC,EAAuB,SAAqD,CAAC,GAE7EC,EAAS,aAAiBC,EAAA,GAC1BnC,GAAc,SAEpB,aAAgB,WACVA,EAAYW,OAAOyB,UAAYpC,EAAYW,OAAOC,OACpDZ,EAAYqC,cAAc,WAAY,GAC1C,GAAG,CAAErC,EAAYW,OAAOC,MAAOZ,EAAYW,OAAOyB,WA2ElD,aAAgB,WACd,GAAKpC,EAAYsC,QAAQ1B,QAASiB,EAAlC,CAGA,IAAMU,EAAcC,SAASC,eAAerB,GAEvCmB,GAGLA,EAAYG,OAPJ,CAQV,GAAG,CAACb,IAWJ,IAAMc,GAAuB,QAAV,EAAA1D,EAAMoB,YAAI,eAAEuC,UAAWC,EAAA,WACpCC,GAAwB7D,EAAMiC,OAAUM,EAAYuB,GAAGC,cAAwC,QAAzB,EAAAhD,EAAYW,OAAOsC,cAAM,eAAED,YAEvG,OACE,gBAAC,KAAI,KACH,gBAACE,EAAA,EAAS,CACRC,MAAO,EAAU,gBACjBC,KAAK,OACL7D,KAAK,QACLwD,GAAG,QACHM,YAAa,EAAU,2BACvBC,MAAOtD,EAAYW,OAAOC,MAC1B2C,iBAAkBtE,EAAMuE,cACxBC,UAAWxE,EAAMyE,cAAgBf,EACjCgB,SAAU1E,EAAM0E,SAChBC,SA7GN,WASE,GAAI1B,IAAW2B,EAAA,YAA8B5E,EAAMiC,OAAWlB,EAAY8D,cAAclD,MACtF,OAAO,EAAU3B,EAAMyE,aAAe,mBAAqB,0BAC/D,CAkGgBK,GACVC,OAjGN,SAA2BC,+HAGzB,IAFMrD,EAAQqD,EAAEC,cAAcZ,SAKhBtD,EAAY8D,cAAclD,MAAK,iDAGF,GAA3CZ,EAAYmE,gBAAgB,SAAS,GAEjCjC,IAAW2B,EAAA,WAA8B5E,EAAMmF,cAAa,iDAG7C,OAH6C,SAGvCpE,EAAYqE,eAAc,OAAnC,IAAG,EAAH,KAEDzD,OAAUA,EAAK,iBAEN,OADlBe,GACFC,EAAc,MAAM,2BAQmC,GAH3DE,GAAqB,GAAM,UAGrBwC,EAAkBrC,EAAqBsC,QAAQ3D,GAE/B,iBACkB,OADlB,KACA4D,EAAA,EAAW,UAAavF,EAAMmF,cAAcxD,GAAM,oBAApE0D,EAAkB,EAAH,GAAeG,MAAK,wBAEiB,GAAtDxC,EAAqBsC,QAAQ3D,GAAS0D,GAElCrF,EAAMiC,OAASoD,EAAgBlF,iBAAmBC,EAAA,2BAA2C,iBACjD,OAA9CJ,EAAMyF,kBAAkBJ,EAAgBjE,MAAM,8BAI3Cc,EAAkBwD,SAASL,EAAgBlF,gBAAiB,CAAF,gBAIjC,OAHxBuC,GACFC,EAAc,MAEhBE,GAAqB,GAAO,2BAK9BF,EAAc0C,GACdxC,GAAqB,GAAO,mDAE5BA,GAAqB,GAAO,0DAE/B,EA8CK8C,SA1BN,SAAuBX,GACrB,IAAMrD,EAAQqD,EAAEC,cAAcZ,MAE9BtD,EAAYqC,cAAc,QAASzB,GAE/Be,GACFC,EAAc,KAClB,EAoBMiD,mBAAoBhD,EACpBnC,UAAWiC,EAAa,aAAe,GACvCmD,WAAS,MAERnD,GACD,uBAAKjC,UAAU,cACb,gBAACuB,EAAoB,CACnB1B,KAAK,QACL2B,MAAOjC,EAAMiC,MACb/B,MAAOwC,EACPzB,SAAUjB,EAAMiB,SAChBsD,cAAevE,EAAMuE,cACrB1C,cAAe7B,EAAM6B,cACrBtB,gBAAiBP,EAAMO,mBAK7B,gBAAC0D,EAAA,EAAS,CACRC,MAAO,EAAU,aACjBC,KAAK,OACL7D,KAAK,YACLwD,GAAI3B,EACJiC,YAAa,EAAU,wBACvBC,MAAOtD,EAAYW,OAAOoE,UAC1BxB,kBAAgB,EAChBI,SAAU1E,EAAM0E,SAChBF,SAAUd,GAAcd,GAAsBH,EAAA,eAAwBzC,EAAMoB,QAAU0B,IAGxF,gBAACmB,EAAA,EAAS,CACRC,MAAO,EAAU,YACjBC,KAAK,OACL7D,KAAK,UACLwD,GAAG,UACHM,YAAa,EAAU,uBACvBC,MAAOtD,EAAYW,OAAOqE,QAC1BzB,kBAAgB,EAChBI,SAAU1E,EAAM0E,SAChBF,SAAUd,GAAcd,GAAsBH,EAAA,eAAwBzC,EAAMoB,QAAU0B,IAGvF9C,EAAMgG,sBACL,gBAAC/B,EAAA,EAAS,CACRC,MAAO,EAAU,eACjBC,KAAK,OACL7D,KAAK,cACLwD,GAAG,cACHM,YAAa,EAAU,0BACvBM,SAAU1E,EAAM0E,SAChBF,SAAUd,GAAcd,EACxB+B,SAAU,EAAU,qBAIxB,gBAACV,EAAA,EAAS,CACRC,MAAO,EAAU,YACjBC,KAAK,OACL7D,KAAK,WACLwD,GAAG,WACHM,YAAa,EAAU,uBACvBC,MAAOtD,EAAYW,OAAOuE,SAC1BC,YAAajE,EAAQ,EAAU,gBAAkB,KACjDyC,SAAU1E,EAAM0E,SAChBF,UAAWvC,GAASyB,GAAcd,IAInC5C,EAAMmG,mBACL,gBAAClC,EAAA,EAAS,CACRC,MAAO,EAAU,YACjBC,KAAK,WACL7D,KAAK,WACLwD,GAAG,WACHM,YAAa,EAAU,uBACvBC,MAAOtD,EAAYW,OAAOyB,SAC1BqB,WAAYzD,EAAYW,OAAOC,OAASiB,EACxCsD,YAAanF,EAAYW,OAAOC,MAAQ,EAAU,wBAA0B,EAAU,wBACtF+C,SAAU1E,EAAM0E,WAInBrD,IAAaC,EAAA,WACZ,gBAAC2C,EAAA,EAAS,CACRmC,GAAG,SACHlC,MAAO,EAAU,aACjB5D,KAAK,kBACL+D,MAA6C,QAAtC,EAAkC,QAAlC,EAAAtD,EAAYW,OAAO2E,uBAAe,eAAEvC,UAAE,QAAI,GACjDrD,WAA8C,QAAlC,EAAAM,EAAYW,OAAO2E,uBAAe,eAAEvC,IAAwB,GAAnB,iBACrDQ,kBAAgB,EAChBE,SACEd,GACAd,GAECH,EAAA,SAAkBzC,EAAMoB,QAAU0B,GAAsE,KAAZ,QAAzC,EAAA/B,EAAY8D,cAAcwB,uBAAe,eAAEhC,OAEjGsB,SAAU,SAACX,GACT,IAAMsB,EAActB,EAAEuB,OAAOlC,MACvBmC,EAAYnE,EAAWoE,MAAK,SAAAC,GAAC,OAAIA,EAAE5C,GAAGC,cAAeuC,aAAW,EAAXA,EAAavC,WAAU,IAE7EyC,EAKLzF,EAAYqC,cAAc,kBAAmB,CAC3CU,GAAI0C,EAAU1C,GACdxD,KAAMkG,EAAUlG,KAChBqG,YAAaH,EAAUG,YACvBtC,MAAOmC,EAAUnC,QARjBtD,EAAYqC,cAAc,kBAAmB,KAUjD,GAEA,0BAAQ3C,UAAU,iBAAiB4D,MAAM,IAAIvE,EAAA,YAA0B,EAAW,oBACjF0C,EAAgBoE,KAAI,SAAAJ,GAAS,OAC5B,0BAAQK,IAAKL,EAAU1C,GAAIO,MAAOmC,EAAU1C,GAAIrD,UAAU,aAAa+F,EAAUlG,KAAc,KAIrG,uBAAKG,UAAU,qDACXY,IAAaC,EAAA,SAAoBuC,EAqB/B,gCApBF,gBAACI,EAAA,EAAS,CACRH,GAAG,aACHxD,KAAK,aACLkE,SAAUd,GAAcd,GAAsBH,EAAA,kBAA2BzC,EAAMoB,QAAU0B,IAExF,kBACC,uBAAKrC,UAAU,6BACb,gBAACqG,EAAA,EAAY,CACXlF,QAAS,WAAF,OAAQb,EAAYqC,cACzB,aACArC,EAAYW,OAAOqF,aAAeC,EAAA,EAAAC,KAAgBD,EAAA,QAAiBA,EAAA,EAAAC,KACpE,EACDC,GAAInG,EAAYW,OAAOqF,aAAeC,EAAA,QACtCxC,SAAUd,GAAejB,EAAA,kBAA2BzC,EAAMoB,QAAU0B,EACpEqE,uBAAqB,IAEvB,wBAAM1G,UAAU,oBAAoB,EAAU,UAC1C,IAtTpB,SAA2BT,GACzB,QAAQA,EAAMiC,QACPjC,EAAMoH,cACNpH,EAAMiB,WACNjB,EAAMoB,OACNpB,EAAMqH,6BACf,CAqTSC,CAAkBtH,IACjB,gBAACuH,EAAA,EAAe,CACdnG,KAAMpB,EAAMoB,KACZC,SAAUA,EACVJ,SAAUjB,EAAMiB,SAChBuG,sBAAuBxH,EAAMwH,sBAC7BH,6BAA8BrH,EAAMqH,6BACpCI,6BAA8BzH,EAAMyH,6BACpClF,YAAaA,EACbmF,SAAU1H,EAAM0H,SAChBC,gBAAc,EACdC,cAAe5H,EAAM4H,iBAK3B,gBAACC,EAAA,EAAY,OACR7H,EAAM8H,sBACP,gBAACD,EAAA,WAAqB,CACpB/D,GAAG,iBACHiE,SAAU/H,EAAM8H,qBAChB5D,MAAOlE,EAAMgI,cAAgB,EAAU,YACvCC,QAASjI,EAAMkI,mBAIhBlI,EAAMmI,kBACP,gBAACN,EAAA,SAAmB,CAClBX,GAAIpE,EACJlB,QAAS,WAAF,OAAQmB,GAAiB,SAAAqF,GAAC,OAAKA,CAAC,GAAC,EACxClE,MAAO,EAAU,iBACjBM,UAAW/B,EAAA,SAAkBzC,EAAMoB,MACnCiH,QAAU5F,EAAA,SAAkBzC,EAAMoB,MAAgD,GAAxC,uCAI9C,gBAACyG,EAAA,SAAmB,CAACjG,QAASC,IAC9B,gBAACgG,EAAA,SAAmB,CAClB5F,MAAOA,EACPqG,KAAMhG,EACNiG,QAAQ,OACR/D,WAAU9B,QAAoB8F,KAKxC,0BCpYMC,EAAiB,0DACjBC,EAAa,uDAEb,EAAY5I,EAAA,mBAAiC,0BAEtC6I,EACS,SAACC,GACnB,OAAO,UACJC,IAAI,KAAK,kBAAM,EAAU,cAAc,IACvCC,UAAS,kBAAM,EAAU,eAAe,IAAC,QACjC,IACRC,KAAK,CACJzI,KAAM,eACN0I,QAAS,EAAU,eACnBD,KAAM,SAACE,GACL,UAAIL,aAAY,EAAZA,EAAc5E,SAAU4E,EAAa9C,YAAcmD,IAGhDP,EAAWK,KAAKE,EACzB,GAEN,EAhBWN,EAkBO,SAACC,GACjB,OAAO,UACJC,IAAI,KAAK,kBAAM,EAAU,iBAAiB,IAC1CC,UAAS,kBAAM,EAAU,kBAAkB,IAAC,QACpC,IACRC,KAAK,CACJzI,KAAM,kBACN0I,QAAS,EAAU,kBACnBD,KAAM,SAACE,GACL,UAAIL,aAAY,EAAZA,EAAc5E,SAAU4E,EAAa7C,UAAYkD,IAG9CP,EAAWK,KAAKE,EACzB,GAEN,EAjCWN,EAmCK,SAACtH,EAAqBuH,GACpC,IAAIM,GAAS,UACVL,IAAI,KAAK,kBAAM,EAAU,eAAe,IACxClH,OAAM,kBAAM,EAAU,mBAAmB,IAAC,QAClC,IAOX,OAHIN,IAAaC,EAAA,UAAqBsH,aAAY,EAAZA,EAAc5E,UAAU4E,EAAajH,QACzEuH,EAASA,EAAOJ,UAAS,kBAAM,EAAU,gBAAgB,KAEpDI,CACT,EA/CWP,EAiDQ,SAACC,GAClB,IAAMO,IAAaP,aAAY,EAAZA,EAAc5E,QAEjC,OAAO,UAAQ,QACJ,IACR+E,KAAK,CACJzI,KAAM,oBACN0I,QAAS,EAAU,mBACnBD,KAAM,SAACE,GACL,OAAKE,GAAaP,EAAa3C,WAAagD,GAGrCA,EAAIG,QAAU,GACvB,IAEDL,KAAK,CACJzI,KAAM,qBACN0I,QAAS,EAAU,oBACnBD,KAAM,SAACE,GACL,OAAKE,GAAaP,EAAa3C,WAAagD,MAGxCE,GAAcF,IAGXA,EAAIG,QAAU,CACvB,IAEDL,KAAK,CACJzI,KAAM,mBACN0I,QAAS,EAAU,uBACnBD,KAAM,SAACE,GACL,SAAIE,GAAcF,KAGbE,GAAaP,EAAa3C,WAAagD,GAGrCR,EAAeM,KAAKE,EAC7B,GAEN,EA1FWN,EA4FQ,SAACU,EAA2BT,GAC7C,IAAIM,GAAS,UAAQ,QAAS,IAe9B,OAbKN,aAAY,EAAZA,EAAc5E,UACjBkF,EAASA,EAAOH,KAAK,CACnBzI,KAAM,iBACN0I,QAAS,EAAU,mBAAoB,CAAEM,UAAWD,IACpDN,KAAM,SAACE,GACL,OAAKA,GAGEA,EAAIG,QAAUC,CACvB,KAIGH,CACT,EA7GWP,EAiIS,SAACtH,GACnB,GAAIA,IAAaC,EAAA,QAGjB,OAAO,UACJwH,UAAS,kBAAM,EAAU,oBAAoB,IAC7CS,UACL,ECjJWC,EAA0B,SACrCnI,EACAgI,EACAT,GAEA,OAAO,UAASa,MAAM,CACpB3D,UAAW6C,EAAwCC,GAEnD7C,QAAS4C,EAAsCC,GAE/CjH,MAAOgH,EAAoCtH,EAAUuH,GAErD3C,SAAU0C,EAAuCC,GAEjDzF,SAAUwF,EAAuCU,EAAmBT,GAEpEc,aDyGO,UACJb,IAAI,IAAI,kBAAM,EAAU,qBAAqB,IAC7Cc,cACAJ,WAAU,QACF,IACRR,KAAK,CACJzI,KAAM,qBACN0I,QAAS,EAAU,uBACnBD,KAAM,SAACE,GACL,OAAKA,GAGEA,EAAIG,QAAU,CACvB,ICpHJ/C,gBAAiBsC,EAAwCtH,IAE7D,cC6BM,SAAUuI,GAAgB5J,GAC9B,IAAM6J,EAAiD,CAAC,EACxDC,OAAOC,KAAK/J,EAAMgK,eAAiB,CAAC,GAAGC,SAAQ,SAACC,GAC9CL,EAAeK,IAAO,CACxB,IAEA,QAAMjI,GAASjC,EAAM6E,cAAcb,OAE7BS,IACAxC,KAMqB,QAApB,EAAU,QAAV,EAAAjC,EAAMoB,YAAI,eAAE+I,gBAAQ,eAAEC,iBAMvBf,EAAoBgB,EAAA,2BACxBrK,EAAMsK,eACNtK,EAAMqB,SACN2F,EAAA,EAAAC,MAUIzE,EAAkBC,EAAA,qBAA8BzC,EAAMqC,YAE5D,OACE,4BATIJ,GAGGQ,EAAA,SAAkBzC,EAAMoB,OAQ3B,gBAACmJ,GAAA,EAAkB,CAACC,YAAaxK,EAAMyK,uBAAwBpJ,SAAUrB,EAAMqB,SAAUY,MAAOA,IAGlG,gBAACyI,EAAA,EAAW,CACV7F,cAAe7E,EAAM6E,cACrBmF,cAAehK,EAAMgK,cACrBH,eAAgBA,EAChBc,SAAU3K,EAAM2K,SAChBC,iBAAkBpB,EAAwBxJ,EAAMqB,SAAUgI,EAAmBrJ,EAAM6E,gBAEnF,gBAACzC,EAAe,CACdH,MAAOA,EACPb,KAAMpB,EAAMoB,KACZC,SAAUrB,EAAMqB,SAChBgB,WAAYG,EACZX,cAAe7B,EAAM6B,cACrBS,WAAYtC,EAAMsC,WAClB4F,eAAgBlI,EAAMkI,eACtBJ,qBAAsB9H,EAAM8H,qBAC5BE,aAAchI,EAAMgI,aACpBzF,YAAavC,EAAMuC,YACnBmC,SAAU1E,EAAM0E,SAChByB,kBAAmBnG,EAAMmG,kBACzB1B,aAAcA,EACd2C,YAAapH,EAAMoH,YACnBnG,SAAUjB,EAAMiB,SAChBoG,6BAA8BrH,EAAMqH,6BACpCG,sBAAuBxH,EAAMwH,sBAC7BC,6BAA8BzH,EAAMyH,6BACpClD,cAAevE,EAAMuE,cACrByB,qBAAsBhG,EAAMgG,qBAC5BmC,iBAAkBnI,EAAMmI,iBACxBhD,cAAenF,EAAMmF,cACrBM,kBAAmBzF,EAAMyF,kBACzBlF,gBAAiBP,EAAMO,gBACvBmH,SAAU1H,EAAM0H,SAChBE,cAAe5H,EAAM4H,iBAK/B,0GC/HMiD,EAAY,iCAQZ,SAAUN,EAAmBvK,GACjC,IAAMiD,EAAS,aAAoC,KAanD,OACE,gBAAC,EAAA6H,EAAY,KACX,gBAAC,IAAI,CACHD,UAAWA,EACXE,OAdA/K,EAAMiC,MACJgB,IAAW,YACN,0BAEFjD,EAAMqB,WAAa,YAAoB,0BAA4B,wBAGrE4B,IAAW,YAA4B,wBAA0B,yBASnEjD,EAAMwK,aACP,qBACE/J,UAAU,oBACVC,KAAMV,EAAMwK,YACZjE,OAAO,UAEP,gBAAC,IAAI,CAACsE,UAAWA,EAAWE,OAAQ/K,EAAMiC,MAAQ,gBAAkB,qBAK9E,qJC3CM4I,EAAY,mDAMZ,SAAUG,EAAqChL,GACnD,OACE,gBAACiL,EAAAH,EAAY,KACX,qBAAGrK,UAAU,oBACX,gBAACyK,EAAA,EAAI,CAACL,UAAWA,EAAWE,OAAO,aAEpC/K,EAAMwK,aACL,qBAAG9J,KAAMV,EAAMwK,YAAajE,OAAO,SAAS9F,UAAU,aACpD,gBAACyK,EAAA,EAAI,CAACL,UAAWA,EAAWE,OAAO,cAK7C,uECrBA,SAASI,EAAc/J,GACrB,OAAQA,GAAQA,EAAKgK,OAAUhK,EAAKgK,OAAOxE,KAAI,SAAAyE,GAAC,OAAIA,EAAE/K,IAAI,IAAI,EAChE,CAEO,IAAMgL,EAA2B,CACtCC,MAAK,SAACnK,GACJ,OAAO+J,EAAc/J,GAAMsE,SAAS8F,EAAA,YACtC,EAEAC,kBAAiB,SAACrK,GAQhB,MAPsB,CACpBoK,EAAA,YACAA,EAAA,UACAA,EAAA,EAAAE,QACAF,EAAA,qBAGmBG,MAAK,SAAAC,GAAK,OAAIT,EAAc/J,GAAMsE,SAASkG,EAAM,GACxE,qwBCIF,IAAM/L,EAAYC,EAAA,mBAAiC,wBAgX7C,SAAUyH,EAAgBvH,GAC9B,IAAM6L,EA/WR,SAAuB7L,2BACfiD,EAAS,aAAiBC,EAAA,GAE1B4I,EAAY,SAACnI,GAAoB,OAAKA,IAAW3D,EAAMoB,KAAKuC,MAAM,EAElEoI,EAAsC,QAAnB,EAAA/L,EAAMoB,KAAK+I,gBAAQ,eAAEC,gBAGxC4B,EAAgBhM,EAAMoB,KAAK0C,KAAuB,QAAjB,EAAA9D,EAAMuC,mBAAW,eAAEuB,IAEhDmI,MAAuB,OAAuCC,EAAA,uBAAsC,ynBAAlF,GAE5B,SAASC,EAAaC,GACpBC,EAAA,gBAA8B,CAAEvI,GAAI9D,EAAMoB,KAAK0C,IAAMuI,EAAA,eAA6B,CAChFC,OAAQ,UACRC,cAAe,WACfC,SAAU,KAAgBxM,EAAMqB,WAAaC,EAAA,UAAoB,uBAAyB,2BACzF8K,GACL,CAEA,IAAMP,EAA2B,GAEjC,IAAK7L,EAAM2H,eAAgB,KAchB8E,EAAT,WACE,QAAIzM,EAAM0M,eAGNZ,EAAUlI,EAAA,aAGVkI,EAAUlI,EAAA,aAA0BX,IAAW2B,EAAA,WAIrD,EAEAiH,EAAQc,KAAK,CACXC,MAAO,EACPhL,QAAS,iBACP,GAAK6K,IAAL,CAGAN,EAAa,CAAEU,WAAY,YAE3B,IAAMrL,EAAU,OAAH,wBACRxB,EAAMiB,SAAS6L,UAAQ,CAC1BC,KAAM,GAAF,SAAoC,QAA5B,EAAA/M,EAAMiB,SAAS6L,SAASC,YAAI,QAAI,IAAK,CAAA/M,EAAMoB,KAAK0C,OAG9D,eAA2BtC,EATnB,CAUV,EACAwL,QAAS,UACTvM,UAAW,8BAAF,OAAiCgM,IAAyB,GAAb,YACtDpE,QA1CIrI,EAAM0M,aACD7M,EAAU,6BAEfiM,EAAUlI,EAAA,YACL/D,EAAU,oBAEfiM,EAAUlI,EAAA,aAA0BX,IAAW2B,EAAA,UAC1C/E,EAAU,mBAEZA,EAAU,YAkCjBoN,QAAQ,GAEX,CAuRD,OArRIjN,EAAMoB,KAAKO,OAASmK,EAAUlI,EAAA,aAA0B5D,EAAMqH,8BAChEwE,EAAQc,KAAK,CACXC,MAAO,EACPpI,SAAUxE,EAAM0M,aAChBrE,QAASrI,EAAM0M,aAAe7M,EAAU,6BAA+B,GACvEqE,MAAOrE,EAAU,yBACjB+B,QAAS,WACPuK,EAAa,CACXU,WAAY,eACZK,WAAY,oBAEdlN,EAAMqH,6BAA6BrH,EAAMoB,KAC3C,EACAX,UAAWT,EAAM0M,aAAe,0BAA4B,iBAK9D1M,EAAMoB,KAAKO,OACXmK,EAAUlI,EAAA,YACTmI,GAEDF,EAAQc,KAAK,CACXC,MAAO,EACP1I,MAAOrE,EAAU,yBACjB2E,SAAUxE,EAAM0M,aAChBrE,QAASrI,EAAM0M,aAAe7M,EAAU,6BAA+B,GACvE+B,QAAS,WACPuK,EAAa,CACXU,WAAY,eACZK,WAAY,mBAEdlN,EAAMyH,6BAA6BzH,EAAMoB,KAC3C,EACAX,UAAWT,EAAM0M,aAAe,0BAA4B,iBAI3DV,IACCD,GAAoBD,EAAUlI,EAAA,WAAwB5D,EAAMwH,uBAC9DqE,EAAQc,KAAK,CACXC,MAAO,EACP1I,MAAOrE,EAAU,kBACjB2E,SAAUxE,EAAM0M,aAChBrE,QAASrI,EAAM0M,aAAe7M,EAAU,6BAA+B,GACvE+B,QAAS,WACHa,EAAA,SAAkBzC,EAAMoB,MAC1B+L,EAAA,SACE,gBAACnC,EAAoC,CAACR,YAAaxK,EAAMoN,iBACzD,CACEC,MAAOxN,EAAU,kBACjByN,kBAAmB,CACjBhF,KAAMzI,EAAU,SAChB0I,QAAS,WAOjB4D,EAAa,CACXU,WAAY,eACZK,WAAY,0BAEdlN,EAAMwH,sBAAsBxH,EAAMoB,MACpC,EACAX,UAAWT,EAAM0M,aAAe,0BAA4B,iBAI3DZ,EAAUlI,EAAA,aACbiI,EAAQc,KAAK,CACXC,MAAO,GACP1I,MAAOrE,EAAUiM,EAAUlI,EAAA,UAAuB,aAAe,YACjEY,SAAUxE,EAAM0M,aAChBrE,QAASrI,EAAM0M,aAAe7M,EAAU,6BAA+B,GACvEY,UAAWT,EAAM0M,aAAe,0BAA4B,GAC5D9K,QAAS,iBACPuK,EAAa,CACXU,WAAY,cACZK,WAAYpB,EAAUlI,EAAA,UAAuB,SAAuB,UAGtE,IAAMpC,EAAU,OAAH,wBACRxB,EAAMiB,SAASsM,cAAY,CAC9BR,KAAM,GAAF,SAAwC,QAAhC,EAAA/M,EAAMiB,SAASsM,aAAaR,YAAI,QAAI,IAAK,CAAA/M,EAAMoB,KAAK0C,OAGlE,eAA2BtC,EAC7B,KAIeyB,IAAW2B,EAAA,YAA2C,QAAd,EAAA5E,EAAM0H,gBAAQ,eAAEhC,SAAS8H,EAAA,aAElF3B,EAAQc,KAAK,CACXC,MAAO,GACPpI,SAAUxE,EAAM0M,aAChB9K,QAAS,WACHkK,EAAUlI,EAAA,YAGduI,EAAa,CAAEU,WAAY,YAAmBK,WAAY,cAE1DjB,EAAmB,CAAEwB,MAAO,CAACzN,EAAMoB,MAAOsM,WAAY,IAEtD,eAA2B1N,EAAMiB,SAAS0M,YAC5C,EACAzJ,MAAOrE,EAAU,UACjBY,UAAW,4BAAF,OAA8BqL,EAAUlI,EAAA,WAAwB5D,EAAM0M,aAAe,0BAA4B,IAC1HO,QAAQ,EACR5E,QAASrI,EAAM0M,aAAe7M,EAAU,6BAA+BiM,EAAUlI,EAAA,UAAuB/D,EAAU,yBAA2B,OAI9HoD,IAAW2B,EAAA,YAA2C,QAAd,EAAA5E,EAAM0H,gBAAQ,eAAEhC,SAAS8H,EAAA,YAElF3B,EAAQc,KAAK,CACXC,MAAO,GACPpI,SAAUxE,EAAM0M,aAChB9K,QAAS,iBACP,IAAIkK,EAAUlI,EAAA,UAAd,CAGAuI,EAAa,CAAEU,WAAY,YAAmBK,WAAY,cAE1D,IAAM1L,EAAU,OAAH,wBACRxB,EAAMiB,SAAS2M,YAAU,CAC5Bb,KAAM,GAAF,SAAoC,QAA5B,EAAA/M,EAAMiB,SAAS6L,SAASC,YAAI,QAAI,IAAK,CAAA/M,EAAMoB,KAAK0C,OAG9D,eAA2BtC,EATnB,CAUV,EACA0C,MAAOrE,EAAU,UACjBY,UAAW,4BAAF,OAA8BqL,EAAUlI,EAAA,WAAwB5D,EAAM0M,aAAe,0BAA4B,IAC1HO,QAAQ,EACR5E,QAASrI,EAAM0M,aAAe7M,EAAU,6BAA+BiM,EAAUlI,EAAA,UAAuB/D,EAAU,yBAA2B,QAK/IoD,IAAW2B,EAAA,UAA4B5E,EAAMqB,WAAaC,EAAA,WAAqBwK,EAAUlI,EAAA,WAC3FiI,EAAQc,KAAK,CACXC,MAAO,GACP1I,MAAOrE,EAAU,iBACjB+B,QAAS,WAAF,OAAQuK,EAAa,CAAEU,WAAY,WAAkBK,WAAY,2BAAuC,EAC/G1L,QAAS,OAAF,wBACFxB,EAAMiB,SAAS4M,sBAAoB,CACtC1M,OAAQ,CAAE8E,SAAUjG,EAAMoB,KAAK6E,YAEjCxF,UAAWT,EAAM0M,aAAe,0BAA4B,eAC5DO,QAAQ,IAKVhK,IAAW2B,EAAA,WACX5E,EAAMqB,WAAaC,EAAA,WAClBwK,EAAUlI,EAAA,aAEXiI,EAAQc,KAAK,CACXC,MAAO,GACP1I,MAAOrE,EAAU,sBACjB+B,QAAS,WAAF,OAAQuK,EAAa,CAAEU,WAAY,WAAkBK,WAAY,2BAAuC,EAC/G1L,QAAS,OAAF,wBACFxB,EAAMiB,SAAS4M,sBAAoB,CACtCd,KAAM,CAAC/M,EAAMoB,KAAK0C,MAEpBrD,UAAW,eACXwM,QAAQ,IAKVnB,EAAUlI,EAAA,YAEP5D,EAAMqB,WAAaC,EAAA,UAAoByK,GACxC/L,EAAMqB,WAAaC,EAAA,YAGrBuK,EAAQc,KAAK,CACXC,MAAO,GACPpI,SAAUxE,EAAM0M,aAChBxI,MAAOrE,EAAU,kBACjBY,UAAWT,EAAM0M,aAAe,0BAA4B,GAC5D9K,QAAS,iBACPuK,EAAa,CAAEU,WAAY,sBAE3B,IAAMrL,EAAU,OAAH,wBACRxB,EAAMiB,SAAS6M,gBAAc,CAChCf,KAAM,GAAF,SAA0C,QAAlC,EAAA/M,EAAMiB,SAAS6M,eAAef,YAAI,QAAI,IAAK,CAAA/M,EAAMoB,KAAK0C,OAGpE,eAA2BtC,EAC7B,IAIAyB,IAAW2B,EAAA,WACR0G,EAAyBC,MAAMvL,EAAMuC,cAC1CsJ,EAAQc,KAAI,MAAZd,EAAgB,CACd,CACEe,MAAO,EACP1I,MAAOrE,EAAU,uBACjB2E,SAAUxE,EAAM0M,aAChBrE,QAASrI,EAAM0M,aAAe7M,EAAU,6BAA+B,GACvEY,UAAWT,EAAM0M,aAAe,0BAA4B,GAC5D9K,QAAS,WACPuK,EAAa,CAAEU,WAAY,mBAE3B,eAA2B,OAAD,wBACrB7M,EAAMiB,SAAS8M,yBAAuB,CACzChB,KAAM,CAAC/M,EAAMoB,KAAK0C,MAEtB,GAEF,CACE8I,MAAO,EACP1I,MAAOrE,EAAU,mBACjB2E,SAAUxE,EAAM0M,aAChBrE,QAASrI,EAAM0M,aAAe7M,EAAU,6BAA+B,GACvEY,UAAWT,EAAM0M,aAAe,0BAA4B,GAC5DlL,QAAS,OAAF,wBACFxB,EAAMiB,SAAS+M,iBAAe,CACjCjB,KAAM,GAAF,SAA2C,QAAnC,EAAA/M,EAAMiB,SAAS+M,gBAAgBjB,YAAI,QAAI,IAAK,CAAA/M,EAAMoB,KAAK0C,UAMvEb,IAAW2B,EAAA,WAA6B5E,EAAM4H,eAChDiE,EAAQc,KAAK,CACXC,MAAO,EACP1I,MAAOrE,EAAU,mBACjB2B,QAAS,OAAF,wBACFxB,EAAMiB,SAASgN,YAAU,CAC5BlB,KAAM,GAAF,SAAsC,QAA9B,EAAA/M,EAAMiB,SAASgN,WAAWlB,YAAI,QAAI,IAAK,CAAA/M,EAAMoB,KAAK0C,SAMlEb,IAAW2B,EAAA,YACQ,QAAnB,EAAA5E,EAAMoB,KAAK+I,gBAAQ,eAAEC,mBACpB0B,EAAUlI,EAAA,aAEXiI,EAAQc,KAAK,CACXC,MAAO,EACP1I,MAAOrE,EAAU,iBACjB2E,SAAUxE,EAAM0M,aAChBrE,QAASrI,EAAM0M,aAAe7M,EAAU,6BAA+B,GACvEY,UAAWT,EAAM0M,aAAe,0BAA4B,GAC5D9K,QAAS,iBACPuK,EAAa,CAAEU,WAAY,iBAAwBK,WAAY,cAE/D,eAA2B,OAAD,wBACrBlN,EAAMiB,SAASiN,iBAAe,CACjCnB,KAAM,GAAF,SAA2C,QAAnC,EAAA/M,EAAMiB,SAASiN,gBAAgBnB,YAAI,QAAI,IAAK,CAAA/M,EAAMoB,KAAK0C,OAEvE,IAIAb,IAAW2B,EAAA,WAA6B5E,EAAM2H,gBAChDkE,EAAQc,KAAK,CACXC,MAAO,EACP1I,MAAOrE,EAAU,wBACjB2E,SAAUxE,EAAM0M,aAChBrE,QAASrI,EAAM0M,aAAe7M,EAAU,6BAA+B,GACvEY,UAAWT,EAAM0M,aAAe,0BAA4B,GAC5DlL,QAAS,OAAF,wBACFxB,EAAMiB,SAASkN,sBAAoB,CACtCpB,KAAM,GAAF,SAAgD,QAAxC,EAAA/M,EAAMiB,SAASkN,qBAAqBpB,YAAI,QAAI,IAAK,CAAA/M,EAAMoB,KAAK0C,SAKvE+H,CACT,CAkBkBuC,CAAcpO,GAE9B,OACE,gBAACqO,EAAA,EAAO,CACNxC,QAASA,EACTpL,UAAWT,EAAM2H,eAAiB,OAAS,OAC3C2G,yBAA0BtO,EAAM2H,eAAiB,uBAAyB,qBAGhF,yEClZA,SAAgB,KAAO,SCcjB,SAAUsD,EAAajL,GAC3B,OACE,uBAAKS,UAAS,kEAA6DT,EAAMS,WAAa,KAC5F,gBAAC8N,EAAA,EAAY,CACXvB,QAAS,oBACTvM,UAAS,6BAAwB,UAEnC,2BACGT,EAAMwO,UAIf,wCCvBatL,WAA2B,cAAuC,uDCGzE,SAAU7C,EAAaL,GAC3B,OACE,wBAAM8D,GAAE,UAAK9D,EAAMM,KAAI,SAASG,UAAS,UAAKT,EAAMS,UAAS,6BAA6BgO,KAAK,UAAUzO,EAAMwO,SAEnH,wcCAM,SAAUE,EAAa1O,GAC3B,IAAQkE,EAAqFlE,EAArFkE,MAAOyK,EAA8E3O,EAA9E2O,uBAAwBC,EAAsD5O,EAAtD4O,wBAAyBnO,EAA6BT,EAA7BS,UAAcoO,EAAU,EAAK7O,EAAvF,0EAEN,OACE,gBAAC8O,EAAA,QAAU,CAACrO,UAAU,cACpB,uBAAKA,UAAS,qBAAgBA,GAAa,KACzC,gBAACsO,EAAY,eAACtO,UAAU,oBAAuBoO,IAC/C,gBAACC,EAAA,QAAU,CACTrO,UAAS,0CAAiE,WAA5BmO,EAAuC,YAAc,GAAE,wBACnGD,GACFK,QAASH,EAAW/K,IAEnBI,GAEFlE,EAAMiP,iBAAmBjP,EAAMkP,qBAC9B,gCACE,iCACA,gBAAC3N,EAAA,EAAO,CAACC,QAASxB,EAAMiP,gBAAiBxO,UAAU,aAChDT,EAAMkP,uBAOrB,iDCzBM,SAAUC,EAA4CnP,GAC1D,IAAQ0B,GAAW,UAAXA,OAEF0N,EAAQC,EAAA,MAAiB3N,EAAQ1B,EAAMsP,WAE7C,MAAqB,iBAAVF,EACF,iCAGP,uBAAK3O,UAAU,sCACZ2O,EAAMhG,OAAM,IAAGpJ,EAAMuP,MAAK,cAGjC,CCvBA,SAAgB,eAAiB,QAAQ,cAAgB,QAAQ,kBAAoB,QAAQ,0BAA4B,QAAQ,YAAc,QAAQ,QAAU,+bCmB3J1E,EAAY,mBAkCZ,SAAUkE,EACd/O,GAEA,QAAQwO,EAAgDxO,EAAhDwO,SAAU5I,EAAsC5F,EAAtC4F,mBAAuBiJ,EAAU,EAAK7O,EAAlD,mCAE8C,KAA1B,WAAeA,EAAMmE,QAAK,s4BAA5CA,EAAI,KAAEqL,EAAO,KASfC,EAAmBC,EAAA,aAA0BlB,GAC/C,SAACmB,GAAa,OAAKnB,EAASmB,EAAE,EAC9B,iBAAqBnB,GAAYA,EAAW,KAEhD,GAAwB,aAApBK,EAAW1K,KACb,OAAIyB,EAEA,uBAAKnF,UAAU,qBACb,gBAAC,KAAK,iBAAM4O,EAAA,OAAkBR,EAAY,CAAC,cACxCY,GAGH,uBAAKhP,UAAW,WACd,gBAACmP,EAAA,EAAO,CAACC,UAAU,SAASC,KAAK,SAOvC,gBAAC,KAAK,iBAAMT,EAAA,OAAkBR,EAAY,CAAC,cACxCY,GAKP,IAAIM,EAAqB,qBAAH,OAAwB,qBAY9C,OAVIlB,EAAWpO,YACbsP,GAAsB,IAAJ,OAAQlB,EAAWpO,YAEnCoO,EAAWrK,WACbuL,GAAsB,IAAJ,OAAQ,8BAO1B,uBAAKtP,UAAWsP,GACd,gBAAC,KAAK,iBACCV,EAAA,OAAkBR,EAAY,CAAE,WAAY,OAAQ,cAAe,CACxE1K,KAAMA,EACN1D,UAAS,UAAK,gBAAoB,gDAEjCgP,GAEkB,aAApBZ,EAAW1K,MACV,gBAACoK,EAAA,EAAY,CACXvB,QAAkB,aAAT7I,EAAsB,eAAyB,gBACxD1D,UAAS,uCAAkC,kBAC3CmB,QA1DR,WAEI4N,EADW,aAATrL,EACM,OAEA,WACZ,IA0DF,CAOM,SAAUF,EAAqCjE,GACnD,IACEkE,EAWElE,EAXFkE,MACAzD,EAUET,EAVFS,UACAuP,EASEhQ,EATFgQ,qBACA1L,EAQEtE,EARFsE,iBACA4B,EAOElG,EAPFkG,YACA+J,EAMEjQ,EANFiQ,qBACAtL,EAKE3E,EALF2E,SACAD,EAIE1E,EAJF0E,SACAwL,EAGElQ,EAHFkQ,kBACAC,EAEEnQ,EAFFmQ,mBACGtB,EAAU,EACX7O,EAZE,qKAcN,GAA4B,UAApBoQ,EAAM,EAANA,OAAQ/M,EAAO,EAAPA,QAIVgN,EAAmB,WAAO,EAEhC,GAAwB,aAApBxB,EAAW1K,KAAqB,CAClC,IAAMmM,EAASjB,EAAA,OAAkBrP,EAAO,CAAE,WAAY,yBAKtD,OAHIA,EAAMwE,WACR8L,EAAO3K,SAAW0K,GAEb,gBAAC3B,EAAY,iBAAK4B,GAC1B,CAED,IAAMC,EAAoB,OAAH,wBAClB1B,GAAU,CACbpO,UAAW+P,EAAA,gCACTJ,EACA/M,EACAwL,EAAWvO,KACXoE,EACAjE,EACoB,iBAAbT,EAAMoG,GAAkBpG,EAAMoG,GAAK,QAO9C,OAHIpG,EAAMwE,WACR+L,EAAkB5K,SAAW0K,GAG7B,gBAACvB,EAAA,QAAU,CAACrO,UAAS,qBAAgB0P,MAChCjM,GACD,gBAAC4K,EAAA,QAAU,CAACE,QAASH,EAAW/K,GAAIrD,UAAU,6BAC3CyD,EACAI,GAAoB,wBAAM7D,UAAU,eAAa,KACjDyF,GACC,gBAACqI,EAAA,EAAY,CACX9N,UAAS,uCAAkC,eAC3CuM,QAAS,UACTK,MAAOnH,EACPuK,iBAAkBR,EAClBS,iBAAe,IAGlBR,GAAqB,wBAAMzP,UAAU,kBAAgB,IAAO,gBAACyK,EAAA,EAAI,CAACL,UAAWA,EAAWE,OAAO,gBAE7FiF,KAA2BnB,EAAiD8B,WAC7E,uBAAKlQ,UAAU,WACb,gBAAC0O,EAAgB,CACfG,UAAYT,EAAWvO,KACvBiP,MAAQV,EAAiD8B,cAOnE,gBAAC5B,EAAY,iBAAKwB,EAAiB,+BAAwB1B,EAAWvO,KAAI,cAEvEqE,GACD,gBAACmK,EAAA,OAAS,CAACrO,UAAU,kBAClBkE,GAIL,gBAAC,KAAY,CAACrE,KAAMuO,EAAWvO,OAC5B,SAACsQ,GAAoB,OAAK,gBAAC9B,EAAA,mBAAqB,CAAChL,GAAE,UAAK+K,EAAWvO,KAAI,SAAS6D,KAAK,UAAUsK,KAAK,UAAUmC,EAAqC,IAI5J,CAvKA7B,EAAa8B,aAAe,CAC1BC,aAAc,OA2EhB7M,EAAU4M,aAAe,CACvBC,aAAc,MACdb,qBAAsB,shBCtElB,SAAUvF,EAId1K,GACA,IAAQ+Q,EAAmF/Q,EAAnF+Q,kBAAmBC,EAAgEhR,EAAhEgR,mBAAoBnM,EAA4C7E,EAA5C6E,cAAe8F,EAA6B3K,EAA7B2K,SAAa5J,EAAW,EAAKf,EAArF,uEAMAiR,EAAqCF,GAAqB/Q,EAAM4K,iBAClE5K,EAAM4K,iBAAiBsG,KA3D7B,SAA4DrM,GAC1D,IAAKA,EACH,MAAO,CAAC,EAEV,IAAMnD,EAAS,cAAuBmD,GAetC,OAbA,SAASsM,EAAgBC,GACvBtH,OAAOC,KAAKrI,GAAQuI,SAAQ,SAACpD,GACtBnF,EAAO2P,eAAexK,KAGvB,aAAsBuK,EAAMvK,IAC9BsK,EAAgBC,EAAMvK,IACC,OAAhBnF,EAAOmF,WACPnF,EAAOmF,GAClB,GACF,CAEAsK,CAAgBzP,GACTA,CACT,CAuCkC4P,CAAsBzM,IAClDA,EA4BE0M,EAA+B,CACnCC,mBAAoBxR,EAAMwR,oBAG5B,OACE,gBAAC,KAAM,eACLC,oBAAkB,GACb1Q,EAA6D,CAClE8D,cAAeoM,EACftG,SAnCoB,SACtBjJ,EAAkB,GAEhB,IADAgQ,EAAa,EAAbA,cAAeC,EAAS,EAATA,UAAWC,EAAa,EAAbA,cAOtBC,EAAgBb,GAAsBhR,EAAM4K,iBAC9C5K,EAAM4K,iBAAiBsG,KAAKxP,GAC5BA,EAEJiJ,EAASkH,GAAe,WAAoD,QAAnDC,EAAA,uDAA6C,CAAC,EAGrE,GAFAA,EAAQC,OAASJ,IAEbG,EAAQ1B,OACV,IAAK,IAAL,MAA6BtG,OAAOkI,QAAQF,EAAQ1B,QAAO,eAAE,CAAxD,s5BAAQvJ,EAAG,KAAExC,EAAK,KACrBuN,EAAc/K,EAAKxC,EACpB,CAGHqN,GAAc,EAChB,GACF,EAYIH,cAAeA,IAEd,eAA0BvR,EAAMwO,UAC7B,SAACmB,GAA0B,OAAM3P,EAAMwO,SAA6DmB,EAAE,EACtG,iBAAqB3P,EAAMwO,UAAYxO,EAAMwO,SAAW,KAIlE,CAEM,SAAUyD,IACd,OAAO,SACT,CApEAvH,EAAYmG,aAAe,CACzBE,mBAAmB,EACnBC,oBAAoB,oDC/BTR,EAAa,CACxB0B,8BAA6B,SAC3B9B,EACA/M,EACA8O,EACArC,EACAsC,EACAjO,GAEA,IAAI1D,EAAY,GAWhB,OATAA,EA/BJ,SAAqB0D,EAAc2L,GACjC,IAAIrP,EAAY,GAgBhB,OAZIA,EADG,WADC0D,EAEQ,cAGA,eAGH,OAAT2L,IACFrP,GAAa,IAAJ,OAAQA,EAAS,QAEf,OAATqP,IACFrP,GAAa,IAAJ,OAAQA,EAAS,QAErBA,CACT,CAagB4R,CAAYlO,EAAM2L,IAG1B,QAAMzM,EAAS8O,KAAc,QAAM/B,EAAQ+B,KAC7C1R,GAAa,eAEX2R,IACF3R,GAAa,IAAJ,OAAQ2R,IAEZ3R,CACT,oDCxCW6R,EAA2B,CACtCC,4BAA2B,SACzBC,EACAC,EACAvS,GAEA,MAAO,CACLwS,IAAK,0BAAF,OAA4BF,EAAU,sBACzC3L,IAAK,8BACL8L,WAAW,EACXF,QAAAA,EACAvS,MAAAA,EAEJ,EAEA0S,4BAA2B,SACzBJ,EACAK,EACAJ,EACAvS,GAEA,MAAO,CACLwS,IAAK,0BAAF,OAA4BF,EAAU,sBACzC3L,IAAK,2BACLiM,iBAAkB,8BAClB3O,KAAM,QACNwO,WAAW,EACXE,KAAAA,EACAJ,QAAAA,EACAvS,MAAAA,EAEJ","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/user-details-form/email-error-messages/contact-support/UserEmailContactSupportMessage.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-details-form/email-error-messages/editing-user-exists/EditingUserExistsErrorMessage.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-details-form/email-error-messages/exists-in-school/UserExistsInSchoolErrorMessage.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-details-form/email-error-messages/user-type-mismatch/UserTypeMismatchErrorMessage.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-details-form/UserEmailExistsError.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-details-form/UserDetailsForm.tsx","file:///app/packages/libs/shared/src/apps/user-manager/validation/UserValidationHelper.ts","file:///app/packages/libs/shared/src/apps/user-manager/validation/UserValidationSchema.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/edit-user-details/EditUserDetails.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/edit-user-details/components/EditSsoUserWarning.tsx","file:///app/packages/libs/shared/src/apps/user-manager/errors/sso-password-reset-email-not-allowed/SsoPasswordResetEmailNotAllowedError.tsx","file:///app/packages/libs/shared/src/utils/CuratorPermissionsHelper.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/user-list-items/components/UserItemActions.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/warning-alert/warning-alert.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/warning-alert/WarningAlert.tsx","file:///app/packages/libs/shared/src/apps/user-manager/context/UserManagerClientContext.ts","file:///app/packages/libs/shared/src/components/forms/form-feedback/FormFeedback.tsx","file:///app/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/form-field.scss","file:///app/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/utils/FormHelper.ts","file:///app/packages/projects/lite/src/apps/settings/flight-requests/SecuritySettingsRequests.ts"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UserEmailExistsErrorProps } from 'libs/shared/apps/user-manager/components/user-details-form/UserEmailExistsError';\nimport { UserValidationCode } from 'libs/shared/apps/user-manager/enums/UserValidationCode';\nimport { ExternalLink } from 'libs/shared/components/external-link/ExternalLink';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nconst namespace = 'userManager.userEmailContactSupport';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function UserEmailContactSupportMessage(props: UserEmailExistsErrorProps): JSX.Element {\n const isRostered = props.error.validationCode === UserValidationCode.Rostered;\n\n return (\n <FormFeedback name={props.name}>\n <span>\n {getPhrase(isRostered ? 'rostering' : 'alreadyExists')} \n </span>\n\n\n {!props.isInBulkEditing ? (\n <ExternalLink className='info-link' href={ArticleHelper.getSupportRequestUrl()} newTab>\n {getPhrase('contactSupport')}\n </ExternalLink>\n ) : (\n <span>{getPhrase('contactSupport')}</span>\n )}\n\n <span>\n {getPhrase('forAssistance')}\n </span>\n </FormFeedback>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UserEmailExistsErrorProps } from 'libs/shared/apps/user-manager/components/user-details-form/UserEmailExistsError';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\n\nconst namespace = 'userManager.editingUserExists';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function EditingUserExistsErrorMessage(props: UserEmailExistsErrorProps): JSX.Element {\n return (\n <FormFeedback name={props.name}>\n <span>\n {getPhrase('alreadyExists')} \n </span>\n </FormFeedback>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { UserEmailExistsErrorProps } from 'libs/shared/apps/user-manager/components/user-details-form/UserEmailExistsError';\nimport { EditUserRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.userExistsInSchool';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function UserExistsInSchoolErrorMessage(props: UserEmailExistsErrorProps): JSX.Element {\n const formikProps = useFormikContextWrapper<EditUserRequest>();\n\n const appLinkParams = (props.appLinks.studentManager.params || {}) as HashObject;\n\n /**\n * If the existing user is a student\n */\n if (props.error.user.userType === UserGroup.Learner) {\n return (\n <FormFeedback name={props.name}>\n <span>{getPhrase('emailExistsSameSchoolStudent')} </span>\n {!props.isInBulkEditing ? (\n <AppLink\n appLink={{\n ...props.appLinks.studentManager,\n params: {\n ...appLinkParams,\n query: formikProps.values.email\n }\n }}\n className={'info-link'}\n onClick={props.onClickCancel}\n >\n {getPhrase('studentManager')}\n </AppLink>\n ) : (\n <span>{getPhrase('studentManager')}</span>\n )}\n </FormFeedback>\n );\n }\n\n return (\n <FormFeedback name={props.name}>\n <span>{getPhrase('emailExistsSameSchoolStaff')} </span>\n {!props.isInBulkEditing ? (\n <AppLink\n appLink={{\n ...props.appLinks.staffManager,\n params: {\n ...appLinkParams,\n query: formikProps.values.email\n }\n }}\n className={'info-link'}\n onClick={props.onClickCancel}\n >\n {getPhrase('staffManager')}\n </AppLink>\n ) : (\n <span>{getPhrase('staffManager')}</span>\n )}\n </FormFeedback>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UserEmailExistsErrorProps } from 'libs/shared/apps/user-manager/components/user-details-form/UserEmailExistsError';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.userTypeMismatch';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function UserTypeMismatchErrorMessage(props: UserEmailExistsErrorProps): JSX.Element {\n if (props.error.user.userType === UserGroup.Learner) {\n return (\n <FormFeedback name={props.name}>\n <span>\n {getPhrase('alreadyExistsStudent')} \n </span>\n {!props.isInBulkEditing ? (\n <AppLink\n appLink={props.appLinks.studentManager}\n className='info-link'\n onClick={props.onClickCancel}\n >\n {getPhrase('studentManager')}\n </AppLink>\n ) : (\n <span>{getPhrase('studentManager')}</span>\n )}\n </FormFeedback>\n );\n }\n\n return (\n <FormFeedback name={props.name}>\n <span>\n {getPhrase('alreadyExistsStaff')} \n </span>\n {!props.isInBulkEditing ? (<AppLink\n appLink={props.appLinks.staffManager}\n className='info-link'\n onClick={props.onClickCancel}\n >\n {getPhrase('staffManager')}\n </AppLink>\n ) : (\n <span>{getPhrase('staffManager')}</span>\n )}\n </FormFeedback>\n );\n}","import React from 'react';\n\nimport { UserEmailContactSupportMessage } from 'libs/shared/apps/user-manager/components/user-details-form/email-error-messages/contact-support/UserEmailContactSupportMessage';\nimport { EditingUserExistsErrorMessage } from 'libs/shared/apps/user-manager/components/user-details-form/email-error-messages/editing-user-exists/EditingUserExistsErrorMessage';\nimport { UserExistsInSchoolErrorMessage } from 'libs/shared/apps/user-manager/components/user-details-form/email-error-messages/exists-in-school/UserExistsInSchoolErrorMessage';\nimport { UserTypeMismatchErrorMessage } from 'libs/shared/apps/user-manager/components/user-details-form/email-error-messages/user-type-mismatch/UserTypeMismatchErrorMessage';\nimport { UserValidationCode } from 'libs/shared/apps/user-manager/enums/UserValidationCode';\nimport { UserEmailCheckResponse, UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\n\nexport interface UserEmailExistsErrorProps {\n isNew: boolean;\n error: UserEmailCheckResponse;\n name: string;\n appLinks: UserManagerAppLinks;\n emailRequired: boolean;\n onClickCancel: () => void;\n isInBulkEditing?: boolean;\n}\n\nexport function UserEmailExistsError(props: UserEmailExistsErrorProps): JSX.Element {\n // When editing a user, if the email is already taken, we just display a generic error message\n if (!props.isNew) {\n return <EditingUserExistsErrorMessage {...props} />;\n }\n\n switch (props.error.validationCode) {\n // This means the user exists already in the current school\n case UserValidationCode.UserAlreadyExistsInCustomer:\n return <UserExistsInSchoolErrorMessage {...props} />;\n\n // This means the user exists in another school, but the user type is dfiferent\n case UserValidationCode.UserTypeMismatch:\n return <UserTypeMismatchErrorMessage {...props} />;\n \n // This means the user is in an Online school, and cannot be invited\n case UserValidationCode.UserInCustomerWithOnline:\n // This means the user is in multiple schools, and one of them has online, so they cannot be invited\n case UserValidationCode.CustomerFoundInOnline:\n // This means the user is disabled\n case UserValidationCode.InvalidUserStatus:\n // This means the user is crated by rostering\n case UserValidationCode.Rostered:\n return <UserEmailContactSupportMessage {...props}/>;\n }\n\n return <></>;\n}","import React from 'react';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { UserEmailExistsError } from 'libs/shared/apps/user-manager/components/user-details-form/UserEmailExistsError';\nimport { UserItemActions } from 'libs/shared/apps/user-manager/components/user-list-items/components/UserItemActions';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { UserValidationCode } from 'libs/shared/apps/user-manager/enums/UserValidationCode';\nimport { BulkUserEmailCheckResponse, EditUserRequest, UserEmailCheckResponse, UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { FormField, FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CurrentUser, User, YearGroup } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nconst namespace = 'userManager.userDetailsForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst EMAIL_ERROR_CODES = [\n UserValidationCode.UserAlreadyExistsInCustomer,\n UserValidationCode.CustomerFoundInOnline,\n UserValidationCode.UserInCustomerWithOnline,\n UserValidationCode.UserTypeMismatch,\n UserValidationCode.InvalidUserStatus,\n UserValidationCode.UserCanBeAddedInCustomer,\n UserValidationCode.Rostered\n];\n\nconst FIRST_NAME_FIELD_ID = 'firstName';\n\nfunction shouldShowActions(props: UserDetailsFormProps): boolean {\n return !props.isNew\n && !!props.showActions\n && !!props.appLinks\n && !!props.user\n && !!props.onClickResendActivationEmail;\n}\n\ninterface UserDetailsFormProps {\n user?: User;\n onClickCancel: () => void;\n userType: UserGroup;\n yearGroups: YearGroup[];\n products?: ProductId[];\n isNew?: boolean;\n submitText?: string;\n currentUser: CurrentUser;\n formSize?: FormSize;\n canEditEmail?: boolean;\n emailRequired: boolean;\n showPasswordField?: boolean;\n showDisplayNameField?: boolean;\n canEditSsoFields?: boolean;\n isInBulkEditing?: boolean;\n hasUserCredit?: boolean;\n\n shouldGoToNext?: boolean;\n onToggleNextCheckbox?: () => void;\n goToNextText?: string;\n\n // All of the below props are required for the actions to be shown\n showActions?: boolean;\n appLinks?: UserManagerAppLinks;\n onClickResendActivationEmail?: (user: User) => void;\n onClickSendResetEmail?: (user: User) => void;\n onClickSendVerificationEmail?: (user: User) => void;\n validateEmail?: (email: string) => Promise<BulkUserEmailCheckResponse>;\n onDetectValidUser?: (detectedUser: UserEmailCheckResponse['user']) => void;\n}\n\nexport function UserDetailsForm(props: UserDetailsFormProps): React.ReactElement {\n const { onClickCancel, isNew, userType, yearGroups, submitText, currentUser } = props;\n\n const validYearGroups = UserHelper.getValidYearGroups(yearGroups);\n\n const [ emailError, setEmailError ] = React.useState<UserEmailCheckResponse>(null);\n const [ isValidatingEmail, setIsValidatingEmail ] = React.useState(false);\n\n const [ editSsoFields, setEditSsoFields ] = React.useState(false);\n\n const emailValidationCache = React.useRef<Record<string, UserEmailCheckResponse>>({});\n\n const client = React.useContext(UserManagerClientContext);\n const formikProps = useFormikContextWrapper<EditUserRequest>();\n\n React.useEffect(() => {\n if (formikProps.values.password && formikProps.values.email)\n formikProps.setFieldValue('password', '');\n }, [ formikProps.values.email, formikProps.values.password ]);\n\n function getEmailFieldInfoText(): string {\n /**\n * Return message to explain that the email address is either unverified (and hence can be edited)\n * or that it is verified and can't be edited.\n * \n * Only show this when:\n * 1. The user is being edited in Curator\n * 2. The user has an existing email address\n */\n if (client === UserManagerClient.Curator && !props.isNew && !!formikProps.initialValues.email)\n return getPhrase(props.canEditEmail ? 'emailNotVerified' : 'cannotEditVerifiedEmail');\n }\n\n async function onBlurEmail(e: React.FormEvent<HTMLInputElement>): Promise<void> {\n const email = e.currentTarget.value;\n\n /**\n * Email has not been changed. No need to validate it.\n */\n if (email === formikProps.initialValues.email)\n return;\n\n formikProps.setFieldTouched('email', true);\n\n if (client !== UserManagerClient.Primary || !props.validateEmail)\n return;\n\n const formErrors = await formikProps.validateForm();\n\n if (formErrors.email || !email) {\n if (emailError)\n setEmailError(null);\n\n return;\n }\n\n setIsValidatingEmail(true);\n\n try {\n let emailValidation = emailValidationCache.current[email];\n\n if (!emailValidation)\n emailValidation = ArrayHelper.first(await props.validateEmail(email));\n\n emailValidationCache.current[email] = emailValidation;\n\n if (props.isNew && emailValidation.validationCode === UserValidationCode.UserCanBeAddedInCustomer) {\n props.onDetectValidUser(emailValidation.user);\n return;\n }\n \n if (!EMAIL_ERROR_CODES.includes(emailValidation.validationCode)) {\n if (emailError)\n setEmailError(null);\n\n setIsValidatingEmail(false);\n \n return;\n }\n \n setEmailError(emailValidation);\n setIsValidatingEmail(false);\n } catch {\n setIsValidatingEmail(false);\n }\n }\n\n /**\n * This addresses a UX issue where if you enter an email, then\n * that email is validated, all inputs are unfocused as all fields are\n * set to \"disabled\". Once validation completed, the first name\n * input should be focused\n */\n React.useEffect(() => {\n if (!formikProps.touched.email || isValidatingEmail)\n return;\n\n const firstNameEl = document.getElementById(FIRST_NAME_FIELD_ID);\n\n if (!firstNameEl)\n return;\n\n firstNameEl.focus();\n }, [isValidatingEmail]);\n\n function onChangeEmail(e: React.FormEvent<HTMLInputElement>): void {\n const email = e.currentTarget.value;\n\n formikProps.setFieldValue('email', email);\n\n if (emailError)\n setEmailError(null);\n }\n\n const isDisabled = props.user?.status === ObjectStatus.Disabled;\n const isEditingCurrentUser = !props.isNew && (currentUser.id.toString() === formikProps.values.userId?.toString());\n\n return (\n <Form>\n <FormField\n label={getPhrase('emailAddress')}\n type='text'\n name='email'\n id='email'\n placeholder={getPhrase('emailAddressPlaceholder')}\n value={formikProps.values.email}\n showRequiredStar={props.emailRequired}\n disabled={!props.canEditEmail || isDisabled}\n formSize={props.formSize}\n infoText={getEmailFieldInfoText()}\n onBlur={onBlurEmail}\n onChange={onChangeEmail}\n showLoadingSpinner={isValidatingEmail}\n className={emailError ? 'is-invalid' : ''}\n autoFocus\n />\n {!!emailError && (\n <div className='mt-n2 mb-2'>\n <UserEmailExistsError\n name='email'\n isNew={props.isNew}\n error={emailError}\n appLinks={props.appLinks}\n emailRequired={props.emailRequired}\n onClickCancel={props.onClickCancel}\n isInBulkEditing={props.isInBulkEditing}\n />\n </div>\n )}\n\n <FormField\n label={getPhrase('firstName')}\n type='text'\n name='firstName'\n id={FIRST_NAME_FIELD_ID}\n placeholder={getPhrase('firstNamePlaceholder')}\n value={formikProps.values.firstName}\n showRequiredStar\n formSize={props.formSize}\n disabled={isDisabled || isValidatingEmail || (UserHelper.hasLegacySso(props.user) && !editSsoFields)}\n />\n\n <FormField\n label={getPhrase('lastName')}\n type='text'\n name='surname'\n id='surname'\n placeholder={getPhrase('lastNamePlaceholder')}\n value={formikProps.values.surname}\n showRequiredStar\n formSize={props.formSize}\n disabled={isDisabled || isValidatingEmail || (UserHelper.hasLegacySso(props.user) && !editSsoFields)}\n />\n\n {props.showDisplayNameField && (\n <FormField\n label={getPhrase('displayName')}\n type='text'\n name='displayName'\n id='displayName'\n placeholder={getPhrase('displayNamePlaceholder')}\n formSize={props.formSize}\n disabled={isDisabled || isValidatingEmail}\n infoText={getPhrase('displayNameInfo')}\n />\n )}\n\n <FormField\n label={getPhrase('username')}\n type='text'\n name='username'\n id='username'\n placeholder={getPhrase('usernamePlaceholder')}\n value={formikProps.values.username}\n infoTooltip={isNew ? getPhrase('usernameInfo') : null}\n formSize={props.formSize}\n disabled={!isNew || isDisabled || isValidatingEmail}\n />\n\n {/* Only primary students can have a custom password. Other users must set their own during activation */}\n {props.showPasswordField && (\n <FormField\n label={getPhrase('password')}\n type='password'\n name='password'\n id='password'\n placeholder={getPhrase('passwordPlaceholder')}\n value={formikProps.values.password}\n disabled={!!formikProps.values.email || isValidatingEmail}\n infoTooltip={formikProps.values.email ? getPhrase('passwordDisabledInfo') : getPhrase('passwordGenerateInfo')}\n formSize={props.formSize}\n />\n )}\n\n {userType === UserGroup.Learner && (\n <FormField\n as='select'\n label={getPhrase('yearGroup')}\n name='masterYearGroup'\n value={formikProps.values.masterYearGroup?.id ?? ''}\n className={!formikProps.values.masterYearGroup?.id ? 'text-secondary' : ''}\n showRequiredStar\n disabled={\n isDisabled ||\n isValidatingEmail ||\n // For SSO users, we only allow setting the year group if they have the \"Unknown\" year group. I.e. value is 0\n (UserHelper.hasSso(props.user) && !editSsoFields && formikProps.initialValues.masterYearGroup?.value !== 0)\n }\n onChange={(e: any) => {\n const yearGroupId = e.target.value;\n const yearGroup = yearGroups.find(y => y.id.toString() === yearGroupId?.toString());\n\n if (!yearGroup) {\n formikProps.setFieldValue('masterYearGroup', null);\n return;\n }\n\n formikProps.setFieldValue('masterYearGroup', {\n id: yearGroup.id,\n name: yearGroup.name,\n description: yearGroup.description,\n value: yearGroup.value\n });\n }}\n >\n <option className='text-secondary' value=''>{LanguageService.getPhrase(namespace, 'selectYearGroup')}</option>\n {validYearGroups.map(yearGroup =>\n <option key={yearGroup.id} value={yearGroup.id} className='text-dark'>{yearGroup.name}</option>)}\n </FormField>\n )}\n\n <div className='d-flex justify-content-between align-items-center'>\n {(userType === UserGroup.Staff && !isEditingCurrentUser) ? (\n <FormField\n id='masterRole'\n name='masterRole'\n disabled={isDisabled || isValidatingEmail || (UserHelper.hasNonLegacySso(props.user) && !editSsoFields)}\n >\n {() => (\n <div className='d-flex align-items-center'>\n <ToggleSwitch\n onClick={() => formikProps.setFieldValue(\n 'masterRole',\n formikProps.values.masterRole === UserRole.User ? UserRole.Admin : UserRole.User\n )}\n on={formikProps.values.masterRole === UserRole.Admin}\n disabled={isDisabled || (UserHelper.hasNonLegacySso(props.user) && !editSsoFields)}\n showStateWhenDisabled\n />\n <span className='fw-semibold ms-2'>{getPhrase('admin')}</span>\n </div>\n )}\n </FormField>\n ) : <div> </div>}\n\n {shouldShowActions(props) && (\n <UserItemActions\n user={props.user}\n userType={userType}\n appLinks={props.appLinks}\n onClickSendResetEmail={props.onClickSendResetEmail}\n onClickResendActivationEmail={props.onClickResendActivationEmail}\n onClickSendVerificationEmail={props.onClickSendVerificationEmail}\n currentUser={currentUser}\n products={props.products}\n isEditUserForm\n hasUserCredit={props.hasUserCredit}\n />\n )}\n </div>\n\n <PopupButtons>\n {!!props.onToggleNextCheckbox && (\n <PopupButtons.Checkbox\n id='edit-next-user'\n onToggle={props.onToggleNextCheckbox}\n label={props.goToNextText || getPhrase('goToNext')}\n checked={props.shouldGoToNext}\n />\n )}\n\n {!!props.canEditSsoFields && (\n <PopupButtons.Toggle\n on={editSsoFields}\n onClick={() => setEditSsoFields(v => !v)}\n label={getPhrase('editSsoFields')}\n disabled={!UserHelper.hasSso(props.user)}\n tooltip={!UserHelper.hasSso(props.user) ? 'This user doesn\\'t sign in with SSO' : ''}\n />\n )}\n\n <PopupButtons.Cancel onClick={onClickCancel} />\n <PopupButtons.Submit\n isNew={isNew}\n text={submitText}\n variant='dark'\n disabled={emailError ? true : undefined}\n />\n </PopupButtons>\n </Form>\n );\n}\n","import { object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport { EditUserRequest } from '../interfaces';\n\n/**\n * Regex's here are copied directly from User API. These are used to do the same validation on the backend.\n */\nconst USERNAME_REGEX = /^(?![._])(?!.*[._]$)(?!.*?\\.\\.)(?!.*?__)[a-zA-Z0-9_.]+$/;\nconst NAME_REGEX = /^[\\w0-9'\\-,.():;&][^_!¡?÷¿/\\\\+=@#$%ˆ*{}|~<>[\\]]{0,}$/;\n\nconst getPhrase = LanguageService.encloseNamespace('userManager.validation');\n\nexport const UserValidationHelper = {\n getFirstNameSchema: (existingUser?: EditUserRequest) => {\n return string()\n .max(255, () => getPhrase('nameExceeds'))\n .required(() => getPhrase('nameRequired'))\n .default('')\n .test({\n name: 'name-invalid',\n message: getPhrase('nameInvalid'),\n test: (val: string) => {\n if (existingUser?.userId && existingUser.firstName === val)\n return true;\n\n return NAME_REGEX.test(val);\n }\n });\n },\n\n getSurnameSchema: (existingUser?: EditUserRequest) => {\n return string()\n .max(255, () => getPhrase('surnameExceeds'))\n .required(() => getPhrase('surnameRequired'))\n .default('')\n .test({\n name: 'surname-invalid',\n message: getPhrase('surnameInvalid'),\n test: (val: string) => {\n if (existingUser?.userId && existingUser.surname === val)\n return true;\n\n return NAME_REGEX.test(val);\n }\n });\n },\n\n getEmailSchema: (userType: UserGroup, existingUser?: EditUserRequest) => {\n let schema = string()\n .max(255, () => getPhrase('emailExceeds'))\n .email(() => getPhrase('emailInvalidLong'))\n .default('');\n\n // New staff and old staff who have an email are required to have an email set.\n // Learners and old staff who don't have an email are not required.\n if (userType === UserGroup.Staff && (!existingUser?.userId || existingUser.email))\n schema = schema.required(() => getPhrase('emailRequired'));\n\n return schema;\n },\n\n getUsernameSchema: (existingUser?: EditUserRequest) => {\n const isNewUser = !existingUser?.userId;\n\n return string()\n .default('')\n .test({\n name: 'username-too-long',\n message: getPhrase('usernameExceeds'),\n test: (val: string) => {\n if (!isNewUser && existingUser.username === val)\n return true;\n \n return val.length <= 200;\n }\n })\n .test({\n name: 'username-too-short',\n message: getPhrase('usernameTooShort'),\n test: (val: string) => {\n if (!isNewUser && existingUser.username === val)\n return true;\n \n if (isNewUser && !val)\n return true;\n \n return val.length >= 5;\n }\n })\n .test({\n name: 'username-invalid',\n message: getPhrase('usernameInvalidLong'),\n test: (val: string) => {\n if (isNewUser && !val)\n return true;\n\n if (!isNewUser && existingUser.username === val)\n return true;\n\n return USERNAME_REGEX.test(val);\n }\n });\n },\n\n getPasswordSchema: (minPasswordLength: number, existingUser?: EditUserRequest) => {\n let schema = string().default('');\n\n if (!existingUser?.userId) {\n schema = schema.test({\n name: 'password-short',\n message: getPhrase('passwordTooShort', { minLength: minPasswordLength }),\n test: (val: string) => {\n if (!val)\n return true;\n \n return val.length >= minPasswordLength;\n }\n });\n }\n\n return schema;\n },\n\n getDisplayNameSchema: () => {\n return string()\n .max(70, () => getPhrase('displayNameExceeds'))\n .notRequired()\n .nullable()\n .default('')\n .test({\n name: 'display-name-short',\n message: getPhrase('displayNameTooShort'),\n test: (val: string) => {\n if (!val)\n return true;\n\n return val.length >= 2;\n }\n });\n },\n\n getYearGroupSchema: (userType: UserGroup) => {\n if (userType === UserGroup.Staff)\n return;\n\n return object()\n .required(() => getPhrase('yearGroupRequired'))\n .nullable();\n }\n};","import { object } from 'yup';\n\nimport { EditUserRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport { UserValidationHelper } from './UserValidationHelper';\n\nexport const getUserValidationSchema = (\n userType: UserGroup,\n minPasswordLength: number,\n existingUser?: EditUserRequest\n) => {\n return object().shape({\n firstName: UserValidationHelper.getFirstNameSchema(existingUser),\n\n surname: UserValidationHelper.getSurnameSchema(existingUser),\n\n email: UserValidationHelper.getEmailSchema(userType, existingUser),\n\n username: UserValidationHelper.getUsernameSchema(existingUser),\n\n password: UserValidationHelper.getPasswordSchema(minPasswordLength, existingUser),\n\n displayName: UserValidationHelper.getDisplayNameSchema(),\n\n masterYearGroup: UserValidationHelper.getYearGroupSchema(userType)\n });\n};","import React from 'react';\nimport { FormikErrors, FormikTouched } from 'formik';\n\nimport { UserDetailsForm } from 'libs/shared/apps/user-manager/components/user-details-form/UserDetailsForm';\nimport { BulkUserEmailCheckResponse, EditUserRequest, UserEmailCheckResponse, UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { getUserValidationSchema } from 'libs/shared/apps/user-manager/validation/UserValidationSchema';\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CurrentUser, User, YearGroup } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { SecuritySettingsResponse } from '../../interfaces/SecuritySettingsResponse';\n\nimport { EditSsoUserWarning } from './components/EditSsoUserWarning';\n\nexport interface EditUserDetailsProps {\n user?: User;\n userType: UserGroup;\n yearGroups: YearGroup[];\n currentUser: CurrentUser;\n initialValues: EditUserRequest;\n initialErrors?: FormikErrors<EditUserRequest>;\n onSubmit: (data: EditUserRequest, callback?: () => void) => void;\n onClickCancel: () => void;\n passwordPolicy: SecuritySettingsResponse;\n products?: ProductId[];\n\n editSsoUserHelpArticle?: string;\n canEditSsoFields?: boolean;\n\n submitText?: string;\n formSize?: FormSize;\n showPasswordField?: boolean;\n showDisplayNameField?: boolean;\n emailRequired: boolean;\n\n shouldGoToNext?: boolean;\n onToggleNextCheckbox?: () => void;\n goToNextText?: string;\n isInBulkEditing?: boolean;\n hasUserCredit?: boolean;\n\n // All of the below props are required for the actions to be shown\n showActions?: boolean;\n appLinks?: UserManagerAppLinks;\n onClickResendActivationEmail?: (user: User) => void;\n onClickSendResetEmail?: (user: User) => void;\n onClickSendVerificationEmail?: (user: User) => void;\n validateEmail?: (email: string) => Promise<BulkUserEmailCheckResponse>;\n onDetectValidUser?: (detectedUser: UserEmailCheckResponse['user']) => void;\n}\n\nexport function EditUserDetails(props: EditUserDetailsProps): React.ReactElement {\n const initialTouched: FormikTouched<EditUserRequest> = {};\n Object.keys(props.initialErrors || {}).forEach((err: keyof EditUserRequest) => {\n initialTouched[err] = true;\n });\n\n const isNew = !props.initialValues.userId;\n\n const canEditEmail = (() => {\n if (isNew)\n return true;\n\n /**\n * If a user's email address is not verified, allow it to be edited.\n */\n if (!props.user?.metadata?.isEmailVerified)\n return true;\n\n return false;\n })();\n\n const minPasswordLength = UserManagerHelper.getMinimumPasswordLength(\n props.passwordPolicy,\n props.userType,\n UserRole.User\n );\n\n function showSsoWarning(): boolean {\n if (isNew)\n return false;\n\n return UserHelper.hasSso(props.user);\n }\n\n const validYearGroups = UserHelper.getValidYearGroups(props.yearGroups);\n\n return (\n <div>\n {showSsoWarning() && (\n <EditSsoUserWarning helpArticle={props.editSsoUserHelpArticle} userType={props.userType} isNew={isNew} />\n )}\n\n <FormWrapper<EditUserRequest>\n initialValues={props.initialValues}\n initialErrors={props.initialErrors}\n initialTouched={initialTouched}\n onSubmit={props.onSubmit}\n validationSchema={getUserValidationSchema(props.userType, minPasswordLength, props.initialValues)}\n >\n <UserDetailsForm\n isNew={isNew}\n user={props.user}\n userType={props.userType}\n yearGroups={validYearGroups}\n onClickCancel={props.onClickCancel}\n submitText={props.submitText}\n shouldGoToNext={props.shouldGoToNext}\n onToggleNextCheckbox={props.onToggleNextCheckbox}\n goToNextText={props.goToNextText}\n currentUser={props.currentUser}\n formSize={props.formSize}\n showPasswordField={props.showPasswordField}\n canEditEmail={canEditEmail}\n showActions={props.showActions}\n appLinks={props.appLinks}\n onClickResendActivationEmail={props.onClickResendActivationEmail}\n onClickSendResetEmail={props.onClickSendResetEmail}\n onClickSendVerificationEmail={props.onClickSendVerificationEmail}\n emailRequired={props.emailRequired}\n showDisplayNameField={props.showDisplayNameField}\n canEditSsoFields={props.canEditSsoFields}\n validateEmail={props.validateEmail}\n onDetectValidUser={props.onDetectValidUser}\n isInBulkEditing={props.isInBulkEditing}\n products={props.products}\n hasUserCredit={props.hasUserCredit}\n />\n </FormWrapper>\n </div>\n );\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport { UserManagerClientContext } from '../../../context/UserManagerClientContext';\nimport { UserManagerClient } from '../../../enums/UserManagerClient';\nimport { WarningAlert } from '../../warning-alert/WarningAlert';\n\nconst namespace = 'userManager.editSsoUserWarning';\n\ninterface EditSsoUserWarningProps {\n isNew: boolean;\n userType: UserGroup;\n helpArticle?: string;\n}\n\nexport function EditSsoUserWarning(props: EditSsoUserWarningProps): JSX.Element {\n const client = React.useContext<UserManagerClient>(UserManagerClientContext);\n\n function getPhraseKey(): string {\n if (props.isNew) {\n if (client === UserManagerClient.Curator)\n return 'ssoWarningCreateCurator';\n\n return props.userType === UserGroup.Learner ? 'ssoWarningCreateStudent' : 'ssoWarningCreateStaff';\n }\n\n return client === UserManagerClient.Curator ? 'ssoWarningEditCurator' : 'ssoWarningEditUser';\n }\n\n return (\n <WarningAlert>\n <Text\n namespace={namespace}\n phrase={getPhraseKey()}\n />\n {!!props.helpArticle && (\n <a\n className='info-link d-block'\n href={props.helpArticle}\n target='_blank'\n >\n <Text namespace={namespace} phrase={props.isNew ? 'kbArticleEdit' : 'kbArticleCreate'} />\n </a>\n )}\n </WarningAlert>\n );\n}","import React from 'react';\n\nimport { WarningAlert } from 'libs/shared/apps/user-manager/components/warning-alert/WarningAlert';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'userManager.ssoPasswordResetEmailNotAllowedError';\n\ninterface SsoPasswordResetEmailNotAllowedErrorProps {\n helpArticle: string;\n}\n\nexport function SsoPasswordResetEmailNotAllowedError(props: SsoPasswordResetEmailNotAllowedErrorProps): JSX.Element {\n return (\n <WarningAlert>\n <p className='mb-1 fw-semibold'>\n <Text namespace={namespace} phrase='warning' />\n </p>\n {props.helpArticle && (\n <a href={props.helpArticle} target='_blank' className='info-link'>\n <Text namespace={namespace} phrase='findMore' />\n </a>\n )}\n </WarningAlert>\n );\n}","import { CuratorGroup } from 'libs/shared/enums/CuratorGroup';\nimport { CuratorUser } from 'libs/shared/interfaces';\n\nfunction getGroupNames(user: CuratorUser): string[] {\n return (user && user.groups) ? user.groups.map(g => g.name) : [];\n}\n \nexport const CuratorPermissionsHelper = {\n isDev(user: CuratorUser): boolean {\n return getGroupNames(user).includes(CuratorGroup.Developer);\n },\n\n hasSubjectsAccess(user: CuratorUser): boolean {\n const allowedGroups = [\n CuratorGroup.Developer,\n CuratorGroup.Content,\n CuratorGroup.Curator,\n CuratorGroup.StreamableCurator\n ];\n\n return allowedGroups.some(group => getGroupNames(user).includes(group));\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, ClickDescriptor, EmailDescriptor, EntityType, LocationContext, OperationDescriptor, ToggleDescriptor, UserAction, VerifyEmailDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { SsoPasswordResetEmailNotAllowedError } from 'libs/shared/apps/user-manager/errors/sso-password-reset-email-not-allowed/SsoPasswordResetEmailNotAllowedError';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkRemoveUsersViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkRemoveUsersViewModel';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { CuratorUser, CurrentUser, User } from 'libs/shared/interfaces';\nimport { CuratorPermissionsHelper } from 'libs/shared/utils/CuratorPermissionsHelper';\nimport { DialogHelper } from 'libs/shared/utils/DialogHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nconst getPhrase = LanguageService.encloseNamespace('userManager.userList');\n\nfunction useGetActions(props: UserItemActionsProps): ActionOptions[] {\n const client = React.useContext(UserManagerClientContext);\n\n const hasStatus = (status: ObjectStatus) => status === props.user.status;\n\n const hasVerifiedEmail = props.user.metadata?.isEmailVerified;\n\n // eslint-disable-next-line\n const isCurrentUser = props.user.id == props.currentUser?.id;\n\n const [ , setBulkRemoveUsers ] = useViewModel<BulkRemoveUsersViewModel>(SharedViewModelKeys.BULK_REMOVE_USERS);\n\n function logAnalytics(actionOptions: AnalyticsOptions): void {\n AnalyticsHelper.logUserAction({ id: props.user.id }, AnalyticsHelper.mergeOptions({\n entity: EntityType.User,\n workflowPhase: WorkflowPhase.Start,\n location: LocationContext[props.userType === UserGroup.Learner ? 'StaffManagerListItem' : 'StudentManagerListItem']\n }, actionOptions));\n }\n\n const actions: ActionOptions[] = [];\n \n if (!props.isEditUserForm) {\n function getTooltip(): string {\n if (props.hasRostering)\n return getPhrase('editControlledByRostering');\n\n if (hasStatus(ObjectStatus.Disabled))\n return getPhrase('editUserDisabled');\n\n if (hasStatus(ObjectStatus.Inactive) && client !== UserManagerClient.Curator)\n return getPhrase('editUserPending');\n\n return getPhrase('editUser');\n }\n\n function canEdit(): boolean {\n if (props.hasRostering)\n return false;\n\n if (hasStatus(ObjectStatus.Active))\n return true;\n\n if (hasStatus(ObjectStatus.Inactive) && client === UserManagerClient.Curator)\n return true;\n\n return false;\n }\n\n actions.push({\n order: 0,\n onClick: () => {\n if (!canEdit())\n return;\n \n logAnalytics({ actionType: UserAction.Edit });\n \n const appLink = {\n ...props.appLinks.editUser,\n args: [ ...(props.appLinks.editUser.args ?? []), props.user.id ]\n };\n \n Core.AppLinkHelper.trigger(appLink);\n },\n svgName: cvSvgLibrary.Edit,\n className: `btn btn-link svg-container ${!canEdit() ? 'disabled' : ''}`,\n tooltip: getTooltip(),\n button: true\n });\n }\n\n if (props.user.email && hasStatus(ObjectStatus.Inactive) && props.onClickResendActivationEmail) {\n actions.push({\n order: 5,\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n label: getPhrase('resendActivationEmail'),\n onClick: () => {\n logAnalytics({\n actionType: UserAction.SendEmail,\n descriptor: EmailDescriptor.ActivateUser\n });\n props.onClickResendActivationEmail(props.user);\n },\n className: props.hasRostering ? 'cursor-default disabled' : 'btn btn-link'\n });\n }\n\n if (\n props.user.email &&\n hasStatus(ObjectStatus.Active) &&\n !hasVerifiedEmail\n ) {\n actions.push({\n order: 5,\n label: getPhrase('sendVerificationEmail'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n onClick: () => {\n logAnalytics({\n actionType: UserAction.SendEmail,\n descriptor: EmailDescriptor.VerifyEmail\n });\n props.onClickSendVerificationEmail(props.user);\n },\n className: props.hasRostering ? 'cursor-default disabled' : 'btn btn-link'\n });\n }\n\n if (!isCurrentUser) {\n if (hasVerifiedEmail && hasStatus(ObjectStatus.Active) && props.onClickSendResetEmail) {\n actions.push({\n order: 5,\n label: getPhrase('sendResetEmail'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n onClick: () => {\n if (UserHelper.hasSso(props.user)) {\n DialogHelper.render(\n <SsoPasswordResetEmailNotAllowedError helpArticle={props.ssoHelpArticle} />,\n {\n title: getPhrase('sendResetEmail'),\n cancelButtonProps: {\n text: getPhrase('close'),\n variant: 'dark'\n }\n }\n );\n return;\n }\n\n logAnalytics({\n actionType: UserAction.SendEmail,\n descriptor: EmailDescriptor.ResetPasswordEmail\n });\n props.onClickSendResetEmail(props.user);\n },\n className: props.hasRostering ? 'cursor-default disabled' : 'btn btn-link'\n });\n }\n\n if (!hasStatus(ObjectStatus.Inactive)) {\n actions.push({\n order: 10,\n label: getPhrase(hasStatus(ObjectStatus.Active) ? 'deactivate' : 'activate'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n className: props.hasRostering ? 'cursor-default disabled' : '',\n onClick: () => {\n logAnalytics({\n actionType: UserAction.Activate,\n descriptor: hasStatus(ObjectStatus.Active) ? ToggleDescriptor.Off : ToggleDescriptor.On\n });\n \n const appLink = {\n ...props.appLinks.toggleStatus,\n args: [ ...(props.appLinks.toggleStatus.args ?? []), props.user.id ]\n };\n \n Core.AppLinkHelper.trigger(appLink);\n }\n });\n }\n\n const showDelete = client !== UserManagerClient.Primary || props.products?.includes(ProductId.Online);\n if (showDelete) {\n actions.push({\n order: 25,\n disabled: props.hasRostering,\n onClick: () => {\n if (hasStatus(ObjectStatus.Active))\n return;\n \n logAnalytics({ actionType: UserAction.Delete, descriptor: OperationDescriptor.Single });\n \n setBulkRemoveUsers({ users: [props.user], totalUsers: 1 });\n \n Core.AppLinkHelper.trigger(props.appLinks.deleteUser);\n },\n label: getPhrase('delete'),\n className: `btn btn-link text-danger ${hasStatus(ObjectStatus.Active) || props.hasRostering ? 'cursor-default disabled' : ''}`,\n button: false,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : hasStatus(ObjectStatus.Active) ? getPhrase('deleteDisabledTooltip') : null\n });\n }\n\n const showRemove = client !== UserManagerClient.Online && !props.products?.includes(ProductId.Online);\n if (showRemove) {\n actions.push({\n order: 25,\n disabled: props.hasRostering,\n onClick: () => {\n if (hasStatus(ObjectStatus.Active))\n return;\n \n logAnalytics({ actionType: UserAction.Remove, descriptor: OperationDescriptor.Single });\n \n const appLink = {\n ...props.appLinks.removeUser,\n args: [ ...(props.appLinks.editUser.args ?? []), props.user.id ]\n };\n \n Core.AppLinkHelper.trigger(appLink);\n },\n label: getPhrase('remove'),\n className: `btn btn-link text-danger ${hasStatus(ObjectStatus.Active) || props.hasRostering ? 'cursor-default disabled' : ''}`,\n button: false,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : hasStatus(ObjectStatus.Active) ? getPhrase('removeDisabledTooltip') : null\n });\n }\n }\n\n if (client === UserManagerClient.Online && props.userType === UserGroup.Learner && hasStatus(ObjectStatus.Active)) {\n actions.push({\n order: 15,\n label: getPhrase('viewWorkspace'),\n onClick: () => logAnalytics({ actionType: UserAction.Click, descriptor: ClickDescriptor.ViewStudentWorkspace }),\n appLink: {\n ...props.appLinks.viewStudentWorkspace,\n params: { username: props.user.username }\n },\n className: props.hasRostering ? 'cursor-default disabled' : 'btn btn-link',\n button: false\n });\n }\n\n if (\n client === UserManagerClient.Primary &&\n props.userType === UserGroup.Learner &&\n !hasStatus(ObjectStatus.Inactive)\n ) {\n actions.push({\n order: 15,\n label: getPhrase('viewStudentsVideos'),\n onClick: () => logAnalytics({ actionType: UserAction.Click, descriptor: ClickDescriptor.ViewStudentWorkspace }),\n appLink: {\n ...props.appLinks.viewStudentWorkspace,\n args: [props.user.id]\n },\n className: 'btn btn-link',\n button: false\n });\n }\n\n if (\n hasStatus(ObjectStatus.Active) &&\n (\n (props.userType === UserGroup.Staff && !hasVerifiedEmail) ||\n props.userType === UserGroup.Learner\n )\n ) {\n actions.push({\n order: 20,\n disabled: props.hasRostering,\n label: getPhrase('changePassword'),\n className: props.hasRostering ? 'cursor-default disabled' : '',\n onClick: () => {\n logAnalytics({ actionType: UserAction.ChangePassword });\n\n const appLink = {\n ...props.appLinks.changePassword,\n args: [ ...(props.appLinks.changePassword.args ?? []), props.user.id ]\n };\n \n Core.AppLinkHelper.trigger(appLink);\n }\n });\n }\n\n if (client === UserManagerClient.Curator\n && CuratorPermissionsHelper.isDev(props.currentUser as unknown as CuratorUser)) {\n actions.push(...[\n {\n order: 2,\n label: getPhrase('manageCuratorGroups'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n className: props.hasRostering ? 'cursor-default disabled' : '',\n onClick: () => {\n logAnalytics({ actionType: UserAction.ManageGroup });\n\n Core.AppLinkHelper.trigger({\n ...props.appLinks.manageUserCuratorGroups,\n args: [props.user.id]\n });\n }\n },\n {\n order: 3,\n label: getPhrase('editUserOptions'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n className: props.hasRostering ? 'cursor-default disabled' : '',\n appLink: {\n ...props.appLinks.editUserOptions,\n args: [ ...(props.appLinks.editUserOptions.args ?? []), props.user.id ]\n }\n }\n ]);\n }\n\n if (client === UserManagerClient.Curator && props.hasUserCredit) {\n actions.push({\n order: 4,\n label: getPhrase('editUserCredits'),\n appLink: {\n ...props.appLinks.userCredit,\n args: [ ...(props.appLinks.userCredit.args ?? []), props.user.id ]\n }\n });\n }\n\n if (\n client === UserManagerClient.Curator &&\n props.user.metadata?.isEmailVerified &&\n !hasStatus(ObjectStatus.Inactive)\n ) {\n actions.push({\n order: 5,\n label: getPhrase('unverifyEmail'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n className: props.hasRostering ? 'cursor-default disabled' : '',\n onClick: () => {\n logAnalytics({ actionType: UserAction.VerifyEmail, descriptor: VerifyEmailDescriptor.Remove });\n\n Core.AppLinkHelper.trigger({\n ...props.appLinks.deleteUserEmail,\n args: [ ...(props.appLinks.deleteUserEmail.args ?? []), props.user.id ]\n });\n }\n });\n }\n\n if (client === UserManagerClient.Curator && props.isEditUserForm) {\n actions.push({\n order: 6,\n label: getPhrase('addToAnotherCustomer'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n className: props.hasRostering ? 'cursor-default disabled' : '',\n appLink: {\n ...props.appLinks.addToAnotherCustomer,\n args: [ ...(props.appLinks.addToAnotherCustomer.args ?? []), props.user.id ]\n }\n });\n }\n\n return actions;\n}\n\ninterface UserItemActionsProps {\n user: User;\n userType: UserGroup;\n appLinks: UserManagerAppLinks;\n currentUser: CurrentUser;\n products?: ProductId[];\n onClickResendActivationEmail?: (user: User) => void;\n onClickSendResetEmail?: (user: User) => void;\n onClickSendVerificationEmail?: (user: User) => void;\n isEditUserForm?: boolean;\n ssoHelpArticle?: string;\n hasRostering?: boolean;\n hasUserCredit?: boolean;\n}\n\nexport function UserItemActions(props: UserItemActionsProps): JSX.Element {\n const actions = useGetActions(props);\n\n return (\n <Actions\n actions={actions}\n className={props.isEditUserForm ? 'mb-2' : 'pe-4'}\n actionsDropdownClassName={props.isEditUserForm ? 'btn btn-outline-dark' : 'btn btn-link ms-1'}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"icon\":\"eCi4v\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './warning-alert.scss';\n\ninterface Props extends HashObject {\n className?: string;\n}\n\ntype WarningAlertProps = React.PropsWithChildren<Props>;\n\nexport function WarningAlert(props: WarningAlertProps): JSX.Element {\n return (\n <div className={`alert alert-warning d-flex align-items-center px-2 mb-3 ${props.className || ''}`}>\n <SvgContainer\n svgName={cvSvgLibrary.WarningOutline}\n className={`svg-container me-2 ${styles.icon}`}\n />\n <div>\n {props.children}\n </div>\n </div>\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 React from 'react';\n\ninterface FormFeedbackProps extends React.PropsWithChildren {\n name: string;\n className?: string;\n}\n\nexport function FormFeedback(props: FormFeedbackProps) {\n return (\n <span id={`${props.name}Error`} className={`${props.className} invalid-feedback d-block`} role='status'>{props.children}</span>\n );\n}","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { FieldAttributes } from 'formik';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\n\n/**\n * Use this checkbox within Formik contexts\n */\nexport function FormCheckbox(props: FieldAttributes<FormFieldProps>): JSX.Element {\n const { label, checkboxLabelClassName, checkboxLabelFontWeight, className, ...fieldProps } = props;\n\n return (\n <Form.Group className='form-group'>\n <div className={`form-check ${className || ''}`}>\n <FieldWrapper className='form-check-input' {...fieldProps} />\n <Form.Label\n className={`form-check-label cursor-pointer ${checkboxLabelFontWeight === 'normal' ? 'fw-normal' : ''} \n ${checkboxLabelClassName}`}\n htmlFor={fieldProps.id}\n >\n {label}\n </Form.Label>\n {props.checkboxAppLink && props.checkboxAppLinkText && (\n <>\n <span> </span>\n <AppLink appLink={props.checkboxAppLink} className='info-link'>\n {props.checkboxAppLinkText}\n </AppLink>\n </>\n )}\n </div>\n </Form.Group>\n );\n}\n\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\ninterface CharacterCounterProps<Values extends HashObject> {\n fieldName: keyof Values;\n limit: number;\n}\n\nexport function CharacterCounter<Values extends HashObject>(props: CharacterCounterProps<Values>): JSX.Element {\n const { values } = useFormikContext<Values>();\n\n const field = ObjectHelper.get(values, props.fieldName as string);\n\n if (typeof field !== 'string')\n return <></>;\n\n return (\n <div className='float-end text-secondary fw-normal'>\n {field.length}/{props.limit} characters\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"revealPassword\":\"jCfI0\",\"passwordInput\":\"RBJnf\",\"passwordContainer\":\"d78lK\",\"passwordContainerDisabled\":\"asbVo\",\"infoTooltip\":\"wzyOG\",\"spinner\":\"CycFx\"};","import * as React from 'react';\nimport { Form, Spinner } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\nimport { ErrorMessage, Field, FieldAttributes, FieldProps, useFormikContext } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { FormCheckbox } from 'libs/shared/components/forms/form-checkbox/FormCheckbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { CharacterCounter } from './CharacterCounter';\n\nimport styles from './form-field.scss';\n\nconst namespace = 'shared.formField';\n\nexport type FormSize = 'lg' | 'sm';\n\n// If checkboxLabelFontWeight is not specified, it will be bold by default\nexport type CheckboxLabelFontWeight = 'normal' | 'bold'\n\nexport interface FormFieldProps {\n /**\n * The name prop MUST be the same as the attribute\n * name of the value that the field is bound to.\n */\n name: string;\n label?: string;\n children?: any;\n showCharacterCounter?: boolean;\n showRequiredStar?: boolean;\n checkboxAppLink?: Core.AppLink;\n checkboxAppLinkText?: string;\n checkboxLabelClassName?: string;\n checkboxLabelFontWeight?: CheckboxLabelFontWeight\n infoTooltip?: string;\n infoTooltipPlacement?: Placement;\n infoText?: string;\n formSize?: FormSize;\n showOptionalLabel?: boolean;\n showLoadingSpinner?: boolean;\n formGroupClassname?: string;\n}\n\nFieldWrapper.defaultProps = {\n autoComplete: 'off'\n};\n\nexport function FieldWrapper(\n props: FieldAttributes<FormFieldProps> & { className: string }\n): React.ReactElement {\n const { children, showLoadingSpinner, ...fieldProps } = props;\n\n const [ type, setType ] = React.useState(props.type);\n\n function onClickTogglePassword(): void {\n if (type === 'password')\n setType('text');\n else\n setType('password');\n }\n\n const resolvedChildren = FunctionHelper.isFunction(children)\n ? (f: FieldProps) => children(f)\n : React.Children.count(children) ? children : null;\n\n if (fieldProps.type !== 'password') {\n if (showLoadingSpinner) {\n return (\n <div className='position-relative'>\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n\n <div className={styles.spinner}>\n <Spinner animation='border' size='sm' />\n </div>\n </div>\n );\n }\n\n return (\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n );\n }\n\n let containerClassName = `position-relative ${styles.passwordContainer}`;\n\n if (fieldProps.className)\n containerClassName += ` ${fieldProps.className}`;\n\n if (fieldProps.disabled)\n containerClassName += ` ${styles.passwordContainerDisabled}`;\n\n /**\n * We need to wrap out input with a relatively positioned element in order to absolutely\n * position our visibility icon to reveal the password - Sha\n */\n return (\n <div className={containerClassName}>\n <Field\n {...(ObjectHelper.omit(fieldProps, [ 'formSize', 'type', 'className' ]))}\n type={type}\n className={`${styles.passwordInput} border-0 w-100 h-100 outline-none rounded`}\n >\n {resolvedChildren}\n </Field>\n {fieldProps.type === 'password' &&\n <SvgContainer\n svgName={type === 'password' ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n className={`svg-container cursor-pointer ${styles.revealPassword}`}\n onClick={onClickTogglePassword}\n />\n }\n </div>\n );\n}\n\nFormField.defaultProps = {\n autoComplete: 'off',\n infoTooltipPlacement: 'top'\n};\n\nexport function FormField<Values extends HashObject>(props: FieldAttributes<FormFieldProps>): React.ReactElement {\n const {\n label,\n className,\n showCharacterCounter,\n showRequiredStar,\n infoTooltip,\n infoTooltipPlacement,\n infoText,\n formSize,\n showOptionalLabel,\n formGroupClassname,\n ...fieldProps\n } = props;\n\n const { errors, touched } = useFormikContext<Values>();\n\n // This function overwrites the default `onChange` function whenever `props.disabled` is set.\n // This prevents users from \"undisabling\" form fields via inspect element, then editing the field.\n const disabledOnChange = () => {};\n\n if (fieldProps.type === 'checkbox') {\n const _props = ObjectHelper.omit(props, [ 'formSize', 'infoTooltipPlacement' ]);\n\n if (props.disabled)\n _props.onChange = disabledOnChange;\n\n return <FormCheckbox {..._props} />;\n }\n\n const fieldWrapperProps = {\n ...fieldProps,\n className: FormHelper.getCustomFormControlClassName(\n errors,\n touched,\n fieldProps.name,\n formSize,\n className,\n typeof props.as === 'string' ? props.as : null\n )\n };\n\n if (props.disabled)\n fieldWrapperProps.onChange = disabledOnChange;\n\n return (\n <Form.Group className={`form-group ${formGroupClassname}`}>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className='d-flex align-items-center'>\n {label}\n {showRequiredStar && <span className='text-danger'>*</span>}\n {infoTooltip && (\n <SvgContainer\n className={`svg-container text-secondary ${styles.infoTooltip}`}\n svgName={cvSvgLibrary.Info}\n title={infoTooltip}\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n {showOptionalLabel && <span className='text-secondary'> <Text namespace={namespace} phrase='optional' /></span>}\n \n {!!showCharacterCounter && !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n </Form.Label>\n )}\n\n <FieldWrapper {...fieldWrapperProps} aria-errormessage={`${fieldProps.name}Error`} />\n\n {!!infoText &&\n <Form.Text className='text-secondary'>\n {infoText}\n </Form.Text>\n }\n\n <ErrorMessage name={fieldProps.name}>\n {(errorMessage: string) => <Form.Control.Feedback id={`${fieldProps.name}Error`} type='invalid' role='status'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\n );\n}","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","import { FormikErrors, FormikTouched, getIn } from 'formik';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\n\nfunction getTypeSize(type: string, size: FormSize) {\n let className = '';\n\n switch (type) {\n case 'select':\n className = 'form-select';\n break;\n default:\n className = 'form-control';\n }\n\n if (size === 'sm')\n className += ` ${className}-sm`;\n\n if (size === 'lg')\n className += ` ${className}-lg`;\n\n return className;\n}\n\nexport const FormHelper = {\n getCustomFormControlClassName<T>(\n errors: FormikErrors<T>,\n touched: FormikTouched<T>,\n attribute: string,\n size?: FormSize,\n additionalClassName?: string,\n type?: string\n ): string {\n let className = '';\n\n className = getTypeSize(type, size);\n\n // Using getIn as it supports dot notation\n if (getIn(touched, attribute) && getIn(errors, attribute))\n className += ' is-invalid';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/flight';\n\nimport { UpdateSecuritySettingsRequest } from 'apps/settings/interfaces/security/requests/UpdateSecuritySettingsRequest';\n\nexport const SecuritySettingsRequests = {\n getCustomerSecuritySettings(\n customerId: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/customers/${customerId}/settings/security`,\n key: `customers:security:settings`,\n normalize: false,\n success,\n error\n };\n },\n\n setCustomerSecuritySettings(\n customerId: string,\n data: UpdateSecuritySettingsRequest,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/customers/${customerId}/settings/security`,\n key: `update:security:settings`,\n invalidationKeys: `customers:security:settings`,\n type: HttpVerbs.PUT,\n normalize: false,\n data,\n success,\n error\n };\n }\n};"],"names":["getPhrase","LanguageService","UserEmailContactSupportMessage","props","isRostered","error","validationCode","UserValidationCode","FormFeedback","name","isInBulkEditing","ExternalLink","className","href","ArticleHelper","newTab","EditingUserExistsErrorMessage","UserExistsInSchoolErrorMessage","formikProps","appLinkParams","appLinks","studentManager","params","user","userType","UserGroup","AppLink","appLink","query","values","email","onClick","onClickCancel","staffManager","UserTypeMismatchErrorMessage","UserEmailExistsError","isNew","EMAIL_ERROR_CODES","FIRST_NAME_FIELD_ID","UserDetailsForm","yearGroups","submitText","currentUser","validYearGroups","UserHelper","emailError","setEmailError","isValidatingEmail","setIsValidatingEmail","editSsoFields","setEditSsoFields","emailValidationCache","client","UserManagerClientContext","password","setFieldValue","touched","firstNameEl","document","getElementById","focus","isDisabled","status","ObjectStatus","isEditingCurrentUser","id","toString","userId","FormField","label","type","placeholder","value","showRequiredStar","emailRequired","disabled","canEditEmail","formSize","infoText","UserManagerClient","initialValues","getEmailFieldInfoText","onBlur","e","currentTarget","setFieldTouched","validateEmail","validateForm","emailValidation","current","ArrayHelper","first","onDetectValidUser","includes","onChange","showLoadingSpinner","autoFocus","firstName","surname","showDisplayNameField","username","infoTooltip","showPasswordField","as","masterYearGroup","yearGroupId","target","yearGroup","find","y","description","map","key","ToggleSwitch","masterRole","UserRole","User","on","showStateWhenDisabled","showActions","onClickResendActivationEmail","shouldShowActions","UserItemActions","onClickSendResetEmail","onClickSendVerificationEmail","products","isEditUserForm","hasUserCredit","PopupButtons","onToggleNextCheckbox","onToggle","goToNextText","checked","shouldGoToNext","canEditSsoFields","v","tooltip","text","variant","undefined","USERNAME_REGEX","NAME_REGEX","UserValidationHelper","existingUser","max","required","test","message","val","schema","isNewUser","length","minPasswordLength","minLength","nullable","getUserValidationSchema","shape","displayName","notRequired","EditUserDetails","initialTouched","Object","keys","initialErrors","forEach","err","metadata","isEmailVerified","UserManagerHelper","passwordPolicy","EditSsoUserWarning","helpArticle","editSsoUserHelpArticle","FormWrapper","onSubmit","validationSchema","namespace","W","phrase","SsoPasswordResetEmailNotAllowedError","WarningAlert","Text","getGroupNames","groups","g","CuratorPermissionsHelper","isDev","CuratorGroup","hasSubjectsAccess","Curator","some","group","actions","hasStatus","hasVerifiedEmail","isCurrentUser","setBulkRemoveUsers","SharedViewModelKeys","logAnalytics","actionOptions","AnalyticsHelper","entity","workflowPhase","location","canEdit","hasRostering","push","order","actionType","editUser","args","svgName","button","descriptor","DialogHelper","ssoHelpArticle","title","cancelButtonProps","toggleStatus","ProductId","users","totalUsers","deleteUser","removeUser","viewStudentWorkspace","changePassword","manageUserCuratorGroups","editUserOptions","userCredit","deleteUserEmail","addToAnotherCustomer","useGetActions","Actions","actionsDropdownClassName","SvgContainer","children","role","FormCheckbox","checkboxLabelClassName","checkboxLabelFontWeight","fieldProps","Form","FieldWrapper","htmlFor","checkboxAppLink","checkboxAppLinkText","CharacterCounter","field","ObjectHelper","fieldName","limit","setType","resolvedChildren","FunctionHelper","f","Spinner","animation","size","containerClassName","showCharacterCounter","infoTooltipPlacement","showOptionalLabel","formGroupClassname","errors","disabledOnChange","_props","fieldWrapperProps","FormHelper","tooltipPlacement","tooltipSpanHack","maxLength","errorMessage","defaultProps","autoComplete","castInitialValues","castValuesOnSubmit","formattedInitialValues","cast","omitChildValues","child","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","entries","useFormikContextWrapper","getCustomFormControlClassName","attribute","additionalClassName","getTypeSize","SecuritySettingsRequests","getCustomerSecuritySettings","customerId","success","url","normalize","setCustomerSecuritySettings","data","invalidationKeys"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[618],{39902:(e,t,n)=>{n.d(t,{FN:()=>p,SW:()=>v,fh:()=>m});var r=n(32735),i=n(20354),a=n(75896);function o(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||u(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 u(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}}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){return c="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},c(e)}function s(e,t,n){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n},f=50;function m(e,t){var n=a.m.chunk(e,f).map((function(e){return t(a.m.uniq(e))})),r=i.a.useBasicFetchAll(n),o=a.m.flatten(r.data),u=r.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),s({},t.id,t))}),{}):null;return{itemsArr:o,items:u,isFetching:r.isFetching}}function p(e,t,n){var i=v({getRequest:t,_getKey:n}),a=i.fetchItems,o=d(i,["fetchItems"]);return r.useEffect((function(){e.length&&a(e)}),[null==e?void 0:e.length]),o}function v(e){var t,n,l,d,m,p=null!==(t=e._getKey)&&void 0!==t?t:function(e){return"object"===c(e)?e.id:e},v=r.useRef(new Set),h=(d=r.useState([]),m=2,function(e){if(Array.isArray(e))return e}(d)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,u=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw i}}return u}}(d,m)||u(d,m)||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.")}()),g=h[0],y=h[1],b=i.a.useBasicFetchAll(g),A=a.m.flatten(b.data),S=b.data.length?A.reduce((function(e,t){return Object.assign(Object.assign({},e),s({},p(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(l=null===(n=b.responses)||void 0===n?void 0:n[0])||void 0===l?void 0:l.hasCompleted),itemsArr:A,items:S,isFetching:b.isFetching,fetchItems:function(t){if(null==t?void 0:t.length){var n=[];t.forEach((function(e){var t=p(e);v.current.has(t)||(n.push(e),v.current.add(t))})),n.length&&y((function(t){return[].concat(o(t),o(a.m.chunk(n,f).map(e.getRequest)))}))}}}}},63719:(e,t,n)=>{n.d(t,{h:()=>u});var r=n(32735),i=n(77316);function a(e,t){if(e){if("string"==typeof e)return o(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)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function u(e){var t,n,u=(t=r.useMemo((function(){return i.p.getBuilder()}),[]),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,i,a,o,u=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw i}}return u}}(t,n)||a(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.")}()),l=u[0],c=(0,u[1])(l);return c&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(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.")}()}(c),[Object.assign(Object.assign({},e),{active:!0})]):c}},40618:(e,t,n)=>{n.r(t),n.d(t,{CuratedDashboardWidgetView:()=>I});var r=n(32735),i=n(23481),a=n(20354),o=n(65858),u=n(49935),l=n(75100),c=n(51365),s=n(183),d=n(80889),f=n(31949),m=n(63719),p=n(22902),v=n(79612),h=n(76753),g=n(10671),y=n(58321),b=n(44110),A=n(97816),S=n(10741),w=n(33192),j=n(22490),O=n(1860);const C={partialHeading:"yLlYt"};function P(){return r.createElement("div",{className:"px-3"},r.createElement("div",{className:"partial-loading-background mb-2 ".concat(C.partialHeading)}),r.createElement(O.S,null))}var k=i.T.encloseNamespace("dashboard.dashboardWidget");function I(e){var t,n,i,O=e.widgetId,C=(0,y.U)({locationContext:o.LZ.VideoThumbnail}).commonVideoProps,I=(0,g._)({location:g.i.VideoItem}),E=a.a.useBasicFetch(O&&d._.dashboardWidgetContent(O)),F=a.a.useBasicFetch(f.N.currentUser()),x=null===(t=E.data)||void 0===t?void 0:t.content;(0,A.V)(x),(0,v.M)(h.CG.getDefaultMetadata({title:null===(n=E.data)||void 0===n?void 0:n.name,phraseContext:{phraseHandler:k,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:w.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:w.f.allowIndexing()}));var L=(0,b.i)(),T=(0,p.T)().hasPermissions,N=(0,m.h)({name:null===(i=E.data)||void 0===i?void 0:i.name});return E.data&&(null==x?void 0:x.length)?r.createElement(c.M.Provider,{value:I},r.createElement("div",{className:"px-3"},r.createElement("h1",{className:"h2 mb-2"},E.data.name),r.createElement(u.Oo,{breadcrumbs:N}),r.createElement(l.E4,{videos:x,getVideoAppLink:function(t,n){var r;return j.W.getAppLink(t,Object.assign(Object.assign({},n),{context:s.Q.Widget,contextId:e.widgetId,includeContext:null===(r=F.data)||void 0===r?void 0:r.isAuthenticated}))},hasPermissions:T,presentationAudiences:L.data,getPreviewQuestionsAppLink:function(e){return S.j.getPreviewQuestionsAppLink(e)},commonVideoProps:C}))):r.createElement(P,null)}},58321:(e,t,n)=>{n.d(t,{U:()=>p});var r=n(20354),i=n(16714),a=n(39151),o=n(1666),u=n(31949),l=n(22902),c=n(37802),s=n(22490),d=n(82431),f=n(46390),m=n(27638);function p(e){var t,n,p,v=e||{},h=v.locationContext,g=v.mtv,y=v.flightNamespace,b=v.sharedPlaylist,A=(0,f.G)(),S=A.isPlugin,w=A.params,j=(0,m.u)(h,y),O=j.setFavourite,C=j.canFavourite,P=(0,c.r)(null),k=P.hasTopicDirectories,I=P.isLoadingSettings,E=(0,l.T)(),F=E.hasPermissions,x=E.isLoaded,L=F(i.C.StudentExperience),T=r.a.useBasicFetch(a.L.config()),N=r.a.useBasicFetch(u.N.currentUser()),V=r.a.useBasicFetch((null===(t=N.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(N.data.customerId));return{hasCommonVideoPropsCompleted:!I&&x&&T.hasCompleted&&N.hasCompleted&&(!(null===(n=N.data)||void 0===n?void 0:n.isAuthenticated)||V.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?b&&!(null===(t=N.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:g}):null},isPlugin:S,isPluginPopup:!!(null==w?void 0:w.popup),canFavourite:C,setFavourite:O,imageCdnUrl:null===(p=T.data)||void 0===p?void 0:p.imageCdnUrl,yearGroups:V.data,getClassroomGuideAppLink:s.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:s.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:s.W.getResourceGuidanceAppLink,showNewVideoIndicator:k,companyLogoFallbackUrl:null,hasStudentExperience:L}}}},44110:(e,t,n)=>{n.d(t,{i:()=>o});var r=n(20354),i=n(89454),a=n(86698),o=function(){var e=(0,a.y)({redirectOnError:!0}),t=e.activePresentation,n=e.getFallbackPresentation,o=t||n();return r.a.useBasicFetch(!!o&&i.O.presentationAudiences(o.id))}},97816:(e,t,n)=>{n.d(t,{V:()=>u,l:()=>l});var r=n(1575),i=n(39902),a=n(31908);function o(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))})):[]:[]}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=o(e).map((function(e){return e.id}));(0,i.FN)(n,(function(e){return r.R.videoMixinAssocs(e,t.flightNamespace)}),null)}function l(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,i.SW)({getRequest:function(t){return r.R.videoMixinAssocs(t,e.flightNamespace)}}).fetchItems;return{fetchObjects:function(e){return t(o(e).map((function(e){return e.id})))}}}}}]);
|
|
2
|
+
//# sourceMappingURL=618-33ead82bb3-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/618-33ead82bb3-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/hooks/useBreadcrumbs.ts","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard-widget/partial-loading/partial-dashboard-widget.scss","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard-widget/partial-loading/PartialDashboardWidget.tsx","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard-widget/CuratedDashboardWidgetView.tsx","file:///app/packages/projects/lite/src/shared/hooks/useCommonVideoProps.ts","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst CHUNK_SIZE = 50;\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n itemsArr: T[];\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const chunks = ArrayHelper.chunk<string>(itemIds, CHUNK_SIZE);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n itemsArr,\n items,\n isFetching: responses.isFetching\n };\n}\n\n/**\n * When you need the useBatchFetch() behavior, but your list of objects to hydrate\n * will grow, such as on a scrolling page. useGrowingBatchFetch() will use local state\n * to determine what we've already built a request for and what items are new\n * as to not re-fetch items - Sha\n */\nexport function useGrowingBatchFetch<T>(\n objs: T[],\n getRequest: (items: T[]) => Flight.Request,\n _getKey?: (obj: T) => string\n) {\n const { fetchItems, ...data } = useGrowingBatchFetchFunc({ getRequest, _getKey });\n\n React.useEffect(() => {\n if (!objs.length)\n return;\n\n fetchItems(objs);\n }, [objs?.length]);\n\n return data;\n}\n\ninterface UseGrowingBatchFetchFuncOptions<T> {\n getRequest: (items: T[]) => Flight.Request;\n _getKey?: (obj: T) => string;\n}\n\n/**\n * When you need the useGrowingBatchFetch() behaviour, but need to trigger the\n * fetch manually and update the objects - Nish \n */\nexport function useGrowingBatchFetchFunc<T>(options: UseGrowingBatchFetchFuncOptions<T>) {\n const getKey = options._getKey ?? ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const fetchedItems = React.useRef<Set<string>>(new Set<string>());\n const [ requests, setRequests ] = React.useState<Flight.Request[]>([]);\n\n function fetchItems(objs: T[]) {\n if (!objs?.length)\n return;\n\n const unfetchedItems: T[] = [];\n \n objs.forEach(obj => {\n const key = getKey(obj);\n\n if (fetchedItems.current.has(key))\n return;\n\n unfetchedItems.push(obj);\n fetchedItems.current.add(key);\n });\n \n if (!unfetchedItems.length)\n return;\n \n setRequests(r => ([ ...r, ...ArrayHelper.chunk<T>(unfetchedItems, CHUNK_SIZE).map(options.getRequest) ]));\n }\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [getKey(item)]: item }), {})\n : null;\n\n return {\n hasFirstRequestCompleted: !!responses.responses?.[0]?.hasCompleted,\n itemsArr,\n items,\n isFetching: responses.isFetching,\n fetchItems\n };\n}","import React from 'react';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BreadcrumbService } from 'libs/shared/services/BreadcrumbService';\n\nexport function useBreadcrumbs(current: Breadcrumb): Breadcrumb[] {\n const [ match, useBuilder ] = React.useMemo(() => BreadcrumbService.getBuilder(), []);\n\n const breadcrumbs = useBuilder(match);\n\n if (!breadcrumbs || !current)\n return breadcrumbs;\n\n return [ ...breadcrumbs, { ...current, active: true }];\n}\n\n","// extracted by mini-css-extract-plugin\nexport default {\"partialHeading\":\"yLlYt\"};","import React from 'react';\n\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './partial-dashboard-widget.scss';\n\nexport function PartialDashboardWidget(): JSX.Element {\n return (\n <div className='px-3'>\n <div className={`partial-loading-background mb-2 ${styles.partialHeading}`} />\n <PartialVideoList />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CuratedWidget, CuratedWidgetData, CurrentUser, Video } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { PartialDashboardWidget } from './partial-loading/PartialDashboardWidget';\n\nconst namespace = 'dashboard.dashboardWidget';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CuratedDashboardWidgetViewQueryParams {\n widgetId?: string;\n}\n\nexport function CuratedDashboardWidgetView(props: CuratedDashboardWidgetViewQueryParams): JSX.Element {\n const { widgetId } = props;\n\n const { commonVideoProps } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n \n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n\n const widget = Flight.useBasicFetch<CuratedWidget<CuratedWidgetData, Video[]>>(\n widgetId && DashboardRequests.dashboardWidgetContent(widgetId)\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const videos = widget.data?.content;\n useVideoMixin(videos);\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: widget.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: SeoHelper.allowIndexing()\n }));\n\n const audiences = usePresentationAudiences();\n const { hasPermissions } = usePermissions();\n\n const breadcrumbs = useBreadcrumbs({ name: widget.data?.name });\n\n if (!widget.data || !videos?.length)\n return <PartialDashboardWidget />;\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='px-3'>\n <h1 className='h2 mb-2'>{widget.data.name}</h1>\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n <VideoList\n videos={videos}\n getVideoAppLink={(video, opts) => VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n context: RelatedVideosContext.Widget,\n contextId: props.widgetId,\n includeContext: currentUser.data?.isAuthenticated\n })}\n hasPermissions={hasPermissions}\n presentationAudiences={audiences.data}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n commonVideoProps={commonVideoProps}\n />\n </div>\n </VideoActionsContext.Provider>\n );\n}","import { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nimport { usePluginHelper } from './use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from './useLiteFavourites';\n\ninterface UseCommonVideoPropsResult {\n hasCommonVideoPropsCompleted: boolean;\n commonVideoProps: CommonVideoProps;\n}\n\ninterface UseCommonVideoPropsOptions {\n locationContext: LocationContext,\n mtv?: boolean;\n flightNamespace?: string;\n sharedPlaylist?: boolean;\n}\n\nexport function useCommonVideoProps(options: UseCommonVideoPropsOptions): UseCommonVideoPropsResult {\n const { locationContext, mtv, flightNamespace, sharedPlaylist } = options || {};\n\n const { isPlugin, params } = usePluginHelper();\n const { setFavourite, canFavourite } = useLiteFavourites(locationContext, flightNamespace);\n const { hasTopicDirectories, isLoadingSettings } = useSettings(null);\n const { hasPermissions, isLoaded: hasLoadedPermissions } = usePermissions();\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n function getSubTextAppLink(video: VideoTypes): Core.AppLink {\n if (!('series' in video))\n return null;\n\n /**\n * We do not allow navigating to series on shared playlists when the user is not signed in\n * because most series are customer created and will be empty for public users\n * \n * We do not have to do this for shared series, because all the series links are self referencing\n * - Sha\n */\n if (sharedPlaylist && !currentUser.data?.isAuthenticated)\n return null;\n \n return SeriesAppLinkHelper.getSeriesAppLink(video.series, { mtv });\n }\n\n const hasCommonVideoPropsCompleted = (\n !isLoadingSettings &&\n hasLoadedPermissions &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!currentUser.data?.isAuthenticated || yearGroups.hasCompleted)\n );\n\n return {\n hasCommonVideoPropsCompleted,\n commonVideoProps: {\n subTextType: 'series',\n getSubTextAppLink,\n isPlugin,\n isPluginPopup: !!params?.popup,\n canFavourite,\n setFavourite,\n imageCdnUrl: config.data?.imageCdnUrl,\n yearGroups: yearGroups.data,\n getClassroomGuideAppLink: VideoAppLinkHelper.getClassroomGuideAppLink,\n getInteractiveGuidanceAppLink: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n getResourceGuidanceAppLink: VideoAppLinkHelper.getResourceGuidanceAppLink,\n showNewVideoIndicator: hasTopicDirectories,\n companyLogoFallbackUrl: null,\n hasStudentExperience\n }\n };\n}","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","import { Flight } from 'libs/common/react/index';\n\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useGrowingBatchFetch, useGrowingBatchFetchFunc } from 'libs/shared/hooks/UseBatchFetch';\nimport { Clip, ClipCollection, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}) {\n const videoIds = getValidObjects(objects).map(v => v.id);\n\n useGrowingBatchFetch(\n videoIds,\n ids => VideoRequests.videoMixinAssocs(ids, options.flightNamespace),\n null\n );\n}\n\nexport function useVideoMixinFunc(options: VideoMixinOptions = {}) {\n function getRequest(ids: string[]): Flight.Request {\n return VideoRequests.videoMixinAssocs(ids, options.flightNamespace);\n }\n \n function fetchObjects(items: Types) {\n return fetchItems(getValidObjects(items).map(v => v.id));\n }\n\n const { fetchItems } = useGrowingBatchFetchFunc({ getRequest });\n\n return { fetchObjects };\n}"],"names":["CHUNK_SIZE","useBatchFetch","itemIds","getRequest","requests","map","chunk","responses","itemsArr","data","items","length","reduce","acc","item","id","isFetching","useGrowingBatchFetch","objs","_getKey","useGrowingBatchFetchFunc","fetchItems","options","getKey","obj","fetchedItems","Set","setRequests","hasFirstRequestCompleted","hasCompleted","unfetchedItems","forEach","key","current","has","push","add","r","useBreadcrumbs","match","breadcrumbs","useBuilder","active","PartialDashboardWidget","className","PartialVideoList","getPhrase","LanguageService","CuratedDashboardWidgetView","props","widgetId","commonVideoProps","useCommonVideoProps","locationContext","videoActions","useVideoActions","location","widget","DashboardRequests","currentUser","UserRequests","videos","content","useVideoMixin","useSetPageMetadata","PageMetadataHelper","title","name","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","stripPresentationSlug","allowIndexing","audiences","usePresentationAudiences","hasPermissions","usePermissions","VideoActionsContext","value","Breadcrumbs","VideoList","getVideoAppLink","video","opts","VideoAppLinkHelper","context","RelatedVideosContext","contextId","includeContext","isAuthenticated","presentationAudiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","mtv","flightNamespace","sharedPlaylist","isPlugin","params","u","setFavourite","canFavourite","hasTopicDirectories","isLoadingSettings","hasLoadedPermissions","isLoaded","hasStudentExperience","config","yearGroups","customerId","hasCommonVideoPropsCompleted","subTextType","getSubTextAppLink","series","isPluginPopup","popup","imageCdnUrl","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","showNewVideoIndicator","companyLogoFallbackUrl","redirectOnError","activePresentation","getFallbackPresentation","presentation","getValidObjects","objects","Array","isArray","filter","o","videoIds","v","ids","useVideoMixinFunc","fetchObjects"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6282],{41021:(e,a,t)=>{t.r(a),t.d(a,{PlaySharedClipView:()=>g});var i=t(32735),d=t(20354),o=t(65858),s=t(16714),r=t(43012),c=t(20768),n=t(31949),l=t(1575),u=t(63719),v=t(26304),h=t(22902),p=t(15311),m=t(79612),I=t(37802),C=t(76753),P=t(58321),V=t(7179),b=t(49948),w=t(36873),y=t(44110),T=t(35014),_=t(97816),f=t(91442),k=t(80053);function g(e){var a,t,g,q,F,x,B,M,j=(0,p.r)().hasProduct,A=(0,P.U)({locationContext:o.LZ.VideoThumbnail}),U=A.commonVideoProps,O=A.hasCommonVideoPropsCompleted,S=(0,h.T)().hasPermissions,D=(0,I.r)(null),E=D.hasTopicDirectories,N=D.hasPlayPageTranscript,G=(0,f.a)(),L=(0,T.I)(),R=d.a.useBasicFetch(n.N.currentUser()),Z=d.a.useBasicFetch(r.e.sharedClip(e.objectId,e.shareId)),z=d.a.useBasicFetch(!!(null===(a=Z.data)||void 0===a?void 0:a._parentVideo)&&l.R.video(Z.data._parentVideo.id)),H=d.a.useBasicFetch(!!(null===(g=null===(t=Z.data)||void 0===t?void 0:t._parentVideo)||void 0===g?void 0:g.id)&&L.canViewClips&&r.e.videoClips(Z.data._parentVideo.id)),J=d.a.useBasicFetch(L.canViewInteractives&&c.b.videoInteractives(e.objectId)),K=(0,w.k)({video:z.data,context:e.queryParams.context,contextId:e.queryParams.contextId,moviesAndTv:e.queryParams.mtv,currentUser:R.data}),Q=(0,y.i)(),W=(0,b.l)(e.objectId);(0,m.M)(C.CG.getClipMetadata({content:Z.data})),(0,_.V)(null!==(q=K.videos)&&void 0!==q?q:[]),(0,v.b)(Z),(0,V.P)({id:e.objectId,app:"clips",shareId:e.shareId});var X=(0,u.h)({name:null===(F=Z.data)||void 0===F?void 0:F.name});return Z.data&&R.hasCompleted&&W.hasCompleted&&O?i.createElement(k.N,{shareId:e.shareId,clip:Z.data,clips:null===(x=H.data)||void 0===x?void 0:x.data,interactives:null===(B=J.data)||void 0===B?void 0:B.data,originalVideo:z.data,currentUser:R.data,relatedVideos:K,hasProduct:j,queryParams:e.queryParams,audiences:Q.data,canManageVideoAccess:S(s.C.ManageVideoAccess),pointsOfInterest:null==W?void 0:W.items,featureAccess:L,tableOfContentsId:null===(M=e.queryParams)||void 0===M?void 0:M.tocId,shouldShowSideTableOfContents:G,breadcrumbs:X,commonVideoProps:U,hasTopicDirectories:E,hasTheatreMode:N}):i.createElement(i.Fragment,null)}}}]);
|
|
2
|
-
//# sourceMappingURL=6282-
|
|
2
|
+
//# sourceMappingURL=6282-2e7901a54a-lite.chunk.js.map
|
package/dist/scripts/{6282-62e8305b89-lite.chunk.js.map → 6282-2e7901a54a-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6282-
|
|
1
|
+
{"version":3,"file":"scripts/6282-2e7901a54a-lite.chunk.js","mappings":"saAgCM,SAAUA,EAAmBC,G,oBACzBC,GAAe,SAAfA,WAER,GAGI,OAAoB,CAAEC,gBAAiB,sBAFzCC,EAAgB,EAAhBA,iBACAC,EAA4B,EAA5BA,6BAEMC,GAAmB,SAAnBA,eACR,GAAuD,OAAY,MAA3DC,EAAmB,EAAnBA,oBAAqBC,EAAqB,EAArBA,sBAEvBC,GAAgC,SAEhCC,GAAgB,SAEhBC,EAAc,kBAAkC,mBAChDC,EAAO,kBAA2B,eAAwBX,EAAMY,SAAUZ,EAAMa,UAChFC,EAAQ,qBAAuC,QAAT,EAAAH,EAAKI,YAAI,eAAEC,eACrD,UAAoBL,EAAKI,KAAKC,aAAaC,KACvCC,EAAa,qBACQ,QAAvB,EAAS,QAAT,EAAAP,EAAKI,YAAI,eAAEC,oBAAY,eAAEC,KAAMR,EAAcU,cAAgB,eAAwBR,EAAKI,KAAKC,aAAaC,KAE1GG,EAAe,kBACnBX,EAAcY,qBAAuB,sBAAsCrB,EAAMY,WAG7EU,GAAgB,OAAoB,CACxCR,MAAOA,EAAMC,KACbQ,QAASvB,EAAMwB,YAAYD,QAC3BE,UAAWzB,EAAMwB,YAAYC,UAC7BC,YAAa1B,EAAMwB,YAAYG,IAC/BjB,YAAaA,EAAYK,OAErBa,GAAY,SACZC,GAAmB,OAAyB7B,EAAMY,WAExD,OAAmB,qBAAmC,CAAEkB,QAASnB,EAAKI,SAEtE,OAAkC,QAApB,EAAAO,EAAcS,cAAM,QAAI,KACtC,OAAsBpB,IACtB,OAAa,CAAEM,GAAIjB,EAAMY,SAAUoB,IAAK,QAASnB,QAASb,EAAMa,UAEhE,IAAMoB,GAAc,OAAe,CAAEC,KAAe,QAAT,EAAAvB,EAAKI,YAAI,eAAEmB,OAStD,OANEvB,EAAKI,MACLL,EAAYyB,cACZN,EAAiBM,cACjB/B,EAOA,gBAAC,IAAQ,CACPS,QAASb,EAAMa,QACfF,KAAMA,EAAKI,KACXqB,MAAsB,QAAf,EAAAlB,EAAWH,YAAI,eAAEA,KACxBK,aAA+B,QAAjB,EAAAA,EAAaL,YAAI,eAAEA,KACjCsB,cAAevB,EAAMC,KACrBL,YAAaA,EAAYK,KACzBO,cAAeA,EACfrB,WAAYA,EACZuB,YAAaxB,EAAMwB,YACnBI,UAAWA,EAAUb,KACrBuB,qBAAsBjC,EAAe,uBACrCwB,iBAAkBA,aAAgB,EAAhBA,EAAkBU,MACpC9B,cAAeA,EACf+B,kBAAoC,QAAjB,EAAAxC,EAAMwB,mBAAW,eAAEiB,MACtCjC,8BAA+BA,EAC/ByB,YAAaA,EACb9B,iBAAkBA,EAClBG,oBAAqBA,EACrBoC,eAAgBnC,IAtBX,gCAyBX,C","sources":["file:///app/packages/projects/lite/src/apps/share/views/play-shared-clip/PlaySharedClipView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Clip, ClipCollection, CurrentUser, InteractiveCollection, Video } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\nimport { PlayClip } from 'shared/views/play-clip/components/play-clip/PlayClip';\n\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nexport function PlaySharedClipView(props: ShareLinkViewProps): React.ReactElement {\n const { hasProduct } = useProducts();\n\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n const { hasPermissions } = usePermissions();\n const { hasTopicDirectories, hasPlayPageTranscript } = useSettings(null);\n\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const featureAccess = useVideoFeatureAccess();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.sharedClip(props.objectId, props.shareId));\n const video = Flight.useBasicFetch<Video>(!!clip.data?._parentVideo &&\n VideoRequests.video(clip.data._parentVideo.id));\n const childClips = Flight.useBasicFetch<ClipCollection>(\n !!clip.data?._parentVideo?.id && featureAccess.canViewClips && ClipRequests.videoClips(clip.data._parentVideo.id)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.objectId)\n );\n \n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n const audiences = usePresentationAudiences();\n const pointsOfInterest = useFetchPointsOfInterest(props.objectId);\n\n useSetPageMetadata(PageMetadataHelper.getClipMetadata({ content: clip.data }));\n\n useVideoMixin(relatedVideos.videos ?? []);\n useCannotConsumeError(clip);\n useDeepLinks({ id: props.objectId, app: 'clips', shareId: props.shareId });\n\n const breadcrumbs = useBreadcrumbs({ name: clip.data?.name });\n\n const hasLoaded = (\n clip.data &&\n currentUser.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <PlayClip\n shareId={props.shareId}\n clip={clip.data}\n clips={childClips.data?.data}\n interactives={interactives.data?.data}\n originalVideo={video.data}\n currentUser={currentUser.data}\n relatedVideos={relatedVideos}\n hasProduct={hasProduct}\n queryParams={props.queryParams}\n audiences={audiences.data}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n pointsOfInterest={pointsOfInterest?.items}\n featureAccess={featureAccess}\n tableOfContentsId={props.queryParams?.tocId}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n hasTopicDirectories={hasTopicDirectories}\n hasTheatreMode={hasPlayPageTranscript}\n />\n );\n}"],"names":["PlaySharedClipView","props","hasProduct","locationContext","commonVideoProps","hasCommonVideoPropsCompleted","hasPermissions","hasTopicDirectories","hasPlayPageTranscript","shouldShowSideTableOfContents","featureAccess","currentUser","clip","objectId","shareId","video","data","_parentVideo","id","childClips","canViewClips","interactives","canViewInteractives","relatedVideos","context","queryParams","contextId","moviesAndTv","mtv","audiences","pointsOfInterest","content","videos","app","breadcrumbs","name","hasCompleted","clips","originalVideo","canManageVideoAccess","items","tableOfContentsId","tocId","hasTheatreMode"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6379],{71553:(e,t,a)=>{a.d(t,{I:()=>c});var n=a(99940),r=a(62875);function i(e,t){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:{start:t.start,end:t.end},userIds:t.userId,classroomsAndGroups:t.groupId}}var c={interactiveResultSet:function(e,t,a,c,s,l,o,u){return{url:s?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(t):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(t),key:(0,r.H)("interactive:result:set:".concat(e,":").concat(t),c),data:i(a,c),type:n.k.POST,normalize:!1,formatData:function(e){return Object.assign(Object.assign({},e),{students:e.students.map((function(e){return e.name&&e.profileId?Object.assign(Object.assign({},e),{publicUser:{profileId:e.profileId,name:e.name}}):e}))})},success:l,error:o,always:u}},mark:function(e,t,a,r,i,c,s){return{url:"/api/domain/v1/analytics/answers/".concat(a),key:"mark:answer:".concat(a,":").concat(r.resultId),type:n.k.PUT,data:r,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:i,error:c,always:s}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:n.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"/api/domain/v3/analytics/interactives/report",key:"interactive:results:report",data:e,type:n.k.POST,normalize:!1}}}},49863:(e,t,a)=>{a.d(t,{m9:()=>E,Ad:()=>b,Kh:()=>S});var n=a(32735),r=a(23481),i=a(75896),c=a(97408),s=a(18995),l=a(12528),o=a(83914),u=a(36532),d=a(4594),m=a(36511),v=a(35223),p=a(64818);const f={avatarContainer:"ByxQa",sm:"EgJ0v",sharedAvatar:"cW0NT"};var h=r.T.encloseNamespace("reportsShare.sharedToAvatarList");function g(e){var t=i.m.countBy(e,"typeId"),a=t[d.E.User],n=t[d.E.Classroom],r=t[d.E.ClassroomGroup];return a&&n&&r?h("classroomsGroupsAndUsers",{userCount:a,classroomCount:n,groupCount:r}):a&&n?h("classroomsAndUsers",{userCount:a,classroomCount:n}):a&&r?h("groupsAndUsers",{userCount:a,groupCount:r}):n&&r?h("classroomsAndGroups",{classroomCount:n,groupCount:r}):a?h("users",{userCount:a}):n?h("classrooms",{classroomCount:n}):r?h("groups",{groupCount:r}):void 0}function y(e){var t,a,r,i,s,h=(null===(t=e.item)||void 0===t?void 0:t.typeId)===d.E.User&&e.item,g=(null===(a=e.item)||void 0===a?void 0:a.typeId)===d.E.Classroom&&e.item,y=(null===(r=e.item)||void 0===r?void 0:r.typeId)===d.E.ClassroomGroup&&e.item,E="d-flex justify-content-center align-items-center text-white rounded-circle h-100 w-100";return n.createElement(n.Fragment,null,!!h&&n.createElement(u.u,{title:"".concat(h.name," ").concat(h.surname),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement(c.q,{imageUrl:null===(i=h.avatar)||void 0===i?void 0:i.url,imageCdnUrl:e.imageCdnUrl,initials:p.l.getInitials(h.name,h.surname),extraClasses:f.sharedAvatar})),!!g&&n.createElement(u.u,{title:g.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:E},n.createElement(l.f,{svgName:v.vn.Classrooms,svgSize:o.S.Large,variant:"teal"}))),!!y&&n.createElement(u.u,{title:y.name,spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:E},n.createElement(l.f,{svgName:v.vn.Group,variant:(0,m.I)(null===(s=y.metadata)||void 0===s?void 0:s.colour)}))))}function E(e){return n.createElement("div",{className:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:"")},n.createElement(u.u,{title:h("anonymous"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100"},n.createElement(o.x,{svgName:v.vn.Anonymous,size:"sm"===e.avatarSize?o.S.Small:null})))}function b(e){return n.createElement("div",{className:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:"")},n.createElement(u.u,{title:e.text||h("sharedLink"),spanHack:!0,spanHackClassName:"bg-light text-dark d-flex justify-content-center align-items-center rounded-circle h-100 w-100 ".concat(e.className||"")},n.createElement(o.x,{svgName:v.vn.Link,size:"sm"===e.avatarSize?o.S.Small:null})))}function S(e){return n.createElement(s.e,Object.assign({},e,{items:e.recipients,avatarItem:y,avatarContainerClassname:"".concat(f.avatarContainer," ").concat("sm"===e.avatarSize?f.sm:""),getHiddenTooltip:g,hasShareLink:e.hasShareLink,shareLinkText:e.shareLinkText}))}S.defaultProps={maxAvatars:5}},65853:(e,t,a)=>{a.d(t,{R:()=>m});var n=a(23481),r=a(110),i=a(4594),c=a(49080),s=a(26361),l=a(35223),o=a(31908);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var d=n.T.encloseNamespace("share.shareLinkInfo"),m={getPrivateIconAndText:function(e){var t=e.entityTypeId,a=e.privacy,n=e.hasStudentExp,r=e.entity,c=e.yearGroups;if(t===i.E.Topic||t===i.E.Series)return{icon:l.vn.VisibleOn,text:d(n?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(a))switch(a.privacy){case"public":return{icon:l.vn.VisibleOn,text:d("publicDescription")};case"protected":return a.overrideRestrictions?{icon:l.vn.VisibleOn,text:d("clickViewOnly")}:{icon:l.vn.Lock,text:m.getRespectRatingText(r,c,n)};case"just_my_customer":return a.overrideRestrictions?{icon:l.vn.Lock,text:d(n?"justMySchoolTeachers":"justMySchoolDescription")}:{icon:l.vn.Lock,text:m.getRespectRatingText(r,c,n)};case"restricted":case"private":return{icon:l.vn.Lock,text:d("privateDescription")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,a=e.isPasswordProtected,n=e.status;if(!t&&!a)return m.getPrivateIconAndText(e);if(!t)return{icon:l.vn.Lock,text:d("password")};var i=r.O.isToday(t),s=r.O.diffBetween(t,new Date,"day");if(!a){var o=i?d("expiryToday"):d("expiry",{days:s});return n===c.F.Expired&&(o=d("expired")),{icon:l.vn.Timer,text:o}}var u=i?d("passwordExpiryToday"):d("passwordExpiry",{days:s});return n===c.F.Expired&&(u=d("passwordExpired")),{icon:l.vn.Lock,text:u}},getRespectRatingText:function(e,t,a){var n;if(!e||!t)return null;if(a)return d("justMySchoolTeachers");if(!o.M.isVideoType(e))return d("collectionRating");var r=s.l.getWeightedRestriction(null===(n=e._restrictions)||void 0===n?void 0:n.value);if(r&&!r.yearGroup)return d("onlyAdmins");var i,c,l,m=o.M.getRating(e),v=function(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=function(e,t){if(e){if("string"==typeof e)return u(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,s=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return c=e.done,e},e:function(e){s=!0,i=e},f:function(){try{c||null==a.return||a.return()}finally{if(s)throw i}}}}(t);try{for(v.s();!(l=v.n()).done;){var p=l.value;(!i||p.value>i.value)&&(i=p),r&&p.value<=r.yearGroup||m&&p.rating.value<m.value||(!c||p.value<c.value)&&(c=p)}}catch(e){v.e(e)}finally{v.f()}return c?1===t.length?d("clickViewOnly"):c.value===i.value?d("maxYearGroup",{yearGroup:i.name}):d("yearGroupRange",{yearGroup:c.name}):d("onlyStaff")}}},18995:(e,t,a)=>{a.d(t,{e:()=>l});var n=a(32735),r=a(23481),i=a(49863),c=a(36532),s=r.T.encloseNamespace("shared.avatarList");function l(e){var t=e.items.length>e.maxAvatars?e.items.slice(0,e.maxAvatars-1):e.items,a=e.items.length>t.length?e.items.slice(e.maxAvatars-1):[],r=e.avatarItem,l=a.length,o="sm"===e.avatarSize?4:8;function u(t){return{transform:"translateX(".concat((e.hasShareLink?t+1:t)*-o,"px)"),zIndex:e.maxAvatars-t}}return 0===t.length&&0===a.length?n.createElement(n.Fragment,null):n.createElement("div",{className:"d-flex",style:{marginRight:"-".concat((t.length-1+(a.length?1:0)+(e.hasShareLink?1:0))*o,"px")}},e.hasShareLink&&n.createElement("div",{style:{zIndex:e.maxAvatars+1}},n.createElement(i.Ad,{text:e.shareLinkText,avatarSize:e.avatarSize,className:"bg-dark text-white"})),t.map((function(t,a){return n.createElement("div",{className:"".concat(e.avatarContainerClassname||""),key:t.id,style:u(a)},n.createElement(r,{item:t,imageCdnUrl:e.imageCdnUrl,index:a,maxAvatars:e.maxAvatars}))})),!!a.length&&n.createElement("div",{className:"".concat(e.avatarContainerClassname||""," bg-white rounded-circle"),style:{transform:"translateX(".concat(t.length*-o,"px)"),zIndex:e.maxAvatars-t.length}},n.createElement(c.u,{title:e.getHiddenTooltip?e.getHiddenTooltip(a):e.roleToDisplay?s("staff"===e.roleToDisplay?"staff":"student",{count:l,smartCount:l}):s("users",{count:l,smartCount:l}),spanHack:!0,spanHackClassName:"h-100 w-100"},n.createElement("div",{className:"d-flex justify-content-center align-items-center border border-dark rounded-circle h-100 w-100 ".concat(e.numberClassname||"")},"+".concat(a.length)))))}l.defaultProps={maxAvatars:5}},39902:(e,t,a)=>{a.d(t,{FN:()=>p,SW:()=>f,fh:()=>v});var n=a(32735),r=a(20354),i=a(75896);function c(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(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 s(e,t){if(e){if("string"==typeof e)return l(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function u(e,t,a){return(t=function(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=o(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var d=function(e,t){var a={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(a[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(a[n[r]]=e[n[r]])}return a},m=50;function v(e,t){var a=i.m.chunk(e,m).map((function(e){return t(i.m.uniq(e))})),n=r.a.useBasicFetchAll(a),c=i.m.flatten(n.data),s=n.data.length?c.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},t.id,t))}),{}):null;return{itemsArr:c,items:s,isFetching:n.isFetching}}function p(e,t,a){var r=f({getRequest:t,_getKey:a}),i=r.fetchItems,c=d(r,["fetchItems"]);return n.useEffect((function(){e.length&&i(e)}),[null==e?void 0:e.length]),c}function f(e){var t,a,l,d,v,p=null!==(t=e._getKey)&&void 0!==t?t:function(e){return"object"===o(e)?e.id:e},f=n.useRef(new Set),h=(d=n.useState([]),v=2,function(e){if(Array.isArray(e))return e}(d)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,c,s=[],l=!0,o=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(e){o=!0,r=e}finally{try{if(!l&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(o)throw r}}return s}}(d,v)||s(d,v)||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.")}()),g=h[0],y=h[1],E=r.a.useBasicFetchAll(g),b=i.m.flatten(E.data),S=E.data.length?b.reduce((function(e,t){return Object.assign(Object.assign({},e),u({},p(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(l=null===(a=E.responses)||void 0===a?void 0:a[0])||void 0===l?void 0:l.hasCompleted),itemsArr:b,items:S,isFetching:E.isFetching,fetchItems:function(t){if(null==t?void 0:t.length){var a=[];t.forEach((function(e){var t=p(e);f.current.has(t)||(a.push(e),f.current.add(t))})),a.length&&y((function(t){return[].concat(c(t),c(i.m.chunk(a,m).map(e.getRequest)))}))}}}}},62875:(e,t,a)=>{function n(e,t,a){var n="".concat(e,":").concat(t.start,":").concat(t.end),r=Array.isArray(t.userId)?t.userId.sort().join(":"):t.userId,i=Array.isArray(t.groupId)?t.groupId.sort().join(":"):t.groupId;return r&&(n+=":".concat(r)),i&&(n+=":".concat(i)),a&&(n+=":".concat(a)),n}a.d(t,{H:()=>n})},36511:(e,t,a)=>{a.d(t,{I:()=>r});var n=a(38129);function r(e){switch(e){case n.R.Pink:return"pink";case n.R.Orange:return"orange";case n.R.Green:return"green";case n.R.Blue:return"blue";case n.R.Purple:return"purple";case n.R.Indigo:return"indigo";default:return"pink"}}},80179:(e,t,a)=>{a.r(t),a.d(t,{SharedByMeView:()=>de});var n=a(32735),r=a(81886),i=a(23481),c=a(97958),s=i.T.encloseNamespace("share.sharedByMeEmptyState");function l(e){return n.createElement(c.u,null,n.createElement(c.u.Image,{src:e.imageUrl,size:"small"}),n.createElement(c.u.Heading,null,s(e.useInteractiveCopy?"interactivesHeading":"genericHeading")),n.createElement(c.u.Info,null,s(e.useInteractiveCopy?"interactivesInfo":"genericInfo")),!!e.appLink&&n.createElement(c.u.Cta,{appLink:e.appLink,text:s("cta")}))}var o=a(95834),u=a(6748),d=a(82602),m=a(75896),v=a(110),p=a(65858),f=a(83914),h=a(36532),g=a(49080),y=a(85063),E=a(35223);const b={indicatorContainer:"T6YAv",indicator:"_MRHG"};var S=i.T.encloseNamespace("share.shareStatusIndicator");function C(e){if(e.type===y.y.DirectShare)return S("active");switch(e.status){case g.F.Active:return S("active");case g.F.Expired:return S("expired")}}function x(e){if(e.type===y.y.DirectShare)return"bg-success";switch(e.status){case g.F.Active:return"bg-success";case g.F.Expired:return"bg-gray-500"}}function k(e){var t;return e.share.type!==y.y.DirectShare||(null===(t=e.share.recipients)||void 0===t?void 0:t.length)?e.share.type===y.y.ShareLink&&e.share.isPasswordProtected?n.createElement(h.u,{title:S("passwordProtected"),spanHack:!0},n.createElement(f.x,{svgName:E.vn.Lock,size:f.S.Small})):n.createElement(h.u,{title:C(e.share),spanHack:!0,spanHackClassName:b.indicatorContainer},n.createElement("div",{className:"".concat(b.indicator," ").concat(x(e.share))})):n.createElement(n.Fragment,null)}var w=a(9806),I=a(49863),A=a(31754),N=a(65853),O=a(64249),j=a(83657),T=a(15611),R=a(83345),L=a(26339),M=a(31908);function F(e){return F="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},F(e)}var H="share.sharedByMeTable",P=i.T.encloseNamespace(H);function U(e){var t;if(e.type===y.y.ShareLink||!(null===(t=null==e?void 0:e.recipients)||void 0===t?void 0:t.length))return e.dateCreated;var a=e.recipients.map((function(e){return e.dateShared}));return a.sort((function(e,t){return v.O.isSame(e,t)?0:v.O.isAfter(e,t)?1:-2})),a.length?m.m.last(a):""}function D(e){var t=e.index,a=e.dateHeading,r=e.getObjectAppLink,i=e.getObjectActions,c=e.imageCdnUrl,s=e.showStatus,l=e.showViewCount,o=e.breakpoints,u=e.yearGroups,m=o&&(o.xs||o.sm),v=[{Header:s?"":a,accessor:"sharedObject",id:"image",Cell:function(e){var t=e.value;return n.createElement("div",{className:"w-100"},n.createElement(w.k,{object:t,appLink:r(t),showVideoMetadata:!0,locationContext:p.LZ.SharedByMe}))},minWidth:140,maxWidth:30},{accessor:"sharedObject",id:"name",Cell:function(e){var t,a=e.value;return a.name?M.M.isVideoType(a)&&!(null===(t=M.M.getCanBeConsumed(a))||void 0===t?void 0:t.canNavigate)?n.createElement("span",{className:"clamp-2"},a.name):n.createElement("div",{className:"clamp-2"},M.M.isVideoType(a)&&n.createElement(L.$,{type:"series",video:a,appLink:"series"in a&&a.series?r(a.series):null,analyticsOptions:{location:p.LZ.Insights}}),n.createElement(T.F,{appLink:r(a),analyticsData:{id:a.id,name:a.name},analyticsOptions:{entity:O.I.getAnalyticsEntity(a.type),actionType:p.Vw.Click,location:p.LZ.SharedByMe}},a.name)):n.createElement("span",null,n.createElement(R.x,{namespace:H,phrase:"videoUnavailable"}))},width:60},{Header:0===t?P("sharedTo"):"",accessor:"sharedToData",Cell:function(e){var t=e.value,a=t.share,r=t.sharedObject,i=t.recipients;if(!i){var s=a.type===y.y.ShareLink&&N.R.getIconAndText({entity:r,entityTypeId:r.typeId,hasStudentExp:!1,isPasswordProtected:a.isPasswordProtected,linkExpireDate:a.linkExpireDate,privacy:{privacy:a.privacy,overrideRestrictions:a.overrideRestrictions},status:a.status,yearGroups:null!=u?u:[]});return n.createElement(I.Ad,{text:null==s?void 0:s.text})}return(null==i?void 0:i.length)?n.createElement(I.Kh,{recipients:i,imageCdnUrl:c,maxAvatars:m?1:2}):n.createElement(I.m9,null)},width:40},!m&&{Header:0===t?P("shared"):"",id:"dateShared",accessor:function(e){return(0,d.WU)(e.dateShared)},width:40},{accessor:"sharedObject",id:"actions",Cell:function(e){var t=e.value;return n.createElement(j.e,{actions:i(t),className:"w-100 justify-content-end pe-2"})},width:20}],f={Header:a,accessor:"share",id:"status",Cell:function(e){var t=e.value;return n.createElement(k,{share:t})},width:5},h={Header:P("views"),accessor:"viewCount",width:30};return s&&v.splice(0,0,f),l&&v.splice(v.length-1,0,h),v.filter(Boolean)}function B(e){var t,a,r,i,c,s,l,d,m=(t=e.sentShares,a=e.sharedObjects,r=e.shareRecipients,i=!!e.groupByDateShared,c=[],t.forEach((function(e){var t,n,i=null==a?void 0:a[e.objectId],s=null;e.type===y.y.DirectShare&&(s=[],null===(t=e.recipients)||void 0===t||t.forEach((function(e){var t=null==r?void 0:r[e.id];t&&s.push(t)}))),i&&c.push({share:e,sharedObject:i,sharedToData:{share:e,sharedObject:i,recipients:s},dateShared:U(e),viewCount:null!==(n=e.viewCount)&&void 0!==n?n:0})})),i?A.x.groupByDateShared(c):(s={},l=P("title"),d=c,(l=function(e){var t=function(e){if("object"!=F(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=F(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==F(t)?t:t+""}(l))in s?Object.defineProperty(s,l,{value:d,enumerable:!0,configurable:!0,writable:!0}):s[l]=d,s));return n.createElement(n.Fragment,null,Object.keys(m).map((function(t,a){return n.createElement(u.i,{key:a,columns:D({index:a,dateHeading:t,getObjectAppLink:e.getObjectAppLink,getObjectActions:e.getObjectActions,imageCdnUrl:e.imageCdnUrl,showStatus:e.showStatus,showViewCount:e.showViewCount,breakpoints:e.breakpoints,yearGroups:e.yearGroups}),data:m[t],theme:o.J})})))}var G=a(87801),z=a(16714),V=a(79967),_=a(22902),W=a(79612),K=a(37802),q=a(99742),X=a(14070),Z=a(97291),Y=a(64208),$=a(86099),J=a(2523);const Q={imageColumn:"uIOaA",nameColumn:"Nta2B",sharedToColumn:"XTJBC",dateSharedColumn:"HdARK",actionsColumn:"DXyZw",heading:"XZ6o7",image:"MolfU",name:"MM43m",avatar:"EboYM",date:"by_XM",actions:"_S2M_"};function ee(){return n.createElement("div",{className:"d-flex striped-row rounded"},n.createElement("div",{className:"d-flex align-items-center justify-content-center p-2 ".concat(Q.imageColumn)},n.createElement("div",{className:"partial-loading-background rounded w-100 ".concat(Q.image)})),n.createElement("div",{className:"d-flex align-items-center p-2 ".concat(Q.nameColumn)},n.createElement("div",{className:"partial-loading-background w-75 ".concat(Q.name)})),n.createElement("div",{className:"d-flex align-items-center p-2 ".concat(Q.sharedToColumn)},n.createElement("div",{className:"partial-loading-background ".concat(Q.avatar)})),n.createElement("div",{className:"d-none d-md-flex align-items-center p-2 ".concat(Q.dateSharedColumn)},n.createElement("div",{className:"partial-loading-background ".concat(Q.date)})),n.createElement("div",{className:"d-flex align-items-center justify-content-end p-2 ".concat(Q.actionsColumn)},n.createElement("div",{className:"partial-loading-background rounded me-2 ".concat(Q.actions)})))}function te(e){return n.createElement("div",{className:"d-flex mb-1"},n.createElement("div",{className:"".concat(Q.imageColumn," p-2")},n.createElement("div",{className:"partial-loading-background ".concat(Q.heading)})),n.createElement("div",{className:"".concat(Q.nameColumn," p-2")}," "),n.createElement("div",{className:"".concat(Q.sharedToColumn," p-2")},e.fullHeader?n.createElement("div",{className:"partial-loading-background ".concat(Q.heading)}):n.createElement(n.Fragment,null," ")),n.createElement("div",{className:"".concat(Q.dateSharedColumn," p-2 d-none d-md-flex")},e.fullHeader?n.createElement("div",{className:"partial-loading-background ".concat(Q.heading)}):n.createElement(n.Fragment,null," ")),n.createElement("div",{className:"".concat(Q.actionsColumn," p-2")}," "))}function ae(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"mb-3"},n.createElement(te,{fullHeader:!0}),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(ee,null),n.createElement(ee,null),n.createElement(ee,null))),n.createElement("div",{className:"mb-3"},n.createElement(te,null),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(ee,null),n.createElement(ee,null),n.createElement(ee,null),n.createElement(ee,null))),n.createElement("div",{className:"mb-3"},n.createElement(te,null),n.createElement("div",{className:"striped-list no-full-width"},n.createElement(ee,null),n.createElement(ee,null),n.createElement(ee,null),n.createElement(ee,null),n.createElement(ee,null),n.createElement(ee,null),n.createElement(ee,null),n.createElement(ee,null),n.createElement(ee,null),n.createElement(ee,null))))}var ne=a(20354),re=a(4594),ie=a(39151),ce=a(70227),se=i.T.encloseNamespace("liteShare.sharedByMe");function le(e,t){return{label:se("editShareSettings"),appLink:{application:Z.O.DEFAULT,action:X.e.Default.SHARE,args:[e.id],params:{entityType:t}}}}function oe(e){return n.createElement(h.u,{title:e.label,spanHack:!0},n.createElement("a",{href:e.url,target:"_blank"},n.createElement(f.x,{svgName:E.vn.Analytics})))}var ue=i.T.encloseNamespace("liteShare.sharedByMe");function de(){var e=(0,_.T)().hasPermissions,t=(0,K.r)(null).hasShareFlowV2,a=(0,V.k)(),i=(0,Y.a)(),c=i.sentShares,s=i.sharedObjects,o=i.shareRecipients,u=i.isFetching,d=i.showPartialLoading,m=i.nextCursor,v=i.hasMore,p=i.fetchNext,f=i.imageCdnUrl,h=i.yearGroups,g=e(z.C.ViewMyShares)&&t;n.useEffect((function(){g&&r.Q.C$.trigger({application:Z.O.MY_SHARES,action:X.e.MyShares.HOME},{replace:!0})}),[g]),(0,W.M)({title:ue("sharedByMe")});var y=function(e){var t=ne.a.useBasicFetch(ie.L.config()),a=e.xs||e.sm;return n.useCallback((function(e){return function(e,t,a){var r,i="viewUsage";if(M.M.isVideo(e)&&(r="video"),M.M.isInteractive(e)&&(r="interactive",i="viewResults"),M.M.isClip(e)&&(r="clip"),e.typeId===re.E.Series&&(r="series"),e.typeId===re.E.Playlist&&(r="playlist"),M.M.isVideoType(e)&&!M.M.getCanBeConsumed(e).canConsume)return[];var c=[le(e,r)],s=ce.c.getObjectUrl(a,e);return s&&c.push({label:t?se(i):function(){return n.createElement(oe,{label:se(i),url:s})},className:"btn btn-link",button:!t,href:ce.c.getObjectUrl(a,e),openInNewTab:!0}),c}(e,a,t.data)}),[a])}(a);return n.createElement("div",{className:"px-3"},!g&&n.createElement(J.w,null),d?n.createElement(ae,null):c.length?n.createElement(n.Fragment,null,n.createElement(B,{sentShares:c,sharedObjects:s.items,shareRecipients:o.items,getObjectAppLink:$.Qh,getObjectActions:y,groupByDateShared:!0,breakpoints:a,yearGroups:h,imageCdnUrl:f}),(v||u)&&n.createElement(G._,{isFetching:u,fetchNext:p,nextCursor:m})):n.createElement(l,{appLink:{application:Z.O.DASHBOARD,action:X.e.Dashboard.HOME},imageUrl:q.W.EmptyStates.Share.SHARED_WITH_ME}))}},64208:(e,t,a)=>{a.d(t,{a:()=>h});var n=a(20354),r=a(1048),i=a(71553),c=a(30439),s=a(39151),l=a(1666),o=a(31949),u=a(39902),d=a(60115),m=a(75896),v=a(85063),p={getDirectShares:function(e){var t;return null!==(t=null==e?void 0:e.filter((function(e){return e.type===v.y.DirectShare})))&&void 0!==t?t:[]},getRecipients:function(e){return m.m.flatten(p.getDirectShares(e).map((function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]})))}},f=a(31908);function h(e,t){var a,m,v=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],h=n.a.useGetFetch(),g=n.a.useBasicFetch(o.N.currentUser()),y=n.a.useBasicFetch(s.L.config()),E=n.a.useBasicFetch((null===(a=g.data)||void 0===a?void 0:a.isAuthenticated)&&l.h.yearGroups(g.data.customerId)),b=function(t){return v&&c.o.sentShare(Object.assign({cursor:t},e))},S=function(e){return h(b(e))},C=(0,d.K)(b,S),x=C.items,k=C.hasMore,w=C.isFetching,I=C.nextCursor,A=C.hasFirstPageCompleted,N=(0,u.FN)(null==x?void 0:x.map((function(e){return e.objectId})),c.o.sharedObjectsById),O=(0,u.FN)(p.getRecipients(x).map((function(e){return e.id})),(function(e){return c.o.getRecipientsById(e,g.data.customerId)})),j=(0,u.FN)(t?r.t.values(N.items||[]):[],(function(e){return i.I.pendingReviews({interactives:e.filter(f.M.isInteractive).map((function(e){return{interactiveId:e.interactiveId,metadataId:e.id}})),filters:{currentCustomerId:g.data.customerId,currentUserId:g.data.id}})}),(function(e){return"".concat(e.id,":").concat(e.interactiveId)})),T=w||N.isFetching||O.isFetching||j.isFetching||E.isFetching,R=!A||(null==x?void 0:x.length)&&!N.hasFirstRequestCompleted;return{sentShares:x,sharedObjects:N,shareRecipients:O,yearGroups:E.data,interactivesPendingReview:j,isFetching:T,showPartialLoading:R,nextCursor:I,hasMore:k,fetchNext:S,imageCdnUrl:null===(m=y.data)||void 0===m?void 0:m.imageCdnUrl}}}}]);
|
|
2
|
+
//# sourceMappingURL=6379-1fac9e5c3c-lite.chunk.js.map
|