@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 +1 @@
1
- {"version":3,"file":"D9wxi5or2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/content-partners/components/content-partner-index-dashboard/empty-states/content-partner-index-dashboard-empty-state/ContentPartnerIndexDashboardEmptyState.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-index-dashboard/ContentPartnerIndexDashboard.tsx","../../../../libs/shared/src/components/letters-bar/letters-bar.module.scss","../../../../libs/shared/src/components/letters-bar/LettersBar.tsx","../../src/apps/content-partners/enums/WidgetSort.ts","../../src/apps/content-partners/components/widget-sort-selector/WidgetSortSelector.tsx","../../src/apps/content-partners/utils/getContentPartnerParams.ts","../../src/apps/content-partners/views/content-partners-discover/ContentPartnersDiscoverView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'contentPartner.contentPartnerIndexDashboardEmptyState';\n\ninterface ContentPartnerIndexDashboardEmptyStateProps {\n image?: string;\n letterFilter?: string;\n}\n\nexport function ContentPartnerIndexDashboardEmptyState(\n props: ContentPartnerIndexDashboardEmptyStateProps\n): JSX.Element {\n return (\n <EmptyState>\n {props.image &&\n <EmptyState.Image src={props.image} />\n }\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' options={{ letterFilter: props.letterFilter }} />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InfiniteWidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/InfiniteWidgetContainerView';\nimport { AllPartnerProfileWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\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 { CuratedDashboard, CuratedWidget, CuratedWidgetQueryParams, CurrentUser, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport { ContentPartnerIndexDashboardEmptyState } from './empty-states/content-partner-index-dashboard-empty-state/ContentPartnerIndexDashboardEmptyState';\n\ninterface ContentPartnerIndexDashboardProps {\n dashboard: CuratedDashboard;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate,\n cursor?: string\n ) => Flight.Request;\n commonVideoProps: CommonVideoProps;\n isReadonly?: boolean;\n widgetAppLinks?: AllPartnerProfileWidgetTemplates['appLinks'];\n scrollToWidgetId?: string;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n settings?: AllPartnerProfileWidgetTemplates['settings'];\n audiences?: PresentationAudience[];\n queryParams?: CuratedWidgetQueryParams;\n currentUser: CurrentUser;\n availablePresentations: Presentation[];\n emptyStateImage?: string;\n}\n\nexport function ContentPartnerIndexDashboard(props: ContentPartnerIndexDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const { isEmptyWidget, setEmptyWidget } = useEmptyWidgets(widgets);\n\n function getWidgetContentRequest(\n id: string,\n widgetTypeId: WidgetTypeId,\n template: WidgetTemplate,\n cursor?: string\n ): Flight.Request {\n if (!widgets.length) return;\n\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard),\n undefined,\n undefined,\n { params: props.queryParams }\n );\n\n return props.getWidgetContentRequest(id, params, template, cursor);\n }\n\n const isContentPartnerWidgetEmpty = widgets.every(\n widget => isEmptyWidget(widget.id)\n );\n\n if (!widgets.length || isContentPartnerWidgetEmpty)\n return (\n <ContentPartnerIndexDashboardEmptyState\n image={props.emptyStateImage}\n letterFilter={props.queryParams?.letterPrefix}\n />\n );\n \n return (\n <div className='mt-3'>\n {widgets.map((widget, idx) => (\n <InfiniteWidgetContainerView<CuratedWidget, CuratedWidget, AllPartnerProfileWidgetTemplates>\n dashboardTarget={DashboardTargetType.DiscoverPartnerProfiles}\n key={widget.id}\n index={idx}\n item={widget}\n\n infiniteFetch={props.dashboard.widgets.length - 1 === idx}\n getName={widget => widget.name}\n getWidgetMetadata={w => w.metadata}\n appLinks={props.widgetAppLinks}\n hasPermissions={props.hasPermissions}\n commonVideoProps={props.commonVideoProps}\n audiences={props.audiences}\n setIsEmpty={isEmpty => setEmptyWidget(widget.id, isEmpty)}\n getCursor={w => w.cursor}\n getRequest={cursor => getWidgetContentRequest(widget.id, widget.widgetId, widget.templateId, cursor)}\n hasLocalPermissions={props.hasLocalPermissions}\n currentUser={props.currentUser}\n availablePresentations={props.availablePresentations}\n settingsHash={props.settings}\n getContent={w => w.content}\n resultsTransformers={WidgetHelper.getWidgetResultsTransformers()}\n isEmptyPredicate={items => (\n Array.isArray(items) && Array.isArray(items[0]?.content) && !items[0]?.content?.length\n )}\n getSelectedItems={null}\n getSeeMoreAppLink={null}\n appLinkOptions={null}\n />\n ))}\n </div>\n );\n}\n",":local {\n .pillTabSelector {\n ul {\n width: 100%;\n display: flex!important;\n }\n\n li {\n min-width: 0!important;\n flex-grow: 1;\n }\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport styles from './letters-bar.module.scss';\n\nexport const CUSTOM_LETTER_TEMPLATE = 'Custom';\n\nexport const ALPHABET = [\n CUSTOM_LETTER_TEMPLATE,\n '#',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'\n] as const;\n\ntype LetterBarOptions = typeof ALPHABET[number];\n\nconst LetterParamMap: {[key in LetterBarOptions]?: string } = {\n '#': '0'\n};\n\nconst ANALYTICS_OPTIONS = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n};\n\nfunction getSelectedAlphabet(selected: string, showCustom: boolean): LetterBarOptions | undefined {\n if (!selected)\n return;\n \n if (selected === '0')\n return '#';\n\n const alphabet = ALPHABET.find(letter => letter.toUpperCase() === selected.toUpperCase());\n\n if (alphabet === CUSTOM_LETTER_TEMPLATE && !showCustom)\n return;\n\n return alphabet;\n}\n\ninterface GenerateTabsOptions {\n selected: string;\n showCustom: boolean;\n getItemAppLink: (letter: string) => Core.AppLink;\n}\n\nfunction generateTabs(options: GenerateTabsOptions): PillTab[] {\n return ALPHABET.map(letter => {\n if (letter === CUSTOM_LETTER_TEMPLATE && !options.showCustom)\n return;\n\n const appLink = options.getItemAppLink(LetterParamMap[letter] ?? letter);\n\n return {\n name: letter,\n appLink,\n active: options.selected === letter,\n analyticsData: {\n name: letter,\n url: Core.AppLinkHelper.getHref(appLink)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n };\n }).filter(Boolean);\n}\n\ninterface LettersBarProps {\n selected: string;\n getItemAppLink: (letter: string) => Core.AppLink;\n showCustom?: boolean;\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n className?: string;\n noMarginBottom?: boolean;\n forceSmallScreenDropdown?: boolean;\n}\n\nexport function LettersBar(props: LettersBarProps): JSX.Element {\n const localSelected = getSelectedAlphabet(props.selected, props.showCustom);\n\n const tabs = generateTabs({\n selected: localSelected,\n showCustom: props.showCustom,\n getItemAppLink: props.getItemAppLink\n });\n \n return (\n <div className={classNames(props.noMarginBottom ? 'mb-0' : 'mb-3', props.className)}>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTabSelector}\n enableSmallScreenSupport={props.enableSmallScreenSupport}\n formatDisplayText={props.formatDisplayText}\n forceSmallScreenDropdown={props.forceSmallScreenDropdown}\n />\n </div>\n );\n}\n","export enum WidgetSort {\n RecentlyUpdated = 'lastupdated',\n ATOZ = 'name',\n Newest = 'datecreated'\n}\n","import React from 'react';\n\nimport { WidgetSort } from 'apps/content-partners/enums/WidgetSort';\n\nconst WidgetSortLabel: Record<WidgetSort, string> = {\n [WidgetSort.RecentlyUpdated]: 'Recently Updated',\n [WidgetSort.ATOZ]: 'A to Z',\n [WidgetSort.Newest]: 'Newest'\n};\n\ninterface WidgetSortSelectorProps {\n disabled?: boolean;\n selected: WidgetSort;\n onSortChange: (sort: WidgetSort) => void;\n}\n\nexport function WidgetSortSelector(props: WidgetSortSelectorProps): JSX.Element {\n return (\n <select\n id='widget-sort-selector'\n disabled={props.disabled}\n className='form-select'\n value={props.selected}\n onChange={e => props.onSortChange(e.target.value as WidgetSort)}\n >\n {Object.entries(WidgetSortLabel).map(([ key, value ]) => (\n <option key={key} value={key}>{value}</option>\n ))}\n </select>\n );\n}\n","import { CUSTOM_LETTER_TEMPLATE } from 'libs/shared/components/letters-bar/LettersBar';\n\nimport { WidgetSort } from 'apps/content-partners/enums/WidgetSort';\n\nfunction getSelectedLetter(letter: string) {\n if (!letter || letter.length !== 1)\n return CUSTOM_LETTER_TEMPLATE;\n\n return letter;\n}\n\nfunction getSelectedSort(sort: string) {\n if (!sort)\n return WidgetSort.RecentlyUpdated;\n\n return Object.values(WidgetSort).find(s => s.toLowerCase() === sort.toLowerCase()) ?? WidgetSort.RecentlyUpdated;\n}\n\ninterface GetContentPartnerParamsOptions {\n letter?: string;\n sort?: string;\n}\n\nexport function getContentPartnerParams(options: GetContentPartnerParamsOptions) {\n const { letter, sort } = options;\n\n return {\n selectedLetter: getSelectedLetter(letter),\n selectedSort: getSelectedSort(sort)\n };\n}\n","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ContentPartnerIndexDashboard } from 'libs/shared/apps/content-partners/components/content-partner-index-dashboard/ContentPartnerIndexDashboard';\nimport { CUSTOM_LETTER_TEMPLATE, LettersBar } from 'libs/shared/components/letters-bar/LettersBar';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\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 { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CuratedDashboard, CuratedWidgetQueryParams, CurrentUser, DashboardTargetType } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { useAvailablePresentations } from 'shared/hooks/presentations/useAvailablePresentations';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { ContentPartnerAppLinkHelper } from 'shared/utils/ContentPartnerAppLinkHelper';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\n\nimport { WidgetSortSelector } from 'apps/content-partners/components/widget-sort-selector/WidgetSortSelector';\nimport { WidgetSort } from 'apps/content-partners/enums/WidgetSort';\nimport { getContentPartnerParams } from 'apps/content-partners/utils/getContentPartnerParams';\nimport { getContentPartnerWidgetAppLinks } from 'apps/content-partners/utils/getContentPartnerWidgetAppLinks';\n\nconst namespace = 'contentPartners.discover';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ContentPartnersDiscoverViewProps {\n letter?: string;\n sort?: string;\n}\n\nfunction getParamLetter(letter: string) {\n if (letter === CUSTOM_LETTER_TEMPLATE)\n return;\n\n return letter;\n}\n\nfunction formatText(letter: string) {\n if (letter === CUSTOM_LETTER_TEMPLATE)\n return getPhrase('featuredChannels');\n \n return letter;\n}\n\ninterface GetDashboardOptions {\n dashboard: CuratedDashboard;\n selectedLetter: string;\n}\n\n/**\n * If the selected letter is not 'Featured' we filter the\n * dashboard to only include the content partners widgets\n */\nfunction getDashboard(options: GetDashboardOptions) {\n const { dashboard, selectedLetter } = options;\n \n if (!dashboard)\n return;\n \n if (selectedLetter === CUSTOM_LETTER_TEMPLATE)\n return dashboard;\n\n return { ...dashboard, widgets: dashboard.widgets.filter(w => w.widgetId === WidgetTypeId.ContentPartners) };\n}\n\nexport function ContentPartnersDiscoverView(props: ContentPartnersDiscoverViewProps): JSX.Element {\n const {\n selectedLetter,\n selectedSort\n } = getContentPartnerParams({\n letter: props.letter,\n sort: props.sort\n });\n \n useSetPageMetadata({\n title: getPhrase('pageTitle'),\n description: getPhrase('pageDescription')\n });\n\n const breakpoints = useBreakpoints();\n const isMdAndDown = breakpoints.md || breakpoints.sm || breakpoints.xs;\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem, presentationSlug: null });\n const { commonVideoProps } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail\n });\n\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const settings = useSettings(null);\n\n const { availablePresentations } = useAvailablePresentations();\n\n const { dashboard } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.DiscoverPartnerProfiles,\n queryParams: {}\n });\n\n function getWidgetContentRequest(\n id: string,\n params: CuratedWidgetQueryParams,\n template: WidgetTemplate,\n cursor?: string\n ): Flight.Request {\n return DashboardRequests.dashboardWidgetContent(id, params, template, undefined, { cursor: cursor ?? undefined });\n }\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n const ChannelLettersBar = React.useCallback(({\n forceSmallScreenDropdown\n }: {\n forceSmallScreenDropdown?: boolean\n }): JSX.Element => (\n <LettersBar\n showCustom\n noMarginBottom\n selected={selectedLetter}\n getItemAppLink={(letter: string) =>\n ContentPartnerAppLinkHelper.getPartnerHomeAppLink({ letter: getParamLetter(letter) })\n }\n formatDisplayText={formatText}\n forceSmallScreenDropdown={forceSmallScreenDropdown}\n />\n ), [selectedLetter]);\n \n const filteredDashboard = getDashboard({ dashboard: dashboard.data, selectedLetter });\n \n /**\n * We only want to sort / add letter prefix to api request\n * if the selected letter is not 'Featured'\n */\n const queryParams: CuratedWidgetQueryParams = {\n letterPrefix: selectedLetter === CUSTOM_LETTER_TEMPLATE ? undefined : selectedLetter,\n sort: selectedLetter === CUSTOM_LETTER_TEMPLATE ? undefined : selectedSort\n };\n\n function handleSortChange(sort: WidgetSort) {\n const sortParam = sort === WidgetSort.RecentlyUpdated ? undefined : sort;\n AppLinkHelper.trigger(\n ContentPartnerAppLinkHelper.getPartnerHomeAppLink({\n letter: queryParams.letterPrefix,\n sort: sortParam\n })\n );\n }\n\n const loaded = dashboard.hasCompleted;\n\n if (!loaded)\n return <></>;\n\n return (\n <div className='bg-white px-3'>\n <div className='d-flex d-md-block flex-column mb-4 gap-4'>\n <div className='d-flex flex-column flex-md-row justify-content-between align-items-md-center mb-md-3 gap-3'>\n <h1 className='h2 mb-0'>\n <Text namespace={namespace} phrase='headerTitle' />\n </h1>\n <div className='d-flex flex-column flex-md-row gap-3'>\n {isMdAndDown && <ChannelLettersBar forceSmallScreenDropdown />}\n <WidgetSortSelector\n selected={selectedSort}\n onSortChange={handleSortChange}\n disabled={selectedLetter === CUSTOM_LETTER_TEMPLATE}\n />\n </div>\n </div>\n {!isMdAndDown && <ChannelLettersBar />}\n </div>\n\n <div className='mb-4'>\n <VideoActionsContext.Provider value={videoActions}>\n <ContentPartnerIndexDashboard\n // Need to re-render the dashboard when the letter changes\n key={selectedLetter}\n \n currentUser={currentUser.data}\n availablePresentations={availablePresentations}\n dashboard={filteredDashboard}\n getWidgetContentRequest={getWidgetContentRequest}\n commonVideoProps={commonVideoProps}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n settings={settings}\n widgetAppLinks={getContentPartnerWidgetAppLinks(currentUser.data)}\n queryParams={queryParams}\n emptyStateImage={ImageUrls.EmptyStates.WATCH_HISTORY}\n />\n </VideoActionsContext.Provider>\n </div>\n \n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"B2_RD6Px2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/content-partners/components/content-partner-index-dashboard/empty-states/content-partner-index-dashboard-empty-state/ContentPartnerIndexDashboardEmptyState.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-index-dashboard/ContentPartnerIndexDashboard.tsx","../../../../libs/shared/src/components/letters-bar/letters-bar.module.scss","../../../../libs/shared/src/components/letters-bar/LettersBar.tsx","../../src/apps/content-partners/enums/WidgetSort.ts","../../src/apps/content-partners/components/widget-sort-selector/WidgetSortSelector.tsx","../../src/apps/content-partners/utils/getContentPartnerParams.ts","../../src/apps/content-partners/views/content-partners-discover/ContentPartnersDiscoverView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'contentPartner.contentPartnerIndexDashboardEmptyState';\n\ninterface ContentPartnerIndexDashboardEmptyStateProps {\n image?: string;\n letterFilter?: string;\n}\n\nexport function ContentPartnerIndexDashboardEmptyState(\n props: ContentPartnerIndexDashboardEmptyStateProps\n): JSX.Element {\n return (\n <EmptyState>\n {props.image &&\n <EmptyState.Image src={props.image} />\n }\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' options={{ letterFilter: props.letterFilter }} />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InfiniteWidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/InfiniteWidgetContainerView';\nimport { AllPartnerProfileWidgetTemplates } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\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 { CuratedDashboard, CuratedWidget, CuratedWidgetQueryParams, CurrentUser, DashboardTargetType, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport { ContentPartnerIndexDashboardEmptyState } from './empty-states/content-partner-index-dashboard-empty-state/ContentPartnerIndexDashboardEmptyState';\n\ninterface ContentPartnerIndexDashboardProps {\n dashboard: CuratedDashboard;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate,\n cursor?: string\n ) => Flight.Request;\n commonVideoProps: CommonVideoProps;\n isReadonly?: boolean;\n widgetAppLinks?: AllPartnerProfileWidgetTemplates['appLinks'];\n scrollToWidgetId?: string;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n settings?: AllPartnerProfileWidgetTemplates['settings'];\n audiences?: PresentationAudience[];\n queryParams?: CuratedWidgetQueryParams;\n currentUser: CurrentUser;\n availablePresentations: Presentation[];\n emptyStateImage?: string;\n}\n\nexport function ContentPartnerIndexDashboard(props: ContentPartnerIndexDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const { isEmptyWidget, setEmptyWidget } = useEmptyWidgets(widgets);\n\n function getWidgetContentRequest(\n id: string,\n widgetTypeId: WidgetTypeId,\n template: WidgetTemplate,\n cursor?: string\n ): Flight.Request {\n if (!widgets.length) return;\n\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard),\n undefined,\n undefined,\n { params: props.queryParams }\n );\n\n return props.getWidgetContentRequest(id, params, template, cursor);\n }\n\n const isContentPartnerWidgetEmpty = widgets.every(\n widget => isEmptyWidget(widget.id)\n );\n\n if (!widgets.length || isContentPartnerWidgetEmpty)\n return (\n <ContentPartnerIndexDashboardEmptyState\n image={props.emptyStateImage}\n letterFilter={props.queryParams?.letterPrefix}\n />\n );\n \n return (\n <div className='mt-3'>\n {widgets.map((widget, idx) => (\n <InfiniteWidgetContainerView<CuratedWidget, CuratedWidget, AllPartnerProfileWidgetTemplates>\n dashboardTarget={DashboardTargetType.DiscoverPartnerProfiles}\n key={widget.id}\n index={idx}\n item={widget}\n\n infiniteFetch={props.dashboard.widgets.length - 1 === idx}\n getName={widget => widget.name}\n getWidgetMetadata={w => w.metadata}\n appLinks={props.widgetAppLinks}\n hasPermissions={props.hasPermissions}\n commonVideoProps={props.commonVideoProps}\n audiences={props.audiences}\n setIsEmpty={isEmpty => setEmptyWidget(widget.id, isEmpty)}\n getCursor={w => w.cursor}\n getRequest={cursor => getWidgetContentRequest(widget.id, widget.widgetId, widget.templateId, cursor)}\n hasLocalPermissions={props.hasLocalPermissions}\n currentUser={props.currentUser}\n availablePresentations={props.availablePresentations}\n settingsHash={props.settings}\n getContent={w => w.content}\n resultsTransformers={WidgetHelper.getWidgetResultsTransformers()}\n isEmptyPredicate={items => (\n Array.isArray(items) && Array.isArray(items[0]?.content) && !items[0]?.content?.length\n )}\n getSelectedItems={null}\n getSeeMoreAppLink={null}\n appLinkOptions={null}\n />\n ))}\n </div>\n );\n}\n",":local {\n .pillTabSelector {\n ul {\n width: 100%;\n display: flex!important;\n }\n\n li {\n min-width: 0!important;\n flex-grow: 1;\n }\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport styles from './letters-bar.module.scss';\n\nexport const CUSTOM_LETTER_TEMPLATE = 'Custom';\n\nexport const ALPHABET = [\n CUSTOM_LETTER_TEMPLATE,\n '#',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'\n] as const;\n\ntype LetterBarOptions = typeof ALPHABET[number];\n\nconst LetterParamMap: {[key in LetterBarOptions]?: string } = {\n '#': '0'\n};\n\nconst ANALYTICS_OPTIONS = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n};\n\nfunction getSelectedAlphabet(selected: string, showCustom: boolean): LetterBarOptions | undefined {\n if (!selected)\n return;\n \n if (selected === '0')\n return '#';\n\n const alphabet = ALPHABET.find(letter => letter.toUpperCase() === selected.toUpperCase());\n\n if (alphabet === CUSTOM_LETTER_TEMPLATE && !showCustom)\n return;\n\n return alphabet;\n}\n\ninterface GenerateTabsOptions {\n selected: string;\n showCustom: boolean;\n getItemAppLink: (letter: string) => Core.AppLink;\n}\n\nfunction generateTabs(options: GenerateTabsOptions): PillTab[] {\n return ALPHABET.map(letter => {\n if (letter === CUSTOM_LETTER_TEMPLATE && !options.showCustom)\n return;\n\n const appLink = options.getItemAppLink(LetterParamMap[letter] ?? letter);\n\n return {\n name: letter,\n appLink,\n active: options.selected === letter,\n analyticsData: {\n name: letter,\n url: Core.AppLinkHelper.getHref(appLink)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n };\n }).filter(Boolean);\n}\n\ninterface LettersBarProps {\n selected: string;\n getItemAppLink: (letter: string) => Core.AppLink;\n showCustom?: boolean;\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n className?: string;\n noMarginBottom?: boolean;\n forceSmallScreenDropdown?: boolean;\n}\n\nexport function LettersBar(props: LettersBarProps): JSX.Element {\n const localSelected = getSelectedAlphabet(props.selected, props.showCustom);\n\n const tabs = generateTabs({\n selected: localSelected,\n showCustom: props.showCustom,\n getItemAppLink: props.getItemAppLink\n });\n \n return (\n <div className={classNames(props.noMarginBottom ? 'mb-0' : 'mb-3', props.className)}>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTabSelector}\n enableSmallScreenSupport={props.enableSmallScreenSupport}\n formatDisplayText={props.formatDisplayText}\n forceSmallScreenDropdown={props.forceSmallScreenDropdown}\n />\n </div>\n );\n}\n","export enum WidgetSort {\n RecentlyUpdated = 'lastupdated',\n ATOZ = 'name',\n Newest = 'datecreated'\n}\n","import React from 'react';\n\nimport { WidgetSort } from 'apps/content-partners/enums/WidgetSort';\n\nconst WidgetSortLabel: Record<WidgetSort, string> = {\n [WidgetSort.RecentlyUpdated]: 'Recently Updated',\n [WidgetSort.ATOZ]: 'A to Z',\n [WidgetSort.Newest]: 'Newest'\n};\n\ninterface WidgetSortSelectorProps {\n disabled?: boolean;\n selected: WidgetSort;\n onSortChange: (sort: WidgetSort) => void;\n}\n\nexport function WidgetSortSelector(props: WidgetSortSelectorProps): JSX.Element {\n return (\n <select\n id='widget-sort-selector'\n disabled={props.disabled}\n className='form-select'\n value={props.selected}\n onChange={e => props.onSortChange(e.target.value as WidgetSort)}\n >\n {Object.entries(WidgetSortLabel).map(([ key, value ]) => (\n <option key={key} value={key}>{value}</option>\n ))}\n </select>\n );\n}\n","import { CUSTOM_LETTER_TEMPLATE } from 'libs/shared/components/letters-bar/LettersBar';\n\nimport { WidgetSort } from 'apps/content-partners/enums/WidgetSort';\n\nfunction getSelectedLetter(letter: string) {\n if (!letter || letter.length !== 1)\n return CUSTOM_LETTER_TEMPLATE;\n\n return letter;\n}\n\nfunction getSelectedSort(sort: string) {\n if (!sort)\n return WidgetSort.RecentlyUpdated;\n\n return Object.values(WidgetSort).find(s => s.toLowerCase() === sort.toLowerCase()) ?? WidgetSort.RecentlyUpdated;\n}\n\ninterface GetContentPartnerParamsOptions {\n letter?: string;\n sort?: string;\n}\n\nexport function getContentPartnerParams(options: GetContentPartnerParamsOptions) {\n const { letter, sort } = options;\n\n return {\n selectedLetter: getSelectedLetter(letter),\n selectedSort: getSelectedSort(sort)\n };\n}\n","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ContentPartnerIndexDashboard } from 'libs/shared/apps/content-partners/components/content-partner-index-dashboard/ContentPartnerIndexDashboard';\nimport { CUSTOM_LETTER_TEMPLATE, LettersBar } from 'libs/shared/components/letters-bar/LettersBar';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\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 { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CuratedDashboard, CuratedWidgetQueryParams, CurrentUser, DashboardTargetType } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { useAvailablePresentations } from 'shared/hooks/presentations/useAvailablePresentations';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { ContentPartnerAppLinkHelper } from 'shared/utils/ContentPartnerAppLinkHelper';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\n\nimport { WidgetSortSelector } from 'apps/content-partners/components/widget-sort-selector/WidgetSortSelector';\nimport { WidgetSort } from 'apps/content-partners/enums/WidgetSort';\nimport { getContentPartnerParams } from 'apps/content-partners/utils/getContentPartnerParams';\nimport { getContentPartnerWidgetAppLinks } from 'apps/content-partners/utils/getContentPartnerWidgetAppLinks';\n\nconst namespace = 'contentPartners.discover';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ContentPartnersDiscoverViewProps {\n letter?: string;\n sort?: string;\n}\n\nfunction getParamLetter(letter: string) {\n if (letter === CUSTOM_LETTER_TEMPLATE)\n return;\n\n return letter;\n}\n\nfunction formatText(letter: string) {\n if (letter === CUSTOM_LETTER_TEMPLATE)\n return getPhrase('featuredChannels');\n \n return letter;\n}\n\ninterface GetDashboardOptions {\n dashboard: CuratedDashboard;\n selectedLetter: string;\n}\n\n/**\n * If the selected letter is not 'Featured' we filter the\n * dashboard to only include the content partners widgets\n */\nfunction getDashboard(options: GetDashboardOptions) {\n const { dashboard, selectedLetter } = options;\n \n if (!dashboard)\n return;\n \n if (selectedLetter === CUSTOM_LETTER_TEMPLATE)\n return dashboard;\n\n return { ...dashboard, widgets: dashboard.widgets.filter(w => w.widgetId === WidgetTypeId.ContentPartners) };\n}\n\nexport function ContentPartnersDiscoverView(props: ContentPartnersDiscoverViewProps): JSX.Element {\n const {\n selectedLetter,\n selectedSort\n } = getContentPartnerParams({\n letter: props.letter,\n sort: props.sort\n });\n \n useSetPageMetadata({\n title: getPhrase('pageTitle'),\n description: getPhrase('pageDescription')\n });\n\n const breakpoints = useBreakpoints();\n const isMdAndDown = breakpoints.md || breakpoints.sm || breakpoints.xs;\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem, presentationSlug: null });\n const { commonVideoProps } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail\n });\n\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const settings = useSettings(null);\n\n const { availablePresentations } = useAvailablePresentations();\n\n const { dashboard } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.DiscoverPartnerProfiles,\n queryParams: {}\n });\n\n function getWidgetContentRequest(\n id: string,\n params: CuratedWidgetQueryParams,\n template: WidgetTemplate,\n cursor?: string\n ): Flight.Request {\n return DashboardRequests.dashboardWidgetContent(id, params, template, undefined, { cursor: cursor ?? undefined });\n }\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n const ChannelLettersBar = React.useCallback(({\n forceSmallScreenDropdown\n }: {\n forceSmallScreenDropdown?: boolean\n }): JSX.Element => (\n <LettersBar\n showCustom\n noMarginBottom\n selected={selectedLetter}\n getItemAppLink={(letter: string) =>\n ContentPartnerAppLinkHelper.getPartnerHomeAppLink({ letter: getParamLetter(letter) })\n }\n formatDisplayText={formatText}\n forceSmallScreenDropdown={forceSmallScreenDropdown}\n />\n ), [selectedLetter]);\n \n const filteredDashboard = getDashboard({ dashboard: dashboard.data, selectedLetter });\n \n /**\n * We only want to sort / add letter prefix to api request\n * if the selected letter is not 'Featured'\n */\n const queryParams: CuratedWidgetQueryParams = {\n letterPrefix: selectedLetter === CUSTOM_LETTER_TEMPLATE ? undefined : selectedLetter,\n sort: selectedLetter === CUSTOM_LETTER_TEMPLATE ? undefined : selectedSort\n };\n\n function handleSortChange(sort: WidgetSort) {\n const sortParam = sort === WidgetSort.RecentlyUpdated ? undefined : sort;\n AppLinkHelper.trigger(\n ContentPartnerAppLinkHelper.getPartnerHomeAppLink({\n letter: queryParams.letterPrefix,\n sort: sortParam\n })\n );\n }\n\n const loaded = dashboard.hasCompleted;\n\n if (!loaded)\n return <></>;\n\n return (\n <div className='bg-white px-3'>\n <div className='d-flex d-md-block flex-column mb-4 gap-4'>\n <div className='d-flex flex-column flex-md-row justify-content-between align-items-md-center mb-md-3 gap-3'>\n <h1 className='h2 mb-0'>\n <Text namespace={namespace} phrase='headerTitle' />\n </h1>\n <div className='d-flex flex-column flex-md-row gap-3'>\n {isMdAndDown && <ChannelLettersBar forceSmallScreenDropdown />}\n <WidgetSortSelector\n selected={selectedSort}\n onSortChange={handleSortChange}\n disabled={selectedLetter === CUSTOM_LETTER_TEMPLATE}\n />\n </div>\n </div>\n {!isMdAndDown && <ChannelLettersBar />}\n </div>\n\n <div className='mb-4'>\n <VideoActionsContext.Provider value={videoActions}>\n <ContentPartnerIndexDashboard\n // Need to re-render the dashboard when the letter changes\n key={selectedLetter}\n \n currentUser={currentUser.data}\n availablePresentations={availablePresentations}\n dashboard={filteredDashboard}\n getWidgetContentRequest={getWidgetContentRequest}\n commonVideoProps={commonVideoProps}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n settings={settings}\n widgetAppLinks={getContentPartnerWidgetAppLinks(currentUser.data)}\n queryParams={queryParams}\n emptyStateImage={ImageUrls.EmptyStates.WATCH_HISTORY}\n />\n </VideoActionsContext.Provider>\n </div>\n \n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./snXCXfT6.chunk.js";import{_ as n,y as r}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{n as i}from"./B785hxeE.chunk.js";import{t as a}from"./CQyJ7YGa.chunk.js";import{t as o}from"./C2w0pmFW.chunk.js";import{t as s}from"./wrLrTezN.chunk.js";import{t as c}from"./BXTI9cmX.chunk.js";import{u as l}from"./BX0wDJmp.chunk.js";import{t as u}from"./C1SLt-ar.chunk.js";import{U as d,l as f,o as p,y as m,z as h}from"./NlCAcBdo.chunk.js";import{i as g,n as _,r as v,t as y}from"./Cr6TXzQQ2.chunk.js";import{n as b,t as x}from"./CmcCVXi32.chunk.js";import{t as ee}from"./DGmmTRu72.chunk.js";import{t as S}from"./DZX1tZ-D2.chunk.js";import{t as C}from"./CqrjHjAN.chunk.js";import{t as w}from"./eoAypzU3.chunk.js";import{t as T}from"./XIE88U01.chunk.js";import{t as te}from"./7-GJWRH82.chunk.js";import{t as E}from"./BJZXCSV9.chunk.js";import{n as D,t as O}from"./C6-aC3vu.chunk.js";import{t as k}from"./B3gsVN-_.chunk.js";import{t as A}from"./B_-pJtOI2.chunk.js";import{n as j}from"./CpFtf-tI2.chunk.js";import{t as M}from"./CCdnFnNP.chunk.js";import{t as N}from"./De16zmhB.chunk.js";import{t as ne}from"./DewCxv4i.chunk.js";import{t as re}from"./B8gP8YoA.chunk.js";import{t as ie}from"./IgoS6DLn2.chunk.js";import{t as P}from"./tmS8JSuZ.chunk.js";import{t as F}from"./DzgAvoez.chunk.js";import{t as I}from"./BnuuRu_J2.chunk.js";import{t as L}from"./DDiorDZl.chunk.js";import{t as R}from"./CY_30Xdt.chunk.js";import{o as z}from"./CpgHBpMp.chunk.js";import{n as B,t as V}from"./By1soXyj.chunk.js";import{t as H}from"./CC5Dr9aG.chunk.js";import{r as U}from"./yk6K0dmz2.chunk.js";import{n as W,t as G}from"./CvtZ8ZFA2.chunk.js";import{t as K}from"./BCqRKj1E2.chunk.js";import{t as q}from"./C8aOMmXJ2.chunk.js";import{t as J}from"./8JGe5Ug_2.chunk.js";import{t as ae}from"./BwBWuxjr2.chunk.js";var oe=e(o()),Y=s();function se(e){let n=L.getPartnerLinkByType(e.partnerProfile?.links,`website`,L.makeUTMs({slug:e.partnerProfile._slug.value})),r=S.getHostname(n)??n;return(0,Y.jsx)(`div`,{className:`mt-3`,children:(0,Y.jsx)(q,{children:()=>(0,Y.jsxs)(`p`,{className:`mb-0`,children:[n&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`a`,{href:n,target:`_blank`,rel:`noopener noreferrer`,className:`position-relative d-inline-block ps-4 mb-2 me-2`,children:[(0,Y.jsx)(t,{svg:N,className:`svg-container position-absolute top-50 start-0 translate-middle-y`}),(0,Y.jsx)(`span`,{className:`ps-1`,children:r})]}),(0,Y.jsx)(`span`,{className:`mb-2 me-2`,children:`•`})]}),e.partnerProfile.description]})})})}var X=`contentPartners.contentPartnerDashboardComingSoon`,ce=a.encloseNamespace(X);function le(e){return(0,Y.jsxs)(E,{children:[(0,Y.jsx)(E.Image,{src:e.comingSoonImageUrl,altText:ce(`description`,{partnerName:e.partnerName})}),(0,Y.jsx)(E.Heading,{children:(0,Y.jsx)(j,{namespace:X,phrase:`heading`})}),(0,Y.jsx)(E.Info,{children:(0,Y.jsx)(j,{namespace:X,phrase:`description`,options:{partnerName:e.partnerName}})})]})}var Z=`contentPartners.contentPartnerDashboardContentRegion`,Q=a.encloseNamespace(Z);function ue(e){return(0,Y.jsxs)(E,{children:[(0,Y.jsx)(E.Image,{src:e.contentRegionImageUrl,altText:Q(`imageAlt`)}),(0,Y.jsx)(E.Heading,{children:(0,Y.jsx)(j,{namespace:Z,phrase:`heading`})}),(0,Y.jsx)(E.Cta,{text:Q(`cta`),appLink:e.contentRegionButtonLink,className:`btn btn-dark`})]})}var $=`contentPartners.contentPartnerDashboardNoContent`,de=a.encloseNamespace($);function fe(e){return(0,Y.jsxs)(E,{children:[(0,Y.jsx)(E.Image,{src:e.noContentImageUrl,altText:de(`description`)}),(0,Y.jsx)(E.Heading,{children:(0,Y.jsx)(j,{namespace:$,phrase:`heading`})}),(0,Y.jsx)(E.Info,{children:(0,Y.jsx)(j,{namespace:$,phrase:`description`})})]})}var pe={"coming-soon":le,"content-region":ue,"no-content":fe};function me(e){let t=pe[e.type];return(0,Y.jsx)(t,{...e})}var he=[g.ContentPartnerVideos];function ge(e,t){let n=e[t];return n?he.includes(n.widgetId)&&t===e.length-1:!1}function _e(e){let t=u.sortBy(e.dashboard?.widgets,`index`),{emptyWidgets:n,setEmptyWidget:r}=B(t);function a(t,n,r,i){let a=v.getWidgetParams(n,r,v.getDashboardTargetType(e.dashboard));return e.getWidgetContentRequest(t,a,r,void 0,i)}function o(){if(!e.isInContentRegion)return`content-region`;if(e.isComingSoon||e.dashboard.status===x.Archived&&!e.isReadonly)return`coming-soon`;if(e.dashboard.status===x.Draft&&!e.isPreviewing)return!1;if(!t?.length)return`no-content`;let r=Object.values(n);return r.length>0&&r.every(e=>!!e)?`no-content`:!1}let s=L.getPartnerBannerInfo(e.partnerProfile),c=o(),l=(!c||c===`content-region`)&&e.partnerProfile.description;return(0,Y.jsxs)(Y.Fragment,{children:[!!t.length&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(R,{type:`partner-profile`,partnerBannerType:L.getPartnerBannerType(e.partnerProfile),heading:s.heading,blockColourClass:s.blockColourClass,logo:s.logo,logoBgColour:s.logoBgColour,banner:s.banner,imageCdnUrl:e.commonVideoProps.imageCdnUrl,actions:e.getBannerActions?.(),onClickSignUp:e.onClickSignUp,isAuthenticated:e.isAuthenticated,videoUrl:e.partnerProfile._videobanner?.value?.url,websiteUrl:L.getPartnerLinkByType(e.partnerProfile?.links,`website`,L.makeUTMs({slug:e.partnerProfile._slug.value})),isStudent:e.hasPermissions(i.StudentExperience),log:e.log}),(0,Y.jsxs)(`div`,{className:`py-3 mb-3 border-bottom`,children:[(0,Y.jsx)(F,{breadcrumbs:e.breadcrumbs}),l&&(0,Y.jsx)(se,{partnerProfile:e.partnerProfile})]}),(0,Y.jsx)(`div`,{className:`mt-3`,children:!c&&t.map((n,i)=>(0,Y.jsx)(K,{dashboardTarget:b.PartnerProfile,index:i,item:n,infiniteFetch:ge(t,i),getName:e=>e.name,getWidgetMetadata:e=>e.metadata,appLinks:e.widgetAppLinks,hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps,audiences:e.audiences,setIsEmpty:e=>r(n.id,e),getCursor:e=>e.cursor,getRequest:e=>a(n.id,n.widgetId,n.templateId,e),hasLocalPermissions:e.hasLocalPermissions,settingsHash:e.settings,getContent:e=>e.content,resultsTransformers:y.getWidgetResultsTransformers(),onClickSearchAllVideos:e.onClickSearchAllVideos,getSeeMoreAppLink:e.getSeeMoreAppLink,isEmptyPredicate:e=>Array.isArray(e)&&Array.isArray(e[0]?.content)&&!e[0]?.content?.length,getSelectedItems:null,appLinkOptions:null},n.id))})]}),c&&(0,Y.jsx)(me,{type:c,partnerName:e.partnerProfile.name,comingSoonImageUrl:e.emptyImageUrl,contentRegionImageUrl:e.emptyImageUrl,contentRegionButtonLink:e.widgetAppLinks?.partnerHome?.(),noContentImageUrl:e.emptyImageUrl})]})}function ve(){return{"click-video-banner-controls":{isValid:()=>!0,analyticsOptions:{actionType:h.Click,entity:f.PartnerProfile,descriptor:p.VideoBannerControls,location:m.ContentPartnerDashboardVideoBanner}},"click-video-banner-sign-up":{isValid:()=>!0,analyticsOptions:{actionType:h.Click,entity:f.PartnerProfile,workflowPhase:d.Start,descriptor:p.VideoBannerSignUp,location:m.ContentPartnerDashboardVideoBanner}}}}function ye(e){let{getData:t,log:n}=P({analyticsOptions:e.analyticsOptions,baseData:e.data,config:ve(),shouldLog:e.shouldLog??!0});return{log:n,getData:t}}var be=a.encloseNamespace(`contentPartners.dashboard`);function xe(e){let t=l(C.currentUser()),i=ie(e.slug),a=W({location:G.VideoItem,presentationSlug:null}),{log:o}=ye({data:{entity:{id:i.data?.id,name:i.data?.name,contentRegion:t.data?.contentRegion}},analyticsOptions:{entity:f.PartnerProfile,location:m.ContentPartnerDashboard}});ae({app:`channels`,id:i.data?.id,metadata:{conversionSuffix:i.data?.name}});let{openInCurationStudioLabel:s,isUserCurator:u,getOpenInCurationStudioLink:d}=U(),{commonVideoProps:p}=I({locationContext:m.VideoThumbnail}),{hasPermissions:h,hasLocalPermissions:g}=k(),v=ee(null),{dashboard:y,isPreviewing:x}=re({targetType:b.PartnerProfile,partnerProfileSlug:e.slug,queryParams:e.queryParams});O(D.getDefaultMetadata({title:i.data?.name,phraseContext:{phraseHandler:be,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},allowIndexing:!0}));let S=H({name:i.data?.name});oe.useEffect(()=>{!y.hasCompleted||y.data||n.throw(new T)},[y.data,y.hasCompleted]);let E=V(t.data,{channelId:i.data?.id,presentationSlug:null});function j(){return u?[{label:s,href:d(y.data?.typeId,y.data?.id),openInNewTab:!0}]:[]}function N(e,t,n,r,i){return ne.dashboardWidgetContent(e,t,n,r,{cursor:i})}function P(e){return _[e.widgetId]?.getCollectionAppLink?.(E,e.content)??null}function F(e){o?.({type:`click-video-banner-sign-up`,email:e}),r.trigger(M.getSignUpAppLink({email:e}))}let R=i.hasCompleted&&y.hasCompleted,B=A.isBot(),K=x?!0:L.isInContentRegion(i.data,t.data?.contentRegion,t.data?.isAuthenticated);function q(){r.trigger({application:c.SEARCH,action:w.Search.HOME,params:{scopeId:i.data?.id}})}return R?(0,Y.jsx)(`div`,{className:`bg-white px-4 position-relative`,children:(0,Y.jsxs)(z.Provider,{value:a,children:[!!(x&&y.data)&&(0,Y.jsx)(J,{status:y.data.status,type:`channel`}),(0,Y.jsx)(_e,{dashboard:y.data,partnerProfile:i.data,getWidgetContentRequest:N,commonVideoProps:p,breadcrumbs:S,getBannerActions:j,hasPermissions:h,hasLocalPermissions:g,settings:v,widgetAppLinks:E,emptyImageUrl:te.EmptyStates.WATCH_HISTORY,isBot:B,lazyLoad:!B,isAuthenticated:t.data?.isAuthenticated,isInContentRegion:K,onClickSignUp:F,isPreviewing:x,onClickSearchAllVideos:q,getSeeMoreAppLink:P,log:o})]})}):(0,Y.jsx)(Y.Fragment,{})}export{xe as ContentPartnersDashboardView};
2
- //# sourceMappingURL=BgPye7Nd2.chunk.js.map
1
+ import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./snXCXfT6.chunk.js";import{_ as n,y as r}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{n as i}from"./B785hxeE.chunk.js";import{t as a}from"./CQyJ7YGa.chunk.js";import{t as o}from"./C2w0pmFW.chunk.js";import{t as s}from"./wrLrTezN.chunk.js";import{t as c}from"./BXTI9cmX.chunk.js";import{u as l}from"./BX0wDJmp.chunk.js";import{t as u}from"./C1SLt-ar.chunk.js";import{U as d,l as f,o as p,y as m,z as h}from"./NlCAcBdo.chunk.js";import{i as g,n as _,r as v,t as y}from"./Cr6TXzQQ2.chunk.js";import{n as b,t as x}from"./CmcCVXi32.chunk.js";import{t as ee}from"./DGmmTRu72.chunk.js";import{t as S}from"./DZX1tZ-D2.chunk.js";import{t as C}from"./CqrjHjAN.chunk.js";import{t as w}from"./eoAypzU3.chunk.js";import{t as T}from"./XIE88U01.chunk.js";import{t as te}from"./7-GJWRH82.chunk.js";import{t as E}from"./BJZXCSV9.chunk.js";import{n as D,t as O}from"./C6-aC3vu.chunk.js";import{t as k}from"./B3gsVN-_.chunk.js";import{t as A}from"./B_-pJtOI2.chunk.js";import{n as j}from"./CpFtf-tI2.chunk.js";import{t as M}from"./CCdnFnNP.chunk.js";import{t as N}from"./De16zmhB.chunk.js";import{t as ne}from"./DewCxv4i.chunk.js";import{t as re}from"./B8gP8YoA.chunk.js";import{t as ie}from"./IgoS6DLn2.chunk.js";import{t as P}from"./tmS8JSuZ.chunk.js";import{t as F}from"./DzgAvoez.chunk.js";import{t as I}from"./BnuuRu_J2.chunk.js";import{t as L}from"./DDiorDZl.chunk.js";import{t as R}from"./CY_30Xdt.chunk.js";import{o as z}from"./CpgHBpMp.chunk.js";import{n as B,t as V}from"./By1soXyj.chunk.js";import{t as H}from"./CC5Dr9aG.chunk.js";import{r as U}from"./yk6K0dmz2.chunk.js";import{n as W,t as G}from"./CvtZ8ZFA2.chunk.js";import{t as K}from"./s6NJOjzU2.chunk.js";import{t as q}from"./C8aOMmXJ2.chunk.js";import{t as J}from"./B5GEXNkP2.chunk.js";import{t as ae}from"./B1hsuVfV2.chunk.js";var oe=e(o()),Y=s();function se(e){let n=L.getPartnerLinkByType(e.partnerProfile?.links,`website`,L.makeUTMs({slug:e.partnerProfile._slug.value})),r=S.getHostname(n)??n;return(0,Y.jsx)(`div`,{className:`mt-3`,children:(0,Y.jsx)(q,{children:()=>(0,Y.jsxs)(`p`,{className:`mb-0`,children:[n&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`a`,{href:n,target:`_blank`,rel:`noopener noreferrer`,className:`position-relative d-inline-block ps-4 mb-2 me-2`,children:[(0,Y.jsx)(t,{svg:N,className:`svg-container position-absolute top-50 start-0 translate-middle-y`}),(0,Y.jsx)(`span`,{className:`ps-1`,children:r})]}),(0,Y.jsx)(`span`,{className:`mb-2 me-2`,children:`•`})]}),e.partnerProfile.description]})})})}var X=`contentPartners.contentPartnerDashboardComingSoon`,ce=a.encloseNamespace(X);function le(e){return(0,Y.jsxs)(E,{children:[(0,Y.jsx)(E.Image,{src:e.comingSoonImageUrl,altText:ce(`description`,{partnerName:e.partnerName})}),(0,Y.jsx)(E.Heading,{children:(0,Y.jsx)(j,{namespace:X,phrase:`heading`})}),(0,Y.jsx)(E.Info,{children:(0,Y.jsx)(j,{namespace:X,phrase:`description`,options:{partnerName:e.partnerName}})})]})}var Z=`contentPartners.contentPartnerDashboardContentRegion`,Q=a.encloseNamespace(Z);function ue(e){return(0,Y.jsxs)(E,{children:[(0,Y.jsx)(E.Image,{src:e.contentRegionImageUrl,altText:Q(`imageAlt`)}),(0,Y.jsx)(E.Heading,{children:(0,Y.jsx)(j,{namespace:Z,phrase:`heading`})}),(0,Y.jsx)(E.Cta,{text:Q(`cta`),appLink:e.contentRegionButtonLink,className:`btn btn-dark`})]})}var $=`contentPartners.contentPartnerDashboardNoContent`,de=a.encloseNamespace($);function fe(e){return(0,Y.jsxs)(E,{children:[(0,Y.jsx)(E.Image,{src:e.noContentImageUrl,altText:de(`description`)}),(0,Y.jsx)(E.Heading,{children:(0,Y.jsx)(j,{namespace:$,phrase:`heading`})}),(0,Y.jsx)(E.Info,{children:(0,Y.jsx)(j,{namespace:$,phrase:`description`})})]})}var pe={"coming-soon":le,"content-region":ue,"no-content":fe};function me(e){let t=pe[e.type];return(0,Y.jsx)(t,{...e})}var he=[g.ContentPartnerVideos];function ge(e,t){let n=e[t];return n?he.includes(n.widgetId)&&t===e.length-1:!1}function _e(e){let t=u.sortBy(e.dashboard?.widgets,`index`),{emptyWidgets:n,setEmptyWidget:r}=B(t);function a(t,n,r,i){let a=v.getWidgetParams(n,r,v.getDashboardTargetType(e.dashboard));return e.getWidgetContentRequest(t,a,r,void 0,i)}function o(){if(!e.isInContentRegion)return`content-region`;if(e.isComingSoon||e.dashboard.status===x.Archived&&!e.isReadonly)return`coming-soon`;if(e.dashboard.status===x.Draft&&!e.isPreviewing)return!1;if(!t?.length)return`no-content`;let r=Object.values(n);return r.length>0&&r.every(e=>!!e)?`no-content`:!1}let s=L.getPartnerBannerInfo(e.partnerProfile),c=o(),l=(!c||c===`content-region`)&&e.partnerProfile.description;return(0,Y.jsxs)(Y.Fragment,{children:[!!t.length&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(R,{type:`partner-profile`,partnerBannerType:L.getPartnerBannerType(e.partnerProfile),heading:s.heading,blockColourClass:s.blockColourClass,logo:s.logo,logoBgColour:s.logoBgColour,banner:s.banner,imageCdnUrl:e.commonVideoProps.imageCdnUrl,actions:e.getBannerActions?.(),onClickSignUp:e.onClickSignUp,isAuthenticated:e.isAuthenticated,videoUrl:e.partnerProfile._videobanner?.value?.url,websiteUrl:L.getPartnerLinkByType(e.partnerProfile?.links,`website`,L.makeUTMs({slug:e.partnerProfile._slug.value})),isStudent:e.hasPermissions(i.StudentExperience),log:e.log}),(0,Y.jsxs)(`div`,{className:`py-3 mb-3 border-bottom`,children:[(0,Y.jsx)(F,{breadcrumbs:e.breadcrumbs}),l&&(0,Y.jsx)(se,{partnerProfile:e.partnerProfile})]}),(0,Y.jsx)(`div`,{className:`mt-3`,children:!c&&t.map((n,i)=>(0,Y.jsx)(K,{dashboardTarget:b.PartnerProfile,index:i,item:n,infiniteFetch:ge(t,i),getName:e=>e.name,getWidgetMetadata:e=>e.metadata,appLinks:e.widgetAppLinks,hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps,audiences:e.audiences,setIsEmpty:e=>r(n.id,e),getCursor:e=>e.cursor,getRequest:e=>a(n.id,n.widgetId,n.templateId,e),hasLocalPermissions:e.hasLocalPermissions,settingsHash:e.settings,getContent:e=>e.content,resultsTransformers:y.getWidgetResultsTransformers(),onClickSearchAllVideos:e.onClickSearchAllVideos,getSeeMoreAppLink:e.getSeeMoreAppLink,isEmptyPredicate:e=>Array.isArray(e)&&Array.isArray(e[0]?.content)&&!e[0]?.content?.length,getSelectedItems:null,appLinkOptions:null},n.id))})]}),c&&(0,Y.jsx)(me,{type:c,partnerName:e.partnerProfile.name,comingSoonImageUrl:e.emptyImageUrl,contentRegionImageUrl:e.emptyImageUrl,contentRegionButtonLink:e.widgetAppLinks?.partnerHome?.(),noContentImageUrl:e.emptyImageUrl})]})}function ve(){return{"click-video-banner-controls":{isValid:()=>!0,analyticsOptions:{actionType:h.Click,entity:f.PartnerProfile,descriptor:p.VideoBannerControls,location:m.ContentPartnerDashboardVideoBanner}},"click-video-banner-sign-up":{isValid:()=>!0,analyticsOptions:{actionType:h.Click,entity:f.PartnerProfile,workflowPhase:d.Start,descriptor:p.VideoBannerSignUp,location:m.ContentPartnerDashboardVideoBanner}}}}function ye(e){let{getData:t,log:n}=P({analyticsOptions:e.analyticsOptions,baseData:e.data,config:ve(),shouldLog:e.shouldLog??!0});return{log:n,getData:t}}var be=a.encloseNamespace(`contentPartners.dashboard`);function xe(e){let t=l(C.currentUser()),i=ie(e.slug),a=W({location:G.VideoItem,presentationSlug:null}),{log:o}=ye({data:{entity:{id:i.data?.id,name:i.data?.name,contentRegion:t.data?.contentRegion}},analyticsOptions:{entity:f.PartnerProfile,location:m.ContentPartnerDashboard}});ae({app:`channels`,id:i.data?.id,metadata:{conversionSuffix:i.data?.name}});let{openInCurationStudioLabel:s,isUserCurator:u,getOpenInCurationStudioLink:d}=U(),{commonVideoProps:p}=I({locationContext:m.VideoThumbnail}),{hasPermissions:h,hasLocalPermissions:g}=k(),v=ee(null),{dashboard:y,isPreviewing:x}=re({targetType:b.PartnerProfile,partnerProfileSlug:e.slug,queryParams:e.queryParams});O(D.getDefaultMetadata({title:i.data?.name,phraseContext:{phraseHandler:be,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},allowIndexing:!0}));let S=H({name:i.data?.name});oe.useEffect(()=>{!y.hasCompleted||y.data||n.throw(new T)},[y.data,y.hasCompleted]);let E=V(t.data,{channelId:i.data?.id,presentationSlug:null});function j(){return u?[{label:s,href:d(y.data?.typeId,y.data?.id),openInNewTab:!0}]:[]}function N(e,t,n,r,i){return ne.dashboardWidgetContent(e,t,n,r,{cursor:i})}function P(e){return _[e.widgetId]?.getCollectionAppLink?.(E,e.content)??null}function F(e){o?.({type:`click-video-banner-sign-up`,email:e}),r.trigger(M.getSignUpAppLink({email:e}))}let R=i.hasCompleted&&y.hasCompleted,B=A.isBot(),K=x?!0:L.isInContentRegion(i.data,t.data?.contentRegion,t.data?.isAuthenticated);function q(){r.trigger({application:c.SEARCH,action:w.Search.HOME,params:{scopeId:i.data?.id}})}return R?(0,Y.jsx)(`div`,{className:`bg-white px-4 position-relative`,children:(0,Y.jsxs)(z.Provider,{value:a,children:[!!(x&&y.data)&&(0,Y.jsx)(J,{status:y.data.status,type:`channel`}),(0,Y.jsx)(_e,{dashboard:y.data,partnerProfile:i.data,getWidgetContentRequest:N,commonVideoProps:p,breadcrumbs:S,getBannerActions:j,hasPermissions:h,hasLocalPermissions:g,settings:v,widgetAppLinks:E,emptyImageUrl:te.EmptyStates.WATCH_HISTORY,isBot:B,lazyLoad:!B,isAuthenticated:t.data?.isAuthenticated,isInContentRegion:K,onClickSignUp:F,isPreviewing:x,onClickSearchAllVideos:q,getSeeMoreAppLink:P,log:o})]})}):(0,Y.jsx)(Y.Fragment,{})}export{xe as ContentPartnersDashboardView};
2
+ //# sourceMappingURL=B338pwKt2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BgPye7Nd2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/channel-dashboard-description/ChannelDashboardDescription.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-dashboard-coming-soon/ContentPartnerDashboardComingSoon.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-dashboard-content-region/ContentPartnerDashboardContentRegion.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-dashboard-no-content/ContentPartnerDashboardNoContent.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-empty-state/ContentPartnerEmptyState.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/ContentPartnerDashboard.tsx","../../../../libs/shared/src/apps/content-partners/utils/get-content-partner-event-logger/getContentPartnerEventLogger.ts","../../src/apps/content-partners/views/content-partners-dashboard/ContentPartnersDashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { ExpandableTextInline } from 'libs/shared/components/expandable-text-inline/ExpandableTextInline';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { LinkSvg } from 'libs/shared/images/svg/objects/LinkSvg';\nimport { PartnerProfile } from 'libs/shared/interfaces';\n\ninterface ChannelDashboardDescriptionProps {\n partnerProfile: PartnerProfile;\n}\n\nexport function ChannelDashboardDescription(props: ChannelDashboardDescriptionProps): JSX.Element {\n const websiteLink = ContentPartnersHelper.getPartnerLinkByType(\n props.partnerProfile?.links,\n 'website',\n ContentPartnersHelper.makeUTMs({ slug: props.partnerProfile._slug.value })\n );\n\n const displayWebsiteLink = UrlHelper.getHostname(websiteLink) ?? websiteLink;\n\n return (\n <div className='mt-3'>\n <ExpandableTextInline>\n {() => (\n <p className='mb-0'>\n {websiteLink && (\n <>\n <a\n href={websiteLink}\n target='_blank'\n rel='noopener noreferrer'\n className='position-relative d-inline-block ps-4 mb-2 me-2'\n >\n <SvgContainer svg={LinkSvg} className='svg-container position-absolute top-50 start-0 translate-middle-y' />\n <span className='ps-1'>{displayWebsiteLink}</span>\n </a>\n <span className='mb-2 me-2'>&bull;</span>\n </>\n )}\n {props.partnerProfile.description}\n </p>\n )}\n </ExpandableTextInline>\n </div>\n );\n}\n","import React from 'react';\n\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';\n\nconst namespace = 'contentPartners.contentPartnerDashboardComingSoon';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ContentPartnerDashboardComingSoonProps {\n partnerName: string;\n comingSoonImageUrl: string;\n}\n\nexport function ContentPartnerDashboardComingSoon(props: ContentPartnerDashboardComingSoonProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image\n src={props.comingSoonImageUrl}\n altText={getPhrase('description', { partnerName: props.partnerName })}\n />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='description' options={{ partnerName: props.partnerName }} />\n </EmptyState.Info>\n </EmptyState>\n );\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';\n\nconst namespace = 'contentPartners.contentPartnerDashboardContentRegion';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ContentPartnerDashboardContentRegionProps {\n contentRegionImageUrl: string;\n contentRegionButtonLink: Core.AppLink;\n}\n\nexport function ContentPartnerDashboardContentRegion(props: ContentPartnerDashboardContentRegionProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={props.contentRegionImageUrl} altText={getPhrase('imageAlt')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Cta text={getPhrase('cta')} appLink={props.contentRegionButtonLink} className='btn btn-dark' />\n </EmptyState>\n );\n}\n","import React from 'react';\n\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';\n\nconst namespace = 'contentPartners.contentPartnerDashboardNoContent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ContentPartnerDashboardNoContentProps {\n noContentImageUrl: string;\n}\n\nexport function ContentPartnerDashboardNoContent(props: ContentPartnerDashboardNoContentProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image\n src={props.noContentImageUrl}\n altText={getPhrase('description')}\n />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='description' />\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport {\n ContentPartnerDashboardComingSoon,\n ContentPartnerDashboardComingSoonProps\n} from '../content-partner-dashboard-coming-soon/ContentPartnerDashboardComingSoon';\nimport {\n ContentPartnerDashboardContentRegion,\n ContentPartnerDashboardContentRegionProps\n} from '../content-partner-dashboard-content-region/ContentPartnerDashboardContentRegion';\nimport {\n ContentPartnerDashboardNoContent,\n ContentPartnerDashboardNoContentProps\n} from '../content-partner-dashboard-no-content/ContentPartnerDashboardNoContent';\n\nexport type ContentPartnerEmptyStateType = 'coming-soon' | 'content-region' | 'no-content';\n\nconst ContentParterEmptyStateTypes: Record<ContentPartnerEmptyStateType, React.ComponentType<any>> = {\n 'coming-soon': ContentPartnerDashboardComingSoon,\n 'content-region': ContentPartnerDashboardContentRegion,\n 'no-content': ContentPartnerDashboardNoContent\n};\n\ntype EmptyStateType<TType extends ContentPartnerEmptyStateType, TProps> = TProps & {\n type: TType\n};\n\ntype ContentPartnerEmptyStateProps =\n EmptyStateType<'coming-soon', ContentPartnerDashboardComingSoonProps> |\n EmptyStateType<'content-region', ContentPartnerDashboardContentRegionProps> |\n EmptyStateType<'no-content', ContentPartnerDashboardNoContentProps>;\n\nexport function ContentPartnerEmptyState(props: ContentPartnerEmptyStateProps): JSX.Element {\n const Component = ContentParterEmptyStateTypes[props.type];\n\n return <Component {...props} />;\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\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 { InfiniteWidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/InfiniteWidgetContainerView';\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 { CuratedDashboard, CuratedWidget, CuratedWidgetQueryParams, CurrentUser, DashboardStatus, DashboardTargetType, PartnerProfile, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport { ContentPartnerEventLoggerFn } from '../../utils/get-content-partner-event-logger/getContentPartnerEventLogger';\n\nimport { ChannelDashboardDescription } from './channel-dashboard-description/ChannelDashboardDescription';\nimport { ContentPartnerEmptyState, ContentPartnerEmptyStateType } from './empty-state/content-partner-empty-state/ContentPartnerEmptyState';\n\nconst InfiniteFetchWidgetIds: WidgetTypeId[] = [WidgetTypeId.ContentPartnerVideos];\n\nfunction shouldInfiniteFetch(widgets: CuratedWidget[], index: number): boolean {\n const currentWidget = widgets[index];\n\n if (!currentWidget) return false;\n \n return InfiniteFetchWidgetIds.includes(currentWidget.widgetId) && index === widgets.length - 1;\n}\n\nexport interface ContentPartnerDashboardProps {\n dashboard: CuratedDashboard;\n partnerProfile: PartnerProfile;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate,\n presentation?: Presentation,\n cursor?: string\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 currentUser?: CurrentUser;\n emptyImageUrl?: string;\n lazyLoad?: boolean;\n isBot?: boolean;\n isComingSoon?: boolean;\n isPreviewing?: boolean;\n isAuthenticated?: boolean;\n isInContentRegion: boolean;\n onClickSignUp: (email: string) => void;\n onClickSearchAllVideos?: () => void;\n getSeeMoreAppLink?: (widget: CuratedWidget) => Core.AppLink;\n log?: ContentPartnerEventLoggerFn;\n}\n\nexport function ContentPartnerDashboard(props: ContentPartnerDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const { emptyWidgets, setEmptyWidget } = useEmptyWidgets(widgets);\n\n function getWidgetContentRequest(\n id: string,\n widgetTypeId: WidgetTypeId,\n template: WidgetTemplate,\n cursor?: string\n ): 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, undefined, cursor);\n }\n\n function getEmptyStateType(): ContentPartnerEmptyStateType | false {\n if (!props.isInContentRegion)\n return 'content-region';\n \n if (props.isComingSoon)\n return 'coming-soon';\n \n if (props.dashboard.status === DashboardStatus.Archived && !props.isReadonly)\n return 'coming-soon';\n \n if (props.dashboard.status === DashboardStatus.Draft && !props.isPreviewing)\n return false;\n\n if (!widgets?.length)\n return 'no-content';\n \n const emptyValues = Object.values(emptyWidgets);\n \n if (emptyValues.length > 0 && emptyValues.every(state => !!state))\n return 'no-content';\n\n return false;\n }\n\n const bannerInfo = ContentPartnersHelper.getPartnerBannerInfo(props.partnerProfile);\n\n const emptyState = getEmptyStateType();\n const showExpandableDescription = (!emptyState || emptyState === 'content-region') && props.partnerProfile.description;\n\n return (\n <>\n {!!widgets.length &&\n <>\n <BannerHeader\n type='partner-profile'\n partnerBannerType={ContentPartnersHelper.getPartnerBannerType(props.partnerProfile)}\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 videoUrl={props.partnerProfile._videobanner?.value?.url}\n websiteUrl={ContentPartnersHelper.getPartnerLinkByType(\n props.partnerProfile?.links,\n 'website',\n ContentPartnersHelper.makeUTMs({ slug: props.partnerProfile._slug.value })\n )}\n isStudent={props.hasPermissions(PermissionName.StudentExperience)}\n log={props.log}\n />\n \n <div className='py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n {showExpandableDescription && (\n <ChannelDashboardDescription partnerProfile={props.partnerProfile} />\n )}\n </div>\n\n <div className='mt-3'>\n {!emptyState && widgets.map((widget, idx) => (\n <InfiniteWidgetContainerView<CuratedWidget, CuratedWidget, AllPartnerProfileWidgetTemplates>\n dashboardTarget={DashboardTargetType.PartnerProfile}\n key={widget.id}\n index={idx}\n item={widget}\n infiniteFetch={shouldInfiniteFetch(widgets, idx)}\n getName={widget => widget.name}\n getWidgetMetadata={w => w.metadata}\n appLinks={props.widgetAppLinks}\n hasPermissions={props.hasPermissions}\n commonVideoProps={props.commonVideoProps}\n audiences={props.audiences}\n setIsEmpty={isEmpty => setEmptyWidget(widget.id, isEmpty)}\n getCursor={w => w.cursor}\n getRequest={cursor => getWidgetContentRequest(widget.id, widget.widgetId, widget.templateId, cursor)}\n hasLocalPermissions={props.hasLocalPermissions}\n settingsHash={props.settings}\n getContent={w => w.content}\n resultsTransformers={WidgetHelper.getWidgetResultsTransformers()}\n onClickSearchAllVideos={props.onClickSearchAllVideos}\n getSeeMoreAppLink={props.getSeeMoreAppLink}\n isEmptyPredicate={items => (\n Array.isArray(items) && Array.isArray(items[0]?.content) && !items[0]?.content?.length\n )}\n\n getSelectedItems={null}\n appLinkOptions={null}\n />\n ))}\n </div>\n </>\n }\n\n {emptyState && <ContentPartnerEmptyState\n type={emptyState}\n // Coming soon empty state props\n partnerName={props.partnerProfile.name}\n comingSoonImageUrl={props.emptyImageUrl}\n // Content region empty state props\n contentRegionImageUrl={props.emptyImageUrl}\n contentRegionButtonLink={props.widgetAppLinks?.partnerHome?.()}\n // No content empty state props\n noContentImageUrl={props.emptyImageUrl}\n />}\n </>\n );\n}\n","import { AnalyticsOptions, ContentPartnerDescriptors, EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EventLogConfig, getEventLogger } from 'libs/shared/utils/get-event-logger/getEventLogger';\n\nimport { BaseContentPartnerData, ContentPartnerData } from './interfaces/GetContentPartnerEventLogger';\n\ninterface ContentPartnerEventLoggerOptions {\n data: BaseContentPartnerData;\n analyticsOptions: AnalyticsOptions;\n shouldLog?: boolean;\n}\n\nexport type ContentPartnerEventLoggerFn = ReturnType<typeof getContentPartnerEventLogger>['log'];\n\nfunction getLogDataConfig(): EventLogConfig<ContentPartnerData> {\n return {\n 'click-video-banner-controls': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.PartnerProfile,\n descriptor: ContentPartnerDescriptors.VideoBannerControls,\n location: LocationContext.ContentPartnerDashboardVideoBanner\n }\n },\n 'click-video-banner-sign-up': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.PartnerProfile,\n workflowPhase: WorkflowPhase.Start,\n descriptor: ContentPartnerDescriptors.VideoBannerSignUp,\n location: LocationContext.ContentPartnerDashboardVideoBanner\n }\n }\n };\n}\n\nexport function getContentPartnerEventLogger(options: ContentPartnerEventLoggerOptions) {\n const { getData, log } = getEventLogger({\n analyticsOptions: options.analyticsOptions,\n baseData: options.data,\n config: getLogDataConfig(),\n shouldLog: options.shouldLog ?? true\n });\n\n return {\n log,\n getData\n };\n}\n","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/react/index';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { ContentPartnerDashboard } from 'libs/shared/apps/content-partners/components/content-partner-dashboard/ContentPartnerDashboard';\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { getContentPartnerEventLogger } from 'libs/shared/apps/content-partners/utils/get-content-partner-event-logger/getContentPartnerEventLogger';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { WidgetTypeIdConfig } from 'libs/shared/constants/WidgetTypeIdConfig';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\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 { CuratedWidget, CuratedWidgetQueryParams, CurrentUser, DashboardTargetType, Presentation } 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 { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePartnerProfile } from 'shared/hooks/usePartnerProfile';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { getContentPartnerWidgetAppLinks } from 'apps/content-partners/utils/getContentPartnerWidgetAppLinks';\nimport { useSignUpEntry } from 'apps/sign-up/hooks/useSignUpEntry';\nimport { SignUpHelper } from 'apps/sign-up/utils/SignUpHelper';\n\nconst namespace = 'contentPartners.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ContentPartnersDashboardViewProps {\n slug: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function ContentPartnersDashboardView(props: ContentPartnersDashboardViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const partnerProfile = usePartnerProfile(props.slug);\n const videoActions = useVideoActions({\n location: VideoActionsLocation.VideoItem,\n presentationSlug: null\n });\n\n const { log } = getContentPartnerEventLogger({\n data: {\n entity: {\n id: partnerProfile.data?.id,\n name: partnerProfile.data?.name,\n contentRegion: currentUser.data?.contentRegion\n }\n },\n analyticsOptions: {\n entity: EntityType.PartnerProfile,\n location: LocationContext.ContentPartnerDashboard\n }\n });\n\n useSignUpEntry({\n app: 'channels',\n id: partnerProfile.data?.id,\n metadata: { conversionSuffix: partnerProfile.data?.name }\n });\n\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n\n const { commonVideoProps } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail\n });\n\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n\n const settings = useSettings(null);\n\n const { dashboard, isPreviewing } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.PartnerProfile,\n partnerProfileSlug: props.slug,\n queryParams: props.queryParams\n });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: partnerProfile.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n allowIndexing: true\n }));\n\n const breadcrumbs = useBreadcrumbs({ name: partnerProfile.data?.name });\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n const widgetAppLinks = getContentPartnerWidgetAppLinks(\n currentUser.data,\n { channelId: partnerProfile.data?.id, presentationSlug: null }\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 getWidgetContentRequest(\n id: string,\n params: CuratedWidgetQueryParams,\n template: WidgetTemplate,\n presentation?: Presentation,\n cursor?: string\n ): Flight.Request {\n return DashboardRequests.dashboardWidgetContent(\n id,\n params,\n template,\n presentation,\n { cursor }\n );\n }\n\n function getSeeMoreAppLink(widget: CuratedWidget): Core.AppLink {\n return WidgetTypeIdConfig[widget.widgetId]\n ?.getCollectionAppLink?.(widgetAppLinks, widget.content) ?? null;\n }\n\n function onClickSignUp(email: string): void {\n log?.({\n type: 'click-video-banner-sign-up',\n email: email\n });\n Core.AppLinkHelper.trigger(\n SignUpHelper.getSignUpAppLink({\n email\n })\n );\n }\n\n const loaded = partnerProfile.hasCompleted && dashboard.hasCompleted;\n const isBot = SeoHelper.isBot();\n\n const isInContentRegion = isPreviewing ?\n true : // skip content region check if previewing\n ContentPartnersHelper.isInContentRegion(\n partnerProfile.data,\n currentUser.data?.contentRegion,\n currentUser.data?.isAuthenticated\n );\n\n function onClickSearchAllVideos() {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n scopeId: partnerProfile.data?.id\n }\n });\n }\n\n if (!loaded)\n return <></>;\n \n return (\n <div className='bg-white px-4 position-relative'>\n <VideoActionsContext.Provider value={videoActions}>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='channel' />}\n\n <ContentPartnerDashboard\n dashboard={dashboard.data}\n partnerProfile={partnerProfile.data}\n getWidgetContentRequest={getWidgetContentRequest}\n commonVideoProps={commonVideoProps}\n breadcrumbs={breadcrumbs}\n getBannerActions={getBannerActions}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n settings={settings}\n widgetAppLinks={widgetAppLinks}\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 isInContentRegion={isInContentRegion}\n onClickSignUp={onClickSignUp}\n isPreviewing={isPreviewing}\n onClickSearchAllVideos={onClickSearchAllVideos}\n getSeeMoreAppLink={getSeeMoreAppLink}\n log={log}\n />\n </VideoActionsContext.Provider>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"B338pwKt2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/channel-dashboard-description/ChannelDashboardDescription.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-dashboard-coming-soon/ContentPartnerDashboardComingSoon.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-dashboard-content-region/ContentPartnerDashboardContentRegion.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-dashboard-no-content/ContentPartnerDashboardNoContent.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/empty-state/content-partner-empty-state/ContentPartnerEmptyState.tsx","../../../../libs/shared/src/apps/content-partners/components/content-partner-dashboard/ContentPartnerDashboard.tsx","../../../../libs/shared/src/apps/content-partners/utils/get-content-partner-event-logger/getContentPartnerEventLogger.ts","../../src/apps/content-partners/views/content-partners-dashboard/ContentPartnersDashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { ExpandableTextInline } from 'libs/shared/components/expandable-text-inline/ExpandableTextInline';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { LinkSvg } from 'libs/shared/images/svg/objects/LinkSvg';\nimport { PartnerProfile } from 'libs/shared/interfaces';\n\ninterface ChannelDashboardDescriptionProps {\n partnerProfile: PartnerProfile;\n}\n\nexport function ChannelDashboardDescription(props: ChannelDashboardDescriptionProps): JSX.Element {\n const websiteLink = ContentPartnersHelper.getPartnerLinkByType(\n props.partnerProfile?.links,\n 'website',\n ContentPartnersHelper.makeUTMs({ slug: props.partnerProfile._slug.value })\n );\n\n const displayWebsiteLink = UrlHelper.getHostname(websiteLink) ?? websiteLink;\n\n return (\n <div className='mt-3'>\n <ExpandableTextInline>\n {() => (\n <p className='mb-0'>\n {websiteLink && (\n <>\n <a\n href={websiteLink}\n target='_blank'\n rel='noopener noreferrer'\n className='position-relative d-inline-block ps-4 mb-2 me-2'\n >\n <SvgContainer svg={LinkSvg} className='svg-container position-absolute top-50 start-0 translate-middle-y' />\n <span className='ps-1'>{displayWebsiteLink}</span>\n </a>\n <span className='mb-2 me-2'>&bull;</span>\n </>\n )}\n {props.partnerProfile.description}\n </p>\n )}\n </ExpandableTextInline>\n </div>\n );\n}\n","import React from 'react';\n\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';\n\nconst namespace = 'contentPartners.contentPartnerDashboardComingSoon';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ContentPartnerDashboardComingSoonProps {\n partnerName: string;\n comingSoonImageUrl: string;\n}\n\nexport function ContentPartnerDashboardComingSoon(props: ContentPartnerDashboardComingSoonProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image\n src={props.comingSoonImageUrl}\n altText={getPhrase('description', { partnerName: props.partnerName })}\n />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='description' options={{ partnerName: props.partnerName }} />\n </EmptyState.Info>\n </EmptyState>\n );\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';\n\nconst namespace = 'contentPartners.contentPartnerDashboardContentRegion';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ContentPartnerDashboardContentRegionProps {\n contentRegionImageUrl: string;\n contentRegionButtonLink: Core.AppLink;\n}\n\nexport function ContentPartnerDashboardContentRegion(props: ContentPartnerDashboardContentRegionProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={props.contentRegionImageUrl} altText={getPhrase('imageAlt')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Cta text={getPhrase('cta')} appLink={props.contentRegionButtonLink} className='btn btn-dark' />\n </EmptyState>\n );\n}\n","import React from 'react';\n\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';\n\nconst namespace = 'contentPartners.contentPartnerDashboardNoContent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ContentPartnerDashboardNoContentProps {\n noContentImageUrl: string;\n}\n\nexport function ContentPartnerDashboardNoContent(props: ContentPartnerDashboardNoContentProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image\n src={props.noContentImageUrl}\n altText={getPhrase('description')}\n />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='description' />\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport {\n ContentPartnerDashboardComingSoon,\n ContentPartnerDashboardComingSoonProps\n} from '../content-partner-dashboard-coming-soon/ContentPartnerDashboardComingSoon';\nimport {\n ContentPartnerDashboardContentRegion,\n ContentPartnerDashboardContentRegionProps\n} from '../content-partner-dashboard-content-region/ContentPartnerDashboardContentRegion';\nimport {\n ContentPartnerDashboardNoContent,\n ContentPartnerDashboardNoContentProps\n} from '../content-partner-dashboard-no-content/ContentPartnerDashboardNoContent';\n\nexport type ContentPartnerEmptyStateType = 'coming-soon' | 'content-region' | 'no-content';\n\nconst ContentParterEmptyStateTypes: Record<ContentPartnerEmptyStateType, React.ComponentType<any>> = {\n 'coming-soon': ContentPartnerDashboardComingSoon,\n 'content-region': ContentPartnerDashboardContentRegion,\n 'no-content': ContentPartnerDashboardNoContent\n};\n\ntype EmptyStateType<TType extends ContentPartnerEmptyStateType, TProps> = TProps & {\n type: TType\n};\n\ntype ContentPartnerEmptyStateProps =\n EmptyStateType<'coming-soon', ContentPartnerDashboardComingSoonProps> |\n EmptyStateType<'content-region', ContentPartnerDashboardContentRegionProps> |\n EmptyStateType<'no-content', ContentPartnerDashboardNoContentProps>;\n\nexport function ContentPartnerEmptyState(props: ContentPartnerEmptyStateProps): JSX.Element {\n const Component = ContentParterEmptyStateTypes[props.type];\n\n return <Component {...props} />;\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\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 { InfiniteWidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/InfiniteWidgetContainerView';\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 { CuratedDashboard, CuratedWidget, CuratedWidgetQueryParams, CurrentUser, DashboardStatus, DashboardTargetType, PartnerProfile, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport { ContentPartnerEventLoggerFn } from '../../utils/get-content-partner-event-logger/getContentPartnerEventLogger';\n\nimport { ChannelDashboardDescription } from './channel-dashboard-description/ChannelDashboardDescription';\nimport { ContentPartnerEmptyState, ContentPartnerEmptyStateType } from './empty-state/content-partner-empty-state/ContentPartnerEmptyState';\n\nconst InfiniteFetchWidgetIds: WidgetTypeId[] = [WidgetTypeId.ContentPartnerVideos];\n\nfunction shouldInfiniteFetch(widgets: CuratedWidget[], index: number): boolean {\n const currentWidget = widgets[index];\n\n if (!currentWidget) return false;\n \n return InfiniteFetchWidgetIds.includes(currentWidget.widgetId) && index === widgets.length - 1;\n}\n\nexport interface ContentPartnerDashboardProps {\n dashboard: CuratedDashboard;\n partnerProfile: PartnerProfile;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate,\n presentation?: Presentation,\n cursor?: string\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 currentUser?: CurrentUser;\n emptyImageUrl?: string;\n lazyLoad?: boolean;\n isBot?: boolean;\n isComingSoon?: boolean;\n isPreviewing?: boolean;\n isAuthenticated?: boolean;\n isInContentRegion: boolean;\n onClickSignUp: (email: string) => void;\n onClickSearchAllVideos?: () => void;\n getSeeMoreAppLink?: (widget: CuratedWidget) => Core.AppLink;\n log?: ContentPartnerEventLoggerFn;\n}\n\nexport function ContentPartnerDashboard(props: ContentPartnerDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n const { emptyWidgets, setEmptyWidget } = useEmptyWidgets(widgets);\n\n function getWidgetContentRequest(\n id: string,\n widgetTypeId: WidgetTypeId,\n template: WidgetTemplate,\n cursor?: string\n ): 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, undefined, cursor);\n }\n\n function getEmptyStateType(): ContentPartnerEmptyStateType | false {\n if (!props.isInContentRegion)\n return 'content-region';\n \n if (props.isComingSoon)\n return 'coming-soon';\n \n if (props.dashboard.status === DashboardStatus.Archived && !props.isReadonly)\n return 'coming-soon';\n \n if (props.dashboard.status === DashboardStatus.Draft && !props.isPreviewing)\n return false;\n\n if (!widgets?.length)\n return 'no-content';\n \n const emptyValues = Object.values(emptyWidgets);\n \n if (emptyValues.length > 0 && emptyValues.every(state => !!state))\n return 'no-content';\n\n return false;\n }\n\n const bannerInfo = ContentPartnersHelper.getPartnerBannerInfo(props.partnerProfile);\n\n const emptyState = getEmptyStateType();\n const showExpandableDescription = (!emptyState || emptyState === 'content-region') && props.partnerProfile.description;\n\n return (\n <>\n {!!widgets.length &&\n <>\n <BannerHeader\n type='partner-profile'\n partnerBannerType={ContentPartnersHelper.getPartnerBannerType(props.partnerProfile)}\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 videoUrl={props.partnerProfile._videobanner?.value?.url}\n websiteUrl={ContentPartnersHelper.getPartnerLinkByType(\n props.partnerProfile?.links,\n 'website',\n ContentPartnersHelper.makeUTMs({ slug: props.partnerProfile._slug.value })\n )}\n isStudent={props.hasPermissions(PermissionName.StudentExperience)}\n log={props.log}\n />\n \n <div className='py-3 mb-3 border-bottom'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n {showExpandableDescription && (\n <ChannelDashboardDescription partnerProfile={props.partnerProfile} />\n )}\n </div>\n\n <div className='mt-3'>\n {!emptyState && widgets.map((widget, idx) => (\n <InfiniteWidgetContainerView<CuratedWidget, CuratedWidget, AllPartnerProfileWidgetTemplates>\n dashboardTarget={DashboardTargetType.PartnerProfile}\n key={widget.id}\n index={idx}\n item={widget}\n infiniteFetch={shouldInfiniteFetch(widgets, idx)}\n getName={widget => widget.name}\n getWidgetMetadata={w => w.metadata}\n appLinks={props.widgetAppLinks}\n hasPermissions={props.hasPermissions}\n commonVideoProps={props.commonVideoProps}\n audiences={props.audiences}\n setIsEmpty={isEmpty => setEmptyWidget(widget.id, isEmpty)}\n getCursor={w => w.cursor}\n getRequest={cursor => getWidgetContentRequest(widget.id, widget.widgetId, widget.templateId, cursor)}\n hasLocalPermissions={props.hasLocalPermissions}\n settingsHash={props.settings}\n getContent={w => w.content}\n resultsTransformers={WidgetHelper.getWidgetResultsTransformers()}\n onClickSearchAllVideos={props.onClickSearchAllVideos}\n getSeeMoreAppLink={props.getSeeMoreAppLink}\n isEmptyPredicate={items => (\n Array.isArray(items) && Array.isArray(items[0]?.content) && !items[0]?.content?.length\n )}\n\n getSelectedItems={null}\n appLinkOptions={null}\n />\n ))}\n </div>\n </>\n }\n\n {emptyState && <ContentPartnerEmptyState\n type={emptyState}\n // Coming soon empty state props\n partnerName={props.partnerProfile.name}\n comingSoonImageUrl={props.emptyImageUrl}\n // Content region empty state props\n contentRegionImageUrl={props.emptyImageUrl}\n contentRegionButtonLink={props.widgetAppLinks?.partnerHome?.()}\n // No content empty state props\n noContentImageUrl={props.emptyImageUrl}\n />}\n </>\n );\n}\n","import { AnalyticsOptions, ContentPartnerDescriptors, EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EventLogConfig, getEventLogger } from 'libs/shared/utils/get-event-logger/getEventLogger';\n\nimport { BaseContentPartnerData, ContentPartnerData } from './interfaces/GetContentPartnerEventLogger';\n\ninterface ContentPartnerEventLoggerOptions {\n data: BaseContentPartnerData;\n analyticsOptions: AnalyticsOptions;\n shouldLog?: boolean;\n}\n\nexport type ContentPartnerEventLoggerFn = ReturnType<typeof getContentPartnerEventLogger>['log'];\n\nfunction getLogDataConfig(): EventLogConfig<ContentPartnerData> {\n return {\n 'click-video-banner-controls': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.PartnerProfile,\n descriptor: ContentPartnerDescriptors.VideoBannerControls,\n location: LocationContext.ContentPartnerDashboardVideoBanner\n }\n },\n 'click-video-banner-sign-up': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.PartnerProfile,\n workflowPhase: WorkflowPhase.Start,\n descriptor: ContentPartnerDescriptors.VideoBannerSignUp,\n location: LocationContext.ContentPartnerDashboardVideoBanner\n }\n }\n };\n}\n\nexport function getContentPartnerEventLogger(options: ContentPartnerEventLoggerOptions) {\n const { getData, log } = getEventLogger({\n analyticsOptions: options.analyticsOptions,\n baseData: options.data,\n config: getLogDataConfig(),\n shouldLog: options.shouldLog ?? true\n });\n\n return {\n log,\n getData\n };\n}\n","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/react/index';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { ContentPartnerDashboard } from 'libs/shared/apps/content-partners/components/content-partner-dashboard/ContentPartnerDashboard';\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { getContentPartnerEventLogger } from 'libs/shared/apps/content-partners/utils/get-content-partner-event-logger/getContentPartnerEventLogger';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { WidgetTypeIdConfig } from 'libs/shared/constants/WidgetTypeIdConfig';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\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 { CuratedWidget, CuratedWidgetQueryParams, CurrentUser, DashboardTargetType, Presentation } 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 { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePartnerProfile } from 'shared/hooks/usePartnerProfile';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { getContentPartnerWidgetAppLinks } from 'apps/content-partners/utils/getContentPartnerWidgetAppLinks';\nimport { useSignUpEntry } from 'apps/sign-up/hooks/useSignUpEntry';\nimport { SignUpHelper } from 'apps/sign-up/utils/SignUpHelper';\n\nconst namespace = 'contentPartners.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ContentPartnersDashboardViewProps {\n slug: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function ContentPartnersDashboardView(props: ContentPartnersDashboardViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const partnerProfile = usePartnerProfile(props.slug);\n const videoActions = useVideoActions({\n location: VideoActionsLocation.VideoItem,\n presentationSlug: null\n });\n\n const { log } = getContentPartnerEventLogger({\n data: {\n entity: {\n id: partnerProfile.data?.id,\n name: partnerProfile.data?.name,\n contentRegion: currentUser.data?.contentRegion\n }\n },\n analyticsOptions: {\n entity: EntityType.PartnerProfile,\n location: LocationContext.ContentPartnerDashboard\n }\n });\n\n useSignUpEntry({\n app: 'channels',\n id: partnerProfile.data?.id,\n metadata: { conversionSuffix: partnerProfile.data?.name }\n });\n\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n\n const { commonVideoProps } = useCommonVideoProps({\n locationContext: LocationContext.VideoThumbnail\n });\n\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n\n const settings = useSettings(null);\n\n const { dashboard, isPreviewing } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.PartnerProfile,\n partnerProfileSlug: props.slug,\n queryParams: props.queryParams\n });\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: partnerProfile.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n allowIndexing: true\n }));\n\n const breadcrumbs = useBreadcrumbs({ name: partnerProfile.data?.name });\n\n React.useEffect(() => {\n if (!dashboard.hasCompleted || dashboard.data)\n return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ dashboard.data, dashboard.hasCompleted ]);\n\n const widgetAppLinks = getContentPartnerWidgetAppLinks(\n currentUser.data,\n { channelId: partnerProfile.data?.id, presentationSlug: null }\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 getWidgetContentRequest(\n id: string,\n params: CuratedWidgetQueryParams,\n template: WidgetTemplate,\n presentation?: Presentation,\n cursor?: string\n ): Flight.Request {\n return DashboardRequests.dashboardWidgetContent(\n id,\n params,\n template,\n presentation,\n { cursor }\n );\n }\n\n function getSeeMoreAppLink(widget: CuratedWidget): Core.AppLink {\n return WidgetTypeIdConfig[widget.widgetId]\n ?.getCollectionAppLink?.(widgetAppLinks, widget.content) ?? null;\n }\n\n function onClickSignUp(email: string): void {\n log?.({\n type: 'click-video-banner-sign-up',\n email: email\n });\n Core.AppLinkHelper.trigger(\n SignUpHelper.getSignUpAppLink({\n email\n })\n );\n }\n\n const loaded = partnerProfile.hasCompleted && dashboard.hasCompleted;\n const isBot = SeoHelper.isBot();\n\n const isInContentRegion = isPreviewing ?\n true : // skip content region check if previewing\n ContentPartnersHelper.isInContentRegion(\n partnerProfile.data,\n currentUser.data?.contentRegion,\n currentUser.data?.isAuthenticated\n );\n\n function onClickSearchAllVideos() {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n scopeId: partnerProfile.data?.id\n }\n });\n }\n\n if (!loaded)\n return <></>;\n \n return (\n <div className='bg-white px-4 position-relative'>\n <VideoActionsContext.Provider value={videoActions}>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='channel' />}\n\n <ContentPartnerDashboard\n dashboard={dashboard.data}\n partnerProfile={partnerProfile.data}\n getWidgetContentRequest={getWidgetContentRequest}\n commonVideoProps={commonVideoProps}\n breadcrumbs={breadcrumbs}\n getBannerActions={getBannerActions}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n settings={settings}\n widgetAppLinks={widgetAppLinks}\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 isInContentRegion={isInContentRegion}\n onClickSignUp={onClickSignUp}\n isPreviewing={isPreviewing}\n onClickSearchAllVideos={onClickSearchAllVideos}\n getSeeMoreAppLink={getSeeMoreAppLink}\n log={log}\n />\n </VideoActionsContext.Provider>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import"./DAXXjFlN.chunk.js";import{t as e}from"./snXCXfT6.chunk.js";import{t}from"./CQyJ7YGa.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{t as i}from"./CmcCVXi32.chunk.js";import{n as a}from"./C0exjRXJ.chunk.js";import{t as o}from"./CSl1Z1eB.chunk.js";import{t as s}from"./CHL4nrKG.chunk.js";import{s as c}from"./DCT6XY8t.chunk.js";import{t as l}from"./pP_cpHCu2.chunk.js";n();var u={[i.Archived]:{svg:l,svgColorClassName:`text-secondary`,actionName:`Archive`,statusName:`Archived`},[i.Draft]:{svg:s,svgColorClassName:``,actionName:`Draft`,statusName:`Draft`},[i.Published]:{svg:o,svgColorClassName:`text-success`,actionName:`Publish`,statusName:`Published`}},d={badge:`_badge_1fgi1_1`,draftLight:`_draftLight_1fgi1_5`,draftDark:`_draftDark_1fgi1_10`,published:`_published_1fgi1_15`,archived:`_archived_1fgi1_20`},f=r();function p(e){let t=`rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${d.badge}`;switch(e.status){case i.Published:t+=` ${d.published}`;break;case i.Archived:t+=` ${d.archived}`;break;case i.Draft:t+=` ${e.darkMode?d.draftDark:d.draftLight}`;break}return e.wrapperClassName&&(t+=` ${e.wrapperClassName}`),t}function m(t){let{statusName:n,svg:r}=u[t.status];return(0,f.jsxs)(`div`,{className:p(t),children:[(0,f.jsx)(e,{svg:r}),(0,f.jsx)(`div`,{children:n})]})}var h={stickyWrapper:`_stickyWrapper_190fb_1`,channelBanner:`_channelBanner_190fb_8`,badgeWrapper:`_badgeWrapper_190fb_14`,badge:`_badge_190fb_14`},g=t.encloseNamespace(`shared.classificationPreviewBanner`),_={company:g(`companyTitle`),topic:g(`topicTitle`),channel:g(`channelTitle`)},v={company:h.stickyWrapper,topic:h.stickyWrapper,channel:h.channelBanner};function y(e){return(0,f.jsxs)(`div`,{className:a(`py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded`,v[e.type]),children:[(0,f.jsx)(`div`,{className:a(`position-absolute d-flex`,h.badgeWrapper),children:(0,f.jsx)(m,{status:e.status,wrapperClassName:h.badge,darkMode:!0})}),(0,f.jsx)(`div`,{className:`flex-grow-1`,children:(0,f.jsxs)(`h1`,{className:`text-center my-3 h5`,children:[(0,f.jsx)(c,{emoji:`👀`}),_[e.type]]})})]})}export{y as t};
2
- //# sourceMappingURL=8JGe5Ug_2.chunk.js.map
1
+ import"./DAXXjFlN.chunk.js";import{t as e}from"./snXCXfT6.chunk.js";import{t}from"./CQyJ7YGa.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{t as i}from"./CmcCVXi32.chunk.js";import{n as a}from"./C0exjRXJ.chunk.js";import{t as o}from"./CSl1Z1eB.chunk.js";import{t as s}from"./CHL4nrKG.chunk.js";import{s as c}from"./BTWmC6pW.chunk.js";import{t as l}from"./pP_cpHCu2.chunk.js";n();var u={[i.Archived]:{svg:l,svgColorClassName:`text-secondary`,actionName:`Archive`,statusName:`Archived`},[i.Draft]:{svg:s,svgColorClassName:``,actionName:`Draft`,statusName:`Draft`},[i.Published]:{svg:o,svgColorClassName:`text-success`,actionName:`Publish`,statusName:`Published`}},d={badge:`_badge_1fgi1_1`,draftLight:`_draftLight_1fgi1_5`,draftDark:`_draftDark_1fgi1_10`,published:`_published_1fgi1_15`,archived:`_archived_1fgi1_20`},f=r();function p(e){let t=`rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${d.badge}`;switch(e.status){case i.Published:t+=` ${d.published}`;break;case i.Archived:t+=` ${d.archived}`;break;case i.Draft:t+=` ${e.darkMode?d.draftDark:d.draftLight}`;break}return e.wrapperClassName&&(t+=` ${e.wrapperClassName}`),t}function m(t){let{statusName:n,svg:r}=u[t.status];return(0,f.jsxs)(`div`,{className:p(t),children:[(0,f.jsx)(e,{svg:r}),(0,f.jsx)(`div`,{children:n})]})}var h={stickyWrapper:`_stickyWrapper_190fb_1`,channelBanner:`_channelBanner_190fb_8`,badgeWrapper:`_badgeWrapper_190fb_14`,badge:`_badge_190fb_14`},g=t.encloseNamespace(`shared.classificationPreviewBanner`),_={company:g(`companyTitle`),topic:g(`topicTitle`),channel:g(`channelTitle`)},v={company:h.stickyWrapper,topic:h.stickyWrapper,channel:h.channelBanner};function y(e){return(0,f.jsxs)(`div`,{className:a(`py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded`,v[e.type]),children:[(0,f.jsx)(`div`,{className:a(`position-absolute d-flex`,h.badgeWrapper),children:(0,f.jsx)(m,{status:e.status,wrapperClassName:h.badge,darkMode:!0})}),(0,f.jsx)(`div`,{className:`flex-grow-1`,children:(0,f.jsxs)(`h1`,{className:`text-center my-3 h5`,children:[(0,f.jsx)(c,{emoji:`👀`}),_[e.type]]})})]})}export{y as t};
2
+ //# sourceMappingURL=B5GEXNkP2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"8JGe5Ug_2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/subjects/constants/DashboardStatusConfig.ts","../../../../libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/dashboard-status-badge.module.scss","../../../../libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge.tsx","../../../../libs/shared/src/apps/subjects/components/preview-banner/preview-banner.module.scss","../../../../libs/shared/src/apps/subjects/components/preview-banner/PreviewBanner.tsx"],"sourcesContent":["import { EditSvg } from 'libs/shared/images/svg/actions/EditSvg';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\nimport { ArchiveSvg } from 'libs/shared/images/svg/objects/ArchiveSvg';\nimport { DashboardStatus } from 'libs/shared/interfaces/models/Dashboard';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\ninterface DashboardStatusConfigType {\n statusName: string;\n actionName: string;\n svg: SvgIcon;\n svgColorClassName: string;\n}\n\nexport const DashboardStatusConfig: Record<DashboardStatus, DashboardStatusConfigType> = {\n [DashboardStatus.Archived]: {\n svg: ArchiveSvg,\n svgColorClassName: 'text-secondary',\n actionName: 'Archive',\n statusName: 'Archived'\n },\n [DashboardStatus.Draft]: {\n svg: EditSvg,\n svgColorClassName: '',\n actionName: 'Draft',\n statusName: 'Draft'\n },\n [DashboardStatus.Published]: {\n svg: VisibleOnSvg,\n svgColorClassName: 'text-success',\n actionName: 'Publish',\n statusName: 'Published'\n }\n};\n",":local {\n .badge {\n gap: map-get($spacers, 1);\n padding-right: 1rem;\n\n &.draftLight {\n color: $gray-800;\n border: 0.0625rem solid $gray-800;\n background-color: rgba($gray-800, 0.05);\n }\n\n &.draftDark {\n color: $gray-300;\n border: 0.0625rem solid $gray-300;\n background-color: rgba($gray-300, 0.05);\n }\n\n &.published {\n color: $success;\n border: 0.0625rem solid $success;\n background-color: rgba($success, 0.05);\n }\n\n &.archived {\n color: $danger;\n border: 0.0625rem solid $danger;\n background-color: rgba($danger, 0.05);\n }\n }\n}","import React from 'react';\n\nimport { DashboardStatusConfig } from 'libs/shared/apps/subjects/constants/DashboardStatusConfig';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './dashboard-status-badge.module.scss';\n\nfunction getClassName(props: DashboardStatusBadgeProps): string {\n let className = `rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${styles.badge}`;\n\n switch (props.status) {\n case DashboardStatus.Published:\n className += ` ${styles.published}`;\n break;\n case DashboardStatus.Archived:\n className += ` ${styles.archived}`;\n break;\n case DashboardStatus.Draft:\n className += ` ${props.darkMode ? styles.draftDark : styles.draftLight}`;\n break;\n }\n\n if (props.wrapperClassName)\n className += ` ${props.wrapperClassName}`;\n\n return className;\n}\n\ninterface DashboardStatusBadgeProps {\n status: DashboardStatus;\n darkMode?: boolean;\n wrapperClassName?: string;\n}\n\nexport function DashboardStatusBadge(props: DashboardStatusBadgeProps): JSX.Element {\n const { statusName, svg } = DashboardStatusConfig[props.status];\n\n return (\n <div className={getClassName(props)}>\n <SvgContainer svg={svg} />\n <div>{statusName}</div>\n </div>\n );\n}\n",":local {\n .stickyWrapper {\n position: absolute;\n top: -10rem;\n z-index: 3;\n width: calc(100% - 1rem);\n height: 5rem;\n }\n\n .channelBanner {\n position: absolute;\n z-index: 3;\n top: -15rem;\n width: calc(100% - 4.5rem);\n }\n\n .badgeWrapper {\n height: 100%;\n top: 0;\n left: 1.5rem;\n flex-direction: column;\n justify-content: center;\n }\n\n .badge {\n height: 60%;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { DashboardStatusBadge } from 'libs/shared/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge';\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './preview-banner.module.scss';\n\nconst namespace = 'shared.classificationPreviewBanner';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype PreviewBannerType = 'company' | 'topic' | 'channel';\n\ninterface PreviewBannerProps {\n status: DashboardStatus;\n type: PreviewBannerType;\n}\n\nconst typeToTitle: {[key in PreviewBannerType]: string } = {\n company: getPhrase('companyTitle'),\n topic: getPhrase('topicTitle'),\n channel: getPhrase('channelTitle')\n};\n\nconst typeToClassName: {[key in PreviewBannerType]: string } = {\n company: styles.stickyWrapper,\n topic: styles.stickyWrapper,\n channel: styles.channelBanner\n};\n\nexport function PreviewBanner(props: PreviewBannerProps): JSX.Element {\n return (\n <div className={\n classNames('py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded', typeToClassName[props.type])\n }>\n <div className={classNames('position-absolute d-flex', styles.badgeWrapper)}>\n <DashboardStatusBadge status={props.status} wrapperClassName={styles.badge} darkMode />\n </div>\n <div className='flex-grow-1'>\n <h1 className='text-center my-3 h5'>\n <EmojiText emoji='👀' />\n {typeToTitle[props.type]}\n </h1>\n </div>\n </div>\n );\n}\n"],"mappings":"6aAaA,IAAa,EAA4E,EACtF,EAAgB,UAAW,CAC1B,IAAK,EACL,kBAAmB,iBACnB,WAAY,UACZ,WAAY,UACd,GACC,EAAgB,OAAQ,CACvB,IAAK,EACL,kBAAmB,GACnB,WAAY,QACZ,WAAY,OACd,GACC,EAAgB,WAAY,CAC3B,IAAK,EACL,kBAAmB,eACnB,WAAY,UACZ,WAAY,WACd,CACF,kKExBA,SAAS,EAAa,EAA0C,CAC9D,IAAI,EAAY,qEAAqE,EAAO,QAE5F,OAAQ,EAAM,OAAd,CACE,KAAK,EAAgB,UACnB,GAAa,IAAI,EAAO,YACxB,MACF,KAAK,EAAgB,SACnB,GAAa,IAAI,EAAO,WACxB,MACF,KAAK,EAAgB,MACnB,GAAa,IAAI,EAAM,SAAW,EAAO,UAAY,EAAO,aAC5D,KACJ,CAKA,OAHI,EAAM,mBACR,GAAa,IAAI,EAAM,oBAElB,CACT,CAQA,SAAgB,EAAqB,EAA+C,CAClF,GAAM,CAAE,aAAY,OAAQ,EAAsB,EAAM,QAExD,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAa,CAAK,WAAlC,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAmB,KAAM,CAAA,GACzB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAA,SAAM,CAAgB,CAAA,CACnB,GAET,qJEhCM,EAAY,EAAgB,iBAAiB,oCAAS,EAStD,EAAqD,CACzD,QAAS,EAAU,cAAc,EACjC,MAAO,EAAU,YAAY,EAC7B,QAAS,EAAU,cAAc,CACnC,EAEM,EAAyD,CAC7D,QAAS,EAAO,cAChB,MAAO,EAAO,cACd,QAAS,EAAO,aAClB,EAEA,SAAgB,EAAc,EAAwC,CACpE,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UACH,EAAW,4EAA6E,EAAgB,EAAM,KAAK,WADrH,EAGE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAW,2BAA4B,EAAO,YAAY,YACxE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAsB,OAAQ,EAAM,OAAQ,iBAAkB,EAAO,MAAO,SAAA,EAAU,CAAA,CACnF,CAAA,GACL,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,wBACb,EAAA,EAAA,KAAA,CAAC,KAAD,CAAI,UAAU,+BAAd,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAW,MAAM,IAAM,CAAA,EACtB,EAAY,EAAM,KACjB,GACD,CAAA,CACF,GAET"}
1
+ {"version":3,"file":"B5GEXNkP2.chunk.js","names":[],"sources":["../../../../libs/shared/src/apps/subjects/constants/DashboardStatusConfig.ts","../../../../libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/dashboard-status-badge.module.scss","../../../../libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge.tsx","../../../../libs/shared/src/apps/subjects/components/preview-banner/preview-banner.module.scss","../../../../libs/shared/src/apps/subjects/components/preview-banner/PreviewBanner.tsx"],"sourcesContent":["import { EditSvg } from 'libs/shared/images/svg/actions/EditSvg';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\nimport { ArchiveSvg } from 'libs/shared/images/svg/objects/ArchiveSvg';\nimport { DashboardStatus } from 'libs/shared/interfaces/models/Dashboard';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\ninterface DashboardStatusConfigType {\n statusName: string;\n actionName: string;\n svg: SvgIcon;\n svgColorClassName: string;\n}\n\nexport const DashboardStatusConfig: Record<DashboardStatus, DashboardStatusConfigType> = {\n [DashboardStatus.Archived]: {\n svg: ArchiveSvg,\n svgColorClassName: 'text-secondary',\n actionName: 'Archive',\n statusName: 'Archived'\n },\n [DashboardStatus.Draft]: {\n svg: EditSvg,\n svgColorClassName: '',\n actionName: 'Draft',\n statusName: 'Draft'\n },\n [DashboardStatus.Published]: {\n svg: VisibleOnSvg,\n svgColorClassName: 'text-success',\n actionName: 'Publish',\n statusName: 'Published'\n }\n};\n",":local {\n .badge {\n gap: map-get($spacers, 1);\n padding-right: 1rem;\n\n &.draftLight {\n color: $gray-800;\n border: 0.0625rem solid $gray-800;\n background-color: rgba($gray-800, 0.05);\n }\n\n &.draftDark {\n color: $gray-300;\n border: 0.0625rem solid $gray-300;\n background-color: rgba($gray-300, 0.05);\n }\n\n &.published {\n color: $success;\n border: 0.0625rem solid $success;\n background-color: rgba($success, 0.05);\n }\n\n &.archived {\n color: $danger;\n border: 0.0625rem solid $danger;\n background-color: rgba($danger, 0.05);\n }\n }\n}","import React from 'react';\n\nimport { DashboardStatusConfig } from 'libs/shared/apps/subjects/constants/DashboardStatusConfig';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './dashboard-status-badge.module.scss';\n\nfunction getClassName(props: DashboardStatusBadgeProps): string {\n let className = `rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${styles.badge}`;\n\n switch (props.status) {\n case DashboardStatus.Published:\n className += ` ${styles.published}`;\n break;\n case DashboardStatus.Archived:\n className += ` ${styles.archived}`;\n break;\n case DashboardStatus.Draft:\n className += ` ${props.darkMode ? styles.draftDark : styles.draftLight}`;\n break;\n }\n\n if (props.wrapperClassName)\n className += ` ${props.wrapperClassName}`;\n\n return className;\n}\n\ninterface DashboardStatusBadgeProps {\n status: DashboardStatus;\n darkMode?: boolean;\n wrapperClassName?: string;\n}\n\nexport function DashboardStatusBadge(props: DashboardStatusBadgeProps): JSX.Element {\n const { statusName, svg } = DashboardStatusConfig[props.status];\n\n return (\n <div className={getClassName(props)}>\n <SvgContainer svg={svg} />\n <div>{statusName}</div>\n </div>\n );\n}\n",":local {\n .stickyWrapper {\n position: absolute;\n top: -10rem;\n z-index: 3;\n width: calc(100% - 1rem);\n height: 5rem;\n }\n\n .channelBanner {\n position: absolute;\n z-index: 3;\n top: -15rem;\n width: calc(100% - 4.5rem);\n }\n\n .badgeWrapper {\n height: 100%;\n top: 0;\n left: 1.5rem;\n flex-direction: column;\n justify-content: center;\n }\n\n .badge {\n height: 60%;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { DashboardStatusBadge } from 'libs/shared/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge';\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './preview-banner.module.scss';\n\nconst namespace = 'shared.classificationPreviewBanner';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype PreviewBannerType = 'company' | 'topic' | 'channel';\n\ninterface PreviewBannerProps {\n status: DashboardStatus;\n type: PreviewBannerType;\n}\n\nconst typeToTitle: {[key in PreviewBannerType]: string } = {\n company: getPhrase('companyTitle'),\n topic: getPhrase('topicTitle'),\n channel: getPhrase('channelTitle')\n};\n\nconst typeToClassName: {[key in PreviewBannerType]: string } = {\n company: styles.stickyWrapper,\n topic: styles.stickyWrapper,\n channel: styles.channelBanner\n};\n\nexport function PreviewBanner(props: PreviewBannerProps): JSX.Element {\n return (\n <div className={\n classNames('py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded', typeToClassName[props.type])\n }>\n <div className={classNames('position-absolute d-flex', styles.badgeWrapper)}>\n <DashboardStatusBadge status={props.status} wrapperClassName={styles.badge} darkMode />\n </div>\n <div className='flex-grow-1'>\n <h1 className='text-center my-3 h5'>\n <EmojiText emoji='👀' />\n {typeToTitle[props.type]}\n </h1>\n </div>\n </div>\n );\n}\n"],"mappings":"6aAaA,IAAa,EAA4E,EACtF,EAAgB,UAAW,CAC1B,IAAK,EACL,kBAAmB,iBACnB,WAAY,UACZ,WAAY,UACd,GACC,EAAgB,OAAQ,CACvB,IAAK,EACL,kBAAmB,GACnB,WAAY,QACZ,WAAY,OACd,GACC,EAAgB,WAAY,CAC3B,IAAK,EACL,kBAAmB,eACnB,WAAY,UACZ,WAAY,WACd,CACF,kKExBA,SAAS,EAAa,EAA0C,CAC9D,IAAI,EAAY,qEAAqE,EAAO,QAE5F,OAAQ,EAAM,OAAd,CACE,KAAK,EAAgB,UACnB,GAAa,IAAI,EAAO,YACxB,MACF,KAAK,EAAgB,SACnB,GAAa,IAAI,EAAO,WACxB,MACF,KAAK,EAAgB,MACnB,GAAa,IAAI,EAAM,SAAW,EAAO,UAAY,EAAO,aAC5D,KACJ,CAKA,OAHI,EAAM,mBACR,GAAa,IAAI,EAAM,oBAElB,CACT,CAQA,SAAgB,EAAqB,EAA+C,CAClF,GAAM,CAAE,aAAY,OAAQ,EAAsB,EAAM,QAExD,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAa,CAAK,WAAlC,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAmB,KAAM,CAAA,GACzB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAA,SAAM,CAAgB,CAAA,CACnB,GAET,qJEhCM,EAAY,EAAgB,iBAAiB,oCAAS,EAStD,EAAqD,CACzD,QAAS,EAAU,cAAc,EACjC,MAAO,EAAU,YAAY,EAC7B,QAAS,EAAU,cAAc,CACnC,EAEM,EAAyD,CAC7D,QAAS,EAAO,cAChB,MAAO,EAAO,cACd,QAAS,EAAO,aAClB,EAEA,SAAgB,EAAc,EAAwC,CACpE,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UACH,EAAW,4EAA6E,EAAgB,EAAM,KAAK,WADrH,EAGE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAW,2BAA4B,EAAO,YAAY,YACxE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAsB,OAAQ,EAAM,OAAQ,iBAAkB,EAAO,MAAO,SAAA,EAAU,CAAA,CACnF,CAAA,GACL,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,wBACb,EAAA,EAAA,KAAA,CAAC,KAAD,CAAI,UAAU,+BAAd,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAW,MAAM,IAAM,CAAA,EACtB,EAAY,EAAM,KACjB,GACD,CAAA,CACF,GAET"}