@clickview/lite 0.67.0-rc.5 → 0.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +2 -2
- package/dist/css/{6822-lite-c32c06fff9.chunk.css → 1319-lite-f181681870.chunk.css} +1 -0
- package/dist/css/{1265-lite-cf5a64d933.chunk.css → 2205-lite-daccc93768.chunk.css} +1 -0
- package/dist/css/3407-lite-2b6d2c3596.chunk.css +1 -0
- package/dist/css/{1928-lite-7535155363.chunk.css → 3657-lite-30c63783c6.chunk.css} +1 -0
- package/dist/css/4205-lite-2b6d2c3596.chunk.css +1 -0
- package/dist/css/{6264-lite-6c16dff355.chunk.css → 4586-lite-2b4142796a.chunk.css} +1 -0
- package/dist/css/{3192-lite-dca2cbecd4.chunk.css → 5259-lite-c43d17524f.chunk.css} +1 -0
- package/dist/css/{2613-lite-2b363e89ec.chunk.css → 897-lite-49388db199.chunk.css} +1 -0
- package/dist/css/{lite-app-d8fa7e0f98.css → lite-app-d2e53316e7.css} +5 -6
- package/dist/scripts/{6822-e059388f0e-lite.chunk.js → 1319-44debe2be5-lite.chunk.js} +2 -2
- package/dist/scripts/{6822-e059388f0e-lite.chunk.js.map → 1319-44debe2be5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1265-1c11ef03e1-lite.chunk.js → 2205-7596edf3ff-lite.chunk.js} +3 -3
- package/dist/scripts/2205-7596edf3ff-lite.chunk.js.map +1 -0
- package/dist/scripts/{2564-b38ceabfc3-lite.chunk.js → 2564-7758fc9a23-lite.chunk.js} +2 -2
- package/dist/scripts/{2564-b38ceabfc3-lite.chunk.js.map → 2564-7758fc9a23-lite.chunk.js.map} +1 -1
- package/dist/scripts/3407-d7bb190086-lite.chunk.js +2 -0
- package/dist/scripts/3407-d7bb190086-lite.chunk.js.map +1 -0
- package/dist/scripts/{1928-2bdfd44f43-lite.chunk.js → 3657-9ab3ea0e92-lite.chunk.js} +2 -2
- package/dist/scripts/{1928-2bdfd44f43-lite.chunk.js.map → 3657-9ab3ea0e92-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3978-e86c2d54be-lite.chunk.js → 3978-ef3884cfe5-lite.chunk.js} +2 -2
- package/dist/scripts/{3978-e86c2d54be-lite.chunk.js.map → 3978-ef3884cfe5-lite.chunk.js.map} +1 -1
- package/dist/scripts/4205-b37ae8ccb9-lite.chunk.js +3 -0
- package/dist/scripts/4205-b37ae8ccb9-lite.chunk.js.map +1 -0
- package/dist/scripts/{6264-4b52686f8d-lite.chunk.js → 4586-f9ab450399-lite.chunk.js} +2 -2
- package/dist/scripts/{6264-4b52686f8d-lite.chunk.js.map → 4586-f9ab450399-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3192-5fafe73839-lite.chunk.js → 5259-c1be5e460a-lite.chunk.js} +2 -2
- package/dist/scripts/{3192-5fafe73839-lite.chunk.js.map → 5259-c1be5e460a-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5722-2704be9eac-lite.chunk.js → 5722-ffeb02c053-lite.chunk.js} +2 -2
- package/dist/scripts/5722-ffeb02c053-lite.chunk.js.map +1 -0
- package/dist/scripts/6450-8f22c3d427-lite.chunk.js +2 -0
- package/dist/scripts/6450-8f22c3d427-lite.chunk.js.map +1 -0
- package/dist/scripts/6919-afa7705c12-lite.chunk.js +2 -0
- package/dist/scripts/{2121-aec96064d1-lite.chunk.js.map → 6919-afa7705c12-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7318-20bc42718d-lite.chunk.js → 7318-bf6bb0e9f7-lite.chunk.js} +2 -2
- package/dist/scripts/{7318-20bc42718d-lite.chunk.js.map → 7318-bf6bb0e9f7-lite.chunk.js.map} +1 -1
- package/dist/scripts/7426-c64273c529-lite.chunk.js +3 -0
- package/dist/scripts/7426-c64273c529-lite.chunk.js.map +1 -0
- package/dist/scripts/897-10a911aed5-lite.chunk.js +2 -0
- package/dist/scripts/897-10a911aed5-lite.chunk.js.map +1 -0
- package/dist/scripts/9630-871c10832c-lite.chunk.js +3 -0
- package/dist/scripts/9630-871c10832c-lite.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/9630-871c10832c-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-60e5e2f3ee.min.js → bundle-3fed522614.min.js} +3 -3
- package/dist/scripts/{bundle-60e5e2f3ee.min.js.map → bundle-3fed522614.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1265-1c11ef03e1-lite.chunk.js.map +0 -1
- package/dist/scripts/1477-fa0f6cc194-lite.chunk.js +0 -2
- package/dist/scripts/1477-fa0f6cc194-lite.chunk.js.map +0 -1
- package/dist/scripts/2121-aec96064d1-lite.chunk.js +0 -2
- package/dist/scripts/2613-3d81a10b0b-lite.chunk.js +0 -2
- package/dist/scripts/2613-3d81a10b0b-lite.chunk.js.map +0 -1
- package/dist/scripts/4005-d961c9bbff-lite.chunk.js +0 -3
- package/dist/scripts/4005-d961c9bbff-lite.chunk.js.map +0 -1
- package/dist/scripts/5722-2704be9eac-lite.chunk.js.map +0 -1
- package/dist/scripts/7426-f704b4187d-lite.chunk.js +0 -3
- package/dist/scripts/7426-f704b4187d-lite.chunk.js.map +0 -1
- package/dist/scripts/9630-94751b1994-lite.chunk.js +0 -2
- package/dist/scripts/9630-94751b1994-lite.chunk.js.map +0 -1
- /package/dist/scripts/{1265-1c11ef03e1-lite.chunk.js.LICENSE.txt → 2205-7596edf3ff-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2564-b38ceabfc3-lite.chunk.js.LICENSE.txt → 2564-7758fc9a23-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4005-d961c9bbff-lite.chunk.js.LICENSE.txt → 4205-b37ae8ccb9-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7426-f704b4187d-lite.chunk.js.LICENSE.txt → 7426-c64273c529-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-60e5e2f3ee.min.js.LICENSE.txt → bundle-3fed522614.min.js.LICENSE.txt} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9630],{94644:(e,t,r)=>{r.d(t,{r:()=>l});var n=r(50242),a=r(81886),i=r(67058),o=r(14553),u=r(49267),s=r(49075),c={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:u.a,privacy:o.q},badRequest:s._,internalServerError:s._};function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},c),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==n.o.InternalServer?i!==n.o.NotFound?i!==n.o.Forbidden?r.badRequest||a.Q.Ry.throw(new o.badRequest):r.forbidden||a.Q.Ry.throw(new o.forbidden.privacy):r.notFound||a.Q.Ry.throw(new o.notFound):r.internalServerError||a.Q.Ry.throw(new s._))}}},39902:(e,t,r)=>{r.d(t,{F:()=>v,f:()=>f});var n=r(32735),a=r(20354),i=r(75896);function o(e){return function(e){if(Array.isArray(e))return s(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.")}()}function u(e,t){if(e){if("string"==typeof e)return s(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function c(e){return c="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},c(e)}function l(e,t,r){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=c(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var d=50;function f(e,t){var r=i.m.chunk(e,d).map((function(e){return t(i.m.uniq(e))})),n=a.a.useBasicFetchAll(r),o=i.m.flatten(n.data),u=n.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},t.id,t))}),{}):null;return{itemsArr:o,items:u,isFetching:n.isFetching}}function v(e,t,r){var s,f,v,m,y=r||function(e){return"object"===c(e)?e.id:e},h=n.useRef(new Set),p=(v=n.useState([]),m=2,function(e){if(Array.isArray(e))return e}(v)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,u=[],s=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(u.push(n.value),u.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(c)throw a}}return u}}(v,m)||u(v,m)||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=p[0],g=p[1];n.useEffect((function(){if(null==e?void 0:e.length){var r=[];e.forEach((function(e){var t=y(e);h.current.has(t)||(r.push(e),h.current.add(t))})),r.length&&g((function(e){return[].concat(o(e),o(i.m.chunk(r,d).map(t)))}))}}),[null==e?void 0:e.length]);var w=a.a.useBasicFetchAll(b),A=i.m.flatten(w.data),C=w.data.length?A.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},y(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(f=null===(s=w.responses)||void 0===s?void 0:s[0])||void 0===f?void 0:f.hasCompleted),itemsArr:A,items:C,isFetching:w.isFetching}}},91286:(e,t,r)=>{r.d(t,{v:()=>o});var n=r(32735),a=r(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,r){var o=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){o.forEach((function(e){(0,a.r)(e.statusCode,t,r)}))}),[i(o),t,r])}},63719:(e,t,r)=>{r.d(t,{h:()=>u});var n=r(32735),a=r(77316);function i(e,t){if(e){if("string"==typeof e)return o(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function u(e){var t,r,u=(t=n.useMemo((function(){return a.p.getBuilder()}),[]),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,u=[],s=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(u.push(n.value),u.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(c)throw a}}return u}}(t,r)||i(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=u[0],c=(0,u[1])(s);return c&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||i(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.")}()}(c),[Object.assign(Object.assign({},e),{active:!0})]):c}},35014:(e,t,r)=>{r.d(t,{I:()=>s});var n=r(16714),a=r(12754),i=r(22902),o=r(15311),u=r(11387);function s(){var e=(0,i.T)(),t=e.hasPermissions,r=e.hasLocalPermissions,s=(0,(0,o.r)().hasProduct)(a.x.Primary);return{canViewGlance:t(n.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:s&&t(n.C.ViewVideoInteractives),canViewClips:s&&t(n.C.ViewVideoClips),canViewCurriculumLinks:t(n.C.ViewCurriculums),canUseActions:r(n.E.UseVideoActions),canViewPublicLayout:!r(n.E.WatchVideos)&&u.C.hasRegionPrefix(),canViewResourceItems:r(n.E.ViewVideoResourceItems),canNavigate:s}}},97816:(e,t,r)=>{r.d(t,{V:()=>c});var n=r(20354),a=r(21750),i=r(31949),o=r(1575),u=r(39902),s=r(31908);function c(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=n.a.useBasicFetch(i.N.currentUser()),l=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).map((function(e){return e.id}));(0,u.F)(l,(function(e){return o.R.videoMixinAssocs(e,r.flightNamespace)})),(0,u.F)((null===(t=c.data)||void 0===t?void 0:t.isAuthenticated)&&l,(function(e){return a.x.hasCurriculumLinks(e,null,r.flightNamespace)}))}},69630:(e,t,r)=>{r.r(t),r.d(t,{PlayView:()=>$});var n=r(32735),a=r(50242),i=r(81886),o=r(23481),u=r(20354),s=r(28400),c=r(65858),l=r(78417),d=r(16714),f=r(67058),v=r(61990),m=r(33803),y=r(89454),h=r(43012),p=r(39151),b=r(1666),g=r(20768),w=r(98064),A=r(31949),C=r(1575),S=r(63719),F=r(26304),V=r(91286),I=r(22902),P=r(79612),j=r(37802),O=r(76753),E=r(14070),R=r(97291),k=r(51855),x=r(82817),B=r(7179),L=r(49948),T=r(36873),M=r(27638),q=r(86698),U=r(35014),N=r(97816),_=r(33192),G=r(22490),D=r(91442),Q=r(85387),H=o.T.encloseNamespace("shared.play"),W={notFound:v.l,forbidden:{privacy:m.G}};function $(e){var t,r,o,v,m,$,Y=e.queryParams,Z=Y.context,z=Y.contextId,J=Y.playNext,K=Y.mtv,X=(0,M.u)(c.LZ.PlayPage),ee=X.setFavourite,te=X.canFavourite,re=(0,I.T)().hasPermissions,ne=(0,k.G)().isPlugin,ae=(0,q.y)().activePresentation,ie=(0,j.r)(null),oe=ie.hasTopicDirectories,ue=ie.hasPlayPageTranscript,se=(0,U.I)(),ce=u.a.useBasicFetch(w.D.streamableLearning()),le=u.a.useBasicFetch(A.N.currentUser()),de=u.a.useBasicFetch(C.R.video(e.id)),fe=u.a.useBasicFetch(se.canViewClips&&h.e.videoClips(e.id)),ve=u.a.useBasicFetch(se.canViewInteractives&&g.b.videoInteractives(e.id)),me=u.a.useBasicFetch(p.L.config()),ye=u.a.useBasicFetch((null===(t=le.data)||void 0===t?void 0:t.isAuthenticated)&&b.h.yearGroups(le.data.customerId)),he=u.a.useBasicFetch(ae&&y.O.audiencesByPresentationId(ae.id)),pe=(0,D.a)(),be=u.a.useBasicFetch(de.statusCode===a.o.Forbidden&&C.R.video(e.id,l.r.StripMetadata)),ge=(0,x.M)(e.id,!0),we=(0,T.k)({video:de.data,context:Z,contextId:z,moviesAndTv:K,currentUser:le.data}),Ae=(0,L.l)(e.id,!0),Ce=u.a.useBasicFetch(C.R.regionAlternatives(e.id)),Se=(0,S.h)({name:null===(r=de.data)||void 0===r?void 0:r.name});return(0,P.M)(O.CG.getVideoMetadata({content:de.data,regionAlternatives:Ce.data,phraseContext:{phraseHandler:H,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:_.f.getCanonicalLink({stripPresentationSlug:!0,customAppLink:G.W.getAppLink(de.data)}),allowIndexing:_.f.allowIndexing(),hrefLang:_.f.getContentHrefLang(Ce.data,(function(e,t){return{application:R.O.VIDEOS,action:E.e.Videos.PLAY_VIDEO,args:[e,s.m.slugify(t)]}}))})),(0,V.v)(de,W,{forbidden:!0}),(0,N.V)(null!==(o=we.videos)&&void 0!==o?o:[]),(0,B.P)({id:e.id,app:"videos"}),(0,F.b)(be),n.useEffect((function(){var e;de.data&&ce.data&&(null===(e=de.data.libraries)||void 0===e?void 0:e.data.find((function(e){return e.id===ce.data.objectId})))&&i.Q.Ry.throw(new f.d)}),[de.hasCompleted,ce.hasCompleted]),de.data&&le.hasCompleted&&me.hasCompleted&&Ae.hasCompleted?n.createElement(Q.j,{video:de.data,clips:null===(v=fe.data)||void 0===v?void 0:v.data,interactives:null===(m=ve.data)||void 0===m?void 0:m.data,yearGroups:ye.data,curriculums:ge,relatedVideos:we,setFavourite:ee,canFavourite:te,imageCdnUrl:me.data.imageCdnUrl,currentUser:le.data,pointsOfInterest:Ae.items,playNext:J,featureAccess:se,audiences:he.data,params:e.queryParams,canManageVideoAccess:re(d.C.ManageVideoAccess),shouldShowSideTableOfContents:pe,tableOfContentsId:null===($=e.queryParams)||void 0===$?void 0:$.tocId,isPlugin:ne,breadcrumbs:Se,hasTopicDirectories:oe,hasTranscript:ue}):n.createElement(n.Fragment,null)}$.defaultProps={queryParams:{}}}}]);
|
|
2
|
-
//# sourceMappingURL=9630-94751b1994-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/9630-94751b1994-lite.chunk.js","mappings":"0MA2BMA,EAA8B,CAClCC,SAAU,IACVC,UAAW,CACTC,OAAQ,IACRC,UAAW,IACXC,OAAQ,IACRC,QAAS,KAEXC,WAAY,IACZC,oBAAqB,KAGjB,SAAUC,EACdC,GAMkC,IALlCC,EAAA,uDAA+B,CAAC,EAKhCC,EAAA,uDAAgC,CAAC,EAEjC,GAAKF,EAAL,CAGA,IAAIG,EAGFA,EADmB,iBAAVH,EACIA,EAEAA,EAAKI,OAGpB,IAAMC,EAAW,OAAH,wBACTf,GACAW,GAGAE,GAGA,yBAAmCA,KAGpCA,IAAe,mBAMfA,IAAe,aAMfA,IAAe,cAUdD,EAAUL,YACb,aAAuB,IAAIQ,EAASR,YAN/BK,EAAUV,WACb,aAAuB,IAAIa,EAASb,UAAUI,SAX3CM,EAAUX,UACb,aAAuB,IAAIc,EAASd,UAPjCW,EAAUJ,qBACb,aAAuB,IAAI,KAvBvB,CA6CV,C,o6CCvFA,IAAMQ,EAAa,GAiBb,SAAUC,EACdC,EACAC,GAEA,IAEMC,EAFS,UAA0BF,EAASF,GAE1BK,KAAI,SAAAC,GAAK,OAAIH,EAAW,SAAiBG,GAAO,IAElEC,EAAY,qBAA6BH,GAEzCI,EAAW,YAAoBD,EAAUE,MACzCC,EAAQH,EAAUE,KAAKE,OACzBH,EAASI,QAAO,SAACC,EAAKC,GAAI,OAAK,+BAAMD,GAAG,KAAGC,EAAKC,GAAKD,GAAI,GAAK,CAAC,GAC/D,KAEJ,MAAO,CACLN,SAAAA,EACAE,MAAAA,EACAM,WAAYT,EAAUS,WAE1B,CAQM,SAAUC,EACdC,EACAf,EACAgB,G,YAEMC,EAASD,GAAY,SAACE,GAC1B,MAAmB,WAAf,EAAOA,GACFA,EAAIN,GAENM,CACT,EAEMC,EAAe,SAA0B,IAAIC,KAEmB,G,EAApC,WAAiC,I,EAAG,E,unBAA9DnB,EAAQ,KAAEoB,EAAW,KAE7B,aAAgB,WACd,GAAKN,aAAI,EAAJA,EAAMP,OAAX,CAGA,IAAMc,EAAsB,GAE5BP,EAAKQ,SAAQ,SAAAL,GACX,IAAMM,EAAMP,EAAOC,GAEfC,EAAaM,QAAQC,IAAIF,KAG7BF,EAAeK,KAAKT,GACpBC,EAAaM,QAAQG,IAAIJ,GAC3B,IAEKF,EAAed,QAGpBa,GAAY,SAAAQ,GAAC,kBAAUA,GAAC,EAAK,UAAqBP,EAAgBzB,GAAYK,IAAIF,IAAW,GAjBrF,CAkBV,GAAG,CAACe,aAAI,EAAJA,EAAMP,SAEV,IAAMJ,EAAY,qBAA6BH,GAEzCI,EAAW,YAAoBD,EAAUE,MACzCC,EAAQH,EAAUE,KAAKE,OACzBH,EAASI,QAAO,SAACC,EAAKC,GAAI,OAAK,+BAAMD,GAAG,KAAGO,EAAON,GAAQA,GAAI,GAAK,CAAC,GACpE,KAEJ,MAAO,CACLmB,4BAAoD,QAAxB,EAAmB,QAAnB,EAAA1B,EAAUA,iBAAS,eAAG,UAAE,eAAE2B,cACtD1B,SAAAA,EACAE,MAAAA,EACAM,WAAYT,EAAUS,WAE1B,C,6DCjGA,SAASmB,EAAiBC,GACxB,OAAOA,EAAW/B,KAAI,SAAAgB,GAAG,OAAIA,EAAIxB,UAAU,IAAEwC,KAAK,IACpD,CAGM,SAAUC,EACdC,EACAC,EACAC,GAEA,IAAML,EAAaM,MAAMC,QAAQJ,GAAeA,EAAc,CAACA,IAE/D,IAAAK,YAAU,WACRR,EAAWV,SAAQ,SAAAL,IACjB,OAAgBA,EAAIxB,WAAY2C,EAAcC,EAChD,GACF,GAAG,CAAEN,EAAiBC,GAAaI,EAAcC,GACnD,C,mbClBM,SAAUI,EAAejB,GAC7B,I,IAAqF,G,EAAvD,WAAc,kBAAM,gBAA8B,GAAE,I,EAAG,E,unBAA7EkB,EAAK,KAEPC,GAAcC,EAFK,MAEMF,GAE/B,OAAKC,GAAgBnB,EAGd,GAAP,O,yWAAA,CAAYmB,GAAW,gCAAOnB,GAAO,CAAEqB,QAAQ,MAFtCF,CAGX,C,8FCKM,SAAUG,IACd,OAAgD,SAAxCC,EAAc,EAAdA,eAAgBC,EAAmB,EAAnBA,oBAGlBC,GAAQC,GAFS,SAAfA,YAEiB,aAiBzB,MAAO,CACLC,cAAeJ,EAAe,qBAC9BK,kBAAkB,EAClBC,oBAAqBJ,GAASF,EAAe,2BAC7CO,aAAcL,GAASF,EAAe,oBACtCQ,uBAAwBR,EAAe,qBACvCS,cAAeR,EAAoB,qBACnCS,qBAlBIT,EAAoB,kBAQjB,sBAWPU,qBAAsBV,EAAoB,4BAC1CW,YAAaV,EAEjB,C,wGCnBM,SAAUW,EAAcC,GAA+C,I,EAA/BC,EAAA,uDAA6B,CAAC,EACpEC,EAAc,kBAAkC,mBAEhDC,EAxBR,SAAyBH,GACvB,OAAKA,EAGDvB,MAAMC,QAAQsB,GACTA,EAAQI,QAAO,SAAAC,GAAC,QAAMA,IAAM,YAAoBA,IAAM,WAAmBA,GAAG,IAEjF,SAAUL,EACLA,EAAQxD,KAAK4D,QAAO,SAAAC,GAAC,QAAMA,IAAM,YAAoBA,IAAM,WAAmBA,GAAG,IAEnF,GARE,EASX,CAamBC,CAAgBN,GAAS5D,KAAI,SAAAmE,GAAC,OAAIA,EAAEzD,EAAE,KAEvD,OAAqBqD,GAAU,SAAAK,GAAG,OAAI,qBAA+BA,EAAKP,EAAQQ,gBAAgB,KAClG,QACkB,QAAhB,EAAAP,EAAY1D,YAAI,eAAEkE,kBAAmBP,GACrC,SAAAK,GAAG,OAAI,uBAA0CA,EAAK,KAAMP,EAAQQ,gBAAgB,GAExF,C,ggBCgBME,EAAY,qBADA,eAGZC,EAAc,CAClB5F,SAAU,IACVC,UAAW,CACTI,QAAS,MAQP,SAAUwF,EAASC,G,gBACvB,EAA8CA,EAAMC,YAA5CC,EAAO,EAAPA,QAASC,EAAS,EAATA,UAAWC,EAAQ,EAARA,SAAUC,EAAG,EAAHA,IAEtC,GAAuC,IAAAC,GAAkB,eAAjDC,GAAY,EAAZA,aAAcC,GAAY,EAAZA,aAEdpC,IAAmB,SAAnBA,eAEAqC,IAAa,SAAbA,SAEAC,IAAuB,SAAvBA,mBACR,IAAuD,OAAY,MAA3DC,GAAmB,GAAnBA,oBAAqBC,GAAqB,GAArBA,sBAEvBC,IAAgB,SAEhBC,GAAoB,kBAAiC,0BAErD1B,GAAc,kBAAkC,mBAChD2B,GAAQ,kBAA4B,UAAoBf,EAAMhE,KAC9DgF,GAAQ,kBACZH,GAAclC,cAAgB,eAAwBqB,EAAMhE,KAExDiF,GAAe,kBACnBJ,GAAcnC,qBAAuB,sBAAsCsB,EAAMhE,KAE7EkF,GAAS,kBAA6B,cACtCC,GAAa,mBACD,QAAhB,EAAA/B,GAAY1D,YAAI,eAAEkE,kBAAmB,eAA4BR,GAAY1D,KAAK0F,aAG9EC,GAAY,kBAChBX,IACA,8BAA2CA,GAAmB1E,KAG1DsF,IAAgC,SAEhCC,GAAgB,kBAA4BR,GAAMjG,aAAe,eACrE,UAAoBkF,EAAMhE,GAAI,oBAE1BwF,IAAc,OAAexB,EAAMhE,IAAI,GAEvCyF,IAAgB,OAAoB,CACxCV,MAAOA,GAAMrF,KACbwE,QAAAA,EACAC,UAAAA,EACAuB,YAAarB,EACbjB,YAAaA,GAAY1D,OAErBiG,IAAmB,OAAyB3B,EAAMhE,IAAI,GAEtD4F,GAAqB,kBACzB,uBAAiC5B,EAAMhE,KAGnCgC,IAAc,OAAe,CAAE6D,KAAgB,QAAV,EAAAd,GAAMrF,YAAI,eAAEmG,OA0CvD,OAxCA,OAAmB,sBAAoC,CACrDC,QAASf,GAAMrF,KACfkG,mBAAoBA,GAAmBlG,KACvCqG,cAAe,CACbC,cAAenC,EACfoC,YAAa,YACbC,kBAAmB,mBAErBC,cAAe,qBAA2B,CACxCC,uBAAuB,EACvBC,cAAe,eAA8BtB,GAAMrF,QAErD4G,cAAe,oBACfC,SAAU,uBAA6BX,GAAmBlG,MAAM,SAACM,EAAY6F,GAAY,MAAM,CAC7FW,YAAa,WACbC,OAAQ,sBACRC,KAAM,CAAE1G,EAAI,YAAmB6F,IAChC,QAGH,OAAqBd,GAAOjB,EAAa,CAAE3F,WAAW,KACtD,OAAkC,QAApB,EAAAsH,GAAckB,cAAM,QAAI,KACtC,OAAa,CAAE3G,GAAIgE,EAAMhE,GAAI4G,IAAK,YAClC,OAAsBrB,IAEtB,aAAgB,W,MACTR,GAAMrF,MAASoF,GAAkBpF,OAGd,QAApB,EAAAqF,GAAMrF,KAAKmH,iBAAS,eAAEnH,KAAKoH,MAAK,SAAAC,GAAO,OAAIA,EAAQ/G,KAAO8E,GAAkBpF,KAAKsH,QAAQ,MAC3F,aAAuB,IAAI,IAC/B,GAAG,CAAEjC,GAAM5D,aAAc2D,GAAkB3D,eAGzC4D,GAAMrF,MACN0D,GAAYjC,cACZ+D,GAAO/D,cACPwE,GAAiBxE,aAOjB,gBAAC,IAAQ,CACP4D,MAAOA,GAAMrF,KACbsF,MAAiB,QAAV,EAAAA,GAAMtF,YAAI,eAAEA,KACnBuF,aAA+B,QAAjB,EAAAA,GAAavF,YAAI,eAAEA,KACjCyF,WAAYA,GAAWzF,KACvB8F,YAAaA,GACbC,cAAeA,GACflB,aAAcA,GACdC,aAAcA,GACdyC,YAAa/B,GAAOxF,KAAKuH,YACzB7D,YAAaA,GAAY1D,KACzBiG,iBAAkBA,GAAiBhG,MACnCyE,SAAUA,EACVS,cAAeA,GACfQ,UAAWA,GAAU3F,KACrBwH,OAAQlD,EAAMC,YACdkD,qBAAsB/E,GAAe,uBACrCkD,8BAA+BA,GAC/B8B,kBAAoC,QAAjB,EAAApD,EAAMC,mBAAW,eAAEoD,MACtC5C,SAAUA,GACVzC,YAAaA,GACb2C,oBAAqBA,GACrB2C,cAAe1C,KAzBV,gCA4BX,CAjIAb,EAASwD,aAAe,CACtBtD,YAAa,CAAC,E","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/useBreadcrumbs.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoFeatureAccess.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts","file:///app/packages/projects/lite/src/shared/views/play/PlayView.tsx"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst CHUNK_SIZE = 50;\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n itemsArr: T[];\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, CHUNK_SIZE);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n itemsArr,\n items,\n isFetching: responses.isFetching\n };\n}\n\n/**\n * When you need the useBatchFetch() behavior, but your list of objects to hydrate\n * will grow, such as on a scrolling page. useGrowingBatchFetch() will use local state\n * to determine what we've already built a request for and what items are new\n * as to not re-fetch items - Sha\n */\nexport function useGrowingBatchFetch<T>(\n objs: T[],\n getRequest: (items: T[]) => Flight.Request,\n _getKey?: (obj: T) => string\n) {\n const getKey = _getKey || ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const fetchedItems = React.useRef<Set<string>>(new Set<string>());\n\n const [ requests, setRequests ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!objs?.length)\n return;\n\n const unfetchedItems: T[] = [];\n \n objs.forEach(obj => {\n const key = getKey(obj);\n\n if (fetchedItems.current.has(key))\n return;\n\n unfetchedItems.push(obj);\n fetchedItems.current.add(key);\n });\n \n if (!unfetchedItems.length)\n return;\n\n setRequests(r => ([ ...r, ...ArrayHelper.chunk<T>(unfetchedItems, CHUNK_SIZE).map(getRequest) ]));\n }, [objs?.length]);\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [getKey(item)]: item }), {})\n : null;\n\n return {\n hasFirstRequestCompleted: !!responses.responses?.[0]?.hasCompleted,\n itemsArr,\n items,\n isFetching: responses.isFetching\n };\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BreadcrumbService } from 'libs/shared/services/BreadcrumbService';\n\nexport function useBreadcrumbs(current: Breadcrumb): Breadcrumb[] {\n const [ match, useBuilder ] = React.useMemo(() => BreadcrumbService.getBuilder(), []);\n\n const breadcrumbs = useBuilder(match);\n\n if (!breadcrumbs || !current)\n return breadcrumbs;\n\n return [ ...breadcrumbs, { ...current, active: true }];\n}\n\n","import { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\n\nimport { LiteRouteHelper } from 'shared/utils/LiteRouteHelper';\n\nexport interface VideoFeaturesHash {\n canViewGlance: boolean;\n canViewResources: boolean;\n canViewInteractives: boolean;\n canViewClips: boolean;\n canUseActions: boolean;\n canViewPublicLayout: boolean;\n canNavigate: boolean;\n canViewCurriculumLinks: boolean;\n canViewResourceItems: boolean;\n}\n\nexport function useVideoFeatureAccess() {\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n\n const hasNP = hasProduct(ProductId.Primary);\n\n function showPublicLayout(): boolean {\n /**\n * Authenticated users should never see the placeholder\n */\n if (hasLocalPermissions(LocalPermissionName.WatchVideos))\n return false;\n\n /**\n * Accessing a play page unathenticated will have different contextual behabviours:\n * - For a share page, the user should see the video and never the placeholder\n * - For a public browsing page (ie. using a route-prefix) they should see the placeholder\n */\n return LiteRouteHelper.hasRegionPrefix();\n }\n\n return {\n canViewGlance: hasPermissions(PermissionName.ViewVideoGlance),\n canViewResources: true,\n canViewInteractives: hasNP && hasPermissions(PermissionName.ViewVideoInteractives),\n canViewClips: hasNP && hasPermissions(PermissionName.ViewVideoClips),\n canViewCurriculumLinks: hasPermissions(PermissionName.ViewCurriculums),\n canUseActions: hasLocalPermissions(LocalPermissionName.UseVideoActions),\n canViewPublicLayout: showPublicLayout(),\n canViewResourceItems: hasLocalPermissions(LocalPermissionName.ViewVideoResourceItems),\n canNavigate: hasNP\n };\n}","import { Flight } from 'libs/common/flight';\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 { useGrowingBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { Clip, ClipCollection, CurrentUser, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\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 videoIds = getValidObjects(objects).map(v => v.id);\n\n useGrowingBatchFetch(videoIds, ids => VideoRequests.videoMixinAssocs(ids, options.flightNamespace));\n useGrowingBatchFetch(\n currentUser.data?.isAuthenticated && videoIds,\n ids => ClassificationRequests.hasCurriculumLinks(ids, null, options.flightNamespace)\n );\n}","import * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { ClipCollection, Config, CurrentUser, InteractiveCollection, PresentationAudience, RegionAlternative, 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 { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\n\nexport interface PlayViewProps {\n id: string;\n queryParams?: PlayViewQueryParams;\n}\n\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\n\nimport { PlayPage } from './components/play-page/PlayPage';\n\nconst namespace = 'shared.play';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nPlayView.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayView(props: PlayViewProps): React.ReactElement {\n const { context, contextId, playNext, mtv } = props.queryParams;\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.PlayPage);\n\n const { hasPermissions } = usePermissions();\n\n const { isPlugin } = usePluginHelper();\n\n const { activePresentation } = usePresentation();\n const { hasTopicDirectories, hasPlayPageTranscript } = useSettings(null);\n\n const featureAccess = useVideoFeatureAccess();\n\n const streamableLibrary = Flight.useBasicFetch<HashObject>(LibraryRequests.streamableLearning());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n const clips = Flight.useBasicFetch<ClipCollection>(\n featureAccess.canViewClips && ClipRequests.videoClips(props.id)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.id)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n \n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const strippedVideo = Flight.useBasicFetch<Video>(video.statusCode === HttpStatus.Forbidden &&\n VideoRequests.video(props.id, PermissionFilterOption.StripMetadata));\n\n const curriculums = useCurriculums(props.id, true);\n\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n\n const regionAlternatives = Flight.useBasicFetch<RegionAlternative[]>(\n VideoRequests.regionAlternatives(props.id)\n );\n\n const breadcrumbs = useBreadcrumbs({ name: video.data?.name });\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n regionAlternatives: regionAlternatives.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n stripPresentationSlug: true,\n customAppLink: VideoAppLinkHelper.getAppLink(video.data)\n }),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getContentHrefLang(regionAlternatives.data, (id: string, name: string) => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ id, TextHelper.slugify(name) ]\n }))\n }));\n\n useHandleObjectError(video, videoErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useDeepLinks({ id: props.id, app: 'videos' });\n useCannotConsumeError(strippedVideo);\n\n React.useEffect(() => {\n if (!video.data || !streamableLibrary.data)\n return;\n\n if (video.data.libraries?.data.find(library => library.id === streamableLibrary.data.objectId))\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ video.hasCompleted, streamableLibrary.hasCompleted ]);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n config.hasCompleted &&\n pointsOfInterest.hasCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <PlayPage\n video={video.data}\n clips={clips.data?.data}\n interactives={interactives.data?.data}\n yearGroups={yearGroups.data}\n curriculums={curriculums}\n relatedVideos={relatedVideos}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n imageCdnUrl={config.data.imageCdnUrl}\n currentUser={currentUser.data}\n pointsOfInterest={pointsOfInterest.items}\n playNext={playNext}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n tableOfContentsId={props.queryParams?.tocId}\n isPlugin={isPlugin}\n breadcrumbs={breadcrumbs}\n hasTopicDirectories={hasTopicDirectories}\n hasTranscript={hasPlayPageTranscript}\n />\n );\n}"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","CHUNK_SIZE","useBatchFetch","itemIds","getRequest","requests","map","chunk","responses","itemsArr","data","items","length","reduce","acc","item","id","isFetching","useGrowingBatchFetch","objs","_getKey","getKey","obj","fetchedItems","Set","setRequests","unfetchedItems","forEach","key","current","has","push","add","r","hasFirstRequestCompleted","hasCompleted","generateCacheKey","flightObjs","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","useBreadcrumbs","match","breadcrumbs","useBuilder","active","useVideoFeatureAccess","hasPermissions","hasLocalPermissions","hasNP","hasProduct","canViewGlance","canViewResources","canViewInteractives","canViewClips","canViewCurriculumLinks","canUseActions","canViewPublicLayout","canViewResourceItems","canNavigate","useVideoMixin","objects","options","currentUser","videoIds","filter","o","getValidObjects","v","ids","flightNamespace","isAuthenticated","getPhrase","videoErrors","PlayView","props","queryParams","context","contextId","playNext","mtv","u","setFavourite","canFavourite","isPlugin","activePresentation","hasTopicDirectories","hasPlayPageTranscript","featureAccess","streamableLibrary","video","clips","interactives","config","yearGroups","customerId","audiences","shouldShowSideTableOfContents","strippedVideo","curriculums","relatedVideos","moviesAndTv","pointsOfInterest","regionAlternatives","name","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","stripPresentationSlug","customAppLink","allowIndexing","hrefLang","application","action","args","videos","app","libraries","find","library","objectId","imageCdnUrl","params","canManageVideoAccess","tableOfContentsId","tocId","hasTranscript","defaultProps"],"sourceRoot":""}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/scripts/{bundle-60e5e2f3ee.min.js.LICENSE.txt → bundle-3fed522614.min.js.LICENSE.txt}
RENAMED
|
File without changes
|