@clickview/lite 0.50.0-rc.2 → 0.50.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 +2 -2
- package/dist/css/{355-lite-7e76df6ab5.chunk.css → 355-lite-e474c8ddce.chunk.css} +1 -1
- package/dist/css/{7715-lite-671ee43c49.chunk.css → 7715-lite-25809cdd3d.chunk.css} +1 -1
- package/dist/css/{8139-lite-10c11c0722.chunk.css → 8139-lite-5511af77bf.chunk.css} +1 -1
- package/dist/css/{8960-lite-d45f2332e6.chunk.css → 8960-lite-a80ad92ea7.chunk.css} +1 -1
- package/dist/css/{9395-lite-01ed62af75.chunk.css → 9395-lite-e7ca0b1320.chunk.css} +1 -1
- package/dist/css/lite-app-f2595ac365.css +53 -0
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{355-81c86415d9-lite.chunk.js → 355-eaf55dc95f-lite.chunk.js} +1 -1
- package/dist/scripts/{355-81c86415d9-lite.chunk.js.map → 355-eaf55dc95f-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4395-2e9e72a400-lite.chunk.js → 4395-322f459cb0-lite.chunk.js} +2 -2
- package/dist/scripts/4395-322f459cb0-lite.chunk.js.map +1 -0
- package/dist/scripts/{5562-42375ce894-lite.chunk.js → 5562-09db6be3de-lite.chunk.js} +3 -3
- package/dist/scripts/{5562-42375ce894-lite.chunk.js.map → 5562-09db6be3de-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6480-06435aaa46-lite.chunk.js → 6480-60a0ad2ff5-lite.chunk.js} +1 -1
- package/dist/scripts/{6480-06435aaa46-lite.chunk.js.map → 6480-60a0ad2ff5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{679-a58b19729d-lite.chunk.js → 679-51a0b936e0-lite.chunk.js} +2 -2
- package/dist/scripts/{679-a58b19729d-lite.chunk.js.map → 679-51a0b936e0-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6863-562ff82f45-lite.chunk.js → 6863-670092eaa5-lite.chunk.js} +1 -1
- package/dist/scripts/{6863-562ff82f45-lite.chunk.js.map → 6863-670092eaa5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6948-8c8d9131eb-lite.chunk.js → 6948-e7a16d8c0b-lite.chunk.js} +2 -2
- package/dist/scripts/{6948-8c8d9131eb-lite.chunk.js.map → 6948-e7a16d8c0b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7052-32d8266e82-lite.chunk.js → 7052-a4d79c9f20-lite.chunk.js} +3 -3
- package/dist/scripts/{7052-32d8266e82-lite.chunk.js.map → 7052-a4d79c9f20-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7715-e5380d1440-lite.chunk.js → 7715-634be84dc5-lite.chunk.js} +2 -2
- package/dist/scripts/{7715-e5380d1440-lite.chunk.js.map → 7715-634be84dc5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8055-f4de552821-lite.chunk.js → 8055-a6d102b953-lite.chunk.js} +3 -3
- package/dist/scripts/{8055-f4de552821-lite.chunk.js.map → 8055-a6d102b953-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8139-37635f8bcd-lite.chunk.js → 8139-2a36098eae-lite.chunk.js} +3 -3
- package/dist/scripts/{8139-37635f8bcd-lite.chunk.js.map → 8139-2a36098eae-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8419-70c7a44baa-lite.chunk.js → 8419-510dc22a69-lite.chunk.js} +1 -1
- package/dist/scripts/{8419-70c7a44baa-lite.chunk.js.map → 8419-510dc22a69-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9395-181720391d-lite.chunk.js → 9395-77dfcbad18-lite.chunk.js} +2 -2
- package/dist/scripts/{9395-181720391d-lite.chunk.js.map → 9395-77dfcbad18-lite.chunk.js.map} +1 -1
- package/dist/scripts/{bundle-541e1ff041.min.js → bundle-0187039e1a.min.js} +3 -3
- package/dist/scripts/{bundle-541e1ff041.min.js.map → bundle-0187039e1a.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/css/lite-app-5b9f4761e1.css +0 -53
- package/dist/scripts/4395-2e9e72a400-lite.chunk.js.map +0 -1
- /package/dist/scripts/{5562-42375ce894-lite.chunk.js.LICENSE.txt → 5562-09db6be3de-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7052-32d8266e82-lite.chunk.js.LICENSE.txt → 7052-a4d79c9f20-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8055-f4de552821-lite.chunk.js.LICENSE.txt → 8055-a6d102b953-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8139-37635f8bcd-lite.chunk.js.LICENSE.txt → 8139-2a36098eae-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9395-181720391d-lite.chunk.js.LICENSE.txt → 9395-77dfcbad18-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-541e1ff041.min.js.LICENSE.txt → bundle-0187039e1a.min.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6480],{49036:(e,t,n)=>{n.d(t,{f:()=>a});var r=n(32735);function a(e){return r.createElement(r.Fragment,null,"Have a ClickView account already?",r.createElement("a",{href:e.link,className:"info-link ms-1",onClick:e.onClick},"Sign in"))}},69624:(e,t,n)=>{n.d(t,{F:()=>d});var r=n(97395),a=n(86664),c=n(93824);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=o(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var l={Marketing:{au:"https://www.clickvieweducation.com/en-au",us:"https://www.clickvieweducation.com",nz:"https://www.clickview.co.nz",uk:"https://www.clickview.co.uk"},Support:{au:"https://www.clickviewsupport.com/hc/en-au",uk:"https://www.clickviewsupport.com/hc/en-au#gb",nz:"https://www.clickviewsupport.com/hc/en-au#nz",us:"https://www.clickviewsupport.com/hc/en-au#us"}},u=i(i(i(i({},c.C.AU,"/contact-us/sales"),c.C.US,"/contact-us/sales"),c.C.NZ,"/contact-us/"),c.C.UK,"/contact-us/trial"),s=i(i(i(i({},c.C.AU,"/resources/free-student-resources"),c.C.US,"/resources/free-student-resources"),c.C.NZ,"/free-student-resources/"),c.C.UK,"/free-student-resources/"),d={getMarketingUrlForGeoLocation:function(e){var t=a.I.getCountryCode(null==e?void 0:e.countryCode);return l.Marketing[t]||l.Marketing.us},getMarketingSalesContactForGeoLocation:function(e){var t=a.I.getCountryCode(null==e?void 0:e.countryCode),n=d.getMarketingUrlForGeoLocation(e),r=u[t];return"".concat(n).concat(r)},getFreeResourcesForGeoLocation:function(e){var t=a.I.getCountryCode(null==e?void 0:e.countryCode),n=this.getMarketingUrlForGeoLocation({countryCode:t}),r=s[t];return"".concat(n).concat(r)},getTermsAndConditionsLink:function(){return this.getMarketingUrlForGeoLocation(c.C.US)+"/terms-and-conditions/"},getPrivacyPolicyLink:function(){return this.getMarketingUrlForGeoLocation(c.C.US)+"/privacy-policy/"},getSupportUrlForGeoLocation:function(e){var t=a.I.getCountryCode(null==e?void 0:e.countryCode);return l.Support[t]||l.Support.us},getLoginLink:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.email,n=e.customerId,a={redirectUrl:window.location.pathname+window.location.search};return t&&(a.email=t),n&&(a.customerId=n),r._.urlBuilder("/login",a)}}},9826:(e,t,n)=>{n.d(t,{e:()=>p});var r=n(32735),a=n(91967),c=n(86764),o=n(81514),i=n(10038);const l={stickyFooter:"rIUL4",nonStickyFooter:"PuC_F"};function u(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 s=50;function d(e){var t="justify-content-".concat(e.justify);return r.createElement("div",{className:"py-3 bg-white ".concat(l.stickyFooter)},r.createElement("div",{className:"w-75 mx-auto d-flex ".concat(t)},e.children))}function m(e){var t=(0,o.V)(),n=t===c.r.SM||t===c.r.XS?"w-100":"w-75",a="justify-content-".concat(e.justify);return r.createElement("div",{className:"".concat(n," ").concat(a," ").concat(l.nonStickyFooter," d-flex px-3")},e.children)}function p(e){var t,n,c=function(){return window.innerHeight+window.scrollY>=document.body.offsetHeight-s},o=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,c,o,i=[],l=!0,u=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=c.call(n)).done)&&(i.push(r.value),i.length!==t);l=!0);}catch(e){u=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return i}}(t,n)||function(e,t){if(e){if("string"==typeof e)return u(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)?u(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=o[0],p=o[1];r.useEffect((function(){return p(!c())}),[]);var f=a.q.throttle((function(){var e=!c();!l||e?!l&&e&&p(!0):p(!1)}),100);return r.useEffect((function(){return window.addEventListener("scroll",f),function(){return window.removeEventListener("scroll",f)}}),[l,p]),(0,i.H)(f,f,[l,p]),l?r.createElement(d,Object.assign({},e),e.children):r.createElement(m,Object.assign({},e),e.children)}p.defaultProps={justify:"between"}},32697:(e,t,n)=>{n.d(t,{ed:()=>r.e,cQ:()=>p.c,i:()=>m,RP:()=>h});var r=n(9826),a=n(32735);n(36848);var c=n(75896),o=n(70154),i=n(86764),l=n(81514),u=n(92875),s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function d(e){var t=a.useContext(o.x),n=t.expandedSubject,r=t.selectedSubjects;return a.createElement(a.Fragment,null,e.subjects.map((function(t){var c=function(e,t){return!(!t||e.id===t.id||t.children.find((function(t){return t.id===e.id})))}(t,n),o=e.onSelect;return t.isExpandableOption&&(o=e.onExpand),c&&(o=e.onCollapse),e.hasSelectedBulk&&(o=function(){}),a.createElement(h,{key:t.id,subject:t,selected:!e.hasSelectedBulk&&r.includes(t.id),disabled:e.hasSelectedBulk||c,onClick:function(){return o(t)},hasSelectedBulk:e.hasSelectedBulk})})))}function m(e){var t=e.subjects,n=e.hasSelectedBulk,r=s(e,["subjects","hasSelectedBulk"]),p=a.useContext(o.x).expandedSubject,f=function(){switch((0,l.V)()){case i.r.LG:default:return 5;case i.r.MD:return 4;case i.r.SM:return 3;case i.r.XS:return 2}}(),v=t.reduce((function(e,t,n){return n%f==0?e.push([t]):c.m.last(e).push(t),e}),[]);return a.createElement("ul",{className:u.Z.grid},v.map((function(e,t){var c=p&&!!e.find((function(e){return p.id===e.id&&e.isExpandableOption}));return a.createElement(a.Fragment,{key:t},a.createElement(d,Object.assign({subjects:e,hasSelectedBulk:n},r)),c&&a.createElement("li",{className:"".concat(u.Z.subgrid," m-0")},a.createElement(m,Object.assign({subjects:p.children,hasSelectedBulk:n},r))))})))}var p=n(386),f=n(76177),v=n(54610),g=n(67453);function h(e){var t,n,r=a.useContext(o.x),c=e.subject.cover?g.j.createUrl(e.subject.cover.url,{size:v.h2.Small}):"",i=e.subject.isExpandableOption?e.subject.children.map((function(e){return e.id})):[],l=e.hasSelectedBulk?0:null===(t=null==r?void 0:r.selectedSubjects)||void 0===t?void 0:t.filter((function(e){return i.includes(e)})).length,u=a.createElement(p.c,{name:e.subject.name,imageUrl:c,onClick:e.onClick,isSelected:e.selected,isDisabled:e.disabled,isExpandable:e.subject.isExpandableOption,expand:(null===(n=null==r?void 0:r.expandedSubject)||void 0===n?void 0:n.id)===e.subject.id,selectedChildCount:l,extraClasses:e.extraClasses,hideStatus:e.hideStatus});return e.disabled?a.createElement("span",null,u):a.createElement(f.u,{title:e.subject.name},a.createElement("span",null,u))}},386:(e,t,n)=>{n.d(t,{c:()=>u});var r=n(32735),a=n(83914),c=n(35223);const o={preferenceItem:"PSWHa",expandCaret:"CCsqs",up:"w7N1R",down:"mO0Kn",disabled:"Oyw2x",selected:"Czk2N",noBorder:"_e7oe",textBox:"pfksF",itemStatus:"H4u81",unchecked:"iYkPv",green:"w5g0e"};var i=function(e){return e.selectedChildrenCount?r.createElement("div",{className:"".concat(o.itemStatus," ").concat(o.green)},e.selectedChildrenCount):r.createElement(r.Fragment,null)},l=function(e){var t;return t=e.selected?r.createElement(a.x,{svgName:c.vn.Check}):e.radioButton?r.createElement(r.Fragment,null," "):r.createElement(a.x,{svgName:c.vn.Plus}),r.createElement("div",{className:"".concat(o.itemStatus," ").concat(e.selected?o.green:o.unchecked)},t)};function u(e){var t,n="".concat(o.expandCaret," ").concat(e.expand?o.up:o.down);return r.createElement("li",{className:(t="rounded-3 ".concat(o.preferenceItem),e.extraClasses&&(t+=" "+e.extraClasses),e.isDisabled&&(t+=" "+o.disabled),e.isSelected&&!e.isExpandable&&(t+=" "+o.selected),e.hideStatus&&(t+=" "+o.noBorder),t),onClick:e.onClick,"aria-checked":e.isSelected,"aria-haspopup":e.isExpandable,role:e.isExpandable?"button":"checkbox",style:{backgroundImage:"url(".concat(e.imageUrl,")")},tabIndex:0,title:e.name},r.createElement("div",{className:"".concat(o.textBox," p-2")},r.createElement("p",{className:"text-truncate mb-0"},e.name,r.createElement("span",{className:e.isExpandable?n:""})),!e.hideStatus&&r.createElement(r.Fragment,null,e.isExpandable?r.createElement(i,{selectedChildrenCount:e.selectedChildCount}):r.createElement(l,{selected:e.isSelected,radioButton:e.radioButton}))))}},70154:(e,t,n)=>{n.d(t,{x:()=>r});var r=(0,n(32735).createContext)(void 0)},81514:(e,t,n)=>{n.d(t,{V:()=>c});var r=n(86764),a=n(3747);function c(){var e=(0,a.a)(r.r.XS),t=(0,a.a)(r.r.SM),n=(0,a.a)(r.r.MD),c=(0,a.a)(r.r.LG),o=(0,a.a)(r.r.XL),i=(0,a.a)(r.r.XXL),l=r.r.LG;return e&&(l=r.r.XS),t&&(l=r.r.SM),n&&(l=r.r.MD),c&&(l=r.r.LG),o&&(l=r.r.XL),i&&(l=r.r.XXL),l}},26480:(e,t,n)=>{n.r(t),n.d(t,{WelcomePopupView:()=>I});var r=n(32735),a=n(39202),c=n(23481),o=n(81886),i=n(75896),l=n(49985),u=n(65858),s=n(49036),d=n(69624),m=n(32697),p=n(9111),f=n(13876),v=n(83345),g=n(71063),h=n(52641),b=n(54610),y=n(86764),E=n(25925),S=n(69883),k=n(3747),w=n(75795),C=n(67453),x=n(99742),j=n(14070),N=n(97291),O=n(86698);const L={preferenceList:"oHNZN",preferenceItem:"olBqT",largePopup:"x3Oot",selectPresentation:"b2r5s",switchPresentation:"NIIWc"};function P(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,c,o,i=[],l=!0,u=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=c.call(n)).done)&&(i.push(r.value),i.length!==t);l=!0);}catch(e){u=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return U(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)?U(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 U(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 A="settings.welcomePopup",M=c.T.encloseNamespace(A),F=[{application:N.O.CONTENT_UPDATES,action:j.e.ContentUpdates.CONTENT_UPDATES},{application:N.O.MOVIES_AND_TV,action:j.e.MoviesAndTv.HOME}].reduce((function(e,t){return e[a.C$.getAppLinkString(t)]=!0,e}),{});function I(e){var t=P(r.useState(!1),2),n=t[0],U=t[1],I=P(r.useState(),2),B=I[0],T=I[1],_=(0,k.a)(y.r.SMDown),D=(0,S.Z)(),G=(0,O.y)(),H=G.availablePresentations,V=G.setPresentation,X=G.hasPresentationsLoaded,R=(null==H?void 0:H.length)>=h._.MULTI_PRESENTATION_THRESHOLD;function Z(){l.k.logUserAction({id:B.id},{actionType:u.Vw.Click,entity:u.py.Presentation,location:u.LZ.WelcomePopup,workflowPhase:u.eu.Complete,descriptor:u._S.Button,eventVersion:u.eq.V3});var t=w.O.getCurrentRoute().appLink;F[a.C$.getAppLinkString(t)]?o.Q.C$.trigger(t,{replace:!0}):o.Q.C$.trigger({application:N.O.DASHBOARD,action:j.e.Dashboard.HOME}),U(!1),e.closePopup()}function z(){U(!1),D.error(c.T.getPhrase(A,"error"))}function W(){return U(!0),V(B,"activeAndPreferred").then(Z).catch(z)}function $(){l.k.logUserAction({url:d.F.getLoginLink()},{actionType:u.Vw.Click,entity:u.py.AppLink,descriptor:u.Yu.SignIn,location:u.LZ.WelcomePopup})}r.useEffect((function(){X&&!R&&T(i.m.first(H))}),[R,X]);var Y=function(){return r.createElement(f.u,null,r.createElement(f.u.Submit,{variant:"dark",onClick:W,text:M("cta"),showSpinner:n,disabled:!!R&&!B,className:"mx-auto"}))},q=function(){return r.createElement(s.f,{link:d.F.getLoginLink(),onClick:$})};return X?r.createElement(p.G,{title:M("title"),size:_?"sm":(null==H?void 0:H.length)>2?"lg":"md",closeButton:!R,closePopup:e.closePopup,backdrop:!R||"static",dialogClassName:g.M.WELCOME_POPUP_SELECTOR,centered:!0},R?r.createElement((function(){return r.createElement("div",{className:"".concat(L.selectPresentation)},r.createElement("h2",{className:"h4 text-center"},r.createElement(v.x,{namespace:A,phrase:"info_primary"})),r.createElement("p",{className:"text-center"},r.createElement(v.x,{namespace:A,phrase:"info_secondary_multi"})),r.createElement("div",{className:"position-relative"},r.createElement("ul",{className:"list-unstyled d-flex ".concat(L.preferenceList)},null==H?void 0:H.map((function(e){var t;return e.type!==E.R.Subject?r.createElement(r.Fragment,{key:e.id}):r.createElement(m.cQ,{key:e.id,name:e.name,imageUrl:C.j.createUrl(null===(t=e.cover)||void 0===t?void 0:t.url,{size:b.h2.Medium})||"",onClick:function(){return T(e)},isSelected:(null==B?void 0:B.id)===e.id,extraClasses:"".concat(L.preferenceItem," m-2"),radioButton:!0})})))),r.createElement(Y,null),r.createElement("div",{className:"mt-3 text-center"},r.createElement(q,null)))}),null):r.createElement((function(){return r.createElement("div",{className:"".concat(L.selectPresentation)},r.createElement("div",{className:"d-block mx-auto p-4"},r.createElement("img",{src:x.W.SignUp.UPGRADE,className:"img-fluid",alt:""})),r.createElement("h2",{className:"h4 text-center"},r.createElement(v.x,{namespace:A,phrase:"info_primary"})),r.createElement("p",{className:"text-center"},r.createElement(v.x,{namespace:A,phrase:"info_secondary"})),r.createElement("div",{className:"mt-3"},r.createElement(Y,null)),r.createElement("div",{className:"mt-3 text-center"},r.createElement(q,null)))}),null)):r.createElement(r.Fragment,null)}},92875:(e,t,n)=>{n.d(t,{Z:()=>r});const r={grid:"X9r1Y",subgrid:"TgYhp"}}}]);
|
|
2
|
-
//# sourceMappingURL=6480-
|
|
2
|
+
//# sourceMappingURL=6480-60a0ad2ff5-lite.chunk.js.map
|
package/dist/scripts/{6480-06435aaa46-lite.chunk.js.map → 6480-60a0ad2ff5-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6480-06435aaa46-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/sign-up/components/general/existing-account-sign-in/ExistingAccountSignIn.tsx","file:///app/packages/libs/shared/src/apps/sign-up/helpers/ExternalLinkHelper.ts","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/footer/onboarding-footer.scss","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/footer/OnboardingFooter.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/topic-preferences/subject-preference-grid/SubjectPreferenceGrid.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/topic-preferences/subject-preference-item/SubjectPreferenceItem.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/preference-item/preference-item.scss","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/preference-item/PreferenceItemStatus.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/preference-item/PreferenceItem.tsx","file:///app/packages/libs/shared/src/apps/subjects/contexts/TopicPreferencesContext.ts","file:///app/packages/libs/shared/src/hooks/UseGetMediaQueryString.ts","file:///app/packages/projects/lite/src/shared/views/welcome-popup/welcome-popup.scss","file:///app/packages/projects/lite/src/shared/views/welcome-popup/WelcomePopupView.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/topic-preferences/subject-preference-grid/subject-preference-grid.scss"],"sourcesContent":["import React from 'react';\n\ninterface ExistingAccountSignInProps {\n onClick: (e: React.MouseEvent<Element, MouseEvent>) => void;\n link: string;\n}\n\nexport function ExistingAccountSignIn(props: ExistingAccountSignInProps): JSX.Element {\n return (\n <>\n Have a ClickView account already?\n <a href={props.link} className='info-link ms-1' onClick={props.onClick}>\n Sign in\n </a>\n </>\n );\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { LocalityHelper } from 'libs/shared/apps/sign-up/helpers/LocalityHelper';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\ntype ExternalLinkType = {\n [key: string]: {\n [key in CountryCode]: string\n }\n}\n\ninterface LoginLinkOptions {\n email?: string;\n customerId?: string;\n}\n\nexport const ExternalLink: ExternalLinkType = {\n Marketing: {\n au: 'https://www.clickvieweducation.com/en-au',\n us: 'https://www.clickvieweducation.com',\n nz: 'https://www.clickview.co.nz',\n // @todo update after new UK website is released\n uk: 'https://www.clickview.co.uk'\n },\n Support: {\n au: 'https://www.clickviewsupport.com/hc/en-au',\n uk: 'https://www.clickviewsupport.com/hc/en-au#gb',\n nz: 'https://www.clickviewsupport.com/hc/en-au#nz',\n us: 'https://www.clickviewsupport.com/hc/en-au#us'\n }\n};\n\nconst marketingSalesPathname: {[key in CountryCode]: string} = {\n [CountryCode.AU]: '/contact-us/sales',\n [CountryCode.US]: '/contact-us/sales',\n [CountryCode.NZ]: '/contact-us/',\n // @todo update after new UK website is released\n [CountryCode.UK]: '/contact-us/trial'\n};\n\nconst marketingFreeResourcesPathname: {[key in CountryCode]: string} = {\n [CountryCode.AU]: '/resources/free-student-resources',\n [CountryCode.US]: '/resources/free-student-resources',\n [CountryCode.NZ]: '/free-student-resources/',\n // @todo update after new UK website is released\n [CountryCode.UK]: '/free-student-resources/'\n};\n\nexport const ExternalLinkHelper = {\n \n getMarketingUrlForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n const url = ExternalLink.Marketing[countryCode];\n\n if (!url)\n return ExternalLink.Marketing.us;\n\n return url;\n },\n\n getMarketingSalesContactForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n const baseUrl = ExternalLinkHelper.getMarketingUrlForGeoLocation(geoLocation);\n const pathname = marketingSalesPathname[countryCode];\n\n return `${baseUrl}${pathname}`;\n },\n\n getFreeResourcesForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n\n const baseUrl = this.getMarketingUrlForGeoLocation({ countryCode });\n const pathname = marketingFreeResourcesPathname[countryCode];\n\n return `${baseUrl}${pathname}`;\n },\n\n getTermsAndConditionsLink(): string {\n const baseUrl = this.getMarketingUrlForGeoLocation(CountryCode.US);\n return baseUrl + '/terms-and-conditions/';\n },\n\n getPrivacyPolicyLink(): string {\n const baseUrl = this.getMarketingUrlForGeoLocation(CountryCode.US);\n return baseUrl + '/privacy-policy/';\n },\n\n getSupportUrlForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n const url = ExternalLink.Support[countryCode];\n\n if (!url)\n return ExternalLink.Support.us;\n\n return url;\n },\n\n getLoginLink(options: LoginLinkOptions = {}): string {\n const { email, customerId } = options;\n\n const params: HashObject = {\n redirectUrl: window.location.pathname + window.location.search\n };\n\n if (email)\n params.email = email;\n\n if (customerId)\n params.customerId = customerId;\n\n return UrlHelper.urlBuilder('/login', params);\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"stickyFooter\":\"rIUL4\",\"nonStickyFooter\":\"PuC_F\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\nimport { useResizeListener } from 'libs/shared/hooks/UseResizeListener';\n\nimport styles from './onboarding-footer.scss';\n\nconst SCROLL_TOLERANCE = 50; // value in px\n\ninterface OnboardingFooterProps extends React.PropsWithChildren<unknown> {\n justify?: 'end' | 'center' | 'between';\n}\n\nOnboardingFooter.defaultProps = {\n justify: 'between'\n};\n\nfunction StickyFooter(props: OnboardingFooterProps): JSX.Element {\n const justifyClass = `justify-content-${props.justify}`;\n\n return (\n <div className={`py-3 bg-white ${styles.stickyFooter}`}>\n <div className={`w-75 mx-auto d-flex ${justifyClass}`}>\n {props.children}\n </div>\n </div>\n );\n}\n\nfunction NonStickyFooter(props: OnboardingFooterProps): JSX.Element {\n const mediaQuery = useGetMediaQueryString();\n const widthClass = (mediaQuery === MediaQueryStrings.SM || mediaQuery === MediaQueryStrings.XS) ? 'w-100' : 'w-75';\n\n const justifyClass = `justify-content-${props.justify}`;\n\n return (\n <div className={`${widthClass} ${justifyClass} ${styles.nonStickyFooter} d-flex px-3`}>\n {props.children}\n </div>\n );\n}\n\nexport function OnboardingFooter(props: OnboardingFooterProps): JSX.Element {\n const isScrolledToBottom = () => {\n return (window.innerHeight + window.scrollY) >= (document.body.offsetHeight - SCROLL_TOLERANCE);\n };\n\n const [ isSticky, setIsSticky ] = React.useState(false);\n\n React.useEffect(() => setIsSticky(!isScrolledToBottom()), []);\n\n function onViewportChange(): void {\n const shouldSetToSticky = !isScrolledToBottom();\n\n if (isSticky && !shouldSetToSticky) {\n setIsSticky(false);\n return;\n }\n\n if (!isSticky && shouldSetToSticky)\n setIsSticky(true);\n }\n\n const throttledOnViewportChange = FunctionHelper.throttle(onViewportChange, 100);\n\n React.useEffect(() => {\n window.addEventListener('scroll', throttledOnViewportChange);\n return () => window.removeEventListener('scroll', throttledOnViewportChange);\n }, [ isSticky, setIsSticky ]);\n\n useResizeListener(throttledOnViewportChange, throttledOnViewportChange, [ isSticky, setIsSticky ]);\n\n return isSticky\n ? <StickyFooter {...props}>{props.children}</StickyFooter>\n : <NonStickyFooter {...props}>{props.children}</NonStickyFooter>;\n}","import * as React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { SubjectPreferenceItem } from 'libs/shared/apps/subjects/components/preferences';\nimport { TopicPreferencesContext } from 'libs/shared/apps/subjects/contexts/TopicPreferencesContext';\nimport { ClassificationPreference } from 'libs/shared/apps/subjects/interfaces/ClassificationPreference';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport styles from './subject-preference-grid.scss';\n\nfunction useGetRowItemCapacity(): number {\n const viewportWidth = useGetMediaQueryString();\n\n switch (viewportWidth) {\n case MediaQueryStrings.LG:\n default:\n return 5;\n\n case MediaQueryStrings.MD:\n return 4;\n\n case MediaQueryStrings.SM:\n return 3;\n\n case MediaQueryStrings.XS:\n return 2;\n }\n}\n\nfunction isDisabled(subject: ClassificationPreference, expandedSubject: ClassificationPreference): boolean {\n if (!expandedSubject || subject.id === expandedSubject.id)\n return false;\n\n if (expandedSubject.children.find(child => child.id === subject.id))\n return false;\n\n return true;\n}\n\ninterface SubjectPreferenceGridRowProps extends SubjectPreferenceGridProps {}\n\nfunction SubjectPreferenceGridRow(props: SubjectPreferenceGridRowProps): JSX.Element {\n const { expandedSubject, selectedSubjects: selections } = React.useContext(TopicPreferencesContext);\n\n return (\n <>\n {props.subjects.map(subject => {\n const itemDisabled = isDisabled(subject, expandedSubject);\n\n let clickHandler = props.onSelect;\n\n if (subject.isExpandableOption)\n clickHandler = props.onExpand;\n\n if (itemDisabled)\n clickHandler = props.onCollapse;\n\n if (props.hasSelectedBulk)\n clickHandler = () => {};\n\n return (\n <SubjectPreferenceItem\n key={subject.id}\n subject={subject}\n selected={!props.hasSelectedBulk && selections.includes(subject.id)}\n disabled={props.hasSelectedBulk || itemDisabled}\n onClick={() => clickHandler(subject)}\n hasSelectedBulk={props.hasSelectedBulk}\n />\n );\n })}\n </>\n );\n}\n\ninterface SubjectPreferenceGridProps {\n subjects: ClassificationPreference[];\n onSelect: (subject: Classification) => void;\n onExpand: (subject: Classification) => void;\n onCollapse: (subject: Classification) => void;\n hasSelectedBulk?: boolean;\n}\n\nexport function SubjectPreferenceGrid(props: SubjectPreferenceGridProps): JSX.Element {\n const { subjects, hasSelectedBulk, ...eventHandlers } = props;\n const { expandedSubject } = React.useContext(TopicPreferencesContext);\n\n const itemsPerRow = useGetRowItemCapacity();\n\n /**\n * This is an array of arrays, where each sub-array is a row of classifications.\n * We do this to make sure any sub-grid's of child preference options get rendered in the row\n * directly beneath their parent's row.\n */\n const subjectRows = subjects.reduce((\n acc: ClassificationPreference[][],\n subject: ClassificationPreference,\n index: number\n ) => {\n index % itemsPerRow === 0\n ? acc.push([subject]) // Start a new row\n : ArrayHelper.last(acc).push(subject); // Fill up an existing row\n\n return acc;\n }, []);\n\n return (\n <ul className={styles.grid}>\n {subjectRows.map((row, i) => {\n const isExpanded = expandedSubject && !!row.find(subject => {\n return expandedSubject.id === subject.id && subject.isExpandableOption;\n });\n\n return (\n <React.Fragment key={i}>\n <SubjectPreferenceGridRow\n subjects={row}\n hasSelectedBulk={hasSelectedBulk}\n {...eventHandlers}\n />\n\n {isExpanded && (\n <li className={`${styles.subgrid} m-0`}>\n <SubjectPreferenceGrid\n subjects={expandedSubject.children as ClassificationPreference[]}\n hasSelectedBulk={hasSelectedBulk}\n {...eventHandlers}\n />\n </li>\n )}\n </React.Fragment>\n );\n })}\n </ul>\n );\n}","import * as React from 'react';\n\nimport { PreferenceItem } from 'libs/shared/apps/subjects/components/preferences/preference-item/PreferenceItem';\nimport { TopicPreferencesContext } from 'libs/shared/apps/subjects/contexts/TopicPreferencesContext';\nimport { ClassificationPreference } from 'libs/shared/apps/subjects/interfaces/ClassificationPreference';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\ninterface SubjectPreferenceItemProps {\n subject: ClassificationPreference;\n selected: boolean;\n disabled?: boolean;\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>) => void;\n extraClasses?: string;\n hideStatus?: boolean;\n hasSelectedBulk?: boolean;\n}\n\nexport function SubjectPreferenceItem(props: SubjectPreferenceItemProps): JSX.Element {\n const context = React.useContext(TopicPreferencesContext);\n\n const coverUrl = props.subject.cover ? ImageHelper.createUrl(props.subject.cover.url, { size: ImageSize.Small }) : '';\n\n const childIds = props.subject.isExpandableOption ? props.subject.children.map(child => child.id) : [];\n const selectedChildCount = !props.hasSelectedBulk\n ? context?.selectedSubjects?.filter(selection => childIds.includes(selection)).length\n : 0;\n\n const component = (\n <PreferenceItem\n name={props.subject.name}\n imageUrl={coverUrl}\n onClick={props.onClick}\n isSelected={props.selected}\n isDisabled={props.disabled}\n isExpandable={props.subject.isExpandableOption}\n expand={context?.expandedSubject?.id === props.subject.id}\n selectedChildCount={selectedChildCount}\n extraClasses={props.extraClasses}\n hideStatus={props.hideStatus}\n />\n );\n\n return props.disabled\n ? <span>{component}</span>\n : <Tooltip title={props.subject.name}><span>{component}</span></Tooltip>;\n}","// extracted by mini-css-extract-plugin\nexport default {\"preferenceItem\":\"PSWHa\",\"expandCaret\":\"CCsqs\",\"up\":\"w7N1R\",\"down\":\"mO0Kn\",\"disabled\":\"Oyw2x\",\"selected\":\"Czk2N\",\"noBorder\":\"_e7oe\",\"textBox\":\"pfksF\",\"itemStatus\":\"H4u81\",\"unchecked\":\"iYkPv\",\"green\":\"w5g0e\"};","import * as React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './preference-item.scss';\n\ninterface ExpandableItemStatusProps {\n selectedChildrenCount: number;\n}\n\nexport const ExpandableItemStatus = (props: ExpandableItemStatusProps): JSX.Element => {\n if (!props.selectedChildrenCount)\n return <></>;\n\n return (\n <div className={`${styles.itemStatus} ${styles.green}`}>\n {props.selectedChildrenCount}\n </div>\n );\n};\n\ninterface SelectableItemStatusProps {\n selected: boolean;\n radioButton?: boolean;\n}\n\nexport const SelectableItemStatus = (props: SelectableItemStatusProps): JSX.Element => {\n let svg;\n\n if (props.selected)\n svg = <SvgContainer svgName={cvSvgLibrary.Check} />;\n else if (!props.radioButton)\n svg = <SvgContainer svgName={cvSvgLibrary.Plus} />;\n else\n svg = <> </>;\n\n return (\n <div className={`${styles.itemStatus} ${props.selected ? styles.green : styles.unchecked}`}>\n {svg}\n </div>\n );\n};\n","import React from 'react';\n\nimport { ExpandableItemStatus, SelectableItemStatus } from './PreferenceItemStatus';\n\nimport styles from './preference-item.scss';\n\ninterface PreferenceItemProps {\n name: string;\n imageUrl: string;\n\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>) => void;\n isDisabled?: boolean;\n isSelected: boolean;\n hideStatus?: boolean;\n radioButton?: boolean;\n\n isExpandable?: boolean;\n expand?: boolean;\n selectedChildCount?: number;\n\n extraClasses?: string;\n}\n\nexport function PreferenceItem(props: PreferenceItemProps): JSX.Element {\n function getContainerClass(): string {\n let baseClass = `rounded-3 ${styles.preferenceItem}`;\n\n if (props.extraClasses)\n baseClass += ' ' + props.extraClasses;\n\n if (props.isDisabled)\n baseClass += ' ' + styles.disabled;\n\n if (props.isSelected && !props.isExpandable)\n baseClass += ' ' + styles.selected;\n\n if (props.hideStatus)\n baseClass += ' ' + styles.noBorder;\n\n return baseClass;\n }\n\n const caretClass = `${styles.expandCaret} ${props.expand ? styles.up : styles.down}`;\n\n return (\n <li\n className={getContainerClass()}\n onClick={props.onClick}\n aria-checked={props.isSelected}\n aria-haspopup={props.isExpandable}\n role={props.isExpandable ? 'button' : 'checkbox'}\n style={{ backgroundImage: `url(${props.imageUrl})` }}\n tabIndex={0}\n title={props.name}\n >\n <div className={`${styles.textBox} p-2`}>\n <p className='text-truncate mb-0'>\n {props.name}\n <span className={props.isExpandable ? caretClass : ''} />\n </p>\n\n {!props.hideStatus && (\n <>{props.isExpandable\n ? <ExpandableItemStatus selectedChildrenCount={props.selectedChildCount} />\n : <SelectableItemStatus selected={props.isSelected} radioButton={props.radioButton} />\n }</>\n )}\n </div>\n </li>\n );\n}","import { createContext } from 'react';\n\nimport { ClassificationPreference } from '../interfaces/ClassificationPreference';\n\ninterface TopicPreferencesContextFields {\n selectedSubjects: string[];\n expandedSubject: ClassificationPreference;\n}\n\nexport const TopicPreferencesContext = createContext<TopicPreferencesContextFields>(undefined);","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}","// extracted by mini-css-extract-plugin\nexport default {\"preferenceList\":\"oHNZN\",\"preferenceItem\":\"olBqT\",\"largePopup\":\"x3Oot\",\"selectPresentation\":\"b2r5s\",\"switchPresentation\":\"NIIWc\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { ClickDescriptor, EntityType, EventVersion, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ExistingAccountSignIn } from 'libs/shared/apps/sign-up/components/general/existing-account-sign-in/ExistingAccountSignIn';\nimport { ExternalLinkHelper } from 'libs/shared/apps/sign-up/helpers/ExternalLinkHelper';\nimport { PreferenceItem } from 'libs/shared/apps/subjects/components/preferences';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { TopicsConstants } from 'libs/shared/constants/TopicsConstants';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nimport styles from './welcome-popup.scss';\n\nconst namespace = 'settings.welcomePopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst PRESERVE_APPLINK_REDIRECTION: HashObject = [\n { application: AppChannels.CONTENT_UPDATES, action: Actions.ContentUpdates.CONTENT_UPDATES },\n { application: AppChannels.MOVIES_AND_TV, action: Actions.MoviesAndTv.HOME }\n].reduce((prev: HashObject, currentAppLink: Core.AppLink) => {\n prev[AppLinkHelper.getAppLinkString(currentAppLink)] = true;\n return prev;\n}, {});\n \ninterface WelcomePopupViewProps {\n closePopup: () => void;\n}\n\nexport function WelcomePopupView(props: WelcomePopupViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState<boolean>(false);\n const [ selectedPresentation, setSelectedPresentation ] = React.useState<Presentation>();\n\n const isMobile = useMediaQuery(MediaQueryStrings.SMDown);\n const alerts = useAlerts();\n\n const {\n availablePresentations,\n setPresentation,\n hasPresentationsLoaded\n } = usePresentation();\n\n const canSelectPresentation = availablePresentations?.length >= TopicsConstants.MULTI_PRESENTATION_THRESHOLD;\n\n function onSuccess(): void {\n AnalyticsHelper.logUserAction(\n { id: selectedPresentation.id },\n {\n actionType: UserAction.Click,\n entity: EntityType.Presentation,\n location: LocationContext.WelcomePopup,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: ClickDescriptor.Button,\n eventVersion: EventVersion.V3\n }\n );\n\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n\n /**\n * When accessing a top-level landing page that can have multiple alternates depending on the school\n * level, we'll redirect the user to the appropriate page once they've nomnated their school-level\n * preference. In all other cases we'll default to redirecting to Discover.\n */\n if (PRESERVE_APPLINK_REDIRECTION[AppLinkHelper.getAppLinkString(currentAppLink)]) {\n Core.AppLinkHelper.trigger(currentAppLink, { replace: true });\n } else {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n });\n }\n\n setShowSpinner(false);\n props.closePopup();\n }\n\n function onError(): void {\n setShowSpinner(false);\n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n }\n\n function onClick(): Promise<void> {\n setShowSpinner(true);\n \n return setPresentation(selectedPresentation, 'activeAndPreferred')\n .then(onSuccess)\n .catch(onError);\n }\n\n function isDisabled(): boolean {\n if (!canSelectPresentation)\n return false;\n\n return !selectedPresentation;\n }\n\n function onClickSignIn(): void {\n AnalyticsHelper.logUserAction(\n {\n url: ExternalLinkHelper.getLoginLink()\n },\n {\n actionType: UserAction.Click,\n entity: EntityType.AppLink,\n descriptor: SignUpDescriptors.SignIn,\n location: LocationContext.WelcomePopup\n }\n );\n }\n\n function getPopupSize(): 'md' | 'lg'| 'sm' {\n if (isMobile)\n return 'sm';\n\n if (availablePresentations?.length > 2)\n return 'lg';\n\n return 'md';\n }\n\n /**\n * If there's only one presentation, we still need to set it in\n * LocalStorage for public users. This is to ensure that they're not displayed\n * the popup each and every time.\n */\n React.useEffect(() => {\n if (!hasPresentationsLoaded || canSelectPresentation)\n return;\n\n setSelectedPresentation(ArrayHelper.first(availablePresentations));\n }, [ canSelectPresentation, hasPresentationsLoaded ]);\n\n const Buttons = () => (\n <PopupButtons>\n <PopupButtons.Submit\n variant='dark'\n onClick={onClick}\n text={getPhrase('cta')}\n showSpinner={showSpinner}\n disabled={isDisabled()}\n className='mx-auto'\n />\n </PopupButtons>\n );\n\n const LoginLink = () => (\n <ExistingAccountSignIn\n link={ExternalLinkHelper.getLoginLink()}\n onClick={onClickSignIn}\n />\n );\n\n const SinglePresentationContent = () => (\n <div className={`${styles.selectPresentation}`}>\n <div className='d-block mx-auto p-4'>\n <img\n src={ImageUrls.SignUp.UPGRADE}\n className='img-fluid'\n alt=''\n />\n </div>\n <h2 className='h4 text-center'>\n <Text\n namespace={namespace}\n phrase='info_primary'\n />\n </h2>\n <p className='text-center'>\n <Text namespace={namespace} phrase='info_secondary' />\n </p>\n <div className='mt-3'>\n <Buttons />\n </div>\n <div className='mt-3 text-center'>\n <LoginLink />\n </div>\n </div>\n );\n\n const MultiPresentationContent = () => (\n <div className={`${styles.selectPresentation}`}>\n <h2 className='h4 text-center'>\n <Text\n namespace={namespace}\n phrase='info_primary'\n />\n </h2>\n <p className='text-center'>\n <Text namespace={namespace} phrase='info_secondary_multi' />\n </p>\n <div className='position-relative'>\n <ul className={`list-unstyled d-flex ${styles.preferenceList}`}>\n {availablePresentations?.map((presentation: Presentation) => {\n if (presentation.type !== PresentationType.Subject)\n return <React.Fragment key={presentation.id}></React.Fragment>;\n\n return (\n <PreferenceItem\n key={presentation.id}\n name={presentation.name}\n imageUrl={ImageHelper.createUrl(presentation.cover?.url, { size: ImageSize.Medium }) || ''}\n onClick={() => setSelectedPresentation(presentation)}\n isSelected={selectedPresentation?.id === presentation.id}\n extraClasses={`${styles.preferenceItem} m-2`}\n radioButton\n />\n );\n })}\n </ul>\n </div>\n <Buttons />\n <div className='mt-3 text-center'>\n <LoginLink />\n </div>\n </div>\n );\n\n if (!hasPresentationsLoaded)\n return <></>;\n\n return (\n <Popup\n title={getPhrase('title')}\n size={getPopupSize()}\n closeButton={!canSelectPresentation}\n closePopup={props.closePopup}\n backdrop={canSelectPresentation ? 'static' : true}\n dialogClassName={SeoConstants.WELCOME_POPUP_SELECTOR}\n centered\n >\n {canSelectPresentation\n ? <MultiPresentationContent />\n : <SinglePresentationContent />\n }\n </Popup>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"grid\":\"X9r1Y\",\"subgrid\":\"TgYhp\"};"],"names":["ExistingAccountSignIn","props","href","link","className","onClick","ExternalLink","Marketing","au","us","nz","uk","Support","marketingSalesPathname","C","marketingFreeResourcesPathname","ExternalLinkHelper","getMarketingUrlForGeoLocation","geoLocation","countryCode","getMarketingSalesContactForGeoLocation","baseUrl","pathname","getFreeResourcesForGeoLocation","this","getTermsAndConditionsLink","getPrivacyPolicyLink","getSupportUrlForGeoLocation","getLoginLink","options","email","customerId","params","redirectUrl","window","location","search","SCROLL_TOLERANCE","StickyFooter","justifyClass","justify","children","NonStickyFooter","mediaQuery","widthClass","OnboardingFooter","isScrolledToBottom","innerHeight","scrollY","document","body","offsetHeight","isSticky","setIsSticky","throttledOnViewportChange","FunctionHelper","shouldSetToSticky","addEventListener","removeEventListener","defaultProps","SubjectPreferenceGridRow","TopicPreferencesContext","expandedSubject","selections","selectedSubjects","subjects","map","subject","itemDisabled","id","find","child","isDisabled","clickHandler","onSelect","isExpandableOption","onExpand","onCollapse","hasSelectedBulk","SubjectPreferenceItem","key","selected","includes","disabled","SubjectPreferenceGrid","eventHandlers","itemsPerRow","useGetRowItemCapacity","subjectRows","reduce","acc","index","push","ArrayHelper","row","i","isExpanded","context","coverUrl","cover","ImageHelper","url","size","childIds","selectedChildCount","filter","selection","length","component","PreferenceItem","name","imageUrl","isSelected","isExpandable","expand","extraClasses","hideStatus","Tooltip","title","ExpandableItemStatus","selectedChildrenCount","SelectableItemStatus","svg","SvgContainer","svgName","radioButton","baseClass","caretClass","role","style","backgroundImage","tabIndex","createContext","undefined","useGetMediaQueryString","isXS","isSM","isMD","isLG","isXL","isXXL","currentString","namespace","getPhrase","LanguageService","PRESERVE_APPLINK_REDIRECTION","application","action","prev","currentAppLink","WelcomePopupView","showSpinner","setShowSpinner","selectedPresentation","setSelectedPresentation","isMobile","alerts","usePresentation","availablePresentations","setPresentation","hasPresentationsLoaded","canSelectPresentation","TopicsConstants","onSuccess","AnalyticsHelper","actionType","entity","workflowPhase","descriptor","eventVersion","ContextService","appLink","replace","closePopup","onError","error","then","onClickSignIn","Buttons","PopupButtons","variant","text","LoginLink","Popup","closeButton","backdrop","dialogClassName","SeoConstants","centered","Text","phrase","presentation","type","PresentationType","src","ImageUrls","alt"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/6480-60a0ad2ff5-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/sign-up/components/general/existing-account-sign-in/ExistingAccountSignIn.tsx","file:///app/packages/libs/shared/src/apps/sign-up/helpers/ExternalLinkHelper.ts","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/footer/onboarding-footer.scss","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/footer/OnboardingFooter.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/topic-preferences/subject-preference-grid/SubjectPreferenceGrid.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/topic-preferences/subject-preference-item/SubjectPreferenceItem.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/preference-item/preference-item.scss","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/preference-item/PreferenceItemStatus.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/preference-item/PreferenceItem.tsx","file:///app/packages/libs/shared/src/apps/subjects/contexts/TopicPreferencesContext.ts","file:///app/packages/libs/shared/src/hooks/UseGetMediaQueryString.ts","file:///app/packages/projects/lite/src/shared/views/welcome-popup/welcome-popup.scss","file:///app/packages/projects/lite/src/shared/views/welcome-popup/WelcomePopupView.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/topic-preferences/subject-preference-grid/subject-preference-grid.scss"],"sourcesContent":["import React from 'react';\n\ninterface ExistingAccountSignInProps {\n onClick: (e: React.MouseEvent<Element, MouseEvent>) => void;\n link: string;\n}\n\nexport function ExistingAccountSignIn(props: ExistingAccountSignInProps): JSX.Element {\n return (\n <>\n Have a ClickView account already?\n <a href={props.link} className='info-link ms-1' onClick={props.onClick}>\n Sign in\n </a>\n </>\n );\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { LocalityHelper } from 'libs/shared/apps/sign-up/helpers/LocalityHelper';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\ntype ExternalLinkType = {\n [key: string]: {\n [key in CountryCode]: string\n }\n}\n\ninterface LoginLinkOptions {\n email?: string;\n customerId?: string;\n}\n\nexport const ExternalLink: ExternalLinkType = {\n Marketing: {\n au: 'https://www.clickvieweducation.com/en-au',\n us: 'https://www.clickvieweducation.com',\n nz: 'https://www.clickview.co.nz',\n // @todo update after new UK website is released\n uk: 'https://www.clickview.co.uk'\n },\n Support: {\n au: 'https://www.clickviewsupport.com/hc/en-au',\n uk: 'https://www.clickviewsupport.com/hc/en-au#gb',\n nz: 'https://www.clickviewsupport.com/hc/en-au#nz',\n us: 'https://www.clickviewsupport.com/hc/en-au#us'\n }\n};\n\nconst marketingSalesPathname: {[key in CountryCode]: string} = {\n [CountryCode.AU]: '/contact-us/sales',\n [CountryCode.US]: '/contact-us/sales',\n [CountryCode.NZ]: '/contact-us/',\n // @todo update after new UK website is released\n [CountryCode.UK]: '/contact-us/trial'\n};\n\nconst marketingFreeResourcesPathname: {[key in CountryCode]: string} = {\n [CountryCode.AU]: '/resources/free-student-resources',\n [CountryCode.US]: '/resources/free-student-resources',\n [CountryCode.NZ]: '/free-student-resources/',\n // @todo update after new UK website is released\n [CountryCode.UK]: '/free-student-resources/'\n};\n\nexport const ExternalLinkHelper = {\n \n getMarketingUrlForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n const url = ExternalLink.Marketing[countryCode];\n\n if (!url)\n return ExternalLink.Marketing.us;\n\n return url;\n },\n\n getMarketingSalesContactForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n const baseUrl = ExternalLinkHelper.getMarketingUrlForGeoLocation(geoLocation);\n const pathname = marketingSalesPathname[countryCode];\n\n return `${baseUrl}${pathname}`;\n },\n\n getFreeResourcesForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n\n const baseUrl = this.getMarketingUrlForGeoLocation({ countryCode });\n const pathname = marketingFreeResourcesPathname[countryCode];\n\n return `${baseUrl}${pathname}`;\n },\n\n getTermsAndConditionsLink(): string {\n const baseUrl = this.getMarketingUrlForGeoLocation(CountryCode.US);\n return baseUrl + '/terms-and-conditions/';\n },\n\n getPrivacyPolicyLink(): string {\n const baseUrl = this.getMarketingUrlForGeoLocation(CountryCode.US);\n return baseUrl + '/privacy-policy/';\n },\n\n getSupportUrlForGeoLocation(geoLocation: GeoLocation): string {\n const countryCode = LocalityHelper.getCountryCode(geoLocation?.countryCode);\n const url = ExternalLink.Support[countryCode];\n\n if (!url)\n return ExternalLink.Support.us;\n\n return url;\n },\n\n getLoginLink(options: LoginLinkOptions = {}): string {\n const { email, customerId } = options;\n\n const params: HashObject = {\n redirectUrl: window.location.pathname + window.location.search\n };\n\n if (email)\n params.email = email;\n\n if (customerId)\n params.customerId = customerId;\n\n return UrlHelper.urlBuilder('/login', params);\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"stickyFooter\":\"rIUL4\",\"nonStickyFooter\":\"PuC_F\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\nimport { useResizeListener } from 'libs/shared/hooks/UseResizeListener';\n\nimport styles from './onboarding-footer.scss';\n\nconst SCROLL_TOLERANCE = 50; // value in px\n\ninterface OnboardingFooterProps extends React.PropsWithChildren<unknown> {\n justify?: 'end' | 'center' | 'between';\n}\n\nOnboardingFooter.defaultProps = {\n justify: 'between'\n};\n\nfunction StickyFooter(props: OnboardingFooterProps): JSX.Element {\n const justifyClass = `justify-content-${props.justify}`;\n\n return (\n <div className={`py-3 bg-white ${styles.stickyFooter}`}>\n <div className={`w-75 mx-auto d-flex ${justifyClass}`}>\n {props.children}\n </div>\n </div>\n );\n}\n\nfunction NonStickyFooter(props: OnboardingFooterProps): JSX.Element {\n const mediaQuery = useGetMediaQueryString();\n const widthClass = (mediaQuery === MediaQueryStrings.SM || mediaQuery === MediaQueryStrings.XS) ? 'w-100' : 'w-75';\n\n const justifyClass = `justify-content-${props.justify}`;\n\n return (\n <div className={`${widthClass} ${justifyClass} ${styles.nonStickyFooter} d-flex px-3`}>\n {props.children}\n </div>\n );\n}\n\nexport function OnboardingFooter(props: OnboardingFooterProps): JSX.Element {\n const isScrolledToBottom = () => {\n return (window.innerHeight + window.scrollY) >= (document.body.offsetHeight - SCROLL_TOLERANCE);\n };\n\n const [ isSticky, setIsSticky ] = React.useState(false);\n\n React.useEffect(() => setIsSticky(!isScrolledToBottom()), []);\n\n function onViewportChange(): void {\n const shouldSetToSticky = !isScrolledToBottom();\n\n if (isSticky && !shouldSetToSticky) {\n setIsSticky(false);\n return;\n }\n\n if (!isSticky && shouldSetToSticky)\n setIsSticky(true);\n }\n\n const throttledOnViewportChange = FunctionHelper.throttle(onViewportChange, 100);\n\n React.useEffect(() => {\n window.addEventListener('scroll', throttledOnViewportChange);\n return () => window.removeEventListener('scroll', throttledOnViewportChange);\n }, [ isSticky, setIsSticky ]);\n\n useResizeListener(throttledOnViewportChange, throttledOnViewportChange, [ isSticky, setIsSticky ]);\n\n return isSticky\n ? <StickyFooter {...props}>{props.children}</StickyFooter>\n : <NonStickyFooter {...props}>{props.children}</NonStickyFooter>;\n}","import * as React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { SubjectPreferenceItem } from 'libs/shared/apps/subjects/components/preferences';\nimport { TopicPreferencesContext } from 'libs/shared/apps/subjects/contexts/TopicPreferencesContext';\nimport { ClassificationPreference } from 'libs/shared/apps/subjects/interfaces/ClassificationPreference';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport styles from './subject-preference-grid.scss';\n\nfunction useGetRowItemCapacity(): number {\n const viewportWidth = useGetMediaQueryString();\n\n switch (viewportWidth) {\n case MediaQueryStrings.LG:\n default:\n return 5;\n\n case MediaQueryStrings.MD:\n return 4;\n\n case MediaQueryStrings.SM:\n return 3;\n\n case MediaQueryStrings.XS:\n return 2;\n }\n}\n\nfunction isDisabled(subject: ClassificationPreference, expandedSubject: ClassificationPreference): boolean {\n if (!expandedSubject || subject.id === expandedSubject.id)\n return false;\n\n if (expandedSubject.children.find(child => child.id === subject.id))\n return false;\n\n return true;\n}\n\ninterface SubjectPreferenceGridRowProps extends SubjectPreferenceGridProps {}\n\nfunction SubjectPreferenceGridRow(props: SubjectPreferenceGridRowProps): JSX.Element {\n const { expandedSubject, selectedSubjects: selections } = React.useContext(TopicPreferencesContext);\n\n return (\n <>\n {props.subjects.map(subject => {\n const itemDisabled = isDisabled(subject, expandedSubject);\n\n let clickHandler = props.onSelect;\n\n if (subject.isExpandableOption)\n clickHandler = props.onExpand;\n\n if (itemDisabled)\n clickHandler = props.onCollapse;\n\n if (props.hasSelectedBulk)\n clickHandler = () => {};\n\n return (\n <SubjectPreferenceItem\n key={subject.id}\n subject={subject}\n selected={!props.hasSelectedBulk && selections.includes(subject.id)}\n disabled={props.hasSelectedBulk || itemDisabled}\n onClick={() => clickHandler(subject)}\n hasSelectedBulk={props.hasSelectedBulk}\n />\n );\n })}\n </>\n );\n}\n\ninterface SubjectPreferenceGridProps {\n subjects: ClassificationPreference[];\n onSelect: (subject: Classification) => void;\n onExpand: (subject: Classification) => void;\n onCollapse: (subject: Classification) => void;\n hasSelectedBulk?: boolean;\n}\n\nexport function SubjectPreferenceGrid(props: SubjectPreferenceGridProps): JSX.Element {\n const { subjects, hasSelectedBulk, ...eventHandlers } = props;\n const { expandedSubject } = React.useContext(TopicPreferencesContext);\n\n const itemsPerRow = useGetRowItemCapacity();\n\n /**\n * This is an array of arrays, where each sub-array is a row of classifications.\n * We do this to make sure any sub-grid's of child preference options get rendered in the row\n * directly beneath their parent's row.\n */\n const subjectRows = subjects.reduce((\n acc: ClassificationPreference[][],\n subject: ClassificationPreference,\n index: number\n ) => {\n index % itemsPerRow === 0\n ? acc.push([subject]) // Start a new row\n : ArrayHelper.last(acc).push(subject); // Fill up an existing row\n\n return acc;\n }, []);\n\n return (\n <ul className={styles.grid}>\n {subjectRows.map((row, i) => {\n const isExpanded = expandedSubject && !!row.find(subject => {\n return expandedSubject.id === subject.id && subject.isExpandableOption;\n });\n\n return (\n <React.Fragment key={i}>\n <SubjectPreferenceGridRow\n subjects={row}\n hasSelectedBulk={hasSelectedBulk}\n {...eventHandlers}\n />\n\n {isExpanded && (\n <li className={`${styles.subgrid} m-0`}>\n <SubjectPreferenceGrid\n subjects={expandedSubject.children as ClassificationPreference[]}\n hasSelectedBulk={hasSelectedBulk}\n {...eventHandlers}\n />\n </li>\n )}\n </React.Fragment>\n );\n })}\n </ul>\n );\n}","import * as React from 'react';\n\nimport { PreferenceItem } from 'libs/shared/apps/subjects/components/preferences/preference-item/PreferenceItem';\nimport { TopicPreferencesContext } from 'libs/shared/apps/subjects/contexts/TopicPreferencesContext';\nimport { ClassificationPreference } from 'libs/shared/apps/subjects/interfaces/ClassificationPreference';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\ninterface SubjectPreferenceItemProps {\n subject: ClassificationPreference;\n selected: boolean;\n disabled?: boolean;\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>) => void;\n extraClasses?: string;\n hideStatus?: boolean;\n hasSelectedBulk?: boolean;\n}\n\nexport function SubjectPreferenceItem(props: SubjectPreferenceItemProps): JSX.Element {\n const context = React.useContext(TopicPreferencesContext);\n\n const coverUrl = props.subject.cover ? ImageHelper.createUrl(props.subject.cover.url, { size: ImageSize.Small }) : '';\n\n const childIds = props.subject.isExpandableOption ? props.subject.children.map(child => child.id) : [];\n const selectedChildCount = !props.hasSelectedBulk\n ? context?.selectedSubjects?.filter(selection => childIds.includes(selection)).length\n : 0;\n\n const component = (\n <PreferenceItem\n name={props.subject.name}\n imageUrl={coverUrl}\n onClick={props.onClick}\n isSelected={props.selected}\n isDisabled={props.disabled}\n isExpandable={props.subject.isExpandableOption}\n expand={context?.expandedSubject?.id === props.subject.id}\n selectedChildCount={selectedChildCount}\n extraClasses={props.extraClasses}\n hideStatus={props.hideStatus}\n />\n );\n\n return props.disabled\n ? <span>{component}</span>\n : <Tooltip title={props.subject.name}><span>{component}</span></Tooltip>;\n}","// extracted by mini-css-extract-plugin\nexport default {\"preferenceItem\":\"PSWHa\",\"expandCaret\":\"CCsqs\",\"up\":\"w7N1R\",\"down\":\"mO0Kn\",\"disabled\":\"Oyw2x\",\"selected\":\"Czk2N\",\"noBorder\":\"_e7oe\",\"textBox\":\"pfksF\",\"itemStatus\":\"H4u81\",\"unchecked\":\"iYkPv\",\"green\":\"w5g0e\"};","import * as React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './preference-item.scss';\n\ninterface ExpandableItemStatusProps {\n selectedChildrenCount: number;\n}\n\nexport const ExpandableItemStatus = (props: ExpandableItemStatusProps): JSX.Element => {\n if (!props.selectedChildrenCount)\n return <></>;\n\n return (\n <div className={`${styles.itemStatus} ${styles.green}`}>\n {props.selectedChildrenCount}\n </div>\n );\n};\n\ninterface SelectableItemStatusProps {\n selected: boolean;\n radioButton?: boolean;\n}\n\nexport const SelectableItemStatus = (props: SelectableItemStatusProps): JSX.Element => {\n let svg;\n\n if (props.selected)\n svg = <SvgContainer svgName={cvSvgLibrary.Check} />;\n else if (!props.radioButton)\n svg = <SvgContainer svgName={cvSvgLibrary.Plus} />;\n else\n svg = <> </>;\n\n return (\n <div className={`${styles.itemStatus} ${props.selected ? styles.green : styles.unchecked}`}>\n {svg}\n </div>\n );\n};\n","import React from 'react';\n\nimport { ExpandableItemStatus, SelectableItemStatus } from './PreferenceItemStatus';\n\nimport styles from './preference-item.scss';\n\ninterface PreferenceItemProps {\n name: string;\n imageUrl: string;\n\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>) => void;\n isDisabled?: boolean;\n isSelected: boolean;\n hideStatus?: boolean;\n radioButton?: boolean;\n\n isExpandable?: boolean;\n expand?: boolean;\n selectedChildCount?: number;\n\n extraClasses?: string;\n}\n\nexport function PreferenceItem(props: PreferenceItemProps): JSX.Element {\n function getContainerClass(): string {\n let baseClass = `rounded-3 ${styles.preferenceItem}`;\n\n if (props.extraClasses)\n baseClass += ' ' + props.extraClasses;\n\n if (props.isDisabled)\n baseClass += ' ' + styles.disabled;\n\n if (props.isSelected && !props.isExpandable)\n baseClass += ' ' + styles.selected;\n\n if (props.hideStatus)\n baseClass += ' ' + styles.noBorder;\n\n return baseClass;\n }\n\n const caretClass = `${styles.expandCaret} ${props.expand ? styles.up : styles.down}`;\n\n return (\n <li\n className={getContainerClass()}\n onClick={props.onClick}\n aria-checked={props.isSelected}\n aria-haspopup={props.isExpandable}\n role={props.isExpandable ? 'button' : 'checkbox'}\n style={{ backgroundImage: `url(${props.imageUrl})` }}\n tabIndex={0}\n title={props.name}\n >\n <div className={`${styles.textBox} p-2`}>\n <p className='text-truncate mb-0'>\n {props.name}\n <span className={props.isExpandable ? caretClass : ''} />\n </p>\n\n {!props.hideStatus && (\n <>{props.isExpandable\n ? <ExpandableItemStatus selectedChildrenCount={props.selectedChildCount} />\n : <SelectableItemStatus selected={props.isSelected} radioButton={props.radioButton} />\n }</>\n )}\n </div>\n </li>\n );\n}","import { createContext } from 'react';\n\nimport { ClassificationPreference } from '../interfaces/ClassificationPreference';\n\ninterface TopicPreferencesContextFields {\n selectedSubjects: string[];\n expandedSubject: ClassificationPreference;\n}\n\nexport const TopicPreferencesContext = createContext<TopicPreferencesContextFields>(undefined);","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}","// extracted by mini-css-extract-plugin\nexport default {\"preferenceList\":\"oHNZN\",\"preferenceItem\":\"olBqT\",\"largePopup\":\"x3Oot\",\"selectPresentation\":\"b2r5s\",\"switchPresentation\":\"NIIWc\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { ClickDescriptor, EntityType, EventVersion, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ExistingAccountSignIn } from 'libs/shared/apps/sign-up/components/general/existing-account-sign-in/ExistingAccountSignIn';\nimport { ExternalLinkHelper } from 'libs/shared/apps/sign-up/helpers/ExternalLinkHelper';\nimport { PreferenceItem } from 'libs/shared/apps/subjects/components/preferences';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { TopicsConstants } from 'libs/shared/constants/TopicsConstants';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nimport styles from './welcome-popup.scss';\n\nconst namespace = 'settings.welcomePopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst PRESERVE_APPLINK_REDIRECTION: HashObject = [\n { application: AppChannels.CONTENT_UPDATES, action: Actions.ContentUpdates.CONTENT_UPDATES },\n { application: AppChannels.MOVIES_AND_TV, action: Actions.MoviesAndTv.HOME }\n].reduce((prev: HashObject, currentAppLink: Core.AppLink) => {\n prev[AppLinkHelper.getAppLinkString(currentAppLink)] = true;\n return prev;\n}, {});\n \ninterface WelcomePopupViewProps {\n closePopup: () => void;\n}\n\nexport function WelcomePopupView(props: WelcomePopupViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState<boolean>(false);\n const [ selectedPresentation, setSelectedPresentation ] = React.useState<Presentation>();\n\n const isMobile = useMediaQuery(MediaQueryStrings.SMDown);\n const alerts = useAlerts();\n\n const {\n availablePresentations,\n setPresentation,\n hasPresentationsLoaded\n } = usePresentation();\n\n const canSelectPresentation = availablePresentations?.length >= TopicsConstants.MULTI_PRESENTATION_THRESHOLD;\n\n function onSuccess(): void {\n AnalyticsHelper.logUserAction(\n { id: selectedPresentation.id },\n {\n actionType: UserAction.Click,\n entity: EntityType.Presentation,\n location: LocationContext.WelcomePopup,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: ClickDescriptor.Button,\n eventVersion: EventVersion.V3\n }\n );\n\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n\n /**\n * When accessing a top-level landing page that can have multiple alternates depending on the school\n * level, we'll redirect the user to the appropriate page once they've nomnated their school-level\n * preference. In all other cases we'll default to redirecting to Discover.\n */\n if (PRESERVE_APPLINK_REDIRECTION[AppLinkHelper.getAppLinkString(currentAppLink)]) {\n Core.AppLinkHelper.trigger(currentAppLink, { replace: true });\n } else {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n });\n }\n\n setShowSpinner(false);\n props.closePopup();\n }\n\n function onError(): void {\n setShowSpinner(false);\n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n }\n\n function onClick(): Promise<void> {\n setShowSpinner(true);\n \n return setPresentation(selectedPresentation, 'activeAndPreferred')\n .then(onSuccess)\n .catch(onError);\n }\n\n function isDisabled(): boolean {\n if (!canSelectPresentation)\n return false;\n\n return !selectedPresentation;\n }\n\n function onClickSignIn(): void {\n AnalyticsHelper.logUserAction(\n {\n url: ExternalLinkHelper.getLoginLink()\n },\n {\n actionType: UserAction.Click,\n entity: EntityType.AppLink,\n descriptor: SignUpDescriptors.SignIn,\n location: LocationContext.WelcomePopup\n }\n );\n }\n\n function getPopupSize(): 'md' | 'lg'| 'sm' {\n if (isMobile)\n return 'sm';\n\n if (availablePresentations?.length > 2)\n return 'lg';\n\n return 'md';\n }\n\n /**\n * If there's only one presentation, we still need to set it in\n * LocalStorage for public users. This is to ensure that they're not displayed\n * the popup each and every time.\n */\n React.useEffect(() => {\n if (!hasPresentationsLoaded || canSelectPresentation)\n return;\n\n setSelectedPresentation(ArrayHelper.first(availablePresentations));\n }, [ canSelectPresentation, hasPresentationsLoaded ]);\n\n const Buttons = () => (\n <PopupButtons>\n <PopupButtons.Submit\n variant='dark'\n onClick={onClick}\n text={getPhrase('cta')}\n showSpinner={showSpinner}\n disabled={isDisabled()}\n className='mx-auto'\n />\n </PopupButtons>\n );\n\n const LoginLink = () => (\n <ExistingAccountSignIn\n link={ExternalLinkHelper.getLoginLink()}\n onClick={onClickSignIn}\n />\n );\n\n const SinglePresentationContent = () => (\n <div className={`${styles.selectPresentation}`}>\n <div className='d-block mx-auto p-4'>\n <img\n src={ImageUrls.SignUp.UPGRADE}\n className='img-fluid'\n alt=''\n />\n </div>\n <h2 className='h4 text-center'>\n <Text\n namespace={namespace}\n phrase='info_primary'\n />\n </h2>\n <p className='text-center'>\n <Text namespace={namespace} phrase='info_secondary' />\n </p>\n <div className='mt-3'>\n <Buttons />\n </div>\n <div className='mt-3 text-center'>\n <LoginLink />\n </div>\n </div>\n );\n\n const MultiPresentationContent = () => (\n <div className={`${styles.selectPresentation}`}>\n <h2 className='h4 text-center'>\n <Text\n namespace={namespace}\n phrase='info_primary'\n />\n </h2>\n <p className='text-center'>\n <Text namespace={namespace} phrase='info_secondary_multi' />\n </p>\n <div className='position-relative'>\n <ul className={`list-unstyled d-flex ${styles.preferenceList}`}>\n {availablePresentations?.map((presentation: Presentation) => {\n if (presentation.type !== PresentationType.Subject)\n return <React.Fragment key={presentation.id}></React.Fragment>;\n\n return (\n <PreferenceItem\n key={presentation.id}\n name={presentation.name}\n imageUrl={ImageHelper.createUrl(presentation.cover?.url, { size: ImageSize.Medium }) || ''}\n onClick={() => setSelectedPresentation(presentation)}\n isSelected={selectedPresentation?.id === presentation.id}\n extraClasses={`${styles.preferenceItem} m-2`}\n radioButton\n />\n );\n })}\n </ul>\n </div>\n <Buttons />\n <div className='mt-3 text-center'>\n <LoginLink />\n </div>\n </div>\n );\n\n if (!hasPresentationsLoaded)\n return <></>;\n\n return (\n <Popup\n title={getPhrase('title')}\n size={getPopupSize()}\n closeButton={!canSelectPresentation}\n closePopup={props.closePopup}\n backdrop={canSelectPresentation ? 'static' : true}\n dialogClassName={SeoConstants.WELCOME_POPUP_SELECTOR}\n centered\n >\n {canSelectPresentation\n ? <MultiPresentationContent />\n : <SinglePresentationContent />\n }\n </Popup>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"grid\":\"X9r1Y\",\"subgrid\":\"TgYhp\"};"],"names":["ExistingAccountSignIn","props","href","link","className","onClick","ExternalLink","Marketing","au","us","nz","uk","Support","marketingSalesPathname","C","marketingFreeResourcesPathname","ExternalLinkHelper","getMarketingUrlForGeoLocation","geoLocation","countryCode","getMarketingSalesContactForGeoLocation","baseUrl","pathname","getFreeResourcesForGeoLocation","this","getTermsAndConditionsLink","getPrivacyPolicyLink","getSupportUrlForGeoLocation","getLoginLink","options","email","customerId","params","redirectUrl","window","location","search","SCROLL_TOLERANCE","StickyFooter","justifyClass","justify","children","NonStickyFooter","mediaQuery","widthClass","OnboardingFooter","isScrolledToBottom","innerHeight","scrollY","document","body","offsetHeight","isSticky","setIsSticky","throttledOnViewportChange","FunctionHelper","shouldSetToSticky","addEventListener","removeEventListener","defaultProps","SubjectPreferenceGridRow","TopicPreferencesContext","expandedSubject","selections","selectedSubjects","subjects","map","subject","itemDisabled","id","find","child","isDisabled","clickHandler","onSelect","isExpandableOption","onExpand","onCollapse","hasSelectedBulk","SubjectPreferenceItem","key","selected","includes","disabled","SubjectPreferenceGrid","eventHandlers","itemsPerRow","useGetRowItemCapacity","subjectRows","reduce","acc","index","push","ArrayHelper","row","i","isExpanded","context","coverUrl","cover","ImageHelper","url","size","childIds","selectedChildCount","filter","selection","length","component","PreferenceItem","name","imageUrl","isSelected","isExpandable","expand","extraClasses","hideStatus","Tooltip","title","ExpandableItemStatus","selectedChildrenCount","SelectableItemStatus","svg","SvgContainer","svgName","radioButton","baseClass","caretClass","role","style","backgroundImage","tabIndex","createContext","undefined","useGetMediaQueryString","isXS","isSM","isMD","isLG","isXL","isXXL","currentString","namespace","getPhrase","LanguageService","PRESERVE_APPLINK_REDIRECTION","application","action","prev","currentAppLink","WelcomePopupView","showSpinner","setShowSpinner","selectedPresentation","setSelectedPresentation","isMobile","alerts","usePresentation","availablePresentations","setPresentation","hasPresentationsLoaded","canSelectPresentation","TopicsConstants","onSuccess","AnalyticsHelper","actionType","entity","workflowPhase","descriptor","eventVersion","ContextService","appLink","replace","closePopup","onError","error","then","onClickSignIn","Buttons","PopupButtons","variant","text","LoginLink","Popup","closeButton","backdrop","dialogClassName","SeoConstants","centered","Text","phrase","presentation","type","PresentationType","src","ImageUrls","alt"],"sourceRoot":""}
|