@clickview/lite 0.70.0-rc.0 → 0.70.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/scripts/3022-b6fa0f0ed3-lite.chunk.js +2 -0
- package/dist/scripts/3022-b6fa0f0ed3-lite.chunk.js.map +1 -0
- package/dist/scripts/{3468-943f8a9859-lite.chunk.js → 3468-ecc5f20dd2-lite.chunk.js} +2 -2
- package/dist/scripts/3468-ecc5f20dd2-lite.chunk.js.map +1 -0
- package/dist/scripts/3978-ac2acbd10d-lite.chunk.js +2 -0
- package/dist/scripts/3978-ac2acbd10d-lite.chunk.js.map +1 -0
- package/dist/scripts/872-928631c37b-lite.chunk.js +2 -0
- package/dist/scripts/872-928631c37b-lite.chunk.js.map +1 -0
- package/dist/scripts/{9630-400b514621-lite.chunk.js → 9630-cf529251e5-lite.chunk.js} +2 -2
- package/dist/scripts/9630-cf529251e5-lite.chunk.js.map +1 -0
- package/dist/scripts/9668-c29f432441-lite.chunk.js +2 -0
- package/dist/scripts/9668-c29f432441-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-764d01afb0.min.js → bundle-6df33485fe.min.js} +3 -3
- package/dist/scripts/{bundle-764d01afb0.min.js.map → bundle-6df33485fe.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/3022-0e5eccfa16-lite.chunk.js +0 -2
- package/dist/scripts/3022-0e5eccfa16-lite.chunk.js.map +0 -1
- package/dist/scripts/3468-943f8a9859-lite.chunk.js.map +0 -1
- package/dist/scripts/3978-af7373e58a-lite.chunk.js +0 -2
- package/dist/scripts/3978-af7373e58a-lite.chunk.js.map +0 -1
- package/dist/scripts/872-e4b10eb46e-lite.chunk.js +0 -2
- package/dist/scripts/872-e4b10eb46e-lite.chunk.js.map +0 -1
- package/dist/scripts/9630-400b514621-lite.chunk.js.map +0 -1
- package/dist/scripts/9668-62bf39012b-lite.chunk.js +0 -2
- package/dist/scripts/9668-62bf39012b-lite.chunk.js.map +0 -1
- /package/dist/scripts/{bundle-764d01afb0.min.js.LICENSE.txt → bundle-6df33485fe.min.js.LICENSE.txt} +0 -0
package/dist/bundles.json
CHANGED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3022],{94644:(e,r,t)=>{t.d(r,{r:()=>u});var n=t(50242),i=t(81886),o=t(67058),a=t(14553),c=t(49267),s=t(49075),l={notFound:o.d,forbidden:{rating:a.q,yearLevel:a.q,region:c.a,privacy:a.q},badRequest:s._,internalServerError:s._};function u(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var a=Object.assign(Object.assign({},l),r);o&&i.Q.Ry.isStatusCodeError(o)&&(o!==n.o.InternalServer?o!==n.o.NotFound?o!==n.o.Forbidden?t.badRequest||i.Q.Ry.throw(new a.badRequest):t.forbidden||i.Q.Ry.throw(new a.forbidden.privacy):t.notFound||i.Q.Ry.throw(new a.notFound):t.internalServerError||i.Q.Ry.throw(new s._))}}},60115:(e,r,t)=>{t.d(r,{K:()=>l});var n=t(32735),i=t(50242),o=t(91967),a=400,c=t(45719);function s(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function l(e,r,t,l,u,d){var p,m,v,g,f=(p=(0,n.useState)(0),m=2,function(e){if(Array.isArray(e))return e}(p)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,i,o,a,c=[],s=!0,l=!1;try{if(o=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;s=!1}else for(;!(s=(n=o.call(t)).done)&&(c.push(n.value),c.length!==r);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(l)throw i}}return c}}(p,m)||function(e,r){if(e){if("string"==typeof e)return s(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?s(e,r):void 0}}(p,m)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),y=f[0],h=f[1],C=r,b=(0,c.P)((function(r){if(!e)return null;var t=e(r);return t?t.key:null}),l,u);return v={fetchNextPage:function(){if(r&&e&&b)return h((function(e){return e+1})),C(b.nextCursor)},hasMore:!!(null==b?void 0:b.nextCursor),isFetching:null==b?void 0:b.isFetching,scrollContainer:d},g=function(){if(!v.isFetching){if(v.scrollContainer){var e=v.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-a)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-a)return;v.fetchNextPage()}},(0,n.useEffect)((function(){var e=o.q.throttle(g,200),r=v.scrollContainer||window;return v.hasMore&&r.addEventListener("scroll",e),function(){return r.removeEventListener("scroll",e)}}),[v.hasMore,v.fetchNextPage,v.scrollContainer]),(0,n.useEffect)((function(){b&&b.shouldInitialFetch&&r&&(C(),h((function(e){return e+1})))}),[null==b?void 0:b.shouldInitialFetch,r]),(0,n.useEffect)((function(){var e,r;if((null==b?void 0:b.statusCode)&&o.q.isFunction(t)){var n=+(null===(r=null===(e=b.statusCode)||void 0===e?void 0:e.toString())||void 0===r?void 0:r.substr(0,1));n!==i.k.ClientError&&n!==i.k.ServerError||t(y,b.statusCode)}}),[null==b?void 0:b.statusCode]),{items:null==b?void 0:b.items,hasMore:!!(null==b?void 0:b.nextCursor),nextCursor:null==b?void 0:b.nextCursor,isFetching:null==b?void 0:b.isFetching,totalItems:null==b?void 0:b.totalItems,hasFirstPageCompleted:null==b?void 0:b.hasFirstPageCompleted}}},78267:(e,r,t)=>{t.d(r,{H:()=>a});var n=t(99940),i=t(97395),o=t(45157),a={resource:function(e){return{url:"{gateway}/v1/objects/".concat(e),key:"resources:".concat(e)}},videoResources:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/resources?query=customer"),key:"videos:".concat(e,":resources")}},videoResourcesAndLinks:function(e,r){var t="(resources[thumbnail,pdf]|links)";return{url:i._.urlBuilder("{gateway}/v1/objects/".concat(e,"/members"),{query:t,cursor:r}),publicUrl:i._.urlBuilder("/api/objects/".concat(e,"/members"),{query:t,cursor:r}),key:"videos:".concat(e,":resources:links").concat(r)}},addResource:function(e,r,t,i,a){return{url:"{gateway}/v1/objects/".concat(e,"/resources"),key:"create:resource:".concat(r.fileId||o.Y.getRandomInt()),data:r,type:n.k.POST,invalidationKeys:["videos:".concat(e,":resources"),"videos:".concat(e)],success:t,error:i,always:a}},updateResource:function(e,r,t,i,o){return{url:"{gateway}/v1/objects/".concat(e),key:"update:resource:".concat(e),data:r,type:n.k.PUT,success:t,error:i,always:o}},deleteResource:function(e,r,t,i,o){return{url:"{gateway}/v1/objects/".concat(e),key:"delete:resource:".concat(e),type:n.k.DELETE,invalidationKeys:["videos:".concat(r,":resources"),"videos:".concat(r)],success:t,error:i,always:o}}}},35014:(e,r,t)=>{t.d(r,{I:()=>s});var n=t(16714),i=t(12754),o=t(22902),a=t(15311),c=t(11387);function s(){var e=(0,o.T)(),r=e.hasPermissions,t=e.hasLocalPermissions,s=(0,(0,a.r)().hasProduct)(i.x.Primary);return{canViewGlance:r(n.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:s&&r(n.C.ViewVideoInteractives),canViewClips:s&&r(n.C.ViewVideoClips),canViewCurriculumLinks:r(n.C.ViewCurriculums),canUseActions:t(n.E.UseVideoActions),canViewPublicLayout:!t(n.E.WatchVideos)&&c.C.hasRegionPrefix(),canViewResourceItems:t(n.E.ViewVideoResourceItems),canNavigate:s}}},43022:(e,r,t)=>{t.r(r),t.d(r,{VideoGuidanceResourcesView:()=>M});var n=t(32735),i=t(81886),o=t(23481),a=t(20354),c=t(28400),s=t(49985),l=t(65858),u=t(42648),d=t(87801),p=t(9111),m=t(13876),v=t(15611),g=t(62335),f=t(54610),y=t(4594),h=t(45778),C=t(54297),b=t(25352);function k(e){var r=(0,b.ZS)(e.resource,e.actionBehaviour);function t(){s.k.logUserAction(e.analyticsData,e.analyticsOptions)}return h.G.isType(e.resource,y.E.Link)?n.createElement("a",{href:e.resource.url,target:"_blank",onClick:t},e.children):r?"public"===e.actionBehaviour?n.createElement("div",{className:"cursor-pointer d-inline",onClick:function(){t(),i.Q.C$.trigger(e.appLink)}},e.children):n.createElement(v.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},e.children):n.createElement("div",null,e.children)}function E(e){var r,t,i={id:e.resource.id,name:e.resource.name,parentVideoId:e.parentVideo.id,parentVideoName:e.parentVideo.name,parentVideoType:e.parentVideo.type},o=Object.assign(Object.assign({},e.analyticsOptions),{actionType:l.Vw.Click,entity:h.G.isResource(e.resource)?l.py.Resource:l.py.Link});return n.createElement("div",{className:"row gx-0"},n.createElement("div",{className:"col-4"},n.createElement(k,{resource:e.resource,appLink:e.appLink,analyticsData:i,analyticsOptions:Object.assign(Object.assign({},o),{descriptor:l._S.Thumbnail}),actionBehaviour:e.actionBehaviour},n.createElement(b.$G,{data:e.resource,titlePosition:"none",imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.imageErrorFallbackUrl,preloadImage:e.preloadImage,hideTypeBadge:!0,dynamicRatioImageOptions:{width:400,resizeType:f.Nq.Cover},theme:{thumbnailContainerClass:"w-100",containerClass:"px-3"}}))),n.createElement("div",{className:"col-8 ps-2"},n.createElement(k,{resource:e.resource,appLink:e.appLink,analyticsData:i,analyticsOptions:Object.assign(Object.assign({},o),{descriptor:l._S.Title}),actionBehaviour:e.actionBehaviour},h.G.isType(e.resource,y.E.Resource)&&!!(null===(t=null===(r=e.resource)||void 0===r?void 0:r.metadata)||void 0===t?void 0:t.resourceType)&&n.createElement(g.m,null,C.C.getResourceTypeName(e.resource.metadata.resourceType)),n.createElement("h3",{className:"h6 clamp-2"},e.resource.name))))}function w(e){return function(e){if(Array.isArray(e))return V(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(e){if("string"==typeof e)return V(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?V(e,r):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 V(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var I="shared.videoGuidanceResourcesPopup",R=350;function L(e){var r,t,i,a,c=[].concat(w((null===(t=null===(r=e.video)||void 0===r?void 0:r.resources)||void 0===t?void 0:t.data)||[]),w((null===(a=null===(i=e.video)||void 0===i?void 0:i.links)||void 0===a?void 0:a.data)||[])),s=e.isLoading?[]:e.resources||c;return n.createElement(p.G,{closePopup:e.onClickClose,showLoadingSpinner:e.isLoading,title:e.isLoading?"":o.T.getPhrase(I,"resources"),size:"lg"},!e.isLoading&&n.createElement(n.Fragment,null,n.createElement(u.ZP,{autoHeightMax:R,autoHeightMin:R,autoHeight:!0},n.createElement("ul",{className:"list-unstyled"},s.map((function(r){var t;return n.createElement("li",{key:r.id,className:"mb-3"},n.createElement(E,{resource:r,parentVideo:e.video,imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.resourceImageErrorFallbackUrl,preloadImage:!0,appLink:null===(t=e.getResourceAppLink)||void 0===t?void 0:t.call(e,r.id),actionBehaviour:e.actionBehaviour,analyticsOptions:{location:l.LZ.ResourcesGuidancePopup}}))}))),(e.hasMore||e.isFetching)&&n.createElement(d._,{isFetching:e.isFetching,fetchNext:e.fetchNext,nextCursor:e.nextCursor})),n.createElement(m.u,null,n.createElement(m.u.Cancel,{onClick:e.onClickClose,text:o.T.getPhrase(I,"close")}),n.createElement(m.u.Submit,{text:o.T.getPhrase(I,"viewVideo"),variant:"dark",onClick:e.onClickViewVideo}))))}var P=t(94644),F=t(43012),S=t(39151),O=t(1575),T=t(69883),A=t(60115),U=t(31908),x=t(99742),j=t(14070),N=t(97291),_=t(78267),B=t(35014),G="shared.videoGuidanceResources";function M(e){var r,t=a.a.useBasicFetch(e.type===y.E.Video?O.R.video(e.id):F.e.clip(e.id)),u=a.a.useBasicFetch(S.L.config()),d=(0,B.I)(),p=a.a.useGetFetch(),m=(0,T.Z)();function v(r){return _.H.videoResourcesAndLinks(e.id,r)}function g(e){return p(v(e))}var f=(0,A.K)(v,g,(function(e,r){if(1===e)return(0,P.r)(r);m.error(o.T.getPhrase(G,"error"))})),h=f.items,C=f.hasMore,b=f.isFetching,k=f.nextCursor;return n.createElement(L,{isLoading:!t.hasCompleted||!u.hasCompleted,video:t.data,resources:h,hasMore:C,isFetching:b,nextCursor:k,fetchNext:g,imageCdnUrl:null===(r=u.data)||void 0===r?void 0:r.imageCdnUrl,resourceImageErrorFallbackUrl:x.W.Fallbacks.RESOURCE_THUMBNAIL,getResourceAppLink:function(e){return d.canViewResourceItems?{application:N.O.VIDEOS,action:j.e.Videos.PREVIEW_PDF,args:[e],params:{videoId:t.data.id,showBackButton:!0}}:{application:N.O.SIGN_UP,action:j.e.SignUp.SIGN_UP}},actionBehaviour:d.canViewResourceItems?"normal":"public",onClickClose:function(){s.k.logUserAction({id:t.data.id,name:t.data.name},{entity:U.M.isVideo(t.data)?l.py.Video:l.py.Clip,location:l.LZ.CurriculumGuidancePopup,actionType:l.Vw.Click,descriptor:l.od.Close}),e.closePopup()},onClickViewVideo:function(){if(s.k.logUserAction({id:t.data.id,name:t.data.name},{entity:U.M.isVideo(t.data)?l.py.Video:l.py.Clip,location:l.LZ.CurriculumGuidancePopup,actionType:l.Vw.Click,descriptor:l.od.ViewVideo}),U.M.isVideo(t.data))return i.Q.C$.trigger({application:N.O.VIDEOS,action:j.e.Videos.PLAY_VIDEO,args:[t.data.id,c.m.slugify(t.data.name)]}),void e.closePopup();i.Q.C$.trigger({application:N.O.CLIPS,action:j.e.Clips.PLAY_CLIP,args:[t.data.id,c.m.slugify(t.data.name)]}),e.closePopup()}})}}}]);
|
|
2
|
+
//# sourceMappingURL=3022-b6fa0f0ed3-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/3022-b6fa0f0ed3-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/projects/lite/src/shared/flight-requests/ResourceRequests.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoFeatureAccess.ts","file:///app/packages/libs/shared/src/components/resource-list-item/ResourceListItem.tsx","file:///app/packages/libs/shared/src/components/video-guidance/resources/popup/VideoGuidanceResourcesPopup.tsx","file:///app/packages/projects/lite/src/shared/views/video-guidance-resources/VideoGuidanceResourcesView.tsx"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { UpdateResourceRequest } from 'libs/shared/interfaces';\n\nexport const ResourceRequests = {\n resource(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `resources:${id}`\n };\n },\n\n videoResources(videoId: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources?query=customer`,\n key: `videos:${videoId}:resources`\n };\n },\n\n videoResourcesAndLinks(videoId: string, cursor?: string): Flight.PublicRequest {\n const query = `(resources[thumbnail,pdf]|links)`;\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}/members`, { query, cursor }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${videoId}/members`, { query, cursor }),\n key: `videos:${videoId}:resources:links${cursor}`\n };\n },\n\n addResource(\n videoId: string,\n resource: any,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources`,\n key: `create:resource:${resource.fileId || RandomHelper.getRandomInt()}`,\n data: resource,\n type: HttpVerbs.POST,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n },\n\n updateResource(\n id: string,\n data: UpdateResourceRequest,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `update:resource:${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deleteResource(\n id: string,\n videoId: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `delete:resource:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n }\n};","import { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\n\nimport { LiteRouteHelper } from 'shared/utils/LiteRouteHelper';\n\nexport interface VideoFeaturesHash {\n canViewGlance: boolean;\n canViewResources: boolean;\n canViewInteractives: boolean;\n canViewClips: boolean;\n canUseActions: boolean;\n canViewPublicLayout: boolean;\n canNavigate: boolean;\n canViewCurriculumLinks: boolean;\n canViewResourceItems: boolean;\n}\n\nexport function useVideoFeatureAccess() {\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n\n const hasNP = hasProduct(ProductId.Primary);\n\n function showPublicLayout(): boolean {\n /**\n * Authenticated users should never see the placeholder\n */\n if (hasLocalPermissions(LocalPermissionName.WatchVideos))\n return false;\n\n /**\n * Accessing a play page unathenticated will have different contextual behabviours:\n * - For a share page, the user should see the video and never the placeholder\n * - For a public browsing page (ie. using a route-prefix) they should see the placeholder\n */\n return LiteRouteHelper.hasRegionPrefix();\n }\n\n return {\n canViewGlance: hasPermissions(PermissionName.ViewVideoGlance),\n canViewResources: true,\n canViewInteractives: hasNP && hasPermissions(PermissionName.ViewVideoInteractives),\n canViewClips: hasNP && hasPermissions(PermissionName.ViewVideoClips),\n canViewCurriculumLinks: hasPermissions(PermissionName.ViewCurriculums),\n canUseActions: hasLocalPermissions(LocalPermissionName.UseVideoActions),\n canViewPublicLayout: showPublicLayout(),\n canViewResourceItems: hasLocalPermissions(LocalPermissionName.ViewVideoResourceItems),\n canNavigate: hasNP\n };\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, ClickDescriptor, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { ResizeType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Clip, Link, Resource, Video } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { ResourceHelper } from 'libs/shared/utils/ResourceHelper';\n\nimport { ResourceTileV2, useCanPreviewResource } from '../play-page/resources-widget/ResourceWidgetItemV2';\n\ninterface ResourceWrapperProps{\n resource: Resource | Link;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n actionBehaviour: 'normal' | 'public';\n}\n\nfunction ResourceWrapper(props: React.PropsWithChildren<ResourceWrapperProps>): JSX.Element {\n // Mobile is not allowed to preview\n const canPreview = useCanPreviewResource(props.resource, props.actionBehaviour);\n\n function logAction(): void {\n AnalyticsHelper.logUserAction(props.analyticsData, props.analyticsOptions);\n }\n\n // Handle resource links\n if (MasterTypeHelper.isType<Link>(props.resource, MasterType.Link)) {\n return (\n <a href={props.resource.url} target='_blank' onClick={logAction}>\n {props.children}\n </a>\n );\n }\n\n if (canPreview) {\n /**\n * Previewing resources in a public context will always display the sign-up popup, so there \n * will never be a full URL. For SEO purposes, we deliberately use a div over an anchor\n * to ensure we're not creating self-referencing elements that will burn crawl budget.\n */\n if (props.actionBehaviour === 'public') {\n return (\n <div\n className={`cursor-pointer d-inline`}\n onClick={() => {\n logAction();\n Core.AppLinkHelper.trigger(props.appLink);\n }}\n >\n {props.children}\n </div>\n );\n }\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n >\n {props.children}\n </AppLink>\n );\n }\n\n return (\n <div>\n {props.children}\n </div>\n );\n}\n\ninterface ResourceListItemProps {\n resource: Resource | Link;\n parentVideo: Clip | Video;\n imageCdnUrl: string;\n imageErrorFallbackUrl: string;\n preloadImage: boolean;\n appLink: Core.AppLink;\n actionBehaviour: 'normal' | 'public';\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ResourceListItem(props: ResourceListItemProps): JSX.Element {\n const analyticsData = {\n id: props.resource.id,\n name: props.resource.name,\n parentVideoId: props.parentVideo.id,\n parentVideoName: props.parentVideo.name,\n parentVideoType: props.parentVideo.type\n };\n \n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: MasterTypeHelper.isResource(props.resource) ? EntityType.Resource : EntityType.Link\n };\n\n return (\n <div className='row gx-0'>\n <div className='col-4'>\n <ResourceWrapper\n resource={props.resource}\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...analyticsOptions,\n descriptor: ClickDescriptor.Thumbnail\n }}\n actionBehaviour={props.actionBehaviour}\n >\n <ResourceTileV2\n data={props.resource}\n titlePosition='none'\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.imageErrorFallbackUrl}\n preloadImage={props.preloadImage}\n hideTypeBadge\n dynamicRatioImageOptions={{\n width: 400,\n resizeType: ResizeType.Cover\n }}\n theme={{\n thumbnailContainerClass: 'w-100',\n containerClass: 'px-3'\n }}\n />\n </ResourceWrapper>\n </div>\n <div className='col-8 ps-2'>\n <ResourceWrapper\n resource={props.resource}\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...analyticsOptions,\n descriptor: ClickDescriptor.Title\n }}\n actionBehaviour={props.actionBehaviour}\n >\n {(\n MasterTypeHelper.isType<Resource>(props.resource, MasterType.Resource) &&\n !!props.resource?.metadata?.resourceType\n ) && (\n <TitleSubText>\n {ResourceHelper.getResourceTypeName(props.resource.metadata.resourceType)}\n </TitleSubText>\n )}\n\n <h3 className='h6 clamp-2'>\n {props.resource.name}\n </h3>\n </ResourceWrapper>\n </div>\n </div>\n );\n}","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { ResourceListItem } from 'libs/shared/components/resource-list-item/ResourceListItem';\nimport { Link, Resource, Video } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.videoGuidanceResourcesPopup';\n\nconst MIN_MAX_HEIGHT = 350;\n\ninterface VideoGuidanceResourcesPopupProps {\n isLoading: boolean;\n video: Video;\n resources?: (Link | Resource)[];\n hasMore: boolean;\n isFetching: boolean;\n fetchNext: (cursor?: string) => void;\n nextCursor?: string;\n onClickClose: () => void;\n onClickViewVideo: () => void;\n imageCdnUrl: string;\n resourceImageErrorFallbackUrl: string;\n getResourceAppLink?: (id: string) => Core.AppLink;\n actionBehaviour: 'normal' | 'public';\n}\n\nexport function VideoGuidanceResourcesPopup(props: VideoGuidanceResourcesPopupProps): JSX.Element {\n const videoResources = [ ...(props.video?.resources?.data || []), ...(props.video?.links?.data || []) ];\n const resources = props.isLoading\n ? []\n : props.resources || videoResources;\n\n return (\n <Popup\n closePopup={props.onClickClose}\n showLoadingSpinner={props.isLoading}\n title={props.isLoading\n ? ''\n : LanguageService.getPhrase(namespace, 'resources')\n }\n size='lg'\n >\n {!props.isLoading && (\n <>\n <Scrollbars autoHeightMax={MIN_MAX_HEIGHT} autoHeightMin={MIN_MAX_HEIGHT} autoHeight>\n <ul className='list-unstyled'>\n {resources.map(resource => {\n return (\n <li key={resource.id} className='mb-3'>\n <ResourceListItem\n resource={resource}\n parentVideo={props.video}\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.resourceImageErrorFallbackUrl}\n preloadImage\n appLink={props.getResourceAppLink?.(resource.id)}\n actionBehaviour={props.actionBehaviour}\n analyticsOptions={{\n location: LocationContext.ResourcesGuidancePopup\n }}\n />\n </li>\n );\n })}\n </ul>\n {(props.hasMore || props.isFetching) && (\n <InfiniteScrollFooter\n isFetching={props.isFetching}\n fetchNext={props.fetchNext}\n nextCursor={props.nextCursor}\n />\n )}\n </Scrollbars>\n\n <PopupButtons>\n <PopupButtons.Cancel\n onClick={props.onClickClose}\n text={LanguageService.getPhrase(namespace, 'close')}\n />\n <PopupButtons.Submit\n text={LanguageService.getPhrase(namespace, 'viewVideo')}\n variant='dark'\n onClick={props.onClickViewVideo}\n />\n </PopupButtons>\n </>\n )}\n </Popup>\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoGuidanceDescriptor } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceResourcesPopup } from 'libs/shared/components/video-guidance/resources/popup/VideoGuidanceResourcesPopup';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { Clip, Config, Link, PopupViewProps, Resource, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ResourceRequests } from 'shared/flight-requests/ResourceRequests';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\n\nconst namespace = 'shared.videoGuidanceResources';\n\ninterface VideoGuidanceResourcesViewProps extends PopupViewProps {\n id: string;\n type: MasterType;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoGuidanceResourcesView(props: VideoGuidanceResourcesViewProps): JSX.Element {\n function getRequest(): Flight.Request {\n return props.type === MasterType.Video\n ? VideoRequests.video(props.id)\n : ClipRequests.clip(props.id);\n }\n\n const video = Flight.useBasicFetch<Clip | Video>(getRequest());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const featureAccess = useVideoFeatureAccess();\n\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n\n function getResourcesRequest(cursor?: string) {\n return ResourceRequests.videoResourcesAndLinks(props.id, cursor);\n }\n\n function fetchNext(cursor?: string) {\n return fetch(getResourcesRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n }\n\n const { items, hasMore, isFetching, nextCursor } = useInfiniteList<Resource|Link>(\n getResourcesRequest,\n fetchNext,\n onError\n );\n\n function onClickClose(): void {\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name\n }, {\n entity: VideoHelper.isVideo(video.data)\n ? EntityType.Video\n : EntityType.Clip,\n location: LocationContext.CurriculumGuidancePopup,\n actionType: UserAction.Click,\n descriptor: VideoGuidanceDescriptor.Close\n });\n\n props.closePopup();\n }\n\n function onClickViewVideo(): void {\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name\n }, {\n entity: VideoHelper.isVideo(video.data)\n ? EntityType.Video\n : EntityType.Clip,\n location: LocationContext.CurriculumGuidancePopup,\n actionType: UserAction.Click,\n descriptor: VideoGuidanceDescriptor.ViewVideo\n });\n\n if (VideoHelper.isVideo(video.data)) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ video.data.id, TextHelper.slugify(video.data.name) ]\n });\n\n props.closePopup();\n\n return;\n }\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ video.data.id, TextHelper.slugify(video.data.name) ]\n });\n\n props.closePopup();\n }\n\n return (\n <VideoGuidanceResourcesPopup\n isLoading={!video.hasCompleted || !config.hasCompleted}\n video={video.data}\n resources={items}\n hasMore={hasMore}\n isFetching={isFetching}\n nextCursor={nextCursor}\n fetchNext={fetchNext}\n imageCdnUrl={config.data?.imageCdnUrl}\n resourceImageErrorFallbackUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n getResourceAppLink={id => {\n if (!featureAccess.canViewResourceItems) {\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: [id],\n params: { videoId: video.data.id, showBackButton: true }\n };\n }}\n actionBehaviour={featureAccess.canViewResourceItems ? 'normal' : 'public'}\n onClickClose={onClickClose}\n onClickViewVideo={onClickViewVideo}\n />\n );\n}"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","SCROLL_TOLERANCE","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","scrollContainer","options","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","key","fetchNextPage","currentVal","nextCursor","hasMore","isFetching","getBoundingClientRect","height","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","httpStatusClass","toString","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","ResourceRequests","resource","id","url","videoResources","videoId","videoResourcesAndLinks","query","publicUrl","addResource","success","error","always","fileId","data","type","invalidationKeys","updateResource","deleteResource","useVideoFeatureAccess","hasPermissions","hasLocalPermissions","hasNP","hasProduct","canViewGlance","canViewResources","canViewInteractives","canViewClips","canViewCurriculumLinks","canUseActions","canViewPublicLayout","canViewResourceItems","canNavigate","ResourceWrapper","props","canPreview","actionBehaviour","logAction","AnalyticsHelper","analyticsData","analyticsOptions","MasterTypeHelper","MasterType","href","target","onClick","children","className","appLink","AppLink","ResourceListItem","name","parentVideoId","parentVideo","parentVideoName","parentVideoType","actionType","entity","descriptor","titlePosition","imageCdnUrl","imageErrorFallbackUrl","preloadImage","hideTypeBadge","dynamicRatioImageOptions","width","resizeType","theme","thumbnailContainerClass","containerClass","metadata","resourceType","TitleSubText","ResourceHelper","namespace","MIN_MAX_HEIGHT","VideoGuidanceResourcesPopup","video","resources","links","isLoading","Popup","closePopup","onClickClose","showLoadingSpinner","title","LanguageService","size","autoHeightMax","autoHeightMin","autoHeight","map","resourceImageErrorFallbackUrl","getResourceAppLink","location","InfiniteScrollFooter","PopupButtons","text","variant","onClickViewVideo","VideoGuidanceResourcesView","VideoRequests","ClipRequests","config","ConfigRequests","featureAccess","fetch","alerts","getResourcesRequest","pageNumber","httpStatus","hasCompleted","ImageUrls","application","action","args","params","showBackButton","VideoHelper","TextHelper"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3468],{23201:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(32735),a=n(92802),o=n(2102),c=n(83345),l=n(33936),i="shared.formButtons";function s(e){var t=(0,a.u6)(),n=(0,l.l)(t);return r.createElement(o.m,{variant:e.variant||"primary",type:"submit",disabled:!n,size:e.size,className:e.className?e.className:"",showSpinner:t.isSubmitting},e.submitText?r.createElement(r.Fragment,null,e.submitText):r.createElement(c.x,{namespace:i,phrase:e.isNew?"create":"save"}))}},29057:(e,t,n)=>{n.d(t,{n:()=>E,W:()=>O});var r=n(32735),a=n(80247),o=n(80130),c=n(92802),l=n(91967),i=n(1048),s=n(15611),u=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function m(e){var t=e.label,n=e.checkboxLabelClassName,a=e.checkboxLabelFontWeight,c=e.className,l=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return r.createElement(o.Z.Group,{className:"form-group"},r.createElement("div",{className:"form-check ".concat(c||"")},r.createElement(E,Object.assign({className:"form-check-input"},l)),r.createElement(o.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===a?"fw-normal":""," \n ").concat(n),htmlFor:l.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&r.createElement(r.Fragment,null,r.createElement("span",null," "),r.createElement(s.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var d=n(83914),f=n(83345),p=n(73814),b=n(35223);function v(e){var t=(0,c.u6)().values,n=i.t.get(t,e.fieldName);return"string"!=typeof n?r.createElement(r.Fragment,null):r.createElement("div",{className:"float-end text-secondary fw-normal"},n.length,"/",e.limit," characters")}const y={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var g=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},w="shared.formField";function E(e){var t,n,o=e.children,s=e.showLoadingSpinner,u=g(e,["children","showLoadingSpinner"]),m=(t=r.useState(e.type),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,o,c,l=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return h(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}(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.")}()),f=m[0],p=m[1],v=l.q.isFunction(o)?function(e){return o(e)}:r.Children.count(o)?o:null;if("password"!==u.type)return s?r.createElement("div",{className:"position-relative"},r.createElement(c.gN,Object.assign({},i.t.omit(u,["formSize"])),v),r.createElement("div",{className:y.spinner},r.createElement(a.Z,{animation:"border",size:"sm"}))):r.createElement(c.gN,Object.assign({},i.t.omit(u,["formSize"])),v);var w="position-relative ".concat(y.passwordContainer);return u.className&&(w+=" ".concat(u.className)),u.disabled&&(w+=" ".concat(y.passwordContainerDisabled)),r.createElement("div",{className:w},r.createElement(c.gN,Object.assign({},i.t.omit(u,["formSize","type","className"]),{type:f,className:"".concat(y.passwordInput," border-0 w-100 h-100 outline-none rounded")}),v),"password"===u.type&&r.createElement(d.x,{svgName:"password"===f?b.vn.VisibleOn:b.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(y.revealPassword),onClick:function(){p("password"===f?"text":"password")}}))}function O(e){var t=e.label,n=e.className,a=e.showCharacterCounter,l=e.showRequiredStar,s=e.infoTooltip,u=e.infoTooltipPlacement,h=e.infoText,O=e.formSize,k=e.showOptionalLabel,N=g(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel"]),C=(0,c.u6)(),S=C.errors,x=C.touched,j=function(){};if("checkbox"===N.type){var P=i.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(P.onChange=j),r.createElement(m,Object.assign({},P))}var I=Object.assign(Object.assign({},N),{className:p.w.getCustomFormControlClassName(S,x,N.name,O,n,"string"==typeof e.as?e.as:null)});return e.disabled&&(I.onChange=j),r.createElement(o.Z.Group,{className:"form-group"},!!t&&r.createElement(o.Z.Label,{htmlFor:N.id,className:"d-flex align-items-center"},t,l&&r.createElement("span",{className:"text-danger"},"*"),s&&r.createElement(d.x,{className:"svg-container text-secondary ".concat(y.infoTooltip),svgName:b.vn.Info,title:s,tooltipPlacement:u,tooltipSpanHack:!0}),k&&r.createElement("span",{className:"text-secondary"}," ",r.createElement(f.x,{namespace:w,phrase:"optional"})),!!a&&!!N.maxLength&&r.createElement("div",{className:"ms-auto"},r.createElement(v,{fieldName:N.name,limit:N.maxLength}))),r.createElement(E,Object.assign({},I,{"aria-errormessage":"".concat(N.name,"Error")})),!!h&&r.createElement(o.Z.Text,{className:"text-secondary"},h),r.createElement(c.Bc,{name:N.name},(function(e){return r.createElement(o.Z.Control.Feedback,{id:"".concat(N.name,"Error"),type:"invalid",role:"status"},e)})))}E.defaultProps={autoComplete:"off"},O.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,n)=>{n.d(t,{b:()=>u,n:()=>s});var r=n(32735),a=n(92802),o=n(91967),c=n(1048);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var i=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function s(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,s=e.initialValues,u=e.onSubmit,m=i(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=c.t.deepClone(e);return function e(n){Object.keys(t).forEach((function(r){t.hasOwnProperty(r)&&(c.t.isObject(n[r])?e(n[r]):null===t[r]&&delete t[r])}))}(t),t}(s)):s,f={allowInitialSubmit:e.allowInitialSubmit};return r.createElement(a.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,r){var a=r.setSubmitting,o=r.resetForm,c=r.setFieldError,i=n&&e.validationSchema?e.validationSchema.cast(t):t;u(i,(function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(n.reset&&o(),n.errors)for(var r=0,i=Object.entries(n.errors);r<i.length;r++){var s=(e=i[r],t=2,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,o,c,l=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(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.")}()),u=s[0],m=s[1];c(u,m)}a(!1)}))},initialStatus:f}),o.q.isFunction(e.children)?function(t){return e.children(t)}:r.Children.count(e.children)?e.children:null)}function u(){return(0,a.u6)()}s.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},73814:(e,t,n)=>{n.d(t,{w:()=>a});var r=n(92802),a={getCustomFormControlClassName:function(e,t,n,a,o,c){var l="";return l=function(e,t){var n="";return n="select"===e?"form-select":"form-control","sm"===t&&(n+=" ".concat(n,"-sm")),"lg"===t&&(n+=" ".concat(n,"-lg")),n}(c,a),(0,r.u9)(t,n)&&(0,r.u9)(e,n)&&(l+=" is-invalid"),o&&(l+=" ".concat(o)),l}}},78267:(e,t,n)=>{n.d(t,{H:()=>c});var r=n(99940),a=n(97395),o=n(45157),c={resource:function(e){return{url:"{gateway}/v1/objects/".concat(e),key:"resources:".concat(e)}},videoResources:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/resources?query=customer"),key:"videos:".concat(e,":resources")}},videoResourcesAndLinks:function(e,t){return{url:a._.urlBuilder("{gateway}/v1/objects/".concat(e,"/members"),{query:"(resources[thumbnail,pdf]|links)",cursor:t}),key:"videos:".concat(e,":resources:links").concat(t)}},addResource:function(e,t,n,a,c){return{url:"{gateway}/v1/objects/".concat(e,"/resources"),key:"create:resource:".concat(t.fileId||o.Y.getRandomInt()),data:t,type:r.k.POST,invalidationKeys:["videos:".concat(e,":resources"),"videos:".concat(e)],success:n,error:a,always:c}},updateResource:function(e,t,n,a,o){return{url:"{gateway}/v1/objects/".concat(e),key:"update:resource:".concat(e),data:t,type:r.k.PUT,success:n,error:a,always:o}},deleteResource:function(e,t,n,a,o){return{url:"{gateway}/v1/objects/".concat(e),key:"delete:resource:".concat(e),type:r.k.DELETE,invalidationKeys:["videos:".concat(t,":resources"),"videos:".concat(t)],success:n,error:a,always:o}}}},53468:(e,t,n)=>{n.r(t),n.d(t,{EditResourceView:()=>C});var r=n(32735),a=n(70680),o=n(23481),c=n(20354),l=n(49985),i=n(65858),s=n(98269),u=n(92802),m=n(5173),d=n(23201),f=n(29057),p=n(82644),b=n(83345),v="shared.editResource",y=o.T.encloseNamespace(v),h=m.Ry().shape({name:m.Z_().trim().max(255,(function(){return y("nameTooLong")})).required((function(){return y("nameRequired")})).default("")}).noUnknown();function g(e){var t=(0,u.u6)();return r.createElement(u.l0,null,r.createElement(f.W,{label:y("name"),name:"name",id:"name",value:t.values.name,placeholder:y("namePlaceholder"),autoFocus:!0}),r.createElement("div",{className:e.buttonContainerClassName||""},r.createElement(s.Z,{variant:"link",className:"me-2",onClick:e.onClickCancel},r.createElement(b.x,{namespace:v,phrase:"cancel"})),r.createElement(d.A,{isNew:!1,variant:e.submitBtnVariant})))}function w(e){return r.createElement(p.n,{initialValues:e.resource,validationSchema:h,onSubmit:e.saveResource},r.createElement(g,{onClickCancel:e.onClickCancel,buttonContainerClassName:e.buttonContainerClassName,submitBtnVariant:e.submitBtnVariant}))}w.defaultProps={submitBtnVariant:"primary"};var E=n(9111),O=n(69883),k=n(78267),N=o.T.encloseNamespace("shared.editResourceView");function C(e){var t=(0,a.I0)(),n=(0,O.Z)(),o=c.a.useBasicFetch(k.H.resource(e.resourceId));return r.createElement(E.G,{title:N("heading"),closePopup:e.closePopup,showLoadingSpinner:!o.data},!!o.data&&r.createElement(w,{resource:o.data,saveResource:function(r){c.a.fetch(t,k.H.updateResource(e.resourceId,r,(function(){n.success(N("success")),l.k.logUserAction({id:e.resourceId,parentId:e.videoId,name:r.name},{location:i.LZ.Popup,actionType:i.Vw.Edit,entity:i.py.Resource,workflowPhase:i.eu.Complete})}),(function(){return n.error(N("error"))}),e.closePopup))},onClickCancel:e.closePopup,buttonContainerClassName:"d-flex justify-content-end border-top pt-3 px-3 mx-n3",submitBtnVariant:"dark"}))}}}]);
|
|
2
|
-
//# sourceMappingURL=3468-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3468],{23201:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(32735),a=n(92802),o=n(2102),c=n(83345),l=n(33936),i="shared.formButtons";function s(e){var t=(0,a.u6)(),n=(0,l.l)(t);return r.createElement(o.m,{variant:e.variant||"primary",type:"submit",disabled:!n,size:e.size,className:e.className?e.className:"",showSpinner:t.isSubmitting},e.submitText?r.createElement(r.Fragment,null,e.submitText):r.createElement(c.x,{namespace:i,phrase:e.isNew?"create":"save"}))}},29057:(e,t,n)=>{n.d(t,{n:()=>E,W:()=>O});var r=n(32735),a=n(80247),o=n(80130),c=n(92802),l=n(91967),i=n(1048),s=n(15611),u=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function m(e){var t=e.label,n=e.checkboxLabelClassName,a=e.checkboxLabelFontWeight,c=e.className,l=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return r.createElement(o.Z.Group,{className:"form-group"},r.createElement("div",{className:"form-check ".concat(c||"")},r.createElement(E,Object.assign({className:"form-check-input"},l)),r.createElement(o.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===a?"fw-normal":""," \n ").concat(n),htmlFor:l.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&r.createElement(r.Fragment,null,r.createElement("span",null," "),r.createElement(s.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var d=n(83914),f=n(83345),p=n(73814),b=n(35223);function v(e){var t=(0,c.u6)().values,n=i.t.get(t,e.fieldName);return"string"!=typeof n?r.createElement(r.Fragment,null):r.createElement("div",{className:"float-end text-secondary fw-normal"},n.length,"/",e.limit," characters")}const y={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var g=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},w="shared.formField";function E(e){var t,n,o=e.children,s=e.showLoadingSpinner,u=g(e,["children","showLoadingSpinner"]),m=(t=r.useState(e.type),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,o,c,l=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return h(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}(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.")}()),f=m[0],p=m[1],v=l.q.isFunction(o)?function(e){return o(e)}:r.Children.count(o)?o:null;if("password"!==u.type)return s?r.createElement("div",{className:"position-relative"},r.createElement(c.gN,Object.assign({},i.t.omit(u,["formSize"])),v),r.createElement("div",{className:y.spinner},r.createElement(a.Z,{animation:"border",size:"sm"}))):r.createElement(c.gN,Object.assign({},i.t.omit(u,["formSize"])),v);var w="position-relative ".concat(y.passwordContainer);return u.className&&(w+=" ".concat(u.className)),u.disabled&&(w+=" ".concat(y.passwordContainerDisabled)),r.createElement("div",{className:w},r.createElement(c.gN,Object.assign({},i.t.omit(u,["formSize","type","className"]),{type:f,className:"".concat(y.passwordInput," border-0 w-100 h-100 outline-none rounded")}),v),"password"===u.type&&r.createElement(d.x,{svgName:"password"===f?b.vn.VisibleOn:b.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(y.revealPassword),onClick:function(){p("password"===f?"text":"password")}}))}function O(e){var t=e.label,n=e.className,a=e.showCharacterCounter,l=e.showRequiredStar,s=e.infoTooltip,u=e.infoTooltipPlacement,h=e.infoText,O=e.formSize,k=e.showOptionalLabel,N=g(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel"]),C=(0,c.u6)(),S=C.errors,x=C.touched,j=function(){};if("checkbox"===N.type){var P=i.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(P.onChange=j),r.createElement(m,Object.assign({},P))}var I=Object.assign(Object.assign({},N),{className:p.w.getCustomFormControlClassName(S,x,N.name,O,n,"string"==typeof e.as?e.as:null)});return e.disabled&&(I.onChange=j),r.createElement(o.Z.Group,{className:"form-group"},!!t&&r.createElement(o.Z.Label,{htmlFor:N.id,className:"d-flex align-items-center"},t,l&&r.createElement("span",{className:"text-danger"},"*"),s&&r.createElement(d.x,{className:"svg-container text-secondary ".concat(y.infoTooltip),svgName:b.vn.Info,title:s,tooltipPlacement:u,tooltipSpanHack:!0}),k&&r.createElement("span",{className:"text-secondary"}," ",r.createElement(f.x,{namespace:w,phrase:"optional"})),!!a&&!!N.maxLength&&r.createElement("div",{className:"ms-auto"},r.createElement(v,{fieldName:N.name,limit:N.maxLength}))),r.createElement(E,Object.assign({},I,{"aria-errormessage":"".concat(N.name,"Error")})),!!h&&r.createElement(o.Z.Text,{className:"text-secondary"},h),r.createElement(c.Bc,{name:N.name},(function(e){return r.createElement(o.Z.Control.Feedback,{id:"".concat(N.name,"Error"),type:"invalid",role:"status"},e)})))}E.defaultProps={autoComplete:"off"},O.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,n)=>{n.d(t,{b:()=>u,n:()=>s});var r=n(32735),a=n(92802),o=n(91967),c=n(1048);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var i=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function s(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,s=e.initialValues,u=e.onSubmit,m=i(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=c.t.deepClone(e);return function e(n){Object.keys(t).forEach((function(r){t.hasOwnProperty(r)&&(c.t.isObject(n[r])?e(n[r]):null===t[r]&&delete t[r])}))}(t),t}(s)):s,f={allowInitialSubmit:e.allowInitialSubmit};return r.createElement(a.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,r){var a=r.setSubmitting,o=r.resetForm,c=r.setFieldError,i=n&&e.validationSchema?e.validationSchema.cast(t):t;u(i,(function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(n.reset&&o(),n.errors)for(var r=0,i=Object.entries(n.errors);r<i.length;r++){var s=(e=i[r],t=2,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,o,c,l=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(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.")}()),u=s[0],m=s[1];c(u,m)}a(!1)}))},initialStatus:f}),o.q.isFunction(e.children)?function(t){return e.children(t)}:r.Children.count(e.children)?e.children:null)}function u(){return(0,a.u6)()}s.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},73814:(e,t,n)=>{n.d(t,{w:()=>a});var r=n(92802),a={getCustomFormControlClassName:function(e,t,n,a,o,c){var l="";return l=function(e,t){var n="";return n="select"===e?"form-select":"form-control","sm"===t&&(n+=" ".concat(n,"-sm")),"lg"===t&&(n+=" ".concat(n,"-lg")),n}(c,a),(0,r.u9)(t,n)&&(0,r.u9)(e,n)&&(l+=" is-invalid"),o&&(l+=" ".concat(o)),l}}},78267:(e,t,n)=>{n.d(t,{H:()=>c});var r=n(99940),a=n(97395),o=n(45157),c={resource:function(e){return{url:"{gateway}/v1/objects/".concat(e),key:"resources:".concat(e)}},videoResources:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/resources?query=customer"),key:"videos:".concat(e,":resources")}},videoResourcesAndLinks:function(e,t){var n="(resources[thumbnail,pdf]|links)";return{url:a._.urlBuilder("{gateway}/v1/objects/".concat(e,"/members"),{query:n,cursor:t}),publicUrl:a._.urlBuilder("/api/objects/".concat(e,"/members"),{query:n,cursor:t}),key:"videos:".concat(e,":resources:links").concat(t)}},addResource:function(e,t,n,a,c){return{url:"{gateway}/v1/objects/".concat(e,"/resources"),key:"create:resource:".concat(t.fileId||o.Y.getRandomInt()),data:t,type:r.k.POST,invalidationKeys:["videos:".concat(e,":resources"),"videos:".concat(e)],success:n,error:a,always:c}},updateResource:function(e,t,n,a,o){return{url:"{gateway}/v1/objects/".concat(e),key:"update:resource:".concat(e),data:t,type:r.k.PUT,success:n,error:a,always:o}},deleteResource:function(e,t,n,a,o){return{url:"{gateway}/v1/objects/".concat(e),key:"delete:resource:".concat(e),type:r.k.DELETE,invalidationKeys:["videos:".concat(t,":resources"),"videos:".concat(t)],success:n,error:a,always:o}}}},53468:(e,t,n)=>{n.r(t),n.d(t,{EditResourceView:()=>C});var r=n(32735),a=n(70680),o=n(23481),c=n(20354),l=n(49985),i=n(65858),s=n(98269),u=n(92802),m=n(5173),d=n(23201),f=n(29057),p=n(82644),b=n(83345),v="shared.editResource",y=o.T.encloseNamespace(v),h=m.Ry().shape({name:m.Z_().trim().max(255,(function(){return y("nameTooLong")})).required((function(){return y("nameRequired")})).default("")}).noUnknown();function g(e){var t=(0,u.u6)();return r.createElement(u.l0,null,r.createElement(f.W,{label:y("name"),name:"name",id:"name",value:t.values.name,placeholder:y("namePlaceholder"),autoFocus:!0}),r.createElement("div",{className:e.buttonContainerClassName||""},r.createElement(s.Z,{variant:"link",className:"me-2",onClick:e.onClickCancel},r.createElement(b.x,{namespace:v,phrase:"cancel"})),r.createElement(d.A,{isNew:!1,variant:e.submitBtnVariant})))}function w(e){return r.createElement(p.n,{initialValues:e.resource,validationSchema:h,onSubmit:e.saveResource},r.createElement(g,{onClickCancel:e.onClickCancel,buttonContainerClassName:e.buttonContainerClassName,submitBtnVariant:e.submitBtnVariant}))}w.defaultProps={submitBtnVariant:"primary"};var E=n(9111),O=n(69883),k=n(78267),N=o.T.encloseNamespace("shared.editResourceView");function C(e){var t=(0,a.I0)(),n=(0,O.Z)(),o=c.a.useBasicFetch(k.H.resource(e.resourceId));return r.createElement(E.G,{title:N("heading"),closePopup:e.closePopup,showLoadingSpinner:!o.data},!!o.data&&r.createElement(w,{resource:o.data,saveResource:function(r){c.a.fetch(t,k.H.updateResource(e.resourceId,r,(function(){n.success(N("success")),l.k.logUserAction({id:e.resourceId,parentId:e.videoId,name:r.name},{location:i.LZ.Popup,actionType:i.Vw.Edit,entity:i.py.Resource,workflowPhase:i.eu.Complete})}),(function(){return n.error(N("error"))}),e.closePopup))},onClickCancel:e.closePopup,buttonContainerClassName:"d-flex justify-content-end border-top pt-3 px-3 mx-n3",submitBtnVariant:"dark"}))}}}]);
|
|
2
|
+
//# sourceMappingURL=3468-ecc5f20dd2-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/3468-ecc5f20dd2-lite.chunk.js","mappings":"8LAWMA,EAAY,qBAUZ,SAAUC,EAAuCC,GACrD,IAAMC,GAAc,UAEdC,GAAY,OAAiBD,GAEnC,OACE,gBAAC,IAAa,CACZE,QAASH,EAAMG,SAAW,UAC1BC,KAAK,SACLC,UAAWH,EACXI,KAAMN,EAAMM,KACZC,UAAWP,EAAMO,UAAYP,EAAMO,UAAY,GAC/CC,YAAaP,EAAYQ,cAExBT,EAAMU,WACH,gCAAGV,EAAMU,YACT,gBAAC,IAAI,CAACZ,UAAWA,EAAWa,OAAQX,EAAMY,MAAQ,SAAW,SAGvE,C,ucC7BM,SAAUC,EAAab,GAC3B,IAAQc,EAAqFd,EAArFc,MAAOC,EAA8Ef,EAA9Ee,uBAAwBC,EAAsDhB,EAAtDgB,wBAAyBT,EAA6BP,EAA7BO,UAAcU,EAAU,EAAKjB,EAAvF,0EAEN,OACE,gBAACkB,EAAA,QAAU,CAACX,UAAU,cACpB,uBAAKA,UAAS,qBAAgBA,GAAa,KACzC,gBAACY,EAAY,eAACZ,UAAU,oBAAuBU,IAC/C,gBAACC,EAAA,QAAU,CACTX,UAAS,0CAAiE,WAA5BS,EAAuC,YAAc,GAAE,wBACnGD,GACFK,QAASH,EAAWI,IAEnBP,GAEFd,EAAMsB,iBAAmBtB,EAAMuB,qBAC9B,gCACE,iCACA,gBAACC,EAAA,EAAO,CAACC,QAASzB,EAAMsB,gBAAiBf,UAAU,aAChDP,EAAMuB,uBAOrB,C,gDCzBM,SAAUG,EAA4C1B,GAC1D,IAAQ2B,GAAW,UAAXA,OAEFC,EAAQC,EAAA,MAAiBF,EAAQ3B,EAAM8B,WAE7C,MAAqB,iBAAVF,EACF,iCAGP,uBAAKrB,UAAU,sCACZqB,EAAMG,OAAM,IAAG/B,EAAMgC,MAAK,cAGjC,CCvBA,SAAgB,eAAiB,QAAQ,cAAgB,QAAQ,kBAAoB,QAAQ,0BAA4B,QAAQ,YAAc,QAAQ,QAAU,S,sbCmB3JlC,EAAY,mBAiCZ,SAAUqB,EACdnB,GAEA,I,IAAQiC,EAAgDjC,EAAhDiC,SAAUC,EAAsClC,EAAtCkC,mBAAuBjB,EAAU,EAAKjB,EAAlD,mCAE8C,G,EAA1B,WAAeA,EAAMI,M,EAAK,E,o4BAA5CA,EAAI,KAAE+B,EAAO,KASfC,EAAmBC,EAAA,aAA0BJ,GAC/C,SAACK,GAAa,OAAKL,EAASK,EAAE,EAC9B,iBAAqBL,GAAYA,EAAW,KAEhD,GAAwB,aAApBhB,EAAWb,KACb,OAAI8B,EAEA,uBAAK3B,UAAU,qBACb,gBAAC,KAAK,iBAAMsB,EAAA,OAAkBZ,EAAY,CAAC,cACxCmB,GAGH,uBAAK7B,UAAW,WACd,gBAACgC,EAAA,EAAO,CAACC,UAAU,SAASlC,KAAK,SAOvC,gBAAC,KAAK,iBAAMuB,EAAA,OAAkBZ,EAAY,CAAC,cACxCmB,GAKP,IAAIK,EAAqB,qBAAH,OAAwB,qBAY9C,OAVIxB,EAAWV,YACbkC,GAAsB,IAAJ,OAAQxB,EAAWV,YAEnCU,EAAWZ,WACboC,GAAsB,IAAJ,OAAQ,8BAO1B,uBAAKlC,UAAWkC,GACd,gBAAC,KAAK,iBACCZ,EAAA,OAAkBZ,EAAY,CAAE,WAAY,OAAQ,cAAe,CACxEb,KAAMA,EACNG,UAAS,UAAK,gBAAoB,gDAEjC6B,GAEkB,aAApBnB,EAAWb,MACV,gBAACsC,EAAA,EAAY,CACXC,QAAkB,aAATvC,EAAsB,eAAyB,gBACxDG,UAAS,uCAAkC,kBAC3CqC,QA1DR,WAEIT,EADW,aAAT/B,EACM,OAEA,WACZ,IA0DF,CAOM,SAAUyC,EAAqC7C,GACnD,IACEc,EAUEd,EAVFc,MACAP,EASEP,EATFO,UACAuC,EAQE9C,EARF8C,qBACAC,EAOE/C,EAPF+C,iBACAC,EAMEhD,EANFgD,YACAC,EAKEjD,EALFiD,qBACAC,EAIElD,EAJFkD,SACAC,EAGEnD,EAHFmD,SACAC,EAEEpD,EAFFoD,kBACGnC,EAAU,EACXjB,EAXE,gJAaN,GAA4B,UAApBqD,EAAM,EAANA,OAAQC,EAAO,EAAPA,QAIVC,EAAmB,WAAO,EAEhC,GAAwB,aAApBtC,EAAWb,KAAqB,CAClC,IAAMoD,EAAS3B,EAAA,OAAkB7B,EAAO,CAAE,WAAY,yBAKtD,OAHIA,EAAMK,WACRmD,EAAOC,SAAWF,GAEb,gBAAC1C,EAAY,iBAAK2C,GAC1B,CAED,IAAME,EAAoB,OAAH,wBAClBzC,GAAU,CACbV,UAAWoD,EAAA,gCACTN,EACAC,EACArC,EAAW2C,KACXT,EACA5C,EACoB,iBAAbP,EAAM6D,GAAkB7D,EAAM6D,GAAK,QAO9C,OAHI7D,EAAMK,WACRqD,EAAkBD,SAAWF,GAG7B,gBAACrC,EAAA,QAAU,CAACX,UAAU,gBACjBO,GACD,gBAACI,EAAA,QAAU,CAACE,QAASH,EAAWI,GAAId,UAAU,6BAC3CO,EACAiC,GAAoB,wBAAMxC,UAAU,eAAa,KACjDyC,GACC,gBAACN,EAAA,EAAY,CACXnC,UAAS,uCAAkC,eAC3CoC,QAAS,UACTmB,MAAOd,EACPe,iBAAkBd,EAClBe,iBAAe,IAGlBZ,GAAqB,wBAAM7C,UAAU,kBAAgB,IAAO,gBAAC0D,EAAA,EAAI,CAACnE,UAAWA,EAAWa,OAAO,gBAE7FmC,KAA2B7B,EAAiDiD,WAC7E,uBAAK3D,UAAU,WACb,gBAACmB,EAAgB,CACfI,UAAYb,EAAW2C,KACvB5B,MAAQf,EAAiDiD,cAOnE,gBAAC/C,EAAY,iBAAKuC,EAAiB,+BAAwBzC,EAAW2C,KAAI,cAEvEV,GACD,gBAAChC,EAAA,OAAS,CAACX,UAAU,kBAClB2C,GAIL,gBAAC,KAAY,CAACU,KAAM3C,EAAW2C,OAC5B,SAACO,GAAoB,OAAK,gBAACjD,EAAA,mBAAqB,CAACG,GAAE,UAAKJ,EAAW2C,KAAI,SAASxD,KAAK,UAAUgE,KAAK,UAAUD,EAAqC,IAI5J,CAtKAhD,EAAakD,aAAe,CAC1BC,aAAc,OA2EhBzB,EAAUwB,aAAe,CACvBC,aAAc,MACdrB,qBAAsB,M,ghBCrElB,SAAUsB,EAIdvE,GACA,IAAQwE,EAAmFxE,EAAnFwE,kBAAmBC,EAAgEzE,EAAhEyE,mBAAoBC,EAA4C1E,EAA5C0E,cAAeC,EAA6B3E,EAA7B2E,SAAa1E,EAAW,EAAKD,EAArF,uEAMA4E,EAAqCJ,GAAqBxE,EAAM6E,iBAClE7E,EAAM6E,iBAAiBC,KA3D7B,SAA4DJ,GAC1D,IAAKA,EACH,MAAO,CAAC,EAEV,IAAM/C,EAAS,cAAuB+C,GAetC,OAbA,SAASK,EAAgBC,GACvBC,OAAOC,KAAKvD,GAAQwD,SAAQ,SAACC,GACtBzD,EAAO0D,eAAeD,KAGvB,aAAsBJ,EAAMI,IAC9BL,EAAgBC,EAAMI,IACC,OAAhBzD,EAAOyD,WACPzD,EAAOyD,GAClB,GACF,CAEAL,CAAgBpD,GACTA,CACT,CAuCkC2D,CAAsBZ,IAClDA,EA4BEa,EAA+B,CACnCC,mBAAoBxF,EAAMwF,oBAG5B,OACE,gBAAC,KAAM,eACLC,oBAAkB,GACbxF,EAA6D,CAClEyE,cAAeE,EACfD,SAnCoB,SACtBhD,EAAkB,GAEhB,IADA+D,EAAa,EAAbA,cAAeC,EAAS,EAATA,UAAWC,EAAa,EAAbA,cAOtBC,EAAgBpB,GAAsBzE,EAAM6E,iBAC9C7E,EAAM6E,iBAAiBC,KAAKnD,GAC5BA,EAEJgD,EAASkB,GAAe,WAAoD,I,IAAnDC,EAAA,uDAA6C,CAAC,EAGrE,GAFAA,EAAQC,OAASJ,IAEbG,EAAQzC,OACV,IAAK,IAAL,MAA6B4B,OAAOe,QAAQF,EAAQzC,QAAO,eAAE,CAAxD,O,EAAA,K,EAAA,E,o4BAAQ+B,EAAG,KAAEa,EAAK,KACrBL,EAAcR,EAAKa,EACpB,CAGHP,GAAc,EAChB,GACF,EAYIH,cAAeA,IAEd,eAA0BvF,EAAMiC,UAC7B,SAACK,GAA0B,OAAMtC,EAAMiC,SAA6DK,EAAE,EACtG,iBAAqBtC,EAAMiC,UAAYjC,EAAMiC,SAAW,KAIlE,CAEM,SAAUiE,IACd,OAAO,SACT,CApEA3B,EAAYF,aAAe,CACzBG,mBAAmB,EACnBC,oBAAoB,E,kDC/BTd,EAAa,CACxBwC,8BAA6B,SAC3B9C,EACAC,EACA8C,EACA9F,EACA+F,EACAjG,GAEA,IAAIG,EAAY,GAWhB,OATAA,EA/BJ,SAAqBH,EAAcE,GACjC,IAAIC,EAAY,GAgBhB,OAZIA,EADG,WADCH,EAEQ,cAGA,eAGH,OAATE,IACFC,GAAa,IAAJ,OAAQA,EAAS,QAEf,OAATD,IACFC,GAAa,IAAJ,OAAQA,EAAS,QAErBA,CACT,CAagB+F,CAAYlG,EAAME,IAG1B,QAAMgD,EAAS8C,KAAc,QAAM/C,EAAQ+C,KAC7C7F,GAAa,eAEX8F,IACF9F,GAAa,IAAJ,OAAQ8F,IAEZ9F,CACT,E,wECpCWgG,EAAmB,CAC9BC,SAAQ,SAACnF,GACP,MAAO,CACLoF,IAAK,wBAAF,OAA0BpF,GAC7B+D,IAAK,aAAF,OAAe/D,GAEtB,EAEAqF,eAAc,SAACC,GACb,MAAO,CACLF,IAAK,wBAAF,OAA0BE,EAAO,6BACpCvB,IAAK,UAAF,OAAYuB,EAAO,cAE1B,EAEAC,uBAAsB,SAACD,EAAiBE,GACtC,IAAMC,EAAQ,mCACd,MAAO,CACLL,IAAK,eAAqB,wBAAD,OAAyBE,EAAO,YAAY,CAAEG,MAAAA,EAAOD,OAAAA,IAC9EE,UAAW,eAAqB,gBAAD,OAAiBJ,EAAO,YAAY,CAAEG,MAAAA,EAAOD,OAAAA,IAC5EzB,IAAK,UAAF,OAAYuB,EAAO,2BAAmBE,GAE7C,EAEAG,YAAW,SACTL,EACAH,EACAS,EACAC,EACAC,GAEA,MAAO,CACLV,IAAK,wBAAF,OAA0BE,EAAO,cACpCvB,IAAK,mBAAF,OAAqBoB,EAASY,QAAU,oBAC3CC,KAAMb,EACNpG,KAAM,SACNkH,iBAAkB,CAAC,UAAD,OAAYX,EAAO,+BAAwBA,IAC7DM,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAI,eAAc,SACZlG,EACAgG,EACAJ,EACAC,EACAC,GAEA,MAAO,CACLV,IAAK,wBAAF,OAA0BpF,GAC7B+D,IAAK,mBAAF,OAAqB/D,GACxBgG,KAAAA,EACAjH,KAAM,QACN6G,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAK,eAAc,SACZnG,EACAsF,EACAM,EACAC,EACAC,GAEA,MAAO,CACLV,IAAK,wBAAF,OAA0BpF,GAC7B+D,IAAK,mBAAF,OAAqB/D,GACxBjB,KAAM,WACNkH,iBAAkB,CAAC,UAAD,OAAYX,EAAO,+BAAwBA,IAC7DM,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,E,2MCzEIrH,EAAY,sBACZ2H,EAAYC,EAAA,mBAAiC5H,GAE7C6H,EAA2B,OAAaC,MAA6B,CACzEhE,KAAM,OACHiE,OACAC,IAAI,KAAK,kBAAML,EAAU,cAAc,IACvCM,UAAS,kBAAMN,EAAU,eAAe,IAAC,QACjC,MACVO,YASG,SAAUC,EAAiBjI,GAC/B,IAAMC,GAAc,UAEpB,OACE,gBAAC,KAAI,KACH,gBAAC4C,EAAA,EAAS,CACR/B,MAAO2G,EAAU,QACjB7D,KAAK,OACLvC,GAAG,OACH4E,MAAOhG,EAAY0B,OAAOiC,KAC1BsE,YAAaT,EAAU,mBACvBU,WAAS,IAEX,uBAAK5H,UAAWP,EAAMoI,0BAA4B,IAChD,gBAACC,EAAA,EAAM,CAAClI,QAAQ,OAAOI,UAAU,OAAOqC,QAAS5C,EAAMsI,eACrD,gBAACrE,EAAA,EAAI,CAACnE,UAAWA,EAAWa,OAAO,YAErC,gBAACZ,EAAA,EAAW,CAACa,OAAO,EAAOT,QAASH,EAAMuI,oBAIlD,CAcM,SAAUC,EAAaxI,GAC3B,OACE,gBAACuE,EAAA,EAAW,CACVG,cAAe1E,EAAMwG,SACrB3B,iBAAkB8C,EAClBhD,SAAU3E,EAAMyI,cAEhB,gBAACR,EAAgB,CACfK,cAAetI,EAAMsI,cACrBF,yBAA0BpI,EAAMoI,yBAChCG,iBAAkBvI,EAAMuI,mBAIhC,CAlBAC,EAAanE,aAAe,CAC1BkE,iBAAkB,W,oCC/Cd,EAAYb,EAAA,mBAAiC,2BAO7C,SAAUgB,EAAiB1I,GAC/B,IAAM2I,GAAW,UACXC,GAAS,SAETpC,EAAW,kBAA+BD,EAAA,WAA0BvG,EAAM6I,aA0BhF,OACE,gBAACC,EAAA,EAAK,CAAChF,MAAO,EAAU,WAAYiF,WAAY/I,EAAM+I,WAAY7G,oBAAqBsE,EAASa,QAC3Fb,EAASa,MACV,gBAACmB,EAAY,CACXhC,SAAUA,EAASa,KACnBoB,aA7BR,SAAsBpB,GAkBpB,UACEsB,EACApC,EAAA,iBAAgCvG,EAAM6I,WAAYxB,GAnBlC,WAChBuB,EAAO3B,QAAQ,EAAU,YAEzB+B,EAAA,gBAA8B,CAC5B3H,GAAIrB,EAAM6I,WACVI,SAAUjJ,EAAM2G,QAChB/C,KAAMyD,EAAKzD,MACV,CACDsF,SAAU,WACVC,WAAY,UACZC,OAAQ,cACRC,cAAe,eAEnB,IAEgB,WAAH,OAAST,EAAO1B,MAAM,EAAU,SAAS,GAIwBlH,EAAM+I,YAEtF,EAQQT,cAAetI,EAAM+I,WACrBX,yBAAyB,wDACzBG,iBAAiB,SAK3B,C","sources":["file:///app/packages/libs/shared/src/components/forms/form-buttons/FormButtons.tsx","file:///app/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/form-field.scss","file:///app/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/utils/FormHelper.ts","file:///app/packages/projects/lite/src/shared/flight-requests/ResourceRequests.ts","file:///app/packages/libs/shared/src/components/edit-resource/EditResource.tsx","file:///app/packages/projects/lite/src/shared/views/edit-resource/EditResourceView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\n\nconst namespace = 'shared.formButtons';\n\ninterface FormButtonsProps {\n isNew?: boolean;\n submitText?: string;\n variant?: ButtonProps['variant'];\n size?: FormSize;\n className?: string;\n}\n\nexport function FormButtons<Values extends HashObject>(props: FormButtonsProps): JSX.Element {\n const formikProps = useFormikContext<Values>();\n\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <SpinnerButton\n variant={props.variant || 'primary'}\n type='submit'\n disabled={!canSubmit}\n size={props.size}\n className={props.className ? props.className : ''}\n showSpinner={formikProps.isSubmitting}\n >\n {props.submitText\n ? <>{props.submitText}</>\n : <Text namespace={namespace} phrase={props.isNew ? 'create' : 'save'} />}\n </SpinnerButton>\n );\n}\n","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { FieldAttributes } from 'formik';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\n\n/**\n * Use this checkbox within Formik contexts\n */\nexport function FormCheckbox(props: FieldAttributes<FormFieldProps>): JSX.Element {\n const { label, checkboxLabelClassName, checkboxLabelFontWeight, className, ...fieldProps } = props;\n\n return (\n <Form.Group className='form-group'>\n <div className={`form-check ${className || ''}`}>\n <FieldWrapper className='form-check-input' {...fieldProps} />\n <Form.Label\n className={`form-check-label cursor-pointer ${checkboxLabelFontWeight === 'normal' ? 'fw-normal' : ''} \n ${checkboxLabelClassName}`}\n htmlFor={fieldProps.id}\n >\n {label}\n </Form.Label>\n {props.checkboxAppLink && props.checkboxAppLinkText && (\n <>\n <span> </span>\n <AppLink appLink={props.checkboxAppLink} className='info-link'>\n {props.checkboxAppLinkText}\n </AppLink>\n </>\n )}\n </div>\n </Form.Group>\n );\n}\n\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\ninterface CharacterCounterProps<Values extends HashObject> {\n fieldName: keyof Values;\n limit: number;\n}\n\nexport function CharacterCounter<Values extends HashObject>(props: CharacterCounterProps<Values>): JSX.Element {\n const { values } = useFormikContext<Values>();\n\n const field = ObjectHelper.get(values, props.fieldName as string);\n\n if (typeof field !== 'string')\n return <></>;\n\n return (\n <div className='float-end text-secondary fw-normal'>\n {field.length}/{props.limit} characters\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"revealPassword\":\"jCfI0\",\"passwordInput\":\"RBJnf\",\"passwordContainer\":\"d78lK\",\"passwordContainerDisabled\":\"asbVo\",\"infoTooltip\":\"wzyOG\",\"spinner\":\"CycFx\"};","import * as React from 'react';\nimport { Form, Spinner } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\nimport { ErrorMessage, Field, FieldAttributes, FieldProps, useFormikContext } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { FormCheckbox } from 'libs/shared/components/forms/form-checkbox/FormCheckbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { CharacterCounter } from './CharacterCounter';\n\nimport styles from './form-field.scss';\n\nconst namespace = 'shared.formField';\n\nexport type FormSize = 'lg' | 'sm';\n\n// If checkboxLabelFontWeight is not specified, it will be bold by default\nexport type CheckboxLabelFontWeight = 'normal' | 'bold'\n\nexport interface FormFieldProps {\n /**\n * The name prop MUST be the same as the attribute\n * name of the value that the field is bound to.\n */\n name: string;\n label?: string;\n children?: any;\n showCharacterCounter?: boolean;\n showRequiredStar?: boolean;\n checkboxAppLink?: Core.AppLink;\n checkboxAppLinkText?: string;\n checkboxLabelClassName?: string;\n checkboxLabelFontWeight?: CheckboxLabelFontWeight\n infoTooltip?: string;\n infoTooltipPlacement?: Placement;\n infoText?: string;\n formSize?: FormSize;\n showOptionalLabel?: boolean;\n showLoadingSpinner?: boolean;\n}\n\nFieldWrapper.defaultProps = {\n autoComplete: 'off'\n};\n\nexport function FieldWrapper(\n props: FieldAttributes<FormFieldProps> & { className: string }\n): React.ReactElement {\n const { children, showLoadingSpinner, ...fieldProps } = props;\n\n const [ type, setType ] = React.useState(props.type);\n\n function onClickTogglePassword(): void {\n if (type === 'password')\n setType('text');\n else\n setType('password');\n }\n\n const resolvedChildren = FunctionHelper.isFunction(children)\n ? (f: FieldProps) => children(f)\n : React.Children.count(children) ? children : null;\n\n if (fieldProps.type !== 'password') {\n if (showLoadingSpinner) {\n return (\n <div className='position-relative'>\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n\n <div className={styles.spinner}>\n <Spinner animation='border' size='sm' />\n </div>\n </div>\n );\n }\n\n return (\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n );\n }\n\n let containerClassName = `position-relative ${styles.passwordContainer}`;\n\n if (fieldProps.className)\n containerClassName += ` ${fieldProps.className}`;\n\n if (fieldProps.disabled)\n containerClassName += ` ${styles.passwordContainerDisabled}`;\n\n /**\n * We need to wrap out input with a relatively positioned element in order to absolutely\n * position our visibility icon to reveal the password - Sha\n */\n return (\n <div className={containerClassName}>\n <Field\n {...(ObjectHelper.omit(fieldProps, [ 'formSize', 'type', 'className' ]))}\n type={type}\n className={`${styles.passwordInput} border-0 w-100 h-100 outline-none rounded`}\n >\n {resolvedChildren}\n </Field>\n {fieldProps.type === 'password' &&\n <SvgContainer\n svgName={type === 'password' ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n className={`svg-container cursor-pointer ${styles.revealPassword}`}\n onClick={onClickTogglePassword}\n />\n }\n </div>\n );\n}\n\nFormField.defaultProps = {\n autoComplete: 'off',\n infoTooltipPlacement: 'top'\n};\n\nexport function FormField<Values extends HashObject>(props: FieldAttributes<FormFieldProps>): React.ReactElement {\n const {\n label,\n className,\n showCharacterCounter,\n showRequiredStar,\n infoTooltip,\n infoTooltipPlacement,\n infoText,\n formSize,\n showOptionalLabel,\n ...fieldProps\n } = props;\n\n const { errors, touched } = useFormikContext<Values>();\n\n // This function overwrites the default `onChange` function whenever `props.disabled` is set.\n // This prevents users from \"undisabling\" form fields via inspect element, then editing the field.\n const disabledOnChange = () => {};\n\n if (fieldProps.type === 'checkbox') {\n const _props = ObjectHelper.omit(props, [ 'formSize', 'infoTooltipPlacement' ]);\n\n if (props.disabled)\n _props.onChange = disabledOnChange;\n\n return <FormCheckbox {..._props} />;\n }\n\n const fieldWrapperProps = {\n ...fieldProps,\n className: FormHelper.getCustomFormControlClassName(\n errors,\n touched,\n fieldProps.name,\n formSize,\n className,\n typeof props.as === 'string' ? props.as : null\n )\n };\n\n if (props.disabled)\n fieldWrapperProps.onChange = disabledOnChange;\n\n return (\n <Form.Group className='form-group'>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className='d-flex align-items-center'>\n {label}\n {showRequiredStar && <span className='text-danger'>*</span>}\n {infoTooltip && (\n <SvgContainer\n className={`svg-container text-secondary ${styles.infoTooltip}`}\n svgName={cvSvgLibrary.Info}\n title={infoTooltip}\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n {showOptionalLabel && <span className='text-secondary'> <Text namespace={namespace} phrase='optional' /></span>}\n \n {!!showCharacterCounter && !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n </Form.Label>\n )}\n\n <FieldWrapper {...fieldWrapperProps} aria-errormessage={`${fieldProps.name}Error`} />\n\n {!!infoText &&\n <Form.Text className='text-secondary'>\n {infoText}\n </Form.Text>\n }\n\n <ErrorMessage name={fieldProps.name}>\n {(errorMessage: string) => <Form.Control.Feedback id={`${fieldProps.name}Error`} type='invalid' role='status'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\n );\n}","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","import { FormikErrors, FormikTouched, getIn } from 'formik';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\n\nfunction getTypeSize(type: string, size: FormSize) {\n let className = '';\n\n switch (type) {\n case 'select':\n className = 'form-select';\n break;\n default:\n className = 'form-control';\n }\n\n if (size === 'sm')\n className += ` ${className}-sm`;\n\n if (size === 'lg')\n className += ` ${className}-lg`;\n\n return className;\n}\n\nexport const FormHelper = {\n getCustomFormControlClassName<T>(\n errors: FormikErrors<T>,\n touched: FormikTouched<T>,\n attribute: string,\n size?: FormSize,\n additionalClassName?: string,\n type?: string\n ): string {\n let className = '';\n\n className = getTypeSize(type, size);\n\n // Using getIn as it supports dot notation\n if (getIn(touched, attribute) && getIn(errors, attribute))\n className += ' is-invalid';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { UpdateResourceRequest } from 'libs/shared/interfaces';\n\nexport const ResourceRequests = {\n resource(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `resources:${id}`\n };\n },\n\n videoResources(videoId: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources?query=customer`,\n key: `videos:${videoId}:resources`\n };\n },\n\n videoResourcesAndLinks(videoId: string, cursor?: string): Flight.PublicRequest {\n const query = `(resources[thumbnail,pdf]|links)`;\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}/members`, { query, cursor }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${videoId}/members`, { query, cursor }),\n key: `videos:${videoId}:resources:links${cursor}`\n };\n },\n\n addResource(\n videoId: string,\n resource: any,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources`,\n key: `create:resource:${resource.fileId || RandomHelper.getRandomInt()}`,\n data: resource,\n type: HttpVerbs.POST,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n },\n\n updateResource(\n id: string,\n data: UpdateResourceRequest,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `update:resource:${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deleteResource(\n id: string,\n videoId: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `delete:resource:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n }\n};","import * as React from 'react';\nimport { Button, ButtonProps } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Resource, UpdateResourceRequest } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.editResource';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst ResourceValidationSchema = Yup.object().shape<UpdateResourceRequest>({\n name: Yup.string()\n .trim()\n .max(255, () => getPhrase('nameTooLong'))\n .required(() => getPhrase('nameRequired'))\n .default('')\n}).noUnknown();\n\n\ninterface EditResourceFormProps {\n onClickCancel: () => void;\n buttonContainerClassName?: string;\n submitBtnVariant?: ButtonProps['variant'];\n}\n\nexport function EditResourceForm(props: EditResourceFormProps): JSX.Element {\n const formikProps = useFormikContext<UpdateResourceRequest>();\n\n return (\n <Form>\n <FormField<UpdateResourceRequest>\n label={getPhrase('name')}\n name='name'\n id='name'\n value={formikProps.values.name}\n placeholder={getPhrase('namePlaceholder')}\n autoFocus\n />\n <div className={props.buttonContainerClassName || ''}>\n <Button variant='link' className='me-2' onClick={props.onClickCancel}>\n <Text namespace={namespace} phrase='cancel' />\n </Button>\n <FormButtons isNew={false} variant={props.submitBtnVariant} />\n </div>\n </Form>\n );\n}\n\ninterface EditResourceProps {\n saveResource: (data: UpdateResourceRequest, onDone: () => void) => void;\n resource: Resource;\n onClickCancel: () => void;\n buttonContainerClassName?: string;\n submitBtnVariant?: ButtonProps['variant'];\n}\n\nEditResource.defaultProps = {\n submitBtnVariant: 'primary'\n};\n\nexport function EditResource(props: EditResourceProps): JSX.Element {\n return (\n <FormWrapper<UpdateResourceRequest, Resource>\n initialValues={props.resource}\n validationSchema={ResourceValidationSchema}\n onSubmit={props.saveResource}\n >\n <EditResourceForm\n onClickCancel={props.onClickCancel}\n buttonContainerClassName={props.buttonContainerClassName}\n submitBtnVariant={props.submitBtnVariant}\n />\n </FormWrapper>\n );\n}","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EditResource } from 'libs/shared/components/edit-resource/EditResource';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps, Resource, UpdateResourceRequest } from 'libs/shared/interfaces';\n\nimport { ResourceRequests } from 'shared/flight-requests/ResourceRequests';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.editResourceView');\n\ninterface EditResourceViewProps extends PopupViewProps {\n resourceId: string;\n videoId: string;\n}\n\nexport function EditResourceView(props: EditResourceViewProps): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const resource = Flight.useBasicFetch<Resource>(ResourceRequests.resource(props.resourceId));\n\n function saveResource(data: UpdateResourceRequest): void {\n const onSuccess = () => {\n alerts.success(getPhrase('success'));\n\n AnalyticsHelper.logUserAction({\n id: props.resourceId,\n parentId: props.videoId,\n name: data.name\n }, {\n location: LocationContext.Popup,\n actionType: UserAction.Edit,\n entity: EntityType.Resource,\n workflowPhase: WorkflowPhase.Complete\n });\n };\n\n const onError = () => alerts.error(getPhrase('error'));\n\n Flight.fetch(\n dispatch,\n ResourceRequests.updateResource(props.resourceId, data, onSuccess, onError, props.closePopup)\n );\n }\n\n return (\n <Popup title={getPhrase('heading')} closePopup={props.closePopup} showLoadingSpinner={!resource.data}>\n {!!resource.data &&\n <EditResource\n resource={resource.data}\n saveResource={saveResource}\n onClickCancel={props.closePopup}\n buttonContainerClassName='d-flex justify-content-end border-top pt-3 px-3 mx-n3'\n submitBtnVariant='dark'\n />\n }\n </Popup>\n );\n}"],"names":["namespace","FormButtons","props","formikProps","canSubmit","variant","type","disabled","size","className","showSpinner","isSubmitting","submitText","phrase","isNew","FormCheckbox","label","checkboxLabelClassName","checkboxLabelFontWeight","fieldProps","Form","FieldWrapper","htmlFor","id","checkboxAppLink","checkboxAppLinkText","AppLink","appLink","CharacterCounter","values","field","ObjectHelper","fieldName","length","limit","children","showLoadingSpinner","setType","resolvedChildren","FunctionHelper","f","Spinner","animation","containerClassName","SvgContainer","svgName","onClick","FormField","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","errors","touched","disabledOnChange","_props","onChange","fieldWrapperProps","FormHelper","name","as","title","tooltipPlacement","tooltipSpanHack","Text","maxLength","errorMessage","role","defaultProps","autoComplete","FormWrapper","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formattedInitialValues","validationSchema","cast","omitChildValues","child","Object","keys","forEach","key","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","entries","value","useFormikContextWrapper","getCustomFormControlClassName","attribute","additionalClassName","getTypeSize","ResourceRequests","resource","url","videoResources","videoId","videoResourcesAndLinks","cursor","query","publicUrl","addResource","success","error","always","fileId","data","invalidationKeys","updateResource","deleteResource","getPhrase","LanguageService","ResourceValidationSchema","shape","trim","max","required","noUnknown","EditResourceForm","placeholder","autoFocus","buttonContainerClassName","Button","onClickCancel","submitBtnVariant","EditResource","saveResource","EditResourceView","dispatch","alerts","resourceId","Popup","closePopup","AnalyticsHelper","parentId","location","actionType","entity","workflowPhase"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3978],{39902:(e,t,n)=>{n.d(t,{F:()=>m,f:()=>f});var r=n(32735),i=n(20354),a=n(75896);function o(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||u(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function l(e,t,n){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=50;function f(e,t){var n=a.m.chunk(e,d).map((function(e){return t(a.m.uniq(e))})),r=i.a.useBasicFetchAll(n),o=a.m.flatten(r.data),u=r.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},t.id,t))}),{}):null;return{itemsArr:o,items:u,isFetching:r.isFetching}}function m(e,t,n){var s,f,m,v,p=n||function(e){return"object"===c(e)?e.id:e},h=r.useRef(new Set),y=(m=r.useState([]),v=2,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,u=[],s=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=a.call(n)).done)&&(u.push(r.value),u.length!==t);s=!0);}catch(e){c=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw i}}return u}}(m,v)||u(m,v)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),b=y[0],g=y[1];r.useEffect((function(){if(null==e?void 0:e.length){var n=[];e.forEach((function(e){var t=p(e);h.current.has(t)||(n.push(e),h.current.add(t))})),n.length&&g((function(e){return[].concat(o(e),o(a.m.chunk(n,d).map(t)))}))}}),[null==e?void 0:e.length]);var A=i.a.useBasicFetchAll(b),C=a.m.flatten(A.data),I=A.data.length?C.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},p(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(f=null===(s=A.responses)||void 0===s?void 0:s[0])||void 0===f?void 0:f.hasCompleted),itemsArr:C,items:I,isFetching:A.isFetching}}},63719:(e,t,n)=>{n.d(t,{h:()=>u});var r=n(32735),i=n(77316);function a(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function u(e){var t,n,u=(t=r.useMemo((function(){return i.p.getBuilder()}),[]),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,i,a,o,u=[],s=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=a.call(n)).done)&&(u.push(r.value),u.length!==t);s=!0);}catch(e){c=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw i}}return u}}(t,n)||a(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.")}()),s=u[0],c=(0,u[1])(s);return c&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(c),[Object.assign(Object.assign({},e),{active:!0})]):c}},93978:(e,t,n)=>{n.r(t),n.d(t,{PlaySharedVideoView:()=>x});var r=n(32735),i=n(20354),a=n(65858),o=n(16714),u=n(89454),s=n(43012),c=n(20768),l=n(31949),d=n(1575),f=n(63719),m=n(26304),v=n(22902),p=n(79612),h=n(37802),y=n(76753),b=n(10094),g=n(58321),A=n(82817),C=n(7179),I=n(49948),V=n(36873),w=n(86698),S=n(35014),j=n(97816),P=n(33192),F=n(57695),k=n(91442),O=n(16857);function x(e){var t,n,x,L,T,M,B,E,R,U,G=(0,g.U)({locationContext:a.LZ.VideoThumbnail}),q=G.commonVideoProps,N=G.hasCommonVideoPropsCompleted,_=(0,v.T)().hasPermissions,W=(0,S.I)(),D=(0,k.a)(),$=(0,w.y)().activePresentation,Z=(0,h.r)(null).hasPlayPageTranscript,z=i.a.useBasicFetch(l.N.currentUser()),H=i.a.useBasicFetch(d.R.sharedVideo(e.objectId,e.shareId)),J=i.a.useBasicFetch(W.canViewClips&&s.e.videoClips(e.objectId)),K=i.a.useBasicFetch(W.canViewInteractives&&c.b.videoInteractives(e.objectId)),Q=(0,V.k)({video:H.data,context:e.queryParams.context,contextId:e.queryParams.contextId,moviesAndTv:e.queryParams.mtv,currentUser:z.data}),X=(0,I.l)(e.objectId),Y=i.a.useBasicFetch(!!$&&u.O.audiencesByPresentationId($.id)),ee=Z&&!!(null===(n=null===(t=H.data)||void 0===t?void 0:t._isClickViewCurated)||void 0===n?void 0:n.value),te=i.a.useBasicFetch(ee&&(null===(x=z.data)||void 0===x?void 0:x.contentRegion)&&b.F.chaptersAndSubtitles(e.objectId,z.data.contentRegion)),ne=(null==te?void 0:te.data)||{},re=ne.subtitles,ie=ne.chapters,ae=re&&re.length>0?re.map((function(e){return b.F.subtitleVtt(e.url,e)})):[],oe=i.a.useBasicFetchAll(ae);(0,p.M)(y.CG.getVideoMetadata({content:H.data,canonicalLink:P.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:!1})),(0,j.V)(null!==(L=Q.videos)&&void 0!==L?L:[]),(0,m.b)(H,{private:O.m}),(0,C.P)({id:e.objectId,app:"videos",shareId:e.shareId});var ue=(0,f.h)({name:null===(T=H.data)||void 0===T?void 0:T.name}),se=(0,A.M)(e.objectId);return H.data&&z.hasCompleted&&X.hasCompleted&&N?r.createElement("div",{className:"px-3"},r.createElement(F.j,{video:H.data,clips:null===(M=J.data)||void 0===M?void 0:M.data,interactives:null===(B=K.data)||void 0===B?void 0:B.data,curriculums:se,relatedVideos:Q,currentUser:z.data,pointsOfInterest:null==X?void 0:X.items,playNext:null===(E=e.queryParams)||void 0===E?void 0:E.playNext,shareId:e.shareId,featureAccess:W,audiences:Y.data,params:e.queryParams,canManageVideoAccess:_(o.C.ManageVideoAccess),tableOfContentsId:null===(R=e.queryParams)||void 0===R?void 0:R.tocId,shouldShowSideTableOfContents:D,breadcrumbs:ue,commonVideoProps:q,hasTheatreMode:Z,shouldShowTranscript:ee&&(null===(U=oe.data)||void 0===U?void 0:U.length)>0,vttSubtitles:oe.data||[],subtitles:re||[],chapters:ie})):r.createElement(r.Fragment,null)}},10094:(e,t,n)=>{n.d(t,{F:()=>a});var r=n(97395),i=n(78417),a={chaptersAndSubtitles:function(e,t){var n={query:"subtitles,chapters",permissionFilterOption:i.r.StripMetadata,contentRegion:t};return{url:r._.urlBuilder("{gateway}/v1/objects/".concat(e),n),key:"videos:".concat(e,":subtitles:").concat(i.r.StripMetadata),formatData:function(e){return{subtitles:e.subtitles.data,chapters:e.chapters.data}}}},subtitleVtt:function(e,t){return{url:"{player}/srt-to-vtt?url=".concat(e),key:"subtitle:".concat(e),formatData:function(e){return Object.assign(Object.assign({},t),{vtt:e})}}}}},58321:(e,t,n)=>{n.d(t,{U:()=>v});var r=n(20354),i=n(16714),a=n(39151),o=n(1666),u=n(31949),s=n(22902),c=n(37802),l=n(22490),d=n(82431),f=n(46390),m=n(27638);function v(e){var t,n,v,p=e||{},h=p.locationContext,y=p.mtv,b=p.flightNamespace,g=p.sharedPlaylist,A=(0,f.G)().isPlugin,C=(0,m.u)(h,b),I=C.setFavourite,V=C.canFavourite,w=(0,c.r)(null),S=w.hasTopicDirectories,j=w.isLoadingSettings,P=(0,s.T)(),F=P.hasPermissions,k=P.isLoaded,O=F(i.C.StudentExperience),x=r.a.useBasicFetch(a.L.config()),L=r.a.useBasicFetch(u.N.currentUser()),T=r.a.useBasicFetch((null===(t=L.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(L.data.customerId));return{hasCommonVideoPropsCompleted:!j&&k&&x.hasCompleted&&L.hasCompleted&&(!(null===(n=L.data)||void 0===n?void 0:n.isAuthenticated)||T.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?g&&!(null===(t=L.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:y}):null},isPlugin:A,canFavourite:V,setFavourite:I,imageCdnUrl:null===(v=x.data)||void 0===v?void 0:v.imageCdnUrl,yearGroups:T.data,getClassroomGuideAppLink:l.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:l.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:l.W.getResourceGuidanceAppLink,showNewVideoIndicator:S,companyLogoFallbackUrl:null,hasStudentExperience:O}}}},35014:(e,t,n)=>{n.d(t,{I:()=>s});var r=n(16714),i=n(12754),a=n(22902),o=n(15311),u=n(11387);function s(){var e=(0,a.T)(),t=e.hasPermissions,n=e.hasLocalPermissions,s=(0,(0,o.r)().hasProduct)(i.x.Primary);return{canViewGlance:t(r.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:s&&t(r.C.ViewVideoInteractives),canViewClips:s&&t(r.C.ViewVideoClips),canViewCurriculumLinks:t(r.C.ViewCurriculums),canUseActions:n(r.E.UseVideoActions),canViewPublicLayout:!n(r.E.WatchVideos)&&u.C.hasRegionPrefix(),canViewResourceItems:n(r.E.ViewVideoResourceItems),canNavigate:s}}},97816:(e,t,n)=>{n.d(t,{V:()=>o});var r=n(1575),i=n(39902),a=n(31908);function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))})):[]:[]}(e).map((function(e){return e.id}));(0,i.F)(n,(function(e){return r.R.videoMixinAssocs(e,t.flightNamespace)}))}}}]);
|
|
2
|
+
//# sourceMappingURL=3978-ac2acbd10d-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/3978-ac2acbd10d-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/hooks/useBreadcrumbs.ts","file:///app/packages/projects/lite/src/apps/share/views/play-shared-video/PlaySharedVideoView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/TranscriptRequests.ts","file:///app/packages/projects/lite/src/shared/hooks/useCommonVideoProps.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoFeatureAccess.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst CHUNK_SIZE = 50;\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n itemsArr: T[];\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const chunks = ArrayHelper.chunk<string>(itemIds, CHUNK_SIZE);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n itemsArr,\n items,\n isFetching: responses.isFetching\n };\n}\n\n/**\n * When you need the useBatchFetch() behavior, but your list of objects to hydrate\n * will grow, such as on a scrolling page. useGrowingBatchFetch() will use local state\n * to determine what we've already built a request for and what items are new\n * as to not re-fetch items - Sha\n */\nexport function useGrowingBatchFetch<T>(\n objs: T[],\n getRequest: (items: T[]) => Flight.Request,\n _getKey?: (obj: T) => string\n) {\n const getKey = _getKey || ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const fetchedItems = React.useRef<Set<string>>(new Set<string>());\n\n const [ requests, setRequests ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!objs?.length)\n return;\n\n const unfetchedItems: T[] = [];\n \n objs.forEach(obj => {\n const key = getKey(obj);\n\n if (fetchedItems.current.has(key))\n return;\n\n unfetchedItems.push(obj);\n fetchedItems.current.add(key);\n });\n \n if (!unfetchedItems.length)\n return;\n\n setRequests(r => ([ ...r, ...ArrayHelper.chunk<T>(unfetchedItems, CHUNK_SIZE).map(getRequest) ]));\n }, [objs?.length]);\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [getKey(item)]: item }), {})\n : null;\n\n return {\n hasFirstRequestCompleted: !!responses.responses?.[0]?.hasCompleted,\n itemsArr,\n items,\n isFetching: responses.isFetching\n };\n}","import React from 'react';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BreadcrumbService } from 'libs/shared/services/BreadcrumbService';\n\nexport function useBreadcrumbs(current: Breadcrumb): Breadcrumb[] {\n const [ match, useBuilder ] = React.useMemo(() => BreadcrumbService.getBuilder(), []);\n\n const breadcrumbs = useBuilder(match);\n\n if (!breadcrumbs || !current)\n return breadcrumbs;\n\n return [ ...breadcrumbs, { ...current, active: true }];\n}\n\n","import * as React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { ClipCollection, CurrentUser, InteractiveCollection, PresentationAudience, Video, VttSubtitleResponse } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { TranscriptRequests, TranscriptResponse } from 'shared/flight-requests/TranscriptRequests';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { PlayPage } from 'shared/views/play/components/play-page/PlayPage';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\n\nimport { ShareLinkPrivateError } from 'apps/share/errors/share-link-private/ShareLinkPrivateError';\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nexport function PlaySharedVideoView(props: ShareLinkViewProps): React.ReactElement {\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n\n const { hasPermissions } = usePermissions();\n\n const featureAccess = useVideoFeatureAccess();\n\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const { activePresentation } = usePresentation();\n const { hasPlayPageTranscript } = useSettings(null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(\n VideoRequests.sharedVideo(props.objectId, props.shareId)\n );\n const clips = Flight.useBasicFetch<ClipCollection>(\n featureAccess.canViewClips && ClipRequests.videoClips(props.objectId)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.objectId)\n );\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.objectId);\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n\n const shouldFetchTranscript = hasPlayPageTranscript && !!video.data?._isClickViewCurated?.value;\n const transcript = Flight.useBasicFetch<TranscriptResponse>(\n shouldFetchTranscript && currentUser.data?.contentRegion &&\n TranscriptRequests.chaptersAndSubtitles(props.objectId, currentUser.data.contentRegion)\n );\n const { subtitles, chapters } = transcript?.data || {};\n \n const captionsRequests = (subtitles && subtitles.length > 0)\n ? subtitles.map(subtitle => TranscriptRequests.subtitleVtt(subtitle.url, subtitle))\n : [];\n const captions = Flight.useBasicFetchAll<VttSubtitleResponse>(captionsRequests);\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: false\n }));\n\n useVideoMixin(relatedVideos.videos ?? []);\n useCannotConsumeError(video, { private: ShareLinkPrivateError });\n useDeepLinks({ id: props.objectId, app: 'videos', shareId: props.shareId });\n\n const breadcrumbs = useBreadcrumbs({ name: video.data?.name });\n\n const curriculums = useCurriculums(props.objectId);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <div className='px-3'>\n <PlayPage\n video={video.data}\n clips={clips.data?.data}\n interactives={interactives.data?.data}\n curriculums={curriculums}\n relatedVideos={relatedVideos}\n currentUser={currentUser.data}\n pointsOfInterest={pointsOfInterest?.items}\n playNext={props.queryParams?.playNext}\n shareId={props.shareId}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n tableOfContentsId={props.queryParams?.tocId}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n hasTheatreMode={hasPlayPageTranscript}\n shouldShowTranscript={shouldFetchTranscript && captions.data?.length > 0}\n vttSubtitles={captions.data || []}\n subtitles={subtitles || []}\n chapters={chapters}\n />\n </div>\n );\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { Chapter, Subtitle } from 'libs/shared/interfaces';\n\nexport interface TranscriptResponse {\n subtitles: Subtitle[];\n chapters: Chapter[];\n}\n\nexport const TranscriptRequests = {\n chaptersAndSubtitles(videoId: string, contentRegion?: string): Flight.Request {\n const queryStringObj = {\n query: 'subtitles,chapters',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n contentRegion\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}`, queryStringObj),\n key: `videos:${videoId}:subtitles:${PermissionFilterOption.StripMetadata}`,\n formatData: (data: any) => {\n return { subtitles: data.subtitles.data, chapters: data.chapters.data };\n }\n };\n },\n\n subtitleVtt(url: string, subtitleObj: Subtitle) {\n return {\n url: `{player}/srt-to-vtt?url=${url}`,\n key: `subtitle:${url}`,\n formatData: (data: any) => {\n return {\n ...subtitleObj,\n vtt: data\n };\n }\n };\n }\n};","import { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nimport { usePluginHelper } from './use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from './useLiteFavourites';\n\ninterface UseCommonVideoPropsResult {\n hasCommonVideoPropsCompleted: boolean;\n commonVideoProps: CommonVideoProps;\n}\n\ninterface UseCommonVideoPropsOptions {\n locationContext: LocationContext,\n mtv?: boolean;\n flightNamespace?: string;\n sharedPlaylist?: boolean;\n}\n\nexport function useCommonVideoProps(options: UseCommonVideoPropsOptions): UseCommonVideoPropsResult {\n const { locationContext, mtv, flightNamespace, sharedPlaylist } = options || {};\n\n const { isPlugin } = usePluginHelper();\n const { setFavourite, canFavourite } = useLiteFavourites(locationContext, flightNamespace);\n const { hasTopicDirectories, isLoadingSettings } = useSettings(null);\n const { hasPermissions, isLoaded: hasLoadedPermissions } = usePermissions();\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n function getSubTextAppLink(video: VideoTypes): Core.AppLink {\n if (!('series' in video))\n return null;\n\n /**\n * We do not allow navigating to series on shared playlists when the user is not signed in\n * because most series are customer created and will be empty for public users\n * \n * We do not have to do this for shared series, because all the series links are self referencing\n * - Sha\n */\n if (sharedPlaylist && !currentUser.data?.isAuthenticated)\n return null;\n \n return SeriesAppLinkHelper.getSeriesAppLink(video.series, { mtv });\n }\n\n const hasCommonVideoPropsCompleted = (\n !isLoadingSettings &&\n hasLoadedPermissions &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!currentUser.data?.isAuthenticated || yearGroups.hasCompleted)\n );\n\n return {\n hasCommonVideoPropsCompleted,\n commonVideoProps: {\n subTextType: 'series',\n getSubTextAppLink,\n isPlugin,\n canFavourite,\n setFavourite,\n imageCdnUrl: config.data?.imageCdnUrl,\n yearGroups: yearGroups.data,\n getClassroomGuideAppLink: VideoAppLinkHelper.getClassroomGuideAppLink,\n getInteractiveGuidanceAppLink: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n getResourceGuidanceAppLink: VideoAppLinkHelper.getResourceGuidanceAppLink,\n showNewVideoIndicator: hasTopicDirectories,\n companyLogoFallbackUrl: null,\n hasStudentExperience\n }\n };\n}","import { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\n\nimport { LiteRouteHelper } from 'shared/utils/LiteRouteHelper';\n\nexport interface VideoFeaturesHash {\n canViewGlance: boolean;\n canViewResources: boolean;\n canViewInteractives: boolean;\n canViewClips: boolean;\n canUseActions: boolean;\n canViewPublicLayout: boolean;\n canNavigate: boolean;\n canViewCurriculumLinks: boolean;\n canViewResourceItems: boolean;\n}\n\nexport function useVideoFeatureAccess() {\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n\n const hasNP = hasProduct(ProductId.Primary);\n\n function showPublicLayout(): boolean {\n /**\n * Authenticated users should never see the placeholder\n */\n if (hasLocalPermissions(LocalPermissionName.WatchVideos))\n return false;\n\n /**\n * Accessing a play page unathenticated will have different contextual behabviours:\n * - For a share page, the user should see the video and never the placeholder\n * - For a public browsing page (ie. using a route-prefix) they should see the placeholder\n */\n return LiteRouteHelper.hasRegionPrefix();\n }\n\n return {\n canViewGlance: hasPermissions(PermissionName.ViewVideoGlance),\n canViewResources: true,\n canViewInteractives: hasNP && hasPermissions(PermissionName.ViewVideoInteractives),\n canViewClips: hasNP && hasPermissions(PermissionName.ViewVideoClips),\n canViewCurriculumLinks: hasPermissions(PermissionName.ViewCurriculums),\n canUseActions: hasLocalPermissions(LocalPermissionName.UseVideoActions),\n canViewPublicLayout: showPublicLayout(),\n canViewResourceItems: hasLocalPermissions(LocalPermissionName.ViewVideoResourceItems),\n canNavigate: hasNP\n };\n}","import { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useGrowingBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { Clip, ClipCollection, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}): void {\n const videoIds = getValidObjects(objects).map(v => v.id);\n\n useGrowingBatchFetch(videoIds, ids => VideoRequests.videoMixinAssocs(ids, options.flightNamespace));\n}"],"names":["CHUNK_SIZE","useBatchFetch","itemIds","getRequest","requests","map","chunk","responses","itemsArr","data","items","length","reduce","acc","item","id","isFetching","useGrowingBatchFetch","objs","_getKey","getKey","obj","fetchedItems","Set","setRequests","unfetchedItems","forEach","key","current","has","push","add","r","hasFirstRequestCompleted","hasCompleted","useBreadcrumbs","match","breadcrumbs","useBuilder","active","PlaySharedVideoView","props","locationContext","commonVideoProps","hasCommonVideoPropsCompleted","hasPermissions","featureAccess","shouldShowSideTableOfContents","activePresentation","hasPlayPageTranscript","currentUser","video","objectId","shareId","clips","canViewClips","interactives","canViewInteractives","relatedVideos","context","queryParams","contextId","moviesAndTv","mtv","pointsOfInterest","audiences","shouldFetchTranscript","_isClickViewCurated","value","transcript","contentRegion","subtitles","chapters","captionsRequests","subtitle","url","captions","content","canonicalLink","stripPresentationSlug","allowIndexing","videos","private","app","name","curriculums","className","playNext","params","canManageVideoAccess","tableOfContentsId","tocId","hasTheatreMode","shouldShowTranscript","vttSubtitles","TranscriptRequests","chaptersAndSubtitles","videoId","queryStringObj","query","permissionFilterOption","formatData","subtitleVtt","subtitleObj","vtt","useCommonVideoProps","options","flightNamespace","sharedPlaylist","isPlugin","u","setFavourite","canFavourite","hasTopicDirectories","isLoadingSettings","hasLoadedPermissions","isLoaded","hasStudentExperience","config","yearGroups","isAuthenticated","customerId","subTextType","getSubTextAppLink","series","imageCdnUrl","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","showNewVideoIndicator","companyLogoFallbackUrl","useVideoFeatureAccess","hasLocalPermissions","hasNP","hasProduct","canViewGlance","canViewResources","canViewCurriculumLinks","canUseActions","canViewPublicLayout","canViewResourceItems","canNavigate","useVideoMixin","objects","videoIds","Array","isArray","filter","o","getValidObjects","v","ids"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[872],{1704:(e,t,r)=>{r.d(t,{l:()=>i});var n=r(32735),c=r(23481),o=r(9111),a=r(13876);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var s=c.T.encloseNamespace("shared.confirmationPopup");function i(e){var t,r,c=(t=n.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,c,o,a,u=[],s=!0,i=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=o.call(r)).done)&&(u.push(n.value),u.length!==t);s=!0);}catch(e){i=!0,c=e}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(i)throw c}}return u}}(t,r)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=c[0],l=c[1];return n.createElement(o.G,{title:e.title,closePopup:e.closePopup},n.createElement(n.Fragment,null,e.children,n.createElement(a.u,null,n.createElement(a.u.Cancel,{onClick:e.closePopup,variant:e.cancelButtonVariant,text:e.cancelButtonText||s("cancel")}),n.createElement(a.u.Submit,{onClick:function(){l(!0),e.onClickConfirm()},text:e.confirmButtonText||s("confirm"),variant:e.confirmButtonVariant,showSpinner:i,disabled:e.disabledConfirmButton}))))}i.defaultProps={confirmButtonVariant:"primary",cancelButtonVariant:"link"}},78267:(e,t,r)=>{r.d(t,{H:()=>a});var n=r(99940),c=r(97395),o=r(45157),a={resource:function(e){return{url:"{gateway}/v1/objects/".concat(e),key:"resources:".concat(e)}},videoResources:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/resources?query=customer"),key:"videos:".concat(e,":resources")}},videoResourcesAndLinks:function(e,t){var r="(resources[thumbnail,pdf]|links)";return{url:c._.urlBuilder("{gateway}/v1/objects/".concat(e,"/members"),{query:r,cursor:t}),publicUrl:c._.urlBuilder("/api/objects/".concat(e,"/members"),{query:r,cursor:t}),key:"videos:".concat(e,":resources:links").concat(t)}},addResource:function(e,t,r,c,a){return{url:"{gateway}/v1/objects/".concat(e,"/resources"),key:"create:resource:".concat(t.fileId||o.Y.getRandomInt()),data:t,type:n.k.POST,invalidationKeys:["videos:".concat(e,":resources"),"videos:".concat(e)],success:r,error:c,always:a}},updateResource:function(e,t,r,c,o){return{url:"{gateway}/v1/objects/".concat(e),key:"update:resource:".concat(e),data:t,type:n.k.PUT,success:r,error:c,always:o}},deleteResource:function(e,t,r,c,o){return{url:"{gateway}/v1/objects/".concat(e),key:"delete:resource:".concat(e),type:n.k.DELETE,invalidationKeys:["videos:".concat(t,":resources"),"videos:".concat(t)],success:r,error:c,always:o}}}},20872:(e,t,r)=>{r.r(t),r.d(t,{DeleteResourceView:()=>v});var n=r(32735),c=r(70680),o=r(23481),a=r(20354),u=r(49985),s=r(65858),i=r(1704),l=r(50023),d=r(83345),f=r(69883),p=r(78267),m="shared.deleteResourceView",y=o.T.encloseNamespace(m);function v(e){var t=(0,c.I0)(),r=(0,f.Z)(),o=a.a.useBasicFetch(p.H.resource(e.resourceId));return n.createElement(i.l,{title:y("heading"),confirmButtonText:y("remove"),confirmButtonVariant:"danger",onClickConfirm:function(){a.a.fetch(t,p.H.deleteResource(e.resourceId,e.videoId,(function(){r.success(y("success")),u.k.logUserAction({id:e.resourceId,parentId:e.videoId},{location:s.LZ.Popup,actionType:s.Vw.Delete,entity:s.py.Resource,workflowPhase:s.eu.Complete})}),(function(){return r.error(y("error"))}),e.closePopup))},closePopup:e.closePopup},o.data?n.createElement("p",null,n.createElement(d.x,{namespace:m,phrase:"body",options:{name:o.data.name}})):n.createElement(l.E,null))}}}]);
|
|
2
|
+
//# sourceMappingURL=872-928631c37b-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/872-928631c37b-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/confirmation-popup/ConfirmationPopup.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/ResourceRequests.ts","file:///app/packages/projects/lite/src/shared/views/delete-resource/DeleteResourceView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.confirmationPopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ConfirmationPopupProps {\n title: string;\n onClickConfirm: () => void;\n confirmButtonText?: string;\n cancelButtonText?: string;\n confirmButtonVariant?: ButtonProps['variant'];\n cancelButtonVariant?: ButtonProps['variant'];\n disabledConfirmButton?: boolean;\n}\n\nConfirmationPopup.defaultProps = {\n confirmButtonVariant: 'primary',\n cancelButtonVariant: 'link'\n};\n\ntype PropTypes = React.PropsWithChildren<ConfirmationPopupProps & PopupViewProps>;\n\nexport function ConfirmationPopup(props: PropTypes): React.ReactElement {\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\n\n return (\n <Popup title={props.title} closePopup={props.closePopup}>\n <>\n {props.children}\n <PopupButtons>\n <PopupButtons.Cancel\n onClick={props.closePopup}\n variant={props.cancelButtonVariant}\n text={props.cancelButtonText || getPhrase('cancel')}\n />\n <PopupButtons.Submit\n onClick={() => { setShowButtonSpinner(true); props.onClickConfirm(); }}\n text={props.confirmButtonText || getPhrase('confirm')}\n variant={props.confirmButtonVariant}\n showSpinner={showButtonSpinner}\n disabled={props.disabledConfirmButton}\n />\n </PopupButtons>\n </>\n </Popup>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { UpdateResourceRequest } from 'libs/shared/interfaces';\n\nexport const ResourceRequests = {\n resource(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `resources:${id}`\n };\n },\n\n videoResources(videoId: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources?query=customer`,\n key: `videos:${videoId}:resources`\n };\n },\n\n videoResourcesAndLinks(videoId: string, cursor?: string): Flight.PublicRequest {\n const query = `(resources[thumbnail,pdf]|links)`;\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}/members`, { query, cursor }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${videoId}/members`, { query, cursor }),\n key: `videos:${videoId}:resources:links${cursor}`\n };\n },\n\n addResource(\n videoId: string,\n resource: any,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources`,\n key: `create:resource:${resource.fileId || RandomHelper.getRandomInt()}`,\n data: resource,\n type: HttpVerbs.POST,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n },\n\n updateResource(\n id: string,\n data: UpdateResourceRequest,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `update:resource:${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deleteResource(\n id: string,\n videoId: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `delete:resource:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n }\n};","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ConfirmationPopup } from 'libs/shared/components/confirmation-popup/ConfirmationPopup';\nimport { PopupLoadingSpinner } from 'libs/shared/components/popup/PopupLoadingSpinner';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps, Resource } from 'libs/shared/interfaces';\n\nimport { ResourceRequests } from 'shared/flight-requests/ResourceRequests';\n\nconst namespace = 'shared.deleteResourceView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface DeleteResourceViewProps extends PopupViewProps {\n resourceId: string;\n videoId: string;\n}\n\nexport function DeleteResourceView(props: DeleteResourceViewProps): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const resource = Flight.useBasicFetch<Resource>(ResourceRequests.resource(props.resourceId));\n\n function deleteResource(): void {\n const onSuccess = () => {\n alerts.success(getPhrase('success'));\n\n AnalyticsHelper.logUserAction({\n id: props.resourceId,\n parentId: props.videoId\n }, {\n location: LocationContext.Popup,\n actionType: UserAction.Delete,\n entity: EntityType.Resource,\n workflowPhase: WorkflowPhase.Complete\n });\n };\n\n const onError = () => alerts.error(getPhrase('error'));\n\n Flight.fetch(\n dispatch,\n ResourceRequests.deleteResource(props.resourceId, props.videoId, onSuccess, onError, props.closePopup)\n );\n }\n\n return (\n <ConfirmationPopup\n title={getPhrase('heading')}\n confirmButtonText={getPhrase('remove')}\n confirmButtonVariant='danger'\n onClickConfirm={deleteResource}\n closePopup={props.closePopup}\n >\n {resource.data\n ? <p><Text namespace={namespace} phrase='body' options={{ name: resource.data.name }} /></p>\n : <PopupLoadingSpinner />\n }\n </ConfirmationPopup>\n );\n}"],"names":["getPhrase","ConfirmationPopup","props","showButtonSpinner","setShowButtonSpinner","title","closePopup","children","onClick","variant","cancelButtonVariant","text","cancelButtonText","onClickConfirm","confirmButtonText","confirmButtonVariant","showSpinner","disabled","disabledConfirmButton","defaultProps","ResourceRequests","resource","id","url","key","videoResources","videoId","videoResourcesAndLinks","cursor","query","publicUrl","addResource","success","error","always","fileId","data","type","invalidationKeys","updateResource","deleteResource","namespace","DeleteResourceView","dispatch","alerts","resourceId","parentId","location","actionType","entity","workflowPhase","phrase","options","name"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9630],{94644:(e,t,n)=>{n.d(t,{r:()=>l});var r=n(50242),a=n(81886),i=n(67058),o=n(14553),s=n(49267),u=n(49075),c={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:s.a,privacy:o.q},badRequest:u._,internalServerError:u._};function l(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({},c),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?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):n.internalServerError||a.Q.Ry.throw(new u._))}}},39902:(e,t,n)=>{n.d(t,{F:()=>v,f:()=>f});var r=n(32735),a=n(20354),i=n(75896);function o(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(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 s(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function l(e,t,n){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=50;function f(e,t){var n=i.m.chunk(e,d).map((function(e){return t(i.m.uniq(e))})),r=a.a.useBasicFetchAll(n),o=i.m.flatten(r.data),s=r.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},t.id,t))}),{}):null;return{itemsArr:o,items:s,isFetching:r.isFetching}}function v(e,t,n){var u,f,v,p,m=n||function(e){return"object"===c(e)?e.id:e},h=r.useRef(new Set),y=(v=r.useState([]),p=2,function(e){if(Array.isArray(e))return e}(v)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,s=[],u=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(e){c=!0,a=e}finally{try{if(!u&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return s}}(v,p)||s(v,p)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),b=y[0],g=y[1];r.useEffect((function(){if(null==e?void 0:e.length){var n=[];e.forEach((function(e){var t=m(e);h.current.has(t)||(n.push(e),h.current.add(t))})),n.length&&g((function(e){return[].concat(o(e),o(i.m.chunk(n,d).map(t)))}))}}),[null==e?void 0:e.length]);var A=a.a.useBasicFetchAll(b),w=i.m.flatten(A.data),C=A.data.length?w.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},m(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(f=null===(u=A.responses)||void 0===u?void 0:u[0])||void 0===f?void 0:f.hasCompleted),itemsArr:w,items:C,isFetching:A.isFetching}}},91286:(e,t,n)=>{n.d(t,{v:()=>o});var r=n(32735),a=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,n){var o=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){o.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[i(o),t,n])}},63719:(e,t,n)=>{n.d(t,{h:()=>s});var r=n(32735),a=n(77316);function i(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function s(e){var t,n,s=(t=r.useMemo((function(){return a.p.getBuilder()}),[]),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,s=[],u=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(e){c=!0,a=e}finally{try{if(!u&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return s}}(t,n)||i(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.")}()),u=s[0],c=(0,s[1])(u);return c&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||i(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(c),[Object.assign(Object.assign({},e),{active:!0})]):c}},10094:(e,t,n)=>{n.d(t,{F:()=>i});var r=n(97395),a=n(78417),i={chaptersAndSubtitles:function(e,t){var n={query:"subtitles,chapters",permissionFilterOption:a.r.StripMetadata,contentRegion:t};return{url:r._.urlBuilder("{gateway}/v1/objects/".concat(e),n),key:"videos:".concat(e,":subtitles:").concat(a.r.StripMetadata),formatData:function(e){return{subtitles:e.subtitles.data,chapters:e.chapters.data}}}},subtitleVtt:function(e,t){return{url:"{player}/srt-to-vtt?url=".concat(e),key:"subtitle:".concat(e),formatData:function(e){return Object.assign(Object.assign({},t),{vtt:e})}}}}},58321:(e,t,n)=>{n.d(t,{U:()=>p});var r=n(20354),a=n(16714),i=n(39151),o=n(1666),s=n(31949),u=n(22902),c=n(37802),l=n(22490),d=n(82431),f=n(46390),v=n(27638);function p(e){var t,n,p,m=e||{},h=m.locationContext,y=m.mtv,b=m.flightNamespace,g=m.sharedPlaylist,A=(0,f.G)().isPlugin,w=(0,v.u)(h,b),C=w.setFavourite,S=w.canFavourite,V=(0,c.r)(null),F=V.hasTopicDirectories,P=V.isLoadingSettings,I=(0,u.T)(),j=I.hasPermissions,k=I.isLoaded,L=j(a.C.StudentExperience),O=r.a.useBasicFetch(i.L.config()),R=r.a.useBasicFetch(s.N.currentUser()),E=r.a.useBasicFetch((null===(t=R.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(R.data.customerId));return{hasCommonVideoPropsCompleted:!P&&k&&O.hasCompleted&&R.hasCompleted&&(!(null===(n=R.data)||void 0===n?void 0:n.isAuthenticated)||E.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?g&&!(null===(t=R.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:y}):null},isPlugin:A,canFavourite:S,setFavourite:C,imageCdnUrl:null===(p=O.data)||void 0===p?void 0:p.imageCdnUrl,yearGroups:E.data,getClassroomGuideAppLink:l.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:l.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:l.W.getResourceGuidanceAppLink,showNewVideoIndicator:F,companyLogoFallbackUrl:null,hasStudentExperience:L}}}},35014:(e,t,n)=>{n.d(t,{I:()=>u});var r=n(16714),a=n(12754),i=n(22902),o=n(15311),s=n(11387);function u(){var e=(0,i.T)(),t=e.hasPermissions,n=e.hasLocalPermissions,u=(0,(0,o.r)().hasProduct)(a.x.Primary);return{canViewGlance:t(r.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:u&&t(r.C.ViewVideoInteractives),canViewClips:u&&t(r.C.ViewVideoClips),canViewCurriculumLinks:t(r.C.ViewCurriculums),canUseActions:n(r.E.UseVideoActions),canViewPublicLayout:!n(r.E.WatchVideos)&&s.C.hasRegionPrefix(),canViewResourceItems:n(r.E.ViewVideoResourceItems),canNavigate:u}}},97816:(e,t,n)=>{n.d(t,{V:()=>o});var r=n(1575),a=n(39902),i=n(31908);function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(i.M.isVideo(e)||i.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(i.M.isVideo(e)||i.M.isClip(e))})):[]:[]}(e).map((function(e){return e.id}));(0,a.F)(n,(function(e){return r.R.videoMixinAssocs(e,t.flightNamespace)}))}},69630:(e,t,n)=>{n.r(t),n.d(t,{PlayView:()=>W});var r=n(32735),a=n(50242),i=n(81886),o=n(23481),s=n(20354),u=n(28400),c=n(65858),l=n(78417),d=n(16714),f=n(67058),v=n(61990),p=n(33803),m=n(89454),h=n(43012),y=n(20768),b=n(98064),g=n(31949),A=n(1575),w=n(63719),C=n(26304),S=n(91286),V=n(22902),F=n(79612),P=n(37802),I=n(76753),j=n(14070),k=n(97291),L=n(10094),O=n(58321),R=n(82817),E=n(7179),x=n(49948),T=n(36873),B=n(86698),M=n(35014),q=n(97816),G=n(33192),U=n(22490),N=n(91442),_=n(57695),D=o.T.encloseNamespace("shared.play"),Q={notFound:v.l,forbidden:{privacy:p.G}};function W(e){var t,n,o,v,p,W,H,$,Y=e.queryParams,Z=Y.context,z=Y.contextId,J=Y.playNext,K=Y.mtv,X=(0,O.U)({locationContext:c.LZ.PlayPage,mtv:K}),ee=X.commonVideoProps,te=X.hasCommonVideoPropsCompleted,ne=(0,V.T)().hasPermissions,re=(0,B.y)().activePresentation,ae=(0,P.r)(null).hasPlayPageTranscript,ie=(0,M.I)(),oe=s.a.useBasicFetch(b.D.streamableLearning()),se=s.a.useBasicFetch(g.N.currentUser()),ue=s.a.useBasicFetch(A.R.video(e.id)),ce=s.a.useBasicFetch(ie.canViewClips&&h.e.videoClips(e.id)),le=s.a.useBasicFetch(ie.canViewInteractives&&y.b.videoInteractives(e.id)),de=s.a.useBasicFetch(re&&m.O.audiencesByPresentationId(re.id)),fe=ae&&!!(null===(n=null===(t=ue.data)||void 0===t?void 0:t._isClickViewCurated)||void 0===n?void 0:n.value),ve=s.a.useBasicFetch(fe&&(null===(o=se.data)||void 0===o?void 0:o.contentRegion)&&L.F.chaptersAndSubtitles(e.id,se.data.contentRegion)),pe=(null==ve?void 0:ve.data)||{},me=pe.subtitles,he=pe.chapters,ye=me&&me.length>0?me.map((function(e){return L.F.subtitleVtt(e.url,e)})):[],be=s.a.useBasicFetchAll(ye),ge=(0,N.a)(),Ae=s.a.useBasicFetch(ue.statusCode===a.o.Forbidden&&A.R.video(e.id,l.r.StripMetadata)),we=(0,R.M)(e.id),Ce=(0,T.k)({video:ue.data,context:Z,contextId:z,moviesAndTv:K,currentUser:se.data}),Se=(0,x.l)(e.id,!0),Ve=s.a.useBasicFetch(A.R.regionAlternatives(e.id)),Fe=(0,w.h)({name:null===(v=ue.data)||void 0===v?void 0:v.name});return(0,F.M)(I.CG.getVideoMetadata({content:ue.data,regionAlternatives:Ve.data,phraseContext:{phraseHandler:D,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:G.f.getCanonicalLink({stripPresentationSlug:!0,customAppLink:U.W.getAppLink(ue.data)}),allowIndexing:G.f.allowIndexing(),hrefLang:G.f.getContentHrefLang(Ve.data,(function(e,t){return{application:k.O.VIDEOS,action:j.e.Videos.PLAY_VIDEO,args:[e,u.m.slugify(t)]}}))})),(0,S.v)(ue,Q,{forbidden:!0}),(0,q.V)(null!==(p=Ce.videos)&&void 0!==p?p:[]),(0,E.P)({id:e.id,app:"videos"}),(0,C.b)(Ae),r.useEffect((function(){var e;ue.data&&oe.data&&(null===(e=ue.data.libraries)||void 0===e?void 0:e.data.find((function(e){return e.id===oe.data.objectId})))&&i.Q.Ry.throw(new f.d)}),[ue.hasCompleted,oe.hasCompleted]),ue.data&&se.hasCompleted&&Se.hasCompleted&&te?r.createElement(_.j,{video:ue.data,clips:null===(W=ce.data)||void 0===W?void 0:W.data,interactives:null===(H=le.data)||void 0===H?void 0:H.data,curriculums:we,relatedVideos:Ce,currentUser:se.data,pointsOfInterest:Se.items,playNext:J,featureAccess:ie,audiences:de.data,params:e.queryParams,canManageVideoAccess:ne(d.C.ManageVideoAccess),shouldShowSideTableOfContents:ge,tableOfContentsId:null===($=e.queryParams)||void 0===$?void 0:$.tocId,breadcrumbs:Fe,commonVideoProps:ee,hasTheatreMode:ae,shouldShowTranscript:fe,vttSubtitles:be.data||[],subtitles:me||[],chapters:he}):r.createElement(r.Fragment,null)}W.defaultProps={queryParams:{}}}}]);
|
|
2
|
-
//# sourceMappingURL=9630-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9630],{94644:(e,t,n)=>{n.d(t,{r:()=>l});var r=n(50242),a=n(81886),i=n(67058),o=n(14553),s=n(49267),u=n(49075),c={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:s.a,privacy:o.q},badRequest:u._,internalServerError:u._};function l(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({},c),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?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):n.internalServerError||a.Q.Ry.throw(new u._))}}},39902:(e,t,n)=>{n.d(t,{F:()=>v,f:()=>f});var r=n(32735),a=n(20354),i=n(75896);function o(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(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 s(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function l(e,t,n){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=50;function f(e,t){var n=i.m.chunk(e,d).map((function(e){return t(i.m.uniq(e))})),r=a.a.useBasicFetchAll(n),o=i.m.flatten(r.data),s=r.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},t.id,t))}),{}):null;return{itemsArr:o,items:s,isFetching:r.isFetching}}function v(e,t,n){var u,f,v,p,m=n||function(e){return"object"===c(e)?e.id:e},h=r.useRef(new Set),y=(v=r.useState([]),p=2,function(e){if(Array.isArray(e))return e}(v)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,s=[],u=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(e){c=!0,a=e}finally{try{if(!u&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return s}}(v,p)||s(v,p)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),b=y[0],g=y[1];r.useEffect((function(){if(null==e?void 0:e.length){var n=[];e.forEach((function(e){var t=m(e);h.current.has(t)||(n.push(e),h.current.add(t))})),n.length&&g((function(e){return[].concat(o(e),o(i.m.chunk(n,d).map(t)))}))}}),[null==e?void 0:e.length]);var A=a.a.useBasicFetchAll(b),w=i.m.flatten(A.data),C=A.data.length?w.reduce((function(e,t){return Object.assign(Object.assign({},e),l({},m(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(f=null===(u=A.responses)||void 0===u?void 0:u[0])||void 0===f?void 0:f.hasCompleted),itemsArr:w,items:C,isFetching:A.isFetching}}},91286:(e,t,n)=>{n.d(t,{v:()=>o});var r=n(32735),a=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,n){var o=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){o.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[i(o),t,n])}},63719:(e,t,n)=>{n.d(t,{h:()=>s});var r=n(32735),a=n(77316);function i(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function s(e){var t,n,s=(t=r.useMemo((function(){return a.p.getBuilder()}),[]),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,s=[],u=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(e){c=!0,a=e}finally{try{if(!u&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return s}}(t,n)||i(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.")}()),u=s[0],c=(0,s[1])(u);return c&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||i(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(c),[Object.assign(Object.assign({},e),{active:!0})]):c}},10094:(e,t,n)=>{n.d(t,{F:()=>i});var r=n(97395),a=n(78417),i={chaptersAndSubtitles:function(e,t){var n={query:"subtitles,chapters",permissionFilterOption:a.r.StripMetadata,contentRegion:t};return{url:r._.urlBuilder("{gateway}/v1/objects/".concat(e),n),key:"videos:".concat(e,":subtitles:").concat(a.r.StripMetadata),formatData:function(e){return{subtitles:e.subtitles.data,chapters:e.chapters.data}}}},subtitleVtt:function(e,t){return{url:"{player}/srt-to-vtt?url=".concat(e),key:"subtitle:".concat(e),formatData:function(e){return Object.assign(Object.assign({},t),{vtt:e})}}}}},58321:(e,t,n)=>{n.d(t,{U:()=>p});var r=n(20354),a=n(16714),i=n(39151),o=n(1666),s=n(31949),u=n(22902),c=n(37802),l=n(22490),d=n(82431),f=n(46390),v=n(27638);function p(e){var t,n,p,m=e||{},h=m.locationContext,y=m.mtv,b=m.flightNamespace,g=m.sharedPlaylist,A=(0,f.G)().isPlugin,w=(0,v.u)(h,b),C=w.setFavourite,S=w.canFavourite,V=(0,c.r)(null),F=V.hasTopicDirectories,P=V.isLoadingSettings,I=(0,u.T)(),j=I.hasPermissions,k=I.isLoaded,L=j(a.C.StudentExperience),O=r.a.useBasicFetch(i.L.config()),R=r.a.useBasicFetch(s.N.currentUser()),E=r.a.useBasicFetch((null===(t=R.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(R.data.customerId));return{hasCommonVideoPropsCompleted:!P&&k&&O.hasCompleted&&R.hasCompleted&&(!(null===(n=R.data)||void 0===n?void 0:n.isAuthenticated)||E.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?g&&!(null===(t=R.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:y}):null},isPlugin:A,canFavourite:S,setFavourite:C,imageCdnUrl:null===(p=O.data)||void 0===p?void 0:p.imageCdnUrl,yearGroups:E.data,getClassroomGuideAppLink:l.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:l.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:l.W.getResourceGuidanceAppLink,showNewVideoIndicator:F,companyLogoFallbackUrl:null,hasStudentExperience:L}}}},35014:(e,t,n)=>{n.d(t,{I:()=>u});var r=n(16714),a=n(12754),i=n(22902),o=n(15311),s=n(11387);function u(){var e=(0,i.T)(),t=e.hasPermissions,n=e.hasLocalPermissions,u=(0,(0,o.r)().hasProduct)(a.x.Primary);return{canViewGlance:t(r.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:u&&t(r.C.ViewVideoInteractives),canViewClips:u&&t(r.C.ViewVideoClips),canViewCurriculumLinks:t(r.C.ViewCurriculums),canUseActions:n(r.E.UseVideoActions),canViewPublicLayout:!n(r.E.WatchVideos)&&s.C.hasRegionPrefix(),canViewResourceItems:n(r.E.ViewVideoResourceItems),canNavigate:u}}},97816:(e,t,n)=>{n.d(t,{V:()=>o});var r=n(1575),a=n(39902),i=n(31908);function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(i.M.isVideo(e)||i.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(i.M.isVideo(e)||i.M.isClip(e))})):[]:[]}(e).map((function(e){return e.id}));(0,a.F)(n,(function(e){return r.R.videoMixinAssocs(e,t.flightNamespace)}))}},69630:(e,t,n)=>{n.r(t),n.d(t,{PlayView:()=>W});var r=n(32735),a=n(50242),i=n(81886),o=n(23481),s=n(20354),u=n(28400),c=n(65858),l=n(78417),d=n(16714),f=n(67058),v=n(61990),p=n(33803),m=n(89454),h=n(43012),y=n(20768),b=n(98064),g=n(31949),A=n(1575),w=n(63719),C=n(26304),S=n(91286),V=n(22902),F=n(79612),P=n(37802),I=n(76753),j=n(14070),k=n(97291),L=n(10094),O=n(58321),R=n(82817),E=n(7179),x=n(49948),T=n(36873),B=n(86698),M=n(35014),q=n(97816),G=n(33192),U=n(22490),N=n(91442),_=n(57695),D=o.T.encloseNamespace("shared.play"),Q={notFound:v.l,forbidden:{privacy:p.G}};function W(e){var t,n,o,v,p,W,H,$,Y,Z=e.queryParams,z=Z.context,J=Z.contextId,K=Z.playNext,X=Z.mtv,ee=(0,O.U)({locationContext:c.LZ.PlayPage,mtv:X}),te=ee.commonVideoProps,ne=ee.hasCommonVideoPropsCompleted,re=(0,V.T)().hasPermissions,ae=(0,B.y)().activePresentation,ie=(0,P.r)(null).hasPlayPageTranscript,oe=(0,M.I)(),se=s.a.useBasicFetch(b.D.streamableLearning()),ue=s.a.useBasicFetch(g.N.currentUser()),ce=s.a.useBasicFetch(A.R.video(e.id)),le=s.a.useBasicFetch(oe.canViewClips&&h.e.videoClips(e.id)),de=s.a.useBasicFetch(oe.canViewInteractives&&y.b.videoInteractives(e.id)),fe=s.a.useBasicFetch(ae&&m.O.audiencesByPresentationId(ae.id)),ve=ie&&!!(null===(n=null===(t=ce.data)||void 0===t?void 0:t._isClickViewCurated)||void 0===n?void 0:n.value),pe=s.a.useBasicFetch(ve&&(null===(o=ue.data)||void 0===o?void 0:o.contentRegion)&&L.F.chaptersAndSubtitles(e.id,ue.data.contentRegion)),me=(null==pe?void 0:pe.data)||{},he=me.subtitles,ye=me.chapters,be=he&&he.length>0?he.map((function(e){return L.F.subtitleVtt(e.url,e)})):[],ge=s.a.useBasicFetchAll(be),Ae=(0,N.a)(),we=s.a.useBasicFetch(ce.statusCode===a.o.Forbidden&&A.R.video(e.id,l.r.StripMetadata)),Ce=(0,R.M)(e.id),Se=(0,T.k)({video:ce.data,context:z,contextId:J,moviesAndTv:X,currentUser:ue.data}),Ve=(0,x.l)(e.id,!0),Fe=s.a.useBasicFetch(A.R.regionAlternatives(e.id)),Pe=(0,w.h)({name:null===(v=ce.data)||void 0===v?void 0:v.name});return(0,F.M)(I.CG.getVideoMetadata({content:ce.data,regionAlternatives:Fe.data,phraseContext:{phraseHandler:D,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:G.f.getCanonicalLink({stripPresentationSlug:!0,customAppLink:U.W.getAppLink(ce.data)}),allowIndexing:G.f.allowIndexing(),hrefLang:G.f.getContentHrefLang(Fe.data,(function(e,t){return{application:k.O.VIDEOS,action:j.e.Videos.PLAY_VIDEO,args:[e,u.m.slugify(t)]}}))})),(0,S.v)(ce,Q,{forbidden:!0}),(0,q.V)(null!==(p=Se.videos)&&void 0!==p?p:[]),(0,E.P)({id:e.id,app:"videos"}),(0,C.b)(we),r.useEffect((function(){var e;ce.data&&se.data&&(null===(e=ce.data.libraries)||void 0===e?void 0:e.data.find((function(e){return e.id===se.data.objectId})))&&i.Q.Ry.throw(new f.d)}),[ce.hasCompleted,se.hasCompleted]),ce.data&&ue.hasCompleted&&Ve.hasCompleted&&ne?r.createElement(_.j,{video:ce.data,clips:null===(W=le.data)||void 0===W?void 0:W.data,interactives:null===(H=de.data)||void 0===H?void 0:H.data,curriculums:Ce,relatedVideos:Se,currentUser:ue.data,pointsOfInterest:Ve.items,playNext:K,featureAccess:oe,audiences:fe.data,params:e.queryParams,canManageVideoAccess:re(d.C.ManageVideoAccess),shouldShowSideTableOfContents:Ae,tableOfContentsId:null===($=e.queryParams)||void 0===$?void 0:$.tocId,breadcrumbs:Pe,commonVideoProps:te,hasTheatreMode:ie,shouldShowTranscript:ve&&(null===(Y=ge.data)||void 0===Y?void 0:Y.length)>0,vttSubtitles:ge.data||[],subtitles:he||[],chapters:ye}):r.createElement(r.Fragment,null)}W.defaultProps={queryParams:{}}}}]);
|
|
2
|
+
//# sourceMappingURL=9630-cf529251e5-lite.chunk.js.map
|