@clickview/lite 0.78.0-rc.2 → 0.78.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/scripts/1109-08a4817edf-lite.chunk.js +2 -0
  3. package/dist/scripts/1109-08a4817edf-lite.chunk.js.map +1 -0
  4. package/dist/scripts/147-32fa5e188f-lite.chunk.js +2 -0
  5. package/dist/scripts/147-32fa5e188f-lite.chunk.js.map +1 -0
  6. package/dist/scripts/1667-f433e796a4-lite.chunk.js +3 -0
  7. package/dist/scripts/1667-f433e796a4-lite.chunk.js.map +1 -0
  8. package/dist/scripts/7601-15d87831f8-lite.chunk.js +2 -0
  9. package/dist/scripts/7601-15d87831f8-lite.chunk.js.map +1 -0
  10. package/dist/scripts/9843-e38ac7ac57-lite.chunk.js +2 -0
  11. package/dist/scripts/9843-e38ac7ac57-lite.chunk.js.map +1 -0
  12. package/dist/scripts/{bundle-fe9643b6ef.min.js → bundle-7c64909c44.min.js} +3 -3
  13. package/dist/scripts/{bundle-fe9643b6ef.min.js.map → bundle-7c64909c44.min.js.map} +1 -1
  14. package/package.json +1 -1
  15. package/dist/scripts/1109-5dc981556c-lite.chunk.js +0 -2
  16. package/dist/scripts/1109-5dc981556c-lite.chunk.js.map +0 -1
  17. package/dist/scripts/147-291667472e-lite.chunk.js +0 -2
  18. package/dist/scripts/147-291667472e-lite.chunk.js.map +0 -1
  19. package/dist/scripts/1667-e5e6c0c0e0-lite.chunk.js +0 -3
  20. package/dist/scripts/1667-e5e6c0c0e0-lite.chunk.js.map +0 -1
  21. package/dist/scripts/7601-b25d1772bb-lite.chunk.js +0 -2
  22. package/dist/scripts/7601-b25d1772bb-lite.chunk.js.map +0 -1
  23. package/dist/scripts/9843-7b3aab0fbe-lite.chunk.js +0 -2
  24. package/dist/scripts/9843-7b3aab0fbe-lite.chunk.js.map +0 -1
  25. /package/dist/scripts/{1667-e5e6c0c0e0-lite.chunk.js.LICENSE.txt → 1667-f433e796a4-lite.chunk.js.LICENSE.txt} +0 -0
  26. /package/dist/scripts/{bundle-fe9643b6ef.min.js.LICENSE.txt → bundle-7c64909c44.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7601],{5798:(e,t,n)=>{n.d(t,{b:()=>l});var a=n(32735);const r={globalIdpButton:"tAlj0",globalIdpImage:"O94yo"};function i(e){var t=e.idp,n=e.onClick,i=e.backgroundColour,c=void 0===i?"F8981D":i,l=e.foregroundColour,o=void 0===l?"FFF":l,u=e.last,s=e.isGlobalIdp,d=u?"":"mb-3",m={backgroundColor:"#".concat(t.backgroundColour||c),color:"#".concat(t.foregroundColour||o)},p=s?"btn btn-lg btn-outline-dark w-100 ".concat(d," ").concat(r.globalIdpButton):"btn btn-lg w-100 ".concat(d),g=s?{}:m,b=s?"Continue with ".concat(t.name):t.name;return a.createElement("button",{className:p,style:g,onClick:function(){return n(t)}},s&&t.logoUrl&&a.createElement("img",{src:t.logoUrl,className:r.globalIdpImage,alt:"".concat(t.name," logo")}),b)}const c={divider:"FfyN0"};function l(e){var t,n=(null===(t=e.idps)||void 0===t?void 0:t.filter(function(e){return!!e.visible}))||[];if(!n.length)return a.createElement(a.Fragment,null);function r(t){var n=window.location.pathname+window.location.search,a="/challenge?idp=".concat(t.id)+"&redirectUrl="+encodeURIComponent(n);"attribution"in e&&(a+="&attribution="+encodeURIComponent(e.attribution)),window.location.href=a}return a.createElement("div",{className:"".concat(e.className?e.className:"")},a.createElement("div",{className:"my-3 border-bottom position-relative ".concat(c.divider)}),n.map(function(t,n){return a.createElement(i,{key:n,idp:t,onClick:"onClick"in e?e.onClick:r,attribution:"attribution"in e?e.attribution:null,isGlobalIdp:!0})}))}},53475:(e,t,n)=>{n.d(t,{N:()=>a});var a={globalIdps:function(e,t){return{url:"{gateway}/v1/auth/identity-providers?countryCode=".concat(e,"&product=").concat(t),key:"global:idps"}}}},48015:(e,t,n)=>{n.d(t,{M:()=>l});var a=n(6044),r=n(20354),i=n(39151),c={countryCode:"us",isFallback:!0};function l(){var e,t,n=r.a.useBasicFetch(i.L.geoLocation()),l=null===(t=null===(e=a.Ab.GetQuery())||void 0===e?void 0:e.countryCode)||void 0===t?void 0:t.toLowerCase();return l?{countryCode:l}:n.hasCompleted&&!n.data?c:n.data}},19623:(e,t,n)=>{n.d(t,{P:()=>g});var a=n(32735),r=n(81886),i=n(23481),c=n(5798),l=n(98027),o=n(15611),u=n(83345),s=n(14070),d=n(97291),m="launchpad.signInButtons",p=i.T.encloseNamespace(m);function g(e){a.useEffect(function(){e.skipPrompt&&r.Q.Ab.PageLoad(r.Q.C$.getHref(t))},[]);var t=function(){var t=r.Q.Ab.GetQuery(),n={};if(e.customerId&&(n.customerId=e.customerId,delete t.customerId),e.skipPrompt&&delete t.skipPrompt,e.redirectUrl)n.redirectUrl=e.redirectUrl;else{var a=r.Q.Ab.SerializeQueryParams(t);n.redirectUrl=r.Q.Ab.GetCurrentPath()+(a?"?"+a:"")}return e.showSignUp&&(n.showSignUp=!0),{application:d.O.DEFAULT,action:s.e.Default.CHALLENGE,params:n}}();return a.createElement(a.Fragment,null,a.createElement(o.F,{className:"btn btn-lg btn-dark w-100 mt-4",appLink:t},a.createElement(u.x,{namespace:m,phrase:e.pageAppLinkString?"signInToWatch":"signIn"})),e.showJoinCode?a.createElement(o.F,{className:"btn btn-link info-link btn-lg w-100 mt-2",appLink:{application:d.O.LAUNCHPAD,action:s.e.Launchpad.JOIN_CLASSROOM_PROMPT}},p("enterCode")):a.createElement(a.Fragment,null,a.createElement(o.F,{className:"btn btn-lg btn-outline-dark w-100 mt-3",appLink:{application:d.O.LAUNCHPAD,action:s.e.SignUp.SIGN_UP,params:{pageAppLinkString:e.pageAppLinkString}}},p("signUp")),a.createElement(c.b,{idps:e.globalIdps,attribution:(0,l.w)()})))}},77601:(e,t,n)=>{n.r(t),n.d(t,{ShareLinkSignInView:()=>E});var a=n(32735),r=n(23481),i=n(20354),c=n(65858),l=n(64249),o=n(2786),u=n(26339),s=n(4594),d=n(12754),m=n(53475),p=n(48015),g=n(97027),b=n(7179),f=n(19623),h=n(75608),v=n(408);const y={logo:"Nbzoq",container:"hKyDn"};var C="launchpad.shareLinkSignIn";function E(e){var t=e.shareId,n=e.redirectUrl,E=e.customerId,I=(0,h.a)(t),k=(0,b.P)(function(e,t){return{id:null==t?void 0:t.id,app:(0,b.e)(null==t?void 0:t.typeId),shareId:e}}(t,I),c.LZ.Launchpad),U=k.deepLink,P=k.showDeepLink,L=k.onClickDeepLink,w=(0,v.B)().trialAppLinkString,N=(0,p.M)(),S=i.a.useBasicFetch((null==N?void 0:N.countryCode)&&m.N.globalIdps(N.countryCode,d.x.Primary));return I&&S.hasCompleted?a.createElement(g.Zf,{title:I.name,imageUrl:l.I.getImageUrl(I),objectType:I.typeId,links:[{text:r.T.getPhrase(C,"openInApp"),url:U,hide:!P,onClick:L}]},a.createElement("div",{className:"".concat(y.container," m-auto")},a.createElement("div",{className:"".concat(y.logo," mb-4 mx-auto")},a.createElement(o.$S,null)),!!I.name&&a.createElement("h1",{className:"h3"},I.typeId===s.E.Video&&a.createElement(u.$,{type:"series",video:I,analyticsOptions:{},size:"sm"}),I.name),"description"in I&&a.createElement("p",{className:"mb-0 clamp-3"},I.description),a.createElement(f.P,{globalIdps:S.data,customerId:E,redirectUrl:n,skipPrompt:!1,showJoinCode:!1,pageAppLinkString:w,showSignUp:!0}))):a.createElement(a.Fragment,null)}},75608:(e,t,n)=>{n.d(t,{a:()=>p});var a=n(20354),r=n(30439),i=n(4594),c=n(21750),l=n(43012),o=n(20768),u=n(5112),s=n(60011),d=n(31949),m=n(1575);function p(e){var t=a.a.useBasicFetch(d.N.currentUser()),n=a.a.useBasicFetch(r.o.getShareObject(e)),p=function(){if(!n.data||!t.data)return null;switch(n.data.objectTypeId){case i.E.Video:return m.R.publicVideo(n.data.objectId,e);case i.E.Clip:return l.e.publicClip(n.data.objectId,e);case i.E.Interactive:return o.b.publicInteractiveMetadata(n.data.objectId,e);case i.E.Playlist:return u.C.getSharedPlaylist(n.data.objectId,e);case i.E.Subject:return c.x.classification(n.data.objectId,t.data.id);case i.E.Series:return s.J.sharedSeries(n.data.objectId,e)}}();return a.a.useBasicFetch(p).data}},408:(e,t,n)=>{n.d(t,{B:()=>c});var a=n(2948),r=n(86702);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function c(){var e,t,n=(e=(0,a.D)(r.y.OPEN_IN_APP_DATA),t=1,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 a,r,i,c,l=[],o=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);o=!0);}catch(e){u=!0,r=e}finally{try{if(!o&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(u)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(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)?i(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.")}())[0];return{trialAppLinkString:function(){if(n&&["videos","clips","series","playlists","topics","interactives"].includes(n.app)){var e=n.id;switch(n.app){case"videos":return"video:".concat(e);case"playlists":return"playlist:".concat(e);case"series":return"series:".concat(e);case"topics":return"topic:".concat(e);case"interactives":return"interactive:".concat(e);case"clips":return"clip:".concat(e)}}}()}}},97027:(e,t,n)=>{n.d(t,{Hq:()=>d,x_:()=>m,Zf:()=>g});var a=n(32735),r=n(54610),i=n(4594),c=n(67453),l=n(99742);const o={left:"vIypY",leftTextImage:"YViNj",right:"MkD4u",blur:"X6mCh",imageContainer:"bc7kz",imagePosition:"JOhEj",image:"Ef2QR",thumbnail:"Gdurb",tallposter:"fjVNK",cover:"o3j31",linksContainer:"AT9Dk"};function u(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 a,r,i,c,l=[],o=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);o=!0);}catch(e){u=!0,r=e}finally{try{if(!o&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(u)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var d=[{bgUrl:l.W.LaunchPad.BG_1},{bgUrl:l.W.LaunchPad.BG_2},{bgUrl:l.W.LaunchPad.BG_3},{bgUrl:l.W.LaunchPad.BG_4},{bgUrl:l.W.LaunchPad.BG_5}],m=[{bgUrl:l.W.LaunchPad.PRODUCT.BG_1},{bgUrl:l.W.LaunchPad.PRODUCT.BG_2},{bgUrl:l.W.LaunchPad.PRODUCT.BG_3},{bgUrl:l.W.LaunchPad.PRODUCT.BG_4},{bgUrl:l.W.LaunchPad.PRODUCT.BG_5},{bgUrl:l.W.LaunchPad.PRODUCT.BG_6},{bgUrl:l.W.LaunchPad.PRODUCT.BG_7},{bgUrl:l.W.LaunchPad.PRODUCT.BG_8},{bgUrl:l.W.LaunchPad.PRODUCT.BG_9}];function p(e){switch(e){case i.E.Video:case i.E.Interactive:case i.E.Clip:return o.thumbnail;case i.E.Subject:case i.E.Playlist:return o.cover;case i.E.Series:return o.tallposter;default:return""}}function g(e){var t,n=u(a.useState(!1),2),i=n[0],l=n[1],s=u(a.useState(""),2),d=s[0],g=s[1],b=c.j.createUrl(e.imageUrl,{size:r.h2.Large}),f=m;return a.useEffect(function(){if(!b&&f&&0!==f.length){var e,t=(e=f)[Math.floor(Math.random()*e.length)];t.bgUrl&&g(t.bgUrl)}},[]),a.useEffect(function(){if(b){var e=new Image;return e.onload=function(){return l(!0)},e.src=b,function(){return e.onload=null}}},[]),a.createElement("div",{className:"d-flex"},e.leftComponent?e.leftComponent():a.createElement("div",{className:"".concat(o.left," ").concat(d?"bg-blue d-flex align-items-center":"bg-light")},d?a.createElement("img",{className:"img-fluid",src:d,draggable:!1}):i&&a.createElement(a.Fragment,null,a.createElement("div",{className:o.blur,style:{backgroundImage:"url('".concat(b,"')")}}),a.createElement("div",{className:"".concat(o.imageContainer," ").concat(p(e.objectType))},a.createElement("div",{className:o.imagePosition},a.createElement("img",{className:o.image,src:b,alt:e.title}))))),a.createElement("div",{className:"".concat(o.right," bg-white d-flex flex-column")},a.createElement("div",{className:"position-absolute d-flex align-items-center ".concat(o.linksContainer)},null===(t=e.links)||void 0===t?void 0:t.map(function(e,t){return e.hide?a.createElement(a.Fragment,{key:t}):a.createElement("a",{key:t,href:e.url,className:"info-link fw-semibold",onClick:e.onClick},e.text)})),e.children))}}}]);
2
+ //# sourceMappingURL=7601-15d87831f8-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7601-15d87831f8-lite.chunk.js","mappings":"kJACA,SAAgB,gBAAkB,QAAQ,eAAiB,SCqBrD,SAAUA,EAAUC,GACxB,IACEC,EAMED,EANFC,IACA,EAKED,EALFE,QAAO,EAKLF,EAJFG,iBAAAA,OAAgB,IAAG,WAAQ,IAIzBH,EAHFI,iBAAAA,OAAgB,IAAG,QAAK,EACxBC,EAEEL,EAFFK,KACAC,EACEN,EADFM,YAGIC,EAAsBF,EAAO,GAAK,OAElCG,EAAoC,CACxCC,gBAAiB,IAAF,OAAMR,EAAIE,kBAAoBA,GAC7CO,MAAO,IAAF,OAAMT,EAAIG,kBAAoBA,IAK/BO,EAAcL,EAAW,4CACUC,EAAmB,YAAI,mBAAsB,2BAC9DA,GAElBK,EAAcN,EANqB,CAAC,EAMME,EAE1CK,EAAcP,EAAc,iBAAH,OAAoBL,EAAIa,MAASb,EAAIa,KAEpE,OACE,0BAAQC,UAAWJ,EAAaK,MAAOJ,EAAaV,QAAS,WAAF,OAAQ,EAAQD,EAAI,GAC5EK,GAAeL,EAAIgB,SAClB,uBAAKC,IAAKjB,EAAIgB,QAASF,UAAW,iBAAuBI,IAAG,UAAKlB,EAAIa,KAAI,WAE1ED,EAGP,CCxDA,SAAgB,QAAU,SCoBpB,SAAUO,EAAWpB,G,MACnBqB,GAAwB,QAAV,EAAArB,EAAMsB,YAAI,eAAEC,OAAO,SAAAtB,GAAG,QAAMA,EAAIuB,OAAO,KAAK,GAEhE,IAAKH,EAAYI,OACf,OAAO,iCAET,SAASvB,EAAQD,GACf,IAAMyB,EAAsBC,OAAOC,SAASC,SAAWF,OAAOC,SAASE,OAKnEC,EAAO,yBAAkB9B,EAAI+B,IAC7B,gBAAkBC,mBAAmBP,GAErC,gBAAiB1B,IACnB+B,GAAQ,gBAAkBE,mBAAmBjC,EAAMkC,cAErDP,OAAOC,SAASG,KAAOA,CACzB,CAEA,OACE,uBAAKhB,UAAS,UAAKf,EAAMe,UAAYf,EAAMe,UAAY,KACrD,uBAAKA,UAAS,+CAA0C,aACvDM,EAAYc,IAAI,SAACC,EAAGC,GAAC,OACpB,gBAACtC,EAAS,CACRuC,IAAKD,EACLpC,IAAKmC,EACLlC,QAAS,YAAaF,EAAQA,EAAME,QAAUA,EAC9CgC,YAAa,gBAAiBlC,EAAQA,EAAMkC,YAAc,KAC1D5B,aAAW,GACX,GAIV,C,mCCpDO,IAAMiC,EAAe,CAC1BC,WAAU,SAACC,EAAqBC,GAC9B,MAAO,CACLC,IAAK,oDAAF,OAAsDF,EAAW,oBAAYC,GAChFJ,IAAK,cAET,E,uECJIM,EAAgC,CACpCH,YAAa,KACbI,YAAY,GAGR,SAAUC,I,QACRC,EAAc,kBAAkC,mBAEhDN,EAAmD,QAArC,EAAwB,QAAxB,yBAAwB,eAAEA,mBAAW,eAAEO,cAE3D,OAAIP,EACK,CAAEA,YAAAA,GAEPM,EAAYE,eAAiBF,EAAYG,KACpCN,EAEFG,EAAYG,IACrB,C,yICPMC,EAAY,0BACZC,EAAY,qBAAiCD,GAa7C,SAAUE,EAAcrD,GAC5B,YAAgB,WACTA,EAAMsD,YAGX,gBAA4B,eAA2BC,GACzD,EAAG,IAqCH,IAAMA,EAnCN,WACE,IAAMC,EAAe,kBACfC,EAAqB,CAAC,EAgB5B,GAXIzD,EAAM0D,aACRD,EAAOC,WAAa1D,EAAM0D,kBACnBF,EAAaE,YAMlB1D,EAAMsD,mBACDE,EAAaF,WAElBtD,EAAM2D,YACRF,EAAOE,YAAc3D,EAAM2D,gBACtB,CACL,IAAMC,EAAkB,4BAAwCJ,GAChEC,EAAOE,YAAc,yBAAuCC,EAAmB,IAAMA,EAAmB,GACzG,CAKD,OAHI5D,EAAM6D,aACRJ,EAAOI,YAAa,GAEf,CACLC,YAAa,YACbC,OAAQ,sBACRN,OAAAA,EAEJ,CAEgBO,GAEhB,OACE,gCACE,gBAAC,IAAO,CACNjD,UAAU,iCACVwC,QAASA,GAET,gBAAC,IAAI,CAACJ,UAAWA,EAAWc,OAAQjE,EAAMkE,kBAAoB,gBAAkB,YAEjFlE,EAAMmE,aACL,gBAAC,IAAO,CACNpD,UAAU,2CACVwC,QAAS,CACPO,YAAa,cACbC,OAAQ,sCAGTX,EAAU,cAEb,gCACE,gBAAC,IAAO,CACNrC,UAAU,yCACVwC,QAAS,CACPO,YAAa,cACbC,OAAQ,mBACRN,OAAQ,CAAES,kBAAmBlE,EAAMkE,qBAGpCd,EAAU,WAEb,gBAAC,IAAU,CAAC9B,KAAMtB,EAAMwC,WAAYN,aAAa,YAK3D,C,2OC5GA,SAAgB,KAAO,QAAQ,UAAY,SCyB3C,IAAMiB,EAAY,4BAiBZ,SAAUiB,EAAoBpE,GAClC,IAAQqE,EAAqCrE,EAArCqE,QAASV,EAA4B3D,EAA5B2D,YAAaD,EAAe1D,EAAf0D,WACxBY,GAAiB,EAAAC,EAAA,GAAuCF,GAC9D,GAII,EAAAG,EAAA,GAhBN,SAA4BH,EAAiBC,GAC3C,MAAO,CACLtC,GAAIsC,aAAc,EAAdA,EAAgBtC,GACpByC,KAAK,OAA2BH,aAAc,EAAdA,EAAgBI,QAChDL,QAAAA,EAEJ,CAUmBM,CAAmBN,EAASC,GAAiB,gBAH5DM,EAAQ,EAARA,SACAC,EAAY,EAAZA,aACAC,EAAe,EAAfA,gBAEMC,GAAuB,EAAAC,EAAA,KAAvBD,mBAEFhC,GAAc,EAAAD,EAAA,KACdN,EAAa,mBACjBO,aAAW,EAAXA,EAAaN,cAAeF,EAAA,aAAwBQ,EAAYN,YAAawC,EAAA,YAG/E,OAAKX,GAAmB9B,EAAWS,aAIjC,gBAACiC,EAAA,GAAS,CACRC,MAAOb,EAAexD,KACtBsE,SAAUC,EAAA,cAA4Bf,GACtCgB,WAAYhB,EAAeI,OAC3Ba,MAAO,CAAC,CACNC,KAAMC,EAAA,YAA0BtC,EAAW,aAC3CR,IAAKiC,EACLc,MAAOb,EACP3E,QAAS4E,KAGX,uBAAK/D,UAAS,UAAK,YAAgB,YACjC,uBAAKA,UAAS,UAAK,OAAW,kBAC5B,gBAAC4E,EAAA,GAAa,SAEbrB,EAAexD,MAChB,sBAAIC,UAAU,MACXuD,EAAeI,SAAWkB,EAAA,SACzB,gBAACC,EAAA,EAAY,CAACC,KAAK,SAASC,MAAOzB,EAAyB0B,iBAAkB,CAAC,EAAGC,KAAK,OACxF3B,EAAexD,MAGnB,gBAAiBwD,GAChB,qBAAGvD,UAAU,gBAAgBuD,EAAe4B,aAE9C,gBAAC7C,EAAA,EAAa,CACZb,WAAYA,EAAWU,KACvBQ,WAAYA,EACZC,YAAaA,EACbL,YAAY,EACZa,cAAc,EACdD,kBAAmBa,EACnBlB,YAAY,MAnCX,gCAwCX,C,kJCtFM,SAAUU,EAA0BF,GACxC,IAAM8B,EAAc,kBAAkC,mBAChDC,EAAY,kBAAgC,mBAA6B/B,IAsBzEgC,EApBN,WACE,IAAKD,EAAUlD,OAASiD,EAAYjD,KAClC,OAAO,KAET,OAAQkD,EAAUlD,KAAKoD,cACrB,KAAK,UACH,OAAO,gBAA0BF,EAAUlD,KAAKqD,SAAUlC,GAC5D,KAAK,SACH,OAAO,eAAwB+B,EAAUlD,KAAKqD,SAAUlC,GAC1D,KAAK,gBACH,OAAO,8BAA8C+B,EAAUlD,KAAKqD,SAAUlC,GAChF,KAAK,aACH,OAAO,sBAAmC+B,EAAUlD,KAAKqD,SAAUlC,GACrE,KAAK,YACH,OAAO,mBAAsC+B,EAAUlD,KAAKqD,SAAUJ,EAAYjD,KAAKlB,IACzF,KAAK,WACH,OAAO,iBAA4BoE,EAAUlD,KAAKqD,SAAUlC,GAElE,CAEwBmC,GAGxB,OAFiB,kBAAwBH,GAEzBnD,IAClB,C,gKCpCM,SAAU8B,IACd,I,IAAOyB,G,GAAa,OAAgC,sB,EAA+B,E,o4BAAnE,GA4BhB,MAAO,CACL1B,mBA3BF,WACE,GAAK0B,GAGa,CAAE,SAAU,QAAS,SAAU,YAAa,SAAU,gBACzDC,SAASD,EAAUhC,KAAlC,CAIA,IAAMzC,EAAKyE,EAAUzE,GACrB,OAAQyE,EAAUhC,KAChB,IAAK,SACH,MAAO,SAAP,OAAgBzC,GAClB,IAAK,YACH,MAAO,YAAP,OAAmBA,GACrB,IAAK,SACH,MAAO,UAAP,OAAiBA,GACnB,IAAK,SACH,MAAO,SAAP,OAAgBA,GAClB,IAAK,eACH,MAAO,eAAP,OAAsBA,GACxB,IAAK,QACH,MAAO,QAAP,OAAeA,GAflB,CAiBH,CAGsB2E,GAExB,C,gHCpCA,SAAgB,KAAO,QAAQ,cAAgB,QAAQ,MAAQ,QAAQ,KAAO,QAAQ,eAAiB,QAAQ,cAAgB,QAAQ,MAAQ,QAAQ,UAAY,QAAQ,WAAa,QAAQ,MAAQ,QAAQ,eAAiB,S,ggCCS1N,IAAMC,EAA4B,CACvC,CAAEC,MAAOC,EAAA,kBACT,CAAED,MAAOC,EAAA,kBACT,CAAED,MAAOC,EAAA,kBACT,CAAED,MAAOC,EAAA,kBACT,CAAED,MAAOC,EAAA,mBAGEC,EAAoC,CAC/C,CAAEF,MAAOC,EAAA,0BACT,CAAED,MAAOC,EAAA,0BACT,CAAED,MAAOC,EAAA,0BACT,CAAED,MAAOC,EAAA,0BACT,CAAED,MAAOC,EAAA,0BACT,CAAED,MAAOC,EAAA,0BACT,CAAED,MAAOC,EAAA,0BACT,CAAED,MAAOC,EAAA,0BACT,CAAED,MAAOC,EAAA,2BAYX,SAASE,EAA0B1B,GACjC,OAAQA,GACN,KAAKM,EAAA,QACL,KAAKA,EAAA,cACL,KAAKA,EAAA,OACH,OAAO,YAET,KAAKA,EAAA,UACL,KAAKA,EAAA,WACH,OAAO,QAET,KAAKA,EAAA,SACH,OAAO,aAET,QACE,MAAO,GAEb,CAyBM,SAAUV,EAAUlF,G,MACiC,IAArB,YAAe,GAAM,GAAjDiH,EAAS,KAAEC,EAAY,KACuB,IAA1B,WAAuB,IAAG,GAA9CC,EAAK,KAAEC,EAAQ,KAEjBhC,EAAWiC,EAAA,YAAsBrH,EAAMoF,SAAU,CAAEa,KAAM,aACzDqB,EAAaP,EAuBnB,OArBA,YAAgB,WACd,IAAI3B,GAAakC,GAAoC,IAAtBA,EAAW7F,OAA1C,CAGA,IAfoB8F,EAedJ,GAfcI,EAeSD,GAdfE,KAAKC,MAAMD,KAAKE,SAAWH,EAAS9F,SAgB9C0F,EAAMN,OACRO,EAASD,EAAMN,MALT,CAOV,EAAG,IAEH,YAAgB,WACd,GAAKzB,EAAL,CAGA,IAAMuC,EAAM,IAAIC,MAGhB,OAFAD,EAAIE,OAAS,kBAAMX,GAAa,EAAK,EACrCS,EAAIzG,IAAMkE,EACH,kBAAMuC,EAAIE,OAAS,IAAI,CALtB,CAMV,EAAG,IAGD,uBAAK9G,UAAU,UACXf,EAAM8H,cACN9H,EAAM8H,gBAEN,uBACE/G,UAAS,UAAK,OAAW,YAAIoG,EAAQ,oCAAsC,aAE1EA,EACC,uBAAKpG,UAAU,YAAYG,IAAKiG,EAAOY,WAAW,IACjDd,GACC,gCACE,uBAAKlG,UAAW,OAAaC,MAAO,CAAEgH,gBAAiB,QAAF,OAAU5C,EAAQ,SACvE,uBAAKrE,UAAS,UAAK,iBAAqB,YAAIiG,EAA0BhH,EAAMsF,cAC1E,uBAAKvE,UAAW,iBACd,uBAAKA,UAAW,QAAcG,IAAKkE,EAAUjE,IAAKnB,EAAMmF,YAQtE,uBAAKpE,UAAS,UAAK,QAAY,iCAC7B,uBAAKA,UAAS,sDAAiD,mBACjD,QAAX,EAAAf,EAAMuF,aAAK,eAAEpD,IAAI,SAAC8F,EAAM3F,GACvB,OAAI2F,EAAKvC,KACA,gBAAC,WAAc,CAACpD,IAAKA,IAG5B,qBAAGA,IAAKA,EAAKP,KAAMkG,EAAKtF,IAAK5B,UAAU,wBAAwBb,QAAS+H,EAAK/H,SAC1E+H,EAAKzC,KAGZ,IAGDxF,EAAMkI,UAIf,C","sources":["file:///app/packages/libs/shared/src/apps/sign-up/components/general/idp-button/idp-button.scss","file:///app/packages/libs/shared/src/apps/sign-up/components/general/idp-button/IdpButton.tsx","file:///app/packages/libs/shared/src/apps/sign-up/components/general/global-idps/global-idps.scss","file:///app/packages/libs/shared/src/apps/sign-up/components/general/global-idps/GlobalIdps.tsx","file:///app/packages/libs/shared/src/flight-requests/AuthRequests.ts","file:///app/packages/libs/shared/src/hooks/useGeoLocation.ts","file:///app/packages/projects/lite/src/apps/launchpad/components/sign-in-buttons/SignInButtons.tsx","file:///app/packages/projects/lite/src/apps/launchpad/views/share-link-sign-in/share-link-sign-in.scss","file:///app/packages/projects/lite/src/apps/launchpad/views/share-link-sign-in/ShareLinkSignInView.tsx","file:///app/packages/projects/lite/src/apps/share/hooks/useFetchSharedResource.ts","file:///app/packages/projects/lite/src/apps/sign-up/hooks/useTrialAppLink.tsx","file:///app/packages/projects/lite/src/shared/components/launchpad/launchpad.scss","file:///app/packages/projects/lite/src/shared/components/launchpad/Launchpad.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"globalIdpButton\":\"tAlj0\",\"globalIdpImage\":\"O94yo\"};","import * as React from 'react';\n\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\n\nimport styles from './idp-button.scss';\n\ninterface IdpButtonProps {\n idp: IdentityProvider;\n onClick: (provider: IdentityProvider) => void;\n backgroundColour?: string;\n foregroundColour?: string;\n attribution?: string;\n\n isGlobalIdp: boolean;\n\n /**\n * Because rendering globalIdps is conditional. We have a \"Don't have an account\" link at the bottom\n * which uses margin top. So the last item in this view must not have a margin bottom. - Sha\n */\n last?: boolean;\n}\n\nexport function IdpButton(props: IdpButtonProps): React.ReactElement {\n const {\n idp,\n onClick,\n backgroundColour = 'F8981D',\n foregroundColour = 'FFF',\n last,\n isGlobalIdp\n } = props;\n\n const lastButtonClassName = last ? '' : 'mb-3';\n\n const defaultStyle: React.CSSProperties = {\n backgroundColor: `#${idp.backgroundColour || backgroundColour}`,\n color: `#${idp.foregroundColour || foregroundColour}`\n };\n\n const globalStyle: React.CSSProperties = {};\n\n const buttonClass = isGlobalIdp\n ? `btn btn-lg btn-outline-dark w-100 ${lastButtonClassName} ${styles.globalIdpButton}`\n : `btn btn-lg w-100 ${lastButtonClassName}`;\n\n const buttonStyle = isGlobalIdp ? globalStyle : defaultStyle;\n\n const buttonLabel = isGlobalIdp ? `Continue with ${idp.name}` : idp.name;\n\n return (\n <button className={buttonClass} style={buttonStyle} onClick={() => onClick(idp)}>\n {isGlobalIdp && idp.logoUrl && (\n <img src={idp.logoUrl} className={styles.globalIdpImage} alt={`${idp.name} logo`} />\n )}\n {buttonLabel}\n </button>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"divider\":\"FfyN0\"};","import React from 'react';\n\nimport { IdpButton } from 'libs/shared/apps/sign-up/components/general/idp-button/IdpButton';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\n\nimport styles from './global-idps.scss';\n\ninterface AuthIdpProps {\n idps: IdentityProvider[];\n onClick: (idp: IdentityProvider) => void;\n className?: string;\n}\n\ninterface LiteIdpProps {\n idps: IdentityProvider[];\n className?: string;\n attribution: string;\n}\n\ntype GlobalIdpsProps = AuthIdpProps | LiteIdpProps\n\nexport function GlobalIdps(props: GlobalIdpsProps): JSX.Element {\n const visibleIdps = props.idps?.filter(idp => !!idp.visible) || [];\n \n if (!visibleIdps.length)\n return <></>;\n\n function onClick(idp: IdentityProvider): void {\n const currentPathAndQuery = window.location.pathname + window.location.search;\n\n /**\n * Intentionally not using LocationUtils as to not bring a large number of dependencies into Auth - Sha\n */\n let href = `/challenge?idp=${idp.id}`\n + '&redirectUrl=' + encodeURIComponent(currentPathAndQuery);\n \n if ('attribution' in props)\n href += '&attribution=' + encodeURIComponent(props.attribution);\n\n window.location.href = href;\n }\n\n return (\n <div className={`${props.className ? props.className : ''}`}>\n <div className={`my-3 border-bottom position-relative ${styles.divider}`}></div>\n {visibleIdps.map((p, i) => (\n <IdpButton\n key={i}\n idp={p}\n onClick={'onClick' in props ? props.onClick : onClick}\n attribution={'attribution' in props ? props.attribution : null}\n isGlobalIdp\n />\n ))}\n </div>\n );\n}","import { Flight } from 'libs/common/react/index';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\n\nexport const AuthRequests = {\n globalIdps(countryCode: string, product: ProductId): Flight.Request {\n return {\n url: `{gateway}/v1/auth/identity-providers?countryCode=${countryCode}&product=${product}`,\n key: 'global:idps'\n };\n }\n};","import { LocationUtils } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nconst FALLBACK_COUNTRY: GeoLocation = {\n countryCode: 'us',\n isFallback: true\n};\n\nexport function useGeoLocation(): GeoLocation {\n const geoLocation = Flight.useBasicFetch<GeoLocation>(ConfigRequests.geoLocation());\n\n const countryCode = LocationUtils.GetQuery()?.countryCode?.toLowerCase();\n \n if (countryCode)\n return { countryCode };\n\n if (geoLocation.hasCompleted && !geoLocation.data)\n return FALLBACK_COUNTRY;\n\n return geoLocation.data;\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { GlobalIdps } from 'libs/shared/apps/sign-up/components/general/global-idps/GlobalIdps';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport { getLiteAttributionForAuth } from 'libs/shared/apps/sign-up/utils/getLiteAttributionForAuth';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'launchpad.signInButtons';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface SignInButtonsProps {\n customerId: string;\n skipPrompt: boolean;\n showJoinCode: boolean;\n redirectUrl: string;\n pageAppLinkString: string;\n showSignUp: boolean;\n globalIdps: IdentityProvider[];\n}\n\nexport function SignInButtons(props: SignInButtonsProps): JSX.Element {\n React.useEffect(() => {\n if (!props.skipPrompt)\n return;\n\n Core.LocationUtils.PageLoad(Core.AppLinkHelper.getHref(appLink));\n }, []);\n\n function getAppLink(): Core.AppLink {\n const currentQuery = Core.LocationUtils.GetQuery();\n const params: HashObject = {};\n\n /**\n * Add customerId to the login url and remove it from the redirect url\n */\n if (props.customerId) {\n params.customerId = props.customerId;\n delete currentQuery.customerId;\n }\n\n /**\n * Remove skip prompt from the return url\n */\n if (props.skipPrompt)\n delete currentQuery.skipPrompt;\n\n if (props.redirectUrl) {\n params.redirectUrl = props.redirectUrl;\n } else {\n const serializedQuery = Core.LocationUtils.SerializeQueryParams(currentQuery);\n params.redirectUrl = Core.LocationUtils.GetCurrentPath() + (serializedQuery ? ('?' + serializedQuery) : '');\n }\n\n if (props.showSignUp)\n params.showSignUp = true;\n\n return {\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params\n };\n }\n\n const appLink = getAppLink();\n\n return (\n <>\n <AppLink\n className='btn btn-lg btn-dark w-100 mt-4'\n appLink={appLink}\n >\n <Text namespace={namespace} phrase={props.pageAppLinkString ? 'signInToWatch' : 'signIn'} />\n </AppLink>\n {props.showJoinCode ?\n <AppLink\n className='btn btn-link info-link btn-lg w-100 mt-2'\n appLink={{\n application: AppChannels.LAUNCHPAD,\n action: Actions.Launchpad.JOIN_CLASSROOM_PROMPT\n }}\n >\n {getPhrase('enterCode')}\n </AppLink> :\n <>\n <AppLink\n className='btn btn-lg btn-outline-dark w-100 mt-3'\n appLink={{\n application: AppChannels.LAUNCHPAD,\n action: Actions.SignUp.SIGN_UP,\n params: { pageAppLinkString: props.pageAppLinkString }\n }}\n >\n {getPhrase('signUp')}\n </AppLink>\n <GlobalIdps idps={props.globalIdps} attribution={getLiteAttributionForAuth()} />\n </>\n }\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"Nbzoq\",\"container\":\"hKyDn\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharableEntity, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { AuthRequests } from 'libs/shared/flight-requests/AuthRequests';\nimport { useGeoLocation } from 'libs/shared/hooks/useGeoLocation';\nimport { Video } from 'libs/shared/interfaces';\n\nimport { Launchpad } from 'shared/components/launchpad/Launchpad';\nimport { DeepLinkViewModel, mapMasterTypeToDeepLinkApp, useDeepLinks } from 'shared/hooks/useDeepLinks';\n\nimport { SignInButtons } from 'apps/launchpad/components/sign-in-buttons/SignInButtons';\nimport { useFetchSharedResource } from 'apps/share/hooks/useFetchSharedResource';\nimport { useTrialAppLink } from 'apps/sign-up/hooks/useTrialAppLink';\n\nimport styles from './share-link-sign-in.scss';\n\nconst namespace = 'launchpad.shareLinkSignIn';\n\ninterface ShareLinkSignInProps {\n shareId: string;\n redirectUrl: string;\n customerId?: string;\n}\n\nfunction getInitialDeepLink(shareId: string, sharedResource?: SharableEntity): DeepLinkViewModel {\n return {\n id: sharedResource?.id,\n app: mapMasterTypeToDeepLinkApp(sharedResource?.typeId),\n shareId\n };\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function ShareLinkSignInView(props: ShareLinkSignInProps): React.ReactElement {\n const { shareId, redirectUrl, customerId } = props;\n const sharedResource = useFetchSharedResource<SharableEntity>(shareId);\n const {\n deepLink,\n showDeepLink,\n onClickDeepLink\n } = useDeepLinks(getInitialDeepLink(shareId, sharedResource), LocationContext.Launchpad);\n const { trialAppLinkString } = useTrialAppLink();\n\n const geoLocation = useGeoLocation();\n const globalIdps = Flight.useBasicFetch<IdentityProvider[]>(\n geoLocation?.countryCode && AuthRequests.globalIdps(geoLocation.countryCode, ProductId.Primary)\n );\n\n if (!sharedResource || !globalIdps.hasCompleted)\n return <></>;\n\n return (\n <Launchpad\n title={sharedResource.name}\n imageUrl={ShareViewHelper.getImageUrl(sharedResource)}\n objectType={sharedResource.typeId}\n links={[{\n text: LanguageService.getPhrase(namespace, 'openInApp'),\n url: deepLink,\n hide: !showDeepLink,\n onClick: onClickDeepLink\n }]}\n >\n <div className={`${styles.container} m-auto`}>\n <div className={`${styles.logo} mb-4 mx-auto`}>\n <ClickViewLogo />\n </div>\n {!!sharedResource.name &&\n <h1 className='h3'>\n {sharedResource.typeId === MasterType.Video &&\n <VideoSubText type='series' video={sharedResource as Video} analyticsOptions={{}} size='sm' />}\n {sharedResource.name}\n </h1>\n }\n {'description' in sharedResource &&\n <p className='mb-0 clamp-3'>{sharedResource.description}</p>\n }\n <SignInButtons\n globalIdps={globalIdps.data}\n customerId={customerId}\n redirectUrl={redirectUrl}\n skipPrompt={false}\n showJoinCode={false}\n pageAppLinkString={trialAppLinkString}\n showSignUp={true}\n />\n </div>\n </Launchpad>\n );\n}","import { Flight } from 'libs/common/flight';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { CurrentUser, ShareLink } from 'libs/shared/interfaces';\n\nexport function useFetchSharedResource<T>(shareId: string): T {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareObject(shareId));\n\n function getResourceRequest(): Flight.Request {\n if (!shareLink.data || !currentUser.data)\n return null;\n\n switch (shareLink.data.objectTypeId) {\n case MasterType.Video:\n return VideoRequests.publicVideo(shareLink.data.objectId, shareId);\n case MasterType.Clip:\n return ClipRequests.publicClip(shareLink.data.objectId, shareId);\n case MasterType.Interactive:\n return InteractiveRequests.publicInteractiveMetadata(shareLink.data.objectId, shareId);\n case MasterType.Playlist:\n return PlaylistRequests.getSharedPlaylist(shareLink.data.objectId, shareId);\n case MasterType.Subject:\n return ClassificationRequests.classification(shareLink.data.objectId, currentUser.data.id);\n case MasterType.Series:\n return SeriesRequests.sharedSeries(shareLink.data.objectId, shareId);\n }\n }\n\n const resourceRequest = getResourceRequest();\n const resource = Flight.useBasicFetch<T>(resourceRequest);\n\n return resource.data;\n}","import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { DeepLinkViewModel } from 'shared/hooks/useDeepLinks';\n\nexport function useTrialAppLink() {\n const [viewModel] = useViewModel<DeepLinkViewModel>(ViewModelKeys.OPEN_IN_APP_DATA);\n\n function getTrialAppLinkString() {\n if (!viewModel) {\n return;\n }\n const validApps = [ 'videos', 'clips', 'series', 'playlists', 'topics', 'interactives' ];\n if (!validApps.includes(viewModel.app)) {\n return;\n }\n\n const id = viewModel.id;\n switch (viewModel.app) {\n case 'videos':\n return `video:${id}`;\n case 'playlists':\n return `playlist:${id}`;\n case 'series':\n return `series:${id}`;\n case 'topics':\n return `topic:${id}`;\n case 'interactives':\n return `interactive:${id}`;\n case 'clips':\n return `clip:${id}`;\n }\n }\n\n return {\n trialAppLinkString: getTrialAppLinkString()\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"vIypY\",\"leftTextImage\":\"YViNj\",\"right\":\"MkD4u\",\"blur\":\"X6mCh\",\"imageContainer\":\"bc7kz\",\"imagePosition\":\"JOhEj\",\"image\":\"Ef2QR\",\"thumbnail\":\"Gdurb\",\"tallposter\":\"fjVNK\",\"cover\":\"o3j31\",\"linksContainer\":\"AT9Dk\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './launchpad.scss';\n\nexport const LAUNCHPAD_FALLBACK_IMAGES = [\n { bgUrl: ImageUrls.LaunchPad.BG_1 },\n { bgUrl: ImageUrls.LaunchPad.BG_2 },\n { bgUrl: ImageUrls.LaunchPad.BG_3 },\n { bgUrl: ImageUrls.LaunchPad.BG_4 },\n { bgUrl: ImageUrls.LaunchPad.BG_5 }\n];\n\nexport const LAUNCHPAD_PRODUCT_FALLBACK_IMAGES = [\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_1 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_2 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_3 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_4 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_5 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_6 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_7 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_8 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_9 }\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst XMAS_URLS: LaunchImage[] = [\n { bgUrl: '/images/launchpad/xmas/2024-promo1-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo2-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo3-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo4-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo5-bg.png' }\n];\n\nfunction mapObjectTypeToImageClass(objectType: MasterType): string {\n switch (objectType) {\n case MasterType.Video:\n case MasterType.Interactive:\n case MasterType.Clip:\n return styles.thumbnail;\n\n case MasterType.Subject:\n case MasterType.Playlist:\n return styles.cover;\n\n case MasterType.Series:\n return styles.tallposter;\n\n default:\n return '';\n }\n}\n\ninterface LaunchpadLink {\n url: string;\n text: string;\n onClick?: () => void;\n hide?: boolean;\n}\n\ninterface LaunchpadProps {\n objectType?: MasterType;\n title?: string;\n imageUrl?: string;\n links?: LaunchpadLink[];\n leftComponent?: () => JSX.Element;\n}\n\ninterface LaunchImage {\n bgUrl: string;\n}\n\nfunction getRandomImage(urlLists: LaunchImage[]): LaunchImage {\n return urlLists[Math.floor(Math.random() * urlLists.length)];\n}\n\nexport function Launchpad(props: React.PropsWithChildren<LaunchpadProps>): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n const [ image, setImage ] = React.useState<string>('');\n\n const imageUrl = ImageHelper.createUrl(props.imageUrl, { size: ImageSize.Large });\n const IMAGE_URLS = LAUNCHPAD_PRODUCT_FALLBACK_IMAGES;\n\n React.useEffect(() => {\n if (imageUrl || !IMAGE_URLS || IMAGE_URLS.length === 0)\n return;\n\n const image = getRandomImage(IMAGE_URLS);\n\n if (image.bgUrl) {\n setImage(image.bgUrl);\n }\n }, []);\n\n React.useEffect(() => {\n if (!imageUrl)\n return;\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = imageUrl;\n return () => img.onload = null;\n }, []);\n\n return (\n <div className='d-flex'>\n { props.leftComponent ?\n props.leftComponent()\n :\n <div\n className={`${styles.left} ${image ? 'bg-blue d-flex align-items-center' : 'bg-light'}`}\n >\n {image ?\n <img className='img-fluid' src={image} draggable={false} /> :\n (showImage &&\n <>\n <div className={styles.blur} style={{ backgroundImage: `url('${imageUrl}')` }} />\n <div className={`${styles.imageContainer} ${mapObjectTypeToImageClass(props.objectType)}`}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n )\n }\n </div>\n }\n <div className={`${styles.right} bg-white d-flex flex-column`}>\n <div className={`position-absolute d-flex align-items-center ${styles.linksContainer}`}>\n {props.links?.map((link, key) => {\n if (link.hide)\n return <React.Fragment key={key}></React.Fragment>;\n\n return (\n <a key={key} href={link.url} className='info-link fw-semibold' onClick={link.onClick}>\n {link.text}\n </a>\n );\n })}\n </div>\n\n {props.children}\n </div>\n </div>\n );\n}"],"names":["IdpButton","props","idp","onClick","backgroundColour","foregroundColour","last","isGlobalIdp","lastButtonClassName","defaultStyle","backgroundColor","color","buttonClass","buttonStyle","buttonLabel","name","className","style","logoUrl","src","alt","GlobalIdps","visibleIdps","idps","filter","visible","length","currentPathAndQuery","window","location","pathname","search","href","id","encodeURIComponent","attribution","map","p","i","key","AuthRequests","globalIdps","countryCode","product","url","FALLBACK_COUNTRY","isFallback","useGeoLocation","geoLocation","toLowerCase","hasCompleted","data","namespace","getPhrase","SignInButtons","skipPrompt","appLink","currentQuery","params","customerId","redirectUrl","serializedQuery","showSignUp","application","action","getAppLink","phrase","pageAppLinkString","showJoinCode","ShareLinkSignInView","shareId","sharedResource","useFetchSharedResource","useDeepLinks","app","typeId","getInitialDeepLink","deepLink","showDeepLink","onClickDeepLink","trialAppLinkString","useTrialAppLink","ProductId","Launchpad","title","imageUrl","ShareViewHelper","objectType","links","text","LanguageService","hide","ClickViewLogo","MasterType","VideoSubText","type","video","analyticsOptions","size","description","currentUser","shareLink","resourceRequest","objectTypeId","objectId","getResourceRequest","viewModel","includes","getTrialAppLinkString","LAUNCHPAD_FALLBACK_IMAGES","bgUrl","ImageUrls","LAUNCHPAD_PRODUCT_FALLBACK_IMAGES","mapObjectTypeToImageClass","showImage","setShowImage","image","setImage","ImageHelper","IMAGE_URLS","urlLists","Math","floor","random","img","Image","onload","leftComponent","draggable","backgroundImage","link","children"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9843],{69843:(e,r,n)=>{n.d(r,{c:()=>N});var s=n(32735),a=n(23481),t=n(81886),i=n(2948),o=n(49985),l=n(65858),d=n(26055),c=n(43820),u=n(14604),p=n(83345),g="userManager.ssoPasswordResetEmailNotAllowedError";function m(e){return s.createElement(u.W,null,s.createElement("p",{className:"mb-1 fw-semibold"},s.createElement(p.x,{namespace:g,phrase:"warning"})),e.helpArticle&&s.createElement("a",{href:e.helpArticle,target:"_blank",className:"info-link"},s.createElement(p.x,{namespace:g,phrase:"findMore"})))}var b=n(83657),h=n(38143),f=n(40424),v=n(12754),R=n(76881),k=n(86613),y=n(42617);function C(e){return e&&e.groups?e.groups.map(function(e){return e.name}):[]}var O={isDev:function(e){return C(e).includes(y.j.Developer)},hasSubjectsAccess:function(e){return[y.j.Developer,y.j.Content,y.j.Curator,y.j.StreamableCurator].some(function(r){return C(e).includes(r)})}},w=n(89961),E=n(35223),A=n(64818);function L(e){return function(e){if(Array.isArray(e))return j(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||S(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e,r){if(e){if("string"==typeof e)return j(e,r);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)?j(e,r):void 0}}function j(e,r){(null==r||r>e.length)&&(r=e.length);for(var n=0,s=Array(r);n<r;n++)s[n]=e[n];return s}var U=a.T.encloseNamespace("userManager.userList");function N(e){var r=function(e){var r,n,a,u,p,g,b,y,C,j,N,T=s.useContext(d.A),V=function(r){return r===A.l.getUserStatus(e.user)},I=V(f.w.Active),x=null===(r=e.user.metadata)||void 0===r?void 0:r.isEmailVerified,D=e.user.id==(null===(n=e.currentUser)||void 0===n?void 0:n.id),P=T!==c.a.Curator&&e.currentUser.role!==k.i.SuperAdmin&&(null===(a=e.user.userProfile)||void 0===a?void 0:a.role)===k.i.SuperAdmin,M=(j=(0,i.D)(h.g.BULK_REMOVE_USERS),N=2,function(e){if(Array.isArray(e))return e}(j)||function(e,r){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var s,a,t,i,o=[],l=!0,d=!1;try{if(t=(n=n.call(e)).next,0===r){if(Object(n)!==n)return;l=!1}else for(;!(l=(s=t.call(n)).done)&&(o.push(s.value),o.length!==r);l=!0);}catch(e){d=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(d)throw a}}return o}}(j,N)||S(j,N)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[1];function Y(r){o.k.logUserAction({id:e.user.id},o.k.mergeOptions({entity:l.py.User,workflowPhase:l.eu.Start,location:l.LZ[e.userType===R.Y.Learner?"StaffManagerListItem":"StudentManagerListItem"]},r))}var $=[];if(!e.isEditUserForm){var _=function(){return!(P||e.hasRostering||!I&&(!V(f.w.Inactive)||T!==c.a.Curator))};$.push({order:0,onClick:function(){var r;if(_())if(Y({actionType:l.Vw.Edit}),e.onEditUser)e.onEditUser(e.user);else{var n=Object.assign(Object.assign({},e.appLinks.editUser),{args:[].concat(L(null!==(r=e.appLinks.editUser.args)&&void 0!==r?r:[]),[e.user.id])});t.Q.C$.trigger(n)}},svgName:E.vn.Edit,className:"btn btn-link svg-container ".concat(_()?"":"disabled"),tooltip:P?U("superAdminReadOnly"):e.hasRostering?U("editControlledByRostering"):V(f.w.Disabled)?U("editUserDisabled"):V(f.w.Inactive)&&T!==c.a.Curator?U("editUserPending"):U("editUser"),button:!0})}var Q=function(e){var r=e.hasRostering,n=e.isActive,s=e.superAdminReadOnly;return r?U("editControlledByRostering"):n?U("deleteDisabledTooltip"):s?U("superAdminReadOnly"):null};return e.user.email&&V(f.w.Inactive)&&e.onClickResendActivationEmail&&$.push({order:5,disabled:e.hasRostering||P,tooltip:Q({hasRostering:e.hasRostering,superAdminReadOnly:P}),label:U("resendActivationEmail"),onClick:function(){Y({actionType:l.Vw.SendEmail,descriptor:l.on.ActivateUser}),e.onClickResendActivationEmail(e.user)},className:e.hasRostering||P?"cursor-default disabled":"btn btn-link"}),e.user.email&&I&&!x&&$.push({order:5,label:U("sendVerificationEmail"),disabled:e.hasRostering||P,tooltip:Q({hasRostering:e.hasRostering,superAdminReadOnly:P}),onClick:function(){Y({actionType:l.Vw.SendEmail,descriptor:l.on.VerifyEmail}),e.onClickSendVerificationEmail(e.user)},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),D||(x&&I&&e.onClickSendResetEmail&&$.push({order:5,label:U("sendResetEmail"),disabled:e.hasRostering||P,tooltip:Q({hasRostering:e.hasRostering,superAdminReadOnly:P}),onClick:function(){A.l.hasSso(e.user)?w.M.render(s.createElement(m,{helpArticle:e.ssoHelpArticle}),{title:U("sendResetEmail"),cancelButtonProps:{text:U("close"),variant:"dark"}}):(Y({actionType:l.Vw.SendEmail,descriptor:l.on.ResetPasswordEmail}),e.onClickSendResetEmail(e.user))},className:e.hasRostering||P?"cursor-default disabled":"btn btn-link"}),V(f.w.Inactive)||$.push({order:10,label:U(I?"deactivate":"activate"),disabled:e.hasRostering||P,tooltip:Q({hasRostering:e.hasRostering,superAdminReadOnly:P}),className:e.hasRostering||P?"cursor-default disabled":"",onClick:function(){var r;Y({actionType:l.Vw.Activate,descriptor:I?l.DL.Off:l.DL.On});var n=Object.assign(Object.assign({},e.appLinks.toggleStatus),{args:[].concat(L(null!==(r=e.appLinks.toggleStatus.args)&&void 0!==r?r:[]),[e.user.id])});t.Q.C$.trigger(n)}}),(T!==c.a.Primary||(null===(u=e.products)||void 0===u?void 0:u.includes(v.x.Online)))&&$.push({order:25,disabled:e.hasRostering||P,onClick:function(){I||(Y({actionType:l.Vw.Delete,descriptor:l.yh.Single}),M({users:[e.user],totalUsers:1}),t.Q.C$.trigger(e.appLinks.deleteUser))},label:U("delete"),className:"btn btn-link text-danger ".concat(I||e.hasRostering||P?"cursor-default disabled":""),button:!1,tooltip:Q({superAdminReadOnly:P,hasRostering:e.hasRostering,isActive:I})}),T!==c.a.Online&&!(null===(p=e.products)||void 0===p?void 0:p.includes(v.x.Online))&&$.push({order:25,disabled:e.hasRostering||P,onClick:function(){var r;if(!I){Y({actionType:l.Vw.Remove,descriptor:l.yh.Single});var n=Object.assign(Object.assign({},e.appLinks.removeUser),{args:[].concat(L(null!==(r=e.appLinks.removeUser.args)&&void 0!==r?r:[]),[e.user.id])});t.Q.C$.trigger(n)}},label:U("remove"),className:"btn btn-link text-danger ".concat(I||e.hasRostering||P?"cursor-default disabled":""),button:!1,tooltip:Q({hasRostering:e.hasRostering,superAdminReadOnly:P})})),T===c.a.Online&&e.userType===R.Y.Learner&&I&&$.push({order:15,label:U("viewWorkspace"),onClick:function(){return Y({actionType:l.Vw.Click,descriptor:l._S.ViewStudentWorkspace})},appLink:Object.assign(Object.assign({},e.appLinks.viewStudentWorkspace),{params:{username:e.user.username}}),className:e.hasRostering||P?"cursor-default disabled":"btn btn-link",button:!1}),T!==c.a.Primary||e.userType!==R.Y.Learner||V(f.w.Inactive)||$.push({order:15,label:U("viewStudentsVideos"),onClick:function(){return Y({actionType:l.Vw.Click,descriptor:l._S.ViewStudentWorkspace})},appLink:Object.assign(Object.assign({},e.appLinks.viewStudentWorkspace),{args:[e.user.id]}),className:"btn btn-link",button:!1}),I&&(e.userType===R.Y.Staff&&!x||e.userType===R.Y.Learner)&&$.push({order:20,disabled:e.hasRostering||P,label:U("changePassword"),className:e.hasRostering||P?"cursor-default disabled":"",onClick:function(){var r;Y({actionType:l.Vw.ChangePassword});var n=Object.assign(Object.assign({},e.appLinks.changePassword),{args:[].concat(L(null!==(r=e.appLinks.changePassword.args)&&void 0!==r?r:[]),[e.user.id])});t.Q.C$.trigger(n)}}),T===c.a.Curator&&O.isDev(e.currentUser)&&$.push.apply($,[{order:2,label:U("manageCuratorGroups"),disabled:e.hasRostering||P,tooltip:Q({hasRostering:e.hasRostering,superAdminReadOnly:P}),className:e.hasRostering||P?"cursor-default disabled":"",onClick:function(){Y({actionType:l.Vw.ManageGroup}),t.Q.C$.trigger(Object.assign(Object.assign({},e.appLinks.manageUserCuratorGroups),{args:[e.user.id]}))}},{order:3,label:U("editUserOptions"),disabled:e.hasRostering||P,tooltip:Q({hasRostering:e.hasRostering,superAdminReadOnly:P}),className:e.hasRostering||P?"cursor-default disabled":"",onClick:function(){var r;e.onEditUserOptions?e.onEditUserOptions(e.user):t.Q.C$.trigger(Object.assign(Object.assign({},e.appLinks.editUserOptions),{args:[].concat(L(null!==(r=e.appLinks.editUserOptions.args)&&void 0!==r?r:[]),[e.user.id])}))}}]),T===c.a.Curator&&e.hasUserCredit&&$.push({order:4,label:U("editUserCredits"),appLink:Object.assign(Object.assign({},e.appLinks.userCredit),{args:[].concat(L(null!==(g=e.appLinks.userCredit.args)&&void 0!==g?g:[]),[e.user.id])})}),T===c.a.Curator&&(null===(b=e.user.metadata)||void 0===b?void 0:b.isEmailVerified)&&!V(f.w.Inactive)&&$.push({order:5,label:U("unverifyEmail"),disabled:e.hasRostering||P,tooltip:Q({hasRostering:e.hasRostering,superAdminReadOnly:P}),className:e.hasRostering||P?"cursor-default disabled":"",onClick:function(){var r;Y({actionType:l.Vw.VerifyEmail,descriptor:l.hY.Remove}),t.Q.C$.trigger(Object.assign(Object.assign({},e.appLinks.deleteUserEmail),{args:[].concat(L(null!==(r=e.appLinks.deleteUserEmail.args)&&void 0!==r?r:[]),[e.user.id])}))}}),T===c.a.Curator&&e.isEditUserForm&&$.push({order:6,label:U("addToAnotherCustomer"),disabled:e.hasRostering||P,tooltip:Q({hasRostering:e.hasRostering,superAdminReadOnly:P}),className:e.hasRostering||P?"cursor-default disabled":"",appLink:Object.assign(Object.assign({},e.appLinks.addToAnotherCustomer),{args:[].concat(L(null!==(y=e.appLinks.addToAnotherCustomer.args)&&void 0!==y?y:[]),[e.user.id])})}),e.userType===R.Y.Learner&&!V(f.w.Inactive)&&e.appLinks.manageYearGroup&&$.push({order:12,label:"Manage year group",disabled:e.hasRostering||P,tooltip:Q({hasRostering:e.hasRostering,superAdminReadOnly:P}),className:e.hasRostering||P?"cursor-default disabled":"",appLink:Object.assign(Object.assign({},e.appLinks.manageYearGroup),{args:[].concat(L(null!==(C=e.appLinks.manageYearGroup.args)&&void 0!==C?C:[]),[e.user.id])})}),$}(Object.assign({},e));return e.filterActions&&(r=r.filter(e.filterActions)),s.createElement(s.Fragment,null,s.createElement(b.e,{actions:r,className:e.isEditUserForm?"mb-2":"pe-4",actionsDropdownClassName:e.isEditUserForm?"btn btn-outline-dark":"btn btn-link ms-1"}))}},14604:(e,r,n)=>{n.d(r,{W:()=>o});var s=n(32735),a=n(83914),t=n(35223);const i={icon:"eCi4v"};function o(e){return s.createElement("div",{className:"alert alert-warning d-flex align-items-center px-2 mb-3 ".concat(e.className||"")},s.createElement(a.x,{svgName:t.vn.WarningOutline,className:"svg-container me-2 ".concat(i.icon)}),s.createElement("div",null,e.children))}},26055:(e,r,n)=>{n.d(r,{A:()=>s});var s=n(32735).createContext(null)}}]);
2
+ //# sourceMappingURL=9843-e38ac7ac57-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/9843-e38ac7ac57-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/errors/sso-password-reset-email-not-allowed/SsoPasswordResetEmailNotAllowedError.tsx","file:///app/packages/libs/shared/src/utils/CuratorPermissionsHelper.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/user-list-items/components/UserItemActions.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/warning-alert/warning-alert.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/warning-alert/WarningAlert.tsx","file:///app/packages/libs/shared/src/apps/user-manager/context/UserManagerClientContext.ts"],"sourcesContent":["import React from 'react';\n\nimport { WarningAlert } from 'libs/shared/apps/user-manager/components/warning-alert/WarningAlert';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'userManager.ssoPasswordResetEmailNotAllowedError';\n\ninterface SsoPasswordResetEmailNotAllowedErrorProps {\n helpArticle: string;\n}\n\nexport function SsoPasswordResetEmailNotAllowedError(props: SsoPasswordResetEmailNotAllowedErrorProps): JSX.Element {\n return (\n <WarningAlert>\n <p className='mb-1 fw-semibold'>\n <Text namespace={namespace} phrase='warning' />\n </p>\n {props.helpArticle && (\n <a href={props.helpArticle} target='_blank' className='info-link'>\n <Text namespace={namespace} phrase='findMore' />\n </a>\n )}\n </WarningAlert>\n );\n}","import { CuratorGroup } from 'libs/shared/enums/CuratorGroup';\nimport { CuratorUser } from 'libs/shared/interfaces';\n\nfunction getGroupNames(user: CuratorUser): string[] {\n return (user && user.groups) ? user.groups.map(g => g.name) : [];\n}\n \nexport const CuratorPermissionsHelper = {\n isDev(user: CuratorUser): boolean {\n return getGroupNames(user).includes(CuratorGroup.Developer);\n },\n\n hasSubjectsAccess(user: CuratorUser): boolean {\n const allowedGroups = [\n CuratorGroup.Developer,\n CuratorGroup.Content,\n CuratorGroup.Curator,\n CuratorGroup.StreamableCurator\n ];\n\n return allowedGroups.some(group => getGroupNames(user).includes(group));\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, ClickDescriptor, EmailDescriptor, EntityType, LocationContext, OperationDescriptor, ToggleDescriptor, UserAction, VerifyEmailDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { SsoPasswordResetEmailNotAllowedError } from 'libs/shared/apps/user-manager/errors/sso-password-reset-email-not-allowed/SsoPasswordResetEmailNotAllowedError';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkRemoveUsersViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkRemoveUsersViewModel';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CuratorUser, CurrentUser, User } from 'libs/shared/interfaces';\nimport { CuratorPermissionsHelper } from 'libs/shared/utils/CuratorPermissionsHelper';\nimport { DialogHelper } from 'libs/shared/utils/DialogHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nconst getPhrase = LanguageService.encloseNamespace('userManager.userList');\n\nfunction useGetActions(props: UserItemActionsProps): ActionOptions[] {\n const client = React.useContext(UserManagerClientContext);\n const hasStatus = (status: ObjectStatus) => status === UserHelper.getUserStatus(props.user);\n \n const isActive = hasStatus(ObjectStatus.Active);\n\n const hasVerifiedEmail = props.user.metadata?.isEmailVerified;\n\n // eslint-disable-next-line\n const isCurrentUser = props.user.id == props.currentUser?.id;\n\n // in Lite non-super admin cannot update super admin\n const superAdminReadOnly = client === UserManagerClient.Curator\n ? false\n : props.currentUser.role !== UserRole.SuperAdmin && props.user.userProfile?.role === UserRole.SuperAdmin;\n\n const [ , setBulkRemoveUsers ] = useViewModel<BulkRemoveUsersViewModel>(SharedViewModelKeys.BULK_REMOVE_USERS);\n\n function logAnalytics(actionOptions: AnalyticsOptions): void {\n AnalyticsHelper.logUserAction({ id: props.user.id }, AnalyticsHelper.mergeOptions({\n entity: EntityType.User,\n workflowPhase: WorkflowPhase.Start,\n location: LocationContext[props.userType === UserGroup.Learner ? 'StaffManagerListItem' : 'StudentManagerListItem']\n }, actionOptions));\n }\n\n const actions: ActionOptions[] = [];\n \n if (!props.isEditUserForm) {\n function getEditTooltip(): string {\n if (superAdminReadOnly)\n return getPhrase('superAdminReadOnly');\n\n if (props.hasRostering)\n return getPhrase('editControlledByRostering');\n\n if (hasStatus(ObjectStatus.Disabled))\n return getPhrase('editUserDisabled');\n\n if (hasStatus(ObjectStatus.Inactive) && client !== UserManagerClient.Curator)\n return getPhrase('editUserPending');\n\n return getPhrase('editUser');\n }\n\n function canEdit(): boolean {\n if (superAdminReadOnly)\n return false;\n\n if (props.hasRostering)\n return false;\n\n if (isActive)\n return true;\n\n if (hasStatus(ObjectStatus.Inactive) && client === UserManagerClient.Curator)\n return true;\n\n return false;\n }\n\n actions.push({\n order: 0,\n onClick: () => {\n if (!canEdit())\n return;\n \n logAnalytics({ actionType: UserAction.Edit });\n\n if (props.onEditUser) {\n props.onEditUser(props.user);\n return;\n }\n\n const appLink = {\n ...props.appLinks.editUser,\n args: [ ...(props.appLinks.editUser.args ?? []), props.user.id ]\n };\n \n Core.AppLinkHelper.trigger(appLink);\n },\n svgName: cvSvgLibrary.Edit,\n className: `btn btn-link svg-container ${!canEdit() ? 'disabled' : ''}`,\n tooltip: getEditTooltip(),\n button: true\n });\n }\n\n const getActionTooltip = ({\n hasRostering,\n isActive,\n superAdminReadOnly\n }: {\n hasRostering: boolean;\n isActive?: boolean;\n superAdminReadOnly: boolean;\n }): string | null => {\n if (hasRostering) {\n return getPhrase('editControlledByRostering');\n }\n if (isActive) {\n return getPhrase('deleteDisabledTooltip');\n }\n if (superAdminReadOnly) {\n return getPhrase('superAdminReadOnly');\n }\n return null;\n };\n\n if (props.user.email && hasStatus(ObjectStatus.Inactive) && props.onClickResendActivationEmail) {\n actions.push({\n order: 5,\n disabled: props.hasRostering || superAdminReadOnly,\n tooltip: getActionTooltip({ hasRostering: props.hasRostering, superAdminReadOnly }),\n label: getPhrase('resendActivationEmail'),\n onClick: () => {\n logAnalytics({\n actionType: UserAction.SendEmail,\n descriptor: EmailDescriptor.ActivateUser\n });\n props.onClickResendActivationEmail(props.user);\n },\n className: props.hasRostering || superAdminReadOnly ? 'cursor-default disabled' : 'btn btn-link'\n });\n }\n\n if (\n props.user.email &&\n isActive &&\n !hasVerifiedEmail\n ) {\n actions.push({\n order: 5,\n label: getPhrase('sendVerificationEmail'),\n disabled: props.hasRostering || superAdminReadOnly,\n tooltip: getActionTooltip({ hasRostering: props.hasRostering, superAdminReadOnly }),\n onClick: () => {\n logAnalytics({\n actionType: UserAction.SendEmail,\n descriptor: EmailDescriptor.VerifyEmail\n });\n props.onClickSendVerificationEmail(props.user);\n },\n className: props.hasRostering ? 'cursor-default disabled' : 'btn btn-link'\n });\n }\n\n if (!isCurrentUser) {\n if (hasVerifiedEmail && isActive && props.onClickSendResetEmail) {\n actions.push({\n order: 5,\n label: getPhrase('sendResetEmail'),\n disabled: props.hasRostering || superAdminReadOnly,\n tooltip: getActionTooltip({ hasRostering: props.hasRostering, superAdminReadOnly }),\n onClick: () => {\n if (UserHelper.hasSso(props.user)) {\n DialogHelper.render(\n <SsoPasswordResetEmailNotAllowedError helpArticle={props.ssoHelpArticle} />,\n {\n title: getPhrase('sendResetEmail'),\n cancelButtonProps: {\n text: getPhrase('close'),\n variant: 'dark'\n }\n }\n );\n return;\n }\n\n logAnalytics({\n actionType: UserAction.SendEmail,\n descriptor: EmailDescriptor.ResetPasswordEmail\n });\n props.onClickSendResetEmail(props.user);\n },\n className: (props.hasRostering || superAdminReadOnly) ? 'cursor-default disabled' : 'btn btn-link'\n });\n }\n\n if (!hasStatus(ObjectStatus.Inactive)) {\n actions.push({\n order: 10,\n label: getPhrase(isActive ? 'deactivate' : 'activate'),\n disabled: props.hasRostering || superAdminReadOnly,\n tooltip: getActionTooltip({ hasRostering: props.hasRostering, superAdminReadOnly }),\n className: (props.hasRostering || superAdminReadOnly) ? 'cursor-default disabled' : '',\n onClick: () => {\n logAnalytics({\n actionType: UserAction.Activate,\n descriptor: isActive ? ToggleDescriptor.Off : ToggleDescriptor.On\n });\n\n const appLink = {\n ...props.appLinks.toggleStatus,\n args: [ ...(props.appLinks.toggleStatus.args ?? []), props.user.id ]\n };\n \n Core.AppLinkHelper.trigger(appLink);\n }\n });\n }\n\n const showDelete = client !== UserManagerClient.Primary || props.products?.includes(ProductId.Online);\n if (showDelete) {\n actions.push({\n order: 25,\n disabled: props.hasRostering || superAdminReadOnly,\n onClick: () => {\n if (isActive)\n return;\n \n logAnalytics({ actionType: UserAction.Delete, descriptor: OperationDescriptor.Single });\n \n setBulkRemoveUsers({ users: [props.user], totalUsers: 1 });\n \n Core.AppLinkHelper.trigger(props.appLinks.deleteUser);\n },\n label: getPhrase('delete'),\n className: `btn btn-link text-danger ${(isActive || props.hasRostering || superAdminReadOnly) ? 'cursor-default disabled' : ''}`,\n button: false,\n tooltip: getActionTooltip({\n superAdminReadOnly,\n hasRostering: props.hasRostering,\n isActive: isActive\n })\n });\n }\n\n const showRemove = client !== UserManagerClient.Online && !props.products?.includes(ProductId.Online);\n if (showRemove) {\n actions.push({\n order: 25,\n disabled: props.hasRostering || superAdminReadOnly,\n onClick: () => {\n if (isActive)\n return;\n \n logAnalytics({ actionType: UserAction.Remove, descriptor: OperationDescriptor.Single });\n \n const appLink = {\n ...props.appLinks.removeUser,\n args: [ ...(props.appLinks.removeUser.args ?? []), props.user.id ]\n };\n \n Core.AppLinkHelper.trigger(appLink);\n },\n label: getPhrase('remove'),\n className: `btn btn-link text-danger ${(isActive || props.hasRostering || superAdminReadOnly) ? 'cursor-default disabled' : ''}`,\n button: false,\n tooltip: getActionTooltip({ hasRostering: props.hasRostering, superAdminReadOnly })\n });\n }\n }\n\n if (client === UserManagerClient.Online && props.userType === UserGroup.Learner && isActive) {\n actions.push({\n order: 15,\n label: getPhrase('viewWorkspace'),\n onClick: () => logAnalytics({ actionType: UserAction.Click, descriptor: ClickDescriptor.ViewStudentWorkspace }),\n appLink: {\n ...props.appLinks.viewStudentWorkspace,\n params: { username: props.user.username }\n },\n className: (props.hasRostering || superAdminReadOnly) ? 'cursor-default disabled' : 'btn btn-link',\n button: false\n });\n }\n\n if (\n client === UserManagerClient.Primary &&\n props.userType === UserGroup.Learner &&\n !hasStatus(ObjectStatus.Inactive)\n ) {\n actions.push({\n order: 15,\n label: getPhrase('viewStudentsVideos'),\n onClick: () => logAnalytics({ actionType: UserAction.Click, descriptor: ClickDescriptor.ViewStudentWorkspace }),\n appLink: {\n ...props.appLinks.viewStudentWorkspace,\n args: [props.user.id]\n },\n className: 'btn btn-link',\n button: false\n });\n }\n\n if (\n isActive &&\n (\n (props.userType === UserGroup.Staff && !hasVerifiedEmail) ||\n props.userType === UserGroup.Learner\n )\n ) {\n actions.push({\n order: 20,\n disabled: props.hasRostering || superAdminReadOnly,\n label: getPhrase('changePassword'),\n className: (props.hasRostering || superAdminReadOnly) ? 'cursor-default disabled' : '',\n onClick: () => {\n logAnalytics({ actionType: UserAction.ChangePassword });\n\n const appLink = {\n ...props.appLinks.changePassword,\n args: [ ...(props.appLinks.changePassword.args ?? []), props.user.id ]\n };\n \n Core.AppLinkHelper.trigger(appLink);\n }\n });\n }\n\n if (client === UserManagerClient.Curator\n && CuratorPermissionsHelper.isDev(props.currentUser as unknown as CuratorUser)) {\n actions.push(...[\n {\n order: 2,\n label: getPhrase('manageCuratorGroups'),\n disabled: props.hasRostering || superAdminReadOnly,\n tooltip: getActionTooltip({ hasRostering: props.hasRostering, superAdminReadOnly }),\n className: (props.hasRostering || superAdminReadOnly) ? 'cursor-default disabled' : '',\n onClick: () => {\n logAnalytics({ actionType: UserAction.ManageGroup });\n\n Core.AppLinkHelper.trigger({\n ...props.appLinks.manageUserCuratorGroups,\n args: [props.user.id]\n });\n }\n },\n {\n order: 3,\n label: getPhrase('editUserOptions'),\n disabled: props.hasRostering || superAdminReadOnly,\n tooltip: getActionTooltip({ hasRostering: props.hasRostering, superAdminReadOnly }),\n className: (props.hasRostering || superAdminReadOnly) ? 'cursor-default disabled' : '',\n onClick: () => {\n if (props.onEditUserOptions) {\n props.onEditUserOptions(props.user);\n return;\n }\n Core.AppLinkHelper.trigger({\n ...props.appLinks.editUserOptions,\n args: [ ...(props.appLinks.editUserOptions.args ?? []), props.user.id ]\n });\n }\n }\n ]);\n }\n if (client === UserManagerClient.Curator && props.hasUserCredit) {\n actions.push({\n order: 4,\n label: getPhrase('editUserCredits'),\n appLink: {\n ...props.appLinks.userCredit,\n args: [ ...(props.appLinks.userCredit.args ?? []), props.user.id ]\n }\n });\n }\n\n if (\n client === UserManagerClient.Curator &&\n props.user.metadata?.isEmailVerified &&\n !hasStatus(ObjectStatus.Inactive)\n ) {\n actions.push({\n order: 5,\n label: getPhrase('unverifyEmail'),\n disabled: props.hasRostering || superAdminReadOnly,\n tooltip: getActionTooltip({ hasRostering: props.hasRostering, superAdminReadOnly }),\n className: (props.hasRostering || superAdminReadOnly) ? 'cursor-default disabled' : '',\n onClick: () => {\n logAnalytics({ actionType: UserAction.VerifyEmail, descriptor: VerifyEmailDescriptor.Remove });\n\n Core.AppLinkHelper.trigger({\n ...props.appLinks.deleteUserEmail,\n args: [ ...(props.appLinks.deleteUserEmail.args ?? []), props.user.id ]\n });\n }\n });\n }\n\n if (client === UserManagerClient.Curator && props.isEditUserForm) {\n actions.push({\n order: 6,\n label: getPhrase('addToAnotherCustomer'),\n disabled: props.hasRostering || superAdminReadOnly,\n tooltip: getActionTooltip({ hasRostering: props.hasRostering, superAdminReadOnly }),\n className: (props.hasRostering || superAdminReadOnly) ? 'cursor-default disabled' : '',\n appLink: {\n ...props.appLinks.addToAnotherCustomer,\n args: [ ...(props.appLinks.addToAnotherCustomer.args ?? []), props.user.id ]\n }\n });\n }\n\n if (\n props.userType === UserGroup.Learner &&\n !hasStatus(ObjectStatus.Inactive) &&\n props.appLinks.manageYearGroup\n ) {\n actions.push({\n order: 12,\n label: 'Manage year group',\n disabled: props.hasRostering || superAdminReadOnly,\n tooltip: getActionTooltip({ hasRostering: props.hasRostering, superAdminReadOnly }),\n className: (props.hasRostering || superAdminReadOnly) ? 'cursor-default disabled' : '',\n appLink: {\n ...props.appLinks.manageYearGroup,\n args: [ ...(props.appLinks.manageYearGroup.args ?? []), props.user.id ]\n }\n });\n }\n\n return actions;\n}\n\ninterface UserItemActionsProps {\n user: User;\n userType: UserGroup;\n appLinks: UserManagerAppLinks;\n currentUser: CurrentUser;\n products?: ProductId[];\n onClickResendActivationEmail?: (user: User) => void;\n onClickSendResetEmail?: (user: User) => void;\n onClickSendVerificationEmail?: (user: User) => void;\n onEditUser?: (user: User) => void;\n onEditUserOptions?: (user: User) => void;\n isEditUserForm?: boolean;\n ssoHelpArticle?: string;\n hasRostering?: boolean;\n hasUserCredit?: boolean;\n filterActions?: (action: ActionOptions) => boolean;\n}\n\nexport function UserItemActions(props: UserItemActionsProps): JSX.Element {\n let actions = useGetActions({ ...props });\n if (props.filterActions) {\n actions = actions.filter(props.filterActions);\n }\n\n return (\n <>\n <Actions\n actions={actions}\n className={props.isEditUserForm ? 'mb-2' : 'pe-4'}\n actionsDropdownClassName={props.isEditUserForm ? 'btn btn-outline-dark' : 'btn btn-link ms-1'}\n />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"icon\":\"eCi4v\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './warning-alert.scss';\n\ninterface Props extends HashObject {\n className?: string;\n}\n\ntype WarningAlertProps = React.PropsWithChildren<Props>;\n\nexport function WarningAlert(props: WarningAlertProps): JSX.Element {\n return (\n <div className={`alert alert-warning d-flex align-items-center px-2 mb-3 ${props.className || ''}`}>\n <SvgContainer\n svgName={cvSvgLibrary.WarningOutline}\n className={`svg-container me-2 ${styles.icon}`}\n />\n <div>\n {props.children}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\n\nexport const UserManagerClientContext = React.createContext<UserManagerClient>(null);"],"names":["namespace","SsoPasswordResetEmailNotAllowedError","props","WarningAlert","W","className","Text","phrase","helpArticle","href","target","getGroupNames","user","groups","map","g","name","CuratorPermissionsHelper","isDev","includes","CuratorGroup","hasSubjectsAccess","Curator","some","group","getPhrase","LanguageService","UserItemActions","actions","client","UserManagerClientContext","hasStatus","status","UserHelper","isActive","ObjectStatus","hasVerifiedEmail","metadata","isEmailVerified","isCurrentUser","id","currentUser","superAdminReadOnly","UserManagerClient","role","UserRole","userProfile","setBulkRemoveUsers","SharedViewModelKeys","logAnalytics","actionOptions","AnalyticsHelper","entity","workflowPhase","location","userType","UserGroup","isEditUserForm","canEdit","hasRostering","push","order","onClick","actionType","onEditUser","appLink","appLinks","editUser","args","svgName","tooltip","button","getActionTooltip","email","onClickResendActivationEmail","disabled","label","descriptor","onClickSendVerificationEmail","onClickSendResetEmail","DialogHelper","ssoHelpArticle","title","cancelButtonProps","text","variant","toggleStatus","products","ProductId","users","totalUsers","deleteUser","removeUser","viewStudentWorkspace","params","username","changePassword","manageUserCuratorGroups","onEditUserOptions","editUserOptions","hasUserCredit","userCredit","deleteUserEmail","addToAnotherCustomer","manageYearGroup","useGetActions","filterActions","filter","Actions","actionsDropdownClassName","SvgContainer","children"],"sourceRoot":""}