@clickview/lite 0.0.24-rc.4 → 0.0.24
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/css/11.chunk.css.map +1 -1
- package/dist/css/12.chunk.css.map +1 -1
- package/dist/css/13.chunk.css.map +1 -1
- package/dist/css/14.chunk.css.map +1 -1
- package/dist/css/15.chunk.css.map +1 -1
- package/dist/css/16.chunk.css.map +1 -1
- package/dist/css/17.chunk.css.map +1 -1
- package/dist/css/18.chunk.css.map +1 -1
- package/dist/css/20.chunk.css.map +1 -1
- package/dist/css/29.chunk.css.map +1 -1
- package/dist/css/3.chunk.css.map +1 -1
- package/dist/css/30.chunk.css.map +1 -1
- package/dist/css/31.chunk.css.map +1 -1
- package/dist/css/33.chunk.css.map +1 -1
- package/dist/css/38.chunk.css +11 -34
- package/dist/css/38.chunk.css.map +1 -1
- package/dist/css/4.chunk.css +3 -3
- package/dist/css/44.chunk.css +11 -3
- package/dist/css/44.chunk.css.map +1 -1
- package/dist/css/45.chunk.css +38 -0
- package/dist/css/45.chunk.css.map +1 -0
- package/dist/css/5.chunk.css.map +1 -1
- package/dist/css/52.chunk.css +52 -0
- package/dist/css/52.chunk.css.map +1 -0
- package/dist/css/59.chunk.css +14 -0
- package/dist/css/59.chunk.css.map +1 -0
- package/dist/css/6.chunk.css.map +1 -1
- package/dist/css/60.chunk.css +43 -0
- package/dist/css/60.chunk.css.map +1 -0
- package/dist/en.json +1 -1
- package/dist/libs/shared/src/components/curriculum-links/CurriculumLinks.d.ts +9 -0
- package/dist/libs/shared/src/components/widgets/items/resource-widget-item/ResourceWidgetItem.d.ts +12 -0
- package/dist/libs/shared/src/enums/CurriculumType.d.ts +6 -0
- package/dist/libs/shared/src/flight-requests/ClassificationRequests.d.ts +1 -0
- package/dist/libs/shared/src/flight-requests/ResourceRequests.d.ts +11 -0
- package/dist/libs/shared/src/interfaces/collections/SubtitleCollection.d.ts +3 -0
- package/dist/libs/shared/src/interfaces/models/Curriculum.d.ts +14 -0
- package/dist/libs/shared/src/interfaces/models/FileUpload.d.ts +20 -0
- package/dist/libs/shared/src/interfaces/models/Language.d.ts +4 -0
- package/dist/libs/shared/src/interfaces/models/Pdf.d.ts +4 -0
- package/dist/libs/shared/src/interfaces/models/Subtitle.d.ts +7 -0
- package/dist/libs/shared/src/interfaces/models/index.d.ts +1 -0
- package/dist/libs/shared/src/interfaces/requests/UpdateObjectChannel.d.ts +3 -0
- package/dist/libs/shared/src/interfaces/requests/UpdateObjectRating.d.ts +3 -0
- package/dist/libs/shared/src/interfaces/requests/UpdateResourceRequest.d.ts +3 -0
- package/dist/projects/lite/src/app.d.ts +1 -0
- package/dist/projects/lite/src/shared/components/play-page/PlayPage.d.ts +2 -1
- package/dist/projects/lite/src/shared/components/synopsis/Synopsis.d.ts +3 -1
- package/dist/projects/lite/src/shared/components/video-details/VideoDetails.d.ts +2 -0
- package/dist/projects/lite/src/shared/constants/MinimumGlanceHeight.d.ts +1 -0
- package/dist/projects/lite/src/shared/views/preview-pdf/PreviewPdfView.d.ts +7 -0
- package/dist/scripts/0-b02efe11fb.chunk.js +1 -0
- package/dist/scripts/1-4f19a5caea.chunk.js +17 -0
- package/dist/scripts/1.chunk.js.map +1 -1
- package/dist/scripts/10.chunk.js +484 -1203
- package/dist/scripts/10.chunk.js.map +1 -1
- package/dist/scripts/11-32e30d10ce.chunk.js +1 -0
- package/dist/scripts/11.chunk.js +289 -1388
- package/dist/scripts/11.chunk.js.map +1 -1
- package/dist/scripts/12-72a5373486.chunk.js +1 -0
- package/dist/scripts/12.chunk.js +1371 -283
- package/dist/scripts/12.chunk.js.map +1 -1
- package/dist/scripts/13-1cd85ad3ee.chunk.js +1 -0
- package/dist/scripts/13.chunk.js +361 -394
- package/dist/scripts/13.chunk.js.map +1 -1
- package/dist/scripts/14-3d60b8ee85.chunk.js +1 -0
- package/dist/scripts/14.chunk.js +793 -332
- package/dist/scripts/14.chunk.js.map +1 -1
- package/dist/scripts/15-90226fb996.chunk.js +1 -0
- package/dist/scripts/15.chunk.js +295 -214
- package/dist/scripts/15.chunk.js.map +1 -1
- package/dist/scripts/16-913b2535ea.chunk.js +1 -0
- package/dist/scripts/16.chunk.js +530 -434
- package/dist/scripts/16.chunk.js.map +1 -1
- package/dist/scripts/17-d6c19ccb60.chunk.js +1 -0
- package/dist/scripts/17.chunk.js +296 -170
- package/dist/scripts/17.chunk.js.map +1 -1
- package/dist/scripts/18-33efcac0c6.chunk.js +1 -0
- package/dist/scripts/18.chunk.js +265 -199
- package/dist/scripts/18.chunk.js.map +1 -1
- package/dist/scripts/19-2380200cfb.chunk.js +1 -0
- package/dist/scripts/19.chunk.js +7 -3
- package/dist/scripts/19.chunk.js.map +1 -1
- package/dist/scripts/2-53e37c2047.chunk.js +1 -0
- package/dist/scripts/2.chunk.js +18673 -622
- package/dist/scripts/2.chunk.js.map +1 -1
- package/dist/scripts/20-ca85f0514e.chunk.js +1 -0
- package/dist/scripts/20.chunk.js +1824 -221
- package/dist/scripts/20.chunk.js.map +1 -1
- package/dist/scripts/21-ef4a226771.chunk.js +1 -0
- package/dist/scripts/22-99c04e164f.chunk.js +1 -0
- package/dist/scripts/23-028eb81a43.chunk.js +1 -0
- package/dist/scripts/23.chunk.js +1 -1
- package/dist/scripts/23.chunk.js.map +1 -1
- package/dist/scripts/24-68f8df3eca.chunk.js +1 -0
- package/dist/scripts/24.chunk.js.map +1 -1
- package/dist/scripts/25-7ad07f87d4.chunk.js +1 -0
- package/dist/scripts/25.chunk.js.map +1 -1
- package/dist/scripts/26-f3dcacfe4f.chunk.js +1 -0
- package/dist/scripts/26.chunk.js +1 -1
- package/dist/scripts/26.chunk.js.map +1 -1
- package/dist/scripts/27-e844268f38.chunk.js +1 -0
- package/dist/scripts/28-853bc5de1f.chunk.js +1 -0
- package/dist/scripts/29-b164ecafe9.chunk.js +1 -0
- package/dist/scripts/29.chunk.js +435 -500
- package/dist/scripts/29.chunk.js.map +1 -1
- package/dist/scripts/3-a1bd8c9016.chunk.js +7 -0
- package/dist/scripts/3.chunk.js +625 -18676
- package/dist/scripts/3.chunk.js.map +1 -1
- package/dist/scripts/30-2cfcf52ea1.chunk.js +1 -0
- package/dist/scripts/30.chunk.js +634 -429
- package/dist/scripts/30.chunk.js.map +1 -1
- package/dist/scripts/31-e6a8291d2f.chunk.js +1 -0
- package/dist/scripts/31.chunk.js +371 -670
- package/dist/scripts/31.chunk.js.map +1 -1
- package/dist/scripts/32-7030dc98ed.chunk.js +1 -0
- package/dist/scripts/32.chunk.js +27 -54
- package/dist/scripts/32.chunk.js.map +1 -1
- package/dist/scripts/33-47b0ac90bd.chunk.js +1 -0
- package/dist/scripts/33.chunk.js +700 -312
- package/dist/scripts/33.chunk.js.map +1 -1
- package/dist/scripts/34-2de007b628.chunk.js +1 -0
- package/dist/scripts/34.chunk.js +3 -3
- package/dist/scripts/34.chunk.js.map +1 -1
- package/dist/scripts/35-d2fb66920b.chunk.js +1 -0
- package/dist/scripts/36-bc85df33de.chunk.js +1 -0
- package/dist/scripts/36.chunk.js.map +1 -1
- package/dist/scripts/37-e26652840b.chunk.js +1 -0
- package/dist/scripts/37.chunk.js +288 -464
- package/dist/scripts/37.chunk.js.map +1 -1
- package/dist/scripts/38-0b6a6b9619.chunk.js +1 -0
- package/dist/scripts/39-6549f483c6.chunk.js +1 -0
- package/dist/scripts/39.chunk.js +1 -1
- package/dist/scripts/39.chunk.js.map +1 -1
- package/dist/scripts/4-9e83a22d7a.chunk.js +1 -0
- package/dist/scripts/4.chunk.js +259 -1021
- package/dist/scripts/4.chunk.js.map +1 -1
- package/dist/scripts/40-8e6e9d285f.chunk.js +1 -0
- package/dist/scripts/41-2b44a2e66f.chunk.js +1 -0
- package/dist/scripts/42-9e75f420d8.chunk.js +1 -0
- package/dist/scripts/42.chunk.js.map +1 -1
- package/dist/scripts/43-1141245420.chunk.js +1 -0
- package/dist/scripts/44-9bc4201e0f.chunk.js +1 -0
- package/dist/scripts/45-5ded8ca3db.chunk.js +1 -0
- package/dist/scripts/46-2afd7ee1fb.chunk.js +1 -0
- package/dist/scripts/47-ab30686138.chunk.js +1 -0
- package/dist/scripts/48-d9cd99d55e.chunk.js +1 -0
- package/dist/scripts/49-f43a08f90b.chunk.js +1 -0
- package/dist/scripts/5-974660e17b.chunk.js +1 -0
- package/dist/scripts/5.chunk.js +1017 -259
- package/dist/scripts/5.chunk.js.map +1 -1
- package/dist/scripts/50-af699c531e.chunk.js +1 -0
- package/dist/scripts/51-aa7b835007.chunk.js +1 -0
- package/dist/scripts/52-805f7fe04d.chunk.js +1 -0
- package/dist/scripts/53-d75ca53045.chunk.js +1 -0
- package/dist/scripts/54-2e75bad46f.chunk.js +1 -0
- package/dist/scripts/55-ed637c4847.chunk.js +1 -0
- package/dist/scripts/55.chunk.js.map +1 -1
- package/dist/scripts/56-2ed3b5764b.chunk.js +1 -0
- package/dist/scripts/57-e51101c8a1.chunk.js +1 -0
- package/dist/scripts/58-9a32a6fb2d.chunk.js +1 -0
- package/dist/scripts/59-da8a8c97a9.chunk.js +1 -0
- package/dist/scripts/6-6ac39034e0.chunk.js +1 -0
- package/dist/scripts/6.chunk.js +291 -1250
- package/dist/scripts/6.chunk.js.map +1 -1
- package/dist/scripts/60-5713de53e2.chunk.js +1 -0
- package/dist/scripts/61-7d2ad17963.chunk.js +1 -0
- package/dist/scripts/62-a0a69501ac.chunk.js +1 -0
- package/dist/scripts/63-c921b87f3f.chunk.js +1 -0
- package/dist/scripts/64-87c1cf6985.chunk.js +1 -0
- package/dist/scripts/65-2322082836.chunk.js +1 -0
- package/dist/scripts/66-6d5356f6ce.chunk.js +1 -0
- package/dist/scripts/67-2e0d661c52.chunk.js +1 -0
- package/dist/scripts/7-5ac5be64dd.chunk.js +1 -0
- package/dist/scripts/7.chunk.js +1 -1
- package/dist/scripts/76.chunk.js +3 -3
- package/dist/scripts/76.chunk.js.map +1 -1
- package/dist/scripts/79.chunk.js +931 -347
- package/dist/scripts/79.chunk.js.map +1 -1
- package/dist/scripts/8-95563e3d36.chunk.js +1 -0
- package/dist/scripts/8.chunk.js +14 -920
- package/dist/scripts/8.chunk.js.map +1 -1
- package/dist/scripts/80.chunk.js +22 -313
- package/dist/scripts/80.chunk.js.map +1 -1
- package/dist/scripts/9.chunk.js +320 -17
- package/dist/scripts/9.chunk.js.map +1 -1
- package/dist/scripts/bundle-9ed1e126dd.min.js +15 -0
- package/dist/scripts/bundle.js +147 -121
- package/dist/scripts/bundle.js.map +1 -1
- package/dist/scripts/bundles.json +2 -2
- package/dist/scripts/pdf.worker.entry.worker.js +46239 -0
- package/dist/scripts/pdf.worker.entry.worker.js.map +1 -0
- package/dist/scripts/polyfills-2723daf478.min.js +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/video-list/partial-loading/partial-video-list.scss?6264","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/flight-requests/FavouriteVideoRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/default/views/my-videos/DismissibleAlert.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/default/views/my-videos/MyVideosView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/upload/components/uploading-item/UploadingItem.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/upload/hooks/useGetUploadingItems.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/watch-history/flight-requests/VideoHistoryRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"names":[],"mappings":"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","file":"scripts/37.chunk.js","sourcesContent":["import React from 'react';\r\nimport { Row, Col } from 'react-bootstrap';\r\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\r\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\r\n\r\nimport styles from './partial-video-list.scss';\r\n\r\ninterface PartialVideoListProps {\r\n withReordering?: boolean;\r\n numVideos?: number;\r\n}\r\n\r\nPartialVideoList.defaultProps = {\r\n numVideos: 15\r\n};\r\n\r\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\r\n const mediaQuery = useGetMediaQueryString();\r\n const isMobile = mediaQuery === MediaQueryStrings.XS;\r\n const isIPad = mediaQuery === MediaQueryStrings.SM || mediaQuery === MediaQueryStrings.MD;\r\n\r\n const withDragHandle = props.withReordering && !isMobile;\r\n\r\n return (\r\n <>\r\n {Array(props.numVideos).fill(null).map((_, i) => (\r\n <Row key={i} className='py-2'>\r\n <Col xs={isMobile ? 12 : isIPad ? 4 : 3} className='flex-column align-items-flex-start mb-1'>\r\n <Row>\r\n {!!withDragHandle && (\r\n <div className='d-flex align-items-center justify-content-center col-2'>\r\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\r\n </div>\r\n )}\r\n <Col xs={withDragHandle ? 10 : 12}>\r\n <div className={`partial-loading-background rounded-lg ${styles.partialThumbnail}`} />\r\n </Col>\r\n </Row>\r\n </Col>\r\n <Col xs={isMobile ? 12 : isIPad ? 8 : 9}>\r\n <div className={`partial-loading-background ${styles.partialSeriesLink}`} />\r\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\r\n <div className={`partial-loading-background ${styles.partialDescription}`} />\r\n <div className={`partial-loading-background ${styles.partialBadges}`} />\r\n <div className={`partial-loading-background ${styles.partialActions}`} />\r\n </Col>\r\n </Row>\r\n ))}\r\n </>\r\n );\r\n}\r\n\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialName\":\"cv--partialName--7KNC2\",\"partialDescription\":\"cv--partialDescription--Vk_wR\",\"partialThumbnail\":\"cv--partialThumbnail--3peRZ\",\"partialDragHandle\":\"cv--partialDragHandle--1F7_f\"};","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\r\n\r\nfunction favouriteVideo(\r\n videoId: string, userId: string, success?: () => void, error?: (Xhr: Xhr) => void\r\n): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/objects/${userId}`,\r\n key: `favourite:video:${userId}:${videoId}`,\r\n data: { favouriteVideos: videoId },\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ `favourite:videos:${userId}`, `video:is:favourited:${userId}` ],\r\n success,\r\n error\r\n };\r\n}\r\n\r\nfunction unfavouriteVideo(\r\n videoId: string, userId: string, success?: () => void, error?: (Xhr: Xhr) => void\r\n): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/objects/${userId}/favouriteVideos/${videoId}`,\r\n key: `favourite:video:${userId}:${videoId}`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [ `favourite:videos:${userId}`, `video:is:favourited:${userId}` ],\r\n success,\r\n error\r\n };\r\n}\r\n\r\nexport const FavouriteVideoRequests = {\r\n favouriteVideos(userId: string, cursor?: string): Flight.Request {\r\n const query = `${SharedWithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`;\r\n\r\n return {\r\n url: `/api/domain/v2/objects/${userId}/favouriteVideos?query=${query}`,\r\n key: `favourite:videos:${userId}${cursor ? `:${cursor}` : ''}`\r\n };\r\n },\r\n\r\n updateIsVideoFavourited(\r\n videoId: string, userId: string, shouldFavourite: boolean, success?: () => void, error?: (Xhr: Xhr) => void\r\n ): Flight.Request {\r\n const requestFn = shouldFavourite\r\n ? favouriteVideo\r\n : unfavouriteVideo;\r\n\r\n return requestFn(videoId, userId, success, error);\r\n },\r\n\r\n isFavourited(userId: string, ids: string[]): Flight.Request {\r\n const sortedIds = ids.slice().sort();\r\n\r\n const params = sortedIds.map(i => `id=${i}`);\r\n\r\n if (!params.length)\r\n return;\r\n\r\n return {\r\n url: `/api/domain/v2/objects?query=favouritedBy{id:${userId}}&${params.join('&')}`,\r\n key: `video:is:favourited:${userId}:by:id:${sortedIds.join(',')}`,\r\n formatData: (videos: HashObject[]) => {\r\n if (!videos?.length)\r\n return videos;\r\n\r\n const setIsFavourited = (video: HashObject) => {\r\n const { favouritedBy, ...v } = video;\r\n\r\n // As we filtered by userId, if there are any users, set isFavourited to true.\r\n return {\r\n ...v,\r\n isFavourited: !!favouritedBy?.data?.length\r\n };\r\n };\r\n\r\n return videos.map(setIsFavourited);\r\n }\r\n };\r\n }\r\n};\r\n\r\nfunction addCursor(cursor: string): string {\r\n return cursor ? `&cursor=${cursor}` : '';\r\n}","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\n\r\nconst namespace = 'default.myVideos';\r\n\r\nexport function DismissibleAlert(): JSX.Element {\r\n const [ show, setShow ] = React.useState(!localStorage.getItem('uploadInfoDismissed'));\r\n\r\n const onDismiss = () => {\r\n localStorage.setItem('uploadInfoDismissed', '1');\r\n setShow(false);\r\n };\r\n\r\n if (!show)\r\n return <></>;\r\n\r\n return (\r\n <Alert variant={'info'} onClose={onDismiss} dismissible>\r\n <Text namespace={namespace} phrase={'alertMessage'} /><br />\r\n <small><Text namespace={namespace} phrase={'alertSecondaryMessage'} /></small>\r\n </Alert>\r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { Core } from 'libs/common/core';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useSetPageTitle } from 'libs/common/react/hooks/UseSetPageTitle';\r\n\r\nimport { Config, VideoCollection, Video, Series, Library, User } from 'libs/shared/interfaces';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\r\nimport { FavouriteVideoRequests } from 'libs/shared/flight-requests/FavouriteVideoRequests';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\r\nimport { VideoAction } from 'libs/shared/utils/video-actions/VideoActionsHelper';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { EntityType, UserAction, LocationContext, WorkflowPhase, ToggleDescriptor } from 'libs/analytics/interfaces';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests/VideoRequests';\r\nimport { Services } from 'shared/constants/Services';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { useGetUploadingItems } from 'apps/upload/hooks/useGetUploadingItems';\r\nimport { CombineUploadsService, CombinedUpload, CombinedUploadStatus } from 'apps/upload/services/CombineUploadsService';\r\nimport { UploadingItem } from 'apps/upload/components/uploading-item/UploadingItem';\r\n\r\nimport { DismissibleAlert } from './DismissibleAlert';\r\n\r\nconst namespace = 'default.myVideos';\r\n\r\nfunction getVideoActions(): VideoAction[] {\r\n return [\r\n VideoAction.Edit,\r\n VideoAction.AddToPlaylist,\r\n VideoAction.Share\r\n ];\r\n}\r\n\r\nfunction getVideoActionAppLink(video: Video, action: VideoAction): Core.AppLink {\r\n switch (action) {\r\n case VideoAction.Edit:\r\n return { application: AppChannels.DEFAULT, action: Actions.Default.EDIT_VIDEO, args: [video.id]};\r\n case VideoAction.AddToPlaylist:\r\n return { application: AppChannels.PLAYLISTS, action: 'add:to:playlist', args: [video.id]};\r\n case VideoAction.Share:\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SHARE,\r\n args: [video.id],\r\n params: {\r\n entityType: 'video'\r\n }\r\n };\r\n }\r\n}\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [ video.id, TextHelper.slugify(video.name) ],\r\n params: video.lastProgressPoint ? { t: Math.floor(video.lastProgressPoint) } : {}\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: null,\r\n action: null,\r\n args: [series.id]\r\n});\r\n\r\ninterface MyVideosViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function MyVideosView(props: MyVideosViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n useSetPageTitle(LanguageService.getPhrase(namespace, 'pageTitle'));\r\n\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const workspace = Flight.useBasicFetch<Library>(UserRequests.workspace);\r\n const currentUser = Flight.useBasicFetch<User>(UserRequests.currentUser());\r\n\r\n const workspaceRequest = workspace.data && VideoRequests.workspace(workspace.data.id, props.cursor);\r\n const workspaceVideos = Flight.useGetResponse<VideoCollection>(workspaceRequest && workspaceRequest.key);\r\n const fetchData = Flight.useGetFetch(workspaceRequest);\r\n\r\n useVideoMixin(workspaceVideos.data);\r\n\r\n React.useEffect(() => {\r\n if ((!workspace.shouldFetch && workspace.data) && workspaceVideos.shouldFetch)\r\n fetchData();\r\n }, [ workspace.shouldFetch, workspace.data, workspaceVideos.shouldFetch ]);\r\n\r\n /**\r\n * Get reference to the combined service even though useGetUploadingItems does it too\r\n * so that we can provide the callbacks\r\n */\r\n const combinedUploadService = useService<CombineUploadsService>(Services.CombineUploads);\r\n\r\n /**\r\n * fetchData will be undefined on the first run through of this view because\r\n * the workspace.data will be null, so we pass a dependency of !workspace.data\r\n * so this callback is re-created once we have wokspace.data and the fetchData\r\n * is properly encapsulated.\r\n */\r\n const items = useGetUploadingItems(() => {\r\n fetchData && fetchData();\r\n }, [!!workspace.data]);\r\n\r\n /**\r\n * Using React.useCallback because this component will render\r\n * every time a chunk is loaded and every time the pending items\r\n * is fetched\r\n */\r\n const onClickDelete = React.useCallback((item: CombinedUpload) => {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.UPLOAD,\r\n action: Actions.Upload.CANCEL_UPLOAD,\r\n args: [item.id],\r\n params: {\r\n name: item.name,\r\n status: item.status\r\n }\r\n });\r\n }, []);\r\n\r\n const onClickAlternate = React.useCallback((item: CombinedUpload) => {\r\n switch (item.status) {\r\n case CombinedUploadStatus.Errored:\r\n combinedUploadService.retryItem(item);\r\n return;\r\n case CombinedUploadStatus.Processing:\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.EDIT_VIDEO,\r\n args: [item.videoId]\r\n });\r\n return;\r\n case CombinedUploadStatus.Uploading:\r\n combinedUploadService.editUpload(item);\r\n break;\r\n default:\r\n // This should never happen\r\n }\r\n }, []);\r\n\r\n function setFavourite(video: Video, shouldFavourite: boolean, onError?: () => void): void {\r\n Flight.fetch(\r\n dispatch,\r\n FavouriteVideoRequests.updateIsVideoFavourited(video.id, currentUser.data.id, shouldFavourite, () => {\r\n AnalyticsHelper.logUserAction({ id: video.id }, {\r\n entity: EntityType.Video,\r\n actionType: UserAction.Favourite,\r\n descriptor: shouldFavourite ? ToggleDescriptor.On : ToggleDescriptor.Off,\r\n location: LocationContext.VideoThumbnail,\r\n workflowPhase: WorkflowPhase.Complete\r\n });\r\n\r\n alerts.success(LanguageService.getPhrase(\r\n namespace,\r\n shouldFavourite ? 'favourited' : 'unfavourited',\r\n { video: video.name }\r\n ));\r\n }, onError)\r\n );\r\n }\r\n\r\n return (\r\n <VideoActionsContext.Provider\r\n value={{\r\n videoActions: getVideoActions(),\r\n getActionAppLink: getVideoActionAppLink,\r\n hideLabel: true\r\n }}\r\n >\r\n <div className='px-3'>\r\n <h1><Text namespace={namespace} phrase='header' /></h1>\r\n <div>\r\n <p className='h6'><Text namespace={namespace} phrase='description' /></p>\r\n <DismissibleAlert />\r\n {items.map(item => <UploadingItem\r\n item={item}\r\n onClickAlternate={onClickAlternate}\r\n onClickDelete={onClickDelete}\r\n key={item.id}\r\n />)}\r\n {workspaceVideos.data?.data\r\n ? (\r\n <VideoList\r\n videos={workspaceVideos.data.data}\r\n cursors={workspaceVideos.data.pagination.cursors}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n setFavourite={setFavourite}\r\n />\r\n ) : <PartialVideoList />\r\n }\r\n </div>\r\n </div>\r\n </VideoActionsContext.Provider>\r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { ProgressBar, Row, Col } from 'react-bootstrap';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { ThumbnailFallback, ThumbnailFallbackType } from 'libs/shared/components/thumbnails/base/ThumbnailFallback';\r\nimport { AspectRatio, BaseThumbnail } from 'libs/shared/components/thumbnails/base/BaseThumbnail';\r\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\r\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\r\n\r\nimport { CombinedUploadStatus, CombinedUpload } from 'apps/upload/services/CombineUploadsService';\r\n\r\nconst namespace = 'upload.uploadingItem';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nfunction getClassName(status: CombinedUploadStatus): string {\r\n switch (status) {\r\n case CombinedUploadStatus.Uploading:\r\n return 'text-success';\r\n case CombinedUploadStatus.Processing:\r\n return 'text-info';\r\n case CombinedUploadStatus.Errored:\r\n return 'text-danger';\r\n }\r\n}\r\n\r\nfunction getVariant(status: CombinedUploadStatus): 'success' | 'info' | 'danger' {\r\n switch (status) {\r\n case CombinedUploadStatus.Uploading:\r\n return 'success';\r\n case CombinedUploadStatus.Processing:\r\n return 'info';\r\n case CombinedUploadStatus.Errored:\r\n return 'danger';\r\n }\r\n}\r\n\r\nfunction getProgressText(status: CombinedUploadStatus, progress: number): string | JSX.Element {\r\n const rounded = Math.round(progress) || 0;\r\n\r\n switch (status) {\r\n case CombinedUploadStatus.Uploading:\r\n return `${getPhrase('uploading')} ${rounded}%`;\r\n\r\n case CombinedUploadStatus.Processing:\r\n if (rounded === 0)\r\n return <em>{getPhrase('waitingToBeProcessed')}</em>;\r\n else\r\n return <em>{getPhrase('processing')} {rounded}%</em>;\r\n\r\n case CombinedUploadStatus.Errored:\r\n return getPhrase('error');\r\n }\r\n}\r\n\r\ninterface UploadingItemProps {\r\n item: CombinedUpload;\r\n onClickDelete: (item: CombinedUpload) => void;\r\n onClickAlternate: (item: CombinedUpload) => void;\r\n}\r\n\r\nexport function UploadingItem(props: UploadingItemProps): JSX.Element {\r\n const { status, progress, name } = props.item;\r\n\r\n const mediaQuery = useGetMediaQueryString();\r\n const isMobile = mediaQuery === MediaQueryStrings.XS;\r\n const isIPad = mediaQuery === MediaQueryStrings.SM || mediaQuery === MediaQueryStrings.MD;\r\n\r\n /**\r\n * We're using React.useCallback here because this view\r\n * will get re-rendered many times by it's parent during\r\n * an upload\r\n */\r\n const onClickAlternate = React.useCallback(() => {\r\n props.onClickAlternate(props.item);\r\n }, []);\r\n\r\n const onClickDelete = React.useCallback(() => {\r\n props.onClickDelete(props.item);\r\n }, []);\r\n\r\n return (\r\n <Row className='py-2'>\r\n <Col xs={isMobile ? 12 : isIPad ? 4 : 3}>\r\n <div className='rounded'>\r\n <BaseThumbnail data='' aspectRatio={AspectRatio.SixteenByNine}>\r\n <ThumbnailFallback type={ThumbnailFallbackType.Video} />\r\n </BaseThumbnail>\r\n </div>\r\n </Col>\r\n <Col xs={isMobile ? 12 : isIPad ? 8 : 9}>\r\n <h5 className='m-0 pb-1'>{name}</h5>\r\n <span className={getClassName(status)}>{getProgressText(status, progress)}</span>\r\n <div className='d-flex'>\r\n <ProgressBar className='flex-grow-1 align-self-center' variant={getVariant(status)} now={progress} />\r\n <SvgContainer\r\n className='svg-container cursor-pointer ml-2'\r\n svgName={status === CombinedUploadStatus.Errored ? cvSvgLibrary.Bell : cvSvgLibrary.Edit}\r\n onClick={onClickAlternate}\r\n />\r\n <SvgContainer\r\n className='svg-container cursor-pointer ml-2'\r\n svgName={cvSvgLibrary.Delete}\r\n onClick={onClickDelete}\r\n />\r\n </div>\r\n </Col>\r\n </Row>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { CombineUploadsService, CombinedUpload } from '../services/CombineUploadsService';\r\n\r\nexport function useGetUploadingItems(onRemove: () => void, dependencies: React.DependencyList): CombinedUpload[] {\r\n const combineUploadsService = useService<CombineUploadsService>('combine:uploads:service');\r\n\r\n const [ , setUpdate ] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n const collection = combineUploadsService.getCollection();\r\n collection.off('add remove change');\r\n collection.on('add remove change', () => {\r\n setUpdate(s => !s);\r\n });\r\n collection.on('remove', onRemove);\r\n return () => collection.off('add remove change');\r\n }, dependencies);\r\n\r\n return combineUploadsService.getCollection().toJSON();\r\n}","import { Flight } from 'libs/common/flight';\r\nimport { HashObject } from 'libs/common/react/interfaces';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\n\r\nexport const VideoHistoryRequests = {\r\n userVideoHistory(\r\n customerId: string,\r\n userId: string,\r\n cursor?: string,\r\n success?: (data: HashObject) => void,\r\n error?: (Xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n let key = `video:history:${customerId}:${userId}`;\r\n let url = `/api/videoviews/v1/customers/${customerId}/users/${userId}/videos/history`;\r\n\r\n if (cursor) {\r\n key += `:${cursor}`;\r\n url += `?cursor=${cursor}`;\r\n }\r\n\r\n return {\r\n key,\r\n url,\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n videoHistory(\r\n customerId: string,\r\n userId: string,\r\n ids: string[],\r\n success?: (data: HashObject) => void,\r\n error?: (Xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n const params = ids.sort().map(i => `videoId=${i}`);\r\n\r\n return {\r\n key: `video:history:${customerId}:${userId}:videos:${params.join('&')}`,\r\n url: `/api/videoviews/v1/customers/${customerId}/users/${userId}/videos/history?${params.join('&')}`,\r\n formatData: (historyCollection: HashObject[]) => {\r\n if (!historyCollection?.length)\r\n return historyCollection;\r\n\r\n /**\r\n * Data is formatted to enable it to be merged with the existing video object in the store\r\n * Where we need to merge more history properties with the video object, map them below.\r\n */\r\n return historyCollection.map((watchHistory: HashObject) => ({\r\n id: watchHistory.videoId,\r\n lastProgressPoint: watchHistory.lastProgressPoint\r\n }));\r\n },\r\n success,\r\n error,\r\n always\r\n };\r\n }\r\n};","import { Flight } from 'libs/common/flight';\r\nimport { VideoCollection, Video, CurrentUser } from 'libs/shared/interfaces';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\nimport { FavouriteVideoRequests } from 'libs/shared/flight-requests/FavouriteVideoRequests';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests/VideoRequests';\r\nimport { VideoHistoryRequests } from 'apps/watch-history/flight-requests/VideoHistoryRequests';\r\n\r\ninterface VideoMixinOptions {\r\n ratings?: boolean;\r\n favourites?: boolean;\r\n watchHistory?: boolean;\r\n}\r\n\r\nconst defaults: VideoMixinOptions = {\r\n ratings: true,\r\n favourites: true,\r\n watchHistory: true,\r\n};\r\n\r\nfunction fetchAttribute(videosFetched: boolean, request: Flight.Request): void {\r\n const attribute = Flight.useGetResponse<VideoCollection>(request?.key);\r\n const fetch = Flight.useGetFetch(request);\r\n\r\n if (videosFetched && request && attribute.shouldFetch)\r\n fetch();\r\n}\r\n\r\nexport function useVideoMixin(videos: VideoCollection | Video[], options: VideoMixinOptions = {}): void {\r\n const { ratings, favourites, watchHistory } = { ...defaults, ...options };\r\n\r\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\r\n\r\n const videoIds = videos && (Array.isArray(videos)\r\n ? videos.filter(Boolean).map(v => v.id)\r\n : videos.data.filter(Boolean).map(v => v.id));\r\n\r\n const user = currentUser.data;\r\n\r\n let requests: Flight.Request[] = [];\r\n\r\n if (ratings)\r\n requests = [ ...requests, !!videoIds?.length && VideoRequests.videoRatings(videoIds) ];\r\n\r\n if (favourites)\r\n requests = [ ...requests, !!videoIds?.length && user && FavouriteVideoRequests.isFavourited(user.id, videoIds) ];\r\n\r\n if (watchHistory)\r\n requests = [ ...requests, !!videoIds?.length && user &&\r\n VideoHistoryRequests.videoHistory( user.customerId, user.id, videoIds) ];\r\n\r\n requests.forEach(r => fetchAttribute(!!videos, r));\r\n}"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","webpack://@clickview/lite/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/video-list/partial-loading/partial-video-list.scss?6264","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/flight-requests/FavouriteVideoRequests.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/watch-history/flight-requests/VideoHistoryRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/flight-requests/SeriesRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/hooks/useVideoMixin.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/shared/views/series/SeriesView.tsx"],"names":[],"mappings":"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","file":"scripts/37.chunk.js","sourcesContent":["import React from 'react';\r\nimport { Row, Col } from 'react-bootstrap';\r\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\r\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\r\n\r\nimport styles from './partial-video-list.scss';\r\n\r\ninterface PartialVideoListProps {\r\n withReordering?: boolean;\r\n numVideos?: number;\r\n}\r\n\r\nPartialVideoList.defaultProps = {\r\n numVideos: 15\r\n};\r\n\r\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\r\n const mediaQuery = useGetMediaQueryString();\r\n const isMobile = mediaQuery === MediaQueryStrings.XS;\r\n const isIPad = mediaQuery === MediaQueryStrings.SM || mediaQuery === MediaQueryStrings.MD;\r\n\r\n const withDragHandle = props.withReordering && !isMobile;\r\n\r\n return (\r\n <>\r\n {Array(props.numVideos).fill(null).map((_, i) => (\r\n <Row key={i} className='py-2'>\r\n <Col xs={isMobile ? 12 : isIPad ? 4 : 3} className='flex-column align-items-flex-start mb-1'>\r\n <Row>\r\n {!!withDragHandle && (\r\n <div className='d-flex align-items-center justify-content-center col-2'>\r\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\r\n </div>\r\n )}\r\n <Col xs={withDragHandle ? 10 : 12}>\r\n <div className={`partial-loading-background rounded-lg ${styles.partialThumbnail}`} />\r\n </Col>\r\n </Row>\r\n </Col>\r\n <Col xs={isMobile ? 12 : isIPad ? 8 : 9}>\r\n <div className={`partial-loading-background ${styles.partialSeriesLink}`} />\r\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\r\n <div className={`partial-loading-background ${styles.partialDescription}`} />\r\n <div className={`partial-loading-background ${styles.partialBadges}`} />\r\n <div className={`partial-loading-background ${styles.partialActions}`} />\r\n </Col>\r\n </Row>\r\n ))}\r\n </>\r\n );\r\n}\r\n\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialName\":\"cv--partialName--7KNC2\",\"partialDescription\":\"cv--partialDescription--Vk_wR\",\"partialThumbnail\":\"cv--partialThumbnail--3peRZ\",\"partialDragHandle\":\"cv--partialDragHandle--1F7_f\"};","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\r\n\r\nfunction favouriteVideo(\r\n videoId: string, userId: string, success?: () => void, error?: (Xhr: Xhr) => void\r\n): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/objects/${userId}`,\r\n key: `favourite:video:${userId}:${videoId}`,\r\n data: { favouriteVideos: videoId },\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: [ `favourite:videos:${userId}`, `video:is:favourited:${userId}` ],\r\n success,\r\n error\r\n };\r\n}\r\n\r\nfunction unfavouriteVideo(\r\n videoId: string, userId: string, success?: () => void, error?: (Xhr: Xhr) => void\r\n): Flight.Request {\r\n return {\r\n url: `/api/domain/v2/objects/${userId}/favouriteVideos/${videoId}`,\r\n key: `favourite:video:${userId}:${videoId}`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [ `favourite:videos:${userId}`, `video:is:favourited:${userId}` ],\r\n success,\r\n error\r\n };\r\n}\r\n\r\nexport const FavouriteVideoRequests = {\r\n favouriteVideos(userId: string, cursor?: string): Flight.Request {\r\n const query = `${SharedWithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`;\r\n\r\n return {\r\n url: `/api/domain/v2/objects/${userId}/favouriteVideos?query=${query}`,\r\n key: `favourite:videos:${userId}${cursor ? `:${cursor}` : ''}`\r\n };\r\n },\r\n\r\n updateIsVideoFavourited(\r\n videoId: string, userId: string, shouldFavourite: boolean, success?: () => void, error?: (Xhr: Xhr) => void\r\n ): Flight.Request {\r\n const requestFn = shouldFavourite\r\n ? favouriteVideo\r\n : unfavouriteVideo;\r\n\r\n return requestFn(videoId, userId, success, error);\r\n },\r\n\r\n isFavourited(userId: string, ids: string[]): Flight.Request {\r\n const sortedIds = ids.slice().sort();\r\n\r\n const params = sortedIds.map(i => `id=${i}`);\r\n\r\n if (!params.length)\r\n return;\r\n\r\n return {\r\n url: `/api/domain/v2/objects?query=favouritedBy{id:${userId}}&${params.join('&')}`,\r\n key: `video:is:favourited:${userId}:by:id:${sortedIds.join(',')}`,\r\n formatData: (videos: HashObject[]) => {\r\n if (!videos?.length)\r\n return videos;\r\n\r\n const setIsFavourited = (video: HashObject) => {\r\n const { favouritedBy, ...v } = video;\r\n\r\n // As we filtered by userId, if there are any users, set isFavourited to true.\r\n return {\r\n ...v,\r\n isFavourited: !!favouritedBy?.data?.length\r\n };\r\n };\r\n\r\n return videos.map(setIsFavourited);\r\n }\r\n };\r\n }\r\n};\r\n\r\nfunction addCursor(cursor: string): string {\r\n return cursor ? `&cursor=${cursor}` : '';\r\n}","const DEFAULT_NUM_ITEMS = 5;\r\nconst DEFAULT_MIN_WIDTH = 50; // px\r\nconst DEFAULT_MAX_WIDTH = 100; // px\r\n\r\ninterface PartialLoadingOptions {\r\n numItems?: number;\r\n minWidth?: number;\r\n maxWidth?: number;\r\n}\r\n\r\ninterface PartialLoadingItem {\r\n width: string;\r\n}\r\n\r\nexport const PartialLoadingHelper = {\r\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\r\n const {\r\n numItems = DEFAULT_NUM_ITEMS,\r\n minWidth = DEFAULT_MIN_WIDTH,\r\n maxWidth = DEFAULT_MAX_WIDTH\r\n } = options;\r\n\r\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * maxWidth), minWidth);\r\n\r\n return [...Array(numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\r\n }\r\n};","import { Flight } from 'libs/common/flight';\r\nimport { HashObject } from 'libs/common/react/interfaces';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\n\r\nexport const VideoHistoryRequests = {\r\n userVideoHistory(\r\n customerId: string,\r\n userId: string,\r\n cursor?: string,\r\n success?: (data: HashObject) => void,\r\n error?: (Xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n let key = `video:history:${customerId}:${userId}`;\r\n let url = `/api/videoviews/v1/customers/${customerId}/users/${userId}/videos/history`;\r\n\r\n if (cursor) {\r\n key += `:${cursor}`;\r\n url += `?cursor=${cursor}`;\r\n }\r\n\r\n return {\r\n key,\r\n url,\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n videoHistory(\r\n customerId: string,\r\n userId: string,\r\n ids: string[],\r\n success?: (data: HashObject) => void,\r\n error?: (Xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n const params = ids.sort().map(i => `videoId=${i}`);\r\n\r\n return {\r\n key: `video:history:${customerId}:${userId}:videos:${params.join('&')}`,\r\n url: `/api/videoviews/v1/customers/${customerId}/users/${userId}/videos/history?${params.join('&')}`,\r\n formatData: (historyCollection: HashObject[]) => {\r\n if (!historyCollection?.length)\r\n return historyCollection;\r\n\r\n /**\r\n * Data is formatted to enable it to be merged with the existing video object in the store\r\n * Where we need to merge more history properties with the video object, map them below.\r\n */\r\n return historyCollection.map((watchHistory: HashObject) => ({\r\n id: watchHistory.videoId,\r\n lastProgressPoint: watchHistory.lastProgressPoint\r\n }));\r\n },\r\n success,\r\n error,\r\n always\r\n };\r\n }\r\n};","import { Flight } from 'libs/common/flight';\r\nimport { WithStatements } from 'shared/constants/WithStatements';\r\n\r\nconst endpoints = {\r\n series: (id: string) => `/api/domain/v2/objects/${id}`,\r\n seriesVideos: (id: string, cursor: string) =>\r\n `/api/domain/v2/objects/${id}/videos?query=${WithStatements.VIDEO_COLLECTION}${addCursor(cursor)}`,\r\n\r\n breadcrumbs: (id: string) => `/api/domain/v1/subjects/${id}/path`\r\n};\r\n\r\nexport const SeriesRequests = {\r\n series(id: string): Flight.Request {\r\n return {\r\n url: endpoints.series(id),\r\n key: `series:${id}`\r\n };\r\n },\r\n seriesVideos(id: string, cursor: string): Flight.Request {\r\n return {\r\n url: endpoints.seriesVideos(id, cursor),\r\n key: `series:${id}:videos:${cursor}`\r\n };\r\n },\r\n breadcrumbs(classificationId: string): Flight.Request {\r\n if (!classificationId)\r\n return;\r\n\r\n return {\r\n url: endpoints.breadcrumbs(classificationId),\r\n key: `series:${classificationId}:breadcrumbs`\r\n };\r\n }\r\n};\r\n\r\nfunction addCursor(cursor: string): string {\r\n return cursor ? `&cursor=${cursor}` : '';\r\n}","import { Flight } from 'libs/common/flight';\r\nimport { VideoCollection, Video, CurrentUser } from 'libs/shared/interfaces';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\nimport { FavouriteVideoRequests } from 'libs/shared/flight-requests/FavouriteVideoRequests';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests/VideoRequests';\r\nimport { VideoHistoryRequests } from 'apps/watch-history/flight-requests/VideoHistoryRequests';\r\n\r\ninterface VideoMixinOptions {\r\n ratings?: boolean;\r\n favourites?: boolean;\r\n watchHistory?: boolean;\r\n}\r\n\r\nconst defaults: VideoMixinOptions = {\r\n ratings: true,\r\n favourites: true,\r\n watchHistory: true,\r\n};\r\n\r\nfunction fetchAttribute(videosFetched: boolean, request: Flight.Request): void {\r\n const attribute = Flight.useGetResponse<VideoCollection>(request?.key);\r\n const fetch = Flight.useGetFetch(request);\r\n\r\n if (videosFetched && request && attribute.shouldFetch)\r\n fetch();\r\n}\r\n\r\nexport function useVideoMixin(videos: VideoCollection | Video[], options: VideoMixinOptions = {}): void {\r\n const { ratings, favourites, watchHistory } = { ...defaults, ...options };\r\n\r\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\r\n\r\n const videoIds = videos && (Array.isArray(videos)\r\n ? videos.filter(Boolean).map(v => v.id)\r\n : videos.data.filter(Boolean).map(v => v.id));\r\n\r\n const user = currentUser.data;\r\n\r\n let requests: Flight.Request[] = [];\r\n\r\n if (ratings)\r\n requests = [ ...requests, !!videoIds?.length && VideoRequests.videoRatings(videoIds) ];\r\n\r\n if (favourites)\r\n requests = [ ...requests, !!videoIds?.length && user && FavouriteVideoRequests.isFavourited(user.id, videoIds) ];\r\n\r\n if (watchHistory)\r\n requests = [ ...requests, !!videoIds?.length && user &&\r\n VideoHistoryRequests.videoHistory( user.customerId, user.id, videoIds) ];\r\n\r\n requests.forEach(r => fetchAttribute(!!videos, r));\r\n}","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { Core } from 'libs/common/core';\r\nimport { Series, Config, Video, Classification, VideoCollection, BaseObject, User } from 'libs/shared/interfaces';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\r\nimport { FavouriteVideoRequests } from 'libs/shared/flight-requests/FavouriteVideoRequests';\r\nimport { BannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\r\nimport { Breadcrumbs, BreadcrumbType, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\r\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\r\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { EntityType, UserAction, LocationContext, WorkflowPhase, ToggleDescriptor } from 'libs/analytics/interfaces';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\nimport { useSetPageTitle } from 'libs/common/react/hooks/UseSetPageTitle';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { SeriesRequests } from 'shared/flight-requests/SeriesRequests';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\r\n\r\n/**\r\n * This will need to change when this is moved into its own application directory.\r\n */\r\nconst namespace = 'shared.series';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\n// Update this applink when we pull dashboard in\r\nconst getClassificationAppLink = (classification: Classification): Core.AppLink => ({\r\n application: AppChannels.SUBJECT,\r\n action: Actions.Subjects.CLASSIFICATION,\r\n args: [ classification.id, TextHelper.slugify(classification.name) ]\r\n});\r\n\r\nconst getVideoAppLink = (video: Video): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.PLAY_VIDEO,\r\n args: [ video.id, TextHelper.slugify(video.name) ],\r\n params: video.lastProgressPoint ? { t: Math.floor(video.lastProgressPoint) } : {}\r\n});\r\n\r\nconst getSeriesAppLink = (series: Series): Core.AppLink => ({\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: [ series.id, TextHelper.slugify(series.name) ]\r\n});\r\n\r\nconst getHeaderActions = (series: Series): ActionOptions[] => ([\r\n {\r\n label: LanguageService.getPhrase(namespace, 'share'),\r\n appLink: series && {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SHARE,\r\n args: [series.id],\r\n params: { entityType: 'series' }\r\n },\r\n svgName: cvSvgLibrary.Share,\r\n className: 'btn btn-light mr-2',\r\n button: true\r\n },\r\n {\r\n label: LanguageService.getPhrase(namespace, 'follow'),\r\n appLink: { application: AppChannels.DEFAULT, action: 'index' },\r\n svgName: cvSvgLibrary.Bell,\r\n className: 'btn btn-light',\r\n button: true\r\n }\r\n]);\r\n\r\ninterface SeriesViewProps {\r\n id: string;\r\n classificationId?: string;\r\n cursor?: string;\r\n}\r\n\r\nexport function SeriesView(props: SeriesViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config);\r\n const currentUser = Flight.useBasicFetch<User>(UserRequests.currentUser());\r\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.id));\r\n const seriesVideos = Flight.useBasicFetch<VideoCollection>(SeriesRequests.seriesVideos(props.id, props.cursor));\r\n\r\n useSetPageTitle(series.data?.name);\r\n\r\n useVideoMixin(seriesVideos.data);\r\n\r\n let breadcrumbs: BaseObject[] = [series.data];\r\n if (props.classificationId) {\r\n const subjectPath = Flight.useBasicFetch<Classification[]>(SeriesRequests.breadcrumbs(props.classificationId));\r\n if (subjectPath.data) {\r\n breadcrumbs.unshift(...subjectPath.data);\r\n }\r\n }\r\n\r\n function setFavourite(video: Video, shouldFavourite: boolean, onError?: () => void): void {\r\n Flight.fetch(\r\n dispatch,\r\n FavouriteVideoRequests.updateIsVideoFavourited(video.id, currentUser.data.id, shouldFavourite, () => {\r\n AnalyticsHelper.logUserAction({ id: video.id }, {\r\n entity: EntityType.Video,\r\n actionType: UserAction.Favourite,\r\n descriptor: shouldFavourite ? ToggleDescriptor.On : ToggleDescriptor.Off,\r\n location: LocationContext.VideoThumbnail,\r\n workflowPhase: WorkflowPhase.Complete\r\n });\r\n\r\n alerts.success(LanguageService.getPhrase(\r\n namespace,\r\n shouldFavourite ? 'favourited' : 'unfavourited',\r\n { video: video.name }\r\n ));\r\n }, onError)\r\n );\r\n }\r\n\r\n if (!seriesVideos.data || !config.data || !series.data)\r\n return <></>;\r\n\r\n const heading = getPhrase('series', { seriesName: series.data.name });\r\n\r\n return (\r\n <div className='px-3'>\r\n <BannerHeader\r\n heading={heading}\r\n banner={null}\r\n imageCdnUrl={config.data.imageCdnUrl}\r\n backButtonAppLink={{\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n }}\r\n backButtonText='Home' // this needs to be changed eventually\r\n actions={getHeaderActions(series.data)}\r\n />\r\n <div>\r\n <div className='border-bottom py-3 mb-3'>\r\n {(props.classificationId && breadcrumbs.length < 2)\r\n ? <PartialBreadcrumbs />\r\n : <Breadcrumbs\r\n currentItem={series.data}\r\n type={BreadcrumbType.Static}\r\n getItemAppLink={getClassificationAppLink}\r\n data={breadcrumbs}\r\n rootItem={{\r\n label: getPhrase('dashboard'),\r\n appLink: {\r\n application: AppChannels.DASHBOARD,\r\n action: Actions.Dashboard.HOME\r\n }\r\n }}\r\n />\r\n }\r\n\r\n {series.data.description && (\r\n <p className='pt-3'>{series.data.description}</p>\r\n )}\r\n </div>\r\n\r\n {seriesVideos.data\r\n ? !seriesVideos.isFetching\r\n ? <VideoList\r\n videos={seriesVideos.data.data}\r\n cursors={seriesVideos.data.pagination.cursors}\r\n getVideoAppLink={getVideoAppLink}\r\n getSeriesAppLink={getSeriesAppLink}\r\n setFavourite={setFavourite}\r\n />\r\n : <PartialVideoList />\r\n : <>Empty State</>\r\n }\r\n </div>\r\n </div>\r\n );\r\n}"],"sourceRoot":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(window.webpackJsonp_clickview_lite=window.webpackJsonp_clickview_lite||[]).push([[38],{1006:function(e,a,t){"use strict";var r=t(900);t.d(a,"a",(function(){return r.a})),t.d(a,"b",(function(){return r.b}))},1007:function(e,a,t){"use strict";t.d(a,"a",(function(){return k}));var r=t(0),n=t.n(r),s=t(7),o=t(14),i=t(40),c=t(3),l=t(238),u=t(824),d=t(962),m=t(871),p=t(882),f=t(867),v=t(908),h=t(829);function y(e,a){return function(e){if(Array.isArray(e))return e}(e)||function(e,a){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var t=[],r=!0,n=!1,s=void 0;try{for(var o,i=e[Symbol.iterator]();!(r=(o=i.next()).done)&&(t.push(o.value),!a||t.length!==a);r=!0);}catch(e){n=!0,s=e}finally{try{r||null==i.return||i.return()}finally{if(n)throw s}}return t}(e,a)||function(e,a){if(!e)return;if("string"==typeof e)return g(e,a);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return g(e,a)}(e,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=new Array(a);t<a;t++)r[t]=e[t];return r}function k(e){var a=n.a.useContext(p.a),t=a.state,r=a.dispatch,g=y(n.a.useState(!!t.invalidUsers[e.user.lookupId]),2),k=g[0],b=g[1],E=y(n.a.useState(e.user.lookupId),2),S=E[0],w=E[1],C=o.a.useBasicFetch(m.a.getAll()),O=o.a.useBasicFetch(h.a.getUserRoles()),U=Object(u.a)();n.a.useEffect((function(){b(!!t.invalidUsers[e.user.lookupId]),i.a.logUserAction({isInvalid:!!t.invalidUsers[e.user.lookupId],data:e.user},i.a.mergeOptions(e.analyticsOptions,{workflowPhase:c.o.Start}))}),[e.user]);var A=t.invalidUsers[S];if(k&&!A)return n.a.createElement(n.a.Fragment,null);var R={user:k?A.user:e.user,initialErrors:k?A.errors:{},saveUser:function(a){if(k){var n=Object.keys(t.invalidUsers),o=n.indexOf(S),l=n[o+1]||n[0];w(l)}var u=k?A.user.lookupId:e.user.lookupId;r({type:"save",payload:Object.assign(Object.assign({},a),{lookupId:u})}),i.a.logUserAction({isInvalid:!1,data:a},i.a.mergeOptions(e.analyticsOptions,{workflowPhase:c.o.Complete})),U.success(s.a.getPhrase("userManager.editUploadedUserPopup","success")),k&&Object.keys(t.invalidUsers).length||e.closePopup()},onClickCancel:e.closePopup,hasNext:k&&Object.keys(t.invalidUsers).length>1};return e.userType===f.a.Student?R.yearLevels=C.data:R.userRoles=O.data,n.a.createElement(l.a,{closePopup:e.closePopup,title:e.title},e.userType===f.a.Student?n.a.createElement(d.a,Object.assign({},R)):n.a.createElement(v.a,Object.assign({},R)))}},1314:function(e,a,t){"use strict";t.r(a);var r=t(0),n=t.n(r),s=t(61),o=t(2),i=t(14),c=t(7),l=t(89),u=t(237),d=t(73),m=t(824),p=t(837),f=t(40),v=t(3),h=t(5),y=t(10),g=t(875),k=t(256),b=t(257),E=t(1006),S=t(829),w=t(882),C=t(55),O=t(13),U=t(825);function A(e){var a=e.error?"p-2 text-danger font-weight-bold":"p-2",t=e.error||e.data;return n.a.createElement("td",{className:a},n.a.createElement("span",{className:""},t))}function R(e){var a,t=e.teacher,r=e.errors,s=e.onClickEdit,o=e.onClickDelete;return n.a.createElement("tr",null,n.a.createElement(A,{data:t.name,error:r.name}),n.a.createElement(A,{data:t.surname,error:r.surname}),n.a.createElement(A,{data:null===(a=t.userRole)||void 0===a?void 0:a.name,error:r.userRole}),n.a.createElement(A,{data:t.email,error:r.email}),n.a.createElement("td",{className:"p-2 d-flex justify-content-end"},n.a.createElement(U.a,{className:"mr-2 cursor-pointer",onClick:function(){return s(t)}},n.a.createElement(C.a,{svgName:O.b.Edit})),n.a.createElement(U.a,{className:"cursor-pointer",onClick:function(){return o(t)}},n.a.createElement(C.a,{svgName:O.b.Delete}))))}function N(e){var a=n.a.useContext(w.a).state;return n.a.createElement(d.a.Provider,{value:"userManager.teacherReviewTable"},n.a.createElement("table",{className:"w-100"},n.a.createElement("thead",null,n.a.createElement("tr",null,n.a.createElement("th",{className:"p-2"},n.a.createElement(d.b,{phrase:"firstName"})),n.a.createElement("th",{className:"p-2"},n.a.createElement(d.b,{phrase:"lastName"})),n.a.createElement("th",{className:"p-2"},n.a.createElement(d.b,{phrase:"userRole"})),n.a.createElement("th",{className:"p-2"},n.a.createElement(d.b,{phrase:"email"})),n.a.createElement("th",{className:"p-2"}," "))),n.a.createElement("tbody",{className:"striped-list"},e.teachers.map((function(t,r){var s;return n.a.createElement(R,{key:t.lookupId,teacher:t,errors:(null===(s=a.invalidUsers[t.lookupId])||void 0===s?void 0:s.errors)||{},onClickEdit:e.onClickEdit,onClickDelete:e.onClickDelete})})))))}var T=t(238),P=t(243),j="userManager.deleteUploadedTeacherPopup",x=c.a.encloseNamespace(j);function I(e){var a,t=n.a.useContext(w.a).dispatch,r=Object(m.a)();var s=[{variant:"link",onClick:e.closePopup,buttonText:x("cancel")},{variant:"danger",onClick:function(){t({type:"delete",payload:e.teacher}),f.a.logUserAction({},f.a.mergeOptions(e.analyticsOptions,{workflowPhase:v.o.Discard,descriptor:v.k.Single})),r.success(x("success")),e.closePopup()},buttonText:x("delete")}];return n.a.createElement(d.a.Provider,{value:j},n.a.createElement(T.a,{title:x("title"),closePopup:e.closePopup},n.a.createElement("p",{className:"m-0 pb-1"},n.a.createElement(d.b,{phrase:"confirmation"})),n.a.createElement("ul",null,n.a.createElement("li",null,n.a.createElement(d.b,{phrase:"firstName",options:{firstName:e.teacher.name}})),n.a.createElement("li",null,n.a.createElement(d.b,{phrase:"lastName",options:{lastName:e.teacher.surname}})),n.a.createElement("li",null,n.a.createElement(d.b,{phrase:"userRole",options:{userRole:null===(a=e.teacher.userRole)||void 0===a?void 0:a.name}})),n.a.createElement("li",null,n.a.createElement(d.b,{phrase:"email",options:{email:e.teacher.email}}))),n.a.createElement(P.a,{buttons:s})))}var L=t(1007),M=t(867);function B(e,a){var t;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(t=H(e))||a&&e&&"number"==typeof e.length){t&&(e=t);var r=0,n=function(){};return{s:n,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,i=!1;return{s:function(){t=e[Symbol.iterator]()},n:function(){var e=t.next();return o=e.done,e},e:function(e){i=!0,s=e},f:function(){try{o||null==t.return||t.return()}finally{if(i)throw s}}}}function K(e,a){return function(e){if(Array.isArray(e))return e}(e)||function(e,a){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var t=[],r=!0,n=!1,s=void 0;try{for(var o,i=e[Symbol.iterator]();!(r=(o=i.next()).done)&&(t.push(o.value),!a||t.length!==a);r=!0);}catch(e){n=!0,s=e}finally{try{r||null==i.return||i.return()}finally{if(n)throw s}}return t}(e,a)||H(e,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,a){if(e){if("string"==typeof e)return D(e,a);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?D(e,a):void 0}}function D(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=new Array(a);t<a;t++)r[t]=e[t];return r}t.d(a,"TeacherUploadReviewView",(function(){return _}));var Y=function(e,a,t,r){return new(t||(t=Promise))((function(n,s){function o(e){try{c(r.next(e))}catch(e){s(e)}}function i(e){try{c(r.throw(e))}catch(e){s(e)}}function c(e){var a;e.done?n(e.value):(a=e.value,a instanceof t?a:new t((function(e){e(a)}))).then(o,i)}c((r=r.apply(e,a||[])).next())}))},J=c.a.encloseNamespace("userManager.teacherUploadReview");function F(e){return Object.keys(e.invalidUsers).length}function _(e){var a=K(Object(l.a)("bulk:teacher:upload"),2),t=a[0],r=a[1];Object(u.a)(J("pageTitle"));var c=K(n.a.useState(!0),2),C=c[0],O=c[1],U=K(n.a.useState(),2),A=U[0],R=U[1],T=K(n.a.useState(),2),P=T[0],j=T[1],x=K(n.a.useState(1),2),H=x[0],D=x[1],_=K(n.a.useState([]),2),q=_[0],G=_[1],V=K(n.a.useReducer(w.b,null),2),z=V[0],W=V[1],$=Object(s.useDispatch)(),Q=Object(m.a)(),X=Object(k.a)(),Z=i.a.useBasicFetch(S.a.getUserRoles());function ee(){return C?Math.ceil(F(z)/25):Math.ceil(z.users.length/25)}return n.a.useEffect((function(){if(Z.data&&!z)if(t){var a=Object(E.b)(Z.data);!function(){Y(this,void 0,void 0,regeneratorRuntime.mark((function n(){var s,o,i,c;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:s={},o=B(t),n.prev=2,o.s();case 4:if((i=o.n()).done){n.next=16;break}return c=i.value,n.prev=6,n.next=9,a.validate(c,{abortEarly:!1});case 9:n.next=14;break;case 11:n.prev=11,n.t0=n.catch(6),s[c.lookupId]={user:c,errors:n.t0.inner.reduce((function(e,a){return e[a.path.split(".")[0]]=a.message,e}),{})};case 14:n.next=4;break;case 16:n.next=21;break;case 18:n.prev=18,n.t1=n.catch(2),o.e(n.t1);case 21:return n.prev=21,o.f(),n.finish(21);case 24:f.a.logUserAction({totalUploaded:t.length,totalInvalid:s.length},f.a.mergeOptions(e.analyticsOptions,{workflowPhase:v.o.Start,descriptor:v.k.Bulk})),W({type:"init",payload:{users:t,invalidUsers:s}}),r(null);case 27:case"end":return n.stop()}}),n,null,[[2,18,21,24],[6,11]])})))}(),X.lock({id:"teacher-upload-review",title:J("navLockTitle"),text:J("navLockBody"),onConfirmUnlock:function(){f.a.logUserAction({},f.a.mergeOptions(e.analyticsOptions,{workflowPhase:v.o.Discard,descriptor:v.k.Bulk}))}})}else o.a.AppLinkHelper.trigger({application:h.a.USER_MANAGER,action:y.a.UserManager.TEACHERS},{replace:!0})}),[t,Z.data]),n.a.useEffect((function(){var e;if(z&&(null===(e=z.users)||void 0===e?void 0:e.length)){var a=(C?Object.keys(z.invalidUsers).map((function(e){return z.invalidUsers[e].user})):z.users).slice(25*(H-1),25*H);G(a);var t=ee();t&&H>t&&D(t)}}),[C,H,z]),n.a.useEffect((function(){z&&!F(z)&&O(!1)}),[z]),n.a.useEffect((function(){var e;z&&!(null===(e=z.users)||void 0===e?void 0:e.length)&&(X.unlock("teacher-upload-review"),o.a.AppLinkHelper.trigger({application:h.a.USER_MANAGER,action:y.a.UserManager.TEACHERS}))}),[z]),z?n.a.createElement(d.a.Provider,{value:"userManager.teacherUploadReview"},n.a.createElement(w.a.Provider,{value:{state:z,dispatch:W}},n.a.createElement("div",{className:"px-3"},n.a.createElement("div",{className:"d-flex justify-content-between align-items-center"},n.a.createElement("h1",null,n.a.createElement(d.b,{phrase:"heading"})),n.a.createElement("button",{className:"btn btn-dark ".concat(F(z)?"disabled":""),onClick:function(){F(z)||b.a.render(n.a.createElement("p",null,n.a.createElement(d.b,{namespace:"userManager.teacherUploadReview",phrase:"saveConfirmationBody",options:{smartCount:z.users.length}})),{title:J("saveConfirmationHeading"),buttons:[b.a.getCancelDefault(),{variant:"dark",success:!0,onClick:function(){return function(){if(F(z))return;i.a.fetch($,S.a.bulkCreateTeachers(z.users,(function(){Q.success(J("success")),f.a.logUserAction({count:z.users.length},f.a.mergeOptions(e.analyticsOptions,{workflowPhase:v.o.Complete,descriptor:v.k.Bulk}))}),(function(){Q.error(J("error"))}),(function(){X.unlock("teacher-upload-review"),o.a.AppLinkHelper.trigger({application:h.a.USER_MANAGER,action:y.a.UserManager.TEACHERS})})))}()},buttonText:J("save")}]})}},n.a.createElement(d.b,{phrase:"save"}))),!!F(z)&&n.a.createElement("p",{className:"mb-1"},n.a.createElement(d.b,{phrase:"reviewCount",options:{smartCount:F(z)}})),n.a.createElement("div",{className:"d-flex align-items-center flex-wrap"},n.a.createElement("p",{className:"pr-3 mb-0"},n.a.createElement(d.b,{phrase:"switchLabel"})),n.a.createElement(g.a,{onClick:function(){O(!C),D(1),f.a.logUserAction({hideValidListings:!C},f.a.mergeOptions(e.analyticsOptions,{actionType:v.n.Click,descriptor:v.b.ToggleHideValidListings}))},on:C,disabled:!F(z)})),n.a.createElement("main",{className:"pt-2 pb-3"},n.a.createElement(N,{teachers:q,onClickEdit:function(e){R(e)},onClickDelete:function(e){j(e)}}),n.a.createElement(p.a,{className:"py-2 float-right",onClickNext:function(){return D(H+1)},onClickBack:function(){return D(H-1)},currentPage:H,totalPages:ee()})),!!A&&n.a.createElement(L.a,{user:A,closePopup:function(){R(null),e.closePopup()},title:J("editTeacher"),userType:M.a.Teacher,analyticsOptions:f.a.mergeOptions(e.analyticsOptions,{actionType:v.n.Edit})}),!!P&&n.a.createElement(I,{teacher:P,closePopup:function(){e.closePopup(),j(null)},analyticsOptions:e.analyticsOptions})))):n.a.createElement(n.a.Fragment,null)}},829:function(e,a,t){"use strict";t.d(a,"a",(function(){return u}));var r=t(14),n=t(79),s=t(21),o=t(840),i=t(833),c=t(834),l=t(835),u={getSchoolStudents:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=e.filter,t=void 0===a?"":a,s=e.q,c=void 0===s?"":s,l=e.query,u=void 0===l?"":l,d=e.cursor,m=void 0===d?"1":d;return{url:n.a.urlBuilder("api/domain/v1/school/:id/students",e),key:"school:students:".concat(c,":").concat(u,":").concat(t,":").concat(m),successResponse:function(){var e=o.a.revertFilterString(t),a=r.a.Simulator.getAll("school:students",i).filter((function(a){var r,n;return!(c&&!a.name.toLowerCase().includes(c.toLowerCase()))&&(!t||(!e.yearLevel||e.yearLevel===a.yearLevel.id)&&!((null===(r=e.classroom)||void 0===r?void 0:r.length)&&!e.classroom.includes(null===(n=a.classroom)||void 0===n?void 0:n.id)))})),n=o.a.convertWithStatementToObject(u),s=n.sortValue||"name",l=a.sort((function(e,a){return e[s].toLowerCase()<a[s].toLowerCase()?-1:e[s].toLowerCase()>a[s].toLowerCase()?1:0}));n.sortKey&&"orderbydesc"===n.sortKey&&(l=l.reverse());var d=l.slice(25*(+m-1),25*+m),p=l.slice(25*+m).length?+m+1:void 0,f="1"===m?void 0:+m-1;return d.length||(d=l.slice(0,25),p=l.slice(25).length?2:void 0,f=void 0),{data:d,pagination:{cursors:{next:p,previous:f}},count:l.length}},timeout:500}},tempGetAllStudents:function(){return{url:"",key:"get:all:dem:students",successResponse:function(){return r.a.Simulator.getAll("school:students")}}},removeStudentsFromSchool:function(e,a){return{url:"",key:"remove:school:students",invalidationKeys:["school:students"],successResponse:function(){return r.a.Simulator.delete("school:students",e),{}},always:a}},getStudent:function(e){return{url:"/api/domain/v1/users/".concat(e),key:"students:".concat(e),successResponse:function(){return r.a.Simulator.get("school:students",e)}}},createStudent:function(e,a,t){return{url:"/api/domain/v1/users",key:"create:student",type:s.a.POST,invalidationKeys:["school:students"],successResponse:function(){return r.a.Simulator.create("school:students",e)},success:a,error:t}},bulkCreateStudents:function(e,a,t,n){return{url:"/api/domain/v1/users",key:"create:students",type:s.a.POST,invalidationKeys:["school:students"],successResponse:function(){return e.forEach((function(e){return r.a.Simulator.create("school:students",e)})),e},success:a,error:t,always:n}},updateStudent:function(e,a,t){return{url:"/api/domain/v1/users",key:"edit:student",type:s.a.PUT,invalidationKeys:["school:students"],successResponse:function(){return r.a.Simulator.update("school:students",e)},success:a,error:t}},getSchoolTeachers:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=e.filter,t=void 0===a?"":a,s=e.q,o=void 0===s?"":s,i=e.query,l=void 0===i?"":i,u=e.cursor,d=void 0===u?"":u;return{url:n.a.urlBuilder("api/domain/v1/school/:id/teachers",e),key:"school:teachers:".concat(o,":").concat(l,":").concat(t,":").concat(d),successResponse:function(){var e=r.a.Simulator.getAll("school:teachers",c);return{data:e,pagination:{cursors:{}},count:e.length}},timeout:2e3}},removeTeachersFromSchool:function(e,a){return{url:"",key:"remove:school:teachers",invalidationKeys:["school:teachers"],successResponse:function(){return r.a.Simulator.delete("school:teachers",e),{}},always:a}},getTeacher:function(e){return{url:"/api/domain/v1/users/".concat(e),key:"teachers:".concat(e),successResponse:function(){return r.a.Simulator.get("school:teachers",e)}}},createTeacher:function(e,a,t){return{url:"/api/domain/v1/users",key:"create:teacher",type:s.a.POST,invalidationKeys:["school:teachers"],successResponse:function(){return r.a.Simulator.create("school:teachers",e)},success:a,error:t}},bulkCreateTeachers:function(e,a,t,n){return{url:"/api/domain/v1/users",key:"create:teachers",type:s.a.POST,invalidationKeys:["school:teachers"],successResponse:function(){return e.forEach((function(e){return r.a.Simulator.create("school:teachers",e)})),e},success:a,error:t,always:n}},updateTeacher:function(e,a,t){return{url:"/api/domain/v1/users",key:"edit:teacher",type:s.a.PUT,invalidationKeys:["school:teachers"],successResponse:function(){return r.a.Simulator.update("school:teachers",e)},success:a,error:t}},getUserRoles:function(){return{url:"/api/domain/v1/users/roles",key:"user:roles",successResponse:function(){return r.a.Simulator.getAll("user:roles",l)}}},getStudentsGroups:function(e){return{url:"/api/domain/v1/users/".concat(e,"/groups"),key:"user:".concat(e,":groups"),successResponse:function(){return r.a.Simulator.getAll("groups").filter((function(a){return!!a.students.find((function(a){return a.id===e}))}))}}}}},833:function(e){e.exports=JSON.parse('[{"username":"Joosh","name":"Joshua","surname":"Taylor","email":"joshua.taylor@clickview.com.au","yearLevel":{"id":"year-2","name":"Year 2"},"classroom":{"id":"classroom-2-c","name":"Classroom 2-C"}},{"username":"Shale","name":"Shale","surname":"Kuzmanovski","email":"shale.kuzmanovski@clickview.com.au","yearLevel":{"id":"year-2","name":"Year 2"},"classroom":{"id":"classroom-2-a","name":"Classroom 2-A"}},{"username":"Mike","name":"Michael","surname":"O\'McDonald","email":"michael.mcdonnell@clickview.com.au","yearLevel":{"id":"year-2","name":"Year 2"},"classroom":{"id":"classroom-2-a","name":"Classroom 2-A"}},{"username":"Met","name":"Matt","surname":"Trengrove","email":"matt@clickview.com.au","yearLevel":{"id":"year-2","name":"Year 2"},"classroom":{"id":"classroom-2-b","name":"Classroom 2-B"}},{"username":"Big Kev","name":"Don Kevin","surname":"Wellalagodage","email":"kevin.wellalagoladegelagodage@clickview.com.au","yearLevel":{"id":"year-2","name":"Year 1"},"classroom":{"id":"classroom-1-a","name":"Classroom 1-A"}}]')},834:function(e){e.exports=JSON.parse('[{"username":"beb","name":"Beverly","surname":"Li","email":"beverly.li@clickview.com.au","userRole":{"id":"assistant-principal","name":"Assistant Principal"}},{"username":"Bort","name":"Cameron","surname":"Hill","email":"cameron.hill@clickview.com.au","userRole":{"id":"principal","name":"Principal"}},{"username":"jaynice","name":"Janice","surname":"Quach","email":"janice.quach@clickview.com.au","userRole":{"id":"head-of-science","name":"Head of Science"}},{"username":"bread","name":"Prad","surname":"Nepal","email":"prad.nepal@clickview.com.au","userRole":{"id":"head-of-conpiracy-theories","name":"Head of Conspiracy Theories"}}]')},835:function(e){e.exports=JSON.parse('[{"id":"teacher","name":"Teacher"},{"id":"assistant-principal","name":"Assistant Principal"},{"id":"principal","name":"Principal"},{"id":"head-of-science","name":"Head of Science"},{"id":"head-of-conpiracy-theories","name":"Head of Conspiracy Theories"}]')},871:function(e,a,t){"use strict";t.d(a,"a",(function(){return s}));var r=t(14),n=t(881),s={getAll:function(){return{url:"/api/domain/v1/yearlevels",key:"yearlevels",successResponse:function(){return r.a.Simulator.getAll("year:levels",n)}}}}},881:function(e){e.exports=JSON.parse('[{"id":"kindergarten","name":"Kindergarten"},{"id":"year-1","name":"Year 1"},{"id":"year-2","name":"Year 2"},{"id":"year-3","name":"Year 3"},{"id":"year-4","name":"Year 4"},{"id":"year-5","name":"Year 5"},{"id":"year-6","name":"Year 6"}]')},882:function(e,a,t){"use strict";t.d(a,"a",(function(){return n})),t.d(a,"b",(function(){return s}));var r=t(0),n=Object(r.createContext)(null);function s(e,a){switch(a.type){case"init":return a.payload;case"save":var t=a.payload;return{users:e.users.map((function(e){return e.lookupId!==t.lookupId?e:t})),invalidUsers:Object.keys(e.invalidUsers).reduce((function(a,r){return r!==t.lookupId&&(a[r]=e.invalidUsers[r]),a}),{})};case"delete":var r=a.payload;return{users:e.users.filter((function(e){return e.lookupId!==r.lookupId})),invalidUsers:Object.keys(e.invalidUsers).reduce((function(a,t){return t!==r.lookupId&&(a[t]=e.invalidUsers[t]),a}),{})};default:return e}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(window.webpackJsonp_clickview_lite=window.webpackJsonp_clickview_lite||[]).push([[39],{1291:function(e,t,n){"use strict";n.r(t),n.d(t,"EditUploadView",(function(){return f}));var r=n(0),a=n(153),i=n(7),o=n(996),c=n(238),l=n(824),u=n(28),s=n(40),m=n(3),d=i.a.encloseNamespace("upload.editUpload");function f(e){var t=e.uploadId,n=Object(a.a)(u.b.VideoUpload),f=Object(l.a)(),b=n.getCollection().get(t);b.get("editingMetadata")||b.set("editingMetadata",!0);var p=function(){b.set("editingMetadata",!1),e.closePopup()};return r.createElement(c.a,{closePopup:p,title:i.a.getPhrase("upload.editUpload","title")},r.createElement(o.a,{video:{name:b.get("name"),description:b.get("description"),productionYear:0},saveVideo:function(e){b.set(e),s.a.logUserAction(e,{location:m.j.Popup,actionType:m.n.Edit,workflowPhase:m.o.Complete,entity:m.d.Upload}),f.success(d("alertBody",{videoName:e.name})),p()},onClickCancel:p}))}},824:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(153),a=n(48),i=n(52),o=function(){var e=Object(r.a)(i.a.ALERT);return{success:function(t){e.success(t)()},error:function(t){e.error(t)()},warning:function(t){e.createAlert({type:a.a.Warning,heading:a.c.Warning,message:t})}}}},832:function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"b",(function(){return u}));var r=n(0),a=n(826),i=n(35),o=n(57),c=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function l(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,l=e.initialValues,u=e.onSubmit,s=e.resetOnSubmit,m=c(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit","resetOnSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function e(t){var n=o.a.deepClone(t);return Object.keys(n).forEach((function(t){n.hasOwnProperty(t)&&(o.a.isObject(n[t])?n[t]=e(n[t]):null===n[t]&&delete n[t])})),n}(l)):l,f={allowInitialSubmit:e.allowInitialSubmit};return r.createElement(a.d,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,r){var a=r.setSubmitting,i=r.resetForm,o=n&&e.validationSchema?e.validationSchema.cast(t):t;u(o,(function(){s&&i(),a(!1)}))},initialStatus:f}),i.a.isFunction(e.children)?function(t){return e.children(t)}:r.Children.count(e.children)?e.children:null)}function u(){return Object(a.f)()}l.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},842:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(826),a={getCustomFormControlClassName:function(e,t,n,a){var i="form-control";return Object(r.e)(t,n)&&Object(r.e)(e,n)&&(i+=" is-invalid"),a&&(i+=" ".concat(a)),i}}},851:function(e,t,n){"use strict";var r=n(0),a=n(826),i=n(33),o=n(35),c=n(842);function l(e){var t=Object(a.f)().values[e.fieldName];return"string"!=typeof t?r.createElement(r.Fragment,null):r.createElement("div",{className:"float-right text-muted"},t.length,"/",e.limit)}var u=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function s(e){var t=e.label,n=u(e,["label"]);return r.createElement(i.Form.Group,null,r.createElement("div",{className:"custom-control custom-checkbox"},r.createElement(d,Object.assign({className:"custom-control-input"},n)),r.createElement(i.Form.Label,{className:"custom-control-label",htmlFor:n.id},t)))}n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return f}));var m=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function d(e){var t=e.children,n=m(e,["children"]);return r.createElement(a.b,Object.assign({},n),o.a.isFunction(t)?function(e){return t(e)}:r.Children.count(t)?t:null)}function f(e){var t=e.label,n=e.className,o=e.showCharacterCounter,u=m(e,["label","className","showCharacterCounter"]),f=Object(a.f)(),b=f.errors,p=f.touched;return"checkbox"===u.type?r.createElement(s,Object.assign({},e)):r.createElement(i.Form.Group,null,!!t&&r.createElement(i.Form.Label,{htmlFor:u.id},t),r.createElement(d,Object.assign({className:c.a.getCustomFormControlClassName(b,p,u.name,n)},u)),!!o&&!!u.maxLength&&r.createElement(l,{fieldName:u.name,limit:u.maxLength}),r.createElement(a.a,{name:u.name},(function(e){return r.createElement(i.Form.Control.Feedback,{type:"invalid"},e)})))}},852:function(e,t,n){"use strict";var r=n(0),a=n(826);function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,a=!1,i=void 0;try{for(var o,c=e[Symbol.iterator]();!(r=(o=c.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,i=e}finally{try{r||null==c.return||c.return()}finally{if(a)throw i}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var c=n(246),l=n(73);n.d(t,"a",(function(){return u}));function u(e){var t=Object(a.f)(),n=function(e){var t,n=i(r.useState(!1),2),a=n[0],o=n[1];return r.useEffect((function(){var t;e.isValid&&(e.dirty||(null===(t=e.initialStatus)||void 0===t?void 0:t.allowInitialSubmit))?o(!0):o(!1)}),[e.isValid,null===(t=e.initialStatus)||void 0===t?void 0:t.allowInitialSubmit,e.dirty,e.values]),r.useEffect((function(){e.isSubmitting&&o(!1)}),[e.isSubmitting]),a}(t);r.useEffect((function(){function e(e){13===e.keyCode&&n&&t.validateForm().then((function(e){Object.keys(e).length||t.submitForm()}))}return window.addEventListener("keypress",e),function(){return window.removeEventListener("keypress",e)}}),[n]);var o="save";return e.isNew&&(o="create"),e.hasNext&&(o="next"),r.createElement(c.a,{variant:e.variant||"primary",showSpinner:t.isSubmitting,type:"submit",disabled:!n},e.submitText?r.createElement(r.Fragment,null,e.submitText):r.createElement(l.b,{namespace:"shared.formButtons",phrase:o}))}},996:function(e,t,n){"use strict";n.d(t,"a",(function(){return b}));var r=n(0),a=n(886),i=n(826),o=n(7),c=n(851),l=n(832),u=n(852),s=n(73),m="shared.editVideoDetails",d=a.object().shape({name:a.string().max(255,(function(){return o.a.getPhrase(m,"nameExceeds")})).required((function(){return o.a.getPhrase(m,"nameRequired")})),description:a.string().max(65535,(function(){return o.a.getPhrase(m,"descriptionExceeds")}))});function f(e){var t=Object(i.f)();return r.createElement(i.c,null,r.createElement(c.b,{label:o.a.getPhrase(m,"nameLabel"),type:"text",name:"name",id:"name",placeholder:o.a.getPhrase(m,"namePlaceholder"),autoFocus:!0,value:t.values.name}),r.createElement(c.b,{label:o.a.getPhrase(m,"descriptionLabel"),as:"textarea",name:"description",id:"description",placeholder:o.a.getPhrase(m,"descriptionPlaceholder"),autoFocus:!0,value:t.values.description}),r.createElement("div",{className:"btn-container d-flex justify-content-end"},r.createElement("button",{type:"button",className:"btn btn-link mr-2",onClick:e.onClickCancel},r.createElement(s.b,{namespace:m,phrase:"cancel"})),r.createElement(u.a,{isNew:!1})))}function b(e){var t=e.video,n=t.name,a=t.description,i=e.saveVideo,o=e.onClickCancel;return r.createElement(l.a,{initialValues:{name:n,description:a},validationSchema:d,onSubmit:i},r.createElement(f,{onClickCancel:o}))}}}]);
|
package/dist/scripts/39.chunk.js
CHANGED
|
@@ -270,7 +270,7 @@ function PlaylistSuggestionItem(props) {
|
|
|
270
270
|
className: svgContainerClassName,
|
|
271
271
|
title: title
|
|
272
272
|
}), react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", {
|
|
273
|
-
className: 'ml-2'
|
|
273
|
+
className: 'ml-2 text-break'
|
|
274
274
|
}, props.playlist.name));
|
|
275
275
|
}
|
|
276
276
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/playlists/utils/RecentPlaylistHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseAlerts.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseFetchAll.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseSelectAllPages.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/components/select-playlist/SelectPlaylist.tsx","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/components/select-playlist/select-playlist.scss","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/views/add-to-playlist/AddToPlaylistView.tsx"],"names":[],"mappings":"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","file":"scripts/39.chunk.js","sourcesContent":["import { StorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\n\r\nconst getCacheKey = (userId: string) => `recent:playlists:added:to:${userId}`;\r\n\r\nconst DEFAULT_STORAGE_LIMIT = 5;\r\n\r\ninterface AddRecentPlaylistsOptions {\r\n id: string;\r\n limit?: number;\r\n}\r\n\r\nexport const RecentPlaylistHelper = {\r\n /**\r\n * Get a list of ids of playlists recently added to.\r\n */\r\n getRecentlyAddedTo(userId: string, dataSource: StorageHelper): string[] {\r\n let recentlyAddedTo = dataSource.cacheGet(getCacheKey(userId));\r\n\r\n if (!Array.isArray(recentlyAddedTo))\r\n recentlyAddedTo = [];\r\n\r\n return recentlyAddedTo;\r\n },\r\n\r\n setRecentlyAddedTo(userId: string, ids: string[], dataSource: StorageHelper): void {\r\n if (!Array.isArray(ids))\r\n return;\r\n\r\n dataSource.cacheSet(getCacheKey(userId), ids);\r\n },\r\n\r\n addRecentlyAddedTo(userId: string, dataSource: StorageHelper, options: AddRecentPlaylistsOptions): string[] {\r\n const { id, limit = DEFAULT_STORAGE_LIMIT } = options;\r\n\r\n let recentlyAddedTo = RecentPlaylistHelper.getRecentlyAddedTo(userId, dataSource);\r\n\r\n const idIndex = recentlyAddedTo.indexOf(id);\r\n\r\n /**\r\n * If the playlists is already in the stored list, \r\n * remove it to first position so that it will be inserted\r\n * at the first position.\r\n */\r\n if (idIndex > -1)\r\n recentlyAddedTo.splice(idIndex, 1);\r\n\r\n recentlyAddedTo.unshift(id);\r\n\r\n if (recentlyAddedTo.length > limit)\r\n recentlyAddedTo = recentlyAddedTo.slice(0, limit);\r\n\r\n RecentPlaylistHelper.setRecentlyAddedTo(userId, recentlyAddedTo, dataSource);\r\n\r\n return recentlyAddedTo;\r\n }\r\n};","import { useService } from 'libs/common/react/hooks/UseService';\r\nimport { BaseAlertService, BaseAlert, BaseAlertOptions, AlertType, DefaultAlertHeading } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\n\r\nexport const useAlerts = () => {\r\n const alertService = useService<BaseAlertService>(CommonServices.ALERT);\r\n\r\n return {\r\n success(alertContent: string | BaseAlert | BaseAlertOptions): void {\r\n alertService.success(alertContent)();\r\n },\r\n error(alertContent: string | BaseAlert | BaseAlertOptions): void {\r\n alertService.error(alertContent)();\r\n },\r\n warning(alertContent: string): void {\r\n alertService.createAlert({\r\n type: AlertType.Warning,\r\n heading: DefaultAlertHeading.Warning,\r\n message: alertContent\r\n });\r\n }\r\n };\r\n};","import { useEffect } from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { useSelectAllPages } from './UseSelectAllPages';\r\n\r\n/**\r\n * Hook to fetch all pages of a collection.\r\n * \r\n * @param getRequest - callback function to get the request for each page.\r\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\r\n * \r\n * @param fetchNext - callback function to fetch a page.\r\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\r\n */\r\nexport function useFetchAll<T extends BaseObject>(\r\n getRequest: ((cursor?: string) => Flight.Request) | false,\r\n fetchNext: ((cursor?: string) => void) | false\r\n): void {\r\n const getRequestFn = (getRequest as Function);\r\n const fetchNextFn = (fetchNext as Function);\r\n\r\n const response = useSelectAllPages<T>(getRequest && ((cursor?: string) => getRequestFn(cursor).key));\r\n\r\n useEffect(() => {\r\n if (response.shouldInitialFetch && fetchNext)\r\n fetchNextFn();\r\n }, [ response.shouldInitialFetch, fetchNext ]);\r\n\r\n useEffect(() => {\r\n if (!response.nextCursor || response.isFetching || !fetchNext)\r\n return;\r\n\r\n fetchNextFn(response.nextCursor);\r\n }, [ response.nextCursor, response.isFetching, fetchNext ]);\r\n}","import { useMemo } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ApplicationState } from 'libs/common/react/interfaces';\r\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\r\n\r\nconst safeGetCursor = (request: Flight.Response<any>): string => {\r\n return request\r\n && request.data\r\n && request.data.pagination\r\n && request.data.pagination.cursors\r\n && request.data.pagination.cursors.next;\r\n};\r\n\r\ninterface SelectAllPagesResult<T> {\r\n items: T[];\r\n shouldInitialFetch: boolean;\r\n nextCursor: string;\r\n isFetching: boolean;\r\n}\r\n\r\n/**\r\n * Hook to select all pages of a collection from the store and flatten them.\r\n * It will not trigger any fetches.\r\n * \r\n * @param getKey - callback function to get the key for each page.\r\n * Can be false if the key requires data that hasn't yet been fetched - e.g. user id.\r\n */\r\nexport function useSelectAllPages<T>(getKey: ((cursor?: string) => string) | false): SelectAllPagesResult<T> {\r\n return useSelector(useMemo(() => (state: ApplicationState) => {\r\n const getKeyFn = (getKey as Function);\r\n\r\n let request = FunctionHelper.isFunction(getKey) &&\r\n Flight.getResponse<BasePaginatedCollection<T>>(state, getKeyFn());\r\n\r\n let isFetching = request && request.isFetching;\r\n const shouldInitialFetch = request && request.shouldFetch;\r\n\r\n let items = request && request.data && request.data.data;\r\n let nextCursor = safeGetCursor(request);\r\n\r\n // Retrieve all pages that are currently in the store.\r\n while (nextCursor) {\r\n request = Flight.getResponse<BasePaginatedCollection<T>>(state, getKeyFn(nextCursor));\r\n\r\n isFetching = request.isFetching;\r\n\r\n // If next page hasn't been fetched, break.\r\n if (request.shouldFetch)\r\n break;\r\n\r\n let newItems = request.data && request.data.data;\r\n newItems && items.push(...newItems);\r\n\r\n nextCursor = safeGetCursor(request);\r\n }\r\n\r\n return {\r\n shouldInitialFetch,\r\n items,\r\n nextCursor,\r\n isFetching,\r\n };\r\n }, [getKey]));\r\n}","import * as React from 'react';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\n\r\nimport { Playlist } from 'libs/shared/interfaces';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\r\nimport { RecentPlaylistHelper } from 'libs/shared/apps/playlists/utils/RecentPlaylistHelper';\r\n\r\nimport styles from './select-playlist.scss';\r\n\r\nconst namespace = 'playlists.selectPlaylist';\r\n\r\nconst RECENT_PLAYLISTS_LIMIT = 3;\r\n\r\ninterface PlaylistSuggestionItemProps {\r\n playlist: Playlist;\r\n isVideoInPlaylist?: (playlist: Playlist) => boolean;\r\n}\r\n\r\nfunction PlaylistSuggestionItem(props: PlaylistSuggestionItemProps): JSX.Element {\r\n const isVideoInPlaylist = FunctionHelper.isFunction(props.isVideoInPlaylist)\r\n && props.isVideoInPlaylist(props.playlist);\r\n\r\n const className = isVideoInPlaylist ? '' : 'cursor-pointer';\r\n\r\n const svgName = isVideoInPlaylist ? cvSvgLibrary.Check : cvSvgLibrary.Plus;\r\n\r\n let svgContainerClassName = 'd-inline-block svg-container';\r\n\r\n if (isVideoInPlaylist)\r\n svgContainerClassName += ' text-success';\r\n\r\n const title = isVideoInPlaylist ? 'This video is already in this playlist' : '';\r\n\r\n return (\r\n <span className={className}>\r\n <SvgContainer svgName={svgName} size={SvgContainerSize.Small} className={svgContainerClassName} title={title} />\r\n <span className='ml-2'>{props.playlist.name}</span>\r\n </span>\r\n );\r\n}\r\n\r\ninterface SelectPlaylistProps {\r\n playlists: Playlist[];\r\n currentUserId: string;\r\n onSelectPlaylist: (playlist: Playlist) => void;\r\n isVideoInPlaylist?: (playlist: Playlist) => boolean;\r\n createPlaylist?: (name: string) => void;\r\n}\r\n\r\nexport function SelectPlaylist(props: SelectPlaylistProps): JSX.Element {\r\n const [ query, setQuery ] = React.useState('');\r\n\r\n let containerClassName = '';\r\n\r\n if (query)\r\n containerClassName += ' border-bottom pb-2';\r\n\r\n const sortedPlaylists = ArrayHelper.sortBy(props.playlists, 'name');\r\n\r\n let recentlyAddedTo: Playlist[] | string[] =\r\n RecentPlaylistHelper.getRecentlyAddedTo(props.currentUserId, LocalStorageHelper);\r\n\r\n recentlyAddedTo = recentlyAddedTo.slice(0, RECENT_PLAYLISTS_LIMIT).map(id => props.playlists.find(p => p.id === id));\r\n\r\n return (\r\n <>\r\n <SearchBar\r\n onQueryChange={(q: string) => setQuery(q.trim())}\r\n onSuggestionSelected={props.onSelectPlaylist}\r\n updateQueryOnSelection={false}\r\n recentSearches={recentlyAddedTo}\r\n recentSearchHeading={LanguageService.getPhrase(namespace, 'recentPlaylistsHeading')}\r\n suggestionsHeading={LanguageService.getPhrase(namespace, 'suggestionsHeading')}\r\n local={sortedPlaylists}\r\n initialSuggestions={sortedPlaylists}\r\n activationLength={1}\r\n placeholder={LanguageService.getPhrase(namespace, 'placeholder')}\r\n theme={{\r\n container: containerClassName,\r\n suggestionsContainer: `mt-2 ${styles.suggestionContainer}`,\r\n suggestionsContainerOpen: '',\r\n suggestion: 'cursor-pointer py-1'\r\n }}\r\n searchIconPlacement='left'\r\n alwaysRenderSuggestions\r\n suggestionLimit={false}\r\n getSuggestionComponent={(playlist: Playlist) =>\r\n <PlaylistSuggestionItem playlist={playlist} isVideoInPlaylist={props.isVideoInPlaylist} />\r\n }\r\n autoFocusInput\r\n />\r\n {FunctionHelper.isFunction(props.createPlaylist) && !!query &&\r\n <div className='pt-2 text-break'>\r\n <span className='cursor-pointer' onClick={() => props.createPlaylist(query)}>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <Text namespace={namespace} phrase='createPlaylist' options={{ name: query }} />\r\n </span>\r\n </div>\r\n }\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"suggestionContainer\":\"cv--suggestionContainer--2omIR\"};","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Spinner } from 'react-bootstrap';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\nimport { AlertType } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\n\r\nimport { PopupViewProps, Video, Playlist, User } from 'libs/shared/interfaces';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\r\nimport { RecentPlaylistHelper } from 'libs/shared/apps/playlists/utils/RecentPlaylistHelper';\r\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\r\nimport { useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\r\nimport { PlaylistCollectionIdentifier } from 'libs/shared/apps/playlists/interfaces/identifiers/PlaylistCollectionIdentifier';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { EntityType, UserAction, WorkflowPhase, LocationContext, AssocDescriptor } from 'libs/analytics/interfaces';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests/VideoRequests';\r\n\r\nimport { SelectPlaylist } from 'apps/playlists/components/select-playlist/SelectPlaylist';\r\nimport { DefaultAlertHeading } from 'shared/constants/DefaultAlertHeading';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\n\r\nconst namespace = 'playlists.addToPlaylist';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nconst getPlaylistsRequest = (cursor?: string) =>\r\n PlaylistRequests.getUserPlaylists(new PlaylistCollectionIdentifier(PlaylistSortType.AtoZ, cursor));\r\n\r\nconst getVideoPlaylistsRequest = (videoId: string, userId: string) => (cursor?: string) =>\r\n PlaylistRequests.getVideoPlaylists(videoId, userId, cursor);\r\n\r\ninterface AddToPlaylistViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function AddToPlaylistView(props: AddToPlaylistViewProps & PopupViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const [ isSubmitting, setIsSubmitting ] = React.useState(false);\r\n\r\n const user = Flight.useBasicFetch<User>(UserRequests.currentUser());\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\r\n const playlists = useSelectAllPages<Playlist>((cursor?: string) => getPlaylistsRequest(cursor).key);\r\n const videoPlaylists = useSelectAllPages<Playlist>((cursor?: string) =>\r\n !!user.data && getVideoPlaylistsRequest(props.videoId, user.data.id)(cursor).key);\r\n\r\n const videoPlaylistIds = !!videoPlaylists.items && videoPlaylists.items.map(p => p.id);\r\n\r\n const fetchNextPlaylists = (cursor?: string) => {\r\n Flight.getFetch(dispatch, getPlaylistsRequest(cursor))();\r\n };\r\n\r\n const fetchNextVideoPlaylists = (cursor?: string) => {\r\n Flight.getFetch(dispatch, getVideoPlaylistsRequest(props.videoId, user.data.id)(cursor))();\r\n };\r\n\r\n useFetchAll(getPlaylistsRequest, fetchNextPlaylists);\r\n useFetchAll(\r\n !!user.data && getVideoPlaylistsRequest(props.videoId, user.data.id),\r\n !!user.data && fetchNextVideoPlaylists\r\n );\r\n\r\n const addToPlaylist = (playlist: Playlist, isNew?: boolean) => {\r\n setIsSubmitting(true);\r\n\r\n const onSuccess = () => {\r\n alerts.success({\r\n heading: DefaultAlertHeading.Success,\r\n type: AlertType.Success,\r\n message: getPhrase(isNew ? 'successNew' : 'success', { video: video.data.name, playlist: playlist.name }),\r\n appLink: {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLIST,\r\n args: [ playlist.id, TextHelper.slugify(playlist.name) ]\r\n },\r\n appLinkText: getPhrase('goToPlaylist', { playlist: playlist.name }),\r\n appLinkClassName: 'info-link'\r\n });\r\n\r\n AnalyticsHelper.logUserAction({ id: video.data.id, playlistId: playlist.id }, {\r\n actionType: UserAction.Associate,\r\n entity: EntityType.Video,\r\n descriptor: AssocDescriptor.Playlist,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n });\r\n\r\n props.closePopup();\r\n RecentPlaylistHelper.addRecentlyAddedTo(user.data.id, LocalStorageHelper, { id: playlist.id });\r\n };\r\n\r\n const onError = () => {\r\n alerts.error(getPhrase('addError', { video: video.data.name, playlist: playlist.name }));\r\n };\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.addToPlaylist(playlist.id, [props.videoId], onSuccess, onError));\r\n };\r\n\r\n const createPlaylist = (name: string) => {\r\n setIsSubmitting(true);\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.createPlaylist(user.data.id, { name }, (newPlaylist: Playlist) => {\r\n if (!newPlaylist || !newPlaylist.id)\r\n return;\r\n\r\n AnalyticsHelper.logUserAction({ id: newPlaylist.id }, {\r\n actionType: UserAction.Create,\r\n entity: EntityType.Playlist,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n });\r\n\r\n addToPlaylist(newPlaylist, true);\r\n }, () => {\r\n alerts.error(getPhrase('createError', { video: video.data.name, playlist: name }));\r\n props.closePopup();\r\n }));\r\n };\r\n\r\n const onSelectPlaylist = (playlist: Playlist) => {\r\n if (videoPlaylistIds.includes(playlist.id))\r\n return;\r\n\r\n addToPlaylist(playlist);\r\n };\r\n\r\n const dataLoaded = !!video.data\r\n && !!playlists.items\r\n && !playlists.nextCursor\r\n && !!user.data\r\n && !!videoPlaylists.items\r\n && !videoPlaylists.nextCursor;\r\n\r\n return (\r\n <Popup title={getPhrase('heading')} closePopup={props.closePopup} showLoadingSpinner={!dataLoaded} size='lg'>\r\n {dataLoaded &&\r\n <>\r\n <div className='mb-2'>\r\n <Text namespace={namespace} phrase='selectPlaylist' options={{ video: video.data.name }} />\r\n </div>\r\n {!isSubmitting\r\n ? <SelectPlaylist\r\n playlists={playlists.items}\r\n currentUserId={user.data.id}\r\n onSelectPlaylist={onSelectPlaylist}\r\n isVideoInPlaylist={(playlist: Playlist) => (videoPlaylistIds.includes(playlist.id))}\r\n createPlaylist={createPlaylist}\r\n />\r\n : <div className='text-center'>\r\n <Spinner as='span' animation='border' role='status' size='sm' />\r\n </div>\r\n }\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/playlists/utils/RecentPlaylistHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseAlerts.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseFetchAll.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseSelectAllPages.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/components/select-playlist/SelectPlaylist.tsx","webpack://@clickview/lite/./src/apps/playlists/components/select-playlist/select-playlist.scss?9042","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/views/add-to-playlist/AddToPlaylistView.tsx"],"names":[],"mappings":";;;;;;;;;;AAEA;AAAA;AAAA,IAAM,WAAW,GAAG,SAAd,WAAc,CAAC,MAAD;AAAA,6CAAiD,MAAjD;AAAA,CAApB;;AAEA,IAAM,qBAAqB,GAAG,CAA9B;AAOO,IAAM,oBAAoB,GAAG;AAClC;;;AAGA,oBAJkC,8BAIf,MAJe,EAIC,UAJD,EAI0B;AAC1D,QAAI,eAAe,GAAG,UAAU,CAAC,QAAX,CAAoB,WAAW,CAAC,MAAD,CAA/B,CAAtB;AAEA,QAAI,CAAC,KAAK,CAAC,OAAN,CAAc,eAAd,CAAL,EACE,eAAe,GAAG,EAAlB;AAEF,WAAO,eAAP;AACD,GAXiC;AAalC,oBAbkC,8BAaf,MAbe,EAaC,GAbD,EAagB,UAbhB,EAayC;AACzE,QAAI,CAAC,KAAK,CAAC,OAAN,CAAc,GAAd,CAAL,EACE;AAEF,cAAU,CAAC,QAAX,CAAoB,WAAW,CAAC,MAAD,CAA/B,EAAyC,GAAzC;AACD,GAlBiC;AAoBlC,oBApBkC,8BAoBf,MApBe,EAoBC,UApBD,EAoB4B,OApB5B,EAoB8D;AAAA,QACtF,EADsF,GAChD,OADgD,CACtF,EADsF;AAAA,yBAChD,OADgD,CAClF,KADkF;AAAA,QAClF,KADkF,+BAC1E,qBAD0E;AAG9F,QAAI,eAAe,GAAG,oBAAoB,CAAC,kBAArB,CAAwC,MAAxC,EAAgD,UAAhD,CAAtB;AAEA,QAAM,OAAO,GAAG,eAAe,CAAC,OAAhB,CAAwB,EAAxB,CAAhB;AAEA;;;;;;AAKA,QAAI,OAAO,GAAG,CAAC,CAAf,EACE,eAAe,CAAC,MAAhB,CAAuB,OAAvB,EAAgC,CAAhC;AAEF,mBAAe,CAAC,OAAhB,CAAwB,EAAxB;AAEA,QAAI,eAAe,CAAC,MAAhB,GAAyB,KAA7B,EACE,eAAe,GAAG,eAAe,CAAC,KAAhB,CAAsB,CAAtB,EAAyB,KAAzB,CAAlB;AAEF,wBAAoB,CAAC,kBAArB,CAAwC,MAAxC,EAAgD,eAAhD,EAAiE,UAAjE;AAEA,WAAO,eAAP;AACD;AA3CiC,CAA7B,C;;;;;;;;;;;;ACXP;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEO,IAAM,SAAS,GAAG,SAAZ,SAAY,GAAK;AAC5B,MAAM,YAAY,GAAG,qFAAU,CAAmB,4FAAc,CAAC,KAAlC,CAA/B;AAEA,SAAO;AACL,WADK,mBACG,YADH,EACsD;AACzD,kBAAY,CAAC,OAAb,CAAqB,YAArB;AACD,KAHI;AAIL,SAJK,iBAIC,YAJD,EAIoD;AACvD,kBAAY,CAAC,KAAb,CAAmB,YAAnB;AACD,KANI;AAOL,WAPK,mBAOG,YAPH,EAOuB;AAC1B,kBAAY,CAAC,WAAb,CAAyB;AACvB,YAAI,EAAE,wFAAS,CAAC,OADO;AAEvB,eAAO,EAAE,kGAAmB,CAAC,OAFN;AAGvB,eAAO,EAAE;AAHc,OAAzB;AAKD;AAbI,GAAP;AAeD,CAlBM,C;;;;;;;;;;;;ACJP;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAEA;;;;;;;;;;AASM,SAAU,WAAV,CACJ,UADI,EAEJ,SAFI,EAE0C;AAE9C,MAAM,YAAY,GAAI,UAAtB;AACA,MAAM,WAAW,GAAI,SAArB;AAEA,MAAM,QAAQ,GAAG,4EAAiB,CAAI,UAAU,IAAK,UAAC,MAAD;AAAA,WAAqB,YAAY,CAAC,MAAD,CAAZ,CAAqB,GAA1C;AAAA,GAAnB,CAAlC;AAEA,yDAAS,CAAC,YAAK;AACb,QAAI,QAAQ,CAAC,kBAAT,IAA+B,SAAnC,EACE,WAAW;AACd,GAHQ,EAGN,CAAE,QAAQ,CAAC,kBAAX,EAA+B,SAA/B,CAHM,CAAT;AAKA,yDAAS,CAAC,YAAK;AACb,QAAI,CAAC,QAAQ,CAAC,UAAV,IAAwB,QAAQ,CAAC,UAAjC,IAA+C,CAAC,SAApD,EACE;AAEF,eAAW,CAAC,QAAQ,CAAC,UAAV,CAAX;AACD,GALQ,EAKN,CAAE,QAAQ,CAAC,UAAX,EAAuB,QAAQ,CAAC,UAAhC,EAA4C,SAA5C,CALM,CAAT;AAMD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnCD;AACA;AAEA;AACA;;AAIA,IAAM,aAAa,GAAG,SAAhB,aAAgB,CAAC,OAAD,EAA0C;AAC9D,SAAO,OAAO,IACT,OAAO,CAAC,IADN,IAEF,OAAO,CAAC,IAAR,CAAa,UAFX,IAGF,OAAO,CAAC,IAAR,CAAa,UAAb,CAAwB,OAHtB,IAIF,OAAO,CAAC,IAAR,CAAa,UAAb,CAAwB,OAAxB,CAAgC,IAJrC;AAKD,CAND;AAeA;;;;;;;;;AAOM,SAAU,iBAAV,CAA+B,MAA/B,EAA4E;AAChF,SAAO,+DAAW,CAAC,qDAAO,CAAC;AAAA,WAAM,UAAC,KAAD,EAA4B;AAC3D,UAAM,QAAQ,GAAI,MAAlB;AAEA,UAAI,OAAO,GAAG,wFAAc,CAAC,UAAf,CAA0B,MAA1B,KACZ,wDAAM,CAAC,WAAP,CAA+C,KAA/C,EAAsD,QAAQ,EAA9D,CADF;AAGA,UAAI,UAAU,GAAG,OAAO,IAAI,OAAO,CAAC,UAApC;AACA,UAAM,kBAAkB,GAAG,OAAO,IAAI,OAAO,CAAC,WAA9C;AAEA,UAAI,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,IAAnB,IAA2B,OAAO,CAAC,IAAR,CAAa,IAApD;AACA,UAAI,UAAU,GAAG,aAAa,CAAC,OAAD,CAA9B,CAV2D,CAY3D;;AACA,aAAO,UAAP,EAAmB;AACjB,eAAO,GAAG,wDAAM,CAAC,WAAP,CAA+C,KAA/C,EAAsD,QAAQ,CAAC,UAAD,CAA9D,CAAV;AAEA,kBAAU,GAAG,OAAO,CAAC,UAArB,CAHiB,CAKjB;;AACA,YAAI,OAAO,CAAC,WAAZ,EACE;AAEF,YAAI,QAAQ,GAAG,OAAO,CAAC,IAAR,IAAgB,OAAO,CAAC,IAAR,CAAa,IAA5C;AACA,gBAAQ,IAAI,KAAK,CAAC,IAAN,YAAK,qBAAS,QAAT,EAAjB;AAEA,kBAAU,GAAG,aAAa,CAAC,OAAD,CAA1B;AACD;;AAED,aAAO;AACL,0BAAkB,EAAlB,kBADK;AAEL,aAAK,EAAL,KAFK;AAGL,kBAAU,EAAV,UAHK;AAIL,kBAAU,EAAV;AAJK,OAAP;AAMD,KAlC0B;AAAA,GAAD,EAkCvB,CAAC,MAAD,CAlCuB,CAAR,CAAlB;AAmCD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClED;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAEA,IAAM,SAAS,GAAG,0BAAlB;AAEA,IAAM,sBAAsB,GAAG,CAA/B;;AAOA,SAAS,sBAAT,CAAgC,KAAhC,EAAkE;AAChE,MAAM,iBAAiB,GAAG,6FAAc,CAAC,UAAf,CAA0B,KAAK,CAAC,iBAAhC,KACrB,KAAK,CAAC,iBAAN,CAAwB,KAAK,CAAC,QAA9B,CADL;AAGA,MAAM,SAAS,GAAG,iBAAiB,GAAG,EAAH,GAAQ,gBAA3C;AAEA,MAAM,OAAO,GAAG,iBAAiB,GAAG,6EAAY,CAAC,KAAhB,GAAwB,6EAAY,CAAC,IAAtE;AAEA,MAAI,qBAAqB,GAAG,8BAA5B;AAEA,MAAI,iBAAJ,EACE,qBAAqB,IAAI,eAAzB;AAEF,MAAM,KAAK,GAAG,iBAAiB,GAAG,wCAAH,GAA8C,EAA7E;AAEA,SACE;AAAM,aAAS,EAAE;AAAjB,KACE,oDAAC,mGAAD,EAAa;AAAC,WAAO,EAAE,OAAV;AAAmB,QAAI,EAAE,uGAAgB,CAAC,KAA1C;AAAiD,aAAS,EAAE,qBAA5D;AAAmF,SAAK,EAAE;AAA1F,GAAb,CADF,EAEE;AAAM,aAAS,EAAC;AAAhB,KAAmC,KAAK,CAAC,QAAN,CAAe,IAAlD,CAFF,CADF;AAMD;;AAUK,SAAU,cAAV,CAAyB,KAAzB,EAAmD;AAAA,wBAC3B,+CAAe,EAAf,CAD2B;AAAA;AAAA,MAC/C,KAD+C;AAAA,MACxC,QADwC;;AAGvD,MAAI,kBAAkB,GAAG,EAAzB;AAEA,MAAI,KAAJ,EACE,kBAAkB,IAAI,qBAAtB;AAEF,MAAM,eAAe,GAAG,oFAAW,CAAC,MAAZ,CAAmB,KAAK,CAAC,SAAzB,EAAoC,MAApC,CAAxB;AAEA,MAAI,eAAe,GACjB,+GAAoB,CAAC,kBAArB,CAAwC,KAAK,CAAC,aAA9C,EAA6D,qGAA7D,CADF;AAGA,iBAAe,GAAG,eAAe,CAAC,KAAhB,CAAsB,CAAtB,EAAyB,sBAAzB,EAAiD,GAAjD,CAAqD,YAAE;AAAA,WAAI,KAAK,CAAC,SAAN,CAAgB,IAAhB,CAAqB,WAAC;AAAA,aAAI,CAAC,CAAC,EAAF,KAAS,EAAb;AAAA,KAAtB,CAAJ;AAAA,GAAvD,CAAlB;AAEA,SACE,0GACE,oDAAC,0FAAD,EAAU;AACR,iBAAa,EAAE,uBAAC,CAAD;AAAA,aAAe,QAAQ,CAAC,CAAC,CAAC,IAAF,EAAD,CAAvB;AAAA,KADP;AAER,wBAAoB,EAAE,KAAK,CAAC,gBAFpB;AAGR,0BAAsB,EAAE,KAHhB;AAIR,kBAAc,EAAE,eAJR;AAKR,uBAAmB,EAAE,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,wBAArC,CALb;AAMR,sBAAkB,EAAE,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,oBAArC,CANZ;AAOR,SAAK,EAAE,eAPC;AAQR,sBAAkB,EAAE,eARZ;AASR,oBAAgB,EAAE,CATV;AAUR,eAAW,EAAE,kGAAe,CAAC,SAAhB,CAA0B,SAA1B,EAAqC,aAArC,CAVL;AAWR,SAAK,EAAE;AACL,eAAS,EAAE,kBADN;AAEL,0BAAoB,iBAAU,6DAAM,CAAC,mBAAjB,CAFf;AAGL,8BAAwB,EAAE,EAHrB;AAIL,gBAAU,EAAE;AAJP,KAXC;AAiBR,uBAAmB,EAAC,MAjBZ;AAkBR,2BAAuB,MAlBf;AAmBR,mBAAe,EAAE,KAnBT;AAoBR,0BAAsB,EAAE,gCAAC,QAAD;AAAA,aACtB,oDAAC,sBAAD,EAAuB;AAAC,gBAAQ,EAAE,QAAX;AAAqB,yBAAiB,EAAE,KAAK,CAAC;AAA9C,OAAvB,CADsB;AAAA,KApBhB;AAuBR,kBAAc;AAvBN,GAAV,CADF,EA0BG,6FAAc,CAAC,UAAf,CAA0B,KAAK,CAAC,cAAhC,KAAmD,CAAC,CAAC,KAArD,IACC;AAAK,aAAS,EAAC;AAAf,KACE;AAAM,aAAS,EAAC,gBAAhB;AAAiC,WAAO,EAAE;AAAA,aAAM,KAAK,CAAC,cAAN,CAAqB,KAArB,CAAN;AAAA;AAA1C,KACE,oDAAC,mGAAD,EAAa;AAAC,WAAO,EAAE,6EAAY,CAAC,IAAvB;AAA6B,QAAI,EAAE,uGAAgB,CAAC;AAApD,GAAb,CADF,EAEE,oDAAC,0EAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC,gBAA9B;AAA+C,WAAO,EAAE;AAAE,UAAI,EAAE;AAAR;AAAxD,GAAL,CAFF,CADF,CA3BJ,CADF;AAqCD,C;;;;;;;;;;;AC5GD;AACA,kBAAkB,wD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDlB;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA,IAAM,SAAS,GAAG,yBAAlB;AACA,IAAM,SAAS,GAAG,kGAAe,CAAC,gBAAhB,CAAiC,SAAjC,CAAlB;;AAEA,IAAM,mBAAmB,GAAG,SAAtB,mBAAsB,CAAC,MAAD;AAAA,SAC1B,mGAAgB,CAAC,gBAAjB,CAAkC,IAAI,iJAAJ,CAAiC,wGAAgB,CAAC,IAAlD,EAAwD,MAAxD,CAAlC,CAD0B;AAAA,CAA5B;;AAGA,IAAM,wBAAwB,GAAG,SAA3B,wBAA2B,CAAC,OAAD,EAAkB,MAAlB;AAAA,SAAqC,UAAC,MAAD;AAAA,WACpE,mGAAgB,CAAC,iBAAjB,CAAmC,OAAnC,EAA4C,MAA5C,EAAoD,MAApD,CADoE;AAAA,GAArC;AAAA,CAAjC;;AAOM,SAAU,iBAAV,CAA4B,KAA5B,EAA0E;AAC9E,MAAM,QAAQ,GAAG,+DAAW,EAA5B;AACA,MAAM,MAAM,GAAG,mFAAS,EAAxB;;AAF8E,wBAIpC,+CAAe,KAAf,CAJoC;AAAA;AAAA,MAItE,YAJsE;AAAA,MAIxD,eAJwD;;AAM9E,MAAM,IAAI,GAAG,6DAAM,CAAC,aAAP,CAA2B,2FAAY,CAAC,WAAb,EAA3B,CAAb;AACA,MAAM,KAAK,GAAG,6DAAM,CAAC,aAAP,CAA4B,mFAAa,CAAC,KAAd,CAAoB,KAAK,CAAC,OAA1B,CAA5B,CAAd;AACA,MAAM,SAAS,GAAG,mGAAiB,CAAW,UAAC,MAAD;AAAA,WAAqB,mBAAmB,CAAC,MAAD,CAAnB,CAA4B,GAAjD;AAAA,GAAX,CAAnC;AACA,MAAM,cAAc,GAAG,mGAAiB,CAAW,UAAC,MAAD;AAAA,WACjD,CAAC,CAAC,IAAI,CAAC,IAAP,IAAe,wBAAwB,CAAC,KAAK,CAAC,OAAP,EAAgB,IAAI,CAAC,IAAL,CAAU,EAA1B,CAAxB,CAAsD,MAAtD,EAA8D,GAD5B;AAAA,GAAX,CAAxC;AAGA,MAAM,gBAAgB,GAAG,CAAC,CAAC,cAAc,CAAC,KAAjB,IAA0B,cAAc,CAAC,KAAf,CAAqB,GAArB,CAAyB,WAAC;AAAA,WAAI,CAAC,CAAC,EAAN;AAAA,GAA1B,CAAnD;;AAEA,MAAM,kBAAkB,GAAG,SAArB,kBAAqB,CAAC,MAAD,EAAoB;AAC7C,iEAAM,CAAC,QAAP,CAAgB,QAAhB,EAA0B,mBAAmB,CAAC,MAAD,CAA7C;AACD,GAFD;;AAIA,MAAM,uBAAuB,GAAG,SAA1B,uBAA0B,CAAC,MAAD,EAAoB;AAClD,iEAAM,CAAC,QAAP,CAAgB,QAAhB,EAA0B,wBAAwB,CAAC,KAAK,CAAC,OAAP,EAAgB,IAAI,CAAC,IAAL,CAAU,EAA1B,CAAxB,CAAsD,MAAtD,CAA1B;AACD,GAFD;;AAIA,yFAAW,CAAC,mBAAD,EAAsB,kBAAtB,CAAX;AACA,yFAAW,CACT,CAAC,CAAC,IAAI,CAAC,IAAP,IAAe,wBAAwB,CAAC,KAAK,CAAC,OAAP,EAAgB,IAAI,CAAC,IAAL,CAAU,EAA1B,CAD9B,EAET,CAAC,CAAC,IAAI,CAAC,IAAP,IAAe,uBAFN,CAAX;;AAKA,MAAM,aAAa,GAAG,SAAhB,aAAgB,CAAC,QAAD,EAAqB,KAArB,EAAwC;AAC5D,mBAAe,CAAC,IAAD,CAAf;;AAEA,QAAM,SAAS,GAAG,SAAZ,SAAY,GAAK;AACrB,YAAM,CAAC,OAAP,CAAe;AACb,eAAO,EAAE,yFAAmB,CAAC,OADhB;AAEb,YAAI,EAAE,6FAAS,CAAC,OAFH;AAGb,eAAO,EAAE,SAAS,CAAC,KAAK,GAAG,YAAH,GAAkB,SAAxB,EAAmC;AAAE,eAAK,EAAE,KAAK,CAAC,IAAN,CAAW,IAApB;AAA0B,kBAAQ,EAAE,QAAQ,CAAC;AAA7C,SAAnC,CAHL;AAIb,eAAO,EAAE;AACP,qBAAW,EAAE,+EAAW,CAAC,SADlB;AAEP,gBAAM,EAAE,qEAAO,CAAC,SAAR,CAAkB,QAFnB;AAGP,cAAI,EAAE,CAAE,QAAQ,CAAC,EAAX,EAAe,kFAAU,CAAC,OAAX,CAAmB,QAAQ,CAAC,IAA5B,CAAf;AAHC,SAJI;AASb,mBAAW,EAAE,SAAS,CAAC,cAAD,EAAiB;AAAE,kBAAQ,EAAE,QAAQ,CAAC;AAArB,SAAjB,CATT;AAUb,wBAAgB,EAAE;AAVL,OAAf;AAaA,0FAAe,CAAC,aAAhB,CAA8B;AAAE,UAAE,EAAE,KAAK,CAAC,IAAN,CAAW,EAAjB;AAAqB,kBAAU,EAAE,QAAQ,CAAC;AAA1C,OAA9B,EAA8E;AAC5E,kBAAU,EAAE,0EAAU,CAAC,SADqD;AAE5E,cAAM,EAAE,0EAAU,CAAC,KAFyD;AAG5E,kBAAU,EAAE,+EAAe,CAAC,QAHgD;AAI5E,qBAAa,EAAE,6EAAa,CAAC,QAJ+C;AAK5E,gBAAQ,EAAE,+EAAe,CAAC;AALkD,OAA9E;AAQA,WAAK,CAAC,UAAN;AACA,sHAAoB,CAAC,kBAArB,CAAwC,IAAI,CAAC,IAAL,CAAU,EAAlD,EAAsD,qGAAtD,EAA0E;AAAE,UAAE,EAAE,QAAQ,CAAC;AAAf,OAA1E;AACD,KAxBD;;AA0BA,QAAM,OAAO,GAAG,SAAV,OAAU,GAAK;AACnB,YAAM,CAAC,KAAP,CAAa,SAAS,CAAC,UAAD,EAAa;AAAE,aAAK,EAAE,KAAK,CAAC,IAAN,CAAW,IAApB;AAA0B,gBAAQ,EAAE,QAAQ,CAAC;AAA7C,OAAb,CAAtB;AACD,KAFD;;AAIA,iEAAM,CAAC,KAAP,CAAa,QAAb,EAAuB,mGAAgB,CAAC,aAAjB,CAA+B,QAAQ,CAAC,EAAxC,EAA4C,CAAC,KAAK,CAAC,OAAP,CAA5C,EAA6D,SAA7D,EAAwE,OAAxE,CAAvB;AACD,GAlCD;;AAoCA,MAAM,cAAc,GAAG,SAAjB,cAAiB,CAAC,IAAD,EAAiB;AACtC,mBAAe,CAAC,IAAD,CAAf;AAEA,iEAAM,CAAC,KAAP,CAAa,QAAb,EAAuB,mGAAgB,CAAC,cAAjB,CAAgC,IAAI,CAAC,IAAL,CAAU,EAA1C,EAA8C;AAAE,UAAI,EAAJ;AAAF,KAA9C,EAAwD,UAAC,WAAD,EAA0B;AACvG,UAAI,CAAC,WAAD,IAAgB,CAAC,WAAW,CAAC,EAAjC,EACE;AAEF,0FAAe,CAAC,aAAhB,CAA8B;AAAE,UAAE,EAAE,WAAW,CAAC;AAAlB,OAA9B,EAAsD;AACpD,kBAAU,EAAE,0EAAU,CAAC,MAD6B;AAEpD,cAAM,EAAE,0EAAU,CAAC,QAFiC;AAGpD,qBAAa,EAAE,6EAAa,CAAC,QAHuB;AAIpD,gBAAQ,EAAE,+EAAe,CAAC;AAJ0B,OAAtD;AAOA,mBAAa,CAAC,WAAD,EAAc,IAAd,CAAb;AACD,KAZsB,EAYpB,YAAK;AACN,YAAM,CAAC,KAAP,CAAa,SAAS,CAAC,aAAD,EAAgB;AAAE,aAAK,EAAE,KAAK,CAAC,IAAN,CAAW,IAApB;AAA0B,gBAAQ,EAAE;AAApC,OAAhB,CAAtB;AACA,WAAK,CAAC,UAAN;AACD,KAfsB,CAAvB;AAgBD,GAnBD;;AAqBA,MAAM,gBAAgB,GAAG,SAAnB,gBAAmB,CAAC,QAAD,EAAuB;AAC9C,QAAI,gBAAgB,CAAC,QAAjB,CAA0B,QAAQ,CAAC,EAAnC,CAAJ,EACE;AAEF,iBAAa,CAAC,QAAD,CAAb;AACD,GALD;;AAOA,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,IAAR,IACd,CAAC,CAAC,SAAS,CAAC,KADE,IAEd,CAAC,SAAS,CAAC,UAFG,IAGd,CAAC,CAAC,IAAI,CAAC,IAHO,IAId,CAAC,CAAC,cAAc,CAAC,KAJH,IAKd,CAAC,cAAc,CAAC,UALrB;AAOA,SACE,oDAAC,6EAAD,EAAM;AAAC,SAAK,EAAE,SAAS,CAAC,SAAD,CAAjB;AAA8B,cAAU,EAAE,KAAK,CAAC,UAAhD;AAA4D,sBAAkB,EAAE,CAAC,UAAjF;AAA6F,QAAI,EAAC;AAAlG,GAAN,EACG,UAAU,IACT,0GACE;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,0EAAD,EAAK;AAAC,aAAS,EAAE,SAAZ;AAAuB,UAAM,EAAC,gBAA9B;AAA+C,WAAO,EAAE;AAAE,WAAK,EAAE,KAAK,CAAC,IAAN,CAAW;AAApB;AAAxD,GAAL,CADF,CADF,EAIG,CAAC,YAAD,GACG,oDAAC,wGAAD,EAAe;AACb,aAAS,EAAE,SAAS,CAAC,KADR;AAEb,iBAAa,EAAE,IAAI,CAAC,IAAL,CAAU,EAFZ;AAGb,oBAAgB,EAAE,gBAHL;AAIb,qBAAiB,EAAE,2BAAC,QAAD;AAAA,aAAyB,gBAAgB,CAAC,QAAjB,CAA0B,QAAQ,CAAC,EAAnC,CAAzB;AAAA,KAJN;AAKb,kBAAc,EAAE;AALH,GAAf,CADH,GAQG;AAAK,aAAS,EAAC;AAAf,KACE,oDAAC,uDAAD,EAAQ;AAAC,MAAE,EAAC,MAAJ;AAAW,aAAS,EAAC,QAArB;AAA8B,QAAI,EAAC,QAAnC;AAA4C,QAAI,EAAC;AAAjD,GAAR,CADF,CAZN,CAFJ,CADF;AAuBD,C","file":"scripts/39.chunk.js","sourcesContent":["import { StorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\n\r\nconst getCacheKey = (userId: string) => `recent:playlists:added:to:${userId}`;\r\n\r\nconst DEFAULT_STORAGE_LIMIT = 5;\r\n\r\ninterface AddRecentPlaylistsOptions {\r\n id: string;\r\n limit?: number;\r\n}\r\n\r\nexport const RecentPlaylistHelper = {\r\n /**\r\n * Get a list of ids of playlists recently added to.\r\n */\r\n getRecentlyAddedTo(userId: string, dataSource: StorageHelper): string[] {\r\n let recentlyAddedTo = dataSource.cacheGet(getCacheKey(userId));\r\n\r\n if (!Array.isArray(recentlyAddedTo))\r\n recentlyAddedTo = [];\r\n\r\n return recentlyAddedTo;\r\n },\r\n\r\n setRecentlyAddedTo(userId: string, ids: string[], dataSource: StorageHelper): void {\r\n if (!Array.isArray(ids))\r\n return;\r\n\r\n dataSource.cacheSet(getCacheKey(userId), ids);\r\n },\r\n\r\n addRecentlyAddedTo(userId: string, dataSource: StorageHelper, options: AddRecentPlaylistsOptions): string[] {\r\n const { id, limit = DEFAULT_STORAGE_LIMIT } = options;\r\n\r\n let recentlyAddedTo = RecentPlaylistHelper.getRecentlyAddedTo(userId, dataSource);\r\n\r\n const idIndex = recentlyAddedTo.indexOf(id);\r\n\r\n /**\r\n * If the playlists is already in the stored list, \r\n * remove it to first position so that it will be inserted\r\n * at the first position.\r\n */\r\n if (idIndex > -1)\r\n recentlyAddedTo.splice(idIndex, 1);\r\n\r\n recentlyAddedTo.unshift(id);\r\n\r\n if (recentlyAddedTo.length > limit)\r\n recentlyAddedTo = recentlyAddedTo.slice(0, limit);\r\n\r\n RecentPlaylistHelper.setRecentlyAddedTo(userId, recentlyAddedTo, dataSource);\r\n\r\n return recentlyAddedTo;\r\n }\r\n};","import { useService } from 'libs/common/react/hooks/UseService';\r\nimport { BaseAlertService, BaseAlert, BaseAlertOptions, AlertType, DefaultAlertHeading } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\n\r\nexport const useAlerts = () => {\r\n const alertService = useService<BaseAlertService>(CommonServices.ALERT);\r\n\r\n return {\r\n success(alertContent: string | BaseAlert | BaseAlertOptions): void {\r\n alertService.success(alertContent)();\r\n },\r\n error(alertContent: string | BaseAlert | BaseAlertOptions): void {\r\n alertService.error(alertContent)();\r\n },\r\n warning(alertContent: string): void {\r\n alertService.createAlert({\r\n type: AlertType.Warning,\r\n heading: DefaultAlertHeading.Warning,\r\n message: alertContent\r\n });\r\n }\r\n };\r\n};","import { useEffect } from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { useSelectAllPages } from './UseSelectAllPages';\r\n\r\n/**\r\n * Hook to fetch all pages of a collection.\r\n * \r\n * @param getRequest - callback function to get the request for each page.\r\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\r\n * \r\n * @param fetchNext - callback function to fetch a page.\r\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\r\n */\r\nexport function useFetchAll<T extends BaseObject>(\r\n getRequest: ((cursor?: string) => Flight.Request) | false,\r\n fetchNext: ((cursor?: string) => void) | false\r\n): void {\r\n const getRequestFn = (getRequest as Function);\r\n const fetchNextFn = (fetchNext as Function);\r\n\r\n const response = useSelectAllPages<T>(getRequest && ((cursor?: string) => getRequestFn(cursor).key));\r\n\r\n useEffect(() => {\r\n if (response.shouldInitialFetch && fetchNext)\r\n fetchNextFn();\r\n }, [ response.shouldInitialFetch, fetchNext ]);\r\n\r\n useEffect(() => {\r\n if (!response.nextCursor || response.isFetching || !fetchNext)\r\n return;\r\n\r\n fetchNextFn(response.nextCursor);\r\n }, [ response.nextCursor, response.isFetching, fetchNext ]);\r\n}","import { useMemo } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ApplicationState } from 'libs/common/react/interfaces';\r\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\r\n\r\nconst safeGetCursor = (request: Flight.Response<any>): string => {\r\n return request\r\n && request.data\r\n && request.data.pagination\r\n && request.data.pagination.cursors\r\n && request.data.pagination.cursors.next;\r\n};\r\n\r\ninterface SelectAllPagesResult<T> {\r\n items: T[];\r\n shouldInitialFetch: boolean;\r\n nextCursor: string;\r\n isFetching: boolean;\r\n}\r\n\r\n/**\r\n * Hook to select all pages of a collection from the store and flatten them.\r\n * It will not trigger any fetches.\r\n * \r\n * @param getKey - callback function to get the key for each page.\r\n * Can be false if the key requires data that hasn't yet been fetched - e.g. user id.\r\n */\r\nexport function useSelectAllPages<T>(getKey: ((cursor?: string) => string) | false): SelectAllPagesResult<T> {\r\n return useSelector(useMemo(() => (state: ApplicationState) => {\r\n const getKeyFn = (getKey as Function);\r\n\r\n let request = FunctionHelper.isFunction(getKey) &&\r\n Flight.getResponse<BasePaginatedCollection<T>>(state, getKeyFn());\r\n\r\n let isFetching = request && request.isFetching;\r\n const shouldInitialFetch = request && request.shouldFetch;\r\n\r\n let items = request && request.data && request.data.data;\r\n let nextCursor = safeGetCursor(request);\r\n\r\n // Retrieve all pages that are currently in the store.\r\n while (nextCursor) {\r\n request = Flight.getResponse<BasePaginatedCollection<T>>(state, getKeyFn(nextCursor));\r\n\r\n isFetching = request.isFetching;\r\n\r\n // If next page hasn't been fetched, break.\r\n if (request.shouldFetch)\r\n break;\r\n\r\n let newItems = request.data && request.data.data;\r\n newItems && items.push(...newItems);\r\n\r\n nextCursor = safeGetCursor(request);\r\n }\r\n\r\n return {\r\n shouldInitialFetch,\r\n items,\r\n nextCursor,\r\n isFetching,\r\n };\r\n }, [getKey]));\r\n}","import * as React from 'react';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\n\r\nimport { Playlist } from 'libs/shared/interfaces';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\r\nimport { RecentPlaylistHelper } from 'libs/shared/apps/playlists/utils/RecentPlaylistHelper';\r\n\r\nimport styles from './select-playlist.scss';\r\n\r\nconst namespace = 'playlists.selectPlaylist';\r\n\r\nconst RECENT_PLAYLISTS_LIMIT = 3;\r\n\r\ninterface PlaylistSuggestionItemProps {\r\n playlist: Playlist;\r\n isVideoInPlaylist?: (playlist: Playlist) => boolean;\r\n}\r\n\r\nfunction PlaylistSuggestionItem(props: PlaylistSuggestionItemProps): JSX.Element {\r\n const isVideoInPlaylist = FunctionHelper.isFunction(props.isVideoInPlaylist)\r\n && props.isVideoInPlaylist(props.playlist);\r\n\r\n const className = isVideoInPlaylist ? '' : 'cursor-pointer';\r\n\r\n const svgName = isVideoInPlaylist ? cvSvgLibrary.Check : cvSvgLibrary.Plus;\r\n\r\n let svgContainerClassName = 'd-inline-block svg-container';\r\n\r\n if (isVideoInPlaylist)\r\n svgContainerClassName += ' text-success';\r\n\r\n const title = isVideoInPlaylist ? 'This video is already in this playlist' : '';\r\n\r\n return (\r\n <span className={className}>\r\n <SvgContainer svgName={svgName} size={SvgContainerSize.Small} className={svgContainerClassName} title={title} />\r\n <span className='ml-2 text-break'>{props.playlist.name}</span>\r\n </span>\r\n );\r\n}\r\n\r\ninterface SelectPlaylistProps {\r\n playlists: Playlist[];\r\n currentUserId: string;\r\n onSelectPlaylist: (playlist: Playlist) => void;\r\n isVideoInPlaylist?: (playlist: Playlist) => boolean;\r\n createPlaylist?: (name: string) => void;\r\n}\r\n\r\nexport function SelectPlaylist(props: SelectPlaylistProps): JSX.Element {\r\n const [ query, setQuery ] = React.useState('');\r\n\r\n let containerClassName = '';\r\n\r\n if (query)\r\n containerClassName += ' border-bottom pb-2';\r\n\r\n const sortedPlaylists = ArrayHelper.sortBy(props.playlists, 'name');\r\n\r\n let recentlyAddedTo: Playlist[] | string[] =\r\n RecentPlaylistHelper.getRecentlyAddedTo(props.currentUserId, LocalStorageHelper);\r\n\r\n recentlyAddedTo = recentlyAddedTo.slice(0, RECENT_PLAYLISTS_LIMIT).map(id => props.playlists.find(p => p.id === id));\r\n\r\n return (\r\n <>\r\n <SearchBar\r\n onQueryChange={(q: string) => setQuery(q.trim())}\r\n onSuggestionSelected={props.onSelectPlaylist}\r\n updateQueryOnSelection={false}\r\n recentSearches={recentlyAddedTo}\r\n recentSearchHeading={LanguageService.getPhrase(namespace, 'recentPlaylistsHeading')}\r\n suggestionsHeading={LanguageService.getPhrase(namespace, 'suggestionsHeading')}\r\n local={sortedPlaylists}\r\n initialSuggestions={sortedPlaylists}\r\n activationLength={1}\r\n placeholder={LanguageService.getPhrase(namespace, 'placeholder')}\r\n theme={{\r\n container: containerClassName,\r\n suggestionsContainer: `mt-2 ${styles.suggestionContainer}`,\r\n suggestionsContainerOpen: '',\r\n suggestion: 'cursor-pointer py-1'\r\n }}\r\n searchIconPlacement='left'\r\n alwaysRenderSuggestions\r\n suggestionLimit={false}\r\n getSuggestionComponent={(playlist: Playlist) =>\r\n <PlaylistSuggestionItem playlist={playlist} isVideoInPlaylist={props.isVideoInPlaylist} />\r\n }\r\n autoFocusInput\r\n />\r\n {FunctionHelper.isFunction(props.createPlaylist) && !!query &&\r\n <div className='pt-2 text-break'>\r\n <span className='cursor-pointer' onClick={() => props.createPlaylist(query)}>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <Text namespace={namespace} phrase='createPlaylist' options={{ name: query }} />\r\n </span>\r\n </div>\r\n }\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"suggestionContainer\":\"cv--suggestionContainer--2omIR\"};","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Spinner } from 'react-bootstrap';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\nimport { AlertType } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\n\r\nimport { PopupViewProps, Video, Playlist, User } from 'libs/shared/interfaces';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\r\nimport { RecentPlaylistHelper } from 'libs/shared/apps/playlists/utils/RecentPlaylistHelper';\r\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\r\nimport { useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\r\nimport { PlaylistCollectionIdentifier } from 'libs/shared/apps/playlists/interfaces/identifiers/PlaylistCollectionIdentifier';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { EntityType, UserAction, WorkflowPhase, LocationContext, AssocDescriptor } from 'libs/analytics/interfaces';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests/VideoRequests';\r\n\r\nimport { SelectPlaylist } from 'apps/playlists/components/select-playlist/SelectPlaylist';\r\nimport { DefaultAlertHeading } from 'shared/constants/DefaultAlertHeading';\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\n\r\nconst namespace = 'playlists.addToPlaylist';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nconst getPlaylistsRequest = (cursor?: string) =>\r\n PlaylistRequests.getUserPlaylists(new PlaylistCollectionIdentifier(PlaylistSortType.AtoZ, cursor));\r\n\r\nconst getVideoPlaylistsRequest = (videoId: string, userId: string) => (cursor?: string) =>\r\n PlaylistRequests.getVideoPlaylists(videoId, userId, cursor);\r\n\r\ninterface AddToPlaylistViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function AddToPlaylistView(props: AddToPlaylistViewProps & PopupViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const [ isSubmitting, setIsSubmitting ] = React.useState(false);\r\n\r\n const user = Flight.useBasicFetch<User>(UserRequests.currentUser());\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\r\n const playlists = useSelectAllPages<Playlist>((cursor?: string) => getPlaylistsRequest(cursor).key);\r\n const videoPlaylists = useSelectAllPages<Playlist>((cursor?: string) =>\r\n !!user.data && getVideoPlaylistsRequest(props.videoId, user.data.id)(cursor).key);\r\n\r\n const videoPlaylistIds = !!videoPlaylists.items && videoPlaylists.items.map(p => p.id);\r\n\r\n const fetchNextPlaylists = (cursor?: string) => {\r\n Flight.getFetch(dispatch, getPlaylistsRequest(cursor))();\r\n };\r\n\r\n const fetchNextVideoPlaylists = (cursor?: string) => {\r\n Flight.getFetch(dispatch, getVideoPlaylistsRequest(props.videoId, user.data.id)(cursor))();\r\n };\r\n\r\n useFetchAll(getPlaylistsRequest, fetchNextPlaylists);\r\n useFetchAll(\r\n !!user.data && getVideoPlaylistsRequest(props.videoId, user.data.id),\r\n !!user.data && fetchNextVideoPlaylists\r\n );\r\n\r\n const addToPlaylist = (playlist: Playlist, isNew?: boolean) => {\r\n setIsSubmitting(true);\r\n\r\n const onSuccess = () => {\r\n alerts.success({\r\n heading: DefaultAlertHeading.Success,\r\n type: AlertType.Success,\r\n message: getPhrase(isNew ? 'successNew' : 'success', { video: video.data.name, playlist: playlist.name }),\r\n appLink: {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLIST,\r\n args: [ playlist.id, TextHelper.slugify(playlist.name) ]\r\n },\r\n appLinkText: getPhrase('goToPlaylist', { playlist: playlist.name }),\r\n appLinkClassName: 'info-link'\r\n });\r\n\r\n AnalyticsHelper.logUserAction({ id: video.data.id, playlistId: playlist.id }, {\r\n actionType: UserAction.Associate,\r\n entity: EntityType.Video,\r\n descriptor: AssocDescriptor.Playlist,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n });\r\n\r\n props.closePopup();\r\n RecentPlaylistHelper.addRecentlyAddedTo(user.data.id, LocalStorageHelper, { id: playlist.id });\r\n };\r\n\r\n const onError = () => {\r\n alerts.error(getPhrase('addError', { video: video.data.name, playlist: playlist.name }));\r\n };\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.addToPlaylist(playlist.id, [props.videoId], onSuccess, onError));\r\n };\r\n\r\n const createPlaylist = (name: string) => {\r\n setIsSubmitting(true);\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.createPlaylist(user.data.id, { name }, (newPlaylist: Playlist) => {\r\n if (!newPlaylist || !newPlaylist.id)\r\n return;\r\n\r\n AnalyticsHelper.logUserAction({ id: newPlaylist.id }, {\r\n actionType: UserAction.Create,\r\n entity: EntityType.Playlist,\r\n workflowPhase: WorkflowPhase.Complete,\r\n location: LocationContext.Popup\r\n });\r\n\r\n addToPlaylist(newPlaylist, true);\r\n }, () => {\r\n alerts.error(getPhrase('createError', { video: video.data.name, playlist: name }));\r\n props.closePopup();\r\n }));\r\n };\r\n\r\n const onSelectPlaylist = (playlist: Playlist) => {\r\n if (videoPlaylistIds.includes(playlist.id))\r\n return;\r\n\r\n addToPlaylist(playlist);\r\n };\r\n\r\n const dataLoaded = !!video.data\r\n && !!playlists.items\r\n && !playlists.nextCursor\r\n && !!user.data\r\n && !!videoPlaylists.items\r\n && !videoPlaylists.nextCursor;\r\n\r\n return (\r\n <Popup title={getPhrase('heading')} closePopup={props.closePopup} showLoadingSpinner={!dataLoaded} size='lg'>\r\n {dataLoaded &&\r\n <>\r\n <div className='mb-2'>\r\n <Text namespace={namespace} phrase='selectPlaylist' options={{ video: video.data.name }} />\r\n </div>\r\n {!isSubmitting\r\n ? <SelectPlaylist\r\n playlists={playlists.items}\r\n currentUserId={user.data.id}\r\n onSelectPlaylist={onSelectPlaylist}\r\n isVideoInPlaylist={(playlist: Playlist) => (videoPlaylistIds.includes(playlist.id))}\r\n createPlaylist={createPlaylist}\r\n />\r\n : <div className='text-center'>\r\n <Spinner as='span' animation='border' role='status' size='sm' />\r\n </div>\r\n }\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}"],"sourceRoot":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(window.webpackJsonp_clickview_lite=window.webpackJsonp_clickview_lite||[]).push([[4],{1021:function(e,a,t){"use strict";var n=t(0),i=t.n(n),r=t(35),l=t(51),c=t(930),s=t.n(c);function o(e){var a=e.tag,t=e.appLink,n=e.disabled,r="badge-pill tag py-1 px-2 my-1 mr-1";return t&&!n&&(r+=" cursor-pointer"),n&&(r+=" "+s.a.disabled),t?i.a.createElement(l.a,{appLink:t,className:r},a.name):i.a.createElement("span",{className:r},a.name)}function m(e){var a=e.tags,t=e.getAppLink;return a&&a.data?i.a.createElement("div",{className:s.a.tagList},a.data.map((function(e){var a=r.a.isFunction(t)?t(e):null;return i.a.createElement(o,{key:e.id,tag:e,appLink:a})}))):i.a.createElement(i.a.Fragment,null)}t.d(a,"a",(function(){return m}))},1075:function(e,a,t){"use strict";var n=t(0),i=t.n(n),r=t(89),l=t(35),c=t(7),s=t(73),o=t(828),m=t(13),u=t(236),d=t(45),p=t(994),v=t(918),f=t(51),h=t(860),g=t(839),E=t(854);function b(e){var a,t,n,r;if(!e.owner)return i.a.createElement(i.a.Fragment,null);var l=e.owner.name;e.owner.surname&&(l+=" ".concat(e.owner.surname.substr(0,1)).toUpperCase());var c=null!=(r=null===(n=null===(t=null===(a=e.owner.customers)||void 0===a?void 0:a.data)||void 0===t?void 0:t[0])||void 0===n?void 0:n.name)?r:"";return c&&(l+=", "),i.a.createElement("small",{className:"clamp-1"},l,c&&i.a.createElement("em",null,c),"ClickView"===c&&i.a.createElement(i.a.Fragment,null,"CV Icon"))}var y,k=t(1242),L=t.n(k),N=i.a.memo((function(e){return i.a.createElement("div",{className:"flex-shrink-0 px-1 ".concat(L.a.item)},i.a.createElement("div",{className:"row m-0 border rounded p-2 h-100"},i.a.createElement("div",{className:"col-6 p-0"},i.a.createElement(h.a,{video:e.video,interactive:e.data,appLink:e.appLink,type:"static",videoType:"interactive",size:g.a.Small,textPosition:E.a.Independent,preload:!0})),i.a.createElement("div",{className:"col-6 p-0"},i.a.createElement("div",{className:"pl-3"},i.a.createElement(f.a,{appLink:e.appLink},i.a.createElement("h3",{className:"h6 mb-1 clamp-2"},e.data.name)),i.a.createElement(b,{owner:e.data.owner}),i.a.createElement(f.a,{className:"info-link",appLink:e.appLink},i.a.createElement(s.b,{namespace:"shared.interactiveWidgetItem",phrase:"previewQuestions"}))))))})),C=t(1243),w=t.n(C),D=i.a.memo((function(e){return i.a.createElement("div",{className:"flex-shrink-0 px-1 ".concat(w.a.item)},i.a.createElement("div",{className:"row m-0 border rounded p-2 h-100"},i.a.createElement("div",{className:"col-6 p-0"},i.a.createElement(h.a,{video:e.video,appLink:e.appLink,type:"static",videoType:"clip",clip:e.data,size:g.a.Small,textPosition:E.a.Independent,preload:!0})),i.a.createElement("div",{className:"col-6 p-0"},i.a.createElement("div",{className:"pl-3"},i.a.createElement(f.a,{appLink:e.appLink},i.a.createElement("h3",{className:"h6 mb-1 clamp-2"},e.data.name)),i.a.createElement(b,{owner:e.data.owner})))))})),S=t(163),A=t.n(S);!function(e){e.Subject="CurriculumSubject",e.Audience="CurriculumAudience",e.Area="CurriculumArea",e.Leaf="CurriculumLeaf"}(y||(y={}));var x=t(825),O=t(1244),I=t.n(O);function P(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function _(e){var a=I.a.curriculumCode+" align-self-start text-nowrap font-size-normal badge-pill tag py-1 px-2 my-0 mr-1";return i.a.createElement(f.a,{appLink:null,className:"d-flex"},e.leaf.description?i.a.createElement(i.a.Fragment,null,i.a.createElement("h5",{className:a},e.leaf.name),i.a.createElement("p",{className:"m-0 align-self-center"},e.leaf.description)):i.a.createElement("p",{className:"m-0"},e.leaf.name))}function F(e){var a=e.linkSet;return i.a.createElement(i.a.Fragment,null,i.a.createElement("h3",{className:"font-size-normal font-weight-500 mb-2"},a[y.Audience].name," - ",a[y.Subject].name),i.a.createElement("div",{className:"ml-1 mr-2"},a.areasAndLeaves.map((function(e){var a=e[y.Area].map((function(e){return e.name})).join(" - ").toUpperCase();return i.a.createElement("div",{className:I.a.areaLeafSet},i.a.createElement("h4",{className:"".concat(I.a.area," text-muted mb-2 font-weight-normal")},a),i.a.createElement("ul",{className:"list-unstyled ml-1"},e[y.Leaf].map((function(e){return i.a.createElement("li",{key:e.id,className:"mb-2"},i.a.createElement(_,{leaf:e}))}))))}))))}var T=i.a.memo((function(e){var a={};return e.curriculumLinks.forEach((function(e){var t,n,i=null,r=null,l=[],c=[];e.forEach((function(e){switch(e.type){case y.Subject:i=e;break;case y.Audience:r=e;break;case y.Area:l.push(e);break;case y.Leaf:c.push(e)}}));var s,o="".concat(i.id,":").concat(r.id);a[o]?a[o].areasAndLeaves.push((P(s={},y.Area,l),P(s,y.Leaf,c),s)):a[o]=(P(n={},y.Subject,i),P(n,y.Audience,r),P(n,"areasAndLeaves",[(t={},P(t,y.Area,l),P(t,y.Leaf,c),t)]),n)})),i.a.createElement("div",{className:"rounded border p-3 mb-3"},i.a.createElement(A.a,{autoHeight:!0,autoHeightMax:e.height},i.a.createElement("div",{className:"mb-2 d-flex justify-content-between align-items-center"},i.a.createElement("h2",{className:"h6 mb-0"},i.a.createElement(s.b,{namespace:"shared.curriculumLinks",phrase:"curriculumLinks"})),i.a.createElement(x.a,{className:"text-muted",onClick:e.onClickSeeLess},i.a.createElement(s.b,{namespace:"shared.curriculumLinks",phrase:"seeLess"}))),i.a.createElement("ul",{className:"list-unstyled m-0"},Object.keys(a).map((function(e,t){return i.a.createElement("li",{key:"linkset-".concat(t),className:I.a.curriculumSet},i.a.createElement(F,{linkSet:a[e]}))})))))}));function j(e){var a=e.video;return a.resources&&a.resources.data&&a.resources.data.length?n.createElement("div",{className:"pb-3"},n.createElement("h2",{className:"h4"},n.createElement(s.b,{phrase:"resources",options:{count:a.resources.data.length}})),a.resources.data.map((function(e,a){return n.createElement("div",{key:a},e.name)}))):n.createElement(n.Fragment,null)}var M=t(863),R=t(858),B=t(3),H=t(1021),Y=t(5),U=t(10),W=t(821),G=t(14),z=t(157),Z=t(40),K=t(1245),Q=t.n(K);function V(e){var a=G.a.useBasicFetch(z.a.config),t=G.a.useBasicFetch({url:"/api/integrations/token/immersive-reader",key:"immersive:reader:token"});if(!a.data||!t.data)return n.createElement(n.Fragment,null);return e.title||(e.title=c.a.getPhrase("shared.immersiveReader","titleFallback")),n.createElement("div",{className:"".concat(Q.a.button," ").concat(e.className||""),onClick:function(){Z.a.logUserAction(e.analyticsData,e.analyticsOptions);var a={title:e.title,chunks:[{content:e.text}]},n=t.data,i=n.subdomain,r=n.token;W.launchAsync(r,i,a,{uiZIndex:5e3})}},n.createElement("svg",{viewBox:"0 0 40 37"},n.createElement("path",{d:"M37.4,0.9 L37.4,9.6 L35.4,9.6 L35.4,2.9 L24.4,2.9 C22.9,3.3 20,4.5 20,6 L20,17.2 L18,17.2 L18,6 C18,5 15.6,3.6 13.8,2.9 L2,2.9 L2,29 L12.4,29 L12.4,31 L0,31 L0,0.9 L14.1,0.9 L14.3,1 C15,1.2 17.5,2.2 18.9,3.7 C20.5,1.9 23.5,1.1 23.9,1 L24.1,1 L37.4,1 L37.4,0.9 Z",fill:"#000000"}),n.createElement("path",{d:"M27.4,37 L25.8,37 L18.4,29.4 L14,29.4 L14,21 L18.4,20.9 L26.1,13 L27.4,13 L27.4,37 Z M16,27.4 L19.2,27.4 L25.3,33.7 L25.3,16.6 L19.2,22.9 L15.9,22.9 L15.9,27.4 L16,27.4 Z",fill:"#0197F2"}),n.createElement("path",{d:"M31.3,32.7 L29.6,31.7 C29.6,31.7 31.7,28.3 31.7,25.2 C31.7,21.9 29.6,18.5 29.6,18.4 L31.3,17.4 C31.4,17.6 33.7,21.3 33.7,25.2 C33.7,28.8 31.4,32.6 31.3,32.7 Z",fill:"#0197F2"}),n.createElement("path",{d:"M36.4,36.2 L34.8,35 C34.8,35 38,30.8 38,25.2 C38,19.6 34.8,15.4 34.8,15.4 L36.4,14.2 C36.5,14.4 40,19 40,25.3 C40,31.5 36.5,36 36.4,36.2 Z",fill:"#0197F2"})))}var X=c.a.encloseNamespace("shared.videoDetails");function J(e){var a=e.label,t=e.items,i=e.className;if(!(t&&t.data&&t.data.length))return n.createElement(n.Fragment,null);var r=t.data.map((function(e){return e.name})).join(", ");return n.createElement("div",{className:i},a,": ",r)}function $(e){var a,t,i,r,l,c,o,m,u,d,p,v,f,h,g=e.video;return e.hasBadges||e.hasPPDD||(null===(t=null===(a=e.video.tags)||void 0===a?void 0:a.data)||void 0===t?void 0:t.length)||e.video.description?n.createElement(s.a.Provider,{value:"shared.videoDetails"},n.createElement("div",{className:"rounded border p-3 mb-3"},n.createElement(A.a,{autoHeight:!0,autoHeightMax:368},n.createElement("div",{className:g.description?"pb-2":""},n.createElement("div",{className:"mb-2 d-flex align-items-center justify-content-between"},n.createElement("h2",{className:"h6 mb-0"},n.createElement(s.b,{phrase:"details"})),(e.hasGlanceData||e.hasCurriculumLinks)&&n.createElement(x.a,{className:"text-muted",onClick:e.hasGlanceData?e.onClickShowSynopsis:e.onClickSeeCurriculumLinks},n.createElement(s.b,{phrase:e.hasGlanceData?"seeGlance":"seeCurriculumLinks"}))),e.hasBadges&&n.createElement(M.a,{className:"pb-1"},n.createElement(R.a,{type:R.b.Rating,data:g.rating}),n.createElement(R.a,{type:R.b.ProductionYear,data:g.productionYear}),n.createElement(R.a,{type:R.b.Interactive,data:g.interactives}),n.createElement(R.a,{type:R.b.Resources,data:g.resources})),e.hasPPDD&&n.createElement("div",{className:"pb-2"},n.createElement(J,{label:X("productionCompanies",{smartCount:null===(r=null===(i=g.productionCompanies)||void 0===i?void 0:i.data)||void 0===r?void 0:r.length}),items:g.productionCompanies}),n.createElement(J,{label:X("distributors",{smartCount:null===(c=null===(l=g.distributors)||void 0===l?void 0:l.data)||void 0===c?void 0:c.length}),items:g.distributors}),n.createElement(J,{label:X("producers",{smartCount:null===(m=null===(o=g.producers)||void 0===o?void 0:o.data)||void 0===m?void 0:m.length}),items:g.producers}),n.createElement(J,{label:X("directors",{smartCount:null===(d=null===(u=g.directors)||void 0===u?void 0:u.data)||void 0===d?void 0:d.length}),items:g.directors})),!!(null===(v=null===(p=g.tags)||void 0===p?void 0:p.data)||void 0===v?void 0:v.length)&&n.createElement(H.a,{tags:g.tags,getAppLink:function(e){return{application:Y.a.SEARCH,action:U.a.Search.HOME,params:{tag:e.name}}}})),!!g.description&&n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex align-items-center ".concat(e.hasBadges||e.hasPPDD||(null===(h=null===(f=g.tags)||void 0===f?void 0:f.data)||void 0===h?void 0:h.length)?"pt-2":"")},n.createElement("h2",{className:"h6 mb-1"},n.createElement(s.b,{phrase:"description"})),n.createElement(V,{text:g.description,title:g.name,className:"pl-2",analyticsOptions:{location:B.j.PlayPage,entity:B.d.Video,actionType:B.n.Click,descriptor:B.b.LaunchImmersiveReader},analyticsData:{id:g.id,type:"description"}})),e.video.description&&n.createElement("p",{className:"mb-0"},e.video.description))))):n.createElement(n.Fragment,null)}function q(e){return function(a){var t=n.useCallback(a,[]);n.useEffect((function(){return window.addEventListener(e,t),function(){return window.removeEventListener(e,t)}}),[])}}var ee=q("scroll"),ae=q("resize"),te=t(92),ne=t(822),ie=t(2),re=t(155),le=t(1246),ce=t.n(le);function se(e,a){return function(e){if(Array.isArray(e))return e}(e)||function(e,a){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var t=[],n=!0,i=!1,r=void 0;try{for(var l,c=e[Symbol.iterator]();!(n=(l=c.next()).done)&&(t.push(l.value),!a||t.length!==a);n=!0);}catch(e){i=!0,r=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw r}}return t}(e,a)||function(e,a){if(!e)return;if("string"==typeof e)return oe(e,a);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return oe(e,a)}(e,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function oe(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=new Array(a);t<a;t++)n[t]=e[t];return n}function me(e){var a,t=se(n.useState(""),2),i=t[0],l=t[1],c=se(Object(r.a)(te.a.WEB_PLAYER_DATA),2)[1];if(n.useEffect((function(){if(e.hasGlanceData){var a=ne(e.video.glance.content).split('a href="cv-tag://').join('a class="badge-pill tag mr-1 my-1 px-2 py-1" href="cv-tag://');l(a)}}),[null===(a=e.video.glance)||void 0===a?void 0:a.content]),!e.hasGlanceData&&e.hasDetails)return e.onClickShowDescription(),n.createElement(n.Fragment,null);return n.createElement("div",{className:"rounded border px-3 mb-3 position-relative d-flex align-items-center justify-content-center ".concat(ce.a.container)},n.createElement("div",{className:"".concat(ce.a.content," py-5")},n.createElement("h2",null,n.createElement(s.b,{namespace:"shared.synopsis",phrase:"videoAtAGlance"})),n.createElement("div",{onClick:function(e){e.preventDefault();var a=e.target.getAttribute("href");if(a)if(a.includes("cv-timestamp://")){var t=a.split("cv-timestamp://")[1];c("startTime",t)}else if(a.includes("cv-tag://")){var n=a.split("cv-tag://")[1];ie.a.AppLinkHelper.trigger({application:Y.a.SEARCH,action:U.a.Search.HOME,params:{tag:n}})}else;},dangerouslySetInnerHTML:{__html:i}}),n.createElement("div",{className:"mt-3"},e.hasDetails&&n.createElement(x.a,{onClick:e.onClickShowDescription,className:"cursor-pointer d-inline-block mr-4 font-weight-500"},n.createElement(s.b,{namespace:"shared.synopsis",phrase:"readFullDescription"})),e.hasCurriculumLinks&&n.createElement(x.a,{onClick:e.onClickShowCurriculumLinks,className:"cursor-pointer d-inline-block font-weight-500"},n.createElement(s.b,{namespace:"shared.synopsis",phrase:"seeCurriculumLinks"})))),e.theme?Object.keys(e.theme.data).map((function(a){return n.createElement("div",{key:e.theme.data[a].fileId,className:"".concat(ce.a[a]," ").concat(ce.a.background),style:{backgroundImage:"url('".concat(re.a.createUrl(e.theme.data[a].url,{format:"png"}),"')")}})})):n.createElement(n.Fragment,null))}var ue=t(47),de=t(245),pe=t(982),ve=t(1247),fe=t.n(ve);function he(e){var a=e.video,t={application:Y.a.DEFAULT,action:U.a.Default.SERIES,args:a.series?[a.series.id,ue.a.slugify(a.series.name)]:[]};return n.createElement("div",null,!!a.series&&n.createElement(de.a,{video:a,appLink:t,className:"".concat(fe.a.series," clamp-1")}),n.createElement("div",{className:"d-flex align-items-center"},n.createElement("h1",{className:"h3 d-inline-block m-0"},a.name),!!l.a.isFunction(e.setFavourite)&&n.createElement(pe.a,{setFavourite:e.setFavourite,video:a,className:"d-inline-block ml-2 align-text-bottom"})))}function ge(e,a){return function(e){if(Array.isArray(e))return e}(e)||function(e,a){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var t=[],n=!0,i=!1,r=void 0;try{for(var l,c=e[Symbol.iterator]();!(n=(l=c.next()).done)&&(t.push(l.value),!a||t.length!==a);n=!0);}catch(e){i=!0,r=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw r}}return t}(e,a)||function(e,a){if(!e)return;if("string"==typeof e)return Ee(e,a);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Ee(e,a)}(e,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ee(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=new Array(a);t<a;t++)n[t]=e[t];return n}t.d(a,"a",(function(){return ke}));var be=c.a.encloseNamespace("shared.playPage"),ye=function(e,a,t){return[{label:be("makeInteractive"),svgName:m.b.Plus,className:a?"":"btn btn-light ml-2",button:!a},{label:be("addToPlaylist"),appLink:{application:Y.a.PLAYLISTS,action:U.a.Playlists.ADD_TO_PLAYLIST,args:[e.id]},svgName:m.b.AddToPlaylists,className:t?"":"btn btn-light ml-2",button:!t},{label:be("share"),appLink:{application:Y.a.DEFAULT,action:U.a.Default.SHARE,args:[e.id],params:{entityType:"video"}},svgName:m.b.Share2,className:t?"":"btn btn-light ml-2",button:!t},{label:be("createClip")}]};function ke(e){var a,t,n,c,m,f,h,g,E,b,y,k,L,C,w,S=e.video,A=e.glanceTheme,x=e.curriculumLinks,O=(null===(a=S.glance)||void 0===a?void 0:a.content)&&"text/markdown"===S.glance.format,I=S.rating,P=S.productionYear,_=S.interactives,F=S.resources,M=S.productionCompanies,R=S.distributors,B=S.producers,H=S.directors,Y=S.tags,U=!!((null===(t=M.data)||void 0===t?void 0:t.length)||(null===(n=R.data)||void 0===n?void 0:n.length)||(null===(c=B.data)||void 0===c?void 0:c.length)||(null===(m=H.data)||void 0===m?void 0:m.length)),W=!!((null===(f=I)||void 0===f?void 0:f.value)||P||(null===(h=_.data)||void 0===h?void 0:h.length)||(null===(g=F.data)||void 0===g?void 0:g.length)),G=!!S.description||W||U||!!(null===(E=Y.data)||void 0===E?void 0:E.length),z=ge(Object(r.a)(te.a.WEB_PLAYER_DATA),2)[1],Z=ge(i.a.useState(O?"synopsis":"details"),2),K=Z[0],Q=Z[1],V=Object(u.a)(),X=V===d.a.XS,J=V===d.a.SM||V===d.a.MD||X,q=i.a.useRef(null),ne=i.a.useMemo((function(){return l.a.throttle((function(){return function(e,a){if(e.current){var t=e.current.getBoundingClientRect(),n=window.pageXOffset||document.documentElement.scrollLeft,i=window.pageYOffset||document.documentElement.scrollTop;t.top<-t.height?a("viewportPosition",null):a("viewportPosition",{top:i+t.top,left:n+t.left,width:t.width})}}(q,z)}),100,{leading:!0,trailing:!1})}),[]);ee(ne),ae(ne);var ie=i.a.useCallback((function(e){e&&(q.current=e,ne())}),[]);return i.a.useEffect((function(){return z("isOnPlayPage",!0),function(){z("viewportPosition",null),z("isOnPlayPage",!1)}}),[]),i.a.createElement(s.a.Provider,{value:"shared.playPage"},i.a.createElement("div",{className:"embed-responsive embed-responsive-16by9 mb-3",ref:ie}),i.a.createElement("div",{className:"d-flex justify-content-between align-items-center pb-3"},i.a.createElement(he,{video:S,setFavourite:e.setFavourite}),i.a.createElement(o.a,{actions:ye(S,J,X)})),"synopsis"===K&&i.a.createElement(me,{theme:A,video:S,hasGlanceData:O,hasDetails:G,onClickShowDescription:function(){return Q("details")},hasCurriculumLinks:!!(null===(b=x)||void 0===b?void 0:b.length),onClickShowCurriculumLinks:function(){return Q("curriculumLinks")}}),"details"===K&&i.a.createElement($,{video:S,hasBadges:W,hasPPDD:U,hasGlanceData:O,onClickShowSynopsis:function(){return Q("synopsis")},hasCurriculumLinks:!!(null===(y=x)||void 0===y?void 0:y.length),onClickSeeCurriculumLinks:function(){return Q("curriculumLinks")}}),"curriculumLinks"===K&&i.a.createElement(T,{height:368,curriculumLinks:x,onClickSeeLess:function(){return Q(O?"synopsis":"details")}}),i.a.createElement(j,{video:S}),!!(null===(L=null===(k=S.interactives)||void 0===k?void 0:k.data)||void 0===L?void 0:L.length)&&i.a.createElement("div",{className:"mx-n1"},i.a.createElement(p.a,{name:be("interactives",{count:S.interactives.data.length}),contents:v.a.Interactives,collection:S.interactives.data,prefetched:!0,childComponent:function(e){return i.a.createElement(N,Object.assign({},e,{video:S}))},analyticsData:{widgetId:"interactives"}})),!!(null===(w=null===(C=S.clips)||void 0===C?void 0:C.data)||void 0===w?void 0:w.length)&&i.a.createElement("div",{className:"mx-n1"},i.a.createElement(p.a,{name:be("clips",{count:S.interactives.data.length}),contents:v.a.Clips,collection:S.clips.data,prefetched:!0,childComponent:function(e){return i.a.createElement(D,Object.assign({},e,{video:S}))},analyticsData:{widgetId:"clips"}})))}},1242:function(e,a,t){e.exports={item:"_2An5o",thumbnail:"Wvc5s",smallItemIconWidth:"_2IdDd",smallItemInfoWidth:"_1Iat7",smallProgressBarContainer:"_17I8T"}},1243:function(e,a,t){e.exports={item:"pYl_b",thumbnail:"_92H1z",smallItemIconWidth:"_3DbAB",smallItemInfoWidth:"_1D2_c",smallProgressBarContainer:"_1gwy8",smallItemNameWidth:"_3TPSf"}},1244:function(e,a,t){e.exports={curriculumSet:"rYMeg",areaLeafSet:"_1-RqH",area:"F-oQE",curriculumCode:"TOD1n"}},1245:function(e,a,t){e.exports={button:"_10_KK"}},1246:function(e,a,t){e.exports={container:"_1XOYA",content:"UcxNO",background:"_3gpaY",topLeft:"_2s7I6",bottomLeft:"_23UKL",topRight:"ec_-l",bottomRight:"_1xMKp"}},1247:function(e,a,t){e.exports={series:"_2vEW0"}},825:function(e,a,t){"use strict";t.d(a,"a",(function(){return i}));var n=t(0);function i(e){return n.createElement("div",{role:"button",tabIndex:0,className:"".concat(e.className?e.className:""," cursor-pointer"),onKeyDown:function(a){return"Enter"===a.key&&e.onClick(a)},onClick:e.onClick,style:e.style?e.style:{}},e.children)}},827:function(e,a,t){e.exports={buttonList:"_2v9CT",dropdownToggle:"AYBvQ"}},828:function(e,a,t){"use strict";var n=t(0),i=t(33),r=t(240),l=t(40),c=t(55),s=t(51),o=t(13),m=t(827),u=t.n(m),d=t(35);function p(e){var a="dropdown-item";return e&&(a+=" ".concat(e)),a}function v(e){if(e.action.appLink)return n.createElement(s.a,{appLink:e.action.appLink,onClick:e.action.onClick,className:p(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions},e.action.label);return n.createElement("span",{className:"cursor-pointer ".concat(p(e.action.className)),onClick:function(a){e.action.analyticsData&&e.action.analyticsOptions&&l.a.logUserAction(e.action.analyticsData,e.action.analyticsOptions),d.a.isFunction(e.action.onClick)&&e.action.onClick(a)}},e.action.label)}function f(e){if(!e.actions||!e.actions.length)return n.createElement(n.Fragment,null);var a="actions-dropdown-".concat(r.a.getRandomInt()),t="px-0 ".concat(u.a.dropdownToggle);return e.dropdownToggleClassName&&(t+=" ".concat(e.dropdownToggleClassName)),n.createElement(i.Dropdown,{className:e.className?e.className:"",alignRight:!0},n.createElement(i.Dropdown.Toggle,{as:"button",type:"button",id:a,className:t},n.createElement(c.a,{svgName:o.b.More,size:c.b.Small})),n.createElement(i.Dropdown.Menu,null,e.actions.map((function(e,a){return n.createElement(v,{key:a,action:e})}))))}f.defaultProps={dropdownToggleClassName:"btn btn-light"};var h=t(235),g=t(156);function E(e){var a="ml-2";e.className&&(a+=" ".concat(e.className));var t=e.showSpinner?n.createElement(i.Spinner,{as:"span",animation:"border",role:"status",size:"sm"}):e.children;if(e.tooltip)return n.createElement(g.a,{title:e.tooltip},n.createElement(h.a,{appLink:e.appLink,svgName:e.svgName,onClick:e.onClick,className:a,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},t));if(e.svgName)return n.createElement(h.a,{onClick:e.onClick,appLink:e.appLink,svgName:e.svgName,className:a,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},t);if(e.appLink)return n.createElement(s.a,{onClick:e.onClick,appLink:e.appLink,className:a,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},t);return n.createElement("button",{onClick:function(a){e.analyticsData&&e.analyticsOptions&&l.a.logUserAction(e.analyticsData,e.analyticsOptions),d.a.isFunction(e.onClick)&&e.onClick(a)},className:a},t)}function b(e){var a=[],t=[];e.actions.forEach((function(e){e.button?a.push(e):t.push(e)}));var i="d-flex";return e.className&&(i+=" ".concat(e.className)),n.createElement("div",{className:i},n.createElement(n.Fragment,null,!!a.length&&n.createElement("span",{className:u.a.buttonList},a.map((function(e,a){return n.createElement(n.Fragment,{key:a},e.label?n.createElement(E,{appLink:e.appLink,onClick:e.onClick,svgName:e.svgName,className:e.className,tooltip:e.tooltip,showSpinner:e.showSpinner,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},e.label):n.createElement(h.a,{appLink:e.appLink,onClick:e.onClick,svgName:e.svgName,className:e.className,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}))}))),e.sortComponent?e.sortComponent:"",!!t.length&&n.createElement(f,{actions:t,className:!!a.length&&"ml-2",dropdownToggleClassName:e.actionsDropdownClassName})))}t.d(a,"a",(function(){return b}))},930:function(e,a,t){e.exports={tagList:"yvetE",disabled:"_3ZfKv"}},994:function(e,a,t){"use strict";var n=t(910);t.d(a,"a",(function(){return n.a}));t(921);var i=t(920);t.d(a,"b",(function(){return i.a}))}}]);
|