@clickview/lite 0.76.0-rc.2 → 0.76.0-rc.3
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/{658-lite-5cb7c60d3b.chunk.css → 3700-lite-2ddbf5e39f.chunk.css} +0 -1
- package/dist/css/{4033-lite-b2fb1fd10e.chunk.css → 5987-lite-dc7e18cd99.chunk.css} +1 -0
- package/dist/css/{3325-lite-6f710728af.chunk.css → 5999-lite-bd05e26c6b.chunk.css} +1 -0
- package/dist/css/{6273-lite-e023522516.chunk.css → 6554-lite-a69c2a69da.chunk.css} +1 -0
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1518-c916754d35-lite.chunk.js → 1518-7005bfd3c8-lite.chunk.js} +2 -2
- package/dist/scripts/{1518-c916754d35-lite.chunk.js.map → 1518-7005bfd3c8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1670-823b692de0-lite.chunk.js → 1670-d9ced49962-lite.chunk.js} +2 -2
- package/dist/scripts/{1670-823b692de0-lite.chunk.js.map → 1670-d9ced49962-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1912-f7cadd3e9e-lite.chunk.js → 1912-2271f9d8ee-lite.chunk.js} +2 -2
- package/dist/scripts/{1912-f7cadd3e9e-lite.chunk.js.map → 1912-2271f9d8ee-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3143-f03801138f-lite.chunk.js → 3143-a754e306a5-lite.chunk.js} +3 -3
- package/dist/scripts/{3143-f03801138f-lite.chunk.js.map → 3143-a754e306a5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3191-6f79256d33-lite.chunk.js → 3191-e387636012-lite.chunk.js} +2 -2
- package/dist/scripts/{3191-6f79256d33-lite.chunk.js.map → 3191-e387636012-lite.chunk.js.map} +1 -1
- package/dist/scripts/3700-3859a400a5-lite.chunk.js +3 -0
- package/dist/scripts/3700-3859a400a5-lite.chunk.js.map +1 -0
- package/dist/scripts/{4050-57e2409255-lite.chunk.js → 4050-8852c15f40-lite.chunk.js} +3 -3
- package/dist/scripts/4050-8852c15f40-lite.chunk.js.map +1 -0
- package/dist/scripts/{4802-1b7a767c46-lite.chunk.js → 4802-bc321d7ede-lite.chunk.js} +3 -3
- package/dist/scripts/{4802-1b7a767c46-lite.chunk.js.map → 4802-bc321d7ede-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5877-6c9d90249b-lite.chunk.js → 5877-20ef40af7c-lite.chunk.js} +2 -2
- package/dist/scripts/{5877-6c9d90249b-lite.chunk.js.map → 5877-20ef40af7c-lite.chunk.js.map} +1 -1
- package/dist/scripts/5987-ece2ee4793-lite.chunk.js +3 -0
- package/dist/scripts/5987-ece2ee4793-lite.chunk.js.map +1 -0
- package/dist/scripts/{6273-a71eccd48b-lite.chunk.js → 6554-353cf95001-lite.chunk.js} +2 -2
- package/dist/scripts/{6273-a71eccd48b-lite.chunk.js.map → 6554-353cf95001-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7815-554d031e0a-lite.chunk.js → 7815-05c5e8df47-lite.chunk.js} +2 -2
- package/dist/scripts/{7815-554d031e0a-lite.chunk.js.map → 7815-05c5e8df47-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7835-61d04f9f11-lite.chunk.js → 7835-8d490274c8-lite.chunk.js} +3 -3
- package/dist/scripts/{7835-61d04f9f11-lite.chunk.js.map → 7835-8d490274c8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8362-5936447d00-lite.chunk.js → 8362-7cac098b34-lite.chunk.js} +3 -3
- package/dist/scripts/{8362-5936447d00-lite.chunk.js.map → 8362-7cac098b34-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8548-4eeb094dbb-lite.chunk.js → 8548-c987128b9f-lite.chunk.js} +3 -3
- package/dist/scripts/{8548-4eeb094dbb-lite.chunk.js.map → 8548-c987128b9f-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8756-a3f84f1b64-lite.chunk.js → 8756-560899a88b-lite.chunk.js} +2 -2
- package/dist/scripts/{8756-a3f84f1b64-lite.chunk.js.map → 8756-560899a88b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8933-01ed4c4e69-lite.chunk.js → 8933-aa3f547d1e-lite.chunk.js} +3 -3
- package/dist/scripts/{8933-01ed4c4e69-lite.chunk.js.map → 8933-aa3f547d1e-lite.chunk.js.map} +1 -1
- package/dist/scripts/914-4a8424247f-lite.chunk.js +2 -0
- package/dist/scripts/914-4a8424247f-lite.chunk.js.map +1 -0
- package/dist/scripts/{9423-d67a0bb6f3-lite.chunk.js → 9423-3ce35ca995-lite.chunk.js} +2 -2
- package/dist/scripts/{9423-d67a0bb6f3-lite.chunk.js.map → 9423-3ce35ca995-lite.chunk.js.map} +1 -1
- package/dist/scripts/bundle-385a231a9d.min.js +3 -0
- package/dist/scripts/{bundle-4276667ced.min.js.map → bundle-385a231a9d.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/4033-d8dbb0d208-lite.chunk.js +0 -3
- package/dist/scripts/4033-d8dbb0d208-lite.chunk.js.map +0 -1
- package/dist/scripts/4050-57e2409255-lite.chunk.js.map +0 -1
- package/dist/scripts/5467-3c44100a58-lite.chunk.js +0 -2
- package/dist/scripts/5467-3c44100a58-lite.chunk.js.map +0 -1
- package/dist/scripts/658-f500e8210f-lite.chunk.js +0 -3
- package/dist/scripts/658-f500e8210f-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-4276667ced.min.js +0 -3
- /package/dist/scripts/{3143-f03801138f-lite.chunk.js.LICENSE.txt → 3143-a754e306a5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4033-d8dbb0d208-lite.chunk.js.LICENSE.txt → 3700-3859a400a5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4050-57e2409255-lite.chunk.js.LICENSE.txt → 4050-8852c15f40-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4802-1b7a767c46-lite.chunk.js.LICENSE.txt → 4802-bc321d7ede-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{658-f500e8210f-lite.chunk.js.LICENSE.txt → 5987-ece2ee4793-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7835-61d04f9f11-lite.chunk.js.LICENSE.txt → 7835-8d490274c8-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8362-5936447d00-lite.chunk.js.LICENSE.txt → 8362-7cac098b34-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8548-4eeb094dbb-lite.chunk.js.LICENSE.txt → 8548-c987128b9f-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8933-01ed4c4e69-lite.chunk.js.LICENSE.txt → 8933-aa3f547d1e-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-4276667ced.min.js.LICENSE.txt → bundle-385a231a9d.min.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6273,3325],{36199:(e,t,n)=>{var r;n.d(t,{V:()=>r}),function(e){e[e.Original=0]="Original",e[e.Copy=1]="Copy"}(r||(r={}))},94644:(e,t,n)=>{n.d(t,{r:()=>f});var r=n(50242),o=n(81886),i=n(67058),a=n(14553),c=n(49267),u=n(49075),l={notFound:i.d,forbidden:{rating:a.q,yearLevel:a.q,region:c.a,privacy:a.q},badRequest:u._,internalServerError:u._};function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var a=Object.assign(Object.assign({},l),t);i&&o.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||o.Q.Ry.throw(new a.badRequest):n.forbidden||o.Q.Ry.throw(new a.forbidden.privacy):n.notFound||o.Q.Ry.throw(new a.notFound):n.internalServerError||o.Q.Ry.throw(new u._))}}},91286:(e,t,n)=>{n.d(t,{v:()=>a});var r=n(32735),o=n(94644);function i(e){return e.map(function(e){return e.statusCode}).join(":")}function a(e,t,n){var a=Array.isArray(e)?e:[e];(0,r.useEffect)(function(){a.forEach(function(e){(0,o.r)(e.statusCode,t,n)})},[i(a),t,n])}},24804:(e,t,n)=>{n.d(t,{X:()=>i});var r=n(32735);const o={video:"ekpg6",notice:"lQs4F",heading:"Gt6uV",interaction:"LEfYX",button:"caHP7",edit:"de4DP",questions:"XelbS"};function i(){return r.createElement("div",{className:"px-3 w-100"},r.createElement("div",{className:"partial-loading-background ".concat(o.notice)}),r.createElement("div",{className:"partial-loading-background mb-3 ".concat(o.video)},r.createElement("div",{className:"partial-loading-background ".concat(o.questions)})),r.createElement("div",{className:"partial-loading-background mb-3 ".concat(o.heading)}),r.createElement("div",null,Array(5).fill(null).map(function(e,t){return r.createElement("div",{key:t,className:"partial-loading-background my-2 ".concat(o.interaction)})})))}},9064:(e,t,n)=>{function r(e){var t,n,r,o,i,a,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return null;var u=Object.assign(Object.assign({},c),{id:e.id,interactiveId:e.interactiveId,name:e.name,status:e.status,originType:e.originType});return(null===(t=null==e?void 0:e._parentClip)||void 0===t?void 0:t.id)&&(u.clip={id:null===(n=null==e?void 0:e._parentClip)||void 0===n?void 0:n.id,name:null===(r=null==e?void 0:e._parentClip)||void 0===r?void 0:r.name}),(null===(o=null==e?void 0:e._parentVideo)||void 0===o?void 0:o.id)&&(u.video={id:null===(i=null==e?void 0:e._parentVideo)||void 0===i?void 0:i.id,name:null===(a=null==e?void 0:e._parentVideo)||void 0===a?void 0:a.name}),u}n.d(t,{T:()=>r})},9897:(e,t,n)=>{n.r(t),n.d(t,{EditInteractiveView:()=>te});var r=n(32735),o=n(38750),i=n(23481),a=n(81886),c=n(20354),u=n(49985),l=n(65858),f=n(5960),s=n(60051),d=n(61990),y=n(33803),p=n(39151),v=n(20768),b=n(47812),m=n(31949),g=n(91286),h=n(79612),w=n(37802),E=n(72596),O=n(38314),j=n(14050),S=n(14070),P=n(97291),I=n(64364);function T(e){return T="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},T(e)}function k(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,_(r.key),r)}}function _(e){var t=function(e){if("object"!=T(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=T(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==T(t)?t:t+""}function C(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(C=function(){return!!e})()}function A(e){return A=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},A(e)}function R(e,t){return R=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},R(e,t)}var N="shared.cannotEditPublishedInteractive",V=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t,n){return t=A(t),function(e,t){if(t&&("object"==T(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,C()?Reflect.construct(t,n||[],A(e).constructor):t.apply(e,n))}(this,t,[i.T.getPhrase(N,"title")])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&R(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"CannotEditPublishedInteractiveError"}},{key:"heading",get:function(){return i.T.getPhrase(N,"heading")}},{key:"description",get:function(){return i.T.getPhrase(N,"description")}}])&&k(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(I.H),F=n(24804),Q=n(9064),x=n(70680),L=n(36199);function U(e){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U(e)}function q(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,B(r.key),r)}}function B(e){var t=function(e){if("object"!=U(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=U(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==U(t)?t:t+""}function D(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(D=function(){return!!e})()}function M(e){return M=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},M(e)}function X(e,t){return X=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},X(e,t)}var $="shared.cannotEditInteractive",H=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t,n){return t=M(t),function(e,t){if(t&&("object"==U(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,D()?Reflect.construct(t,n||[],M(e).constructor):t.apply(e,n))}(this,t,[i.T.getPhrase($,"title")])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&X(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"CannnotEditInteractiveError"}},{key:"heading",get:function(){return i.T.getPhrase($,"heading")}},{key:"description",get:function(){return i.T.getPhrase($,"description")}}])&&q(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(I.H);function K(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,c=[],u=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);u=!0);}catch(e){l=!0,o=e}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return G(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)?G(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 G(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Z=function(e){var t=(0,x.I0)(),n=K(r.useState(!1),2),o=n[0],i=n[1],u=K(r.useState(!1),2),l=u[0],f=u[1];return r.useEffect(function(){if(e&&!l&&!o)if(e.originType!==L.V.Original){var n=function(){a.Q.Ry.throw(new H)};i(!0),c.a.fetch(t,v.b.copyInteractive(e.interactiveId,function(r){var o={originType:L.V.Original,interactiveId:r.id};c.a.fetch(t,v.b.updateInteractiveMetadata(e.id,o,function(){return f(!0)},n))},n))}else f(!0)},[e]),l};function Y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,c=[],u=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);u=!0);}catch(e){l=!0,o=e}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return z(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)?z(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 z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var J=i.T.encloseNamespace("interactives.editInteractiveView"),W={application:P.O.INTERACTIVES,action:S.e.Interactives.EDIT_INTERACTIVE_DETAILS},ee={notFound:d.l,forbidden:{privacy:y.G}};function te(e){var t=Y(r.useState(!1),2),n=t[0],i=t[1],d=Y(r.useState(!1),2),y=d[0],S=d[1],P=r.useRef(null),I=(0,w.r)(null).experimentalInteractiveQuestions,T=c.a.useBasicFetch(p.L.config()),k=c.a.useBasicFetch(m.N.currentUser()),_=c.a.useBasicFetch(!!k.data&&v.b.interactiveMetadata(e.id));(0,h.M)({title:_.data?J("pageTitle",{name:_.data.name}):null});var C=Z(_.data),A=c.a.useBasicFetch(C?b.k.createViewKey(_.data.id,s.f.MasterObject):null),R=c.a.useBasicFetch(m.N.token()),N=r.useMemo(function(){return(0,o.oD)()},[]),x=r.useMemo(function(){return(0,o.oD)()},[]),L=r.useRef(null);if((0,g.v)(_,ee),!(A.data&&T.data&&_.data&&R.data))return r.createElement(F.X,null);if(!y&&(S(!0),_.data.status!==f.X.Draft))return a.Q.Ry.throw(new V),null;var U=(0,Q.T)(_.data),q={entity:l.py.Interactive,location:l.LZ.EditInteractive,workflowPhase:l.eu.Start};return r.createElement(r.Fragment,null,!n&&r.createElement(F.X,null),r.createElement("div",{className:"px-3 ".concat(n?"":"d-none")},r.createElement("div",{className:"d-flex justify-content-between align-items-center mb-3"},r.createElement("h1",{className:"h3 text-truncate mb-0 pb-1"},_.data.name),r.createElement("div",{className:"flex-shrink-0"},r.createElement(o.t0,{node:N}))),r.createElement(j.ClickViewInteractivePlayer,{viewKey:A.data.viewKey,imageApi:new URL(T.data.imageCdnUrl),playerApi:new URL(T.data.playerApiUrl),hotkeyElQuerySelector:"body",autoplay:!0,onReady:function(e){P.current=e,i(!0),L.current=new E.M({player:e,video:_.data,analyticsLocation:l.LZ.EditInteractive})},currentUser:k.data,mode:O.A.Create,actionsPortalNode:N,questionListPortalNode:x,authToken:R.data.value,onClickEditDetails:function(){u.k.logUserAction(U,Object.assign({actionType:l.Vw.Edit},q)),a.Q.C$.trigger(Object.assign(Object.assign({},W),{args:[e.id]}))},onClickPublish:function(){u.k.logUserAction(U,Object.assign({actionType:l.Vw.Publish},q)),a.Q.C$.trigger(Object.assign(Object.assign({},W),{args:[e.id],params:{publish:!0}}))},enableImmersiveReader:!0,experimentalInteractiveQuestions:I}),r.createElement(o.t0,{node:x})))}}}]);
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6554,5999],{36199:(e,t,n)=>{var r;n.d(t,{V:()=>r}),function(e){e[e.Original=0]="Original",e[e.Copy=1]="Copy"}(r||(r={}))},94644:(e,t,n)=>{n.d(t,{r:()=>f});var r=n(50242),o=n(81886),i=n(67058),a=n(14553),c=n(49267),u=n(49075),l={notFound:i.d,forbidden:{rating:a.q,yearLevel:a.q,region:c.a,privacy:a.q},badRequest:u._,internalServerError:u._};function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var a=Object.assign(Object.assign({},l),t);i&&o.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||o.Q.Ry.throw(new a.badRequest):n.forbidden||o.Q.Ry.throw(new a.forbidden.privacy):n.notFound||o.Q.Ry.throw(new a.notFound):n.internalServerError||o.Q.Ry.throw(new u._))}}},91286:(e,t,n)=>{n.d(t,{v:()=>a});var r=n(32735),o=n(94644);function i(e){return e.map(function(e){return e.statusCode}).join(":")}function a(e,t,n){var a=Array.isArray(e)?e:[e];(0,r.useEffect)(function(){a.forEach(function(e){(0,o.r)(e.statusCode,t,n)})},[i(a),t,n])}},24804:(e,t,n)=>{n.d(t,{X:()=>i});var r=n(32735);const o={video:"ekpg6",notice:"lQs4F",heading:"Gt6uV",interaction:"LEfYX",button:"caHP7",edit:"de4DP",questions:"XelbS"};function i(){return r.createElement("div",{className:"px-3 w-100"},r.createElement("div",{className:"partial-loading-background ".concat(o.notice)}),r.createElement("div",{className:"partial-loading-background mb-3 ".concat(o.video)},r.createElement("div",{className:"partial-loading-background ".concat(o.questions)})),r.createElement("div",{className:"partial-loading-background mb-3 ".concat(o.heading)}),r.createElement("div",null,Array(5).fill(null).map(function(e,t){return r.createElement("div",{key:t,className:"partial-loading-background my-2 ".concat(o.interaction)})})))}},9064:(e,t,n)=>{function r(e){var t,n,r,o,i,a,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return null;var u=Object.assign(Object.assign({},c),{id:e.id,interactiveId:e.interactiveId,name:e.name,status:e.status,originType:e.originType});return(null===(t=null==e?void 0:e._parentClip)||void 0===t?void 0:t.id)&&(u.clip={id:null===(n=null==e?void 0:e._parentClip)||void 0===n?void 0:n.id,name:null===(r=null==e?void 0:e._parentClip)||void 0===r?void 0:r.name}),(null===(o=null==e?void 0:e._parentVideo)||void 0===o?void 0:o.id)&&(u.video={id:null===(i=null==e?void 0:e._parentVideo)||void 0===i?void 0:i.id,name:null===(a=null==e?void 0:e._parentVideo)||void 0===a?void 0:a.name}),u}n.d(t,{T:()=>r})},9897:(e,t,n)=>{n.r(t),n.d(t,{EditInteractiveView:()=>te});var r=n(32735),o=n(38750),i=n(23481),a=n(81886),c=n(20354),u=n(49985),l=n(65858),f=n(5960),s=n(60051),d=n(61990),y=n(33803),p=n(39151),v=n(20768),b=n(47812),m=n(31949),g=n(91286),h=n(79612),w=n(37802),E=n(72596),O=n(38314),j=n(14050),S=n(14070),P=n(97291),I=n(64364);function T(e){return T="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},T(e)}function k(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,_(r.key),r)}}function _(e){var t=function(e){if("object"!=T(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=T(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==T(t)?t:t+""}function C(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(C=function(){return!!e})()}function A(e){return A=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},A(e)}function R(e,t){return R=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},R(e,t)}var N="shared.cannotEditPublishedInteractive",V=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t,n){return t=A(t),function(e,t){if(t&&("object"==T(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,C()?Reflect.construct(t,n||[],A(e).constructor):t.apply(e,n))}(this,t,[i.T.getPhrase(N,"title")])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&R(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"CannotEditPublishedInteractiveError"}},{key:"heading",get:function(){return i.T.getPhrase(N,"heading")}},{key:"description",get:function(){return i.T.getPhrase(N,"description")}}])&&k(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(I.H),F=n(24804),Q=n(9064),x=n(70680),L=n(36199);function U(e){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U(e)}function q(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,B(r.key),r)}}function B(e){var t=function(e){if("object"!=U(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=U(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==U(t)?t:t+""}function D(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(D=function(){return!!e})()}function M(e){return M=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},M(e)}function X(e,t){return X=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},X(e,t)}var $="shared.cannotEditInteractive",H=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t,n){return t=M(t),function(e,t){if(t&&("object"==U(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,D()?Reflect.construct(t,n||[],M(e).constructor):t.apply(e,n))}(this,t,[i.T.getPhrase($,"title")])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&X(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"CannnotEditInteractiveError"}},{key:"heading",get:function(){return i.T.getPhrase($,"heading")}},{key:"description",get:function(){return i.T.getPhrase($,"description")}}])&&q(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(I.H);function K(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,c=[],u=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);u=!0);}catch(e){l=!0,o=e}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return G(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)?G(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 G(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Z=function(e){var t=(0,x.I0)(),n=K(r.useState(!1),2),o=n[0],i=n[1],u=K(r.useState(!1),2),l=u[0],f=u[1];return r.useEffect(function(){if(e&&!l&&!o)if(e.originType!==L.V.Original){var n=function(){a.Q.Ry.throw(new H)};i(!0),c.a.fetch(t,v.b.copyInteractive(e.interactiveId,function(r){var o={originType:L.V.Original,interactiveId:r.id};c.a.fetch(t,v.b.updateInteractiveMetadata(e.id,o,function(){return f(!0)},n))},n))}else f(!0)},[e]),l};function Y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,c=[],u=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);u=!0);}catch(e){l=!0,o=e}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return z(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)?z(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 z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var J=i.T.encloseNamespace("interactives.editInteractiveView"),W={application:P.O.INTERACTIVES,action:S.e.Interactives.EDIT_INTERACTIVE_DETAILS},ee={notFound:d.l,forbidden:{privacy:y.G}};function te(e){var t=Y(r.useState(!1),2),n=t[0],i=t[1],d=Y(r.useState(!1),2),y=d[0],S=d[1],P=r.useRef(null),I=(0,w.r)(null).experimentalInteractiveQuestions,T=c.a.useBasicFetch(p.L.config()),k=c.a.useBasicFetch(m.N.currentUser()),_=c.a.useBasicFetch(!!k.data&&v.b.interactiveMetadata(e.id));(0,h.M)({title:_.data?J("pageTitle",{name:_.data.name}):null});var C=Z(_.data),A=c.a.useBasicFetch(C?b.k.createViewKey(_.data.id,s.f.MasterObject):null),R=c.a.useBasicFetch(m.N.token()),N=r.useMemo(function(){return(0,o.oD)()},[]),x=r.useMemo(function(){return(0,o.oD)()},[]),L=r.useRef(null);if((0,g.v)(_,ee),!(A.data&&T.data&&_.data&&R.data))return r.createElement(F.X,null);if(!y&&(S(!0),_.data.status!==f.X.Draft))return a.Q.Ry.throw(new V),null;var U=(0,Q.T)(_.data),q={entity:l.py.Interactive,location:l.LZ.EditInteractive,workflowPhase:l.eu.Start};return r.createElement(r.Fragment,null,!n&&r.createElement(F.X,null),r.createElement("div",{className:"px-3 ".concat(n?"":"d-none")},r.createElement("div",{className:"d-flex justify-content-between align-items-center mb-3"},r.createElement("h1",{className:"h3 text-truncate mb-0 pb-1"},_.data.name),r.createElement("div",{className:"flex-shrink-0"},r.createElement(o.t0,{node:N}))),r.createElement(j.ClickViewInteractivePlayer,{viewKey:A.data.viewKey,imageApi:new URL(T.data.imageCdnUrl),playerApi:new URL(T.data.playerApiUrl),hotkeyElQuerySelector:"body",autoplay:!0,onReady:function(e){P.current=e,i(!0),L.current=new E.M({player:e,video:_.data,analyticsLocation:l.LZ.EditInteractive})},currentUser:k.data,mode:O.A.Create,actionsPortalNode:N,questionListPortalNode:x,authToken:R.data.value,onClickEditDetails:function(){u.k.logUserAction(U,Object.assign({actionType:l.Vw.Edit},q)),a.Q.C$.trigger(Object.assign(Object.assign({},W),{args:[e.id]}))},onClickPublish:function(){u.k.logUserAction(U,Object.assign({actionType:l.Vw.Publish},q)),a.Q.C$.trigger(Object.assign(Object.assign({},W),{args:[e.id],params:{publish:!0}}))},enableImmersiveReader:!0,experimentalInteractiveQuestions:I}),r.createElement(o.t0,{node:x})))}}}]);
|
|
2
|
+
//# sourceMappingURL=6554-353cf95001-lite.chunk.js.map
|
package/dist/scripts/{6273-a71eccd48b-lite.chunk.js.map → 6554-353cf95001-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6273-a71eccd48b-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/enums/InteractiveOriginType.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/interactive-partial-loading.scss","file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/InteractivePartialLoading.tsx","file:///app/packages/projects/lite/src/apps/interactives/utils/getInteractiveAnalyticsData.ts","file:///app/packages/projects/lite/src/shared/errors/interactives/cannot-edit-published-interactive/CannotEditPublishInteractiveError.ts","file:///app/packages/projects/lite/src/shared/errors/interactives/cannot-edit/CannotEditError.ts","file:///app/packages/projects/lite/src/apps/interactives/views/edit-interactive/useEnsureOriginal.ts","file:///app/packages/projects/lite/src/apps/interactives/views/edit-interactive/EditInteractiveView.tsx"],"sourcesContent":["export enum InteractiveOriginType {\n Original = 0,\n Copy = 1\n}\n","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","// extracted by mini-css-extract-plugin\nexport default {\"video\":\"ekpg6\",\"notice\":\"lQs4F\",\"heading\":\"Gt6uV\",\"interaction\":\"LEfYX\",\"button\":\"caHP7\",\"edit\":\"de4DP\",\"questions\":\"XelbS\"};","import React from 'react';\n\nimport styles from './interactive-partial-loading.scss';\n\nexport function InteractivePartialLoading(): React.ReactElement {\n return (\n <div className='px-3 w-100'>\n <div className={`partial-loading-background ${styles.notice}`} />\n <div className={`partial-loading-background mb-3 ${styles.video}`}>\n <div className={`partial-loading-background ${styles.questions}`}></div>\n </div>\n <div className={`partial-loading-background mb-3 ${styles.heading}`}></div>\n <div>\n {Array(5).fill(null).map((_, i) => (\n <div key={i} className={`partial-loading-background my-2 ${styles.interaction}`}></div>\n ))}\n </div>\n </div>\n );\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsDataPayload } from 'libs/analytics/models/AnalyticsEvent';\n\nimport { InteractiveMetadata } from 'libs/shared/interfaces';\n\nexport function getInteractiveAnalyticsData(\n interactiveMetadata: InteractiveMetadata,\n extraAnalyticsData: HashObject = {}\n): AnalyticsDataPayload {\n if (!interactiveMetadata)\n return null;\n\n const data: AnalyticsDataPayload = {\n ...extraAnalyticsData,\n id: interactiveMetadata.id,\n interactiveId: interactiveMetadata.interactiveId,\n name: interactiveMetadata.name,\n status: interactiveMetadata.status,\n originType: interactiveMetadata.originType\n };\n\n if (interactiveMetadata?._parentClip?.id)\n data.clip = { id: interactiveMetadata?._parentClip?.id, name: interactiveMetadata?._parentClip?.name };\n\n if (interactiveMetadata?._parentVideo?.id)\n data.video = { id: interactiveMetadata?._parentVideo?.id, name: interactiveMetadata?._parentVideo?.name };\n\n return data;\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditPublishedInteractive';\n\nexport class CannotEditPublishInteractiveError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannotEditPublishedInteractiveError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditInteractive';\n\nexport class CannotEditInteractiveError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannnotEditInteractiveError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { InteractiveOriginType } from 'libs/shared/enums/InteractiveOriginType';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { EditInteractiveMetadataOriginRequest, Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { CannotEditInteractiveError } from 'shared/errors/interactives/cannot-edit/CannotEditError';\n\nexport const useEnsureOriginal = (\n interactiveMetadata: InteractiveMetadata\n) => {\n const dispatch = useDispatch();\n\n /* Used to ensure only one request */\n const [ requested, setRequest ] = React.useState(false);\n const [ ready, setReady ] = React.useState(false);\n\n React.useEffect(() => {\n if (!interactiveMetadata || ready || requested)\n return;\n\n if (interactiveMetadata.originType === InteractiveOriginType.Original) {\n setReady(true);\n return;\n }\n\n const error = () => {\n Core.ErrorHelper.throw(new CannotEditInteractiveError());\n };\n\n const success = (resp: Interactive) => {\n const data: EditInteractiveMetadataOriginRequest = {\n originType: InteractiveOriginType.Original,\n interactiveId: resp.id\n };\n\n Flight.fetch(\n dispatch,\n InteractiveRequests.updateInteractiveMetadata(\n interactiveMetadata.id,\n data,\n () => setReady(true),\n error\n )\n );\n };\n\n setRequest(true);\n Flight.fetch(dispatch, InteractiveRequests.copyInteractive(\n interactiveMetadata.interactiveId,\n success,\n error\n ));\n }, [interactiveMetadata]);\n\n return ready;\n};","import React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, PlayerViewKey } from 'libs/shared/interfaces';\nimport { PlayerAnalyticsTracker } from 'libs/shared/utils/PlayerAnalyticsTracker';\n\nimport { InteractivePlayer } from 'projects/player/players/interactive-player';\nimport { InteractiveMode } from 'projects/player/plugins/interactive-plugin/interfaces';\nimport { ClickViewInteractivePlayer } from 'projects/player/react/InteractivePlayer';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CannotEditPublishInteractiveError } from 'shared/errors/interactives/cannot-edit-published-interactive/CannotEditPublishInteractiveError';\n\nimport { InteractivePartialLoading } from 'apps/interactives/components/interactive-partial-loading/InteractivePartialLoading';\nimport { getInteractiveAnalyticsData } from 'apps/interactives/utils/getInteractiveAnalyticsData';\n\nimport { useEnsureOriginal } from './useEnsureOriginal';\n\nconst namespace = 'interactives.editInteractiveView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst EDIT_APPLINK = {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.EDIT_INTERACTIVE_DETAILS\n};\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\ninterface EditInteractiveProps {\n id: string;\n}\n\nexport function EditInteractiveView(props: EditInteractiveProps): React.ReactElement {\n const [ ready, setReady ] = React.useState(false);\n\n const [ hasCheckedStatus, setHasCheckedStatus ] = React.useState(false);\n const playerRef = React.useRef<InteractivePlayer>(null);\n\n const { experimentalInteractiveQuestions } = useSettings(null);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!currentUser.data &&\n InteractiveRequests.interactiveMetadata(props.id));\n\n useSetPageMetadata({\n title: interactiveMetadata.data ? getPhrase('pageTitle', { name: interactiveMetadata.data.name }) : null\n });\n\n /**\n * This will check if the interactive is a copy or not\n * and update it to original if it is a copy.\n */\n const isOriginal = useEnsureOriginal(interactiveMetadata.data);\n\n /**\n * We don't fetch our view key until we know our interactive has been upgraded\n * to an original\n */\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(isOriginal ?\n PlayerRequests.createViewKey(interactiveMetadata.data.id, MediaIdType.MasterObject) : null);\n\n const token = Flight.useBasicFetch<HashObject>(UserRequests.token());\n\n const actionsPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n const questionListPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n\n const analyticsTracker = React.useRef<PlayerAnalyticsTracker>(null);\n\n useHandleObjectError(interactiveMetadata, videoErrors);\n\n function onReady(player: InteractivePlayer): void {\n playerRef.current = player;\n\n setReady(true);\n\n analyticsTracker.current = new PlayerAnalyticsTracker({\n player,\n video: interactiveMetadata.data,\n analyticsLocation: LocationContext.EditInteractive\n });\n }\n\n if (!viewKey.data || !config.data || !interactiveMetadata.data || !token.data)\n return <InteractivePartialLoading />;\n\n /**\n * We do this because when the publish popup publishes\n * the flight state updates and this briefly re-renders\n * with data.status being published\n */\n if (!hasCheckedStatus) {\n setHasCheckedStatus(true);\n if (interactiveMetadata.data.status !== CurationStatus.Draft) {\n Core.ErrorHelper.throw(new CannotEditPublishInteractiveError());\n return null;\n }\n }\n\n const analyticsData = getInteractiveAnalyticsData(interactiveMetadata.data);\n\n const baseAnalyticsOptions = {\n entity: EntityType.Interactive,\n location: LocationContext.EditInteractive,\n workflowPhase: WorkflowPhase.Start\n };\n\n function onClickEditDetails(): void {\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Edit,\n ...baseAnalyticsOptions\n });\n\n Core.AppLinkHelper.trigger({\n ...EDIT_APPLINK,\n args: [props.id]\n });\n }\n\n function onClickPublish(): void {\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Publish,\n ...baseAnalyticsOptions\n });\n\n Core.AppLinkHelper.trigger({\n ...EDIT_APPLINK,\n args: [props.id],\n params: { publish: true }\n });\n }\n\n return (\n <>\n {!ready && <InteractivePartialLoading />}\n <div className={`px-3 ${ready ? '' : 'd-none'}`}>\n <div className='d-flex justify-content-between align-items-center mb-3'>\n <h1 className='h3 text-truncate mb-0 pb-1'>{interactiveMetadata.data.name}</h1>\n <div className='flex-shrink-0'>\n <OutPortal node={actionsPortalNode} />\n </div>\n </div>\n <ClickViewInteractivePlayer\n viewKey={viewKey.data.viewKey}\n imageApi={new URL(config.data.imageCdnUrl)}\n playerApi={new URL(config.data.playerApiUrl)}\n hotkeyElQuerySelector='body'\n autoplay\n onReady={onReady}\n currentUser={currentUser.data}\n mode={InteractiveMode.Create}\n actionsPortalNode={actionsPortalNode}\n questionListPortalNode={questionListPortalNode}\n authToken={token.data.value}\n onClickEditDetails={onClickEditDetails}\n onClickPublish={onClickPublish}\n enableImmersiveReader\n experimentalInteractiveQuestions={experimentalInteractiveQuestions}\n />\n <OutPortal node={questionListPortalNode} />\n </div>\n </>\n );\n}\n"],"names":["InteractiveOriginType","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","InteractivePartialLoading","className","fill","_","i","key","getInteractiveAnalyticsData","interactiveMetadata","extraAnalyticsData","data","id","interactiveId","name","originType","_parentClip","clip","_parentVideo","video","namespace","CannotEditPublishInteractiveError","LanguageService","ErrorPageError","CannotEditInteractiveError","useEnsureOriginal","dispatch","requested","setRequest","ready","setReady","error","InteractiveRequests","resp","getPhrase","EDIT_APPLINK","application","action","videoErrors","VideoNotFoundError","VideoPrivateError","EditInteractiveView","props","hasCheckedStatus","setHasCheckedStatus","playerRef","experimentalInteractiveQuestions","useSettings","config","ConfigRequests","currentUser","UserRequests","useSetPageMetadata","title","isOriginal","viewKey","PlayerRequests","MediaIdType","token","actionsPortalNode","questionListPortalNode","analyticsTracker","CurationStatus","analyticsData","baseAnalyticsOptions","entity","location","workflowPhase","node","ClickViewInteractivePlayer","imageApi","URL","imageCdnUrl","playerApi","playerApiUrl","hotkeyElQuerySelector","autoplay","onReady","player","current","PlayerAnalyticsTracker","analyticsLocation","mode","authToken","value","onClickEditDetails","AnalyticsHelper","actionType","args","onClickPublish","params","publish","enableImmersiveReader"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/6554-353cf95001-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/enums/InteractiveOriginType.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/interactive-partial-loading.scss","file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/InteractivePartialLoading.tsx","file:///app/packages/projects/lite/src/apps/interactives/utils/getInteractiveAnalyticsData.ts","file:///app/packages/projects/lite/src/shared/errors/interactives/cannot-edit-published-interactive/CannotEditPublishInteractiveError.ts","file:///app/packages/projects/lite/src/shared/errors/interactives/cannot-edit/CannotEditError.ts","file:///app/packages/projects/lite/src/apps/interactives/views/edit-interactive/useEnsureOriginal.ts","file:///app/packages/projects/lite/src/apps/interactives/views/edit-interactive/EditInteractiveView.tsx"],"sourcesContent":["export enum InteractiveOriginType {\n Original = 0,\n Copy = 1\n}\n","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","// extracted by mini-css-extract-plugin\nexport default {\"video\":\"ekpg6\",\"notice\":\"lQs4F\",\"heading\":\"Gt6uV\",\"interaction\":\"LEfYX\",\"button\":\"caHP7\",\"edit\":\"de4DP\",\"questions\":\"XelbS\"};","import React from 'react';\n\nimport styles from './interactive-partial-loading.scss';\n\nexport function InteractivePartialLoading(): React.ReactElement {\n return (\n <div className='px-3 w-100'>\n <div className={`partial-loading-background ${styles.notice}`} />\n <div className={`partial-loading-background mb-3 ${styles.video}`}>\n <div className={`partial-loading-background ${styles.questions}`}></div>\n </div>\n <div className={`partial-loading-background mb-3 ${styles.heading}`}></div>\n <div>\n {Array(5).fill(null).map((_, i) => (\n <div key={i} className={`partial-loading-background my-2 ${styles.interaction}`}></div>\n ))}\n </div>\n </div>\n );\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsDataPayload } from 'libs/analytics/models/AnalyticsEvent';\n\nimport { InteractiveMetadata } from 'libs/shared/interfaces';\n\nexport function getInteractiveAnalyticsData(\n interactiveMetadata: InteractiveMetadata,\n extraAnalyticsData: HashObject = {}\n): AnalyticsDataPayload {\n if (!interactiveMetadata)\n return null;\n\n const data: AnalyticsDataPayload = {\n ...extraAnalyticsData,\n id: interactiveMetadata.id,\n interactiveId: interactiveMetadata.interactiveId,\n name: interactiveMetadata.name,\n status: interactiveMetadata.status,\n originType: interactiveMetadata.originType\n };\n\n if (interactiveMetadata?._parentClip?.id)\n data.clip = { id: interactiveMetadata?._parentClip?.id, name: interactiveMetadata?._parentClip?.name };\n\n if (interactiveMetadata?._parentVideo?.id)\n data.video = { id: interactiveMetadata?._parentVideo?.id, name: interactiveMetadata?._parentVideo?.name };\n\n return data;\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditPublishedInteractive';\n\nexport class CannotEditPublishInteractiveError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannotEditPublishedInteractiveError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditInteractive';\n\nexport class CannotEditInteractiveError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannnotEditInteractiveError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { InteractiveOriginType } from 'libs/shared/enums/InteractiveOriginType';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { EditInteractiveMetadataOriginRequest, Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { CannotEditInteractiveError } from 'shared/errors/interactives/cannot-edit/CannotEditError';\n\nexport const useEnsureOriginal = (\n interactiveMetadata: InteractiveMetadata\n) => {\n const dispatch = useDispatch();\n\n /* Used to ensure only one request */\n const [ requested, setRequest ] = React.useState(false);\n const [ ready, setReady ] = React.useState(false);\n\n React.useEffect(() => {\n if (!interactiveMetadata || ready || requested)\n return;\n\n if (interactiveMetadata.originType === InteractiveOriginType.Original) {\n setReady(true);\n return;\n }\n\n const error = () => {\n Core.ErrorHelper.throw(new CannotEditInteractiveError());\n };\n\n const success = (resp: Interactive) => {\n const data: EditInteractiveMetadataOriginRequest = {\n originType: InteractiveOriginType.Original,\n interactiveId: resp.id\n };\n\n Flight.fetch(\n dispatch,\n InteractiveRequests.updateInteractiveMetadata(\n interactiveMetadata.id,\n data,\n () => setReady(true),\n error\n )\n );\n };\n\n setRequest(true);\n Flight.fetch(dispatch, InteractiveRequests.copyInteractive(\n interactiveMetadata.interactiveId,\n success,\n error\n ));\n }, [interactiveMetadata]);\n\n return ready;\n};","import React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, PlayerViewKey } from 'libs/shared/interfaces';\nimport { PlayerAnalyticsTracker } from 'libs/shared/utils/PlayerAnalyticsTracker';\n\nimport { InteractivePlayer } from 'projects/player/players/interactive-player';\nimport { InteractiveMode } from 'projects/player/plugins/interactive-plugin/interfaces';\nimport { ClickViewInteractivePlayer } from 'projects/player/react/InteractivePlayer';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CannotEditPublishInteractiveError } from 'shared/errors/interactives/cannot-edit-published-interactive/CannotEditPublishInteractiveError';\n\nimport { InteractivePartialLoading } from 'apps/interactives/components/interactive-partial-loading/InteractivePartialLoading';\nimport { getInteractiveAnalyticsData } from 'apps/interactives/utils/getInteractiveAnalyticsData';\n\nimport { useEnsureOriginal } from './useEnsureOriginal';\n\nconst namespace = 'interactives.editInteractiveView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst EDIT_APPLINK = {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.EDIT_INTERACTIVE_DETAILS\n};\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\ninterface EditInteractiveProps {\n id: string;\n}\n\nexport function EditInteractiveView(props: EditInteractiveProps): React.ReactElement {\n const [ ready, setReady ] = React.useState(false);\n\n const [ hasCheckedStatus, setHasCheckedStatus ] = React.useState(false);\n const playerRef = React.useRef<InteractivePlayer>(null);\n\n const { experimentalInteractiveQuestions } = useSettings(null);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!currentUser.data &&\n InteractiveRequests.interactiveMetadata(props.id));\n\n useSetPageMetadata({\n title: interactiveMetadata.data ? getPhrase('pageTitle', { name: interactiveMetadata.data.name }) : null\n });\n\n /**\n * This will check if the interactive is a copy or not\n * and update it to original if it is a copy.\n */\n const isOriginal = useEnsureOriginal(interactiveMetadata.data);\n\n /**\n * We don't fetch our view key until we know our interactive has been upgraded\n * to an original\n */\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(isOriginal ?\n PlayerRequests.createViewKey(interactiveMetadata.data.id, MediaIdType.MasterObject) : null);\n\n const token = Flight.useBasicFetch<HashObject>(UserRequests.token());\n\n const actionsPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n const questionListPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n\n const analyticsTracker = React.useRef<PlayerAnalyticsTracker>(null);\n\n useHandleObjectError(interactiveMetadata, videoErrors);\n\n function onReady(player: InteractivePlayer): void {\n playerRef.current = player;\n\n setReady(true);\n\n analyticsTracker.current = new PlayerAnalyticsTracker({\n player,\n video: interactiveMetadata.data,\n analyticsLocation: LocationContext.EditInteractive\n });\n }\n\n if (!viewKey.data || !config.data || !interactiveMetadata.data || !token.data)\n return <InteractivePartialLoading />;\n\n /**\n * We do this because when the publish popup publishes\n * the flight state updates and this briefly re-renders\n * with data.status being published\n */\n if (!hasCheckedStatus) {\n setHasCheckedStatus(true);\n if (interactiveMetadata.data.status !== CurationStatus.Draft) {\n Core.ErrorHelper.throw(new CannotEditPublishInteractiveError());\n return null;\n }\n }\n\n const analyticsData = getInteractiveAnalyticsData(interactiveMetadata.data);\n\n const baseAnalyticsOptions = {\n entity: EntityType.Interactive,\n location: LocationContext.EditInteractive,\n workflowPhase: WorkflowPhase.Start\n };\n\n function onClickEditDetails(): void {\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Edit,\n ...baseAnalyticsOptions\n });\n\n Core.AppLinkHelper.trigger({\n ...EDIT_APPLINK,\n args: [props.id]\n });\n }\n\n function onClickPublish(): void {\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Publish,\n ...baseAnalyticsOptions\n });\n\n Core.AppLinkHelper.trigger({\n ...EDIT_APPLINK,\n args: [props.id],\n params: { publish: true }\n });\n }\n\n return (\n <>\n {!ready && <InteractivePartialLoading />}\n <div className={`px-3 ${ready ? '' : 'd-none'}`}>\n <div className='d-flex justify-content-between align-items-center mb-3'>\n <h1 className='h3 text-truncate mb-0 pb-1'>{interactiveMetadata.data.name}</h1>\n <div className='flex-shrink-0'>\n <OutPortal node={actionsPortalNode} />\n </div>\n </div>\n <ClickViewInteractivePlayer\n viewKey={viewKey.data.viewKey}\n imageApi={new URL(config.data.imageCdnUrl)}\n playerApi={new URL(config.data.playerApiUrl)}\n hotkeyElQuerySelector='body'\n autoplay\n onReady={onReady}\n currentUser={currentUser.data}\n mode={InteractiveMode.Create}\n actionsPortalNode={actionsPortalNode}\n questionListPortalNode={questionListPortalNode}\n authToken={token.data.value}\n onClickEditDetails={onClickEditDetails}\n onClickPublish={onClickPublish}\n enableImmersiveReader\n experimentalInteractiveQuestions={experimentalInteractiveQuestions}\n />\n <OutPortal node={questionListPortalNode} />\n </div>\n </>\n );\n}\n"],"names":["InteractiveOriginType","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","InteractivePartialLoading","className","fill","_","i","key","getInteractiveAnalyticsData","interactiveMetadata","extraAnalyticsData","data","id","interactiveId","name","originType","_parentClip","clip","_parentVideo","video","namespace","CannotEditPublishInteractiveError","LanguageService","ErrorPageError","CannotEditInteractiveError","useEnsureOriginal","dispatch","requested","setRequest","ready","setReady","error","InteractiveRequests","resp","getPhrase","EDIT_APPLINK","application","action","videoErrors","VideoNotFoundError","VideoPrivateError","EditInteractiveView","props","hasCheckedStatus","setHasCheckedStatus","playerRef","experimentalInteractiveQuestions","useSettings","config","ConfigRequests","currentUser","UserRequests","useSetPageMetadata","title","isOriginal","viewKey","PlayerRequests","MediaIdType","token","actionsPortalNode","questionListPortalNode","analyticsTracker","CurationStatus","analyticsData","baseAnalyticsOptions","entity","location","workflowPhase","node","ClickViewInteractivePlayer","imageApi","URL","imageCdnUrl","playerApi","playerApiUrl","hotkeyElQuerySelector","autoplay","onReady","player","current","PlayerAnalyticsTracker","analyticsLocation","mode","authToken","value","onClickEditDetails","AnalyticsHelper","actionType","args","onClickPublish","params","publish","enableImmersiveReader"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7815],{11658:(e,r,t)=>{t.r(r),t.d(r,{BulkUserUploadReviewAccountsView:()=>X});var a=t(32735),n=t(70680),s=t(23481),i=t(81886),o=t(20354),l=t(79447),u=t(83345),c=t(76881),d="userManager.bulkUserUploadLoaderValidation";function m(e){var r,t,n=Math.floor(e.totalCompleted/e.totalUsers*100);return a.createElement("div",{className:"d-flex flex-column align-items-center py-5"},a.createElement("h1",{className:"h5"},a.createElement(u.x,{namespace:d,phrase:e.userType===c.Y.Learner?"headingStudents":"headingStaff"})),a.createElement("p",null,a.createElement(u.x,{namespace:d,phrase:e.userType===c.Y.Learner?"progressStudents":"progressStaff",options:{totalLoaded:null!==(r=e.totalCompleted)&&void 0!==r?r:0,totalUsers:null!==(t=e.totalUsers)&&void 0!==t?t:0}})),a.createElement(l.Z,{className:"w-50",variant:"info",now:n}))}var p=t(67370),f=t(63598),y=t(93898),b=t(42949),v=t(19717),g=t(96728),h=t(69883),k=t(299),E=t(45541),S=t(39739),w=t(91693),T=t(83523),U={downloadCsvArray:function(e,r){var t="data:text/csv;charset=utf-8,";t+=e.map(function(e){return e.join(",")}).join("\n");var a=document.createElement("a");a.href=encodeURI(t),a.download=r,a.click()},safeDownloadCsv:function(e,r){var t=new Blob([e],{type:"text/csv;charset=utf-8;"}),a=URL.createObjectURL(t),n=document.createElement("a");n.href=a,n.download=r,n.click(),URL.revokeObjectURL(a)}},C=t(35223);function x(e){return x="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},x(e)}function P(e,r,t){return(r=function(e){var r=function(e){if("object"!=x(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!=x(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==x(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var L=P(P(P({},c.Y.Learner,"userManager.studentSpreadsheetHeading"),c.Y.Staff,"userManager.staffSpreadsheetHeading"),c.Y.Unknown,"");function I(e){var r=(0,E.V)().invalidUsers,t=v.b.getTotalInvalidListings(r);return a.createElement(a.Fragment,null,a.createElement("h2",{className:"h4"},a.createElement(u.x,{namespace:L[e.userType],phrase:"heading"})),t?a.createElement(a.Fragment,null,a.createElement("p",{className:"mb-3 fw-semibold"},a.createElement(u.x,{namespace:L[e.userType],phrase:"reviewInfo"})),a.createElement("div",{className:"pb-3"},a.createElement(w.h,{svgName:C.vn.Upload,appLink:e.appLinks.userUploadPopup,className:"btn btn-outline-dark me-2"},a.createElement(u.x,{namespace:L[e.userType],phrase:"reupload"})),a.createElement(w.h,{svgName:C.vn.Download,onClick:function(){var t=Object.keys(r).map(function(e){return r[e]}).map(function(r){var t,a,n=r.user,s=r.errorCodes,i=S.P.getMinimumPasswordLength(e.passwordPolicy,n.userType,n.masterRole),o=S.P.getErrorMessages(s,i,!0,e.localErrorMessage),l=function(e){var r,t=o[e]||null;return null===t?null!==(r=n[e])&&void 0!==r?r:"":n[e]?t+=": ".concat(n[e]):t};return e.userType===c.Y.Learner?[l("firstName"),l("surname"),null!==(t=o.masterYearGroup)&&void 0!==t?t:null===(a=n.masterYearGroup)||void 0===a?void 0:a.name,l("email"),l("username"),l("password")]:[l("firstName"),l("surname"),l("email"),l("username")]});e.userType===c.Y.Learner?t.unshift(["First Name","Last Name","Year level","Email","Username","Password"]):t.unshift(["First Name","Last Name","Email","Username"]),U.downloadCsvArray(t,s.T.getPhrase(L[e.userType],"errorFileName"))},className:"btn btn-outline-dark"},a.createElement(u.x,{namespace:L[e.userType],phrase:"exportErrors"})))):a.createElement("p",{className:"mb-2"},a.createElement(u.x,{namespace:L[e.userType],phrase:"reviewComplete"})),a.createElement("div",{className:"d-flex align-items-center flex-wrap"},a.createElement("p",{className:"pe-3 mb-0"},a.createElement(u.x,{namespace:L[e.userType],phrase:"switchLabel"})),a.createElement(T.Z,{onClick:e.onToggleValidListings,on:e.hideValidListings})),a.createElement("div",{className:"d-flex align-items-center ms-3 ps-1 mt-3"},a.createElement(w.h,{svgName:C.vn.Close,onClick:e.onClickRemove,className:"btn btn-outline-dark",disabled:!e.bulkIndeterminate&&!e.bulkChecked||e.disableBulkCheckbox},a.createElement(u.x,{namespace:L[e.userType],phrase:"removeFromSpreadsheet"}))))}function N(e){return N="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},N(e)}function j(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,n,s,i,o=[],l=!0,u=!1;try{if(s=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;l=!1}else for(;!(l=(a=s.call(t)).done)&&(o.push(a.value),o.length!==r);l=!0);}catch(e){u=!0,n=e}finally{try{if(!l&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(u)throw n}}return o}}(e,r)||function(e,r){if(e){if("string"==typeof e)return M(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?M(e,r):void 0}}(e,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.")}()}function M(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,a=Array(r);t<r;t++)a[t]=e[t];return a}function A(e,r,t){return(r=function(e){var r=function(e){if("object"!=N(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!=N(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==N(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var O=A(A(A({},c.Y.Learner,"userManager.editStudentSpreadsheet"),c.Y.Staff,"userManager.editStaffSpreadsheet"),c.Y.Unknown,"");function V(e){var r=O[e.userType],t=j(a.useState(!0),2),n=t[0],o=t[1],l=j(a.useState(),2),u=l[0],c=l[1],d=j(a.useState([]),2),S=d[0],w=d[1],T=(0,E.V)(),U=T.users,C=T.invalidUsers,x=T.setInvalidUsers,P=T.hasValidatedUsers,L=T.setExistingUsers,N=P?n?Object.keys(C).map(function(e){return C[e].user}):U:[],M=(0,k.X)(N,{idField:"lookupId"}),A=a.useContext(g.e),V=A.setDisableNext,F=A.setShowButtons,R=A.setOnClickConfirm,Y=(0,h.Z)(),B=v.b.getTotalInvalidListings(C),$=(0,p.Ix)({hasValidatedUsers:P,setInvalidUsers:x,userType:e.userType,setHideValidListings:o,setExistingUsers:L});function H(){Y.error(s.T.getPhrase(r,"error")),i.Q.C$.trigger(e.appLinks.userManager,{replace:!0})}return a.useEffect(function(){P||(e.setTotalValidatedUsers(0),e.validateSpreadsheet(U,$,H))},[P]),a.useEffect(function(){F(P),V(!!Object.keys(null!=C?C:{}).length)},[C,P]),a.useEffect(function(){R(function(){return e.onClickConfirm})},[e.onClickConfirm]),P?a.createElement(a.Fragment,null,a.createElement(I,{appLinks:e.appLinks,userType:e.userType,hideValidListings:n,passwordPolicy:e.passwordPolicy,onToggleValidListings:function(){return(0,p.zV)({setHideValidListings:o,hideValidListings:n,userType:e.userType})},bulkChecked:M.bulkChecked,bulkIndeterminate:M.hasSomeSelections(),onClickRemove:function(){var e=M.getSelected();w(e)},disableBulkCheckbox:!N.length,localErrorMessage:e.localErrorMessage}),a.createElement("main",{className:"pt-2 pb-3 position-relative"},a.createElement(b.M,{users:N,invalidUsers:C,userType:e.userType,onClickEdit:c,onClickDelete:w,onClickCreate:e.onClickConfirm,appLinks:e.appLinks,showInvalidEmptyState:n&&!B,emptyStateImageUrl:e.emptyStateImageUrl,showPasswordField:e.showPasswordField,passwordPolicy:e.passwordPolicy,checkboxId:"bulk-upload-remove",isChecked:function(e){return M.isChecked(e)&&!!N.length},onToggleCheckbox:M.onToggleItem,localErrorMessage:e.localErrorMessage,bulkCheckboxChecked:M.bulkChecked,bulkIndeterminate:M.hasSomeSelections(),onToggleBulkCheckbox:M.onToggleBulk,disableBulkCheckbox:!N.length})),!!u&&a.createElement(y.n,{key:u.lookupId,user:u,setUser:c,closePopup:function(){return(0,p.UJ)(c,e.closePopup)},title:s.T.getPhrase(r,"editUser"),userType:e.userType,yearGroups:e.yearGroups,analyticsOptions:v.b.getAnalyticsOptions(e.userType),currentUser:e.currentUser,formSize:e.formSize,validateUser:e.validateUser,emailRequired:e.emailRequired,showPasswordField:e.showPasswordField,passwordPolicy:e.passwordPolicy,validateEmail:e.validateEmail,appLinks:e.appLinks,localErrorMessage:e.localErrorMessage}),!!S.length&&a.createElement(f.Q,{users:S,userType:e.userType,closePopup:function(){return(0,p.RF)(w,e.closePopup)},analyticsOptions:v.b.getAnalyticsOptions(e.userType)})):a.createElement(m,{userType:e.userType,totalCompleted:e.totalValidatedUsers,totalUsers:null==U?void 0:U.length})}var F=t(27150),R=t(26055),Y=t(43820),B=t(149),$=t(31949),H=t(79612),q=t(99742),G=t(29613),D=t(26234),J=t(47288),Z=t(18087);function _(e){return _="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},_(e)}function z(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,a=Array(r);t<r;t++)a[t]=e[t];return a}function Q(e,r,t){return(r=function(e){var r=function(e){if("object"!=_(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!=_(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var W=Q(Q(Q({},c.Y.Learner,"userManager.bulkStudentUploadReviewAccounts"),c.Y.Staff,"userManager.bulkStaffUploadReviewAccounts"),c.Y.Unknown,"");function X(e){var r,t,l=(0,E.V)().users,u=(r=a.useState(0),t=2,function(e){if(Array.isArray(e))return e}(r)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,n,s,i,o=[],l=!0,u=!1;try{if(s=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;l=!1}else for(;!(l=(a=s.call(t)).done)&&(o.push(a.value),o.length!==r);l=!0);}catch(e){u=!0,n=e}finally{try{if(!l&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(u)throw n}}return o}}(r,t)||function(e,r){if(e){if("string"==typeof e)return z(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?z(e,r):void 0}}(r,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.")}()),d=u[0],m=u[1],p=o.a.useBasicFetch($.N.currentUser()),f=o.a.useBasicFetch(p.data&&J.N.yearGroups(p.data.customerId)),y=o.a.useBasicFetch(p.data&&D.F.getCustomerSecuritySettings(p.data.customerId)),b=(0,n.I0)(),g=o.a.useGetFetchAsync();(0,H.M)({title:s.T.getPhrase(W[e.userType],"pageTitle")});var h=(0,Z.Y)(e.userType),k=B.b.useCreateJobErrorAlert();function w(r){i.Q.C$.trigger(Object.assign(Object.assign({},h.userUploadStatus.polling),{params:{userType:e.userType,jobId:r.id}}))}return a.createElement(R.A.Provider,{value:Y.a.Primary},a.createElement(F.$,{appLinks:h,userType:e.userType,currentStep:"review-accounts",canAddExistingUsers:!0},a.createElement("div",{className:"px-3"},a.createElement(V,{onClickConfirm:function(){var r=v.b.getJobData({users:l,customerId:p.data.customerId,userType:e.userType});o.a.fetch(b,G.q.createJob(r,w,k))},userType:e.userType,appLinks:h,currentUser:p.data,yearGroups:f.data,closePopup:e.closePopup,validateSpreadsheet:function(r,t,a){v.b.validateSpreadsheetRequest({users:r,userType:e.userType,customerId:p.data.customerId,dispatch:b,requestFn:J.N.bulkUsersValidate,setTotalCompletedUsers:m,canInviteExistingUsers:!0,onSuccess:t,onError:a})},validateUser:function(r){var t=S.P.formatCreateOrValidateUserRequest([r],e.userType,p.data.customerId);return g(J.N.bulkUsersValidate(t,!0))},totalValidatedUsers:d,setTotalValidatedUsers:m,emptyStateImageUrl:q.W.EmptyStates.UserManager.REVIEWS,showPasswordField:e.userType===c.Y.Learner,emailRequired:e.userType===c.Y.Staff,passwordPolicy:y.data,validateEmail:function(r){var t={userEmails:[{email:r,userType:e.userType}]};return g(J.N.bulkCheckEmail(t,p.data.customerId))},localErrorMessage:v.b.getErrorMessageOverride(e.userType)}))))}},79447:(e,r,t)=>{t.d(r,{Z:()=>m});var a=t(95685),n=t.n(a),s=t(32735),i=t(46304),o=t(58661),l=t(74512);function u(e,r,t){const a=(e-r)/(t-r)*100;return Math.round(1e3*a)/1e3}function c({min:e,now:r,max:t,label:a,visuallyHidden:s,striped:i,animated:o,className:c,style:d,variant:m,bsPrefix:p,...f},y){return(0,l.jsx)("div",{ref:y,...f,role:"progressbar",className:n()(c,`${p}-bar`,{[`bg-${m}`]:m,[`${p}-bar-animated`]:o,[`${p}-bar-striped`]:o||i}),style:{width:`${u(r,e,t)}%`,...d},"aria-valuenow":r,"aria-valuemin":e,"aria-valuemax":t,children:s?(0,l.jsx)("span",{className:"visually-hidden",children:a}):a})}const d=s.forwardRef(({isChild:e=!1,...r},t)=>{const a={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...r};if(a.bsPrefix=(0,i.vE)(a.bsPrefix,"progress"),e)return c(a,t);const{min:u,now:d,max:m,label:p,visuallyHidden:f,striped:y,animated:b,bsPrefix:v,variant:g,className:h,children:k,...E}=a;return(0,l.jsx)("div",{ref:t,...E,className:n()(h,v),children:k?(0,o.UI)(k,e=>(0,s.cloneElement)(e,{isChild:!0})):c({min:u,now:d,max:m,label:p,visuallyHidden:f,striped:y,animated:b,bsPrefix:v,variant:g},t)})});d.displayName="ProgressBar";const m=d}}]);
|
|
2
|
-
//# sourceMappingURL=7815-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7815],{11658:(e,r,t)=>{t.r(r),t.d(r,{BulkUserUploadReviewAccountsView:()=>X});var a=t(32735),n=t(70680),s=t(23481),i=t(81886),o=t(20354),l=t(79447),u=t(83345),c=t(76881),d="userManager.bulkUserUploadLoaderValidation";function m(e){var r,t,n=Math.floor(e.totalCompleted/e.totalUsers*100);return a.createElement("div",{className:"d-flex flex-column align-items-center py-5"},a.createElement("h1",{className:"h5"},a.createElement(u.x,{namespace:d,phrase:e.userType===c.Y.Learner?"headingStudents":"headingStaff"})),a.createElement("p",null,a.createElement(u.x,{namespace:d,phrase:e.userType===c.Y.Learner?"progressStudents":"progressStaff",options:{totalLoaded:null!==(r=e.totalCompleted)&&void 0!==r?r:0,totalUsers:null!==(t=e.totalUsers)&&void 0!==t?t:0}})),a.createElement(l.Z,{className:"w-50",variant:"info",now:n}))}var p=t(67370),f=t(63598),y=t(93898),b=t(42949),v=t(19717),g=t(96728),h=t(69883),k=t(299),E=t(45541),S=t(39739),w=t(91693),T=t(83523),U={downloadCsvArray:function(e,r){var t="data:text/csv;charset=utf-8,";t+=e.map(function(e){return e.join(",")}).join("\n");var a=document.createElement("a");a.href=encodeURI(t),a.download=r,a.click()},safeDownloadCsv:function(e,r){var t=new Blob([e],{type:"text/csv;charset=utf-8;"}),a=URL.createObjectURL(t),n=document.createElement("a");n.href=a,n.download=r,n.click(),URL.revokeObjectURL(a)}},C=t(35223);function x(e){return x="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},x(e)}function P(e,r,t){return(r=function(e){var r=function(e){if("object"!=x(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!=x(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==x(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var L=P(P(P({},c.Y.Learner,"userManager.studentSpreadsheetHeading"),c.Y.Staff,"userManager.staffSpreadsheetHeading"),c.Y.Unknown,"");function I(e){var r=(0,E.V)().invalidUsers,t=v.b.getTotalInvalidListings(r);return a.createElement(a.Fragment,null,a.createElement("h2",{className:"h4"},a.createElement(u.x,{namespace:L[e.userType],phrase:"heading"})),t?a.createElement(a.Fragment,null,a.createElement("p",{className:"mb-3 fw-semibold"},a.createElement(u.x,{namespace:L[e.userType],phrase:"reviewInfo"})),a.createElement("div",{className:"pb-3"},a.createElement(w.h,{svgName:C.vn.Upload,appLink:e.appLinks.userUploadPopup,className:"btn btn-outline-dark me-2"},a.createElement(u.x,{namespace:L[e.userType],phrase:"reupload"})),a.createElement(w.h,{svgName:C.vn.Download,onClick:function(){var t=Object.keys(r).map(function(e){return r[e]}).map(function(r){var t,a,n=r.user,s=r.errorCodes,i=S.P.getMinimumPasswordLength(e.passwordPolicy,n.userType,n.masterRole),o=S.P.getErrorMessages(s,i,!0,e.localErrorMessage),l=function(e){var r,t=o[e]||null;return null===t?null!==(r=n[e])&&void 0!==r?r:"":n[e]?t+=": ".concat(n[e]):t};return e.userType===c.Y.Learner?[l("firstName"),l("surname"),null!==(t=o.masterYearGroup)&&void 0!==t?t:null===(a=n.masterYearGroup)||void 0===a?void 0:a.name,l("email"),l("username"),l("password")]:[l("firstName"),l("surname"),l("email"),l("username")]});e.userType===c.Y.Learner?t.unshift(["First Name","Last Name","Year level","Email","Username","Password"]):t.unshift(["First Name","Last Name","Email","Username"]),U.downloadCsvArray(t,s.T.getPhrase(L[e.userType],"errorFileName"))},className:"btn btn-outline-dark"},a.createElement(u.x,{namespace:L[e.userType],phrase:"exportErrors"})))):a.createElement("p",{className:"mb-2"},a.createElement(u.x,{namespace:L[e.userType],phrase:"reviewComplete"})),a.createElement("div",{className:"d-flex align-items-center flex-wrap"},a.createElement("p",{className:"pe-3 mb-0"},a.createElement(u.x,{namespace:L[e.userType],phrase:"switchLabel"})),a.createElement(T.Z,{onClick:e.onToggleValidListings,on:e.hideValidListings})),a.createElement("div",{className:"d-flex align-items-center ms-3 ps-1 mt-3"},a.createElement(w.h,{svgName:C.vn.Close,onClick:e.onClickRemove,className:"btn btn-outline-dark",disabled:!e.bulkIndeterminate&&!e.bulkChecked||e.disableBulkCheckbox},a.createElement(u.x,{namespace:L[e.userType],phrase:"removeFromSpreadsheet"}))))}function N(e){return N="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},N(e)}function j(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,n,s,i,o=[],l=!0,u=!1;try{if(s=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;l=!1}else for(;!(l=(a=s.call(t)).done)&&(o.push(a.value),o.length!==r);l=!0);}catch(e){u=!0,n=e}finally{try{if(!l&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(u)throw n}}return o}}(e,r)||function(e,r){if(e){if("string"==typeof e)return M(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?M(e,r):void 0}}(e,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.")}()}function M(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,a=Array(r);t<r;t++)a[t]=e[t];return a}function A(e,r,t){return(r=function(e){var r=function(e){if("object"!=N(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!=N(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==N(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var O=A(A(A({},c.Y.Learner,"userManager.editStudentSpreadsheet"),c.Y.Staff,"userManager.editStaffSpreadsheet"),c.Y.Unknown,"");function V(e){var r=O[e.userType],t=j(a.useState(!0),2),n=t[0],o=t[1],l=j(a.useState(),2),u=l[0],c=l[1],d=j(a.useState([]),2),S=d[0],w=d[1],T=(0,E.V)(),U=T.users,C=T.invalidUsers,x=T.setInvalidUsers,P=T.hasValidatedUsers,L=T.setExistingUsers,N=P?n?Object.keys(C).map(function(e){return C[e].user}):U:[],M=(0,k.X)(N,{idField:"lookupId"}),A=a.useContext(g.e),V=A.setDisableNext,F=A.setShowButtons,R=A.setOnClickConfirm,Y=(0,h.Z)(),B=v.b.getTotalInvalidListings(C),$=(0,p.Ix)({hasValidatedUsers:P,setInvalidUsers:x,userType:e.userType,setHideValidListings:o,setExistingUsers:L});function H(){Y.error(s.T.getPhrase(r,"error")),i.Q.C$.trigger(e.appLinks.userManager,{replace:!0})}return a.useEffect(function(){P||(e.setTotalValidatedUsers(0),e.validateSpreadsheet(U,$,H))},[P]),a.useEffect(function(){F(P),V(!!Object.keys(null!=C?C:{}).length)},[C,P]),a.useEffect(function(){R(function(){return e.onClickConfirm})},[e.onClickConfirm]),P?a.createElement(a.Fragment,null,a.createElement(I,{appLinks:e.appLinks,userType:e.userType,hideValidListings:n,passwordPolicy:e.passwordPolicy,onToggleValidListings:function(){return(0,p.zV)({setHideValidListings:o,hideValidListings:n,userType:e.userType})},bulkChecked:M.bulkChecked,bulkIndeterminate:M.hasSomeSelections(),onClickRemove:function(){var e=M.getSelected();w(e)},disableBulkCheckbox:!N.length,localErrorMessage:e.localErrorMessage}),a.createElement("main",{className:"pt-2 pb-3 position-relative"},a.createElement(b.M,{users:N,invalidUsers:C,userType:e.userType,onClickEdit:c,onClickDelete:w,onClickCreate:e.onClickConfirm,appLinks:e.appLinks,showInvalidEmptyState:n&&!B,emptyStateImageUrl:e.emptyStateImageUrl,showPasswordField:e.showPasswordField,passwordPolicy:e.passwordPolicy,checkboxId:"bulk-upload-remove",isChecked:function(e){return M.isChecked(e)&&!!N.length},onToggleCheckbox:M.onToggleItem,localErrorMessage:e.localErrorMessage,bulkCheckboxChecked:M.bulkChecked,bulkIndeterminate:M.hasSomeSelections(),onToggleBulkCheckbox:M.onToggleBulk,disableBulkCheckbox:!N.length})),!!u&&a.createElement(y.n,{key:u.lookupId,user:u,setUser:c,closePopup:function(){return(0,p.UJ)(c,e.closePopup)},title:s.T.getPhrase(r,"editUser"),userType:e.userType,yearGroups:e.yearGroups,analyticsOptions:v.b.getAnalyticsOptions(e.userType),currentUser:e.currentUser,formSize:e.formSize,validateUser:e.validateUser,emailRequired:e.emailRequired,showPasswordField:e.showPasswordField,passwordPolicy:e.passwordPolicy,validateEmail:e.validateEmail,appLinks:e.appLinks,localErrorMessage:e.localErrorMessage}),!!S.length&&a.createElement(f.Q,{users:S,userType:e.userType,closePopup:function(){return(0,p.RF)(w,e.closePopup)},analyticsOptions:v.b.getAnalyticsOptions(e.userType)})):a.createElement(m,{userType:e.userType,totalCompleted:e.totalValidatedUsers,totalUsers:null==U?void 0:U.length})}var F=t(27150),R=t(26055),Y=t(43820),B=t(149),$=t(31949),H=t(79612),q=t(99742),G=t(29613),D=t(80658),J=t(47288),Z=t(18087);function _(e){return _="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},_(e)}function z(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,a=Array(r);t<r;t++)a[t]=e[t];return a}function Q(e,r,t){return(r=function(e){var r=function(e){if("object"!=_(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!=_(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var W=Q(Q(Q({},c.Y.Learner,"userManager.bulkStudentUploadReviewAccounts"),c.Y.Staff,"userManager.bulkStaffUploadReviewAccounts"),c.Y.Unknown,"");function X(e){var r,t,l=(0,E.V)().users,u=(r=a.useState(0),t=2,function(e){if(Array.isArray(e))return e}(r)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,n,s,i,o=[],l=!0,u=!1;try{if(s=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;l=!1}else for(;!(l=(a=s.call(t)).done)&&(o.push(a.value),o.length!==r);l=!0);}catch(e){u=!0,n=e}finally{try{if(!l&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(u)throw n}}return o}}(r,t)||function(e,r){if(e){if("string"==typeof e)return z(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?z(e,r):void 0}}(r,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.")}()),d=u[0],m=u[1],p=o.a.useBasicFetch($.N.currentUser()),f=o.a.useBasicFetch(p.data&&J.N.yearGroups(p.data.customerId)),y=o.a.useBasicFetch(p.data&&D.F.getCustomerSecuritySettings(p.data.customerId)),b=(0,n.I0)(),g=o.a.useGetFetchAsync();(0,H.M)({title:s.T.getPhrase(W[e.userType],"pageTitle")});var h=(0,Z.Y)(e.userType),k=B.b.useCreateJobErrorAlert();function w(r){i.Q.C$.trigger(Object.assign(Object.assign({},h.userUploadStatus.polling),{params:{userType:e.userType,jobId:r.id}}))}return a.createElement(R.A.Provider,{value:Y.a.Primary},a.createElement(F.$,{appLinks:h,userType:e.userType,currentStep:"review-accounts",canAddExistingUsers:!0},a.createElement("div",{className:"px-3"},a.createElement(V,{onClickConfirm:function(){var r=v.b.getJobData({users:l,customerId:p.data.customerId,userType:e.userType});o.a.fetch(b,G.q.createJob(r,w,k))},userType:e.userType,appLinks:h,currentUser:p.data,yearGroups:f.data,closePopup:e.closePopup,validateSpreadsheet:function(r,t,a){v.b.validateSpreadsheetRequest({users:r,userType:e.userType,customerId:p.data.customerId,dispatch:b,requestFn:J.N.bulkUsersValidate,setTotalCompletedUsers:m,canInviteExistingUsers:!0,onSuccess:t,onError:a})},validateUser:function(r){var t=S.P.formatCreateOrValidateUserRequest([r],e.userType,p.data.customerId);return g(J.N.bulkUsersValidate(t,!0))},totalValidatedUsers:d,setTotalValidatedUsers:m,emptyStateImageUrl:q.W.EmptyStates.UserManager.REVIEWS,showPasswordField:e.userType===c.Y.Learner,emailRequired:e.userType===c.Y.Staff,passwordPolicy:y.data,validateEmail:function(r){var t={userEmails:[{email:r,userType:e.userType}]};return g(J.N.bulkCheckEmail(t,p.data.customerId))},localErrorMessage:v.b.getErrorMessageOverride(e.userType)}))))}},79447:(e,r,t)=>{t.d(r,{Z:()=>m});var a=t(95685),n=t.n(a),s=t(32735),i=t(46304),o=t(58661),l=t(74512);function u(e,r,t){const a=(e-r)/(t-r)*100;return Math.round(1e3*a)/1e3}function c({min:e,now:r,max:t,label:a,visuallyHidden:s,striped:i,animated:o,className:c,style:d,variant:m,bsPrefix:p,...f},y){return(0,l.jsx)("div",{ref:y,...f,role:"progressbar",className:n()(c,`${p}-bar`,{[`bg-${m}`]:m,[`${p}-bar-animated`]:o,[`${p}-bar-striped`]:o||i}),style:{width:`${u(r,e,t)}%`,...d},"aria-valuenow":r,"aria-valuemin":e,"aria-valuemax":t,children:s?(0,l.jsx)("span",{className:"visually-hidden",children:a}):a})}const d=s.forwardRef(({isChild:e=!1,...r},t)=>{const a={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...r};if(a.bsPrefix=(0,i.vE)(a.bsPrefix,"progress"),e)return c(a,t);const{min:u,now:d,max:m,label:p,visuallyHidden:f,striped:y,animated:b,bsPrefix:v,variant:g,className:h,children:k,...E}=a;return(0,l.jsx)("div",{ref:t,...E,className:n()(h,v),children:k?(0,o.UI)(k,e=>(0,s.cloneElement)(e,{isChild:!0})):c({min:u,now:d,max:m,label:p,visuallyHidden:f,striped:y,animated:b,bsPrefix:v,variant:g},t)})});d.displayName="ProgressBar";const m=d}}]);
|
|
2
|
+
//# sourceMappingURL=7815-05c5e8df47-lite.chunk.js.map
|
package/dist/scripts/{7815-554d031e0a-lite.chunk.js.map → 7815-05c5e8df47-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7815-554d031e0a-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/bulk-user-upload-loader/BulkUserUploadLoader.tsx","file:///app/packages/libs/shared/src/utils/FileHelper.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/edit-user-spreadsheet/spreadsheet-heading/EditUserSpreadsheetHeading.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/edit-user-spreadsheet/EditUserSpreadsheet.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/bulk-user-upload/review-accounts/BulkUserUploadReviewAccountsView.tsx","file:///app/node_modules/react-bootstrap/esm/ProgressBar.js"],"sourcesContent":["import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.bulkUserUploadLoaderValidation';\n\ninterface BulkUserUploadLoaderProps {\n userType: UserGroup;\n totalCompleted: number;\n totalUsers: number;\n}\n\nexport function BulkUserUploadLoader(props: BulkUserUploadLoaderProps): JSX.Element {\n const percentageLoaded = Math.floor(props.totalCompleted / props.totalUsers * 100);\n\n return (\n <div className='d-flex flex-column align-items-center py-5'>\n <h1 className='h5'>\n <Text namespace={namespace} phrase={props.userType === UserGroup.Learner ? 'headingStudents' : 'headingStaff'} />\n </h1>\n <p>\n <Text\n namespace={namespace}\n phrase={props.userType === UserGroup.Learner ? 'progressStudents' : 'progressStaff'}\n options={{\n totalLoaded: props.totalCompleted ?? 0,\n totalUsers: props.totalUsers ?? 0\n }}\n />\n </p>\n \n <ProgressBar className='w-50' variant='info' now={percentageLoaded} />\n </div>\n );\n}","export const FileHelper = {\n downloadCsvArray(rows: string[][], filename: string): void {\n let csvContent = 'data:text/csv;charset=utf-8,';\n\n csvContent += rows.map(row => row.join(',')).join('\\n');\n\n const anchor = document.createElement('a');\n\n anchor.href = encodeURI(csvContent);\n anchor.download = filename;\n anchor.click();\n },\n // This handles special characters in csv\n safeDownloadCsv(csvContent: string, filename: string): void {\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n\n URL.revokeObjectURL(url);\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { FileHelper } from 'libs/shared/utils/FileHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespaces = {\n [UserGroup.Learner]: 'userManager.studentSpreadsheetHeading',\n [UserGroup.Staff]: 'userManager.staffSpreadsheetHeading',\n [UserGroup.Unknown]: ''\n};\n\ninterface EditUserSpreadsheetHeadingProps {\n appLinks: UserManagerAppLinks;\n userType: UserGroup;\n passwordPolicy: SecuritySettingsResponse;\n onToggleValidListings: () => void;\n hideValidListings: boolean;\n\n bulkChecked: boolean;\n bulkIndeterminate: boolean;\n onClickRemove: () => void;\n disableBulkCheckbox: boolean;\n localErrorMessage?: HashObject;\n}\n\nexport function EditUserSpreadsheetHeading(props: EditUserSpreadsheetHeadingProps): JSX.Element {\n const { invalidUsers } = useBulkUploadUsers();\n\n function onClickExportErrors(): void {\n const erroredUsers = Object.keys(invalidUsers).map(name => invalidUsers[name]);\n\n const rows = erroredUsers.map(erroredUser => {\n const { user, errorCodes } = erroredUser;\n\n const minPasswordLength = UserManagerHelper.getMinimumPasswordLength(\n props.passwordPolicy,\n user.userType,\n user.masterRole\n );\n\n const errorMessages = UserManagerHelper.getErrorMessages(\n errorCodes,\n minPasswordLength,\n true,\n props.localErrorMessage\n );\n\n const getError = (key: keyof typeof user) => {\n let error: string | null = errorMessages[key] || null;\n\n if (error === null)\n return user[key] ?? '';\n\n if (!user[key])\n return error;\n\n error += `: ${user[key]}`;\n\n return error;\n };\n\n if (props.userType === UserGroup.Learner) {\n return [\n getError('firstName'),\n getError('surname'),\n errorMessages.masterYearGroup ?? user.masterYearGroup?.name,\n getError('email'),\n getError('username'),\n getError('password')\n ];\n }\n\n // Staff\n return [\n getError('firstName'),\n getError('surname'),\n getError('email'),\n getError('username')\n ];\n });\n\n // Add heading rows so it can be uploaded again\n if (props.userType === UserGroup.Learner) {\n rows.unshift([ 'First Name', 'Last Name', 'Year level', 'Email', 'Username', 'Password' ]);\n } else {\n rows.unshift([ 'First Name', 'Last Name', 'Email', 'Username' ]);\n }\n\n FileHelper.downloadCsvArray(rows, LanguageService.getPhrase(namespaces[props.userType], 'errorFileName'));\n }\n\n const totalInvalidListings = BulkUserUploadHelper.getTotalInvalidListings(invalidUsers);\n\n return (\n <>\n <h2 className='h4'><Text namespace={namespaces[props.userType]} phrase='heading' /></h2>\n\n {totalInvalidListings ? (\n <>\n <p className='mb-3 fw-semibold'>\n <Text namespace={namespaces[props.userType]} phrase='reviewInfo' />\n </p>\n\n <div className='pb-3'>\n <IconButton svgName={cvSvgLibrary.Upload} appLink={props.appLinks.userUploadPopup} className='btn btn-outline-dark me-2'>\n <Text namespace={namespaces[props.userType]} phrase='reupload' />\n </IconButton>\n <IconButton svgName={cvSvgLibrary.Download} onClick={onClickExportErrors} className='btn btn-outline-dark'>\n <Text namespace={namespaces[props.userType]} phrase='exportErrors' />\n </IconButton>\n </div>\n </>\n ) : (\n <p className='mb-2'>\n <Text namespace={namespaces[props.userType]} phrase='reviewComplete' />\n </p>\n )}\n\n <div className='d-flex align-items-center flex-wrap'>\n <p className='pe-3 mb-0'><Text namespace={namespaces[props.userType]} phrase='switchLabel' /></p>\n <ToggleSwitch\n onClick={props.onToggleValidListings}\n on={props.hideValidListings}\n />\n </div>\n\n <div className='d-flex align-items-center ms-3 ps-1 mt-3'>\n <IconButton\n svgName={cvSvgLibrary.Close}\n onClick={props.onClickRemove}\n className='btn btn-outline-dark'\n disabled={(!props.bulkIndeterminate && !props.bulkChecked) || props.disableBulkCheckbox}\n >\n <Text namespace={namespaces[props.userType]} phrase='removeFromSpreadsheet' />\n </IconButton>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { BulkUserUploadLoader } from 'libs/shared/apps/user-manager/components/bulk-upload/bulk-user-upload-loader/BulkUserUploadLoader';\nimport { getOnValidateSuccess, onCloseDeletePopup, onCloseEditPopup, onToggleValidListings } from 'libs/shared/apps/user-manager/components/bulk-upload/BulkUserUploadEvents';\nimport { DeleteUploadedUserPopup } from 'libs/shared/apps/user-manager/components/delete-uploaded-user-popup/DeleteUploadedUserPopup';\nimport { EditUploadedUserPopup } from 'libs/shared/apps/user-manager/components/edit-uploaded-user-popup/EditUploadedUserPopup';\nimport { UserReviewTable } from 'libs/shared/apps/user-manager/components/user-review-table/UserReviewTable';\nimport { BulkUserEmailCheckResponse, EditUserRequest, ErroredUsers, UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { CurrentUser, YearGroup } from 'libs/shared/interfaces';\n\nimport { useBulkUploadUsers } from '../../../hooks/useBulkUploadUsers';\nimport { SecuritySettingsResponse } from '../../../interfaces/SecuritySettingsResponse';\n\nimport { EditUserSpreadsheetHeading } from './spreadsheet-heading/EditUserSpreadsheetHeading';\n\nconst subNamespaces = {\n [UserGroup.Learner]: 'userManager.editStudentSpreadsheet',\n [UserGroup.Staff]: 'userManager.editStaffSpreadsheet',\n [UserGroup.Unknown]: ''\n};\n\ntype ValidateAllFunction = (\n users: EditUserRequest[],\n onSuccess: (errors: ErroredUsers, users: EditUserRequest[]) => void,\n onError: () => void\n) => void;\n\ninterface EditUserSpreadsheetProps {\n userType: UserGroup;\n appLinks: UserManagerAppLinks;\n currentUser: CurrentUser;\n validateSpreadsheet: ValidateAllFunction;\n validateUser: (user: EditUserRequest) => Promise<ErroredUsers>;\n validateEmail?: (email: string) => Promise<BulkUserEmailCheckResponse>;\n closePopup: () => void;\n emptyStateImageUrl: string;\n totalValidatedUsers: number;\n setTotalValidatedUsers: (total: number) => void;\n yearGroups: YearGroup[];\n emailRequired: boolean;\n passwordPolicy: SecuritySettingsResponse;\n onClickConfirm: () => void;\n showPasswordField?: boolean;\n formSize?: FormSize;\n localErrorMessage?: HashObject;\n}\n\nexport function EditUserSpreadsheet(props: EditUserSpreadsheetProps): JSX.Element {\n const subNamespace = subNamespaces[props.userType];\n\n const [ hideValidListings, setHideValidListings ] = React.useState(true);\n const [ editingUser, setEditingUser ] = React.useState<EditUserRequest>();\n const [ deletingUsers, setDeletingUsers ] = React.useState<string[]>([]);\n\n const { users, invalidUsers, setInvalidUsers, hasValidatedUsers, setExistingUsers } = useBulkUploadUsers();\n\n function getUsersToDisplay(): EditUserRequest[] {\n // We don't want to show any users until validation is completed\n if (!hasValidatedUsers)\n return [];\n \n // If the toggle switch to hide valid listings is on, we filter out all valid listings\n if (hideValidListings)\n return Object.keys(invalidUsers).map(name => invalidUsers[name].user);\n \n // Else, show all users\n return users;\n }\n\n const usersToDisplay = getUsersToDisplay();\n\n const CheckboxHelper = useBulkCheckboxManager(usersToDisplay, { idField: 'lookupId' });\n\n const { setDisableNext, setShowButtons, setOnClickConfirm } = React.useContext(WizardLayoutContext);\n\n const alerts = useAlerts();\n\n const totalInvalidListings = BulkUserUploadHelper.getTotalInvalidListings(invalidUsers);\n\n const onValidateSuccess = getOnValidateSuccess({\n hasValidatedUsers,\n setInvalidUsers,\n userType: props.userType,\n setHideValidListings,\n setExistingUsers\n });\n\n function onValidateError(): void {\n alerts.error(LanguageService.getPhrase(subNamespace, 'error'));\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n }\n\n function onClickRemove(): void {\n const selected = CheckboxHelper.getSelected();\n \n setDeletingUsers(selected);\n }\n\n // Runs on page load to lock the nav, and validate the initially uploaded users\n React.useEffect(() => {\n if (hasValidatedUsers)\n return;\n\n props.setTotalValidatedUsers(0);\n\n // Everytime the reducer state changes, we want to validate the new state.\n props.validateSpreadsheet(users, onValidateSuccess, onValidateError);\n }, [hasValidatedUsers]);\n\n React.useEffect(() => {\n setShowButtons(hasValidatedUsers);\n setDisableNext(!!Object.keys(invalidUsers ?? {}).length);\n }, [ invalidUsers, hasValidatedUsers ]);\n\n React.useEffect(() => {\n setOnClickConfirm(() => props.onClickConfirm);\n }, [props.onClickConfirm]);\n\n if (!hasValidatedUsers) {\n return (\n <BulkUserUploadLoader\n userType={props.userType}\n totalCompleted={props.totalValidatedUsers}\n totalUsers={users?.length}\n />\n );\n }\n\n return (\n <>\n <EditUserSpreadsheetHeading\n appLinks={props.appLinks}\n userType={props.userType}\n hideValidListings={hideValidListings}\n passwordPolicy={props.passwordPolicy}\n onToggleValidListings={() => onToggleValidListings({\n setHideValidListings,\n hideValidListings,\n userType: props.userType\n })}\n bulkChecked={CheckboxHelper.bulkChecked}\n bulkIndeterminate={CheckboxHelper.hasSomeSelections()}\n onClickRemove={onClickRemove}\n disableBulkCheckbox={!usersToDisplay.length}\n localErrorMessage={props.localErrorMessage}\n />\n\n <main className='pt-2 pb-3 position-relative'>\n <UserReviewTable\n users={usersToDisplay}\n invalidUsers={invalidUsers}\n userType={props.userType}\n onClickEdit={setEditingUser}\n onClickDelete={setDeletingUsers}\n onClickCreate={props.onClickConfirm}\n appLinks={props.appLinks}\n showInvalidEmptyState={hideValidListings && !totalInvalidListings}\n emptyStateImageUrl={props.emptyStateImageUrl}\n showPasswordField={props.showPasswordField}\n passwordPolicy={props.passwordPolicy}\n checkboxId='bulk-upload-remove'\n isChecked={id => CheckboxHelper.isChecked(id) && !!usersToDisplay.length}\n onToggleCheckbox={CheckboxHelper.onToggleItem}\n localErrorMessage={props.localErrorMessage}\n bulkCheckboxChecked={CheckboxHelper.bulkChecked}\n bulkIndeterminate={CheckboxHelper.hasSomeSelections()}\n onToggleBulkCheckbox={CheckboxHelper.onToggleBulk}\n disableBulkCheckbox={!usersToDisplay.length}\n />\n </main>\n\n {!!editingUser && (\n <EditUploadedUserPopup\n key={editingUser.lookupId}\n user={editingUser}\n setUser={setEditingUser}\n closePopup={() => onCloseEditPopup(setEditingUser, props.closePopup)}\n title={LanguageService.getPhrase(subNamespace, 'editUser')}\n userType={props.userType}\n yearGroups={props.yearGroups}\n analyticsOptions={BulkUserUploadHelper.getAnalyticsOptions(props.userType)}\n currentUser={props.currentUser}\n formSize={props.formSize}\n validateUser={props.validateUser}\n emailRequired={props.emailRequired}\n showPasswordField={props.showPasswordField}\n passwordPolicy={props.passwordPolicy}\n validateEmail={props.validateEmail}\n appLinks={props.appLinks}\n localErrorMessage={props.localErrorMessage}\n />\n )}\n\n {!!deletingUsers.length && (\n <DeleteUploadedUserPopup\n users={deletingUsers}\n userType={props.userType}\n closePopup={() => onCloseDeletePopup(setDeletingUsers, props.closePopup)}\n analyticsOptions={BulkUserUploadHelper.getAnalyticsOptions(props.userType)}\n />\n )}\n </>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { EditUserSpreadsheet } from 'libs/shared/apps/user-manager/components/bulk-upload/edit-user-spreadsheet/EditUserSpreadsheet';\nimport { BulkUserUploadWizardLayout } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { BulkUserEmailCheckRequest, BulkUserEmailCheckResponse, EditUserRequest, ErroredUsers } from 'libs/shared/apps/user-manager/interfaces';\nimport { UserWizardParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserWizardParams';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJob, CurrentUser, PropsWithPopupViewProps, YearGroup } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { SecuritySettingsRequests } from 'apps/settings/flight-requests/SecuritySettingsRequests';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespaces = {\n [UserGroup.Learner]: 'userManager.bulkStudentUploadReviewAccounts',\n [UserGroup.Staff]: 'userManager.bulkStaffUploadReviewAccounts',\n [UserGroup.Unknown]: ''\n};\n\nexport function BulkUserUploadReviewAccountsView(props: PropsWithPopupViewProps<UserWizardParams>): JSX.Element {\n const { users } = useBulkUploadUsers();\n\n const [ totalValidatedUsers, setTotalValidatedUsers ] = React.useState(0);\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && UserManagerRequests.yearGroups(currentUser.data.customerId)\n );\n const passwordPolicy = Flight.useBasicFetch<SecuritySettingsResponse>(currentUser.data &&\n SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId));\n\n const dispatch = useDispatch();\n const fetchAsync = Flight.useGetFetchAsync();\n useSetPageMetadata({ title: LanguageService.getPhrase(namespaces[props.userType], 'pageTitle') });\n\n const appLinks = getUserManagerAppLinks(props.userType);\n\n /**\n * Will validate the entire spreadsheet. This can be a very slow operation, so it should\n * only ever be run once when the user first uploads their spreadsheet\n */\n function validateSpreadsheet(\n users: EditUserRequest[],\n onSuccess: (errors: ErroredUsers, users: EditUserRequest[]) => void,\n onError: () => void\n ): void {\n BulkUserUploadHelper.validateSpreadsheetRequest({\n users,\n userType: props.userType,\n customerId: currentUser.data.customerId,\n dispatch,\n requestFn: UserManagerRequests.bulkUsersValidate,\n setTotalCompletedUsers: setTotalValidatedUsers,\n canInviteExistingUsers: true,\n onSuccess,\n onError\n });\n }\n\n function validateUser(user: EditUserRequest): Promise<ErroredUsers> {\n const data = UserManagerHelper.formatCreateOrValidateUserRequest(\n [user],\n props.userType,\n currentUser.data.customerId\n );\n\n return fetchAsync(UserManagerRequests.bulkUsersValidate(data, true));\n }\n\n function validateEmail(email: string): Promise<BulkUserEmailCheckResponse> {\n const body: BulkUserEmailCheckRequest = {\n userEmails: [{ email, userType: props.userType }]\n };\n\n return fetchAsync(UserManagerRequests.bulkCheckEmail(body, currentUser.data.customerId));\n }\n\n const onCreateJobError = BulkUserActionsHelper.useCreateJobErrorAlert();\n function startBulkUpload(): void {\n const jobData = BulkUserUploadHelper.getJobData({\n users, customerId: currentUser.data.customerId, userType: props.userType\n });\n Flight.fetch(dispatch, JobRequests.createJob(jobData, onCreateJob, onCreateJobError));\n }\n\n function onCreateJob(job: BatchJob): void {\n Core.AppLinkHelper.trigger({\n ...appLinks.userUploadStatus.polling,\n params: {\n userType: props.userType,\n jobId: job.id\n }\n });\n }\n\n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <BulkUserUploadWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n currentStep='review-accounts'\n canAddExistingUsers\n >\n <div className='px-3'>\n <EditUserSpreadsheet\n onClickConfirm={startBulkUpload}\n userType={props.userType}\n appLinks={appLinks}\n currentUser={currentUser.data}\n yearGroups={yearGroups.data}\n closePopup={props.closePopup}\n validateSpreadsheet={validateSpreadsheet}\n validateUser={validateUser}\n totalValidatedUsers={totalValidatedUsers}\n setTotalValidatedUsers={setTotalValidatedUsers}\n emptyStateImageUrl={ImageUrls.EmptyStates.UserManager.REVIEWS}\n showPasswordField={props.userType === UserGroup.Learner}\n emailRequired={props.userType === UserGroup.Staff}\n passwordPolicy={passwordPolicy.data}\n validateEmail={validateEmail}\n localErrorMessage={BulkUserUploadHelper.getErrorMessageOverride(props.userType)}\n />\n </div>\n </BulkUserUploadWizardLayout>\n </UserManagerClientContext.Provider>\n );\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { map } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ROUND_PRECISION = 1000;\n\n/**\n * Validate that children, if any, are instances of `ProgressBar`.\n */\nfunction onlyProgressBar(props, propName, componentName) {\n const children = props[propName];\n if (!children) {\n return null;\n }\n let error = null;\n React.Children.forEach(children, child => {\n if (error) {\n return;\n }\n\n /**\n * Compare types in a way that works with libraries that patch and proxy\n * components like react-hot-loader.\n *\n * see https://github.com/gaearon/react-hot-loader#checking-element-types\n */\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const element = /*#__PURE__*/_jsx(ProgressBar, {});\n if (child.type === element.type) return;\n const childType = child.type;\n const childIdentifier = /*#__PURE__*/React.isValidElement(child) ? childType.displayName || childType.name || childType : child;\n error = new Error(`Children of ${componentName} can contain only ProgressBar ` + `components. Found ${childIdentifier}.`);\n });\n return error;\n}\nfunction getPercentage(now, min, max) {\n const percentage = (now - min) / (max - min) * 100;\n return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\nfunction renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n className,\n style,\n variant,\n bsPrefix,\n ...props\n}, ref) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...props,\n role: \"progressbar\",\n className: classNames(className, `${bsPrefix}-bar`, {\n [`bg-${variant}`]: variant,\n [`${bsPrefix}-bar-animated`]: animated,\n [`${bsPrefix}-bar-striped`]: animated || striped\n }),\n style: {\n width: `${getPercentage(now, min, max)}%`,\n ...style\n },\n \"aria-valuenow\": now,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n children: visuallyHidden ? /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: label\n }) : label\n });\n}\nconst ProgressBar = /*#__PURE__*/React.forwardRef(({\n isChild = false,\n ...rest\n}, ref) => {\n const props = {\n min: 0,\n max: 100,\n animated: false,\n visuallyHidden: false,\n striped: false,\n ...rest\n };\n props.bsPrefix = useBootstrapPrefix(props.bsPrefix, 'progress');\n if (isChild) {\n return renderProgressBar(props, ref);\n }\n const {\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant,\n className,\n children,\n ...wrapperProps\n } = props;\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...wrapperProps,\n className: classNames(className, bsPrefix),\n children: children ? map(children, child => /*#__PURE__*/cloneElement(child, {\n isChild: true\n })) : renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant\n }, ref)\n });\n});\nProgressBar.displayName = 'ProgressBar';\nexport default ProgressBar;"],"names":["namespace","BulkUserUploadLoader","props","percentageLoaded","Math","floor","totalCompleted","totalUsers","className","Text","phrase","userType","UserGroup","options","totalLoaded","ProgressBar","variant","now","FileHelper","downloadCsvArray","rows","filename","csvContent","map","row","join","anchor","document","createElement","href","encodeURI","download","click","safeDownloadCsv","blob","Blob","type","url","URL","createObjectURL","revokeObjectURL","namespaces","EditUserSpreadsheetHeading","invalidUsers","useBulkUploadUsers","totalInvalidListings","BulkUserUploadHelper","IconButton","svgName","appLink","appLinks","userUploadPopup","onClick","Object","keys","name","erroredUser","user","errorCodes","minPasswordLength","UserManagerHelper","passwordPolicy","masterRole","errorMessages","localErrorMessage","getError","key","error","masterYearGroup","unshift","LanguageService","ToggleSwitch","onToggleValidListings","on","hideValidListings","onClickRemove","disabled","bulkIndeterminate","bulkChecked","disableBulkCheckbox","subNamespaces","EditUserSpreadsheet","subNamespace","setHideValidListings","editingUser","setEditingUser","deletingUsers","setDeletingUsers","users","setInvalidUsers","hasValidatedUsers","setExistingUsers","usersToDisplay","CheckboxHelper","useBulkCheckboxManager","idField","WizardLayoutContext","setDisableNext","setShowButtons","setOnClickConfirm","alerts","onValidateSuccess","onValidateError","userManager","replace","setTotalValidatedUsers","validateSpreadsheet","length","onClickConfirm","hasSomeSelections","selected","getSelected","UserReviewTable","onClickEdit","onClickDelete","onClickCreate","showInvalidEmptyState","emptyStateImageUrl","showPasswordField","checkboxId","isChecked","id","onToggleCheckbox","onToggleItem","bulkCheckboxChecked","onToggleBulkCheckbox","onToggleBulk","EditUploadedUserPopup","lookupId","setUser","closePopup","title","yearGroups","analyticsOptions","currentUser","formSize","validateUser","emailRequired","validateEmail","DeleteUploadedUserPopup","totalValidatedUsers","BulkUserUploadReviewAccountsView","UserRequests","data","UserManagerRequests","customerId","SecuritySettingsRequests","dispatch","fetchAsync","useSetPageMetadata","onCreateJobError","BulkUserActionsHelper","onCreateJob","job","userUploadStatus","polling","params","jobId","UserManagerClientContext","value","UserManagerClient","BulkUserUploadWizardLayout","currentStep","canAddExistingUsers","jobData","JobRequests","onSuccess","onError","requestFn","setTotalCompletedUsers","canInviteExistingUsers","ImageUrls","email","body","userEmails","getPercentage","min","max","percentage","round","renderProgressBar","label","visuallyHidden","striped","animated","style","bsPrefix","ref","role","width","children","isChild","rest","wrapperProps","child","cloneElement","displayName"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/7815-05c5e8df47-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/bulk-user-upload-loader/BulkUserUploadLoader.tsx","file:///app/packages/libs/shared/src/utils/FileHelper.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/edit-user-spreadsheet/spreadsheet-heading/EditUserSpreadsheetHeading.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/edit-user-spreadsheet/EditUserSpreadsheet.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/bulk-user-upload/review-accounts/BulkUserUploadReviewAccountsView.tsx","file:///app/node_modules/react-bootstrap/esm/ProgressBar.js"],"sourcesContent":["import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.bulkUserUploadLoaderValidation';\n\ninterface BulkUserUploadLoaderProps {\n userType: UserGroup;\n totalCompleted: number;\n totalUsers: number;\n}\n\nexport function BulkUserUploadLoader(props: BulkUserUploadLoaderProps): JSX.Element {\n const percentageLoaded = Math.floor(props.totalCompleted / props.totalUsers * 100);\n\n return (\n <div className='d-flex flex-column align-items-center py-5'>\n <h1 className='h5'>\n <Text namespace={namespace} phrase={props.userType === UserGroup.Learner ? 'headingStudents' : 'headingStaff'} />\n </h1>\n <p>\n <Text\n namespace={namespace}\n phrase={props.userType === UserGroup.Learner ? 'progressStudents' : 'progressStaff'}\n options={{\n totalLoaded: props.totalCompleted ?? 0,\n totalUsers: props.totalUsers ?? 0\n }}\n />\n </p>\n \n <ProgressBar className='w-50' variant='info' now={percentageLoaded} />\n </div>\n );\n}","export const FileHelper = {\n downloadCsvArray(rows: string[][], filename: string): void {\n let csvContent = 'data:text/csv;charset=utf-8,';\n\n csvContent += rows.map(row => row.join(',')).join('\\n');\n\n const anchor = document.createElement('a');\n\n anchor.href = encodeURI(csvContent);\n anchor.download = filename;\n anchor.click();\n },\n // This handles special characters in csv\n safeDownloadCsv(csvContent: string, filename: string): void {\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n\n URL.revokeObjectURL(url);\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { FileHelper } from 'libs/shared/utils/FileHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespaces = {\n [UserGroup.Learner]: 'userManager.studentSpreadsheetHeading',\n [UserGroup.Staff]: 'userManager.staffSpreadsheetHeading',\n [UserGroup.Unknown]: ''\n};\n\ninterface EditUserSpreadsheetHeadingProps {\n appLinks: UserManagerAppLinks;\n userType: UserGroup;\n passwordPolicy: SecuritySettingsResponse;\n onToggleValidListings: () => void;\n hideValidListings: boolean;\n\n bulkChecked: boolean;\n bulkIndeterminate: boolean;\n onClickRemove: () => void;\n disableBulkCheckbox: boolean;\n localErrorMessage?: HashObject;\n}\n\nexport function EditUserSpreadsheetHeading(props: EditUserSpreadsheetHeadingProps): JSX.Element {\n const { invalidUsers } = useBulkUploadUsers();\n\n function onClickExportErrors(): void {\n const erroredUsers = Object.keys(invalidUsers).map(name => invalidUsers[name]);\n\n const rows = erroredUsers.map(erroredUser => {\n const { user, errorCodes } = erroredUser;\n\n const minPasswordLength = UserManagerHelper.getMinimumPasswordLength(\n props.passwordPolicy,\n user.userType,\n user.masterRole\n );\n\n const errorMessages = UserManagerHelper.getErrorMessages(\n errorCodes,\n minPasswordLength,\n true,\n props.localErrorMessage\n );\n\n const getError = (key: keyof typeof user) => {\n let error: string | null = errorMessages[key] || null;\n\n if (error === null)\n return user[key] ?? '';\n\n if (!user[key])\n return error;\n\n error += `: ${user[key]}`;\n\n return error;\n };\n\n if (props.userType === UserGroup.Learner) {\n return [\n getError('firstName'),\n getError('surname'),\n errorMessages.masterYearGroup ?? user.masterYearGroup?.name,\n getError('email'),\n getError('username'),\n getError('password')\n ];\n }\n\n // Staff\n return [\n getError('firstName'),\n getError('surname'),\n getError('email'),\n getError('username')\n ];\n });\n\n // Add heading rows so it can be uploaded again\n if (props.userType === UserGroup.Learner) {\n rows.unshift([ 'First Name', 'Last Name', 'Year level', 'Email', 'Username', 'Password' ]);\n } else {\n rows.unshift([ 'First Name', 'Last Name', 'Email', 'Username' ]);\n }\n\n FileHelper.downloadCsvArray(rows, LanguageService.getPhrase(namespaces[props.userType], 'errorFileName'));\n }\n\n const totalInvalidListings = BulkUserUploadHelper.getTotalInvalidListings(invalidUsers);\n\n return (\n <>\n <h2 className='h4'><Text namespace={namespaces[props.userType]} phrase='heading' /></h2>\n\n {totalInvalidListings ? (\n <>\n <p className='mb-3 fw-semibold'>\n <Text namespace={namespaces[props.userType]} phrase='reviewInfo' />\n </p>\n\n <div className='pb-3'>\n <IconButton svgName={cvSvgLibrary.Upload} appLink={props.appLinks.userUploadPopup} className='btn btn-outline-dark me-2'>\n <Text namespace={namespaces[props.userType]} phrase='reupload' />\n </IconButton>\n <IconButton svgName={cvSvgLibrary.Download} onClick={onClickExportErrors} className='btn btn-outline-dark'>\n <Text namespace={namespaces[props.userType]} phrase='exportErrors' />\n </IconButton>\n </div>\n </>\n ) : (\n <p className='mb-2'>\n <Text namespace={namespaces[props.userType]} phrase='reviewComplete' />\n </p>\n )}\n\n <div className='d-flex align-items-center flex-wrap'>\n <p className='pe-3 mb-0'><Text namespace={namespaces[props.userType]} phrase='switchLabel' /></p>\n <ToggleSwitch\n onClick={props.onToggleValidListings}\n on={props.hideValidListings}\n />\n </div>\n\n <div className='d-flex align-items-center ms-3 ps-1 mt-3'>\n <IconButton\n svgName={cvSvgLibrary.Close}\n onClick={props.onClickRemove}\n className='btn btn-outline-dark'\n disabled={(!props.bulkIndeterminate && !props.bulkChecked) || props.disableBulkCheckbox}\n >\n <Text namespace={namespaces[props.userType]} phrase='removeFromSpreadsheet' />\n </IconButton>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { BulkUserUploadLoader } from 'libs/shared/apps/user-manager/components/bulk-upload/bulk-user-upload-loader/BulkUserUploadLoader';\nimport { getOnValidateSuccess, onCloseDeletePopup, onCloseEditPopup, onToggleValidListings } from 'libs/shared/apps/user-manager/components/bulk-upload/BulkUserUploadEvents';\nimport { DeleteUploadedUserPopup } from 'libs/shared/apps/user-manager/components/delete-uploaded-user-popup/DeleteUploadedUserPopup';\nimport { EditUploadedUserPopup } from 'libs/shared/apps/user-manager/components/edit-uploaded-user-popup/EditUploadedUserPopup';\nimport { UserReviewTable } from 'libs/shared/apps/user-manager/components/user-review-table/UserReviewTable';\nimport { BulkUserEmailCheckResponse, EditUserRequest, ErroredUsers, UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { CurrentUser, YearGroup } from 'libs/shared/interfaces';\n\nimport { useBulkUploadUsers } from '../../../hooks/useBulkUploadUsers';\nimport { SecuritySettingsResponse } from '../../../interfaces/SecuritySettingsResponse';\n\nimport { EditUserSpreadsheetHeading } from './spreadsheet-heading/EditUserSpreadsheetHeading';\n\nconst subNamespaces = {\n [UserGroup.Learner]: 'userManager.editStudentSpreadsheet',\n [UserGroup.Staff]: 'userManager.editStaffSpreadsheet',\n [UserGroup.Unknown]: ''\n};\n\ntype ValidateAllFunction = (\n users: EditUserRequest[],\n onSuccess: (errors: ErroredUsers, users: EditUserRequest[]) => void,\n onError: () => void\n) => void;\n\ninterface EditUserSpreadsheetProps {\n userType: UserGroup;\n appLinks: UserManagerAppLinks;\n currentUser: CurrentUser;\n validateSpreadsheet: ValidateAllFunction;\n validateUser: (user: EditUserRequest) => Promise<ErroredUsers>;\n validateEmail?: (email: string) => Promise<BulkUserEmailCheckResponse>;\n closePopup: () => void;\n emptyStateImageUrl: string;\n totalValidatedUsers: number;\n setTotalValidatedUsers: (total: number) => void;\n yearGroups: YearGroup[];\n emailRequired: boolean;\n passwordPolicy: SecuritySettingsResponse;\n onClickConfirm: () => void;\n showPasswordField?: boolean;\n formSize?: FormSize;\n localErrorMessage?: HashObject;\n}\n\nexport function EditUserSpreadsheet(props: EditUserSpreadsheetProps): JSX.Element {\n const subNamespace = subNamespaces[props.userType];\n\n const [ hideValidListings, setHideValidListings ] = React.useState(true);\n const [ editingUser, setEditingUser ] = React.useState<EditUserRequest>();\n const [ deletingUsers, setDeletingUsers ] = React.useState<string[]>([]);\n\n const { users, invalidUsers, setInvalidUsers, hasValidatedUsers, setExistingUsers } = useBulkUploadUsers();\n\n function getUsersToDisplay(): EditUserRequest[] {\n // We don't want to show any users until validation is completed\n if (!hasValidatedUsers)\n return [];\n \n // If the toggle switch to hide valid listings is on, we filter out all valid listings\n if (hideValidListings)\n return Object.keys(invalidUsers).map(name => invalidUsers[name].user);\n \n // Else, show all users\n return users;\n }\n\n const usersToDisplay = getUsersToDisplay();\n\n const CheckboxHelper = useBulkCheckboxManager(usersToDisplay, { idField: 'lookupId' });\n\n const { setDisableNext, setShowButtons, setOnClickConfirm } = React.useContext(WizardLayoutContext);\n\n const alerts = useAlerts();\n\n const totalInvalidListings = BulkUserUploadHelper.getTotalInvalidListings(invalidUsers);\n\n const onValidateSuccess = getOnValidateSuccess({\n hasValidatedUsers,\n setInvalidUsers,\n userType: props.userType,\n setHideValidListings,\n setExistingUsers\n });\n\n function onValidateError(): void {\n alerts.error(LanguageService.getPhrase(subNamespace, 'error'));\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n }\n\n function onClickRemove(): void {\n const selected = CheckboxHelper.getSelected();\n \n setDeletingUsers(selected);\n }\n\n // Runs on page load to lock the nav, and validate the initially uploaded users\n React.useEffect(() => {\n if (hasValidatedUsers)\n return;\n\n props.setTotalValidatedUsers(0);\n\n // Everytime the reducer state changes, we want to validate the new state.\n props.validateSpreadsheet(users, onValidateSuccess, onValidateError);\n }, [hasValidatedUsers]);\n\n React.useEffect(() => {\n setShowButtons(hasValidatedUsers);\n setDisableNext(!!Object.keys(invalidUsers ?? {}).length);\n }, [ invalidUsers, hasValidatedUsers ]);\n\n React.useEffect(() => {\n setOnClickConfirm(() => props.onClickConfirm);\n }, [props.onClickConfirm]);\n\n if (!hasValidatedUsers) {\n return (\n <BulkUserUploadLoader\n userType={props.userType}\n totalCompleted={props.totalValidatedUsers}\n totalUsers={users?.length}\n />\n );\n }\n\n return (\n <>\n <EditUserSpreadsheetHeading\n appLinks={props.appLinks}\n userType={props.userType}\n hideValidListings={hideValidListings}\n passwordPolicy={props.passwordPolicy}\n onToggleValidListings={() => onToggleValidListings({\n setHideValidListings,\n hideValidListings,\n userType: props.userType\n })}\n bulkChecked={CheckboxHelper.bulkChecked}\n bulkIndeterminate={CheckboxHelper.hasSomeSelections()}\n onClickRemove={onClickRemove}\n disableBulkCheckbox={!usersToDisplay.length}\n localErrorMessage={props.localErrorMessage}\n />\n\n <main className='pt-2 pb-3 position-relative'>\n <UserReviewTable\n users={usersToDisplay}\n invalidUsers={invalidUsers}\n userType={props.userType}\n onClickEdit={setEditingUser}\n onClickDelete={setDeletingUsers}\n onClickCreate={props.onClickConfirm}\n appLinks={props.appLinks}\n showInvalidEmptyState={hideValidListings && !totalInvalidListings}\n emptyStateImageUrl={props.emptyStateImageUrl}\n showPasswordField={props.showPasswordField}\n passwordPolicy={props.passwordPolicy}\n checkboxId='bulk-upload-remove'\n isChecked={id => CheckboxHelper.isChecked(id) && !!usersToDisplay.length}\n onToggleCheckbox={CheckboxHelper.onToggleItem}\n localErrorMessage={props.localErrorMessage}\n bulkCheckboxChecked={CheckboxHelper.bulkChecked}\n bulkIndeterminate={CheckboxHelper.hasSomeSelections()}\n onToggleBulkCheckbox={CheckboxHelper.onToggleBulk}\n disableBulkCheckbox={!usersToDisplay.length}\n />\n </main>\n\n {!!editingUser && (\n <EditUploadedUserPopup\n key={editingUser.lookupId}\n user={editingUser}\n setUser={setEditingUser}\n closePopup={() => onCloseEditPopup(setEditingUser, props.closePopup)}\n title={LanguageService.getPhrase(subNamespace, 'editUser')}\n userType={props.userType}\n yearGroups={props.yearGroups}\n analyticsOptions={BulkUserUploadHelper.getAnalyticsOptions(props.userType)}\n currentUser={props.currentUser}\n formSize={props.formSize}\n validateUser={props.validateUser}\n emailRequired={props.emailRequired}\n showPasswordField={props.showPasswordField}\n passwordPolicy={props.passwordPolicy}\n validateEmail={props.validateEmail}\n appLinks={props.appLinks}\n localErrorMessage={props.localErrorMessage}\n />\n )}\n\n {!!deletingUsers.length && (\n <DeleteUploadedUserPopup\n users={deletingUsers}\n userType={props.userType}\n closePopup={() => onCloseDeletePopup(setDeletingUsers, props.closePopup)}\n analyticsOptions={BulkUserUploadHelper.getAnalyticsOptions(props.userType)}\n />\n )}\n </>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { EditUserSpreadsheet } from 'libs/shared/apps/user-manager/components/bulk-upload/edit-user-spreadsheet/EditUserSpreadsheet';\nimport { BulkUserUploadWizardLayout } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { BulkUserEmailCheckRequest, BulkUserEmailCheckResponse, EditUserRequest, ErroredUsers } from 'libs/shared/apps/user-manager/interfaces';\nimport { UserWizardParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserWizardParams';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJob, CurrentUser, PropsWithPopupViewProps, YearGroup } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { SecuritySettingsRequests } from 'apps/settings/flight-requests/SecuritySettingsRequests';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespaces = {\n [UserGroup.Learner]: 'userManager.bulkStudentUploadReviewAccounts',\n [UserGroup.Staff]: 'userManager.bulkStaffUploadReviewAccounts',\n [UserGroup.Unknown]: ''\n};\n\nexport function BulkUserUploadReviewAccountsView(props: PropsWithPopupViewProps<UserWizardParams>): JSX.Element {\n const { users } = useBulkUploadUsers();\n\n const [ totalValidatedUsers, setTotalValidatedUsers ] = React.useState(0);\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && UserManagerRequests.yearGroups(currentUser.data.customerId)\n );\n const passwordPolicy = Flight.useBasicFetch<SecuritySettingsResponse>(currentUser.data &&\n SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId));\n\n const dispatch = useDispatch();\n const fetchAsync = Flight.useGetFetchAsync();\n useSetPageMetadata({ title: LanguageService.getPhrase(namespaces[props.userType], 'pageTitle') });\n\n const appLinks = getUserManagerAppLinks(props.userType);\n\n /**\n * Will validate the entire spreadsheet. This can be a very slow operation, so it should\n * only ever be run once when the user first uploads their spreadsheet\n */\n function validateSpreadsheet(\n users: EditUserRequest[],\n onSuccess: (errors: ErroredUsers, users: EditUserRequest[]) => void,\n onError: () => void\n ): void {\n BulkUserUploadHelper.validateSpreadsheetRequest({\n users,\n userType: props.userType,\n customerId: currentUser.data.customerId,\n dispatch,\n requestFn: UserManagerRequests.bulkUsersValidate,\n setTotalCompletedUsers: setTotalValidatedUsers,\n canInviteExistingUsers: true,\n onSuccess,\n onError\n });\n }\n\n function validateUser(user: EditUserRequest): Promise<ErroredUsers> {\n const data = UserManagerHelper.formatCreateOrValidateUserRequest(\n [user],\n props.userType,\n currentUser.data.customerId\n );\n\n return fetchAsync(UserManagerRequests.bulkUsersValidate(data, true));\n }\n\n function validateEmail(email: string): Promise<BulkUserEmailCheckResponse> {\n const body: BulkUserEmailCheckRequest = {\n userEmails: [{ email, userType: props.userType }]\n };\n\n return fetchAsync(UserManagerRequests.bulkCheckEmail(body, currentUser.data.customerId));\n }\n\n const onCreateJobError = BulkUserActionsHelper.useCreateJobErrorAlert();\n function startBulkUpload(): void {\n const jobData = BulkUserUploadHelper.getJobData({\n users, customerId: currentUser.data.customerId, userType: props.userType\n });\n Flight.fetch(dispatch, JobRequests.createJob(jobData, onCreateJob, onCreateJobError));\n }\n\n function onCreateJob(job: BatchJob): void {\n Core.AppLinkHelper.trigger({\n ...appLinks.userUploadStatus.polling,\n params: {\n userType: props.userType,\n jobId: job.id\n }\n });\n }\n\n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <BulkUserUploadWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n currentStep='review-accounts'\n canAddExistingUsers\n >\n <div className='px-3'>\n <EditUserSpreadsheet\n onClickConfirm={startBulkUpload}\n userType={props.userType}\n appLinks={appLinks}\n currentUser={currentUser.data}\n yearGroups={yearGroups.data}\n closePopup={props.closePopup}\n validateSpreadsheet={validateSpreadsheet}\n validateUser={validateUser}\n totalValidatedUsers={totalValidatedUsers}\n setTotalValidatedUsers={setTotalValidatedUsers}\n emptyStateImageUrl={ImageUrls.EmptyStates.UserManager.REVIEWS}\n showPasswordField={props.userType === UserGroup.Learner}\n emailRequired={props.userType === UserGroup.Staff}\n passwordPolicy={passwordPolicy.data}\n validateEmail={validateEmail}\n localErrorMessage={BulkUserUploadHelper.getErrorMessageOverride(props.userType)}\n />\n </div>\n </BulkUserUploadWizardLayout>\n </UserManagerClientContext.Provider>\n );\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { map } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ROUND_PRECISION = 1000;\n\n/**\n * Validate that children, if any, are instances of `ProgressBar`.\n */\nfunction onlyProgressBar(props, propName, componentName) {\n const children = props[propName];\n if (!children) {\n return null;\n }\n let error = null;\n React.Children.forEach(children, child => {\n if (error) {\n return;\n }\n\n /**\n * Compare types in a way that works with libraries that patch and proxy\n * components like react-hot-loader.\n *\n * see https://github.com/gaearon/react-hot-loader#checking-element-types\n */\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const element = /*#__PURE__*/_jsx(ProgressBar, {});\n if (child.type === element.type) return;\n const childType = child.type;\n const childIdentifier = /*#__PURE__*/React.isValidElement(child) ? childType.displayName || childType.name || childType : child;\n error = new Error(`Children of ${componentName} can contain only ProgressBar ` + `components. Found ${childIdentifier}.`);\n });\n return error;\n}\nfunction getPercentage(now, min, max) {\n const percentage = (now - min) / (max - min) * 100;\n return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\nfunction renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n className,\n style,\n variant,\n bsPrefix,\n ...props\n}, ref) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...props,\n role: \"progressbar\",\n className: classNames(className, `${bsPrefix}-bar`, {\n [`bg-${variant}`]: variant,\n [`${bsPrefix}-bar-animated`]: animated,\n [`${bsPrefix}-bar-striped`]: animated || striped\n }),\n style: {\n width: `${getPercentage(now, min, max)}%`,\n ...style\n },\n \"aria-valuenow\": now,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n children: visuallyHidden ? /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: label\n }) : label\n });\n}\nconst ProgressBar = /*#__PURE__*/React.forwardRef(({\n isChild = false,\n ...rest\n}, ref) => {\n const props = {\n min: 0,\n max: 100,\n animated: false,\n visuallyHidden: false,\n striped: false,\n ...rest\n };\n props.bsPrefix = useBootstrapPrefix(props.bsPrefix, 'progress');\n if (isChild) {\n return renderProgressBar(props, ref);\n }\n const {\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant,\n className,\n children,\n ...wrapperProps\n } = props;\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...wrapperProps,\n className: classNames(className, bsPrefix),\n children: children ? map(children, child => /*#__PURE__*/cloneElement(child, {\n isChild: true\n })) : renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant\n }, ref)\n });\n});\nProgressBar.displayName = 'ProgressBar';\nexport default ProgressBar;"],"names":["namespace","BulkUserUploadLoader","props","percentageLoaded","Math","floor","totalCompleted","totalUsers","className","Text","phrase","userType","UserGroup","options","totalLoaded","ProgressBar","variant","now","FileHelper","downloadCsvArray","rows","filename","csvContent","map","row","join","anchor","document","createElement","href","encodeURI","download","click","safeDownloadCsv","blob","Blob","type","url","URL","createObjectURL","revokeObjectURL","namespaces","EditUserSpreadsheetHeading","invalidUsers","useBulkUploadUsers","totalInvalidListings","BulkUserUploadHelper","IconButton","svgName","appLink","appLinks","userUploadPopup","onClick","Object","keys","name","erroredUser","user","errorCodes","minPasswordLength","UserManagerHelper","passwordPolicy","masterRole","errorMessages","localErrorMessage","getError","key","error","masterYearGroup","unshift","LanguageService","ToggleSwitch","onToggleValidListings","on","hideValidListings","onClickRemove","disabled","bulkIndeterminate","bulkChecked","disableBulkCheckbox","subNamespaces","EditUserSpreadsheet","subNamespace","setHideValidListings","editingUser","setEditingUser","deletingUsers","setDeletingUsers","users","setInvalidUsers","hasValidatedUsers","setExistingUsers","usersToDisplay","CheckboxHelper","useBulkCheckboxManager","idField","WizardLayoutContext","setDisableNext","setShowButtons","setOnClickConfirm","alerts","onValidateSuccess","onValidateError","userManager","replace","setTotalValidatedUsers","validateSpreadsheet","length","onClickConfirm","hasSomeSelections","selected","getSelected","UserReviewTable","onClickEdit","onClickDelete","onClickCreate","showInvalidEmptyState","emptyStateImageUrl","showPasswordField","checkboxId","isChecked","id","onToggleCheckbox","onToggleItem","bulkCheckboxChecked","onToggleBulkCheckbox","onToggleBulk","EditUploadedUserPopup","lookupId","setUser","closePopup","title","yearGroups","analyticsOptions","currentUser","formSize","validateUser","emailRequired","validateEmail","DeleteUploadedUserPopup","totalValidatedUsers","BulkUserUploadReviewAccountsView","UserRequests","data","UserManagerRequests","customerId","SecuritySettingsRequests","dispatch","fetchAsync","useSetPageMetadata","onCreateJobError","BulkUserActionsHelper","onCreateJob","job","userUploadStatus","polling","params","jobId","UserManagerClientContext","value","UserManagerClient","BulkUserUploadWizardLayout","currentStep","canAddExistingUsers","jobData","JobRequests","onSuccess","onError","requestFn","setTotalCompletedUsers","canInviteExistingUsers","ImageUrls","email","body","userEmails","getPercentage","min","max","percentage","round","renderProgressBar","label","visuallyHidden","striped","animated","style","bsPrefix","ref","role","width","children","isChild","rest","wrapperProps","child","cloneElement","displayName"],"sourceRoot":""}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! For license information please see 7835-
|
|
2
|
-
(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7835],{99882:(e,t,r)=>{"use strict";r.d(t,{U:()=>m});var n,o=r(32735),a=r(59087),i=r(23481);!function(e){e.ShowDetails="show-details",e.EmailedUsers="emailed-students",e.EmailedAdmin="emailed-admin"}(n||(n={}));var c=r(83345),s=r(76881),l=r(69883),u="userManager.userCreatedSuccess";function p(e){return o.createElement("div",{className:"d-flex justify-content-center w-50 mx-auto pb-3"},o.createElement("img",{src:e.emailSentImageUrl,alt:"",role:"presentation",className:"w-100"}))}function f(e){return o.createElement(o.Fragment,null,o.createElement("p",null,o.createElement(c.x,{phrase:"userDetailsInfo"})),o.createElement("p",{className:"mb-0 fw-semibold"},o.createElement(c.x,{phrase:"username"})),o.createElement("p",null,e.creationResponse.username),o.createElement("p",{className:"mb-0 fw-semibold"},o.createElement(c.x,{phrase:"password"})),o.createElement("p",null,e.creationResponse.password))}function d(e){return o.createElement(o.Fragment,null,o.createElement(p,Object.assign({},e)),o.createElement("p",null,o.createElement(c.x,{phrase:"emailedUsersInfo",options:{smartCount:e.creationResponse.isBulk?2:1}})))}function m(e){var t=(0,l.Z)(),r=o.useMemo(function(){return e.userType===s.Y.Staff||e.creationResponse.isBulk||e.creationResponse.hasEmail?n.EmailedUsers:n.ShowDetails},[e.creationResponse]);if(!r)return o.createElement(o.Fragment,null);var p=function(){switch(r){case n.ShowDetails:return o.createElement(f,Object.assign({},e));case n.EmailedUsers:return o.createElement(d,Object.assign({},e))}}();return o.createElement(c.D.Provider,{value:u},p,o.createElement("div",{className:"d-flex justify-content-end border-top pt-3 px-3 mx-n3"},r===n.ShowDetails?o.createElement(a.CopyToClipboard,{onCopy:function(){t.success(i.T.getPhrase(u,"copied")),e.onClose()},text:"".concat(e.creationResponse.username," - ").concat(e.creationResponse.password)},o.createElement("button",{className:"btn btn-dark"},o.createElement(c.x,{phrase:"copy"}))):o.createElement("button",{onClick:e.onClose,className:"btn btn-dark"},o.createElement(c.x,{phrase:"okay"}))))}},99705:(e,t,r)=>{"use strict";var n,o;r.d(t,{b:()=>o}),function(e){e.AddToPlaylist="115005679748",e.EditSsoAccounts="8202508040345",e.LibraryEditor="360001974533",e.VideoAccess="360000153947",e.AddFromOnline="360011718234",e.UploadToLibraryEditor="360012069334",e.PBTErrorCodes="360012421153",e.ManuelReview="360020004534",e.LibraryReview="360000163788"}(n||(n={})),function(e){e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="27927466562201",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929",e.RssFeed="32567445635097",e.ManageGroupPermissions="35407217335705",e.MarcFormatDifferences="48276917260441",e.ExportLibraries="17684275853465"}(o||(o={}))},59134:(e,t,r)=>{"use strict";r.r(t),r.d(t,{EditUserView:()=>F});var n=r(32735),o=r(70680),a=r(23481),i=r(20354),c=r(49985),s=r(65858),l=r(58859),u=r(99882),p=r(26055),f=r(43820),d=r(39739),m=r(9111),y=r(40424),b=r(99705),v=r(76881),h=r(86613),g=r(39151),E=r(1666),w=r(31949),O=r(69883),C=r(12778),S=r(64818),P=r(99742),T=r(14070),j=r(97291),k=r(26234),x=r(47288),A=r(29241);function R(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var s=n&&n.prototype instanceof c?n:c,l=Object.create(s.prototype);return N(l,"_invoke",function(r,n,o){var a,c,s,l=0,u=o||[],p=!1,f={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return a=t,c=0,s=e,f.n=r,i}};function d(r,n){for(c=r,s=n,t=0;!p&&l&&!o&&t<u.length;t++){var o,a=u[t],d=f.p,m=a[2];r>3?(o=m===n)&&(s=a[(c=a[4])?5:(c=3,3)],a[4]=a[5]=e):a[0]<=d&&((o=r<2&&d<a[1])?(c=0,f.v=n,f.n=a[1]):d<m&&(o=r<3||a[0]>n||n>m)&&(a[4]=r,a[5]=n,f.n=m,c=0))}if(o||r>1)return i;throw p=!0,n}return function(o,u,m){if(l>1)throw TypeError("Generator is already running");for(p&&1===u&&d(u,m),c=u,s=m;(t=c<2?e:s)||!p;){a||(c?c<3?(c>1&&(f.n=-1),d(c,s)):f.n=s:f.v=s);try{if(l=2,a){if(c||(o="next"),t=a[o]){if(!(t=t.call(a,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,c<2&&(c=0)}else 1===c&&(t=a.return)&&t.call(a),c<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),c=1);a=e}else if((t=(p=f.n<0)?s:r.call(n,f))!==i)break}catch(t){a=e,c=1,s=t}finally{l=1}}return{value:t,done:p}}}(r,o,a),!0),l}var i={};function c(){}function s(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(N(t={},n,function(){return this}),t),p=l.prototype=c.prototype=Object.create(u);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,N(e,o,"GeneratorFunction")),e.prototype=Object.create(p),e}return s.prototype=l,N(p,"constructor",l),N(l,"constructor",s),s.displayName="GeneratorFunction",N(l,o,"GeneratorFunction"),N(p),N(p,o,"Generator"),N(p,n,function(){return this}),N(p,"toString",function(){return"[object Generator]"}),(R=function(){return{w:a,m:f}})()}function N(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}N=function(e,t,r,n){if(t)o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r;else{var a=function(t,r){N(e,t,function(e){return this._invoke(t,r,e)})};a("next",0),a("throw",1),a("return",2)}},N(e,t,r,n)}function U(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 I=function(e,t,r,n){return new(r||(r=Promise))(function(o,a){function i(e){try{s(n.next(e))}catch(e){a(e)}}function c(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(i,c)}s((n=n.apply(e,t||[])).next())})};function D(e,t){var r,n,o;return{userId:e.id,firstName:e.name,surname:e.surname,userType:e.userType,customerId:t.customerId,email:e.email||"",masterYearGroup:null!==(r=e.masterYearGroup)&&void 0!==r?r:null,username:e.username,masterRole:e.userProfile.role,status:e.status,displayName:null!==(o=null===(n=e.metadata)||void 0===n?void 0:n.displayName)&&void 0!==o?o:""}}var _=a.T.encloseNamespace("userManager.editUser");function F(e){var t,r,a=(t=n.useState(!1),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,o,a,i,c=[],s=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=a.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,o=e}finally{try{if(!s&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return U(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)?U(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.")}()),N=a[0],F=a[1],G=(0,O.Z)(),M=(0,o.I0)(),L=i.a.useGetFetchAsync(),B=i.a.useBasicFetch(x.N.getUser(e.id)),Y=i.a.useBasicFetch(w.N.currentUser()),V=i.a.useBasicFetch(Y.data&&x.N.yearGroups(Y.data.customerId)),q=i.a.useBasicFetch(Y.data&&k.F.getCustomerSecuritySettings(Y.data.customerId)),W=i.a.useBasicFetch(g.L.config()),Z=i.a.useBasicFetch(E.h.customer(Y.data.customerId,null,null,!0)),H=i.a.useBasicFetch(x.N.authenticationMethods([e.id]));function z(t){var r=d.P.formatCreateOrValidateUserRequest([t],e.userType,Y.data.customerId);return L(x.N.bulkValidate(r))}function X(t){i.a.fetch(M,x.N.resendActivationEmail(t.id,function(){c.k.logUserAction(t,Object.assign(Object.assign({},e.analyticsOptions),{actionType:s.Vw.SendEmail,descriptor:s.on.ActivateUser})),G.success(_("success")),F(!0)},function(){G.error(_("error")),e.closePopup()}))}var $,J,K,Q=!!B.data&&!!Y.data&&!!V.data&&!!q.data&&H.hasCompleted&&!!W.data;return n.createElement(p.A.Provider,{value:f.a.Primary},n.createElement(m.G,{closePopup:e.closePopup,title:_("popupTitle"),showLoadingSpinner:!Q},Q?N?n.createElement(u.U,{creationResponse:{isBulk:!1},userType:e.userType,onClose:e.closePopup,emailSentImageUrl:P.W.EMAIL_SENT}):n.createElement(n.Fragment,null,S.l.hasSso(B.data)&&n.createElement(A.Z,{userType:e.userType,isNew:!1,helpArticle:C.o.getLiteArticle(b.b.EditSsoAccounts),ssoMappingsApplink:{application:j.O.SETTINGS,action:T.e.Settings.SSO_YEAR_GROUP_MAPPINGS}}),n.createElement(l.H,{user:B.data,userType:e.userType,yearGroups:e.userType===v.Y.Learner?V.data:null,initialValues:D(B.data,Y.data),initialErrors:d.P.getInitialErrorsForInvalidYearGroups(B.data.masterYearGroup),onSubmit:function(t,r){var n,o;return I(this,void 0,void 0,R().m(function a(){var s,l;return R().w(function(a){for(;;)switch(a.n){case 0:return a.n=1,z(t);case 1:if(s=a.v,d.P.handleAsyncErrors(s,t,B.data,r)){a.n=2;break}return a.a(2);case 2:l=d.P.formatEditUserRequest(t),i.a.fetch(M,x.N.updateUser(l,Y.data.id,function(t){c.k.logUserAction(t,e.analyticsOptions),B.data.email!==t.email&&t.status===y.w.Inactive?X(t):(G.success(_("success")),e.closePopup())},function(){G.error(_("error")),e.closePopup()},function(){},0===(null===(n=B.data.masterYearGroup)||void 0===n?void 0:n.value)&&0!==(null===(o=t.masterYearGroup)||void 0===o?void 0:o.value)));case 3:return a.a(2)}},a)}))},onClickCancel:e.closePopup,currentUser:Y.data,emailRequired:e.userType===v.Y.Staff,showDisplayNameField:e.userType===v.Y.Staff,passwordPolicy:q.data,editSsoUserHelpArticle:C.o.getLiteArticle(b.b.EditSsoAccounts),validateEmail:function(t){var r={userEmails:[{email:t,userType:e.userType}]};return L(x.N.bulkCheckEmail(r,Y.data.customerId))},hasOrg:!!(null===($=Z.data)||void 0===$?void 0:$.organisation),countryCode:null===(J=Y.data)||void 0===J?void 0:J.countryCode,canEditSuperAdmin:(null===(K=Y.data)||void 0===K?void 0:K.role)===h.i.SuperAdmin})):n.createElement(n.Fragment,null)))}},29241:(e,t,r)=>{"use strict";r.d(t,{Z:()=>s});var n=r(32735),o=r(14604),a=r(15611),i=r(83345),c="userManager.editUser";function s(e){return n.createElement(o.W,{className:"py-2"},n.createElement(i.x,{namespace:c,phrase:e.isNew?"newSsoUserWarning":"editSsoUserWarning"}),!e.isNew&&n.createElement(a.F,{appLink:e.ssoMappingsApplink,className:"info-link d-block my-1",openInNewTab:!0},n.createElement(i.x,{namespace:c,phrase:"ssoMapping"})),n.createElement("a",{className:"info-link d-block",href:e.helpArticle,target:"_blank"},n.createElement(i.x,{namespace:c,phrase:"ssoArticleLink"})))}},91969:(e,t,r)=>{"use strict";var n=r(47033),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var r,a,i,c,s,l,u=!1;t||(t={}),r=t.debug||!1;try{if(i=n(),c=document.createRange(),s=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),void 0===n.clipboardData){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var a=o[t.format]||o.default;window.clipboardData.setData(a,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))}),document.body.appendChild(l),c.selectNodeContents(l),s.addRange(c),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(n){r&&console.error("unable to copy using execCommand: ",n),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(n){r&&console.error("unable to copy using clipboardData: ",n),r&&console.error("falling back to prompt"),a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(a,e)}}finally{s&&("function"==typeof s.removeRange?s.removeRange(c):s.removeAllRanges()),l&&document.body.removeChild(l),i()}return u}},44818:(e,t,r)=>{"use strict";function n(e){return n="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},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=c(r(32735)),a=c(r(91969)),i=["text","onCopy","options","children"];function c(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach(function(t){m(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function u(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function p(e,t){return p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},p(e,t)}function f(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function m(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var y=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}(b,e);var t,r,c,s,y=(c=b,s=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}(),function(){var e,t=d(c);if(s){var r=d(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===n(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return f(e)}(this,e)});function b(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,b);for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return m(f(e=y.call.apply(y,[this].concat(r))),"onClick",function(t){var r=e.props,n=r.text,i=r.onCopy,c=r.children,s=r.options,l=o.default.Children.only(c),u=(0,a.default)(n,s);i&&i(n,u),l&&l.props&&"function"==typeof l.props.onClick&&l.props.onClick(t)}),e}return t=b,(r=[{key:"render",value:function(){var e=this.props,t=(e.text,e.onCopy,e.options,e.children),r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,i),n=o.default.Children.only(t);return o.default.cloneElement(n,l(l({},r),{},{onClick:this.onClick}))}}])&&u(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),b}(o.default.PureComponent);t.CopyToClipboard=y,m(y,"defaultProps",{onCopy:void 0,options:void 0})},59087:(e,t,r)=>{"use strict";var n=r(44818).CopyToClipboard;n.CopyToClipboard=n,e.exports=n},47033:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,r=[],n=0;n<e.rangeCount;n++)r.push(e.getRangeAt(n));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||r.forEach(function(t){e.addRange(t)}),t&&t.focus()}}}}]);
|
|
3
|
-
//# sourceMappingURL=7835-
|
|
1
|
+
/*! For license information please see 7835-8d490274c8-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7835],{99882:(e,t,r)=>{"use strict";r.d(t,{U:()=>m});var n,o=r(32735),a=r(59087),i=r(23481);!function(e){e.ShowDetails="show-details",e.EmailedUsers="emailed-students",e.EmailedAdmin="emailed-admin"}(n||(n={}));var c=r(83345),s=r(76881),l=r(69883),u="userManager.userCreatedSuccess";function p(e){return o.createElement("div",{className:"d-flex justify-content-center w-50 mx-auto pb-3"},o.createElement("img",{src:e.emailSentImageUrl,alt:"",role:"presentation",className:"w-100"}))}function f(e){return o.createElement(o.Fragment,null,o.createElement("p",null,o.createElement(c.x,{phrase:"userDetailsInfo"})),o.createElement("p",{className:"mb-0 fw-semibold"},o.createElement(c.x,{phrase:"username"})),o.createElement("p",null,e.creationResponse.username),o.createElement("p",{className:"mb-0 fw-semibold"},o.createElement(c.x,{phrase:"password"})),o.createElement("p",null,e.creationResponse.password))}function d(e){return o.createElement(o.Fragment,null,o.createElement(p,Object.assign({},e)),o.createElement("p",null,o.createElement(c.x,{phrase:"emailedUsersInfo",options:{smartCount:e.creationResponse.isBulk?2:1}})))}function m(e){var t=(0,l.Z)(),r=o.useMemo(function(){return e.userType===s.Y.Staff||e.creationResponse.isBulk||e.creationResponse.hasEmail?n.EmailedUsers:n.ShowDetails},[e.creationResponse]);if(!r)return o.createElement(o.Fragment,null);var p=function(){switch(r){case n.ShowDetails:return o.createElement(f,Object.assign({},e));case n.EmailedUsers:return o.createElement(d,Object.assign({},e))}}();return o.createElement(c.D.Provider,{value:u},p,o.createElement("div",{className:"d-flex justify-content-end border-top pt-3 px-3 mx-n3"},r===n.ShowDetails?o.createElement(a.CopyToClipboard,{onCopy:function(){t.success(i.T.getPhrase(u,"copied")),e.onClose()},text:"".concat(e.creationResponse.username," - ").concat(e.creationResponse.password)},o.createElement("button",{className:"btn btn-dark"},o.createElement(c.x,{phrase:"copy"}))):o.createElement("button",{onClick:e.onClose,className:"btn btn-dark"},o.createElement(c.x,{phrase:"okay"}))))}},99705:(e,t,r)=>{"use strict";var n,o;r.d(t,{b:()=>o}),function(e){e.AddToPlaylist="115005679748",e.EditSsoAccounts="8202508040345",e.LibraryEditor="360001974533",e.VideoAccess="360000153947",e.AddFromOnline="360011718234",e.UploadToLibraryEditor="360012069334",e.PBTErrorCodes="360012421153",e.ManuelReview="360020004534",e.LibraryReview="360000163788"}(n||(n={})),function(e){e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="27927466562201",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929",e.RssFeed="32567445635097",e.ManageGroupPermissions="35407217335705",e.MarcFormatDifferences="48276917260441",e.ExportLibraries="17684275853465"}(o||(o={}))},59134:(e,t,r)=>{"use strict";r.r(t),r.d(t,{EditUserView:()=>F});var n=r(32735),o=r(70680),a=r(23481),i=r(20354),c=r(49985),s=r(65858),l=r(58859),u=r(99882),p=r(26055),f=r(43820),d=r(39739),m=r(9111),y=r(40424),b=r(99705),v=r(76881),h=r(86613),g=r(39151),E=r(1666),w=r(31949),O=r(69883),C=r(12778),S=r(64818),P=r(99742),T=r(14070),j=r(97291),k=r(80658),x=r(47288),A=r(29241);function R(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var s=n&&n.prototype instanceof c?n:c,l=Object.create(s.prototype);return N(l,"_invoke",function(r,n,o){var a,c,s,l=0,u=o||[],p=!1,f={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return a=t,c=0,s=e,f.n=r,i}};function d(r,n){for(c=r,s=n,t=0;!p&&l&&!o&&t<u.length;t++){var o,a=u[t],d=f.p,m=a[2];r>3?(o=m===n)&&(s=a[(c=a[4])?5:(c=3,3)],a[4]=a[5]=e):a[0]<=d&&((o=r<2&&d<a[1])?(c=0,f.v=n,f.n=a[1]):d<m&&(o=r<3||a[0]>n||n>m)&&(a[4]=r,a[5]=n,f.n=m,c=0))}if(o||r>1)return i;throw p=!0,n}return function(o,u,m){if(l>1)throw TypeError("Generator is already running");for(p&&1===u&&d(u,m),c=u,s=m;(t=c<2?e:s)||!p;){a||(c?c<3?(c>1&&(f.n=-1),d(c,s)):f.n=s:f.v=s);try{if(l=2,a){if(c||(o="next"),t=a[o]){if(!(t=t.call(a,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,c<2&&(c=0)}else 1===c&&(t=a.return)&&t.call(a),c<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),c=1);a=e}else if((t=(p=f.n<0)?s:r.call(n,f))!==i)break}catch(t){a=e,c=1,s=t}finally{l=1}}return{value:t,done:p}}}(r,o,a),!0),l}var i={};function c(){}function s(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(N(t={},n,function(){return this}),t),p=l.prototype=c.prototype=Object.create(u);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,N(e,o,"GeneratorFunction")),e.prototype=Object.create(p),e}return s.prototype=l,N(p,"constructor",l),N(l,"constructor",s),s.displayName="GeneratorFunction",N(l,o,"GeneratorFunction"),N(p),N(p,o,"Generator"),N(p,n,function(){return this}),N(p,"toString",function(){return"[object Generator]"}),(R=function(){return{w:a,m:f}})()}function N(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}N=function(e,t,r,n){if(t)o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r;else{var a=function(t,r){N(e,t,function(e){return this._invoke(t,r,e)})};a("next",0),a("throw",1),a("return",2)}},N(e,t,r,n)}function U(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 I=function(e,t,r,n){return new(r||(r=Promise))(function(o,a){function i(e){try{s(n.next(e))}catch(e){a(e)}}function c(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(i,c)}s((n=n.apply(e,t||[])).next())})};function D(e,t){var r,n,o;return{userId:e.id,firstName:e.name,surname:e.surname,userType:e.userType,customerId:t.customerId,email:e.email||"",masterYearGroup:null!==(r=e.masterYearGroup)&&void 0!==r?r:null,username:e.username,masterRole:e.userProfile.role,status:e.status,displayName:null!==(o=null===(n=e.metadata)||void 0===n?void 0:n.displayName)&&void 0!==o?o:""}}var _=a.T.encloseNamespace("userManager.editUser");function F(e){var t,r,a=(t=n.useState(!1),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,o,a,i,c=[],s=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=a.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,o=e}finally{try{if(!s&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return U(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)?U(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.")}()),N=a[0],F=a[1],G=(0,O.Z)(),M=(0,o.I0)(),L=i.a.useGetFetchAsync(),B=i.a.useBasicFetch(x.N.getUser(e.id)),Y=i.a.useBasicFetch(w.N.currentUser()),V=i.a.useBasicFetch(Y.data&&x.N.yearGroups(Y.data.customerId)),q=i.a.useBasicFetch(Y.data&&k.F.getCustomerSecuritySettings(Y.data.customerId)),W=i.a.useBasicFetch(g.L.config()),Z=i.a.useBasicFetch(E.h.customer(Y.data.customerId,null,null,!0)),H=i.a.useBasicFetch(x.N.authenticationMethods([e.id]));function z(t){var r=d.P.formatCreateOrValidateUserRequest([t],e.userType,Y.data.customerId);return L(x.N.bulkValidate(r))}function X(t){i.a.fetch(M,x.N.resendActivationEmail(t.id,function(){c.k.logUserAction(t,Object.assign(Object.assign({},e.analyticsOptions),{actionType:s.Vw.SendEmail,descriptor:s.on.ActivateUser})),G.success(_("success")),F(!0)},function(){G.error(_("error")),e.closePopup()}))}var $,J,K,Q=!!B.data&&!!Y.data&&!!V.data&&!!q.data&&H.hasCompleted&&!!W.data;return n.createElement(p.A.Provider,{value:f.a.Primary},n.createElement(m.G,{closePopup:e.closePopup,title:_("popupTitle"),showLoadingSpinner:!Q},Q?N?n.createElement(u.U,{creationResponse:{isBulk:!1},userType:e.userType,onClose:e.closePopup,emailSentImageUrl:P.W.EMAIL_SENT}):n.createElement(n.Fragment,null,S.l.hasSso(B.data)&&n.createElement(A.Z,{userType:e.userType,isNew:!1,helpArticle:C.o.getLiteArticle(b.b.EditSsoAccounts),ssoMappingsApplink:{application:j.O.SETTINGS,action:T.e.Settings.SSO_YEAR_GROUP_MAPPINGS}}),n.createElement(l.H,{user:B.data,userType:e.userType,yearGroups:e.userType===v.Y.Learner?V.data:null,initialValues:D(B.data,Y.data),initialErrors:d.P.getInitialErrorsForInvalidYearGroups(B.data.masterYearGroup),onSubmit:function(t,r){var n,o;return I(this,void 0,void 0,R().m(function a(){var s,l;return R().w(function(a){for(;;)switch(a.n){case 0:return a.n=1,z(t);case 1:if(s=a.v,d.P.handleAsyncErrors(s,t,B.data,r)){a.n=2;break}return a.a(2);case 2:l=d.P.formatEditUserRequest(t),i.a.fetch(M,x.N.updateUser(l,Y.data.id,function(t){c.k.logUserAction(t,e.analyticsOptions),B.data.email!==t.email&&t.status===y.w.Inactive?X(t):(G.success(_("success")),e.closePopup())},function(){G.error(_("error")),e.closePopup()},function(){},0===(null===(n=B.data.masterYearGroup)||void 0===n?void 0:n.value)&&0!==(null===(o=t.masterYearGroup)||void 0===o?void 0:o.value)));case 3:return a.a(2)}},a)}))},onClickCancel:e.closePopup,currentUser:Y.data,emailRequired:e.userType===v.Y.Staff,showDisplayNameField:e.userType===v.Y.Staff,passwordPolicy:q.data,editSsoUserHelpArticle:C.o.getLiteArticle(b.b.EditSsoAccounts),validateEmail:function(t){var r={userEmails:[{email:t,userType:e.userType}]};return L(x.N.bulkCheckEmail(r,Y.data.customerId))},hasOrg:!!(null===($=Z.data)||void 0===$?void 0:$.organisation),countryCode:null===(J=Y.data)||void 0===J?void 0:J.countryCode,canEditSuperAdmin:(null===(K=Y.data)||void 0===K?void 0:K.role)===h.i.SuperAdmin})):n.createElement(n.Fragment,null)))}},29241:(e,t,r)=>{"use strict";r.d(t,{Z:()=>s});var n=r(32735),o=r(14604),a=r(15611),i=r(83345),c="userManager.editUser";function s(e){return n.createElement(o.W,{className:"py-2"},n.createElement(i.x,{namespace:c,phrase:e.isNew?"newSsoUserWarning":"editSsoUserWarning"}),!e.isNew&&n.createElement(a.F,{appLink:e.ssoMappingsApplink,className:"info-link d-block my-1",openInNewTab:!0},n.createElement(i.x,{namespace:c,phrase:"ssoMapping"})),n.createElement("a",{className:"info-link d-block",href:e.helpArticle,target:"_blank"},n.createElement(i.x,{namespace:c,phrase:"ssoArticleLink"})))}},91969:(e,t,r)=>{"use strict";var n=r(47033),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var r,a,i,c,s,l,u=!1;t||(t={}),r=t.debug||!1;try{if(i=n(),c=document.createRange(),s=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),void 0===n.clipboardData){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var a=o[t.format]||o.default;window.clipboardData.setData(a,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))}),document.body.appendChild(l),c.selectNodeContents(l),s.addRange(c),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(n){r&&console.error("unable to copy using execCommand: ",n),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(n){r&&console.error("unable to copy using clipboardData: ",n),r&&console.error("falling back to prompt"),a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(a,e)}}finally{s&&("function"==typeof s.removeRange?s.removeRange(c):s.removeAllRanges()),l&&document.body.removeChild(l),i()}return u}},44818:(e,t,r)=>{"use strict";function n(e){return n="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},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=c(r(32735)),a=c(r(91969)),i=["text","onCopy","options","children"];function c(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach(function(t){m(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function u(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function p(e,t){return p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},p(e,t)}function f(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function m(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var y=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}(b,e);var t,r,c,s,y=(c=b,s=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}(),function(){var e,t=d(c);if(s){var r=d(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===n(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return f(e)}(this,e)});function b(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,b);for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return m(f(e=y.call.apply(y,[this].concat(r))),"onClick",function(t){var r=e.props,n=r.text,i=r.onCopy,c=r.children,s=r.options,l=o.default.Children.only(c),u=(0,a.default)(n,s);i&&i(n,u),l&&l.props&&"function"==typeof l.props.onClick&&l.props.onClick(t)}),e}return t=b,(r=[{key:"render",value:function(){var e=this.props,t=(e.text,e.onCopy,e.options,e.children),r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,i),n=o.default.Children.only(t);return o.default.cloneElement(n,l(l({},r),{},{onClick:this.onClick}))}}])&&u(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),b}(o.default.PureComponent);t.CopyToClipboard=y,m(y,"defaultProps",{onCopy:void 0,options:void 0})},59087:(e,t,r)=>{"use strict";var n=r(44818).CopyToClipboard;n.CopyToClipboard=n,e.exports=n},47033:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,r=[],n=0;n<e.rangeCount;n++)r.push(e.getRangeAt(n));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||r.forEach(function(t){e.addRange(t)}),t&&t.focus()}}}}]);
|
|
3
|
+
//# sourceMappingURL=7835-8d490274c8-lite.chunk.js.map
|