@clickview/lite 0.82.0-rc.2 → 0.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{2258-lite-16c2b3509c.chunk.css → 275-lite-65ac7606d9.chunk.css} +1 -0
  3. package/dist/languages/en.json +1 -1
  4. package/dist/scripts/2126-1ef42f1367-lite.chunk.js +2 -0
  5. package/dist/scripts/{2126-94c739ca6b-lite.chunk.js.map → 2126-1ef42f1367-lite.chunk.js.map} +1 -1
  6. package/dist/scripts/275-3b6b9cfc9c-lite.chunk.js +3 -0
  7. package/dist/scripts/275-3b6b9cfc9c-lite.chunk.js.map +1 -0
  8. package/dist/scripts/4504-c7d0c4e1e7-lite.chunk.js +2 -0
  9. package/dist/scripts/{4504-5a8c62527f-lite.chunk.js.map → 4504-c7d0c4e1e7-lite.chunk.js.map} +1 -1
  10. package/dist/scripts/6741-1e64f67951-lite.chunk.js +3 -0
  11. package/dist/scripts/{6741-ae590891ba-lite.chunk.js.map → 6741-1e64f67951-lite.chunk.js.map} +1 -1
  12. package/dist/scripts/6948-b1b7f560c9-lite.chunk.js +3 -0
  13. package/dist/scripts/{6948-49f33f09c8-lite.chunk.js.map → 6948-b1b7f560c9-lite.chunk.js.map} +1 -1
  14. package/dist/scripts/{8-40155bcddb-lite.chunk.js → 8-a610fce3d1-lite.chunk.js} +2 -2
  15. package/dist/scripts/{8-40155bcddb-lite.chunk.js.map → 8-a610fce3d1-lite.chunk.js.map} +1 -1
  16. package/dist/scripts/{bundle-aff25c8310.min.js → bundle-1fa665690e.min.js} +3 -3
  17. package/dist/scripts/{bundle-aff25c8310.min.js.map → bundle-1fa665690e.min.js.map} +1 -1
  18. package/package.json +1 -1
  19. package/dist/scripts/2126-94c739ca6b-lite.chunk.js +0 -2
  20. package/dist/scripts/2258-3721ba5687-lite.chunk.js +0 -3
  21. package/dist/scripts/2258-3721ba5687-lite.chunk.js.map +0 -1
  22. package/dist/scripts/4504-5a8c62527f-lite.chunk.js +0 -2
  23. package/dist/scripts/6741-ae590891ba-lite.chunk.js +0 -3
  24. package/dist/scripts/6948-49f33f09c8-lite.chunk.js +0 -3
  25. /package/dist/scripts/{2258-3721ba5687-lite.chunk.js.LICENSE.txt → 275-3b6b9cfc9c-lite.chunk.js.LICENSE.txt} +0 -0
  26. /package/dist/scripts/{6741-ae590891ba-lite.chunk.js.LICENSE.txt → 6741-1e64f67951-lite.chunk.js.LICENSE.txt} +0 -0
  27. /package/dist/scripts/{6948-49f33f09c8-lite.chunk.js.LICENSE.txt → 6948-b1b7f560c9-lite.chunk.js.LICENSE.txt} +0 -0
  28. /package/dist/scripts/{bundle-aff25c8310.min.js.LICENSE.txt → bundle-1fa665690e.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2126],{22126:(e,t,n)=>{n.r(t),n.d(t,{MoviesAndTvView:()=>oe});var a=n(32735),i=n(23481),o=n(81886),r=n(20354),s=n(75896),l=n(28400),c=n(65858),d=n(49985),m=n(91693),u=n(83345),g=n(12754),p=n(35223);const v={link:"voPXM"};var h="moviesAndTV.exchangeAndTvLinks",f=i.T.encloseNamespace(h);function T(e){function t(){d.k.logUserAction({href:e.href},{actionType:c.Vw.Click,entity:c.py.Link,location:c.LZ.ExchangeLinksWidget})}var n={backgroundColor:e.backgroundColor};return e.backgroundImage&&(n.backgroundImage="url(".concat(e.backgroundImage,")")),a.createElement("div",{className:"d-flex justify-content-between align-items-center text-white p-3 mb-3 rounded-3 ".concat(v.link),style:n},a.createElement("a",{className:"h6 text-shadow mb-0",href:e.href,target:"_blank",onClick:t},e.title),a.createElement(m.h,{href:e.href,svgName:p.vn.NewWindow,openInNewTab:!0,className:"btn btn-outline-dark d-lg-block d-none",onClick:t},e.cta))}function k(e){if(e.products.isLoadingProducts||!e.products.hasProduct(g.x.Exchange)||"exchange_and_tv"!==e.exchangeTvProductOption)return a.createElement(a.Fragment,null);var t=e.products.products.data.find(function(e){return e.id===g.x.Exchange}).url;return a.createElement("div",null,a.createElement("div",{className:"curated-widget-header"},a.createElement("h2",{className:"h4 curated-widget-heading"},a.createElement(u.x,{namespace:h,phrase:"title"}))),a.createElement("div",{className:"row"},a.createElement("div",{className:"col-md-6 col-12"},a.createElement(T,{title:f("exchangeText"),cta:f("exchangeCta"),backgroundColor:"#7A76EB",backgroundImage:e.isPrimary?"":"https://img.clickviewapp.com/v2/thumbnails/7mqa32",href:t+"/exchange"})),a.createElement("div",{className:"col-md-6 col-12"},a.createElement(T,{title:f("tvText"),cta:f("tvCta"),backgroundColor:"#40BCC3",backgroundImage:e.isPrimary?"":"https://img.clickviewapp.com/v2/thumbnails/Eo3L1k",href:t+"/tv"}))))}var E=n(83914),b=n(36532),A=n(131),x=n(16714),w=n(72639),C=n(78479),P=n(42308),L=n(15311),y=n(56644),I=n(21366),N=n(97958),O="moviesAndTv.dashboardEmptyState",M=i.T.encloseNamespace(O);function S(e){var t,n,o=(null===(t=e.dashboard)||void 0===t?void 0:t.status)===y.GL.Archived;return a.createElement(N.u,null,a.createElement(N.u.Image,{src:e.imageUrl,altText:M("info")}),a.createElement(N.u.Heading,null,a.createElement(u.x,{namespace:O,phrase:"heading"})),a.createElement(N.u.Info,null,a.createElement(u.x,{namespace:O,phrase:"info"})),a.createElement(b.u,{title:o?i.T.getPhrase(O,"archivedCtaTooltip"):"",spanHack:!0},a.createElement(N.u.Cta,{text:i.T.getPhrase(O,"add"),appLink:null===(n=e.addWidgetApplink)||void 0===n?void 0:n.call(e),className:"btn btn-dark",icon:p.vn.Plus,disabled:o})))}const V={icon:"Kmx7z",title:"Hw1qq"};var R="moviesAndTv.dashboard",D=i.T.encloseNamespace(R);function H(e){var t,n,i,o=s.m.sortBy(null===(t=e.dashboard)||void 0===t?void 0:t.widgets,"index"),r=(0,L.r)().hasProduct,l=e.hasPermissions(x.C.Exchange)&&r(g.x.Exchange),c=e.isReadonly?o:o.filter(function(e){return e.templateId!==C.f.HeroBannerSmall&&e.widgetId!==P.z.Blurb||l});function d(t,n,a){var i=I.S.getWidgetParams(n,a,I.S.getDashboardTargetType(e.dashboard));return e.getWidgetContentRequest(t,i,a)}var m=e.isReadonly&&!(null==c?void 0:c.length);return a.createElement("div",{className:"px-4"},a.createElement("div",{className:"d-flex align-items-center"},a.createElement("div",{style:{backgroundImage:"url(".concat(e.moviesAndTvIconUrl,")")},className:"".concat(V.icon)}),a.createElement("h1",{className:"h2 ".concat(V.title," d-inline-block me-2")},a.createElement(u.x,{namespace:R,phrase:"heading"})),e.showPreviewingTooltip&&a.createElement("div",{className:"pt-1"},a.createElement(b.u,{title:D("tooltip"),spanHack:!0},a.createElement(E.x,{svgName:p.vn.Info})))),a.createElement("hr",{className:"mt-2"}),a.createElement(k,{exchangeTvProductOption:null===(n=e.settings)||void 0===n?void 0:n.exchangeTvProductOption,products:e.products,isPrimary:+w.p[null===(i=e.presentation)||void 0===i?void 0:i.learningLevel]===w.p.Level_1}),c.map(function(t,n){var i;return a.createElement(A.L,{widgetCollection:y.ku.MoviesAndTv,key:t.id,id:t.id,getContentRequest:d,audiences:e.audiences,name:t.name,description:t.description,templateId:t.templateId,metadata:t.metadata,presentation:e.presentation,appLinks:e.widgetAppLinks,isScrollToTargetWidget:(null==e?void 0:e.scrollToWidgetId)===t.id,widgetTypeId:t.widgetId,lazyLoad:e.lazyLoad,dashboardTarget:y.ku.MoviesAndTv,widgetIndex:n,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,isPreviewing:e.isReadonly,settings:{hasTopicDirectories:null===(i=e.settings)||void 0===i?void 0:i.hasTopicDirectories},imageCdnUrl:e.commonVideoProps.imageCdnUrl,commonVideoProps:e.commonVideoProps,classification:null,hasTableOfContents:!1,isEditing:!1,setIsEmpty:function(){},seeMoreLink:void 0,onClickRemoveItem:null,badgeComponent:null})}),m&&a.createElement(S,{dashboard:e.dashboard,isReadonly:e.isReadonly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.widgetAppLinks.widgetWizard}))}var W=n(17475),_=n(183),U=n(80889),B=n(31949),q=n(22902),z=n(79612),j=n(37802),F=n(76753),G=n(99742),Q=n(14070),X=n(97291),Z=n(58321),K=n(7179),Y=n(34181),$=n(23737),J=n(30241),ee=n(33192),te=n(22490),ne=n(82431),ae=i.T.encloseNamespace("moviesAndTV.moviesAndTV");function ie(e){return{rating:function(e,t){return{application:X.O.SEARCH,action:Q.e.Search.HOME,params:{moviesAndTv:!0,rating:W.S.getFrontendParamValue([s.m.first(t),e])}}},classification:function(e){return Y.L.getAppLink(e,{moviesAndTv:!0})},videoType:function(t,n){return te.W.getAppLink(t,Object.assign(Object.assign({},n),{moviesAndTv:!0,context:_.Q.Widget,includeContext:null==e?void 0:e.isAuthenticated}))},series:function(e){return ne.j.getSeriesAppLink(e,{mtv:!0})},company:function(e){return{application:X.O.MOVIES_AND_TV,action:Q.e.MoviesAndTv.COMPANY_DASHBOARD,args:[e.id,l.m.slugify(e.name)]}},latestReleases:function(){return null},allTopics:function(){return null},classificationLatestReleases:function(){return null},classificationDirectory:function(){return null},discover:function(){return null},widgetWizard:function(){return null},widgetVideoList:function(){return null},watchHistory:function(){return null}}}function oe(e){var t,n=(0,q.T)(),i=n.hasPermissions,s=n.hasLocalPermissions,l=(0,L.r)(),d=(0,j.r)(null),m=r.a.useBasicFetch(B.N.currentUser()),u=(0,Z.U)({locationContext:c.LZ.VideoThumbnail,mtv:!0}).commonVideoProps,g=i(x.C.ViewMoviesTv),p=(0,$.y)({targetType:y.ku.MoviesAndTv,queryParams:e.queryParams,presentationSlug:e.presentationSlug}),v=p.dashboard,h=p.presentation;return(0,K.P)({app:"movies-and-tv"}),(0,z.M)(F.CG.getDefaultMetadata({title:null==h?void 0:h.name,phraseContext:{phraseHandler:ae,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:ee.f.getCanonicalLink(),hrefLang:ee.f.getStaticRouteHrefLang(null==h?void 0:h.learningLevel,function(){return{application:X.O.MOVIES_AND_TV,action:Q.e.MoviesAndTv.HOME}},J.XA),allowIndexing:ee.f.allowIndexing()})),a.useEffect(function(){v.hasCompleted&&(g&&v.data||o.Q.C$.trigger({application:X.O.DASHBOARD,action:Q.e.Dashboard.HOME},{replace:!0}))},[g,v.data,v.hasCompleted]),a.createElement(a.Fragment,null,a.createElement(H,{dashboard:v.data,getWidgetContentRequest:U._.dashboardWidgetContent,presentation:h,showPreviewingTooltip:(null===(t=m.data)||void 0===t?void 0:t.isAuthenticated)&&!i(x.C.StudentExperience),moviesAndTvIconUrl:G.W.MoviesAndTv.DASHBOARD_ICON,widgetAppLinks:ie(m.data),hasPermissions:i,hasLocalPermissions:s,settings:d,products:l,commonVideoProps:u}))}}}]);
2
+ //# sourceMappingURL=2126-1ef42f1367-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/2126-94c739ca6b-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/movies-and-tv/components/exchange-and-tv-links/exchange-and-tv-links.scss","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/exchange-and-tv-links/ExchangeAndTvLinks.tsx","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/movies-and-tv-dashboard/empty-state/MoviesAndTvDashboardEmptyState.tsx","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/movies-and-tv-dashboard/movies-and-tv-dashboard.scss","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/movies-and-tv-dashboard/MoviesAndTvDashboard.tsx","file:///app/packages/projects/lite/src/apps/movies-and-tv/views/movies-and-tv-view/MoviesAndTvView.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"link\":\"voPXM\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UseProductsResponse } from 'libs/shared/hooks/UseProducts';\nimport { ExchangeTvProductOption } from 'libs/shared/interfaces/ExchangeTvProductOption';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './exchange-and-tv-links.scss';\n\nconst namespace = 'moviesAndTV.exchangeAndTvLinks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LinkProps {\n backgroundImage: string;\n backgroundColor: string;\n title: string;\n cta: string;\n href: string;\n}\n\nfunction Link(props: LinkProps): JSX.Element {\n function onClick(): void {\n AnalyticsHelper.logUserAction({ href: props.href }, {\n actionType: UserAction.Click,\n entity: EntityType.Link,\n location: LocationContext.ExchangeLinksWidget\n });\n }\n\n const style: React.CSSProperties = {\n backgroundColor: props.backgroundColor\n };\n\n if (props.backgroundImage)\n style.backgroundImage = `url(${props.backgroundImage})`;\n\n return (\n <div\n className={`d-flex justify-content-between align-items-center text-white p-3 mb-3 rounded-3 ${styles.link}`}\n style={style}\n >\n <a className='h6 text-shadow mb-0' href={props.href} target='_blank' onClick={onClick}>{props.title}</a>\n <IconButton\n href={props.href}\n svgName={cvSvgLibrary.NewWindow}\n openInNewTab\n className='btn btn-outline-dark d-lg-block d-none'\n onClick={onClick}\n >\n {props.cta}\n </IconButton>\n </div>\n );\n}\n\ninterface ExchangeAndTvLinksProps {\n isPrimary: boolean;\n exchangeTvProductOption: ExchangeTvProductOption;\n products: UseProductsResponse;\n}\n\nexport function ExchangeAndTvLinks(props: ExchangeAndTvLinksProps): JSX.Element {\n const shouldShow = (\n !props.products.isLoadingProducts &&\n props.products.hasProduct(ProductId.Exchange) &&\n props.exchangeTvProductOption === 'exchange_and_tv'\n );\n\n if (!shouldShow)\n return <></>;\n\n const exchangeUrl = props.products.products.data.find(p => p.id === ProductId.Exchange).url;\n\n return (\n <div>\n <div className='curated-widget-header'>\n <h2 className='h4 curated-widget-heading'>\n <Text namespace={namespace} phrase='title' />\n </h2>\n </div>\n <div className='row'>\n <div className='col-md-6 col-12'>\n <Link\n title={getPhrase('exchangeText')}\n cta={getPhrase('exchangeCta')}\n backgroundColor='#7A76EB'\n backgroundImage={props.isPrimary ? '' : 'https://img.clickviewapp.com/v2/thumbnails/7mqa32'}\n href={exchangeUrl + '/exchange'}\n />\n </div>\n <div className='col-md-6 col-12'>\n <Link\n title={getPhrase('tvText')}\n cta={getPhrase('tvCta')}\n backgroundColor='#40BCC3'\n backgroundImage={props.isPrimary ? '' : 'https://img.clickviewapp.com/v2/thumbnails/Eo3L1k'}\n href={exchangeUrl + '/tv'}\n />\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'moviesAndTv.dashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MoviesAndTvDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function MoviesAndTvDashboardEmptyState(props: MoviesAndTvDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={cvSvgLibrary.Plus}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"icon\":\"Kmx7z\",\"title\":\"Hw1qq\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ExchangeAndTvLinks } from 'libs/shared/apps/movies-and-tv/components/exchange-and-tv-links/ExchangeAndTvLinks';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllMoviesAndTvWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { useProducts, UseProductsResponse } from 'libs/shared/hooks/UseProducts';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { MoviesAndTvDashboardEmptyState } from './empty-state/MoviesAndTvDashboardEmptyState';\n\nimport styles from './movies-and-tv-dashboard.scss';\n\nconst namespace = 'moviesAndTv.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface MoviesAndDashboardProps {\n dashboard: CuratedDashboard;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n audiences?: PresentationAudience[];\n emptyImageUrl?: string;\n moviesAndTvIconUrl?: string;\n presentation: Presentation;\n widgetAppLinks?: AllMoviesAndTvWidgetTemplates['appLinks'] & {\n widgetWizard: () => Core.AppLink;\n };\n scrollToWidgetId?: string;\n isReadonly?: boolean;\n lazyLoad?: boolean;\n showPreviewingTooltip?: boolean;\n settings?: SettingsHash;\n products?: UseProductsResponse;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function MoviesAndTvDashboard(props: MoviesAndDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const { hasProduct } = useProducts();\n\n // todo replace with backend filtering widgets by permissions and products\n const hasExchange = props.hasPermissions(PermissionName.Exchange) && hasProduct(ProductId.Exchange);\n const filteredWidgets = props.isReadonly\n // in Curator every widget is visible\n ? widgets\n : widgets.filter(w =>\n (w.templateId !== WidgetTemplate.HeroBannerSmall && w.widgetId !== WidgetTypeId.Blurb)\n || hasExchange);\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const showEmptyState = props.isReadonly && !filteredWidgets?.length;\n\n return (\n <div className='px-4'>\n <div className='d-flex align-items-center'>\n <div style={{ backgroundImage: `url(${props.moviesAndTvIconUrl})` }} className={`${styles.icon}`}></div>\n <h1 className={`h2 ${styles.title} d-inline-block me-2`}>\n <Text namespace={namespace} phrase='heading' />\n </h1>\n {props.showPreviewingTooltip &&\n <div className='pt-1'>\n <Tooltip title={getPhrase('tooltip')} spanHack>\n <SvgContainer svgName={cvSvgLibrary.Info} />\n </Tooltip>\n </div>\n }\n </div>\n <hr className='mt-2'/>\n <ExchangeAndTvLinks\n exchangeTvProductOption={props.settings?.exchangeTvProductOption}\n products={props.products}\n isPrimary={+PresentationLearningLevel[props.presentation?.learningLevel] === PresentationLearningLevel.Level_1}\n />\n {filteredWidgets.map((widget, idx) => {\n return (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.MoviesAndTv}\n key={widget.id}\n id={widget.id}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n presentation={props.presentation}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n lazyLoad={props.lazyLoad}\n dashboardTarget={DashboardTargetType.MoviesAndTv}\n widgetIndex={idx}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadonly}\n settings={{\n hasTopicDirectories: props.settings?.hasTopicDirectories\n }}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n commonVideoProps={props.commonVideoProps}\n // TODO: Ideally we don't have to do this\n classification={null}\n hasTableOfContents={false}\n isEditing={false}\n setIsEmpty={() => {}}\n seeMoreLink={undefined}\n onClickRemoveItem={null}\n badgeComponent={null}\n />\n );\n })}\n\n {showEmptyState && (\n <MoviesAndTvDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { MoviesAndDashboardProps, MoviesAndTvDashboard } from 'libs/shared/apps/movies-and-tv/components/movies-and-tv-dashboard/MoviesAndTvDashboard';\nimport { RatingFilterHelper } from 'libs/shared/apps/search/utils/RatingFilterHelper';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Classification, Company, CurrentUser, DashboardTargetType, Rating, Series, VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { ClassificationAppLinkHelper } from 'shared/utils/ClassificationAppLinkHelper';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { REGIONAL_MTV_INDEXABILITY } from 'shared/utils/LiteRegionHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'moviesAndTV.moviesAndTV';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getMoviesAndTvAppLinks(currentUser: CurrentUser): MoviesAndDashboardProps['widgetAppLinks'] {\n return {\n rating: (rating: Rating, ratings: Rating[]) => {\n return {\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n moviesAndTv: true,\n rating: RatingFilterHelper.getFrontendParamValue([ ArrayHelper.first(ratings), rating ])\n }\n };\n },\n classification: (classification?: Classification) => (\n ClassificationAppLinkHelper.getAppLink(classification, { moviesAndTv: true })\n ),\n videoType: (video: VideoTypes, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n moviesAndTv: true,\n context: RelatedVideosContext.Widget,\n includeContext: currentUser?.isAuthenticated\n })\n ),\n \n series: (series: Series) => SeriesAppLinkHelper.getSeriesAppLink(series, { mtv: true }),\n\n company: (company: Company) => ({\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.COMPANY_DASHBOARD,\n args: [ company.id, TextHelper.slugify(company.name) ]\n }),\n \n // TODO: Find a nice way around having to pass these in\n latestReleases: () => null,\n allTopics: () => null,\n classificationLatestReleases: () => null,\n classificationDirectory: () => null,\n discover: () => null,\n widgetWizard: () => null,\n widgetVideoList: () => null,\n watchHistory: () => null\n };\n}\n\nexport interface MoviesAndTvProps {\n presentationSlug?: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function MoviesAndTvView(props: MoviesAndTvProps): JSX.Element {\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const products = useProducts();\n const settings = useSettings(null);\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const { commonVideoProps } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail,\n mtv: true\n });\n\n const hasMoviesAndTv = hasPermissions(PermissionName.ViewMoviesTv);\n\n const {\n dashboard,\n presentation\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.MoviesAndTv,\n queryParams: props.queryParams,\n presentationSlug: props.presentationSlug\n });\n\n useDeepLinks({ app: 'movies-and-tv' });\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: presentation?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n hrefLang: SeoHelper.getStaticRouteHrefLang(\n presentation?.learningLevel,\n () => ({ application: AppChannels.MOVIES_AND_TV, action: Actions.MoviesAndTv.HOME }),\n REGIONAL_MTV_INDEXABILITY\n ),\n allowIndexing: SeoHelper.allowIndexing()\n }));\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted)\n return;\n\n if (hasMoviesAndTv && dashboard.data)\n return;\n\n Core.AppLinkHelper.trigger(\n { application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME },\n { replace: true }\n );\n }, [ hasMoviesAndTv, dashboard.data, dashboard.hasCompleted ]);\n\n return (\n <>\n <MoviesAndTvDashboard\n dashboard={dashboard.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n presentation={presentation}\n showPreviewingTooltip={currentUser.data?.isAuthenticated && !hasPermissions(PermissionName.StudentExperience)}\n moviesAndTvIconUrl={ImageUrls.MoviesAndTv.DASHBOARD_ICON}\n widgetAppLinks={getMoviesAndTvAppLinks(currentUser.data)}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n settings={settings}\n products={products}\n commonVideoProps={commonVideoProps}\n />\n </>\n );\n}"],"names":["namespace","getPhrase","LanguageService","Link","props","onClick","AnalyticsHelper","href","actionType","entity","location","style","backgroundColor","backgroundImage","className","target","title","IconButton","svgName","openInNewTab","cta","ExchangeAndTvLinks","products","isLoadingProducts","hasProduct","ProductId","exchangeTvProductOption","exchangeUrl","data","find","p","id","url","Text","phrase","isPrimary","MoviesAndTvDashboardEmptyState","isArchived","dashboard","status","EmptyState","src","imageUrl","altText","Tooltip","spanHack","text","appLink","addWidgetApplink","icon","disabled","MoviesAndTvDashboard","widgets","ArrayHelper","hasExchange","hasPermissions","PermissionName","filteredWidgets","isReadonly","filter","w","templateId","WidgetTemplate","widgetId","WidgetTypeId","getWidgetContentRequest","widgetTypeId","template","params","showEmptyState","length","moviesAndTvIconUrl","showPreviewingTooltip","SvgContainer","settings","PresentationLearningLevel","presentation","learningLevel","map","widget","idx","WidgetContainerView","widgetCollection","key","getContentRequest","audiences","name","description","metadata","appLinks","widgetAppLinks","isScrollToTargetWidget","scrollToWidgetId","lazyLoad","dashboardTarget","widgetIndex","hasLocalPermissions","isPreviewing","hasTopicDirectories","imageCdnUrl","commonVideoProps","classification","hasTableOfContents","isEditing","setIsEmpty","seeMoreLink","undefined","onClickRemoveItem","badgeComponent","emptyImageUrl","widgetWizard","getMoviesAndTvAppLinks","currentUser","rating","ratings","application","action","moviesAndTv","RatingFilterHelper","ClassificationAppLinkHelper","videoType","video","opts","VideoAppLinkHelper","context","RelatedVideosContext","includeContext","isAuthenticated","series","SeriesAppLinkHelper","mtv","company","args","TextHelper","latestReleases","allTopics","classificationLatestReleases","classificationDirectory","discover","widgetVideoList","watchHistory","MoviesAndTvView","usePermissions","useSettings","UserRequests","useCommonVideoProps","locationContext","hasMoviesAndTv","targetType","queryParams","presentationSlug","useDeepLinks","app","useSetPageMetadata","PageMetadataHelper","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","hrefLang","allowIndexing","hasCompleted","replace","DashboardRequests","ImageUrls"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/2126-1ef42f1367-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/movies-and-tv/components/exchange-and-tv-links/exchange-and-tv-links.scss","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/exchange-and-tv-links/ExchangeAndTvLinks.tsx","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/movies-and-tv-dashboard/empty-state/MoviesAndTvDashboardEmptyState.tsx","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/movies-and-tv-dashboard/movies-and-tv-dashboard.scss","file:///app/packages/libs/shared/src/apps/movies-and-tv/components/movies-and-tv-dashboard/MoviesAndTvDashboard.tsx","file:///app/packages/projects/lite/src/apps/movies-and-tv/views/movies-and-tv-view/MoviesAndTvView.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"link\":\"voPXM\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UseProductsResponse } from 'libs/shared/hooks/UseProducts';\nimport { ExchangeTvProductOption } from 'libs/shared/interfaces/ExchangeTvProductOption';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './exchange-and-tv-links.scss';\n\nconst namespace = 'moviesAndTV.exchangeAndTvLinks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LinkProps {\n backgroundImage: string;\n backgroundColor: string;\n title: string;\n cta: string;\n href: string;\n}\n\nfunction Link(props: LinkProps): JSX.Element {\n function onClick(): void {\n AnalyticsHelper.logUserAction({ href: props.href }, {\n actionType: UserAction.Click,\n entity: EntityType.Link,\n location: LocationContext.ExchangeLinksWidget\n });\n }\n\n const style: React.CSSProperties = {\n backgroundColor: props.backgroundColor\n };\n\n if (props.backgroundImage)\n style.backgroundImage = `url(${props.backgroundImage})`;\n\n return (\n <div\n className={`d-flex justify-content-between align-items-center text-white p-3 mb-3 rounded-3 ${styles.link}`}\n style={style}\n >\n <a className='h6 text-shadow mb-0' href={props.href} target='_blank' onClick={onClick}>{props.title}</a>\n <IconButton\n href={props.href}\n svgName={cvSvgLibrary.NewWindow}\n openInNewTab\n className='btn btn-outline-dark d-lg-block d-none'\n onClick={onClick}\n >\n {props.cta}\n </IconButton>\n </div>\n );\n}\n\ninterface ExchangeAndTvLinksProps {\n isPrimary: boolean;\n exchangeTvProductOption: ExchangeTvProductOption;\n products: UseProductsResponse;\n}\n\nexport function ExchangeAndTvLinks(props: ExchangeAndTvLinksProps): JSX.Element {\n const shouldShow = (\n !props.products.isLoadingProducts &&\n props.products.hasProduct(ProductId.Exchange) &&\n props.exchangeTvProductOption === 'exchange_and_tv'\n );\n\n if (!shouldShow)\n return <></>;\n\n const exchangeUrl = props.products.products.data.find(p => p.id === ProductId.Exchange).url;\n\n return (\n <div>\n <div className='curated-widget-header'>\n <h2 className='h4 curated-widget-heading'>\n <Text namespace={namespace} phrase='title' />\n </h2>\n </div>\n <div className='row'>\n <div className='col-md-6 col-12'>\n <Link\n title={getPhrase('exchangeText')}\n cta={getPhrase('exchangeCta')}\n backgroundColor='#7A76EB'\n backgroundImage={props.isPrimary ? '' : 'https://img.clickviewapp.com/v2/thumbnails/7mqa32'}\n href={exchangeUrl + '/exchange'}\n />\n </div>\n <div className='col-md-6 col-12'>\n <Link\n title={getPhrase('tvText')}\n cta={getPhrase('tvCta')}\n backgroundColor='#40BCC3'\n backgroundImage={props.isPrimary ? '' : 'https://img.clickviewapp.com/v2/thumbnails/Eo3L1k'}\n href={exchangeUrl + '/tv'}\n />\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'moviesAndTv.dashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MoviesAndTvDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function MoviesAndTvDashboardEmptyState(props: MoviesAndTvDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={cvSvgLibrary.Plus}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"icon\":\"Kmx7z\",\"title\":\"Hw1qq\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ExchangeAndTvLinks } from 'libs/shared/apps/movies-and-tv/components/exchange-and-tv-links/ExchangeAndTvLinks';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllMoviesAndTvWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { useProducts, UseProductsResponse } from 'libs/shared/hooks/UseProducts';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { MoviesAndTvDashboardEmptyState } from './empty-state/MoviesAndTvDashboardEmptyState';\n\nimport styles from './movies-and-tv-dashboard.scss';\n\nconst namespace = 'moviesAndTv.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface MoviesAndDashboardProps {\n dashboard: CuratedDashboard;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n audiences?: PresentationAudience[];\n emptyImageUrl?: string;\n moviesAndTvIconUrl?: string;\n presentation: Presentation;\n widgetAppLinks?: AllMoviesAndTvWidgetTemplates['appLinks'] & {\n widgetWizard: () => Core.AppLink;\n };\n scrollToWidgetId?: string;\n isReadonly?: boolean;\n lazyLoad?: boolean;\n showPreviewingTooltip?: boolean;\n settings?: SettingsHash;\n products?: UseProductsResponse;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function MoviesAndTvDashboard(props: MoviesAndDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const { hasProduct } = useProducts();\n\n // todo replace with backend filtering widgets by permissions and products\n const hasExchange = props.hasPermissions(PermissionName.Exchange) && hasProduct(ProductId.Exchange);\n const filteredWidgets = props.isReadonly\n // in Curator every widget is visible\n ? widgets\n : widgets.filter(w =>\n (w.templateId !== WidgetTemplate.HeroBannerSmall && w.widgetId !== WidgetTypeId.Blurb)\n || hasExchange);\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const showEmptyState = props.isReadonly && !filteredWidgets?.length;\n\n return (\n <div className='px-4'>\n <div className='d-flex align-items-center'>\n <div style={{ backgroundImage: `url(${props.moviesAndTvIconUrl})` }} className={`${styles.icon}`}></div>\n <h1 className={`h2 ${styles.title} d-inline-block me-2`}>\n <Text namespace={namespace} phrase='heading' />\n </h1>\n {props.showPreviewingTooltip &&\n <div className='pt-1'>\n <Tooltip title={getPhrase('tooltip')} spanHack>\n <SvgContainer svgName={cvSvgLibrary.Info} />\n </Tooltip>\n </div>\n }\n </div>\n <hr className='mt-2'/>\n <ExchangeAndTvLinks\n exchangeTvProductOption={props.settings?.exchangeTvProductOption}\n products={props.products}\n isPrimary={+PresentationLearningLevel[props.presentation?.learningLevel] === PresentationLearningLevel.Level_1}\n />\n {filteredWidgets.map((widget, idx) => {\n return (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.MoviesAndTv}\n key={widget.id}\n id={widget.id}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n presentation={props.presentation}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n lazyLoad={props.lazyLoad}\n dashboardTarget={DashboardTargetType.MoviesAndTv}\n widgetIndex={idx}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadonly}\n settings={{\n hasTopicDirectories: props.settings?.hasTopicDirectories\n }}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n commonVideoProps={props.commonVideoProps}\n // TODO: Ideally we don't have to do this\n classification={null}\n hasTableOfContents={false}\n isEditing={false}\n setIsEmpty={() => {}}\n seeMoreLink={undefined}\n onClickRemoveItem={null}\n badgeComponent={null}\n />\n );\n })}\n\n {showEmptyState && (\n <MoviesAndTvDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { MoviesAndDashboardProps, MoviesAndTvDashboard } from 'libs/shared/apps/movies-and-tv/components/movies-and-tv-dashboard/MoviesAndTvDashboard';\nimport { RatingFilterHelper } from 'libs/shared/apps/search/utils/RatingFilterHelper';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Classification, Company, CurrentUser, DashboardTargetType, Rating, Series, VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { ClassificationAppLinkHelper } from 'shared/utils/ClassificationAppLinkHelper';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { REGIONAL_MTV_INDEXABILITY } from 'shared/utils/LiteRegionHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'moviesAndTV.moviesAndTV';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getMoviesAndTvAppLinks(currentUser: CurrentUser): MoviesAndDashboardProps['widgetAppLinks'] {\n return {\n rating: (rating: Rating, ratings: Rating[]) => {\n return {\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n moviesAndTv: true,\n rating: RatingFilterHelper.getFrontendParamValue([ ArrayHelper.first(ratings), rating ])\n }\n };\n },\n classification: (classification?: Classification) => (\n ClassificationAppLinkHelper.getAppLink(classification, { moviesAndTv: true })\n ),\n videoType: (video: VideoTypes, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n moviesAndTv: true,\n context: RelatedVideosContext.Widget,\n includeContext: currentUser?.isAuthenticated\n })\n ),\n \n series: (series: Series) => SeriesAppLinkHelper.getSeriesAppLink(series, { mtv: true }),\n\n company: (company: Company) => ({\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.COMPANY_DASHBOARD,\n args: [ company.id, TextHelper.slugify(company.name) ]\n }),\n \n // TODO: Find a nice way around having to pass these in\n latestReleases: () => null,\n allTopics: () => null,\n classificationLatestReleases: () => null,\n classificationDirectory: () => null,\n discover: () => null,\n widgetWizard: () => null,\n widgetVideoList: () => null,\n watchHistory: () => null\n };\n}\n\nexport interface MoviesAndTvProps {\n presentationSlug?: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function MoviesAndTvView(props: MoviesAndTvProps): JSX.Element {\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const products = useProducts();\n const settings = useSettings(null);\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const { commonVideoProps } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail,\n mtv: true\n });\n\n const hasMoviesAndTv = hasPermissions(PermissionName.ViewMoviesTv);\n\n const {\n dashboard,\n presentation\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.MoviesAndTv,\n queryParams: props.queryParams,\n presentationSlug: props.presentationSlug\n });\n\n useDeepLinks({ app: 'movies-and-tv' });\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: presentation?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n hrefLang: SeoHelper.getStaticRouteHrefLang(\n presentation?.learningLevel,\n () => ({ application: AppChannels.MOVIES_AND_TV, action: Actions.MoviesAndTv.HOME }),\n REGIONAL_MTV_INDEXABILITY\n ),\n allowIndexing: SeoHelper.allowIndexing()\n }));\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted)\n return;\n\n if (hasMoviesAndTv && dashboard.data)\n return;\n\n Core.AppLinkHelper.trigger(\n { application: AppChannels.DASHBOARD, action: Actions.Dashboard.HOME },\n { replace: true }\n );\n }, [ hasMoviesAndTv, dashboard.data, dashboard.hasCompleted ]);\n\n return (\n <>\n <MoviesAndTvDashboard\n dashboard={dashboard.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n presentation={presentation}\n showPreviewingTooltip={currentUser.data?.isAuthenticated && !hasPermissions(PermissionName.StudentExperience)}\n moviesAndTvIconUrl={ImageUrls.MoviesAndTv.DASHBOARD_ICON}\n widgetAppLinks={getMoviesAndTvAppLinks(currentUser.data)}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n settings={settings}\n products={products}\n commonVideoProps={commonVideoProps}\n />\n </>\n );\n}"],"names":["namespace","getPhrase","LanguageService","Link","props","onClick","AnalyticsHelper","href","actionType","entity","location","style","backgroundColor","backgroundImage","className","target","title","IconButton","svgName","openInNewTab","cta","ExchangeAndTvLinks","products","isLoadingProducts","hasProduct","ProductId","exchangeTvProductOption","exchangeUrl","data","find","p","id","url","Text","phrase","isPrimary","MoviesAndTvDashboardEmptyState","isArchived","dashboard","status","EmptyState","src","imageUrl","altText","Tooltip","spanHack","text","appLink","addWidgetApplink","icon","disabled","MoviesAndTvDashboard","widgets","ArrayHelper","hasExchange","hasPermissions","PermissionName","filteredWidgets","isReadonly","filter","w","templateId","WidgetTemplate","widgetId","WidgetTypeId","getWidgetContentRequest","widgetTypeId","template","params","showEmptyState","length","moviesAndTvIconUrl","showPreviewingTooltip","SvgContainer","settings","PresentationLearningLevel","presentation","learningLevel","map","widget","idx","WidgetContainerView","widgetCollection","key","getContentRequest","audiences","name","description","metadata","appLinks","widgetAppLinks","isScrollToTargetWidget","scrollToWidgetId","lazyLoad","dashboardTarget","widgetIndex","hasLocalPermissions","isPreviewing","hasTopicDirectories","imageCdnUrl","commonVideoProps","classification","hasTableOfContents","isEditing","setIsEmpty","seeMoreLink","undefined","onClickRemoveItem","badgeComponent","emptyImageUrl","widgetWizard","getMoviesAndTvAppLinks","currentUser","rating","ratings","application","action","moviesAndTv","RatingFilterHelper","ClassificationAppLinkHelper","videoType","video","opts","VideoAppLinkHelper","context","RelatedVideosContext","includeContext","isAuthenticated","series","SeriesAppLinkHelper","mtv","company","args","TextHelper","latestReleases","allTopics","classificationLatestReleases","classificationDirectory","discover","widgetVideoList","watchHistory","MoviesAndTvView","usePermissions","useSettings","UserRequests","useCommonVideoProps","locationContext","hasMoviesAndTv","targetType","queryParams","presentationSlug","useDeepLinks","app","useSetPageMetadata","PageMetadataHelper","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","hrefLang","allowIndexing","hasCompleted","replace","DashboardRequests","ImageUrls"],"sourceRoot":""}