@clickview/lite 0.104.0-rc.6 → 0.104.0-rc.7

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 (42) hide show
  1. package/dist/.vite/manifest.json +181 -180
  2. package/dist/bundles.json +1 -1
  3. package/dist/en.json +1 -1
  4. package/dist/scripts/{CEv1_bDW.chunk.js → -brFp4w1.chunk.js} +2 -2
  5. package/dist/scripts/{CEv1_bDW.chunk.js.map → -brFp4w1.chunk.js.map} +1 -1
  6. package/dist/scripts/B1hsuVfV2.chunk.js +2 -0
  7. package/dist/scripts/{BwBWuxjr2.chunk.js.map → B1hsuVfV2.chunk.js.map} +1 -1
  8. package/dist/scripts/{D9wxi5or2.chunk.js → B2_RD6Px2.chunk.js} +2 -2
  9. package/dist/scripts/{D9wxi5or2.chunk.js.map → B2_RD6Px2.chunk.js.map} +1 -1
  10. package/dist/scripts/{BgPye7Nd2.chunk.js → B338pwKt2.chunk.js} +2 -2
  11. package/dist/scripts/{BgPye7Nd2.chunk.js.map → B338pwKt2.chunk.js.map} +1 -1
  12. package/dist/scripts/{8JGe5Ug_2.chunk.js → B5GEXNkP2.chunk.js} +2 -2
  13. package/dist/scripts/{8JGe5Ug_2.chunk.js.map → B5GEXNkP2.chunk.js.map} +1 -1
  14. package/dist/scripts/BTWmC6pW.chunk.js +5 -0
  15. package/dist/scripts/BTWmC6pW.chunk.js.map +1 -0
  16. package/dist/scripts/{CV-fOLNI2.chunk.js → Bpf3Tyy12.chunk.js} +2 -2
  17. package/dist/scripts/{CV-fOLNI2.chunk.js.map → Bpf3Tyy12.chunk.js.map} +1 -1
  18. package/dist/scripts/{DPZnaz74.chunk.js → C1OiUBQI.chunk.js} +2 -2
  19. package/dist/scripts/{DPZnaz74.chunk.js.map → C1OiUBQI.chunk.js.map} +1 -1
  20. package/dist/scripts/{CjOMeOwb2.chunk.js → CGv0OFnc2.chunk.js} +2 -2
  21. package/dist/scripts/{CjOMeOwb2.chunk.js.map → CGv0OFnc2.chunk.js.map} +1 -1
  22. package/dist/scripts/{B82m7K0U.chunk.js → CJGWbJ4m.chunk.js} +2 -2
  23. package/dist/scripts/{B82m7K0U.chunk.js.map → CJGWbJ4m.chunk.js.map} +1 -1
  24. package/dist/scripts/Cr6TXzQQ2.chunk.js.map +1 -1
  25. package/dist/scripts/{CAD-W-lP.chunk.js → DFFJpTVB.chunk.js} +2 -2
  26. package/dist/scripts/{CAD-W-lP.chunk.js.map → DFFJpTVB.chunk.js.map} +1 -1
  27. package/dist/scripts/{DICsRDM42.chunk.js → Dz8KlJhf2.chunk.js} +2 -2
  28. package/dist/scripts/{DICsRDM42.chunk.js.map → Dz8KlJhf2.chunk.js.map} +1 -1
  29. package/dist/scripts/{D0b_r0MV.chunk.js → KjTtF4IH.chunk.js} +2 -2
  30. package/dist/scripts/{D0b_r0MV.chunk.js.map → KjTtF4IH.chunk.js.map} +1 -1
  31. package/dist/scripts/{app-DxHnJ6f2.js → app-CyGIKC-k.js} +3 -3
  32. package/dist/scripts/{app-DxHnJ6f2.js.map → app-CyGIKC-k.js.map} +1 -1
  33. package/dist/scripts/{Bkp6sdnZ2.chunk.js → dVOiGqhu2.chunk.js} +2 -2
  34. package/dist/scripts/{Bkp6sdnZ2.chunk.js.map → dVOiGqhu2.chunk.js.map} +1 -1
  35. package/dist/scripts/{DhdM2yGm.chunk.js → qRLSbnEr.chunk.js} +2 -2
  36. package/dist/scripts/{DhdM2yGm.chunk.js.map → qRLSbnEr.chunk.js.map} +1 -1
  37. package/dist/scripts/{BCqRKj1E2.chunk.js → s6NJOjzU2.chunk.js} +2 -2
  38. package/dist/scripts/{BCqRKj1E2.chunk.js.map → s6NJOjzU2.chunk.js.map} +1 -1
  39. package/package.json +1 -1
  40. package/dist/scripts/BwBWuxjr2.chunk.js +0 -2
  41. package/dist/scripts/DCT6XY8t.chunk.js +0 -5
  42. package/dist/scripts/DCT6XY8t.chunk.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{o as e}from"./DAXXjFlN.chunk.js";import{_ as t,y as n}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{n as r}from"./B785hxeE.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{u as s}from"./BX0wDJmp.chunk.js";import{t as c}from"./C1SLt-ar.chunk.js";import{y as l}from"./NlCAcBdo.chunk.js";import{r as u}from"./Cr6TXzQQ2.chunk.js";import{n as d}from"./CmcCVXi32.chunk.js";import{t as f}from"./DGmmTRu72.chunk.js";import{t as p}from"./CqrjHjAN.chunk.js";import{t as m}from"./eoAypzU3.chunk.js";import{t as h}from"./XIE88U01.chunk.js";import{t as g}from"./7-GJWRH82.chunk.js";import{n as _,t as v}from"./C6-aC3vu.chunk.js";import{t as y}from"./B3gsVN-_.chunk.js";import{t as b}from"./B_-pJtOI2.chunk.js";import{t as x}from"./Dsv4OsIs.chunk.js";import{t as S}from"./DewCxv4i.chunk.js";import{t as C}from"./B8gP8YoA.chunk.js";import{t as w}from"./DzgAvoez.chunk.js";import{t as T}from"./BnuuRu_J2.chunk.js";import{t as E}from"./DDiorDZl.chunk.js";import{t as D}from"./CY_30Xdt.chunk.js";import{t as O}from"./DCT6XY8t.chunk.js";import{o as k}from"./CpgHBpMp.chunk.js";import{n as A,t as j}from"./By1soXyj.chunk.js";import{t as M}from"./CC5Dr9aG.chunk.js";import{r as N}from"./yk6K0dmz2.chunk.js";import{n as P,t as F}from"./CvtZ8ZFA2.chunk.js";var I=e(i()),L=a();function R(e){let t=c.sortBy(e.dashboard?.widgets,`index`),{setEmptyWidget:n}=A(t);function i(t,n,r){let i=u.getWidgetParams(n,r,u.getDashboardTargetType(e.dashboard),void 0,void 0,{params:{objectId:e.objectData.id}});return e.getWidgetContentRequest(t,i,r)}let a=I.useCallback((e,t)=>{n(e,t)},[n]),o=E.getObjectBannerInfo(e.objectData);return(0,L.jsx)(L.Fragment,{children:!!t.length&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(D,{type:`partner-profile`,heading:o.heading,blockColourClass:o.blockColourClass,logo:o.logo,logoBgColour:o.logoBgColour,banner:o.banner,imageCdnUrl:e.commonVideoProps.imageCdnUrl,actions:e.getBannerActions?.(),onClickSignUp:e.onClickSignUp,isAuthenticated:e.isAuthenticated,isStudent:e.hasPermissions(r.StudentExperience)}),(0,L.jsx)(`div`,{className:`py-3 mb-3 border-bottom`,children:(0,L.jsx)(w,{breadcrumbs:e.breadcrumbs})}),(0,L.jsx)(`div`,{className:`mt-3`,children:t.map(t=>(0,L.jsx)(O,{widgetCollection:d.PartnerProfile,dashboardTarget:d.PartnerProfile,id:t.id,getContentRequest:i,name:t.name,description:t.description,templateId:t.templateId,metadata:t.metadata,appLinks:e.widgetAppLinks,widgetTypeId:t.widgetId,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,isPreviewing:e.isReadonly,settings:{hasTopicDirectories:e.settings?.hasTopicDirectories},commonVideoProps:e.commonVideoProps,audiences:e.audiences,setIsEmpty:a,lazyLoad:e.lazyLoad,settingsHash:e.settings,classification:null,hasTableOfContents:!1,seeMoreLink:null,onClickRemoveItem:null,badgeComponent:null},t.id))})]})})}function z(e){let r=P({location:F.VideoItem,presentationSlug:null}),{openInCurationStudioLabel:i,isUserCurator:a,getOpenInCurationStudioLink:c}=N(),{hasPermissions:u,hasLocalPermissions:w}=y(),E=f(null),{commonVideoProps:D}=T({locationContext:l.VideoThumbnail}),O=s(p.currentUser()),A=s(e.objectId&&x.objectDataById(e.objectId)),z=M({name:A.data?.name});v(_.getDefaultMetadata({title:`${A.data?.name}'s Hub`,allowIndexing:!0}));let{dashboard:B}=C({targetType:d.PartnerProfileHub,queryParams:{}});function V(){return a?[{label:i,href:c(B.data?.typeId,B.data?.id),openInNewTab:!0}]:[]}function H(e){n.trigger({application:o.SIGN_UP,action:m.SignUp.SIGN_UP,params:{email:e}})}let U=b.isBot(),W=A.hasCompleted&&B.hasCompleted;return I.useEffect(()=>{!B.hasCompleted||B.data||t.throw(new h)},[B.data,B.hasCompleted]),W?(0,L.jsx)(`div`,{className:`bg-white px-3 position-relative`,children:(0,L.jsx)(k.Provider,{value:r,children:(0,L.jsx)(R,{dashboard:B.data,objectData:A.data,getWidgetContentRequest:S.dashboardWidgetContent,breadcrumbs:z,commonVideoProps:D,getBannerActions:V,hasPermissions:u,hasLocalPermissions:w,settings:E,widgetAppLinks:j(O.data),emptyImageUrl:g.EmptyStates.WATCH_HISTORY,isBot:U,lazyLoad:!U,isAuthenticated:O.data?.isAuthenticated,onClickSignUp:H})})}):(0,L.jsx)(L.Fragment,{})}export{z as ContentPartnersDashboardHubView};
2
- //# sourceMappingURL=Bkp6sdnZ2.chunk.js.map
1
+ import{o as e}from"./DAXXjFlN.chunk.js";import{_ as t,y as n}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{n as r}from"./B785hxeE.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{u as s}from"./BX0wDJmp.chunk.js";import{t as c}from"./C1SLt-ar.chunk.js";import{y as l}from"./NlCAcBdo.chunk.js";import{r as u}from"./Cr6TXzQQ2.chunk.js";import{n as d}from"./CmcCVXi32.chunk.js";import{t as f}from"./DGmmTRu72.chunk.js";import{t as p}from"./CqrjHjAN.chunk.js";import{t as m}from"./eoAypzU3.chunk.js";import{t as h}from"./XIE88U01.chunk.js";import{t as g}from"./7-GJWRH82.chunk.js";import{n as _,t as v}from"./C6-aC3vu.chunk.js";import{t as y}from"./B3gsVN-_.chunk.js";import{t as b}from"./B_-pJtOI2.chunk.js";import{t as x}from"./Dsv4OsIs.chunk.js";import{t as S}from"./DewCxv4i.chunk.js";import{t as C}from"./B8gP8YoA.chunk.js";import{t as w}from"./DzgAvoez.chunk.js";import{t as T}from"./BnuuRu_J2.chunk.js";import{t as E}from"./DDiorDZl.chunk.js";import{t as D}from"./CY_30Xdt.chunk.js";import{t as O}from"./BTWmC6pW.chunk.js";import{o as k}from"./CpgHBpMp.chunk.js";import{n as A,t as j}from"./By1soXyj.chunk.js";import{t as M}from"./CC5Dr9aG.chunk.js";import{r as N}from"./yk6K0dmz2.chunk.js";import{n as P,t as F}from"./CvtZ8ZFA2.chunk.js";var I=e(i()),L=a();function R(e){let t=c.sortBy(e.dashboard?.widgets,`index`),{setEmptyWidget:n}=A(t);function i(t,n,r){let i=u.getWidgetParams(n,r,u.getDashboardTargetType(e.dashboard),void 0,void 0,{params:{objectId:e.objectData.id}});return e.getWidgetContentRequest(t,i,r)}let a=I.useCallback((e,t)=>{n(e,t)},[n]),o=E.getObjectBannerInfo(e.objectData);return(0,L.jsx)(L.Fragment,{children:!!t.length&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(D,{type:`partner-profile`,heading:o.heading,blockColourClass:o.blockColourClass,logo:o.logo,logoBgColour:o.logoBgColour,banner:o.banner,imageCdnUrl:e.commonVideoProps.imageCdnUrl,actions:e.getBannerActions?.(),onClickSignUp:e.onClickSignUp,isAuthenticated:e.isAuthenticated,isStudent:e.hasPermissions(r.StudentExperience)}),(0,L.jsx)(`div`,{className:`py-3 mb-3 border-bottom`,children:(0,L.jsx)(w,{breadcrumbs:e.breadcrumbs})}),(0,L.jsx)(`div`,{className:`mt-3`,children:t.map(t=>(0,L.jsx)(O,{widgetCollection:d.PartnerProfile,dashboardTarget:d.PartnerProfile,id:t.id,getContentRequest:i,name:t.name,description:t.description,templateId:t.templateId,metadata:t.metadata,appLinks:e.widgetAppLinks,widgetTypeId:t.widgetId,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,isPreviewing:e.isReadonly,settings:{hasTopicDirectories:e.settings?.hasTopicDirectories},commonVideoProps:e.commonVideoProps,audiences:e.audiences,setIsEmpty:a,lazyLoad:e.lazyLoad,settingsHash:e.settings,classification:null,hasTableOfContents:!1,seeMoreLink:null,onClickRemoveItem:null,badgeComponent:null},t.id))})]})})}function z(e){let r=P({location:F.VideoItem,presentationSlug:null}),{openInCurationStudioLabel:i,isUserCurator:a,getOpenInCurationStudioLink:c}=N(),{hasPermissions:u,hasLocalPermissions:w}=y(),E=f(null),{commonVideoProps:D}=T({locationContext:l.VideoThumbnail}),O=s(p.currentUser()),A=s(e.objectId&&x.objectDataById(e.objectId)),z=M({name:A.data?.name});v(_.getDefaultMetadata({title:`${A.data?.name}'s Hub`,allowIndexing:!0}));let{dashboard:B}=C({targetType:d.PartnerProfileHub,queryParams:{}});function V(){return a?[{label:i,href:c(B.data?.typeId,B.data?.id),openInNewTab:!0}]:[]}function H(e){n.trigger({application:o.SIGN_UP,action:m.SignUp.SIGN_UP,params:{email:e}})}let U=b.isBot(),W=A.hasCompleted&&B.hasCompleted;return I.useEffect(()=>{!B.hasCompleted||B.data||t.throw(new h)},[B.data,B.hasCompleted]),W?(0,L.jsx)(`div`,{className:`bg-white px-3 position-relative`,children:(0,L.jsx)(k.Provider,{value:r,children:(0,L.jsx)(R,{dashboard:B.data,objectData:A.data,getWidgetContentRequest:S.dashboardWidgetContent,breadcrumbs:z,commonVideoProps:D,getBannerActions:V,hasPermissions:u,hasLocalPermissions:w,settings:E,widgetAppLinks:j(O.data),emptyImageUrl:g.EmptyStates.WATCH_HISTORY,isBot:U,lazyLoad:!U,isAuthenticated:O.data?.isAuthenticated,onClickSignUp:H})})}):(0,L.jsx)(L.Fragment,{})}export{z as ContentPartnersDashboardHubView};
2
+ //# sourceMappingURL=dVOiGqhu2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Bkp6sdnZ2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard-hub/ContentPartnerDashboardHub.tsx","../../src/apps/content-partners/views/content-partners-dashboard-hub/ContentPartnersDashboardHubView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllPartnerProfileWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { useEmptyWidgets } from 'libs/shared/hooks/useEmptyWidgets';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { Company, CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, Person, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\ntype SupportedContentParterObject = Company | Person;\n\nexport interface ContentPartnerDashboardHubProps {\n dashboard: CuratedDashboard;\n objectData: SupportedContentParterObject;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n commonVideoProps: CommonVideoProps;\n getBannerActions?: () => ActionOptions[];\n breadcrumbs?: Breadcrumb[];\n isReadonly?: boolean;\n widgetAppLinks?: AllPartnerProfileWidgetTemplates['appLinks'];\n scrollToWidgetId?: string;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n settings?: AllPartnerProfileWidgetTemplates['settings'];\n audiences?: PresentationAudience[];\n emptyImageUrl?: string;\n lazyLoad?: boolean;\n isBot?: boolean;\n isComingSoon?: boolean;\n isPreviewing?: boolean;\n isAuthenticated?: boolean;\n onClickSignUp: (email: string) => void;\n}\n\nexport function ContentPartnerDashboardHub(props: ContentPartnerDashboardHubProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const { setEmptyWidget } = useEmptyWidgets(widgets);\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 undefined,\n undefined,\n {\n params: {\n objectId: props.objectData.id\n }\n }\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const onSetIsEmpty = React.useCallback((widgetId: string, isEmpty: boolean) => {\n setEmptyWidget(widgetId, isEmpty);\n }, [setEmptyWidget]);\n\n const bannerInfo = ContentPartnersHelper.getObjectBannerInfo(props.objectData);\n \n return (\n <>\n {!!widgets.length &&\n <>\n <BannerHeader\n type='partner-profile'\n heading={bannerInfo.heading}\n blockColourClass={bannerInfo.blockColourClass}\n logo={bannerInfo.logo}\n logoBgColour={bannerInfo.logoBgColour}\n banner={bannerInfo.banner}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n actions={props.getBannerActions?.()}\n onClickSignUp={props.onClickSignUp}\n isAuthenticated={props.isAuthenticated}\n isStudent={props.hasPermissions(PermissionName.StudentExperience)}\n />\n \n <div className='py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n\n <div className='mt-3'>\n {widgets.map(widget => (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.PartnerProfile}\n dashboardTarget={DashboardTargetType.PartnerProfile}\n key={widget.id}\n id={widget.id}\n getContentRequest={getWidgetContentRequest}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n appLinks={props.widgetAppLinks}\n widgetTypeId={widget.widgetId}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadonly}\n settings={{\n hasTopicDirectories: props.settings?.hasTopicDirectories\n }}\n commonVideoProps={props.commonVideoProps}\n audiences={props.audiences}\n setIsEmpty={onSetIsEmpty}\n lazyLoad={props.lazyLoad}\n settingsHash={props.settings}\n\n classification={null}\n hasTableOfContents={false}\n seeMoreLink={null}\n onClickRemoveItem={null}\n badgeComponent={null}\n />\n ))}\n </div>\n </>\n }\n </>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ContentPartnerDashboardHub } from 'libs/shared/apps/content-partners/components/content-partner-dashboard-hub/ContentPartnerDashboardHub';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Company, CurrentUser, DashboardTargetType, Person } from 'libs/shared/interfaces';\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 { ContentPartnersRequests } from 'shared/flight-requests/ContentPartnersRequests';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { getContentPartnerWidgetAppLinks } from 'apps/content-partners/utils/getContentPartnerWidgetAppLinks';\n\ninterface ContentPartnersDashboardHubViewProps {\n objectId: string;\n}\n\nexport function ContentPartnersDashboardHubView(props: ContentPartnersDashboardHubViewProps): JSX.Element {\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem, presentationSlug: null });\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const settings = useSettings(null);\n const { commonVideoProps } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail\n });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const objectData = Flight.useBasicFetch<Company | Person>(\n props.objectId && ContentPartnersRequests.objectDataById(props.objectId)\n );\n\n const breadcrumbs = useBreadcrumbs({ name: objectData.data?.name });\n\n useSetPageMetadata(\n PageMetadataHelper.getDefaultMetadata({\n title: `${objectData.data?.name}'s Hub`,\n allowIndexing: true\n })\n );\n \n const { dashboard } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.PartnerProfileHub,\n queryParams: {}\n });\n\n function getBannerActions(): ActionOptions[] {\n if (!isUserCurator)\n return [];\n\n return [{\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(dashboard.data?.typeId, dashboard.data?.id),\n openInNewTab: true\n }];\n }\n\n function onClickSignUp(email: string): void {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP,\n params: { email }\n });\n }\n\n const isBot = SeoHelper.isBot();\n\n const loaded = objectData.hasCompleted && dashboard.hasCompleted;\n \n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data) return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n if (!loaded)\n return <></>;\n\n return (\n <div className='bg-white px-3 position-relative'>\n <VideoActionsContext.Provider value={videoActions}>\n <ContentPartnerDashboardHub\n dashboard={dashboard.data}\n objectData={objectData.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n getBannerActions={getBannerActions}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n settings={settings}\n widgetAppLinks={getContentPartnerWidgetAppLinks(currentUser.data)}\n emptyImageUrl={ImageUrls.EmptyStates.WATCH_HISTORY}\n isBot={isBot}\n // Only lazy load if its an actual user\n lazyLoad={!isBot}\n isAuthenticated={currentUser.data?.isAuthenticated}\n onClickSignUp={onClickSignUp}\n />\n </VideoActionsContext.Provider>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dVOiGqhu2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard-hub/ContentPartnerDashboardHub.tsx","../../src/apps/content-partners/views/content-partners-dashboard-hub/ContentPartnersDashboardHubView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllPartnerProfileWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { useEmptyWidgets } from 'libs/shared/hooks/useEmptyWidgets';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { Company, CuratedDashboard, CuratedWidgetQueryParams, DashboardTargetType, Person, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\ntype SupportedContentParterObject = Company | Person;\n\nexport interface ContentPartnerDashboardHubProps {\n dashboard: CuratedDashboard;\n objectData: SupportedContentParterObject;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n commonVideoProps: CommonVideoProps;\n getBannerActions?: () => ActionOptions[];\n breadcrumbs?: Breadcrumb[];\n isReadonly?: boolean;\n widgetAppLinks?: AllPartnerProfileWidgetTemplates['appLinks'];\n scrollToWidgetId?: string;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n settings?: AllPartnerProfileWidgetTemplates['settings'];\n audiences?: PresentationAudience[];\n emptyImageUrl?: string;\n lazyLoad?: boolean;\n isBot?: boolean;\n isComingSoon?: boolean;\n isPreviewing?: boolean;\n isAuthenticated?: boolean;\n onClickSignUp: (email: string) => void;\n}\n\nexport function ContentPartnerDashboardHub(props: ContentPartnerDashboardHubProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const { setEmptyWidget } = useEmptyWidgets(widgets);\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 undefined,\n undefined,\n {\n params: {\n objectId: props.objectData.id\n }\n }\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const onSetIsEmpty = React.useCallback((widgetId: string, isEmpty: boolean) => {\n setEmptyWidget(widgetId, isEmpty);\n }, [setEmptyWidget]);\n\n const bannerInfo = ContentPartnersHelper.getObjectBannerInfo(props.objectData);\n \n return (\n <>\n {!!widgets.length &&\n <>\n <BannerHeader\n type='partner-profile'\n heading={bannerInfo.heading}\n blockColourClass={bannerInfo.blockColourClass}\n logo={bannerInfo.logo}\n logoBgColour={bannerInfo.logoBgColour}\n banner={bannerInfo.banner}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n actions={props.getBannerActions?.()}\n onClickSignUp={props.onClickSignUp}\n isAuthenticated={props.isAuthenticated}\n isStudent={props.hasPermissions(PermissionName.StudentExperience)}\n />\n \n <div className='py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n\n <div className='mt-3'>\n {widgets.map(widget => (\n <WidgetContainerView\n widgetCollection={DashboardTargetType.PartnerProfile}\n dashboardTarget={DashboardTargetType.PartnerProfile}\n key={widget.id}\n id={widget.id}\n getContentRequest={getWidgetContentRequest}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n appLinks={props.widgetAppLinks}\n widgetTypeId={widget.widgetId}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadonly}\n settings={{\n hasTopicDirectories: props.settings?.hasTopicDirectories\n }}\n commonVideoProps={props.commonVideoProps}\n audiences={props.audiences}\n setIsEmpty={onSetIsEmpty}\n lazyLoad={props.lazyLoad}\n settingsHash={props.settings}\n\n classification={null}\n hasTableOfContents={false}\n seeMoreLink={null}\n onClickRemoveItem={null}\n badgeComponent={null}\n />\n ))}\n </div>\n </>\n }\n </>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ContentPartnerDashboardHub } from 'libs/shared/apps/content-partners/components/content-partner-dashboard-hub/ContentPartnerDashboardHub';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Company, CurrentUser, DashboardTargetType, Person } from 'libs/shared/interfaces';\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 { ContentPartnersRequests } from 'shared/flight-requests/ContentPartnersRequests';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { getContentPartnerWidgetAppLinks } from 'apps/content-partners/utils/getContentPartnerWidgetAppLinks';\n\ninterface ContentPartnersDashboardHubViewProps {\n objectId: string;\n}\n\nexport function ContentPartnersDashboardHubView(props: ContentPartnersDashboardHubViewProps): JSX.Element {\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem, presentationSlug: null });\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const settings = useSettings(null);\n const { commonVideoProps } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail\n });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const objectData = Flight.useBasicFetch<Company | Person>(\n props.objectId && ContentPartnersRequests.objectDataById(props.objectId)\n );\n\n const breadcrumbs = useBreadcrumbs({ name: objectData.data?.name });\n\n useSetPageMetadata(\n PageMetadataHelper.getDefaultMetadata({\n title: `${objectData.data?.name}'s Hub`,\n allowIndexing: true\n })\n );\n \n const { dashboard } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.PartnerProfileHub,\n queryParams: {}\n });\n\n function getBannerActions(): ActionOptions[] {\n if (!isUserCurator)\n return [];\n\n return [{\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(dashboard.data?.typeId, dashboard.data?.id),\n openInNewTab: true\n }];\n }\n\n function onClickSignUp(email: string): void {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP,\n params: { email }\n });\n }\n\n const isBot = SeoHelper.isBot();\n\n const loaded = objectData.hasCompleted && dashboard.hasCompleted;\n \n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data) return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n if (!loaded)\n return <></>;\n\n return (\n <div className='bg-white px-3 position-relative'>\n <VideoActionsContext.Provider value={videoActions}>\n <ContentPartnerDashboardHub\n dashboard={dashboard.data}\n objectData={objectData.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n getBannerActions={getBannerActions}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n settings={settings}\n widgetAppLinks={getContentPartnerWidgetAppLinks(currentUser.data)}\n emptyImageUrl={ImageUrls.EmptyStates.WATCH_HISTORY}\n isBot={isBot}\n // Only lazy load if its an actual user\n lazyLoad={!isBot}\n isAuthenticated={currentUser.data?.isAuthenticated}\n onClickSignUp={onClickSignUp}\n />\n </VideoActionsContext.Provider>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{t as i}from"./BXTI9cmX.chunk.js";import{p as a,u as o}from"./BX0wDJmp.chunk.js";import{N as s,U as c,l,y as u,z as d}from"./NlCAcBdo.chunk.js";import{t as f}from"./DTGfiG8Y.chunk.js";import{t as p}from"./eoAypzU3.chunk.js";import{t as m}from"./D_gWf2lC.chunk.js";import{t as h}from"./CZbN8PTA.chunk.js";import{t as g}from"./_GCZ-60i.chunk.js";import{n as _}from"./CsF4wDV1.chunk.js";import{t as v}from"./BocITs4B.chunk.js";import{t as y}from"./DB_BawmH2.chunk.js";import{t as b}from"./QCFxJYkI2.chunk.js";import{t as x}from"./CDeqAwMc.chunk.js";import{n as S}from"./OL3Z6Yp62.chunk.js";import{t as C}from"./CCdnFnNP.chunk.js";import{t as w}from"./BwBWuxjr2.chunk.js";import{n as T,r as E}from"./DVznXaHs2.chunk.js";import{t as D}from"./BcowK7-k.chunk.js";import{a as O,i as k,n as A,o as j,r as M,s as N,t as P}from"./B7tOc2Li.chunk.js";import{t as F}from"./rC7x7DZa.chunk.js";import{t as I}from"./c5Sk9vVu.chunk.js";var L=e(n());function R(){let{activePresentation:e}=h();return e?.type===f.StreamableLearning?y.ClickViewLive:y.ClickView}var z=r();function B(e){let n=a(),r=S(_.BrazeClient),{trialAppLinkString:f}=D(),[h,y]=L.useState(`lg`),[B,V]=L.useState(),{createOrUpdateProfile:H}=F(),U=R(),W=o(m.config()),G=T(),K=o(G?.countryCode&&E.globalIdps(G.countryCode,b.Primary)),q=P(),{entryPage:J}=w();async function Y(e){let t=await n(I.getLookups(e));return C.getCrmId(t)}function X(){e.closePopup();let t=k.filterBlacklistedKeys(B);g.logUserAction(t||{},{actionType:d.Click,location:u.SignUpPopup,entity:l.SignUp,descriptor:s.ClosePopup,workflowPhase:c.Discard})}function Z(e){if(V(e),e.currentStepId===`completed`){y(void 0);return}h!==`lg`&&y(`lg`)}return!W.hasCompleted||!G||!q||!K.hasCompleted?(0,z.jsx)(z.Fragment,{}):(0,z.jsx)(x,{show:!0,onHide:X,size:h,children:(0,z.jsx)(x.Body,{className:`mx-auto p-0 ${O.modalBody} w-100 position-relative`,children:(0,z.jsx)(M,{signupVariant:U,initialValues:{email:e.email},onStepUpdate:Z,pageAppLinkString:f,entryPage:J,close:X,type:j.Popup,location:u.SignUpPopup,googleMapsApiKey:W.data.googleMapsApiKey,geoLocation:G,imageUrls:A,ajaxUrls:q,productName:N.Lite,getSignInUrl:e=>t.getHref({application:i.DEFAULT,action:p.Default.CHALLENGE,params:e}),globalIdps:K.data,logBrazeEvent:e=>v.logBrazeEvent(r,e),createOrUpdateProfile:H,getCrmIdForProspect:Y})})})}export{B as StartSignUpView};
2
- //# sourceMappingURL=DhdM2yGm.chunk.js.map
1
+ import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{t as i}from"./BXTI9cmX.chunk.js";import{p as a,u as o}from"./BX0wDJmp.chunk.js";import{N as s,U as c,l,y as u,z as d}from"./NlCAcBdo.chunk.js";import{t as f}from"./DTGfiG8Y.chunk.js";import{t as p}from"./eoAypzU3.chunk.js";import{t as m}from"./D_gWf2lC.chunk.js";import{t as h}from"./CZbN8PTA.chunk.js";import{t as g}from"./_GCZ-60i.chunk.js";import{n as _}from"./CsF4wDV1.chunk.js";import{t as v}from"./BocITs4B.chunk.js";import{t as y}from"./DB_BawmH2.chunk.js";import{t as b}from"./QCFxJYkI2.chunk.js";import{t as x}from"./CDeqAwMc.chunk.js";import{n as S}from"./OL3Z6Yp62.chunk.js";import{t as C}from"./CCdnFnNP.chunk.js";import{t as w}from"./B1hsuVfV2.chunk.js";import{n as T,r as E}from"./DVznXaHs2.chunk.js";import{t as D}from"./BcowK7-k.chunk.js";import{a as O,i as k,n as A,o as j,r as M,s as N,t as P}from"./B7tOc2Li.chunk.js";import{t as F}from"./rC7x7DZa.chunk.js";import{t as I}from"./c5Sk9vVu.chunk.js";var L=e(n());function R(){let{activePresentation:e}=h();return e?.type===f.StreamableLearning?y.ClickViewLive:y.ClickView}var z=r();function B(e){let n=a(),r=S(_.BrazeClient),{trialAppLinkString:f}=D(),[h,y]=L.useState(`lg`),[B,V]=L.useState(),{createOrUpdateProfile:H}=F(),U=R(),W=o(m.config()),G=T(),K=o(G?.countryCode&&E.globalIdps(G.countryCode,b.Primary)),q=P(),{entryPage:J}=w();async function Y(e){let t=await n(I.getLookups(e));return C.getCrmId(t)}function X(){e.closePopup();let t=k.filterBlacklistedKeys(B);g.logUserAction(t||{},{actionType:d.Click,location:u.SignUpPopup,entity:l.SignUp,descriptor:s.ClosePopup,workflowPhase:c.Discard})}function Z(e){if(V(e),e.currentStepId===`completed`){y(void 0);return}h!==`lg`&&y(`lg`)}return!W.hasCompleted||!G||!q||!K.hasCompleted?(0,z.jsx)(z.Fragment,{}):(0,z.jsx)(x,{show:!0,onHide:X,size:h,children:(0,z.jsx)(x.Body,{className:`mx-auto p-0 ${O.modalBody} w-100 position-relative`,children:(0,z.jsx)(M,{signupVariant:U,initialValues:{email:e.email},onStepUpdate:Z,pageAppLinkString:f,entryPage:J,close:X,type:j.Popup,location:u.SignUpPopup,googleMapsApiKey:W.data.googleMapsApiKey,geoLocation:G,imageUrls:A,ajaxUrls:q,productName:N.Lite,getSignInUrl:e=>t.getHref({application:i.DEFAULT,action:p.Default.CHALLENGE,params:e}),globalIdps:K.data,logBrazeEvent:e=>v.logBrazeEvent(r,e),createOrUpdateProfile:H,getCrmIdForProspect:Y})})})}export{B as StartSignUpView};
2
+ //# sourceMappingURL=qRLSbnEr.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DhdM2yGm.chunk.js","names":[],"sources":["../../src/apps/sign-up/hooks/useGetSignUpVariant.ts","../../src/apps/sign-up/views/StartSignUpView.tsx"],"sourcesContent":["import { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { SignUpVariant } from 'libs/shared/enums/SignUpVariant';\n\nimport { useActivePresentation } from 'shared/hooks/presentations/useActivePresentation';\n\nexport function useGetSignUpVariant(): SignUpVariant {\n const { activePresentation } = useActivePresentation();\n\n if (activePresentation?.type === PresentationType.StreamableLearning)\n return SignUpVariant.ClickViewLive;\n\n return SignUpVariant.ClickView;\n}\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/flight';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useInstanceSafe } from 'libs/common/react/hooks/UseInstance';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { MultiStepForm } from 'libs/shared/apps/sign-up/components/multi-step-form/MultiStepForm';\nimport { MultiStepFormTypes } from 'libs/shared/apps/sign-up/enums/MultiStepFormTypes';\nimport { ProspectLookup } from 'libs/shared/apps/sign-up/enums/ProspectLookup';\nimport { SignUpProduct } from 'libs/shared/apps/sign-up/enums/SignUpProduct';\nimport { DataHelper } from 'libs/shared/apps/sign-up/helpers/DataHelper';\nimport { SignUpState } from 'libs/shared/apps/sign-up/hooks/useSignUpSteps/interfaces/SignUpState';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport styles from 'libs/shared/apps/sign-up/layouts/popup-layout/popup-layout.module.scss';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { AuthRequests } from 'libs/shared/flight-requests/AuthRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useGeoLocation } from 'libs/shared/hooks/useGeoLocation';\nimport { useProfileApiClient } from 'libs/shared/hooks/UseProfileApiClient';\nimport { Config } from 'libs/shared/interfaces';\nimport { BrazeClientService } from 'libs/shared/services/BrazeClientService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { LiteBrazeHelper } from 'shared/utils/LiteBrazeHelper';\n\nimport { SignUpImages } from 'apps/sign-up/helpers/SignUpImages';\nimport { useGetSignUpAjaxUrls } from 'apps/sign-up/hooks/useGetSignUpAjaxUrls';\nimport { useGetSignUpVariant } from 'apps/sign-up/hooks/useGetSignUpVariant';\nimport { useTrialAppLink } from 'apps/sign-up/hooks/useTrialAppLink';\n\nimport { UpgradeRequests } from '../flight-requests/UpgradeRequests';\nimport { useSignUpEntry } from '../hooks/useSignUpEntry';\nimport { SignUpHelper } from '../utils/SignUpHelper';\n\ninterface StartSignUpViewProps {\n email?: string;\n closePopup: () => void;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StartSignUpView(props: StartSignUpViewProps): JSX.Element {\n const fetchAsync = useGetFetchAsync();\n const brazeClientService = useInstanceSafe<BrazeClientService>(SharedServices.BrazeClient);\n const { trialAppLinkString } = useTrialAppLink();\n const [ modalSize, setModalSize ] = React.useState<'lg' | 'sm' | 'xl'>('lg');\n const [ data, setData ] = React.useState<SignUpState>();\n const { createOrUpdateProfile } = useProfileApiClient();\n const signupVariant = useGetSignUpVariant();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const geoLocation = useGeoLocation();\n const globalIdps = Flight.useBasicFetch<IdentityProvider[]>(\n geoLocation?.countryCode && AuthRequests.globalIdps(geoLocation.countryCode, ProductId.Primary)\n );\n \n const ajaxUrls = useGetSignUpAjaxUrls();\n const { entryPage } = useSignUpEntry();\n\n async function getCrmIdForProspect(prospectId: string): Promise<string> {\n const response = await fetchAsync<ProspectLookup[]>(UpgradeRequests.getLookups(prospectId));\n return SignUpHelper.getCrmId(response);\n }\n\n function onHide(): void {\n props.closePopup();\n const dataWithoutPII = DataHelper.filterBlacklistedKeys(data);\n AnalyticsHelper.logUserAction(dataWithoutPII || {}, {\n actionType: UserAction.Click,\n location: LocationContext.SignUpPopup,\n entity: EntityType.SignUp,\n descriptor: SignUpDescriptors.ClosePopup,\n workflowPhase: WorkflowPhase.Discard\n });\n }\n\n function onStepUpdate(data: SignUpState) {\n setData(data);\n\n if (data.currentStepId === 'completed') {\n setModalSize(undefined);\n return;\n }\n\n if (modalSize !== 'lg')\n setModalSize('lg');\n }\n\n if (!config.hasCompleted || !geoLocation || !ajaxUrls || !globalIdps.hasCompleted)\n return <></>;\n\n return (\n <Modal\n show\n onHide={onHide}\n size={modalSize}\n >\n <Modal.Body className={`mx-auto p-0 ${styles.modalBody} w-100 position-relative`}>\n <MultiStepForm\n signupVariant={signupVariant}\n initialValues={{ email: props.email }}\n \n onStepUpdate={onStepUpdate}\n pageAppLinkString={trialAppLinkString}\n entryPage={entryPage}\n close={onHide}\n \n type={MultiStepFormTypes.Popup}\n location={LocationContext.SignUpPopup}\n\n googleMapsApiKey={config.data.googleMapsApiKey}\n geoLocation={geoLocation}\n imageUrls={SignUpImages}\n ajaxUrls={ajaxUrls}\n productName={SignUpProduct.Lite}\n getSignInUrl={options => Core.AppLinkHelper.getHref({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params: options\n })}\n globalIdps={globalIdps.data}\n logBrazeEvent={options => LiteBrazeHelper.logBrazeEvent(brazeClientService, options)}\n createOrUpdateProfile={createOrUpdateProfile}\n getCrmIdForProspect={getCrmIdForProspect}\n />\n </Modal.Body>\n </Modal>\n );\n}\n"],"mappings":"qmCAKA,SAAgB,GAAqC,CACnD,GAAM,CAAE,sBAAuB,EAAsB,EAKrD,OAHI,GAAoB,OAAS,EAAiB,mBACzC,EAAc,cAEhB,EAAc,SACvB,WCmCA,SAAgB,EAAgB,EAA0C,CACxE,IAAM,EAAa,EAAiB,EAC9B,EAAqB,EAAoC,EAAe,WAAW,EACnF,CAAE,sBAAuB,EAAgB,EACzC,CAAE,EAAW,GAAA,EAAuB,SAA6B,IAAI,EACrE,CAAE,EAAM,GAAA,EAAkB,SAAsB,EAChD,CAAE,yBAA0B,EAAoB,EAChD,EAAgB,EAAoB,EAEpC,EAAS,EAA6B,EAAe,OAAO,CAAC,EAE7D,EAAc,EAAe,EAC7B,EAAa,EACjB,GAAa,aAAe,EAAa,WAAW,EAAY,YAAa,EAAU,OAAO,CAChG,EAEM,EAAW,EAAqB,EAChC,CAAE,aAAc,EAAe,EAErC,eAAe,EAAoB,EAAqC,CACtE,IAAM,EAAW,MAAM,EAA6B,EAAgB,WAAW,CAAU,CAAC,EAC1F,OAAO,EAAa,SAAS,CAAQ,CACvC,CAEA,SAAS,GAAe,CACtB,EAAM,WAAW,EACjB,IAAM,EAAiB,EAAW,sBAAsB,CAAI,EAC5D,EAAgB,cAAc,GAAkB,CAAC,EAAG,CAClD,WAAY,EAAW,MACvB,SAAU,EAAgB,YAC1B,OAAQ,EAAW,OACnB,WAAY,EAAkB,WAC9B,cAAe,EAAc,OAC/B,CAAC,CACH,CAEA,SAAS,EAAa,EAAmB,CAGvC,GAFA,EAAQ,CAAI,EAER,EAAK,gBAAkB,YAAa,CACtC,EAAa,IAAA,EAAS,EACtB,MACF,CAEI,IAAc,MAChB,EAAa,IAAI,CACrB,CAKA,MAHI,CAAC,EAAO,cAAgB,CAAC,GAAe,CAAC,GAAY,CAAC,EAAW,cAC5D,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,GAGX,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAA,GACQ,SACR,KAAM,YAEN,EAAA,EAAA,IAAA,CAAC,EAAM,KAAP,CAAY,UAAW,eAAe,EAAO,UAAU,oCACrD,EAAA,EAAA,IAAA,CAAC,EAAD,CACiB,gBACf,cAAe,CAAE,MAAO,EAAM,KAAM,EAEtB,eACd,kBAAmB,EACR,YACX,MAAO,EAEP,KAAM,EAAmB,MACzB,SAAU,EAAgB,YAE1B,iBAAkB,EAAO,KAAK,iBACjB,cACb,UAAW,EACD,WACV,YAAa,EAAc,KAC3B,aAAc,GAAA,EAA8B,QAAQ,CAClD,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,UACxB,OAAQ,CACV,CAAC,EACD,WAAY,EAAW,KACvB,cAAe,GAAW,EAAgB,cAAc,EAAoB,CAAO,EAC5D,wBACF,qBACtB,CAAA,CACS,CAAA,CACP,CAAA,CAEX"}
1
+ {"version":3,"file":"qRLSbnEr.chunk.js","names":[],"sources":["../../src/apps/sign-up/hooks/useGetSignUpVariant.ts","../../src/apps/sign-up/views/StartSignUpView.tsx"],"sourcesContent":["import { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { SignUpVariant } from 'libs/shared/enums/SignUpVariant';\n\nimport { useActivePresentation } from 'shared/hooks/presentations/useActivePresentation';\n\nexport function useGetSignUpVariant(): SignUpVariant {\n const { activePresentation } = useActivePresentation();\n\n if (activePresentation?.type === PresentationType.StreamableLearning)\n return SignUpVariant.ClickViewLive;\n\n return SignUpVariant.ClickView;\n}\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/flight';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useInstanceSafe } from 'libs/common/react/hooks/UseInstance';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { MultiStepForm } from 'libs/shared/apps/sign-up/components/multi-step-form/MultiStepForm';\nimport { MultiStepFormTypes } from 'libs/shared/apps/sign-up/enums/MultiStepFormTypes';\nimport { ProspectLookup } from 'libs/shared/apps/sign-up/enums/ProspectLookup';\nimport { SignUpProduct } from 'libs/shared/apps/sign-up/enums/SignUpProduct';\nimport { DataHelper } from 'libs/shared/apps/sign-up/helpers/DataHelper';\nimport { SignUpState } from 'libs/shared/apps/sign-up/hooks/useSignUpSteps/interfaces/SignUpState';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport styles from 'libs/shared/apps/sign-up/layouts/popup-layout/popup-layout.module.scss';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { AuthRequests } from 'libs/shared/flight-requests/AuthRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useGeoLocation } from 'libs/shared/hooks/useGeoLocation';\nimport { useProfileApiClient } from 'libs/shared/hooks/UseProfileApiClient';\nimport { Config } from 'libs/shared/interfaces';\nimport { BrazeClientService } from 'libs/shared/services/BrazeClientService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { LiteBrazeHelper } from 'shared/utils/LiteBrazeHelper';\n\nimport { SignUpImages } from 'apps/sign-up/helpers/SignUpImages';\nimport { useGetSignUpAjaxUrls } from 'apps/sign-up/hooks/useGetSignUpAjaxUrls';\nimport { useGetSignUpVariant } from 'apps/sign-up/hooks/useGetSignUpVariant';\nimport { useTrialAppLink } from 'apps/sign-up/hooks/useTrialAppLink';\n\nimport { UpgradeRequests } from '../flight-requests/UpgradeRequests';\nimport { useSignUpEntry } from '../hooks/useSignUpEntry';\nimport { SignUpHelper } from '../utils/SignUpHelper';\n\ninterface StartSignUpViewProps {\n email?: string;\n closePopup: () => void;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StartSignUpView(props: StartSignUpViewProps): JSX.Element {\n const fetchAsync = useGetFetchAsync();\n const brazeClientService = useInstanceSafe<BrazeClientService>(SharedServices.BrazeClient);\n const { trialAppLinkString } = useTrialAppLink();\n const [ modalSize, setModalSize ] = React.useState<'lg' | 'sm' | 'xl'>('lg');\n const [ data, setData ] = React.useState<SignUpState>();\n const { createOrUpdateProfile } = useProfileApiClient();\n const signupVariant = useGetSignUpVariant();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const geoLocation = useGeoLocation();\n const globalIdps = Flight.useBasicFetch<IdentityProvider[]>(\n geoLocation?.countryCode && AuthRequests.globalIdps(geoLocation.countryCode, ProductId.Primary)\n );\n \n const ajaxUrls = useGetSignUpAjaxUrls();\n const { entryPage } = useSignUpEntry();\n\n async function getCrmIdForProspect(prospectId: string): Promise<string> {\n const response = await fetchAsync<ProspectLookup[]>(UpgradeRequests.getLookups(prospectId));\n return SignUpHelper.getCrmId(response);\n }\n\n function onHide(): void {\n props.closePopup();\n const dataWithoutPII = DataHelper.filterBlacklistedKeys(data);\n AnalyticsHelper.logUserAction(dataWithoutPII || {}, {\n actionType: UserAction.Click,\n location: LocationContext.SignUpPopup,\n entity: EntityType.SignUp,\n descriptor: SignUpDescriptors.ClosePopup,\n workflowPhase: WorkflowPhase.Discard\n });\n }\n\n function onStepUpdate(data: SignUpState) {\n setData(data);\n\n if (data.currentStepId === 'completed') {\n setModalSize(undefined);\n return;\n }\n\n if (modalSize !== 'lg')\n setModalSize('lg');\n }\n\n if (!config.hasCompleted || !geoLocation || !ajaxUrls || !globalIdps.hasCompleted)\n return <></>;\n\n return (\n <Modal\n show\n onHide={onHide}\n size={modalSize}\n >\n <Modal.Body className={`mx-auto p-0 ${styles.modalBody} w-100 position-relative`}>\n <MultiStepForm\n signupVariant={signupVariant}\n initialValues={{ email: props.email }}\n \n onStepUpdate={onStepUpdate}\n pageAppLinkString={trialAppLinkString}\n entryPage={entryPage}\n close={onHide}\n \n type={MultiStepFormTypes.Popup}\n location={LocationContext.SignUpPopup}\n\n googleMapsApiKey={config.data.googleMapsApiKey}\n geoLocation={geoLocation}\n imageUrls={SignUpImages}\n ajaxUrls={ajaxUrls}\n productName={SignUpProduct.Lite}\n getSignInUrl={options => Core.AppLinkHelper.getHref({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params: options\n })}\n globalIdps={globalIdps.data}\n logBrazeEvent={options => LiteBrazeHelper.logBrazeEvent(brazeClientService, options)}\n createOrUpdateProfile={createOrUpdateProfile}\n getCrmIdForProspect={getCrmIdForProspect}\n />\n </Modal.Body>\n </Modal>\n );\n}\n"],"mappings":"qmCAKA,SAAgB,GAAqC,CACnD,GAAM,CAAE,sBAAuB,EAAsB,EAKrD,OAHI,GAAoB,OAAS,EAAiB,mBACzC,EAAc,cAEhB,EAAc,SACvB,WCmCA,SAAgB,EAAgB,EAA0C,CACxE,IAAM,EAAa,EAAiB,EAC9B,EAAqB,EAAoC,EAAe,WAAW,EACnF,CAAE,sBAAuB,EAAgB,EACzC,CAAE,EAAW,GAAA,EAAuB,SAA6B,IAAI,EACrE,CAAE,EAAM,GAAA,EAAkB,SAAsB,EAChD,CAAE,yBAA0B,EAAoB,EAChD,EAAgB,EAAoB,EAEpC,EAAS,EAA6B,EAAe,OAAO,CAAC,EAE7D,EAAc,EAAe,EAC7B,EAAa,EACjB,GAAa,aAAe,EAAa,WAAW,EAAY,YAAa,EAAU,OAAO,CAChG,EAEM,EAAW,EAAqB,EAChC,CAAE,aAAc,EAAe,EAErC,eAAe,EAAoB,EAAqC,CACtE,IAAM,EAAW,MAAM,EAA6B,EAAgB,WAAW,CAAU,CAAC,EAC1F,OAAO,EAAa,SAAS,CAAQ,CACvC,CAEA,SAAS,GAAe,CACtB,EAAM,WAAW,EACjB,IAAM,EAAiB,EAAW,sBAAsB,CAAI,EAC5D,EAAgB,cAAc,GAAkB,CAAC,EAAG,CAClD,WAAY,EAAW,MACvB,SAAU,EAAgB,YAC1B,OAAQ,EAAW,OACnB,WAAY,EAAkB,WAC9B,cAAe,EAAc,OAC/B,CAAC,CACH,CAEA,SAAS,EAAa,EAAmB,CAGvC,GAFA,EAAQ,CAAI,EAER,EAAK,gBAAkB,YAAa,CACtC,EAAa,IAAA,EAAS,EACtB,MACF,CAEI,IAAc,MAChB,EAAa,IAAI,CACrB,CAKA,MAHI,CAAC,EAAO,cAAgB,CAAC,GAAe,CAAC,GAAY,CAAC,EAAW,cAC5D,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,GAGX,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAA,GACQ,SACR,KAAM,YAEN,EAAA,EAAA,IAAA,CAAC,EAAM,KAAP,CAAY,UAAW,eAAe,EAAO,UAAU,oCACrD,EAAA,EAAA,IAAA,CAAC,EAAD,CACiB,gBACf,cAAe,CAAE,MAAO,EAAM,KAAM,EAEtB,eACd,kBAAmB,EACR,YACX,MAAO,EAEP,KAAM,EAAmB,MACzB,SAAU,EAAgB,YAE1B,iBAAkB,EAAO,KAAK,iBACjB,cACb,UAAW,EACD,WACV,YAAa,EAAc,KAC3B,aAAc,GAAA,EAA8B,QAAQ,CAClD,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,UACxB,OAAQ,CACV,CAAC,EACD,WAAY,EAAW,KACvB,cAAe,GAAW,EAAgB,cAAc,EAAoB,CAAO,EAC5D,wBACF,qBACtB,CAAA,CACS,CAAA,CACP,CAAA,CAEX"}
@@ -1,2 +1,2 @@
1
- import{o as e}from"./DAXXjFlN.chunk.js";import{h as t}from"./BftnFbcr.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./wrLrTezN.chunk.js";import{f as a}from"./BX0wDJmp.chunk.js";import{t as o}from"./CXnhm0VS2.chunk.js";import{t as s}from"./BlGyXBAH2.chunk.js";import{t as c}from"./B1Q9Fyu9.chunk.js";import{t as l}from"./DcmBU1rQ.chunk.js";import{t as u}from"./BVeF-Kak.chunk.js";import{n as d,t as f}from"./DCT6XY8t.chunk.js";var p=e(r());function m(e){let n=p.useMemo(()=>new t,[]);p.useEffect(()=>{!e||!e.length||e.forEach(e=>n.useSync(e))},[]);function r(e){n&&n.useSync(e)}function i(e){if(n)return n.goSync(e)}return{push:r,execute:i}}var h=n.encloseNamespace(`shared.useInfiniteWidgetFetch`);function g(e){let t=a(),n=o(),{ref:r,inView:i}=s(),c=m(e.resultsTransformers??[]),d=m(e.widgetItemTransformers??[]);function f(n){return t(e.getRequest(n))}function g(e,t){if(e===1)return l(t);n.error(h(`error`))}function _(e){return[e]}let v=u(i&&e.getRequest,i&&f,g,_,e.infiniteFetch&&e.getCursor);function y(t){if(!t||!t.length)return;let n=c.execute(t);return e.widgetItemTransformers?.length?n.map(e=>d.execute(e)):n}let b=y(v.items);return p.useEffect(()=>{!v.hasFirstPageCompleted||!b||!e.onLoadWidgetsTriggers?.length||!b.length||e.onLoadWidgetsTriggers.forEach(e=>e(b))},[v.hasFirstPageCompleted,b]),p.useEffect(()=>{if(v.hasFirstPageCompleted){if(!b){e.setIsEmpty?.(!0);return}if(Array.isArray(b)&&!b.length){e.setIsEmpty?.(!0);return}e.isEmptyPredicate&&e.setIsEmpty?.(e.isEmptyPredicate(b))}},[v.hasFirstPageCompleted,e.isEmptyPredicate]),{widgets:b,isEmpty:!b?.length,showLoading:!v.hasFirstPageCompleted,showInfiniteScrollFooter:e.infiniteFetch&&(v.hasMore||v.isFetching),isFetching:v.isFetching,nextCursor:v.nextCursor,fetchNext:f,partialLoadingRef:r}}var _=i();function v(e){let{isEmpty:t,widgets:n,partialLoadingRef:r,showLoading:i,fetchNext:a,isFetching:o,nextCursor:s,showInfiniteScrollFooter:l}=g({getRequest:e.getRequest,getCursor:e.getCursor,setIsEmpty:e.setIsEmpty,isEmptyPredicate:e.isEmptyPredicate,item:e.item,infiniteFetch:e.infiniteFetch,resultsTransformers:e.resultsTransformers,onLoadWidgetsTriggers:e.onLoadWidgetsTriggers,widgetItemTransformers:e.widgetItemTransformers}),u=d[e.item.templateId],m=u.partialLoading;return!u||!i&&t?(0,_.jsx)(_.Fragment,{}):i?(0,_.jsx)(`div`,{ref:r,className:`py-2`,children:(0,_.jsx)(m,{name:e.item.name,description:e.item?.description,predicate:e?.getPartialLoadingPredicate})}):(0,_.jsx)(_.Fragment,{children:n.map((t,r)=>{let i=r===n.length-1;return(0,_.jsxs)(p.Fragment,{children:[(0,_.jsx)(f,{id:t.id,widgetIndex:e.item.index,dashboardTarget:e.dashboardTarget,appLinks:e.appLinks,appLinkOptions:e.appLinkOptions,audiences:e.audiences,content:e.getContent?.(t)??t.content.data,templateId:t.templateId,widgetTypeId:t.widgetId,currentUser:e.currentUser,commonVideoProps:e.commonVideoProps,availablePresentations:e.availablePresentations,presentation:e.presentation,analyticsData:e.analyticsData,imageCdnUrl:e.imageCdnUrl,imageUrls:e.imageUrls,resourceThumbnailFallbackImageUrl:e.resourceThumbnailFallbackImageUrl,lazyLoad:e.lazyLoad,name:e.getName(t),hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,getSelectedItems:e.getSelectedItems,metadata:e.getWidgetMetadata(t),seeMoreLink:e.getSeeMoreAppLink?.(t),badgeComponent:e.getBadgeComponent?.(t),getAnalyticsData:e.getAnalyticsData&&(n=>e.getAnalyticsData(t,e.index,n)),className:e.getWidgetClassName?.(t),headingElementRef:e.headingElementRef,hasTableOfContents:e.hasTableOfContents,isScrollToTargetWidget:e.isScrollToTargetWidget,isBot:e.isBot,isEditing:e.isEditing,curriculums:e.curriculums,contentType:e.contentType,settings:null,settingsHash:e.settingsHash,description:null,isPreviewing:e.isPreviewing??!1,onClickRemoveItem:null,onClickSearchAllVideos:e.onClickSearchAllVideos}),l&&i&&(0,_.jsx)(c,{isFetching:o,fetchNext:a,fetchOnScroll:!0,nextCursor:s})]},`${t.widgetId}-${t.templateId}-${r}`)})})}export{v as t};
2
- //# sourceMappingURL=BCqRKj1E2.chunk.js.map
1
+ import{o as e}from"./DAXXjFlN.chunk.js";import{h as t}from"./BftnFbcr.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./wrLrTezN.chunk.js";import{f as a}from"./BX0wDJmp.chunk.js";import{t as o}from"./CXnhm0VS2.chunk.js";import{t as s}from"./BlGyXBAH2.chunk.js";import{t as c}from"./B1Q9Fyu9.chunk.js";import{t as l}from"./DcmBU1rQ.chunk.js";import{t as u}from"./BVeF-Kak.chunk.js";import{n as d,t as f}from"./BTWmC6pW.chunk.js";var p=e(r());function m(e){let n=p.useMemo(()=>new t,[]);p.useEffect(()=>{!e||!e.length||e.forEach(e=>n.useSync(e))},[]);function r(e){n&&n.useSync(e)}function i(e){if(n)return n.goSync(e)}return{push:r,execute:i}}var h=n.encloseNamespace(`shared.useInfiniteWidgetFetch`);function g(e){let t=a(),n=o(),{ref:r,inView:i}=s(),c=m(e.resultsTransformers??[]),d=m(e.widgetItemTransformers??[]);function f(n){return t(e.getRequest(n))}function g(e,t){if(e===1)return l(t);n.error(h(`error`))}function _(e){return[e]}let v=u(i&&e.getRequest,i&&f,g,_,e.infiniteFetch&&e.getCursor);function y(t){if(!t||!t.length)return;let n=c.execute(t);return e.widgetItemTransformers?.length?n.map(e=>d.execute(e)):n}let b=y(v.items);return p.useEffect(()=>{!v.hasFirstPageCompleted||!b||!e.onLoadWidgetsTriggers?.length||!b.length||e.onLoadWidgetsTriggers.forEach(e=>e(b))},[v.hasFirstPageCompleted,b]),p.useEffect(()=>{if(v.hasFirstPageCompleted){if(!b){e.setIsEmpty?.(!0);return}if(Array.isArray(b)&&!b.length){e.setIsEmpty?.(!0);return}e.isEmptyPredicate&&e.setIsEmpty?.(e.isEmptyPredicate(b))}},[v.hasFirstPageCompleted,e.isEmptyPredicate]),{widgets:b,isEmpty:!b?.length,showLoading:!v.hasFirstPageCompleted,showInfiniteScrollFooter:e.infiniteFetch&&(v.hasMore||v.isFetching),isFetching:v.isFetching,nextCursor:v.nextCursor,fetchNext:f,partialLoadingRef:r}}var _=i();function v(e){let{isEmpty:t,widgets:n,partialLoadingRef:r,showLoading:i,fetchNext:a,isFetching:o,nextCursor:s,showInfiniteScrollFooter:l}=g({getRequest:e.getRequest,getCursor:e.getCursor,setIsEmpty:e.setIsEmpty,isEmptyPredicate:e.isEmptyPredicate,item:e.item,infiniteFetch:e.infiniteFetch,resultsTransformers:e.resultsTransformers,onLoadWidgetsTriggers:e.onLoadWidgetsTriggers,widgetItemTransformers:e.widgetItemTransformers}),u=d[e.item.templateId],m=u.partialLoading;return!u||!i&&t?(0,_.jsx)(_.Fragment,{}):i?(0,_.jsx)(`div`,{ref:r,className:`py-2`,children:(0,_.jsx)(m,{name:e.item.name,description:e.item?.description,predicate:e?.getPartialLoadingPredicate})}):(0,_.jsx)(_.Fragment,{children:n.map((t,r)=>{let i=r===n.length-1;return(0,_.jsxs)(p.Fragment,{children:[(0,_.jsx)(f,{id:t.id,widgetIndex:e.item.index,dashboardTarget:e.dashboardTarget,appLinks:e.appLinks,appLinkOptions:e.appLinkOptions,audiences:e.audiences,content:e.getContent?.(t)??t.content.data,templateId:t.templateId,widgetTypeId:t.widgetId,currentUser:e.currentUser,commonVideoProps:e.commonVideoProps,availablePresentations:e.availablePresentations,presentation:e.presentation,analyticsData:e.analyticsData,imageCdnUrl:e.imageCdnUrl,imageUrls:e.imageUrls,resourceThumbnailFallbackImageUrl:e.resourceThumbnailFallbackImageUrl,lazyLoad:e.lazyLoad,name:e.getName(t),hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,getSelectedItems:e.getSelectedItems,metadata:e.getWidgetMetadata(t),seeMoreLink:e.getSeeMoreAppLink?.(t),badgeComponent:e.getBadgeComponent?.(t),getAnalyticsData:e.getAnalyticsData&&(n=>e.getAnalyticsData(t,e.index,n)),className:e.getWidgetClassName?.(t),headingElementRef:e.headingElementRef,hasTableOfContents:e.hasTableOfContents,isScrollToTargetWidget:e.isScrollToTargetWidget,isBot:e.isBot,isEditing:e.isEditing,curriculums:e.curriculums,contentType:e.contentType,settings:null,settingsHash:e.settingsHash,description:null,isPreviewing:e.isPreviewing??!1,onClickRemoveItem:null,onClickSearchAllVideos:e.onClickSearchAllVideos}),l&&i&&(0,_.jsx)(c,{isFetching:o,fetchNext:a,fetchOnScroll:!0,nextCursor:s})]},`${t.widgetId}-${t.templateId}-${r}`)})})}export{v as t};
2
+ //# sourceMappingURL=s6NJOjzU2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BCqRKj1E2.chunk.js","names":[],"sources":["../../../../libs/shared/src/hooks/useTransformer.tsx","../../../../libs/shared/src/components/widgets/curated-widgets/hooks/useInfiniteWidgetFetch.ts","../../../../libs/shared/src/components/widgets/curated-widgets/InfiniteWidgetContainerView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Middleware, type MiddlewareFunctionSync } from 'libs/common/backbone/core';\n\nexport type UseTransformerFunc<T> = (options: T) => T;\n\nexport function useTransformer<T>(transformations?: MiddlewareFunctionSync<T>[]) {\n const middleware = React.useMemo(() => new Middleware<T>(), []);\n\n React.useEffect(() => {\n if (!transformations || !transformations.length)\n return;\n\n transformations.forEach(fn => middleware.useSync(fn));\n }, []);\n\n function push(fn: MiddlewareFunctionSync<T>): void {\n if (!middleware)\n return;\n\n middleware.useSync(fn);\n }\n\n function execute(options: T): T {\n if (!middleware)\n return;\n \n return middleware.goSync(options);\n }\n \n return {\n push,\n execute\n };\n}\n","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\nimport { useTransformer, UseTransformerFunc } from 'libs/shared/hooks/useTransformer';\nimport { BaseWidget } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.useInfiniteWidgetFetch';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UseInfiniteWidgetFetchOptions<TItem, TWidget> {\n item: TItem;\n infiniteFetch: boolean;\n getRequest: (cursor?: string) => Flight.Request;\n getCursor: (widget: TWidget) => string;\n setIsEmpty?: (isEmpty: boolean) => void;\n isEmptyPredicate?: (items: TWidget[]) => boolean;\n \n resultsTransformers?: Array<UseTransformerFunc<TWidget[]>>;\n widgetItemTransformers?: Array<UseTransformerFunc<TWidget>>;\n onLoadWidgetsTriggers?: Array<(data: TWidget[]) => void>;\n}\n\nexport function useInfiniteWidgetFetch<\n TItem extends BaseWidget,\n TWidget extends BaseWidget\n>(options: UseInfiniteWidgetFetchOptions<TItem, TWidget>) {\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n const { ref: partialLoadingRef, inView } = useLazyLoad();\n const resultsTransformers = useTransformer<TWidget[]>(options.resultsTransformers ?? []);\n const widgetItemTransformers = useTransformer<TWidget>(options.widgetItemTransformers ?? []);\n \n function fetchNext(cursor?: string) {\n return fetch(options.getRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(getPhrase('error'));\n }\n \n function getItems(response: TWidget) {\n return [response];\n }\n \n const fetchResults = useInfiniteList<TWidget, TWidget>(\n inView && options.getRequest,\n inView && fetchNext,\n onError,\n getItems,\n options.infiniteFetch && options.getCursor\n );\n\n function transformResults(data: TWidget[]): TWidget[] {\n if (!data || !data.length)\n return;\n\n const results = resultsTransformers.execute(data);\n\n if (!options.widgetItemTransformers?.length)\n return results;\n\n const transformedResults = results.map(item => widgetItemTransformers.execute(item));\n\n return transformedResults;\n }\n\n /**\n * This is an array of widgets because technically we can have same widget type id\n * but different template id. This is the case the search series widget.\n */\n const items = transformResults(fetchResults.items);\n\n /**\n * Side effects below\n */\n\n React.useEffect(() => {\n if (!fetchResults.hasFirstPageCompleted || !items)\n return;\n\n if (!options.onLoadWidgetsTriggers?.length || !items.length)\n return;\n\n options.onLoadWidgetsTriggers.forEach(onLoad => onLoad(items));\n }, [ fetchResults.hasFirstPageCompleted, items ]);\n\n React.useEffect(() => {\n if (!fetchResults.hasFirstPageCompleted)\n return;\n\n if (!items) {\n options.setIsEmpty?.(true);\n return;\n }\n\n if (Array.isArray(items) && !items.length) {\n options.setIsEmpty?.(true);\n return;\n }\n\n if (!options.isEmptyPredicate)\n return;\n\n /**\n * For some reason our widget data structure is different for different dashboard targets.\n * Since it is inconsistent we can use the custom isEmptyPredicate check if the default\n * check above does not handle the use case.\n */\n options.setIsEmpty?.(options.isEmptyPredicate(items));\n }, [ fetchResults.hasFirstPageCompleted, options.isEmptyPredicate ]);\n\n const isEmpty = !items?.length;\n const showLoading = !fetchResults.hasFirstPageCompleted;\n const showInfiniteScrollFooter = options.infiniteFetch && (fetchResults.hasMore || fetchResults.isFetching);\n\n return {\n widgets: items,\n isEmpty,\n showLoading,\n showInfiniteScrollFooter,\n isFetching: fetchResults.isFetching,\n nextCursor: fetchResults.nextCursor,\n fetchNext,\n partialLoadingRef\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllWidgetTemplateProps } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { WidgetTemplateConfig } from 'libs/shared/constants/WidgetTemplateConfig';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { type HasLocalPermissionsFunc, type HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { UseTransformerFunc } from 'libs/shared/hooks/useTransformer';\nimport { type BaseObject, BaseWidget, CalendarEventContentType, type CurrentUser, CurriculumData, DashboardTargetType, type Presentation, type PresentationAudience, WidgetMetadata } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\nimport { useInfiniteWidgetFetch } from './hooks/useInfiniteWidgetFetch';\n\ntype InferredWidgetTemplateProps = {\n appLinks: any,\n appLinkOptions?: any\n};\n\n/**\n * Props for InfiniteWidgetContainerView component\n *\n * @template TItem - The type of the widget item (extends BaseWidget)\n * @template TWidget - The type of individual widget content (extends BaseWidget)\n * @template TWidgetTemplateProps - The widget template props type for type-safe appLinks and appLinkOptions\n *\n * Use TWidgetTemplateProps to get type safety for specific dashboard targets:\n * @example\n * // For Search dashboard with type safety:\n * import { AllSearchWidgetTemplates } from './WidgetProps';\n *\n * <InfiniteWidgetContainerView<MyItem, MyWidget, AllSearchWidgetTemplates>\n * dashboardTarget={DashboardTargetType.Search}\n * appLinks={searchAppLinks} // Typed as AllSearchWidgetTemplates['appLinks']\n * appLinkOptions={searchAppLinkOptions} // Typed as AllSearchWidgetTemplates['appLinkOptions']\n * // ... other props\n * />\n */\ninterface InfiniteWidgetContainerViewProps<\n TItem,\n TWidget,\n TWidgetTemplateProps extends InferredWidgetTemplateProps = AllWidgetTemplateProps\n> {\n index: number;\n item: TItem;\n /**\n * If set to false will only fetch the first page\n */\n infiniteFetch: boolean;\n\n currentUser?: CurrentUser;\n audiences: PresentationAudience[];\n commonVideoProps: CommonVideoProps;\n dashboardTarget?: DashboardTargetType;\n availablePresentations?: Presentation[];\n presentation?: Presentation;\n\n analyticsData?: HashObject;\n imageCdnUrl?: string;\n imageUrls?: AllWidgetTemplateProps['imageUrls'];\n resourceThumbnailFallbackImageUrl?: string;\n lazyLoad?: boolean;\n\n headingElementRef?: React.MutableRefObject<Set<Element>>;\n hasTableOfContents?: boolean;\n isScrollToTargetWidget?: boolean;\n isBot?: boolean;\n isPreviewing?: boolean;\n isEditing?: boolean;\n curriculums?: CurriculumData;\n contentType?: CalendarEventContentType;\n\n /**\n * App links - type is determined by TWidgetTemplateProps generic parameter\n * Defaults to AllWidgetTemplateProps['appLinks'] if not specified\n */\n appLinks: TWidgetTemplateProps['appLinks'];\n\n /**\n * App link options - type is determined by TWidgetTemplateProps generic parameter\n * Defaults to AllWidgetTemplateProps['appLinkOptions'] if not specified\n */\n appLinkOptions?: TWidgetTemplateProps['appLinkOptions'];\n\n settingsHash?: SettingsHash;\n hasPermissions: HasPermissionsFunc;\n getName: (widget: TWidget) => string;\n getPartialLoadingPredicate?: () => boolean;\n hasLocalPermissions: HasLocalPermissionsFunc;\n getWidgetClassName?: (widget: TWidget) => string;\n getBadgeComponent?: (widget: TWidget) => JSX.Element;\n getSeeMoreAppLink?: (widget: TWidget) => Core.AppLink;\n getSelectedItems: (type: WidgetTypeId) => BaseObject[];\n getWidgetMetadata: (widget: TWidget) => Partial<WidgetMetadata>;\n getAnalyticsData?: (widget: TWidget, yIndex: number, xIndex: number) => HashObject;\n \n getCursor: (widget: TWidget) => string;\n getRequest: (cursor?: string) => Flight.Request;\n setIsEmpty?: (isEmpty: boolean) => void;\n getContent?: (widget: TWidget) => BaseObject[];\n\n /**\n * A predicate to determine if the widget is empty. \n * This is used to determine if the widget should be displayed as empty. \n * If not provided, the widget will be displayed as empty if the content is empty. \n * Only to be used if the widget data structure is inconsistent for different dashboard targets. \n */\n isEmptyPredicate?: (items: TWidget[]) => boolean;\n \n /**\n * Array of transformers to be applied to results before rendering\n */\n resultsTransformers?: Array<UseTransformerFunc<TWidget[]>>;\n /**\n * Array of transformers to be applied to each widget item before rendering\n */\n widgetItemTransformers?: Array<UseTransformerFunc<TWidget>>;\n /**\n * Array of callbacks to be executed when widget is first loaded\n */\n onLoadWidgetsTriggers?: Array<(data: TWidget[]) => void>;\n onClickSearchAllVideos?: () => void;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InfiniteWidgetContainerView<\n TItem extends BaseWidget = BaseWidget,\n TWidget extends BaseWidget = BaseWidget,\n TWidgetTemplateProps extends InferredWidgetTemplateProps = AllWidgetTemplateProps\n>(props: InfiniteWidgetContainerViewProps<TItem, TWidget, TWidgetTemplateProps>): JSX.Element {\n const {\n isEmpty,\n widgets,\n partialLoadingRef,\n showLoading,\n fetchNext,\n isFetching,\n nextCursor,\n showInfiniteScrollFooter\n } = useInfiniteWidgetFetch({\n getRequest: props.getRequest,\n getCursor: props.getCursor,\n setIsEmpty: props.setIsEmpty,\n isEmptyPredicate: props.isEmptyPredicate,\n item: props.item,\n infiniteFetch: props.infiniteFetch,\n resultsTransformers: props.resultsTransformers,\n onLoadWidgetsTriggers: props.onLoadWidgetsTriggers,\n widgetItemTransformers: props.widgetItemTransformers\n });\n\n const template = WidgetTemplateConfig[props.item.templateId];\n const PartialTemplate = template.partialLoading;\n\n if (!template || !showLoading && isEmpty)\n return <></>;\n\n if (showLoading) {\n return (\n <div ref={partialLoadingRef} className='py-2'>\n <PartialTemplate\n name={props.item.name}\n description={props.item?.description}\n predicate={props?.getPartialLoadingPredicate}\n />\n </div>\n );\n }\n\n return (\n <>\n {widgets.map((widget, index) => {\n const isLastItem = index === widgets.length - 1;\n return (\n <React.Fragment key={`${widget.widgetId}-${widget.templateId}-${index}`}>\n <WidgetContainerView\n id={widget.id}\n widgetIndex={props.item.index}\n dashboardTarget={props.dashboardTarget}\n\n appLinks={props.appLinks}\n appLinkOptions={props.appLinkOptions}\n audiences={props.audiences}\n content={props.getContent?.(widget) ?? widget.content.data}\n templateId={widget.templateId}\n widgetTypeId={widget.widgetId}\n currentUser={props.currentUser}\n commonVideoProps={props.commonVideoProps}\n availablePresentations={props.availablePresentations}\n presentation={props.presentation}\n\n analyticsData={props.analyticsData}\n imageCdnUrl={props.imageCdnUrl}\n imageUrls={props.imageUrls}\n resourceThumbnailFallbackImageUrl={props.resourceThumbnailFallbackImageUrl}\n lazyLoad={props.lazyLoad}\n\n name={props.getName(widget)}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n getSelectedItems={props.getSelectedItems}\n metadata={props.getWidgetMetadata(widget)}\n seeMoreLink={props.getSeeMoreAppLink?.(widget)}\n badgeComponent={props.getBadgeComponent?.(widget)}\n getAnalyticsData={\n props.getAnalyticsData && (xIndex => props.getAnalyticsData(widget, props.index, xIndex))\n }\n className={props.getWidgetClassName?.(widget)}\n\n headingElementRef={props.headingElementRef}\n hasTableOfContents={props.hasTableOfContents}\n isScrollToTargetWidget={props.isScrollToTargetWidget}\n isBot={props.isBot}\n isEditing={props.isEditing}\n curriculums={props.curriculums}\n contentType={props.contentType}\n\n settings={null}\n settingsHash={props.settingsHash}\n description={null}\n isPreviewing={props.isPreviewing ?? false}\n onClickRemoveItem={null}\n onClickSearchAllVideos={props.onClickSearchAllVideos}\n />\n {showInfiniteScrollFooter && isLastItem && (\n <InfiniteScrollFooter\n isFetching={isFetching}\n fetchNext={fetchNext}\n fetchOnScroll\n nextCursor={nextCursor}\n />\n )}\n </React.Fragment>\n );\n })}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"s6NJOjzU2.chunk.js","names":[],"sources":["../../../../libs/shared/src/hooks/useTransformer.tsx","../../../../libs/shared/src/components/widgets/curated-widgets/hooks/useInfiniteWidgetFetch.ts","../../../../libs/shared/src/components/widgets/curated-widgets/InfiniteWidgetContainerView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Middleware, type MiddlewareFunctionSync } from 'libs/common/backbone/core';\n\nexport type UseTransformerFunc<T> = (options: T) => T;\n\nexport function useTransformer<T>(transformations?: MiddlewareFunctionSync<T>[]) {\n const middleware = React.useMemo(() => new Middleware<T>(), []);\n\n React.useEffect(() => {\n if (!transformations || !transformations.length)\n return;\n\n transformations.forEach(fn => middleware.useSync(fn));\n }, []);\n\n function push(fn: MiddlewareFunctionSync<T>): void {\n if (!middleware)\n return;\n\n middleware.useSync(fn);\n }\n\n function execute(options: T): T {\n if (!middleware)\n return;\n \n return middleware.goSync(options);\n }\n \n return {\n push,\n execute\n };\n}\n","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\nimport { useTransformer, UseTransformerFunc } from 'libs/shared/hooks/useTransformer';\nimport { BaseWidget } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.useInfiniteWidgetFetch';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UseInfiniteWidgetFetchOptions<TItem, TWidget> {\n item: TItem;\n infiniteFetch: boolean;\n getRequest: (cursor?: string) => Flight.Request;\n getCursor: (widget: TWidget) => string;\n setIsEmpty?: (isEmpty: boolean) => void;\n isEmptyPredicate?: (items: TWidget[]) => boolean;\n \n resultsTransformers?: Array<UseTransformerFunc<TWidget[]>>;\n widgetItemTransformers?: Array<UseTransformerFunc<TWidget>>;\n onLoadWidgetsTriggers?: Array<(data: TWidget[]) => void>;\n}\n\nexport function useInfiniteWidgetFetch<\n TItem extends BaseWidget,\n TWidget extends BaseWidget\n>(options: UseInfiniteWidgetFetchOptions<TItem, TWidget>) {\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n const { ref: partialLoadingRef, inView } = useLazyLoad();\n const resultsTransformers = useTransformer<TWidget[]>(options.resultsTransformers ?? []);\n const widgetItemTransformers = useTransformer<TWidget>(options.widgetItemTransformers ?? []);\n \n function fetchNext(cursor?: string) {\n return fetch(options.getRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(getPhrase('error'));\n }\n \n function getItems(response: TWidget) {\n return [response];\n }\n \n const fetchResults = useInfiniteList<TWidget, TWidget>(\n inView && options.getRequest,\n inView && fetchNext,\n onError,\n getItems,\n options.infiniteFetch && options.getCursor\n );\n\n function transformResults(data: TWidget[]): TWidget[] {\n if (!data || !data.length)\n return;\n\n const results = resultsTransformers.execute(data);\n\n if (!options.widgetItemTransformers?.length)\n return results;\n\n const transformedResults = results.map(item => widgetItemTransformers.execute(item));\n\n return transformedResults;\n }\n\n /**\n * This is an array of widgets because technically we can have same widget type id\n * but different template id. This is the case the search series widget.\n */\n const items = transformResults(fetchResults.items);\n\n /**\n * Side effects below\n */\n\n React.useEffect(() => {\n if (!fetchResults.hasFirstPageCompleted || !items)\n return;\n\n if (!options.onLoadWidgetsTriggers?.length || !items.length)\n return;\n\n options.onLoadWidgetsTriggers.forEach(onLoad => onLoad(items));\n }, [ fetchResults.hasFirstPageCompleted, items ]);\n\n React.useEffect(() => {\n if (!fetchResults.hasFirstPageCompleted)\n return;\n\n if (!items) {\n options.setIsEmpty?.(true);\n return;\n }\n\n if (Array.isArray(items) && !items.length) {\n options.setIsEmpty?.(true);\n return;\n }\n\n if (!options.isEmptyPredicate)\n return;\n\n /**\n * For some reason our widget data structure is different for different dashboard targets.\n * Since it is inconsistent we can use the custom isEmptyPredicate check if the default\n * check above does not handle the use case.\n */\n options.setIsEmpty?.(options.isEmptyPredicate(items));\n }, [ fetchResults.hasFirstPageCompleted, options.isEmptyPredicate ]);\n\n const isEmpty = !items?.length;\n const showLoading = !fetchResults.hasFirstPageCompleted;\n const showInfiniteScrollFooter = options.infiniteFetch && (fetchResults.hasMore || fetchResults.isFetching);\n\n return {\n widgets: items,\n isEmpty,\n showLoading,\n showInfiniteScrollFooter,\n isFetching: fetchResults.isFetching,\n nextCursor: fetchResults.nextCursor,\n fetchNext,\n partialLoadingRef\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { AllWidgetTemplateProps } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { WidgetTemplateConfig } from 'libs/shared/constants/WidgetTemplateConfig';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { type HasLocalPermissionsFunc, type HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { UseTransformerFunc } from 'libs/shared/hooks/useTransformer';\nimport { type BaseObject, BaseWidget, CalendarEventContentType, type CurrentUser, CurriculumData, DashboardTargetType, type Presentation, type PresentationAudience, WidgetMetadata } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\nimport { useInfiniteWidgetFetch } from './hooks/useInfiniteWidgetFetch';\n\ntype InferredWidgetTemplateProps = {\n appLinks: any,\n appLinkOptions?: any\n};\n\n/**\n * Props for InfiniteWidgetContainerView component\n *\n * @template TItem - The type of the widget item (extends BaseWidget)\n * @template TWidget - The type of individual widget content (extends BaseWidget)\n * @template TWidgetTemplateProps - The widget template props type for type-safe appLinks and appLinkOptions\n *\n * Use TWidgetTemplateProps to get type safety for specific dashboard targets:\n * @example\n * // For Search dashboard with type safety:\n * import { AllSearchWidgetTemplates } from './WidgetProps';\n *\n * <InfiniteWidgetContainerView<MyItem, MyWidget, AllSearchWidgetTemplates>\n * dashboardTarget={DashboardTargetType.Search}\n * appLinks={searchAppLinks} // Typed as AllSearchWidgetTemplates['appLinks']\n * appLinkOptions={searchAppLinkOptions} // Typed as AllSearchWidgetTemplates['appLinkOptions']\n * // ... other props\n * />\n */\ninterface InfiniteWidgetContainerViewProps<\n TItem,\n TWidget,\n TWidgetTemplateProps extends InferredWidgetTemplateProps = AllWidgetTemplateProps\n> {\n index: number;\n item: TItem;\n /**\n * If set to false will only fetch the first page\n */\n infiniteFetch: boolean;\n\n currentUser?: CurrentUser;\n audiences: PresentationAudience[];\n commonVideoProps: CommonVideoProps;\n dashboardTarget?: DashboardTargetType;\n availablePresentations?: Presentation[];\n presentation?: Presentation;\n\n analyticsData?: HashObject;\n imageCdnUrl?: string;\n imageUrls?: AllWidgetTemplateProps['imageUrls'];\n resourceThumbnailFallbackImageUrl?: string;\n lazyLoad?: boolean;\n\n headingElementRef?: React.MutableRefObject<Set<Element>>;\n hasTableOfContents?: boolean;\n isScrollToTargetWidget?: boolean;\n isBot?: boolean;\n isPreviewing?: boolean;\n isEditing?: boolean;\n curriculums?: CurriculumData;\n contentType?: CalendarEventContentType;\n\n /**\n * App links - type is determined by TWidgetTemplateProps generic parameter\n * Defaults to AllWidgetTemplateProps['appLinks'] if not specified\n */\n appLinks: TWidgetTemplateProps['appLinks'];\n\n /**\n * App link options - type is determined by TWidgetTemplateProps generic parameter\n * Defaults to AllWidgetTemplateProps['appLinkOptions'] if not specified\n */\n appLinkOptions?: TWidgetTemplateProps['appLinkOptions'];\n\n settingsHash?: SettingsHash;\n hasPermissions: HasPermissionsFunc;\n getName: (widget: TWidget) => string;\n getPartialLoadingPredicate?: () => boolean;\n hasLocalPermissions: HasLocalPermissionsFunc;\n getWidgetClassName?: (widget: TWidget) => string;\n getBadgeComponent?: (widget: TWidget) => JSX.Element;\n getSeeMoreAppLink?: (widget: TWidget) => Core.AppLink;\n getSelectedItems: (type: WidgetTypeId) => BaseObject[];\n getWidgetMetadata: (widget: TWidget) => Partial<WidgetMetadata>;\n getAnalyticsData?: (widget: TWidget, yIndex: number, xIndex: number) => HashObject;\n \n getCursor: (widget: TWidget) => string;\n getRequest: (cursor?: string) => Flight.Request;\n setIsEmpty?: (isEmpty: boolean) => void;\n getContent?: (widget: TWidget) => BaseObject[];\n\n /**\n * A predicate to determine if the widget is empty. \n * This is used to determine if the widget should be displayed as empty. \n * If not provided, the widget will be displayed as empty if the content is empty. \n * Only to be used if the widget data structure is inconsistent for different dashboard targets. \n */\n isEmptyPredicate?: (items: TWidget[]) => boolean;\n \n /**\n * Array of transformers to be applied to results before rendering\n */\n resultsTransformers?: Array<UseTransformerFunc<TWidget[]>>;\n /**\n * Array of transformers to be applied to each widget item before rendering\n */\n widgetItemTransformers?: Array<UseTransformerFunc<TWidget>>;\n /**\n * Array of callbacks to be executed when widget is first loaded\n */\n onLoadWidgetsTriggers?: Array<(data: TWidget[]) => void>;\n onClickSearchAllVideos?: () => void;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InfiniteWidgetContainerView<\n TItem extends BaseWidget = BaseWidget,\n TWidget extends BaseWidget = BaseWidget,\n TWidgetTemplateProps extends InferredWidgetTemplateProps = AllWidgetTemplateProps\n>(props: InfiniteWidgetContainerViewProps<TItem, TWidget, TWidgetTemplateProps>): JSX.Element {\n const {\n isEmpty,\n widgets,\n partialLoadingRef,\n showLoading,\n fetchNext,\n isFetching,\n nextCursor,\n showInfiniteScrollFooter\n } = useInfiniteWidgetFetch({\n getRequest: props.getRequest,\n getCursor: props.getCursor,\n setIsEmpty: props.setIsEmpty,\n isEmptyPredicate: props.isEmptyPredicate,\n item: props.item,\n infiniteFetch: props.infiniteFetch,\n resultsTransformers: props.resultsTransformers,\n onLoadWidgetsTriggers: props.onLoadWidgetsTriggers,\n widgetItemTransformers: props.widgetItemTransformers\n });\n\n const template = WidgetTemplateConfig[props.item.templateId];\n const PartialTemplate = template.partialLoading;\n\n if (!template || !showLoading && isEmpty)\n return <></>;\n\n if (showLoading) {\n return (\n <div ref={partialLoadingRef} className='py-2'>\n <PartialTemplate\n name={props.item.name}\n description={props.item?.description}\n predicate={props?.getPartialLoadingPredicate}\n />\n </div>\n );\n }\n\n return (\n <>\n {widgets.map((widget, index) => {\n const isLastItem = index === widgets.length - 1;\n return (\n <React.Fragment key={`${widget.widgetId}-${widget.templateId}-${index}`}>\n <WidgetContainerView\n id={widget.id}\n widgetIndex={props.item.index}\n dashboardTarget={props.dashboardTarget}\n\n appLinks={props.appLinks}\n appLinkOptions={props.appLinkOptions}\n audiences={props.audiences}\n content={props.getContent?.(widget) ?? widget.content.data}\n templateId={widget.templateId}\n widgetTypeId={widget.widgetId}\n currentUser={props.currentUser}\n commonVideoProps={props.commonVideoProps}\n availablePresentations={props.availablePresentations}\n presentation={props.presentation}\n\n analyticsData={props.analyticsData}\n imageCdnUrl={props.imageCdnUrl}\n imageUrls={props.imageUrls}\n resourceThumbnailFallbackImageUrl={props.resourceThumbnailFallbackImageUrl}\n lazyLoad={props.lazyLoad}\n\n name={props.getName(widget)}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n getSelectedItems={props.getSelectedItems}\n metadata={props.getWidgetMetadata(widget)}\n seeMoreLink={props.getSeeMoreAppLink?.(widget)}\n badgeComponent={props.getBadgeComponent?.(widget)}\n getAnalyticsData={\n props.getAnalyticsData && (xIndex => props.getAnalyticsData(widget, props.index, xIndex))\n }\n className={props.getWidgetClassName?.(widget)}\n\n headingElementRef={props.headingElementRef}\n hasTableOfContents={props.hasTableOfContents}\n isScrollToTargetWidget={props.isScrollToTargetWidget}\n isBot={props.isBot}\n isEditing={props.isEditing}\n curriculums={props.curriculums}\n contentType={props.contentType}\n\n settings={null}\n settingsHash={props.settingsHash}\n description={null}\n isPreviewing={props.isPreviewing ?? false}\n onClickRemoveItem={null}\n onClickSearchAllVideos={props.onClickSearchAllVideos}\n />\n {showInfiniteScrollFooter && isLastItem && (\n <InfiniteScrollFooter\n isFetching={isFetching}\n fetchNext={fetchNext}\n fetchOnScroll\n nextCursor={nextCursor}\n />\n )}\n </React.Fragment>\n );\n })}\n </>\n );\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clickview/lite",
3
- "version": "0.104.0-rc.6",
3
+ "version": "0.104.0-rc.7",
4
4
  "description": "ClickView Lite",
5
5
  "main": "dist/scripts/bundle.js",
6
6
  "types": "dist/projects/lite/src/index.d.ts",
@@ -1,2 +0,0 @@
1
- import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./C2w0pmFW.chunk.js";import{t as n}from"./CgCqPbjJ.chunk.js";import{t as r}from"./dLd5d3X22.chunk.js";import{t as i}from"./DpCWroEe2.chunk.js";var a=e(t(),1);function o(e){let[t,o]=r(n.SIGN_UP_ENTRY_DATA),s=i.getCurrentRoute()?.appLink;function c(){if(t)return t}function l(e){let{app:n,id:r,metadata:i}=e;n===t?.app&&r===t?.id||o({app:n,id:r,metadata:i})}return a.useEffect(()=>{e&&l(e)},[e]),a.useEffect(()=>{o(null)},[`${s?.application}:${s?.action}`]),{entryPage:c()}}export{o as t};
2
- //# sourceMappingURL=BwBWuxjr2.chunk.js.map