@clickview/lite 0.66.0-rc.1 → 0.66.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/scripts/1958-46fa15e385-lite.chunk.js +2 -0
- package/dist/scripts/1958-46fa15e385-lite.chunk.js.map +1 -0
- package/dist/scripts/301-eccaa4c313-lite.chunk.js +2 -0
- package/dist/scripts/301-eccaa4c313-lite.chunk.js.map +1 -0
- package/dist/scripts/4359-e928b3edc9-lite.chunk.js +2 -0
- package/dist/scripts/4359-e928b3edc9-lite.chunk.js.map +1 -0
- package/dist/scripts/6965-46edd86c90-lite.chunk.js +2 -0
- package/dist/scripts/6965-46edd86c90-lite.chunk.js.map +1 -0
- package/dist/scripts/9182-95605d2b04-lite.chunk.js +2 -0
- package/dist/scripts/9182-95605d2b04-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-4e5c39f61a.min.js → bundle-f772739f5d.min.js} +3 -3
- package/dist/scripts/{bundle-4e5c39f61a.min.js.map → bundle-f772739f5d.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1958-0883952491-lite.chunk.js +0 -2
- package/dist/scripts/1958-0883952491-lite.chunk.js.map +0 -1
- package/dist/scripts/301-089f4b9e0c-lite.chunk.js +0 -2
- package/dist/scripts/301-089f4b9e0c-lite.chunk.js.map +0 -1
- package/dist/scripts/4359-c35e271cf2-lite.chunk.js +0 -2
- package/dist/scripts/4359-c35e271cf2-lite.chunk.js.map +0 -1
- package/dist/scripts/6965-3ae3c81898-lite.chunk.js +0 -2
- package/dist/scripts/6965-3ae3c81898-lite.chunk.js.map +0 -1
- package/dist/scripts/9182-db74c44406-lite.chunk.js +0 -2
- package/dist/scripts/9182-db74c44406-lite.chunk.js.map +0 -1
- /package/dist/scripts/{bundle-4e5c39f61a.min.js.LICENSE.txt → bundle-f772739f5d.min.js.LICENSE.txt} +0 -0
package/dist/bundles.json
CHANGED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1958],{3278:(e,t,n)=>{n.d(t,{z:()=>p});var a=n(32735),r=n(39202),i=n(23481),o=n(65858),l=n(38502),c=n(83345),s=n(40424);const u={pillTab:"bMJM0"};var f="discover.header";function p(e){var t,n,p,d,m,v;if(!e.type)return a.createElement(a.Fragment,null);if(e.type===s.Yv.Learner||e.hasStudentExperience)return a.createElement("div",{className:"py-3"},a.createElement("h1",{className:"h2 mb-0"},a.createElement(c.x,{namespace:f,phrase:"heading"})));var y=[{name:i.T.getPhrase(f,"forYou"),appLink:null===(t=e.appLinks)||void 0===t?void 0:t.forYou,active:"forYou"===e.active,analyticsData:{name:i.T.getPhrase(f,"forYou"),url:r.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(f,"whatsNew"),appLink:null===(p=e.appLinks)||void 0===p?void 0:p.whatsNew,active:"whatsNew"===e.active,analyticsData:{name:i.T.getPhrase(f,"whatsNew"),url:r.C$.getHref(null===(d=e.appLinks)||void 0===d?void 0:d.whatsNew)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}}];return e.showCalendar&&y.push({name:i.T.getPhrase(f,"calendar"),appLink:null===(m=e.appLinks)||void 0===m?void 0:m.calendar,active:"calendar"===e.active,analyticsData:{name:i.T.getPhrase(f,"calendar"),url:r.C$.getHref(null===(v=e.appLinks)||void 0===v?void 0:v.calendar)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}}),a.createElement("div",{className:"py-3 text-center mx-n3"},a.createElement(l.r,{tabs:y,className:u.pillTab}))}},38502:(e,t,n)=>{n.d(t,{r:()=>f});var a=n(32735),r=n(49985),i=n(36848),o=n(18559),l=n(11607),c=n(83914),s=n(87432);function u(e){return a.createElement(a.Fragment,null,!!e.tab.svgName&&a.createElement("div",{className:e.tab.name?"pe-1":""},a.createElement(c.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&a.createElement("div",{className:"ps-2"},a.createElement(o.C,{type:o.g.Count,data:e.tab.count})))}function f(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},a.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(s.Z.pillTabSelector,"\n ").concat(e.borderRadius?s.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return a.createElement("li",{className:"\n p-0 ".concat(s.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?s.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?a.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(s.Z.tabLink,"\n ")},a.createElement(u,{tab:e})):a.createElement(l.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(s.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},a.createElement(u,{tab:e})))}))))}f.defaultProps={borderRadius:"lg"}},39902:(e,t,n)=>{n.d(t,{f:()=>o});var a=n(20354),r=n(75896);function i(e){return i="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},i(e)}function o(e,t){var n=r.m.chunk(e,25).map((function(e){return t(r.m.uniq(e))})),o=a.a.useBasicFetchAll(n);return{items:o.data.length?r.m.flatten(o.data).reduce((function(e,t){return Object.assign(Object.assign({},e),(n={},a=t.id,r=t,(a=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(a))in n?Object.defineProperty(n,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[a]=r,n));var n,a,r}),{}):null,isFetching:o.isFetching}}},38972:(e,t,n)=>{n.d(t,{a:()=>v});var a=n(32735),r=n(36848),i=n(83345),o=n(80247),l=n(57900),c=n(2948),s=n(10874),u=n(38143),f=n(35223);const p={banner:"B7jhq"};function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var m="contentUpdates.classificationBanner";function v(e){var t,n,v=e.classification,y=e.backgroundUrl,b=e.followed,h=e.follow,g=e.showFollowSpinner,w=(t=(0,c.D)(u.g.AUDIENCE_FILTER,void 0,{storage:l.Z1.SessionStorage}),n=1,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 a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return d(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)?d(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.")}())[0];return a.createElement("div",{className:"banner mb-2 d-flex justify-content-between align-items-center rounded ".concat(p.banner),style:{backgroundImage:"url('".concat(y,"')")}},a.createElement(r.F,{className:"text-white text-shadow",appLink:e.getClassificationAppLink(v,w)},a.createElement("h2",{className:"h3 mb-0"},v.name)),e.canFollow&&a.createElement(s.h,{className:"btn follow-btn ".concat(b?"btn-outline-dark":"btn-dark"),svgName:b?f.vn.BellFilled:f.vn.Bell,onClick:function(){return h(v.id,v.name,!b)}},g?a.createElement(o.Z,{as:"span",animation:"border",role:"status",size:"sm"}):a.createElement(i.x,{namespace:m,phrase:b?"following":"follow"})))}},75772:(e,t,n)=>{n.r(t),n.d(t,{ContentUpdatesView:()=>te});var a=n(32735),r=n(70680),i=n(23481),o=n(20354),l=n(110),c=n(49985),s=n(65858),u=n(54644),f=n(3278),p=n(36848),d=n(83345),m=n(51365),v=n(16714),y=n(39151),b=n(1666),h=n(61699),g=n(31949),w=n(69883),E=n(39902),S=n(22902),k=n(79612),L=n(37802),N=n(40424),A=n(76753),C=n(14070),O=n(97291),T=n(51855),j=n(10671),F=n(27638),P=n(86698),x=n(44110),U=n(85369),I=n(97816),M=n(33192),D=n(13231),B=n(54610),V=n(67453),R=n(10741),G=n(22490),Z=n(38972),Y=n(82431),_="contentUpdates.contentUpdatesView";function $(e){var t=e.classification,n=e.videos,r=e.imageCdnUrl,i=e.showMore,o=e.followed,l=(0,S.T)().hasPermissions;if(!t)return a.createElement(a.Fragment,null);var c=V.j.createBannerUrl(t.banner,{fallbackBaseUrl:r,fallbackCategoryName:t.name,type:B.__.Banners},{size:B.h2.Medium,resizeType:B.Nq.Cover});return a.createElement("div",{className:"mb-3"},a.createElement(Z.a,{classification:t,backgroundUrl:c,getClassificationAppLink:e.appLinks.getClassificationAppLink,followed:o,follow:e.follow,canFollow:e.canFollow,showFollowSpinner:e.showFollowSpinner}),a.createElement(D.E4,{videos:n,yearGroups:e.yearGroups,getVideoAppLink:e.appLinks.getVideoAppLink,getSubTextAppLink:function(e){return Y.j.getSeriesAppLink(e.series)},setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,hasPermissions:l,getPreviewQuestionsAppLink:function(e){return R.j.getPreviewQuestionsAppLink(e)},isPlugin:e.isPlugin,getClassroomGuideAppLink:G.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:G.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:G.W.getResourceGuidanceAppLink,showNewVideoIndicator:e.showNewVideoIndicator}),i&&a.createElement("div",{className:"show-more"},a.createElement(p.F,{className:"info-link",appLink:e.appLinks.getClassificationUpdateAppLink(t)},a.createElement(d.x,{namespace:_,phrase:"showMore",options:{classificationName:t.name}}))))}var z=n(74696);const H={partialBanner:"bxaA6"};function W(){return a.createElement(a.Fragment,null,Array(4).fill(null).map((function(e,t){return a.createElement("div",{key:t,className:"mb-3"},a.createElement("div",{className:"partial-loading-background mb-2 ".concat(H.partialBanner)}),a.createElement(z.S,null))})))}function q(e){return q="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},q(e)}function J(e,t,n){return(t=function(e){var t=function(e){if("object"!=q(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==q(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var K=5,X="contentUpdates.contentUpdatesView",ee=i.T.encloseNamespace(X);function te(e){var t,n,i,D,B,V,R,G=(V=a.useState({}),R=2,function(e){if(Array.isArray(e))return e}(V)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(V,R)||function(e,t){if(e){if("string"==typeof e)return Q(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)?Q(e,t):void 0}}(V,R)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),Z=G[0],Y=G[1],_=(0,r.I0)(),z=(0,w.Z)(),H=(0,T.G)().isPlugin,q=(0,S.T)().hasPermissions,te=(0,L.r)(null).hasTopicDirectories,ne=q(v.C.FollowSubjects),ae=new Date,re=l.O.format(l.O.endOf(l.O.subtract(ae,1,"year"),"day"),"YYYY-MM-DD"),ie=l.O.format(l.O.endOf(ae,"day"),"YYYY-MM-DD"),oe=o.a.useBasicFetch(y.L.config()),le=o.a.useBasicFetch(g.N.currentUser()),ce=o.a.useBasicFetch((null===(t=le.data)||void 0===t?void 0:t.isAuthenticated)&&b.h.yearGroups(le.data.customerId)),se=(0,P.y)({redirectOnError:!0}).activePresentation;(0,k.M)(A.CG.getDefaultMetadata({title:null==se?void 0:se.name,phraseContext:{phraseHandler:ee,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:M.f.getCanonicalLink(),allowIndexing:M.f.allowIndexing(),hrefLang:M.f.getStaticRouteHrefLang(null==se?void 0:se.learningLevel,(function(){return{application:O.O.CONTENT_UPDATES,action:C.e.ContentUpdates.CONTENT_UPDATES}}))}));var ue=u.v.getContentUpdates(null==se?void 0:se.id,re,ie),fe=o.a.useBasicFetch(se&&ue),pe=o.a.useBasicFetch(ne&&h.o.mySubjectPreferences()),de=(0,x.i)(),me=[],ve=[];fe.data&&fe.data.forEach((function(e){me.push(e.id),ve=ve.concat(e.videos)}));var ye=(0,E.f)(me,(function(e){return u.v.getClassifications(e)})).items,be=(0,j._)({location:j.i.VideoItem});(0,I.V)(ve,{flightNamespace:null===(n=ue.normalizeOptions)||void 0===n?void 0:n.namespace});var he=(0,F.u)(s.LZ.VideoThumbnail,null===(i=ue.normalizeOptions)||void 0===i?void 0:i.namespace),ge=he.setFavourite,we=he.canFavourite;function Ee(e,t,n){Y((function(t){return Object.assign(Object.assign({},t),J({},e,!0))}));var a=function(){var a;Y((function(t){return Object.assign(Object.assign({},t),J({},e,!1))})),c.k.logUserAction({id:e,name:t},{location:s.LZ.ContentUpdatesClassificationBanner,workflowPhase:s.eu.Complete,descriptor:n?s.DL.On:s.DL.Off,actionType:s.Vw.Follow,entity:s.py.Classification}),z.success(ee(n?"followed":"unfollowed",{classification:null===(a=ye[e])||void 0===a?void 0:a.name,escapeText:!0}))},r=function(){Y((function(t){return Object.assign(Object.assign({},t),J({},e,!1))})),z.error(ee("error"))},i=n?h.o.followSubjects([e],a,r):h.o.unfollowSubjects([e],a,r);o.a.fetch(_,i)}var Se=(0,U.N)(),ke=Se.showCalendar,Le=Se.isLoading,Ne=!(!(fe.hasCompleted&&oe.hasCompleted&&de.hasCompleted)||ne&&!pe.hasCompleted||!ye||Le),Ae=function(e,t){return e&&t?e.map((function(e){return{showMore:e.videos.length>K,classification:t[e.id],videos:e.videos.slice(0,K).map((function(e){return e.classification=t[e.id],e})).filter((function(e){return e}))}})).filter((function(e){return e.classification})):null}(fe.data,ye),Ce=null!==(B=null===(D=pe.data)||void 0===D?void 0:D.map((function(e){return e.id})))&&void 0!==B?B:[],Oe=q(v.C.ManageSubjectPreferences),Te=q(v.C.ManageVideoAccess);return a.createElement(m.M.Provider,{value:be},a.createElement("div",{className:"bg-white px-3"},!Le&&a.createElement(f.z,{type:N.Yv.Staff,appLinks:{forYou:e.appLinks.dashboardAppLink,whatsNew:e.appLinks.whatsNewAppLink,calendar:e.appLinks.calendarAppLink},showCalendar:ke,active:"whatsNew"}),a.createElement("h1",null,a.createElement(d.x,{namespace:X,phrase:"heading"})),(Oe||Te)&&a.createElement("p",null,Oe&&a.createElement(a.Fragment,null,a.createElement(d.x,{namespace:X,phrase:"onlyRelevant"})," ",a.createElement(p.F,{className:"info-link",appLink:{application:O.O.SETTINGS,action:C.e.Settings.TOPIC_PREFERENCES}},a.createElement(d.x,{namespace:X,phrase:"updatePreferences"}))),Te&&a.createElement("span",{className:"d-block"},a.createElement(p.F,{className:"info-link",appLink:{application:O.O.SETTINGS,action:C.e.Settings.CONTENT_REVIEW}},a.createElement(d.x,{namespace:X,phrase:"contentReview"})))),Ne?a.createElement(a.Fragment,null,Ae.map((function(t,n){var r,i;return a.createElement($,{key:n,classification:t.classification,videos:t.videos,yearGroups:ce.data,imageCdnUrl:oe.data.imageCdnUrl,showMore:t.showMore,appLinks:e.appLinks,followed:Ce.includes(null===(r=t.classification)||void 0===r?void 0:r.id),follow:Ee,showFollowSpinner:Z[null===(i=t.classification)||void 0===i?void 0:i.id],canFollow:ne,setFavourite:ge,canFavourite:we,audiences:de.data,isPlugin:H,showNewVideoIndicator:te})}))):a.createElement(W,null)))}},44110:(e,t,n)=>{n.d(t,{i:()=>o});var a=n(20354),r=n(89454),i=n(86698),o=function(){var e=(0,i.y)({redirectOnError:!0}),t=e.activePresentation,n=e.getFallbackPresentation,o=t||n();return a.a.useBasicFetch(!!o&&r.O.presentationAudiences(o.id))}},85369:(e,t,n)=>{n.d(t,{N:()=>b});var a=n(32735),r=n(35242),i=n(20354),o=n(27022),l=n(72639),c=n(31949),s=n(37802),u=n(87114),f=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 d(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return m(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)?m(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 m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function v(e,t,n){return(t=function(e){var t=function(e){if("object"!=p(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=p(n))return n;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 y=v(v(v(v(v(v({},o.t.AU,[l.p.Level_1]),o.t.US,[l.p.Level_1]),o.t.UK,[l.p.Level_1]),o.t.SCOT,[l.p.Level_1]),o.t.NZ,[]),o.t.GLOBAL,[]);function b(){var e,t=(0,s.r)(null),n=t.hasSpecialEventCalendar,o=t.isLoadingSettings,l=(0,f.y)({redirectOnError:!0}).activePresentation,p=i.a.useBasicFetch(c.N.currentUser()),m=y[null===(e=p.data)||void 0===e?void 0:e.contentRegion],v=u.i.getMappedPresentationLevel(null==l?void 0:l.learningLevel),b=!(null==m?void 0:m.find((function(e){return e.toString()===(null==v?void 0:v.toString())}))),h=!o&&!n,g=d(a.useState(!h&&!b),2),w=g[0],E=g[1],S=d(a.useState(o||!(null==l?void 0:l.id)),2),k=S[0],L=S[1];return a.useEffect((function(){h||b?E(!1):k||E(!0),L(o||!(null==l?void 0:l.id))}),[n,null==l?void 0:l.id,k]),r.h.isDevelopment?{showCalendar:!0,isLoading:!1}:{showCalendar:w,isLoading:k}}},97816:(e,t,n)=>{n.d(t,{V:()=>d});var a=n(32735),r=n(20354),i=n(75896),o=n(21750),l=n(31949),c=n(1575),s=n(31908);function u(e,t){if(e){if("string"==typeof e)return f(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)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var p=50;function d(e){var t,n,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=r.a.useBasicFetch(l.N.currentUser()),v=a.useRef(new Set),y=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(s.M.isVideo(e)||s.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(s.M.isVideo(e)||s.M.isClip(e))})):[]:[]}(e),b=y.map((function(e){return e.id})),h=(t=a.useState([]),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 a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(t,n)||u(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.")}()),g=h[0],w=h[1];a.useEffect((function(){if((null==b?void 0:b.length)&&m.hasCompleted){var e=[];b.forEach((function(t){v.current.has(t)||(e.push(t),v.current.add(t))})),e.length&&w((function(t){var n=function(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||u(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t);return i.m.chunk(e,p).forEach((function(e){var t;n.push(c.R.videoMixinAssocs(e,d.flightNamespace)),(null===(t=m.data)||void 0===t?void 0:t.isAuthenticated)&&n.push(o.x.hasCurriculumLinks(e,null,d.flightNamespace))})),n}))}}),[null==b?void 0:b.length,m.hasCompleted]),r.a.useBasicFetchAll(g)}},87432:(e,t,n)=>{n.d(t,{Z:()=>a});const a={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}},68050:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(95685),r=n.n(a),i=n(32735),o=n(46304),l=n(74512);const c=i.forwardRef((({bsPrefix:e,className:t,as:n="div",...a},i)=>{const c=(0,o.vE)(e,"row"),s=(0,o.pi)(),u=(0,o.zG)(),f=`${c}-cols`,p=[];return s.forEach((e=>{const t=a[e];let n;delete a[e],null!=t&&"object"==typeof t?({cols:n}=t):n=t;const r=e!==u?`-${e}`:"";null!=n&&p.push(`${f}${r}-${n}`)})),(0,l.jsx)(n,{ref:i,...a,className:r()(t,c,...p)})}));c.displayName="Row";const s=c}}]);
|
|
2
|
+
//# sourceMappingURL=1958-46fa15e385-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/1958-46fa15e385-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/discover/components/header/discover-header.scss","file:///app/packages/libs/shared/src/apps/discover/components/header/DiscoverHeader.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/projects/lite/src/apps/content-updates/components/classification-banner/classification-banner.scss","file:///app/packages/projects/lite/src/apps/content-updates/components/classification-banner/ClassificationBanner.tsx","file:///app/packages/projects/lite/src/apps/content-updates/views/content-updates/components/ContentUpdateClassification.tsx","file:///app/packages/projects/lite/src/apps/content-updates/views/content-updates/partial-loading/partial-content-updates.scss","file:///app/packages/projects/lite/src/apps/content-updates/views/content-updates/partial-loading/PartialContentUpdates.tsx","file:///app/packages/projects/lite/src/apps/content-updates/views/content-updates/ContentUpdatesView.tsx","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useShowCalendar.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss","file:///app/node_modules/react-bootstrap/esm/Row.js"],"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 mx-n3'>\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 { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\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 containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\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 ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","import { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const chunks = ArrayHelper.chunk<string>(itemIds, 25);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const items = responses.data.length\n ? ArrayHelper.flatten(responses.data).reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n items,\n isFetching: responses.isFetching\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"banner\":\"B7jhq\"};","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { Classification, PresentationAudience } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './classification-banner.scss';\n\nconst namespace = 'contentUpdates.classificationBanner';\n\ninterface ClassificationBannerProps {\n classification: Classification;\n backgroundUrl: string;\n getClassificationAppLink: (classification: Classification, activeAudiences: PresentationAudience[]) => Core.AppLink;\n followed: boolean;\n follow: (classificationId: string, classificationName: string, follow: boolean) => void;\n showFollowSpinner: boolean;\n canFollow: boolean;\n}\n\nexport function ClassificationBanner(props: ClassificationBannerProps): JSX.Element {\n const { classification, backgroundUrl, followed, follow, showFollowSpinner } = props;\n\n const [activeAudiences] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n return (\n <div\n className={`banner mb-2 d-flex justify-content-between align-items-center rounded ${styles.banner}`}\n style={{ backgroundImage: `url('${backgroundUrl}')` }}\n >\n <AppLink className='text-white text-shadow' appLink={props.getClassificationAppLink(classification, activeAudiences)}>\n <h2 className='h3 mb-0'>{classification.name}</h2>\n </AppLink>\n\n {props.canFollow && (\n <IconButton\n className={`btn follow-btn ${followed ? 'btn-outline-dark' : 'btn-dark'}`}\n svgName={followed ? cvSvgLibrary.BellFilled : cvSvgLibrary.Bell}\n onClick={() => follow(classification.id, classification.name, !followed)}\n >\n {showFollowSpinner\n ? <Spinner as='span' animation='border' role='status' size='sm' />\n : <Text namespace={namespace} phrase={followed ? 'following' : 'follow'} />\n }\n </IconButton>\n )}\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { ContentUpdateAppLinks, VideoWithClassification } from 'libs/shared/apps/content-updates/interfaces';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, Classification, FavouriteFunc, PresentationAudience, YearGroup } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { ClassificationBanner } from 'apps/content-updates/components';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'contentUpdates.contentUpdatesView';\n\ninterface ClassificationProps {\n classification: Classification;\n videos: VideoWithClassification[];\n yearGroups: YearGroup[];\n imageCdnUrl: string;\n showMore: boolean;\n appLinks: ContentUpdateAppLinks;\n followed: boolean;\n follow: (classificationId: string, classificationName: string, follow: boolean) => void;\n showFollowSpinner: boolean;\n canFollow: boolean;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n audiences: PresentationAudience[];\n isPlugin: boolean;\n showNewVideoIndicator: boolean;\n}\n\nexport function ContentUpdateClassification(props: ClassificationProps): JSX.Element {\n const { classification, videos, imageCdnUrl, showMore, followed } = props;\n\n const { hasPermissions } = usePermissions();\n\n if (!classification)\n return <></>;\n \n const url = ImageHelper.createBannerUrl(classification.banner, {\n fallbackBaseUrl: imageCdnUrl,\n fallbackCategoryName: classification.name,\n type: ImageType.Banners\n }, { size: ImageSize.Medium, resizeType: ResizeType.Cover });\n\n return (\n <div className='mb-3'>\n <ClassificationBanner\n classification={classification}\n backgroundUrl={url}\n getClassificationAppLink={props.appLinks.getClassificationAppLink}\n followed={followed}\n follow={props.follow}\n canFollow={props.canFollow}\n showFollowSpinner={props.showFollowSpinner}\n />\n <VideoList\n videos={videos}\n yearGroups={props.yearGroups}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n getSubTextAppLink={video => SeriesAppLinkHelper.getSeriesAppLink(video.series)}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n presentationAudiences={props.audiences}\n hasPermissions={hasPermissions}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n showNewVideoIndicator={props.showNewVideoIndicator}\n />\n {showMore &&\n <div className={'show-more'}>\n <AppLink className='info-link' appLink={props.appLinks.getClassificationUpdateAppLink(classification)}>\n <Text namespace={namespace} phrase='showMore' options={{\n classificationName: classification.name\n }} />\n </AppLink>\n </div>\n }\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialBanner\":\"bxaA6\"};","import React from 'react';\n\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './partial-content-updates.scss';\n\nexport function PartialContentUpdates(): JSX.Element {\n return (\n <>\n {Array(4).fill(null).map((s, i) => (\n <div key={i} className='mb-3'>\n <div className={`partial-loading-background mb-2 ${styles.partialBanner}`} />\n <PartialVideoList />\n </div>\n ))}\n </>\n );\n}","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ContentUpdateRequests } from 'libs/shared/apps/content-updates/flight-requests/ContentUpdateRequests';\nimport { ClassificationVideosGrouping, ContentUpdate, ContentUpdateAppLinks } from 'libs/shared/apps/content-updates/interfaces';\nimport { DiscoverHeader } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Classification, Config, CurrentUser, DashboardUserType, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useShowCalendar } from 'shared/hooks/useShowCalendar';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { ContentUpdateClassification } from './components/ContentUpdateClassification';\nimport { PartialContentUpdates } from './partial-loading/PartialContentUpdates';\n\nconst INITIAL_VIDEO_COUNT = 5;\nconst namespace = 'contentUpdates.contentUpdatesView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction map(\n contentUpdates: ClassificationVideosGrouping[],\n classifications: {[key: string]: Classification}\n): ContentUpdate[] {\n if (!contentUpdates || !classifications)\n return null;\n\n return contentUpdates.map((c): ContentUpdate => {\n return {\n showMore: c.videos.length > INITIAL_VIDEO_COUNT,\n classification: classifications[c.id],\n videos: c.videos.slice(0, INITIAL_VIDEO_COUNT).map((m: any) => {\n m.classification = classifications[m.id];\n return m;\n }).filter(v => v)\n };\n }).filter(v => v.classification);\n}\n\ninterface FollowSpinnersMap {\n [classificationId: string]: boolean;\n}\n\ninterface ContentUpdatesViewProps {\n appLinks: ContentUpdateAppLinks;\n presentationSlug?: string;\n}\n\nexport function ContentUpdatesView(props: ContentUpdatesViewProps): JSX.Element {\n const [ followSpinners, setFollowSpinners ] = React.useState<FollowSpinnersMap>({});\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const { isPlugin } = usePluginHelper();\n\n const { hasPermissions } = usePermissions();\n const { hasTopicDirectories } = useSettings(null);\n const canFollowSubjects = hasPermissions(PermissionName.FollowSubjects);\n\n const date = new Date();\n const from = DateHelper.format(DateHelper.endOf(DateHelper.subtract(date, 1, 'year'), 'day'), 'YYYY-MM-DD');\n const to = DateHelper.format(DateHelper.endOf(date, 'day'), 'YYYY-MM-DD');\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const { activePresentation } = usePresentation({ redirectOnError: true });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: activePresentation?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getStaticRouteHrefLang(\n activePresentation?.learningLevel,\n () => ({ application: AppChannels.CONTENT_UPDATES, action: Actions.ContentUpdates.CONTENT_UPDATES })\n )\n }));\n\n const contentUpdatesRequest = ContentUpdateRequests.getContentUpdates(activePresentation?.id, from, to);\n const contentUpdates = Flight.useBasicFetch<ClassificationVideosGrouping[]>(\n activePresentation && contentUpdatesRequest\n );\n const subjectPreferences = Flight.useBasicFetch<Classification[]>(canFollowSubjects &&\n PreferenceRequests.mySubjectPreferences());\n\n const audiences = usePresentationAudiences();\n\n /* Map content update response into list of video ids and classification ids*/\n const classificationIds: string[] = [];\n let videos: Video[] = [];\n contentUpdates.data && contentUpdates.data.forEach(c => {\n classificationIds.push(c.id);\n videos = videos.concat(c.videos);\n });\n\n /* Batch fetch the videos and classifications by id */\n const { items: classifications } = useBatchFetch<Classification>(\n classificationIds,\n (ids: string[]) => ContentUpdateRequests.getClassifications(ids)\n );\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n \n useVideoMixin(videos, {\n flightNamespace: contentUpdatesRequest.normalizeOptions?.namespace\n });\n\n const { setFavourite, canFavourite } = useLiteFavourites(\n LocationContext.VideoThumbnail,\n contentUpdatesRequest.normalizeOptions?.namespace\n );\n\n /** Callbacks */\n function onFollow(classificationId: string, classificationName: string, follow: boolean): void {\n setFollowSpinners(currentState => ({\n ...currentState,\n [classificationId]: true\n }));\n\n const onSuccess = () => {\n setFollowSpinners(currentState => ({\n ...currentState,\n [classificationId]: false\n }));\n\n AnalyticsHelper.logUserAction({\n id: classificationId,\n name: classificationName\n }, {\n location: LocationContext.ContentUpdatesClassificationBanner,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: follow ? ToggleDescriptor.On : ToggleDescriptor.Off,\n actionType: UserAction.Follow,\n entity: EntityType.Classification\n });\n\n alerts.success(getPhrase(\n follow ? 'followed' : 'unfollowed',\n { classification: classifications[classificationId]?.name, escapeText: true }\n ));\n };\n\n const onError = () => {\n setFollowSpinners(currentState => ({\n ...currentState,\n [classificationId]: false\n }));\n\n alerts.error(getPhrase('error'));\n };\n\n const request = follow ?\n PreferenceRequests.followSubjects([classificationId], onSuccess, onError) :\n PreferenceRequests.unfollowSubjects([classificationId], onSuccess, onError);\n\n Flight.fetch(dispatch, request);\n }\n\n const { showCalendar, isLoading } = useShowCalendar();\n\n const dataLoaded = !!(\n contentUpdates.hasCompleted &&\n config.hasCompleted &&\n audiences.hasCompleted &&\n (!canFollowSubjects || subjectPreferences.hasCompleted) &&\n classifications &&\n !isLoading\n );\n\n /* Build out array of content updates from our lists of videos and classifications */\n const mappedUpdates = map(contentUpdates.data, classifications);\n const preferredSubjectIds = subjectPreferences.data?.map(subject => subject.id) ?? [];\n\n const managePreferences = hasPermissions(PermissionName.ManageSubjectPreferences);\n const manageVideoAccess = hasPermissions(PermissionName.ManageVideoAccess);\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='bg-white px-3'>\n {!isLoading && <DiscoverHeader\n type={DashboardUserType.Staff} // Students never see this page\n appLinks={{\n forYou: props.appLinks.dashboardAppLink,\n whatsNew: props.appLinks.whatsNewAppLink,\n calendar: props.appLinks.calendarAppLink\n }}\n showCalendar={showCalendar}\n active='whatsNew'\n />}\n <h1><Text namespace={namespace} phrase='heading' /></h1>\n {(managePreferences || manageVideoAccess) && (\n <p>\n {managePreferences &&\n <>\n <Text namespace={namespace} phrase='onlyRelevant' /> \n <AppLink\n className='info-link'\n appLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.TOPIC_PREFERENCES\n }}\n >\n <Text namespace={namespace} phrase='updatePreferences' />\n </AppLink>\n </>\n }\n {manageVideoAccess &&\n <span className='d-block'>\n <AppLink\n className='info-link'\n appLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.CONTENT_REVIEW\n }}\n >\n <Text namespace={namespace} phrase='contentReview' />\n </AppLink>\n </span>\n }\n </p>\n )}\n\n {dataLoaded ? (\n <>\n {mappedUpdates.map((c: ContentUpdate, key: number) => (\n <ContentUpdateClassification\n key={key}\n classification={c.classification}\n videos={c.videos}\n yearGroups={yearGroups.data}\n imageCdnUrl={config.data.imageCdnUrl}\n showMore={c.showMore}\n appLinks={props.appLinks}\n followed={preferredSubjectIds.includes(c.classification?.id)}\n follow={onFollow}\n showFollowSpinner={followSpinners[c.classification?.id]}\n canFollow={canFollowSubjects}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n audiences={audiences.data}\n isPlugin={isPlugin}\n showNewVideoIndicator={hasTopicDirectories}\n />\n ))}\n </>\n ) : (\n <PartialContentUpdates />\n )}\n </div>\n </VideoActionsContext.Provider>\n );\n}\n","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","import 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}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Clip, ClipCollection, CurrentUser, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst CHUNK_SIZE = 50;\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}): void {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const hydratedVideos = React.useRef<Set<string>>(new Set<string>());\n\n const videos = getValidObjects(objects);\n\n const videoIds = videos.map(v => v.id);\n\n const [ request, setRequest ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!videoIds?.length || !currentUser.hasCompleted)\n return;\n\n const unhydratedVideos: string[] = [];\n\n videoIds.forEach(id => {\n if (!hydratedVideos.current.has(id)) {\n unhydratedVideos.push(id);\n hydratedVideos.current.add(id);\n }\n });\n \n if (!unhydratedVideos.length)\n return;\n\n setRequest(r => {\n const newRequests = [...r] ;\n\n ArrayHelper.chunk<string>(unhydratedVideos, CHUNK_SIZE).forEach(chunk => {\n newRequests.push(VideoRequests.videoMixinAssocs(chunk, options.flightNamespace));\n\n if (currentUser.data?.isAuthenticated)\n newRequests.push(ClassificationRequests.hasCurriculumLinks(chunk, null, options.flightNamespace));\n });\n\n return newRequests;\n });\n }, [ videoIds?.length, currentUser.hasCompleted ]);\n\n Flight.useBasicFetchAll(request);\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;"],"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","TabContents","tab","svgName","count","data","ref","containerRef","borderRadius","listClassName","map","index","key","onClick","onSelect","onSelectTab","defaultProps","useBatchFetch","itemIds","getRequest","requests","chunk","responses","items","length","reduce","acc","item","id","isFetching","ClassificationBanner","classification","backgroundUrl","followed","follow","showFollowSpinner","activeAudiences","SharedViewModelKeys","undefined","storage","style","backgroundImage","getClassificationAppLink","canFollow","IconButton","Spinner","as","animation","role","size","ContentUpdateClassification","videos","imageCdnUrl","showMore","hasPermissions","usePermissions","ImageHelper","banner","fallbackBaseUrl","fallbackCategoryName","resizeType","VideoList","yearGroups","getVideoAppLink","getSubTextAppLink","video","SeriesAppLinkHelper","series","setFavourite","canFavourite","presentationAudiences","audiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","isPlugin","getClassroomGuideAppLink","VideoAppLinkHelper","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","showNewVideoIndicator","AppLink","getClassificationUpdateAppLink","options","classificationName","PartialContentUpdates","Array","fill","s","i","PartialVideoList","INITIAL_VIDEO_COUNT","getPhrase","ContentUpdatesView","followSpinners","setFollowSpinners","dispatch","alerts","usePluginHelper","hasTopicDirectories","useSettings","canFollowSubjects","PermissionName","date","Date","from","DateHelper","to","config","ConfigRequests","currentUser","UserRequests","isAuthenticated","CustomerRequests","customerId","activePresentation","usePresentation","redirectOnError","useSetPageMetadata","PageMetadataHelper","title","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","allowIndexing","hrefLang","learningLevel","application","action","contentUpdatesRequest","ContentUpdateRequests","contentUpdates","subjectPreferences","PreferenceRequests","usePresentationAudiences","classificationIds","forEach","c","concat","classifications","ids","videoActions","useVideoActions","useVideoMixin","flightNamespace","normalizeOptions","useLiteFavourites","u","onFollow","classificationId","currentState","onSuccess","AnalyticsHelper","workflowPhase","descriptor","success","escapeText","onError","error","request","useShowCalendar","isLoading","dataLoaded","hasCompleted","mappedUpdates","slice","m","filter","v","preferredSubjectIds","subject","managePreferences","manageVideoAccess","VideoActionsContext","value","dashboardAppLink","whatsNewAppLink","calendarAppLink","includes","getFallbackPresentation","presentation","ALLOWED_LEARNING_LEVELS_BY_REGION","hasSpecialEventCalendar","isLoadingSettings","allowedLearningLevels","contentRegion","learningLevelCantAccess","find","l","toString","noSetting","setShowCalendar","setIsLoading","CHUNK_SIZE","objects","hydratedVideos","Set","isArray","o","getValidObjects","videoIds","setRequest","unhydratedVideos","current","has","add","r","newRequests","Row","bsPrefix","Component","decoratedBsPrefix","breakpoints","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","displayName"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[301],{88513:(e,t,n)=>{n.d(t,{B:()=>f});var r=n(32735),a=n(23481),i=n(65858),o=n(36848),c=n(83914),s=n(17082),u=n(35223),l=n(49542);const d={seeMore:"yv0FS"};var m=a.T.encloseNamespace("shared.widgetHeader");function p(e){return r.createElement("div",{className:"ms-3 ".concat(d.seeMore)},r.createElement(o.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:Object.assign(Object.assign({location:i.LZ.SlidingList},e.analyticsOptions),{descriptor:i._S.SeeMore}),className:"text-decoration-none ".concat(e.appLink?"curated-widget-link":"")},r.createElement("p",{className:"hover-text-underline text-dark curated-widget-heading"},m("seeAll"))))}function f(e){var t,n,a=!!e.description;if(!e.name&&!e.description)return r.createElement(r.Fragment,null);var i=l.d.isBelowContentMinimum(e.content,e.widgetTypeId),d=null!==(n=null===(t=s.u[e.widgetTypeId])||void 0===t?void 0:t.minContent)&&void 0!==n?n:0;return r.createElement("div",{className:"curated-widget-header"},r.createElement("div",{className:"d-flex justify-content-between"},!!e.name&&r.createElement("div",{className:"d-flex align-items-center"},r.createElement(o.F,{appLink:e.appLink,analyticsData:e.analyticsData,className:"text-decoration-none ".concat(e.appLink?"curated-widget-link text-reset":""),onClick:e.onClick},r.createElement("h2",{className:"h4 curated-widget-heading"},e.isPreviewing&&i&&r.createElement(c.x,{svgName:u.vn.WarningOutline,title:"Widget is below the minimum content threshold of ".concat(d," and won't be displayed."),tooltipSpanHack:!0,tooltipSpanHackClassName:"d-inline text-danger me-1"}),e.name)),!!r.isValidElement(e.badgeComponent)&&e.badgeComponent),!!e.appLink&&!a&&!!e.showSeeMoreLink&&r.createElement(p,Object.assign({},e))),a&&r.createElement("div",{className:"d-flex justify-content-between align-items-end"},r.createElement("p",{className:"description curated-widget-description"},r.createElement("span",null,e.description)),!!e.appLink&&!!e.showSeeMoreLink&&r.createElement(p,Object.assign({},e))))}},29420:(e,t,n)=>{n.d(t,{T:()=>u});var r=n(32735),a=n(82182);function i(e){return i="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},i(e)}function o(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=[],s=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){u=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(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)?c(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 c(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=400;function u(e){var t=e.type,n=e.state,c=e.containerRef,u=e.mediaQuery,l=o(r.useState(!1),2),d=l[0],m=l[1],p=o(r.useState({}),2),f=p[0],v=p[1],g=o(r.useState(null),2),y=g[0],h=g[1],b=r.useMemo((function(){return a.V.isTouchScreen()}),[]);return r.useEffect((function(){"dynamic"===t&&c.current&&n.containerLeftPosition&&!b&&setTimeout((function(){return function(){var e,t=n;if(null===(e=c.current)||void 0===e?void 0:e.children){var r=Array.from(c.current.children).reduce((function(e,n){var r,a,o,c=null==n?void 0:n.getBoundingClientRect(),s=c.left<t.containerRightPosition&&c.right>t.containerLeftPosition;return Object.assign(Object.assign({},e),(r={},a=n.id,o=s?{"aria-hidden":!1}:{"aria-hidden":!0,inert:"true"},(a=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(a))in r?Object.defineProperty(r,a,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[a]=o,r))}),{});v(r)}}()}),s+50)}),[c.current,u,n.offset,n.containerLeftPosition]),{isTabbing:d,onFocusWidget:function(e){document.querySelector(".user-is-tabbing")&&(m(!0),h(e))},onBlurWidget:function(){document.querySelector(".user-is-tabbing")||(m(!1),h(null))},getFixedAttributes:function(e){var t=n;return b||e>=t.offset-t.viewableItems&&e<t.offset?{"aria-hidden":!1}:{inert:"true","aria-hidden":!0}},dynamicAttributes:f,focusNext:function(){setTimeout((function(){if(c.current){for(var e=c.current.querySelectorAll("li[aria-hidden]"),t=null,n=y+1;n<e.length&&!t;n++)t=e[n].querySelector('a[tabindex="0"]');t&&t.focus()}}),s+100)},focusPrev:function(){setTimeout((function(){if(c.current){for(var e=c.current.querySelectorAll("li[aria-hidden]"),t=null,n=y-1;n>=0&&!t;n--)t=e[n].querySelector('a[tabindex="0"]');t&&t.focus()}}),s+100)}}}},80835:(e,t,n)=>{n.d(t,{U:()=>d});var r=n(32735),a=n(91967),i=n(72431),o=n(68626),c=n(79967),s=n(80143),u=n(40424),l=n(31908);var d=r.memo((function(e){var t,n=e.data,d=e.getSubTextAppLink,m=e.context,p=e.thumbnailSize,f=e.preloadImage,v=e.presentationAudiences,g=null===(t=null==n?void 0:n.subjectPresentationAudiences)||void 0===t?void 0:t.data,y=(0,s.n)(g,v),h=(0,c.k)(),b="JSM4l";return m.type===u.l9.LargeRow&&(b="YYpNz"),r.createElement("div",{className:"px-1 flex-shrink-0 position-relative ".concat(b)},r.createElement(i.u,{type:e.preventPopout||h.xs?"static":"popout",textPosition:o.z.Below,video:n,appLink:e.getAppLink(n),subTextAppLink:l.M.isVideo(n)&&(null==d?void 0:d(n)),imageOptions:{size:p},preload:f,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,canFavourite:e.canFavourite,setFavourite:e.setFavourite,imageCdnUrl:e.imageCdnUrl,audience:y,hideRating:!!y,hideDuration:!1,yearGroups:e.yearGroups,hideTitle:e.hideTitle,showVideoGuidance:e.showVideoGuidance,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,isPlugin:e.isPlugin,getInteractiveGuidanceAppLink:e.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:e.getResourceGuidanceAppLink,getClassroomGuideAppLink:e.getClassroomGuideAppLink,showNewVideoIndicator:e.showNewVideoIndicator,onClickRemove:a.q.isFunction(e.onClickRemoveItem)&&function(){return e.onClickRemoveItem(n.id)},removeButtonTooltip:e.removeButtonTooltip}))}))},43872:(e,t,n)=>{n.d(t,{V:()=>l});var r=n(32735),a=n(82182),i=n(31069),o=n(91967),c=new Image;c.src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=";var s=function(e){e.dataTransfer.setDragImage&&o.q.isFunction(e.dataTransfer.setDragImage)&&e.dataTransfer.setDragImage(c,0,0)},u=a.V.isTouchScreen(),l=r.forwardRef((function(e,t){var n,a,o,c,l=e.children,d=e.positionType,m=e.onDrag,p=e.onDragEnd,f=e.onTouchMove,v=e.onTouchEnd,g=e.percentageDragged,y=e.position,h=void 0===y?0:y;return r.createElement("ul",Object.assign({className:"list-unstyled d-flex flex-nowrap position-relative w-100 mb-0",style:(a=h,o=d,c=g,o===i.C.Percentage&&c&&(a-=c),{transform:"translate3d(".concat(a).concat(o,", 0px, 0px)"),transition:"transform .4s ease-in-out"}),ref:t},(n={},m&&p&&(n.draggable=!0,n.onDragEnd=p,n.onDragStart=s,n.onDragOver=m),f&&v&&u&&(n.onTouchMoveCapture=f,n.onTouchEndCapture=v),n)),l)}))},31069:(e,t,n)=>{var r;n.d(t,{C:()=>r}),function(e){e.Percentage="%",e.Pixels="px"}(r||(r={}))},10841:(e,t,n)=>{var r;n.d(t,{n:()=>r}),function(e){e.Init="init",e.Next="next",e.Previous="previous",e.Resize="resize",e.Drag="drag",e.Update="update",e.JumpToIndex="jump-to-index"}(r||(r={}))},39902:(e,t,n)=>{n.d(t,{f:()=>o});var r=n(20354),a=n(75896);function i(e){return i="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},i(e)}function o(e,t){var n=a.m.chunk(e,25).map((function(e){return t(a.m.uniq(e))})),o=r.a.useBasicFetchAll(n);return{items:o.data.length?a.m.flatten(o.data).reduce((function(e,t){return Object.assign(Object.assign({},e),(n={},r=t.id,a=t,(r=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(r))in n?Object.defineProperty(n,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[r]=a,n));var n,r,a}),{}):null,isFetching:o.isFetching}}},80143:(e,t,n)=>{n.d(t,{n:()=>i});var r=n(32735),a=n(69454);function i(e,t){var n=r.useMemo((function(){return(null==e?void 0:e.length)&&t&&a.T.shouldShowAudiences(t)?a.T.getSortedPresentationAudiences(e,t):null}),[e]);return r.useMemo((function(){return(null==n?void 0:n.length)?a.T.getMergedPresentationAudienceString(n):null}),[n])}},69454:(e,t,n)=>{n.d(t,{T:()=>m});var r=n(75896),a=n(1048),i=n(55171);function o(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=[],s=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){u=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(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)?c(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 c(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=/\d/,u={yearsAndGradesBuilder:function(e){var t=e.map((function(e){return e.name})).join(" "),n=t.split(" ").filter((function(e){return!isNaN(+e)})).map((function(e){return+e}))||[],r=t.split(" ").filter((function(e){return isNaN(+e)}))||[],a=e.find((function(e){return!s.test(e.name)})),i=r.find((function(e){return e!==(null==a?void 0:a.name)}));if(e.length>1&&(i+="s"),a&&n.length)return"".concat(i," ").concat(a.name.charAt(0)," - ").concat(n.pop());var o=function(e){var t,n,r,a,i=!1,o=[];for(e=e.sort((function(e,t){return e-t})),r=0;r<e.length;r++)a=r+1,i||(t=e[r]),n=e[a],e[r]+1===n?i=!0:i?(o.push("".concat(t," - ").concat(e[r])),i=!1):(o.push("".concat(e[r])),i=!1);return o}(n);return"".concat(i," ").concat(o.join(", "))},internationalSecondaryBuilder:function(e){return u.englandSecondaryBuilder(e)},scotlandPrimaryBuilder:function(e){var t=r.m.first(e),n=r.m.last(e),a=o(t.name.split(" "),1)[0],i=o(n.name.split(" "),1)[0];return"First"===a&&(a="1st"),"First"===i&&(i="1st"),"Second"===a&&(a="2nd"),"Second"===i&&(i="2nd"),a===i?"".concat(a," Level"):"".concat(a," - ").concat(i," Level")},internationalPrimaryBuilder:function(e){var t=r.m.first(e),n=r.m.last(e);if(t.name===n.name)return t.name;var a=o(t.name.split(" "),1)[0],i=o(n.name.split(" "),1)[0];return"Lower"===a&&(a="Low"),"Lower"===i&&(i="Low"),"Middle"===a&&(a="Mid"),"Middle"===i&&(i="Mid"),"".concat(a," - ").concat(i," Pri")},englandSecondaryBuilder:function(e){var t=r.m.first(e),n=r.m.last(e);return t.name===n.name?t.name:"Advanced"===n.name?"lower"===o(t.name.split(" "),1)[0].toLowerCase()?"Lower Sec - Adv":"Upper Sec - Adv":"Lower - Upper Sec"},scotlandSecondaryBuilder:function(e){var t=r.m.first(e),n=r.m.last(e);return t.name===n.name?t.name:"Senior Phase"===n.name?"".concat(t.name," - Senior"):"Third - Fourth Level"},englandPrimaryBuilder:function(e){var t=r.m.first(e),n=r.m.last(e),a=r.m.first(t.name.split(" ")),i=r.m.first(n.name.split(" ")),o=t.name.split(" ").find((function(e){return!isNaN(+e)})),c=n.name.split(" ").find((function(e){return!isNaN(+e)}));if(t===n)return"Key"===a||"Reception"===a?t.name:"".concat(a," KS").concat(o);var s="",u="";return s="Reception"===a?"R":"KS".concat(o),u="KS".concat(c),"Lower"===a&&"Upper"===i?"L ".concat(s," - U ").concat(u):("Lower"===a&&(s="Lower ".concat(s)),"Upper"===i&&(u="Upper ".concat(u)),"Key"===i&&(u=n.name),"".concat(s," - ").concat(u))}},l=/([0-9]+)/gi,d=/\s|\+/gi,m={getSortedPresentationAudiences:function(e,t){var n=e.filter((function(e){return!!e})).map((function(e){return e.id.toString()}));return t.filter((function(e){return n.includes(e.masterId.toString())}))},getMergedPresentationAudienceString:function(e){var t="";switch(+r.m.first(e).presentationId){case i.e.PresentationIds.DEFAULT:case i.e.PresentationIds.AU_SECONDARY:case i.e.PresentationIds.US_ELEMENTARY:case i.e.PresentationIds.AU_PRIMARY:case i.e.PresentationIds.STREAMABLE_LEARNING:if(1===e.length)return e[0];t=u.yearsAndGradesBuilder(e);break;case i.e.PresentationIds.INT_SECONDARY:if(1===e.length)return e[0];t=u.internationalSecondaryBuilder(e);break;case i.e.PresentationIds.INT_PRIMARY:t=u.internationalPrimaryBuilder(e);break;case i.e.PresentationIds.SCT_PRIMARY:t=u.scotlandPrimaryBuilder(e);break;case i.e.PresentationIds.ENG_SECONDARY:t=u.englandSecondaryBuilder(e);break;case i.e.PresentationIds.SCT_SECONDARY:t=u.scotlandSecondaryBuilder(e);break;case i.e.PresentationIds.ENG_PRIMARY:t=u.englandPrimaryBuilder(e);case i.e.PresentationIds.US_MIDDLE:case i.e.PresentationIds.US_HIGH:case i.e.PresentationIds.AU_TERTIARY:case i.e.PresentationIds.UK_TERTIARY:}return t?{name:t}:null},sortMembersWithDuplicateNamesByAudience:function(e){var t=function(e){return e.length?(e.forEach((function(e){var a=+r.m.first(e.name.match(l));if(!t)return t=e,void(n=a);a<n&&(t=e)})),t):null;var t,n},n={},a=[];return e.forEach((function(e){if(!n[e.name])return n[e.name]=1,void a.push(e);a.push(e),n[e.name]++;var r=a.splice(a.length-n[e.name]).sort((function(e,n){var r=t(e.subjectPresentationAudiences.data),a=t(n.subjectPresentationAudiences.data);if(!r&&a)return 1;if(!a)return-1;var i=r.name.localeCompare(a.name);return 0===i?i:i>0?-1:1}));a=a.concat(r)})),a},getActiveAudiencesFromParams:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(a.t.isObject(t)&&!a.t.isEmpty(t)&&e&&e.length&&m.shouldShowAudiences(e)){var n=t.a;if(n){"string"==typeof n&&(n=[n]);var r=function(e){return e.replace(d,"").toLowerCase()},i=n.reduce((function(e,t){return e[r(t)]=t,e}),{});return e.filter((function(e){return i[r(e.name)]}))}}},getAudienceParams:function(e){return(null==e?void 0:e.length)?{a:e.map((function(e){return e.name}))}:null},shouldShowAudiences:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return!!e&&e.length>1}}},58:(e,t,n)=>{n.r(t),n.d(t,{PopupPluginView:()=>ne});var r=n(32735),a=n(48088),i=n(95846),o=n(81886),c=n(23481),s=n(20354),u=n(65858),l=n(4201),d=n(11518),m=n(80835),p=n(16714),f=n(58704),v=n(89454),g=n(39151),y=n(1666),h=n(63419),b=n(98064),A=n(31949),S=n(35286),L=n(22902),P=n(79612),w=n(37802),k=n(40424),C=n(13126),E=n(31908),T=n(14070),I=n(97291),N=n(51855),M=n(27638),x=n(86698),j=n(23737),F=n(22490),O=n(28400),R=n(36848),D=n(60376),B=n(83914),G=n(54610),U=n(67453),V=n(35223),_=n(71750),W=n(98073),Y=n(48688);const H={leftNavIcon:"ssG3i"};var z=c.T.encloseNamespace("default.popupPlugin");function q(e){return r.createElement("li",{className:"col-6 mb-3"},r.createElement(R.F,{appLink:e.appLink,className:"border rounded-3 d-flex align-items-center\n justify-content-center flex-column text-decoration-none h-100 py-3 px-1 text-center"},r.createElement("div",{className:"".concat(H.leftNavIcon," ").concat(e.iconClassName," mx-auto mb-3")},r.createElement(D.f,{imageUrl:U.j.createUrl(e.imageUrl,{size:G.h2.Small}),svgName:e.svgName,svgSize:B.S.Large})),r.createElement("div",{className:"h6"},e.name)))}function K(e){var t=e.hasPermissions,n=e.moviesAndTvDashboard,a=e.libraries;function i(n){switch(n){case _.P.StudentFeed:return t(p.C.StudentExperience);case _.P.Discover:return t(p.C.ViewDiscover);case _.P.MoviesAndTv:return t(p.C.ViewMoviesTv);case _.P.Libraries:return!!(null==a?void 0:a.length)&&(!t(p.C.StudentExperience)||t(p.C.ViewLibraries));case _.P.Classrooms:return t(p.C.ViewClassrooms);case _.P.MyShares:return t(p.C.ViewMyShares)&&e.hasInsights;default:return!0}}return r.createElement("ul",{className:"list-unstyled row row-cols-md-5"},i(_.P.StudentFeed)&&r.createElement(q,{id:_.P.StudentFeed,appLink:W.T[_.P.StudentFeed].appLink,name:z("home"),iconClassName:"bg-purple",svgName:V.vn.House}),i(_.P.Discover)&&r.createElement(q,{id:_.P.Discover,appLink:W.T[_.P.Discover].appLink,name:z("discover"),iconClassName:"bg-blue",svgName:V.vn.Compass}),i(_.P.MoviesAndTv)&&!!n&&r.createElement(q,{id:_.P.MoviesAndTv,appLink:W.T[_.P.MoviesAndTv].appLink,name:z("moviesAndTv"),iconClassName:"bg-indigo",svgName:V.vn.Popcorn}),r.createElement(q,{id:_.P.Playlists,appLink:W.T[_.P.Playlists].appLink,name:z("playlists"),iconClassName:"bg-green",svgName:V.vn.Playlist}),r.createElement(q,{id:_.P.MyVideos,appLink:W.T[_.P.MyVideos].appLink,name:z("myVideos"),iconClassName:"bg-orange",svgName:V.vn.Video}),i(_.P.MyShares)&&r.createElement(q,{id:_.P.MyShares,appLink:W.T[_.P.MyShares].appLink,name:z("myShares"),iconClassName:"bg-ultramarine",svgName:V.vn.Share}),i(_.P.Libraries)&&Y.g.sort(a).map((function(e,t){var n,a,i,o;return r.createElement(q,{key:t,id:_.P.Library,name:e.name,appLink:Object.assign(Object.assign({},W.T[_.P.Library].appLink),{args:[e.id,O.m.slugify(e.name)]}),iconClassName:"bg-teal",imageUrl:null===(a=null===(n=e.owner)||void 0===n?void 0:n.logo)||void 0===a?void 0:a.url,svgName:!(null===(o=null===(i=e.owner)||void 0===i?void 0:i.logo)||void 0===o?void 0:o.url)&&V.vn.Library})})))}var Q=n(1575),$=n(39902),J=n(97816),Z=n(87821);function X(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 ee=n(82431),te=c.T.encloseNamespace("default.popupPlugin");function ne(){var e,t,n=(0,N.G)().isPlugin,c=(0,l.of)().focusSearchBar,O=(0,w.r)(null).hasNewSearch;(0,P.M)({title:te("title")});var R=(0,x.y)().activePresentation,D=(0,L.T)(),B=D.hasPermissions,G=D.isLoaded,U=(0,w.r)(null).hasInsights,V=(0,M.u)(u.LZ.VideoThumbnail),_=V.setFavourite,W=V.canFavourite,Y=s.a.useBasicFetch(g.L.config()),H=s.a.useBasicFetch(A.N.currentUser()),z=s.a.useBasicFetch((null===(e=H.data)||void 0===e?void 0:e.isAuthenticated)&&y.h.yearGroups(H.data.customerId)),q=s.a.useBasicFetch(R&&v.O.audiencesByPresentationId(R.id)),ne=function(){var e,t,n,a=s.a.useBasicFetch(Z.p.userVideoHistory()),i=(0,$.f)(null!==(n=null===(t=null===(e=a.data)||void 0===e?void 0:e.data)||void 0===t?void 0:t.map((function(e){return e.videoId})))&&void 0!==n?n:[],Q.R.watchHistoryVideos),o=r.useMemo((function(){var e,t,n,r=new Map;return null===(t=null===(e=a.data)||void 0===e?void 0:e.data)||void 0===t||t.forEach((function(e){var t;if(!r.has(e.videoId)){var n=null===(t=i.items)||void 0===t?void 0:t[e.videoId];n&&r.set(e.videoId,n)}})),function(e){if(Array.isArray(e))return X(e)}(n=r.values())||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||function(e,t){if(e){if("string"==typeof e)return X(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)?X(e,t):void 0}}(n)||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.")}()}),[i.items,a.data]);return(0,J.V)(o),{data:o,hasCompleted:!i.isFetching}}(),re=s.a.useBasicFetch(H.data&&h.P.getFavourites(H.data.id)),ae=s.a.useBasicFetch(B(p.C.ViewLibraries)&&b.D.domainLibraries(["customLibrary","sharedLibrary"])),ie=(0,j.y)({targetType:k.ku.MoviesAndTv,queryParams:{}}).dashboard;return s.a.useBasicFetch(!!(null===(t=ae.data)||void 0===t?void 0:t.length)&&b.D.librariesWithOwnerLogos(ae.data.map((function(e){return e.id})))),(0,S.L)(i.G.SHELL,o.Q.Vy.ROUTE,(function(e){o.Q.C$.getHref(e)&&(C.e.enableNav(),O||a.Radio.channel(i.G.SHELL).once("routing:end",c))})),ie.hasCompleted&&G&&(!B(p.C.ViewLibraries)||ae.hasCompleted)&&Y.hasCompleted?r.createElement("div",{className:"px-4"},r.createElement(K,{hasPermissions:B,moviesAndTvDashboard:ie.data,libraries:ae.data,hasInsights:U}),ne.hasCompleted?r.createElement("div",{className:"mb-3"},r.createElement(d.kM,{name:te("recentlyWatched"),collection:ne.data||[],contents:f.z.Videos,childComponent:m.U,extraChildComponentProps:{setFavourite:_,canFavourite:W,presentationAudiences:q.data,getSubTextAppLink:ee.j.getSeriesAppLink,imageCdnUrl:Y.data.imageCdnUrl,yearGroups:z.data,showVideoGuidance:E.M.showVideoGuidance(B),isPlugin:n,getClassroomGuideAppLink:F.W.getClassroomGuideAppLink,getResourceGuidanceAppLink:F.W.getResourceGuidanceAppLink,getInteractiveGuidanceAppLink:F.W.getInteractiveGuidanceAppLink,onClickRemoveItem:null},getChildAppLink:function(e){var t;return F.W.getAppLink(e,{includeContext:null===(t=H.data)||void 0===t?void 0:t.isAuthenticated})},appLink:{application:I.O.WATCH_HISTORY,action:T.e.WatchHistory.HOME},prefetched:!0})):r.createElement("div",{className:"mb-3"},r.createElement(d.j7,null)),re.hasCompleted?r.createElement(d.kM,{name:te("favourites"),collection:re.data.data||[],contents:f.z.Videos,childComponent:m.U,extraChildComponentProps:{setFavourite:_,canFavourite:W,presentationAudiences:q.data,getSubTextAppLink:ee.j.getSeriesAppLink,imageCdnUrl:Y.data.imageCdnUrl,yearGroups:z.data,showVideoGuidance:E.M.showVideoGuidance(B),isPlugin:n,getClassroomGuideAppLink:F.W.getClassroomGuideAppLink,getResourceGuidanceAppLink:F.W.getResourceGuidanceAppLink,getInteractiveGuidanceAppLink:F.W.getInteractiveGuidanceAppLink,onClickRemoveItem:null},getChildAppLink:function(e){var t;return F.W.getAppLink(e,{includeContext:null===(t=H.data)||void 0===t?void 0:t.isAuthenticated})},appLink:{application:I.O.DEFAULT,action:T.e.MyFavourites.MY_FAVOURITES},prefetched:!0}):r.createElement(d.j7,null)):r.createElement(r.Fragment,null)}},87821:(e,t,n)=>{n.d(t,{p:()=>i});var r=n(99940),a=n(110),i={userVideoHistory:function(e,t,n,r){var i="video:history",o="{gateway}/v1/users/me/watch-history";return e&&(i+=":".concat(e),o+="?cursor=".concat(e)),{key:i,url:o,formatData:function(e){return{data:e.data.map((function(e){var t=a.O.format(e.lastTimeWatched),n=a.O.format(t,"YYYY-MM-DD");return Object.assign(Object.assign({},e),{lastTimeWatched:t,lastDateWatched:n})})),pagination:e.pagination}},success:t,error:n,always:r}},videoHistory:function(e,t,n,r,a){var i=e.sort().map((function(e){return"videoId=".concat(e)}));return{key:"video:history:videos:".concat(i.join("&")),url:"{gateway}/v1/videos/history?".concat(i.join("&")),normalizeOptions:{namespace:t},formatData:function(e){return(null==e?void 0:e.length)?e.map((function(e){return{id:e.videoId,lastProgressPoint:e.lastProgressPoint}})):e},success:n,error:r,always:a}},removeFromHistory:function(e,t){return{url:"{gateway}/v1/users/me/videos/".concat(e,"/watch-history"),key:"remove:video:history:".concat(e),type:r.k.DELETE,invalidationKeys:["widget:".concat(t)]}}}},97816:(e,t,n)=>{n.d(t,{V:()=>p});var r=n(32735),a=n(20354),i=n(75896),o=n(21750),c=n(31949),s=n(1575),u=n(31908);function l(e,t){if(e){if("string"==typeof e)return d(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)?d(e,t):void 0}}function d(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 m=50;function p(e){var t,n,p=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},f=a.a.useBasicFetch(c.N.currentUser()),v=r.useRef(new Set),g=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(u.M.isVideo(e)||u.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(u.M.isVideo(e)||u.M.isClip(e))})):[]:[]}(e),y=g.map((function(e){return e.id})),h=(t=r.useState([]),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,i,o,c=[],s=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){u=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return c}}(t,n)||l(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.")}()),b=h[0],A=h[1];r.useEffect((function(){if((null==y?void 0:y.length)&&f.hasCompleted){var e=[];y.forEach((function(t){v.current.has(t)||(e.push(t),v.current.add(t))})),e.length&&A((function(t){var n=function(e){return function(e){if(Array.isArray(e))return d(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t);return i.m.chunk(e,m).forEach((function(e){var t;n.push(s.R.videoMixinAssocs(e,p.flightNamespace)),(null===(t=f.data)||void 0===t?void 0:t.isAuthenticated)&&n.push(o.x.hasCurriculumLinks(e,null,p.flightNamespace))})),n}))}}),[null==y?void 0:y.length,f.hasCompleted]),a.a.useBasicFetchAll(b)}}}]);
|
|
2
|
+
//# sourceMappingURL=301-eccaa4c313-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/301-eccaa4c313-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/widgets/curated-widgets/components/header/widget-header.scss","file:///app/packages/libs/shared/src/components/widgets/curated-widgets/components/header/WidgetHeader.tsx","file:///app/packages/libs/shared/src/components/widgets/hooks/useWidgetKeyboard.ts","file:///app/packages/libs/shared/src/components/widgets/items/popout-video-widget-item/PopoutVideoWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/popout-video-widget-item/popout-video-widget-item.scss","file:///app/packages/libs/shared/src/utils/DragHelper.ts","file:///app/packages/libs/shared/src/components/widgets/sliding-list/SlidingListContainer.tsx","file:///app/packages/libs/shared/src/enums/CssMeasurement.ts","file:///app/packages/libs/shared/src/enums/WidgetInteraction.ts","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/hooks/UseMergeAudiences.ts","file:///app/packages/libs/shared/src/utils/audience-helper/AudienceStringBuilders.ts","file:///app/packages/libs/shared/src/utils/audience-helper/AudienceHelper.ts","file:///app/packages/projects/lite/src/apps/default/views/popup-plugin/components/nav-tiles.scss","file:///app/packages/projects/lite/src/apps/default/views/popup-plugin/components/Navtiles.tsx","file:///app/packages/projects/lite/src/apps/default/views/popup-plugin/PopupPluginView.tsx","file:///app/packages/projects/lite/src/apps/default/views/popup-plugin/hooks/useGetVideoHistoryVideos.ts","file:///app/packages/projects/lite/src/apps/watch-history/flight-requests/VideoHistoryRequests.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"seeMore\":\"yv0FS\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, ClickDescriptor, LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { WidgetTypeIdConfig } from 'libs/shared/constants/WidgetTypeIdConfig';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport styles from './widget-header.scss';\n\nconst namespace = 'shared.widgetHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface WidgetHeaderProps {\n name: string;\n description: string | JSX.Element;\n isPreviewing?: boolean;\n content?: any[];\n widgetTypeId?: WidgetTypeId;\n badgeComponent?: JSX.Element;\n\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n \n showSeeMoreLink?: boolean;\n onClick?: () => void;\n}\n\nfunction SeeMore(props: WidgetHeaderProps) {\n return (\n <div className={`ms-3 ${styles.seeMore}`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData }\n analyticsOptions={{\n location: LocationContext.SlidingList,\n ...props.analyticsOptions,\n descriptor: ClickDescriptor.SeeMore\n }}\n className={`text-decoration-none ${props.appLink ? 'curated-widget-link' : ''}`}\n >\n <p className='hover-text-underline text-dark curated-widget-heading'>{getPhrase('seeAll')}</p>\n </AppLink>\n </div>\n );\n}\n\nexport function WidgetHeader(props: WidgetHeaderProps): JSX.Element {\n const hasDescription = !!props.description;\n\n if (!props.name && !props.description)\n return <></>;\n\n const isBelowMinimum = WidgetHelper.isBelowContentMinimum(props.content, props.widgetTypeId);\n const minContent = WidgetTypeIdConfig[props.widgetTypeId]?.minContent ?? 0;\n\n return (\n <div className='curated-widget-header'>\n <div className='d-flex justify-content-between'>\n {!!props.name && (\n <div className='d-flex align-items-center'>\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n className={`text-decoration-none ${props.appLink ? 'curated-widget-link text-reset' : ''}`}\n onClick={props.onClick}\n >\n <h2 className='h4 curated-widget-heading'>\n {props.isPreviewing && isBelowMinimum && (\n <SvgContainer\n svgName={cvSvgLibrary.WarningOutline}\n title={`Widget is below the minimum content threshold of ${minContent} and won't be displayed.`}\n tooltipSpanHack\n tooltipSpanHackClassName='d-inline text-danger me-1'\n />\n )}\n {props.name}\n </h2>\n </AppLink>\n {!!React.isValidElement(props.badgeComponent) && props.badgeComponent}\n </div>\n )}\n {!!props.appLink && !hasDescription && !!props.showSeeMoreLink && <SeeMore {...props}/>}\n </div>\n \n {hasDescription && (\n <div className='d-flex justify-content-between align-items-end'>\n <p className={`description curated-widget-description`}>\n <span>{props.description}</span>\n </p>\n {!!props.appLink && !!props.showSeeMoreLink && <SeeMore {...props}/> }\n </div>\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { DynamicWidgetState } from 'libs/shared/components/widgets/dynamic-widget';\nimport { FixedWidgetState } from 'libs/shared/components/widgets/fixed-widget';\n\n// Sync with transition time in SlidingListContainer.tsx\nconst SLIDER_ANIMATION_TIME = 400;\n\ntype FixedWidgetKeyboardOptions = {\n type: 'fixed',\n state: FixedWidgetState,\n containerRef: React.MutableRefObject<HTMLElement>\n mediaQuery?: never;\n}\n\ntype DynamicWidgetKeyboardOptions = {\n type: 'dynamic',\n state: DynamicWidgetState,\n containerRef: React.MutableRefObject<HTMLElement>\n mediaQuery: string\n}\n\ntype UseWidgetKeyboard = FixedWidgetKeyboardOptions | DynamicWidgetKeyboardOptions\n\nexport function useWidgetKeyboard(options: UseWidgetKeyboard) {\n const { type, state, containerRef, mediaQuery } = options;\n\n const [ isTabbing, setIsTabbing ] = React.useState(false);\n const [ dynamicAttributes, setDynamicAttributes ] = React.useState<HashObject>({});\n const [ focusedWidgetIndex, setFocusedWidgetIndex ] = React.useState(null);\n\n const isTouch = React.useMemo(() => UserAgentHelper.isTouchScreen(), []);\n\n /**\n * Get accessibility attributes for dynamic widget items\n * */\n React.useEffect(() => {\n if (type !== 'dynamic' || !containerRef.current || !(state as DynamicWidgetState).containerLeftPosition || isTouch) return;\n\n setTimeout(() => getDynamicAttributes(), SLIDER_ANIMATION_TIME + 50);\n }, [\n containerRef.current,\n mediaQuery,\n (state as DynamicWidgetState).offset,\n (state as DynamicWidgetState).containerLeftPosition\n ]);\n\n function getDynamicAttributes() {\n const dynamicWidgetState = state as DynamicWidgetState;\n\n if (!containerRef.current?.children)\n return;\n\n const focusableItems = Array.from(containerRef.current.children).reduce((acc, item) => {\n const rect = item?.getBoundingClientRect();\n\n /**\n * When any part of the widget item is visible it should be focusable,\n * otherwise prevent interaction and the slider should be the next focusable element\n * */\n const isItemVisable =\n rect.left < dynamicWidgetState.containerRightPosition &&\n rect.right > dynamicWidgetState.containerLeftPosition;\n\n return {\n ...acc,\n [item.id]: isItemVisable\n ? {\n 'aria-hidden': false\n } : {\n 'aria-hidden': true,\n 'inert': 'true'\n }\n };\n }, {});\n\n setDynamicAttributes(focusableItems);\n }\n\n /**\n * Get accessibility attributes for fixed widget items\n * */\n function getFixedAttributes(index?: number) {\n const fixedWidgetState = state as FixedWidgetState;\n\n const isItemVisible =\n isTouch ||\n index >= (fixedWidgetState.offset - fixedWidgetState.viewableItems) &&\n index < fixedWidgetState.offset;\n if (isItemVisible) {\n return {\n 'aria-hidden': false\n };\n }\n\n return {\n 'inert': 'true',\n 'aria-hidden': true\n };\n }\n\n /**\n * When the user is not signed in, there may be videos which are not focusable.\n * setTimeout is required because the transition time is 400ms\n */\n function focusNext() {\n setTimeout(() => {\n if (!containerRef.current)\n return;\n\n const items = containerRef.current.querySelectorAll('li[aria-hidden]');\n\n let nextFocusableElement: HTMLElement = null;\n\n for (let i = (focusedWidgetIndex + 1); i < items.length; i++) {\n if (nextFocusableElement)\n break;\n\n nextFocusableElement = items[i].querySelector('a[tabindex=\"0\"]');\n }\n\n if (nextFocusableElement)\n nextFocusableElement.focus();\n }, SLIDER_ANIMATION_TIME + 100);\n }\n\n function focusPrev() {\n setTimeout(() => {\n if (!containerRef.current)\n return;\n\n const items = containerRef.current.querySelectorAll('li[aria-hidden]');\n\n let prevFocusableElement: HTMLElement = null;\n for (let i = focusedWidgetIndex - 1; i >= 0; i--) {\n if (prevFocusableElement) break;\n\n const item = items[i];\n prevFocusableElement = item.querySelector('a[tabindex=\"0\"]');\n }\n\n if (prevFocusableElement)\n prevFocusableElement.focus();\n }, SLIDER_ANIMATION_TIME + 100);\n }\n\n function onFocusWidget(index: number) {\n if (document.querySelector('.user-is-tabbing')) {\n setIsTabbing(true);\n setFocusedWidgetIndex(index);\n }\n }\n\n function onBlurWidget() {\n if (!document.querySelector('.user-is-tabbing')) {\n setIsTabbing(false);\n setFocusedWidgetIndex(null);\n }\n }\n\n return {\n isTabbing,\n onFocusWidget,\n onBlurWidget,\n getFixedAttributes,\n dynamicAttributes,\n focusNext,\n focusPrev\n };\n}","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { CanFavouriteFunc, FavouriteFunc, PresentationAudience, Video, VideoTypes, WidgetType, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './popout-video-widget-item.scss';\n\nexport interface PopoutVideoWidgetItemProps extends FixedWidgetItemProps<VideoTypes> {\n canFavourite: CanFavouriteFunc;\n setFavourite: FavouriteFunc;\n presentationAudiences: PresentationAudience[];\n imageCdnUrl: string;\n yearGroups: YearGroup[];\n showVideoGuidance: boolean;\n hideTitle?: boolean;\n hideSeries?: boolean;\n companyLogoFallbackUrl?: string;\n subTextType?: VideoSubTextType;\n getSubTextAppLink?: (video: Video) => Core.AppLink;\n getInteractiveGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getResourceGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getClassroomGuideAppLink: (id: string, type: MasterType) => Core.AppLink;\n onClickRemoveItem: (videoId: string) => void;\n removeButtonTooltip?: string;\n preventPopout?: boolean;\n isPlugin: boolean;\n showNewVideoIndicator?: boolean;\n}\n\nexport const PopoutVideoWidgetItem = React.memo(function(props: PopoutVideoWidgetItemProps): JSX.Element {\n const { data: video, getSubTextAppLink, context, thumbnailSize, preloadImage, presentationAudiences } = props;\n \n const videoAudiences = video?.subjectPresentationAudiences?.data;\n const mergedAudience = useMergeAudiences(videoAudiences, presentationAudiences);\n\n const breakpoints = useBreakpoints();\n\n let width = styles.rowWidth;\n\n if (context.type === WidgetType.LargeRow)\n width = styles.largeRowWidth;\n\n return (\n <div className={`px-1 flex-shrink-0 position-relative ${width}`}>\n <VideoThumbnail\n type={props.preventPopout || breakpoints.xs ? 'static' : 'popout'}\n textPosition={ThumbnailTextPosition.Below}\n video={video}\n appLink={props.getAppLink(video)}\n subTextAppLink={VideoHelper.isVideo(video) && getSubTextAppLink?.(video)}\n imageOptions={{ size: thumbnailSize }}\n preload={preloadImage}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n canFavourite={props.canFavourite}\n setFavourite={props.setFavourite}\n imageCdnUrl={props.imageCdnUrl}\n audience={mergedAudience}\n hideRating={!!mergedAudience}\n hideDuration={false}\n yearGroups={props.yearGroups}\n hideTitle={props.hideTitle}\n showVideoGuidance={props.showVideoGuidance}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n isPlugin={props.isPlugin}\n getInteractiveGuidanceAppLink={props.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={props.getResourceGuidanceAppLink}\n getClassroomGuideAppLink={props.getClassroomGuideAppLink}\n showNewVideoIndicator={props.showNewVideoIndicator}\n onClickRemove={FunctionHelper.isFunction(props.onClickRemoveItem) && (() => props.onClickRemoveItem(video.id))}\n removeButtonTooltip={props.removeButtonTooltip}\n />\n </div>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"rowWidth\":\"JSM4l\",\"largeRowWidth\":\"YYpNz\"};","import { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst blankImage = new Image();\nblankImage.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=';\n\nexport const DragHelper = {\n // This removes the image that appears when you drag a draggable HTML element\n hideDragImage(event: React.DragEvent<HTMLElement>): void {\n if (!event.dataTransfer.setDragImage || !FunctionHelper.isFunction(event.dataTransfer.setDragImage))\n return;\n\n event.dataTransfer.setDragImage(blankImage, 0, 0);\n }\n};","import * as React from 'react';\n\nimport { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { CssMeasurement } from 'libs/shared/enums/CssMeasurement';\nimport { DragHelper } from 'libs/shared/utils/DragHelper';\n\nconst isTouchScreen = UserAgentHelper.isTouchScreen();\n\nconst getPositionStyling = (xPosition: number, measurement: CssMeasurement, dragPercentage?: number) => {\n // Used in situations where a touch screen user is dragging the `<FixedWidget />`\n if (measurement === CssMeasurement.Percentage && dragPercentage)\n xPosition = xPosition - dragPercentage;\n \n return {\n transform: `translate3d(${xPosition}${measurement}, 0px, 0px)`,\n // Sync with transition time in useWidgetKeyboard.ts\n transition: 'transform .4s ease-in-out'\n };\n};\n\ninterface SlidingListContainerProps extends React.PropsWithChildren<unknown> {\n position: number;\n positionType: CssMeasurement;\n\n onDrag?: (event: React.DragEvent<HTMLUListElement>) => void;\n onDragEnd?: () => void;\n\n onTouchMove?: (event: React.TouchEvent<HTMLUListElement>) => void;\n onTouchEnd?: () => void;\n\n percentageDragged?: number;\n}\n\nexport const SlidingListContainer = React.forwardRef((\n props: SlidingListContainerProps,\n ref: React.MutableRefObject<HTMLUListElement>\n): JSX.Element => {\n const { children, positionType, onDrag, onDragEnd, onTouchMove, onTouchEnd, percentageDragged, position = 0 } = props;\n\n function getEventListeners(): HashObject {\n const listenerProps: HashObject = {};\n\n if (onDrag && onDragEnd) {\n listenerProps.draggable = true;\n listenerProps.onDragEnd = onDragEnd;\n listenerProps.onDragStart = DragHelper.hideDragImage;\n listenerProps.onDragOver = onDrag;\n }\n\n if (onTouchMove && onTouchEnd && isTouchScreen) {\n listenerProps.onTouchMoveCapture = onTouchMove;\n listenerProps.onTouchEndCapture = onTouchEnd;\n }\n\n return listenerProps;\n }\n\n return (\n <ul\n className='list-unstyled d-flex flex-nowrap position-relative w-100 mb-0'\n style={getPositionStyling(position, positionType, percentageDragged)}\n ref={ref}\n {...getEventListeners()}\n >\n {children}\n </ul>\n );\n});","export enum CssMeasurement {\n Percentage = '%',\n Pixels = 'px'\n}","export enum WidgetInteraction {\n Init = 'init',\n Next = 'next',\n Previous = 'previous',\n Resize = 'resize',\n Drag = 'drag',\n Update = 'update',\n JumpToIndex = 'jump-to-index'\n}","import { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const chunks = ArrayHelper.chunk<string>(itemIds, 25);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const items = responses.data.length\n ? ArrayHelper.flatten(responses.data).reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n items,\n isFetching: responses.isFetching\n };\n}","import React from 'react';\n\nimport { Audience, PresentationAudience } from '../interfaces';\nimport { AudienceHelper } from '../utils/audience-helper/AudienceHelper';\n\nexport function useMergeAudiences(\n audiences: Audience[],\n presentationAudiences: PresentationAudience[]\n): PresentationAudience {\n // Memoize the audience functions as they are somewhat expensive and the result shouldn't change\n const sortedAudiences = React.useMemo(() => {\n if (!audiences?.length || !presentationAudiences || !AudienceHelper.shouldShowAudiences(presentationAudiences))\n return null;\n\n return AudienceHelper.getSortedPresentationAudiences(audiences, presentationAudiences);\n }, [audiences]);\n\n const mergedAudience = React.useMemo(() => {\n if (!sortedAudiences?.length)\n return null;\n\n return AudienceHelper.getMergedPresentationAudienceString(sortedAudiences);\n }, [sortedAudiences]);\n\n return mergedAudience;\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nconst HAS_NUMBER_REGEX = /\\d/;\nconst COUNT_OFFSET = 1;\n\nexport const AudienceStringBuilders = {\n /**\n * Handles audience sets like:\n * - Year 7, Year 8, etc\n * - Kindergarten, Grade 1, Grade 2, etc\n */\n yearsAndGradesBuilder(audiences: PresentationAudience[]): string {\n /**\n * Create a string with all of the audiences\n */\n const combinedNames = audiences.map(a => a.name).join(' ');\n\n /**\n * Extract all the numbers and matches from the string\n */\n const numberList = combinedNames.split(' ').filter(name => !isNaN(+name)).map(num => +num) || [];\n const wordList = combinedNames.split(' ').filter(name => isNaN(+name)) || [];\n\n // Find an audience that doesn't have a number, like \"Kindergarten\" or \"Foundation\".\n const audienceWithoutNum = audiences.find(p => {\n return !HAS_NUMBER_REGEX.test(p.name);\n });\n\n // Get audience label prefix\n let prefix = wordList.find(name => name !== audienceWithoutNum?.name);\n\n // Pluralise the prefix is there are multiple audiences\n if (audiences.length > 1)\n prefix += 's';\n\n if (audienceWithoutNum && numberList.length)\n return `${prefix} ${audienceWithoutNum.name.charAt(0)} - ${numberList.pop()}`;\n\n /**\n * Build set of logical audience ranges\n */\n const audienceRange = processAudienceRanges(numberList);\n\n return `${prefix} ${audienceRange.join(', ')}`;\n },\n\n internationalSecondaryBuilder(audiences: PresentationAudience[]): string {\n return AudienceStringBuilders.englandSecondaryBuilder(audiences);\n },\n\n scotlandPrimaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n let [firstAudienceLevel] = firstAudience.name.split(' ');\n let [lastAudienceLevel] = lastAudience.name.split(' ');\n\n if (firstAudienceLevel === 'First')\n firstAudienceLevel = '1st';\n\n if (lastAudienceLevel === 'First')\n lastAudienceLevel = '1st';\n\n if (firstAudienceLevel === 'Second')\n firstAudienceLevel = '2nd';\n\n if (lastAudienceLevel === 'Second')\n lastAudienceLevel = '2nd';\n\n if (firstAudienceLevel === lastAudienceLevel)\n return `${firstAudienceLevel} Level`;\n\n return `${firstAudienceLevel} - ${lastAudienceLevel} Level`;\n },\n\n internationalPrimaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n let [firstAudienceLevel] = firstAudience.name.split(' ');\n let [lastAudienceLevel] = lastAudience.name.split(' ');\n\n if (firstAudienceLevel === 'Lower')\n firstAudienceLevel = 'Low';\n\n if (lastAudienceLevel === 'Lower')\n lastAudienceLevel = 'Low';\n\n if (firstAudienceLevel === 'Middle')\n firstAudienceLevel = 'Mid';\n\n if (lastAudienceLevel === 'Middle')\n lastAudienceLevel = 'Mid';\n\n return `${firstAudienceLevel} - ${lastAudienceLevel} Pri`;\n },\n\n /**\n * Handles the english secondary audiences, which can be: Lower Secondary, Upper Secondary, and Advanced\n */\n englandSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Advanced') {\n const [level] = firstAudience.name.split(' ');\n\n if (level.toLowerCase() === 'lower')\n return 'Lower Sec - Adv';\n\n return 'Upper Sec - Adv';\n }\n\n return 'Lower - Upper Sec';\n },\n\n scotlandSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Senior Phase')\n return `${firstAudience.name} - Senior`;\n\n return 'Third - Fourth Level';\n },\n\n /**\n * Handles the audience set: Reception, Key Stage 1, Lower Key Stage 2, and Upper Key Stage 2\n */\n englandPrimaryBuilder(audiences: PresentationAudience[]): string {\n // The first and last audience will build out the range\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n // The first word in the strings will either be \"Upper\", \"Lower\", \"Key\", or \"Reception\"\n const firstAudienceFirstWord = ArrayHelper.first(firstAudience.name.split(' '));\n const lastAudienceFirstWord = ArrayHelper.first(lastAudience.name.split(' '));\n\n // Each audience in this set except for \"Reception\" has a number. Get the numbers for the first and last audiences\n const firstAudienceNumber = firstAudience.name.split(' ').find(word => !isNaN(+word));\n const lastAudienceNumber = lastAudience.name.split(' ').find(word => !isNaN(+word));\n\n // If there's only one audience on the video:\n if (firstAudience === lastAudience) {\n // For these 2 audiences, return the full name as it's short enough already\n if (firstAudienceFirstWord === 'Key' || firstAudienceFirstWord === 'Reception')\n return firstAudience.name;\n\n // For the Upper/Lower key stage audiences, abbreviate the \"key stage\" part to KS1/KS2\n return `${firstAudienceFirstWord} KS${firstAudienceNumber}`;\n }\n\n /**\n * Handle when the object has >1 audience\n */\n\n let firstAudienceString = '';\n let lastAudienceString = '';\n\n // Reception is always shortened to \"R\" when in a range\n if (firstAudienceFirstWord === 'Reception') {\n firstAudienceString = 'R';\n } else {\n // All other audiences will be abbreviated to \"KS1/KS2\"\n firstAudienceString = `KS${firstAudienceNumber}`;\n }\n\n // The last audience will always be a key stage, so abbreviate this too\n lastAudienceString = `KS${lastAudienceNumber}`;\n\n // If the audience range contains both the \"Lower\" and \"Upper\" audiences, abbreviate those and return\n if (firstAudienceFirstWord === 'Lower' && lastAudienceFirstWord === 'Upper') {\n return `L ${firstAudienceString} - U ${lastAudienceString}`;\n }\n\n // Add \"Lower\" and \"Upper\" to the strings if it's needed\n if (firstAudienceFirstWord === 'Lower') {\n firstAudienceString = `Lower ${firstAudienceString}`;\n }\n\n if (lastAudienceFirstWord === 'Upper') {\n lastAudienceString = `Upper ${lastAudienceString}`;\n }\n\n // This handles a case where the range is Reception - Key Stage 1. In which case we don't abbreviate the key stage part to KS1.\n if (lastAudienceFirstWord === 'Key') {\n lastAudienceString = lastAudience.name;\n }\n\n return `${firstAudienceString} - ${lastAudienceString}`;\n }\n};\n\nfunction processAudienceRanges(audienceValues: number[]): string[] {\n /**\n * Lookahead by increments of offset\n */\n const offset = COUNT_OFFSET;\n\n let initialVal; let nextVal;\n let isContinguous: boolean = false;\n\n const ranges: string[] = [];\n\n // Audience values need to be in ascending order\n audienceValues = audienceValues.sort((a, b) => a - b);\n\n let i; let j;\n\n for (i = 0; i < audienceValues.length; i++) {\n j = i + 1;\n\n // Set our lower boundary to compare against\n if (!isContinguous)\n initialVal = audienceValues[i];\n\n nextVal = audienceValues[j];\n\n /**\n * Where the next number is also the next incremental value\n * we're going to continue iterating until the next value\n * is no longer contiguos.\n */\n if (audienceValues[i] + offset === nextVal) {\n isContinguous = true;\n } else if (isContinguous) {\n /**\n * Where we were tracking a contiguous set, format appropriately \n * and store the vals\n */\n\n ranges.push(`${initialVal} - ${audienceValues[i]}`);\n isContinguous = false;\n } else {\n /**\n * Where the values arent contiguous, just store the current value\n */\n\n ranges.push(`${audienceValues[i]}`);\n isContinguous = false;\n }\n }\n\n return ranges;\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { Audience, AudienceFilterParams, BaseObject, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { AudienceStringBuilders } from './AudienceStringBuilders';\n\nconst DIGIT_REGEX = /([0-9]+)/ig;\nconst SPACE_REGEX = /\\s|\\+/ig;\n\n/**\n * Where there is 1 or less audiences on a presentation, it provides little value to\n * the user's experience, so we'll hide audiences altogether.\n */\nconst MIN_AUDIENCE_THRESHOLD = 1;\n\nexport const AudienceHelper = {\n /**\n * This is needed to sort an object's audiences, as they are not sorted by the backend.\n * To do this, we take the presentation audiences (sorted) and filter them by the object's\n * audiences, leaving behind a sorted array of object audiences.\n */\n getSortedPresentationAudiences(\n objectAudiences: Audience[],\n presentationAudiences: PresentationAudience[]\n ): PresentationAudience[] {\n /**\n * Atm there is a bug in flight's optimize, around multiple parts of the page \n * fetching the same object with a different response. We are filtering out\n * falsey values in our object audience ids until that's fixed. - Sha\n */\n const objectAudienceIds = objectAudiences\n .filter(v => !!v)\n .map(audience => audience.id.toString());\n\n /**\n * Remove audiences that aren't relevant for the user's current presentation\n */\n const filteredAudiences = presentationAudiences.filter(presAudience => {\n return objectAudienceIds.includes(presAudience.masterId.toString());\n });\n\n return filteredAudiences;\n },\n\n /**\n * This function accepts a set of presentation audiences, and returns a single\n * audience where the name is a merged string of the names of all of the audiences passed in.\n *\n * As we add more presentations that have different audience sets, we'll need to extend the `switch`\n * statement below to either include new string builder functions, or to include new presentation IDs\n * for existing string builder functions.\n */\n getMergedPresentationAudienceString(presentationAudiences: PresentationAudience[]): PresentationAudience {\n const { presentationId } = ArrayHelper.first(presentationAudiences);\n\n let mergedAudienceString = '';\n\n switch (+presentationId) {\n // Generic `Name Number`. Sometimes has just name. Examples: Year 12, Grade 4, Kindergarten\n case HardCoded.PresentationIds.DEFAULT:\n case HardCoded.PresentationIds.AU_SECONDARY:\n case HardCoded.PresentationIds.US_ELEMENTARY:\n case HardCoded.PresentationIds.AU_PRIMARY:\n case HardCoded.PresentationIds.STREAMABLE_LEARNING:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n mergedAudienceString = AudienceStringBuilders.yearsAndGradesBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.INT_SECONDARY:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n // TODO: Implement this properly\n mergedAudienceString = AudienceStringBuilders.internationalSecondaryBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.INT_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.internationalPrimaryBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.SCT_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.scotlandPrimaryBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.ENG_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.englandSecondaryBuilder(presentationAudiences);\n break;\n\n \n case HardCoded.PresentationIds.SCT_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.scotlandSecondaryBuilder(presentationAudiences);\n break;\n\n // Key Stage 1, Lower Key Stage 2, etc.\n case HardCoded.PresentationIds.ENG_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.englandPrimaryBuilder(presentationAudiences);\n break;\n\n // These presentations only have 1 audience mapped. These are never shown as badges in the product.\n case HardCoded.PresentationIds.US_MIDDLE:\n case HardCoded.PresentationIds.US_HIGH:\n case HardCoded.PresentationIds.AU_TERTIARY:\n case HardCoded.PresentationIds.UK_TERTIARY:\n default:\n break;\n }\n\n if (!mergedAudienceString)\n return null;\n\n return { name: mergedAudienceString } as PresentationAudience;\n },\n\n /**\n * This function assumes the members array passed in is ordered by `name`.\n */\n sortMembersWithDuplicateNamesByAudience(members: BaseObject[]): BaseObject[] {\n // Returns the lowest level audience out of an array of audience objects by looking at the name\n const getLowestAudience = (audiences: Audience[]) => {\n if (!audiences.length)\n return null;\n\n let lowestAudience: Audience;\n let lowestAudienceDigit: number;\n\n audiences.forEach(audience => {\n const digit = +ArrayHelper.first(audience.name.match(DIGIT_REGEX));\n\n if (!lowestAudience) {\n lowestAudience = audience;\n lowestAudienceDigit = digit;\n return;\n }\n\n if (digit < lowestAudienceDigit)\n lowestAudience = audience;\n });\n\n return lowestAudience;\n };\n\n // This is used to track how many times a member's name appears in the collection\n const nameCountMap: HashObject<number> = {};\n\n let sorted: BaseObject[] = [];\n\n members.forEach(member => {\n if (!nameCountMap[member.name]) {\n nameCountMap[member.name] = 1;\n sorted.push(member);\n return;\n }\n\n sorted.push(member);\n nameCountMap[member.name]++;\n\n // Take the slice of duplicates that we want to sort by audience\n const slice = sorted.splice(sorted.length - nameCountMap[member.name]);\n\n // Sort the slice by lowest audience\n const sortedSlice = slice.sort((a: any, b: any) => {\n const firstObjLowestAudience = getLowestAudience(a.subjectPresentationAudiences.data);\n const secondObjLowestAudience = getLowestAudience(b.subjectPresentationAudiences.data);\n\n if (!firstObjLowestAudience && secondObjLowestAudience)\n return 1;\n\n if (!secondObjLowestAudience)\n return -1;\n\n const comparison = firstObjLowestAudience.name.localeCompare(secondObjLowestAudience.name);\n\n if (comparison === 0) return comparison;\n\n return comparison > 0 ? -1 : 1;\n });\n\n sorted = sorted.concat(sortedSlice);\n });\n\n return sorted;\n },\n\n getActiveAudiencesFromParams(audiences: PresentationAudience[], params: HashObject = {}): PresentationAudience[] {\n if (!ObjectHelper.isObject(params) || ObjectHelper.isEmpty(params))\n return;\n\n if (!audiences || !audiences.length)\n return;\n\n if (!AudienceHelper.shouldShowAudiences(audiences))\n return;\n\n // 'a' is shorthand for audience\n let { a } = params;\n\n if (!a)\n return;\n\n // Only a single query param was passed, we'll wrap it in an array\n if (typeof a === 'string')\n a = [a];\n\n const normalizeAudienceName = (audienceName: string) => {\n return audienceName.replace(SPACE_REGEX, '').toLowerCase();\n };\n\n // Build an audience lookup\n const audienceLookup = a.reduce((state: HashObject, audienceStr: string) => {\n state[normalizeAudienceName(audienceStr)] = audienceStr;\n return state;\n }, {});\n\n // Filter out our active audience based on whether their name matches the lookup object\n return audiences.filter((audience: PresentationAudience) => {\n return audienceLookup[normalizeAudienceName(audience.name)];\n });\n },\n\n getAudienceParams(audiences: PresentationAudience[]): AudienceFilterParams {\n if (!audiences?.length)\n return null;\n\n return { a: audiences.map(a => a.name) };\n },\n\n shouldShowAudiences(audiences: PresentationAudience[] = []): boolean {\n if (!audiences)\n return false;\n\n return audiences.length > MIN_AUDIENCE_THRESHOLD;\n }\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"leftNavIcon\":\"ssG3i\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CuratedDashboard, Library } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { LeftNavId } from 'shared/enums/LeftNavId';\nimport { LeftNavConfig } from 'shared/views/left-nav/LeftNavConfig';\n\nimport { LibraryHelper } from 'apps/libraries/utils/LibraryHelper';\n\nimport styles from './nav-tiles.scss';\n\nconst namespace = 'default.popupPlugin';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface NavItemTileProps {\n id: LeftNavId;\n name: string;\n imageUrl?: string;\n iconClassName: string;\n svgName: string;\n appLink: Core.AppLink;\n}\n\nfunction NavItemTile(props: NavItemTileProps): JSX.Element {\n return (\n <li className='col-6 mb-3'>\n <AppLink\n appLink={props.appLink}\n className={`border rounded-3 d-flex align-items-center\n justify-content-center flex-column text-decoration-none h-100 py-3 px-1 text-center`}\n >\n <div className={`${styles.leftNavIcon} ${props.iconClassName} mx-auto mb-3`}>\n <IconCircle\n imageUrl={ImageHelper.createUrl(props.imageUrl, { size: ImageSize.Small })}\n svgName={props.svgName}\n svgSize={SvgContainerSize.Large}\n />\n </div>\n <div className='h6'>\n {props.name}\n </div>\n </AppLink>\n </li>\n );\n}\n\ninterface NavTilesProps {\n hasPermissions: HasPermissionsFunc;\n moviesAndTvDashboard: CuratedDashboard;\n libraries: Library[];\n hasInsights?: boolean;\n}\n\nexport function NavTiles(props: NavTilesProps): JSX.Element {\n const { hasPermissions, moviesAndTvDashboard, libraries } = props;\n\n function shouldShowLibraries(): boolean {\n if (!libraries?.length)\n return false;\n\n if (!hasPermissions(PermissionName.StudentExperience))\n return true;\n\n return hasPermissions(PermissionName.ViewLibraries);\n }\n\n function showNavItem(leftNavId: LeftNavId) {\n switch (leftNavId) {\n case LeftNavId.StudentFeed: return hasPermissions(PermissionName.StudentExperience);\n case LeftNavId.Discover: return hasPermissions(PermissionName.ViewDiscover);\n case LeftNavId.MoviesAndTv: return hasPermissions(PermissionName.ViewMoviesTv);\n case LeftNavId.Libraries: return shouldShowLibraries();\n case LeftNavId.Classrooms: return hasPermissions(PermissionName.ViewClassrooms);\n case LeftNavId.MyShares: return hasPermissions(PermissionName.ViewMyShares) && props.hasInsights;\n default: return true;\n }\n }\n\n return (\n <ul className='list-unstyled row row-cols-md-5'>\n {showNavItem(LeftNavId.StudentFeed) && (\n <NavItemTile\n id={LeftNavId.StudentFeed}\n appLink={LeftNavConfig[LeftNavId.StudentFeed].appLink}\n name={getPhrase('home')}\n iconClassName='bg-purple'\n svgName={cvSvgLibrary.House}\n />\n )}\n {showNavItem(LeftNavId.Discover) && (\n <NavItemTile\n id={LeftNavId.Discover}\n appLink={LeftNavConfig[LeftNavId.Discover].appLink}\n name={getPhrase('discover')}\n iconClassName='bg-blue'\n svgName={cvSvgLibrary.Compass}\n />\n )}\n {showNavItem(LeftNavId.MoviesAndTv) && !!moviesAndTvDashboard && (\n <NavItemTile\n id={LeftNavId.MoviesAndTv}\n appLink={LeftNavConfig[LeftNavId.MoviesAndTv].appLink}\n name={getPhrase('moviesAndTv')}\n iconClassName='bg-indigo'\n svgName={cvSvgLibrary.Popcorn}\n />\n )}\n <NavItemTile\n id={LeftNavId.Playlists}\n appLink={LeftNavConfig[LeftNavId.Playlists].appLink}\n name={getPhrase('playlists')}\n iconClassName='bg-green'\n svgName={cvSvgLibrary.Playlist}\n />\n <NavItemTile\n id={LeftNavId.MyVideos}\n appLink={LeftNavConfig[LeftNavId.MyVideos].appLink}\n name={getPhrase('myVideos')}\n iconClassName='bg-orange'\n svgName={cvSvgLibrary.Video}\n />\n {showNavItem(LeftNavId.MyShares) && (\n <NavItemTile\n id={LeftNavId.MyShares}\n appLink={LeftNavConfig[LeftNavId.MyShares].appLink}\n name={getPhrase('myShares')}\n iconClassName='bg-ultramarine'\n svgName={cvSvgLibrary.Share}\n />\n )}\n {showNavItem(LeftNavId.Libraries) && (\n LibraryHelper.sort(libraries).map((library, index) => (\n <NavItemTile\n key={index}\n id={LeftNavId.Library}\n name={library.name}\n appLink={{\n ...LeftNavConfig[LeftNavId.Library].appLink,\n args: [ library.id, TextHelper.slugify(library.name) ]\n }}\n iconClassName='bg-teal'\n imageUrl={library.owner?.logo?.url}\n svgName={!(library.owner?.logo?.url) && cvSvgLibrary.Library}\n />\n ))\n )}\n </ul>\n );\n}","import React from 'react';\nimport { Radio } from 'backbone';\n\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { FixedWidget, PartialFixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { PopoutVideoWidgetItem, PopoutVideoWidgetItemProps } from 'libs/shared/components/widgets/items/popout-video-widget-item/PopoutVideoWidgetItem';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { FavouriteRequests } from 'libs/shared/flight-requests/FavouriteRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useListenOn } from 'libs/shared/hooks/UseListenOn';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, DashboardTargetType, Library, PresentationAudience, VideoTypesCollection, YearGroup } from 'libs/shared/interfaces';\nimport { LayoutHelper } from 'libs/shared/utils/LayoutHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { NavTiles } from 'apps/default/views/popup-plugin/components/Navtiles';\nimport { useGetVideoHistory } from 'apps/default/views/popup-plugin/hooks/useGetVideoHistoryVideos';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'default.popupPlugin';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\nexport function PopupPluginView(): JSX.Element {\n const { isPlugin } = usePluginHelper();\n const { focusSearchBar } = useFocusSearchBar();\n const { hasNewSearch } = useSettings(null);\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n /**\n * Required for video widgets\n */\n const { activePresentation } = usePresentation();\n const { hasPermissions, isLoaded } = usePermissions();\n const { hasInsights } = useSettings(null);\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n\n /**\n * Watch history videos\n */\n const videoHistory = useGetVideoHistory();\n\n /**\n * Favourite videos\n */\n const favouriteVideos = Flight.useBasicFetch<VideoTypesCollection>(\n currentUser.data && FavouriteRequests.getFavourites(currentUser.data.id)\n );\n\n /**\n * Required for displaying our Nav item tiles.\n */\n const libraries = Flight.useBasicFetch<Library[]>(\n hasPermissions(PermissionName.ViewLibraries) &&\n LibraryRequests.domainLibraries([ 'customLibrary', 'sharedLibrary' ])\n );\n const {\n dashboard: moviesAndTvDashboard\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.MoviesAndTv,\n queryParams: {}\n });\n Flight.useBasicFetch(!!libraries.data?.length &&\n LibraryRequests.librariesWithOwnerLogos(libraries.data.map(s => s.id)));\n\n useListenOn(CommonChannels.SHELL, Core.EventNames.ROUTE, appLink => {\n /**\n * Ignore applinks with no href. Like the embed popup - Sha\n */\n if (!Core.AppLinkHelper.getHref(appLink))\n return;\n\n /**\n * Enable the nav as we leave our popup view - Sha\n */\n LayoutHelper.enableNav();\n\n if (hasNewSearch)\n return;\n \n /**\n * Re-focus the search bar when the routing has ended.\n * We need to do this because the user may be mid typing, but the layout\n * re-render causes the search bar to lose focus - Sha\n */\n Radio.channel(CommonChannels.SHELL).once('routing:end', focusSearchBar);\n });\n\n const hasLoaded = (\n moviesAndTvDashboard.hasCompleted &&\n isLoaded &&\n (!hasPermissions(PermissionName.ViewLibraries) || libraries.hasCompleted) &&\n config.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <div className='px-4'>\n <NavTiles\n hasPermissions={hasPermissions}\n moviesAndTvDashboard={moviesAndTvDashboard.data}\n libraries={libraries.data}\n hasInsights={hasInsights}\n />\n\n {videoHistory.hasCompleted ?\n <div className='mb-3'>\n <FixedWidget<PopoutVideoWidgetItemProps>\n name={getPhrase('recentlyWatched')}\n collection={videoHistory.data || []}\n contents={WidgetContents.Videos}\n childComponent={PopoutVideoWidgetItem}\n extraChildComponentProps={{\n setFavourite,\n canFavourite,\n presentationAudiences: audiences.data,\n getSubTextAppLink: SeriesAppLinkHelper.getSeriesAppLink,\n imageCdnUrl: config.data.imageCdnUrl,\n yearGroups: yearGroups.data,\n showVideoGuidance: VideoHelper.showVideoGuidance(hasPermissions),\n isPlugin,\n getClassroomGuideAppLink: VideoAppLinkHelper.getClassroomGuideAppLink,\n getResourceGuidanceAppLink: VideoAppLinkHelper.getResourceGuidanceAppLink,\n getInteractiveGuidanceAppLink: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n onClickRemoveItem: null\n }}\n getChildAppLink={v =>\n VideoAppLinkHelper.getAppLink(v, { includeContext: currentUser.data?.isAuthenticated })}\n appLink={{\n application: AppChannels.WATCH_HISTORY,\n action: Actions.WatchHistory.HOME\n }}\n prefetched\n />\n </div> :\n <div className='mb-3'><PartialFixedWidget /></div>\n }\n\n {favouriteVideos.hasCompleted ?\n <FixedWidget<PopoutVideoWidgetItemProps>\n name={getPhrase('favourites')}\n collection={favouriteVideos.data.data || []}\n contents={WidgetContents.Videos}\n childComponent={PopoutVideoWidgetItem}\n extraChildComponentProps={{\n setFavourite,\n canFavourite,\n presentationAudiences: audiences.data,\n getSubTextAppLink: SeriesAppLinkHelper.getSeriesAppLink,\n imageCdnUrl: config.data.imageCdnUrl,\n yearGroups: yearGroups.data,\n showVideoGuidance: VideoHelper.showVideoGuidance(hasPermissions),\n isPlugin,\n getClassroomGuideAppLink: VideoAppLinkHelper.getClassroomGuideAppLink,\n getResourceGuidanceAppLink: VideoAppLinkHelper.getResourceGuidanceAppLink,\n getInteractiveGuidanceAppLink: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n onClickRemoveItem: null\n }}\n getChildAppLink={v =>\n VideoAppLinkHelper.getAppLink(v, { includeContext: currentUser.data?.isAuthenticated })}\n appLink={{\n application: AppChannels.DEFAULT,\n action: Actions.MyFavourites.MY_FAVOURITES\n }}\n prefetched\n /> :\n <PartialFixedWidget />\n }\n </div>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { VideoHistoryCollection, VideoTypes } from 'libs/shared/interfaces';\n\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { VideoHistoryRequests } from 'apps/watch-history/flight-requests/VideoHistoryRequests';\n\nexport function useGetVideoHistory() {\n const videoHistory = Flight.useBasicFetch<VideoHistoryCollection>(VideoHistoryRequests.userVideoHistory());\n\n const videosFetchResult = useBatchFetch<VideoTypes>(\n videoHistory.data?.data?.map(v => v.videoId) ?? [],\n VideoRequests.watchHistoryVideos\n );\n\n /**\n * We must do this to get the videos back into the correct order - Sha\n */\n const videoHistoryVideos = React.useMemo(() => {\n const videosMap = new Map<string, VideoTypes>();\n\n videoHistory.data?.data?.forEach(history => {\n if (videosMap.has(history.videoId))\n return;\n\n const video = videosFetchResult.items?.[history.videoId];\n\n if (video)\n videosMap.set(history.videoId, video);\n });\n\n return [...videosMap.values()];\n }, [ videosFetchResult.items, videoHistory.data ]);\n \n useVideoMixin(videoHistoryVideos);\n\n return {\n data: videoHistoryVideos,\n hasCompleted: !videosFetchResult.isFetching\n };\n}","\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { VideoHistoryCollection } from 'libs/shared/interfaces';\n\nexport const VideoHistoryRequests = {\n userVideoHistory(\n cursor?: string,\n success?: (data: HashObject) => void,\n error?: (Xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n let key = 'video:history';\n let url = `{gateway}/v1/users/me/watch-history`;\n\n if (cursor) {\n key += `:${cursor}`;\n url += `?cursor=${cursor}`;\n }\n\n return {\n key,\n url,\n formatData: (historyCollection: VideoHistoryCollection) => {\n return {\n data: historyCollection.data.map(historyData => {\n // Convert last watched times from UTC to local time\n const lastTimeWatchedLocal = DateHelper.format(historyData.lastTimeWatched);\n const lastDateWatchedLocal = DateHelper.format(lastTimeWatchedLocal, 'YYYY-MM-DD');\n\n return {\n ...historyData,\n lastTimeWatched: lastTimeWatchedLocal,\n lastDateWatched: lastDateWatchedLocal\n };\n }),\n pagination: historyCollection.pagination\n };\n },\n success,\n error,\n always\n };\n },\n\n videoHistory(\n ids: string[],\n namespace?: string,\n success?: (data: HashObject) => void,\n error?: (Xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n const params = ids.sort().map(i => `videoId=${i}`);\n\n return {\n key: `video:history:videos:${params.join('&')}`,\n url: `{gateway}/v1/videos/history?${params.join('&')}`,\n normalizeOptions: {\n namespace\n },\n formatData: (historyCollection: HashObject[]) => {\n if (!historyCollection?.length)\n return historyCollection;\n\n /**\n * Data is formatted to enable it to be merged with the existing video object in the store\n * Where we need to merge more history properties with the video object, map them below.\n */\n return historyCollection.map((watchHistory: HashObject) => ({\n id: watchHistory.videoId,\n lastProgressPoint: watchHistory.lastProgressPoint\n }));\n },\n success,\n error,\n always\n };\n },\n\n removeFromHistory(videoId: string, widgetId: string): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/videos/${videoId}/watch-history`,\n key: `remove:video:history:${videoId}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [\n `widget:${widgetId}`\n ]\n };\n }\n};","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Clip, ClipCollection, CurrentUser, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst CHUNK_SIZE = 50;\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}): void {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const hydratedVideos = React.useRef<Set<string>>(new Set<string>());\n\n const videos = getValidObjects(objects);\n\n const videoIds = videos.map(v => v.id);\n\n const [ request, setRequest ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!videoIds?.length || !currentUser.hasCompleted)\n return;\n\n const unhydratedVideos: string[] = [];\n\n videoIds.forEach(id => {\n if (!hydratedVideos.current.has(id)) {\n unhydratedVideos.push(id);\n hydratedVideos.current.add(id);\n }\n });\n \n if (!unhydratedVideos.length)\n return;\n\n setRequest(r => {\n const newRequests = [...r] ;\n\n ArrayHelper.chunk<string>(unhydratedVideos, CHUNK_SIZE).forEach(chunk => {\n newRequests.push(VideoRequests.videoMixinAssocs(chunk, options.flightNamespace));\n\n if (currentUser.data?.isAuthenticated)\n newRequests.push(ClassificationRequests.hasCurriculumLinks(chunk, null, options.flightNamespace));\n });\n\n return newRequests;\n });\n }, [ videoIds?.length, currentUser.hasCompleted ]);\n\n Flight.useBasicFetchAll(request);\n}"],"names":["getPhrase","LanguageService","SeeMore","props","className","AppLink","appLink","analyticsData","analyticsOptions","location","descriptor","WidgetHeader","hasDescription","description","name","isBelowMinimum","WidgetHelper","content","widgetTypeId","minContent","WidgetTypeIdConfig","onClick","isPreviewing","SvgContainer","svgName","title","tooltipSpanHack","tooltipSpanHackClassName","badgeComponent","showSeeMoreLink","SLIDER_ANIMATION_TIME","useWidgetKeyboard","options","type","state","containerRef","mediaQuery","isTabbing","setIsTabbing","dynamicAttributes","setDynamicAttributes","focusedWidgetIndex","setFocusedWidgetIndex","isTouch","current","containerLeftPosition","setTimeout","dynamicWidgetState","children","focusableItems","Array","from","reduce","acc","item","rect","getBoundingClientRect","isItemVisable","left","containerRightPosition","right","id","getDynamicAttributes","offset","onFocusWidget","index","document","querySelector","onBlurWidget","getFixedAttributes","fixedWidgetState","viewableItems","focusNext","items","querySelectorAll","nextFocusableElement","i","length","focus","focusPrev","prevFocusableElement","PopoutVideoWidgetItem","video","data","getSubTextAppLink","context","thumbnailSize","preloadImage","presentationAudiences","videoAudiences","subjectPresentationAudiences","mergedAudience","breakpoints","useBreakpoints","width","VideoThumbnail","preventPopout","xs","textPosition","ThumbnailTextPosition","getAppLink","subTextAppLink","VideoHelper","imageOptions","size","preload","canFavourite","setFavourite","imageCdnUrl","audience","hideRating","hideDuration","yearGroups","hideTitle","showVideoGuidance","companyLogoFallbackUrl","subTextType","isPlugin","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","getClassroomGuideAppLink","showNewVideoIndicator","onClickRemove","FunctionHelper","onClickRemoveItem","removeButtonTooltip","blankImage","Image","src","DragHelper","event","dataTransfer","setDragImage","isTouchScreen","UserAgentHelper","SlidingListContainer","ref","listenerProps","xPosition","measurement","dragPercentage","positionType","onDrag","onDragEnd","onTouchMove","onTouchEnd","percentageDragged","position","style","CssMeasurement","C","transform","transition","draggable","onDragStart","onDragOver","onTouchMoveCapture","onTouchEndCapture","WidgetInteraction","useBatchFetch","itemIds","getRequest","requests","map","chunk","responses","isFetching","useMergeAudiences","audiences","sortedAudiences","HAS_NUMBER_REGEX","AudienceStringBuilders","yearsAndGradesBuilder","combinedNames","a","join","numberList","split","filter","isNaN","num","wordList","audienceWithoutNum","find","p","test","prefix","charAt","pop","audienceRange","audienceValues","initialVal","nextVal","j","isContinguous","ranges","sort","b","push","processAudienceRanges","internationalSecondaryBuilder","englandSecondaryBuilder","scotlandPrimaryBuilder","firstAudience","ArrayHelper","lastAudience","firstAudienceLevel","lastAudienceLevel","internationalPrimaryBuilder","toLowerCase","scotlandSecondaryBuilder","englandPrimaryBuilder","firstAudienceFirstWord","lastAudienceFirstWord","firstAudienceNumber","word","lastAudienceNumber","firstAudienceString","lastAudienceString","DIGIT_REGEX","SPACE_REGEX","AudienceHelper","getSortedPresentationAudiences","objectAudiences","objectAudienceIds","v","toString","presAudience","includes","masterId","getMergedPresentationAudienceString","mergedAudienceString","presentationId","HardCoded","sortMembersWithDuplicateNamesByAudience","members","getLowestAudience","forEach","digit","match","lowestAudience","lowestAudienceDigit","nameCountMap","sorted","member","sortedSlice","splice","firstObjLowestAudience","secondObjLowestAudience","comparison","localeCompare","concat","getActiveAudiencesFromParams","params","ObjectHelper","shouldShowAudiences","normalizeAudienceName","audienceName","replace","audienceLookup","audienceStr","getAudienceParams","NavItemTile","iconClassName","IconCircle","imageUrl","ImageHelper","svgSize","S","NavTiles","hasPermissions","moviesAndTvDashboard","libraries","showNavItem","leftNavId","LeftNavId","PermissionName","hasInsights","LeftNavConfig","LibraryHelper","library","key","args","TextHelper","owner","logo","url","PopupPluginView","usePluginHelper","focusSearchBar","hasNewSearch","useSettings","useSetPageMetadata","activePresentation","usePresentation","usePermissions","isLoaded","useLiteFavourites","u","config","ConfigRequests","currentUser","UserRequests","isAuthenticated","CustomerRequests","customerId","AudienceRequests","videoHistory","VideoHistoryRequests","videosFetchResult","videoId","VideoRequests","videoHistoryVideos","videosMap","Map","history","has","set","values","useVideoMixin","hasCompleted","useGetVideoHistory","favouriteVideos","FavouriteRequests","LibraryRequests","targetType","queryParams","dashboard","s","CommonChannels","LayoutHelper","Radio","once","collection","contents","WidgetContents","childComponent","extraChildComponentProps","SeriesAppLinkHelper","VideoAppLinkHelper","getChildAppLink","includeContext","application","action","prefetched","userVideoHistory","cursor","success","error","always","formatData","historyCollection","historyData","lastTimeWatchedLocal","lastTimeWatched","lastDateWatchedLocal","lastDateWatched","pagination","ids","namespace","normalizeOptions","watchHistory","lastProgressPoint","removeFromHistory","widgetId","invalidationKeys","CHUNK_SIZE","objects","hydratedVideos","Set","videos","isArray","o","getValidObjects","videoIds","request","setRequest","unhydratedVideos","add","r","newRequests","flightNamespace"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4359],{71553:(e,t,n)=>{n.d(t,{I:()=>l});var a=n(99940),r=n(62875);function i(e,t){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:{start:t.start,end:t.end},userIds:t.userId,classroomsAndGroups:t.groupId}}var l={interactiveResultSet:function(e,t,n,l,s,c,o,m){return{url:s?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(t):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(t),key:(0,r.H)("interactive:result:set:".concat(e,":").concat(t),l),data:i(n,l),type:a.k.POST,normalize:!1,formatData:function(e){return Object.assign(Object.assign({},e),{students:e.students.map((function(e){return e.name&&e.profileId?Object.assign(Object.assign({},e),{publicUser:{profileId:e.profileId,name:e.name}}):e}))})},success:c,error:o,always:m}},mark:function(e,t,n,r,i,l,s){return{url:"/api/domain/v1/analytics/answers/".concat(n),key:"mark:answer:".concat(n,":").concat(r.resultId),type:a.k.PUT,data:r,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:i,error:l,always:s}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:a.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"{gateway}/v2/analytics/interactives/report",key:"interactive:results:report",data:e,type:a.k.POST,normalize:!1}}}},83657:(e,t,n)=>{n.d(t,{e:()=>o});var a=n(32735),r=n(91967),i=n(10874),l=n(36532),s=n(42735),c=n(86509);function o(e){var t=a.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),n=[],o=[];t.forEach((function(e){e.button?n.push(e):o.push(e)}));var m="d-flex";return e.className&&(m+=" ".concat(e.className)),n.length||o.length?a.createElement("div",{className:m},n.length?n.map((function(t,n){return a.createElement(a.Fragment,{key:n},function(){if(t.label){var n=r.q.isFunction(t.label)?t.label:function(){return a.createElement(a.Fragment,null,t.label)};return a.createElement(s.K,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,svgSize:e.dropdownToggleSvgSize,className:t.className,tooltip:t.tooltip,showSpinner:t.showSpinner,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled},n())}var c=a.createElement(i.h,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,className:t.className,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled,showBorder:t.showBorder,customSize:e.customSize,ariaLabel:t.tooltip});return t.tooltip?a.createElement(l.u,{title:t.tooltip,spanHack:!0},c):c}())})):a.createElement(a.Fragment,null),e.sortComponent&&e.sortComponent,o.length?a.createElement(c.m,{actions:o,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):a.createElement(a.Fragment,null)):a.createElement(a.Fragment,null)}},54405:(e,t,n)=>{n.d(t,{X:()=>a});var a={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},39902:(e,t,n)=>{n.d(t,{f:()=>l});var a=n(20354),r=n(75896);function i(e){return i="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},i(e)}function l(e,t){var n=r.m.chunk(e,25).map((function(e){return t(r.m.uniq(e))})),l=a.a.useBasicFetchAll(n);return{items:l.data.length?r.m.flatten(l.data).reduce((function(e,t){return Object.assign(Object.assign({},e),(n={},a=t.id,r=t,(a=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(a))in n?Object.defineProperty(n,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[a]=r,n));var n,a,r}),{}):null,isFetching:l.isFetching}}},62875:(e,t,n)=>{function a(e,t,n){var a="".concat(e,":").concat(t.start,":").concat(t.end),r=Array.isArray(t.userId)?t.userId.sort().join(":"):t.userId,i=Array.isArray(t.groupId)?t.groupId.sort().join(":"):t.groupId;return r&&(a+=":".concat(r)),i&&(a+=":".concat(i)),n&&(a+=":".concat(n)),a}n.d(t,{H:()=>a})},8807:(e,t,n)=>{n.d(t,{c:()=>a,q:()=>r});var a="D8qRe7",r="GRWx6w"},11293:(e,t,n)=>{n.d(t,{p:()=>f});var a=n(32735),r=n(57900),i=n(97395),l=n(2948),s=n(10874),c=n(83345),o=n(4594),m=n(35223),u=n(86702);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var p="lite.insightsAdminAlert";function f(e){var t,n,f=(t=(0,l.D)(u.y.INSIGHTS_ADMIN_ALERT,!0,{storage:r.Z1.LocalStorage}),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 a,r,i,l,s=[],c=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return d(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)?d(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.")}()),g=f[0],v=f[1];return e.hasAnalytics&&g?a.createElement("div",{role:"alert",className:"d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4"},a.createElement("div",null,a.createElement(c.x,{namespace:p,phrase:"adminAlert"}),a.createElement("a",{className:"text-info",href:function(){if(!e.video)return e.analyticsUrl;var t="";return e.video.typeId===o.E.Interactive&&(t="/interactives/".concat(e.video.id,"/views")),e.video.typeId===o.E.Video&&(t="/videos/".concat(e.video.id,"/views")),e.video.typeId===o.E.Clip&&(t="/clips/".concat(e.video.id,"/views")),i._.safeUrlConcat(e.analyticsUrl,t)}(),target:"_blank"},a.createElement(c.x,{namespace:p,phrase:"analytics"})),"."),a.createElement(s.h,{svgName:m.vn.Close,className:"text-blue",onClick:function(){v(!1)}})):a.createElement(a.Fragment,null)}},9566:(e,t,n)=>{n.d(t,{G:()=>o,e:()=>u});var a=n(23481),r=n(85063),i=n(35223),l=n(14070),s=n(97291),c=a.T.encloseNamespace("myShares.demoInsights"),o={share:{objectTypeId:34,type:r.y.ShareLink},sharedObject:null,shareRecipients:null,dateShared:(new Date).toISOString(),viewCount:23},m={application:s.O.MY_SHARES,action:l.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},u=[{svgName:i.vn.Analytics,label:c("demoInsights"),appLink:m,group:"insights",button:!0,className:"btn btn-outline-dark"}]},88099:(e,t,n)=>{n.r(t),n.d(t,{MySharesView:()=>Re});var a=n(32735),r=n(81886),i=n(23481),l=n(20354),s=n(26025),c=n(88180),o=n(71020),m=n(83345),u=n(16714),d=n(39151),p=n(1666),f=n(54405),g=n(31949),v=n(25882),y=n(79967),b=n(22902),h=n(79612),E=n(37802),S=n(14070),x=n(97291),k=n(51855),I=n(64208),N=n(86099),w=n(34509),j=n(75896),O=n(36848),A=n(89965),C=n(83914),T=n(4594),L=n(35223);const F={noCaret:"TMpTN"};function M(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,s=[],c=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return s}}(e,t)||R(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 P(e){return function(e){if(Array.isArray(e))return D(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||R(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function R(e,t){if(e){if("string"==typeof e)return D(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)?D(e,t):void 0}}function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var U="insights.insightsTypeFilters",B=i.T.encloseNamespace(U);function H(e){var t=e.breakpoints.xs||e.breakpoints.sm,n=[].concat(P(t?[{label:B("interactives"),filter:T.E.Interactive},{label:B("videos"),filter:T.E.Video},{label:B("clips"),filter:T.E.Clip}]:[]),[{label:B("playlists"),filter:T.E.Playlist},{label:B("series"),filter:T.E.Series}]),i=e.typeIdParams.filter((function(e){return n.some((function(t){return e===t.filter}))})),l=M(a.useState(!1),2),s=l[0],c=l[1],o=M(a.useState(i),2),u=o[0],d=o[1];function p(){var t=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},t),{typeId:j.m.uniq([].concat(P(e.typeIdParams),P(u)))})}))}function f(){d([]);var t=e.appLink.params;r.Q.C$.trigger(Object.assign(Object.assign({},e.appLink),{params:Object.assign(Object.assign({},t),{typeId:[]})}))}return a.createElement("div",{className:"d-flex align-items-center fw-semibold"},a.createElement("p",{className:"d-none d-md-inline h6 mb-0"},a.createElement(m.x,{namespace:U,phrase:"filters"})),a.createElement("div",{className:"d-flex flex-grow-1 flex-md-grow-0 border-md-start border-light ps-0 ps-md-3 ms-0 ms-md-3 gap-2"},a.createElement("div",{className:"d-none d-md-flex gap-2"},a.createElement(V,{typeId:T.E.Interactive,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(V,{typeId:T.E.Video,typeFilters:e.typeIdParams,appLink:e.appLink}),a.createElement(V,{typeId:T.E.Clip,typeFilters:e.typeIdParams,appLink:e.appLink})),a.createElement(w.Z,{onToggle:function(e){c(e),e||p()},show:s,className:"col"},a.createElement(w.Z.Toggle,{className:"".concat(F.noCaret," col-12 col-md-auto"),variant:i.length?"dark":"outline-dark"},a.createElement("div",{className:"d-flex align-items-center justify-content-center gap-2 fw-semibold mb-0"},a.createElement(C.x,{svgName:L.vn.Filter,className:"svg-container d-inline-block d-md-none"}),a.createElement(m.x,{namespace:U,phrase:t?"filters":"moreFilters"}),i.length?" - ".concat(i.length):"")),a.createElement(w.Z.Menu,null,a.createElement("div",{className:"mx-1 px-2 py-1 mb-0"},a.createElement("h2",{className:"h6 mb-3"},a.createElement(m.x,{namespace:U,phrase:"types"})),a.createElement("ul",{className:"list-unstyled me-5"},n.map((function(n){return a.createElement("li",{key:"".concat(n.label,"-filter"),className:"my-1"},a.createElement(A.X,{id:"".concat(n.label,"-filter"),label:n.label,onChange:function(){return e=n.filter,void d(j.m.addOrRemoveImmutable(u,e));var e},checked:(r=n.filter,t?!!u.find((function(e){return e===r}))||!!e.typeIdParams.find((function(e){return e===r})):!!u.find((function(e){return e===r})))}));var r}))),a.createElement("div",{className:"d-flex justify-content-between"},a.createElement("button",{onClick:function(){f(),c(!1)},className:"btn btn-link text-secondary p-0 mb-0"},a.createElement(m.x,{namespace:U,phrase:"resetAll"})),a.createElement("button",{onClick:function(){p(),c(!1)},className:"btn btn-link text-info p-0 mb-0"},a.createElement(m.x,{namespace:U,phrase:"apply"}))))))),!!e.typeIdParams.length&&a.createElement("button",{onClick:f,className:"d-none d-md-block btn btn-link ms-1"},a.createElement(m.x,{namespace:U,phrase:"resetAll"})))}function V(e){var t=e.typeFilters.includes(e.typeId),n=e.appLink,r=n.params,i=j.m.addOrRemoveImmutable(e.typeFilters,e.typeId),l=Object.assign(Object.assign({},n),{params:Object.assign(Object.assign({},r),{typeId:i})});function s(){return e.typeId===T.E.Video?"videos":e.typeId===T.E.Clip?"clips":e.typeId===T.E.Interactive?"interactives":void 0}return a.createElement(O.F,{className:"btn ".concat(t?"btn-dark":"btn-outline-dark"," fw-semibold"),appLink:l,ariaLabel:"".concat(B("ariaFilterBy"),": ").concat(B(s()))},a.createElement(m.x,{namespace:U,phrase:s()}))}var z=n(11293),_=n(8807),G=n(82602),q=n(65858),W=n(29024),Y=n(65853),$=n(64249),Z=n(83657),K=n(60995),Q=n(11882),X=n(54610),J=n(85063),ee=n(31908),te=n(24758);const ne={mySharesTable:"hyaYe",mySharesHeader:"WjfsD",tableBorder:"tHBWr"};var ae="myShares.tableRow";function re(e){return a.createElement("div",{className:"".concat(ne.mySharesHeader," d-block d-lg-grid gap-3 px-3")},a.createElement("p",{className:"fw-semibold mb-2 ms-n3"},e.heading),e.isFirst&&a.createElement(a.Fragment,null,a.createElement("div",{className:"d-none d-xl-inline"}),a.createElement("p",{className:"d-none d-xl-inline fw-semibold mb-2"},a.createElement(m.x,{namespace:ae,phrase:"sharedToHeading"})),a.createElement("p",{className:"d-none d-xl-inline fw-semibold mb-2"},a.createElement(m.x,{namespace:ae,phrase:"dateSharedHeading"})),a.createElement("p",{className:"d-none d-xl-inline fw-semibold mb-2"},a.createElement(m.x,{namespace:ae,phrase:"viewsHeading"}))))}function ie(e){var t,n=e.sharedObject;if(!n.name)return a.createElement(m.x,{namespace:ae,phrase:"videoUnavailable"});if(ee.M.isVideoType(n)&&!(null===(t=ee.M.getCanBeConsumed(n))||void 0===t?void 0:t.canNavigate))return a.createElement("span",{className:"clamp-2"},n.name);var r=function(){switch(n.typeId){case T.E.Series:return"series";case T.E.Playlist:return"playlist"}}();return a.createElement("div",null,ee.M.isVideoType(n)&&a.createElement(Q.$,{type:"series",video:n,appLink:"series"in n&&n.series?(0,N.Qh)(n.series):null,analyticsOptions:{location:q.LZ.Insights},className:"d-inline clamp-1"}),r&&a.createElement(K.m,null,a.createElement(m.x,{namespace:ae,phrase:r})),a.createElement(O.F,{appLink:e.appLink,className:"clamp-1",analyticsData:{id:n.id,name:n.name},analyticsOptions:{entity:$.I.getAnalyticsEntity(n.type),actionType:q.Vw.Click,location:q.LZ.MyShares}},n.name),!!e.requireMarking&&a.createElement("div",{className:"font-size-sm d-flex align-items-center bg-light-ultramarine text-ultramarine rounded-pill w-fit mt-1 px-2"},a.createElement(m.x,{namespace:ae,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))}function le(e){var t=e.shareData,n=t.sharedObject,r=t.share.type===J.y.ShareLink&&Y.R.getIconAndText({entity:n,entityTypeId:n.typeId,hasStudentExp:!1,isPasswordProtected:t.share.isPasswordProtected,linkExpireDate:t.share.linkExpireDate,privacy:{privacy:t.privacy,overrideRestrictions:t.overrideRestrictions},status:t.share.status,yearGroups:e.yearGroups}),i=e.breakpoints.xs||e.breakpoints.sm,l=e.breakpoints.xl||e.breakpoints.xxl,s=n.typeId===T.E.Playlist||n.typeId===T.E.Series;return a.createElement("div",{key:t.share.id,className:"".concat(ne.mySharesTable," ").concat(ne.tableBorder," position-relative d-flex d-xl-grid flex-column flex-md-row align-items-md-center p-0 p-md-3 gap-3")},a.createElement("div",{className:"col-12 col-md-3 col-xl-auto"},a.createElement(W.k,{object:n,appLink:e.getObjectAppLink(n),showVideoMetadata:!0,locationContext:q.LZ.MyShares,imageOptions:{size:X.h2.Medium},requireMarking:i&&t.pendingReview,showCollectionMask:!0,showVideoCount:!0})),a.createElement("div",{className:"d-flex flex-column align-items-xl-center flex-xl-row gap-1 gap-xl-3"},a.createElement("div",{className:"col-xl-4"},a.createElement(ie,{sharedObject:t.sharedObject,appLink:e.getObjectAppLink(n),requireMarking:l&&t.pendingReview})),e.children,a.createElement("div",{className:"d-flex align-items-center gap-2 gap-xl-0 pe-4 pe-md-0 col-xl-8"},a.createElement("div",{className:"col-xl-5"},a.createElement(te.A,{shareLinkText:null==r?void 0:r.text,shareRecipients:t.shareRecipients,imageCdnUrl:e.imageCdnUrl})),a.createElement("span",{className:"d-inline d-xl-none"},"·"),a.createElement("p",{className:"mb-0 col-xl-4"},(0,G.WU)(t.dateShared)),s?a.createElement("p",{className:"mb-0 d-none d-xl-block"},"-"):a.createElement(a.Fragment,null,a.createElement("span",{className:"d-inline d-xl-none"},"·"),a.createElement("p",{className:"mb-0 col-xl-3"},a.createElement(m.x,{namespace:ae,phrase:"views",options:{smartCount:t.viewCount}})))),!l&&!i&&!!t.pendingReview&&a.createElement("div",{className:"font-size-sm d-flex align-items-center bg-light-ultramarine text-ultramarine rounded-pill w-fit mt-1 px-2"},a.createElement(m.x,{namespace:ae,phrase:"requireMarking",options:{smartCount:t.pendingReview}}))),a.createElement(Z.e,{className:"position-absolute bottom-0 end-0 position-md-static justify-content-end gap-2 ms-auto",actionsDropdownClassName:"btn-outline-dark rounded py-2",dropdownToggleSvgSize:C.S.Standard,actions:e.getObjectActions(n)}))}var se=n(9566),ce="myShares.demoInsights",oe=i.T.encloseNamespace(ce);function me(e){var t=e.liteUrl.includes("staging");return a.createElement("div",null,a.createElement(re,{heading:oe("demoHeading"),isFirst:!0}),a.createElement("div",{className:"rounded-3 border border-light bg-light-orange mb-4"},a.createElement(le,{shareData:Object.assign(Object.assign({},se.G),{sharedObject:Object.assign(Object.assign({},e.demoInteractive),{id:t?_.c:_.q})}),getObjectActions:function(){return se.e},getObjectAppLink:function(){return null}},a.createElement("div",{className:"d-inline-block rounded-pill bg-light-blue text-info font-size-sm mt-1 px-2"},a.createElement(m.x,{namespace:ce,phrase:"demoInsightPill"})))))}var ue=n(23232),de=n(99742),pe=i.T.encloseNamespace("myShares.mySharesTableEmptyState");function fe(){return a.createElement(ue.u,null,a.createElement(ue.u.Image,{src:de.W.EmptyStates.Share.SHARED_BY_ME,size:"small"}),a.createElement(ue.u.Heading,null,pe("heading")),a.createElement(ue.u.Info,null,pe("info")),a.createElement(ue.u.Cta,{appLink:{application:x.O.DASHBOARD,action:S.e.Dashboard.HOME},text:pe("cta")}))}var ge=n(110),ve=n(31754);function ye(e){return ye="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},ye(e)}function be(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function he(e,t,n){return(t=function(e){var t=function(e){if("object"!=ye(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ye(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ye(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ee=i.T.encloseNamespace("myShares.mySharesTable");function Se(e){var t;if(e.type===J.y.ShareLink||!(null===(t=null==e?void 0:e.recipients)||void 0===t?void 0:t.length))return e.dateCreated;var n=e.recipients.map((function(e){return e.dateShared}));return n.sort((function(e,t){return ge.O.isSame(e,t)?0:ge.O.isAfter(e,t)?1:-2})),n.length?j.m.last(n):""}function xe(e){var t,n,r,i,l,s,c,o=(t=e.sentShares,n=e.sharedObjects,r=e.shareRecipients,i=!!e.groupByDateShared,l=e.interactivesPendingReview,s=e.dependencies,a.useMemo((function(){var e=[],a=n.reduce((function(e,t){return Object.assign(he({},t.id,t),e)}),{}),s=r.reduce((function(e,t){return Object.assign(he({},t.id,t),e)}),{}),c=null==l?void 0:l.reduce((function(e,t){return Object.assign(he({},t.interactiveId,t),e)}),{});return t.forEach((function(t){var n,r,i=a[t.objectId],l=null;if(t.type===J.y.DirectShare&&(l=[],null===(n=t.recipients)||void 0===n||n.forEach((function(e){var t=s[e.id];t&&l.push(t)}))),i){var o=i.typeId===T.E.Interactive&&(null==c?void 0:c[i.interactiveId]);e.push(Object.assign({share:t,sharedObject:i,shareRecipients:l,dateShared:Se(t),viewCount:null!==(r=t.viewCount)&&void 0!==r?r:0,pendingReview:null==o?void 0:o.pendingReviewCount},t.type===J.y.ShareLink?{privacy:t.privacy,overrideRestrictions:t.overrideRestrictions}:{}))}})),i?ve.x.groupByDateShared(e):he({},Ee("title"),e)}),function(e){if(Array.isArray(e))return be(e)}(c=s)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||function(e,t){if(e){if("string"==typeof e)return be(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)?be(e,t):void 0}}(c)||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.")}()));return a.createElement(a.Fragment,null,Object.keys(o).map((function(t,n){return a.createElement("div",{key:t},a.createElement(re,{heading:t,isFirst:!e.hasDemoInsights&&0===n}),a.createElement("div",{className:"d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light"},o[t].map((function(t){return a.createElement(le,{key:t.share.id,shareData:t,yearGroups:e.yearGroups,getObjectActions:e.getObjectActions,getObjectAppLink:e.getObjectAppLink,imageCdnUrl:e.imageCdnUrl,breakpoints:e.breakpoints})}))))})))}const ke={table:"elIjR",tableHeader:"xJKgP",heading:"iWHol",image:"TMQxq",avatar:"_3GY1C",date:"nz3va",views:"FpDfX",actions:"pOtyK"};function Ie(){return a.createElement("div",{className:"".concat(ke.table," position-relative d-flex d-xl-grid flex-column flex-md-row align-items-md-center p-0 p-md-3 gap-3")},a.createElement("div",{className:"col-12 col-md-3 col-xl-auto"},a.createElement("div",{className:"partial-loading-background rounded ratio ratio-16x9 "})),a.createElement("div",{className:"d-flex flex-column align-items-xl-center flex-xl-row gap-1 gap-xl-3"},a.createElement("div",{className:"partial-loading-background col-8 col-xl-4"}," "),a.createElement("div",{className:"d-flex align-items-center gap-2 gap-xl-0 pe-4 pe-md-0 col-xl-8"},a.createElement("div",{className:"col-xl-5"},a.createElement("div",{className:"".concat(ke.avatar," partial-loading-background rounded-pill col-xl-8")})),a.createElement("div",{className:"col-xl-4"},a.createElement("div",{className:"".concat(ke.date," partial-loading-background")}," ")),a.createElement("div",{className:"col-xl-3"},a.createElement("div",{className:"".concat(ke.views," partial-loading-background")}," ")))),a.createElement("div",{className:"position-absolute bottom-0 end-0 position-md-static d-flex justify-content-end gap-2 ms-auto col col-xl-12"},a.createElement("div",{className:"".concat(ke.actions," partial-loading-background rounded d-none d-md-block px-3 p-lg-0 col-lg-6")}),a.createElement("div",{className:"".concat(ke.actions," partial-loading-background rounded px-3 p-lg-0 col-lg-4")})))}function Ne(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"no-full-width"},a.createElement("div",{className:"".concat(ke.table," d-block d-xl-grid gap-3 px-3")},a.createElement("div",{className:"partial-loading-background mb-2 ms-n3 ".concat(ke.date)}," "),a.createElement("div",{className:"d-flex flex-column align-items-xl-center flex-xl-row gap-1 gap-xl-3"},a.createElement("div",{className:"col-xl-4"}),a.createElement("div",{className:"d-flex align-items-center gap-2 gap-xl-0 pe-4 pe-md-0 col-xl-8"},a.createElement("div",{className:"col-xl-5"},a.createElement("div",{className:"d-none d-xl-inline-block partial-loading-background mb-2 ".concat(ke.date)}," ")),a.createElement("div",{className:"col-xl-4"},a.createElement("div",{className:"d-none d-xl-inline-block partial-loading-background mb-2 ".concat(ke.date)}," ")),a.createElement("div",{className:"col-xl-3"},a.createElement("div",{className:"d-none d-xl-inline-block partial-loading-background mb-2 ".concat(ke.date)}," "))))),a.createElement("div",{className:"d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light"},a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null)))),a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"partial-loading-background mb-2 ".concat(ke.date)}," "),a.createElement("div",{className:"d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light"},a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null))),a.createElement("div",{className:"mb-3"},a.createElement("div",{className:"partial-loading-background mb-2 ".concat(ke.date)}," "),a.createElement("div",{className:"d-flex flex-column rounded-3 mb-4 gap-4 gap-md-0 border-md border-light"},a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null),a.createElement(Ie,null))))}var we="myShares.mySharesEmptyState",je=i.T.encloseNamespace(we);function Oe(){return a.createElement(ue.u,null,a.createElement(ue.u.Image,{src:de.W.EmptyStates.MY_VIDEOS_PUBLIC,altText:je("heading")}),a.createElement(ue.u.Heading,null,a.createElement(m.x,{namespace:we,phrase:"heading"})),a.createElement(ue.u.Info,null,a.createElement(m.x,{namespace:we,phrase:"info"})),a.createElement(ue.u.Cta,{text:i.T.getPhrase(we,"cta"),appLink:{application:x.O.SIGN_UP,action:S.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:q.Vw.Click,location:q.LZ.MySharesLanding,entity:q.py.AppLink,workflowPhase:q.eu.Start,descriptor:q.Yu.SignUp}}))}function Ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var Ce=i.T.encloseNamespace("myShares.myShares");function Te(e,t,n,r){var i,l=JSON.stringify(e);return a.useCallback((function(a){return function(e,t,n,a,r){var i=[],l={button:!(r.xs||r.sm),className:"btn btn-outline-dark"};if(ee.M.isVideoType(e)){if(!ee.M.getCanBeConsumed(e).canConsume)return[];if(a)return[Object.assign(Object.assign({label:Ce("embedVideo"),appLink:{application:x.O.DEFAULT,action:S.e.Default.PLUGIN_SHARE,args:[e.id],params:{entityType:e.type}}},l),{analyticsOptions:{actionType:q.Vw.Share,descriptor:q.YM.PluginEmbed,workflowPhase:q.eu.Start,eventVersion:q.eq.V5}})];n&&i.push(Object.assign({svgName:L.vn.Analytics,label:!r.md&&Ce("viewInsights"),tooltip:r.md&&Ce("viewInsights"),appLink:Object.assign(Object.assign({},(0,N.Dw)(e)),{params:t}),group:"insights"},l))}return i.push(Object.assign({label:!r.md&&Ce("share"),tooltip:r.md&&Ce("share"),svgName:L.vn.Share,appLink:(0,N.YK)(e),group:"share"},l)),i}(a,e,t,n,r)}),[l].concat(function(e){if(Array.isArray(e))return Ae(e)}(i=Object.values(r||{}))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||function(e,t){if(e){if("string"==typeof e)return Ae(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)?Ae(e,t):void 0}}(i)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))}function Le(e){return function(e){if(Array.isArray(e))return Fe(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Fe(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)?Fe(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Fe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var Me="myShares.myShares",Pe=i.T.encloseNamespace(Me);function Re(e){var t,n,i,w,j,O,A=(0,b.T)(),C=A.hasPermissions,T=A.hasLocalPermissions,L=(0,E.r)(null).hasInsights,F=(0,k.G)().isPlugin,M=(0,y.k)(),P=(O=null==(j=e.queryParams)?void 0:j.typeId)?"string"==typeof O?[+O]:(null==j?void 0:j.typeId.map((function(e){return+e})))||[]:[],R=s.B.getAudienceAppLinkParams(),D={application:x.O.MY_SHARES,action:S.e.MyShares.HOME,params:Object.assign(Object.assign({},R),{typeId:P})},U={recipientUserId:null==R?void 0:R.users,recipientGroupId:[].concat(Le((null==R?void 0:R.classroomGroups)||[]),Le((null==R?void 0:R.classrooms)||[])),objectTypeId:P.length?P:void 0},B=!T(u.E.ViewMySharesLanding)||C(u.C.ViewMyShares)&&L,V=(0,I.aH)(U,!0,B),_=V.sentShares,G=V.sharedObjects,q=V.shareRecipients,W=V.interactivesPendingReview,Y=V.isFetching,$=V.showPartialLoading,Z=V.nextCursor,K=V.hasMore,Q=V.fetchNext,X=V.imageCdnUrl,J=V.dependencies;(0,h.M)({title:Pe("myShares")});var ee=(0,E.r)(null).hasClassrooms,te=l.a.useBasicFetch(d.L.config()),ne=l.a.useBasicFetch(g.N.currentUser()),ae=l.a.useBasicFetch((null===(t=ne.data)||void 0===t?void 0:t.isAuthenticated)&&p.h.yearGroups(ne.data.customerId)),re=Te(R,L&&C(u.C.ViewInsights),F,M),ie=(0,v.v)().accessPolicy,le=null===(n=null==ie?void 0:ie.metadata)||void 0===n?void 0:n.hasDemoInsights,se=l.a.useBasicFetch(le&&f.X.interactiveMetadata());return a.useEffect((function(){C(u.C.ViewMyShares)&&L||r.Q.Ab.PageLoad("/")}),[B]),B?a.createElement("div",{className:"px-3"},a.createElement(z.p,{analyticsUrl:null===(i=te.data)||void 0===i?void 0:i.analyticsWebUrl,hasAnalytics:C(u.C.ViewCustomerAnalytics)}),a.createElement("div",{className:"d-flex justify-content-between border-bottom pb-3 mb-3"},a.createElement("h1",{className:"mb-1"},a.createElement(m.x,{namespace:Me,phrase:"myShares"})),a.createElement(c.B,{hasClassroomsFeature:ee})),a.createElement("div",{className:"mb-3"},a.createElement(H,{appLink:D,typeIdParams:P,breakpoints:M})),le&&se.data&&a.createElement(me,{demoInteractive:se.data,liteUrl:null===(w=te.data)||void 0===w?void 0:w.liteUrl}),$?a.createElement(Ne,null):_.length?a.createElement(a.Fragment,null,a.createElement(xe,{sentShares:_,sharedObjects:G,shareRecipients:q,interactivesPendingReview:W,getObjectAppLink:N.Qh,getObjectActions:re,imageCdnUrl:X,groupByDateShared:!0,dependencies:J,breakpoints:M,yearGroups:ae.data,hasDemoInsights:le}),(K||Y)&&a.createElement(o._,{isFetching:Y,fetchNext:Q,nextCursor:Z})):a.createElement(fe,null)):a.createElement(Oe,null)}},64208:(e,t,n)=>{n.d(t,{aH:()=>E});var a=n(32735),r=n(20354),i=n(1048),l=n(71553),s=n(30439),c=n(4594),o=n(39151),m=n(31949),u=n(39902),d=n(60115),p=n(75896),f=n(85063),g={getDirectShares:function(e){var t;return null!==(t=null==e?void 0:e.filter((function(e){return e.type===f.y.DirectShare})))&&void 0!==t?t:[]},getRecipientIds:function(e){return p.m.uniq(p.m.flatten(g.getDirectShares(e).map((function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]}))),"id").map((function(e){return e.id}))}};function v(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,s=[],c=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){o=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw r}}return s}}(e,t)||y(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 y(e,t){if(e){if("string"==typeof e)return b(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)?b(e,t):void 0}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function h(e){return e.items?Object.values(e.items):[]}function E(e,t){var n,p,f=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],E=r.a.useGetFetch(),S=r.a.useBasicFetch(m.N.currentUser()),x=function(t){return f&&s.o.sentShare(Object.assign({cursor:t},e))},k=function(e){return E(x(e))},I=(0,d.K)(x,k),N=I.items,w=I.hasMore,j=I.isFetching,O=I.nextCursor,A=null!==(n=null==N?void 0:N.map((function(e){return e.objectId})))&&void 0!==n?n:[],C=(0,u.f)(A,(function(e){return s.o.sharedObjectsById(e)})),T=g.getRecipientIds(N),L=(0,u.f)(T,(function(e){return s.o.getRecipientsById(e,S.data.customerId)})),F=r.a.useBasicFetch(o.L.config()),M=JSON.stringify(e),P=function(e,t,n,r,i){var l=v(a.useState(!!t.items),2),s=l[0],c=l[1],o=v(a.useState(!!r.items),2),m=o[0],u=o[1];return a.useEffect((function(){c(!1),u(!1)}),[i]),a.useEffect((function(){!t.isFetching&&t.items&&c(!0)}),[t.isFetching,i]),a.useEffect((function(){!r.isFetching&&r.items&&u(!0)}),[r.isFetching,i]),!(e&&!e.length)&&(!e||!s||n.length&&!m)}(N,C,T,L,M),R=j||C.isFetching||L.isFetching,D=h(C),U=v(a.useState(h(L)),2),B=U[0],H=U[1];a.useEffect((function(){i.t.isEmpty(L.items)||H(h(L))}),[!!L.items,L.isFetching,M]);var V=t&&(null==D?void 0:D.length)&&D.reduce((function(e,t){if(t.typeId!==c.E.Interactive)return e;var n,a=t;return[].concat(function(e){if(Array.isArray(e))return b(e)}(n=e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||y(n)||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.")}(),[{metadataId:a.id,interactiveId:a.interactiveId}])}),[]),z=r.a.useBasicFetch(t&&!!C.items&&S.data&&l.I.pendingReviews({interactives:V,filters:{currentCustomerId:S.data.customerId,currentUserId:S.data.id}})),_=[R,M,z.isFetching,B.length];return{sentShares:N,sharedObjects:D,shareRecipients:B,interactivesPendingReview:z.data,isFetching:R,showPartialLoading:P,nextCursor:O,hasMore:w,fetchNext:k,imageCdnUrl:null===(p=F.data)||void 0===p?void 0:p.imageCdnUrl,dependencies:_}}}}]);
|
|
2
|
+
//# sourceMappingURL=4359-e928b3edc9-lite.chunk.js.map
|