@clickview/lite 0.49.6 → 0.49.7

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 CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "appBundle": "bundle-bcc136a91c.min.js",
2
+ "appBundle": "bundle-0fc905d3a4.min.js",
3
3
  "cssBundle": "lite-app-fca5f08fe7.css",
4
4
  "polyfillBundle": "polyfills-365f92d668.min.js"
5
5
  }
@@ -0,0 +1,3 @@
1
+ /*! For license information please see 6741-dadd4903a8-lite.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6741],{3278:(e,t,n)=>{n.d(t,{z:()=>p});var r=n(32735),a=n(39202),i=n(23481),o=n(65858),c=n(38502),l=n(83345),s=n(96787);const u={pillTab:"bMJM0"};var d="discover.header";function p(e){var t,n,p,f,h,m;if(!e.type)return r.createElement(r.Fragment,null);if(e.type===s.Yv.Learner||e.hasStudentExperience)return r.createElement("div",{className:"py-3"},r.createElement("h1",{className:"h2 mb-0"},r.createElement(l.x,{namespace:d,phrase:"heading"})));var v=[{name:i.T.getPhrase(d,"forYou"),appLink:null===(t=e.appLinks)||void 0===t?void 0:t.forYou,active:"forYou"===e.active,analyticsData:{name:i.T.getPhrase(d,"forYou"),url:a.C$.getHref(null===(n=e.appLinks)||void 0===n?void 0:n.forYou)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}},{name:i.T.getPhrase(d,"whatsNew"),appLink:null===(p=e.appLinks)||void 0===p?void 0:p.whatsNew,active:"whatsNew"===e.active,analyticsData:{name:i.T.getPhrase(d,"whatsNew"),url:a.C$.getHref(null===(f=e.appLinks)||void 0===f?void 0:f.whatsNew)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}}];return e.showCalendar&&v.push({name:i.T.getPhrase(d,"calendar"),appLink:null===(h=e.appLinks)||void 0===h?void 0:h.calendar,active:"calendar"===e.active,analyticsData:{name:i.T.getPhrase(d,"calendar"),url:a.C$.getHref(null===(m=e.appLinks)||void 0===m?void 0:m.calendar)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}}),r.createElement("div",{className:"py-3 text-center"},r.createElement(c.r,{tabs:v,className:u.pillTab}))}},38502:(e,t,n)=>{n.d(t,{r:()=>s});var r=n(32735),a=n(49985),i=n(36848),o=n(18559),c=n(11607),l=n(87432);function s(e){var t;return r.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:""},r.createElement("ul",{className:"list-unstyled d-inline-block m-0 ".concat(l.Z.pillTabSelector)},e.tabs.map((function(e){return r.createElement("li",{className:"p-0 ".concat(e.active?"btn btn-dark":"btn btn-outline-dark"),key:e.name},e.appLink?r.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"cursor-pointer d-flex justify-content-center text-decoration-none text-reset px-2 ".concat(l.Z.pillItem)},e.name,"number"==typeof e.count&&r.createElement("div",{className:"ps-2"},r.createElement(o.C,{type:o.g.Count,data:e.count}))):r.createElement(c.L,{className:"".concat(l.Z.pillItem," d-flex justify-content-center p-2"),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&a.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},e.name,"number"==typeof e.count&&r.createElement("div",{className:"ps-2"},r.createElement(o.C,{type:o.g.Count,data:e.count}))))}))))}},16741:(e,t,n)=>{n.r(t),n.d(t,{CuratedDiscoverView:()=>K});var r=n(32735),a=n(23481),i=n(57900),o=n(20354),c=n(2948),l=n(49985),s=n(65858),u=n(75896),d=n(3278),p=n(61032),f=n(16714),h=n(96787),m=n(21366),v=n(23232),y=n(83345),g=n(76177),b=n(35223),w="subjects.discoverDashboardEmptyState",L=a.T.encloseNamespace(w);function E(e){var t,n,i=(null===(t=e.dashboard)||void 0===t?void 0:t.status)===h.GL.Archived;return r.createElement(v.u,null,r.createElement(v.u.Image,{src:e.imageUrl,altText:L("info")}),r.createElement(v.u.Heading,null,r.createElement(y.x,{namespace:w,phrase:"heading"})),r.createElement(v.u.Info,null,r.createElement(y.x,{namespace:w,phrase:"info"})),r.createElement(g.u,{title:i?a.T.getPhrase(w,"archivedCtaTooltip"):"",spanHack:!0},r.createElement(v.u.Cta,{text:a.T.getPhrase(w,"add"),appLink:null===(n=e.addWidgetApplink)||void 0===n?void 0:n.call(e),className:"btn btn-dark",icon:b.vn.Plus,disabled:i})))}function T(e){var t,n,a=u.m.sortBy(null===(t=e.dashboard)||void 0===t?void 0:t.widgets,"index");function i(t,n,r){var a=m.S.getWidgetParams(n,r,m.S.getDashboardTargetType(e.dashboard));return e.getWidgetContentRequest(t,a,r,e.presentation)}var o=e.isReadonly&&!(null==a?void 0:a.length);return r.createElement(r.Fragment,null,r.createElement(d.z,{type:null===(n=e.dashboard)||void 0===n?void 0:n.userType,appLinks:e.headerAppLinks,hasStudentExperience:e.hasPermissions(f.C.StudentExperience),showCalendar:e.showCalendar,active:"forYou"}),a.map((function(t,n){return r.createElement(p.L,{key:t.id,id:t.id,imageCdnUrl:e.imageCdnUrl,getContentRequest:i,audiences:e.audiences,name:t.name,description:t.description,templateId:t.templateId,metadata:t.metadata,presentation:e.presentation,setFavourite:e.setFavourite,canFavourite:e.canFavourite,resourceThumbnailFallbackImageUrl:e.resourceThumbnailFallbackImageUrl,preferences:t.preferences,appLinks:e.widgetAppLinks,isScrollToTargetWidget:(null==e?void 0:e.scrollToWidgetId)===t.id,widgetTypeId:t.widgetId,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,onSubmitFeedback:e.onSubmitFeedback,updatePreferences:e.updatePreferences,yearGroups:e.yearGroups,lazyLoad:e.lazyLoad,dashboardTarget:h.ku.Discover,widgetIndex:n,jobTitle:e.jobTitle,isPreviewing:e.isReadonly,imageUrls:e.imageUrls,settings:e.settings})})),o&&r.createElement(E,{dashboard:e.dashboard,isReadonly:e.isReadonly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.widgetAppLinks.widgetWizard}))}var S=n(38143),A=n(72639),C=n(39151),k=n(1666),O=n(80889),N=n(98064),D=n(61699),I=n(31949),x=n(22902),P=n(79612),F=n(37802),U=n(69454),_=n(76753),j=n(73417),R=n(99742),B=n(52333),H=n(27638),M=n(85369),W=n(23737),G=n(33192),V=n(48688),Y=n(27051);function Z(e){return Z="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},Z(e)}function z(){z=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var i=t&&t.prototype instanceof y?t:y,o=Object.create(i.prototype),c=new D(r||[]);return a(o,"_invoke",{value:C(e,n,c)}),o}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",f="suspendedYield",h="executing",m="completed",v={};function y(){}function g(){}function b(){}var w={};s(w,o,(function(){return this}));var L=Object.getPrototypeOf,E=L&&L(L(I([])));E&&E!==n&&r.call(E,o)&&(w=E);var T=b.prototype=y.prototype=Object.create(w);function S(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function A(e,t){function n(a,i,o,c){var l=d(e[a],e,i);if("throw"!==l.type){var s=l.arg,u=s.value;return u&&"object"==Z(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,o,c)}),(function(e){n("throw",e,o,c)})):t.resolve(u).then((function(e){s.value=e,o(s)}),(function(e){return n("throw",e,o,c)}))}c(l.arg)}var i;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return i=i?i.then(a,a):a()}})}function C(t,n,r){var a=p;return function(i,o){if(a===h)throw Error("Generator is already running");if(a===m){if("throw"===i)throw o;return{value:e,done:!0}}for(r.method=i,r.arg=o;;){var c=r.delegate;if(c){var l=k(c,r);if(l){if(l===v)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===p)throw a=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=h;var s=d(t,n,r);if("normal"===s.type){if(a=r.done?m:f,s.arg===v)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(a=m,r.method="throw",r.arg=s.arg)}}}function k(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,k(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var i=d(a,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,v;var o=i.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function N(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function D(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function I(t){if(t||""===t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,i=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return i.next=i}}throw new TypeError(Z(t)+" is not iterable")}return g.prototype=b,a(T,"constructor",{value:b,configurable:!0}),a(b,"constructor",{value:g,configurable:!0}),g.displayName=s(b,l,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===g||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,s(e,l,"GeneratorFunction")),e.prototype=Object.create(T),e},t.awrap=function(e){return{__await:e}},S(A.prototype),s(A.prototype,c,(function(){return this})),t.AsyncIterator=A,t.async=function(e,n,r,a,i){void 0===i&&(i=Promise);var o=new A(u(e,n,r,a),i);return t.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},S(T),s(T,l,"Generator"),s(T,o,(function(){return this})),s(T,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=I,D.prototype={constructor:D,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(N),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],c=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var l=r.call(o,"catchLoc"),s=r.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return a(o.catchLoc,!0);if(this.prev<o.finallyLoc)return a(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return a(o.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return a(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var i=a;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),v},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),N(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;N(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:I(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}function $(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 q=function(e,t,n,r){return new(n||(n=Promise))((function(a,i){function o(e){try{l(r.next(e))}catch(e){i(e)}}function c(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,c)}l((r=r.apply(e,t||[])).next())}))},J=a.T.encloseNamespace("dashboard.dashboard");function K(e){var t,n,a,u,d,p,m,v,y=o.a.useBasicFetch(C.L.config()),g=o.a.useBasicFetch(I.N.currentUser()),b=o.a.useBasicFetch((null===(t=g.data)||void 0===t?void 0:t.isAuthenticated)&&I.N.user(g.data.id)),w=(0,x.T)(),L=w.hasLocalPermissions,E=w.hasPermissions,Z=o.a.useBasicFetch(L(f.E.ManageDiscoverPreferences)&&g.data&&k.h.customer(g.data.customerId)),K=o.a.useBasicFetch((null===(n=g.data)||void 0===n?void 0:n.isAuthenticated)&&k.h.yearGroups(g.data.customerId)),Q=o.a.useBasicFetch((null===(a=g.data)||void 0===a?void 0:a.isAuthenticated)&&N.D.libraries()),X=(0,W.y)({targetType:h.ku.Discover,queryParams:e.queryParams,presentationSlug:e.presentationSlug}),ee=X.dashboard,te=X.presentation,ne=X.audiences,re=o.a.useGetFetchAsync(),ae=(0,F.r)(null),ie=(0,H.u)(s.LZ.Dashboard),oe=ie.setFavourite,ce=ie.canFavourite,le=(m=(0,c.D)(S.g.AUDIENCE_FILTER,void 0,{storage:i.Z1.SessionStorage}),v=1,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(m,v)||function(e,t){if(e){if("string"==typeof e)return $(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?$(e,t):void 0}}(m,v)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0],se=(0,Y.E)(U.T.getAudienceParams(le)),ue=function(e){return+A.p[null==e?void 0:e.learningLevel]===A.p.Level_1?"VariantOne":"VariantTwo"}(te);(0,P.M)(_.CG.getDiscoverMetadata({content:te,phraseContext:{phraseHandler:J,titlePhrase:"pageTitle".concat(ue),descriptionPhrase:"pageDescription".concat(ue)},canonicalLink:G.f.getCanonicalLink(),allowIndexing:G.f.allowIndexing(),hrefLang:G.f.getStaticRouteHrefLang(null==te?void 0:te.learningLevel,se.discover)}));var de=(0,M.N)().showCalendar;return r.createElement("div",{className:"bg-white px-4"},r.createElement(j.T,null),r.createElement(T,{currentUser:g.data,dashboard:ee.data,widgetAppLinks:se,headerAppLinks:(0,Y.u)(),presentation:te,imageCdnUrl:y.data.imageCdnUrl,resourceThumbnailFallbackImageUrl:R.W.Fallbacks.RESOURCE_THUMBNAIL,getWidgetContentRequest:function(){for(var e=V.g.hasTwig(Q.data,g.data),t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return O._.discoverWidgetContent.apply(O._,[e].concat(n))},setFavourite:oe,audiences:ne.data,canFavourite:ce,updatePreferences:function(e,t,n,r){return q(this,void 0,void 0,z().mark((function t(){var a,i;return z().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=r.filter((function(e){return!e.hidden&&n.find((function(t){return t.id===e.id})).hidden})),i=r.filter((function(e){return!!e.hidden&&!n.find((function(t){return t.id===e.id})).hidden})),!(null==a?void 0:a.length)){t.next=5;break}return t.next=5,re(D.o.followSubjects(a.map((function(e){return e.id}))));case 5:if(!(null==i?void 0:i.length)){t.next=8;break}return t.next=8,re(D.o.unfollowSubjects(i.map((function(e){return e.id}))));case 8:return t.abrupt("return",re(O._.updateWidgetPreferences(e,r.map((function(e){return{id:e.id,index:e.index}})),g.data)));case 9:case"end":return t.stop()}}),t)})))},hasPermissions:E,hasLocalPermissions:L,onSubmitFeedback:E(f.C.CanSubmitFeedback)&&function(e){var t=re(B.n.sendDiscoverFooterFeedback(e,g.data,Z.data,te,ee.data,E(f.C.StudentExperience)));return l.k.logUserAction({feedbackType:e.type,content:e.content,presentationId:te.id,dashboardId:ee.data.id},{actionType:s.Vw.Submit,location:s.LZ.DiscoverFooter,entity:s.py.Feedback,workflowPhase:s.eu.Complete}),t},yearGroups:K.data,lazyLoad:!G.f.isBot(),showCalendar:de,jobTitle:null===(p=null===(d=null===(u=b.data)||void 0===u?void 0:u.userProfile)||void 0===d?void 0:d.metadata)||void 0===p?void 0:p.jobTitle,imageUrls:{onboardingAdminBackgroundFull:R.W.OnboardingV2.Widget.ADMIN_BACKGROUND_FULL,onboardingAdminBackground:R.W.OnboardingV2.Widget.ADMIN_BACKGROUND,onboardingTeacherBackground:R.W.OnboardingV2.Widget.TEACHER_BACKGROUND},settings:ae}))}},27051:(e,t,n)=>{n.d(t,{E:()=>f,u:()=>h});var r=n(75896),a=n(28400),i=n(17475),o=n(183),c=n(14070),l=n(97291),s=n(22490),u=n(67963),d=n(82431),p="classification-latest-releases";function f(e){return{classification:function(t){return{application:l.O.SUBJECT,action:c.e.Subjects.CLASSIFICATION,args:[null==t?void 0:t.id,a.m.slugify(null==t?void 0:t.name)],params:e||{}}},classificationTopics:function(){return{application:l.O.SUBJECT,action:c.e.Subjects.CLASSIFICATION_TOPICS,params:e||{}}},videoType:function(e,t){return s.W.getAppLink(e,Object.assign(Object.assign({},t),{context:o.Q.Widget}))},series:d.j.getSeriesAppLink,subText:function(e){return d.j.getSeriesAppLink(e.series)},playlist:function(e){return{application:l.O.PLAYLISTS,action:c.e.Playlists.PLAYLIST,args:[e.id,a.m.slugify(e.name)]}},latestReleases:function(){return{application:l.O.CONTENT_UPDATES,action:c.e.ContentUpdates.CONTENT_UPDATES}},allTopics:function(){return{application:l.O.SUBJECT,action:c.e.Subjects.CLASSIFICATION_ALL}},classificationLatestReleases:function(e){return e.id===p?{application:l.O.CONTENT_UPDATES,action:c.e.ContentUpdates.CONTENT_UPDATES}:{application:l.O.CONTENT_UPDATES,action:c.e.ContentUpdates.CLASSIFICATION_UPDATE,args:[e.id,a.m.slugify(e.name)]}},widgetVideoList:function(e,t){return{application:l.O.DASHBOARD,action:c.e.Dashboard.DASHBOARD,args:[e,a.m.slugify(t)]}},watchHistory:function(){return{application:l.O.WATCH_HISTORY,action:c.e.WatchHistory.HOME}},rating:function(e,t){return{application:l.O.SEARCH,action:c.e.Search.HOME,params:{moviesAndTv:!0,rating:i.S.getFrontendParamValue([r.m.first(t),e])}}},company:function(e){return{application:l.O.MOVIES_AND_TV,action:c.e.MoviesAndTv.COMPANY_DASHBOARD,args:[e.id,a.m.slugify(e.name)]}},discover:function(){return{application:l.O.DASHBOARD,action:c.e.Dashboard.HOME}},calendar:function(){return{application:l.O.CALENDAR,action:c.e.Calendar.CALENDAR}},calendarMonth:function(e,t){var n={application:l.O.CALENDAR,action:c.e.Calendar.CALENDAR_MONTH,args:[e.toLowerCase()]};return t&&(n.params={year:t}),n},onboardingStep:function(e){return(0,u.u)()[e]},onboardingAppLinks:function(){return(0,u.u)()}}}function h(){return{forYou:{application:l.O.DASHBOARD,action:c.e.Dashboard.HOME},whatsNew:{application:l.O.CONTENT_UPDATES,action:c.e.ContentUpdates.CONTENT_UPDATES},calendar:{application:l.O.CALENDAR,action:c.e.Calendar.CALENDAR}}}},73417:(e,t,n)=>{n.d(t,{T:()=>u});var r=n(32735),a=n(11607),i=n(83914),o=n(83345),c=n(87348),l=n(35223),s="shared.upgradeFeedbackBanner";function u(){var e=(0,c.Q)(),t=e.showFeedbackBanner,n=e.dismissFeedbackBanner;return t?r.createElement("div",{className:"alert bg-light-blue p-2 rounded text-info fw-semibold d-flex justify-content-between align-items-center"},r.createElement(o.x,{namespace:s,phrase:"message",options:{url:"https://www.clickvieweducation.com/en-au/blog/product/exchange-tv-new-look"}}),r.createElement(a.L,{onClick:n},r.createElement(i.x,{svgName:l.vn.Close,className:"ms-2 svg-container"}))):r.createElement(r.Fragment,null)}},52333:(e,t,n)=>{n.d(t,{n:()=>c});var r=n(99940),a=n(19808),i=n(86613);function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var c={sendDiscoverFooterFeedback:function(e,t,n,r,a,i){var o=e.content.split("\n").join("<br />");return l("Discover Footer Feedback","\n <b>Type:</b> ".concat("positive"===e.type?"Positive":"Negative","\n <br />\n <b>Location:</b> Discover Footer\n <br />\n <b>Presentation:</b> ").concat(r.description," (ID: ").concat(r.id,")\n <br />\n <b>Dashboard:</b> ").concat(a.name," (ID: ").concat(a.id,")\n <br />\n ").concat(s(t,n,i),"\n <br />\n <b>Feedback:</b>\n <br />\n ").concat(o,"\n "),t,["discover",i?"student":"staff"])},sendTopicFooterFeedback:function(e,t,n,r,a,i,o){var c=e.content.split("\n").join("<br />");return l("Topic Footer Feedback","\n <b>Type:</b> ".concat("positive"===e.type?"Positive":"Negative","\n <br />\n <b>Location:</b> Topic Footer\n <br />\n <b>Presentation:</b> ").concat(r.description," (ID: ").concat(r.id,")\n <br />\n <b>Classification:</b> ").concat(a.name," (ID: ").concat(a.id,")\n <br />\n <b>Dashboard:</b> ").concat(i.name," (ID: ").concat(i.id,")\n <br />\n ").concat(s(t,n,o),"\n <br />\n <b>Feedback:</b>\n <br />\n ").concat(c,"\n "),t,["topics",o?"student":"staff"])}};function l(e,t,n,c){var l,s=["new product","in product feedback"].concat(function(e){if(Array.isArray(e))return o(e)}(l=c)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(l)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}(l)||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.")}());n.role===i.i.Admin&&s.push("administrator");var u=function(e){switch(e){case a.b.AU:return"au";case a.b.NZ:return"nz";case a.b.UK:return"uk";case a.b.US:return"us"}}(n.instanceRegion);return u&&s.push(u),{url:"/api/productboard/notes",key:"productboard:feedback",data:{title:e,content:t,user:{email:n.emailVerified?n.email:""},tags:s},type:r.k.POST}}function s(e,t,n){return"\n <b>User:</b>\n <br />\n <li>ID: ".concat(e.id,"</li>\n <li>Username: ").concat(e.username,"</li>\n <li>Email: ").concat(e.email,"</li>\n <li>User Type / Role: ").concat(function(e,t){return t?"Learner":e.role===i.i.Admin?"Admin":"Staff"}(e,n),"</li>\n <li>Customer ID: ").concat(e.customerId,"</li>\n <li>CVC ID: ").concat(t.crmId,"</li>\n <li>Customer Name: ").concat(t.name,"</li>\n <li>Instance Region: ").concat(e.instanceRegion,"</li>\n <li>Content Region: ").concat(e.contentRegion,"</li>\n ")}},85369:(e,t,n)=>{n.d(t,{N:()=>y});var r=n(32735),a=n(35242),i=n(20354),o=n(27022),c=n(72639),l=n(31949),s=n(37802),u=n(10144),d=n(86698);function p(e){return p="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},p(e)}function f(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,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return h(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)?h(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 h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function m(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=p(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=p(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==p(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v=m(m(m(m(m(m({},o.t.AU,[c.p.Level_1]),o.t.US,[c.p.Level_1]),o.t.UK,[c.p.Level_1]),o.t.SCOT,[c.p.Level_1]),o.t.NZ,[]),o.t.GLOBAL,[]);function y(){var e,t=(0,s.r)(null),n=t.hasSpecialEventCalendar,o=t.isLoadingSettings,c=(0,d.y)({redirectOnError:!0}).activePresentation,p=i.a.useBasicFetch(l.N.currentUser()),h=v[null===(e=p.data)||void 0===e?void 0:e.contentRegion],m=u.i.getMappedPresentationLevel(null==c?void 0:c.learningLevel),y=!(null==h?void 0:h.find((function(e){return e.toString()===(null==m?void 0:m.toString())}))),g=!o&&!n,b=f(r.useState(!g&&!y),2),w=b[0],L=b[1],E=f(r.useState(o||!(null==c?void 0:c.id)),2),T=E[0],S=E[1];return r.useEffect((function(){g||y?L(!1):T||L(!0),S(o||!(null==c?void 0:c.id))}),[n,null==c?void 0:c.id,T]),a.h.isDevelopment?{showCalendar:!0,isLoading:!1}:{showCalendar:w,isLoading:T}}},87432:(e,t,n)=>{n.d(t,{Z:()=>r});const r={pillTabSelector:"Hdi6o",pillItem:"hUJx1"}}}]);
3
+ //# sourceMappingURL=6741-dadd4903a8-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/6741-dadd4903a8-lite.chunk.js","mappings":"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","sources":["file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/discover/components/header/discover-header.scss","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/discover/components/header/DiscoverHeader.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/discover/components/discover-dashboard/empty-state/DiscoverDashboardEmptyState.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/apps/discover/components/discover-dashboard/DiscoverDashboard.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/dashboard/views/dashboard/CuratedDiscoverView.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/apps/dashboard/views/dashboard/DiscoverViewUtils.ts","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/shared/components/upgrade-feedback-banner/UpgradeFeedbackBanner.tsx","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/shared/flight-requests/ProductboardRequests.ts","file:///Users/joshua.taylor/Projects/clickview/packages/projects/lite/src/shared/hooks/useShowCalendar.ts","file:///Users/joshua.taylor/Projects/clickview/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"pillTab\":\"bMJM0\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { DashboardUserType } from 'libs/shared/interfaces';\n\nimport styles from './discover-header.scss';\n\nconst namespace = 'discover.header';\n\nexport interface DiscoverHeaderAppLinks {\n forYou: Core.AppLink;\n whatsNew: Core.AppLink;\n calendar: Core.AppLink;\n}\n\ninterface DiscoverHeaderProps {\n type: DashboardUserType;\n hasStudentExperience?: boolean;\n appLinks?: DiscoverHeaderAppLinks;\n showCalendar: boolean;\n active: keyof DiscoverHeaderAppLinks;\n}\n\nexport function DiscoverHeader(props: DiscoverHeaderProps): JSX.Element {\n if (!props.type)\n return <></>;\n\n if (props.type === DashboardUserType.Learner || props.hasStudentExperience) {\n return (\n <div className='py-3'>\n <h1 className='h2 mb-0'>\n <Text namespace={namespace} phrase='heading' />\n </h1>\n </div>\n );\n }\n\n const tabs = [{\n name: LanguageService.getPhrase(namespace, 'forYou'),\n appLink: props.appLinks?.forYou,\n active: props.active === 'forYou',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'forYou'),\n url: AppLinkHelper.getHref(props.appLinks?.forYou)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: LanguageService.getPhrase(namespace, 'whatsNew'),\n appLink: props.appLinks?.whatsNew,\n active: props.active === 'whatsNew',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'whatsNew'),\n url: AppLinkHelper.getHref(props.appLinks?.whatsNew)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }];\n\n if (props.showCalendar) {\n tabs.push({\n name: LanguageService.getPhrase(namespace, 'calendar'),\n appLink: props.appLinks?.calendar,\n active: props.active === 'calendar',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'calendar'),\n url: AppLinkHelper.getHref(props.appLinks?.calendar)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n });\n }\n\n return (\n <div className='py-3 text-center'>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTab}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport styles from './pill-tab-selector.scss';\n\nexport interface PillTab {\n name: string;\n active: boolean;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n className?: string;\n}\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''}>\n <ul className={`list-unstyled d-inline-block m-0 ${styles.pillTabSelector}`}>\n {props.tabs.map(tab => {\n return (\n <li className={`p-0 ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}`} key={tab.name}>\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`cursor-pointer d-flex justify-content-center text-decoration-none text-reset px-2 ${styles.pillItem}`}\n >\n {tab.name}\n\n {typeof (tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={tab.count} />\n </div>\n )}\n </AppLink>\n ) : (\n <DivButton className={`${styles.pillItem} d-flex justify-content-center p-2`} onClick={() => onSelectTab(tab)}>\n {tab.name}\n\n {typeof (tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={tab.count} />\n </div>\n )}\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'subjects.discoverDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface DiscoverDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function DiscoverDashboardEmptyState(props: DiscoverDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={cvSvgLibrary.Plus}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { DiscoverHeader, DiscoverHeaderAppLinks } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { WidgetAppLinks, WidgetImageUrls } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { CanFavouriteFunc, CuratedDashboard, CuratedWidgetQueryParams, CurrentUser, DashboardTargetType, FavouriteFunc, Presentation, PresentationAudience, WidgetPreference, YearGroup } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { DiscoverDashboardEmptyState } from './empty-state/DiscoverDashboardEmptyState';\n\ninterface DiscoverDashboardProps {\n dashboard: CuratedDashboard;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate,\n presentation: Presentation\n ) => Flight.Request;\n imageCdnUrl: string;\n currentUser: CurrentUser;\n audiences: PresentationAudience[];\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n resourceThumbnailFallbackImageUrl: string;\n emptyImageUrl?: string;\n presentation: Presentation;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n widgetAppLinks?: WidgetAppLinks;\n headerAppLinks?: DiscoverHeaderAppLinks;\n scrollToWidgetId?: string;\n updatePreferences?: (\n widgetId: string,\n widgetTypeId: WidgetTypeId,\n oldPreferences: WidgetPreference[],\n newPreferences: WidgetPreference[]\n ) => Promise<void>;\n onSubmitFeedback?: (feedback: DashboardFeedbackData) => Promise<void>;\n isReadonly?: boolean;\n yearGroups?: YearGroup[];\n lazyLoad?: boolean;\n showCalendar: boolean;\n jobTitle: JobTitles;\n imageUrls: WidgetImageUrls\n settings: SettingsHash;\n}\n\nexport function DiscoverDashboard(props: DiscoverDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template, props.presentation);\n }\n\n const showEmptyState = props.isReadonly && !widgets?.length;\n\n return (\n <>\n <DiscoverHeader\n type={props.dashboard?.userType}\n appLinks={props.headerAppLinks}\n hasStudentExperience={props.hasPermissions(PermissionName.StudentExperience)}\n showCalendar={props.showCalendar}\n active='forYou'\n />\n {widgets.map((widget, idx) => {\n return (\n <WidgetContainerView\n key={widget.id}\n id={widget.id}\n imageCdnUrl={props.imageCdnUrl}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n presentation={props.presentation}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n resourceThumbnailFallbackImageUrl={props.resourceThumbnailFallbackImageUrl}\n preferences={widget.preferences}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n onSubmitFeedback={props.onSubmitFeedback}\n updatePreferences={props.updatePreferences}\n yearGroups={props.yearGroups}\n lazyLoad={props.lazyLoad}\n dashboardTarget={DashboardTargetType.Discover}\n widgetIndex={idx}\n jobTitle={props.jobTitle}\n isPreviewing={props.isReadonly}\n imageUrls={props.imageUrls}\n settings={props.settings}\n />\n );\n })}\n\n {showEmptyState && (\n <DiscoverDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { DiscoverDashboard } from 'libs/shared/apps/discover/components/discover-dashboard/DiscoverDashboard';\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser, Customer, DashboardTargetType, Library, Presentation, PresentationAudience, User, WidgetPreference, YearGroup } from 'libs/shared/interfaces';\nimport { Config } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { UpgradeFeedbackBanner } from 'shared/components/upgrade-feedback-banner/UpgradeFeedbackBanner';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { ProductboardRequests } from 'shared/flight-requests/ProductboardRequests';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { useShowCalendar } from 'shared/hooks/useShowCalendar';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { LibraryHelper } from 'apps/libraries/utils/LibraryHelper';\n\nimport { getDiscoverHeaderAppLinks, getDiscoverWidgetAppLinks } from './DiscoverViewUtils';\n\nconst namespace = 'dashboard.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getPhraseVariant(presentation: Presentation): string {\n const learningLevel = PresentationLearningLevel[presentation?.learningLevel];\n\n return +learningLevel === PresentationLearningLevel.Level_1\n ? 'VariantOne'\n : 'VariantTwo';\n}\n\ninterface CuratedDiscoverViewProps {\n presentationSlug?: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function CuratedDiscoverView(props: CuratedDiscoverViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const user = Flight.useBasicFetch<User>(currentUser.data?.isAuthenticated && UserRequests.user(currentUser.data.id));\n const { hasLocalPermissions, hasPermissions } = usePermissions();\n\n const customer = Flight.useBasicFetch<Customer>(\n hasLocalPermissions(LocalPermissionName.ManageDiscoverPreferences) &&\n currentUser.data &&\n CustomerRequests.customer(currentUser.data.customerId)\n );\n\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated\n && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const libraries = Flight.useBasicFetch<Library[]>(\n currentUser.data?.isAuthenticated &&\n LibraryRequests.libraries()\n );\n\n const {\n dashboard,\n presentation,\n audiences\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.Discover,\n queryParams: props.queryParams,\n presentationSlug: props.presentationSlug\n });\n\n const fetchAsync = Flight.useGetFetchAsync();\n const settings = useSettings(null);\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.Dashboard);\n\n const [activeAudiences] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n const widgetAppLinks = getDiscoverWidgetAppLinks(AudienceHelper.getAudienceParams(activeAudiences));\n\n const phraseVariant = getPhraseVariant(presentation);\n\n useSetPageMetadata(PageMetadataHelper.getDiscoverMetadata({\n content: presentation,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: `pageTitle${phraseVariant}`,\n descriptionPhrase: `pageDescription${phraseVariant}`\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getStaticRouteHrefLang(\n presentation?.learningLevel,\n widgetAppLinks.discover\n )\n }));\n\n function onSubmitFeedback(feedback: DashboardFeedbackData): Promise<void> {\n const promise = fetchAsync<void>(ProductboardRequests.sendDiscoverFooterFeedback(\n feedback,\n currentUser.data,\n customer.data,\n presentation,\n dashboard.data,\n hasPermissions(PermissionName.StudentExperience)\n ));\n\n AnalyticsHelper.logUserAction({\n feedbackType: feedback.type,\n content: feedback.content,\n presentationId: presentation.id,\n dashboardId: dashboard.data.id\n }, {\n actionType: UserAction.Submit,\n location: LocationContext.DiscoverFooter,\n entity: EntityType.Feedback,\n workflowPhase: WorkflowPhase.Complete\n });\n\n return promise;\n }\n\n async function updateWidgetPreferences(\n widgetId: string,\n widgetTypeId: WidgetTypeId,\n oldPreferences: WidgetPreference[],\n newPreferences: WidgetPreference[]\n ): Promise<void> {\n const addedSubjects = newPreferences.filter(p => {\n if (p.hidden)\n return false;\n\n const oldPreference = oldPreferences.find(o => o.id === p.id);\n\n return oldPreference.hidden;\n });\n const removedSubjects = newPreferences.filter(p => {\n if (!p.hidden)\n return false;\n \n const oldPreference = oldPreferences.find(o => o.id === p.id);\n\n return !oldPreference.hidden;\n });\n\n if (addedSubjects?.length)\n await fetchAsync<void>(PreferenceRequests.followSubjects(addedSubjects.map(s => s.id)));\n\n if (removedSubjects?.length)\n await fetchAsync<void>(PreferenceRequests.unfollowSubjects(removedSubjects.map(s => s.id)));\n\n return fetchAsync<void>(DashboardRequests.updateWidgetPreferences(\n widgetId,\n newPreferences.map(p => ({\n id: p.id,\n index: p.index\n })),\n currentUser.data\n ));\n }\n const { showCalendar } = useShowCalendar();\n\n return (\n <div className='bg-white px-4'>\n <UpgradeFeedbackBanner />\n <DiscoverDashboard\n currentUser={currentUser.data}\n dashboard={dashboard.data}\n widgetAppLinks={widgetAppLinks}\n headerAppLinks={getDiscoverHeaderAppLinks()}\n presentation={presentation}\n imageCdnUrl={config.data.imageCdnUrl}\n resourceThumbnailFallbackImageUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n getWidgetContentRequest={(\n ...args: Parameters<typeof DashboardRequests.dashboardWidgetContent>\n ) => {\n const hasTwig = LibraryHelper.hasTwig(libraries.data, currentUser.data);\n\n return DashboardRequests.discoverWidgetContent(hasTwig, ...args);\n }}\n setFavourite={setFavourite}\n audiences={audiences.data}\n canFavourite={canFavourite}\n updatePreferences={updateWidgetPreferences}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n onSubmitFeedback={\n hasPermissions(PermissionName.CanSubmitFeedback) &&\n onSubmitFeedback\n }\n yearGroups={yearGroups.data}\n lazyLoad={!SeoHelper.isBot()}\n showCalendar={showCalendar}\n jobTitle={user.data?.userProfile?.metadata?.jobTitle}\n imageUrls={{\n onboardingAdminBackgroundFull: ImageUrls.OnboardingV2.Widget.ADMIN_BACKGROUND_FULL,\n onboardingAdminBackground: ImageUrls.OnboardingV2.Widget.ADMIN_BACKGROUND,\n onboardingTeacherBackground: ImageUrls.OnboardingV2.Widget.TEACHER_BACKGROUND\n }}\n settings={settings}\n />\n </div>\n );\n}","import { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { DiscoverHeaderAppLinks } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { OnboardingScreenId } from 'libs/shared/apps/onboarding/interfaces/OnboardingScreenId';\nimport { RatingFilterHelper } from 'libs/shared/apps/search/utils/RatingFilterHelper';\nimport { WidgetAppLinks } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { Classification, Company, Playlist, Rating, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { getOnboardingAppLinks } from 'apps/onboarding/utils/OnboardingAppLinkHelper';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst CLASSIFICATION_LATEST_RELEASES = 'classification-latest-releases';\n\nexport function getDiscoverWidgetAppLinks(\n params: HashObject\n): WidgetAppLinks {\n return {\n classification: (classification?: Classification) => {\n return {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION,\n args: [ classification?.id, TextHelper.slugify(classification?.name) ],\n params: params || {}\n };\n },\n\n classificationTopics: () => ({\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_TOPICS,\n params: params || {}\n }),\n\n videoType: (video: VideoTypes, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n context: RelatedVideosContext.Widget\n })\n ),\n\n series: SeriesAppLinkHelper.getSeriesAppLink,\n\n subText: (video: Video) => SeriesAppLinkHelper.getSeriesAppLink(video.series),\n\n playlist: (playlist: Playlist) => ({\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ playlist.id, TextHelper.slugify(playlist.name) ]\n }),\n \n latestReleases: () => ({\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n }),\n\n allTopics: () => ({\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_ALL\n }),\n\n classificationLatestReleases: (classification: Classification) => {\n if (classification.id === CLASSIFICATION_LATEST_RELEASES)\n return {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n };\n\n return {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CLASSIFICATION_UPDATE,\n args: [ classification.id, TextHelper.slugify(classification.name) ]\n };\n },\n\n widgetVideoList: (widgetId: string, widgetName: string) => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.DASHBOARD,\n args: [ widgetId, TextHelper.slugify(widgetName) ]\n }),\n\n watchHistory: () => ({\n application: AppChannels.WATCH_HISTORY,\n action: Actions.WatchHistory.HOME\n }),\n\n rating: (rating: Rating, ratings: Rating[]) => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n moviesAndTv: true,\n rating: RatingFilterHelper.getFrontendParamValue([ ArrayHelper.first(ratings), rating ])\n }\n }),\n\n company: (company: Company) => ({\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.COMPANY_DASHBOARD,\n args: [ company.id, TextHelper.slugify(company.name) ]\n }),\n\n discover: () => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }),\n\n calendar: () => ({\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR\n }),\n\n calendarMonth: (month: string, year?: string) => {\n const appLink: Core.AppLink = {\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR_MONTH,\n args: [month.toLowerCase()]\n };\n\n if (year)\n appLink.params = { year };\n\n return appLink;\n },\n\n onboardingStep: (step: OnboardingScreenId) => {\n const appLinks = getOnboardingAppLinks();\n return appLinks[step];\n },\n\n onboardingAppLinks: () => {\n return getOnboardingAppLinks();\n }\n };\n}\n\nexport function getDiscoverHeaderAppLinks(): DiscoverHeaderAppLinks {\n return {\n forYou: {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n },\n whatsNew: {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n },\n calendar: {\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR\n }\n };\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.upgradeFeedbackBanner';\n\nexport function UpgradeFeedbackBanner(): JSX.Element {\n const { showFeedbackBanner, dismissFeedbackBanner } = useLiteUpgrade();\n\n if (!showFeedbackBanner)\n return <></>;\n\n return (\n <div className='alert bg-light-blue p-2 rounded text-info fw-semibold d-flex justify-content-between align-items-center'>\n <Text\n namespace={namespace}\n phrase='message'\n options={{ url: 'https://www.clickvieweducation.com/en-au/blog/product/exchange-tv-new-look' }}\n />\n <DivButton\n onClick={dismissFeedbackBanner}\n >\n <SvgContainer\n svgName={cvSvgLibrary.Close}\n className='ms-2 svg-container'\n />\n </DivButton>\n </div>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { Classification, CuratedDashboard, CurrentUser, Customer, Presentation } from 'libs/shared/interfaces';\n\nexport const ProductboardRequests = {\n sendDiscoverFooterFeedback(\n feedback: DashboardFeedbackData,\n currentUser: CurrentUser,\n customer: Customer,\n presentation: Presentation,\n dashboard: CuratedDashboard,\n hasStudentExperience: boolean\n ): Flight.Request {\n const userContent = feedback.content.split('\\n').join('<br />');\n\n const content = `\n <b>Type:</b> ${feedback.type === 'positive' ? 'Positive' : 'Negative'}\n <br />\n <b>Location:</b> Discover Footer\n <br />\n <b>Presentation:</b> ${presentation.description} (ID: ${presentation.id})\n <br />\n <b>Dashboard:</b> ${dashboard.name} (ID: ${dashboard.id})\n <br />\n ${getUserInfo(currentUser, customer, hasStudentExperience)}\n <br />\n <b>Feedback:</b>\n <br />\n ${userContent}\n `;\n\n const extraTags = [ 'discover', hasStudentExperience ? 'student' : 'staff' ];\n\n return getRequest('Discover Footer Feedback', content, currentUser, extraTags);\n },\n\n sendTopicFooterFeedback(\n feedback: DashboardFeedbackData,\n currentUser: CurrentUser,\n customer: Customer,\n presentation: Presentation,\n classification: Classification,\n dashboard: CuratedDashboard,\n hasStudentExperience: boolean\n ): Flight.Request {\n const userContent = feedback.content.split('\\n').join('<br />');\n\n const content = `\n <b>Type:</b> ${feedback.type === 'positive' ? 'Positive' : 'Negative'}\n <br />\n <b>Location:</b> Topic Footer\n <br />\n <b>Presentation:</b> ${presentation.description} (ID: ${presentation.id})\n <br />\n <b>Classification:</b> ${classification.name} (ID: ${classification.id})\n <br />\n <b>Dashboard:</b> ${dashboard.name} (ID: ${dashboard.id})\n <br />\n ${getUserInfo(currentUser, customer, hasStudentExperience)}\n <br />\n <b>Feedback:</b>\n <br />\n ${userContent}\n `;\n\n const extraTags = [ 'topics', hasStudentExperience ? 'student' : 'staff' ];\n\n return getRequest('Topic Footer Feedback', content, currentUser, extraTags);\n }\n};\n\nfunction getRequest(\n title: string,\n content: string,\n currentUser: CurrentUser,\n extraTags: string[]\n): Flight.Request {\n const tags = [\n 'new product',\n 'in product feedback',\n ...extraTags\n ];\n\n if (currentUser.role === UserRole.Admin)\n tags.push('administrator');\n\n const regionTag = mapInstanceRegionToTag(currentUser.instanceRegion);\n\n if (regionTag)\n tags.push(regionTag);\n\n return {\n url: '/api/productboard/notes',\n key: 'productboard:feedback',\n data: {\n title,\n content,\n user: {\n email: currentUser.emailVerified ? currentUser.email : ''\n },\n tags\n },\n type: HttpVerbs.POST\n };\n}\n\nfunction mapInstanceRegionToTag(instanceRegion: InstanceRegion): string {\n switch (instanceRegion) {\n case InstanceRegion.AU:\n return 'au';\n case InstanceRegion.NZ:\n return 'nz';\n case InstanceRegion.UK:\n return 'uk';\n case InstanceRegion.US:\n return 'us';\n }\n}\n\nfunction getUserInfo(currentUser: CurrentUser, customer: Customer, hasStudentExperience: boolean): string {\n return `\n <b>User:</b>\n <br />\n <li>ID: ${currentUser.id}</li>\n <li>Username: ${currentUser.username}</li>\n <li>Email: ${currentUser.email}</li>\n <li>User Type / Role: ${getRole(currentUser, hasStudentExperience)}</li>\n <li>Customer ID: ${currentUser.customerId}</li>\n <li>CVC ID: ${customer.crmId}</li>\n <li>Customer Name: ${customer.name}</li>\n <li>Instance Region: ${currentUser.instanceRegion}</li>\n <li>Content Region: ${currentUser.contentRegion}</li>\n `;\n}\n\nfunction getRole(currentUser: CurrentUser, hasStudentExperience: boolean): string {\n if (hasStudentExperience)\n return 'Learner';\n\n return currentUser.role === UserRole.Admin ? 'Admin' : 'Staff';\n}","import React from 'react';\n\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nconst ALLOWED_LEARNING_LEVELS_BY_REGION: Record<ContentRegion, PresentationLearningLevel[]> = {\n [ContentRegion.AU]: [\n // AU Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.US]: [\n // US Elementary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.UK]: [\n // UK Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.SCOT]: [\n // Scotland Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.NZ]: [],\n [ContentRegion.GLOBAL]: []\n};\n\nexport function useShowCalendar() {\n const { hasSpecialEventCalendar, isLoadingSettings } = useSettings(null);\n\n const {\n activePresentation\n } = usePresentation({ redirectOnError: true });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const allowedLearningLevels = ALLOWED_LEARNING_LEVELS_BY_REGION[currentUser.data?.contentRegion];\n const learningLevel = TopicsHelper.getMappedPresentationLevel(activePresentation?.learningLevel);\n const learningLevelCantAccess = !allowedLearningLevels?.find(l => {\n return l.toString() === (learningLevel as PresentationLearningLevel)?.toString();\n });\n\n const noSetting = !isLoadingSettings && !hasSpecialEventCalendar;\n\n const [ showCalendar, setShowCalendar ] = React.useState<boolean>(!noSetting && !learningLevelCantAccess);\n\n const [ isLoading, setIsLoading ] = React.useState(isLoadingSettings || !activePresentation?.id);\n\n React.useEffect(() => {\n if (noSetting || learningLevelCantAccess) {\n setShowCalendar(false);\n } else if (!isLoading) {\n setShowCalendar(true);\n }\n setIsLoading(isLoadingSettings || !activePresentation?.id);\n }, [ hasSpecialEventCalendar, activePresentation?.id, isLoading ]);\n\n if (EnvironmentVariables.isDevelopment)\n return { showCalendar: true, isLoading: false };\n\n return { showCalendar, isLoading };\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"pillItem\":\"hUJx1\"};"],"names":["namespace","DiscoverHeader","props","type","hasStudentExperience","className","Text","phrase","tabs","name","LanguageService","appLink","appLinks","forYou","active","analyticsData","url","analyticsOptions","actionType","entity","location","whatsNew","showCalendar","push","calendar","PillTabSelector","map","tab","key","count","data","onClick","onSelect","onSelectTab","getPhrase","DiscoverDashboardEmptyState","isArchived","dashboard","status","EmptyState","src","imageUrl","altText","Tooltip","title","spanHack","text","addWidgetApplink","icon","disabled","DiscoverDashboard","widgets","ArrayHelper","getWidgetContentRequest","id","widgetTypeId","template","params","presentation","showEmptyState","isReadonly","length","userType","headerAppLinks","hasPermissions","PermissionName","widget","idx","WidgetContainerView","imageCdnUrl","getContentRequest","audiences","description","templateId","metadata","setFavourite","canFavourite","resourceThumbnailFallbackImageUrl","preferences","widgetAppLinks","isScrollToTargetWidget","scrollToWidgetId","widgetId","hasLocalPermissions","onSubmitFeedback","updatePreferences","yearGroups","lazyLoad","dashboardTarget","widgetIndex","jobTitle","isPreviewing","imageUrls","settings","emptyImageUrl","widgetWizard","CuratedDiscoverView","config","ConfigRequests","currentUser","UserRequests","user","isAuthenticated","usePermissions","customer","CustomerRequests","customerId","libraries","LibraryRequests","targetType","queryParams","presentationSlug","fetchAsync","useSettings","useLiteFavourites","u","activeAudiences","SharedViewModelKeys","undefined","storage","AudienceHelper","phraseVariant","PresentationLearningLevel","learningLevel","getPhraseVariant","useSetPageMetadata","PageMetadataHelper","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","allowIndexing","hrefLang","discover","useShowCalendar","UpgradeFeedbackBanner","ImageUrls","hasTwig","LibraryHelper","args","DashboardRequests","oldPreferences","newPreferences","addedSubjects","filter","p","hidden","find","o","removedSubjects","PreferenceRequests","s","index","feedback","promise","ProductboardRequests","AnalyticsHelper","feedbackType","presentationId","dashboardId","workflowPhase","userProfile","onboardingAdminBackgroundFull","onboardingAdminBackground","onboardingTeacherBackground","CLASSIFICATION_LATEST_RELEASES","getDiscoverWidgetAppLinks","classification","application","action","classificationTopics","videoType","video","opts","context","series","subText","playlist","latestReleases","allTopics","classificationLatestReleases","widgetVideoList","widgetName","watchHistory","rating","ratings","moviesAndTv","company","calendarMonth","month","year","toLowerCase","onboardingStep","step","onboardingAppLinks","getDiscoverHeaderAppLinks","showFeedbackBanner","dismissFeedbackBanner","options","svgName","sendDiscoverFooterFeedback","userContent","split","join","getRequest","getUserInfo","sendTopicFooterFeedback","extraTags","tags","role","regionTag","instanceRegion","mapInstanceRegionToTag","email","emailVerified","username","getRole","crmId","contentRegion","ALLOWED_LEARNING_LEVELS_BY_REGION","hasSpecialEventCalendar","isLoadingSettings","activePresentation","redirectOnError","allowedLearningLevels","learningLevelCantAccess","l","toString","noSetting","setShowCalendar","isLoading","setIsLoading"],"sourceRoot":""}