@clickview/lite 0.0.20-rc.1 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/scripts/{bundle-df3f2fe30a.min.js → bundle-0a051d30d1.min.js} +1 -1
- package/dist/scripts/bundles.json +1 -1
- package/package.json +1 -1
- package/dist/css/0.chunk.css.map +0 -1
- package/dist/css/1.chunk.css +0 -146
- package/dist/css/1.chunk.css.map +0 -1
- package/dist/css/11.chunk.css.map +0 -1
- package/dist/css/12.chunk.css.map +0 -1
- package/dist/css/13.chunk.css.map +0 -1
- package/dist/css/14.chunk.css.map +0 -1
- package/dist/css/15.chunk.css.map +0 -1
- package/dist/css/16.chunk.css.map +0 -1
- package/dist/css/17.chunk.css.map +0 -1
- package/dist/css/18.chunk.css.map +0 -1
- package/dist/css/19.chunk.css.map +0 -1
- package/dist/css/21.chunk.css.map +0 -1
- package/dist/css/22.chunk.css.map +0 -1
- package/dist/css/23.chunk.css.map +0 -1
- package/dist/css/24.chunk.css.map +0 -1
- package/dist/css/25.chunk.css.map +0 -1
- package/dist/css/26.chunk.css.map +0 -1
- package/dist/css/27.chunk.css.map +0 -1
- package/dist/css/28.chunk.css.map +0 -1
- package/dist/css/29.chunk.css.map +0 -1
- package/dist/css/3.chunk.css.map +0 -1
- package/dist/css/30.chunk.css +0 -32
- package/dist/css/30.chunk.css.map +0 -1
- package/dist/css/31.chunk.css.map +0 -1
- package/dist/css/32.chunk.css +0 -6
- package/dist/css/32.chunk.css.map +0 -1
- package/dist/css/33.chunk.css +0 -5
- package/dist/css/33.chunk.css.map +0 -1
- package/dist/css/34.chunk.css.map +0 -1
- package/dist/css/36.chunk.css +0 -6
- package/dist/css/36.chunk.css.map +0 -1
- package/dist/css/37.chunk.css +0 -7
- package/dist/css/37.chunk.css.map +0 -1
- package/dist/css/38.chunk.css.map +0 -1
- package/dist/css/41.chunk.css +0 -38
- package/dist/css/41.chunk.css.map +0 -1
- package/dist/css/5.chunk.css.map +0 -1
- package/dist/css/51.chunk.css +0 -9
- package/dist/css/51.chunk.css.map +0 -1
- package/dist/css/6.chunk.css.map +0 -1
- package/dist/css/7.chunk.css +0 -66
- package/dist/css/7.chunk.css.map +0 -1
- package/dist/css/lite-app.css.map +0 -1
- package/dist/projects/lite/src/polyfills.d.ts +0 -2
- package/dist/scripts/0.chunk.js +0 -308
- package/dist/scripts/0.chunk.js.map +0 -1
- package/dist/scripts/1.chunk.js +0 -623
- package/dist/scripts/1.chunk.js.map +0 -1
- package/dist/scripts/10.chunk.js +0 -530
- package/dist/scripts/10.chunk.js.map +0 -1
- package/dist/scripts/11.chunk.js +0 -380
- package/dist/scripts/11.chunk.js.map +0 -1
- package/dist/scripts/12.chunk.js +0 -434
- package/dist/scripts/12.chunk.js.map +0 -1
- package/dist/scripts/13.chunk.js +0 -1287
- package/dist/scripts/13.chunk.js.map +0 -1
- package/dist/scripts/14.chunk.js +0 -575
- package/dist/scripts/14.chunk.js.map +0 -1
- package/dist/scripts/15.chunk.js +0 -806
- package/dist/scripts/15.chunk.js.map +0 -1
- package/dist/scripts/16.chunk.js +0 -482
- package/dist/scripts/16.chunk.js.map +0 -1
- package/dist/scripts/17.chunk.js +0 -428
- package/dist/scripts/17.chunk.js.map +0 -1
- package/dist/scripts/18.chunk.js +0 -766
- package/dist/scripts/18.chunk.js.map +0 -1
- package/dist/scripts/19.chunk.js +0 -647
- package/dist/scripts/19.chunk.js.map +0 -1
- package/dist/scripts/2.chunk.js +0 -18882
- package/dist/scripts/2.chunk.js.map +0 -1
- package/dist/scripts/20.chunk.js +0 -212
- package/dist/scripts/20.chunk.js.map +0 -1
- package/dist/scripts/21.chunk.js +0 -1591
- package/dist/scripts/21.chunk.js.map +0 -1
- package/dist/scripts/22.chunk.js +0 -1348
- package/dist/scripts/22.chunk.js.map +0 -1
- package/dist/scripts/23.chunk.js +0 -1181
- package/dist/scripts/23.chunk.js.map +0 -1
- package/dist/scripts/24.chunk.js +0 -1141
- package/dist/scripts/24.chunk.js.map +0 -1
- package/dist/scripts/25.chunk.js +0 -907
- package/dist/scripts/25.chunk.js.map +0 -1
- package/dist/scripts/26.chunk.js +0 -979
- package/dist/scripts/26.chunk.js.map +0 -1
- package/dist/scripts/27.chunk.js +0 -655
- package/dist/scripts/27.chunk.js.map +0 -1
- package/dist/scripts/28.chunk.js +0 -615
- package/dist/scripts/28.chunk.js.map +0 -1
- package/dist/scripts/29.chunk.js +0 -622
- package/dist/scripts/29.chunk.js.map +0 -1
- package/dist/scripts/3.chunk.js +0 -809
- package/dist/scripts/3.chunk.js.map +0 -1
- package/dist/scripts/30.chunk.js +0 -468
- package/dist/scripts/30.chunk.js.map +0 -1
- package/dist/scripts/31.chunk.js +0 -441
- package/dist/scripts/31.chunk.js.map +0 -1
- package/dist/scripts/32.chunk.js +0 -509
- package/dist/scripts/32.chunk.js.map +0 -1
- package/dist/scripts/33.chunk.js +0 -957
- package/dist/scripts/33.chunk.js.map +0 -1
- package/dist/scripts/34.chunk.js +0 -502
- package/dist/scripts/34.chunk.js.map +0 -1
- package/dist/scripts/35.chunk.js +0 -938
- package/dist/scripts/35.chunk.js.map +0 -1
- package/dist/scripts/36.chunk.js +0 -537
- package/dist/scripts/36.chunk.js.map +0 -1
- package/dist/scripts/37.chunk.js +0 -414
- package/dist/scripts/37.chunk.js.map +0 -1
- package/dist/scripts/38.chunk.js +0 -245
- package/dist/scripts/38.chunk.js.map +0 -1
- package/dist/scripts/39.chunk.js +0 -337
- package/dist/scripts/39.chunk.js.map +0 -1
- package/dist/scripts/4.chunk.js +0 -402
- package/dist/scripts/4.chunk.js.map +0 -1
- package/dist/scripts/40.chunk.js +0 -350
- package/dist/scripts/40.chunk.js.map +0 -1
- package/dist/scripts/41.chunk.js +0 -343
- package/dist/scripts/41.chunk.js.map +0 -1
- package/dist/scripts/42.chunk.js +0 -404
- package/dist/scripts/42.chunk.js.map +0 -1
- package/dist/scripts/43.chunk.js +0 -221
- package/dist/scripts/43.chunk.js.map +0 -1
- package/dist/scripts/44.chunk.js +0 -230
- package/dist/scripts/44.chunk.js.map +0 -1
- package/dist/scripts/45.chunk.js +0 -409
- package/dist/scripts/45.chunk.js.map +0 -1
- package/dist/scripts/46.chunk.js +0 -272
- package/dist/scripts/46.chunk.js.map +0 -1
- package/dist/scripts/47.chunk.js +0 -267
- package/dist/scripts/47.chunk.js.map +0 -1
- package/dist/scripts/48.chunk.js +0 -359
- package/dist/scripts/48.chunk.js.map +0 -1
- package/dist/scripts/49.chunk.js +0 -225
- package/dist/scripts/49.chunk.js.map +0 -1
- package/dist/scripts/5.chunk.js +0 -1104
- package/dist/scripts/5.chunk.js.map +0 -1
- package/dist/scripts/50.chunk.js +0 -318
- package/dist/scripts/50.chunk.js.map +0 -1
- package/dist/scripts/51.chunk.js +0 -64
- package/dist/scripts/51.chunk.js.map +0 -1
- package/dist/scripts/52.chunk.js +0 -108
- package/dist/scripts/52.chunk.js.map +0 -1
- package/dist/scripts/53.chunk.js +0 -110
- package/dist/scripts/53.chunk.js.map +0 -1
- package/dist/scripts/54.chunk.js +0 -162
- package/dist/scripts/54.chunk.js.map +0 -1
- package/dist/scripts/55.chunk.js +0 -145
- package/dist/scripts/55.chunk.js.map +0 -1
- package/dist/scripts/56.chunk.js +0 -139
- package/dist/scripts/56.chunk.js.map +0 -1
- package/dist/scripts/57.chunk.js +0 -142
- package/dist/scripts/57.chunk.js.map +0 -1
- package/dist/scripts/58.chunk.js +0 -173
- package/dist/scripts/58.chunk.js.map +0 -1
- package/dist/scripts/59.chunk.js +0 -160
- package/dist/scripts/59.chunk.js.map +0 -1
- package/dist/scripts/6.chunk.js +0 -335
- package/dist/scripts/6.chunk.js.map +0 -1
- package/dist/scripts/60.chunk.js +0 -98
- package/dist/scripts/60.chunk.js.map +0 -1
- package/dist/scripts/61.chunk.js +0 -48
- package/dist/scripts/61.chunk.js.map +0 -1
- package/dist/scripts/62.chunk.js +0 -70
- package/dist/scripts/62.chunk.js.map +0 -1
- package/dist/scripts/63.chunk.js +0 -32
- package/dist/scripts/63.chunk.js.map +0 -1
- package/dist/scripts/64.chunk.js +0 -29
- package/dist/scripts/64.chunk.js.map +0 -1
- package/dist/scripts/65.chunk.js +0 -27
- package/dist/scripts/65.chunk.js.map +0 -1
- package/dist/scripts/66.chunk.js +0 -65
- package/dist/scripts/66.chunk.js.map +0 -1
- package/dist/scripts/67.chunk.js +0 -67
- package/dist/scripts/67.chunk.js.map +0 -1
- package/dist/scripts/68.chunk.js +0 -104
- package/dist/scripts/68.chunk.js.map +0 -1
- package/dist/scripts/69.chunk.js +0 -89
- package/dist/scripts/69.chunk.js.map +0 -1
- package/dist/scripts/7.chunk.js +0 -2579
- package/dist/scripts/7.chunk.js.map +0 -1
- package/dist/scripts/70.chunk.js +0 -1001
- package/dist/scripts/70.chunk.js.map +0 -1
- package/dist/scripts/71.chunk.js +0 -36
- package/dist/scripts/71.chunk.js.map +0 -1
- package/dist/scripts/8.chunk.js +0 -24
- package/dist/scripts/8.chunk.js.map +0 -1
- package/dist/scripts/9.chunk.js +0 -327
- package/dist/scripts/9.chunk.js.map +0 -1
- package/dist/scripts/bundle.js +0 -38145
- package/dist/scripts/bundle.js.map +0 -1
- package/dist/scripts/polyfills.js +0 -15232
- package/dist/scripts/polyfills.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["file://C:/ClickView/front-end/clickview/packages/libs/shared/src/apps/playlists/components/empty-state/EmptyPlaylistList.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/apps/playlists/components/playlist-list/PartialPlaylistList.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/apps/playlists/components/playlist-list/PlaylistItem.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/apps/playlists/components/playlist-list/PlaylistList.tsx","webpack://@clickview/lite/C:/ClickView/front-end/clickview/packages/libs/shared/src/apps/playlists/components/playlist-list/playlist.scss?344d","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/actions/ActionButton.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/actions/Actions.tsx","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","webpack://@clickview/lite/C:/ClickView/front-end/clickview/packages/libs/shared/src/components/actions/actions.scss?9153","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/components/audience-label/AudienceLabel.tsx","webpack://@clickview/lite/C:/ClickView/front-end/clickview/packages/libs/shared/src/components/audience-label/audience-label.scss?0950","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/flight-requests/AudienceRequests.ts","file://C:/ClickView/front-end/clickview/packages/libs/shared/src/utils/AudienceHelper.ts","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/playlists/components/playlist-list-header/PlaylistListHeader.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/playlists/components/sort-select/PlaylistSortSelect.tsx","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/playlists/interfaces/PlaylistCollectionIdentifier.ts","file://C:/ClickView/front-end/clickview/packages/projects/lite/src/apps/playlists/views/playlists/PlaylistsView.tsx"],"names":[],"mappings":"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","file":"scripts/25.chunk.js","sourcesContent":["import * as React from 'react';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { ImageUrlService } from 'libs/shared/services/ImageUrlService';\r\nimport { EmptyState } from 'libs/shared/components/empty-state/EmptyState';\r\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('playlists.emptyState');\r\n\r\nexport function EmptyPlaylistList(): React.ReactElement {\r\n const imageUrlService = useService<ImageUrlService>(SharedServices.ImageUrl);\r\n const imageUrls = imageUrlService.getImageUrls();\r\n\r\n return (\r\n <EmptyState\r\n imageUrl={imageUrls.EmptyStates.VIDEOS}\r\n heading={getPhrase('noPlaylistsHeading')}\r\n description={getPhrase('noPlaylistsInfo')}\r\n />\r\n );\r\n}","import * as React from 'react';\r\nimport { Row, Col } from 'react-bootstrap';\r\n\r\nimport styles from './playlist.scss';\r\n\r\ninterface PartialPlaylistListProps {\r\n numItems?: number;\r\n itemClassName?: string;\r\n showHeading?: boolean;\r\n}\r\n\r\nPartialPlaylistList.defaultProps = {\r\n numItems: 8\r\n};\r\n\r\nexport function PartialPlaylistList(props: PartialPlaylistListProps): JSX.Element {\r\n const PARTIAL_PLAYLISTS = [...Array(props.numItems)];\r\n\r\n const className = props.itemClassName || '';\r\n\r\n return (\r\n <>\r\n {props.showHeading && <div className={`${styles.partialHeading} partial-loading-background`} />}\r\n <Row>\r\n {PARTIAL_PLAYLISTS.map((p, idx) =>\r\n <Col key={idx} xs={6} sm={4} md={3} lg={2} className={className}>\r\n <div className='py-2'>\r\n <div className={`${styles.basePlaylistItem} partial-loading-background`} />\r\n </div>\r\n </Col>\r\n )}\r\n </Row>\r\n </>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Playlist, PresentationAudience } from 'libs/shared/interfaces';\r\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\r\nimport { AudienceHelper } from 'libs/shared/utils/AudienceHelper';\r\nimport { ImageSize, ResizeType } from 'libs/shared/enums/Images';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { BaseThumbnail } from 'libs/shared/components/thumbnails/base/BaseThumbnail';\r\nimport { ThumbnailFallback, ThumbnailFallbackType } from 'libs/shared/components/thumbnails/base/ThumbnailFallback';\r\nimport { AudienceLabelList, AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\r\n\r\nimport styles from './playlist.scss';\r\n\r\ninterface PlaylistItemProps {\r\n data: Playlist;\r\n appLink: Core.AppLink;\r\n presentationAudiences: PresentationAudience[];\r\n className?: string;\r\n showCount?: boolean;\r\n}\r\n\r\nexport function PlaylistItem(props: PlaylistItemProps): JSX.Element {\r\n const imageUrl = ImageHelper.createUrl(props.data.cover && props.data.cover.url, {\r\n size: ImageSize.Medium,\r\n resizeType: ResizeType.Cover\r\n });\r\n\r\n const audiences = props.data.subjectPresentationAudiences &&\r\n props.data.subjectPresentationAudiences.data;\r\n\r\n const filteredAudiences = AudienceHelper.getSortedPresentationAudiences(audiences, props.presentationAudiences);\r\n const mergedAudience = AudienceHelper.getMergedPresentationAudienceString(filteredAudiences);\r\n\r\n const count = !!props.showCount && !!props.data.videos && props.data.videos.count;\r\n\r\n return (\r\n <AppLink appLink={props.appLink}>\r\n <BaseThumbnail data={imageUrl} className={styles.playlistItem}>\r\n <ThumbnailFallback type={ThumbnailFallbackType.Playlist} />\r\n <div className={`text-white ${styles.playlistMetadata}`}>\r\n {Number.isInteger(count) &&\r\n <Text namespace='shared.playlistItem' phrase='videos' options={{ smartCount: count }} />\r\n }\r\n <h5 className='text-shadow mb-0'>{props.data.name}</h5>\r\n {!!audiences && !!audiences.length &&\r\n <AudienceLabel\r\n audience={mergedAudience}\r\n border='white'\r\n />\r\n }\r\n </div>\r\n </BaseThumbnail>\r\n </AppLink>\r\n );\r\n}","import * as React from 'react';\r\nimport { Row, Col } from 'react-bootstrap';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Playlist, PresentationAudience } from 'libs/shared/interfaces';\r\n\r\nimport { PlaylistItem } from './PlaylistItem';\r\n\r\ninterface PlaylistListProps {\r\n playlists: Playlist[];\r\n getPlaylistAppLink: (playlist: Playlist) => Core.AppLink;\r\n presentationAudiences: PresentationAudience[];\r\n itemClassName?: string;\r\n showCount?: boolean;\r\n}\r\n\r\nexport function PlaylistList(props: PlaylistListProps): JSX.Element {\r\n return (\r\n <Row>\r\n {props.playlists.map(p =>\r\n <Col key={p.id} xs={6} sm={4} lg={3} className={`mb-3 ${props.itemClassName ? props.itemClassName : ''}`}>\r\n <PlaylistItem\r\n key={p.id}\r\n data={p}\r\n appLink={props.getPlaylistAppLink(p)}\r\n presentationAudiences={props.presentationAudiences}\r\n showCount={props.showCount}\r\n />\r\n </Col>\r\n )}\r\n </Row>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"basePlaylistItem\":\"cv--basePlaylistItem--2nvrp\",\"playlistItem\":\"cv--playlistItem--6o0Z2\",\"playlistMetadata\":\"cv--playlistMetadata--3MCKL\",\"partialHeading\":\"cv--partialHeading--13tO6\"};","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\r\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\ninterface ActionButtonProps {\r\n appLink?: Core.AppLink;\r\n onClick?: (e: React.MouseEvent) => void;\r\n svgName?: string;\r\n className?: string;\r\n tooltip?: string;\r\n}\r\n\r\nexport function ActionButton(props: React.PropsWithChildren<ActionButtonProps>): JSX.Element {\r\n let className = 'ml-2';\r\n\r\n if (props.className)\r\n className += ` ${props.className}`;\r\n\r\n if (props.tooltip) {\r\n return (\r\n <Tooltip title={props.tooltip}>\r\n <IconButton\r\n appLink={props.appLink}\r\n svgName={props.svgName}\r\n onClick={props.onClick}\r\n className={className}\r\n >\r\n {props.children}\r\n </IconButton>\r\n </Tooltip>\r\n );\r\n }\r\n\r\n if (props.svgName) {\r\n return (\r\n <IconButton\r\n onClick={props.onClick}\r\n appLink={props.appLink}\r\n svgName={props.svgName}\r\n className={className}\r\n >\r\n {props.children}\r\n </IconButton>\r\n );\r\n }\r\n\r\n if (props.appLink)\r\n return <AppLink onClick={props.onClick} appLink={props.appLink} className={className}>{props.children}</AppLink>;\r\n\r\n return (\r\n <button onClick={props.onClick} className={className}>\r\n {props.children}\r\n </button>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nimport { ActionsDropdown } from './ActionsDropdown';\r\nimport { ActionButton } from './ActionButton';\r\n\r\nimport styles from './actions.scss';\r\n\r\nexport interface ActionOptions {\r\n label: string;\r\n appLink?: Core.AppLink;\r\n onClick?: (e: React.MouseEvent) => void;\r\n svgName?: string;\r\n className?: string;\r\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\r\n tooltip?: string;\r\n}\r\n\r\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\r\n\r\ninterface ActionsProps {\r\n actions: ActionOptions[];\r\n className?: string;\r\n actionsDropdownClassName?: string;\r\n sortComponent?: JSX.Element;\r\n}\r\n\r\nexport function Actions(props: ActionsProps): JSX.Element {\r\n const buttonActions: ActionOptions[] = [];\r\n const moreActions: ActionOptions[] = [];\r\n\r\n props.actions.forEach(a => {\r\n if (a.button)\r\n buttonActions.push(a);\r\n else\r\n moreActions.push(a);\r\n });\r\n\r\n let className = 'd-flex';\r\n\r\n if (props.className)\r\n className += ` ${props.className}`;\r\n\r\n return (\r\n <div className={className}>\r\n <>\r\n {!!buttonActions.length &&\r\n <span className={styles.buttonList}>\r\n {buttonActions.map((a, idx) =>\r\n <ActionButton\r\n key={idx}\r\n appLink={a.appLink}\r\n onClick={a.onClick}\r\n svgName={a.svgName}\r\n className={a.className}\r\n tooltip={a.tooltip}\r\n >\r\n {a.label}\r\n </ActionButton>\r\n )}\r\n </span>\r\n }\r\n {props.sortComponent ? props.sortComponent : '' }\r\n {!!moreActions.length &&\r\n <ActionsDropdown\r\n actions={moreActions}\r\n className={!!buttonActions.length && 'ml-2'}\r\n dropdownToggleClassName={props.actionsDropdownClassName}\r\n />\r\n }\r\n </>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\r\n\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport styles from './actions.scss';\r\n\r\nimport { ActionOptions } from './Actions';\r\n\r\nfunction getDropdownItemClassName(actionClassName?: string): string {\r\n let className = 'dropdown-item';\r\n\r\n if (actionClassName)\r\n className += ` ${actionClassName}`;\r\n\r\n return className;\r\n}\r\n\r\ntype DropdownActionOptions = Omit<ActionOptions, 'button' | 'tooltip'>;\r\n\r\ninterface ActionsDropdownProps {\r\n actions: DropdownActionOptions[];\r\n className?: string;\r\n dropdownToggleClassName?: string;\r\n}\r\n\r\nActionsDropdown.defaultProps = {\r\n dropdownToggleClassName: 'btn btn-light'\r\n};\r\n\r\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\r\n if (!props.actions || !props.actions.length)\r\n return <></>;\r\n\r\n // Generate unique id to avoid collisions.\r\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\r\n\r\n let dropdownToggleClassName = `px-0 ${styles.dropdownToggle}`;\r\n\r\n if (props.dropdownToggleClassName)\r\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\r\n\r\n return (\r\n <Dropdown className={props.className ? props.className : ''} alignRight>\r\n <Dropdown.Toggle as='button' type='button' id={dropdownToggleId} className={dropdownToggleClassName}>\r\n <SvgContainer svgName={cvSvgLibrary.More} size={SvgContainerSize.Small} />\r\n </Dropdown.Toggle>\r\n <Dropdown.Menu>\r\n {props.actions.map((a, idx) =>\r\n <AppLink key={idx} appLink={a.appLink} onClick={a.onClick} className={getDropdownItemClassName(a.className)}>\r\n {a.label}\r\n </AppLink>\r\n )}\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttonList\":\"cv--buttonList--2v9CT\",\"dropdownToggle\":\"cv--dropdownToggle--AYBvQ\"};","import * as React from 'react';\r\nimport { Audience } from 'libs/shared/interfaces';\r\n\r\nimport styles from './audience-label.scss';\r\n\r\ntype AudienceBorderColour = 'dark' | 'white';\r\n\r\ninterface AudienceLabelProps {\r\n audience: Audience;\r\n border: AudienceBorderColour;\r\n}\r\n\r\nexport function AudienceLabel(props: AudienceLabelProps): JSX.Element {\r\n if (!props.audience)\r\n return <></>;\r\n\r\n return (\r\n <div className={`border rounded-pill d-inline-block px-2 mt-1 ${'border-' + props.border}`}>\r\n {props.audience.name}\r\n </div>\r\n );\r\n}\r\n\r\ninterface AudienceLabelListProps {\r\n audiences: Audience[];\r\n border: AudienceBorderColour;\r\n}\r\n\r\nexport function AudienceLabelList(props: AudienceLabelListProps): JSX.Element {\r\n if (!props.audiences || !props.audiences.length)\r\n return <></>;\r\n\r\n return (\r\n <>\r\n {props.audiences.map((a, idx) => (\r\n <span key={idx} className={styles.audienceLabelListItem}>\r\n <AudienceLabel audience={a} border={props.border} />\r\n </span>\r\n ))}\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"audienceLabelListItem\":\"cv--audienceLabelListItem--2YGVO\"};","import { Flight } from 'libs/common/flight';\r\n\r\nconst endpoints = {\r\n presentationAudiences: () => `/api/domain/v1/subjects/audiences`\r\n};\r\n\r\nexport const AudienceRequests = {\r\n presentationAudiences(): Flight.Request {\r\n return {\r\n bootstrapName: 'presentationAudiences',\r\n url: endpoints.presentationAudiences(),\r\n key: `presentation:audiences`,\r\n normalize: false\r\n };\r\n }\r\n};","import { HashObject } from 'libs/common/react/interfaces';\r\nimport { Audience, PresentationAudience, BaseObject } from 'libs/shared/interfaces';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nconst DIGIT_REGEX = /([0-9]+)/ig;\r\nconst NAME_REGEX = /(^\\w+)/ig;\r\nconst COUNT_OFFSET = 1;\r\n\r\nfunction processAudienceRanges(audienceValues: number[]): string[] {\r\n /**\r\n * Lookahead by increments of offset\r\n */\r\n let offset = COUNT_OFFSET;\r\n\r\n let initialVal, nextVal;\r\n let isContinguous: boolean = false;\r\n\r\n const ranges: string[] = [];\r\n\r\n // Audience values need to be in ascending order\r\n audienceValues = audienceValues.sort((a, b) => a - b);\r\n\r\n let i, j;\r\n\r\n for (i = 0; i < audienceValues.length; i++) {\r\n j = i + 1;\r\n\r\n // Set our lower boundary to compare against\r\n if (!isContinguous)\r\n initialVal = audienceValues[i];\r\n\r\n nextVal = audienceValues[j];\r\n\r\n /**\r\n * Where the next number is also the next incremental value\r\n * we're going to continue iterating until the next value\r\n * is no longer contiguos.\r\n */\r\n if (audienceValues[i] + offset === nextVal) {\r\n isContinguous = true;\r\n\r\n } else if (isContinguous) {\r\n\r\n /**\r\n * Where we were tracking a contiguous set, format appropriately \r\n * and store the vals\r\n */\r\n\r\n ranges.push(`${initialVal} - ${audienceValues[i]}`);\r\n isContinguous = false;\r\n\r\n } else {\r\n\r\n /**\r\n * Where the values arent contiguous, just store the current value\r\n */\r\n\r\n ranges.push(`${audienceValues[i]}`);\r\n isContinguous = false;\r\n }\r\n\r\n }\r\n\r\n return ranges;\r\n}\r\n\r\nexport const AudienceHelper = {\r\n /**\r\n * This is needed to sort an object's audiences, as they are not sorted by the backend.\r\n * To do this, we take the presentation audiences (sorted) and filter them by the object's\r\n * audiences, leaving behind a sorted array of object audiences.\r\n */\r\n getSortedPresentationAudiences(\r\n objectAudiences: Audience[],\r\n presentationAudiences: PresentationAudience[]\r\n ): PresentationAudience[] {\r\n const objectAudienceIds = objectAudiences.map(audience => audience.id.toString());\r\n\r\n /**\r\n * Remove audiences that aren't relevant for the user's current presentation\r\n */\r\n const filteredAudiences = presentationAudiences.filter(presAudience => {\r\n return objectAudienceIds.includes(presAudience.masterId.toString());\r\n });\r\n\r\n return filteredAudiences;\r\n },\r\n\r\n getMergedPresentationAudienceString(presentationAudiences: PresentationAudience[]): PresentationAudience {\r\n if (presentationAudiences.length === 1)\r\n return presentationAudiences[0];\r\n\r\n /**\r\n * Create a string with all of the audiences\r\n */\r\n const valuesStr = presentationAudiences.map(a => a.name).join(',');\r\n\r\n /**\r\n * Extract all the numbers and matches from the string\r\n * Where there aren't matches, just return the first Audience.\r\n */\r\n const valMatches = valuesStr.match(DIGIT_REGEX);\r\n const nameMatches = valuesStr.match(NAME_REGEX);\r\n\r\n if (!valMatches || !nameMatches) return presentationAudiences[0];\r\n\r\n const audienceValues = valMatches\r\n .map(l => +l) || [];\r\n\r\n /**\r\n * Build set of logical audience ranges\r\n */\r\n const audienceRange = processAudienceRanges(audienceValues);\r\n\r\n /**\r\n * Get matches name\r\n */\r\n const audienceName = nameMatches[0];\r\n\r\n return {\r\n name: `${audienceName} ${audienceRange.join(' , ')}`\r\n } as PresentationAudience;\r\n },\r\n\r\n /**\r\n * This function assumes the members array passed in is ordered by `name`.\r\n */\r\n sortMembersWithDuplicateNamesByAudience(members: BaseObject[]): BaseObject[] {\r\n // Returns the lowest level audience out of an array of audience objects by looking at the name\r\n const getLowestAudience = (audiences: Audience[]) => {\r\n if (!audiences.length)\r\n return null;\r\n\r\n let lowestAudience: Audience;\r\n let lowestAudienceDigit: number;\r\n\r\n audiences.forEach(audience => {\r\n const digit = +ArrayHelper.first(audience.name.match(DIGIT_REGEX));\r\n\r\n if (!lowestAudience) {\r\n lowestAudience = audience;\r\n lowestAudienceDigit = digit;\r\n return;\r\n }\r\n\r\n if (digit > lowestAudienceDigit)\r\n lowestAudience = audience;\r\n });\r\n\r\n return lowestAudience;\r\n };\r\n\r\n // This is used to track how many times a member's name appears in the collection\r\n const nameCountMap: HashObject<number> = {};\r\n\r\n let sorted: BaseObject[] = [];\r\n\r\n members.forEach(member => {\r\n if (!nameCountMap[member.name]) {\r\n nameCountMap[member.name] = 1;\r\n sorted.push(member);\r\n return;\r\n }\r\n\r\n sorted.push(member);\r\n nameCountMap[member.name]++;\r\n\r\n // Take the slice of duplicates that we want to sort by audience\r\n const slice = sorted.splice(sorted.length - nameCountMap[member.name]);\r\n\r\n // Sort the slice by lowest audience\r\n const sortedSlice = slice.sort((a: any, b: any) => {\r\n const firstObjLowestAudience = getLowestAudience(a.subjectPresentationAudiences.data);\r\n const secondObjLowestAudience = getLowestAudience(b.subjectPresentationAudiences.data);\r\n\r\n if (!firstObjLowestAudience && secondObjLowestAudience)\r\n return 1;\r\n\r\n if (!secondObjLowestAudience)\r\n return -1;\r\n\r\n return firstObjLowestAudience.name.localeCompare(secondObjLowestAudience.name);\r\n });\r\n\r\n sorted = sorted.concat(sortedSlice);\r\n });\r\n\r\n return sorted;\r\n }\r\n};","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { CurrentUser } from 'libs/shared/interfaces';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { BannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\r\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\r\n\r\nimport { Actions } from 'shared/constants/LiteActions';\r\n\r\nimport { PlaylistSortSelect } from 'apps/playlists/components/sort-select/PlaylistSortSelect';\r\n\r\nconst namespace = 'playlists.playlistListHeader';\r\n\r\ninterface PlaylistListHeaderProps {\r\n user: CurrentUser;\r\n imageCdnUrl: string;\r\n sortType: PlaylistSortType;\r\n getSortAppLink: (sort: PlaylistSortType) => Core.AppLink;\r\n}\r\n\r\nexport function PlaylistListHeader(props: PlaylistListHeaderProps): JSX.Element {\r\n const currentAppLink = Core.AppLinkHelper.getCurrentAppLink();\r\n\r\n const actions = [\r\n {\r\n label: LanguageService.getPhrase(namespace, 'newPlaylist'),\r\n appLink: { application: currentAppLink.application, action: Actions.Playlists.NEW_PLAYLIST },\r\n svgName: cvSvgLibrary.Plus,\r\n className: 'btn btn-light',\r\n button: true\r\n }\r\n ];\r\n\r\n return (\r\n <div className='mb-3'>\r\n <BannerHeader\r\n heading={LanguageService.getPhrase(namespace, 'header')}\r\n banner={null}\r\n imageCdnUrl={props.imageCdnUrl}\r\n actions={actions}\r\n sortComponent={<PlaylistSortSelect type={props.sortType} getSortAppLink={props.getSortAppLink} />}\r\n />\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { Core } from 'libs/common/core';\r\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nconst namespace = 'playlists.playlistSortSelect';\r\n\r\nconst getSortTypes = FunctionHelper.memoize(() => {\r\n return {\r\n [PlaylistSortType.RecentlyUpdated]: {\r\n name: LanguageService.getPhrase(namespace, 'recentlyUpdated')\r\n },\r\n [PlaylistSortType.AtoZ]: {\r\n name: LanguageService.getPhrase(namespace, 'atoz')\r\n },\r\n [PlaylistSortType.Newest]: {\r\n name: LanguageService.getPhrase(namespace, 'newest')\r\n },\r\n };\r\n});\r\n\r\ninterface PlaylistSortSelectProps {\r\n type: PlaylistSortType;\r\n getSortAppLink: (sort: PlaylistSortType) => Core.AppLink;\r\n}\r\n\r\n\r\nexport function PlaylistSortSelect(props: PlaylistSortSelectProps): JSX.Element {\r\n const { type, getSortAppLink } = props;\r\n const sortTypes = getSortTypes();\r\n\r\n return (\r\n <Dropdown>\r\n <Dropdown.Toggle variant='light' id='sort-select' className={'ml-2'}>{sortTypes[type].name}</Dropdown.Toggle>\r\n <Dropdown.Menu>\r\n {Object.values(PlaylistSortType).filter(k => k !== type).map(k => {\r\n return (\r\n <AppLink key={k} className={'dropdown-item'} appLink={getSortAppLink(k)}>{sortTypes[k].name}</AppLink>\r\n );\r\n })}\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n );\r\n}","import { BaseCollectionIdentifier } from 'libs/common/backbone/interfaces';\r\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\r\n\r\nexport class PlaylistCollectionIdentifier extends BaseCollectionIdentifier<PlaylistSortType> {\r\n constructor(sort: PlaylistSortType = PlaylistSortType.Newest, cursor: string = '') {\r\n super({ collectionPrefix: 'user:playlists', cursor, sort });\r\n }\r\n}","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Playlist, Config, PresentationAudience, CurrentUser } from 'libs/shared/interfaces';\r\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\r\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\r\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\nimport { useInfiniteScroll } from 'libs/shared/hooks/UseInfiniteScroll';\r\nimport { useSetPageTitle } from 'libs/shared/hooks/useSetPageTitle';\r\nimport { useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\r\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\r\nimport { PlaylistList } from 'libs/shared/apps/playlists/components/playlist-list/PlaylistList';\r\nimport { PartialPlaylistList } from 'libs/shared/apps/playlists/components/playlist-list/PartialPlaylistList';\r\nimport { EmptyPlaylistList } from 'libs/shared/apps/playlists/components/empty-state/EmptyPlaylistList';\r\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\r\n\r\nimport { PlaylistListHeader } from 'apps/playlists/components/playlist-list-header/PlaylistListHeader';\r\nimport { PlaylistCollectionIdentifier } from 'apps/playlists/interfaces/PlaylistCollectionIdentifier';\r\n\r\nconst namespace = 'playlists.playlists';\r\n\r\ninterface PlaylistsViewProps {\r\n sort: PlaylistSortType;\r\n getSortAppLink: (sort: PlaylistSortType) => Core.AppLink;\r\n getPlaylistAppLink: (playlist: Playlist) => Core.AppLink;\r\n}\r\n\r\nexport function PlaylistsView(props: PlaylistsViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const user = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser);\r\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(AudienceRequests.presentationAudiences());\r\n\r\n const getPlaylistRequest = (cursor?: string) =>\r\n PlaylistRequests.getUserPlaylists(new PlaylistCollectionIdentifier(props.sort, cursor));\r\n\r\n const fetchNext = (cursor?: string) => {\r\n Flight.getFetch(dispatch, getPlaylistRequest(cursor))();\r\n };\r\n\r\n const playlists = useSelectAllPages((cursor?: string) => getPlaylistRequest(cursor).key);\r\n\r\n useSetPageTitle(LanguageService.getPhrase(namespace, 'title'));\r\n\r\n useInfiniteScroll(() => fetchNext(playlists.nextCursor), !!playlists.nextCursor, playlists.isFetching);\r\n\r\n React.useEffect(() => {\r\n if (playlists.shouldInitialFetch)\r\n fetchNext();\r\n }, [playlists.shouldInitialFetch]);\r\n\r\n if (ArrayHelper.isEmpty(playlists.items))\r\n return <EmptyPlaylistList />;\r\n\r\n return (\r\n <div className='bg-white padding-gutter'>\r\n {(!!config.data && !!user.data) && (\r\n <PlaylistListHeader\r\n user={user.data}\r\n imageCdnUrl={config.data.imageCdnUrl}\r\n sortType={props.sort}\r\n getSortAppLink={props.getSortAppLink}\r\n />\r\n )}\r\n {(!!playlists.items && (!!audiences.data || audiences.hasError))\r\n ? <PlaylistList\r\n playlists={playlists.items}\r\n getPlaylistAppLink={props.getPlaylistAppLink}\r\n presentationAudiences={audiences.data || []}\r\n showCount\r\n />\r\n : <PartialPlaylistList />\r\n }\r\n {!!playlists.items && !!(playlists.nextCursor || playlists.isFetching) &&\r\n <InfiniteScrollFooter\r\n isFetching={playlists.isFetching}\r\n onClick={() => fetchNext(playlists.nextCursor)}\r\n />\r\n }\r\n </div>\r\n );\r\n}"],"sourceRoot":""}
|