@clickview/lite 0.48.0-rc.2 → 0.48.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1197-52bedf8583-lite.chunk.js → 1197-bc02ba8644-lite.chunk.js} +2 -2
- package/dist/scripts/1197-bc02ba8644-lite.chunk.js.map +1 -0
- package/dist/scripts/{1285-e93a3f21ba-lite.chunk.js → 1285-746158eef6-lite.chunk.js} +2 -2
- package/dist/scripts/{1285-e93a3f21ba-lite.chunk.js.map → 1285-746158eef6-lite.chunk.js.map} +1 -1
- package/dist/scripts/1628-3104bf944c-lite.chunk.js +2 -0
- package/dist/scripts/1628-3104bf944c-lite.chunk.js.map +1 -0
- package/dist/scripts/{170-f48bfc1128-lite.chunk.js → 170-bf0dd6b8ae-lite.chunk.js} +3 -3
- package/dist/scripts/170-bf0dd6b8ae-lite.chunk.js.map +1 -0
- package/dist/scripts/227-c82ab0d861-lite.chunk.js +2 -0
- package/dist/scripts/227-c82ab0d861-lite.chunk.js.map +1 -0
- package/dist/scripts/{2469-c504f7a87d-lite.chunk.js → 2469-34d8afaeb3-lite.chunk.js} +2 -2
- package/dist/scripts/{2469-c504f7a87d-lite.chunk.js.map → 2469-34d8afaeb3-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2679-6c0646cc30-lite.chunk.js → 2679-269830f57c-lite.chunk.js} +2 -2
- package/dist/scripts/2679-269830f57c-lite.chunk.js.map +1 -0
- package/dist/scripts/{2734-a792d5393b-lite.chunk.js → 2734-9533718178-lite.chunk.js} +2 -2
- package/dist/scripts/2734-9533718178-lite.chunk.js.map +1 -0
- package/dist/scripts/{2851-e79b075ea9-lite.chunk.js → 2851-c0655d1a1d-lite.chunk.js} +2 -2
- package/dist/scripts/2851-c0655d1a1d-lite.chunk.js.map +1 -0
- package/dist/scripts/{3157-327cefda57-lite.chunk.js → 3157-730ff8b0ce-lite.chunk.js} +2 -2
- package/dist/scripts/3157-730ff8b0ce-lite.chunk.js.map +1 -0
- package/dist/scripts/{3158-7cff145fc4-lite.chunk.js → 3158-fbc814c471-lite.chunk.js} +2 -2
- package/dist/scripts/3158-fbc814c471-lite.chunk.js.map +1 -0
- package/dist/scripts/{3966-371341416b-lite.chunk.js → 3966-edfda9ea35-lite.chunk.js} +2 -2
- package/dist/scripts/3966-edfda9ea35-lite.chunk.js.map +1 -0
- package/dist/scripts/4626-4e99512e98-lite.chunk.js +3 -0
- package/dist/scripts/{4626-e91b79757e-lite.chunk.js.map → 4626-4e99512e98-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5442-eecab1d715-lite.chunk.js → 5442-2326dc9418-lite.chunk.js} +2 -2
- package/dist/scripts/{5442-eecab1d715-lite.chunk.js.map → 5442-2326dc9418-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5591-a4850980ea-lite.chunk.js → 5591-90c4fa0949-lite.chunk.js} +2 -2
- package/dist/scripts/5591-90c4fa0949-lite.chunk.js.map +1 -0
- package/dist/scripts/{5940-3ddc297b7a-lite.chunk.js → 5940-634de60f9b-lite.chunk.js} +2 -2
- package/dist/scripts/5940-634de60f9b-lite.chunk.js.map +1 -0
- package/dist/scripts/{6274-7d4c6ba241-lite.chunk.js → 6274-473fcd2e63-lite.chunk.js} +2 -2
- package/dist/scripts/{6274-7d4c6ba241-lite.chunk.js.map → 6274-473fcd2e63-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7172-2d87ce76a3-lite.chunk.js → 7172-960e49b199-lite.chunk.js} +2 -2
- package/dist/scripts/7172-960e49b199-lite.chunk.js.map +1 -0
- package/dist/scripts/7180-79ada17b34-lite.chunk.js +2 -0
- package/dist/scripts/7180-79ada17b34-lite.chunk.js.map +1 -0
- package/dist/scripts/{7301-44362a7b42-lite.chunk.js → 7301-50cf0faef7-lite.chunk.js} +2 -2
- package/dist/scripts/{7301-44362a7b42-lite.chunk.js.map → 7301-50cf0faef7-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7915-afd2304b08-lite.chunk.js → 7915-44db39c137-lite.chunk.js} +2 -2
- package/dist/scripts/7915-44db39c137-lite.chunk.js.map +1 -0
- package/dist/scripts/{8025-d7a573aca0-lite.chunk.js → 8025-24e45dc3b7-lite.chunk.js} +2 -2
- package/dist/scripts/8025-24e45dc3b7-lite.chunk.js.map +1 -0
- package/dist/scripts/{8258-6c86ad1fa4-lite.chunk.js → 8258-02d619de75-lite.chunk.js} +2 -2
- package/dist/scripts/{8258-6c86ad1fa4-lite.chunk.js.map → 8258-02d619de75-lite.chunk.js.map} +1 -1
- package/dist/scripts/8906-0821b0babe-lite.chunk.js +3 -0
- package/dist/scripts/8906-0821b0babe-lite.chunk.js.map +1 -0
- package/dist/scripts/{9212-d73ddd1ae6-lite.chunk.js → 9212-445b6499cb-lite.chunk.js} +2 -2
- package/dist/scripts/9212-445b6499cb-lite.chunk.js.map +1 -0
- package/dist/scripts/{9557-580fd7d743-lite.chunk.js → 9557-1ba0323e44-lite.chunk.js} +2 -2
- package/dist/scripts/{9557-580fd7d743-lite.chunk.js.map → 9557-1ba0323e44-lite.chunk.js.map} +1 -1
- package/dist/scripts/bundle-29a3b523cf.min.js +3 -0
- package/dist/scripts/bundle-29a3b523cf.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/scripts/1197-52bedf8583-lite.chunk.js.map +0 -1
- package/dist/scripts/1628-58b55d05b5-lite.chunk.js +0 -2
- package/dist/scripts/1628-58b55d05b5-lite.chunk.js.map +0 -1
- package/dist/scripts/170-f48bfc1128-lite.chunk.js.map +0 -1
- package/dist/scripts/227-fb7b36b41a-lite.chunk.js +0 -2
- package/dist/scripts/227-fb7b36b41a-lite.chunk.js.map +0 -1
- package/dist/scripts/2679-6c0646cc30-lite.chunk.js.map +0 -1
- package/dist/scripts/2734-a792d5393b-lite.chunk.js.map +0 -1
- package/dist/scripts/2851-e79b075ea9-lite.chunk.js.map +0 -1
- package/dist/scripts/3157-327cefda57-lite.chunk.js.map +0 -1
- package/dist/scripts/3158-7cff145fc4-lite.chunk.js.map +0 -1
- package/dist/scripts/3966-371341416b-lite.chunk.js.map +0 -1
- package/dist/scripts/4626-e91b79757e-lite.chunk.js +0 -3
- package/dist/scripts/5591-a4850980ea-lite.chunk.js.map +0 -1
- package/dist/scripts/5940-3ddc297b7a-lite.chunk.js.map +0 -1
- package/dist/scripts/7172-2d87ce76a3-lite.chunk.js.map +0 -1
- package/dist/scripts/7180-b29d70e9d8-lite.chunk.js +0 -2
- package/dist/scripts/7180-b29d70e9d8-lite.chunk.js.map +0 -1
- package/dist/scripts/7915-afd2304b08-lite.chunk.js.map +0 -1
- package/dist/scripts/8025-d7a573aca0-lite.chunk.js.map +0 -1
- package/dist/scripts/8906-49532e8ec3-lite.chunk.js +0 -3
- package/dist/scripts/8906-49532e8ec3-lite.chunk.js.map +0 -1
- package/dist/scripts/9212-d73ddd1ae6-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-0fbdccea0d.min.js +0 -3
- package/dist/scripts/bundle-0fbdccea0d.min.js.map +0 -1
- /package/dist/scripts/{170-f48bfc1128-lite.chunk.js.LICENSE.txt → 170-bf0dd6b8ae-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4626-e91b79757e-lite.chunk.js.LICENSE.txt → 4626-4e99512e98-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8906-49532e8ec3-lite.chunk.js.LICENSE.txt → 8906-0821b0babe-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-0fbdccea0d.min.js.LICENSE.txt → bundle-29a3b523cf.min.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9212],{94644:(e,t,a)=>{a.d(t,{r:()=>d});var i=a(50242),n=a(81886),r=a(67058),o=a(14553),c=a(49267),s=a(49075),l={notFound:r.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:s._};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var r;r="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},l),t);r&&n.Q.Ry.isStatusCodeError(r)&&(r!==i.o.NotFound?r!==i.o.Forbidden?a.badRequest||n.Q.Ry.throw(new o.badRequest):a.forbidden||n.Q.Ry.throw(new o.forbidden.privacy):a.notFound||n.Q.Ry.throw(new o.notFound))}}},91286:(e,t,a)=>{a.d(t,{v:()=>o});var i=a(32735),n=a(94644);function r(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,a){var o=Array.isArray(e)?e:[e];(0,i.useEffect)((function(){o.forEach((function(e){(0,n.r)(e.statusCode,t,a)}))}),[r(o),t,a])}},56871:(e,t,a)=>{a.d(t,{N:()=>W});var i=a(32735),n=a(23481),r=a(28400),o=a(65858),c=a(83345),s=a(19670),l=a(32614),d=a(13231),u=a(11518),p=a(15446),v=a(47862),m=a(9098),g=a(10439),f=a(35429),y=a(51365),h=a(4594),I=a(16714),C=a(12754),E=a(58704),P=a(22902),b=a(9907),A=a(59598),V=a(31908),w=a(26492),O=a(57654),T=a(99092),x=a(47938),k=a(81024),F=a(78166),R=a(99719),S=a(42571),N=a(99742),L=a(14070),q=a(97291),U=a(10671),j=a(10741),_=a(22490);function M(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,i=new Array(t);a<t;a++)i[a]=e[a];return i}var G=function(e,t,a){return function(i){return a?{application:q.O.VIDEOS,action:L.e.Videos.PREVIEW_PDF,args:[i.id],params:{videoId:e,shareId:t}}:{application:q.O.SIGN_UP,action:L.e.SignUp.SIGN_UP}}},B="shared.playClip",D=n.T.encloseNamespace(B);function W(e){var t,a,n,W,H,Q,z,K,Y,Z,X,$,J,ee,te,ae=(0,f.g)(),ie=(0,P.T)().hasPermissions,ne=V.M.getCanBeConsumed(e.clip).canConsume,re=(0,U._)({location:U.i.VideoItem}),oe=i.useRef(null),ce=i.useRef(null);(0,b.P)([oe.current,ce.current],e.tableOfContentsId);var se,le,de=V.M.isVideoTypeArchived(e.clip),ue=ie(I.C.StudentExperience),pe=i.useRef(!1),ve=(0,l.Wp)(e.clip,e.glanceTheme)&&e.featureAccess.canViewGlance,me=(se=i.useState({view:"loading",referrer:null}),le=2,function(e){if(Array.isArray(e))return e}(se)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var i,n,r,o,c=[],s=!0,l=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;s=!1}else for(;!(s=(i=r.call(a)).done)&&(c.push(i.value),c.length!==t);s=!0);}catch(e){l=!0,n=e}finally{try{if(!s&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(l)throw n}}return c}}(se,le)||function(e,t){if(e){if("string"==typeof e)return M(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?M(e,t):void 0}}(se,le)||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.")}()),ge=me[0],fe=me[1];function ye(){var t;return!(null===(t=e.currentUser)||void 0===t?void 0:t.isAuthenticated)||!e.hasProduct(C.x.Primary)||!!ue}i.useEffect((function(){e.glanceLoaded&&fe({view:e.glanceTheme?"v@g":"details",referrer:null})}),[e.glanceLoaded,e.glanceTheme]);var he=e.originalVideo&&!ye()&&!!(null===(t=e.clip._canBeConsumed)||void 0===t?void 0:t.value),Ie="picture-in-picture"===ae.mode||e.featureAccess.canViewPublicLayout,Ce=(0,T.jh)(e.clip,ue),Ee=null!==(H=null===(W=null===(n=null===(a=e.originalVideo)||void 0===a?void 0:a.clips)||void 0===n?void 0:n.data)||void 0===W?void 0:W.filter((function(t){return t.id.toString()!==e.clip.id.toString()})))&&void 0!==H?H:[];return i.createElement("div",{className:"px-4"},i.createElement(x.W,{restrictions:e.clip._restrictions,yearGroups:e.yearGroups,objectId:e.clip.id,objectTypeId:h.E.Clip,canManageVideoAccess:e.canManageVideoAccess}),de&&i.createElement(w.T,{typeId:e.clip.typeId,hasStudentExperience:ue}),i.createElement("section",{className:"mb-2"},ne&&i.createElement(g.r,{key:e.clip.id,objectId:e.clip.id,objectTypeId:e.clip.typeId,shareId:e.shareId,context:null===(Q=e.queryParams)||void 0===Q?void 0:Q.context,contextId:null===(z=e.queryParams)||void 0===z?void 0:z.contextId,moviesAndTv:null===(K=e.queryParams)||void 0===K?void 0:K.mtv,playNext:null===(Y=e.queryParams)||void 0===Y?void 0:Y.playNext,startTime:null!==(X=null===(Z=e.queryParams)||void 0===Z?void 0:Z.t)&&void 0!==X?X:null===($=e.queryParams)||void 0===$?void 0:$.startTime,mode:"default",location:"play-page"}),i.createElement("div",{className:Ie?"":"d-none"},i.createElement(k.S,{video:e.clip,type:"pip"}))),i.createElement(O.v,{media:e.clip,yearGroups:e.yearGroups,audiences:e.audiences,originalVideoAppLink:he?{application:q.O.VIDEOS,action:L.e.Videos.PLAY_VIDEO,args:[e.originalVideo.id,r.m.slugify(e.originalVideo.name)]}:null,featureAccess:e.featureAccess,shareId:e.shareId}),i.createElement("section",{className:"".concat("v@g"===ge.view?"d-block":"d-none")},i.createElement(s.o,{theme:e.glanceTheme,video:e.clip,pointsOfInterest:e.pointsOfInterest,onClickShowDescription:function(){return fe({view:"details",referrer:"v@g"})},setStartTime:function(e){var t;return null===(t=ae.playerRef.current)||void 0===t?void 0:t.currentTime(e)},getTagAppLink:function(e){return{application:q.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},suppressInteractivity:e.featureAccess.canViewPublicLayout})),i.createElement("section",{className:"".concat("details"===ge.view?"d-block":"d-none")},i.createElement(R.X,{video:e.clip,onLaunchImmersiveReader:function(){var e,t,a,i;pe.current=!(null===(t=null===(e=null==ae?void 0:ae.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.isPaused()),null===(i=null===(a=null==ae?void 0:ae.playerRef)||void 0===a?void 0:a.current)||void 0===i||i.pause()},onExitImmersiveReader:function(){var e,t;pe.current&&(null===(t=null===(e=null==ae?void 0:ae.playerRef)||void 0===e?void 0:e.current)||void 0===t||t.play())},onClickClose:ve&&function(){return fe({view:"v@g",referrer:"details"})},getTagAppLink:function(e){return{application:q.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},hideTags:ve,suppressInteractivity:e.featureAccess.canViewPublicLayout})),i.createElement("section",{className:"".concat("loading"===ge.view?"d-block":"d-none")},i.createElement(S.H,null)),!!(null==Ce?void 0:Ce.length)&&i.createElement("section",{className:"pb-3",id:A.K.Resources,ref:oe},i.createElement(u.kM,{name:D("resources",{count:Ce.length}),contents:E.z.PlayPageResources,collection:Ce,prefetched:!0,childComponent:m.R,extraChildComponentProps:{imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:N.W.Fallbacks.RESOURCE_THUMBNAIL,actionBehaviour:e.featureAccess.canViewResourceItems?"normal":"public",location:"play-page",titlePosition:"above",hideTypeBadge:!0},getChildAppLink:G(null===(J=e.clip)||void 0===J?void 0:J.id,e.shareId,e.featureAccess.canViewResourceItems),analyticsOptions:e.featureAccess.canViewResourceItems?{}:{workflowPhase:o.eu.Start,descriptor:o.Yu.SignUp},analyticsData:{widgetId:"resources"}})),!(!(null==Ee?void 0:Ee.length)||ye())&&i.createElement("div",{className:"pb-3"},i.createElement(u.kM,{name:D("otherClips",{count:Ee.length}),contents:E.z.Clips,collection:Ee,prefetched:!0,getChildAppLink:function(e){return{application:q.O.CLIPS,action:L.e.Clips.PLAY_CLIP,args:[e.id,r.m.slugify(e.name)]}},childComponent:p.C,extraChildComponentProps:{video:e.originalVideo,imageCdnUrl:e.imageCdnUrl},analyticsData:{widgetId:"clips"}})),!(!(null===(te=null===(ee=e.clip.interactives)||void 0===ee?void 0:ee.data)||void 0===te?void 0:te.length)||ye())&&i.createElement("div",{className:"pb-3",id:A.K.Interactives,ref:ce},i.createElement(u.kM,{name:D("interactives",{count:e.clip.interactives.data.length}),contents:E.z.Interactives,collection:e.clip.interactives.data,prefetched:!0,getChildAppLink:function(e){return{application:q.O.INTERACTIVES,action:L.e.Interactives.VIEW_INTERACTIVE,args:[e.id,r.m.slugify(e.name)]}},childComponent:v.K,extraChildComponentProps:{video:e.clip,questionsAppLink:{application:q.O.INTERACTIVES,action:L.e.Interactives.PREVIEW_QUESTIONS},imageCdnUrl:e.imageCdnUrl},analyticsData:{widgetId:"interactives"}})),!!he&&i.createElement("section",{className:"pb-2 pt-1"},i.createElement("h2",{className:"h4 mb-0"},i.createElement(c.x,{namespace:B,phrase:"clippedFrom"})),i.createElement(y.M.Provider,{value:re},i.createElement(d.E4,{videos:[e.originalVideo],yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,getVideoAppLink:function(t,a){return _.W.getAppLink(t,Object.assign(Object.assign({},a),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv}))},hasPermissions:ie,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:function(e){return j.j.getPreviewQuestionsAppLink(e)}}))),i.createElement("section",null,i.createElement(F.Z,{currentVideo:e.clip,yearGroups:e.yearGroups,relatedVideos:e.relatedVideos,setFavourite:e.setFavourite,canFavourite:e.canFavourite,currentUser:e.currentUser,audiences:e.audiences,getVideoAppLink:function(t,a){return _.W.getAppLink(t,Object.assign(Object.assign({},a),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv}))},moviesAndTv:e.queryParams.mtv})))}},44110:(e,t,a)=>{a.d(t,{i:()=>o});var i=a(20354),n=a(89454),r=a(86698),o=function(){var e=(0,r.y)({redirectOnError:!0}).activePresentation;return i.a.useBasicFetch(!!e&&n.O.presentationAudiences(e.id))}},27478:(e,t,a)=>{a.r(t),a.d(t,{PlayClipView:()=>N});var i=a(32735),n=a(50242),r=a(23481),o=a(20354),c=a(65858),s=a(78417),l=a(16714),d=a(67058),u=a(33803),p=a(43012),v=a(39151),m=a(1666),g=a(28907),f=a(31949),y=a(1575),h=a(27995),I=a(91286),C=a(22902),E=a(15311),P=a(79612),b=a(76753),A=a(56871),V=a(7179),w=a(49948),O=a(36873),T=a(27638),x=a(44110),k=a(35014),F=a(97816),R=r.T.encloseNamespace("shared.playClip"),S={notFound:d.d,forbidden:{privacy:u.G}};function N(e){var t,a,r,d,u,N,L=e.queryParams,q=L.context,U=L.contextId,j=L.mtv,_=(0,E.r)().hasProduct,M=(0,T.u)(c.LZ.PlayClip),G=M.setFavourite,B=M.canFavourite,D=(0,C.T)().hasPermissions,W=o.a.useBasicFetch(f.N.currentUser()),H=o.a.useBasicFetch(v.L.config()),Q=o.a.useBasicFetch(p.e.clip(e.id)),z=o.a.useBasicFetch(!!(null===(t=Q.data)||void 0===t?void 0:t._parentVideo)&&y.R.video(Q.data._parentVideo.id)),K=o.a.useBasicFetch(Q.statusCode===n.o.Forbidden&&p.e.clip(e.id,s.r.StripMetadata)),Y=(0,O.k)({video:z.data,context:q,contextId:U,moviesAndTv:j,currentUser:W.data}),Z=(0,x.i)(),X=o.a.useBasicFetch((null===(a=W.data)||void 0===a?void 0:a.isAuthenticated)&&m.h.yearGroups(W.data.customerId)),$=D(l.C.ViewVideoGlance)&&(null===(d=null===(r=Q.data)||void 0===r?void 0:r.glance)||void 0===d?void 0:d.theme),J=o.a.useBasicFetch($&&g.r.themeImages(Q.data.glance.theme,Q.data.glance.type)),ee=(0,w.l)(e.id,!0),te=(0,k.I)();return(0,P.M)(b.CG.getClipMetadata({content:Q.data,phraseContext:{phraseHandler:R,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"}})),(0,I.v)(Q,S,{forbidden:!0}),(0,F.V)(null!==(u=Y.videos)&&void 0!==u?u:[]),(0,h.b)(K),(0,V.P)({id:e.id,app:"clips"}),Q.data&&W.hasCompleted&&H.hasCompleted&&ee.hasCompleted?i.createElement(A.N,{clip:Q.data,originalVideo:z.data,currentUser:W.data,yearGroups:X.data,relatedVideos:"playlist"===q?Y:Object.assign(Object.assign({},Y),{videos:[]}),canFavourite:B,setFavourite:G,hasProduct:_,queryParams:e.queryParams,audiences:Z.data,imageCdnUrl:H.data.imageCdnUrl,canManageVideoAccess:D(l.C.ManageVideoAccess),pointsOfInterest:ee.items,glanceTheme:J.data,glanceLoaded:!$||J.hasCompleted,featureAccess:te,tableOfContentsId:null===(N=e.queryParams)||void 0===N?void 0:N.scrollTo}):i.createElement(i.Fragment,null)}N.defaultProps={queryParams:{}}}}]);
|
|
2
|
-
//# sourceMappingURL=9212-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9212],{94644:(e,t,a)=>{a.d(t,{r:()=>d});var i=a(50242),n=a(81886),r=a(67058),o=a(14553),c=a(49267),s=a(49075),l={notFound:r.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:s._};function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var r;r="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},l),t);r&&n.Q.Ry.isStatusCodeError(r)&&(r!==i.o.NotFound?r!==i.o.Forbidden?a.badRequest||n.Q.Ry.throw(new o.badRequest):a.forbidden||n.Q.Ry.throw(new o.forbidden.privacy):a.notFound||n.Q.Ry.throw(new o.notFound))}}},91286:(e,t,a)=>{a.d(t,{v:()=>o});var i=a(32735),n=a(94644);function r(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,a){var o=Array.isArray(e)?e:[e];(0,i.useEffect)((function(){o.forEach((function(e){(0,n.r)(e.statusCode,t,a)}))}),[r(o),t,a])}},56871:(e,t,a)=>{a.d(t,{N:()=>W});var i=a(32735),n=a(23481),r=a(28400),o=a(65858),c=a(83345),s=a(19670),l=a(32614),d=a(13231),u=a(11518),p=a(15446),v=a(47862),m=a(9098),g=a(10439),f=a(35429),y=a(51365),h=a(4594),I=a(16714),C=a(12754),E=a(58704),P=a(22902),b=a(9907),A=a(59598),V=a(31908),w=a(26492),O=a(57654),T=a(99092),k=a(47938),x=a(81024),F=a(78166),R=a(99719),S=a(42571),N=a(99742),L=a(14070),q=a(97291),U=a(10671),j=a(10741),_=a(22490);function M(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,i=new Array(t);a<t;a++)i[a]=e[a];return i}var G=function(e,t,a){return function(i){return a?{application:q.O.VIDEOS,action:L.e.Videos.PREVIEW_PDF,args:[i.id],params:{videoId:e,shareId:t}}:{application:q.O.SIGN_UP,action:L.e.SignUp.SIGN_UP}}},B="shared.playClip",D=n.T.encloseNamespace(B);function W(e){var t,a,n,W,H,Q,z,K,Y,Z,X,$,J,ee,te,ae=(0,f.g)(),ie=(0,P.T)().hasPermissions,ne=V.M.getCanBeConsumed(e.clip).canConsume,re=(0,U._)({location:U.i.VideoItem}),oe=i.useRef(null),ce=i.useRef(null);(0,b.P)([oe.current,ce.current],e.tableOfContentsId);var se,le,de=V.M.isVideoTypeArchived(e.clip),ue=ie(I.C.StudentExperience),pe=i.useRef(!1),ve=(0,l.Wp)(e.clip,e.glanceTheme)&&e.featureAccess.canViewGlance,me=(se=i.useState({view:"loading",referrer:null}),le=2,function(e){if(Array.isArray(e))return e}(se)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var i,n,r,o,c=[],s=!0,l=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;s=!1}else for(;!(s=(i=r.call(a)).done)&&(c.push(i.value),c.length!==t);s=!0);}catch(e){l=!0,n=e}finally{try{if(!s&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(l)throw n}}return c}}(se,le)||function(e,t){if(e){if("string"==typeof e)return M(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?M(e,t):void 0}}(se,le)||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.")}()),ge=me[0],fe=me[1];function ye(){var t;return!(null===(t=e.currentUser)||void 0===t?void 0:t.isAuthenticated)||!e.hasProduct(C.x.Primary)||!!ue}i.useEffect((function(){e.glanceLoaded&&fe({view:e.glanceTheme?"v@g":"details",referrer:null})}),[e.glanceLoaded,e.glanceTheme]);var he=e.originalVideo&&!ye()&&!!(null===(t=e.clip._canBeConsumed)||void 0===t?void 0:t.value),Ie="picture-in-picture"===ae.mode||e.featureAccess.canViewPublicLayout,Ce=(0,T.jh)(e.clip,ue),Ee=null!==(H=null===(W=null===(n=null===(a=e.originalVideo)||void 0===a?void 0:a.clips)||void 0===n?void 0:n.data)||void 0===W?void 0:W.filter((function(t){return t.id.toString()!==e.clip.id.toString()})))&&void 0!==H?H:[];return i.createElement("div",{className:"px-4"},i.createElement(k.W,{restrictions:e.clip._restrictions,yearGroups:e.yearGroups,objectId:e.clip.id,objectTypeId:h.E.Clip,canManageVideoAccess:e.canManageVideoAccess}),de&&i.createElement(w.T,{typeId:e.clip.typeId,hasStudentExperience:ue}),i.createElement("section",{className:"mb-2"},ne&&i.createElement(g.r,{key:e.clip.id,objectId:e.clip.id,objectTypeId:e.clip.typeId,shareId:e.shareId,context:null===(Q=e.queryParams)||void 0===Q?void 0:Q.context,contextId:null===(z=e.queryParams)||void 0===z?void 0:z.contextId,moviesAndTv:null===(K=e.queryParams)||void 0===K?void 0:K.mtv,playNext:null===(Y=e.queryParams)||void 0===Y?void 0:Y.playNext,startTime:null!==(X=null===(Z=e.queryParams)||void 0===Z?void 0:Z.t)&&void 0!==X?X:null===($=e.queryParams)||void 0===$?void 0:$.startTime,mode:"default",location:"play-page"}),i.createElement("div",{className:Ie?"":"d-none"},i.createElement(x.S,{video:e.clip,type:"pip"}))),i.createElement(O.v,{media:e.clip,yearGroups:e.yearGroups,audiences:e.audiences,originalVideoAppLink:he?{application:q.O.VIDEOS,action:L.e.Videos.PLAY_VIDEO,args:[e.originalVideo.id,r.m.slugify(e.originalVideo.name)]}:null,featureAccess:e.featureAccess,shareId:e.shareId}),i.createElement("section",{className:"".concat("v@g"===ge.view?"d-block":"d-none")},i.createElement(s.o,{theme:e.glanceTheme,video:e.clip,pointsOfInterest:e.pointsOfInterest,onClickShowDescription:function(){return fe({view:"details",referrer:"v@g"})},setStartTime:function(e){var t;return null===(t=ae.playerRef.current)||void 0===t?void 0:t.currentTime(e)},getTagAppLink:function(e){return{application:q.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},suppressInteractivity:e.featureAccess.canViewPublicLayout})),i.createElement("section",{className:"".concat("details"===ge.view?"d-block":"d-none")},i.createElement(R.X,{video:e.clip,onLaunchImmersiveReader:function(){var e,t,a,i;pe.current=!(null===(t=null===(e=null==ae?void 0:ae.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.isPaused()),null===(i=null===(a=null==ae?void 0:ae.playerRef)||void 0===a?void 0:a.current)||void 0===i||i.pause()},onExitImmersiveReader:function(){var e,t;pe.current&&(null===(t=null===(e=null==ae?void 0:ae.playerRef)||void 0===e?void 0:e.current)||void 0===t||t.play())},onClickClose:ve&&function(){return fe({view:"v@g",referrer:"details"})},getTagAppLink:function(e){return{application:q.O.SEARCH,action:L.e.Search.HOME,params:{tagOrClassification:e.name}}},hideTags:ve,suppressInteractivity:e.featureAccess.canViewPublicLayout})),i.createElement("section",{className:"".concat("loading"===ge.view?"d-block":"d-none")},i.createElement(S.H,null)),!!(null==Ce?void 0:Ce.length)&&i.createElement("section",{className:"pb-3",id:A.K.Resources,ref:oe},i.createElement(u.kM,{name:D("resources",{count:Ce.length}),contents:E.z.PlayPageResources,collection:Ce,prefetched:!0,childComponent:m.R,extraChildComponentProps:{imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:N.W.Fallbacks.RESOURCE_THUMBNAIL,actionBehaviour:e.featureAccess.canViewResourceItems?"normal":"public",location:"play-page",titlePosition:"above",hideTypeBadge:!0},getChildAppLink:G(null===(J=e.clip)||void 0===J?void 0:J.id,e.shareId,e.featureAccess.canViewResourceItems),analyticsOptions:e.featureAccess.canViewResourceItems?{}:{workflowPhase:o.eu.Start,descriptor:o.Yu.SignUp},analyticsData:{widgetId:"resources"}})),!(!(null==Ee?void 0:Ee.length)||ye())&&i.createElement("div",{className:"pb-3"},i.createElement(u.kM,{name:D("otherClips",{count:Ee.length}),contents:E.z.Clips,collection:Ee,prefetched:!0,getChildAppLink:function(e){return{application:q.O.CLIPS,action:L.e.Clips.PLAY_CLIP,args:[e.id,r.m.slugify(e.name)]}},childComponent:p.C,extraChildComponentProps:{video:e.originalVideo,imageCdnUrl:e.imageCdnUrl},analyticsData:{widgetId:"clips"}})),!(!(null===(te=null===(ee=e.clip.interactives)||void 0===ee?void 0:ee.data)||void 0===te?void 0:te.length)||ye())&&i.createElement("div",{className:"pb-3",id:A.K.Interactives,ref:ce},i.createElement(u.kM,{name:D("interactives",{count:e.clip.interactives.data.length}),contents:E.z.Interactives,collection:e.clip.interactives.data,prefetched:!0,getChildAppLink:function(e){return{application:q.O.INTERACTIVES,action:L.e.Interactives.VIEW_INTERACTIVE,args:[e.id,r.m.slugify(e.name)]}},childComponent:v.K,extraChildComponentProps:{video:e.clip,questionsAppLink:{application:q.O.INTERACTIVES,action:L.e.Interactives.PREVIEW_QUESTIONS},imageCdnUrl:e.imageCdnUrl},analyticsData:{widgetId:"interactives"}})),!!he&&i.createElement("section",{className:"pb-2 pt-1"},i.createElement("h2",{className:"h4 mb-0"},i.createElement(c.x,{namespace:B,phrase:"clippedFrom"})),i.createElement(y.M.Provider,{value:re},i.createElement(d.E4,{videos:[e.originalVideo],yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,getVideoAppLink:function(t,a){return _.W.getAppLink(t,Object.assign(Object.assign({},a),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv}))},hasPermissions:ie,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:function(e){return j.j.getPreviewQuestionsAppLink(e)}}))),i.createElement("section",null,i.createElement(F.Z,{currentVideo:e.clip,yearGroups:e.yearGroups,relatedVideos:e.relatedVideos,setFavourite:e.setFavourite,canFavourite:e.canFavourite,currentUser:e.currentUser,audiences:e.audiences,getVideoAppLink:function(t,a){return _.W.getAppLink(t,Object.assign(Object.assign({},a),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv}))},moviesAndTv:e.queryParams.mtv})))}},44110:(e,t,a)=>{a.d(t,{i:()=>o});var i=a(20354),n=a(89454),r=a(86698),o=function(){var e=(0,r.y)({redirectOnError:!0}),t=e.activePresentation,a=e.getFallbackPresentation,o=t||a();return i.a.useBasicFetch(!!o&&n.O.presentationAudiences(o.id))}},27478:(e,t,a)=>{a.r(t),a.d(t,{PlayClipView:()=>N});var i=a(32735),n=a(50242),r=a(23481),o=a(20354),c=a(65858),s=a(78417),l=a(16714),d=a(67058),u=a(33803),p=a(43012),v=a(39151),m=a(1666),g=a(28907),f=a(31949),y=a(1575),h=a(27995),I=a(91286),C=a(22902),E=a(15311),P=a(79612),b=a(76753),A=a(56871),V=a(7179),w=a(49948),O=a(36873),T=a(27638),k=a(44110),x=a(35014),F=a(97816),R=r.T.encloseNamespace("shared.playClip"),S={notFound:d.d,forbidden:{privacy:u.G}};function N(e){var t,a,r,d,u,N,L=e.queryParams,q=L.context,U=L.contextId,j=L.mtv,_=(0,E.r)().hasProduct,M=(0,T.u)(c.LZ.PlayClip),G=M.setFavourite,B=M.canFavourite,D=(0,C.T)().hasPermissions,W=o.a.useBasicFetch(f.N.currentUser()),H=o.a.useBasicFetch(v.L.config()),Q=o.a.useBasicFetch(p.e.clip(e.id)),z=o.a.useBasicFetch(!!(null===(t=Q.data)||void 0===t?void 0:t._parentVideo)&&y.R.video(Q.data._parentVideo.id)),K=o.a.useBasicFetch(Q.statusCode===n.o.Forbidden&&p.e.clip(e.id,s.r.StripMetadata)),Y=(0,O.k)({video:z.data,context:q,contextId:U,moviesAndTv:j,currentUser:W.data}),Z=(0,k.i)(),X=o.a.useBasicFetch((null===(a=W.data)||void 0===a?void 0:a.isAuthenticated)&&m.h.yearGroups(W.data.customerId)),$=D(l.C.ViewVideoGlance)&&(null===(d=null===(r=Q.data)||void 0===r?void 0:r.glance)||void 0===d?void 0:d.theme),J=o.a.useBasicFetch($&&g.r.themeImages(Q.data.glance.theme,Q.data.glance.type)),ee=(0,w.l)(e.id,!0),te=(0,x.I)();return(0,P.M)(b.CG.getClipMetadata({content:Q.data,phraseContext:{phraseHandler:R,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"}})),(0,I.v)(Q,S,{forbidden:!0}),(0,F.V)(null!==(u=Y.videos)&&void 0!==u?u:[]),(0,h.b)(K),(0,V.P)({id:e.id,app:"clips"}),Q.data&&W.hasCompleted&&H.hasCompleted&&ee.hasCompleted?i.createElement(A.N,{clip:Q.data,originalVideo:z.data,currentUser:W.data,yearGroups:X.data,relatedVideos:"playlist"===q?Y:Object.assign(Object.assign({},Y),{videos:[]}),canFavourite:B,setFavourite:G,hasProduct:_,queryParams:e.queryParams,audiences:Z.data,imageCdnUrl:H.data.imageCdnUrl,canManageVideoAccess:D(l.C.ManageVideoAccess),pointsOfInterest:ee.items,glanceTheme:J.data,glanceLoaded:!$||J.hasCompleted,featureAccess:te,tableOfContentsId:null===(N=e.queryParams)||void 0===N?void 0:N.scrollTo}):i.createElement(i.Fragment,null)}N.defaultProps={queryParams:{}}}}]);
|
|
2
|
+
//# sourceMappingURL=9212-445b6499cb-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/9212-445b6499cb-lite.chunk.js","mappings":"0MA0BMA,EAA8B,CAClCC,SAAU,IACVC,UAAW,CACTC,OAAQ,IACRC,UAAW,IACXC,OAAQ,IACRC,QAAS,KAEXC,WAAY,KAGR,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,wBACTd,GACAU,GAGAE,GAGA,yBAAmCA,KAGpCA,IAAe,aAMfA,IAAe,cAUdD,EAAUJ,YACb,aAAuB,IAAIO,EAASP,YAN/BI,EAAUT,WACb,aAAuB,IAAIY,EAASZ,UAAUI,SAX3CK,EAAUV,UACb,aAAuB,IAAIa,EAASb,UAvBhC,CAuCV,C,6DChFA,SAASc,EAAiBC,GACxB,OAAOA,EAAWC,KAAI,SAAAC,GAAG,OAAIA,EAAIN,UAAU,IAAEO,KAAK,IACpD,CAGM,SAAUC,EACdC,EACAC,EACAC,GAEA,IAAMP,EAAaQ,MAAMC,QAAQJ,GAAeA,EAAc,CAACA,IAE/D,IAAAK,YAAU,WACRV,EAAWW,SAAQ,SAAAT,IACjB,OAAgBA,EAAIN,WAAYU,EAAcC,EAChD,GACF,GAAG,CAAER,EAAiBC,GAAaM,EAAcC,GACnD,C,qiBCyBA,IAAMK,EAAqB,SAACC,EAAiBC,EAAiBC,GAAwB,OACpF,SAACC,GACC,OAAKD,EAOE,CACLE,YAAa,WACbC,OAAQ,uBACRC,KAAM,CAACH,EAASI,IAChBC,OAAQ,CACNR,QAASA,EACTC,QAASA,IAZJ,CACLG,YAAa,YACbC,OAAQ,mBAad,CAAC,EAEGI,EAAY,kBACZC,EAAY,qBAAiCD,GA4B7C,SAAUE,EAASC,G,oCACjBC,IAAgB,SAEdC,IAAmB,SAAnBA,eACAC,GAAe,qBAA6BH,EAAMI,MAAlDD,WAEFE,IAAe,OAAgB,CAAEC,SAAU,gBAE3CC,GAAe,SAA6B,MAC5CC,GAAkB,SAA6B,OAErD,OAAyB,CACvBD,GAAaE,QACbD,GAAgBC,SACfT,EAAMU,mBAET,I,MAAMC,GAAa,wBAAgCX,EAAMI,MACnDQ,GAAuBV,GAAe,uBAMtCW,GAAkC,UAAa,GAE/CC,IAAY,QAAcd,EAAMI,KAAMJ,EAAMe,cAAgBf,EAAMgB,cAAcC,cAKpF,I,GAHsC,WAAgC,CACtEC,KAAM,UACNC,SAAU,O,GACV,E,u5BAHMC,GAAW,MAAEC,GAAc,MA2BnC,SAASC,K,MACP,QAAsB,QAAjB,EAAAtB,EAAMuB,mBAAW,eAAEC,mBAGnBxB,EAAMyB,WAAW,gBAGlBb,EAIN,CAjCA,aAAgB,WACTZ,EAAM0B,cAGXL,GAAe,CACbH,KAAMlB,EAAMe,YAAc,MAAQ,UAClCI,SAAU,MAEd,GAAG,CAAEnB,EAAM0B,aAAc1B,EAAMe,cA2B/B,IAAMY,GAAoB3B,EAAM4B,gBAAkBN,SAA4C,QAAzB,EAAAtB,EAAMI,KAAKyB,sBAAc,eAAEC,OAa1FC,GAA+C,uBAAvB9B,GAAc+B,MAAiChC,EAAMgB,cAAciB,oBAE3FC,IAAkB,QAAalC,EAAMI,KAAMQ,IAE3CuB,GAAwG,QAA3F,EAAgC,QAAhC,EAA0B,QAA1B,EAAmB,QAAnB,EAAAnC,EAAM4B,qBAAa,eAAEQ,aAAK,eAAEC,YAAI,eAAEC,QAAO,SAAAC,GAAC,OAAIA,EAAE5C,GAAG6C,aAAexC,EAAMI,KAAKT,GAAG6C,UAAU,WAAC,QAAI,GAElH,OACE,uBAAKC,UAAU,QACb,gBAAC,IAAiB,CAChBC,aAAc1C,EAAMI,KAAKuC,cACzBC,WAAY5C,EAAM4C,WAClBC,SAAU7C,EAAMI,KAAKT,GACrBmD,aAAc,SACdC,qBAAsB/C,EAAM+C,uBAG7BpC,IACC,gBAAC,IAAc,CACbqC,OAAQhD,EAAMI,KAAK4C,OACnBpC,qBAAsBA,KAI1B,2BAAS6B,UAAS,QACftC,IACC,gBAAC,IAAoB,CACnB8C,IAAKjD,EAAMI,KAAKT,GAChBkD,SAAU7C,EAAMI,KAAKT,GACrBmD,aAAc9C,EAAMI,KAAK4C,OACzB3D,QAASW,EAAMX,QACf6D,QAA0B,QAAjB,EAAAlD,EAAMmD,mBAAW,eAAED,QAC5BE,UAA4B,QAAjB,EAAApD,EAAMmD,mBAAW,eAAEC,UAC9BC,YAA8B,QAAjB,EAAArD,EAAMmD,mBAAW,eAAEG,IAChCC,SAA2B,QAAjB,EAAAvD,EAAMmD,mBAAW,eAAEI,SAC7BC,UAA+B,QAApB,EAAiB,QAAjB,EAAAxD,EAAMmD,mBAAW,eAAEM,SAAC,QAAqB,QAAjB,EAAAzD,EAAMmD,mBAAW,eAAEK,UACtDxB,KAAK,UACL1B,SAAS,cAGb,uBAAKmC,UAAWV,GAAwB,GAAK,UAC3C,gBAAC,IAAiB,CAChB2B,MAAO1D,EAAMI,KACbuD,KAAK,UAKX,gBAAC,IAAuB,CACtBC,MAAO5D,EAAMI,KACbwC,WAAY5C,EAAM4C,WAClBiB,UAAW7D,EAAM6D,UACjBC,qBA7DCnC,GAGE,CACLnC,YAAa,WACbC,OAAQ,sBACRC,KAAM,CAAEM,EAAM4B,cAAcjC,GAAI,YAAmBK,EAAM4B,cAAcmC,QALhE,KA6DL/C,cAAehB,EAAMgB,cACrB3B,QAASW,EAAMX,UAQjB,2BAASoD,UAAS,UAA0B,QAArBrB,GAAYF,KAAiB,UAAY,WAC9D,gBAAC,IAAc,CACb8C,MAAOhE,EAAMe,YACb2C,MAAO1D,EAAMI,KACb6D,iBAAkBjE,EAAMiE,iBACxBC,uBAAwB,kBAAM7C,GAAe,CAAEH,KAAM,UAAWC,SAAU,OAAQ,EAClFgD,aAAc,SAACC,GAAgB,MAAC,OAA+B,QAA/B,EAAAnE,GAAcoE,UAAU5D,eAAO,eAAE6D,YAAYF,EAAK,EAClFG,cAAe,SAAAC,GAAG,MAAK,CACrBhF,YAAa,WACbC,OAAQ,gBACRG,OAAQ,CAAE6E,oBAAqBD,EAAIT,MACpC,EACDW,sBAAuB1E,EAAMgB,cAAciB,uBAI/C,2BAASQ,UAAS,UAA0B,YAArBrB,GAAYF,KAAqB,UAAY,WAClE,gBAAC,IAAyB,CACxBwC,MAAO1D,EAAMI,KACbuE,wBAtHR,W,YACE9D,GAAgCJ,UAA4C,QAAjC,EAAwB,QAAxB,EAAAR,cAAa,EAAbA,GAAeoE,iBAAS,eAAE5D,eAAO,eAAEmE,YAC7C,QAAjC,EAAwB,QAAxB,EAAA3E,cAAa,EAAbA,GAAeoE,iBAAS,eAAE5D,eAAO,SAAEoE,OACrC,EAoHQC,sBAlHR,W,QACOjE,GAAgCJ,UAGJ,QAAjC,EAAwB,QAAxB,EAAAR,cAAa,EAAbA,GAAeoE,iBAAS,eAAE5D,eAAO,SAAEsE,OACrC,EA8GQC,aAAclE,IAAc,kBAAMO,GAAe,CAAEH,KAAM,MAAOC,SAAU,WAAY,EACtFoD,cAAe,SAAAC,GAAG,MAAK,CACrBhF,YAAa,WACbC,OAAQ,gBACRG,OAAQ,CAAE6E,oBAAqBD,EAAIT,MACpC,EACDkB,SAAUnE,GACV4D,sBAAuB1E,EAAMgB,cAAciB,uBAI/C,2BAASQ,UAAS,UAA0B,YAArBrB,GAAYF,KAAqB,UAAY,WAClE,gBAAC,IAAmB,UAGnBgB,cAAe,EAAfA,GAAiBgD,SAClB,2BAASzC,UAAU,OAAO9C,GAAI,cAA0BwF,IAAK5E,IAC3D,gBAAC,KAAW,CACVwD,KAAMjE,EAAU,YAAa,CAAEsF,MAAOlD,GAAgBgD,SACtDG,SAAU,sBACVC,WAAYpD,GACZqD,YAAU,EACVC,eAAgB,EAAAC,EAChBC,yBAA0B,CACxBC,YAAa3F,EAAM2F,YACnBC,sBAAuB,iCACvBC,gBAAiB7F,EAAMgB,cAAc8E,qBAAuB,SAAW,SACvExF,SAAU,YACVyF,cAAe,QACfC,eAAe,GAEjBC,gBAAiB9G,EACL,QAAV,EAAAa,EAAMI,YAAI,eAAET,GACZK,EAAMX,QACNW,EAAMgB,cAAc8E,sBAEtBI,iBACMlG,EAAMgB,cAAc8E,qBACf,CAAC,EAEH,CACLK,cAAe,WACfC,WAAY,KAAAC,QAGhBC,cAAe,CAAEC,SAAU,oBAK7BpE,cAAU,EAAVA,GAAY+C,SAAW5D,OACzB,uBAAKmB,UAAU,QACb,gBAAC,KAAW,CACVsB,KAAMjE,EAAU,aAAc,CAAEsF,MAAOjD,GAAW+C,SAClDG,SAAU,UACVC,WAAYnD,GACZoD,YAAU,EACVU,gBAAiB,SAAC7F,GAChB,MAAO,CACLZ,YAAa,UACbC,OAAQ,oBACRC,KAAM,CAAEU,EAAKT,GAAI,YAAmBS,EAAK2D,OAE7C,EACAyB,eAAgB,EAAAgB,EAChBd,yBAA0B,CAAEhC,MAAO1D,EAAM4B,cAAe+D,YAAa3F,EAAM2F,aAC3EW,cAAe,CAAEC,SAAU,gBAKA,QAA7B,GAAuB,QAAvB,GAAAvG,EAAMI,KAAKqG,oBAAY,iBAAEpE,YAAI,iBAAE6C,SAAW5D,OAC5C,uBAAKmB,UAAU,OAAO9C,GAAI,iBAA6BwF,IAAK3E,IAC1D,gBAAC,KAAW,CACVuD,KAAMjE,EAAU,eAAgB,CAAEsF,MAAOpF,EAAMI,KAAKqG,aAAapE,KAAK6C,SACtEG,SAAU,iBACVC,WAAYtF,EAAMI,KAAKqG,aAAapE,KACpCkD,YAAU,EACVU,gBAAiB,SAACS,GAChB,MAAO,CACLlH,YAAa,iBACbC,OAAQ,kCACRC,KAAM,CAAEgH,EAAY/G,GAAI,YAAmB+G,EAAY3C,OAE3D,EACAyB,eAAgB,IAChBE,yBAA0B,CACxBhC,MAAO1D,EAAMI,KACbuG,iBAAkB,CAChBnH,YAAa,iBACbC,OAAQ,oCAEVkG,YAAa3F,EAAM2F,aAErBW,cAAe,CAAEC,SAAU,qBAK9B5E,IACD,2BAASc,UAAU,aACjB,sBAAIA,UAAU,WAAU,gBAAC,IAAI,CAAC5C,UAAWA,EAAW+G,OAAO,iBAC3D,gBAAC,aAA4B,CAAC9E,MAAOzB,IACnC,gBAAC,KAAS,CACRwG,OAAQ,CAAC7G,EAAM4B,eACfgB,WAAY5C,EAAM4C,WAClBkE,aAAc9G,EAAM8G,aACpBC,aAAc/G,EAAM+G,aACpBC,gBAAiB,SAACC,EAAGC,GAAI,OAAK,eAA8BD,EAAG,OAAF,wBACxDC,GAAI,CACPhE,QAASlD,EAAMmD,YAAYD,QAC3BE,UAAWpD,EAAMmD,YAAYC,UAC7BG,SAAUvD,EAAMmD,YAAYI,SAC5BlE,QAASW,EAAMX,QACfgE,YAAarD,EAAMmD,YAAYG,MAC/B,EACFpD,eAAgBA,GAChBiH,sBAAuBnH,EAAM6D,UAC7BuD,2BAA4B,SAAAV,GAAW,OAAI,+BAA8CA,EAAY,MAM7G,+BACE,gBAAC,IAAa,CACZW,aAAcrH,EAAMI,KACpBwC,WAAY5C,EAAM4C,WAClB0E,cAAetH,EAAMsH,cACrBR,aAAc9G,EAAM8G,aACpBC,aAAc/G,EAAM+G,aACpBxF,YAAavB,EAAMuB,YACnBsC,UAAW7D,EAAM6D,UACjBmD,gBAAiB,SAACC,EAAGC,GAAI,OAAK,eAA8BD,EAAG,OAAF,wBACxDC,GAAI,CACPhE,QAASlD,EAAMmD,YAAYD,QAC3BE,UAAWpD,EAAMmD,YAAYC,UAC7BG,SAAUvD,EAAMmD,YAAYI,SAC5BlE,QAASW,EAAMX,QACfgE,YAAarD,EAAMmD,YAAYG,MAC/B,EACFD,YAAarD,EAAMmD,YAAYG,OAKzC,C,wEC9YaiE,EAA2B,WACtC,OAAwD,OAAgB,CAAEC,iBAAiB,IAAnFC,EAAkB,EAAlBA,mBAAoBC,EAAuB,EAAvBA,wBAEtBC,EAAeF,GAAsBC,IAO3C,OALkB,oBACdC,GACF,0BAAuCA,EAAahI,IAIxD,C,qXCmBMG,EAAY,qBADA,mBAGZ8H,EAAa,CACjBpK,SAAU,IACVC,UAAW,CACTI,QAAS,MAaP,SAAUgK,EAAa7H,G,gBAC3B,EAAoCA,EAAMmD,YAAlCD,EAAO,EAAPA,QAASE,EAAS,EAATA,UAAWE,EAAG,EAAHA,IAEpB7B,GAAe,SAAfA,WACR,GAAuC,IAAAqG,GAAkB,eAAjDhB,EAAY,EAAZA,aAAcC,EAAY,EAAZA,aACd7G,GAAmB,SAAnBA,eAEFqB,EAAc,kBAAkC,mBAChDwG,EAAS,kBAA6B,cACtC3H,EAAO,kBAA2B,SAAkBJ,EAAML,KAC1D+D,EAAQ,qBAAuC,QAAT,EAAAtD,EAAKiC,YAAI,eAAE2F,eACrD,UAAoB5H,EAAKiC,KAAK2F,aAAarI,KACvCsI,EAAe,kBAA2B7H,EAAKjC,aAAe,eAClE,SAAkB6B,EAAML,GAAI,oBACxB2H,GAAgB,OAAoB,CACxC5D,MAAOA,EAAMrB,KACba,QAAAA,EACAE,UAAAA,EACAC,YAAaC,EACb/B,YAAaA,EAAYc,OAErBwB,GAAY,SACZjB,EAAa,mBACD,QAAhB,EAAArB,EAAYc,YAAI,eAAEb,kBAAmB,eAA4BD,EAAYc,KAAK6F,aAG9EC,EAAmBjI,EAAe,uBACvB,QAAjB,EAAS,QAAT,EAAAE,EAAKiC,YAAI,eAAE+F,cAAM,eAAEpE,OAEbjD,EAAc,kBAClBoH,GACA,gBAA0B/H,EAAKiC,KAAK+F,OAAOpE,MAAO5D,EAAKiC,KAAK+F,OAAOzE,OAE/DM,IAAmB,OAAyBjE,EAAML,IAAI,GAEtDqB,IAAgB,SAuBtB,OArBA,OAAmB,qBAAmC,CACpDqH,QAASjI,EAAKiC,KACdiG,cAAe,CACbC,cAAezI,EACf0I,YAAa,YACbC,kBAAmB,uBAIvB,OAAqBrI,EAAMwH,EAAY,CAAEnK,WAAW,KACpD,OAAkC,QAApB,EAAA6J,EAAcT,cAAM,QAAI,KACtC,OAAsBoB,IACtB,OAAa,CAAEtI,GAAIK,EAAML,GAAI+I,IAAK,UAGhCtI,EAAKiC,MACLd,EAAYoH,cACZZ,EAAOY,cACP1E,GAAiB0E,aAOjB,gBAAC,IAAQ,CACPvI,KAAMA,EAAKiC,KACXT,cAAe8B,EAAMrB,KACrBd,YAAaA,EAAYc,KACzBO,WAAYA,EAAWP,KAEvBiF,cAA2B,aAAZpE,EAAyBoE,EAAe,+BAAMA,GAAa,CAAET,OAAQ,KACpFE,aAAcA,EACdD,aAAcA,EACdrF,WAAYA,EACZ0B,YAAanD,EAAMmD,YACnBU,UAAWA,EAAUxB,KACrBsD,YAAaoC,EAAO1F,KAAKsD,YACzB5C,qBAAsB7C,EAAe,uBACrC+D,iBAAkBA,GAAiB2E,MACnC7H,YAAaA,EAAYsB,KACzBX,cAAeyG,GAAoBpH,EAAY4H,aAC/C3H,cAAeA,GACfN,kBAAoC,QAAjB,EAAAV,EAAMmD,mBAAW,eAAE0F,WArBjC,gCAwBX,CAvFAhB,EAAaiB,aAAe,CAC1B3F,YAAa,CAAC,E","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/shared/components/play-clip/PlayClip.tsx","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/views/play-clip/PlayClipView.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}\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};\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.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 { 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 { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { SignUpDescriptors, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoAtAGlance } from 'libs/shared/components/video-at-a-glance/VideoAtAGlance';\nimport { hasGlanceData } from 'libs/shared/components/video-at-a-glance/VideoAtAGlanceUtils';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { ClipWidgetItem, ClipWidgetItemProps } from 'libs/shared/components/widgets/items/clip-widget-item/ClipWidgetItem';\nimport { InteractiveWidgetItem, InteractiveWidgetItemProps } from 'libs/shared/components/widgets/items/interactive-widget-item/InteractiveWidgetItem';\nimport { ResourceWidgetItem, ResourceWidgetItemProps } from 'libs/shared/components/widgets/items/resource-widget-item/ResourceWidgetItem';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { HasProductFunc } from 'libs/shared/hooks/UseProducts';\nimport { useTableOfContentsScroll } from 'libs/shared/hooks/useTableOfContentsScroll';\nimport { CanFavouriteFunc, Clip, CurrentUser, FavouriteFunc, Interactive, Link, PointOfInterest, PresentationAudience, Resource, Theme, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { PlayPageTitleAndActions } from 'shared/components/play-page/components/PlayPageTitleAndActions';\nimport { getResources } from 'shared/components/play-page/PlayPageUtils';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { PlayerPlaceholder } from 'shared/components/player-placeholder/PlayerPlaceholder';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { VideoDetailsWithScrollbar } from 'shared/components/video-details/VideoDetails';\nimport { VideoDetailsPartial } from 'shared/components/video-details/VideoDetailsPartial';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoFeaturesHash } from 'shared/hooks/useVideoFeatureAccess';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nconst getResourceAppLink = (videoId: string, shareId: string, canViewResource: boolean) =>\n (resource: Resource | Link) => {\n if (!canViewResource) {\n return {\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n };\n }\n\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PREVIEW_PDF,\n args: [resource.id],\n params: {\n videoId: videoId,\n shareId: shareId\n }\n };\n };\n\nconst namespace = 'shared.playClip';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype DetailsViewType = {\n view: 'v@g' | 'details' | 'loading';\n referrer: 'v@g' | 'details';\n};\n\ninterface PlayClipProps {\n clip: Clip;\n originalVideo: Video;\n currentUser: CurrentUser;\n yearGroups: YearGroup[];\n relatedVideos: RelatedVideosHash;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n queryParams: PlayViewQueryParams;\n hasProduct: HasProductFunc;\n audiences: PresentationAudience[];\n imageCdnUrl: string;\n shareId?: string;\n canManageVideoAccess: boolean;\n pointsOfInterest?: PointOfInterest[];\n featureAccess: VideoFeaturesHash;\n glanceTheme?: Theme;\n glanceLoaded: boolean;\n tableOfContentsId: string;\n}\n\nexport function PlayClip(props: PlayClipProps): JSX.Element {\n const playerContext = usePlayerContext();\n\n const { hasPermissions } = usePermissions();\n const { canConsume } = VideoHelper.getCanBeConsumed(props.clip);\n \n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n\n const resourcesRef = React.useRef<HTMLDivElement>(null);\n const interactivesRef = React.useRef<HTMLDivElement>(null);\n\n useTableOfContentsScroll([\n resourcesRef.current,\n interactivesRef.current\n ], props.tableOfContentsId);\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.clip);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n /**\n * Need to use a ref because if we use state, onExitImmersiveReader will have a stale\n * reference of the state. This is because the state is changed in onLaunchImmersiveReader\n * which is passed in at the same time as onExitImmersiveReader\n */\n const shouldPlayOnExitImmersiveReader = React.useRef(false);\n\n const hasGlance = hasGlanceData(props.clip, props.glanceTheme) && props.featureAccess.canViewGlance;\n\n const [ detailsView, setDetailsView ] = React.useState<DetailsViewType>({\n view: 'loading',\n referrer: null\n });\n\n React.useEffect(() => {\n if (!props.glanceLoaded)\n return;\n\n setDetailsView({\n view: props.glanceTheme ? 'v@g' : 'details',\n referrer: null\n });\n }, [ props.glanceLoaded, props.glanceTheme ]);\n\n function onLaunchImmersiveReader(): void {\n shouldPlayOnExitImmersiveReader.current = !playerContext?.playerRef?.current?.isPaused();\n playerContext?.playerRef?.current?.pause();\n }\n\n function onExitImmersiveReader(): void {\n if (!shouldPlayOnExitImmersiveReader.current)\n return;\n\n playerContext?.playerRef?.current?.play();\n }\n\n function limitAccess(): boolean {\n if (!props.currentUser?.isAuthenticated)\n return true;\n\n if (!props.hasProduct(ProductId.Primary))\n return true;\n\n if (hasStudentExperience)\n return true;\n\n return false;\n }\n\n const canAccessOriginal = props.originalVideo && !limitAccess() && !!props.clip._canBeConsumed?.value;\n\n function getOriginalVideoAppLink(): Core.AppLink {\n if (!canAccessOriginal)\n return null;\n \n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ props.originalVideo.id, TextHelper.slugify(props.originalVideo.name) ]\n };\n }\n\n const showPlayerPlaceholder = playerContext.mode === 'picture-in-picture' || props.featureAccess.canViewPublicLayout;\n\n const resourcesWidget = getResources(props.clip, hasStudentExperience);\n\n const otherClips = props.originalVideo?.clips?.data?.filter(c => c.id.toString() !== props.clip.id.toString()) ?? [];\n\n return (\n <div className='px-4'>\n <RestrictionBanner\n restrictions={props.clip._restrictions}\n yearGroups={props.yearGroups}\n objectId={props.clip.id}\n objectTypeId={MasterType.Clip}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n {isArchived && (\n <ArchivedBanner\n typeId={props.clip.typeId}\n hasStudentExperience={hasStudentExperience}\n />\n )}\n\n <section className={`mb-2`}>\n {canConsume &&\n <GlobalPlayerConsumer\n key={props.clip.id}\n objectId={props.clip.id}\n objectTypeId={props.clip.typeId}\n shareId={props.shareId}\n context={props.queryParams?.context}\n contextId={props.queryParams?.contextId}\n moviesAndTv={props.queryParams?.mtv}\n playNext={props.queryParams?.playNext}\n startTime={props.queryParams?.t ?? props.queryParams?.startTime}\n mode='default'\n location='play-page'\n />\n }\n <div className={showPlayerPlaceholder ? '' : 'd-none'}>\n <PlayerPlaceholder\n video={props.clip}\n type='pip'\n />\n </div>\n </section>\n\n <PlayPageTitleAndActions\n media={props.clip}\n yearGroups={props.yearGroups}\n audiences={props.audiences}\n originalVideoAppLink={getOriginalVideoAppLink()}\n featureAccess={props.featureAccess}\n shareId={props.shareId}\n />\n\n {/* \n * Toggling between display 'block' and 'none' is *deliberate* done here to facilitate exposure of our content to bots for SEO.\n * The markup of all 3 components should be available in the DOM from the first render. If you're going to refactor,\n * please don't neglect this usecase - Mike\n */}\n <section className={`${detailsView.view === 'v@g' ? 'd-block' : 'd-none'}`}>\n <VideoAtAGlance\n theme={props.glanceTheme}\n video={props.clip}\n pointsOfInterest={props.pointsOfInterest}\n onClickShowDescription={() => setDetailsView({ view: 'details', referrer: 'v@g' })}\n setStartTime={(time: number) => playerContext.playerRef.current?.currentTime(time)}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n />\n </section>\n\n <section className={`${detailsView.view === 'details' ? 'd-block' : 'd-none'}`}>\n <VideoDetailsWithScrollbar\n video={props.clip}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n onClickClose={hasGlance && (() => setDetailsView({ view: 'v@g', referrer: 'details' }))}\n getTagAppLink={tag => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: { tagOrClassification: tag.name }\n })}\n hideTags={hasGlance}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n />\n </section>\n\n <section className={`${detailsView.view === 'loading' ? 'd-block' : 'd-none'}`}>\n <VideoDetailsPartial />\n </section>\n\n {!!resourcesWidget?.length && (\n <section className='pb-3' id={PlayPageAnchor.Resources} ref={resourcesRef}>\n <FixedWidget<ResourceWidgetItemProps>\n name={getPhrase('resources', { count: resourcesWidget.length })}\n contents={WidgetContents.PlayPageResources}\n collection={resourcesWidget}\n prefetched\n childComponent={ResourceWidgetItem}\n extraChildComponentProps={{\n imageCdnUrl: props.imageCdnUrl,\n imageErrorFallbackUrl: ImageUrls.Fallbacks.RESOURCE_THUMBNAIL,\n actionBehaviour: props.featureAccess.canViewResourceItems ? 'normal' : 'public',\n location: 'play-page',\n titlePosition: 'above',\n hideTypeBadge: true\n }}\n getChildAppLink={getResourceAppLink(\n props.clip?.id,\n props.shareId,\n props.featureAccess.canViewResourceItems\n )}\n analyticsOptions={(() => {\n if (props.featureAccess.canViewResourceItems)\n return {};\n\n return {\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n };\n })()}\n analyticsData={{ widgetId: 'resources' }}\n />\n </section>\n )}\n\n {!!(otherClips?.length && !limitAccess()) && (\n <div className='pb-3'>\n <FixedWidget<ClipWidgetItemProps>\n name={getPhrase('otherClips', { count: otherClips.length })}\n contents={WidgetContents.Clips}\n collection={otherClips}\n prefetched\n getChildAppLink={(clip: Clip) => {\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ clip.id, TextHelper.slugify(clip.name) ]\n };\n }}\n childComponent={ClipWidgetItem}\n extraChildComponentProps={{ video: props.originalVideo, imageCdnUrl: props.imageCdnUrl }}\n analyticsData={{ widgetId: 'clips' }}\n />\n </div>\n )}\n\n {!!(props.clip.interactives?.data?.length && !limitAccess()) && (\n <div className='pb-3' id={PlayPageAnchor.Interactives} ref={interactivesRef}>\n <FixedWidget<InteractiveWidgetItemProps>\n name={getPhrase('interactives', { count: props.clip.interactives.data.length })}\n contents={WidgetContents.Interactives}\n collection={props.clip.interactives.data}\n prefetched\n getChildAppLink={(interactive: Interactive) => {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ interactive.id, TextHelper.slugify(interactive.name) ]\n };\n }}\n childComponent={InteractiveWidgetItem}\n extraChildComponentProps={{\n video: props.clip,\n questionsAppLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.PREVIEW_QUESTIONS\n },\n imageCdnUrl: props.imageCdnUrl\n }}\n analyticsData={{ widgetId: 'interactives' }}\n />\n </div>\n )}\n\n {!!canAccessOriginal && (\n <section className='pb-2 pt-1'>\n <h2 className='h4 mb-0'><Text namespace={namespace} phrase='clippedFrom' /></h2>\n <VideoActionsContext.Provider value={videoActions}>\n <VideoList\n videos={[props.originalVideo]}\n yearGroups={props.yearGroups}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv\n })}\n hasPermissions={hasPermissions}\n presentationAudiences={props.audiences}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n />\n </VideoActionsContext.Provider>\n </section>\n )}\n\n <section>\n <RelatedVideos\n currentVideo={props.clip}\n yearGroups={props.yearGroups}\n relatedVideos={props.relatedVideos}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n currentUser={props.currentUser}\n audiences={props.audiences}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv\n })}\n moviesAndTv={props.queryParams.mtv}\n />\n </section>\n </div>\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 * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\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 { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\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 { ThemeRequests } from 'libs/shared/flight-requests/ThemeRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, Config, CurrentUser, Theme, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { PlayClip } from 'shared/components/play-clip/PlayClip';\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 { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nconst namespace = 'shared.playClip';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst clipErrors = {\n notFound: NotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\ninterface PlayClipViewProps {\n id: string;\n queryParams: PlayViewQueryParams;\n}\n\nPlayClipView.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayClipView(props: PlayClipViewProps): JSX.Element {\n const { context, contextId, mtv } = props.queryParams;\n\n const { hasProduct } = useProducts();\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.PlayClip);\n const { hasPermissions } = usePermissions();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.clip(props.id));\n const video = Flight.useBasicFetch<Video>(!!clip.data?._parentVideo &&\n VideoRequests.video(clip.data._parentVideo.id));\n const strippedClip = Flight.useBasicFetch<Clip>(clip.statusCode === HttpStatus.Forbidden &&\n ClipRequests.clip(props.id, PermissionFilterOption.StripMetadata));\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const audiences = usePresentationAudiences();\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const shouldFetchTheme = hasPermissions(PermissionName.ViewVideoGlance) &&\n clip.data?.glance?.theme;\n \n const glanceTheme = Flight.useBasicFetch<Theme>(\n shouldFetchTheme &&\n ThemeRequests.themeImages(clip.data.glance.theme, clip.data.glance.type)\n );\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n \n const featureAccess = useVideoFeatureAccess();\n\n useSetPageMetadata(PageMetadataHelper.getClipMetadata({\n content: clip.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n }\n }));\n\n useHandleObjectError(clip, clipErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useCannotConsumeError(strippedClip);\n useDeepLinks({ id: props.id, app: 'clips' });\n\n const hasLoaded = (\n clip.data &&\n currentUser.hasCompleted &&\n config.hasCompleted &&\n pointsOfInterest.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <PlayClip\n clip={clip.data}\n originalVideo={video.data}\n currentUser={currentUser.data}\n yearGroups={yearGroups.data}\n // we only show up next videos for clips in a playlist\n relatedVideos={context === 'playlist' ? relatedVideos : { ...relatedVideos, videos: []}}\n canFavourite={canFavourite}\n setFavourite={setFavourite}\n hasProduct={hasProduct}\n queryParams={props.queryParams}\n audiences={audiences.data}\n imageCdnUrl={config.data.imageCdnUrl}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n pointsOfInterest={pointsOfInterest.items}\n glanceTheme={glanceTheme.data}\n glanceLoaded={!shouldFetchTheme || glanceTheme.hasCompleted}\n featureAccess={featureAccess}\n tableOfContentsId={props.queryParams?.scrollTo}\n />\n );\n}"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getResourceAppLink","videoId","shareId","canViewResource","resource","application","action","args","id","params","namespace","getPhrase","PlayClip","props","playerContext","hasPermissions","canConsume","clip","videoActions","location","resourcesRef","interactivesRef","current","tableOfContentsId","isArchived","hasStudentExperience","shouldPlayOnExitImmersiveReader","hasGlance","glanceTheme","featureAccess","canViewGlance","view","referrer","detailsView","setDetailsView","limitAccess","currentUser","isAuthenticated","hasProduct","glanceLoaded","canAccessOriginal","originalVideo","_canBeConsumed","value","showPlayerPlaceholder","mode","canViewPublicLayout","resourcesWidget","otherClips","clips","data","filter","c","toString","className","restrictions","_restrictions","yearGroups","objectId","objectTypeId","canManageVideoAccess","typeId","key","context","queryParams","contextId","moviesAndTv","mtv","playNext","startTime","t","video","type","media","audiences","originalVideoAppLink","name","theme","pointsOfInterest","onClickShowDescription","setStartTime","time","playerRef","currentTime","getTagAppLink","tag","tagOrClassification","suppressInteractivity","onLaunchImmersiveReader","isPaused","pause","onExitImmersiveReader","play","onClickClose","hideTags","length","ref","count","contents","collection","prefetched","childComponent","R","extraChildComponentProps","imageCdnUrl","imageErrorFallbackUrl","actionBehaviour","canViewResourceItems","titlePosition","hideTypeBadge","getChildAppLink","analyticsOptions","workflowPhase","descriptor","SignUp","analyticsData","widgetId","C","interactives","interactive","questionsAppLink","phrase","videos","setFavourite","canFavourite","getVideoAppLink","v","opts","presentationAudiences","getPreviewQuestionsAppLink","currentVideo","relatedVideos","usePresentationAudiences","redirectOnError","activePresentation","getFallbackPresentation","presentation","clipErrors","PlayClipView","u","config","_parentVideo","strippedClip","customerId","shouldFetchTheme","glance","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","app","hasCompleted","items","scrollTo","defaultProps"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9557],{83818:(e,t,n)=>{n.d(t,{J:()=>W});var r=n(32735),a=n(75896),i=n(1048),o=n(77123),l=n(11607),c=n(83345),s="search.filterActions";function u(e){return r.createElement("div",{className:"d-flex justify-content-between ".concat(e.className)},e.active?r.createElement(l.L,{className:"text-secondary hover-text-underline cursor-pointer",onClick:e.onClickReset},r.createElement(c.x,{namespace:s,phrase:"reset"})):r.createElement("div",{className:"invisible"}),r.createElement(l.L,{className:"info-link",onClick:e.onClickApply},r.createElement(c.x,{namespace:s,phrase:"apply"})))}u.defaultProps={active:!1,className:""};var f=n(96675),d=n(97514),m=n(83914);const p={hideCaret:"KDq7l",filterMenu:"E9o_Q",twoColumnsWidth:"C70vU",nestedCheckboxesWidth:"kUHcg",switchWidth:"bi1FH",moreFiltersWidth:"rbr22",svgContainer:"UwDMA"};function y(e){return y="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},y(e)}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 r,a,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=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return g(e,t);var n=Object.prototype.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)?g(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 g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function b(e){var t=r.useContext(f.f).state,n=t[e.filter.id],a="dropdown"===e.filter.type,i=v(r.useState(e.filter.name),2),l=i[0],c=i[1],s=v(r.useState(!1),2),g=s[0],b=s[1],h=v(r.useState(n),2),E=h[0],w=h[1];function S(e){w(e),a&&C(e)}function C(){var r,a,i,o,l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:E;d.qr.applyFilter([e.filter],n,(r={},a=e.filter.id,i=l,o=function(e,t){if("object"!=y(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=y(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(a),(a="symbol"==y(o)?o:o+"")in r?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i,r),t.appLink)}r.useEffect((function(){c(d.qr.getLabel(e.filter,n)),w(n)}),[e.filter,null==n?void 0:n.selection]);var k,A=r.useMemo((function(){return e.filter.customComponent?e.filter.customComponent:d.qr.mapTypeToComponent(e.filter.type)}),[e.filter.type]),x=e.hideCaret&&!a?p.hideCaret:"",j=(k=e.filter,d.qr.displayTwoColumns(k)?p.twoColumnsWidth:"classification"===k.id?p.classificationWidth:d.qr.displayTwoLayers(k)?p.nestedCheckboxesWidth:"switch"===k.type?p.switchWidth:"");return"button"===e.filter.type?r.createElement(A,{filter:e.filter,draftState:E,setDraftState:S}):r.createElement(o.Z,{onToggle:function(e){b(e),e||a||C()},show:g},r.createElement(o.Z.Toggle,{id:"filterButton-".concat(e.filter.id),className:"".concat("fw-semibold mx-1 btn d-flex align-items-center"," ").concat(x),variant:n.active&&!a?"dark":"outline-dark",disabled:e.filter.disabled},!!e.filter.icon&&r.createElement("div",{className:p.svgContainer},r.createElement(m.x,{svgName:e.filter.icon})),e.filter.labelPrefix," ",l),r.createElement(o.Z.Menu,null,r.createElement("div",{className:"mx-1 ".concat(p.filterMenu," ").concat(j," ").concat(a?"":"px-2 py-1")},r.createElement(A,{filter:e.filter,draftState:E,setDraftState:S}),!a&&!e.filter.disabled&&r.createElement(u,{active:E.active,onClickReset:function(){var t,n=null===(t=e.filter.options)||void 0===t?void 0:t.find((function(e){return e.default}));w({active:!1,selection:n?[n]:[]})},onClickApply:function(){C(),b(!1)}}))))}b.defaultProps={hideCaret:!0};var h=n(91967);function E(e){return E="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},E(e)}var w={getSetStateByKey:function(e,t,n){return function(r){return e((function(e){var a=h.q.isFunction(n)?n:h.q.useIdentity();return Object.assign(Object.assign({},e),function(e,t,n){var r;return r=function(e,t){if("object"!=E(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=E(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t),(t="symbol"==E(r)?r:r+"")in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},t,a(r,e)))}))}}};function S(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,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=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return C(e,t);var n=Object.prototype.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=new Array(t);n<t;n++)r[n]=e[n];return r}function k(e){return Object.keys(e).reduce((function(t,n){return e[n].active?t+1:t}),0)}function A(e){var t=r.useContext(f.f).state,n=t.moreFilters,a=S(r.useState(e.filter.name),2),i=a[0],l=a[1],c=S(r.useState(!1),2),s=c[0],m=c[1],y=S(r.useState(n),2),v=y[0],g=y[1],b=S(r.useState(k(n)),2),h=b[0],E=b[1],C=Object.keys(n).map((function(e){return"".concat(e,":").concat(n[e].active)})).join("-");function A(){d.qr.applyFilter(e.filter.filters,n,v,t.appLink)}r.useEffect((function(){g(n),E(k(n))}),[e.filter,C]),r.useEffect((function(){l(h?"".concat(e.filter.name," - ").concat(h):e.filter.name)}),[h]);var x="fw-semibold ".concat(p.hideCaret," mx-1 btn");return r.createElement(o.Z,{onToggle:function(e){m(e),e||A()},show:s},r.createElement(o.Z.Toggle,{id:e.filter.id,className:x,variant:h?"dark":"outline-dark"},i),r.createElement(o.Z.Menu,{onClick:function(e){return e.stopPropagation()}},r.createElement("div",{className:"mx-1 ".concat(p.moreFiltersWidth," ").concat("dropdown"!==e.filter.type?"px-2 py-1":"")},e.filter.filters.map((function(e){var t=e.customComponent?e.customComponent:d.qr.mapTypeToComponent(e.type);return r.createElement("div",{key:e.id,className:"mb-2"},r.createElement(t,{filter:e,draftState:v[e.id],setDraftState:w.getSetStateByKey(g,e.id),isOnMoreFilters:!0}))})),r.createElement(u,{active:!!Object.keys(v).find((function(e){return v[e].active})),onClickReset:function(){var t=Object.keys(n).reduce((function(t,n){var r,a=null===(r=e.filter.filters.find((function(e){return e.id===n})).options)||void 0===r?void 0:r.find((function(e){return e.default}));return t[n]={active:!1,selection:a?[a]:[]},t}),{});g(t)},onClickApply:function(){A(),m(!1)}}))))}var x=n(91807),j=r.memo((function(e){var t=e.tagClass,n="partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ".concat(void 0===t?"":t," ").concat(x.Z.partialTag);return r.createElement("div",{className:"mt-1"},r.createElement("span",{className:n}," "))})),F=n(16450),N=n(16035);const O={tagItem:"EcurS",selected:"FypfE"};function I(e){var t=e.selectedItems.find((function(t){return t.id===e.data.id}))?"".concat(O.selected," text-info"):"bg-light";return r.createElement(N.z,{tag:e.data,appLink:e.appLink,tagClass:"no-decoration ".concat(t," ").concat(O.tagItem),onClick:function(){return e.onClick(e.data)}})}const T={tagItem:"j84HW"};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 L(e){return function(e){if(Array.isArray(e))return P(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 P(e,t);var n=Object.prototype.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)?P(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 P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function D(e){var t,n,a,i,o=r.useContext(f.f).state;if(!(null===(t=e.filter)||void 0===t?void 0:t.id))return r.createElement(r.Fragment,null);var l=o[e.filter.id],c=l.selection,s=null!==(i=null===(a=null===(n=e.filter)||void 0===n?void 0:n.options)||void 0===a?void 0:a.filter((function(e){return!(null==c?void 0:c.find((function(t){return t.id===e.id})))})))&&void 0!==i?i:[];function u(t){var n,r,a,i,s=null,u=-1;if(c.find((function(e,n){u>-1||e.id.toString()===t.id.toString()&&(u=n)})),u>=0){var f=[].concat(L(c.slice(0,u)),L(c.slice(u+1)));s={active:!!f.length,selection:f}}else s={active:!0,selection:c.concat(t)};d.qr.applyFilter([e.filter],l,(n={},r=e.filter.id,a=s,i=function(e,t){if("object"!=q(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=q(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r),(r="symbol"==q(i)?i:i+"")in n?Object.defineProperty(n,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[r]=a,n),o.appLink)}var m,p=[].concat(L(c),L(e.isFetching?[]:s));return r.createElement("div",{className:e.isFetching||p.length?"py-2":""},r.createElement("div",{className:(m="mb-3",p.length&&e.isFetching?m+=" mt-n1":p.length||e.isFetching||(m+=" d-none"),m)},(!!p.length||e.isFetching)&&r.createElement(F.e,{collection:p,childComponent:function(e){return r.createElement(I,Object.assign({},e,{selectedItems:c,onClick:u}))},staticChildren:e.isFetching?new Array(3).fill({component:function(){return r.createElement(j,{tagClass:T.tagItem})},position:"end"}):[],partialLoadingComponent:function(){return r.createElement("div",{className:"me-2"},r.createElement(j,{tagClass:"".concat(T.tagItem)}))}})))}var M=n(81886);function Q(e){var t=r.useContext(f.f).state;return r.createElement(l.L,{onClick:function(){M.Q.C$.trigger(Object.assign(Object.assign({},t.appLink),{params:e.currentQueryParam?{query:e.currentQueryParam}:null}))},className:"hover-text-underline cursor-pointer d-flex align-items-center ms-2"},r.createElement(c.x,{namespace:"search.resetButton",phrase:"reset"}))}var R=n(95245);function Z(e){return function(e){if(Array.isArray(e))return H(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||B(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 B(e,t){if(e){if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?H(e,t):void 0}}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function W(e){var t,n,o=e.queryParams,l=e.appLink,s=e.hideHeading,u=e.isFetchingOptions,m=e.constantIndices,p=void 0===m?[]:m,y=r.useMemo((function(){return d.qr.deriveInitialStateFromQuery(o,e.mainFilters,e.moreFilters,l)}),[o,u]),v=(t=r.useReducer(f.O,y),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,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=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(t,n)||B(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=v[0],h=v[1];r.useEffect((function(){i.t.isEqual(y,g)||(h({type:"update",payload:y}),e.analyticsOptions&&d.qr.logFilterEvent(e.mainFilters,e.moreFilters,y,o.query,e.analyticsOptions))}),[y]);var E=a.m.uniq([].concat(Z(d.qr.getAppliedIndices(o)),Z(p))),w=d.qr.mixinDisabledFields(g,E,e.mainFilters,e.moreFilters),S=w.mainFilters,C=w.moreFilters,k=S.filter((function(e){return"tag"!==e.type})),x=S.find((function(e){return"tag"===e.type}));return r.createElement(f.f.Provider,{value:{state:g,dispatch:h}},r.createElement(c.D.Provider,{value:"search.searchFilters"},r.createElement("section",null,r.createElement("div",{className:"d-flex ".concat(e.hideDivider?"":"border-bottom pb-3 mb-3")},!s&&r.createElement("h2",{className:"h5 mb-0 d-inline-block pe-2 border-end d-flex align-items-center"},r.createElement(c.x,{phrase:"heading"})),r.createElement("div",{className:"d-flex flex-wrap ".concat(R.Z.filtersContainer," ").concat(s?"":"ms-2")},k.map((function(t){return r.createElement(b,{key:t.id,filter:t,hideCaret:e.hideCaret})})),C&&r.createElement(A,{filter:C}),d.qr.hasActiveFilters(o)&&!e.hideResetButton&&r.createElement(Q,{mainFilters:e.mainFilters,moreFilters:e.moreFilters,currentQueryParam:o.query,analyticsOptions:e.analyticsOptions}))),r.createElement(D,{filter:x,queryParams:o,isFetching:e.isFetchingOptions}))))}},16035:(e,t,n)=>{n.d(t,{z:()=>l});var r=n(32735),a=n(36848),i=n(44829),o=n(91807);function l(e){var t,n,l=e.tag,c=e.appLink,s=e.onClick,u=e.disabled,f=e.tagClass,d=void 0===f?"tag":f,m=l.name.toLowerCase(),p=null===(t=l.tagType)||void 0===t?void 0:t.toLowerCase(),y="rounded-pill py-1 px-2 my-1 me-1 ".concat(d," ").concat(function(e){switch(e){case i.Q.Pedagogy:case i.Q.Skill:return"pedagogy-tag text-white";case i.Q.Hidden:return"hidden-tag";case i.Q.Normal:default:return""}}(p)),v=p===i.Q.Normal&&!!(null===(n=e.themeColours)||void 0===n?void 0:n.secondary);v&&(y+=" text-white"),!c&&!s||u||(y+=" cursor-pointer"),u&&(y+=" "+o.Z.disabled),e.onRemove&&(y+=" "+o.Z.badge),c||(y+=" d-inline-block");var g=v?{backgroundColor:e.themeColours.secondary}:{};return c?r.createElement(a.F,{onClick:s,appLink:c,className:y,title:m,style:g},r.createElement("span",{className:"text-truncate text-nowrap"},m)):r.createElement("span",{onClick:s,className:y,title:m,style:g},r.createElement("span",{className:"text-truncate text-nowrap"},m,e.onRemove&&r.createElement("button",{onClick:e.onRemove,className:"".concat(o.Z.close," btn-close font-size-normal"),role:"button","aria-label":"Close"})))}},88513:(e,t,n)=>{n.d(t,{B:()=>u});var r=n(32735),a=n(23481),i=n(65858),o=n(36848);const l={seeMore:"yv0FS"};var c=a.T.encloseNamespace("shared.widgetHeader");function s(e){return r.createElement("div",{className:"ms-3 ".concat(l.seeMore)},r.createElement(o.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:Object.assign(Object.assign({},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"},c("seeMore"))))}function u(e){var t=!!e.description;return e.name||e.description?r.createElement("div",{className:"curated-widget-header"},r.createElement("div",{className:"d-flex justify-content-between"},!!e.name&&r.createElement("div",{className:l.title},r.createElement(o.F,{appLink:e.appLink,analyticsOptions:e.analyticsOptions,analyticsData:e.analyticsData,className:"text-decoration-none ".concat(e.appLink?"curated-widget-link":"")},r.createElement("h2",{className:"h4 curated-widget-heading"},e.name))),!!e.appLink&&!t&&!!e.showSeeMoreLink&&r.createElement(s,Object.assign({},e))),t&&r.createElement("div",{className:"d-flex justify-content-between align-items-end"},r.createElement("p",{className:"description curated-widget-description ".concat(l.description)},r.createElement("span",{className:"clamp-2"},e.description)),!!e.appLink&&!!e.showSeeMoreLink&&r.createElement(s,Object.assign({},e)))):r.createElement(r.Fragment,null)}},43872:(e,t,n)=>{n.d(t,{V:()=>u});var r=n(32735),a=n(82182),i=n(31069),o=n(91967),l=new Image;l.src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=";var c=function(e){e.dataTransfer.setDragImage&&o.q.isFunction(e.dataTransfer.setDragImage)&&e.dataTransfer.setDragImage(l,0,0)},s=a.V.isTouchScreen(),u=r.forwardRef((function(e,t){var n,a,o,l,u=e.children,f=e.positionType,d=e.onDrag,m=e.onDragEnd,p=e.onTouchMove,y=e.onTouchEnd,v=e.percentageDragged,g=e.position,b=void 0===g?0:g;return r.createElement("div",Object.assign({className:"d-flex flex-nowrap position-relative w-100",style:(a=b,o=f,l=v,o===i.C.Percentage&&l&&(a-=l),{transform:"translate3d(".concat(a).concat(o,", 0px, 0px)"),transition:"transform .4s ease-in-out"}),ref:t},(n={},d&&m&&(n.draggable=!0,n.onDragEnd=m,n.onDragStart=c,n.onDragOver=d),p&&y&&s&&(n.onTouchMoveCapture=p,n.onTouchEndCapture=y),n)),u)}))},31069:(e,t,n)=>{var r;n.d(t,{C:()=>r}),function(e){e.Percentage="%",e.Pixels="px"}(r||(r={}))},44829:(e,t,n)=>{var r,a;n.d(t,{Q:()=>r}),function(e){e.Normal="normal",e.Pedagogy="pedagogy",e.Hidden="hidden",e.Skill="skill",e.Curation="curation"}(r||(r={})),function(e){e[e.Normal=0]="Normal",e[e.Pedagogy=1]="Pedagogy",e[e.Hidden=2]="Hidden",e[e.Skill=3]="Skill",e[e.Curation=4]="Curation"}(a||(a={}))},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={}))},94644:(e,t,n)=>{n.d(t,{r:()=>u});var r=n(50242),a=n(81886),i=n(67058),o=n(14553),l=n(49267),c=n(49075),s={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:l.a,privacy:o.q},badRequest:c._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=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({},s),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new o.badRequest):n.forbidden||a.Q.Ry.throw(new o.forbidden.privacy):n.notFound||a.Q.Ry.throw(new o.notFound))}}},95245:(e,t,n)=>{n.d(t,{Z:()=>r});const r={partialFilterHeading:"O8f8H",partialButton:"ThKam",filtersContainer:"JIp3h"}},91807:(e,t,n)=>{n.d(t,{Z:()=>r});const r={tagList:"Zw6d9",disabled:"jlL1c",partialTag:"too_N",badge:"OjtN8",close:"X9joI"}}}]);
|
|
2
|
-
//# sourceMappingURL=9557-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9557],{83818:(e,t,n)=>{n.d(t,{J:()=>W});var r=n(32735),a=n(75896),i=n(1048),o=n(34509),l=n(11607),c=n(83345),s="search.filterActions";function u(e){return r.createElement("div",{className:"d-flex justify-content-between ".concat(e.className)},e.active?r.createElement(l.L,{className:"text-secondary hover-text-underline cursor-pointer",onClick:e.onClickReset},r.createElement(c.x,{namespace:s,phrase:"reset"})):r.createElement("div",{className:"invisible"}),r.createElement(l.L,{className:"info-link",onClick:e.onClickApply},r.createElement(c.x,{namespace:s,phrase:"apply"})))}u.defaultProps={active:!1,className:""};var f=n(96675),d=n(97514),m=n(83914);const p={hideCaret:"KDq7l",filterMenu:"E9o_Q",twoColumnsWidth:"C70vU",nestedCheckboxesWidth:"kUHcg",switchWidth:"bi1FH",moreFiltersWidth:"rbr22",svgContainer:"UwDMA"};function y(e){return y="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},y(e)}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 r,a,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=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return g(e,t);var n=Object.prototype.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)?g(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 g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function b(e){var t=r.useContext(f.f).state,n=t[e.filter.id],a="dropdown"===e.filter.type,i=v(r.useState(e.filter.name),2),l=i[0],c=i[1],s=v(r.useState(!1),2),g=s[0],b=s[1],h=v(r.useState(n),2),E=h[0],w=h[1];function S(e){w(e),a&&C(e)}function C(){var r,a,i,o,l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:E;d.qr.applyFilter([e.filter],n,(r={},a=e.filter.id,i=l,o=function(e,t){if("object"!=y(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=y(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(a),(a="symbol"==y(o)?o:o+"")in r?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i,r),t.appLink)}r.useEffect((function(){c(d.qr.getLabel(e.filter,n)),w(n)}),[e.filter,null==n?void 0:n.selection]);var k,A=r.useMemo((function(){return e.filter.customComponent?e.filter.customComponent:d.qr.mapTypeToComponent(e.filter.type)}),[e.filter.type]),x=e.hideCaret&&!a?p.hideCaret:"",j=(k=e.filter,d.qr.displayTwoColumns(k)?p.twoColumnsWidth:"classification"===k.id?p.classificationWidth:d.qr.displayTwoLayers(k)?p.nestedCheckboxesWidth:"switch"===k.type?p.switchWidth:"");return"button"===e.filter.type?r.createElement(A,{filter:e.filter,draftState:E,setDraftState:S}):r.createElement(o.Z,{onToggle:function(e){b(e),e||a||C()},show:g},r.createElement(o.Z.Toggle,{id:"filterButton-".concat(e.filter.id),className:"".concat("fw-semibold mx-1 btn d-flex align-items-center"," ").concat(x),variant:n.active&&!a?"dark":"outline-dark",disabled:e.filter.disabled},!!e.filter.icon&&r.createElement("div",{className:p.svgContainer},r.createElement(m.x,{svgName:e.filter.icon})),e.filter.labelPrefix," ",l),r.createElement(o.Z.Menu,null,r.createElement("div",{className:"mx-1 ".concat(p.filterMenu," ").concat(j," ").concat(a?"":"px-2 py-1")},r.createElement(A,{filter:e.filter,draftState:E,setDraftState:S}),!a&&!e.filter.disabled&&r.createElement(u,{active:E.active,onClickReset:function(){var t,n=null===(t=e.filter.options)||void 0===t?void 0:t.find((function(e){return e.default}));w({active:!1,selection:n?[n]:[]})},onClickApply:function(){C(),b(!1)}}))))}b.defaultProps={hideCaret:!0};var h=n(91967);function E(e){return E="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},E(e)}var w={getSetStateByKey:function(e,t,n){return function(r){return e((function(e){var a=h.q.isFunction(n)?n:h.q.useIdentity();return Object.assign(Object.assign({},e),function(e,t,n){var r;return r=function(e,t){if("object"!=E(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=E(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(t),(t="symbol"==E(r)?r:r+"")in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},t,a(r,e)))}))}}};function S(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,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=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return C(e,t);var n=Object.prototype.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=new Array(t);n<t;n++)r[n]=e[n];return r}function k(e){return Object.keys(e).reduce((function(t,n){return e[n].active?t+1:t}),0)}function A(e){var t=r.useContext(f.f).state,n=t.moreFilters,a=S(r.useState(e.filter.name),2),i=a[0],l=a[1],c=S(r.useState(!1),2),s=c[0],m=c[1],y=S(r.useState(n),2),v=y[0],g=y[1],b=S(r.useState(k(n)),2),h=b[0],E=b[1],C=Object.keys(n).map((function(e){return"".concat(e,":").concat(n[e].active)})).join("-");function A(){d.qr.applyFilter(e.filter.filters,n,v,t.appLink)}r.useEffect((function(){g(n),E(k(n))}),[e.filter,C]),r.useEffect((function(){l(h?"".concat(e.filter.name," - ").concat(h):e.filter.name)}),[h]);var x="fw-semibold ".concat(p.hideCaret," mx-1 btn");return r.createElement(o.Z,{onToggle:function(e){m(e),e||A()},show:s},r.createElement(o.Z.Toggle,{id:e.filter.id,className:x,variant:h?"dark":"outline-dark"},i),r.createElement(o.Z.Menu,{onClick:function(e){return e.stopPropagation()}},r.createElement("div",{className:"mx-1 ".concat(p.moreFiltersWidth," ").concat("dropdown"!==e.filter.type?"px-2 py-1":"")},e.filter.filters.map((function(e){var t=e.customComponent?e.customComponent:d.qr.mapTypeToComponent(e.type);return r.createElement("div",{key:e.id,className:"mb-2"},r.createElement(t,{filter:e,draftState:v[e.id],setDraftState:w.getSetStateByKey(g,e.id),isOnMoreFilters:!0}))})),r.createElement(u,{active:!!Object.keys(v).find((function(e){return v[e].active})),onClickReset:function(){var t=Object.keys(n).reduce((function(t,n){var r,a=null===(r=e.filter.filters.find((function(e){return e.id===n})).options)||void 0===r?void 0:r.find((function(e){return e.default}));return t[n]={active:!1,selection:a?[a]:[]},t}),{});g(t)},onClickApply:function(){A(),m(!1)}}))))}var x=n(91807),j=r.memo((function(e){var t=e.tagClass,n="partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ".concat(void 0===t?"":t," ").concat(x.Z.partialTag);return r.createElement("div",{className:"mt-1"},r.createElement("span",{className:n}," "))})),F=n(16450),N=n(16035);const O={tagItem:"EcurS",selected:"FypfE"};function I(e){var t=e.selectedItems.find((function(t){return t.id===e.data.id}))?"".concat(O.selected," text-info"):"bg-light";return r.createElement(N.z,{tag:e.data,appLink:e.appLink,tagClass:"no-decoration ".concat(t," ").concat(O.tagItem),onClick:function(){return e.onClick(e.data)}})}const T={tagItem:"j84HW"};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 L(e){return function(e){if(Array.isArray(e))return P(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 P(e,t);var n=Object.prototype.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)?P(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 P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function D(e){var t,n,a,i,o=r.useContext(f.f).state;if(!(null===(t=e.filter)||void 0===t?void 0:t.id))return r.createElement(r.Fragment,null);var l=o[e.filter.id],c=l.selection,s=null!==(i=null===(a=null===(n=e.filter)||void 0===n?void 0:n.options)||void 0===a?void 0:a.filter((function(e){return!(null==c?void 0:c.find((function(t){return t.id===e.id})))})))&&void 0!==i?i:[];function u(t){var n,r,a,i,s=null,u=-1;if(c.find((function(e,n){u>-1||e.id.toString()===t.id.toString()&&(u=n)})),u>=0){var f=[].concat(L(c.slice(0,u)),L(c.slice(u+1)));s={active:!!f.length,selection:f}}else s={active:!0,selection:c.concat(t)};d.qr.applyFilter([e.filter],l,(n={},r=e.filter.id,a=s,i=function(e,t){if("object"!=q(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=q(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r),(r="symbol"==q(i)?i:i+"")in n?Object.defineProperty(n,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[r]=a,n),o.appLink)}var m,p=[].concat(L(c),L(e.isFetching?[]:s));return r.createElement("div",{className:e.isFetching||p.length?"py-2":""},r.createElement("div",{className:(m="mb-3",p.length&&e.isFetching?m+=" mt-n1":p.length||e.isFetching||(m+=" d-none"),m)},(!!p.length||e.isFetching)&&r.createElement(F.e,{collection:p,childComponent:function(e){return r.createElement(I,Object.assign({},e,{selectedItems:c,onClick:u}))},staticChildren:e.isFetching?new Array(3).fill({component:function(){return r.createElement(j,{tagClass:T.tagItem})},position:"end"}):[],partialLoadingComponent:function(){return r.createElement("div",{className:"me-2"},r.createElement(j,{tagClass:"".concat(T.tagItem)}))}})))}var M=n(81886);function Q(e){var t=r.useContext(f.f).state;return r.createElement(l.L,{onClick:function(){M.Q.C$.trigger(Object.assign(Object.assign({},t.appLink),{params:e.currentQueryParam?{query:e.currentQueryParam}:null}))},className:"hover-text-underline cursor-pointer d-flex align-items-center ms-2"},r.createElement(c.x,{namespace:"search.resetButton",phrase:"reset"}))}var R=n(95245);function Z(e){return function(e){if(Array.isArray(e))return H(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||B(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 B(e,t){if(e){if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?H(e,t):void 0}}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function W(e){var t,n,o=e.queryParams,l=e.appLink,s=e.hideHeading,u=e.isFetchingOptions,m=e.constantIndices,p=void 0===m?[]:m,y=r.useMemo((function(){return d.qr.deriveInitialStateFromQuery(o,e.mainFilters,e.moreFilters,l)}),[o,u]),v=(t=r.useReducer(f.O,y),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,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=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(t,n)||B(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=v[0],h=v[1];r.useEffect((function(){i.t.isEqual(y,g)||(h({type:"update",payload:y}),e.analyticsOptions&&d.qr.logFilterEvent(e.mainFilters,e.moreFilters,y,o.query,e.analyticsOptions))}),[y]);var E=a.m.uniq([].concat(Z(d.qr.getAppliedIndices(o)),Z(p))),w=d.qr.mixinDisabledFields(g,E,e.mainFilters,e.moreFilters),S=w.mainFilters,C=w.moreFilters,k=S.filter((function(e){return"tag"!==e.type})),x=S.find((function(e){return"tag"===e.type}));return r.createElement(f.f.Provider,{value:{state:g,dispatch:h}},r.createElement(c.D.Provider,{value:"search.searchFilters"},r.createElement("section",null,r.createElement("div",{className:"d-flex ".concat(e.hideDivider?"":"border-bottom pb-3 mb-3")},!s&&r.createElement("h2",{className:"h5 mb-0 d-inline-block pe-2 border-end d-flex align-items-center"},r.createElement(c.x,{phrase:"heading"})),r.createElement("div",{className:"d-flex flex-wrap ".concat(R.Z.filtersContainer," ").concat(s?"":"ms-2")},k.map((function(t){return r.createElement(b,{key:t.id,filter:t,hideCaret:e.hideCaret})})),C&&r.createElement(A,{filter:C}),d.qr.hasActiveFilters(o)&&!e.hideResetButton&&r.createElement(Q,{mainFilters:e.mainFilters,moreFilters:e.moreFilters,currentQueryParam:o.query,analyticsOptions:e.analyticsOptions}))),r.createElement(D,{filter:x,queryParams:o,isFetching:e.isFetchingOptions}))))}},16035:(e,t,n)=>{n.d(t,{z:()=>l});var r=n(32735),a=n(36848),i=n(44829),o=n(91807);function l(e){var t,n,l=e.tag,c=e.appLink,s=e.onClick,u=e.disabled,f=e.tagClass,d=void 0===f?"tag":f,m=l.name.toLowerCase(),p=null===(t=l.tagType)||void 0===t?void 0:t.toLowerCase(),y="rounded-pill py-1 px-2 my-1 me-1 ".concat(d," ").concat(function(e){switch(e){case i.Q.Pedagogy:case i.Q.Skill:return"pedagogy-tag text-white";case i.Q.Hidden:return"hidden-tag";case i.Q.Normal:default:return""}}(p)),v=p===i.Q.Normal&&!!(null===(n=e.themeColours)||void 0===n?void 0:n.secondary);v&&(y+=" text-white"),!c&&!s||u||(y+=" cursor-pointer"),u&&(y+=" "+o.Z.disabled),e.onRemove&&(y+=" "+o.Z.badge),c||(y+=" d-inline-block");var g=v?{backgroundColor:e.themeColours.secondary}:{};return c?r.createElement(a.F,{onClick:s,appLink:c,className:y,title:m,style:g},r.createElement("span",{className:"text-truncate text-nowrap"},m)):r.createElement("span",{onClick:s,className:y,title:m,style:g},r.createElement("span",{className:"text-truncate text-nowrap"},m,e.onRemove&&r.createElement("button",{onClick:e.onRemove,className:"".concat(o.Z.close," btn-close font-size-normal"),role:"button","aria-label":"Close"})))}},88513:(e,t,n)=>{n.d(t,{B:()=>u});var r=n(32735),a=n(23481),i=n(65858),o=n(36848);const l={seeMore:"yv0FS"};var c=a.T.encloseNamespace("shared.widgetHeader");function s(e){return r.createElement("div",{className:"ms-3 ".concat(l.seeMore)},r.createElement(o.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:Object.assign(Object.assign({},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"},c("seeMore"))))}function u(e){var t=!!e.description;return e.name||e.description?r.createElement("div",{className:"curated-widget-header"},r.createElement("div",{className:"d-flex justify-content-between"},!!e.name&&r.createElement("div",{className:l.title},r.createElement(o.F,{appLink:e.appLink,analyticsOptions:e.analyticsOptions,analyticsData:e.analyticsData,className:"text-decoration-none ".concat(e.appLink?"curated-widget-link":"")},r.createElement("h2",{className:"h4 curated-widget-heading"},e.name))),!!e.appLink&&!t&&!!e.showSeeMoreLink&&r.createElement(s,Object.assign({},e))),t&&r.createElement("div",{className:"d-flex justify-content-between align-items-end"},r.createElement("p",{className:"description curated-widget-description ".concat(l.description)},r.createElement("span",{className:"clamp-2"},e.description)),!!e.appLink&&!!e.showSeeMoreLink&&r.createElement(s,Object.assign({},e)))):r.createElement(r.Fragment,null)}},43872:(e,t,n)=>{n.d(t,{V:()=>u});var r=n(32735),a=n(82182),i=n(31069),o=n(91967),l=new Image;l.src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=";var c=function(e){e.dataTransfer.setDragImage&&o.q.isFunction(e.dataTransfer.setDragImage)&&e.dataTransfer.setDragImage(l,0,0)},s=a.V.isTouchScreen(),u=r.forwardRef((function(e,t){var n,a,o,l,u=e.children,f=e.positionType,d=e.onDrag,m=e.onDragEnd,p=e.onTouchMove,y=e.onTouchEnd,v=e.percentageDragged,g=e.position,b=void 0===g?0:g;return r.createElement("div",Object.assign({className:"d-flex flex-nowrap position-relative w-100",style:(a=b,o=f,l=v,o===i.C.Percentage&&l&&(a-=l),{transform:"translate3d(".concat(a).concat(o,", 0px, 0px)"),transition:"transform .4s ease-in-out"}),ref:t},(n={},d&&m&&(n.draggable=!0,n.onDragEnd=m,n.onDragStart=c,n.onDragOver=d),p&&y&&s&&(n.onTouchMoveCapture=p,n.onTouchEndCapture=y),n)),u)}))},31069:(e,t,n)=>{var r;n.d(t,{C:()=>r}),function(e){e.Percentage="%",e.Pixels="px"}(r||(r={}))},44829:(e,t,n)=>{var r,a;n.d(t,{Q:()=>r}),function(e){e.Normal="normal",e.Pedagogy="pedagogy",e.Hidden="hidden",e.Skill="skill",e.Curation="curation"}(r||(r={})),function(e){e[e.Normal=0]="Normal",e[e.Pedagogy=1]="Pedagogy",e[e.Hidden=2]="Hidden",e[e.Skill=3]="Skill",e[e.Curation=4]="Curation"}(a||(a={}))},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={}))},94644:(e,t,n)=>{n.d(t,{r:()=>u});var r=n(50242),a=n(81886),i=n(67058),o=n(14553),l=n(49267),c=n(49075),s={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:l.a,privacy:o.q},badRequest:c._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=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({},s),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new o.badRequest):n.forbidden||a.Q.Ry.throw(new o.forbidden.privacy):n.notFound||a.Q.Ry.throw(new o.notFound))}}},95245:(e,t,n)=>{n.d(t,{Z:()=>r});const r={partialFilterHeading:"O8f8H",partialButton:"ThKam",filtersContainer:"JIp3h"}},91807:(e,t,n)=>{n.d(t,{Z:()=>r});const r={tagList:"Zw6d9",disabled:"jlL1c",partialTag:"too_N",badge:"OjtN8",close:"X9joI"}}}]);
|
|
2
|
+
//# sourceMappingURL=9557-1ba0323e44-lite.chunk.js.map
|
package/dist/scripts/{9557-580fd7d743-lite.chunk.js.map → 9557-1ba0323e44-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/9557-580fd7d743-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/search/components/filter-actions/FilterActions.tsx","file:///app/packages/libs/shared/src/apps/search/components/filter-button/filter-button.scss","file:///app/packages/libs/shared/src/apps/search/components/filter-button/FilterButton.tsx","file:///app/packages/libs/shared/src/utils/StateHelper.ts","file:///app/packages/libs/shared/src/apps/search/components/filter-button/MoreFiltersButton.tsx","file:///app/packages/libs/shared/src/components/tags/PartialTagItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/tag-widget-item/tag-widget-item.scss","file:///app/packages/libs/shared/src/components/widgets/items/tag-widget-item/TagWidgetItem.tsx","file:///app/packages/libs/shared/src/apps/search/components/filter-types/tag-filter/tag-filter.scss","file:///app/packages/libs/shared/src/apps/search/components/filter-types/tag-filter/TagFilter.tsx","file:///app/packages/libs/shared/src/apps/search/components/reset-button/ResetButton.tsx","file:///app/packages/libs/shared/src/apps/search/components/search-filters/SearchFilters.tsx","file:///app/packages/libs/shared/src/components/tags/TagItem.tsx","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/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/TagType.ts","file:///app/packages/libs/shared/src/enums/WidgetInteraction.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/apps/search/components/search-filters/search-filters.scss","file:///app/packages/libs/shared/src/components/tags/tags.scss"],"sourcesContent":["import * as React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'search.filterActions';\n\ninterface FilterActionsProps {\n className?: string;\n onClickReset: () => void;\n onClickApply: () => void;\n active: boolean;\n}\n\nFilterActions.defaultProps = {\n active: false,\n className: ''\n};\n\nexport function FilterActions(props: FilterActionsProps): JSX.Element {\n return (\n <div className={`d-flex justify-content-between ${props.className}`}>\n {props.active ? (\n <DivButton className='text-secondary hover-text-underline cursor-pointer' onClick={props.onClickReset}>\n <Text namespace={namespace} phrase='reset' />\n </DivButton>\n ) : (\n <div className='invisible' />\n )}\n\n <DivButton className='info-link' onClick={props.onClickApply}>\n <Text namespace={namespace} phrase='apply' />\n </DivButton>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"hideCaret\":\"KDq7l\",\"filterMenu\":\"E9o_Q\",\"twoColumnsWidth\":\"C70vU\",\"nestedCheckboxesWidth\":\"kUHcg\",\"switchWidth\":\"bi1FH\",\"moreFiltersWidth\":\"rbr22\",\"svgContainer\":\"UwDMA\"};","import * as React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { FilterActions } from 'libs/shared/apps/search/components/filter-actions/FilterActions';\nimport { SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { FilterContext, FilterState } from 'libs/shared/apps/search/reducers';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\n\nimport styles from './filter-button.scss';\n\n/**\n * If your filter requires some customisations to the default width, add a use case here.\n */\nfunction getCustomWidthClass(filter: SearchFilter): string {\n if (FilterHelper.displayTwoColumns(filter))\n return styles.twoColumnsWidth;\n\n // Some classifications has long names, so we make them wider\n if (filter.id === 'classification')\n return styles.classificationWidth;\n \n if (FilterHelper.displayTwoLayers(filter))\n return styles.nestedCheckboxesWidth;\n\n if (filter.type === 'switch')\n return styles.switchWidth;\n\n return '';\n}\n\nFilterButton.defaultProps = {\n hideCaret: true\n};\n\ninterface FilterButtonProps {\n filter: SearchFilter;\n hideCaret?: boolean;\n}\n\nexport function FilterButton(props: FilterButtonProps): JSX.Element {\n const { state } = React.useContext(FilterContext);\n const currentFilterState = state[props.filter.id];\n\n const isDropdownFilter = props.filter.type === 'dropdown';\n\n const [ label, setLabel ] = React.useState(props.filter.name);\n const [ showDropdown, setShowDropdown ] = React.useState(false);\n const [ draftState, setDraftState ] = React.useState<FilterState>(currentFilterState);\n\n React.useEffect(() => {\n setLabel(FilterHelper.getLabel(props.filter, currentFilterState));\n setDraftState(currentFilterState);\n }, [ props.filter, currentFilterState?.selection ]);\n\n function onSelectItem(state: FilterState): void {\n setDraftState(state);\n\n if (isDropdownFilter)\n applyFilter(state);\n }\n\n function onClickReset(): void {\n const defaultOption = props.filter.options?.find(o => o.default);\n\n setDraftState({\n active: false,\n selection: defaultOption ? [defaultOption] : []\n });\n }\n\n function onClickApply(): void {\n applyFilter();\n setShowDropdown(false);\n }\n\n function applyFilter(newState: FilterState = draftState): void {\n FilterHelper.applyFilter(\n [props.filter],\n currentFilterState,\n { [props.filter.id]: newState },\n state.appLink\n );\n }\n\n function onToggleDropdown(isShowing: boolean): void {\n setShowDropdown(isShowing);\n\n if (isShowing || isDropdownFilter)\n return;\n\n // Apply the filter if the dropdown has been closed\n applyFilter();\n }\n\n const FilterComponent = React.useMemo(() => {\n return props.filter.customComponent\n ? props.filter.customComponent\n : FilterHelper.mapTypeToComponent(props.filter.type);\n }, [props.filter.type]);\n\n const baseClass = `fw-semibold mx-1 btn d-flex align-items-center`;\n const caretClass = props.hideCaret && !isDropdownFilter ? styles.hideCaret : '';\n const customWidthClass = getCustomWidthClass(props.filter);\n\n if (props.filter.type === 'button')\n return (\n <FilterComponent\n filter={props.filter}\n draftState={draftState}\n setDraftState={onSelectItem}\n />\n );\n\n return (\n <Dropdown onToggle={onToggleDropdown} show={showDropdown}>\n <Dropdown.Toggle\n id={`filterButton-${props.filter.id}`}\n className={`${baseClass} ${caretClass}`}\n variant={(currentFilterState.active && !isDropdownFilter) ? 'dark' : 'outline-dark'}\n disabled={props.filter.disabled}\n >\n {!!props.filter.icon && (\n <div className={styles.svgContainer}>\n <SvgContainer svgName={props.filter.icon} />\n </div>\n )}\n {props.filter.labelPrefix} {label}\n </Dropdown.Toggle>\n\n <Dropdown.Menu>\n <div className={`mx-1 ${styles.filterMenu} ${customWidthClass} ${!isDropdownFilter ? 'px-2 py-1' : ''}`}>\n <FilterComponent\n filter={props.filter}\n draftState={draftState}\n setDraftState={onSelectItem}\n />\n\n {(!isDropdownFilter && !props.filter.disabled) && (\n <FilterActions\n active={draftState.active}\n onClickReset={onClickReset}\n onClickApply={onClickApply}\n />\n )}\n </div>\n </Dropdown.Menu>\n </Dropdown>\n );\n}\n","import { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nexport const StateHelper = {\n /**\n * Helper function to get the setState function for an individual key in a state object.\n * \n * @param setState React setState action\n * @param key Property within the state object we're updating\n * @param callback Optional callback to modify data before setting state. Uses identity fn by default.\n * \n * @returns Newly updated state object\n */\n getSetStateByKey<T extends HashObject>(\n setState: React.Dispatch<React.SetStateAction<T>>,\n key: keyof T,\n callback?: (data: any, state?: T) => T[keyof T]\n ): (data: any) => void {\n return (data: any) => setState(state => {\n const fn = FunctionHelper.isFunction(callback) ? callback : FunctionHelper.useIdentity<T>();\n return { ...state, [key]: fn(data, state) };\n });\n }\n};","import * as React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { FilterActions } from 'libs/shared/apps/search/components/filter-actions/FilterActions';\nimport { FilterIds, MoreFilters } from 'libs/shared/apps/search/interfaces';\nimport { DraftState, FilterContext, FilterStateHash } from 'libs/shared/apps/search/reducers';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\n\nimport styles from './filter-button.scss';\n\nfunction getTotalActiveFilters(currentState: FilterStateHash): number {\n const total = Object.keys(currentState).reduce((acc: number, key: FilterIds) => {\n return currentState[key].active\n ? acc + 1\n : acc;\n }, 0);\n\n return total;\n}\n\ninterface MoreFiltersButtonProps {\n filter: MoreFilters;\n}\n\nexport function MoreFiltersButton(props: MoreFiltersButtonProps): JSX.Element {\n const { state } = React.useContext(FilterContext);\n const currentFilterState = state.moreFilters;\n\n const [ label, setLabel ] = React.useState(props.filter.name);\n const [ showDropdown, setShowDropdown ] = React.useState(false);\n const [ draftState, setDraftState ] = React.useState<DraftState>(currentFilterState);\n const [ totalActiveFilters, setTotalActiveFilters ] = React.useState(getTotalActiveFilters(currentFilterState));\n\n const currentFilterStateKey = Object.keys(currentFilterState).map((id: FilterIds) => {\n return `${id}:${currentFilterState[id].active}`;\n }).join('-');\n\n React.useEffect(() => {\n setDraftState(currentFilterState);\n setTotalActiveFilters(getTotalActiveFilters(currentFilterState));\n }, [ props.filter, currentFilterStateKey ]);\n\n React.useEffect(() => {\n setLabel(totalActiveFilters ? `${props.filter.name} - ${totalActiveFilters}` : props.filter.name);\n }, [totalActiveFilters]);\n\n function onClickReset(): void {\n const filterIds = Object.keys(currentFilterState) as FilterIds[];\n\n const newState = filterIds.reduce((acc: DraftState, filterId) => {\n const filter = props.filter.filters.find(f => f.id === filterId);\n const defaultOption = filter.options?.find(o => o.default);\n\n acc[filterId] = {\n active: false,\n selection: defaultOption ? [defaultOption] : []\n };\n\n return acc;\n }, {});\n\n setDraftState(newState);\n }\n\n function onClickApply(): void {\n applyFilter();\n setShowDropdown(false);\n }\n\n function onToggleDropdown(isShowing: boolean): void {\n setShowDropdown(isShowing);\n\n if (isShowing)\n return;\n\n // Apply the filter if the dropdown has been closed\n applyFilter();\n }\n\n function applyFilter(): void {\n FilterHelper.applyFilter(\n props.filter.filters,\n currentFilterState,\n draftState,\n state.appLink\n );\n }\n\n const baseClass = `fw-semibold ${styles.hideCaret} mx-1 btn`;\n\n return (\n <Dropdown onToggle={onToggleDropdown} show={showDropdown}>\n <Dropdown.Toggle id={props.filter.id} className={baseClass} variant={totalActiveFilters ? 'dark' : 'outline-dark'}>\n {label}\n </Dropdown.Toggle>\n\n <Dropdown.Menu onClick={(e: React.MouseEvent) => e.stopPropagation()}>\n <div className={`mx-1 ${styles.moreFiltersWidth} ${props.filter.type !== 'dropdown' ? 'px-2 py-1' : ''}`}>\n {props.filter.filters.map(filter => {\n const FilterComponent = filter.customComponent\n ? filter.customComponent\n : FilterHelper.mapTypeToComponent(filter.type);\n\n return (\n <div key={filter.id} className='mb-2'>\n <FilterComponent\n filter={filter}\n draftState={draftState[filter.id]}\n setDraftState={StateHelper.getSetStateByKey(setDraftState, filter.id)}\n isOnMoreFilters\n />\n </div>\n );\n })}\n\n <FilterActions\n active={!!Object.keys(draftState).find((key: FilterIds) => draftState[key].active)}\n onClickReset={onClickReset}\n onClickApply={onClickApply}\n />\n </div>\n </Dropdown.Menu>\n </Dropdown>\n );\n}","import React from 'react';\n\nimport styles from './tags.scss';\n\ninterface PartialTagItemProps {\n tagClass?: string;\n}\n\nexport const PartialTagItem = React.memo(function({ tagClass = '' }: PartialTagItemProps): JSX.Element {\n const classNames = `partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ${tagClass} ${styles.partialTag}`;\n\n return (\n <div className='mt-1'>\n <span className={classNames}> </span>\n </div>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"tagItem\":\"EcurS\",\"selected\":\"FypfE\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { FilterOption } from 'libs/shared/apps/search/interfaces';\nimport { TagItem } from 'libs/shared/components/tags/TagItem';\nimport { BaseObject, Tag } from 'libs/shared/interfaces';\n\nimport styles from './tag-widget-item.scss';\n\nexport interface TagWidgetItemProps {\n appLink: Core.AppLink;\n data: Tag;\n selectedItems?: BaseObject[];\n onClick?: (data: Tag | FilterOption) => void;\n}\n\nexport function TagWidgetItem(props: TagWidgetItemProps): JSX.Element {\n const isSelected = props.selectedItems.find(selection => selection.id === props.data.id);\n\n const colorClass = isSelected ? `${styles.selected} text-info` : 'bg-light';\n\n return (\n <TagItem\n tag={props.data}\n appLink={props.appLink}\n tagClass={`no-decoration ${colorClass} ${styles.tagItem}`}\n onClick={() => props.onClick(props.data)}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"tagItem\":\"j84HW\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FilterOption, SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { FilterContext, FilterState } from 'libs/shared/apps/search/reducers';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { PartialTagItem } from 'libs/shared/components/tags/PartialTagItem';\nimport { DynamicWidget } from 'libs/shared/components/widgets/dynamic-widget/DynamicWidget';\nimport { TagWidgetItem, TagWidgetItemProps } from 'libs/shared/components/widgets/items/tag-widget-item/TagWidgetItem';\n\nimport styles from './tag-filter.scss';\n\ninterface TagFilterProps {\n filter: SearchFilter;\n queryParams: HashObject;\n isFetching?: boolean;\n}\n\nexport function TagFilter(props: TagFilterProps): JSX.Element {\n const { state } = React.useContext(FilterContext);\n\n if (!props.filter?.id)\n return <></>;\n\n const currentFilterState = state[props.filter.id];\n\n const { selection: selections } = currentFilterState;\n\n const unappliedOptions = props.filter?.options?.filter(opt => {\n return !selections?.find(selection => selection.id === opt.id);\n }) ?? [];\n\n function onClickOption(option: FilterOption): void {\n let nextFilterState: FilterState = null;\n\n let indexOfItem: number = -1;\n\n // Find the index of the selected item if it's already selected\n selections.find((selection, i) => {\n if (indexOfItem > -1)\n return;\n\n if (selection.id.toString() !== option.id.toString())\n return;\n\n indexOfItem = i;\n });\n\n if (indexOfItem >= 0) {\n const newItems = [ ...selections.slice(0, indexOfItem), ...selections.slice(indexOfItem + 1) ];\n \n nextFilterState = {\n active: !!newItems.length,\n selection: newItems\n };\n } else {\n nextFilterState = {\n active: true,\n selection: selections.concat(option)\n };\n }\n\n FilterHelper.applyFilter(\n [props.filter],\n currentFilterState,\n { [props.filter.id]: nextFilterState },\n state.appLink\n );\n }\n\n function getContainerClass(): string {\n let className = 'mb-3';\n\n if (collection.length && props.isFetching)\n className += ' mt-n1';\n else if (!collection.length && !props.isFetching)\n className += ' d-none';\n\n return className;\n }\n\n const collection = [ ...selections, ...(props.isFetching ? [] : unappliedOptions) ];\n\n return (\n <div className={(props.isFetching || collection.length) ? 'py-2' : ''}>\n <div className={getContainerClass()}>\n {(!!collection.length || props.isFetching) && (\n <DynamicWidget\n collection={collection}\n childComponent={(props: TagWidgetItemProps) => (\n <TagWidgetItem\n {...props}\n selectedItems={selections}\n onClick={onClickOption}\n />\n )}\n staticChildren={props.isFetching\n ? new Array(3).fill({\n component: () => <PartialTagItem tagClass={styles.tagItem} />,\n position: 'end'\n })\n : []\n }\n partialLoadingComponent={() => (\n <div className='me-2'>\n <PartialTagItem tagClass={`${styles.tagItem}`} />\n </div>\n )}\n />\n )}\n </div>\n </div>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { MoreFilters, SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { FilterContext } from 'libs/shared/apps/search/reducers';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\n\ntype ResetButtonProps = PropsWithAnalyticsOptions<{\n currentQueryParam: string;\n mainFilters: Array<SearchFilter>;\n moreFilters: MoreFilters;\n}>;\n\nexport function ResetButton(props: ResetButtonProps): JSX.Element {\n const { state } = React.useContext(FilterContext);\n\n const onClickReset = () => {\n Core.AppLinkHelper.trigger({\n ...state.appLink,\n params: props.currentQueryParam ? { query: props.currentQueryParam } : null\n });\n };\n\n return (\n <DivButton\n onClick={onClickReset}\n className='hover-text-underline cursor-pointer d-flex align-items-center ms-2'\n >\n <Text namespace='search.resetButton' phrase='reset' />\n </DivButton>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { FilterButton } from 'libs/shared/apps/search/components/filter-button/FilterButton';\nimport { MoreFiltersButton } from 'libs/shared/apps/search/components/filter-button/MoreFiltersButton';\nimport { TagFilter } from 'libs/shared/apps/search/components/filter-types/tag-filter/TagFilter';\nimport { ResetButton } from 'libs/shared/apps/search/components/reset-button/ResetButton';\nimport { MoreFilters, SearchFilter, SearchIndices } from 'libs/shared/apps/search/interfaces';\nimport { FilterContext, FilterReducer } from 'libs/shared/apps/search/reducers';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport styles from './search-filters.scss';\n\ntype SearchFiltersProps = {\n queryParams: HashObject;\n mainFilters: SearchFilter[];\n appLink: Core.AppLink;\n moreFilters?: MoreFilters;\n isFetchingOptions?: boolean;\n constantIndices?: SearchIndices[];\n analyticsOptions?: AnalyticsOptions;\n\n hideHeading?: boolean;\n hideDivider?: boolean;\n hideResetButton?: boolean;\n hideCaret?: boolean;\n};\n\nexport function SearchFilters(props: SearchFiltersProps): JSX.Element {\n const { queryParams, appLink, hideHeading, isFetchingOptions, constantIndices = []} = props;\n\n const newState = React.useMemo(() => {\n return FilterHelper.deriveInitialStateFromQuery(queryParams, props.mainFilters, props.moreFilters, appLink);\n }, [ queryParams, isFetchingOptions ]);\n\n const [ state, dispatch ] = React.useReducer(FilterReducer, newState);\n\n React.useEffect(() => {\n if (ObjectHelper.isEqual(newState, state))\n return;\n\n dispatch({\n type: 'update',\n payload: newState\n });\n\n if (props.analyticsOptions) {\n FilterHelper.logFilterEvent(\n props.mainFilters,\n props.moreFilters,\n newState,\n queryParams.query,\n props.analyticsOptions\n );\n }\n }, [newState]);\n\n const indices = ArrayHelper.uniq([\n ...FilterHelper.getAppliedIndices(queryParams),\n ...constantIndices\n ]);\n\n const { mainFilters, moreFilters } = FilterHelper.mixinDisabledFields(\n state,\n indices,\n props.mainFilters,\n props.moreFilters\n );\n\n // Separate the tag filter as it's rendered differently\n const mainFiltersWithoutTags = mainFilters.filter(f => f.type !== 'tag');\n const tagFilter = mainFilters.find(f => f.type === 'tag');\n\n return (\n <FilterContext.Provider value={{ state, dispatch }}>\n <LanguageNamespaceContext.Provider value='search.searchFilters'>\n <section>\n <div className={`d-flex ${!props.hideDivider ? 'border-bottom pb-3 mb-3' : ''}`}>\n {!hideHeading && (\n <h2 className='h5 mb-0 d-inline-block pe-2 border-end d-flex align-items-center'>\n <Text phrase='heading' />\n </h2>\n )}\n\n <div className={`d-flex flex-wrap ${styles.filtersContainer} ${!hideHeading ? 'ms-2' : ''}`}>\n {mainFiltersWithoutTags.map(f => (\n <FilterButton key={f.id} filter={f} hideCaret={props.hideCaret} />\n ))}\n\n {moreFilters && <MoreFiltersButton filter={moreFilters} />}\n\n {FilterHelper.hasActiveFilters(queryParams) && !props.hideResetButton && (\n <ResetButton\n mainFilters={props.mainFilters}\n moreFilters={props.moreFilters}\n currentQueryParam={queryParams.query}\n analyticsOptions={props.analyticsOptions}\n />\n )}\n </div>\n </div>\n \n <TagFilter\n filter={tagFilter}\n queryParams={queryParams}\n isFetching={props.isFetchingOptions}\n />\n </section>\n </LanguageNamespaceContext.Provider>\n </FilterContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { TagType } from 'libs/shared/enums/TagType';\nimport { Tag, ThemeColours } from 'libs/shared/interfaces';\n\nimport styles from './tags.scss';\n\ninterface TagItemProps {\n tag: Tag;\n themeColours?: ThemeColours;\n appLink?: Core.AppLink;\n onClick?: () => void;\n onRemove?: () => void;\n disabled?: boolean;\n tagClass?: string;\n}\n\nfunction getTagTypeClass(tagType: TagType): string {\n switch (tagType) {\n case TagType.Pedagogy:\n case TagType.Skill:\n return 'pedagogy-tag text-white';\n\n case TagType.Hidden:\n return 'hidden-tag';\n\n case TagType.Normal:\n default:\n return '';\n }\n}\n\nexport function TagItem(props: TagItemProps): JSX.Element {\n const { tag, appLink, onClick, disabled, tagClass = 'tag' } = props;\n\n const name = tag.name.toLowerCase();\n const tagType = tag.tagType?.toLowerCase() as TagType;\n\n let classNames = `rounded-pill py-1 px-2 my-1 me-1 ${tagClass} ${getTagTypeClass(tagType)}`;\n\n const hasThemeColour = tagType === TagType.Normal && !!props.themeColours?.secondary;\n\n if (hasThemeColour)\n classNames += ' text-white';\n\n if ((appLink || onClick) && !disabled)\n classNames += ' cursor-pointer';\n\n if (disabled)\n classNames += ' ' + styles.disabled;\n\n if (props.onRemove)\n classNames += ' ' + styles.badge;\n\n if (!appLink)\n classNames += ' d-inline-block';\n\n const style: React.CSSProperties = hasThemeColour\n ? { backgroundColor: props.themeColours.secondary }\n : {};\n\n if (appLink) {\n return (\n <AppLink\n onClick={onClick}\n appLink={appLink}\n className={classNames}\n title={name}\n style={style}\n >\n <span className='text-truncate text-nowrap'>{name}</span>\n </AppLink>\n );\n }\n\n return (\n <span\n onClick={onClick}\n className={classNames}\n title={name}\n style={style}\n >\n <span className='text-truncate text-nowrap'>\n {name}\n {props.onRemove &&\n <button\n onClick={props.onRemove}\n className={`${styles.close} btn-close font-size-normal`}\n role='button'\n aria-label='Close'\n />\n }\n </span>\n </span>\n );\n}","// 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 } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\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;\n\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n showSeeMoreLink?: boolean;\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={{ ...props.analyticsOptions, descriptor: ClickDescriptor.SeeMore }}\n className={`text-decoration-none ${props.appLink ? 'curated-widget-link' : ''}`}\n >\n <p className='hover-text-underline text-dark curated-widget-heading'>{getPhrase('seeMore')}</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 return (\n <div className='curated-widget-header'>\n <div className='d-flex justify-content-between'>\n {!!props.name && (\n <div className={styles.title}>\n <AppLink\n appLink={props.appLink}\n analyticsOptions={props.analyticsOptions}\n analyticsData={props.analyticsData}\n className={`text-decoration-none ${props.appLink ? 'curated-widget-link' : ''}`}\n >\n <h2 className='h4 curated-widget-heading'>\n {props.name}\n </h2>\n </AppLink>\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 ${styles.description}`}>\n <span className='clamp-2'>{props.description}</span>\n </p>\n {!!props.appLink && !!props.showSeeMoreLink && <SeeMore {...props}/> }\n </div>\n )}\n </div>\n );\n}","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 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<HTMLDivElement>) => void;\n onDragEnd?: () => void;\n\n onTouchMove?: (event: React.TouchEvent<HTMLDivElement>) => void;\n onTouchEnd?: () => void;\n\n percentageDragged?: number;\n}\n\nexport const SlidingListContainer = React.forwardRef((\n props: SlidingListContainerProps,\n ref: React.MutableRefObject<HTMLDivElement>\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 <div\n className='d-flex flex-nowrap position-relative w-100'\n style={getPositionStyling(position, positionType, percentageDragged)}\n ref={ref}\n {...getEventListeners()}\n >\n {children}\n </div>\n );\n});","export enum CssMeasurement {\n Percentage = '%',\n Pixels = 'px'\n}","export enum TagType {\n Normal = 'normal',\n Pedagogy = 'pedagogy',\n Hidden = 'hidden',\n Skill = 'skill',\n Curation = 'curation'\n}\n\n/**\n * This should **only** be used to create new tags in master (as it only accepts enum values).\n * Use the string enum above for all other cases.\n */\nexport enum TagTypeNumber {\n Normal = 0,\n Pedagogy = 1,\n Hidden = 2,\n Skill = 3,\n Curation = 4\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 { 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}\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};\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.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}","// extracted by mini-css-extract-plugin\nexport default {\"partialFilterHeading\":\"O8f8H\",\"partialButton\":\"ThKam\",\"filtersContainer\":\"JIp3h\"};","// extracted by mini-css-extract-plugin\nexport default {\"tagList\":\"Zw6d9\",\"disabled\":\"jlL1c\",\"partialTag\":\"too_N\",\"badge\":\"OjtN8\",\"close\":\"X9joI\"};"],"names":["namespace","FilterActions","props","className","active","DivButton","onClick","onClickReset","Text","phrase","onClickApply","defaultProps","FilterButton","state","currentFilterState","filter","id","isDropdownFilter","type","name","label","setLabel","showDropdown","setShowDropdown","draftState","setDraftState","onSelectItem","applyFilter","newState","FilterHelper","appLink","selection","FilterComponent","customComponent","caretClass","hideCaret","customWidthClass","Dropdown","onToggle","isShowing","show","variant","disabled","icon","SvgContainer","svgName","labelPrefix","defaultOption","options","find","o","StateHelper","getSetStateByKey","setState","key","callback","data","fn","FunctionHelper","getTotalActiveFilters","currentState","Object","keys","reduce","acc","MoreFiltersButton","moreFilters","totalActiveFilters","setTotalActiveFilters","currentFilterStateKey","map","join","filters","baseClass","e","stopPropagation","isOnMoreFilters","filterId","f","PartialTagItem","tagClass","classNames","TagWidgetItem","colorClass","selectedItems","TagItem","tag","TagFilter","selections","unappliedOptions","opt","onClickOption","option","nextFilterState","indexOfItem","i","toString","newItems","slice","length","concat","collection","isFetching","DynamicWidget","childComponent","staticChildren","Array","fill","component","position","partialLoadingComponent","ResetButton","params","currentQueryParam","query","SearchFilters","queryParams","hideHeading","isFetchingOptions","constantIndices","mainFilters","dispatch","ObjectHelper","payload","analyticsOptions","indices","ArrayHelper","mainFiltersWithoutTags","tagFilter","value","hideDivider","hideResetButton","toLowerCase","tagType","getTagTypeClass","hasThemeColour","themeColours","secondary","onRemove","style","backgroundColor","title","role","getPhrase","LanguageService","SeeMore","AppLink","analyticsData","descriptor","WidgetHeader","hasDescription","description","showSeeMoreLink","blankImage","Image","src","DragHelper","event","dataTransfer","setDragImage","isTouchScreen","UserAgentHelper","SlidingListContainer","ref","listenerProps","xPosition","measurement","dragPercentage","children","positionType","onDrag","onDragEnd","onTouchMove","onTouchEnd","percentageDragged","CssMeasurement","C","transform","transition","draggable","onDragStart","onDragOver","onTouchMoveCapture","onTouchEndCapture","TagType","TagTypeNumber","WidgetInteraction","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/9557-1ba0323e44-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/search/components/filter-actions/FilterActions.tsx","file:///app/packages/libs/shared/src/apps/search/components/filter-button/filter-button.scss","file:///app/packages/libs/shared/src/apps/search/components/filter-button/FilterButton.tsx","file:///app/packages/libs/shared/src/utils/StateHelper.ts","file:///app/packages/libs/shared/src/apps/search/components/filter-button/MoreFiltersButton.tsx","file:///app/packages/libs/shared/src/components/tags/PartialTagItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/tag-widget-item/tag-widget-item.scss","file:///app/packages/libs/shared/src/components/widgets/items/tag-widget-item/TagWidgetItem.tsx","file:///app/packages/libs/shared/src/apps/search/components/filter-types/tag-filter/tag-filter.scss","file:///app/packages/libs/shared/src/apps/search/components/filter-types/tag-filter/TagFilter.tsx","file:///app/packages/libs/shared/src/apps/search/components/reset-button/ResetButton.tsx","file:///app/packages/libs/shared/src/apps/search/components/search-filters/SearchFilters.tsx","file:///app/packages/libs/shared/src/components/tags/TagItem.tsx","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/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/TagType.ts","file:///app/packages/libs/shared/src/enums/WidgetInteraction.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/apps/search/components/search-filters/search-filters.scss","file:///app/packages/libs/shared/src/components/tags/tags.scss"],"sourcesContent":["import * as React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'search.filterActions';\n\ninterface FilterActionsProps {\n className?: string;\n onClickReset: () => void;\n onClickApply: () => void;\n active: boolean;\n}\n\nFilterActions.defaultProps = {\n active: false,\n className: ''\n};\n\nexport function FilterActions(props: FilterActionsProps): JSX.Element {\n return (\n <div className={`d-flex justify-content-between ${props.className}`}>\n {props.active ? (\n <DivButton className='text-secondary hover-text-underline cursor-pointer' onClick={props.onClickReset}>\n <Text namespace={namespace} phrase='reset' />\n </DivButton>\n ) : (\n <div className='invisible' />\n )}\n\n <DivButton className='info-link' onClick={props.onClickApply}>\n <Text namespace={namespace} phrase='apply' />\n </DivButton>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"hideCaret\":\"KDq7l\",\"filterMenu\":\"E9o_Q\",\"twoColumnsWidth\":\"C70vU\",\"nestedCheckboxesWidth\":\"kUHcg\",\"switchWidth\":\"bi1FH\",\"moreFiltersWidth\":\"rbr22\",\"svgContainer\":\"UwDMA\"};","import * as React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { FilterActions } from 'libs/shared/apps/search/components/filter-actions/FilterActions';\nimport { SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { FilterContext, FilterState } from 'libs/shared/apps/search/reducers';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\n\nimport styles from './filter-button.scss';\n\n/**\n * If your filter requires some customisations to the default width, add a use case here.\n */\nfunction getCustomWidthClass(filter: SearchFilter): string {\n if (FilterHelper.displayTwoColumns(filter))\n return styles.twoColumnsWidth;\n\n // Some classifications has long names, so we make them wider\n if (filter.id === 'classification')\n return styles.classificationWidth;\n \n if (FilterHelper.displayTwoLayers(filter))\n return styles.nestedCheckboxesWidth;\n\n if (filter.type === 'switch')\n return styles.switchWidth;\n\n return '';\n}\n\nFilterButton.defaultProps = {\n hideCaret: true\n};\n\ninterface FilterButtonProps {\n filter: SearchFilter;\n hideCaret?: boolean;\n}\n\nexport function FilterButton(props: FilterButtonProps): JSX.Element {\n const { state } = React.useContext(FilterContext);\n const currentFilterState = state[props.filter.id];\n\n const isDropdownFilter = props.filter.type === 'dropdown';\n\n const [ label, setLabel ] = React.useState(props.filter.name);\n const [ showDropdown, setShowDropdown ] = React.useState(false);\n const [ draftState, setDraftState ] = React.useState<FilterState>(currentFilterState);\n\n React.useEffect(() => {\n setLabel(FilterHelper.getLabel(props.filter, currentFilterState));\n setDraftState(currentFilterState);\n }, [ props.filter, currentFilterState?.selection ]);\n\n function onSelectItem(state: FilterState): void {\n setDraftState(state);\n\n if (isDropdownFilter)\n applyFilter(state);\n }\n\n function onClickReset(): void {\n const defaultOption = props.filter.options?.find(o => o.default);\n\n setDraftState({\n active: false,\n selection: defaultOption ? [defaultOption] : []\n });\n }\n\n function onClickApply(): void {\n applyFilter();\n setShowDropdown(false);\n }\n\n function applyFilter(newState: FilterState = draftState): void {\n FilterHelper.applyFilter(\n [props.filter],\n currentFilterState,\n { [props.filter.id]: newState },\n state.appLink\n );\n }\n\n function onToggleDropdown(isShowing: boolean): void {\n setShowDropdown(isShowing);\n\n if (isShowing || isDropdownFilter)\n return;\n\n // Apply the filter if the dropdown has been closed\n applyFilter();\n }\n\n const FilterComponent = React.useMemo(() => {\n return props.filter.customComponent\n ? props.filter.customComponent\n : FilterHelper.mapTypeToComponent(props.filter.type);\n }, [props.filter.type]);\n\n const baseClass = `fw-semibold mx-1 btn d-flex align-items-center`;\n const caretClass = props.hideCaret && !isDropdownFilter ? styles.hideCaret : '';\n const customWidthClass = getCustomWidthClass(props.filter);\n\n if (props.filter.type === 'button')\n return (\n <FilterComponent\n filter={props.filter}\n draftState={draftState}\n setDraftState={onSelectItem}\n />\n );\n\n return (\n <Dropdown onToggle={onToggleDropdown} show={showDropdown}>\n <Dropdown.Toggle\n id={`filterButton-${props.filter.id}`}\n className={`${baseClass} ${caretClass}`}\n variant={(currentFilterState.active && !isDropdownFilter) ? 'dark' : 'outline-dark'}\n disabled={props.filter.disabled}\n >\n {!!props.filter.icon && (\n <div className={styles.svgContainer}>\n <SvgContainer svgName={props.filter.icon} />\n </div>\n )}\n {props.filter.labelPrefix} {label}\n </Dropdown.Toggle>\n\n <Dropdown.Menu>\n <div className={`mx-1 ${styles.filterMenu} ${customWidthClass} ${!isDropdownFilter ? 'px-2 py-1' : ''}`}>\n <FilterComponent\n filter={props.filter}\n draftState={draftState}\n setDraftState={onSelectItem}\n />\n\n {(!isDropdownFilter && !props.filter.disabled) && (\n <FilterActions\n active={draftState.active}\n onClickReset={onClickReset}\n onClickApply={onClickApply}\n />\n )}\n </div>\n </Dropdown.Menu>\n </Dropdown>\n );\n}\n","import { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nexport const StateHelper = {\n /**\n * Helper function to get the setState function for an individual key in a state object.\n * \n * @param setState React setState action\n * @param key Property within the state object we're updating\n * @param callback Optional callback to modify data before setting state. Uses identity fn by default.\n * \n * @returns Newly updated state object\n */\n getSetStateByKey<T extends HashObject>(\n setState: React.Dispatch<React.SetStateAction<T>>,\n key: keyof T,\n callback?: (data: any, state?: T) => T[keyof T]\n ): (data: any) => void {\n return (data: any) => setState(state => {\n const fn = FunctionHelper.isFunction(callback) ? callback : FunctionHelper.useIdentity<T>();\n return { ...state, [key]: fn(data, state) };\n });\n }\n};","import * as React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { FilterActions } from 'libs/shared/apps/search/components/filter-actions/FilterActions';\nimport { FilterIds, MoreFilters } from 'libs/shared/apps/search/interfaces';\nimport { DraftState, FilterContext, FilterStateHash } from 'libs/shared/apps/search/reducers';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\n\nimport styles from './filter-button.scss';\n\nfunction getTotalActiveFilters(currentState: FilterStateHash): number {\n const total = Object.keys(currentState).reduce((acc: number, key: FilterIds) => {\n return currentState[key].active\n ? acc + 1\n : acc;\n }, 0);\n\n return total;\n}\n\ninterface MoreFiltersButtonProps {\n filter: MoreFilters;\n}\n\nexport function MoreFiltersButton(props: MoreFiltersButtonProps): JSX.Element {\n const { state } = React.useContext(FilterContext);\n const currentFilterState = state.moreFilters;\n\n const [ label, setLabel ] = React.useState(props.filter.name);\n const [ showDropdown, setShowDropdown ] = React.useState(false);\n const [ draftState, setDraftState ] = React.useState<DraftState>(currentFilterState);\n const [ totalActiveFilters, setTotalActiveFilters ] = React.useState(getTotalActiveFilters(currentFilterState));\n\n const currentFilterStateKey = Object.keys(currentFilterState).map((id: FilterIds) => {\n return `${id}:${currentFilterState[id].active}`;\n }).join('-');\n\n React.useEffect(() => {\n setDraftState(currentFilterState);\n setTotalActiveFilters(getTotalActiveFilters(currentFilterState));\n }, [ props.filter, currentFilterStateKey ]);\n\n React.useEffect(() => {\n setLabel(totalActiveFilters ? `${props.filter.name} - ${totalActiveFilters}` : props.filter.name);\n }, [totalActiveFilters]);\n\n function onClickReset(): void {\n const filterIds = Object.keys(currentFilterState) as FilterIds[];\n\n const newState = filterIds.reduce((acc: DraftState, filterId) => {\n const filter = props.filter.filters.find(f => f.id === filterId);\n const defaultOption = filter.options?.find(o => o.default);\n\n acc[filterId] = {\n active: false,\n selection: defaultOption ? [defaultOption] : []\n };\n\n return acc;\n }, {});\n\n setDraftState(newState);\n }\n\n function onClickApply(): void {\n applyFilter();\n setShowDropdown(false);\n }\n\n function onToggleDropdown(isShowing: boolean): void {\n setShowDropdown(isShowing);\n\n if (isShowing)\n return;\n\n // Apply the filter if the dropdown has been closed\n applyFilter();\n }\n\n function applyFilter(): void {\n FilterHelper.applyFilter(\n props.filter.filters,\n currentFilterState,\n draftState,\n state.appLink\n );\n }\n\n const baseClass = `fw-semibold ${styles.hideCaret} mx-1 btn`;\n\n return (\n <Dropdown onToggle={onToggleDropdown} show={showDropdown}>\n <Dropdown.Toggle id={props.filter.id} className={baseClass} variant={totalActiveFilters ? 'dark' : 'outline-dark'}>\n {label}\n </Dropdown.Toggle>\n\n <Dropdown.Menu onClick={(e: React.MouseEvent) => e.stopPropagation()}>\n <div className={`mx-1 ${styles.moreFiltersWidth} ${props.filter.type !== 'dropdown' ? 'px-2 py-1' : ''}`}>\n {props.filter.filters.map(filter => {\n const FilterComponent = filter.customComponent\n ? filter.customComponent\n : FilterHelper.mapTypeToComponent(filter.type);\n\n return (\n <div key={filter.id} className='mb-2'>\n <FilterComponent\n filter={filter}\n draftState={draftState[filter.id]}\n setDraftState={StateHelper.getSetStateByKey(setDraftState, filter.id)}\n isOnMoreFilters\n />\n </div>\n );\n })}\n\n <FilterActions\n active={!!Object.keys(draftState).find((key: FilterIds) => draftState[key].active)}\n onClickReset={onClickReset}\n onClickApply={onClickApply}\n />\n </div>\n </Dropdown.Menu>\n </Dropdown>\n );\n}","import React from 'react';\n\nimport styles from './tags.scss';\n\ninterface PartialTagItemProps {\n tagClass?: string;\n}\n\nexport const PartialTagItem = React.memo(function({ tagClass = '' }: PartialTagItemProps): JSX.Element {\n const classNames = `partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ${tagClass} ${styles.partialTag}`;\n\n return (\n <div className='mt-1'>\n <span className={classNames}> </span>\n </div>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"tagItem\":\"EcurS\",\"selected\":\"FypfE\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { FilterOption } from 'libs/shared/apps/search/interfaces';\nimport { TagItem } from 'libs/shared/components/tags/TagItem';\nimport { BaseObject, Tag } from 'libs/shared/interfaces';\n\nimport styles from './tag-widget-item.scss';\n\nexport interface TagWidgetItemProps {\n appLink: Core.AppLink;\n data: Tag;\n selectedItems?: BaseObject[];\n onClick?: (data: Tag | FilterOption) => void;\n}\n\nexport function TagWidgetItem(props: TagWidgetItemProps): JSX.Element {\n const isSelected = props.selectedItems.find(selection => selection.id === props.data.id);\n\n const colorClass = isSelected ? `${styles.selected} text-info` : 'bg-light';\n\n return (\n <TagItem\n tag={props.data}\n appLink={props.appLink}\n tagClass={`no-decoration ${colorClass} ${styles.tagItem}`}\n onClick={() => props.onClick(props.data)}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"tagItem\":\"j84HW\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FilterOption, SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { FilterContext, FilterState } from 'libs/shared/apps/search/reducers';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { PartialTagItem } from 'libs/shared/components/tags/PartialTagItem';\nimport { DynamicWidget } from 'libs/shared/components/widgets/dynamic-widget/DynamicWidget';\nimport { TagWidgetItem, TagWidgetItemProps } from 'libs/shared/components/widgets/items/tag-widget-item/TagWidgetItem';\n\nimport styles from './tag-filter.scss';\n\ninterface TagFilterProps {\n filter: SearchFilter;\n queryParams: HashObject;\n isFetching?: boolean;\n}\n\nexport function TagFilter(props: TagFilterProps): JSX.Element {\n const { state } = React.useContext(FilterContext);\n\n if (!props.filter?.id)\n return <></>;\n\n const currentFilterState = state[props.filter.id];\n\n const { selection: selections } = currentFilterState;\n\n const unappliedOptions = props.filter?.options?.filter(opt => {\n return !selections?.find(selection => selection.id === opt.id);\n }) ?? [];\n\n function onClickOption(option: FilterOption): void {\n let nextFilterState: FilterState = null;\n\n let indexOfItem: number = -1;\n\n // Find the index of the selected item if it's already selected\n selections.find((selection, i) => {\n if (indexOfItem > -1)\n return;\n\n if (selection.id.toString() !== option.id.toString())\n return;\n\n indexOfItem = i;\n });\n\n if (indexOfItem >= 0) {\n const newItems = [ ...selections.slice(0, indexOfItem), ...selections.slice(indexOfItem + 1) ];\n \n nextFilterState = {\n active: !!newItems.length,\n selection: newItems\n };\n } else {\n nextFilterState = {\n active: true,\n selection: selections.concat(option)\n };\n }\n\n FilterHelper.applyFilter(\n [props.filter],\n currentFilterState,\n { [props.filter.id]: nextFilterState },\n state.appLink\n );\n }\n\n function getContainerClass(): string {\n let className = 'mb-3';\n\n if (collection.length && props.isFetching)\n className += ' mt-n1';\n else if (!collection.length && !props.isFetching)\n className += ' d-none';\n\n return className;\n }\n\n const collection = [ ...selections, ...(props.isFetching ? [] : unappliedOptions) ];\n\n return (\n <div className={(props.isFetching || collection.length) ? 'py-2' : ''}>\n <div className={getContainerClass()}>\n {(!!collection.length || props.isFetching) && (\n <DynamicWidget\n collection={collection}\n childComponent={(props: TagWidgetItemProps) => (\n <TagWidgetItem\n {...props}\n selectedItems={selections}\n onClick={onClickOption}\n />\n )}\n staticChildren={props.isFetching\n ? new Array(3).fill({\n component: () => <PartialTagItem tagClass={styles.tagItem} />,\n position: 'end'\n })\n : []\n }\n partialLoadingComponent={() => (\n <div className='me-2'>\n <PartialTagItem tagClass={`${styles.tagItem}`} />\n </div>\n )}\n />\n )}\n </div>\n </div>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { MoreFilters, SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { FilterContext } from 'libs/shared/apps/search/reducers';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\n\ntype ResetButtonProps = PropsWithAnalyticsOptions<{\n currentQueryParam: string;\n mainFilters: Array<SearchFilter>;\n moreFilters: MoreFilters;\n}>;\n\nexport function ResetButton(props: ResetButtonProps): JSX.Element {\n const { state } = React.useContext(FilterContext);\n\n const onClickReset = () => {\n Core.AppLinkHelper.trigger({\n ...state.appLink,\n params: props.currentQueryParam ? { query: props.currentQueryParam } : null\n });\n };\n\n return (\n <DivButton\n onClick={onClickReset}\n className='hover-text-underline cursor-pointer d-flex align-items-center ms-2'\n >\n <Text namespace='search.resetButton' phrase='reset' />\n </DivButton>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { FilterButton } from 'libs/shared/apps/search/components/filter-button/FilterButton';\nimport { MoreFiltersButton } from 'libs/shared/apps/search/components/filter-button/MoreFiltersButton';\nimport { TagFilter } from 'libs/shared/apps/search/components/filter-types/tag-filter/TagFilter';\nimport { ResetButton } from 'libs/shared/apps/search/components/reset-button/ResetButton';\nimport { MoreFilters, SearchFilter, SearchIndices } from 'libs/shared/apps/search/interfaces';\nimport { FilterContext, FilterReducer } from 'libs/shared/apps/search/reducers';\nimport { FilterHelper } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport styles from './search-filters.scss';\n\ntype SearchFiltersProps = {\n queryParams: HashObject;\n mainFilters: SearchFilter[];\n appLink: Core.AppLink;\n moreFilters?: MoreFilters;\n isFetchingOptions?: boolean;\n constantIndices?: SearchIndices[];\n analyticsOptions?: AnalyticsOptions;\n\n hideHeading?: boolean;\n hideDivider?: boolean;\n hideResetButton?: boolean;\n hideCaret?: boolean;\n};\n\nexport function SearchFilters(props: SearchFiltersProps): JSX.Element {\n const { queryParams, appLink, hideHeading, isFetchingOptions, constantIndices = []} = props;\n\n const newState = React.useMemo(() => {\n return FilterHelper.deriveInitialStateFromQuery(queryParams, props.mainFilters, props.moreFilters, appLink);\n }, [ queryParams, isFetchingOptions ]);\n\n const [ state, dispatch ] = React.useReducer(FilterReducer, newState);\n\n React.useEffect(() => {\n if (ObjectHelper.isEqual(newState, state))\n return;\n\n dispatch({\n type: 'update',\n payload: newState\n });\n\n if (props.analyticsOptions) {\n FilterHelper.logFilterEvent(\n props.mainFilters,\n props.moreFilters,\n newState,\n queryParams.query,\n props.analyticsOptions\n );\n }\n }, [newState]);\n\n const indices = ArrayHelper.uniq([\n ...FilterHelper.getAppliedIndices(queryParams),\n ...constantIndices\n ]);\n\n const { mainFilters, moreFilters } = FilterHelper.mixinDisabledFields(\n state,\n indices,\n props.mainFilters,\n props.moreFilters\n );\n\n // Separate the tag filter as it's rendered differently\n const mainFiltersWithoutTags = mainFilters.filter(f => f.type !== 'tag');\n const tagFilter = mainFilters.find(f => f.type === 'tag');\n\n return (\n <FilterContext.Provider value={{ state, dispatch }}>\n <LanguageNamespaceContext.Provider value='search.searchFilters'>\n <section>\n <div className={`d-flex ${!props.hideDivider ? 'border-bottom pb-3 mb-3' : ''}`}>\n {!hideHeading && (\n <h2 className='h5 mb-0 d-inline-block pe-2 border-end d-flex align-items-center'>\n <Text phrase='heading' />\n </h2>\n )}\n\n <div className={`d-flex flex-wrap ${styles.filtersContainer} ${!hideHeading ? 'ms-2' : ''}`}>\n {mainFiltersWithoutTags.map(f => (\n <FilterButton key={f.id} filter={f} hideCaret={props.hideCaret} />\n ))}\n\n {moreFilters && <MoreFiltersButton filter={moreFilters} />}\n\n {FilterHelper.hasActiveFilters(queryParams) && !props.hideResetButton && (\n <ResetButton\n mainFilters={props.mainFilters}\n moreFilters={props.moreFilters}\n currentQueryParam={queryParams.query}\n analyticsOptions={props.analyticsOptions}\n />\n )}\n </div>\n </div>\n \n <TagFilter\n filter={tagFilter}\n queryParams={queryParams}\n isFetching={props.isFetchingOptions}\n />\n </section>\n </LanguageNamespaceContext.Provider>\n </FilterContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { TagType } from 'libs/shared/enums/TagType';\nimport { Tag, ThemeColours } from 'libs/shared/interfaces';\n\nimport styles from './tags.scss';\n\ninterface TagItemProps {\n tag: Tag;\n themeColours?: ThemeColours;\n appLink?: Core.AppLink;\n onClick?: () => void;\n onRemove?: () => void;\n disabled?: boolean;\n tagClass?: string;\n}\n\nfunction getTagTypeClass(tagType: TagType): string {\n switch (tagType) {\n case TagType.Pedagogy:\n case TagType.Skill:\n return 'pedagogy-tag text-white';\n\n case TagType.Hidden:\n return 'hidden-tag';\n\n case TagType.Normal:\n default:\n return '';\n }\n}\n\nexport function TagItem(props: TagItemProps): JSX.Element {\n const { tag, appLink, onClick, disabled, tagClass = 'tag' } = props;\n\n const name = tag.name.toLowerCase();\n const tagType = tag.tagType?.toLowerCase() as TagType;\n\n let classNames = `rounded-pill py-1 px-2 my-1 me-1 ${tagClass} ${getTagTypeClass(tagType)}`;\n\n const hasThemeColour = tagType === TagType.Normal && !!props.themeColours?.secondary;\n\n if (hasThemeColour)\n classNames += ' text-white';\n\n if ((appLink || onClick) && !disabled)\n classNames += ' cursor-pointer';\n\n if (disabled)\n classNames += ' ' + styles.disabled;\n\n if (props.onRemove)\n classNames += ' ' + styles.badge;\n\n if (!appLink)\n classNames += ' d-inline-block';\n\n const style: React.CSSProperties = hasThemeColour\n ? { backgroundColor: props.themeColours.secondary }\n : {};\n\n if (appLink) {\n return (\n <AppLink\n onClick={onClick}\n appLink={appLink}\n className={classNames}\n title={name}\n style={style}\n >\n <span className='text-truncate text-nowrap'>{name}</span>\n </AppLink>\n );\n }\n\n return (\n <span\n onClick={onClick}\n className={classNames}\n title={name}\n style={style}\n >\n <span className='text-truncate text-nowrap'>\n {name}\n {props.onRemove &&\n <button\n onClick={props.onRemove}\n className={`${styles.close} btn-close font-size-normal`}\n role='button'\n aria-label='Close'\n />\n }\n </span>\n </span>\n );\n}","// 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 } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\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;\n\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n showSeeMoreLink?: boolean;\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={{ ...props.analyticsOptions, descriptor: ClickDescriptor.SeeMore }}\n className={`text-decoration-none ${props.appLink ? 'curated-widget-link' : ''}`}\n >\n <p className='hover-text-underline text-dark curated-widget-heading'>{getPhrase('seeMore')}</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 return (\n <div className='curated-widget-header'>\n <div className='d-flex justify-content-between'>\n {!!props.name && (\n <div className={styles.title}>\n <AppLink\n appLink={props.appLink}\n analyticsOptions={props.analyticsOptions}\n analyticsData={props.analyticsData}\n className={`text-decoration-none ${props.appLink ? 'curated-widget-link' : ''}`}\n >\n <h2 className='h4 curated-widget-heading'>\n {props.name}\n </h2>\n </AppLink>\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 ${styles.description}`}>\n <span className='clamp-2'>{props.description}</span>\n </p>\n {!!props.appLink && !!props.showSeeMoreLink && <SeeMore {...props}/> }\n </div>\n )}\n </div>\n );\n}","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 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<HTMLDivElement>) => void;\n onDragEnd?: () => void;\n\n onTouchMove?: (event: React.TouchEvent<HTMLDivElement>) => void;\n onTouchEnd?: () => void;\n\n percentageDragged?: number;\n}\n\nexport const SlidingListContainer = React.forwardRef((\n props: SlidingListContainerProps,\n ref: React.MutableRefObject<HTMLDivElement>\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 <div\n className='d-flex flex-nowrap position-relative w-100'\n style={getPositionStyling(position, positionType, percentageDragged)}\n ref={ref}\n {...getEventListeners()}\n >\n {children}\n </div>\n );\n});","export enum CssMeasurement {\n Percentage = '%',\n Pixels = 'px'\n}","export enum TagType {\n Normal = 'normal',\n Pedagogy = 'pedagogy',\n Hidden = 'hidden',\n Skill = 'skill',\n Curation = 'curation'\n}\n\n/**\n * This should **only** be used to create new tags in master (as it only accepts enum values).\n * Use the string enum above for all other cases.\n */\nexport enum TagTypeNumber {\n Normal = 0,\n Pedagogy = 1,\n Hidden = 2,\n Skill = 3,\n Curation = 4\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 { 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}\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};\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.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}","// extracted by mini-css-extract-plugin\nexport default {\"partialFilterHeading\":\"O8f8H\",\"partialButton\":\"ThKam\",\"filtersContainer\":\"JIp3h\"};","// extracted by mini-css-extract-plugin\nexport default {\"tagList\":\"Zw6d9\",\"disabled\":\"jlL1c\",\"partialTag\":\"too_N\",\"badge\":\"OjtN8\",\"close\":\"X9joI\"};"],"names":["namespace","FilterActions","props","className","active","DivButton","onClick","onClickReset","Text","phrase","onClickApply","defaultProps","FilterButton","state","currentFilterState","filter","id","isDropdownFilter","type","name","label","setLabel","showDropdown","setShowDropdown","draftState","setDraftState","onSelectItem","applyFilter","newState","FilterHelper","appLink","selection","FilterComponent","customComponent","caretClass","hideCaret","customWidthClass","Dropdown","onToggle","isShowing","show","variant","disabled","icon","SvgContainer","svgName","labelPrefix","defaultOption","options","find","o","StateHelper","getSetStateByKey","setState","key","callback","data","fn","FunctionHelper","getTotalActiveFilters","currentState","Object","keys","reduce","acc","MoreFiltersButton","moreFilters","totalActiveFilters","setTotalActiveFilters","currentFilterStateKey","map","join","filters","baseClass","e","stopPropagation","isOnMoreFilters","filterId","f","PartialTagItem","tagClass","classNames","TagWidgetItem","colorClass","selectedItems","TagItem","tag","TagFilter","selections","unappliedOptions","opt","onClickOption","option","nextFilterState","indexOfItem","i","toString","newItems","slice","length","concat","collection","isFetching","DynamicWidget","childComponent","staticChildren","Array","fill","component","position","partialLoadingComponent","ResetButton","params","currentQueryParam","query","SearchFilters","queryParams","hideHeading","isFetchingOptions","constantIndices","mainFilters","dispatch","ObjectHelper","payload","analyticsOptions","indices","ArrayHelper","mainFiltersWithoutTags","tagFilter","value","hideDivider","hideResetButton","toLowerCase","tagType","getTagTypeClass","hasThemeColour","themeColours","secondary","onRemove","style","backgroundColor","title","role","getPhrase","LanguageService","SeeMore","AppLink","analyticsData","descriptor","WidgetHeader","hasDescription","description","showSeeMoreLink","blankImage","Image","src","DragHelper","event","dataTransfer","setDragImage","isTouchScreen","UserAgentHelper","SlidingListContainer","ref","listenerProps","xPosition","measurement","dragPercentage","children","positionType","onDrag","onDragEnd","onTouchMove","onTouchEnd","percentageDragged","CssMeasurement","C","transform","transition","draggable","onDragStart","onDragOver","onTouchMoveCapture","onTouchEndCapture","TagType","TagTypeNumber","WidgetInteraction","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap"],"sourceRoot":""}
|